import * as React from "react" import { View, type ITouchEvent } from "@tarojs/components" import { cn } from "@/lib/utils" const TabsContext = React.createContext<{ value?: string onValueChange?: (value: string) => void } | null>(null) const Tabs = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { value?: string defaultValue?: string onValueChange?: (value: string) => void } >(({ className, value: valueProp, defaultValue, onValueChange, ...props }, ref) => { const [valueState, setValueState] = React.useState(defaultValue) const value = valueProp !== undefined ? valueProp : valueState const handleValueChange = (newValue: string) => { if (valueProp === undefined) { setValueState(newValue) } onValueChange?.(newValue) } return ( ) }) Tabs.displayName = "Tabs" const TabsList = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) TabsList.displayName = "TabsList" const TabsTrigger = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { value: string disabled?: boolean } >(({ className, value, onClick, disabled, ...props }, ref) => { const context = React.useContext(TabsContext) const isActive = context?.value === value const handleClick = (e: ITouchEvent) => { if (disabled) return context?.onValueChange?.(value) onClick?.(e) } return ( ) }) TabsTrigger.displayName = "TabsTrigger" const TabsContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { value: string } >(({ className, value, ...props }, ref) => { const context = React.useContext(TabsContext) if (context?.value !== value) return null return ( ) }) TabsContent.displayName = "TabsContent" export { Tabs, TabsList, TabsTrigger, TabsContent }