import React, { forwardRef, useMemo, type ElementRef } from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; import { useControllableState } from '@radix-ui/react-use-controllable-state'; import { type ElementProps } from '../../types'; import { TabsProvider, type TabsContext } from './tabs.context'; export interface TabsProps extends ElementProps, Pick {} export const Tabs = forwardRef, TabsProps>((props, ref) => { const { size = 'md', radius = 'lg', variant = 'solid', orientation = 'horizontal', value, defaultValue, onValueChange, layoutId = 'cursor', ...etc } = props; const [selectedItem = '', setSelectedItem] = useControllableState({ prop: value, defaultProp: defaultValue, onChange: onValueChange, }); return ( ({ value: selectedItem, setValue: setSelectedItem, size, radius, variant, orientation, layoutId }), [selectedItem, setSelectedItem, size, radius, variant, orientation, layoutId] )} > ); }); Tabs.displayName = TabsPrimitive.Root.displayName;