import * as React from "react"; import { cn } from "@/lib/utils"; const TabsContext = React.createContext<{ value: string; setValue: (v: string) => void }>({ value: "", setValue: () => {} }); export function Tabs({ defaultValue = "", value: controlled, onValueChange, className, children, ...props }: React.HTMLAttributes & { defaultValue?: string; value?: string; onValueChange?: (v: string) => void }) { const [internal, setInternal] = React.useState(defaultValue); const value = controlled ?? internal; const setValue = (v: string) => { setInternal(v); onValueChange?.(v); }; return (
{children}
); } export function TabsList({ className, ...props }: React.HTMLAttributes) { return
; } export function TabsTrigger({ value, className, children, ...props }: React.ButtonHTMLAttributes & { value: string }) { const ctx = React.useContext(TabsContext); const active = ctx.value === value; return ( ); } export function TabsContent({ value, className, children, ...props }: React.HTMLAttributes & { value: string }) { const ctx = React.useContext(TabsContext); if (ctx.value !== value) return null; return
{children}
; } export default Tabs;