11"use client" ;
22
3+ import * as TabsPrimitive from "@radix-ui/react-tabs" ;
4+ import * as React from "react" ;
5+
36import { useIsomorphicLayoutEffect } from "@/lib/useIsomorphicLayoutEffect" ;
47import { cn } from "@/lib/utils" ;
58import Link from "next/link" ;
@@ -8,6 +11,55 @@ import { useCallback, useRef, useState } from "react";
811import { ScrollShadow } from "./ScrollShadow/ScrollShadow" ;
912import { Button } from "./button" ;
1013
14+ const Tabs = TabsPrimitive . Root ;
15+
16+ const TabsList = React . forwardRef <
17+ React . ElementRef < typeof TabsPrimitive . List > ,
18+ React . ComponentPropsWithoutRef < typeof TabsPrimitive . List >
19+ > ( ( { className, ...props } , ref ) => (
20+ < TabsPrimitive . List
21+ ref = { ref }
22+ className = { cn (
23+ "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground" ,
24+ className ,
25+ ) }
26+ { ...props }
27+ />
28+ ) ) ;
29+ TabsList . displayName = TabsPrimitive . List . displayName ;
30+
31+ const TabsTrigger = React . forwardRef <
32+ React . ElementRef < typeof TabsPrimitive . Trigger > ,
33+ React . ComponentPropsWithoutRef < typeof TabsPrimitive . Trigger >
34+ > ( ( { className, ...props } , ref ) => (
35+ < TabsPrimitive . Trigger
36+ ref = { ref }
37+ className = { cn (
38+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 font-medium text-sm 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" ,
39+ className ,
40+ ) }
41+ { ...props }
42+ />
43+ ) ) ;
44+ TabsTrigger . displayName = TabsPrimitive . Trigger . displayName ;
45+
46+ const TabsContent = React . forwardRef <
47+ React . ElementRef < typeof TabsPrimitive . Content > ,
48+ React . ComponentPropsWithoutRef < typeof TabsPrimitive . Content >
49+ > ( ( { className, ...props } , ref ) => (
50+ < TabsPrimitive . Content
51+ ref = { ref }
52+ className = { cn (
53+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2" ,
54+ className ,
55+ ) }
56+ { ...props }
57+ />
58+ ) ) ;
59+ TabsContent . displayName = TabsPrimitive . Content . displayName ;
60+
61+ export { Tabs , TabsList , TabsTrigger , TabsContent } ;
62+
1163export type TabLink = {
1264 name : string ;
1365 href : string ;
0 commit comments