|
'use client'; |
|
|
|
import * as React from 'react'; |
|
import * as TabsPrimitive from '@radix-ui/react-tabs'; |
|
|
|
import { cn } from '../../utils'; |
|
|
|
const Tabs = TabsPrimitive.Root; |
|
|
|
const TabsList = React.forwardRef< |
|
React.ElementRef<typeof TabsPrimitive.List>, |
|
React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> |
|
>(({ className, ...props }, ref) => ( |
|
<TabsPrimitive.List |
|
ref={ref} |
|
className={cn( |
|
'inline-flex items-center justify-center rounded-md bg-gray-100 p-1 dark:bg-gray-800', |
|
className, |
|
)} |
|
{...props} |
|
/> |
|
)); |
|
TabsList.displayName = TabsPrimitive.List.displayName; |
|
|
|
const TabsTrigger = React.forwardRef< |
|
React.ElementRef<typeof TabsPrimitive.Trigger>, |
|
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> |
|
>(({ className, ...props }, ref) => ( |
|
<TabsPrimitive.Trigger |
|
className={cn( |
|
'inline-flex min-w-[100px] items-center justify-center rounded-[0.185rem] px-3 py-1.5 text-sm font-medium text-gray-700 transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-white data-[state=active]:text-gray-900 data-[state=active]:shadow-sm dark:text-gray-200 dark:data-[state=active]:bg-gray-700 dark:data-[state=active]:text-gray-100', |
|
className, |
|
)} |
|
{...props} |
|
ref={ref} |
|
/> |
|
)); |
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName; |
|
|
|
const TabsContent = React.forwardRef< |
|
React.ElementRef<typeof TabsPrimitive.Content>, |
|
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> |
|
>(({ className, ...props }, ref) => ( |
|
<TabsPrimitive.Content |
|
className={cn('mt-2 rounded-md border border-gray-200 p-6 dark:border-gray-700', className)} |
|
{...props} |
|
ref={ref} |
|
/> |
|
)); |
|
TabsContent.displayName = TabsPrimitive.Content.displayName; |
|
|
|
export { Tabs, TabsList, TabsTrigger, TabsContent }; |
|
|