tabs.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import * as React from "react"
  2. import * as TabsPrimitive from "@radix-ui/react-tabs"
  3. import { cn } from "@/lib/utils"
  4. const Tabs = TabsPrimitive.Root
  5. const TabsList = React.forwardRef<
  6. React.ElementRef<typeof TabsPrimitive.List>,
  7. React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
  8. >(({ className, ...props }, ref) => (
  9. <TabsPrimitive.List
  10. ref={ref}
  11. className={cn(
  12. "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
  13. className
  14. )}
  15. {...props}
  16. />
  17. ))
  18. TabsList.displayName = TabsPrimitive.List.displayName
  19. const TabsTrigger = React.forwardRef<
  20. React.ElementRef<typeof TabsPrimitive.Trigger>,
  21. React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
  22. >(({ className, ...props }, ref) => (
  23. <TabsPrimitive.Trigger
  24. ref={ref}
  25. className={cn(
  26. "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
  27. className
  28. )}
  29. {...props}
  30. />
  31. ))
  32. TabsTrigger.displayName = TabsPrimitive.Trigger.displayName
  33. const TabsContent = React.forwardRef<
  34. React.ElementRef<typeof TabsPrimitive.Content>,
  35. React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
  36. >(({ className, ...props }, ref) => (
  37. <TabsPrimitive.Content
  38. ref={ref}
  39. className={cn(
  40. "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
  41. className
  42. )}
  43. {...props}
  44. />
  45. ))
  46. TabsContent.displayName = TabsPrimitive.Content.displayName
  47. export { Tabs, TabsList, TabsTrigger, TabsContent }