// AlignUI SegmentedControl v0.0.0 'use client'; import * as React from 'react'; import * as TabsPrimitive from '@radix-ui/react-tabs'; import mergeRefs from 'merge-refs'; import { Slottable } from '@radix-ui/react-slot'; import { cn } from '@/utils/cn'; import { useTabObserver } from '@/hooks/use-tab-observer'; const SegmentedControlRoot = TabsPrimitive.Root; SegmentedControlRoot.displayName = 'SegmentedControlRoot'; const SegmentedControlList = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef & { floatingBgClassName?: string; } >(({ children, className, floatingBgClassName, ...rest }, forwardedRef) => { const [lineStyle, setLineStyle] = React.useState({ width: 0, left: 0 }); const { mounted, listRef } = useTabObserver({ onActiveTabChange: (_, activeTab) => { const { offsetWidth: width, offsetLeft: left } = activeTab; setLineStyle({ width, left }); }, }); return ( {children} {/* floating bg */}