"use client"; import * as React from "react"; import { cn } from "@/lib/utils"; type TabsContextValue = { value: string; setValue: (value: string) => void; }; const TabsContext = React.createContext(null); function useTabsContext() { const context = React.useContext(TabsContext); if (!context) { throw new Error("Tabs components must be used within Tabs."); } return context; } type TabsProps = { defaultValue?: string; value?: string; onValueChange?: (value: string) => void; children: React.ReactNode; className?: string; }; function Tabs({ defaultValue, value, onValueChange, children, className }: TabsProps) { const [internalValue, setInternalValue] = React.useState(defaultValue ?? ""); const activeValue = value ?? internalValue; const setValue = React.useCallback( (nextValue: string) => { if (value === undefined) { setInternalValue(nextValue); } onValueChange?.(nextValue); }, [onValueChange, value], ); return (
{children}
); } function TabsList({ className, ...props }: React.HTMLAttributes) { return (
); } type TabsTriggerProps = React.ButtonHTMLAttributes & { value: string; }; function TabsTrigger({ className, value, onClick, ...props }: TabsTriggerProps) { const { value: activeValue, setValue } = useTabsContext(); const isActive = activeValue === value; return (