tabs.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use client"
  2. import * as React from "react"
  3. import * as TabsPrimitive from "@radix-ui/react-tabs"
  4. import { cn } from "@/lib/utils"
  5. const Tabs = TabsPrimitive.Root
  6. const TabsList = React.forwardRef<
  7. React.ElementRef<typeof TabsPrimitive.List>,
  8. React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
  9. >(({ className, ...props }, ref) => (
  10. <TabsPrimitive.List
  11. ref={ref}
  12. className={cn(
  13. "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
  14. className
  15. )}
  16. {...props}
  17. />
  18. ))
  19. TabsList.displayName = TabsPrimitive.List.displayName
  20. const TabsTrigger = React.forwardRef<
  21. React.ElementRef<typeof TabsPrimitive.Trigger>,
  22. React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
  23. >(({ className, ...props }, ref) => (
  24. <TabsPrimitive.Trigger
  25. ref={ref}
  26. className={cn(
  27. "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",
  28. className
  29. )}
  30. {...props}
  31. />
  32. ))
  33. TabsTrigger.displayName = TabsPrimitive.Trigger.displayName
  34. const TabsContent = React.forwardRef<
  35. React.ElementRef<typeof TabsPrimitive.Content>,
  36. React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
  37. >(({ className, ...props }, ref) => (
  38. <TabsPrimitive.Content
  39. ref={ref}
  40. className={cn(
  41. "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
  42. className
  43. )}
  44. {...props}
  45. />
  46. ))
  47. TabsContent.displayName = TabsPrimitive.Content.displayName
  48. export { Tabs, TabsList, TabsTrigger, TabsContent }