// AlignUI TabMenuHorizontal v0.0.0 'use client'; import * as React from 'react'; import { Slottable } from '@radix-ui/react-slot'; import * as TabsPrimitive from '@radix-ui/react-tabs'; import mergeRefs from 'merge-refs'; import { cn } from '@/utils/cn'; import type { PolymorphicComponentProps } from '@/utils/polymorphic'; import { useTabObserver } from '@/hooks/use-tab-observer'; const TabMenuHorizontalContent = TabsPrimitive.Content; TabMenuHorizontalContent.displayName = 'TabMenuHorizontalContent'; const TabMenuHorizontalRoot = React.forwardRef< React.ComponentRef, Omit, 'orientation'> >(({ className, ...rest }, forwardedRef) => { return ( ); }); TabMenuHorizontalRoot.displayName = 'TabMenuHorizontalRoot'; const TabMenuHorizontalList = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef & { wrapperClassName?: string; } >(({ children, className, wrapperClassName, ...rest }, forwardedRef) => { const [lineStyle, setLineStyle] = React.useState({ width: 0, left: 0 }); const listWrapperRef = React.useRef(null); const { mounted, listRef } = useTabObserver({ onActiveTabChange: (_, activeTab) => { const { offsetWidth: width, offsetLeft: left } = activeTab; setLineStyle({ width, left }); const listWrapper = listWrapperRef.current; if (listWrapper) { const containerWidth = listWrapper.clientWidth; const scrollPosition = left - containerWidth / 2 + width / 2; listWrapper.scrollTo({ left: scrollPosition, behavior: 'smooth', }); } }, }); return (
{children} {/* Floating Bg */} ); }); TabMenuHorizontalList.displayName = 'TabMenuHorizontalList'; const TabMenuHorizontalTrigger = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ className, ...rest }, forwardedRef) => { return ( ); }); TabMenuHorizontalTrigger.displayName = 'TabMenuHorizontalTrigger'; function TabMenuHorizontalIcon({ className, as, ...rest }: PolymorphicComponentProps) { const Component = as || 'div'; return ( ); } TabMenuHorizontalIcon.displayName = 'TabsHorizontalIcon'; function TabMenuHorizontalArrowIcon({ className, as, ...rest }: PolymorphicComponentProps>) { const Component = as || 'div'; return ( ); } TabMenuHorizontalArrowIcon.displayName = 'TabsHorizontalArrow'; export { TabMenuHorizontalRoot as Root, TabMenuHorizontalList as List, TabMenuHorizontalTrigger as Trigger, TabMenuHorizontalIcon as Icon, TabMenuHorizontalArrowIcon as ArrowIcon, TabMenuHorizontalContent as Content, };