import { ComponentPropsWithoutRef, ReactNode } from 'react'; import { SkeletonVariant } from '../Skeleton/skeleton.tokens'; import * as TabsPrimitive from '@radix-ui/react-tabs'; export declare enum TabsV2Variant { BOXED = "boxed", FLOATING = "floating", UNDERLINE = "underline", PILLS = "pills" } export declare enum TabsV2Size { SM = "sm", MD = "md", LG = "lg" } export type TabsV2State = 'default' | 'hover' | 'active' | 'disabled'; export type TabsV2TabItem = { value: string; label: string; content: ReactNode; disabled?: boolean; showSkeleton?: boolean; skeletonVariant?: SkeletonVariant; leftSlot?: ReactNode; rightSlot?: ReactNode; newItem?: boolean; }; /** * Platform-neutral core of the TabsV2 root API — `@juspay/blend-native` * derives its Tabs props from this; the Radix `Root` surface and the * skeleton/sticky pieces stay web-only. */ export type TabsBaseProps = { variant?: TabsV2Variant; size?: TabsV2Size; expanded?: boolean; fitContent?: boolean; disabled?: boolean; }; export type TabsV2Props = ComponentPropsWithoutRef & TabsBaseProps & { showSkeleton?: boolean; skeletonVariant?: SkeletonVariant; stickyHeader?: boolean; offsetTop?: number; }; export type TabsV2ListProps = ComponentPropsWithoutRef & { variant?: TabsV2Variant; size?: TabsV2Size; expanded?: boolean; fitContent?: boolean; disabled?: boolean; showSkeleton?: boolean; skeletonVariant?: SkeletonVariant; stickyHeader?: boolean; offsetTop?: number; }; export type TabsV2TriggerProps = ComponentPropsWithoutRef & { value: string; variant?: TabsV2Variant; size?: TabsV2Size; leftSlot?: ReactNode; rightSlot?: ReactNode; children: string | number; disabled?: boolean; /** * When true, renders a close (X) affordance inside the trigger. * Useful for "new/temporary" tabs that can be removed. */ closable?: boolean; onClose?: () => void; isActive?: boolean; isOverlay?: boolean; tabsGroupId?: string; showSkeleton?: boolean; skeletonVariant?: SkeletonVariant; }; export type TabsV2ContentProps = ComponentPropsWithoutRef;