profileShare

rasmusjy / roundtable

Read-only snapshot

No repository description.

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