@voltstack/bravais 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/presentation/primitives/types.ts","../src/shared/presentation/primitives/buildBoxClasses.ts","../src/shared/utils/cn.ts","../src/shared/presentation/primitives/typography.ts","../src/shared/presentation/primitives/Box/index.tsx","../src/shared/presentation/primitives/Stack/index.tsx","../src/shared/presentation/primitives/Row/index.tsx","../src/shared/presentation/primitives/Grid/index.tsx","../src/shared/presentation/primitives/Surface/index.tsx","../src/shared/presentation/primitives/Divider/index.tsx","../src/shared/presentation/primitives/Text/index.tsx","../src/shared/presentation/primitives/Heading/index.tsx","../src/shared/presentation/primitives/SectionLabel/index.tsx","../src/shared/presentation/primitives/Loader/index.tsx","../src/shared/presentation/primitives/Button/index.tsx","../src/shared/presentation/primitives/IconButton/index.tsx","../src/shared/presentation/primitives/CloseButton/index.tsx","../src/shared/presentation/primitives/SearchInput/index.tsx","../src/shared/presentation/contexts/FloatingRootContext.tsx","../src/shared/presentation/primitives/Select/floating-layer.ts","../src/shared/presentation/primitives/Select/index.tsx","../src/shared/presentation/hooks/use-media.ts","../src/shared/presentation/hooks/use-prefers-reduced-motion.ts","../src/shared/presentation/primitives/SegmentedTabs/index.tsx","../src/shared/presentation/primitives/Slider/index.tsx","../src/shared/presentation/primitives/LiquidToggle/index.tsx","../src/shared/presentation/primitives/Stepper/index.tsx","../src/shared/presentation/primitives/TextInput/index.tsx","../src/shared/presentation/primitives/Textarea/index.tsx","../src/shared/presentation/primitives/NumberInput/index.tsx","../src/shared/presentation/primitives/FormField/index.tsx","../src/shared/presentation/primitives/Checkbox/index.tsx","../src/shared/presentation/primitives/Radio/index.tsx","../src/shared/presentation/primitives/Tabs/index.tsx","../src/shared/presentation/primitives/Breadcrumbs/index.tsx","../src/shared/presentation/primitives/CollapsibleSection/index.tsx","../src/shared/presentation/primitives/Modal/index.tsx","../src/shared/presentation/utilities/compose-refs.ts","../src/shared/presentation/primitives/Popover/index.tsx","../src/shared/presentation/primitives/PopoverMenu/index.tsx","../src/shared/presentation/primitives/PopoverMenuItem/index.tsx","../src/shared/presentation/primitives/Menu/index.tsx","../src/shared/presentation/primitives/Tooltip/index.tsx","../src/shared/presentation/primitives/CursorTooltip/index.tsx","../src/shared/presentation/primitives/FloatingToolbar/index.tsx","../src/shared/presentation/primitives/Tag/index.tsx","../src/shared/presentation/primitives/StatusBadge/index.tsx","../src/shared/presentation/primitives/StatusDot/index.tsx","../src/shared/presentation/primitives/InlineStatus/index.tsx","../src/shared/presentation/primitives/SaveStatusIndicator/index.tsx","../src/shared/utils/user.ts","../src/shared/presentation/primitives/Avatar/index.tsx","../src/shared/presentation/primitives/AvatarStack/index.tsx","../src/shared/presentation/primitives/IconFrame/index.tsx","../src/shared/presentation/primitives/Card/index.tsx","../src/shared/presentation/primitives/Skeleton/index.tsx","../src/shared/presentation/primitives/StatCard/index.tsx","../src/shared/presentation/primitives/SelectableCard/index.tsx","../src/shared/presentation/primitives/DashedActionBox/index.tsx","../node_modules/sileo/dist/cc-B6peeNak.mjs","../node_modules/sileo/dist/index.mjs","../src/shared/presentation/utilities/copy-to-clipboard.ts","../src/shared/presentation/primitives/KeyValueList/index.tsx","../src/shared/presentation/primitives/ListRow/index.tsx","../src/shared/utils/format.ts","../src/shared/presentation/primitives/Table/index.tsx","../src/shared/presentation/primitives/Timeline/index.tsx","../src/shared/presentation/primitives/Sparkline/index.tsx","../src/shared/presentation/primitives/Callout/index.tsx","../src/shared/presentation/primitives/EmptyState/index.tsx","../src/shared/presentation/primitives/Toast/index.tsx","../src/shared/presentation/primitives/ThinkingDots/index.tsx","../src/shared/presentation/primitives/ProgressBar/index.tsx","../src/shared/presentation/primitives/Meter/index.tsx","../src/shared/presentation/primitives/AsyncBoundary/index.tsx","../src/shared/presentation/primitives/VisuallyHidden/index.tsx"],"names":["alignMap","size","forwardRef","Stack","jsx","Row","Grid","jsxs","useRef","Children","useId","Fragment","useState","useEffect","SegmentedTabs","useMemo","useCallback","Stepper","motion","tabId","panelId","clamp","createContext","useContext","ChevronDown","memo","React","useLayoutEffect","useFloating","offset","flip","shift","autoUpdate","useClick","useDismiss","useRole","useInteractions","FloatingPortal","FloatingFocusManager","isValidElement","cloneElement","Check","Plus","Link","TableSortDirection"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Shared design tokens for Volt primitives.\n *\n * These tokens map 1:1 to utility classes already declared in\n * `src/shared/presentation/assets/stylesheets/general.css` and `base.css`.\n * Primitives MUST NOT emit classes whose CSS definitions don't exist.\n */\n\nexport type Display = 'flex' | 'grid' | 'block' | 'none';\n\nexport type FlexDirection = 'row' | 'column' | 'row-reverse';\n\nexport type AlignItems = 'start' | 'center' | 'end';\n\nexport type JustifyContent = 'start' | 'center' | 'end' | 'between' | 'around';\n\nexport type GapToken =\n | '01' | '02' | '025' | '035' | '05' | '075'\n | '1' | '1-5' | '2' | '3';\n\nexport type PaddingToken = '0' | '025' | '05' | '075' | '1' | '1-5' | '2' | '3';\n\nexport type PaddingXToken = '1';\n\nexport type MarginTopToken = '05' | '1' | '3';\n\nexport type MarginBottomToken = '1-5' | '3';\n\nexport type MarginXToken = 'auto';\n\nexport type RadiusToken = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport type BorderToken = 'soft' | 'none' | 'bottom-soft' | 'top-soft';\n\nexport type PositionToken = 'relative' | 'sticky' | 'absolute' | 'fixed';\n\nexport type OverflowToken =\n | 'auto' | 'hidden'\n | 'x-auto' | 'x-scroll'\n | 'y-auto' | 'y-scroll';\n\nexport type WidthToken = 'max' | '50' | 'vw-max';\n\nexport type HeightToken = 'max' | 'vh-max';\n\nexport type FlexToken = '1';\n\nexport type TransitionToken = 'fast' | 'normal';\n\n/**\n * Typography tokens. These match `font-size-*` / `font-weight-*` / `color-*`\n * utilities declared in `general.css`.\n */\nexport type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\nexport type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';\n\nexport type TextTone = 'primary' | 'secondary' | 'muted' | 'muted-foreground';\n\nexport type TextAlign = 'left' | 'center' | 'right';\n\nexport type SurfaceVariant =\n | 'primary' // primary-surface\n | 'glass' // glass-bg\n | 'elevated' // card-elevated\n | 'danger' // zone-danger\n | 'warning'; // zone-warning\n\n/**\n * Canonical semantic tone shared by every status/feedback primitive\n * (Tag, StatusBadge, StatusDot, InlineStatus, IconFrame, Callout, StatCard, Timeline).\n * Maps 1:1 to the `--status-*` / accent tokens and the `.color-*` text utilities.\n */\nexport type StatusTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\n\n/** Canonical control size scale shared by interactive primitives. */\nexport type ControlSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Canonical shape vocabulary shared by button-like / chip-like primitives. */\nexport type Shape = 'rounded' | 'pill' | 'square' | 'circle';\n\n/**\n * Resolves a {@link StatusTone} to the CSS custom properties that express it.\n * Single source of truth so primitives stop hardcoding per-tone colors.\n */\nexport const STATUS_TONE_VARS: Record<StatusTone, { fg: string; bg: string; border: string }> = {\n neutral: { fg: 'var(--color-text-secondary)', bg: 'var(--color-surface-2)', border: 'var(--color-border-soft)' },\n brand: { fg: 'var(--color-brand-primary)', bg: 'color-mix(in srgb, var(--color-brand-primary) 12%, transparent)', border: 'color-mix(in srgb, var(--color-brand-primary) 24%, transparent)' },\n success: { fg: 'var(--status-success)', bg: 'var(--status-success-bg)', border: 'var(--status-success-border)' },\n warning: { fg: 'var(--status-warning)', bg: 'var(--status-warning-bg)', border: 'var(--status-warning-border)' },\n danger: { fg: 'var(--status-error)', bg: 'var(--status-error-bg)', border: 'var(--status-error-border)' },\n info: { fg: 'var(--status-info)', bg: 'var(--status-info-bg)', border: 'var(--status-info-border)' }\n};\n","import type {\n Display,\n FlexDirection,\n AlignItems,\n JustifyContent,\n GapToken,\n PaddingToken,\n PaddingXToken,\n MarginTopToken,\n MarginBottomToken,\n MarginXToken,\n RadiusToken,\n BorderToken,\n PositionToken,\n OverflowToken,\n WidthToken,\n HeightToken,\n FlexToken,\n TransitionToken,\n TextAlign\n} from './types';\n\n/**\n * Style-related props shared by all box-like primitives: `Box`, `Stack`, `Row`,\n * `Surface`, `Card`, `Alert`, etc.\n *\n * Every value maps to an existing CSS utility class. Unknown values are never\n * emitted so we don't produce dead classnames.\n */\nexport interface BoxStyleProps {\n display?: Display;\n direction?: FlexDirection;\n align?: AlignItems;\n justify?: JustifyContent;\n wrap?: boolean;\n gap?: GapToken;\n\n p?: PaddingToken;\n px?: PaddingXToken;\n\n m?: '0';\n mt?: MarginTopToken;\n mb?: MarginBottomToken;\n mx?: MarginXToken;\n\n radius?: RadiusToken;\n border?: BorderToken;\n position?: PositionToken;\n overflow?: OverflowToken;\n\n width?: WidthToken;\n height?: HeightToken;\n flex?: FlexToken;\n\n textAlign?: TextAlign;\n\n shrink?: '0';\n minH?: '0';\n minW?: '0';\n\n inset?: '0';\n top?: '0' | '1';\n left?: '0' | '1';\n bottom?: '0' | '1';\n right?: '0' | '1';\n\n zIndex?: '5' | '10' | '20';\n\n transition?: TransitionToken;\n cursor?: 'pointer';\n selectNone?: boolean;\n}\n\nconst alignMap: Record<AlignItems, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end'\n};\n\nconst justifyMap: Record<JustifyContent, string> = {\n start: '',\n center: 'content-center',\n end: 'content-end',\n between: 'content-between',\n around: 'content-around'\n};\n\nconst displayMap: Record<Display, string> = {\n flex: 'd-flex',\n grid: 'd-grid',\n block: 'd-block',\n none: 'd-none'\n};\n\nconst directionMap: Record<FlexDirection, string> = {\n row: '',\n column: 'column',\n 'row-reverse': 'row-reverse'\n};\n\nconst textAlignMap: Record<TextAlign, string> = {\n left: '',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst borderMap: Record<BorderToken, string> = {\n soft: 'b-soft',\n none: 'b-none',\n 'bottom-soft': 'border-bottom-soft',\n 'top-soft': 'border-top-soft'\n};\n\nconst widthMap: Record<WidthToken, string> = {\n max: 'w-max',\n '50': 'w-50',\n 'vw-max': 'wh-max'\n};\n\nconst heightMap: Record<HeightToken, string> = {\n max: 'h-max',\n 'vh-max': 'vh-max'\n};\n\nexport const buildBoxClasses = (props: BoxStyleProps): string[] => {\n const classes: string[] = [];\n\n if (props.display) classes.push(displayMap[props.display]);\n if (props.direction) {\n const directionClass = directionMap[props.direction];\n if (directionClass) classes.push(directionClass);\n }\n if (props.align) classes.push(alignMap[props.align]);\n if (props.justify) {\n const justifyClass = justifyMap[props.justify];\n if (justifyClass) classes.push(justifyClass);\n }\n if (props.wrap) classes.push('flex-wrap');\n if (props.gap) classes.push(`gap-${props.gap}`);\n\n if (props.p !== undefined) classes.push(`p-${props.p}`);\n if (props.px) classes.push(`px-${props.px}`);\n\n if (props.m !== undefined) classes.push(`m-${props.m}`);\n if (props.mt) classes.push(`mt-${props.mt}`);\n if (props.mb) classes.push(`mb-${props.mb}`);\n if (props.mx) classes.push(`mx-${props.mx}`);\n\n if (props.radius) classes.push(`radius-${props.radius}`);\n if (props.border) classes.push(borderMap[props.border]);\n if (props.position) classes.push(`p-${props.position}`);\n if (props.overflow) classes.push(`${props.overflow}`.includes('-') ? props.overflow : `overflow-${props.overflow}`);\n\n if (props.width) classes.push(widthMap[props.width]);\n if (props.height) classes.push(heightMap[props.height]);\n if (props.flex) classes.push(`flex-${props.flex}`);\n\n if (props.textAlign) {\n const taClass = textAlignMap[props.textAlign];\n if (taClass) classes.push(taClass);\n }\n\n if (props.shrink === '0') classes.push('f-shrink-0');\n if (props.minH === '0') classes.push('min-h-0');\n if (props.minW === '0') classes.push('min-w-0');\n\n if (props.inset === '0') classes.push('inset-0');\n if (props.top !== undefined) classes.push(`top-${props.top}`);\n if (props.left !== undefined) classes.push(`left-${props.left}`);\n if (props.bottom !== undefined) classes.push(`bottom-${props.bottom}`);\n if (props.right !== undefined) classes.push(`right-${props.right}`);\n\n if (props.zIndex) classes.push(`z-${props.zIndex}`);\n\n if (props.transition) classes.push(`transition-${props.transition}`);\n if (props.cursor === 'pointer') classes.push('cursor-pointer');\n if (props.selectNone) classes.push('u-select-none');\n\n return classes;\n};\n\n/**\n * Keys of `BoxStyleProps`. Used by primitives to strip style-only props\n * from the rest passed through to the DOM element.\n */\nexport const BOX_STYLE_KEYS = [\n 'display', 'direction', 'align', 'justify', 'wrap', 'gap',\n 'p', 'px', 'm', 'mt', 'mb', 'mx',\n 'radius', 'border', 'position', 'overflow',\n 'width', 'height', 'flex',\n 'textAlign',\n 'shrink', 'minH', 'minW',\n 'inset', 'top', 'left', 'bottom', 'right',\n 'zIndex',\n 'transition', 'cursor', 'selectNone'\n] as const;\n\nexport const splitBoxProps = <T extends BoxStyleProps>(props: T): {\n styleProps: BoxStyleProps;\n rest: Omit<T, keyof BoxStyleProps>;\n} => {\n const styleProps: Record<string, unknown> = {};\n const rest: Record<string, unknown> = {};\n\n for (const key of Object.keys(props)) {\n if ((BOX_STYLE_KEYS as readonly string[]).includes(key)) {\n styleProps[key] = (props as Record<string, unknown>)[key];\n } else {\n rest[key] = (props as Record<string, unknown>)[key];\n }\n }\n\n return {\n styleProps: styleProps as BoxStyleProps,\n rest: rest as Omit<T, keyof BoxStyleProps>\n };\n};\n","type ClassValue = string | boolean | undefined | null;\n\nexport const cn = (...classes: ClassValue[]): string => {\n return classes.filter(Boolean).join(' ');\n};\n","import { cn } from '@/shared/utils/cn';\nimport type { TextAlign, TextSize, TextTone, TextWeight } from './types';\n\nconst sizeMap: Record<TextSize, string> = {\n xs: 'font-size-05',\n sm: 'font-size-1',\n md: 'font-size-2',\n lg: 'font-size-3',\n xl: 'font-size-4',\n '2xl': 'font-size-5',\n '3xl': 'font-size-6'\n};\n\nconst weightMap: Record<TextWeight, string> = {\n regular: 'font-weight-4',\n medium: 'font-weight-5',\n semibold: 'font-weight-5-5',\n bold: 'font-weight-6'\n};\n\nconst toneMap: Record<TextTone, string> = {\n primary: 'color-primary',\n secondary: 'color-secondary',\n muted: 'color-muted',\n 'muted-foreground': 'color-muted-foreground'\n};\n\nconst alignMap: Record<TextAlign, string> = {\n left: '',\n center: 'text-center',\n right: 'text-right'\n};\n\ninterface TypographyClassOptions {\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n align?: TextAlign;\n truncate?: boolean;\n lineHeight?: '5';\n className?: string;\n}\n\nexport const buildTypographyClasses = ({\n size,\n weight,\n tone,\n align,\n truncate,\n lineHeight,\n className\n}: TypographyClassOptions): string => cn(\n size ? sizeMap[size] : undefined,\n weight ? weightMap[weight] : undefined,\n tone ? toneMap[tone] : undefined,\n align ? alignMap[align] : undefined,\n truncate ? 'text-truncate' : undefined,\n lineHeight ? `line-height-${lineHeight}` : undefined,\n className\n);\n","import { cn } from '@/shared/utils/cn';\nimport { buildBoxClasses, splitBoxProps } from '../buildBoxClasses';\nimport { forwardRef } from 'react';\nimport type { BoxStyleProps } from '../buildBoxClasses';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\n\ntype PolymorphicProps<E extends ElementType> = Omit<HTMLAttributes<HTMLElement>, 'children'> & {\n as?: E;\n children?: ReactNode;\n className?: string;\n};\n\nexport type BoxProps<E extends ElementType = 'div'> = PolymorphicProps<E> & BoxStyleProps;\n\nconst BoxImpl = <E extends ElementType = 'div'>(\n { as, className, children, ...props }: BoxProps<E>,\n ref: Ref<Element>\n) => {\n const Component = (as ?? 'div') as ElementType;\n const { styleProps, rest } = splitBoxProps(props);\n const classes = cn(...buildBoxClasses(styleProps), className);\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n};\n\nconst Box = forwardRef(BoxImpl) as <E extends ElementType = 'div'>(\n props: BoxProps<E> & { ref?: Ref<Element> }\n) => ReturnType<typeof BoxImpl>;\n\nexport default Box;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { ElementType, ReactElement, Ref } from 'react';\n\n/**\n * Vertical flex stack. Defaults to `d-flex column`.\n * Accepts every `Box` style prop.\n */\nexport type StackProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display' | 'direction'>;\n\nconst Stack = forwardRef<HTMLElement, StackProps>(function Stack(props, ref) {\n return (\n <Box\n ref={ref as Ref<Element>}\n display='flex'\n direction='column'\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: StackProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Stack;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { ElementType, ReactElement, Ref } from 'react';\n\n/**\n * Horizontal flex row. Defaults to `d-flex items-center`.\n * Accepts every `Box` style prop plus `reverse`.\n */\nexport type RowProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display' | 'direction'> & {\n reverse?: boolean;\n};\n\nconst Row = forwardRef<HTMLElement, RowProps>(function Row({ reverse, align = 'center', ...props }, ref) {\n return (\n <Box\n ref={ref as Ref<Element>}\n display='flex'\n direction={reverse ? 'row-reverse' : 'row'}\n align={align}\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: RowProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Row;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { CSSProperties, ElementType, ReactElement, Ref } from 'react';\n\ntype GridColumns = 2 | 3 | 4 | 'auto-fit' | 'auto-fill';\n\n/**\n * CSS-grid layout primitive. Defaults to `d-grid` and accepts every `Box` style prop\n * (gap, padding, etc.). Use `columns` for fixed/auto tracks; `minColumnWidth` tunes the\n * auto-fit/auto-fill minimum track size.\n */\nexport type GridProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display'> & {\n columns?: GridColumns;\n /** Min track size for auto-fit/auto-fill (e.g. '180px', '12rem'). Defaults to 180px. */\n minColumnWidth?: string;\n};\n\nconst columnsClass: Record<string, string> = {\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n 'auto-fit': 'grid-auto-fit',\n 'auto-fill': 'grid-auto-fill'\n};\n\nconst Grid = forwardRef<HTMLElement, GridProps>(function Grid(\n { columns, minColumnWidth, className, style, ...props },\n ref\n) {\n const colClass = columns !== undefined ? columnsClass[String(columns)] : undefined;\n const mergedStyle = minColumnWidth\n ? ({ ...(style as CSSProperties), '--grid-min': minColumnWidth } as CSSProperties)\n : style;\n\n return (\n <Box\n ref={ref as Ref<Element>}\n display='grid'\n className={[colClass, className].filter(Boolean).join(' ') || undefined}\n style={mergedStyle}\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: GridProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Grid;\n","import { cn } from '@/shared/utils/cn';\nimport { buildBoxClasses, splitBoxProps } from '../buildBoxClasses';\nimport { forwardRef } from 'react';\nimport type { BoxStyleProps } from '../buildBoxClasses';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { SurfaceVariant } from '../types';\n\nconst variantMap: Record<SurfaceVariant, string> = {\n primary: 'primary-surface',\n glass: 'glass-bg',\n elevated: 'card-elevated',\n danger: 'zone-danger',\n warning: 'zone-warning'\n};\n\nexport interface SurfaceProps extends Omit<HTMLAttributes<HTMLElement>, 'children'>, BoxStyleProps {\n as?: ElementType;\n variant?: SurfaceVariant;\n children?: ReactNode;\n className?: string;\n}\n\nconst Surface = forwardRef<HTMLElement, SurfaceProps>(({\n as,\n variant,\n className,\n children,\n ...props\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n const { styleProps, rest } = splitBoxProps(props);\n\n const classes = cn(\n variant ? variantMap[variant] : undefined,\n ...buildBoxClasses(styleProps),\n className\n );\n\n return (\n <Component ref={ref as Ref<HTMLElement>} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nSurface.displayName = 'Surface';\n\nexport default Surface;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-orientation'> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Thin divider line. Maps to the existing `.volt-divider` + orientation variant\n * CSS declared in `general.css`.\n */\nconst Divider = forwardRef<HTMLDivElement, DividerProps>(({\n orientation = 'horizontal',\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-divider',\n `volt-divider--${orientation}`,\n className\n );\n\n return (\n <div\n ref={ref}\n role='separator'\n aria-orientation={orientation}\n className={classes}\n {...rest}\n />\n );\n});\n\nDivider.displayName = 'Divider';\n\nexport default Divider;\n","import { buildTypographyClasses } from '../typography';\nimport { forwardRef } from 'react';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { TextSize, TextWeight, TextTone, TextAlign } from '../types';\n\nexport interface TextProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n as?: 'span' | 'p' | 'div' | 'label' | 'small' | 'strong' | 'em' | 'li';\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n align?: TextAlign;\n truncate?: boolean;\n lineHeight?: '5';\n children?: ReactNode;\n className?: string;\n}\n\nconst Text = forwardRef<HTMLElement, TextProps>(({\n as = 'span',\n size,\n weight,\n tone,\n align,\n truncate,\n lineHeight,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = as as ElementType;\n\n const classes = buildTypographyClasses({ size, weight, tone, align, truncate, lineHeight, className });\n\n return (\n <Component ref={ref as Ref<HTMLElement>} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nText.displayName = 'Text';\n\nexport default Text;\n","import { buildTypographyClasses } from '../typography';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport type { TextSize, TextWeight, TextTone } from '../types';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps extends Omit<HTMLAttributes<HTMLHeadingElement>, 'children'> {\n level: HeadingLevel;\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n truncate?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(({\n level,\n size = 'lg',\n weight = 'medium',\n tone = 'primary',\n truncate,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n const classes = buildTypographyClasses({ size, weight, tone, truncate, className });\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nHeading.displayName = 'Heading';\n\nexport default Heading;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface SectionLabelProps extends HTMLAttributes<HTMLSpanElement> {\n children?: ReactNode;\n}\n\n/**\n * Eyebrow / section label. Uppercase, letter-spaced, muted.\n * Replaces ad-hoc `text-uppercase` + `font-size-05` combos.\n */\nconst SectionLabel = forwardRef<HTMLSpanElement, SectionLabelProps>(({\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <span ref={ref} className={cn('text-eyebrow', className)} {...rest}>\n {children}\n </span>\n );\n});\n\nSectionLabel.displayName = 'SectionLabel';\n\nexport default SectionLabel;\n","import './Loader.css';\nimport { forwardRef, useId } from 'react';\n\ninterface LoaderProps {\n scale: number;\n isFixed?: boolean;\n fillParent?: boolean;\n className?: string;\n label?: string;\n announce?: boolean;\n reducedMotionLabel?: string;\n};\n\nconst Loader = forwardRef<HTMLDivElement, LoaderProps>(({\n scale,\n isFixed = true,\n fillParent = false,\n className = '',\n label,\n announce = false,\n reducedMotionLabel = 'Loading'\n}, ref) => {\n const loaderItems = Array.from({ length: 12 }, (_, index) => index + 1);\n const statusId = useId();\n const statusLabel = label ?? 'Loading';\n\n let accessibilityProps = {};\n if (announce) {\n accessibilityProps = {\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': true,\n 'aria-label': label ? undefined : statusLabel,\n 'aria-labelledby': label ? statusId : undefined\n };\n }\n\n const positioningClass = fillParent\n ? 'loader-fill-parent'\n : isFixed\n ? 'p-fixed inset-0'\n : '';\n\n return (\n <div ref={ref} className={`d-flex flex-center ${positioningClass} ${className}`} {...accessibilityProps}>\n <div className='d-flex column items-center gap-2 loader-content'>\n <div className='p-relative loader-visual' style={{ transform: `scale(${scale})` }}>\n {loaderItems.map((item) => (\n <div key={item} className={`p-absolute Loader-Item Loader-Item-${item}`} />\n ))}\n </div>\n\n {label && (\n <span id={statusId} className='loader-label font-size-2 color-secondary text-center line-height-5'>\n {label}\n </span>\n )}\n <span className='loader-reduced-motion-label'>\n {reducedMotionLabel}\n </span>\n </div>\n </div>\n );\n});\n\nLoader.displayName = 'Loader';\n\nexport default Loader;\n","import { cn } from '@/shared/utils/cn';\nimport Loader from '../Loader';\nimport './Button.css';\nimport { Children, forwardRef, useRef } from 'react';\nimport { Link } from 'react-router-dom';\nimport type { ButtonHTMLAttributes, CSSProperties, MouseEventHandler, ReactNode } from 'react';\n\ninterface ButtonStyles extends CSSProperties {\n '--button-icon-size'?: string;\n};\n\ntype NativeButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>;\n\nconst MISSING_ICON_ONLY_LABEL_ERROR = 'Button with iconOnly requires an accessible name via aria-label, title, or text children.';\nconst FALLBACK_ICON_ONLY_LABEL = 'Icon button';\n\nexport interface ButtonProps extends NativeButtonProps {\n variant?: 'solid' | 'soft' | 'outline' | 'ghost' | 'toggle';\n children?: ReactNode;\n intent?: 'neutral' | 'brand' | 'danger' | 'success' | 'white' | 'canvas';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'rounded' | 'pill' | 'square' | 'circle';\n block?: boolean;\n align?: 'start' | 'center' | 'end';\n isLoading?: boolean;\n to?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n iconOnly?: boolean;\n iconSize?: number;\n premium?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n};\n\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(({ \n className = '',\n variant = 'solid',\n intent = 'neutral',\n size = 'md',\n shape = 'rounded',\n block = false,\n align = 'center',\n isLoading = false,\n to,\n disabled,\n leftIcon,\n rightIcon,\n iconOnly = false,\n iconSize,\n premium = false,\n children,\n onClick,\n style,\n title,\n type = 'button',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n id,\n role,\n tabIndex,\n ...props\n}, ref) => {\n const hasWarnedForMissingLabelRef = useRef(false);\n const isDisabled = disabled || isLoading;\n\n const textContent = Children.toArray(children)\n .filter((child): child is string | number => typeof child === 'string' || typeof child === 'number')\n .join(' ')\n .trim();\n\n const resolvedTextContent = textContent || undefined;\n const normalizedAriaLabel = ariaLabel?.trim() || undefined;\n const normalizedTitle = title?.trim() || undefined;\n\n let resolvedAriaLabel = normalizedAriaLabel;\n if (iconOnly && !resolvedAriaLabel) {\n resolvedAriaLabel = normalizedTitle ?? resolvedTextContent;\n }\n\n if (iconOnly && !resolvedAriaLabel) {\n if (!hasWarnedForMissingLabelRef.current) {\n console.warn(MISSING_ICON_ONLY_LABEL_ERROR);\n\n hasWarnedForMissingLabelRef.current = true;\n }\n\n resolvedAriaLabel = FALLBACK_ICON_ONLY_LABEL;\n }\n\n const resolvedStyle: ButtonStyles = {\n ...style,\n ...(iconSize ? { '--button-icon-size': `${iconSize}px` } : {})\n };\n\n const resolvedTitle = normalizedTitle ?? (iconOnly ? resolvedAriaLabel : undefined);\n\n const classes = cn(\n 'button',\n `variant-${variant}`,\n `intent-${intent}`,\n `size-${size}`,\n `shape-${shape}`,\n block && 'block',\n align !== 'center' && `align-${align}`,\n isLoading && 'is-loading',\n iconOnly && 'icon-only',\n premium && 'premium',\n 'p-relative',\n 'items-center',\n 'content-center',\n 'font-weight-5',\n 'u-select-none',\n 'cursor-pointer',\n 'transition-fast',\n className\n );\n\n const handleButtonClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const handleLinkClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const content = (\n <>\n {isLoading && (\n <div className=\"button-loader p-absolute d-flex items-center content-center\">\n <Loader scale={0.6} isFixed={false} />\n </div>\n )}\n\n {leftIcon && <span className=\"button-icon-left font-size-4\" aria-hidden='true'>{leftIcon}</span>}\n {iconOnly ? (\n <span className='button-icon-only-content d-flex items-center content-center' aria-hidden='true'>\n {children}\n </span>\n ) : children}\n {rightIcon && <span className=\"button-icon-right\" aria-hidden='true'>{rightIcon}</span>}\n </>\n );\n\n if (to) {\n return (\n <Link\n to={to}\n id={id}\n className={classes}\n role={role}\n onClick={handleLinkClick}\n title={resolvedTitle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-busy={isLoading || undefined}\n aria-disabled={isDisabled || undefined}\n tabIndex={isDisabled ? -1 : tabIndex}\n style={resolvedStyle}\n >\n {content}\n </Link>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type}\n className={classes}\n disabled={isDisabled}\n onClick={handleButtonClick}\n title={resolvedTitle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-busy={isLoading || undefined}\n id={id}\n role={role}\n tabIndex={tabIndex}\n style={resolvedStyle}\n {...props}\n >\n {content}\n </button>\n );\n\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import './IconButton.css';\nimport { Children, forwardRef, useRef } from 'react';\nimport type { ButtonHTMLAttributes, MouseEventHandler, ReactNode } from 'react';\n\nconst MISSING_ICON_BUTTON_LABEL_ERROR = 'IconButton requires an accessible name via aria-label, aria-labelledby, or title.';\nconst FALLBACK_ICON_BUTTON_LABEL = 'Icon button';\n\ninterface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: ReactNode;\n variant?: 'default' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n};\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(({ \n children,\n className = '',\n variant = 'default',\n size = 'md',\n disabled,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onClick,\n ...props\n}, ref) => {\n const hasWarnedForMissingLabelRef = useRef(false);\n const textContent = Children.toArray(children)\n .filter((child): child is string | number => typeof child === 'string' || typeof child === 'number')\n .join(' ')\n .trim();\n const resolvedTitle = title?.trim() || undefined;\n const labelledBy = ariaLabelledBy?.trim() || undefined;\n\n let resolvedAriaLabel = ariaLabel?.trim() || resolvedTitle || textContent || undefined;\n if (!labelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingLabelRef.current) {\n console.warn(MISSING_ICON_BUTTON_LABEL_ERROR);\n hasWarnedForMissingLabelRef.current = true;\n }\n\n resolvedAriaLabel = FALLBACK_ICON_BUTTON_LABEL;\n }\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const classes = [\n 'volt-icon-button',\n 'flex-center',\n 'transition-fast',\n `volt-icon-button--${variant}`,\n `volt-icon-button--${size}`,\n disabled && 'volt-icon-button--disabled',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={disabled}\n type='button'\n title={resolvedTitle ?? resolvedAriaLabel}\n aria-label={resolvedAriaLabel}\n aria-labelledby={labelledBy}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n\nIconButton.displayName = 'IconButton';\n\nexport default IconButton;\n","import Button from '../Button';\nimport { X } from 'lucide-react';\nimport { forwardRef } from 'react';\n\ninterface CloseButtonProps {\n onClick?: () => void;\n /** For dialog command API - use with commandfor */\n command?: 'close';\n /** Dialog ID for command API */\n commandfor?: string;\n 'aria-label'?: string;\n};\n\nconst CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(({\n onClick,\n command,\n commandfor,\n 'aria-label': ariaLabel = 'Close'\n}, ref) => {\n return (\n <Button\n ref={ref}\n variant='ghost'\n intent='neutral'\n iconOnly\n size='sm'\n onClick={onClick}\n command={command}\n commandfor={commandfor}\n aria-label={ariaLabel}\n >\n <X size={20} />\n </Button>\n );\n});\n\nCloseButton.displayName = 'CloseButton';\n\nexport default CloseButton;\n","import { cn } from '@/shared/utils/cn';\nimport './SearchInput.css';\nimport { Search } from 'lucide-react';\nimport { forwardRef, useRef } from 'react';\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_SEARCH_INPUT_NAME_ERROR = 'SearchInput requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\nconst FALLBACK_SEARCH_LABEL = 'Search';\n\ninterface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n containerClassName?: string;\n variant?: 'default' | 'small';\n overlayContent?: ReactNode;\n overlayVisible?: boolean;\n};\n\nconst SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(({\n containerClassName,\n variant = 'default',\n className,\n placeholder = 'Search…',\n overlayContent,\n overlayVisible = false,\n id,\n title,\n autoComplete = 'off',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n let accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_SEARCH_INPUT_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n accessibleName = FALLBACK_SEARCH_LABEL;\n }\n\n return (\n <div className={`${cn('search-input-container d-flex items-center gap-05', variant === 'small' && 'search-input-container--small', containerClassName)}`}>\n <Search aria-hidden='true' className={cn('search-input-icon color-muted f-shrink-0', variant === 'small' && 'search-input-icon--small')} />\n <div className='search-input-content p-relative flex-1'>\n {overlayVisible && overlayContent && (\n <div className='search-input-overlay d-flex items-center'>\n {overlayContent}\n </div>\n )}\n <input\n ref={ref}\n id={id}\n type='search'\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n autoComplete={autoComplete}\n placeholder={overlayVisible ? '' : (placeholder || 'Search…')}\n className={cn('search-input font-size-2 color-primary flex-1', variant === 'small' && 'search-input--small', className, overlayVisible && 'search-input--with-overlay')}\n {...props}\n />\n </div>\n </div>\n );\n});\n\nSearchInput.displayName = 'SearchInput';\n\nexport default SearchInput;\n","import { createContext, useContext } from 'react';\n\n/**\n * Provides the portal root for @floating-ui/react's FloatingPortal.\n *\n * When a floating element (Select, Tooltip, Popover, etc.) lives inside a\n * native <dialog> opened with .showModal(), the dialog is in the browser's\n * \"top layer\" - above everything in the normal stacking context. FloatingPortal\n * defaults to document.body, which sits *below* the top layer, making the\n * dropdown invisible.\n *\n * The Modal component provides its <dialog> element via this context so that\n * every FloatingPortal renders *inside* the dialog instead.\n */\nconst FloatingRootContext = createContext<HTMLElement | undefined>(undefined);\nexport const TopLayerRootContext = createContext<HTMLElement | undefined>(undefined);\nexport const FloatingOwnerIdsContext = createContext<string[]>([]);\nexport const FLOATING_OWNER_IDS_ATTRIBUTE = 'data-floating-owner-ids';\n\nexport const useFloatingRoot = (): HTMLElement | undefined => {\n return useContext(FloatingRootContext);\n};\n\nexport const useTopLayerRoot = (): HTMLElement | undefined => {\n return useContext(TopLayerRootContext);\n};\n\nexport const useFloatingOwnerIds = (): string[] => {\n return useContext(FloatingOwnerIdsContext);\n};\n\nexport const appendFloatingOwnerIds = (ownerIds: string[], ownerId: string): string[] => {\n if (!ownerId) {\n return ownerIds;\n }\n\n return [...ownerIds, ownerId];\n};\n\nexport const getFloatingOwnerIdsAttribute = (ownerIds: string[]): string | undefined => {\n if (!ownerIds.length) {\n return undefined;\n }\n\n return ownerIds.join(' ');\n};\n\nexport const hasFloatingOwnerId = (element: Element | null, ownerId: string): boolean => {\n if (!element || !ownerId) {\n return false;\n }\n\n const ownerIdsValue = element\n .closest<HTMLElement>(`[${FLOATING_OWNER_IDS_ATTRIBUTE}]`)\n ?.getAttribute(FLOATING_OWNER_IDS_ATTRIBUTE);\n\n if (!ownerIdsValue) {\n return false;\n }\n\n return ownerIdsValue.split(/\\s+/).includes(ownerId);\n};\n\nexport default FloatingRootContext;\n","import {\n getFloatingOwnerIdsAttribute,\n useFloatingOwnerIds,\n useTopLayerRoot\n} from '@/shared/presentation/contexts/FloatingRootContext';\nimport { size } from '@floating-ui/react';\n\nexport const matchReferenceWidth = (padding = 8) => {\n return size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`\n });\n },\n padding\n });\n};\n\nexport const useFloatingLayerRoot = () => {\n const floatingRoot = useTopLayerRoot();\n const floatingOwnerIds = useFloatingOwnerIds();\n const floatingOwnerIdsAttribute = getFloatingOwnerIdsAttribute(floatingOwnerIds);\n\n return {\n floatingRoot,\n floatingOwnerIdsAttribute\n };\n};\n","import SearchInput from '@/shared/presentation/primitives/SearchInput';\nimport { matchReferenceWidth, useFloatingLayerRoot } from './floating-layer';\nimport './Select.css';\nimport { useFloating, useClick, useDismiss, useRole, useListNavigation, useTypeahead, useInteractions, FloatingPortal, FloatingFocusManager, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { forwardRef, useId, useMemo, useState, useCallback, useEffect, useRef } from 'react';\nimport React from 'react';\n\nexport interface SelectOption {\n value: string;\n title: string;\n description?: string;\n};\n\nexport interface SelectProps {\n options: SelectOption[];\n id?: string;\n value?: string | null;\n onChange?: (value: string) => void;\n disabled?: boolean;\n onDark?: boolean;\n placeholder?: string;\n className?: string;\n style?: React.CSSProperties;\n optionClassName?: string;\n showSelectionIcon?: boolean;\n isLoading?: boolean;\n onScrollEnd?: () => void;\n renderOptionAction?: (option: SelectOption, isSelected: boolean) => React.ReactNode;\n isEditable?: boolean;\n inputClassName?: string;\n title?: string;\n onFocusCapture?: React.FocusEventHandler<HTMLElement>;\n /** Multi-select mode */\n isMulti?: boolean;\n /** Currently selected values in multi-select mode */\n selectedValues?: string[];\n /** Callback when multi-select values change */\n onMultiChange?: (values: string[]) => void;\n /** \"All\" option rendered as the first item in multi-select */\n allOption?: { value: string; title: string };\n /** Custom trigger label for multi-select */\n renderTriggerLabel?: (selectedCount: number, total: number) => string;\n /** Render a search input inside the dropdown body */\n hasSearch?: boolean;\n /** Placeholder for the dropdown search input */\n searchPlaceholder?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-errormessage'?: string;\n};\n\nconst Select = forwardRef<HTMLButtonElement | HTMLInputElement, SelectProps>(({\n options,\n id,\n value = null,\n onChange,\n disabled = false,\n onDark = false,\n placeholder = 'Select…',\n className = '',\n style,\n optionClassName = '',\n showSelectionIcon = true,\n isLoading = false,\n onScrollEnd,\n renderOptionAction,\n isEditable = false,\n inputClassName = '',\n title,\n onFocusCapture,\n isMulti = false,\n selectedValues,\n onMultiChange,\n allOption,\n renderTriggerLabel,\n hasSearch = false,\n searchPlaceholder = 'Search…',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n}, ref) => {\n const uid = useId();\n const { floatingRoot, floatingOwnerIdsAttribute } = useFloatingLayerRoot();\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [searchQuery, setSearchQuery] = useState('');\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const listContentRef = useRef<Array<string | null>>([]);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const selectedValuesSet = useMemo(() => new Set(selectedValues ?? []), [selectedValues]);\n\n const selectedOption = useMemo(() => {\n if (!value) return null;\n return options.find((option) => option.value === value) || null;\n }, [options, value]);\n\n const filteredOptions = useMemo(() => {\n if ((!isEditable && !hasSearch) || !searchQuery) return options;\n const lowerQuery = searchQuery.toLowerCase();\n return options.filter((option) => option.title.toLowerCase().includes(lowerQuery));\n }, [options, isEditable, hasSearch, searchQuery]);\n\n const displayOptions = useMemo(() => {\n if (isMulti && allOption) {\n return [{ value: allOption.value, title: allOption.title }, ...filteredOptions];\n }\n return filteredOptions;\n }, [isMulti, allOption, filteredOptions]);\n\n const selectedIndex = useMemo(() => {\n if (isMulti) return null;\n if (!value) return null;\n const optionIndex = displayOptions.findIndex((option) => option.value === value);\n if (optionIndex < 0) return null;\n return optionIndex;\n }, [isMulti, displayOptions, value]);\n\n listContentRef.current = displayOptions.map((option) => option.title);\n\n useEffect(() => {\n if (!isOpen) {\n setActiveIndex(null);\n setSearchQuery('');\n return;\n }\n\n if (selectedIndex !== null) {\n setActiveIndex(selectedIndex);\n return;\n }\n\n if (displayOptions.length > 0) {\n setActiveIndex(0);\n }\n }, [isOpen, displayOptions.length, selectedIndex]);\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement: 'bottom-start',\n middleware: [\n offset(6),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n matchReferenceWidth()\n ],\n whileElementsMounted: autoUpdate\n });\n\n const click = useClick(context, { keyboardHandlers: !isEditable });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'listbox' });\n const listNavigation = useListNavigation(context, {\n listRef,\n activeIndex,\n selectedIndex: selectedIndex ?? undefined,\n onNavigate: setActiveIndex,\n loop: true\n });\n const typeahead = useTypeahead(context, {\n listRef: listContentRef,\n activeIndex,\n selectedIndex: selectedIndex ?? undefined,\n onMatch: setActiveIndex,\n enabled: !isEditable && !isMulti\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n click,\n dismiss,\n role,\n listNavigation,\n typeahead\n ]);\n\n const handleSelect = useCallback((optionValue: string) => {\n if (isMulti) {\n if (allOption && optionValue === allOption.value) {\n onMultiChange?.([]);\n } else {\n const currentValues = selectedValues ?? [];\n const isSelected = currentValues.includes(optionValue);\n const nextValues = isSelected\n ? currentValues.filter((v) => v !== optionValue)\n : [...currentValues, optionValue];\n onMultiChange?.(nextValues);\n }\n return;\n }\n onChange?.(optionValue);\n setIsOpen(false);\n }, [isMulti, allOption, selectedValues, onMultiChange, onChange]);\n\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollEnd) return;\n\n const target = event.currentTarget;\n const threshold = 50;\n const isNearBottom = target.scrollHeight - target.scrollTop - target.clientHeight < threshold;\n\n if (isNearBottom && !isLoading) {\n onScrollEnd();\n }\n }, [onScrollEnd, isLoading]);\n\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n if (!isOpen) {\n setIsOpen(true);\n }\n }, [isOpen]);\n\n const handleInputFocus = useCallback(() => {\n setSearchQuery('');\n setIsOpen(true);\n requestAnimationFrame(() => inputRef.current?.select());\n }, []);\n\n const handleInputKeyDown = useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex !== null && filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex].value);\n } else if (filteredOptions.length === 1) {\n handleSelect(filteredOptions[0].value);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n setIsOpen(false);\n setSearchQuery('');\n }\n }, [activeIndex, filteredOptions, handleSelect]);\n\n const setInputReference = useCallback((node: HTMLInputElement | null) => {\n refs.setReference(node);\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>).current = node;\n }\n }, [refs, ref]);\n\n const inputDisplayValue = isOpen ? searchQuery : (selectedOption?.title ?? '');\n\n const multiTriggerLabel = useMemo(() => {\n const count = selectedValues?.length ?? 0;\n if (renderTriggerLabel) {\n return renderTriggerLabel(count, options.length);\n }\n if (count === 0) return placeholder;\n return `${count} selected`;\n }, [selectedValues, renderTriggerLabel, options.length, placeholder]);\n\n const renderOption = (option: SelectOption, index: number) => {\n let isSelected: boolean;\n if (isMulti) {\n if (allOption && option.value === allOption.value) {\n isSelected = (selectedValues?.length ?? 0) === 0;\n } else {\n isSelected = selectedValuesSet.has(option.value);\n }\n } else {\n isSelected = option.value === value;\n }\n\n const handleOptionKeyDown = (event: React.KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n handleSelect(option.value);\n };\n\n return (\n <div\n key={option.value}\n ref={(node) => { listRef.current[index] = node; }}\n role='option'\n tabIndex={activeIndex === index ? 0 : -1}\n aria-selected={isSelected}\n className={`select-option d-flex items-center content-between gap-05 ${optionClassName} ${isSelected ? 'selected' : ''} ${activeIndex === index ? 'active' : ''} color-primary cursor-pointer`}\n {...getItemProps({\n onClick: () => handleSelect(option.value),\n onKeyDown: handleOptionKeyDown\n })}\n >\n <div className='d-flex column'>\n <p className='font-size-2'>\n {option.title}\n </p>\n\n {option.description && (\n <p className='select-option-description color-muted font-size-1'>\n {option.description}\n </p>\n )}\n </div>\n\n {showSelectionIcon && isSelected && (\n <svg\n className='select-option-check color-muted'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n d='M20 6L9 17l-5-5'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n />\n </svg>\n )}\n\n {renderOptionAction?.(option, isSelected)}\n </div>\n );\n };\n\n const renderTrigger = () => {\n const triggerAriaProps = {\n 'aria-haspopup': 'listbox' as const,\n 'aria-expanded': isOpen,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n };\n\n if (isEditable) {\n return (\n <input\n ref={setInputReference}\n id={id ?? uid}\n type='text'\n value={inputDisplayValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n className={`select-trigger select-trigger--editable ${className} ${inputClassName} ${isOpen ? 'open' : ''}`}\n style={style}\n disabled={disabled}\n title={title}\n {...triggerAriaProps}\n onFocusCapture={onFocusCapture}\n {...getReferenceProps()}\n />\n );\n }\n\n const label = isMulti ? multiTriggerLabel : (\n selectedOption ? selectedOption.title : (\n <span className='color-muted'>{placeholder}</span>\n )\n );\n\n const setButtonReference = (node: HTMLButtonElement | null) => {\n refs.setReference(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>).current = node;\n }\n };\n\n return (\n <button\n ref={setButtonReference}\n id={id ?? uid}\n type='button'\n className={`select-trigger d-flex items-center gap-05 ${onDark ? 'on-dark' : ''} ${className} ${isOpen ? 'open' : ''} overflow-hidden cursor-pointer`}\n style={style}\n disabled={disabled}\n title={title}\n {...triggerAriaProps}\n onFocusCapture={onFocusCapture}\n {...getReferenceProps()}\n >\n <span className='select-value overflow-hidden'>\n {label}\n </span>\n\n <svg\n className={`select-chevron ${isOpen ? 'rotated' : ''}`}\n width='18'\n height='18'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n d='M7 10l5 5 5-5'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n />\n </svg>\n </button>\n );\n };\n\n return (\n <>\n {renderTrigger()}\n\n {isOpen && (\n <FloatingPortal root={floatingRoot}>\n <FloatingFocusManager context={context} modal={false}>\n <div\n ref={refs.setFloating}\n className='select-dropdown y-auto glass-bg'\n data-floating-owner-ids={floatingOwnerIdsAttribute}\n style={floatingStyles}\n onScroll={handleScroll}\n {...getFloatingProps()}\n >\n {hasSearch && (\n <SearchInput\n variant='small'\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n aria-label='Search options'\n containerClassName='select-dropdown-search'\n />\n )}\n\n {displayOptions.map(renderOption)}\n\n {isLoading && (\n <div className='select-option-loading d-flex items-center content-center'>\n <p className='color-muted font-size-1'>Loading…</p>\n </div>\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n );\n});\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import { useEffect, useState } from 'react';\n\nconst supportsMatchMedia = (): boolean => {\n return typeof window.matchMedia === 'function';\n};\n\nconst getInitialMatch = (query: string): boolean => {\n if (!supportsMatchMedia()) {\n return false;\n }\n return window.matchMedia(query).matches;\n};\n\n/** Subscribes to a CSS media query and returns whether it currently matches. */\nconst useMedia = (query: string): boolean => {\n const [matches, setMatches] = useState<boolean>(() => getInitialMatch(query));\n\n useEffect(() => {\n if (!supportsMatchMedia()) {\n return;\n }\n\n const mediaQueryList = window.matchMedia(query);\n const handleChange = (event: MediaQueryListEvent) => setMatches(event.matches);\n\n setMatches(mediaQueryList.matches);\n mediaQueryList.addEventListener('change', handleChange);\n\n return () => mediaQueryList.removeEventListener('change', handleChange);\n }, [query]);\n\n return matches;\n};\n\nexport default useMedia;\n","import useMedia from '@/shared/presentation/hooks/use-media';\n\nconst REDUCED_MOTION_MEDIA_QUERY = '(prefers-reduced-motion: reduce)';\n\nexport const usePrefersReducedMotion = (): boolean => useMedia(REDUCED_MOTION_MEDIA_QUERY);\n","import { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { motion } from 'framer-motion';\nimport { forwardRef, useId } from 'react';\nimport type { ReactElement, ReactNode, Ref } from 'react';\nimport './SegmentedTabs.css';\n\nexport interface SegmentedTabOption<TId extends string = string> {\n id: TId;\n label: string;\n icon?: ReactNode;\n};\n\ninterface SegmentedTabsProps<TId extends string = string> {\n tabs: ReadonlyArray<SegmentedTabOption<TId>>;\n activeTab: TId;\n onChange: (id: TId) => void;\n ariaLabel: string;\n /** Unique per instance. Defaults to a React-generated id — override only to share animation across mount boundaries. */\n layoutId?: string;\n size?: 'sm' | 'md';\n fullWidth?: boolean;\n className?: string;\n};\n\nconst SegmentedTabs = forwardRef(function SegmentedTabs<TId extends string>({\n tabs,\n activeTab,\n onChange,\n ariaLabel,\n layoutId,\n size = 'md',\n fullWidth = false,\n className = ''\n}: SegmentedTabsProps<TId>, ref: Ref<HTMLDivElement>) {\n const prefersReducedMotion = usePrefersReducedMotion();\n const autoLayoutId = useId();\n const resolvedLayoutId = layoutId ?? autoLayoutId;\n\n const containerClassName = [\n 'segmented-tabs',\n `segmented-tabs--${size}`,\n fullWidth ? 'segmented-tabs--full' : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} className={`${containerClassName}`} role='tablist' aria-label={ariaLabel}>\n {tabs.map((tab) => {\n const isActive = activeTab === tab.id;\n return (\n <button\n key={tab.id}\n type='button'\n role='tab'\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n className={`segmented-tabs__tab ${isActive ? 'is-active' : ''}`}\n onClick={() => onChange(tab.id)}\n >\n {isActive && (\n <motion.span\n layoutId={`${resolvedLayoutId}-pill`}\n className='segmented-tabs__pill'\n transition={prefersReducedMotion\n ? { duration: 0 }\n : { type: 'spring', stiffness: 420, damping: 36 }}\n />\n )}\n <span className='segmented-tabs__label'>\n {tab.icon ? <span className='segmented-tabs__icon d-flex flex-center'>{tab.icon}</span> : null}\n {tab.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}) as <TId extends string>(props: SegmentedTabsProps<TId> & { ref?: Ref<HTMLDivElement> }) => ReactElement;\n\n(SegmentedTabs as { displayName?: string }).displayName = 'SegmentedTabs';\n\nexport default SegmentedTabs;\n","import './Slider.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface SliderProps {\n min: number;\n max: number;\n value: number;\n onChange: (value: number) => void;\n step?: number;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n};\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\n\nconst getStepDecimals = (step: number) => {\n const s = step.toString();\n if(s.includes('e-')) return parseInt(s.split('e-')[1], 10);\n const i = s.indexOf('.');\n return i === -1 ? 0 : s.length - i - 1;\n};\n\nconst snapToStep = (raw: number, min: number, step: number, decimals: number) =>\n Number((Math.round((raw - min) / step) * step + min).toFixed(decimals));\n\nconst Slider = forwardRef<HTMLDivElement, SliderProps>(({\n min,\n max,\n value,\n onChange,\n step = 1,\n disabled = false,\n className = '',\n style\n}, ref) => {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const auraKeyRef = useRef(0);\n\n const [isDragging, setIsDragging] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [auraPulseKey, setAuraPulseKey] = useState(0);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const decimals = useMemo(() => getStepDecimals(step), [step]);\n const ratioFromValue = useCallback(\n (v: number) => (max === min ? 0 : clamp((v - min) / (max - min), 0, 1)),\n [min, max]\n );\n\n const ratio = ratioFromValue(value);\n\n const updateFromClientX = useCallback((clientX: number) => {\n if(!trackRef.current || disabled) return;\n const rect = trackRef.current.getBoundingClientRect();\n const r = clamp((clientX - rect.left) / rect.width, 0, 1);\n const raw = min + r * (max - min);\n const next = clamp(snapToStep(raw, min, step, decimals), min, max);\n onChange(next);\n }, [disabled, min, max, step, decimals, onChange]);\n\n const onPointerDown = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(disabled) return;\n e.currentTarget.setPointerCapture?.(e.pointerId);\n setIsDragging(true);\n updateFromClientX(e.clientX);\n }, [disabled, updateFromClientX]);\n\n const onPointerMove = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging || disabled) return;\n updateFromClientX(e.clientX);\n }, [isDragging, disabled, updateFromClientX]);\n\n const finishDrag = useCallback((target: HTMLDivElement, pointerId: number) => {\n target.releasePointerCapture?.(pointerId);\n setIsDragging(false);\n }, []);\n\n const onPointerUp = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging) return;\n finishDrag(e.currentTarget, e.pointerId);\n }, [isDragging, finishDrag]);\n\n const onPointerCancel = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging) return;\n finishDrag(e.currentTarget, e.pointerId);\n }, [isDragging, finishDrag]);\n\n const onLostCapture = useCallback(() => {\n if(isDragging) setIsDragging(false);\n }, [isDragging]);\n\n const onMouseEnter = useCallback(() => {\n if(disabled || isDragging) return;\n setIsHovered(true);\n }, [disabled, isDragging]);\n\n const onMouseLeave = useCallback(() => {\n if(disabled || isDragging) return;\n setIsHovered(false);\n }, [disabled, isDragging]);\n\n const triggerAuraPulse = useCallback(() => {\n if (prefersReducedMotion) return;\n auraKeyRef.current += 1;\n setAuraPulseKey(auraKeyRef.current);\n }, [prefersReducedMotion]);\n\n const onKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if(disabled) return;\n let next = value;\n const coarse = step * 10;\n switch(e.key){\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n next = clamp(value - step, min, max);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n next = clamp(value + step, min, max);\n break;\n case 'PageDown':\n e.preventDefault();\n next = clamp(value - coarse, min, max);\n break;\n case 'PageUp':\n e.preventDefault();\n next = clamp(value + coarse, min, max);\n break;\n case 'Home':\n e.preventDefault();\n next = min;\n break;\n case 'End':\n e.preventDefault();\n next = max;\n break;\n default:\n return;\n }\n next = snapToStep(next, min, step, decimals);\n triggerAuraPulse();\n onChange(next);\n }, [disabled, value, step, min, max, decimals, onChange, triggerAuraPulse]);\n\n // Ensure hover state resets if disabled toggles on mid-hover.\n useEffect(() => {\n if (disabled) {\n setIsHovered(false);\n setIsDragging(false);\n }\n }, [disabled]);\n\n const trackStyle = {\n '--slider-ratio': ratio,\n '--slider-ring-a': isDragging ? 1 : (isHovered ? 0.5 : 0),\n '--slider-ring-b': isDragging ? 1 : 0,\n '--slider-elev': isDragging ? 1 : 0,\n '--slider-scale': isDragging ? 1.05 : (isHovered ? 1.02 : 1),\n '--slider-aura-opacity': isDragging ? 1 : 0,\n '--slider-aura-scale': isDragging ? 1.1 : 1,\n '--slider-aura-intensity': isDragging ? 0.5 : 0,\n '--slider-sheen-opacity': isDragging ? 1 : 0\n } as CSSProperties;\n\n return (\n <div ref={ref} className={`slider slider--ios ${disabled ? 'slider--disabled' : ''} ${className || ''} u-select-none`} style={style} aria-disabled={disabled || undefined} data-disabled={disabled || undefined}>\n <div\n ref={trackRef}\n className='slider__track p-relative w-max overflow-hidden cursor-pointer'\n role='slider'\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${value}`}\n tabIndex={disabled ? -1 : 0}\n data-dragging={isDragging || undefined}\n data-hovered={isHovered || undefined}\n style={trackStyle}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n onLostPointerCapture={onLostCapture}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <div className='slider__progress p-absolute inset-0'>\n <div className='slider__gloss p-absolute' />\n <div className='slider__sheen p-absolute' data-running={isDragging || undefined} />\n <div\n className='slider__aura p-absolute'\n key={auraPulseKey}\n data-pulse={auraPulseKey > 0 || undefined}\n />\n <div className='slider__sparkles p-absolute overflow-hidden inset-0'>\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n </div>\n <div className='slider__noise p-absolute inset-0' />\n </div>\n </div>\n </div>\n );\n});\n\nSlider.displayName = 'Slider';\n\nexport default memo(Slider);\n","import '../LiquidToggle/LiquidToggle.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { forwardRef, useEffect, useRef, useState, useCallback } from 'react';\n\ninterface LiquidToggleProps {\n className?: string;\n id?: string;\n pressed?: boolean;\n defaultPressed?: boolean;\n onChange?: (pressed: boolean) => void;\n bounce?: boolean;\n disabled?: boolean;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-errormessage'?: string;\n};\n\nconst LiquidToggle = forwardRef<HTMLDivElement, LiquidToggleProps>(({\n className,\n id,\n pressed,\n defaultPressed = false,\n onChange,\n bounce = true,\n disabled = false,\n 'aria-label': ariaLabel = 'toggle',\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n}, ref) => {\n const btnRef = useRef<HTMLButtonElement | null>(null);\n\n const isControlled = typeof pressed === 'boolean';\n const [internalPressed, setInternalPressed] = useState(defaultPressed);\n const effectivePressed = isControlled ? pressed : internalPressed;\n\n const [active, setActive] = useState(false);\n const [complete, setComplete] = useState(effectivePressed ? 100 : 0);\n\n const [isDragging, setIsDragging] = useState(false);\n const [dragStart, setDragStart] = useState<{ x: number; y: number } | null>(null);\n const [dragBounds, setDragBounds] = useState(0);\n const pressTimeRef = useRef(0);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const completeRef = useRef(effectivePressed ? 100 : 0);\n\n const commitPressedState = useCallback((nextPressed: boolean) => {\n const targetComplete = nextPressed ? 100 : 0;\n\n setActive(false);\n setComplete(targetComplete);\n completeRef.current = targetComplete;\n\n if (btnRef.current) {\n btnRef.current.setAttribute('aria-pressed', String(nextPressed));\n }\n\n onChange?.(nextPressed);\n\n if (!isControlled) {\n setInternalPressed(nextPressed);\n }\n }, [isControlled, onChange]);\n\n useEffect(() => {\n document.documentElement.dataset.bounce = String(bounce);\n }, [bounce]);\n\n useEffect(() => {\n if (btnRef.current) {\n btnRef.current.style.setProperty('--complete', String(complete));\n completeRef.current = complete;\n }\n }, [complete]);\n\n useEffect(() => {\n if (!isControlled) return;\n const targetComplete = pressed ? 100 : 0;\n setComplete(targetComplete);\n if (btnRef.current) {\n btnRef.current.setAttribute('aria-pressed', String(pressed));\n }\n }, [isControlled, pressed]);\n\n const toggleTimeline = useCallback(() => {\n if (!btnRef.current || disabled) return;\n const el = btnRef.current;\n const wasPressed = el.getAttribute('aria-pressed') === 'true';\n const nextPressed = !wasPressed;\n\n setActive(true);\n\n // CSS transitions on --complete (and dependent props) handle the visual tween.\n // We commit the final state immediately; the browser animates via transition-duration.\n commitPressedState(nextPressed);\n }, [commitPressedState, disabled]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (!btnRef.current || disabled) return;\n\n pressTimeRef.current = Date.now();\n const rect = btnRef.current.getBoundingClientRect();\n const isOn = btnRef.current.getAttribute('aria-pressed') === 'true';\n\n setDragStart({ x: e.clientX, y: e.clientY });\n setDragBounds(isOn ? (rect.left - e.clientX) : (rect.left + rect.width - e.clientX));\n setActive(true);\n\n btnRef.current.setPointerCapture(e.pointerId);\n }, [disabled]);\n\n const handlePointerMove = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (!dragStart) return;\n\n if (!isDragging) {\n const distance = Math.abs(e.clientX - dragStart.x);\n if (distance > 4) setIsDragging(true);\n }\n\n if (isDragging && btnRef.current) {\n const isOn = btnRef.current.getAttribute('aria-pressed') === 'true';\n const dragged = e.clientX - dragStart.x;\n\n let rawComplete;\n if (isOn) {\n rawComplete = ((dragBounds - dragged) / Math.abs(dragBounds)) * 100;\n } else {\n rawComplete = (dragged / Math.abs(dragBounds)) * 100;\n }\n\n const clampedComplete = Math.max(0, Math.min(100, rawComplete));\n setComplete(clampedComplete);\n completeRef.current = clampedComplete;\n }\n }, [disabled, isDragging, dragStart, dragBounds]);\n\n const handlePointerUp = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) return;\n const releaseTime = Date.now();\n const pressDuration = releaseTime - pressTimeRef.current;\n\n if (isDragging) {\n const targetComplete = complete >= 50 ? 100 : 0;\n commitPressedState(targetComplete >= 50);\n } else if (pressDuration <= 150) {\n toggleTimeline();\n } else {\n setActive(false);\n }\n\n setIsDragging(false);\n setDragStart(null);\n if (btnRef.current) {\n btnRef.current.releasePointerCapture(e.pointerId);\n }\n }, [commitPressedState, disabled, isDragging, complete, toggleTimeline]);\n\n const onClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDragging) e.preventDefault();\n }, [isDragging]);\n\n const onKeyDown = useCallback((e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === ' ') e.preventDefault();\n if (e.key === 'Enter') toggleTimeline();\n }, [disabled, toggleTimeline]);\n\n const onKeyUp = useCallback((e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === ' ') toggleTimeline();\n }, [disabled, toggleTimeline]);\n\n // prefersReducedMotion is respected by the CSS @media (prefers-reduced-motion)\n // block which disables transitions. Kept in deps to preserve intent for future use.\n void prefersReducedMotion;\n\n return (\n <div ref={ref} className='liquid-toggle-wrapper'>\n <button\n ref={btnRef}\n id={id}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-errormessage={ariaErrorMessage}\n aria-pressed={effectivePressed}\n className={`liquid-toggle${className ? ` ${className}` : ''}`}\n data-active={String(active)}\n type='button'\n disabled={disabled}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onClick={onClick}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={{ touchAction: 'none' }}\n >\n <div className='knockout'>\n <div className='indicator indicator--masked'>\n <div className='mask'></div>\n </div>\n </div>\n\n <div className='indicator__liquid'>\n <div className='shadow'></div>\n <div className='wrapper'>\n <div className='liquids'>\n <div className='liquid__shadow'></div>\n <div className='liquid__track'></div>\n </div>\n </div>\n <div className='cover'></div>\n </div>\n </button>\n </div>\n );\n});\n\nLiquidToggle.displayName = 'LiquidToggle';\n\nexport default LiquidToggle;\n","import './Stepper.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { forwardRef, useEffect, useId, useState } from 'react';\nimport type { KeyboardEvent, ReactElement, Ref } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface Step<K extends string>{\n key: K;\n content: ReactNode;\n};\n\ninterface StepTitle{\n title: string;\n subtitle: string;\n};\n\nexport type StepTitles<K extends string> = Record<K, StepTitle>;\n\nexport interface StepIndicator<K extends string>{\n key: K;\n label: string;\n description?: string;\n};\n\ntype Direction = 'forward' | 'backward';\n\ninterface StepperProps<K extends string>{\n steps: Step<K>[];\n activeStep: K;\n className?: string;\n indicators?: StepIndicator<K>[];\n onStepClick?: (key: K) => void;\n canNavigateTo?: (key: K) => boolean;\n};\n\nconst variants = {\n enter: (direction: Direction) => ({\n x: direction === 'forward' ? 20 : -20,\n opacity: 0\n }),\n center: {\n x: 0,\n opacity: 1\n },\n exit: (direction: Direction) => ({\n x: direction === 'forward' ? -20 : 20,\n opacity: 0\n })\n};\n\nconst reducedMotionVariants = {\n enter: {\n x: 0,\n opacity: 0\n },\n center: {\n x: 0,\n opacity: 1\n },\n exit: {\n x: 0,\n opacity: 0\n }\n};\n\nconst Stepper = forwardRef(function Stepper<K extends string>({\n steps,\n activeStep,\n className = '',\n indicators,\n onStepClick,\n canNavigateTo\n}: StepperProps<K>, ref: Ref<HTMLDivElement>) {\n const [prevStep, setPrevStep] = useState<K>(activeStep);\n const prefersReducedMotion = usePrefersReducedMotion();\n const stepperId = useId();\n const stepIndicators = indicators ?? [];\n const stepVariants = prefersReducedMotion ? reducedMotionVariants : variants;\n \n const currentIndex = steps.findIndex((step) => step.key === activeStep);\n const prevIndex = steps.findIndex((step) => step.key === prevStep);\n const direction: Direction = currentIndex >= prevIndex ? 'forward' : 'backward';\n\n useEffect(() => {\n if (activeStep !== prevStep) {\n setPrevStep(activeStep);\n }\n }, [activeStep, prevStep]);\n\n const currentStep = steps.find((state) => state.key === activeStep);\n const activePanelId = `${stepperId}-${activeStep}-panel`;\n\n const handleIndicatorClick = (key: K) => {\n if(!onStepClick) return;\n if(canNavigateTo && !canNavigateTo(key)) return;\n onStepClick(key);\n };\n\n const getNavigableIndex = (startIndex: number, increment: number) => {\n let nextIndex = startIndex;\n\n while (nextIndex >= 0 && nextIndex < stepIndicators.length) {\n const nextIndicator = stepIndicators[nextIndex];\n if (!nextIndicator) {\n return null;\n }\n\n if (!canNavigateTo || canNavigateTo(nextIndicator.key)) {\n return nextIndex;\n }\n\n nextIndex += increment;\n }\n\n return null;\n };\n\n const handleIndicatorKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n if (!indicators || !onStepClick) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(index + 1, 1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(index - 1, -1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(0, 1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(stepIndicators.length - 1, -1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n }\n };\n\n const renderStepContent = () => (\n <AnimatePresence \n mode='wait' \n custom={direction} \n initial={false}>\n <motion.div\n key={activeStep}\n custom={direction}\n variants={stepVariants}\n initial='enter'\n animate='center'\n exit='exit'\n transition={{ duration: prefersReducedMotion ? 0 : 0.25 }}\n className={`stepper-step ${className}`}\n id={activePanelId}\n role={indicators ? 'tabpanel' : undefined}\n aria-labelledby={indicators ? `${stepperId}-${activeStep}-tab` : undefined}\n tabIndex={0}>\n {currentStep?.content}\n </motion.div>\n </AnimatePresence>\n );\n\n if(!indicators){\n return (\n <div ref={ref} className='stepper-standalone'>\n {renderStepContent()}\n </div>\n );\n }\n\n return (\n <div ref={ref} className='stepper-with-sidebar d-flex overflow-hidden flex-1'>\n <div className='stepper-sidebar d-flex column gap-05' role='tablist' aria-orientation='vertical'>\n {stepIndicators.map((indicator, index) => {\n const indicatorIndex = steps.findIndex((s) => s.key === indicator.key);\n const isActive = indicator.key === activeStep;\n const isComplete = indicatorIndex < currentIndex;\n const isClickable = !canNavigateTo || canNavigateTo(indicator.key);\n const tabId = `${stepperId}-${indicator.key}-tab`;\n const panelId = `${stepperId}-${indicator.key}-panel`;\n \n return (\n <div className=\"\" key={indicator.key}>\n <button\n id={tabId}\n type='button'\n role='tab'\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n className={`stepper-indicator d-flex items-center gap-1 ${isActive ? 'active' : ''} ${isComplete ? 'complete' : ''} ${isClickable && onStepClick ? 'cursor-pointer' : ''}`}\n disabled={!isClickable || !onStepClick}\n onClick={() => handleIndicatorClick(indicator.key)}\n onKeyDown={(event) => handleIndicatorKeyDown(event, index)}\n >\n <div className='stepper-indicator-number d-flex flex-center font-weight-6'>\n {index + 1}\n </div>\n <div className='stepper-indicator-label d-flex column gap-025'>\n <span className='stepper-indicator-title'>{indicator.label}</span>\n {indicator.description && (\n <small className='stepper-indicator-desc'>{indicator.description}</small>\n )}\n </div>\n </button>\n {index < stepIndicators.length - 1 && (\n <div className={`stepper-line ${indicatorIndex < currentIndex ? 'active' : ''}`} />\n )}\n </div>\n );\n })}\n </div>\n <div className='stepper-content y-auto flex-1'>\n {renderStepContent()}\n </div>\n </div>\n );\n}) as <K extends string>(props: StepperProps<K> & { ref?: Ref<HTMLDivElement> }) => ReactElement;\n\n(Stepper as { displayName?: string }).displayName = 'Stepper';\n\nexport default Stepper;\n","import { cn } from '@/shared/utils/cn';\nimport './TextInput.css';\nimport { forwardRef, useRef, useState } from 'react';\nimport type { FocusEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_TEXT_INPUT_NAME_ERROR = 'TextInput requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\n\ntype InputSize = 'sm' | 'md' | 'lg';\n\nexport interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Vertical rhythm of the control. Surface tokens stay constant across sizes. */\n size?: InputSize;\n /** Renders the danger border treatment; pair with `aria-invalid`. */\n hasError?: boolean;\n /** Leading adornment (e.g. a lucide icon). Decorative — kept out of the a11y tree. */\n leftIcon?: ReactNode;\n /** Trailing adornment (e.g. a lucide icon or action). Decorative. */\n rightIcon?: ReactNode;\n /** Stretch the control to fill its container. */\n fullWidth?: boolean;\n /** Extra class for the outer surface wrapper. */\n containerClassName?: string;\n}\n\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>(({\n size = 'md',\n hasError = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n containerClassName,\n className,\n disabled,\n type = 'text',\n id,\n title,\n onFocus,\n onBlur,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n const accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TEXT_INPUT_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setIsFocused(false);\n onBlur?.(event);\n };\n\n const containerClasses = cn(\n 'volt-text-input',\n `volt-text-input--${size}`,\n fullWidth && 'volt-text-input--full-width',\n hasError && 'volt-text-input--error',\n isFocused && 'volt-text-input--focused',\n disabled && 'volt-text-input--disabled',\n containerClassName\n );\n\n return (\n <div className={containerClasses}>\n {leftIcon && (\n <span className='volt-text-input__affix volt-text-input__affix--left' aria-hidden='true'>\n {leftIcon}\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type={type}\n disabled={disabled}\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-invalid={ariaInvalid ?? (hasError || undefined)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn('volt-text-input__field', className)}\n {...props}\n />\n {rightIcon && (\n <span className='volt-text-input__affix volt-text-input__affix--right' aria-hidden='true'>\n {rightIcon}\n </span>\n )}\n </div>\n );\n});\n\nTextInput.displayName = 'TextInput';\n\nexport default TextInput;\n","import { cn } from '@/shared/utils/cn';\nimport './Textarea.css';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEventHandler, TextareaHTMLAttributes } from 'react';\n\nconst MISSING_TEXTAREA_NAME_ERROR = 'Textarea requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\n\ntype TextareaSize = 'sm' | 'md' | 'lg';\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'rows'> {\n /** Vertical rhythm of the control. Surface tokens stay constant across sizes. */\n size?: TextareaSize;\n /** Renders the danger border treatment; pair with `aria-invalid`. */\n hasError?: boolean;\n /** Grow the field with its content (up to `maxRows`) instead of scrolling. */\n autosize?: boolean;\n /** Minimum visible rows (and the floor for autosize). */\n minRows?: number;\n /** Ceiling for autosize growth; beyond this the field scrolls. */\n maxRows?: number;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(({\n size = 'md',\n hasError = false,\n autosize = false,\n minRows = 2,\n maxRows = 8,\n className,\n disabled,\n id,\n title,\n value,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n\n // Expose the underlying node to the forwarded ref while keeping a local\n // handle for autosize measurements.\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement, []);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n const accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TEXTAREA_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const resize = useCallback(() => {\n const node = innerRef.current;\n if (!node || !autosize) return;\n\n const computed = window.getComputedStyle(node);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingY = parseFloat(computed.paddingTop) + parseFloat(computed.paddingBottom);\n const borderY = parseFloat(computed.borderTopWidth) + parseFloat(computed.borderBottomWidth);\n const verticalChrome = paddingY + borderY;\n\n // Reset so scrollHeight reflects the true content height, then clamp\n // between the min/max row bounds.\n node.style.height = 'auto';\n const minHeight = minRows * lineHeight + verticalChrome;\n const maxHeight = maxRows * lineHeight + verticalChrome;\n const next = Math.min(Math.max(node.scrollHeight, minHeight), maxHeight);\n node.style.height = `${next}px`;\n }, [autosize, minRows, maxRows]);\n\n useLayoutEffect(() => {\n resize();\n }, [resize, value]);\n\n useEffect(() => {\n if (!autosize) return;\n window.addEventListener('resize', resize);\n return () => window.removeEventListener('resize', resize);\n }, [autosize, resize]);\n\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onChange?.(event);\n if (autosize) resize();\n };\n\n const classes = cn(\n 'volt-textarea',\n `volt-textarea--${size}`,\n autosize && 'volt-textarea--autosize',\n hasError && 'volt-textarea--error',\n className\n );\n\n return (\n <textarea\n ref={innerRef}\n id={id}\n rows={minRows}\n disabled={disabled}\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-invalid={ariaInvalid ?? (hasError || undefined)}\n value={value}\n onChange={handleChange}\n className={classes}\n {...props}\n />\n );\n});\n\nTextarea.displayName = 'Textarea';\n\nexport default Textarea;\n","import { cn } from '@/shared/utils/cn';\nimport TextInput from '../TextInput';\nimport IconButton from '../IconButton';\nimport './NumberInput.css';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { forwardRef, useCallback, useRef } from 'react';\nimport type { ChangeEventHandler } from 'react';\nimport type { TextInputProps } from '../TextInput';\n\nexport interface NumberInputProps extends Omit<TextInputProps, 'type' | 'value' | 'defaultValue' | 'onChange'> {\n min?: number;\n max?: number;\n /** Increment applied by the steppers and arrow keys. Defaults to 1. */\n step?: number;\n value?: number | '';\n defaultValue?: number;\n /** Native change passthrough (fires with the raw string event). */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Parsed-number callback; receives `NaN` when the field is cleared/invalid. */\n onValueChange?: (value: number) => void;\n /** Render the increment/decrement stepper buttons. */\n showSteppers?: boolean;\n}\n\nconst clamp = (value: number, min?: number, max?: number): number => {\n let next = value;\n if (typeof min === 'number') next = Math.max(next, min);\n if (typeof max === 'number') next = Math.min(next, max);\n return next;\n};\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(({\n min,\n max,\n step = 1,\n value,\n defaultValue,\n onChange,\n onValueChange,\n showSteppers = true,\n disabled,\n containerClassName,\n rightIcon,\n ...props\n}, ref) => {\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n // Merge the forwarded ref with a local handle used to read/step the value.\n const setRefs = useCallback((node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }, [ref]);\n\n const emitValue = useCallback((next: number) => {\n onValueChange?.(next);\n }, [onValueChange]);\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onChange?.(event);\n const raw = event.target.value;\n emitValue(raw === '' ? Number.NaN : Number(raw));\n };\n\n const stepBy = useCallback((direction: 1 | -1) => {\n if (disabled) return;\n\n const current = (() => {\n if (typeof value === 'number') return value;\n const parsed = Number(innerRef.current?.value);\n return Number.isFinite(parsed) ? parsed : (min ?? 0);\n })();\n\n const next = clamp(current + direction * step, min, max);\n emitValue(next);\n\n // Keep the DOM in sync for uncontrolled usage.\n if (value === undefined && innerRef.current) {\n innerRef.current.value = String(next);\n }\n }, [disabled, value, min, max, step, emitValue]);\n\n const steppers = showSteppers ? (\n <span className='volt-number-input__steppers' aria-hidden='true'>\n <IconButton\n tabIndex={-1}\n aria-label='Increment value'\n className='volt-number-input__stepper'\n disabled={disabled || (typeof max === 'number' && typeof value === 'number' && value >= max)}\n onClick={() => stepBy(1)}\n >\n <ChevronUp />\n </IconButton>\n <IconButton\n tabIndex={-1}\n aria-label='Decrement value'\n className='volt-number-input__stepper'\n disabled={disabled || (typeof min === 'number' && typeof value === 'number' && value <= min)}\n onClick={() => stepBy(-1)}\n >\n <ChevronDown />\n </IconButton>\n </span>\n ) : null;\n\n return (\n <TextInput\n ref={setRefs}\n type='number'\n inputMode='decimal'\n min={min}\n max={max}\n step={step}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n containerClassName={cn('volt-number-input', containerClassName)}\n rightIcon={steppers ?? rightIcon}\n {...props}\n />\n );\n});\n\nNumberInput.displayName = 'NumberInput';\n\nexport default NumberInput;\n","import { cn } from '@/shared/utils/cn';\nimport './FormField.css';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport { forwardRef, useId } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type FormFieldLayout = 'stacked' | 'inline';\n\nexport interface FormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Visible field label. Rendered as a `<label>` bound to `htmlFor` when present. */\n label?: ReactNode;\n /** Associates the label with the control it wraps (the control's `id`). */\n htmlFor?: string;\n /** Marks the field as required and renders a danger-toned asterisk after the label. */\n required?: boolean;\n /** Error message. When set, the field is described by a danger-toned message. */\n error?: ReactNode;\n /** Secondary helper text shown when there's no error. */\n helpText?: ReactNode;\n /** `stacked` (default) renders label above the control; `inline` uses a label-column grid. */\n layout?: FormFieldLayout;\n /** The control (input/select/checkbox/etc.) this field wraps. */\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * Generic field wrapper that pairs a label and helper/error messaging with an\n * arbitrary control. Composes {@link Stack} + {@link Text}; carries no input\n * styling of its own so any control primitive can sit inside it.\n *\n * Accessibility: the label is a real `<label htmlFor>` when `htmlFor` is given,\n * and the helper/error text gets a stable id so callers can wire\n * `aria-describedby` on the control (exposed via the resolved id on the message).\n */\nconst FormField = forwardRef<HTMLDivElement, FormFieldProps>(({\n label,\n htmlFor,\n required = false,\n error,\n helpText,\n layout = 'stacked',\n children,\n className,\n id,\n ...rest\n}, ref) => {\n const reactId = useId();\n const baseId = id ?? `volt-form-field-${reactId}`;\n const messageId = `${baseId}-message`;\n\n const hasLabel = label != null && label !== '';\n const hasError = error != null && error !== '';\n const hasHelp = !hasError && helpText != null && helpText !== '';\n const message = hasError ? error : helpText;\n const hasMessage = hasError || hasHelp;\n\n const labelText = (\n <Text as='span' size='sm' weight='medium' tone='secondary'>\n {label}\n {required && (\n <span className='volt-form-field__required' aria-hidden='true'>*</span>\n )}\n </Text>\n );\n\n const labelNode = hasLabel ? (\n htmlFor ? (\n <label htmlFor={htmlFor} className='volt-form-field__label'>\n {labelText}\n </label>\n ) : (\n <div className='volt-form-field__label'>{labelText}</div>\n )\n ) : null;\n\n const messageNode = hasMessage ? (\n <Text\n id={messageId}\n as='small'\n size='xs'\n tone={hasError ? undefined : 'muted'}\n className={cn('volt-form-field__message', hasError && 'volt-form-field__message--error')}\n role={hasError ? 'alert' : undefined}\n >\n {message}\n </Text>\n ) : null;\n\n if (layout === 'inline') {\n return (\n <div\n ref={ref}\n id={baseId}\n className={cn(\n 'volt-form-field volt-form-field--inline',\n !hasLabel && 'volt-form-field--no-label',\n className\n )}\n {...rest}\n >\n {labelNode}\n <div className='volt-form-field__body'>\n <div className='volt-form-field__control'>{children}</div>\n {messageNode}\n </div>\n </div>\n );\n }\n\n return (\n <Stack\n ref={ref}\n id={baseId}\n className={cn('volt-form-field', className)}\n {...rest}\n >\n {labelNode}\n <div className='volt-form-field__control'>{children}</div>\n {messageNode}\n </Stack>\n );\n});\n\nFormField.displayName = 'FormField';\n\nexport default FormField;\n","import { cn } from '@/shared/utils/cn';\nimport './Checkbox.css';\nimport Text from '../Text';\nimport { Check, Minus } from 'lucide-react';\nimport { forwardRef, useEffect, useId, useRef } from 'react';\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_CHECKBOX_NAME_ERROR = 'Checkbox requires an accessible name via the `label` prop, `aria-label`, `aria-labelledby`, or an external label bound to its id.';\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\n\ntype NativeCheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>;\n\nexport interface CheckboxProps extends NativeCheckboxProps {\n /** Controlled checked state. */\n checked?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Inline text label rendered after the box and wired to the input. */\n label?: ReactNode;\n /** Renders the mixed (—) state. Maps to the input's `indeterminate` property. */\n indeterminate?: boolean;\n disabled?: boolean;\n size?: CheckboxSize;\n className?: string;\n /** Class applied to the outer wrapper `<label>`. */\n containerClassName?: string;\n}\n\n/**\n * Accessible custom-styled checkbox built on a real `<input type=\"checkbox\">`.\n * The native input is visually hidden but remains the source of truth for state,\n * keyboard interaction (Space toggles), and assistive tech. The brand-tinted box\n * is purely presentational (`aria-hidden`).\n *\n * `--color-brand-primary` fills the checked box; `--color-on-accent` colors the check.\n */\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(({\n checked,\n onChange,\n label,\n indeterminate = false,\n disabled = false,\n size = 'md',\n className,\n containerClassName,\n id,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const innerRef = useRef<HTMLInputElement | null>(null);\n const hasWarnedForMissingNameRef = useRef(false);\n const reactId = useId();\n const inputId = id ?? `volt-checkbox-${reactId}`;\n\n // The `indeterminate` flag only exists as a DOM property, never an attribute.\n useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const setRefs = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const hasVisibleLabel = label != null && label !== '';\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n\n if (!hasVisibleLabel && !resolvedAriaLabel && !resolvedAriaLabelledBy && !resolvedTitle) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_CHECKBOX_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'volt-checkbox',\n `volt-checkbox--${size}`,\n checked && 'volt-checkbox--checked',\n indeterminate && 'volt-checkbox--indeterminate',\n disabled && 'volt-checkbox--disabled',\n containerClassName\n )}\n title={resolvedTitle}\n >\n <input\n ref={setRefs}\n id={inputId}\n type='checkbox'\n className={cn('volt-checkbox__input', className)}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-checked={indeterminate ? 'mixed' : undefined}\n aria-label={!hasVisibleLabel ? resolvedAriaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n {...props}\n />\n <span className='volt-checkbox__box' aria-hidden='true'>\n {indeterminate ? (\n <Minus className='volt-checkbox__indicator' strokeWidth={3} />\n ) : (\n <Check className='volt-checkbox__indicator' strokeWidth={3} />\n )}\n </span>\n {hasVisibleLabel && (\n <Text as='span' size='sm' tone='primary' className='volt-checkbox__label'>\n {label}\n </Text>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import { cn } from '@/shared/utils/cn';\nimport './Radio.css';\nimport Text from '../Text';\nimport { forwardRef, useId, useRef } from 'react';\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_RADIO_NAME_ERROR = 'Radio requires an accessible name via the `label` prop, `aria-label`, `aria-labelledby`, or an external label bound to its id.';\n\nexport type RadioSize = 'sm' | 'md' | 'lg';\n\ntype NativeRadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>;\n\nexport interface RadioProps extends NativeRadioProps {\n /** Controlled checked state. */\n checked?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Inline text label rendered after the dot and wired to the input. */\n label?: ReactNode;\n /** Radio group name. Required for native single-selection within a group. */\n name?: string;\n /** Submitted value for this option. */\n value?: string;\n disabled?: boolean;\n size?: RadioSize;\n className?: string;\n /** Class applied to the outer wrapper `<label>`. */\n containerClassName?: string;\n}\n\n/**\n * Accessible custom-styled radio built on a real `<input type=\"radio\">`.\n * The native input remains the source of truth for state, keyboard interaction\n * (arrow keys move within a `name` group), and assistive tech; the brand-tinted\n * circle is presentational (`aria-hidden`).\n *\n * `--color-brand-primary` fills the selected circle; `--color-on-accent` is the dot.\n */\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(({\n checked,\n onChange,\n label,\n name,\n value,\n disabled = false,\n size = 'md',\n className,\n containerClassName,\n id,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const reactId = useId();\n const inputId = id ?? `volt-radio-${reactId}`;\n\n const hasVisibleLabel = label != null && label !== '';\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n\n if (!hasVisibleLabel && !resolvedAriaLabel && !resolvedAriaLabelledBy && !resolvedTitle) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_RADIO_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'volt-radio',\n `volt-radio--${size}`,\n checked && 'volt-radio--checked',\n disabled && 'volt-radio--disabled',\n containerClassName\n )}\n title={resolvedTitle}\n >\n <input\n ref={ref}\n id={inputId}\n type='radio'\n className={cn('volt-radio__input', className)}\n checked={checked}\n onChange={onChange}\n name={name}\n value={value}\n disabled={disabled}\n aria-label={!hasVisibleLabel ? resolvedAriaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n {...props}\n />\n <span className='volt-radio__box' aria-hidden='true'>\n <span className='volt-radio__indicator' />\n </span>\n {hasVisibleLabel && (\n <Text as='span' size='sm' tone='primary' className='volt-radio__label'>\n {label}\n </Text>\n )}\n </label>\n );\n});\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import { cn } from '@/shared/utils/cn';\nimport './Tabs.css';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n KeyboardEvent,\n MutableRefObject,\n ReactNode\n} from 'react';\nimport type { ControlSize } from '../types';\n\nconst MISSING_TABS_LABEL_ERROR = 'Tabs.List requires an accessible name via aria-label or aria-labelledby so assistive tech can announce the tab group.';\n\n/** Tabs supports the standard control sizes; underline content tabs read best at sm/md/lg. */\nexport type TabsSize = Extract<ControlSize, 'sm' | 'md' | 'lg'>;\n\ninterface TabsContextValue {\n /** Stable id used to namespace every tab/panel id pair. */\n baseId: string;\n /** The currently selected tab value. */\n value: string | undefined;\n /** Selects a tab by value (no-op when disabled). */\n selectValue: (next: string) => void;\n /** Visual size shared with Tab/Panel descendants. */\n size: TabsSize;\n /** Registry of focusable (non-disabled) tab values in DOM order, for roving focus. */\n registerTab: (value: string, disabled: boolean) => void;\n unregisterTab: (value: string) => void;\n /** Imperatively move focus to the tab with the given value. */\n focusTab: (value: string) => void;\n /** Ordered, currently-focusable tab values resolved on demand. */\n orderedValuesRef: MutableRefObject<string[]>;\n tabNodesRef: MutableRefObject<Map<string, HTMLButtonElement>>;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = (component: string): TabsContextValue => {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(`${component} must be rendered inside <Tabs>.`);\n }\n return ctx;\n};\n\nconst tabId = (baseId: string, value: string) => `${baseId}-tab-${value}`;\nconst panelId = (baseId: string, value: string) => `${baseId}-panel-${value}`;\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Controlled selected value. Pair with `onChange`. */\n value?: string;\n /** Initial selected value when uncontrolled. */\n defaultValue?: string;\n /** Fires with the next value whenever selection changes. */\n onChange?: (value: string) => void;\n /** Visual scale shared by every tab + panel. */\n size?: TabsSize;\n children?: ReactNode;\n className?: string;\n};\n\ninterface TabsComponent\n extends React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>> {\n List: typeof TabsList;\n Tab: typeof Tab;\n Panel: typeof TabsPanel;\n};\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsProps>(({\n value: controlledValue,\n defaultValue,\n onChange,\n size = 'md',\n className,\n children,\n ...rest\n}, ref) => {\n const baseId = useId();\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | undefined>(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n // DOM-ordered registry: a Map preserves insertion order, which mirrors render order.\n const registryRef = useRef<Map<string, boolean>>(new Map());\n const orderedValuesRef = useRef<string[]>([]);\n const tabNodesRef = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n const recomputeOrder = useCallback(() => {\n orderedValuesRef.current = Array.from(registryRef.current.entries())\n .filter(([, disabled]) => !disabled)\n .map(([tabValue]) => tabValue);\n }, []);\n\n const registerTab = useCallback((tabValue: string, disabled: boolean) => {\n registryRef.current.set(tabValue, disabled);\n recomputeOrder();\n }, [recomputeOrder]);\n\n const unregisterTab = useCallback((tabValue: string) => {\n registryRef.current.delete(tabValue);\n tabNodesRef.current.delete(tabValue);\n recomputeOrder();\n }, [recomputeOrder]);\n\n const selectValue = useCallback((next: string) => {\n if (!isControlled) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n }, [isControlled, onChange]);\n\n const focusTab = useCallback((tabValue: string) => {\n tabNodesRef.current.get(tabValue)?.focus();\n }, []);\n\n const contextValue = useMemo<TabsContextValue>(() => ({\n baseId,\n value,\n selectValue,\n size,\n registerTab,\n unregisterTab,\n focusTab,\n orderedValuesRef,\n tabNodesRef\n }), [baseId, value, selectValue, size, registerTab, unregisterTab, focusTab]);\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn('volt-tabs', `volt-tabs--${size}`, className)}\n {...rest}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n});\n\nTabsRoot.displayName = 'Tabs';\n\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n className?: string;\n};\n\nconst TabsList = forwardRef<HTMLDivElement, TabsListProps>(({\n className,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}, ref) => {\n const { size } = useTabsContext('Tabs.List');\n const hasWarnedForMissingNameRef = useRef(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n\n if (!resolvedAriaLabel && !resolvedAriaLabelledBy && !hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TABS_LABEL_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n return (\n <div\n ref={ref}\n role='tablist'\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-orientation='horizontal'\n className={cn('volt-tabs__list', 'd-flex', 'items-end', 'border-bottom-soft', `volt-tabs__list--${size}`, className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nTabsList.displayName = 'Tabs.List';\n\ntype NativeTabButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'onClick'>;\n\nexport interface TabProps extends NativeTabButtonProps {\n /** Identifies this tab; must match the Panel `value` it controls. */\n value: string;\n children?: ReactNode;\n /** Optional leading icon, rendered decoratively (aria-hidden). */\n leftIcon?: ReactNode;\n disabled?: boolean;\n className?: string;\n};\n\nconst Tab = forwardRef<HTMLButtonElement, TabProps>(({\n value,\n children,\n leftIcon,\n disabled = false,\n className,\n id,\n onKeyDown,\n ...rest\n}, ref) => {\n const {\n baseId,\n value: selectedValue,\n selectValue,\n size,\n registerTab,\n unregisterTab,\n focusTab,\n orderedValuesRef,\n tabNodesRef\n } = useTabsContext('Tabs.Tab');\n\n const isSelected = selectedValue === value;\n const resolvedTabId = id ?? tabId(baseId, value);\n const resolvedPanelId = panelId(baseId, value);\n\n // Register in DOM order for roving focus; keep the registry in sync with disabled state.\n const setNodeRef = useCallback((node: HTMLButtonElement | null) => {\n if (node) {\n tabNodesRef.current.set(value, node);\n registerTab(value, disabled);\n } else {\n unregisterTab(value);\n }\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<HTMLButtonElement | null>).current = node;\n }\n }, [value, disabled, registerTab, unregisterTab, tabNodesRef, ref]);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const order = orderedValuesRef.current;\n const currentIndex = order.indexOf(value);\n if (currentIndex === -1) {\n return;\n }\n\n let nextValue: string | undefined;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextValue = order[(currentIndex + 1) % order.length];\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextValue = order[(currentIndex - 1 + order.length) % order.length];\n break;\n case 'Home':\n nextValue = order[0];\n break;\n case 'End':\n nextValue = order[order.length - 1];\n break;\n default:\n return;\n }\n\n if (nextValue !== undefined) {\n event.preventDefault();\n selectValue(nextValue);\n focusTab(nextValue);\n }\n };\n\n return (\n <button\n ref={setNodeRef}\n type='button'\n role='tab'\n id={resolvedTabId}\n aria-selected={isSelected}\n aria-controls={resolvedPanelId}\n tabIndex={isSelected ? 0 : -1}\n disabled={disabled}\n className={cn(\n 'volt-tabs__tab',\n 'd-flex',\n 'items-center',\n 'transition-fast',\n `volt-tabs__tab--${size}`,\n isSelected && 'is-selected',\n disabled && 'is-disabled',\n className\n )}\n onClick={() => {\n if (disabled) return;\n selectValue(value);\n }}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {leftIcon && (\n <span className='volt-tabs__tab-icon d-flex flex-center' aria-hidden='true'>\n {leftIcon}\n </span>\n )}\n <span className='volt-tabs__tab-label'>{children}</span>\n <span className='volt-tabs__indicator' aria-hidden='true' />\n </button>\n );\n});\n\nTab.displayName = 'Tabs.Tab';\n\nexport interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Identifies the tab whose selection reveals this panel. */\n value: string;\n children?: ReactNode;\n /**\n * Keep the panel mounted (just hidden) when inactive. Defaults to `false`,\n * which unmounts inactive panels so heavy 3D/chart content does not stay live.\n */\n keepMounted?: boolean;\n className?: string;\n};\n\nconst TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(({\n value,\n children,\n keepMounted = false,\n className,\n id,\n ...rest\n}, ref) => {\n const { baseId, value: selectedValue } = useTabsContext('Tabs.Panel');\n const isSelected = selectedValue === value;\n\n if (!isSelected && !keepMounted) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n id={id ?? panelId(baseId, value)}\n aria-labelledby={tabId(baseId, value)}\n hidden={!isSelected}\n tabIndex={0}\n className={cn('volt-tabs__panel', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nTabsPanel.displayName = 'Tabs.Panel';\n\nconst Tabs = TabsRoot as TabsComponent;\nTabs.List = TabsList;\nTabs.Tab = Tab;\nTabs.Panel = TabsPanel;\n\nexport { TabsList, Tab, TabsPanel };\n\nexport default Tabs;\n","import './Breadcrumbs.css';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BreadcrumbItem {\n id: string;\n title: string;\n leftIcon?: ReactNode;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsVariant = 'default' | 'compact' | 'pill';\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[];\n variant?: BreadcrumbsVariant;\n separator?: ReactNode;\n ariaLabel?: string;\n title?: string;\n className?: string;\n onItemClick?: (item: BreadcrumbItem, index: number) => void;\n};\n\nconst MAX_BREADCRUMB_LABEL_LENGTH = 24;\n\nconst truncateBreadcrumbLabel = (label: string) => {\n if (label.length <= MAX_BREADCRUMB_LABEL_LENGTH) {\n return label;\n }\n\n return `${label.slice(0, MAX_BREADCRUMB_LABEL_LENGTH - 1)}…`;\n};\n\nconst Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(({\n items,\n variant = 'default',\n separator,\n ariaLabel = 'Breadcrumbs',\n title,\n className,\n onItemClick\n}, ref) => {\n if (!items.length) {\n return null;\n }\n\n const resolvedSeparator = separator ?? (\n variant === 'compact'\n ? <span className='volt-breadcrumbs__separator'>/</span>\n : <ChevronRight size={12} className='volt-breadcrumbs__separator' aria-hidden='true' />\n );\n\n return (\n <nav\n ref={ref}\n className={cn('volt-breadcrumbs', `volt-breadcrumbs--${variant}`, className)}\n aria-label={ariaLabel}\n title={title}\n >\n <ol className='volt-breadcrumbs__list'>\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n const displayTitle = variant === 'compact'\n ? truncateBreadcrumbLabel(item.title)\n : item.title;\n\n const handleClick = () => {\n item.onClick?.();\n onItemClick?.(item, index);\n };\n\n return (\n <li key={item.id} className='volt-breadcrumbs__item'>\n {index > 0 && resolvedSeparator}\n {isCurrent ? (\n <span\n className='volt-breadcrumbs__current'\n aria-current='page'\n title={item.title}\n >\n {item.leftIcon && (\n <span aria-hidden='true'>{item.leftIcon}</span>\n )}\n {displayTitle}\n </span>\n ) : (\n <button\n type='button'\n className='volt-breadcrumbs__trigger'\n onClick={handleClick}\n title={item.title}\n aria-label={`Open ${item.title}`}\n >\n {item.leftIcon && (\n <span aria-hidden='true'>{item.leftIcon}</span>\n )}\n {displayTitle}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\nexport default Breadcrumbs;\n","import IconButton from '@/shared/presentation/primitives/IconButton';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport './CollapsibleSection.css';\nimport { ChevronDown, Trash2, Plus } from 'lucide-react';\nimport { useState, useEffect, memo, useId, forwardRef } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\ntype CollapsibleSectionHeadingTag = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\ninterface CollapsibleSectionProps {\n title: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n expanded?: boolean;\n onExpandedChange?: (next: boolean) => void;\n className?: string;\n headerClassName?: string;\n titleClassName?: string;\n iconClassName?: string;\n bodyClassName?: string;\n contentClassName?: string;\n noSpacing?: boolean;\n arrowSize?: number;\n useDefaultHeaderStyles?: boolean;\n useDefaultTitleStyles?: boolean;\n onDelete?: () => void;\n deleteActionLabel?: string;\n deleteActionAlwaysVisible?: boolean;\n onAdd?: () => void;\n icon?: ReactNode;\n headerAction?: ReactNode;\n collapsible?: boolean;\n titleAs?: CollapsibleSectionHeadingTag;\n};\n\nconst CollapsibleSection = forwardRef<HTMLElement, CollapsibleSectionProps>(({\n title,\n children,\n defaultExpanded = false,\n expanded,\n onExpandedChange,\n className = '',\n headerClassName = '',\n titleClassName = '',\n bodyClassName = '',\n contentClassName = '',\n noSpacing = false,\n arrowSize = 20,\n useDefaultHeaderStyles = true,\n useDefaultTitleStyles = true,\n onDelete,\n deleteActionLabel = 'Delete section',\n deleteActionAlwaysVisible = false,\n onAdd,\n headerAction,\n collapsible = true,\n titleAs = 'h3'\n}, ref) => {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n const [hasBeenExpanded, setHasBeenExpanded] = useState(defaultExpanded);\n const [height, setHeight] = useState<number | 'auto'>(defaultExpanded ? 'auto' : 0);\n const reactId = useId();\n const isControlled = typeof expanded === 'boolean';\n const actualExpanded = isControlled ? expanded : isExpanded;\n const headerBaseClass = useDefaultHeaderStyles ? 'collapsible-section-header' : '';\n const titleBaseClass = useDefaultTitleStyles ? 'collapsible-section-title font-weight-6 color-primary' : 'collapsible-section-title';\n const bodyId = `collapsible-section-body-${reactId}`;\n const headingId = `collapsible-section-heading-${reactId}`;\n const triggerId = `collapsible-section-trigger-${reactId}`;\n const TitleTag = titleAs;\n\n useEffect(() => {\n if (actualExpanded && !hasBeenExpanded) {\n setHasBeenExpanded(true);\n }\n }, [actualExpanded, hasBeenExpanded]);\n\n useEffect(() => {\n setHeight(actualExpanded ? 'auto' : 0);\n }, [actualExpanded]);\n\n const handleToggle = () => {\n if (!collapsible) return;\n const next = !actualExpanded;\n if (isControlled) {\n onExpandedChange?.(next);\n return;\n }\n setIsExpanded(next);\n };\n\n const handleDelete = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onDelete?.();\n };\n\n const handleAdd = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onAdd?.();\n };\n\n const actions = (\n <Row gap='025' className='collapsible-section-actions'>\n {headerAction}\n {onAdd && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleAdd}\n className='collapsible-section-action--add'\n title='Add item'\n >\n <Plus size={16} />\n </IconButton>\n )}\n {onDelete && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleDelete}\n className={`collapsible-section-action--delete ${deleteActionAlwaysVisible ? 'collapsible-section-action--delete-visible' : ''}`}\n title={deleteActionLabel}\n aria-label={deleteActionLabel}\n >\n <Trash2 size={16} />\n </IconButton>\n )}\n </Row>\n );\n\n return (\n <Stack ref={ref} mb={noSpacing ? undefined : '1-5'} className={className}>\n <Row justify='between' gap='05' className={`${headerBaseClass} ${headerClassName}`}>\n <TitleTag id={headingId} className='collapsible-section-heading'>\n {collapsible ? (\n <Row gap='05' className='collapsible-section-header-row'>\n <button\n id={triggerId}\n type='button'\n className='collapsible-section-trigger d-flex items-center gap-05 u-select-none'\n onClick={handleToggle}\n aria-expanded={actualExpanded}\n aria-controls={bodyId}\n >\n <Row gap='05' className='collapsible-section-trigger-content'>\n <span className={`${titleBaseClass} ${titleClassName}`}>{title}</span>\n </Row>\n </button>\n {actions}\n <button\n type='button'\n className='collapsible-section-chevron-trigger d-flex flex-center color-muted'\n onClick={handleToggle}\n aria-expanded={actualExpanded}\n aria-controls={bodyId}\n aria-label={`${actualExpanded ? 'Collapse' : 'Expand'} ${title}`}\n >\n <div className={`collapsible-section-arrow d-flex flex-center ${!actualExpanded ? 'collapsible-section-arrow--collapsed' : ''}`} aria-hidden='true'>\n <ChevronDown size={arrowSize} />\n </div>\n </button>\n </Row>\n ) : (\n <Row gap='05' className='collapsible-section-title-row'>\n <Row gap='05' className='collapsible-section-trigger-content'>\n <span className={`${titleBaseClass} ${titleClassName}`}>{title}</span>\n </Row>\n {actions}\n </Row>\n )}\n </TitleTag>\n </Row>\n {collapsible && (\n <div\n id={bodyId}\n className={`collapsible-section-body ${bodyClassName}`}\n style={{ height }}\n role='region'\n aria-labelledby={triggerId}\n >\n <Stack className={`collapsible-section-content ${contentClassName}`}>\n {hasBeenExpanded ? children : null}\n </Stack>\n </div>\n )}\n\n {!collapsible && (\n <div id={bodyId} className={`collapsible-section-body collapsible-section-body--static ${bodyClassName}`} role='region' aria-labelledby={headingId}>\n <Stack className={`collapsible-section-content ${contentClassName}`}>\n {children}\n </Stack>\n </div>\n )}\n </Stack>\n );\n});\n\nCollapsibleSection.displayName = 'CollapsibleSection';\n\nexport default memo(CollapsibleSection);\n","import CloseButton from '../CloseButton';\nimport FloatingRootContext, { TopLayerRootContext } from '@/shared/presentation/contexts/FloatingRootContext';\nimport useMedia from '@/shared/presentation/hooks/use-media';\nimport './Modal.css';\nimport React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\ndeclare module 'react' {\n interface ButtonHTMLAttributes<T> extends React.HTMLAttributes<T> {\n command?: string;\n commandfor?: string;\n }\n}\n\ntype ModalTriggerElement = React.ReactElement<React.ButtonHTMLAttributes<HTMLButtonElement>>;\n\ninterface ModalProps {\n id: string;\n trigger?: ReactNode;\n title?: string;\n description?: string;\n children: ReactNode;\n footer?: ReactNode;\n className?: string;\n width?: string;\n onClose?: () => void;\n dismissible?: boolean;\n lazyMount?: boolean;\n};\n\nconst COARSE_POINTER_MEDIA_QUERY = '(pointer: coarse)';\nconst LAZY_MOUNT_UNMOUNT_DELAY_MS = 250;\n\nconst isDialogElement = (element: HTMLElement | null): element is HTMLDialogElement => {\n return element instanceof HTMLDialogElement;\n};\n\nconst getFocusableElements = (dialog: HTMLDialogElement) => {\n const selector = [\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(',');\n\n const focusableElements = dialog.querySelectorAll<HTMLElement>(selector);\n\n return Array.from(focusableElements).filter((element) => {\n return !element.hasAttribute('hidden') && element.getAttribute('aria-hidden') !== 'true';\n });\n};\n\nconst getInitialFocusTarget = (dialog: HTMLDialogElement, isCoarsePointer: boolean) => {\n if (isCoarsePointer) {\n return dialog;\n }\n\n const preferredFocusTarget = dialog.querySelector<HTMLElement>('[data-modal-initial-focus=\"true\"]');\n if (preferredFocusTarget && !preferredFocusTarget.hasAttribute('disabled')) {\n return preferredFocusTarget;\n }\n\n const autofocusElement = dialog.querySelector<HTMLElement>('[autofocus]');\n if (autofocusElement && !autofocusElement.hasAttribute('disabled')) {\n return autofocusElement;\n }\n\n return getFocusableElements(dialog)[0] ?? dialog;\n};\n\nconst Modal = ({\n id,\n trigger,\n title,\n description,\n children,\n footer,\n className = '',\n width,\n onClose,\n dismissible = true,\n lazyMount = false\n}: ModalProps) => {\n const [dialogElement, setDialogElement] = useState<HTMLDialogElement | null>(null);\n const [shouldRenderContents, setShouldRenderContents] = useState(!lazyMount);\n const restoreFocusElementRef = useRef<HTMLElement | null>(null);\n const isCoarsePointer = useMedia(COARSE_POINTER_MEDIA_QUERY);\n const titleId = title ? `${id}-title` : undefined;\n const descriptionId = description ? `${id}-description` : undefined;\n\n useEffect(() => {\n if (!dialogElement) {\n return;\n }\n\n let unmountTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const clearUnmountTimer = () => {\n if (unmountTimeoutId !== null) {\n clearTimeout(unmountTimeoutId);\n unmountTimeoutId = null;\n }\n };\n\n const syncDialogState = () => {\n if (dialogElement.open) {\n if (lazyMount) {\n clearUnmountTimer();\n setShouldRenderContents(true);\n }\n\n if (!restoreFocusElementRef.current && document.activeElement instanceof HTMLElement) {\n restoreFocusElementRef.current = document.activeElement;\n }\n\n window.requestAnimationFrame(() => {\n if (!dialogElement.open) {\n return;\n }\n\n const focusTarget = getInitialFocusTarget(dialogElement, isCoarsePointer);\n focusTarget.focus({ preventScroll: true });\n });\n\n return;\n }\n\n if (lazyMount) {\n clearUnmountTimer();\n unmountTimeoutId = setTimeout(() => {\n setShouldRenderContents(false);\n unmountTimeoutId = null;\n }, LAZY_MOUNT_UNMOUNT_DELAY_MS);\n }\n\n if (restoreFocusElementRef.current?.isConnected) {\n restoreFocusElementRef.current.focus({ preventScroll: true });\n }\n\n restoreFocusElementRef.current = null;\n };\n\n const observer = new MutationObserver(syncDialogState);\n observer.observe(dialogElement, { attributes: true, attributeFilter: ['open'] });\n syncDialogState();\n\n return () => {\n observer.disconnect();\n clearUnmountTimer();\n restoreFocusElementRef.current = null;\n };\n }, [dialogElement, isCoarsePointer, lazyMount]);\n\n const handleBackdropClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n if (!dismissible) {\n return;\n }\n\n const dialog = event.currentTarget;\n const rect = dialog.getBoundingClientRect();\n const isInDialog = (\n rect.top <= event.clientY\n && event.clientY <= rect.top + rect.height\n && rect.left <= event.clientX\n && event.clientX <= rect.left + rect.width\n );\n\n if (!isInDialog) {\n dialog.close();\n }\n };\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n if (!dismissible) {\n event.preventDefault();\n }\n };\n\n return (\n <>\n {trigger && React.isValidElement(trigger) ? (\n React.cloneElement(trigger as ModalTriggerElement, {\n command: 'show-modal',\n commandfor: id,\n 'aria-controls': id,\n 'aria-haspopup': 'dialog',\n type: 'button'\n })\n ) : null}\n\n <dialog\n ref={setDialogElement}\n id={id}\n className={`volt-modal ${className}`}\n style={width ? { maxWidth: width } : undefined}\n onClick={handleBackdropClick}\n onCancel={handleCancel}\n onClose={onClose}\n aria-modal='true'\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n >\n <TopLayerRootContext.Provider value={dialogElement ?? undefined}>\n <FloatingRootContext.Provider value={dialogElement ?? undefined}>\n {shouldRenderContents && (\n <div className='d-flex column w-max'>\n {(title || description) && (\n <div className='d-flex items-start content-between volt-modal-header'>\n <div className='d-flex column gap-025'>\n {title && <h3 id={titleId} className='font-size-4 font-weight-6'>{title}</h3>}\n {description && <p id={descriptionId} className='font-size-2 color-secondary'>{description}</p>}\n </div>\n {dismissible && (\n <CloseButton\n commandfor={id}\n command='close'\n aria-label='Close modal'\n />\n )}\n </div>\n )}\n\n <div className='volt-modal-body'>\n {children}\n </div>\n\n {footer && (\n <div className='d-flex items-center content-end gap-05 volt-modal-footer'>\n {footer}\n </div>\n )}\n </div>\n )}\n </FloatingRootContext.Provider>\n </TopLayerRootContext.Provider>\n </dialog>\n </>\n );\n};\n\nexport default Modal;\n\n/** Opens a modal dialog by id when it is not already open. */\nexport const openModal = (id: string) => {\n const element = document.getElementById(id);\n if (isDialogElement(element) && !element.open) {\n element.showModal();\n const toaster = document.getElementById('app-toaster-popover');\n if (toaster) {\n toaster.hidePopover();\n toaster.showPopover();\n }\n }\n};\n\n/** Closes a modal dialog by id when it is open. */\nexport const closeModal = (id: string) => {\n const element = document.getElementById(id);\n if (isDialogElement(element) && element.open) {\n element.close();\n }\n};\n\n/** Closes a modal and runs reset work after the close animation delay. */\nexport const resetModal = (id: string, reset: () => void, delay = 300) => {\n closeModal(id);\n window.setTimeout(reset, delay);\n};\n","import React from 'react';\n\nconst setRef = <T,>(ref: React.Ref<T> | undefined, value: T | null) => {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: value });\n }\n};\n\nconst composeRefs = <T,>(...refs: Array<React.Ref<T> | undefined>) => {\n return (node: T | null) => {\n refs.forEach((ref) => {\n setRef(ref, node);\n });\n };\n};\n\nexport default composeRefs;\n","import FloatingRootContext, {\n FloatingOwnerIdsContext,\n appendFloatingOwnerIds,\n hasFloatingOwnerId,\n useFloatingOwnerIds,\n useFloatingRoot\n} from '@/shared/presentation/contexts/FloatingRootContext';\nimport composeRefs from '@/shared/presentation/utilities/compose-refs';\nimport './Popover.css';\nimport { useFloating, useClick, useDismiss, useRole, useInteractions, FloatingPortal, FloatingFocusManager, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { useState, useCallback, useLayoutEffect, useMemo, cloneElement, isValidElement } from 'react';\nimport React from 'react';\nimport type { Placement, VirtualElement } from '@floating-ui/react';\nimport type { HTMLAttributes, ReactNode, ReactElement, Ref } from 'react';\n\ntype PopoverRole = 'dialog' | 'menu' | 'listbox' | 'tooltip';\n\ntype ContextMenuOpenPredicate = (event: React.MouseEvent<Element>) => boolean;\n\ntype PopoverTriggerProps = HTMLAttributes<HTMLElement> & {\n ref?: Ref<HTMLElement>;\n 'data-popover-trigger'?: string;\n};\n\ntype PopoverTriggerElement = ReactElement<PopoverTriggerProps>;\n\ninterface ContextMenuPosition {\n x: number;\n y: number;\n};\n\ninterface PopoverProps {\n id: string;\n trigger: ReactNode;\n children: ReactNode | ((close: () => void) => ReactNode);\n className?: string;\n noPadding?: boolean;\n triggerAction?: 'click' | 'contextmenu';\n onOpenChange?: (isOpen: boolean) => void;\n placement?: Placement;\n role?: PopoverRole;\n triggerAriaHaspopup?: 'menu' | 'dialog';\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n shouldOpenOnContextMenu?: ContextMenuOpenPredicate;\n};\n\nconst Popover = ({\n id,\n trigger,\n children,\n className = '',\n noPadding = false,\n triggerAction = 'click',\n onOpenChange,\n placement = 'bottom-start',\n role: popoverRole = 'dialog',\n triggerAriaHaspopup,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n shouldOpenOnContextMenu\n}: PopoverProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [contextMenuPosition, setContextMenuPosition] = useState<ContextMenuPosition | null>(null);\n const [floatingElement, setFloatingElement] = useState<HTMLElement | null>(null);\n const floatingRoot = useFloatingRoot();\n const floatingOwnerIds = useFloatingOwnerIds();\n const onOpenChangeRef = React.useRef(onOpenChange);\n const nextFloatingOwnerIds = useMemo(() => appendFloatingOwnerIds(floatingOwnerIds, id), [floatingOwnerIds, id]);\n\n useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n });\n\n const handleOpenChange = useCallback((nextOpen: boolean) => {\n setIsOpen(nextOpen);\n if (!nextOpen) {\n setContextMenuPosition(null);\n }\n onOpenChangeRef.current?.(nextOpen);\n }, []);\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: handleOpenChange,\n placement,\n middleware: [\n offset(8),\n flip({ padding: 16 }),\n shift({ padding: 16 })\n ],\n whileElementsMounted: autoUpdate\n });\n\n const positionReference = useMemo<VirtualElement | null>(() => {\n if (triggerAction !== 'contextmenu' || !contextMenuPosition) {\n return null;\n }\n\n return {\n getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n x: contextMenuPosition.x,\n y: contextMenuPosition.y,\n top: contextMenuPosition.y,\n right: contextMenuPosition.x,\n bottom: contextMenuPosition.y,\n left: contextMenuPosition.x\n };\n }\n };\n }, [contextMenuPosition, triggerAction]);\n\n useLayoutEffect(() => {\n if (positionReference) {\n refs.setPositionReference(positionReference);\n return;\n }\n\n const referenceElement = refs.domReference.current;\n\n if (referenceElement) {\n refs.setPositionReference(referenceElement);\n }\n }, [positionReference, refs]);\n\n const click = useClick(context, {\n enabled: triggerAction === 'click'\n });\n const dismiss = useDismiss(context, {\n outsidePress: (event) => {\n return !hasFloatingOwnerId(event.target instanceof Element ? event.target : null, id);\n }\n });\n const role = useRole(context, { role: popoverRole });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role\n ]);\n\n const close = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n const handleFloatingRef = useCallback((node: HTMLElement | null) => {\n refs.setFloating(node);\n setFloatingElement(node);\n }, [refs]);\n\n const handleContextMenu = useCallback((event: React.MouseEvent) => {\n if (triggerAction !== 'contextmenu') return;\n if (event.defaultPrevented) return;\n if (shouldOpenOnContextMenu && !shouldOpenOnContextMenu(event)) return;\n event.preventDefault();\n event.stopPropagation();\n setContextMenuPosition({\n x: event.clientX,\n y: event.clientY\n });\n handleOpenChange(true);\n }, [triggerAction, handleOpenChange, shouldOpenOnContextMenu]);\n\n const renderChildren = () => {\n if (typeof children === 'function') {\n return children(close);\n }\n return children;\n };\n\n const triggerElement = trigger && isValidElement(trigger)\n ? cloneElement(trigger as PopoverTriggerElement, {\n ...(triggerAction === 'contextmenu'\n ? {}\n : {\n ref: composeRefs(\n refs.setReference,\n (trigger as PopoverTriggerElement).props.ref\n )\n }),\n 'data-popover-trigger': id,\n 'aria-controls': isOpen ? id : undefined,\n 'aria-expanded': triggerAction === 'click' ? isOpen : undefined,\n 'aria-haspopup': triggerAriaHaspopup ?? (popoverRole === 'menu' ? 'menu' : 'dialog'),\n ...getReferenceProps({\n onContextMenu: handleContextMenu\n })\n })\n : null;\n\n return (\n <>\n {triggerElement}\n\n {isOpen && (\n <FloatingPortal root={floatingRoot}>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={handleFloatingRef} id={id} className={`popover ${noPadding ? 'popover--no-padding' : ''} radius-lg d-flex column glass-bg ${className} color-primary`} style={floatingStyles} onClick={(event) => event.stopPropagation()} aria-label={ariaLabel} aria-labelledby={ariaLabelledBy} aria-describedby={ariaDescribedBy} tabIndex={-1} {...getFloatingProps()}>\n <FloatingOwnerIdsContext.Provider value={nextFloatingOwnerIds}>\n <FloatingRootContext.Provider value={floatingElement ?? floatingRoot}>\n {renderChildren()}\n </FloatingRootContext.Provider>\n </FloatingOwnerIdsContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nexport default Popover;\n","import './PopoverMenu.css';\nimport React, { forwardRef, useEffect, useRef } from 'react';\nimport type { KeyboardEvent, ReactNode } from 'react';\n\ninterface PopoverMenuItemElement extends HTMLElement {\n disabled?: boolean;\n};\n\ninterface PopoverMenuProps {\n children: ReactNode;\n label?: string;\n onClose?: () => void;\n};\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\nconst getMenuItems = (menuElement: HTMLDivElement | null) => {\n if (!menuElement) {\n return [];\n }\n\n const items = Array.from(menuElement.querySelectorAll<PopoverMenuItemElement>(MENU_ITEM_SELECTOR));\n\n return items.filter((item) => {\n return item.closest('[role=\"menu\"]') === menuElement && !item.hasAttribute('disabled') && item.getAttribute('aria-disabled') !== 'true';\n });\n};\n\nconst PopoverMenu = forwardRef<HTMLDivElement, PopoverMenuProps>(({ children, label = 'Menu', onClose }, ref) => {\n const menuRef = useRef<HTMLDivElement | null>(null);\n\n const setRefs = (node: HTMLDivElement | null) => {\n (menuRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n useEffect(() => {\n const focusTimer = window.requestAnimationFrame(() => {\n const menuItems = getMenuItems(menuRef.current);\n menuItems[0]?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusTimer);\n };\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const menuItems = getMenuItems(menuRef.current);\n const activeElement = document.activeElement;\n const currentIndex = menuItems.findIndex((item) => item === activeElement || item.contains(activeElement));\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onClose?.();\n return;\n }\n\n if (menuItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % menuItems.length;\n menuItems[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const nextIndex = currentIndex < 0 ? menuItems.length - 1 : (currentIndex - 1 + menuItems.length) % menuItems.length;\n menuItems[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n menuItems[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n menuItems[menuItems.length - 1]?.focus();\n }\n };\n\n return (\n <div ref={setRefs} className='popover-menu d-flex column gap-025' role='menu' aria-label={label} aria-orientation='vertical' onKeyDown={handleKeyDown}>\n {children}\n </div>\n );\n});\n\nPopoverMenu.displayName = 'PopoverMenu';\n\nexport default PopoverMenu;\n","import Button from '@/shared/presentation/primitives/Button';\nimport './PopoverMenuItem.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype PopoverMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\n\ninterface PopoverMenuItemProps {\n icon?: ReactNode;\n label?: string;\n children?: ReactNode;\n onClick?: () => void;\n variant?: 'default' | 'danger';\n size?: 'sm' | 'md';\n disabled?: boolean;\n isLoading?: boolean;\n rightAdornment?: ReactNode;\n role?: PopoverMenuItemRole;\n ariaHaspopup?: 'menu' | 'dialog';\n ariaExpanded?: boolean;\n ariaControls?: string;\n tabIndex?: number;\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst PopoverMenuItem = forwardRef<HTMLButtonElement, PopoverMenuItemProps>(({\n icon,\n label,\n children,\n onClick,\n variant = 'default',\n size = 'md',\n disabled = false,\n isLoading = false,\n rightAdornment,\n role = 'menuitem',\n ariaHaspopup,\n ariaExpanded,\n ariaControls,\n tabIndex = -1,\n onKeyDown,\n onBlur,\n onMouseEnter,\n onMouseLeave\n}, ref) => {\n const content = children ?? label;\n\n return (\n <Button\n ref={ref}\n variant='ghost'\n intent={variant === 'danger' ? 'danger' : 'neutral'}\n size={size}\n block\n align='start'\n className={`popover-menu-item popover-menu-item--${size} radius-sm color-primary u-select-none cursor-pointer`}\n onClick={isLoading ? undefined : onClick}\n disabled={disabled || isLoading}\n isLoading={isLoading}\n role={role}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-controls={ariaControls}\n aria-disabled={disabled || isLoading}\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-popover-menu-item='true'\n leftIcon={icon ? <span className='popover-menu-item-icon d-flex items-center content-center f-shrink-0'>{icon}</span> : undefined}\n >\n <span className='popover-menu-item-content d-flex items-center content-between gap-05 w-max'>\n <span className='popover-menu-item-label'>{content}</span>\n {rightAdornment ? <span className='popover-menu-item-adornment d-flex items-center content-center f-shrink-0'>{rightAdornment}</span> : null}\n </span>\n </Button>\n );\n});\n\nPopoverMenuItem.displayName = 'PopoverMenuItem';\n\nexport default PopoverMenuItem;\n","import { cn } from '@/shared/utils/cn';\nimport Popover from '@/shared/presentation/primitives/Popover';\nimport PopoverMenu from '@/shared/presentation/primitives/PopoverMenu';\nimport PopoverMenuItem from '@/shared/presentation/primitives/PopoverMenuItem';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './Menu.css';\nimport { forwardRef, isValidElement, useId, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Placement } from '@floating-ui/react';\nimport type { StatusTone } from '@/shared/presentation/primitives/types';\n\nconst MISSING_MENU_NAME_ERROR = 'Menu requires an accessible name via ariaLabel (or menuLabel) so assistive tech can announce the menu.';\nconst FALLBACK_MENU_LABEL = 'Menu';\n\ntype MenuSize = 'sm' | 'md';\n\n/**\n * A single actionable entry in a {@link Menu}.\n *\n * Set `divider: true` to render a visual separator instead of an action;\n * separator entries ignore every other field except `id`.\n */\nexport interface MenuItem {\n /** Stable, unique key for this entry. */\n id: string;\n /** Visible label. Required for actionable items, unused for dividers. */\n label?: ReactNode;\n /** Optional leading icon node (e.g. a lucide-react icon element). */\n icon?: ReactNode;\n /** Invoked when the item is chosen; the menu closes afterwards. */\n onSelect?: () => void;\n /** Semantic tone. Only `danger` is visually distinct (maps to the danger item style). */\n tone?: StatusTone;\n /** Disabled items are not focusable and cannot be selected. */\n disabled?: boolean;\n /** Render this entry as a separator rule instead of an action. */\n divider?: boolean;\n}\n\n/** Render-prop form of the trigger; receives the menu's open state. */\nexport type MenuTriggerRenderProp = (state: { isOpen: boolean }) => ReactNode;\n\nexport interface MenuProps {\n /**\n * The element (or render-prop) that opens the menu. A render-prop receives\n * `{ isOpen }`. The trigger is wrapped in a focusable element so any node works.\n */\n trigger: ReactNode | MenuTriggerRenderProp;\n /** The menu entries. Use `divider: true` entries to group sections. */\n items: MenuItem[];\n /** Floating-ui placement of the menu relative to the trigger. */\n placement?: Placement;\n /** Control density passed through to each item. */\n size?: MenuSize;\n /** Stable id for the popover; auto-generated when omitted. */\n id?: string;\n /** Accessible name announced for the menu region. Falls back to `menuLabel`. */\n ariaLabel?: string;\n /** Human label for the menu list (also used as the accessible name fallback). */\n menuLabel?: string;\n /** Accessible name for the auto-generated trigger wrapper. */\n triggerAriaLabel?: string;\n /** Rendered when `items` is empty (after filtering dividers). */\n emptyContent?: ReactNode;\n /** Notified whenever the menu opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Extra classes for the popover panel. */\n className?: string;\n /** Extra classes for the trigger wrapper. */\n triggerClassName?: string;\n}\n\nconst isRenderProp = (value: MenuProps['trigger']): value is MenuTriggerRenderProp => typeof value === 'function';\n\nconst Menu = forwardRef<HTMLSpanElement, MenuProps>(({\n trigger,\n items,\n placement = 'bottom-start',\n size = 'md',\n id,\n ariaLabel,\n menuLabel = 'Menu',\n triggerAriaLabel,\n emptyContent,\n onOpenChange,\n className,\n triggerClassName\n}, ref) => {\n const generatedId = useId();\n const popoverId = id ?? `menu-${generatedId}`;\n const [isOpen, setIsOpen] = useState(false);\n const hasWarnedForMissingNameRef = useRef(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || menuLabel?.trim() || undefined;\n let accessibleName = resolvedAriaLabel;\n if (!accessibleName) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_MENU_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n accessibleName = FALLBACK_MENU_LABEL;\n }\n\n const handleOpenChange = (nextOpen: boolean) => {\n setIsOpen(nextOpen);\n onOpenChange?.(nextOpen);\n };\n\n const triggerNode = isRenderProp(trigger) ? trigger({ isOpen }) : trigger;\n\n // Popover clones its trigger to attach ref + aria-* state, so it needs a\n // single valid element. We always wrap in a focusable span so render-props,\n // text, fragments, and bare elements behave identically.\n const triggerElement = (\n <span\n ref={ref}\n className={cn('menu-trigger u-select-none cursor-pointer', triggerClassName)}\n role='button'\n tabIndex={isValidElement(triggerNode) ? -1 : 0}\n aria-label={triggerAriaLabel}\n >\n {triggerNode}\n </span>\n );\n\n const actionableItems = items.filter((item) => !item.divider);\n\n return (\n <Popover\n id={popoverId}\n trigger={triggerElement}\n placement={placement}\n role='menu'\n triggerAriaHaspopup='menu'\n ariaLabel={accessibleName}\n noPadding\n className={cn('menu-popover', className)}\n onOpenChange={handleOpenChange}\n >\n {(close) => (\n <PopoverMenu label={accessibleName} onClose={close}>\n {actionableItems.length === 0\n ? (emptyContent ?? (\n <Text as='p' size='sm' className='menu-empty color-muted' role='status' aria-live='polite'>\n No actions available\n </Text>\n ))\n : items.map((item) => {\n if (item.divider) {\n return <div key={item.id} className='menu-separator' role='separator' aria-hidden='true' />;\n }\n\n return (\n <PopoverMenuItem\n key={item.id}\n icon={item.icon}\n size={size}\n variant={item.tone === 'danger' ? 'danger' : 'default'}\n disabled={item.disabled}\n onClick={() => {\n item.onSelect?.();\n close();\n }}\n >\n {item.label}\n </PopoverMenuItem>\n );\n })}\n </PopoverMenu>\n )}\n </Popover>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { useFloatingRoot } from '@/shared/presentation/contexts/FloatingRootContext';\nimport composeRefs from '@/shared/presentation/utilities/compose-refs';\nimport './Tooltip.css';\nimport { useFloating, useHover, useFocus, useDismiss, useRole, useInteractions, FloatingPortal, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { useId, useState, cloneElement, isValidElement } from 'react';\nimport React from 'react';\nimport type { Placement } from '@floating-ui/react';\nimport type { HTMLAttributes, ReactNode, ReactElement, Ref } from 'react';\n\nexport type TooltipPlacement = Placement;\n\ntype TooltipTriggerElement = ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n\ninterface TooltipProps {\n children: ReactNode;\n content: ReactNode;\n placement?: TooltipPlacement;\n delay?: number;\n disabled?: boolean;\n className?: string;\n};\n\nconst Tooltip = ({\n children,\n content,\n placement = 'top',\n delay = 300,\n disabled = false,\n className = ''\n}: TooltipProps) => {\n const [isVisible, setIsVisible] = useState(false);\n const floatingRoot = useFloatingRoot();\n const tooltipId = useId();\n\n const { refs, floatingStyles, context, placement: actualPlacement } = useFloating({\n open: isVisible,\n onOpenChange: setIsVisible,\n placement,\n middleware: [\n offset(8),\n flip({ padding: 8 }),\n shift({ padding: 8 })\n ],\n whileElementsMounted: autoUpdate\n });\n\n const hover = useHover(context, {\n delay: {\n open: delay,\n close: 0\n },\n enabled: !disabled\n });\n const focus = useFocus(context, {\n enabled: !disabled\n });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'tooltip' });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role\n ]);\n\n if (!content) return <>{children}</>;\n\n const child = React.Children.only(children);\n if (!isValidElement(child)) {\n return <>{children}</>;\n }\n\n const triggerElement = child as TooltipTriggerElement;\n const placementSide = actualPlacement.split('-')[0];\n const childProps = triggerElement.props;\n const originalRef = childProps.ref;\n const childDescribedBy = typeof childProps['aria-describedby'] === 'string'\n ? childProps['aria-describedby']\n : undefined;\n const describedBy = [childDescribedBy, tooltipId].filter(Boolean).join(' ') || undefined;\n\n const clonedChild = cloneElement(triggerElement, {\n ref: composeRefs(refs.setReference, originalRef),\n 'aria-describedby': describedBy,\n ...getReferenceProps(childProps)\n });\n\n return (\n <>\n {clonedChild}\n\n {isVisible && (\n <FloatingPortal root={floatingRoot}>\n <div\n ref={refs.setFloating}\n id={tooltipId}\n className={`volt-tooltip volt-tooltip-${placementSide} ${className} overflow-hidden`}\n style={floatingStyles}\n role='tooltip'\n {...getFloatingProps()}\n >\n {content}\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nexport default Tooltip;\n","import { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { useFloatingRoot } from '@/shared/presentation/contexts/FloatingRootContext';\nimport './CursorTooltip.css';\nimport { useFloating, offset, flip, shift, autoUpdate, FloatingPortal } from '@floating-ui/react';\nimport { useEffect, useId, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Middleware, VirtualElement } from '@floating-ui/react';\n\ninterface CursorTooltipProps {\n isOpen: boolean;\n x: number;\n y: number;\n content?: ReactNode;\n className?: string;\n autoPosition?: boolean;\n interactive?: boolean;\n offset?: number;\n ariaLabel?: string;\n};\n\nconst createVirtualCursorRect = (x: number, y: number) => ({\n x,\n y,\n top: y,\n right: x,\n bottom: y,\n left: x,\n width: 0,\n height: 0\n});\n\nconst CursorTooltip = ({\n isOpen,\n x,\n y,\n content,\n className = '',\n autoPosition = true,\n interactive = false,\n offset: cursorOffset = 16,\n ariaLabel = 'Additional details'\n}: CursorTooltipProps) => {\n const arrowOffset = cursorOffset;\n const floatingRoot = useFloatingRoot();\n const prefersReducedMotion = usePrefersReducedMotion();\n const reactId = useId();\n const tooltipId = `cursor-tooltip-${reactId}`;\n\n const virtualElementRef = useRef<VirtualElement>({\n getBoundingClientRect: () => createVirtualCursorRect(x, y)\n });\n\n const middleware: Middleware[] = [offset({ mainAxis: arrowOffset, crossAxis: arrowOffset })];\n\n if (autoPosition) {\n middleware.push(flip({ padding: 16 }));\n middleware.push(shift({ padding: 16 }));\n }\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'right-start',\n middleware,\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n virtualElementRef.current.getBoundingClientRect = () => createVirtualCursorRect(x, y);\n refs.setPositionReference(virtualElementRef.current);\n }, [x, y, refs]);\n\n if (!isOpen) return null;\n\n return (\n <FloatingPortal root={floatingRoot}>\n <div\n ref={refs.setFloating}\n className={`cursor-tooltip visible ${interactive ? 'interactive' : ''} ${className}`}\n style={floatingStyles}\n id={tooltipId}\n role={interactive ? 'dialog' : 'tooltip'}\n aria-label={interactive ? ariaLabel : undefined}\n aria-modal={interactive ? false : undefined}\n tabIndex={interactive ? -1 : undefined}\n data-reduced-motion={prefersReducedMotion ? 'true' : 'false'}\n >\n {content}\n </div>\n </FloatingPortal>\n );\n};\n\nexport default CursorTooltip;\n","import { cn } from '@/shared/utils/cn';\nimport './FloatingToolbar.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type FloatingToolbarPlacement = 'top' | 'bottom';\nexport type FloatingToolbarAlign = 'start' | 'center' | 'end';\n\nexport interface FloatingToolbarProps extends HTMLAttributes<HTMLDivElement> {\n placement?: FloatingToolbarPlacement;\n align?: FloatingToolbarAlign;\n /** Offset distance (rem) from the edge the toolbar is anchored to. */\n offset?: number;\n children?: ReactNode;\n}\n\n/**\n * Centered floating pill toolbar (glass-bg) used over canvases/viewports.\n * Positions itself absolute relative to its nearest positioned ancestor.\n */\nconst FloatingToolbar = forwardRef<HTMLDivElement, FloatingToolbarProps>(({\n placement = 'top',\n align = 'center',\n offset = 1,\n className,\n style,\n children,\n role = 'toolbar',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-floating-toolbar',\n `volt-floating-toolbar--${placement}`,\n `volt-floating-toolbar--align-${align}`,\n 'glass-bg',\n className\n );\n\n const anchorStyle: React.CSSProperties = {\n ...style,\n [placement]: `${offset}rem`\n };\n\n return (\n <div ref={ref} role={role} className={classes} style={anchorStyle} {...rest}>\n {children}\n </div>\n );\n});\n\nFloatingToolbar.displayName = 'FloatingToolbar';\n\nexport default FloatingToolbar;\n","import { cn } from '@/shared/utils/cn';\nimport './Tag.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type TagTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\nexport type TagSize = 'xs' | 'sm' | 'md';\nexport type TagVariant = 'soft' | 'solid' | 'outline';\nexport type TagShape = 'pill' | 'square';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: TagTone;\n size?: TagSize;\n variant?: TagVariant;\n shape?: TagShape;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children?: ReactNode;\n}\n\nconst Tag = forwardRef<HTMLSpanElement, TagProps>(({\n tone = 'neutral',\n size = 'sm',\n variant = 'soft',\n shape = 'pill',\n leftIcon,\n rightIcon,\n className,\n children,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-tag',\n `volt-tag--tone-${tone}`,\n `volt-tag--size-${size}`,\n `volt-tag--variant-${variant}`,\n `volt-tag--shape-${shape}`,\n className\n );\n\n return (\n <span ref={ref} className={classes} {...rest}>\n {leftIcon && <span className='volt-tag__icon' aria-hidden='true'>{leftIcon}</span>}\n <span className='volt-tag__label'>{children}</span>\n {rightIcon && <span className='volt-tag__icon' aria-hidden='true'>{rightIcon}</span>}\n </span>\n );\n});\n\nTag.displayName = 'Tag';\n\nexport default Tag;\n","import { cn } from '@/shared/utils/cn';\nimport './StatusBadge.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype StatusBadgeVariant = 'active' | 'inactive' | 'danger' | 'neutral' | 'success' | 'warning' | 'brand' | 'primary';\n\nexport interface StatusBadgeProps{\n /**\n * Status string - will be mapped to variant automatically\n */\n status?: string;\n\n /**\n * Visual variant override\n */\n variant?: StatusBadgeVariant;\n\n /**\n * Size variant\n * @default 'default'\n */\n size?: 'default' | 'compact';\n\n /**\n * Badge content (alternative to status)\n */\n children?: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\nconst STATUS_VARIANTS: Record<string, StatusBadgeVariant> = {\n ready: 'success',\n completed: 'success',\n success: 'success',\n active: 'success',\n published: 'success',\n healthy: 'success',\n online: 'success',\n accepted: 'success',\n connected: 'success',\n processing: 'warning',\n queued: 'warning',\n rendering: 'warning',\n warning: 'warning',\n pending: 'warning',\n 'waiting-for-process': 'warning',\n analyzing: 'warning',\n running: 'active',\n failed: 'danger',\n error: 'danger',\n danger: 'danger',\n critical: 'danger',\n rejected: 'danger',\n inactive: 'inactive',\n draft: 'inactive',\n disabled: 'inactive',\n offline: 'inactive',\n disconnected: 'inactive',\n brand: 'brand',\n primary: 'primary'\n};\n\nconst statusToVariant = (status: string): StatusBadgeVariant => {\n return STATUS_VARIANTS[status.toLowerCase()] ?? 'neutral';\n};\n\nconst StatusBadge = forwardRef<HTMLSpanElement, StatusBadgeProps>(({ status, variant, size = 'default', children, className = '' }, ref) => {\n const computedVariant = variant ?? (status ? statusToVariant(status) : 'neutral');\n const content = children ?? status;\n\n const classes = cn(\n 'status-badge',\n 'radius-full',\n `variant-${computedVariant}`,\n size !== 'default' && `size-${size}`,\n 'gap-025',\n 'font-size-1',\n 'font-weight-5',\n className\n );\n\n return (\n <span ref={ref} className={classes}>\n {content}\n </span>\n );\n});\n\nStatusBadge.displayName = 'StatusBadge';\n\nexport default StatusBadge;\n","import { cn } from '@/shared/utils/cn';\nimport './StatusDot.css';\nimport { forwardRef } from 'react';\n\nexport type StatusDotTone = 'success' | 'warning' | 'danger' | 'info' | 'neutral' | 'brand';\n\ninterface StatusDotProps {\n tone?: StatusDotTone;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n label?: string;\n /** Animates the dot with a gentle pulse. */\n pulse?: boolean;\n /** Adds a soft glow halo (same color as the dot). */\n glow?: boolean;\n};\n\nconst StatusDot = forwardRef<HTMLSpanElement, StatusDotProps>(({\n tone = 'neutral',\n size = 'sm',\n className = '',\n label,\n pulse = false,\n glow = false\n}, ref) => {\n const classes = cn(\n 'status-dot',\n 'radius-full',\n 'f-shrink-0',\n `size-${size}`,\n `status-dot--tone-${tone}`,\n pulse && 'status-dot--pulse',\n glow && 'status-dot--glow',\n className\n );\n\n return (\n <span\n ref={ref}\n className={classes}\n role='status'\n aria-label={label ?? `${tone} status`}\n />\n );\n});\n\nStatusDot.displayName = 'StatusDot';\n\nexport default StatusDot;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type InlineStatusTone = 'neutral' | 'muted' | 'success' | 'warning' | 'danger';\n\nconst toneClass: Record<InlineStatusTone, string> = {\n neutral: 'color-primary',\n muted: 'color-muted',\n success: 'status-success',\n warning: 'status-warning',\n danger: 'status-error'\n};\n\nexport interface InlineStatusProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n tone?: InlineStatusTone;\n icon?: ReactNode;\n live?: 'polite' | 'assertive' | 'off';\n severity?: 'status' | 'alert';\n children?: ReactNode;\n}\n\n/**\n * Inline live-region status/alert row (icon + message). Use for form-save\n * feedback, toast-lite inline messages, etc.\n */\nconst InlineStatus = forwardRef<HTMLDivElement, InlineStatusProps>(({\n tone = 'neutral',\n icon,\n live = 'polite',\n severity = 'status',\n className,\n children,\n ...rest\n}, ref) => {\n const textTone = tone === 'muted' ? 'muted' : tone === 'neutral' ? 'secondary' : undefined;\n const inlineStyle = tone !== 'neutral' && tone !== 'muted'\n ? { color: `var(--${toneClass[tone]})` }\n : undefined;\n\n return (\n <Row\n ref={ref}\n gap='05'\n role={severity}\n aria-live={live}\n aria-atomic='true'\n className={cn('font-size-1', className)}\n style={inlineStyle}\n {...rest}\n >\n {icon && <span className='d-flex items-center' aria-hidden='true'>{icon}</span>}\n <Text as='span' size='sm' tone={textTone}>{children}</Text>\n </Row>\n );\n});\n\nInlineStatus.displayName = 'InlineStatus';\n\nexport default InlineStatus;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport Loader from '../Loader';\nimport { AlertCircle, Check } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport type SaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusIndicatorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n status: SaveStatus;\n savingLabel?: string;\n savedLabel?: string;\n errorLabel?: string;\n /** Hide when `idle`. Default: true. */\n hideIdle?: boolean;\n}\n\n/**\n * Inline save-state indicator (saving / saved / error) with live-region\n * announcement. Consolidates plugin/latex/whiteboard \"Saved\" pills.\n */\nconst SaveStatusIndicator = forwardRef<HTMLDivElement, SaveStatusIndicatorProps>(({\n status,\n savingLabel = 'Saving…',\n savedLabel = 'Saved',\n errorLabel = 'Save failed',\n hideIdle = true,\n className,\n ...rest\n}, ref) => {\n if (hideIdle && status === 'idle') return null;\n\n const tone = status === 'saved' ? 'muted' : 'secondary';\n const errorStyle = status === 'error' ? { color: 'var(--status-error)' } : undefined;\n\n return (\n <Row\n ref={ref}\n gap='025'\n role='status'\n aria-live='polite'\n aria-atomic='true'\n className={cn('font-size-1', className)}\n style={errorStyle}\n {...rest}\n >\n {status === 'saving' && <Loader scale={0.35} isFixed={false} />}\n {status === 'saved' && <Check size={12} aria-hidden='true' />}\n {status === 'error' && <AlertCircle size={12} aria-hidden='true' />}\n <Text as='span' size='sm' tone={status === 'error' ? undefined : tone}>\n {status === 'saving' && savingLabel}\n {status === 'saved' && savedLabel}\n {status === 'error' && errorLabel}\n </Text>\n </Row>\n );\n});\n\nSaveStatusIndicator.displayName = 'SaveStatusIndicator';\n\nexport default SaveStatusIndicator;\n","/** Minimal user-like shape needed to derive initials — structural so this\n * helper carries no domain (auth) dependency. */\ninterface InitialsUserSource {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n}\n\nexport const getInitialsFromUser = (user: InitialsUserSource | string | null | undefined): string => {\n if(!user || typeof user === 'string') return '?';\n \n if(user.firstName && user.lastName){\n return (user.firstName[0] + user.lastName[0]).toUpperCase();\n }\n \n if(user.email){\n const parts = user.email.split('@')[0].split('.');\n if(parts.length >= 2){\n return (parts[0][0] + parts[1][0]).toUpperCase();\n }\n return user.email[0].toUpperCase();\n }\n \n return '?';\n};\n\nexport const getInitialsFromEmail = (email: string): string => {\n if(!email) return '?';\n return email.split('@')[0].charAt(0).toUpperCase();\n};\n\nconst AVATAR_COLORS = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A', '#98D8C8'];\n\nexport const getAvatarColorFromString = (str: string): string => {\n if(!str) return AVATAR_COLORS[0];\n const hash = str.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return AVATAR_COLORS[hash % AVATAR_COLORS.length];\n};\n","import { cn } from '@/shared/utils/cn';\nimport { getInitialsFromUser } from '@/shared/utils/user';\nimport StatusDot from '../StatusDot';\nimport './Avatar.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype AvatarSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/** Minimal user-like shape the Avatar renders from. Local to the primitive so\n * the design system carries no domain (auth) coupling; a domain `User` is\n * structurally assignable. */\nexport interface AvatarUser {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n avatar?: string | null;\n}\n\ninterface AvatarProps {\n src?: string | null;\n alt?: string;\n fallback?: string;\n user?: AvatarUser | null;\n size?: AvatarSize;\n className?: string;\n isOnline?: boolean;\n showStatus?: boolean;\n icon?: ReactNode;\n};\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>(({\n src,\n alt,\n fallback,\n user,\n size = 'md',\n className = '',\n isOnline = false,\n showStatus = false,\n icon\n}, ref) => {\n const imageSrc = src ?? user?.avatar;\n const initials = fallback ?? (user ? getInitialsFromUser(user) : '?');\n const altText = alt ?? (user ? `${user.firstName ?? ''} ${user.lastName ?? ''}`.trim() : 'Avatar');\n\n return (\n <div ref={ref} className={`${cn('avatar', `avatar-${size}`, 'd-flex flex-center radius-full overflow-hidden f-shrink-0 p-relative', className)}`}>\n {icon ? (\n <div className='avatar-icon d-flex flex-center'>\n {icon}\n </div>\n ) : imageSrc ? (\n <img src={imageSrc} alt={altText} className='w-max h-max avatar-image' />\n ) : (\n <p className='avatar-initials font-weight-6'>\n {initials}\n </p>\n )}\n {showStatus && (\n <StatusDot tone={isOnline ? 'success' : 'neutral'} className='avatar-status p-absolute bottom-0 right-0' />\n )}\n </div>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\nexport default Avatar;\n","import Avatar from '@/shared/presentation/primitives/Avatar';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './AvatarStack.css';\nimport { forwardRef } from 'react';\nimport type { AvatarUser } from '@/shared/presentation/primitives/Avatar';\n\ntype StackSize = 'xs' | 'sm' | 'md';\n\ntype AvatarStackUser = AvatarUser & {\n isOnline?: boolean | null;\n _id?: string;\n id?: string;\n};\n\ninterface AvatarStackProps {\n users: AvatarStackUser[];\n maxDisplay?: number;\n size?: StackSize;\n className?: string;\n};\n\nconst AvatarStack = forwardRef<HTMLElement, AvatarStackProps>(({ users, maxDisplay = 3, size = 'sm', className = '' }, ref) => {\n if(users.length === 0) return null;\n\n const displayedUsers = users.slice(0, maxDisplay);\n const remainingCount = users.length - maxDisplay;\n\n return (\n <Row ref={ref} className={`avatar-stack ${className}`}>\n {displayedUsers.map((user, index) => (\n <Avatar\n key={user._id ?? user.id ?? index}\n user={user}\n size={size}\n className='avatar-stack-item'\n />\n ))}\n {remainingCount > 0 && (\n <div className={`avatar-stack-overflow avatar avatar-${size} d-flex flex-center radius-full`}>\n <Text as='p' weight='bold' className='avatar-initials'>+{remainingCount}</Text>\n </div>\n )}\n </Row>\n );\n});\n\nAvatarStack.displayName = 'AvatarStack';\n\nexport default AvatarStack;\n","import { cn } from '@/shared/utils/cn';\nimport './IconFrame.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type IconFrameSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type IconFrameTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\nexport type IconFrameShape = 'square' | 'circle';\n\nexport interface IconFrameProps extends HTMLAttributes<HTMLDivElement> {\n size?: IconFrameSize;\n tone?: IconFrameTone;\n shape?: IconFrameShape;\n children?: ReactNode;\n}\n\n/**\n * Tinted rounded container for a decorative icon. Unifies the\n * ~5 hand-rolled \"icon bubbles\" scattered across dashboards, tiles and menus.\n */\nconst IconFrame = forwardRef<HTMLDivElement, IconFrameProps>(({\n size = 'md',\n tone = 'neutral',\n shape = 'square',\n className,\n children,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-icon-frame',\n `volt-icon-frame--size-${size}`,\n `volt-icon-frame--tone-${tone}`,\n `volt-icon-frame--shape-${shape}`,\n className\n );\n\n return (\n <div ref={ref} className={classes} aria-hidden='true' {...rest}>\n {children}\n </div>\n );\n});\n\nIconFrame.displayName = 'IconFrame';\n\nexport default IconFrame;\n","import { cn } from '@/shared/utils/cn';\nimport Surface from '../Surface';\nimport './Card.css';\nimport { forwardRef, useRef } from 'react';\nimport type {\n ElementType,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n Ref\n} from 'react';\nimport type { SurfaceVariant } from '../types';\n\nconst MISSING_INTERACTIVE_NAME_ERROR =\n 'Card with `interactive` requires an accessible name via aria-label or aria-labelledby.';\n\nexport type CardVariant = 'elevated' | 'glass' | 'plain';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * Maps a {@link CardVariant} to the background-only `Surface` variant that\n * supplies its background/border/shadow. `plain` has no Surface variant — the\n * flat `.volt-card--plain` rules cover it.\n */\nconst SURFACE_VARIANT: Record<CardVariant, SurfaceVariant | undefined> = {\n elevated: 'elevated',\n glass: 'glass',\n plain: undefined\n};\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /** Background/elevation treatment. Defaults to `elevated`. */\n variant?: CardVariant;\n /**\n * Makes the whole card clickable/focusable. Renders a `<button>` (unless\n * `as`/`to` overrides the element) with keyboard activation. Requires an\n * accessible name.\n */\n interactive?: boolean;\n /** Applies the brand selected ring + `aria-selected` when interactive. */\n selected?: boolean;\n /**\n * Convenience body padding applied directly to the root. Prefer\n * `Card.Header`/`Card.Body`/`Card.Footer` slots for structured content;\n * use this for simple single-region cards. Defaults to `none`.\n */\n padding?: CardPadding;\n /** Element/component to render as. Defaults to `button` when interactive, else `div`. */\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n}\n\nconst Card = forwardRef<HTMLDivElement, CardProps>(({\n variant = 'elevated',\n interactive = false,\n selected = false,\n padding = 'none',\n as,\n className,\n children,\n onKeyDown,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n\n const Component: ElementType = as ?? (interactive ? 'button' : 'div');\n const isNativeButton = interactive && Component === 'button';\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n\n if (interactive && !resolvedAriaLabel && !resolvedAriaLabelledBy) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_INTERACTIVE_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const classes = cn(\n 'volt-card',\n `volt-card--${variant}`,\n interactive && 'volt-card--interactive',\n selected && 'volt-card--selected',\n padding !== 'none' && `volt-card--pad-${padding}`,\n className\n );\n\n // Non-native interactive elements (e.g. `as='div'`/`as={Link}`) need an\n // explicit button role + keyboard activation to stay accessible.\n const needsButtonSemantics = interactive && !isNativeButton;\n\n const handleKeyDown = needsButtonSemantics\n ? (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n (event.currentTarget as HTMLElement).click();\n }\n }\n : onKeyDown;\n\n const interactiveProps = interactive\n ? {\n role: needsButtonSemantics ? (role ?? 'button') : role,\n tabIndex: needsButtonSemantics ? (tabIndex ?? 0) : tabIndex,\n ...(isNativeButton ? { type: 'button' as const } : {}),\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': resolvedAriaLabelledBy,\n 'aria-selected': selected || undefined,\n onKeyDown: handleKeyDown\n }\n : {\n role,\n tabIndex,\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': resolvedAriaLabelledBy,\n onKeyDown\n };\n\n return (\n <Surface\n ref={ref as Ref<HTMLElement>}\n as={Component}\n variant={SURFACE_VARIANT[variant]}\n className={classes}\n {...interactiveProps}\n {...rest}\n >\n {children}\n </Surface>\n );\n});\n\nCard.displayName = 'Card';\n\n/* Slots ----------------------------------------------------------------- */\n\nexport interface CardSlotProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n}\n\nexport interface CardBodyProps extends CardSlotProps {\n /** Body padding. Defaults to `md`. Use `none` to pad children manually. */\n padding?: CardPadding;\n}\n\nconst CardHeader = forwardRef<HTMLDivElement, CardSlotProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('volt-card__header', 'panel-header-bordered', className)}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardHeader.displayName = 'Card.Header';\n\nconst CardBody = forwardRef<HTMLDivElement, CardBodyProps>(({\n as,\n padding = 'md',\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(\n 'volt-card__body',\n padding !== 'none' && `volt-card__body--pad-${padding}`,\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardBody.displayName = 'Card.Body';\n\nconst CardFooter = forwardRef<HTMLDivElement, CardSlotProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('volt-card__footer', 'panel-footer-bordered', className)}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardFooter.displayName = 'Card.Footer';\n\ntype CardComponent = typeof Card & {\n Header: typeof CardHeader;\n Body: typeof CardBody;\n Footer: typeof CardFooter;\n};\n\nconst CardWithSlots = Card as CardComponent;\nCardWithSlots.Header = CardHeader;\nCardWithSlots.Body = CardBody;\nCardWithSlots.Footer = CardFooter;\n\nexport { CardHeader, CardBody, CardFooter };\nexport default CardWithSlots;\n","import { cn } from '@/shared/utils/cn';\nimport './Skeleton.css';\nimport { forwardRef } from 'react';\nimport type { CSSProperties } from 'react';\n\nexport type SkeletonVariant = 'text' | 'rectangular' | 'rounded' | 'circular';\nexport type SkeletonAnimation = 'wave' | 'pulse' | 'none';\n\nexport interface SkeletonProps {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n width?: string | number;\n height?: string | number;\n className?: string;\n style?: CSSProperties;\n};\n\nconst toCssSize = (value: string | number | undefined): string | undefined => {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return `${value}px`;\n return value;\n};\n\nconst Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(({\n variant = 'text',\n animation = 'pulse',\n width,\n height,\n className = '',\n style\n}, ref) => {\n const classes = cn(\n 'volt-skeleton',\n `volt-skeleton--${variant}`,\n `volt-skeleton--${animation}`,\n className\n );\n\n const resolvedStyle: CSSProperties = {\n ...style,\n width: toCssSize(width) ?? style?.width,\n height: toCssSize(height) ?? style?.height\n };\n\n return (\n <span\n ref={ref}\n className={classes}\n style={resolvedStyle}\n aria-hidden='true'\n data-variant={variant}\n data-animation={animation}\n />\n );\n});\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n","import { cn } from '@/shared/utils/cn';\nimport Stack from '../Stack';\nimport Row from '../Row';\nimport Text from '../Text';\nimport SectionLabel from '../SectionLabel';\nimport Skeleton from '../Skeleton';\nimport './StatCard.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type StatCardTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';\nexport type StatCardState = 'ready' | 'loading';\n\nexport interface StatCardProps extends HTMLAttributes<HTMLDivElement> {\n label: ReactNode;\n value?: ReactNode;\n unit?: ReactNode;\n icon?: ReactNode;\n trend?: ReactNode;\n footer?: ReactNode;\n tone?: StatCardTone;\n state?: StatCardState;\n tabular?: boolean;\n surface?: 'elevated' | 'soft';\n}\n\n/**\n * Metric/stat display card. Consolidates the hand-rolled stat-card JSX\n * used across dashboard, cluster metrics, container metrics and secret-key\n * usage panels.\n */\nconst StatCard = forwardRef<HTMLDivElement, StatCardProps>(({\n label,\n value,\n unit,\n icon,\n trend,\n footer,\n tone = 'neutral',\n state = 'ready',\n tabular = true,\n surface = 'soft',\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-stat-card',\n `volt-stat-card--tone-${tone}`,\n surface === 'elevated' ? 'card-elevated' : 'b-soft radius-md',\n 'p-1-5',\n className\n );\n\n return (\n <Stack ref={ref} gap='075' className={classes} {...rest}>\n <Row gap='05' align='center'>\n {icon && (\n <span className='volt-stat-card__icon' aria-hidden='true'>\n {icon}\n </span>\n )}\n <SectionLabel className='volt-stat-card__label'>{label}</SectionLabel>\n </Row>\n\n {state === 'loading' ? (\n <Skeleton variant='text' width='60%' height={28} animation='wave' />\n ) : (\n <Row gap='05' className={cn('items-baseline', tabular && 'tabular-nums')}>\n {value !== undefined && value !== null && (\n <Text as='span' size='3xl' weight='bold' tone='primary' className='volt-stat-card__value'>\n {value}\n </Text>\n )}\n {unit && (\n <Text as='span' size='md' tone='muted' className='volt-stat-card__unit'>\n {unit}\n </Text>\n )}\n {trend && (\n <span className='volt-stat-card__trend'>{trend}</span>\n )}\n </Row>\n )}\n\n {footer && <div className='volt-stat-card__footer'>{footer}</div>}\n </Stack>\n );\n});\n\nStatCard.displayName = 'StatCard';\n\nexport default StatCard;\n","import { cn } from '@/shared/utils/cn';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport Heading from '../Heading';\nimport IconFrame from '../IconFrame';\nimport './SelectableCard.css';\nimport { forwardRef } from 'react';\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\nimport type { IconFrameTone } from '../IconFrame';\n\nexport interface SelectableCardProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title' | 'onSelect'> {\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n iconTone?: IconFrameTone;\n selected?: boolean;\n badge?: ReactNode;\n /**\n * `radio` for mutually-exclusive groups (single selection),\n * `checkbox` for multi-select.\n */\n selectionRole?: 'radio' | 'checkbox';\n onSelect?: () => void;\n}\n\n/**\n * Toggleable card with selected ring. Consolidates ~3 onboarding/creation\n * card shapes (template cards, cluster-onboarding choices, create-container\n * template selectors).\n */\nconst SelectableCard = forwardRef<HTMLButtonElement, SelectableCardProps>(({\n title,\n description,\n icon,\n iconTone = 'brand',\n selected = false,\n badge,\n selectionRole,\n onSelect,\n onClick,\n className,\n children,\n type = 'button',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-selectable-card',\n selected && 'volt-selectable-card--selected',\n className\n );\n\n const ariaProps = selectionRole === 'radio'\n ? { role: 'radio', 'aria-checked': selected }\n : selectionRole === 'checkbox'\n ? { role: 'checkbox', 'aria-checked': selected }\n : { 'aria-pressed': selected };\n\n return (\n <button\n ref={ref}\n type={type}\n className={classes}\n onClick={(event) => {\n onSelect?.();\n onClick?.(event);\n }}\n {...ariaProps}\n {...rest}\n >\n {badge && <span className='volt-selectable-card__badge'>{badge}</span>}\n <Stack align='center' gap='075' textAlign='center'>\n {icon && (\n <IconFrame size='lg' tone={iconTone}>\n {icon}\n </IconFrame>\n )}\n <Heading level={3} size='md' weight='semibold'>\n {title}\n </Heading>\n {description && (\n <Text size='sm' tone='secondary' lineHeight='5'>\n {description}\n </Text>\n )}\n {children}\n </Stack>\n </button>\n );\n});\n\nSelectableCard.displayName = 'SelectableCard';\n\nexport default SelectableCard;\n","import { cn } from '@/shared/utils/cn';\nimport './DashedActionBox.css';\nimport { Plus } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nexport type DashedActionTone = 'muted' | 'brand';\nexport type DashedActionSize = 'sm' | 'md' | 'lg';\n\nexport interface DashedActionBoxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n icon?: ReactNode;\n label: ReactNode;\n tone?: DashedActionTone;\n size?: DashedActionSize;\n block?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Dashed-border \"add X\" call-to-action button. Consolidates the\n * add-argument, add-option, add-field, file-dropzone patterns.\n */\nconst DashedActionBox = forwardRef<HTMLButtonElement, DashedActionBoxProps>(({\n icon,\n label,\n tone = 'muted',\n size = 'md',\n block = false,\n className,\n children,\n type = 'button',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-dashed-action',\n `volt-dashed-action--tone-${tone}`,\n `volt-dashed-action--size-${size}`,\n block && 'volt-dashed-action--block',\n className\n );\n\n return (\n <button ref={ref} type={type} className={classes} {...rest}>\n <span className='volt-dashed-action__icon' aria-hidden='true'>\n {icon ?? <Plus size={16} />}\n </span>\n <span className='volt-dashed-action__label'>{label}</span>\n {children}\n </button>\n );\n});\n\nDashedActionBox.displayName = 'DashedActionBox';\n\nexport default DashedActionBox;\n","function __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexport { _extends as _, _object_without_properties_loose as a };\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport { _ as _extends, a as _object_without_properties_loose } from './cc-B6peeNak.mjs';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { memo, useMemo, useState, useRef, useLayoutEffect, useEffect, useCallback } from 'react';\nimport { motion } from 'motion/react';\n\n__insertCSS(\":root{--sileo-spring-easing:linear(\\n\\t\\t0,\\n\\t\\t0.002 0.6%,\\n\\t\\t0.007 1.2%,\\n\\t\\t0.015 1.8%,\\n\\t\\t0.026 2.4%,\\n\\t\\t0.041 3.1%,\\n\\t\\t0.06 3.8%,\\n\\t\\t0.108 5.3%,\\n\\t\\t0.157 6.6%,\\n\\t\\t0.214 8%,\\n\\t\\t0.467 13.7%,\\n\\t\\t0.577 16.3%,\\n\\t\\t0.631 17.7%,\\n\\t\\t0.682 19.1%,\\n\\t\\t0.73 20.5%,\\n\\t\\t0.771 21.8%,\\n\\t\\t0.808 23.1%,\\n\\t\\t0.844 24.5%,\\n\\t\\t0.874 25.8%,\\n\\t\\t0.903 27.2%,\\n\\t\\t0.928 28.6%,\\n\\t\\t0.952 30.1%,\\n\\t\\t0.972 31.6%,\\n\\t\\t0.988 33.1%,\\n\\t\\t1.01 35.7%,\\n\\t\\t1.025 38.5%,\\n\\t\\t1.034 41.6%,\\n\\t\\t1.038 45%,\\n\\t\\t1.035 50.1%,\\n\\t\\t1.012 64.2%,\\n\\t\\t1.003 73%,\\n\\t\\t0.999 83.7%,\\n\\t\\t1\\n\\t);--sileo-duration:600ms;--sileo-height:40px;--sileo-width:350px;--sileo-state-success:oklch(0.723 0.219 142.136);--sileo-state-loading:oklch(0.556 0 0);--sileo-state-error:oklch(0.637 0.237 25.331);--sileo-state-warning:oklch(0.795 0.184 86.047);--sileo-state-info:oklch(0.685 0.169 237.323);--sileo-state-action:oklch(0.623 0.214 259.815)}[data-sileo-toast]{position:relative;cursor:pointer;pointer-events:auto;touch-action:none;border:0;background:0 0;padding:0;width:var(--sileo-width);height:var(--_h,var(--sileo-height));opacity:0;transform:translateZ(0) scale(.95);transform-origin:center;contain:layout style;overflow:visible}[data-sileo-toast][data-state=loading]{cursor:default}[data-sileo-toast][data-ready=true]{opacity:1;transform:translateZ(0) scale(1);transition:transform calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),opacity calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),margin-bottom calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),margin-top calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),height var(--sileo-duration) var(--sileo-spring-easing)}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){transform:translateY(-6px) scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){transform:translateY(6px) scale(.95)}[data-sileo-toast][data-ready=true][data-exiting=true]{opacity:0;pointer-events:none}[data-sileo-viewport][data-position^=top] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(-6px) scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(6px) scale(.95)}[data-sileo-canvas]{position:absolute;left:0;right:0;pointer-events:none;transform:translateZ(0);contain:layout style;overflow:visible}[data-sileo-canvas][data-edge=top]{bottom:0;transform:scaleY(-1) translateZ(0)}[data-sileo-canvas][data-edge=bottom]{top:0}[data-sileo-svg]{overflow:visible}[data-sileo-header]{position:absolute;z-index:20;display:flex;align-items:center;padding:.5rem;height:var(--sileo-height);overflow:hidden;left:var(--_px,0);transform:var(--_ht);max-width:var(--_pw)}[data-sileo-toast][data-ready=true] [data-sileo-header]{transition:transform var(--sileo-duration) var(--sileo-spring-easing),left var(--sileo-duration) var(--sileo-spring-easing),max-width var(--sileo-duration) var(--sileo-spring-easing)}[data-sileo-header][data-edge=top]{bottom:0}[data-sileo-header][data-edge=bottom]{top:0}[data-sileo-header-stack]{position:relative;display:inline-flex;align-items:center;height:100%}[data-sileo-header-inner]{display:flex;align-items:center;gap:.5rem;white-space:nowrap;opacity:1;filter:blur(0px);transform:translateZ(0)}[data-sileo-header-inner][data-layer=current]{position:relative;z-index:1;animation:sileo-header-enter var(--sileo-duration) var(--sileo-spring-easing) both}[data-sileo-header-inner][data-exiting=true],[data-sileo-header-inner][data-layer=current]:not(:only-child){will-change:opacity,filter}[data-sileo-header-inner][data-layer=prev]{position:absolute;left:0;top:0;z-index:0;pointer-events:none}[data-sileo-header-inner][data-exiting=true]{animation:sileo-header-exit calc(var(--sileo-duration) * .7) ease forwards}[data-sileo-badge]{display:flex;height:24px;width:24px;flex-shrink:0;align-items:center;justify-content:center;padding:2px;box-sizing:border-box;border-radius:9999px;color:var(--sileo-tone,currentColor);background-color:var(--sileo-tone-bg,transparent)}[data-sileo-title]{font-size:.825rem;line-height:1rem;font-weight:500;text-transform:capitalize;color:var(--sileo-tone,currentColor)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state]{--_c:var(--sileo-state-success)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=loading]{--_c:var(--sileo-state-loading)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=error]{--_c:var(--sileo-state-error)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=warning]{--_c:var(--sileo-state-warning)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=info]{--_c:var(--sileo-state-info)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=action]{--_c:var(--sileo-state-action)}:is([data-sileo-badge],[data-sileo-title])[data-state]{--sileo-tone:var(--_c);--sileo-tone-bg:color-mix(in oklch, var(--_c) 20%, transparent)}[data-sileo-content]{position:absolute;left:0;z-index:10;width:100%;pointer-events:none;opacity:var(--_co, 0)}[data-sileo-content]:not([data-visible=true]){content-visibility:hidden}[data-sileo-toast][data-ready=true] [data-sileo-content]{transition:opacity calc(var(--sileo-duration) * .08) ease calc(var(--sileo-duration) * .04)}[data-sileo-content][data-edge=top]{top:0}[data-sileo-content][data-edge=bottom]{top:var(--sileo-height)}[data-sileo-content][data-visible=true]{pointer-events:auto}[data-sileo-toast][data-ready=true] [data-sileo-content][data-visible=true]{transition:opacity calc(var(--sileo-duration) * .6) ease calc(var(--sileo-duration) * .3)}[data-sileo-description]{width:100%;text-align:left;padding:1rem;font-size:.875rem;line-height:1.25rem;contain:layout style paint;content-visibility:auto}[data-sileo-button]{display:flex;align-items:center;justify-content:center;height:1.75rem;padding:0 .625rem;margin-top:.75rem;border-radius:9999px;border:0;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--sileo-btn-color,currentColor);background-color:var(--sileo-btn-bg,transparent);transition:background-color 150ms ease}[data-sileo-button]:hover{background-color:var(--sileo-btn-bg-hover,transparent)}[data-sileo-button][data-state]{--sileo-btn-color:var(--_c);--sileo-btn-bg:color-mix(in oklch, var(--_c) 15%, transparent);--sileo-btn-bg-hover:color-mix(in oklch, var(--_c) 25%, transparent)}[data-sileo-icon=spin]{animation:sileo-spin 1s linear infinite}@keyframes sileo-spin{to{transform:rotate(360deg)}}@keyframes sileo-header-enter{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0px)}}@keyframes sileo-header-exit{from{opacity:1;filter:blur(0px)}to{opacity:0;filter:blur(6px)}}[data-sileo-viewport]{position:fixed;z-index:50;display:flex;gap:.75rem;padding:.75rem;pointer-events:none;max-width:calc(100vw - 1.5rem);contain:layout style}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){margin-bottom:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){margin-top:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=top]{top:0;flex-direction:column-reverse}[data-sileo-viewport][data-position^=bottom]{bottom:0;flex-direction:column}[data-sileo-viewport][data-position$=left]{left:0;align-items:flex-start}[data-sileo-viewport][data-position$=right]{right:0;align-items:flex-end}[data-sileo-viewport][data-position$=center]{left:50%;transform:translateX(-50%);align-items:center}@media (prefers-reduced-motion:no-preference){[data-sileo-toast][data-ready=true]:hover,[data-sileo-toast][data-ready=true][data-exiting=true]{will-change:transform,opacity,height}}@media (prefers-reduced-motion:reduce){[data-sileo-viewport],[data-sileo-viewport] *,[data-sileo-viewport] ::after,[data-sileo-viewport] ::before{animation-duration:0s;animation-iteration-count:1;transition-duration:0s}}[data-sileo-viewport][data-theme=dark] [data-sileo-description]{color:rgba(0,0,0,.5)}[data-sileo-viewport][data-theme=light] [data-sileo-description]{color:rgba(255,255,255,.5)}\");\n\n/* --------------------------------- Layout --------------------------------- */ const HEIGHT = 40;\nconst WIDTH = 350;\nconst DEFAULT_ROUNDNESS = 16;\n/* --------------------------------- Timing --------------------------------- */ const DURATION_MS = 600;\nconst DURATION_S = DURATION_MS / 1000;\nconst DEFAULT_TOAST_DURATION = 6000;\nconst EXIT_DURATION = DEFAULT_TOAST_DURATION * 0.1;\nconst AUTO_EXPAND_DELAY = DEFAULT_TOAST_DURATION * 0.025;\nconst AUTO_COLLAPSE_DELAY = DEFAULT_TOAST_DURATION - 2000;\nconst SPRING = {\n type: \"spring\",\n bounce: 0.25,\n duration: DURATION_S\n};\n/* --------------------------------- Render --------------------------------- */ const BLUR_RATIO = 0.5;\nconst PILL_PADDING = 10;\nconst MIN_EXPAND_RATIO = 2.25;\nconst SWAP_COLLAPSE_MS = 200;\nconst HEADER_EXIT_MS = DURATION_MS * 0.7;\n\nconst Icon = (_0)=>{\n let { title, children } = _0, props = _object_without_properties_loose(_0, [\n \"title\",\n \"children\"\n ]);\n return /*#__PURE__*/ jsxs(\"svg\", _extends({}, props, {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: [\n /*#__PURE__*/ jsx(\"title\", {\n children: title\n }),\n children\n ]\n }));\n};\nconst ArrowRight = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Arrow Right\",\n children: [\n /*#__PURE__*/ jsx(\"path\", {\n d: \"M5 12h14\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m12 5 7 7-7 7\"\n })\n ]\n });\nconst LifeBuoy = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Life Buoy\",\n children: [\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m4.93 4.93 4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m14.83 9.17 4.24-4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m14.83 14.83 4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m9.17 14.83-4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"4\"\n })\n ]\n });\nconst LoaderCircle = (props)=>/*#__PURE__*/ jsx(Icon, _extends({\n title: \"Loader Circle\"\n }, props, {\n children: /*#__PURE__*/ jsx(\"path\", {\n d: \"M21 12a9 9 0 1 1-6.219-8.56\"\n })\n }));\nconst X = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"X\",\n children: [\n /*#__PURE__*/ jsx(\"path\", {\n d: \"M18 6 6 18\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m6 6 12 12\"\n })\n ]\n });\nconst CircleAlert = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Circle Alert\",\n children: [\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }),\n /*#__PURE__*/ jsx(\"line\", {\n x1: \"12\",\n x2: \"12\",\n y1: \"8\",\n y2: \"12\"\n }),\n /*#__PURE__*/ jsx(\"line\", {\n x1: \"12\",\n x2: \"12.01\",\n y1: \"16\",\n y2: \"16\"\n })\n ]\n });\nconst Check = ()=>/*#__PURE__*/ jsx(Icon, {\n title: \"Check\",\n children: /*#__PURE__*/ jsx(\"path\", {\n d: \"M20 6 9 17l-5-5\"\n })\n });\n\n/* ---------------------------------- Icons --------------------------------- */ const STATE_ICON = {\n success: /*#__PURE__*/ jsx(Check, {}),\n loading: /*#__PURE__*/ jsx(LoaderCircle, {\n \"data-sileo-icon\": \"spin\",\n \"aria-hidden\": \"true\"\n }),\n error: /*#__PURE__*/ jsx(X, {}),\n warning: /*#__PURE__*/ jsx(CircleAlert, {}),\n info: /*#__PURE__*/ jsx(LifeBuoy, {}),\n action: /*#__PURE__*/ jsx(ArrowRight, {})\n};\n/* ----------------------------- Memoised Defs ------------------------------ */ const GooeyDefs = /*#__PURE__*/ memo(function GooeyDefs({ filterId, blur }) {\n return /*#__PURE__*/ jsx(\"defs\", {\n children: /*#__PURE__*/ jsxs(\"filter\", {\n id: filterId,\n x: \"-20%\",\n y: \"-20%\",\n width: \"140%\",\n height: \"140%\",\n colorInterpolationFilters: \"sRGB\",\n children: [\n /*#__PURE__*/ jsx(\"feGaussianBlur\", {\n in: \"SourceGraphic\",\n stdDeviation: blur,\n result: \"blur\"\n }),\n /*#__PURE__*/ jsx(\"feColorMatrix\", {\n in: \"blur\",\n mode: \"matrix\",\n values: \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\",\n result: \"goo\"\n }),\n /*#__PURE__*/ jsx(\"feComposite\", {\n in: \"SourceGraphic\",\n in2: \"goo\",\n operator: \"atop\"\n })\n ]\n })\n });\n});\n/* ------------------------------- Component -------------------------------- */ const Sileo = /*#__PURE__*/ memo(function Sileo({ id, fill = \"#FFFFFF\", state = \"success\", title = state, description, position = \"left\", expand = \"bottom\", className, icon, styles, button, roundness, exiting = false, autoExpandDelayMs, autoCollapseDelayMs, canExpand, interruptKey, refreshKey, onMouseEnter, onMouseLeave, onDismiss }) {\n var _headerLayer_current_view_icon, _headerLayer_prev_view_icon;\n var _headerLayer_current_view_styles, _headerLayer_current_view_styles1, _headerLayer_prev_view_styles, _headerLayer_prev_view_styles1, _view_styles, _view_styles1;\n const next = useMemo(()=>({\n title,\n description,\n state,\n icon,\n styles,\n button,\n fill\n }), [\n title,\n description,\n state,\n icon,\n styles,\n button,\n fill\n ]);\n const [view, setView] = useState(next);\n const [applied, setApplied] = useState(refreshKey);\n const [isExpanded, setIsExpanded] = useState(false);\n const [ready, setReady] = useState(false);\n const [pillWidth, setPillWidth] = useState(0);\n const [contentHeight, setContentHeight] = useState(0);\n const hasDesc = Boolean(view.description) || Boolean(view.button);\n const isLoading = view.state === \"loading\";\n const open = hasDesc && isExpanded && !isLoading;\n const allowExpand = isLoading ? false : canExpand != null ? canExpand : !interruptKey || interruptKey === id;\n const headerKey = `${view.state}-${view.title}`;\n const filterId = `sileo-gooey-${id}`;\n const resolvedRoundness = Math.max(0, roundness != null ? roundness : DEFAULT_ROUNDNESS);\n const blur = resolvedRoundness * BLUR_RATIO;\n const headerRef = useRef(null);\n const contentRef = useRef(null);\n const headerExitRef = useRef(null);\n const autoExpandRef = useRef(null);\n const autoCollapseRef = useRef(null);\n const swapTimerRef = useRef(null);\n const lastRefreshKeyRef = useRef(refreshKey);\n const pendingRef = useRef(null);\n const [headerLayer, setHeaderLayer] = useState({\n current: {\n key: headerKey,\n view\n },\n prev: null\n });\n /* ------------------------------ Measurements ------------------------------ */ const innerRef = useRef(null);\n const headerPadRef = useRef(null);\n const pillRoRef = useRef(null);\n const pillRafRef = useRef(0);\n const pillObservedRef = useRef(null);\n // biome-ignore lint/correctness/useExhaustiveDependencies: headerLayer.current.key is used to force a re-render\n useLayoutEffect(()=>{\n const el = innerRef.current;\n const header = headerRef.current;\n if (!el || !header) return;\n if (headerPadRef.current === null) {\n const cs = getComputedStyle(header);\n headerPadRef.current = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\n }\n const px = headerPadRef.current;\n const measure = ()=>{\n const w = el.scrollWidth + px + PILL_PADDING;\n if (w > PILL_PADDING) {\n setPillWidth((prev)=>prev === w ? prev : w);\n }\n };\n measure();\n if (!pillRoRef.current) {\n pillRoRef.current = new ResizeObserver(()=>{\n cancelAnimationFrame(pillRafRef.current);\n pillRafRef.current = requestAnimationFrame(()=>{\n var _headerPadRef_current;\n const inner = innerRef.current;\n const pad = (_headerPadRef_current = headerPadRef.current) != null ? _headerPadRef_current : 0;\n if (!inner) return;\n const w = inner.scrollWidth + pad + PILL_PADDING;\n if (w > PILL_PADDING) {\n setPillWidth((prev)=>prev === w ? prev : w);\n }\n });\n });\n }\n if (pillObservedRef.current !== el) {\n if (pillObservedRef.current) {\n pillRoRef.current.unobserve(pillObservedRef.current);\n }\n pillRoRef.current.observe(el);\n pillObservedRef.current = el;\n }\n }, [\n headerLayer.current.key\n ]);\n useEffect(()=>{\n return ()=>{\n var _pillRoRef_current;\n cancelAnimationFrame(pillRafRef.current);\n (_pillRoRef_current = pillRoRef.current) == null ? void 0 : _pillRoRef_current.disconnect();\n };\n }, []);\n useLayoutEffect(()=>{\n if (!hasDesc) {\n setContentHeight(0);\n return;\n }\n const el = contentRef.current;\n if (!el) return;\n const measure = ()=>{\n const h = el.scrollHeight;\n setContentHeight((prev)=>prev === h ? prev : h);\n };\n measure();\n let rafId = 0;\n const ro = new ResizeObserver(()=>{\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n });\n ro.observe(el);\n return ()=>{\n cancelAnimationFrame(rafId);\n ro.disconnect();\n };\n }, [\n hasDesc\n ]);\n useEffect(()=>{\n const raf = requestAnimationFrame(()=>setReady(true));\n return ()=>cancelAnimationFrame(raf);\n }, []);\n useLayoutEffect(()=>{\n setHeaderLayer((state)=>{\n if (state.current.key === headerKey) {\n if (state.current.view === view) return state;\n return _extends({}, state, {\n current: {\n key: headerKey,\n view\n }\n });\n }\n return {\n prev: state.current,\n current: {\n key: headerKey,\n view\n }\n };\n });\n }, [\n headerKey,\n view\n ]);\n useEffect(()=>{\n if (!headerLayer.prev) return;\n if (headerExitRef.current) {\n clearTimeout(headerExitRef.current);\n }\n headerExitRef.current = window.setTimeout(()=>{\n headerExitRef.current = null;\n setHeaderLayer((state)=>_extends({}, state, {\n prev: null\n }));\n }, HEADER_EXIT_MS);\n return ()=>{\n if (headerExitRef.current) {\n clearTimeout(headerExitRef.current);\n headerExitRef.current = null;\n }\n };\n }, [\n headerLayer.prev\n ]);\n /* ----------------------------- Sync fill ---------------------------------- */ useEffect(()=>{\n setView((prev)=>prev.fill === fill ? prev : _extends({}, prev, {\n fill\n }));\n }, [\n fill\n ]);\n /* ----------------------------- Refresh logic ------------------------------ */ useEffect(()=>{\n if (refreshKey === undefined) {\n setView(next);\n setApplied(undefined);\n pendingRef.current = null;\n lastRefreshKeyRef.current = refreshKey;\n return;\n }\n if (lastRefreshKeyRef.current === refreshKey) return;\n lastRefreshKeyRef.current = refreshKey;\n if (swapTimerRef.current) {\n clearTimeout(swapTimerRef.current);\n swapTimerRef.current = null;\n }\n if (open) {\n pendingRef.current = {\n key: refreshKey,\n payload: next\n };\n setIsExpanded(false);\n swapTimerRef.current = window.setTimeout(()=>{\n swapTimerRef.current = null;\n const pending = pendingRef.current;\n if (!pending) return;\n setView(pending.payload);\n setApplied(pending.key);\n pendingRef.current = null;\n }, SWAP_COLLAPSE_MS);\n } else {\n pendingRef.current = null;\n setView(next);\n setApplied(refreshKey);\n }\n }, [\n open,\n refreshKey,\n next\n ]);\n /* ----------------------------- Auto expand/collapse ----------------------- */ // biome-ignore lint/correctness/useExhaustiveDependencies: applied is used to force a re-render\n useEffect(()=>{\n if (!hasDesc) return;\n if (autoExpandRef.current) clearTimeout(autoExpandRef.current);\n if (autoCollapseRef.current) clearTimeout(autoCollapseRef.current);\n if (exiting || !allowExpand) {\n setIsExpanded(false);\n return;\n }\n if (autoExpandDelayMs == null && autoCollapseDelayMs == null) return;\n const expandDelay = autoExpandDelayMs != null ? autoExpandDelayMs : 0;\n const collapseDelay = autoCollapseDelayMs != null ? autoCollapseDelayMs : 0;\n if (expandDelay > 0) {\n autoExpandRef.current = window.setTimeout(()=>setIsExpanded(true), expandDelay);\n } else {\n setIsExpanded(true);\n }\n if (collapseDelay > 0) {\n autoCollapseRef.current = window.setTimeout(()=>setIsExpanded(false), collapseDelay);\n }\n return ()=>{\n if (autoExpandRef.current) clearTimeout(autoExpandRef.current);\n if (autoCollapseRef.current) clearTimeout(autoCollapseRef.current);\n };\n }, [\n autoCollapseDelayMs,\n autoExpandDelayMs,\n hasDesc,\n allowExpand,\n exiting,\n applied\n ]);\n /* ------------------------------ Derived values ---------------------------- */ const minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n const rawExpanded = hasDesc ? Math.max(minExpanded, HEIGHT + contentHeight) : minExpanded;\n const frozenExpandedRef = useRef(rawExpanded);\n if (open) {\n frozenExpandedRef.current = rawExpanded;\n }\n const expanded = open ? rawExpanded : frozenExpandedRef.current;\n const svgHeight = hasDesc ? Math.max(expanded, minExpanded) : HEIGHT;\n const expandedContent = Math.max(0, expanded - HEIGHT);\n const resolvedPillWidth = Math.max(pillWidth || HEIGHT, HEIGHT);\n const pillHeight = HEIGHT + blur * 3;\n const pillX = position === \"right\" ? WIDTH - resolvedPillWidth : position === \"center\" ? (WIDTH - resolvedPillWidth) / 2 : 0;\n /* ------------------------------- Memoised animate targets ----------------- */ const pillAnimate = useMemo(()=>({\n x: pillX,\n width: resolvedPillWidth,\n height: open ? pillHeight : HEIGHT\n }), [\n pillX,\n resolvedPillWidth,\n open,\n pillHeight\n ]);\n const bodyAnimate = useMemo(()=>({\n height: open ? expandedContent : 0,\n opacity: open ? 1 : 0\n }), [\n open,\n expandedContent\n ]);\n const bodyTransition = useMemo(()=>open ? SPRING : _extends({}, SPRING, {\n bounce: 0\n }), [\n open\n ]);\n const pillTransition = useMemo(()=>ready ? SPRING : {\n duration: 0\n }, [\n ready\n ]);\n const viewBox = `0 0 ${WIDTH} ${svgHeight}`;\n const canvasStyle = useMemo(()=>({\n filter: `url(#${filterId})`\n }), [\n filterId\n ]);\n /* ------------------------------- Inline styles ---------------------------- */ const rootStyle = useMemo(()=>({\n \"--_h\": `${open ? expanded : HEIGHT}px`,\n \"--_pw\": `${resolvedPillWidth}px`,\n \"--_px\": `${pillX}px`,\n \"--_ht\": `translateY(${open ? expand === \"bottom\" ? 3 : -3 : 0}px) scale(${open ? 0.9 : 1})`,\n \"--_co\": `${open ? 1 : 0}`\n }), [\n open,\n expanded,\n resolvedPillWidth,\n pillX,\n expand\n ]);\n /* -------------------------------- Handlers -------------------------------- */ const handleEnter = useCallback((e)=>{\n onMouseEnter == null ? void 0 : onMouseEnter(e);\n if (hasDesc) setIsExpanded(true);\n }, [\n hasDesc,\n onMouseEnter\n ]);\n const handleLeave = useCallback((e)=>{\n onMouseLeave == null ? void 0 : onMouseLeave(e);\n setIsExpanded(false);\n }, [\n onMouseLeave\n ]);\n const handleTransitionEnd = useCallback((e)=>{\n if (e.propertyName !== \"height\" && e.propertyName !== \"transform\") return;\n if (open) return;\n const pending = pendingRef.current;\n if (!pending) return;\n if (swapTimerRef.current) {\n clearTimeout(swapTimerRef.current);\n swapTimerRef.current = null;\n }\n setView(pending.payload);\n setApplied(pending.key);\n pendingRef.current = null;\n }, [\n open\n ]);\n /* -------------------------------- Swipe ----------------------------------- */ const SWIPE_DISMISS = 30;\n const SWIPE_MAX = 20;\n const buttonRef = useRef(null);\n const pointerStartRef = useRef(null);\n const onDismissRef = useRef(onDismiss);\n onDismissRef.current = onDismiss;\n const swipeHandlersRef = useRef(null);\n if (!swipeHandlersRef.current) {\n const handlers = {\n onMove: (e)=>{\n const el = buttonRef.current;\n if (pointerStartRef.current === null || !el) return;\n const dy = e.clientY - pointerStartRef.current;\n const sign = dy > 0 ? 1 : -1;\n const clamped = Math.min(Math.abs(dy), SWIPE_MAX) * sign;\n el.style.transform = `translateY(${clamped}px)`;\n },\n onUp: (e)=>{\n const el = buttonRef.current;\n if (pointerStartRef.current === null || !el) return;\n const dy = e.clientY - pointerStartRef.current;\n pointerStartRef.current = null;\n el.style.transform = \"\";\n el.removeEventListener(\"pointermove\", handlers.onMove);\n el.removeEventListener(\"pointerup\", handlers.onUp);\n if (Math.abs(dy) > SWIPE_DISMISS) {\n onDismissRef.current == null ? void 0 : onDismissRef.current.call(onDismissRef);\n }\n }\n };\n swipeHandlersRef.current = handlers;\n }\n const handleButtonClick = useCallback((e)=>{\n var _view_button;\n e.preventDefault();\n e.stopPropagation();\n (_view_button = view.button) == null ? void 0 : _view_button.onClick();\n }, [\n view.button\n ]);\n const handlePointerDown = useCallback((e)=>{\n if (exiting || !onDismiss) return;\n const target = e.target;\n if (target.closest(\"[data-sileo-button]\")) return;\n pointerStartRef.current = e.clientY;\n e.currentTarget.setPointerCapture(e.pointerId);\n const el = buttonRef.current;\n const h = swipeHandlersRef.current;\n if (el && h) {\n el.addEventListener(\"pointermove\", h.onMove, {\n passive: true\n });\n el.addEventListener(\"pointerup\", h.onUp, {\n passive: true\n });\n }\n }, [\n exiting,\n onDismiss\n ]);\n /* --------------------------------- Render --------------------------------- */ return /*#__PURE__*/ jsxs(\"button\", {\n ref: buttonRef,\n type: \"button\",\n \"data-sileo-toast\": true,\n \"data-ready\": ready,\n \"data-expanded\": open,\n \"data-exiting\": exiting,\n \"data-edge\": expand,\n \"data-position\": position,\n \"data-state\": view.state,\n className: className,\n style: rootStyle,\n onMouseEnter: handleEnter,\n onMouseLeave: handleLeave,\n onTransitionEnd: handleTransitionEnd,\n onPointerDown: handlePointerDown,\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-canvas\": true,\n \"data-edge\": expand,\n style: canvasStyle,\n children: /*#__PURE__*/ jsxs(\"svg\", {\n \"data-sileo-svg\": true,\n width: WIDTH,\n height: svgHeight,\n viewBox: viewBox,\n children: [\n /*#__PURE__*/ jsx(\"title\", {\n children: \"Sileo Notification\"\n }),\n /*#__PURE__*/ jsx(GooeyDefs, {\n filterId: filterId,\n blur: blur\n }),\n /*#__PURE__*/ jsx(motion.rect, {\n \"data-sileo-pill\": true,\n rx: resolvedRoundness,\n ry: resolvedRoundness,\n fill: view.fill,\n initial: false,\n animate: pillAnimate,\n transition: pillTransition\n }),\n /*#__PURE__*/ jsx(motion.rect, {\n \"data-sileo-body\": true,\n y: HEIGHT,\n width: WIDTH,\n rx: resolvedRoundness,\n ry: resolvedRoundness,\n fill: view.fill,\n initial: false,\n animate: bodyAnimate,\n transition: bodyTransition\n })\n ]\n })\n }),\n /*#__PURE__*/ jsx(\"div\", {\n ref: headerRef,\n \"data-sileo-header\": true,\n \"data-edge\": expand,\n children: /*#__PURE__*/ jsxs(\"div\", {\n \"data-sileo-header-stack\": true,\n children: [\n /*#__PURE__*/ jsxs(\"div\", {\n ref: innerRef,\n \"data-sileo-header-inner\": true,\n \"data-layer\": \"current\",\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-badge\": true,\n \"data-state\": headerLayer.current.view.state,\n className: (_headerLayer_current_view_styles = headerLayer.current.view.styles) == null ? void 0 : _headerLayer_current_view_styles.badge,\n children: (_headerLayer_current_view_icon = headerLayer.current.view.icon) != null ? _headerLayer_current_view_icon : STATE_ICON[headerLayer.current.view.state]\n }),\n /*#__PURE__*/ jsx(\"span\", {\n \"data-sileo-title\": true,\n \"data-state\": headerLayer.current.view.state,\n className: (_headerLayer_current_view_styles1 = headerLayer.current.view.styles) == null ? void 0 : _headerLayer_current_view_styles1.title,\n children: headerLayer.current.view.title\n })\n ]\n }, headerLayer.current.key),\n headerLayer.prev && /*#__PURE__*/ jsxs(\"div\", {\n \"data-sileo-header-inner\": true,\n \"data-layer\": \"prev\",\n \"data-exiting\": \"true\",\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-badge\": true,\n \"data-state\": headerLayer.prev.view.state,\n className: (_headerLayer_prev_view_styles = headerLayer.prev.view.styles) == null ? void 0 : _headerLayer_prev_view_styles.badge,\n children: (_headerLayer_prev_view_icon = headerLayer.prev.view.icon) != null ? _headerLayer_prev_view_icon : STATE_ICON[headerLayer.prev.view.state]\n }),\n /*#__PURE__*/ jsx(\"span\", {\n \"data-sileo-title\": true,\n \"data-state\": headerLayer.prev.view.state,\n className: (_headerLayer_prev_view_styles1 = headerLayer.prev.view.styles) == null ? void 0 : _headerLayer_prev_view_styles1.title,\n children: headerLayer.prev.view.title\n })\n ]\n }, headerLayer.prev.key)\n ]\n })\n }),\n hasDesc && /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-content\": true,\n \"data-edge\": expand,\n \"data-visible\": open,\n children: /*#__PURE__*/ jsxs(\"div\", {\n ref: contentRef,\n \"data-sileo-description\": true,\n className: (_view_styles = view.styles) == null ? void 0 : _view_styles.description,\n children: [\n view.description,\n view.button && // biome-ignore lint/a11y/useValidAnchor: cannot use button inside a button\n /*#__PURE__*/ jsx(\"a\", {\n href: \"#\",\n type: \"button\",\n \"data-sileo-button\": true,\n \"data-state\": view.state,\n className: (_view_styles1 = view.styles) == null ? void 0 : _view_styles1.button,\n onClick: handleButtonClick,\n children: view.button.title\n })\n ]\n })\n })\n ]\n });\n});\n\nconst pillAlign = (pos)=>pos.includes(\"right\") ? \"right\" : pos.includes(\"center\") ? \"center\" : \"left\";\nconst expandDir = (pos)=>pos.startsWith(\"top\") ? \"bottom\" : \"top\";\nconst store = {\n toasts: [],\n listeners: new Set(),\n position: \"top-right\",\n options: undefined,\n emit () {\n for (const fn of this.listeners)fn(this.toasts);\n },\n update (fn) {\n this.toasts = fn(this.toasts);\n this.emit();\n }\n};\nlet idCounter = 0;\nconst generateId = ()=>`${++idCounter}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\nconst timeoutKey = (t)=>`${t.id}:${t.instanceId}`;\n/* ------------------------------- Toast API -------------------------------- */ const dismissToast = (id)=>{\n const item = store.toasts.find((t)=>t.id === id);\n if (!item || item.exiting) return;\n store.update((prev)=>prev.map((t)=>t.id === id ? _extends({}, t, {\n exiting: true\n }) : t));\n setTimeout(()=>store.update((prev)=>prev.filter((t)=>t.id !== id)), EXIT_DURATION);\n};\nconst resolveAutopilot = (opts, duration)=>{\n var _ref, _ref1;\n if (opts.autopilot === false || !duration || duration <= 0) return {};\n const cfg = typeof opts.autopilot === \"object\" ? opts.autopilot : undefined;\n const clamp = (v)=>Math.min(duration, Math.max(0, v));\n return {\n expandDelayMs: clamp((_ref = cfg == null ? void 0 : cfg.expand) != null ? _ref : AUTO_EXPAND_DELAY),\n collapseDelayMs: clamp((_ref1 = cfg == null ? void 0 : cfg.collapse) != null ? _ref1 : AUTO_COLLAPSE_DELAY)\n };\n};\nconst mergeOptions = (options)=>{\n var _store_options;\n return _extends({}, store.options, options, {\n styles: _extends({}, (_store_options = store.options) == null ? void 0 : _store_options.styles, options.styles)\n });\n};\nconst buildSileoItem = (merged, id, fallbackPosition)=>{\n var _merged_duration, _ref, _merged_position;\n const duration = (_merged_duration = merged.duration) != null ? _merged_duration : DEFAULT_TOAST_DURATION;\n const auto = resolveAutopilot(merged, duration);\n return _extends({}, merged, {\n id,\n instanceId: generateId(),\n position: (_ref = (_merged_position = merged.position) != null ? _merged_position : fallbackPosition) != null ? _ref : store.position,\n autoExpandDelayMs: auto.expandDelayMs,\n autoCollapseDelayMs: auto.collapseDelayMs\n });\n};\nconst createToast = (options)=>{\n var _merged_id, _merged_duration;\n const live = store.toasts.filter((t)=>!t.exiting);\n const merged = mergeOptions(options);\n const id = (_merged_id = merged.id) != null ? _merged_id : \"sileo-default\";\n const prev = live.find((t)=>t.id === id);\n const item = buildSileoItem(merged, id, prev == null ? void 0 : prev.position);\n if (prev) {\n store.update((p)=>p.map((t)=>t.id === id ? item : t));\n } else {\n store.update((p)=>[\n ...p.filter((t)=>t.id !== id),\n item\n ]);\n }\n return {\n id,\n duration: (_merged_duration = merged.duration) != null ? _merged_duration : DEFAULT_TOAST_DURATION\n };\n};\nconst updateToast = (id, options)=>{\n const existing = store.toasts.find((t)=>t.id === id);\n if (!existing) return;\n const item = buildSileoItem(mergeOptions(options), id, existing.position);\n store.update((prev)=>prev.map((t)=>t.id === id ? item : t));\n};\nconst sileo = {\n show: (opts)=>createToast(_extends({}, opts, {\n state: opts.type\n })).id,\n success: (opts)=>createToast(_extends({}, opts, {\n state: \"success\"\n })).id,\n error: (opts)=>createToast(_extends({}, opts, {\n state: \"error\"\n })).id,\n warning: (opts)=>createToast(_extends({}, opts, {\n state: \"warning\"\n })).id,\n info: (opts)=>createToast(_extends({}, opts, {\n state: \"info\"\n })).id,\n action: (opts)=>createToast(_extends({}, opts, {\n state: \"action\"\n })).id,\n promise: (promise, opts)=>{\n const { id } = createToast(_extends({}, opts.loading, {\n state: \"loading\",\n duration: null,\n position: opts.position\n }));\n const p = typeof promise === \"function\" ? promise() : promise;\n p.then((data)=>{\n if (opts.action) {\n const actionOpts = typeof opts.action === \"function\" ? opts.action(data) : opts.action;\n updateToast(id, _extends({}, actionOpts, {\n state: \"action\",\n id\n }));\n } else {\n const successOpts = typeof opts.success === \"function\" ? opts.success(data) : opts.success;\n updateToast(id, _extends({}, successOpts, {\n state: \"success\",\n id\n }));\n }\n }).catch((err)=>{\n const errorOpts = typeof opts.error === \"function\" ? opts.error(err) : opts.error;\n updateToast(id, _extends({}, errorOpts, {\n state: \"error\",\n id\n }));\n });\n return p;\n },\n dismiss: dismissToast,\n clear: (position)=>store.update((prev)=>position ? prev.filter((t)=>t.position !== position) : [])\n};\n/* ------------------------------ Toaster Component ------------------------- */ const THEME_FILLS = {\n light: \"#1a1a1a\",\n dark: \"#f2f2f2\"\n};\nfunction useResolvedTheme(theme) {\n const [resolved, setResolved] = useState(()=>{\n if (theme === \"light\" || theme === \"dark\") return theme;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n });\n useEffect(()=>{\n if (theme === \"light\" || theme === \"dark\") {\n setResolved(theme);\n return;\n }\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e)=>setResolved(e.matches ? \"dark\" : \"light\");\n setResolved(mq.matches ? \"dark\" : \"light\");\n mq.addEventListener(\"change\", handler);\n return ()=>mq.removeEventListener(\"change\", handler);\n }, [\n theme\n ]);\n return resolved;\n}\nfunction Toaster({ children, position = \"top-right\", offset, options, theme }) {\n const resolvedTheme = useResolvedTheme(theme);\n const [toasts, setToasts] = useState(store.toasts);\n const [activeId, setActiveId] = useState();\n const hoverRef = useRef(false);\n const timersRef = useRef(new Map());\n const listRef = useRef(toasts);\n const latestRef = useRef(undefined);\n const handlersCache = useRef(new Map());\n useEffect(()=>{\n store.position = position;\n store.options = options;\n }, [\n position,\n options\n ]);\n const clearAllTimers = useCallback(()=>{\n for (const t of timersRef.current.values())clearTimeout(t);\n timersRef.current.clear();\n }, []);\n const schedule = useCallback((items)=>{\n if (hoverRef.current) return;\n for (const item of items){\n var _item_duration;\n if (item.exiting) continue;\n const key = timeoutKey(item);\n if (timersRef.current.has(key)) continue;\n if (item.duration === null) continue;\n const dur = (_item_duration = item.duration) != null ? _item_duration : DEFAULT_TOAST_DURATION;\n if (dur <= 0) continue;\n timersRef.current.set(key, window.setTimeout(()=>dismissToast(item.id), dur));\n }\n }, []);\n useEffect(()=>{\n const listener = (next)=>setToasts(next);\n store.listeners.add(listener);\n return ()=>{\n store.listeners.delete(listener);\n clearAllTimers();\n };\n }, [\n clearAllTimers\n ]);\n useEffect(()=>{\n listRef.current = toasts;\n const toastKeys = new Set(toasts.map(timeoutKey));\n const toastIds = new Set(toasts.map((t)=>t.id));\n for (const [key, timer] of timersRef.current){\n if (!toastKeys.has(key)) {\n clearTimeout(timer);\n timersRef.current.delete(key);\n }\n }\n for (const id of handlersCache.current.keys()){\n if (!toastIds.has(id)) handlersCache.current.delete(id);\n }\n schedule(toasts);\n }, [\n toasts,\n schedule\n ]);\n const handleMouseEnterRef = useRef(null);\n const handleMouseLeaveRef = useRef(null);\n handleMouseEnterRef.current = useCallback(()=>{\n if (hoverRef.current) return;\n hoverRef.current = true;\n clearAllTimers();\n }, [\n clearAllTimers\n ]);\n handleMouseLeaveRef.current = useCallback(()=>{\n if (!hoverRef.current) return;\n hoverRef.current = false;\n schedule(listRef.current);\n }, [\n schedule\n ]);\n const latest = useMemo(()=>{\n for(let i = toasts.length - 1; i >= 0; i--){\n if (!toasts[i].exiting) return toasts[i].id;\n }\n return undefined;\n }, [\n toasts\n ]);\n useEffect(()=>{\n latestRef.current = latest;\n setActiveId(latest);\n }, [\n latest\n ]);\n const getHandlers = useCallback((toastId)=>{\n let cached = handlersCache.current.get(toastId);\n if (cached) return cached;\n cached = {\n enter: (e)=>{\n setActiveId((prev)=>prev === toastId ? prev : toastId);\n handleMouseEnterRef.current == null ? void 0 : handleMouseEnterRef.current.call(handleMouseEnterRef, e);\n },\n leave: (e)=>{\n setActiveId((prev)=>prev === latestRef.current ? prev : latestRef.current);\n handleMouseLeaveRef.current == null ? void 0 : handleMouseLeaveRef.current.call(handleMouseLeaveRef, e);\n },\n dismiss: ()=>dismissToast(toastId)\n };\n handlersCache.current.set(toastId, cached);\n return cached;\n }, []);\n const getViewportStyle = useCallback((pos)=>{\n if (offset === undefined) return undefined;\n const o = typeof offset === \"object\" ? offset : {\n top: offset,\n right: offset,\n bottom: offset,\n left: offset\n };\n const s = {};\n const px = (v)=>typeof v === \"number\" ? `${v}px` : v;\n if (pos.startsWith(\"top\") && o.top) s.top = px(o.top);\n if (pos.startsWith(\"bottom\") && o.bottom) s.bottom = px(o.bottom);\n if (pos.endsWith(\"left\") && o.left) s.left = px(o.left);\n if (pos.endsWith(\"right\") && o.right) s.right = px(o.right);\n return s;\n }, [\n offset\n ]);\n const activePositions = useMemo(()=>{\n const map = new Map();\n for (const t of toasts){\n var _t_position;\n const pos = (_t_position = t.position) != null ? _t_position : position;\n const arr = map.get(pos);\n if (arr) {\n arr.push(t);\n } else {\n map.set(pos, [\n t\n ]);\n }\n }\n return map;\n }, [\n toasts,\n position\n ]);\n return /*#__PURE__*/ jsxs(Fragment, {\n children: [\n children,\n Array.from(activePositions, ([pos, items])=>{\n const pill = pillAlign(pos);\n const expand = expandDir(pos);\n return /*#__PURE__*/ jsx(\"section\", {\n \"data-sileo-viewport\": true,\n \"data-position\": pos,\n \"data-theme\": theme ? resolvedTheme : undefined,\n \"aria-live\": \"polite\",\n style: getViewportStyle(pos),\n children: items.map((item)=>{\n var _item_fill;\n const h = getHandlers(item.id);\n return /*#__PURE__*/ jsx(Sileo, {\n id: item.id,\n state: item.state,\n title: item.title,\n description: item.description,\n position: pill,\n expand: expand,\n icon: item.icon,\n fill: (_item_fill = item.fill) != null ? _item_fill : theme ? THEME_FILLS[resolvedTheme] : undefined,\n styles: item.styles,\n button: item.button,\n roundness: item.roundness,\n exiting: item.exiting,\n autoExpandDelayMs: item.autoExpandDelayMs,\n autoCollapseDelayMs: item.autoCollapseDelayMs,\n refreshKey: item.instanceId,\n canExpand: activeId === undefined || activeId === item.id,\n onMouseEnter: h.enter,\n onMouseLeave: h.leave,\n onDismiss: h.dismiss\n }, item.id);\n })\n }, pos);\n })\n ]\n });\n}\n\nexport { Toaster, sileo };\n","import { sileo } from 'sileo';\n\ninterface CopyToClipboardOptions {\n successMessage?: string;\n errorMessage?: string;\n};\n\nconst DEFAULT_SUCCESS_MESSAGE = 'Copied to clipboard';\nconst DEFAULT_ERROR_MESSAGE = 'Failed to copy to clipboard';\n\n/** Copies text to the clipboard and shows consistent toast feedback. */\nexport const copyTextToClipboard = async (\n text: string,\n {\n successMessage = DEFAULT_SUCCESS_MESSAGE,\n errorMessage = DEFAULT_ERROR_MESSAGE\n }: CopyToClipboardOptions = {}\n): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n sileo.success({ title: successMessage });\n return true;\n } catch {\n sileo.error({ title: errorMessage });\n return false;\n }\n};\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport Stack from '../Stack';\nimport IconButton from '../IconButton';\nimport './KeyValueList.css';\nimport { copyTextToClipboard } from '@/shared/presentation/utilities/copy-to-clipboard';\nimport { Check, Copy } from 'lucide-react';\nimport { forwardRef, useCallback, useState } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n label: ReactNode;\n value: ReactNode;\n copyValue?: string;\n action?: ReactNode;\n tabular?: boolean;\n}\n\n/**\n * Single label/value pair row with optional copy action or custom trailing\n * action slot. Intended for use inside `KeyValueList`.\n */\nexport const KeyValueRow = forwardRef<HTMLDivElement, KeyValueRowProps>(({\n label,\n value,\n copyValue,\n action,\n tabular = false,\n className,\n ...rest\n}, ref) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n if (!copyValue) return;\n const ok = await copyTextToClipboard(copyValue);\n if (ok) {\n setCopied(true);\n setTimeout(() => setCopied(false), 1400);\n }\n }, [copyValue]);\n\n return (\n <div ref={ref} className={cn('volt-kv-row', className)} {...rest}>\n <Text as='span' size='sm' tone='secondary' className='volt-kv-row__label'>\n {label}\n </Text>\n <Row gap='05' align='center' className='volt-kv-row__value-group'>\n <Text\n as='span'\n size='sm'\n tone='primary'\n weight='medium'\n className={cn('volt-kv-row__value', tabular && 'tabular-nums')}\n >\n {value}\n </Text>\n {copyValue && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy value'}\n >\n {copied ? <Check size={14} /> : <Copy size={14} />}\n </IconButton>\n )}\n {action}\n </Row>\n </div>\n );\n});\n\nKeyValueRow.displayName = 'KeyValueRow';\n\nexport interface KeyValueListProps extends HTMLAttributes<HTMLDivElement> {\n dividers?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Definition-style list. Renders each child `KeyValueRow` with consistent\n * spacing and optional inter-row dividers.\n */\nconst KeyValueList = forwardRef<HTMLDivElement, KeyValueListProps>(({\n dividers = true,\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <Stack\n ref={ref}\n className={cn('volt-kv-list', dividers && 'volt-kv-list--dividers', className)}\n {...rest}\n >\n {children}\n </Stack>\n );\n});\n\nKeyValueList.displayName = 'KeyValueList';\n\nexport default KeyValueList;\n","import { cn } from '@/shared/utils/cn';\nimport Text from '../Text';\nimport './ListRow.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nexport interface ListRowProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n leading?: ReactNode;\n title?: ReactNode;\n subtitle?: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n selected?: boolean;\n active?: boolean;\n onClick?: () => void;\n to?: string;\n /** When `onClick`/`to` are absent, renders as a passive `div`. */\n as?: 'button' | 'div' | 'li';\n disabled?: boolean;\n}\n\n/**\n * Hoverable list row with leading / primary / subtitle / trailing slots.\n * Consolidates team member rows, chat list items, user cells, and similar list entries.\n */\nconst ListRow = forwardRef<HTMLElement, ListRowProps>(({\n leading,\n title,\n subtitle,\n meta,\n trailing,\n selected = false,\n active = false,\n onClick,\n to,\n as,\n disabled,\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-list-row',\n 'list-item-hoverable',\n selected && 'volt-list-row--selected',\n active && 'volt-list-row--active',\n disabled && 'volt-list-row--disabled',\n className\n );\n\n const inner = (\n <>\n {leading && (\n <div className='volt-list-row__leading' aria-hidden='true'>\n {leading}\n </div>\n )}\n <div className='volt-list-row__content'>\n {title && (\n <Text as='span' size='md' weight='medium' tone='primary' truncate>\n {title}\n </Text>\n )}\n {subtitle && (\n <Text as='span' size='sm' tone='muted' truncate>\n {subtitle}\n </Text>\n )}\n {meta}\n </div>\n {trailing && (\n <div className='volt-list-row__trailing'>\n {trailing}\n </div>\n )}\n </>\n );\n\n if (to) {\n return (\n <Link\n ref={ref as React.Ref<HTMLAnchorElement>}\n to={to}\n className={classes}\n aria-current={selected ? 'page' : undefined}\n {...(rest as unknown as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {inner}\n </Link>\n );\n }\n\n if (onClick || as === 'button') {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type='button'\n className={classes}\n onClick={onClick}\n disabled={disabled}\n aria-pressed={selected || undefined}\n {...(rest as unknown as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {inner}\n </button>\n );\n }\n\n const Component = (as ?? 'div') as 'div' | 'li';\n\n return (\n <Component\n ref={ref as unknown as React.Ref<HTMLDivElement & HTMLLIElement>}\n className={classes}\n {...(rest as HTMLAttributes<HTMLElement>)}\n >\n {inner}\n </Component>\n );\n});\n\nListRow.displayName = 'ListRow';\n\nexport default ListRow;\n","/**\n * Format a number to a human-readable string with K, M, B suffixes\n */\nexport const formatNumber = (num: number): string => {\n if(num === 0) return '0';\n const absNum = Math.abs(num);\n const sign = num < 0 ? '-' : '';\n if(absNum >= 1000000000){\n return sign + (absNum / 1000000000).toFixed(2).replace(/\\.?0+$/, '') + 'B';\n }\n if(absNum >= 1000000){\n return sign + (absNum / 1000000).toFixed(2).replace(/\\.?0+$/, '') + 'M';\n }\n if(absNum >= 1000){\n return sign + (absNum / 1000).toFixed(2).replace(/\\.?0+$/, '') + 'K';\n }\n return sign + absNum.toString();\n};\n\n/**\n * Format a duration in minutes as \"Dd Hh\", \"Hh Mm\", \"Mm\", or \"<1m\" for fractional values.\n */\nexport const formatDuration = (minutes: number): string => {\n if(minutes <= 0) return '0m';\n if(minutes < 1) return '<1m';\n\n const totalMinutes = Math.floor(minutes);\n const hours = Math.floor(totalMinutes / 60);\n const mins = totalMinutes % 60;\n\n if(hours >= 24){\n const days = Math.floor(hours / 24);\n const remainingHours = hours % 24;\n return remainingHours > 0 ? `${days}d ${remainingHours}h` : `${days}d`;\n }\n if(hours > 0){\n return mins > 0 ? `${hours}h ${mins}m` : `${hours}h`;\n }\n return `${mins}m`;\n};\n\n/**\n * Format bytes to human-readable size string\n */\nexport const formatSize = (bytes: number): string => {\n if(bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.max(0, Math.floor(Math.log(bytes) / Math.log(k))), sizes.length - 1);\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * Format an unknown runtime value into a safe display string.\n */\nexport const formatUnknownValue = (value: unknown): string => {\n if(value === null || value === undefined) return '-';\n if(typeof value === 'string') return value;\n if(typeof value === 'number' || typeof value === 'bigint' || typeof value === 'boolean') {\n return String(value);\n }\n if(value instanceof Date) return value.toISOString();\n if(Array.isArray(value)){\n if(value.length === 0) return '[]';\n const preview = value.slice(0, 3).map(formatUnknownValue).join(', ');\n return value.length > 3 ? `[${preview}, ...]` : `[${preview}]`;\n }\n if(typeof value === 'object'){\n const entries = Object.entries(value as Record<string, unknown>);\n if(entries.length === 0) return '{}';\n const preview = entries\n .slice(0, 3)\n .map(([key, entry]) => `${key}: ${formatUnknownValue(entry)}`)\n .join(', ');\n return entries.length > 3 ? `{${preview}, ...}` : `{${preview}}`;\n }\n\n try{\n const serialized = JSON.stringify(value);\n return typeof serialized === 'string' ? serialized : String(value);\n }catch{\n return String(value);\n }\n};\n\n/**\n * Get nested value from object by dot-notation path\n */\nexport const getValueByPath = (obj: unknown, path: string): unknown => {\n if(!obj || typeof obj !== 'object') return undefined;\n const keys = path.split('.');\n let current: unknown = obj;\n for(const key of keys){\n if(current === null || current === undefined) return undefined;\n if(typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n};\n","import './Table.css';\nimport Skeleton from '../Skeleton';\nimport { forwardRef, useCallback } from 'react';\nimport { formatUnknownValue } from '@/shared/utils/format';\nimport type { Ref } from 'react';\n\nexport enum TableSortDirection {\n Ascending = 'ascending',\n Descending = 'descending',\n None = 'none'\n};\n\nexport interface Column<T> {\n key: string;\n header: string;\n render?: (row: T) => React.ReactNode;\n headerClassName?: string;\n cellClassName?: string;\n sortable?: boolean;\n};\n\ninterface TableProps<T> {\n columns: Column<T>[];\n data: T[];\n getRowKey: (row: T, index: number) => string | number;\n isLoading?: boolean;\n skeletonRows?: number;\n onRowClick?: (row: T) => void;\n rowClassName?: string | ((row: T) => string);\n className?: string;\n getAriaSort?: (column: Column<T>) => TableSortDirection;\n onSort?: (column: Column<T>) => void;\n caption?: string;\n};\n\nconst TableImpl = <T,>(\n {\n columns,\n data,\n getRowKey,\n isLoading = false,\n skeletonRows = 5,\n onRowClick,\n rowClassName,\n className = '',\n getAriaSort = () => TableSortDirection.None,\n onSort,\n caption\n }: TableProps<T>,\n ref: Ref<HTMLDivElement>\n) => {\n const getRowClass = useCallback((row: T): string => {\n const base = onRowClick ? 'clickable' : '';\n if (!rowClassName) return base;\n if (typeof rowClassName === 'string') return `${base} ${rowClassName}`;\n return `${base} ${rowClassName(row)}`;\n }, [onRowClick, rowClassName]);\n\n const renderSkeletonRows = () => (\n Array.from({ length: skeletonRows }).map((_, i) => (\n <tr key={`skeleton-${i}`} aria-hidden='true'>\n {columns.map((col) => (\n <td key={col.key}>\n <Skeleton variant='text' width='70%' height={20} animation='wave' />\n </td>\n ))}\n </tr>\n ))\n );\n\n const renderCell = (row: T, col: Column<T>) => {\n if (col.render) return col.render(row);\n return formatUnknownValue((row as Record<string, unknown>)[col.key]);\n };\n\n const renderHeaderCell = (col: Column<T>) => {\n if (!col.sortable || !onSort) {\n return col.header;\n }\n\n return (\n <button\n type='button'\n className='table-sort-button'\n onClick={() => onSort(col)}\n aria-label={`Sort by ${col.header}`}\n >\n {col.header}\n </button>\n );\n };\n\n return (\n <div ref={ref} className='table-scroll-wrapper'>\n <table className={`table ${className}`}>\n {caption && <caption className='table-caption'>{caption}</caption>}\n <thead>\n <tr>\n {columns.map((col) => (\n <th key={col.key} scope='col' className={col.headerClassName} aria-sort={getAriaSort(col)}>\n {renderHeaderCell(col)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {isLoading ? renderSkeletonRows() : (\n data.map((row, index) => (\n <tr\n key={getRowKey(row, index)}\n className={getRowClass(row)}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n >\n {columns.map((col) => (\n <td key={col.key} className={col.cellClassName}>\n {renderCell(row, col)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nconst Table = forwardRef(TableImpl) as (<T>(\n props: TableProps<T> & { ref?: Ref<HTMLDivElement> }\n) => ReturnType<typeof TableImpl>) & { displayName?: string };\n\nTable.displayName = 'Table';\n\nexport default Table;\n","import { cn } from '@/shared/utils/cn';\nimport './Timeline.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type TimelineTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';\n\nexport interface TimelineItemProps extends HTMLAttributes<HTMLLIElement> {\n icon?: ReactNode;\n tone?: TimelineTone;\n connector?: boolean;\n children?: ReactNode;\n}\n\n/** A single timeline entry — dot/icon column + content column. */\nexport const TimelineItem = forwardRef<HTMLLIElement, TimelineItemProps>(({\n icon,\n tone = 'neutral',\n connector = true,\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <li\n ref={ref}\n className={cn('volt-timeline-item', `volt-timeline-item--tone-${tone}`, className)}\n {...rest}\n >\n <span className='volt-timeline-item__rail' aria-hidden='true'>\n <span className='volt-timeline-item__dot'>{icon}</span>\n {connector && <span className='volt-timeline-item__line' />}\n </span>\n <div className='volt-timeline-item__content'>\n {children}\n </div>\n </li>\n );\n});\n\nTimelineItem.displayName = 'TimelineItem';\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n children?: ReactNode;\n}\n\n/** Vertical timeline container. Children should be `TimelineItem` instances. */\nconst Timeline = forwardRef<HTMLOListElement, TimelineProps>(({\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <ol ref={ref} className={cn('volt-timeline', className)} {...rest}>\n {children}\n </ol>\n );\n});\n\nTimeline.displayName = 'Timeline';\n\nexport default Timeline;\n","import { useId, useMemo } from 'react';\nimport { AreaChart, Area, YAxis, ResponsiveContainer } from 'recharts';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\n\nexport interface SparklineProps {\n color: string;\n values: number[];\n labels?: string[];\n yDomain?: { min: number; max: number };\n width?: number | `${number}%`;\n height?: number;\n strokeWidth?: number;\n fillOpacityStart?: number;\n fillOpacityEnd?: number;\n interpolation?: 'linear' | 'monotone';\n animate?: boolean;\n minDataMax?: number;\n};\n\ninterface SparklineDatum {\n label: string;\n value: number;\n};\n\nconst Sparkline = ({\n color,\n values,\n labels,\n yDomain,\n width = '100%',\n height = 80,\n strokeWidth = 2,\n fillOpacityStart = 0.25,\n fillOpacityEnd = 0.25,\n interpolation = 'linear',\n animate,\n minDataMax\n}: SparklineProps) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const gradientId = useId();\n const fillId = `${gradientId}-sparkline-fill`;\n\n const chartData = useMemo<SparklineDatum[]>(() => {\n if (!values.length) {\n return [{ label: '', value: 0 }, { label: '', value: 0 }];\n }\n if (values.length === 1) {\n const only = Number.isFinite(values[0]) ? values[0] : 0;\n return [{ label: labels?.[0] ?? '', value: only }, { label: labels?.[0] ?? '', value: only }];\n }\n const length = Math.max(labels?.length || 0, values.length);\n return Array.from({ length }, (_, i) => {\n const raw = Number(values[i]);\n return {\n label: labels?.[i] ?? '',\n value: Number.isFinite(raw) ? raw : 0\n };\n });\n }, [values, labels]);\n\n const yAxisDomain: [number | string | ((v: number) => number), number | string | ((v: number) => number)] = yDomain\n ? [yDomain.min, yDomain.max]\n : minDataMax !== undefined\n ? ['dataMin', (max: number) => Math.max(max, minDataMax)]\n : ['auto', 'auto'];\n\n const isAnimationActive = animate !== undefined ? animate : !prefersReducedMotion;\n\n return (\n <ResponsiveContainer width={width} height={height}>\n <AreaChart\n data={chartData}\n margin={{ top: 2, right: 0, left: 0, bottom: 0 }}\n >\n <defs>\n <linearGradient id={fillId} x1='0' y1='0' x2='0' y2='1'>\n <stop offset='0%' stopColor={color} stopOpacity={fillOpacityStart} />\n <stop offset='100%' stopColor={color} stopOpacity={fillOpacityEnd} />\n </linearGradient>\n </defs>\n <YAxis hide domain={yAxisDomain} />\n <Area\n type={interpolation}\n dataKey='value'\n stroke={color}\n strokeWidth={strokeWidth}\n fill={`url(#${fillId})`}\n fillOpacity={1}\n dot={false}\n activeDot={false}\n isAnimationActive={isAnimationActive}\n />\n </AreaChart>\n </ResponsiveContainer>\n );\n};\n\nexport default Sparkline;\n","import './Callout.css';\nimport Button from '@/shared/presentation/primitives/Button';\nimport Heading from '@/shared/presentation/primitives/Heading';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport Text from '@/shared/presentation/primitives/Text';\nimport { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\nexport type CalloutTone = 'danger' | 'warning' | 'info' | 'success';\n\ntype ButtonIntent = 'neutral' | 'brand' | 'danger' | 'success';\n\ninterface CalloutAction {\n label: string;\n onClick: () => void;\n icon?: ReactNode;\n isLoading?: boolean;\n disabled?: boolean;\n};\n\ninterface CalloutProps {\n tone: CalloutTone;\n title?: string;\n description?: string;\n message?: ReactNode;\n icon?: ReactNode;\n action?: CalloutAction;\n children?: ReactNode;\n className?: string;\n ariaLabel?: string;\n role?: string;\n ariaLive?: 'off' | 'polite' | 'assertive';\n};\n\nconst toneToIntent: Record<CalloutTone, ButtonIntent> = {\n danger: 'danger',\n warning: 'neutral',\n info: 'brand',\n success: 'success'\n};\n\nconst Callout = forwardRef<HTMLDivElement, CalloutProps>(({\n tone,\n title,\n description,\n message,\n icon,\n action,\n children,\n className,\n ariaLabel,\n role,\n ariaLive\n}, ref) => {\n const hasHeaderContent = Boolean(title || description);\n const layout = hasHeaderContent ? 'stacked' : 'inline';\n\n const resolvedRole = role ?? (hasHeaderContent ? 'region' : 'status');\n const resolvedAriaLive = ariaLive ?? (hasHeaderContent ? undefined : 'polite');\n const resolvedAriaLabel = ariaLabel ?? title;\n\n const classes = cn(\n 'volt-callout',\n `volt-callout--tone-${tone}`,\n `volt-callout--layout-${layout}`,\n className\n );\n\n if (layout === 'inline') {\n return (\n <div\n ref={ref}\n className={classes}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n aria-label={resolvedAriaLabel}\n >\n <Row gap='05' className='font-size-2'>\n {icon && <span className='volt-callout__icon'>{icon}</span>}\n <div className='volt-callout__body'>\n {message ?? children}\n </div>\n </Row>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n aria-label={resolvedAriaLabel}\n >\n <Row justify='between' gap='1'>\n <Stack gap='025'>\n {title && (\n <Heading level={2} size='md' weight='bold'>\n {title}\n </Heading>\n )}\n {description && (\n <Text as='p' tone='muted' size='sm'>\n {description}\n </Text>\n )}\n {children}\n </Stack>\n {action && (\n <Button\n intent={toneToIntent[tone]}\n variant='outline'\n size='sm'\n leftIcon={action.icon}\n onClick={action.onClick}\n isLoading={action.isLoading}\n disabled={action.disabled}\n >\n {action.label}\n </Button>\n )}\n </Row>\n </div>\n );\n});\n\nCallout.displayName = 'Callout';\n\nexport default Callout;\n","import Button from '@/shared/presentation/primitives/Button';\nimport Heading from '@/shared/presentation/primitives/Heading';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './EmptyState.css';\nimport { forwardRef, useId } from 'react';\nimport type { ReactNode } from 'react';\n\ninterface EmptyStateProps {\n title: string;\n description: string;\n icon?: ReactNode;\n buttonText?: string;\n buttonOnClick?: () => void;\n buttonIsLoading?: boolean;\n className?: string;\n headingLevel?: 'h1' | 'h2' | 'h3';\n announce?: boolean;\n};\n\nconst EmptyState = forwardRef<HTMLElement, EmptyStateProps>(({\n title,\n description,\n icon,\n buttonText,\n buttonOnClick,\n buttonIsLoading = false,\n className,\n headingLevel = 'h2',\n announce = false\n}, ref) => {\n const headingId = useId();\n const level = Number(headingLevel.slice(1)) as 1 | 2 | 3;\n\n return (\n <section ref={ref} aria-labelledby={headingId} className={`d-flex items-center content-center w-max h-max empty-state-container ${className || ''}`}>\n <Stack align='center' gap='1-5' textAlign='center' className='empty-state-content'>\n {announce && (\n <span className='empty-state-live-region' aria-live='polite' aria-atomic='true'>\n {title}. {description}\n </span>\n )}\n {icon && (\n <Stack align='center' justify='center' className='empty-state-icon color-muted'>\n {icon}\n </Stack>\n )}\n\n <Stack gap='05' textAlign='center'>\n <Heading level={level} id={headingId}>\n {title}\n </Heading>\n <Text size='md' tone='secondary' lineHeight='5'>{description}</Text>\n </Stack>\n\n {buttonText && buttonOnClick && (\n <Button\n variant='solid'\n intent='brand'\n size='sm'\n onClick={buttonOnClick}\n isLoading={buttonIsLoading}\n className='mt-05'\n >\n {buttonText}\n </Button>\n )}\n </Stack>\n </section>\n );\n});\n\nEmptyState.displayName = 'EmptyState';\n\nexport default EmptyState;\n","import './Toast.css';\nimport CloseButton from '../CloseButton';\nimport IconFrame from '../IconFrame';\nimport Row from '../Row';\nimport Stack from '../Stack';\nimport Surface from '../Surface';\nimport Text from '../Text';\nimport { cn } from '@/shared/utils/cn';\nimport { Bell, CircleAlert, CircleCheck, Info, TriangleAlert } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nexport type ToastTone = StatusTone;\n\nexport interface ToastProps {\n /** Semantic tone — drives the default icon, tint and aria-live politeness. */\n tone?: ToastTone;\n /** Optional bold heading shown above the message. */\n title?: ReactNode;\n /** Primary body content. Required. */\n message: ReactNode;\n /** Override the default tone icon. Pass `null` to hide it entirely. */\n icon?: ReactNode;\n /** When provided, renders a dismiss (close) button wired to this handler. */\n onDismiss?: () => void;\n /** Optional trailing action node (e.g. a Button or link). */\n action?: ReactNode;\n /** Accessible label for the dismiss button. */\n dismissLabel?: string;\n /**\n * Override the live-region politeness. Defaults to `assertive` for\n * `danger`, `polite` otherwise.\n */\n ariaLive?: 'polite' | 'assertive' | 'off';\n className?: string;\n}\n\nconst DEFAULT_TONE_ICON: Record<ToastTone, ReactNode> = {\n neutral: <Bell size={18} />,\n brand: <Info size={18} />,\n success: <CircleCheck size={18} />,\n warning: <TriangleAlert size={18} />,\n danger: <CircleAlert size={18} />,\n info: <Info size={18} />\n};\n\n/**\n * Presentational toast / notification unit. This is the visual surface the\n * app's `AppToaster` system renders — it owns no timers, no portal and no\n * stacking; it is a pure, accessible building block.\n *\n * Composes {@link Surface} (elevated card), {@link IconFrame} (tinted tone\n * glyph), {@link Text} and {@link CloseButton}.\n */\nconst Toast = forwardRef<HTMLDivElement, ToastProps>(({\n tone = 'neutral',\n title,\n message,\n icon,\n onDismiss,\n action,\n dismissLabel = 'Dismiss notification',\n ariaLive,\n className\n}, ref) => {\n const resolvedAriaLive = ariaLive ?? (tone === 'danger' ? 'assertive' : 'polite');\n const showIcon = icon !== null;\n const resolvedIcon = icon ?? DEFAULT_TONE_ICON[tone];\n\n return (\n <Surface\n ref={ref}\n variant='elevated'\n role='status'\n aria-live={resolvedAriaLive}\n aria-atomic='true'\n className={cn('volt-toast', `volt-toast--tone-${tone}`, className)}\n >\n <Row align='start' gap='075' className='volt-toast__layout'>\n {showIcon && (\n <IconFrame tone={tone} size='sm' className='volt-toast__icon'>\n {resolvedIcon}\n </IconFrame>\n )}\n\n <Stack gap='025' className='volt-toast__body'>\n {title && (\n <Text as='p' size='sm' weight='semibold' tone='primary'>\n {title}\n </Text>\n )}\n <Text as='div' size='sm' tone={title ? 'secondary' : 'primary'}>\n {message}\n </Text>\n {action && (\n <Row gap='05' className='volt-toast__actions'>\n {action}\n </Row>\n )}\n </Stack>\n\n {onDismiss && (\n <div className='volt-toast__dismiss'>\n <CloseButton onClick={onDismiss} aria-label={dismissLabel} />\n </div>\n )}\n </Row>\n </Surface>\n );\n});\n\nToast.displayName = 'Toast';\n\nexport default Toast;\n","import { cn } from '@/shared/utils/cn';\nimport './ThinkingDots.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport interface ThinkingDotsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'role'> {\n label?: string;\n size?: 'sm' | 'md';\n}\n\n/**\n * Three-dot typing indicator (chat/AI \"thinking\" state).\n * Renders a visually-hidden label for assistive tech.\n */\nconst ThinkingDots = forwardRef<HTMLSpanElement, ThinkingDotsProps>(({\n label = 'Thinking',\n size = 'md',\n className,\n ...rest\n}, ref) => {\n return (\n <span\n ref={ref}\n role='status'\n aria-live='polite'\n className={cn('volt-thinking-dots', `volt-thinking-dots--${size}`, className)}\n {...rest}\n >\n <span className='sr-only'>{label}</span>\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n </span>\n );\n});\n\nThinkingDots.displayName = 'ThinkingDots';\n\nexport default ThinkingDots;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport './ProgressBar.css';\nimport { forwardRef, useId, useRef } from 'react';\nimport { STATUS_TONE_VARS } from '../types';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nconst MISSING_PROGRESS_NAME_WARNING =\n 'ProgressBar requires an accessible name via `label`, `aria-label`, or `aria-labelledby`.';\n\nexport type ProgressBarSize = 'sm' | 'md';\n\ninterface ProgressBarStyle extends CSSProperties {\n '--progress-fill'?: string;\n '--progress-value'?: string;\n}\n\nexport interface ProgressBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Completion in the range 0–100. Clamped. Ignored when `indeterminate`. */\n value?: number;\n /** Semantic color of the fill. @default 'brand' */\n tone?: StatusTone;\n /** Track / fill thickness. @default 'md' */\n size?: ProgressBarSize;\n /** Visible label rendered above the track and used as the accessible name. */\n label?: ReactNode;\n /** Render the numeric percentage next to the label. @default false */\n showValue?: boolean;\n /** Animate an undetermined-duration bar; drops `aria-valuenow`. @default false */\n indeterminate?: boolean;\n}\n\nconst clampPercent = (value: number): number => {\n if (Number.isNaN(value)) return 0;\n if (value < 0) return 0;\n if (value > 100) return 100;\n return value;\n};\n\n/**\n * Linear determinate (or indeterminate) progress indicator.\n *\n * Track uses `--color-surface-2/3`; the fill resolves from the {@link StatusTone}\n * via {@link STATUS_TONE_VARS}, defaulting to `--color-brand-primary`. Replaces the\n * hand-rolled bars in `ProcessingLoader` and `TrajectoryUploadProgressPanel`.\n */\nconst ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(({\n value = 0,\n tone = 'brand',\n size = 'md',\n label,\n showValue = false,\n indeterminate = false,\n className,\n id,\n style,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const generatedId = useId();\n const labelId = `${generatedId}-label`;\n\n const percent = clampPercent(value);\n const rounded = Math.round(percent);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const hasVisibleLabel = label !== undefined && label !== null && label !== false;\n\n // The visible label, when present, becomes the accessible name via aria-labelledby.\n const computedLabelledBy = resolvedAriaLabelledBy ?? (hasVisibleLabel ? labelId : undefined);\n\n if (!computedLabelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_PROGRESS_NAME_WARNING);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const fill = tone === 'brand' ? 'var(--color-brand-primary)' : STATUS_TONE_VARS[tone].fg;\n\n const resolvedStyle: ProgressBarStyle = {\n ...style,\n '--progress-fill': fill,\n '--progress-value': `${percent}%`\n };\n\n const classes = cn(\n 'volt-progress',\n `volt-progress--size-${size}`,\n indeterminate && 'volt-progress--indeterminate'\n );\n\n const showHeader = hasVisibleLabel || (showValue && !indeterminate);\n\n return (\n <div className={cn('volt-progress-root', className)}>\n {showHeader && (\n <Row justify='between' align='center' gap='05' className='volt-progress-header'>\n {hasVisibleLabel\n ? <Text as='span' id={labelId} size='sm' tone='secondary'>{label}</Text>\n : <span />}\n {showValue && !indeterminate && (\n <Text as='span' size='sm' tone='muted' className='volt-progress-value'>\n {rounded}%\n </Text>\n )}\n </Row>\n )}\n\n <div\n ref={ref}\n id={id}\n role='progressbar'\n className={classes}\n style={resolvedStyle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={computedLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n aria-valuenow={indeterminate ? undefined : rounded}\n aria-valuetext={indeterminate ? undefined : `${rounded}%`}\n aria-busy={indeterminate || undefined}\n {...rest}\n >\n <div className='volt-progress-fill' aria-hidden='true' />\n </div>\n </div>\n );\n});\n\nProgressBar.displayName = 'ProgressBar';\n\nexport default ProgressBar;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport './Meter.css';\nimport { forwardRef, useId, useRef } from 'react';\nimport { STATUS_TONE_VARS } from '../types';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nconst MISSING_METER_NAME_WARNING =\n 'Meter requires an accessible name via `label`, `aria-label`, or `aria-labelledby`.';\n\ninterface MeterStyle extends CSSProperties {\n '--progress-fill'?: string;\n '--progress-value'?: string;\n}\n\nexport interface MeterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Measured value, between `min` and `max`. Clamped. */\n value: number;\n /** Lower bound of the range. @default 0 */\n min?: number;\n /** Upper bound of the range. @default 100 */\n max?: number;\n /** Semantic color of the fill. @default 'brand' */\n tone?: StatusTone;\n /** Inline leading label, also used as the accessible name. */\n label?: ReactNode;\n /** Render the value (formatted by `formatValue`) at the trailing edge. @default false */\n showValue?: boolean;\n /** Formats the trailing value text; defaults to the raw number. */\n formatValue?: (value: number, min: number, max: number) => ReactNode;\n}\n\nconst clamp = (value: number, min: number, max: number): number => {\n if (Number.isNaN(value)) return min;\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\n/**\n * Compact inline gauge for a known-range scalar (e.g. quota, utilization,\n * confidence). A `role=\"meter\"` sibling of {@link default ProgressBar}: shares the\n * track/fill visual but expresses a measurement rather than task completion.\n */\nconst Meter = forwardRef<HTMLDivElement, MeterProps>(({\n value,\n min = 0,\n max = 100,\n tone = 'brand',\n label,\n showValue = false,\n formatValue,\n className,\n id,\n style,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const generatedId = useId();\n const labelId = `${generatedId}-label`;\n\n const safeMax = max > min ? max : min + 1;\n const clamped = clamp(value, min, safeMax);\n const percent = ((clamped - min) / (safeMax - min)) * 100;\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const hasVisibleLabel = label !== undefined && label !== null && label !== false;\n const computedLabelledBy = resolvedAriaLabelledBy ?? (hasVisibleLabel ? labelId : undefined);\n\n if (!computedLabelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_METER_NAME_WARNING);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const fill = tone === 'brand' ? 'var(--color-brand-primary)' : STATUS_TONE_VARS[tone].fg;\n\n const resolvedStyle: MeterStyle = {\n ...style,\n '--progress-fill': fill,\n '--progress-value': `${percent}%`\n };\n\n const formattedValue = formatValue ? formatValue(clamped, min, safeMax) : clamped;\n\n return (\n <Row\n align='center'\n gap='05'\n className={cn('volt-meter', className)}\n >\n {hasVisibleLabel && (\n <Text as='span' id={labelId} size='sm' tone='secondary' className='volt-meter-label'>\n {label}\n </Text>\n )}\n\n <div\n ref={ref}\n id={id}\n role='meter'\n className='volt-meter-track'\n style={resolvedStyle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={computedLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-valuemin={min}\n aria-valuemax={safeMax}\n aria-valuenow={clamped}\n {...rest}\n >\n <div className='volt-meter-fill' aria-hidden='true' />\n </div>\n\n {showValue && (\n <Text as='span' size='sm' tone='muted' className='volt-meter-value'>\n {formattedValue}\n </Text>\n )}\n </Row>\n );\n});\n\nMeter.displayName = 'Meter';\n\nexport default Meter;\n","import type { ReactNode } from 'react';\n\nexport interface AsyncBoundaryState {\n loading?: boolean;\n error?: unknown;\n accessDenied?: boolean;\n /** When empty is true, the `empty` slot renders instead of children. */\n empty?: boolean;\n}\n\nexport interface AsyncBoundaryProps {\n state: AsyncBoundaryState;\n loading: ReactNode;\n error: (err: unknown) => ReactNode;\n accessDenied?: ReactNode;\n empty?: ReactNode;\n children: ReactNode;\n}\n\n/**\n * Renders the appropriate fallback based on async state. Consolidates the\n * loading → error → access-denied → empty → content switch hand-rolled in\n * every data-backed panel.\n *\n * The `error` slot is a function so callers can decide how to derive\n * retry/description from the error value.\n */\nconst AsyncBoundary = ({\n state,\n loading,\n error,\n accessDenied,\n empty,\n children\n}: AsyncBoundaryProps) => {\n if (state.accessDenied && accessDenied) return <>{accessDenied}</>;\n if (state.error !== undefined && state.error !== null) return <>{error(state.error)}</>;\n if (state.loading) return <>{loading}</>;\n if (state.empty && empty !== undefined) return <>{empty}</>;\n return <>{children}</>;\n};\n\nexport default AsyncBoundary;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n as?: ElementType;\n children?: ReactNode;\n}\n\n/**\n * Screen-reader-only wrapper. Hides its children visually but keeps them\n * reachable by assistive technology. Maps to the `.sr-only` utility.\n */\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'span') as ElementType;\n return (\n <Component ref={ref as Ref<HTMLElement>} className={cn('sr-only', className)} {...rest}>\n {children}\n </Component>\n );\n});\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n\nexport default VisuallyHidden;\n"]}
1
+ {"version":3,"sources":["../src/shared/presentation/primitives/types.ts","../src/shared/presentation/primitives/buildBoxClasses.ts","../src/shared/utils/cn.ts","../src/shared/presentation/primitives/typography.ts","../src/shared/presentation/primitives/Box/index.tsx","../src/shared/presentation/primitives/Stack/index.tsx","../src/shared/presentation/primitives/Row/index.tsx","../src/shared/presentation/primitives/Grid/index.tsx","../src/shared/presentation/primitives/Surface/index.tsx","../src/shared/presentation/primitives/Divider/index.tsx","../src/shared/presentation/primitives/Text/index.tsx","../src/shared/presentation/primitives/Heading/index.tsx","../src/shared/presentation/primitives/SectionLabel/index.tsx","../src/shared/presentation/primitives/Loader/index.tsx","../src/shared/presentation/primitives/Button/index.tsx","../src/shared/presentation/primitives/IconButton/index.tsx","../src/shared/presentation/primitives/CloseButton/index.tsx","../src/shared/presentation/primitives/SearchInput/index.tsx","../src/shared/presentation/contexts/FloatingRootContext.tsx","../src/shared/presentation/primitives/Select/floating-layer.ts","../src/shared/presentation/primitives/Select/index.tsx","../src/shared/presentation/hooks/use-media.ts","../src/shared/presentation/hooks/use-prefers-reduced-motion.ts","../src/shared/presentation/primitives/SegmentedTabs/index.tsx","../src/shared/presentation/primitives/Slider/index.tsx","../src/shared/presentation/primitives/LiquidToggle/index.tsx","../src/shared/presentation/primitives/Stepper/index.tsx","../src/shared/presentation/primitives/TextInput/index.tsx","../src/shared/presentation/primitives/Textarea/index.tsx","../src/shared/presentation/primitives/NumberInput/index.tsx","../src/shared/presentation/primitives/FormField/index.tsx","../src/shared/presentation/primitives/Checkbox/index.tsx","../src/shared/presentation/primitives/Radio/index.tsx","../src/shared/presentation/primitives/Tabs/index.tsx","../src/shared/presentation/primitives/Breadcrumbs/index.tsx","../src/shared/presentation/primitives/CollapsibleSection/index.tsx","../src/shared/presentation/primitives/Modal/index.tsx","../src/shared/presentation/utilities/compose-refs.ts","../src/shared/presentation/primitives/Popover/index.tsx","../src/shared/presentation/primitives/PopoverMenu/index.tsx","../src/shared/presentation/primitives/PopoverMenuItem/index.tsx","../src/shared/presentation/primitives/Menu/index.tsx","../src/shared/presentation/primitives/Tooltip/index.tsx","../src/shared/presentation/primitives/CursorTooltip/index.tsx","../src/shared/presentation/primitives/FloatingToolbar/index.tsx","../src/shared/presentation/primitives/Tag/index.tsx","../src/shared/presentation/primitives/StatusBadge/index.tsx","../src/shared/presentation/primitives/StatusDot/index.tsx","../src/shared/presentation/primitives/InlineStatus/index.tsx","../src/shared/presentation/primitives/SaveStatusIndicator/index.tsx","../src/shared/utils/user.ts","../src/shared/presentation/primitives/Avatar/index.tsx","../src/shared/presentation/primitives/AvatarStack/index.tsx","../src/shared/presentation/primitives/IconFrame/index.tsx","../src/shared/presentation/primitives/Card/index.tsx","../src/shared/presentation/primitives/Skeleton/index.tsx","../src/shared/presentation/primitives/StatCard/index.tsx","../src/shared/presentation/primitives/SelectableCard/index.tsx","../src/shared/presentation/primitives/DashedActionBox/index.tsx","../node_modules/sileo/dist/cc-B6peeNak.mjs","../node_modules/sileo/dist/index.mjs","../src/shared/presentation/utilities/copy-to-clipboard.ts","../src/shared/presentation/primitives/KeyValueList/index.tsx","../src/shared/presentation/primitives/ListRow/index.tsx","../src/shared/utils/format.ts","../src/shared/presentation/primitives/Table/index.tsx","../src/shared/presentation/primitives/Timeline/index.tsx","../src/shared/presentation/primitives/Sparkline/index.tsx","../src/shared/presentation/primitives/Callout/index.tsx","../src/shared/presentation/primitives/EmptyState/index.tsx","../src/shared/presentation/primitives/Toast/index.tsx","../src/shared/presentation/primitives/ThinkingDots/index.tsx","../src/shared/presentation/primitives/ProgressBar/index.tsx","../src/shared/presentation/primitives/Meter/index.tsx","../src/shared/presentation/primitives/AsyncBoundary/index.tsx","../src/shared/presentation/primitives/VisuallyHidden/index.tsx","../src/shared/presentation/hooks/use-stepper.ts","../src/shared/presentation/hooks/use-infinite-scroll.ts","../src/shared/presentation/hooks/use-keyboard-shortcut.ts"],"names":["alignMap","size","forwardRef","Stack","jsx","Row","Grid","jsxs","useRef","Children","useId","Fragment","useState","useEffect","SegmentedTabs","useMemo","useCallback","Stepper","motion","tabId","panelId","clamp","createContext","useContext","ChevronDown","memo","React","useLayoutEffect","useFloating","offset","flip","shift","autoUpdate","useClick","useDismiss","useRole","useInteractions","FloatingPortal","FloatingFocusManager","isValidElement","cloneElement","Check","Plus","Link","TableSortDirection","next"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Shared design tokens for Volt primitives.\n *\n * These tokens map 1:1 to utility classes already declared in\n * `src/shared/presentation/assets/stylesheets/general.css` and `base.css`.\n * Primitives MUST NOT emit classes whose CSS definitions don't exist.\n */\n\nexport type Display = 'flex' | 'grid' | 'block' | 'none';\n\nexport type FlexDirection = 'row' | 'column' | 'row-reverse';\n\nexport type AlignItems = 'start' | 'center' | 'end';\n\nexport type JustifyContent = 'start' | 'center' | 'end' | 'between' | 'around';\n\nexport type GapToken =\n | '01' | '02' | '025' | '035' | '05' | '075'\n | '1' | '1-5' | '2' | '3';\n\nexport type PaddingToken = '0' | '025' | '05' | '075' | '1' | '1-5' | '2' | '3';\n\nexport type PaddingXToken = '1';\n\nexport type MarginTopToken = '05' | '1' | '3';\n\nexport type MarginBottomToken = '1-5' | '3';\n\nexport type MarginXToken = 'auto';\n\nexport type RadiusToken = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport type BorderToken = 'soft' | 'none' | 'bottom-soft' | 'top-soft';\n\nexport type PositionToken = 'relative' | 'sticky' | 'absolute' | 'fixed';\n\nexport type OverflowToken =\n | 'auto' | 'hidden'\n | 'x-auto' | 'x-scroll'\n | 'y-auto' | 'y-scroll';\n\nexport type WidthToken = 'max' | '50' | 'vw-max';\n\nexport type HeightToken = 'max' | 'vh-max';\n\nexport type FlexToken = '1';\n\nexport type TransitionToken = 'fast' | 'normal';\n\n/**\n * Typography tokens. These match `font-size-*` / `font-weight-*` / `color-*`\n * utilities declared in `general.css`.\n */\nexport type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\nexport type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';\n\nexport type TextTone = 'primary' | 'secondary' | 'muted' | 'muted-foreground';\n\nexport type TextAlign = 'left' | 'center' | 'right';\n\nexport type SurfaceVariant =\n | 'primary' // primary-surface\n | 'glass' // glass-bg\n | 'elevated' // card-elevated\n | 'danger' // zone-danger\n | 'warning'; // zone-warning\n\n/**\n * Canonical semantic tone shared by every status/feedback primitive\n * (Tag, StatusBadge, StatusDot, InlineStatus, IconFrame, Callout, StatCard, Timeline).\n * Maps 1:1 to the `--status-*` / accent tokens and the `.color-*` text utilities.\n */\nexport type StatusTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\n\n/** Canonical control size scale shared by interactive primitives. */\nexport type ControlSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Canonical shape vocabulary shared by button-like / chip-like primitives. */\nexport type Shape = 'rounded' | 'pill' | 'square' | 'circle';\n\n/**\n * Resolves a {@link StatusTone} to the CSS custom properties that express it.\n * Single source of truth so primitives stop hardcoding per-tone colors.\n */\nexport const STATUS_TONE_VARS: Record<StatusTone, { fg: string; bg: string; border: string }> = {\n neutral: { fg: 'var(--color-text-secondary)', bg: 'var(--color-surface-2)', border: 'var(--color-border-soft)' },\n brand: { fg: 'var(--color-brand-primary)', bg: 'color-mix(in srgb, var(--color-brand-primary) 12%, transparent)', border: 'color-mix(in srgb, var(--color-brand-primary) 24%, transparent)' },\n success: { fg: 'var(--status-success)', bg: 'var(--status-success-bg)', border: 'var(--status-success-border)' },\n warning: { fg: 'var(--status-warning)', bg: 'var(--status-warning-bg)', border: 'var(--status-warning-border)' },\n danger: { fg: 'var(--status-error)', bg: 'var(--status-error-bg)', border: 'var(--status-error-border)' },\n info: { fg: 'var(--status-info)', bg: 'var(--status-info-bg)', border: 'var(--status-info-border)' }\n};\n","import type {\n Display,\n FlexDirection,\n AlignItems,\n JustifyContent,\n GapToken,\n PaddingToken,\n PaddingXToken,\n MarginTopToken,\n MarginBottomToken,\n MarginXToken,\n RadiusToken,\n BorderToken,\n PositionToken,\n OverflowToken,\n WidthToken,\n HeightToken,\n FlexToken,\n TransitionToken,\n TextAlign\n} from './types';\n\n/**\n * Style-related props shared by all box-like primitives: `Box`, `Stack`, `Row`,\n * `Surface`, `Card`, `Alert`, etc.\n *\n * Every value maps to an existing CSS utility class. Unknown values are never\n * emitted so we don't produce dead classnames.\n */\nexport interface BoxStyleProps {\n display?: Display;\n direction?: FlexDirection;\n align?: AlignItems;\n justify?: JustifyContent;\n wrap?: boolean;\n gap?: GapToken;\n\n p?: PaddingToken;\n px?: PaddingXToken;\n\n m?: '0';\n mt?: MarginTopToken;\n mb?: MarginBottomToken;\n mx?: MarginXToken;\n\n radius?: RadiusToken;\n border?: BorderToken;\n position?: PositionToken;\n overflow?: OverflowToken;\n\n width?: WidthToken;\n height?: HeightToken;\n flex?: FlexToken;\n\n textAlign?: TextAlign;\n\n shrink?: '0';\n minH?: '0';\n minW?: '0';\n\n inset?: '0';\n top?: '0' | '1';\n left?: '0' | '1';\n bottom?: '0' | '1';\n right?: '0' | '1';\n\n zIndex?: '5' | '10' | '20';\n\n transition?: TransitionToken;\n cursor?: 'pointer';\n selectNone?: boolean;\n}\n\nconst alignMap: Record<AlignItems, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end'\n};\n\nconst justifyMap: Record<JustifyContent, string> = {\n start: '',\n center: 'content-center',\n end: 'content-end',\n between: 'content-between',\n around: 'content-around'\n};\n\nconst displayMap: Record<Display, string> = {\n flex: 'd-flex',\n grid: 'd-grid',\n block: 'd-block',\n none: 'd-none'\n};\n\nconst directionMap: Record<FlexDirection, string> = {\n row: '',\n column: 'column',\n 'row-reverse': 'row-reverse'\n};\n\nconst textAlignMap: Record<TextAlign, string> = {\n left: '',\n center: 'text-center',\n right: 'text-right'\n};\n\nconst borderMap: Record<BorderToken, string> = {\n soft: 'b-soft',\n none: 'b-none',\n 'bottom-soft': 'border-bottom-soft',\n 'top-soft': 'border-top-soft'\n};\n\nconst widthMap: Record<WidthToken, string> = {\n max: 'w-max',\n '50': 'w-50',\n 'vw-max': 'wh-max'\n};\n\nconst heightMap: Record<HeightToken, string> = {\n max: 'h-max',\n 'vh-max': 'vh-max'\n};\n\nexport const buildBoxClasses = (props: BoxStyleProps): string[] => {\n const classes: string[] = [];\n\n if (props.display) classes.push(displayMap[props.display]);\n if (props.direction) {\n const directionClass = directionMap[props.direction];\n if (directionClass) classes.push(directionClass);\n }\n if (props.align) classes.push(alignMap[props.align]);\n if (props.justify) {\n const justifyClass = justifyMap[props.justify];\n if (justifyClass) classes.push(justifyClass);\n }\n if (props.wrap) classes.push('flex-wrap');\n if (props.gap) classes.push(`gap-${props.gap}`);\n\n if (props.p !== undefined) classes.push(`p-${props.p}`);\n if (props.px) classes.push(`px-${props.px}`);\n\n if (props.m !== undefined) classes.push(`m-${props.m}`);\n if (props.mt) classes.push(`mt-${props.mt}`);\n if (props.mb) classes.push(`mb-${props.mb}`);\n if (props.mx) classes.push(`mx-${props.mx}`);\n\n if (props.radius) classes.push(`radius-${props.radius}`);\n if (props.border) classes.push(borderMap[props.border]);\n if (props.position) classes.push(`p-${props.position}`);\n if (props.overflow) classes.push(`${props.overflow}`.includes('-') ? props.overflow : `overflow-${props.overflow}`);\n\n if (props.width) classes.push(widthMap[props.width]);\n if (props.height) classes.push(heightMap[props.height]);\n if (props.flex) classes.push(`flex-${props.flex}`);\n\n if (props.textAlign) {\n const taClass = textAlignMap[props.textAlign];\n if (taClass) classes.push(taClass);\n }\n\n if (props.shrink === '0') classes.push('f-shrink-0');\n if (props.minH === '0') classes.push('min-h-0');\n if (props.minW === '0') classes.push('min-w-0');\n\n if (props.inset === '0') classes.push('inset-0');\n if (props.top !== undefined) classes.push(`top-${props.top}`);\n if (props.left !== undefined) classes.push(`left-${props.left}`);\n if (props.bottom !== undefined) classes.push(`bottom-${props.bottom}`);\n if (props.right !== undefined) classes.push(`right-${props.right}`);\n\n if (props.zIndex) classes.push(`z-${props.zIndex}`);\n\n if (props.transition) classes.push(`transition-${props.transition}`);\n if (props.cursor === 'pointer') classes.push('cursor-pointer');\n if (props.selectNone) classes.push('u-select-none');\n\n return classes;\n};\n\n/**\n * Keys of `BoxStyleProps`. Used by primitives to strip style-only props\n * from the rest passed through to the DOM element.\n */\nexport const BOX_STYLE_KEYS = [\n 'display', 'direction', 'align', 'justify', 'wrap', 'gap',\n 'p', 'px', 'm', 'mt', 'mb', 'mx',\n 'radius', 'border', 'position', 'overflow',\n 'width', 'height', 'flex',\n 'textAlign',\n 'shrink', 'minH', 'minW',\n 'inset', 'top', 'left', 'bottom', 'right',\n 'zIndex',\n 'transition', 'cursor', 'selectNone'\n] as const;\n\nexport const splitBoxProps = <T extends BoxStyleProps>(props: T): {\n styleProps: BoxStyleProps;\n rest: Omit<T, keyof BoxStyleProps>;\n} => {\n const styleProps: Record<string, unknown> = {};\n const rest: Record<string, unknown> = {};\n\n for (const key of Object.keys(props)) {\n if ((BOX_STYLE_KEYS as readonly string[]).includes(key)) {\n styleProps[key] = (props as Record<string, unknown>)[key];\n } else {\n rest[key] = (props as Record<string, unknown>)[key];\n }\n }\n\n return {\n styleProps: styleProps as BoxStyleProps,\n rest: rest as Omit<T, keyof BoxStyleProps>\n };\n};\n","type ClassValue = string | boolean | undefined | null;\n\nexport const cn = (...classes: ClassValue[]): string => {\n return classes.filter(Boolean).join(' ');\n};\n","import { cn } from '@/shared/utils/cn';\nimport type { TextAlign, TextSize, TextTone, TextWeight } from './types';\n\nconst sizeMap: Record<TextSize, string> = {\n xs: 'font-size-05',\n sm: 'font-size-1',\n md: 'font-size-2',\n lg: 'font-size-3',\n xl: 'font-size-4',\n '2xl': 'font-size-5',\n '3xl': 'font-size-6'\n};\n\nconst weightMap: Record<TextWeight, string> = {\n regular: 'font-weight-4',\n medium: 'font-weight-5',\n semibold: 'font-weight-5-5',\n bold: 'font-weight-6'\n};\n\nconst toneMap: Record<TextTone, string> = {\n primary: 'color-primary',\n secondary: 'color-secondary',\n muted: 'color-muted',\n 'muted-foreground': 'color-muted-foreground'\n};\n\nconst alignMap: Record<TextAlign, string> = {\n left: '',\n center: 'text-center',\n right: 'text-right'\n};\n\ninterface TypographyClassOptions {\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n align?: TextAlign;\n truncate?: boolean;\n lineHeight?: '5';\n className?: string;\n}\n\nexport const buildTypographyClasses = ({\n size,\n weight,\n tone,\n align,\n truncate,\n lineHeight,\n className\n}: TypographyClassOptions): string => cn(\n size ? sizeMap[size] : undefined,\n weight ? weightMap[weight] : undefined,\n tone ? toneMap[tone] : undefined,\n align ? alignMap[align] : undefined,\n truncate ? 'text-truncate' : undefined,\n lineHeight ? `line-height-${lineHeight}` : undefined,\n className\n);\n","import { cn } from '@/shared/utils/cn';\nimport { buildBoxClasses, splitBoxProps } from '../buildBoxClasses';\nimport { forwardRef } from 'react';\nimport type { BoxStyleProps } from '../buildBoxClasses';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\n\ntype PolymorphicProps<E extends ElementType> = Omit<HTMLAttributes<HTMLElement>, 'children'> & {\n as?: E;\n children?: ReactNode;\n className?: string;\n};\n\nexport type BoxProps<E extends ElementType = 'div'> = PolymorphicProps<E> & BoxStyleProps;\n\nconst BoxImpl = <E extends ElementType = 'div'>(\n { as, className, children, ...props }: BoxProps<E>,\n ref: Ref<Element>\n) => {\n const Component = (as ?? 'div') as ElementType;\n const { styleProps, rest } = splitBoxProps(props);\n const classes = cn(...buildBoxClasses(styleProps), className);\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n};\n\nconst Box = forwardRef(BoxImpl) as <E extends ElementType = 'div'>(\n props: BoxProps<E> & { ref?: Ref<Element> }\n) => ReturnType<typeof BoxImpl>;\n\nexport default Box;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { ElementType, ReactElement, Ref } from 'react';\n\n/**\n * Vertical flex stack. Defaults to `d-flex column`.\n * Accepts every `Box` style prop.\n */\nexport type StackProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display' | 'direction'>;\n\nconst Stack = forwardRef<HTMLElement, StackProps>(function Stack(props, ref) {\n return (\n <Box\n ref={ref as Ref<Element>}\n display='flex'\n direction='column'\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: StackProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Stack;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { ElementType, ReactElement, Ref } from 'react';\n\n/**\n * Horizontal flex row. Defaults to `d-flex items-center`.\n * Accepts every `Box` style prop plus `reverse`.\n */\nexport type RowProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display' | 'direction'> & {\n reverse?: boolean;\n};\n\nconst Row = forwardRef<HTMLElement, RowProps>(function Row({ reverse, align = 'center', ...props }, ref) {\n return (\n <Box\n ref={ref as Ref<Element>}\n display='flex'\n direction={reverse ? 'row-reverse' : 'row'}\n align={align}\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: RowProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Row;\n","import Box from '../Box';\nimport { forwardRef } from 'react';\nimport type { BoxProps } from '../Box';\nimport type { CSSProperties, ElementType, ReactElement, Ref } from 'react';\n\ntype GridColumns = 2 | 3 | 4 | 'auto-fit' | 'auto-fill';\n\n/**\n * CSS-grid layout primitive. Defaults to `d-grid` and accepts every `Box` style prop\n * (gap, padding, etc.). Use `columns` for fixed/auto tracks; `minColumnWidth` tunes the\n * auto-fit/auto-fill minimum track size.\n */\nexport type GridProps<E extends ElementType = 'div'> = Omit<BoxProps<E>, 'display'> & {\n columns?: GridColumns;\n /** Min track size for auto-fit/auto-fill (e.g. '180px', '12rem'). Defaults to 180px. */\n minColumnWidth?: string;\n};\n\nconst columnsClass: Record<string, string> = {\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n 'auto-fit': 'grid-auto-fit',\n 'auto-fill': 'grid-auto-fill'\n};\n\nconst Grid = forwardRef<HTMLElement, GridProps>(function Grid(\n { columns, minColumnWidth, className, style, ...props },\n ref\n) {\n const colClass = columns !== undefined ? columnsClass[String(columns)] : undefined;\n const mergedStyle = minColumnWidth\n ? ({ ...(style as CSSProperties), '--grid-min': minColumnWidth } as CSSProperties)\n : style;\n\n return (\n <Box\n ref={ref as Ref<Element>}\n display='grid'\n className={[colClass, className].filter(Boolean).join(' ') || undefined}\n style={mergedStyle}\n {...(props as BoxProps)}\n />\n );\n}) as <E extends ElementType = 'div'>(props: GridProps<E> & { ref?: Ref<HTMLElement> }) => ReactElement;\n\nexport default Grid;\n","import { cn } from '@/shared/utils/cn';\nimport { buildBoxClasses, splitBoxProps } from '../buildBoxClasses';\nimport { forwardRef } from 'react';\nimport type { BoxStyleProps } from '../buildBoxClasses';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { SurfaceVariant } from '../types';\n\nconst variantMap: Record<SurfaceVariant, string> = {\n primary: 'primary-surface',\n glass: 'glass-bg',\n elevated: 'card-elevated',\n danger: 'zone-danger',\n warning: 'zone-warning'\n};\n\nexport interface SurfaceProps extends Omit<HTMLAttributes<HTMLElement>, 'children'>, BoxStyleProps {\n as?: ElementType;\n variant?: SurfaceVariant;\n children?: ReactNode;\n className?: string;\n}\n\nconst Surface = forwardRef<HTMLElement, SurfaceProps>(({\n as,\n variant,\n className,\n children,\n ...props\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n const { styleProps, rest } = splitBoxProps(props);\n\n const classes = cn(\n variant ? variantMap[variant] : undefined,\n ...buildBoxClasses(styleProps),\n className\n );\n\n return (\n <Component ref={ref as Ref<HTMLElement>} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nSurface.displayName = 'Surface';\n\nexport default Surface;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport interface DividerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-orientation'> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Thin divider line. Maps to the existing `.volt-divider` + orientation variant\n * CSS declared in `general.css`.\n */\nconst Divider = forwardRef<HTMLDivElement, DividerProps>(({\n orientation = 'horizontal',\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-divider',\n `volt-divider--${orientation}`,\n className\n );\n\n return (\n <div\n ref={ref}\n role='separator'\n aria-orientation={orientation}\n className={classes}\n {...rest}\n />\n );\n});\n\nDivider.displayName = 'Divider';\n\nexport default Divider;\n","import { buildTypographyClasses } from '../typography';\nimport { forwardRef } from 'react';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\nimport type { TextSize, TextWeight, TextTone, TextAlign } from '../types';\n\nexport interface TextProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n as?: 'span' | 'p' | 'div' | 'label' | 'small' | 'strong' | 'em' | 'li';\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n align?: TextAlign;\n truncate?: boolean;\n lineHeight?: '5';\n children?: ReactNode;\n className?: string;\n}\n\nconst Text = forwardRef<HTMLElement, TextProps>(({\n as = 'span',\n size,\n weight,\n tone,\n align,\n truncate,\n lineHeight,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = as as ElementType;\n\n const classes = buildTypographyClasses({ size, weight, tone, align, truncate, lineHeight, className });\n\n return (\n <Component ref={ref as Ref<HTMLElement>} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nText.displayName = 'Text';\n\nexport default Text;\n","import { buildTypographyClasses } from '../typography';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport type { TextSize, TextWeight, TextTone } from '../types';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps extends Omit<HTMLAttributes<HTMLHeadingElement>, 'children'> {\n level: HeadingLevel;\n size?: TextSize;\n weight?: TextWeight;\n tone?: TextTone;\n truncate?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(({\n level,\n size = 'lg',\n weight = 'medium',\n tone = 'primary',\n truncate,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n const classes = buildTypographyClasses({ size, weight, tone, truncate, className });\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n});\n\nHeading.displayName = 'Heading';\n\nexport default Heading;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface SectionLabelProps extends HTMLAttributes<HTMLSpanElement> {\n children?: ReactNode;\n}\n\n/**\n * Eyebrow / section label. Uppercase, letter-spaced, muted.\n * Replaces ad-hoc `text-uppercase` + `font-size-05` combos.\n */\nconst SectionLabel = forwardRef<HTMLSpanElement, SectionLabelProps>(({\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <span ref={ref} className={cn('text-eyebrow', className)} {...rest}>\n {children}\n </span>\n );\n});\n\nSectionLabel.displayName = 'SectionLabel';\n\nexport default SectionLabel;\n","import './Loader.css';\nimport { forwardRef, useId } from 'react';\n\ninterface LoaderProps {\n scale: number;\n isFixed?: boolean;\n fillParent?: boolean;\n className?: string;\n label?: string;\n announce?: boolean;\n reducedMotionLabel?: string;\n};\n\nconst Loader = forwardRef<HTMLDivElement, LoaderProps>(({\n scale,\n isFixed = true,\n fillParent = false,\n className = '',\n label,\n announce = false,\n reducedMotionLabel = 'Loading'\n}, ref) => {\n const loaderItems = Array.from({ length: 12 }, (_, index) => index + 1);\n const statusId = useId();\n const statusLabel = label ?? 'Loading';\n\n let accessibilityProps = {};\n if (announce) {\n accessibilityProps = {\n role: 'status',\n 'aria-live': 'polite',\n 'aria-atomic': true,\n 'aria-label': label ? undefined : statusLabel,\n 'aria-labelledby': label ? statusId : undefined\n };\n }\n\n const positioningClass = fillParent\n ? 'loader-fill-parent'\n : isFixed\n ? 'p-fixed inset-0'\n : '';\n\n return (\n <div ref={ref} className={`d-flex flex-center ${positioningClass} ${className}`} {...accessibilityProps}>\n <div className='d-flex column items-center gap-2 loader-content'>\n <div className='p-relative loader-visual' style={{ transform: `scale(${scale})` }}>\n {loaderItems.map((item) => (\n <div key={item} className={`p-absolute Loader-Item Loader-Item-${item}`} />\n ))}\n </div>\n\n {label && (\n <span id={statusId} className='loader-label font-size-2 color-secondary text-center line-height-5'>\n {label}\n </span>\n )}\n <span className='loader-reduced-motion-label'>\n {reducedMotionLabel}\n </span>\n </div>\n </div>\n );\n});\n\nLoader.displayName = 'Loader';\n\nexport default Loader;\n","import { cn } from '@/shared/utils/cn';\nimport Loader from '../Loader';\nimport './Button.css';\nimport { Children, forwardRef, useRef } from 'react';\nimport { Link } from 'react-router-dom';\nimport type { ButtonHTMLAttributes, CSSProperties, MouseEventHandler, ReactNode } from 'react';\n\ninterface ButtonStyles extends CSSProperties {\n '--button-icon-size'?: string;\n};\n\ntype NativeButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'>;\n\nconst MISSING_ICON_ONLY_LABEL_ERROR = 'Button with iconOnly requires an accessible name via aria-label, title, or text children.';\nconst FALLBACK_ICON_ONLY_LABEL = 'Icon button';\n\nexport interface ButtonProps extends NativeButtonProps {\n variant?: 'solid' | 'soft' | 'outline' | 'ghost' | 'toggle';\n children?: ReactNode;\n intent?: 'neutral' | 'brand' | 'danger' | 'success' | 'white' | 'canvas';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n shape?: 'rounded' | 'pill' | 'square' | 'circle';\n block?: boolean;\n align?: 'start' | 'center' | 'end';\n isLoading?: boolean;\n to?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n iconOnly?: boolean;\n iconSize?: number;\n premium?: boolean;\n onClick?: MouseEventHandler<HTMLElement>;\n};\n\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(({ \n className = '',\n variant = 'solid',\n intent = 'neutral',\n size = 'md',\n shape = 'rounded',\n block = false,\n align = 'center',\n isLoading = false,\n to,\n disabled,\n leftIcon,\n rightIcon,\n iconOnly = false,\n iconSize,\n premium = false,\n children,\n onClick,\n style,\n title,\n type = 'button',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n id,\n role,\n tabIndex,\n ...props\n}, ref) => {\n const hasWarnedForMissingLabelRef = useRef(false);\n const isDisabled = disabled || isLoading;\n\n const textContent = Children.toArray(children)\n .filter((child): child is string | number => typeof child === 'string' || typeof child === 'number')\n .join(' ')\n .trim();\n\n const resolvedTextContent = textContent || undefined;\n const normalizedAriaLabel = ariaLabel?.trim() || undefined;\n const normalizedTitle = title?.trim() || undefined;\n\n let resolvedAriaLabel = normalizedAriaLabel;\n if (iconOnly && !resolvedAriaLabel) {\n resolvedAriaLabel = normalizedTitle ?? resolvedTextContent;\n }\n\n if (iconOnly && !resolvedAriaLabel) {\n if (!hasWarnedForMissingLabelRef.current) {\n console.warn(MISSING_ICON_ONLY_LABEL_ERROR);\n\n hasWarnedForMissingLabelRef.current = true;\n }\n\n resolvedAriaLabel = FALLBACK_ICON_ONLY_LABEL;\n }\n\n const resolvedStyle: ButtonStyles = {\n ...style,\n ...(iconSize ? { '--button-icon-size': `${iconSize}px` } : {})\n };\n\n const resolvedTitle = normalizedTitle ?? (iconOnly ? resolvedAriaLabel : undefined);\n\n const classes = cn(\n 'button',\n `variant-${variant}`,\n `intent-${intent}`,\n `size-${size}`,\n `shape-${shape}`,\n block && 'block',\n align !== 'center' && `align-${align}`,\n isLoading && 'is-loading',\n iconOnly && 'icon-only',\n premium && 'premium',\n 'p-relative',\n 'items-center',\n 'content-center',\n 'font-weight-5',\n 'u-select-none',\n 'cursor-pointer',\n 'transition-fast',\n className\n );\n\n const handleButtonClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const handleLinkClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const content = (\n <>\n {isLoading && (\n <div className=\"button-loader p-absolute d-flex items-center content-center\">\n <Loader scale={0.6} isFixed={false} />\n </div>\n )}\n\n {leftIcon && <span className=\"button-icon-left font-size-4\" aria-hidden='true'>{leftIcon}</span>}\n {iconOnly ? (\n <span className='button-icon-only-content d-flex items-center content-center' aria-hidden='true'>\n {children}\n </span>\n ) : children}\n {rightIcon && <span className=\"button-icon-right\" aria-hidden='true'>{rightIcon}</span>}\n </>\n );\n\n if (to) {\n return (\n <Link\n to={to}\n id={id}\n className={classes}\n role={role}\n onClick={handleLinkClick}\n title={resolvedTitle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-busy={isLoading || undefined}\n aria-disabled={isDisabled || undefined}\n tabIndex={isDisabled ? -1 : tabIndex}\n style={resolvedStyle}\n >\n {content}\n </Link>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type}\n className={classes}\n disabled={isDisabled}\n onClick={handleButtonClick}\n title={resolvedTitle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-busy={isLoading || undefined}\n id={id}\n role={role}\n tabIndex={tabIndex}\n style={resolvedStyle}\n {...props}\n >\n {content}\n </button>\n );\n\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import './IconButton.css';\nimport { Children, forwardRef, useRef } from 'react';\nimport type { ButtonHTMLAttributes, MouseEventHandler, ReactNode } from 'react';\n\nconst MISSING_ICON_BUTTON_LABEL_ERROR = 'IconButton requires an accessible name via aria-label, aria-labelledby, or title.';\nconst FALLBACK_ICON_BUTTON_LABEL = 'Icon button';\n\ninterface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: ReactNode;\n variant?: 'default' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n};\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(({ \n children,\n className = '',\n variant = 'default',\n size = 'md',\n disabled,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onClick,\n ...props\n}, ref) => {\n const hasWarnedForMissingLabelRef = useRef(false);\n const textContent = Children.toArray(children)\n .filter((child): child is string | number => typeof child === 'string' || typeof child === 'number')\n .join(' ')\n .trim();\n const resolvedTitle = title?.trim() || undefined;\n const labelledBy = ariaLabelledBy?.trim() || undefined;\n\n let resolvedAriaLabel = ariaLabel?.trim() || resolvedTitle || textContent || undefined;\n if (!labelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingLabelRef.current) {\n console.warn(MISSING_ICON_BUTTON_LABEL_ERROR);\n hasWarnedForMissingLabelRef.current = true;\n }\n\n resolvedAriaLabel = FALLBACK_ICON_BUTTON_LABEL;\n }\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n const classes = [\n 'volt-icon-button',\n 'flex-center',\n 'transition-fast',\n `volt-icon-button--${variant}`,\n `volt-icon-button--${size}`,\n disabled && 'volt-icon-button--disabled',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={disabled}\n type='button'\n title={resolvedTitle ?? resolvedAriaLabel}\n aria-label={resolvedAriaLabel}\n aria-labelledby={labelledBy}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\n\nIconButton.displayName = 'IconButton';\n\nexport default IconButton;\n","import Button from '../Button';\nimport { X } from 'lucide-react';\nimport { forwardRef } from 'react';\n\ninterface CloseButtonProps {\n onClick?: () => void;\n /** For dialog command API - use with commandfor */\n command?: 'close';\n /** Dialog ID for command API */\n commandfor?: string;\n 'aria-label'?: string;\n};\n\nconst CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(({\n onClick,\n command,\n commandfor,\n 'aria-label': ariaLabel = 'Close'\n}, ref) => {\n return (\n <Button\n ref={ref}\n variant='ghost'\n intent='neutral'\n iconOnly\n size='sm'\n onClick={onClick}\n command={command}\n commandfor={commandfor}\n aria-label={ariaLabel}\n >\n <X size={20} />\n </Button>\n );\n});\n\nCloseButton.displayName = 'CloseButton';\n\nexport default CloseButton;\n","import { cn } from '@/shared/utils/cn';\nimport './SearchInput.css';\nimport { Search } from 'lucide-react';\nimport { forwardRef, useRef } from 'react';\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_SEARCH_INPUT_NAME_ERROR = 'SearchInput requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\nconst FALLBACK_SEARCH_LABEL = 'Search';\n\ninterface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n containerClassName?: string;\n variant?: 'default' | 'small';\n overlayContent?: ReactNode;\n overlayVisible?: boolean;\n};\n\nconst SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(({\n containerClassName,\n variant = 'default',\n className,\n placeholder = 'Search…',\n overlayContent,\n overlayVisible = false,\n id,\n title,\n autoComplete = 'off',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n let accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_SEARCH_INPUT_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n accessibleName = FALLBACK_SEARCH_LABEL;\n }\n\n return (\n <div className={`${cn('search-input-container d-flex items-center gap-05', variant === 'small' && 'search-input-container--small', containerClassName)}`}>\n <Search aria-hidden='true' className={cn('search-input-icon color-muted f-shrink-0', variant === 'small' && 'search-input-icon--small')} />\n <div className='search-input-content p-relative flex-1'>\n {overlayVisible && overlayContent && (\n <div className='search-input-overlay d-flex items-center'>\n {overlayContent}\n </div>\n )}\n <input\n ref={ref}\n id={id}\n type='search'\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n autoComplete={autoComplete}\n placeholder={overlayVisible ? '' : (placeholder || 'Search…')}\n className={cn('search-input font-size-2 color-primary flex-1', variant === 'small' && 'search-input--small', className, overlayVisible && 'search-input--with-overlay')}\n {...props}\n />\n </div>\n </div>\n );\n});\n\nSearchInput.displayName = 'SearchInput';\n\nexport default SearchInput;\n","import { createContext, useContext } from 'react';\n\n/**\n * Provides the portal root for @floating-ui/react's FloatingPortal.\n *\n * When a floating element (Select, Tooltip, Popover, etc.) lives inside a\n * native <dialog> opened with .showModal(), the dialog is in the browser's\n * \"top layer\" - above everything in the normal stacking context. FloatingPortal\n * defaults to document.body, which sits *below* the top layer, making the\n * dropdown invisible.\n *\n * The Modal component provides its <dialog> element via this context so that\n * every FloatingPortal renders *inside* the dialog instead.\n */\nconst FloatingRootContext = createContext<HTMLElement | undefined>(undefined);\nexport const TopLayerRootContext = createContext<HTMLElement | undefined>(undefined);\nexport const FloatingOwnerIdsContext = createContext<string[]>([]);\nexport const FLOATING_OWNER_IDS_ATTRIBUTE = 'data-floating-owner-ids';\n\nexport const useFloatingRoot = (): HTMLElement | undefined => {\n return useContext(FloatingRootContext);\n};\n\nexport const useTopLayerRoot = (): HTMLElement | undefined => {\n return useContext(TopLayerRootContext);\n};\n\nexport const useFloatingOwnerIds = (): string[] => {\n return useContext(FloatingOwnerIdsContext);\n};\n\nexport const appendFloatingOwnerIds = (ownerIds: string[], ownerId: string): string[] => {\n if (!ownerId) {\n return ownerIds;\n }\n\n return [...ownerIds, ownerId];\n};\n\nexport const getFloatingOwnerIdsAttribute = (ownerIds: string[]): string | undefined => {\n if (!ownerIds.length) {\n return undefined;\n }\n\n return ownerIds.join(' ');\n};\n\nexport const hasFloatingOwnerId = (element: Element | null, ownerId: string): boolean => {\n if (!element || !ownerId) {\n return false;\n }\n\n const ownerIdsValue = element\n .closest<HTMLElement>(`[${FLOATING_OWNER_IDS_ATTRIBUTE}]`)\n ?.getAttribute(FLOATING_OWNER_IDS_ATTRIBUTE);\n\n if (!ownerIdsValue) {\n return false;\n }\n\n return ownerIdsValue.split(/\\s+/).includes(ownerId);\n};\n\nexport default FloatingRootContext;\n","import {\n getFloatingOwnerIdsAttribute,\n useFloatingOwnerIds,\n useTopLayerRoot\n} from '@/shared/presentation/contexts/FloatingRootContext';\nimport { size } from '@floating-ui/react';\n\nexport const matchReferenceWidth = (padding = 8) => {\n return size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`\n });\n },\n padding\n });\n};\n\nexport const useFloatingLayerRoot = () => {\n const floatingRoot = useTopLayerRoot();\n const floatingOwnerIds = useFloatingOwnerIds();\n const floatingOwnerIdsAttribute = getFloatingOwnerIdsAttribute(floatingOwnerIds);\n\n return {\n floatingRoot,\n floatingOwnerIdsAttribute\n };\n};\n","import SearchInput from '@/shared/presentation/primitives/SearchInput';\nimport { matchReferenceWidth, useFloatingLayerRoot } from './floating-layer';\nimport './Select.css';\nimport { useFloating, useClick, useDismiss, useRole, useListNavigation, useTypeahead, useInteractions, FloatingPortal, FloatingFocusManager, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { forwardRef, useId, useMemo, useState, useCallback, useEffect, useRef } from 'react';\nimport React from 'react';\n\nexport interface SelectOption {\n value: string;\n title: string;\n description?: string;\n};\n\nexport interface SelectProps {\n options: SelectOption[];\n id?: string;\n value?: string | null;\n onChange?: (value: string) => void;\n disabled?: boolean;\n onDark?: boolean;\n placeholder?: string;\n className?: string;\n style?: React.CSSProperties;\n optionClassName?: string;\n showSelectionIcon?: boolean;\n isLoading?: boolean;\n onScrollEnd?: () => void;\n renderOptionAction?: (option: SelectOption, isSelected: boolean) => React.ReactNode;\n isEditable?: boolean;\n inputClassName?: string;\n title?: string;\n onFocusCapture?: React.FocusEventHandler<HTMLElement>;\n /** Multi-select mode */\n isMulti?: boolean;\n /** Currently selected values in multi-select mode */\n selectedValues?: string[];\n /** Callback when multi-select values change */\n onMultiChange?: (values: string[]) => void;\n /** \"All\" option rendered as the first item in multi-select */\n allOption?: { value: string; title: string };\n /** Custom trigger label for multi-select */\n renderTriggerLabel?: (selectedCount: number, total: number) => string;\n /** Render a search input inside the dropdown body */\n hasSearch?: boolean;\n /** Placeholder for the dropdown search input */\n searchPlaceholder?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-errormessage'?: string;\n};\n\nconst Select = forwardRef<HTMLButtonElement | HTMLInputElement, SelectProps>(({\n options,\n id,\n value = null,\n onChange,\n disabled = false,\n onDark = false,\n placeholder = 'Select…',\n className = '',\n style,\n optionClassName = '',\n showSelectionIcon = true,\n isLoading = false,\n onScrollEnd,\n renderOptionAction,\n isEditable = false,\n inputClassName = '',\n title,\n onFocusCapture,\n isMulti = false,\n selectedValues,\n onMultiChange,\n allOption,\n renderTriggerLabel,\n hasSearch = false,\n searchPlaceholder = 'Search…',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n}, ref) => {\n const uid = useId();\n const { floatingRoot, floatingOwnerIdsAttribute } = useFloatingLayerRoot();\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const [searchQuery, setSearchQuery] = useState('');\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const listContentRef = useRef<Array<string | null>>([]);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const selectedValuesSet = useMemo(() => new Set(selectedValues ?? []), [selectedValues]);\n\n const selectedOption = useMemo(() => {\n if (!value) return null;\n return options.find((option) => option.value === value) || null;\n }, [options, value]);\n\n const filteredOptions = useMemo(() => {\n if ((!isEditable && !hasSearch) || !searchQuery) return options;\n const lowerQuery = searchQuery.toLowerCase();\n return options.filter((option) => option.title.toLowerCase().includes(lowerQuery));\n }, [options, isEditable, hasSearch, searchQuery]);\n\n const displayOptions = useMemo(() => {\n if (isMulti && allOption) {\n return [{ value: allOption.value, title: allOption.title }, ...filteredOptions];\n }\n return filteredOptions;\n }, [isMulti, allOption, filteredOptions]);\n\n const selectedIndex = useMemo(() => {\n if (isMulti) return null;\n if (!value) return null;\n const optionIndex = displayOptions.findIndex((option) => option.value === value);\n if (optionIndex < 0) return null;\n return optionIndex;\n }, [isMulti, displayOptions, value]);\n\n listContentRef.current = displayOptions.map((option) => option.title);\n\n useEffect(() => {\n if (!isOpen) {\n setActiveIndex(null);\n setSearchQuery('');\n return;\n }\n\n if (selectedIndex !== null) {\n setActiveIndex(selectedIndex);\n return;\n }\n\n if (displayOptions.length > 0) {\n setActiveIndex(0);\n }\n }, [isOpen, displayOptions.length, selectedIndex]);\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement: 'bottom-start',\n middleware: [\n offset(6),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n matchReferenceWidth()\n ],\n whileElementsMounted: autoUpdate\n });\n\n const click = useClick(context, { keyboardHandlers: !isEditable });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'listbox' });\n const listNavigation = useListNavigation(context, {\n listRef,\n activeIndex,\n selectedIndex: selectedIndex ?? undefined,\n onNavigate: setActiveIndex,\n loop: true\n });\n const typeahead = useTypeahead(context, {\n listRef: listContentRef,\n activeIndex,\n selectedIndex: selectedIndex ?? undefined,\n onMatch: setActiveIndex,\n enabled: !isEditable && !isMulti\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([\n click,\n dismiss,\n role,\n listNavigation,\n typeahead\n ]);\n\n const handleSelect = useCallback((optionValue: string) => {\n if (isMulti) {\n if (allOption && optionValue === allOption.value) {\n onMultiChange?.([]);\n } else {\n const currentValues = selectedValues ?? [];\n const isSelected = currentValues.includes(optionValue);\n const nextValues = isSelected\n ? currentValues.filter((v) => v !== optionValue)\n : [...currentValues, optionValue];\n onMultiChange?.(nextValues);\n }\n return;\n }\n onChange?.(optionValue);\n setIsOpen(false);\n }, [isMulti, allOption, selectedValues, onMultiChange, onChange]);\n\n const handleScroll = useCallback((event: React.UIEvent<HTMLDivElement>) => {\n if (!onScrollEnd) return;\n\n const target = event.currentTarget;\n const threshold = 50;\n const isNearBottom = target.scrollHeight - target.scrollTop - target.clientHeight < threshold;\n\n if (isNearBottom && !isLoading) {\n onScrollEnd();\n }\n }, [onScrollEnd, isLoading]);\n\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n if (!isOpen) {\n setIsOpen(true);\n }\n }, [isOpen]);\n\n const handleInputFocus = useCallback(() => {\n setSearchQuery('');\n setIsOpen(true);\n requestAnimationFrame(() => inputRef.current?.select());\n }, []);\n\n const handleInputKeyDown = useCallback((e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (activeIndex !== null && filteredOptions[activeIndex]) {\n handleSelect(filteredOptions[activeIndex].value);\n } else if (filteredOptions.length === 1) {\n handleSelect(filteredOptions[0].value);\n }\n return;\n }\n\n if (e.key === 'Escape') {\n setIsOpen(false);\n setSearchQuery('');\n }\n }, [activeIndex, filteredOptions, handleSelect]);\n\n const setInputReference = useCallback((node: HTMLInputElement | null) => {\n refs.setReference(node);\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>).current = node;\n }\n }, [refs, ref]);\n\n const inputDisplayValue = isOpen ? searchQuery : (selectedOption?.title ?? '');\n\n const multiTriggerLabel = useMemo(() => {\n const count = selectedValues?.length ?? 0;\n if (renderTriggerLabel) {\n return renderTriggerLabel(count, options.length);\n }\n if (count === 0) return placeholder;\n return `${count} selected`;\n }, [selectedValues, renderTriggerLabel, options.length, placeholder]);\n\n const renderOption = (option: SelectOption, index: number) => {\n let isSelected: boolean;\n if (isMulti) {\n if (allOption && option.value === allOption.value) {\n isSelected = (selectedValues?.length ?? 0) === 0;\n } else {\n isSelected = selectedValuesSet.has(option.value);\n }\n } else {\n isSelected = option.value === value;\n }\n\n const handleOptionKeyDown = (event: React.KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n\n event.preventDefault();\n handleSelect(option.value);\n };\n\n return (\n <div\n key={option.value}\n ref={(node) => { listRef.current[index] = node; }}\n role='option'\n tabIndex={activeIndex === index ? 0 : -1}\n aria-selected={isSelected}\n className={`select-option d-flex items-center content-between gap-05 ${optionClassName} ${isSelected ? 'selected' : ''} ${activeIndex === index ? 'active' : ''} color-primary cursor-pointer`}\n {...getItemProps({\n onClick: () => handleSelect(option.value),\n onKeyDown: handleOptionKeyDown\n })}\n >\n <div className='d-flex column'>\n <p className='font-size-2'>\n {option.title}\n </p>\n\n {option.description && (\n <p className='select-option-description color-muted font-size-1'>\n {option.description}\n </p>\n )}\n </div>\n\n {showSelectionIcon && isSelected && (\n <svg\n className='select-option-check color-muted'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n d='M20 6L9 17l-5-5'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n />\n </svg>\n )}\n\n {renderOptionAction?.(option, isSelected)}\n </div>\n );\n };\n\n const renderTrigger = () => {\n const triggerAriaProps = {\n 'aria-haspopup': 'listbox' as const,\n 'aria-expanded': isOpen,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n };\n\n if (isEditable) {\n return (\n <input\n ref={setInputReference}\n id={id ?? uid}\n type='text'\n value={inputDisplayValue}\n placeholder={placeholder}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n className={`select-trigger select-trigger--editable ${className} ${inputClassName} ${isOpen ? 'open' : ''}`}\n style={style}\n disabled={disabled}\n title={title}\n {...triggerAriaProps}\n onFocusCapture={onFocusCapture}\n {...getReferenceProps()}\n />\n );\n }\n\n const label = isMulti ? multiTriggerLabel : (\n selectedOption ? selectedOption.title : (\n <span className='color-muted'>{placeholder}</span>\n )\n );\n\n const setButtonReference = (node: HTMLButtonElement | null) => {\n refs.setReference(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | HTMLInputElement | null>).current = node;\n }\n };\n\n return (\n <button\n ref={setButtonReference}\n id={id ?? uid}\n type='button'\n className={`select-trigger d-flex items-center gap-05 ${onDark ? 'on-dark' : ''} ${className} ${isOpen ? 'open' : ''} overflow-hidden cursor-pointer`}\n style={style}\n disabled={disabled}\n title={title}\n {...triggerAriaProps}\n onFocusCapture={onFocusCapture}\n {...getReferenceProps()}\n >\n <span className='select-value overflow-hidden'>\n {label}\n </span>\n\n <svg\n className={`select-chevron ${isOpen ? 'rotated' : ''}`}\n width='18'\n height='18'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n d='M7 10l5 5 5-5'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n />\n </svg>\n </button>\n );\n };\n\n return (\n <>\n {renderTrigger()}\n\n {isOpen && (\n <FloatingPortal root={floatingRoot}>\n <FloatingFocusManager context={context} modal={false}>\n <div\n ref={refs.setFloating}\n className='select-dropdown y-auto glass-bg'\n data-floating-owner-ids={floatingOwnerIdsAttribute}\n style={floatingStyles}\n onScroll={handleScroll}\n {...getFloatingProps()}\n >\n {hasSearch && (\n <SearchInput\n variant='small'\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={searchPlaceholder}\n aria-label='Search options'\n containerClassName='select-dropdown-search'\n />\n )}\n\n {displayOptions.map(renderOption)}\n\n {isLoading && (\n <div className='select-option-loading d-flex items-center content-center'>\n <p className='color-muted font-size-1'>Loading…</p>\n </div>\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n );\n});\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import { useEffect, useState } from 'react';\n\nconst supportsMatchMedia = (): boolean => {\n return typeof window.matchMedia === 'function';\n};\n\nconst getInitialMatch = (query: string): boolean => {\n if (!supportsMatchMedia()) {\n return false;\n }\n return window.matchMedia(query).matches;\n};\n\n/** Subscribes to a CSS media query and returns whether it currently matches. */\nconst useMedia = (query: string): boolean => {\n const [matches, setMatches] = useState<boolean>(() => getInitialMatch(query));\n\n useEffect(() => {\n if (!supportsMatchMedia()) {\n return;\n }\n\n const mediaQueryList = window.matchMedia(query);\n const handleChange = (event: MediaQueryListEvent) => setMatches(event.matches);\n\n setMatches(mediaQueryList.matches);\n mediaQueryList.addEventListener('change', handleChange);\n\n return () => mediaQueryList.removeEventListener('change', handleChange);\n }, [query]);\n\n return matches;\n};\n\nexport default useMedia;\n","import useMedia from '@/shared/presentation/hooks/use-media';\n\nconst REDUCED_MOTION_MEDIA_QUERY = '(prefers-reduced-motion: reduce)';\n\nexport const usePrefersReducedMotion = (): boolean => useMedia(REDUCED_MOTION_MEDIA_QUERY);\n","import { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { motion } from 'framer-motion';\nimport { forwardRef, useId } from 'react';\nimport type { ReactElement, ReactNode, Ref } from 'react';\nimport './SegmentedTabs.css';\n\nexport interface SegmentedTabOption<TId extends string = string> {\n id: TId;\n label: string;\n icon?: ReactNode;\n};\n\ninterface SegmentedTabsProps<TId extends string = string> {\n tabs: ReadonlyArray<SegmentedTabOption<TId>>;\n activeTab: TId;\n onChange: (id: TId) => void;\n ariaLabel: string;\n /** Unique per instance. Defaults to a React-generated id — override only to share animation across mount boundaries. */\n layoutId?: string;\n size?: 'sm' | 'md';\n fullWidth?: boolean;\n className?: string;\n};\n\nconst SegmentedTabs = forwardRef(function SegmentedTabs<TId extends string>({\n tabs,\n activeTab,\n onChange,\n ariaLabel,\n layoutId,\n size = 'md',\n fullWidth = false,\n className = ''\n}: SegmentedTabsProps<TId>, ref: Ref<HTMLDivElement>) {\n const prefersReducedMotion = usePrefersReducedMotion();\n const autoLayoutId = useId();\n const resolvedLayoutId = layoutId ?? autoLayoutId;\n\n const containerClassName = [\n 'segmented-tabs',\n `segmented-tabs--${size}`,\n fullWidth ? 'segmented-tabs--full' : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} className={`${containerClassName}`} role='tablist' aria-label={ariaLabel}>\n {tabs.map((tab) => {\n const isActive = activeTab === tab.id;\n return (\n <button\n key={tab.id}\n type='button'\n role='tab'\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n className={`segmented-tabs__tab ${isActive ? 'is-active' : ''}`}\n onClick={() => onChange(tab.id)}\n >\n {isActive && (\n <motion.span\n layoutId={`${resolvedLayoutId}-pill`}\n className='segmented-tabs__pill'\n transition={prefersReducedMotion\n ? { duration: 0 }\n : { type: 'spring', stiffness: 420, damping: 36 }}\n />\n )}\n <span className='segmented-tabs__label'>\n {tab.icon ? <span className='segmented-tabs__icon d-flex flex-center'>{tab.icon}</span> : null}\n {tab.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}) as <TId extends string>(props: SegmentedTabsProps<TId> & { ref?: Ref<HTMLDivElement> }) => ReactElement;\n\n(SegmentedTabs as { displayName?: string }).displayName = 'SegmentedTabs';\n\nexport default SegmentedTabs;\n","import './Slider.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { CSSProperties } from 'react';\n\nexport interface SliderProps {\n min: number;\n max: number;\n value: number;\n onChange: (value: number) => void;\n step?: number;\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n};\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\n\nconst getStepDecimals = (step: number) => {\n const s = step.toString();\n if(s.includes('e-')) return parseInt(s.split('e-')[1], 10);\n const i = s.indexOf('.');\n return i === -1 ? 0 : s.length - i - 1;\n};\n\nconst snapToStep = (raw: number, min: number, step: number, decimals: number) =>\n Number((Math.round((raw - min) / step) * step + min).toFixed(decimals));\n\nconst Slider = forwardRef<HTMLDivElement, SliderProps>(({\n min,\n max,\n value,\n onChange,\n step = 1,\n disabled = false,\n className = '',\n style\n}, ref) => {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const auraKeyRef = useRef(0);\n\n const [isDragging, setIsDragging] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [auraPulseKey, setAuraPulseKey] = useState(0);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const decimals = useMemo(() => getStepDecimals(step), [step]);\n const ratioFromValue = useCallback(\n (v: number) => (max === min ? 0 : clamp((v - min) / (max - min), 0, 1)),\n [min, max]\n );\n\n const ratio = ratioFromValue(value);\n\n const updateFromClientX = useCallback((clientX: number) => {\n if(!trackRef.current || disabled) return;\n const rect = trackRef.current.getBoundingClientRect();\n const r = clamp((clientX - rect.left) / rect.width, 0, 1);\n const raw = min + r * (max - min);\n const next = clamp(snapToStep(raw, min, step, decimals), min, max);\n onChange(next);\n }, [disabled, min, max, step, decimals, onChange]);\n\n const onPointerDown = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(disabled) return;\n e.currentTarget.setPointerCapture?.(e.pointerId);\n setIsDragging(true);\n updateFromClientX(e.clientX);\n }, [disabled, updateFromClientX]);\n\n const onPointerMove = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging || disabled) return;\n updateFromClientX(e.clientX);\n }, [isDragging, disabled, updateFromClientX]);\n\n const finishDrag = useCallback((target: HTMLDivElement, pointerId: number) => {\n target.releasePointerCapture?.(pointerId);\n setIsDragging(false);\n }, []);\n\n const onPointerUp = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging) return;\n finishDrag(e.currentTarget, e.pointerId);\n }, [isDragging, finishDrag]);\n\n const onPointerCancel = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if(!isDragging) return;\n finishDrag(e.currentTarget, e.pointerId);\n }, [isDragging, finishDrag]);\n\n const onLostCapture = useCallback(() => {\n if(isDragging) setIsDragging(false);\n }, [isDragging]);\n\n const onMouseEnter = useCallback(() => {\n if(disabled || isDragging) return;\n setIsHovered(true);\n }, [disabled, isDragging]);\n\n const onMouseLeave = useCallback(() => {\n if(disabled || isDragging) return;\n setIsHovered(false);\n }, [disabled, isDragging]);\n\n const triggerAuraPulse = useCallback(() => {\n if (prefersReducedMotion) return;\n auraKeyRef.current += 1;\n setAuraPulseKey(auraKeyRef.current);\n }, [prefersReducedMotion]);\n\n const onKeyDown = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if(disabled) return;\n let next = value;\n const coarse = step * 10;\n switch(e.key){\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault();\n next = clamp(value - step, min, max);\n break;\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault();\n next = clamp(value + step, min, max);\n break;\n case 'PageDown':\n e.preventDefault();\n next = clamp(value - coarse, min, max);\n break;\n case 'PageUp':\n e.preventDefault();\n next = clamp(value + coarse, min, max);\n break;\n case 'Home':\n e.preventDefault();\n next = min;\n break;\n case 'End':\n e.preventDefault();\n next = max;\n break;\n default:\n return;\n }\n next = snapToStep(next, min, step, decimals);\n triggerAuraPulse();\n onChange(next);\n }, [disabled, value, step, min, max, decimals, onChange, triggerAuraPulse]);\n\n // Ensure hover state resets if disabled toggles on mid-hover.\n useEffect(() => {\n if (disabled) {\n setIsHovered(false);\n setIsDragging(false);\n }\n }, [disabled]);\n\n const trackStyle = {\n '--slider-ratio': ratio,\n '--slider-ring-a': isDragging ? 1 : (isHovered ? 0.5 : 0),\n '--slider-ring-b': isDragging ? 1 : 0,\n '--slider-elev': isDragging ? 1 : 0,\n '--slider-scale': isDragging ? 1.05 : (isHovered ? 1.02 : 1),\n '--slider-aura-opacity': isDragging ? 1 : 0,\n '--slider-aura-scale': isDragging ? 1.1 : 1,\n '--slider-aura-intensity': isDragging ? 0.5 : 0,\n '--slider-sheen-opacity': isDragging ? 1 : 0\n } as CSSProperties;\n\n return (\n <div ref={ref} className={`slider slider--ios ${disabled ? 'slider--disabled' : ''} ${className || ''} u-select-none`} style={style} aria-disabled={disabled || undefined} data-disabled={disabled || undefined}>\n <div\n ref={trackRef}\n className='slider__track p-relative w-max overflow-hidden cursor-pointer'\n role='slider'\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${value}`}\n tabIndex={disabled ? -1 : 0}\n data-dragging={isDragging || undefined}\n data-hovered={isHovered || undefined}\n style={trackStyle}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n onLostPointerCapture={onLostCapture}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <div className='slider__progress p-absolute inset-0'>\n <div className='slider__gloss p-absolute' />\n <div className='slider__sheen p-absolute' data-running={isDragging || undefined} />\n <div\n className='slider__aura p-absolute'\n key={auraPulseKey}\n data-pulse={auraPulseKey > 0 || undefined}\n />\n <div className='slider__sparkles p-absolute overflow-hidden inset-0'>\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n <span />\n </div>\n <div className='slider__noise p-absolute inset-0' />\n </div>\n </div>\n </div>\n );\n});\n\nSlider.displayName = 'Slider';\n\nexport default memo(Slider);\n","import '../LiquidToggle/LiquidToggle.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { forwardRef, useEffect, useRef, useState, useCallback } from 'react';\n\ninterface LiquidToggleProps {\n className?: string;\n id?: string;\n pressed?: boolean;\n defaultPressed?: boolean;\n onChange?: (pressed: boolean) => void;\n bounce?: boolean;\n disabled?: boolean;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n 'aria-errormessage'?: string;\n};\n\nconst LiquidToggle = forwardRef<HTMLDivElement, LiquidToggleProps>(({\n className,\n id,\n pressed,\n defaultPressed = false,\n onChange,\n bounce = true,\n disabled = false,\n 'aria-label': ariaLabel = 'toggle',\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n 'aria-errormessage': ariaErrorMessage\n}, ref) => {\n const btnRef = useRef<HTMLButtonElement | null>(null);\n\n const isControlled = typeof pressed === 'boolean';\n const [internalPressed, setInternalPressed] = useState(defaultPressed);\n const effectivePressed = isControlled ? pressed : internalPressed;\n\n const [active, setActive] = useState(false);\n const [complete, setComplete] = useState(effectivePressed ? 100 : 0);\n\n const [isDragging, setIsDragging] = useState(false);\n const [dragStart, setDragStart] = useState<{ x: number; y: number } | null>(null);\n const [dragBounds, setDragBounds] = useState(0);\n const pressTimeRef = useRef(0);\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const completeRef = useRef(effectivePressed ? 100 : 0);\n\n const commitPressedState = useCallback((nextPressed: boolean) => {\n const targetComplete = nextPressed ? 100 : 0;\n\n setActive(false);\n setComplete(targetComplete);\n completeRef.current = targetComplete;\n\n if (btnRef.current) {\n btnRef.current.setAttribute('aria-pressed', String(nextPressed));\n }\n\n onChange?.(nextPressed);\n\n if (!isControlled) {\n setInternalPressed(nextPressed);\n }\n }, [isControlled, onChange]);\n\n useEffect(() => {\n document.documentElement.dataset.bounce = String(bounce);\n }, [bounce]);\n\n useEffect(() => {\n if (btnRef.current) {\n btnRef.current.style.setProperty('--complete', String(complete));\n completeRef.current = complete;\n }\n }, [complete]);\n\n useEffect(() => {\n if (!isControlled) return;\n const targetComplete = pressed ? 100 : 0;\n setComplete(targetComplete);\n if (btnRef.current) {\n btnRef.current.setAttribute('aria-pressed', String(pressed));\n }\n }, [isControlled, pressed]);\n\n const toggleTimeline = useCallback(() => {\n if (!btnRef.current || disabled) return;\n const el = btnRef.current;\n const wasPressed = el.getAttribute('aria-pressed') === 'true';\n const nextPressed = !wasPressed;\n\n setActive(true);\n\n // CSS transitions on --complete (and dependent props) handle the visual tween.\n // We commit the final state immediately; the browser animates via transition-duration.\n commitPressedState(nextPressed);\n }, [commitPressedState, disabled]);\n\n const handlePointerDown = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (!btnRef.current || disabled) return;\n\n pressTimeRef.current = Date.now();\n const rect = btnRef.current.getBoundingClientRect();\n const isOn = btnRef.current.getAttribute('aria-pressed') === 'true';\n\n setDragStart({ x: e.clientX, y: e.clientY });\n setDragBounds(isOn ? (rect.left - e.clientX) : (rect.left + rect.width - e.clientX));\n setActive(true);\n\n btnRef.current.setPointerCapture(e.pointerId);\n }, [disabled]);\n\n const handlePointerMove = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (!dragStart) return;\n\n if (!isDragging) {\n const distance = Math.abs(e.clientX - dragStart.x);\n if (distance > 4) setIsDragging(true);\n }\n\n if (isDragging && btnRef.current) {\n const isOn = btnRef.current.getAttribute('aria-pressed') === 'true';\n const dragged = e.clientX - dragStart.x;\n\n let rawComplete;\n if (isOn) {\n rawComplete = ((dragBounds - dragged) / Math.abs(dragBounds)) * 100;\n } else {\n rawComplete = (dragged / Math.abs(dragBounds)) * 100;\n }\n\n const clampedComplete = Math.max(0, Math.min(100, rawComplete));\n setComplete(clampedComplete);\n completeRef.current = clampedComplete;\n }\n }, [disabled, isDragging, dragStart, dragBounds]);\n\n const handlePointerUp = useCallback((e: React.PointerEvent<HTMLButtonElement>) => {\n if (disabled) return;\n const releaseTime = Date.now();\n const pressDuration = releaseTime - pressTimeRef.current;\n\n if (isDragging) {\n const targetComplete = complete >= 50 ? 100 : 0;\n commitPressedState(targetComplete >= 50);\n } else if (pressDuration <= 150) {\n toggleTimeline();\n } else {\n setActive(false);\n }\n\n setIsDragging(false);\n setDragStart(null);\n if (btnRef.current) {\n btnRef.current.releasePointerCapture(e.pointerId);\n }\n }, [commitPressedState, disabled, isDragging, complete, toggleTimeline]);\n\n const onClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDragging) e.preventDefault();\n }, [isDragging]);\n\n const onKeyDown = useCallback((e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === ' ') e.preventDefault();\n if (e.key === 'Enter') toggleTimeline();\n }, [disabled, toggleTimeline]);\n\n const onKeyUp = useCallback((e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === ' ') toggleTimeline();\n }, [disabled, toggleTimeline]);\n\n // prefersReducedMotion is respected by the CSS @media (prefers-reduced-motion)\n // block which disables transitions. Kept in deps to preserve intent for future use.\n void prefersReducedMotion;\n\n return (\n <div ref={ref} className='liquid-toggle-wrapper'>\n <button\n ref={btnRef}\n id={id}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-invalid={ariaInvalid}\n aria-errormessage={ariaErrorMessage}\n aria-pressed={effectivePressed}\n className={`liquid-toggle${className ? ` ${className}` : ''}`}\n data-active={String(active)}\n type='button'\n disabled={disabled}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onClick={onClick}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n style={{ touchAction: 'none' }}\n >\n <div className='knockout'>\n <div className='indicator indicator--masked'>\n <div className='mask'></div>\n </div>\n </div>\n\n <div className='indicator__liquid'>\n <div className='shadow'></div>\n <div className='wrapper'>\n <div className='liquids'>\n <div className='liquid__shadow'></div>\n <div className='liquid__track'></div>\n </div>\n </div>\n <div className='cover'></div>\n </div>\n </button>\n </div>\n );\n});\n\nLiquidToggle.displayName = 'LiquidToggle';\n\nexport default LiquidToggle;\n","import './Stepper.css';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { forwardRef, useEffect, useId, useState } from 'react';\nimport type { KeyboardEvent, ReactElement, Ref } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface Step<K extends string>{\n key: K;\n content: ReactNode;\n};\n\ninterface StepTitle{\n title: string;\n subtitle: string;\n};\n\nexport type StepTitles<K extends string> = Record<K, StepTitle>;\n\nexport interface StepIndicator<K extends string>{\n key: K;\n label: string;\n description?: string;\n};\n\ntype Direction = 'forward' | 'backward';\n\ninterface StepperProps<K extends string>{\n steps: Step<K>[];\n activeStep: K;\n className?: string;\n indicators?: StepIndicator<K>[];\n onStepClick?: (key: K) => void;\n canNavigateTo?: (key: K) => boolean;\n};\n\nconst variants = {\n enter: (direction: Direction) => ({\n x: direction === 'forward' ? 20 : -20,\n opacity: 0\n }),\n center: {\n x: 0,\n opacity: 1\n },\n exit: (direction: Direction) => ({\n x: direction === 'forward' ? -20 : 20,\n opacity: 0\n })\n};\n\nconst reducedMotionVariants = {\n enter: {\n x: 0,\n opacity: 0\n },\n center: {\n x: 0,\n opacity: 1\n },\n exit: {\n x: 0,\n opacity: 0\n }\n};\n\nconst Stepper = forwardRef(function Stepper<K extends string>({\n steps,\n activeStep,\n className = '',\n indicators,\n onStepClick,\n canNavigateTo\n}: StepperProps<K>, ref: Ref<HTMLDivElement>) {\n const [prevStep, setPrevStep] = useState<K>(activeStep);\n const prefersReducedMotion = usePrefersReducedMotion();\n const stepperId = useId();\n const stepIndicators = indicators ?? [];\n const stepVariants = prefersReducedMotion ? reducedMotionVariants : variants;\n \n const currentIndex = steps.findIndex((step) => step.key === activeStep);\n const prevIndex = steps.findIndex((step) => step.key === prevStep);\n const direction: Direction = currentIndex >= prevIndex ? 'forward' : 'backward';\n\n useEffect(() => {\n if (activeStep !== prevStep) {\n setPrevStep(activeStep);\n }\n }, [activeStep, prevStep]);\n\n const currentStep = steps.find((state) => state.key === activeStep);\n const activePanelId = `${stepperId}-${activeStep}-panel`;\n\n const handleIndicatorClick = (key: K) => {\n if(!onStepClick) return;\n if(canNavigateTo && !canNavigateTo(key)) return;\n onStepClick(key);\n };\n\n const getNavigableIndex = (startIndex: number, increment: number) => {\n let nextIndex = startIndex;\n\n while (nextIndex >= 0 && nextIndex < stepIndicators.length) {\n const nextIndicator = stepIndicators[nextIndex];\n if (!nextIndicator) {\n return null;\n }\n\n if (!canNavigateTo || canNavigateTo(nextIndicator.key)) {\n return nextIndex;\n }\n\n nextIndex += increment;\n }\n\n return null;\n };\n\n const handleIndicatorKeyDown = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n if (!indicators || !onStepClick) {\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(index + 1, 1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(index - 1, -1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(0, 1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n const nextIndex = getNavigableIndex(stepIndicators.length - 1, -1);\n if (nextIndex !== null) {\n handleIndicatorClick(stepIndicators[nextIndex].key);\n }\n }\n };\n\n const renderStepContent = () => (\n <AnimatePresence \n mode='wait' \n custom={direction} \n initial={false}>\n <motion.div\n key={activeStep}\n custom={direction}\n variants={stepVariants}\n initial='enter'\n animate='center'\n exit='exit'\n transition={{ duration: prefersReducedMotion ? 0 : 0.25 }}\n className={`stepper-step ${className}`}\n id={activePanelId}\n role={indicators ? 'tabpanel' : undefined}\n aria-labelledby={indicators ? `${stepperId}-${activeStep}-tab` : undefined}\n tabIndex={0}>\n {currentStep?.content}\n </motion.div>\n </AnimatePresence>\n );\n\n if(!indicators){\n return (\n <div ref={ref} className='stepper-standalone'>\n {renderStepContent()}\n </div>\n );\n }\n\n return (\n <div ref={ref} className='stepper-with-sidebar d-flex overflow-hidden flex-1'>\n <div className='stepper-sidebar d-flex column gap-05' role='tablist' aria-orientation='vertical'>\n {stepIndicators.map((indicator, index) => {\n const indicatorIndex = steps.findIndex((s) => s.key === indicator.key);\n const isActive = indicator.key === activeStep;\n const isComplete = indicatorIndex < currentIndex;\n const isClickable = !canNavigateTo || canNavigateTo(indicator.key);\n const tabId = `${stepperId}-${indicator.key}-tab`;\n const panelId = `${stepperId}-${indicator.key}-panel`;\n \n return (\n <div className=\"\" key={indicator.key}>\n <button\n id={tabId}\n type='button'\n role='tab'\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n className={`stepper-indicator d-flex items-center gap-1 ${isActive ? 'active' : ''} ${isComplete ? 'complete' : ''} ${isClickable && onStepClick ? 'cursor-pointer' : ''}`}\n disabled={!isClickable || !onStepClick}\n onClick={() => handleIndicatorClick(indicator.key)}\n onKeyDown={(event) => handleIndicatorKeyDown(event, index)}\n >\n <div className='stepper-indicator-number d-flex flex-center font-weight-6'>\n {index + 1}\n </div>\n <div className='stepper-indicator-label d-flex column gap-025'>\n <span className='stepper-indicator-title'>{indicator.label}</span>\n {indicator.description && (\n <small className='stepper-indicator-desc'>{indicator.description}</small>\n )}\n </div>\n </button>\n {index < stepIndicators.length - 1 && (\n <div className={`stepper-line ${indicatorIndex < currentIndex ? 'active' : ''}`} />\n )}\n </div>\n );\n })}\n </div>\n <div className='stepper-content y-auto flex-1'>\n {renderStepContent()}\n </div>\n </div>\n );\n}) as <K extends string>(props: StepperProps<K> & { ref?: Ref<HTMLDivElement> }) => ReactElement;\n\n(Stepper as { displayName?: string }).displayName = 'Stepper';\n\nexport default Stepper;\n","import { cn } from '@/shared/utils/cn';\nimport './TextInput.css';\nimport { forwardRef, useRef, useState } from 'react';\nimport type { FocusEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_TEXT_INPUT_NAME_ERROR = 'TextInput requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\n\ntype InputSize = 'sm' | 'md' | 'lg';\n\nexport interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Vertical rhythm of the control. Surface tokens stay constant across sizes. */\n size?: InputSize;\n /** Renders the danger border treatment; pair with `aria-invalid`. */\n hasError?: boolean;\n /** Leading adornment (e.g. a lucide icon). Decorative — kept out of the a11y tree. */\n leftIcon?: ReactNode;\n /** Trailing adornment (e.g. a lucide icon or action). Decorative. */\n rightIcon?: ReactNode;\n /** Stretch the control to fill its container. */\n fullWidth?: boolean;\n /** Extra class for the outer surface wrapper. */\n containerClassName?: string;\n}\n\nconst TextInput = forwardRef<HTMLInputElement, TextInputProps>(({\n size = 'md',\n hasError = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n containerClassName,\n className,\n disabled,\n type = 'text',\n id,\n title,\n onFocus,\n onBlur,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n const accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TEXT_INPUT_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setIsFocused(false);\n onBlur?.(event);\n };\n\n const containerClasses = cn(\n 'volt-text-input',\n `volt-text-input--${size}`,\n fullWidth && 'volt-text-input--full-width',\n hasError && 'volt-text-input--error',\n isFocused && 'volt-text-input--focused',\n disabled && 'volt-text-input--disabled',\n containerClassName\n );\n\n return (\n <div className={containerClasses}>\n {leftIcon && (\n <span className='volt-text-input__affix volt-text-input__affix--left' aria-hidden='true'>\n {leftIcon}\n </span>\n )}\n <input\n ref={ref}\n id={id}\n type={type}\n disabled={disabled}\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-invalid={ariaInvalid ?? (hasError || undefined)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn('volt-text-input__field', className)}\n {...props}\n />\n {rightIcon && (\n <span className='volt-text-input__affix volt-text-input__affix--right' aria-hidden='true'>\n {rightIcon}\n </span>\n )}\n </div>\n );\n});\n\nTextInput.displayName = 'TextInput';\n\nexport default TextInput;\n","import { cn } from '@/shared/utils/cn';\nimport './Textarea.css';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef } from 'react';\nimport type { ChangeEventHandler, TextareaHTMLAttributes } from 'react';\n\nconst MISSING_TEXTAREA_NAME_ERROR = 'Textarea requires an accessible name via aria-label, aria-labelledby, or an external label bound to its id.';\n\ntype TextareaSize = 'sm' | 'md' | 'lg';\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'rows'> {\n /** Vertical rhythm of the control. Surface tokens stay constant across sizes. */\n size?: TextareaSize;\n /** Renders the danger border treatment; pair with `aria-invalid`. */\n hasError?: boolean;\n /** Grow the field with its content (up to `maxRows`) instead of scrolling. */\n autosize?: boolean;\n /** Minimum visible rows (and the floor for autosize). */\n minRows?: number;\n /** Ceiling for autosize growth; beyond this the field scrolls. */\n maxRows?: number;\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(({\n size = 'md',\n hasError = false,\n autosize = false,\n minRows = 2,\n maxRows = 8,\n className,\n disabled,\n id,\n title,\n value,\n onChange,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const innerRef = useRef<HTMLTextAreaElement | null>(null);\n\n // Expose the underlying node to the forwarded ref while keeping a local\n // handle for autosize measurements.\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement, []);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n const hasExternalLabelContract = Boolean(id);\n\n const accessibleName = resolvedAriaLabel ?? resolvedTitle;\n if (!resolvedAriaLabelledBy && !accessibleName && !hasExternalLabelContract) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TEXTAREA_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const resize = useCallback(() => {\n const node = innerRef.current;\n if (!node || !autosize) return;\n\n const computed = window.getComputedStyle(node);\n const lineHeight = parseFloat(computed.lineHeight) || 20;\n const paddingY = parseFloat(computed.paddingTop) + parseFloat(computed.paddingBottom);\n const borderY = parseFloat(computed.borderTopWidth) + parseFloat(computed.borderBottomWidth);\n const verticalChrome = paddingY + borderY;\n\n // Reset so scrollHeight reflects the true content height, then clamp\n // between the min/max row bounds.\n node.style.height = 'auto';\n const minHeight = minRows * lineHeight + verticalChrome;\n const maxHeight = maxRows * lineHeight + verticalChrome;\n const next = Math.min(Math.max(node.scrollHeight, minHeight), maxHeight);\n node.style.height = `${next}px`;\n }, [autosize, minRows, maxRows]);\n\n useLayoutEffect(() => {\n resize();\n }, [resize, value]);\n\n useEffect(() => {\n if (!autosize) return;\n window.addEventListener('resize', resize);\n return () => window.removeEventListener('resize', resize);\n }, [autosize, resize]);\n\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onChange?.(event);\n if (autosize) resize();\n };\n\n const classes = cn(\n 'volt-textarea',\n `volt-textarea--${size}`,\n autosize && 'volt-textarea--autosize',\n hasError && 'volt-textarea--error',\n className\n );\n\n return (\n <textarea\n ref={innerRef}\n id={id}\n rows={minRows}\n disabled={disabled}\n title={resolvedTitle}\n aria-label={accessibleName}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-invalid={ariaInvalid ?? (hasError || undefined)}\n value={value}\n onChange={handleChange}\n className={classes}\n {...props}\n />\n );\n});\n\nTextarea.displayName = 'Textarea';\n\nexport default Textarea;\n","import { cn } from '@/shared/utils/cn';\nimport TextInput from '../TextInput';\nimport IconButton from '../IconButton';\nimport './NumberInput.css';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { forwardRef, useCallback, useRef } from 'react';\nimport type { ChangeEventHandler } from 'react';\nimport type { TextInputProps } from '../TextInput';\n\nexport interface NumberInputProps extends Omit<TextInputProps, 'type' | 'value' | 'defaultValue' | 'onChange'> {\n min?: number;\n max?: number;\n /** Increment applied by the steppers and arrow keys. Defaults to 1. */\n step?: number;\n value?: number | '';\n defaultValue?: number;\n /** Native change passthrough (fires with the raw string event). */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Parsed-number callback; receives `NaN` when the field is cleared/invalid. */\n onValueChange?: (value: number) => void;\n /** Render the increment/decrement stepper buttons. */\n showSteppers?: boolean;\n}\n\nconst clamp = (value: number, min?: number, max?: number): number => {\n let next = value;\n if (typeof min === 'number') next = Math.max(next, min);\n if (typeof max === 'number') next = Math.min(next, max);\n return next;\n};\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(({\n min,\n max,\n step = 1,\n value,\n defaultValue,\n onChange,\n onValueChange,\n showSteppers = true,\n disabled,\n containerClassName,\n rightIcon,\n ...props\n}, ref) => {\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n // Merge the forwarded ref with a local handle used to read/step the value.\n const setRefs = useCallback((node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }, [ref]);\n\n const emitValue = useCallback((next: number) => {\n onValueChange?.(next);\n }, [onValueChange]);\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onChange?.(event);\n const raw = event.target.value;\n emitValue(raw === '' ? Number.NaN : Number(raw));\n };\n\n const stepBy = useCallback((direction: 1 | -1) => {\n if (disabled) return;\n\n const current = (() => {\n if (typeof value === 'number') return value;\n const parsed = Number(innerRef.current?.value);\n return Number.isFinite(parsed) ? parsed : (min ?? 0);\n })();\n\n const next = clamp(current + direction * step, min, max);\n emitValue(next);\n\n // Keep the DOM in sync for uncontrolled usage.\n if (value === undefined && innerRef.current) {\n innerRef.current.value = String(next);\n }\n }, [disabled, value, min, max, step, emitValue]);\n\n const steppers = showSteppers ? (\n <span className='volt-number-input__steppers' aria-hidden='true'>\n <IconButton\n tabIndex={-1}\n aria-label='Increment value'\n className='volt-number-input__stepper'\n disabled={disabled || (typeof max === 'number' && typeof value === 'number' && value >= max)}\n onClick={() => stepBy(1)}\n >\n <ChevronUp />\n </IconButton>\n <IconButton\n tabIndex={-1}\n aria-label='Decrement value'\n className='volt-number-input__stepper'\n disabled={disabled || (typeof min === 'number' && typeof value === 'number' && value <= min)}\n onClick={() => stepBy(-1)}\n >\n <ChevronDown />\n </IconButton>\n </span>\n ) : null;\n\n return (\n <TextInput\n ref={setRefs}\n type='number'\n inputMode='decimal'\n min={min}\n max={max}\n step={step}\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={handleChange}\n containerClassName={cn('volt-number-input', containerClassName)}\n rightIcon={steppers ?? rightIcon}\n {...props}\n />\n );\n});\n\nNumberInput.displayName = 'NumberInput';\n\nexport default NumberInput;\n","import { cn } from '@/shared/utils/cn';\nimport './FormField.css';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport { forwardRef, useId } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type FormFieldLayout = 'stacked' | 'inline';\n\nexport interface FormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Visible field label. Rendered as a `<label>` bound to `htmlFor` when present. */\n label?: ReactNode;\n /** Associates the label with the control it wraps (the control's `id`). */\n htmlFor?: string;\n /** Marks the field as required and renders a danger-toned asterisk after the label. */\n required?: boolean;\n /** Error message. When set, the field is described by a danger-toned message. */\n error?: ReactNode;\n /** Secondary helper text shown when there's no error. */\n helpText?: ReactNode;\n /** `stacked` (default) renders label above the control; `inline` uses a label-column grid. */\n layout?: FormFieldLayout;\n /** The control (input/select/checkbox/etc.) this field wraps. */\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * Generic field wrapper that pairs a label and helper/error messaging with an\n * arbitrary control. Composes {@link Stack} + {@link Text}; carries no input\n * styling of its own so any control primitive can sit inside it.\n *\n * Accessibility: the label is a real `<label htmlFor>` when `htmlFor` is given,\n * and the helper/error text gets a stable id so callers can wire\n * `aria-describedby` on the control (exposed via the resolved id on the message).\n */\nconst FormField = forwardRef<HTMLDivElement, FormFieldProps>(({\n label,\n htmlFor,\n required = false,\n error,\n helpText,\n layout = 'stacked',\n children,\n className,\n id,\n ...rest\n}, ref) => {\n const reactId = useId();\n const baseId = id ?? `volt-form-field-${reactId}`;\n const messageId = `${baseId}-message`;\n\n const hasLabel = label != null && label !== '';\n const hasError = error != null && error !== '';\n const hasHelp = !hasError && helpText != null && helpText !== '';\n const message = hasError ? error : helpText;\n const hasMessage = hasError || hasHelp;\n\n const labelText = (\n <Text as='span' size='sm' weight='medium' tone='secondary'>\n {label}\n {required && (\n <span className='volt-form-field__required' aria-hidden='true'>*</span>\n )}\n </Text>\n );\n\n const labelNode = hasLabel ? (\n htmlFor ? (\n <label htmlFor={htmlFor} className='volt-form-field__label'>\n {labelText}\n </label>\n ) : (\n <div className='volt-form-field__label'>{labelText}</div>\n )\n ) : null;\n\n const messageNode = hasMessage ? (\n <Text\n id={messageId}\n as='small'\n size='xs'\n tone={hasError ? undefined : 'muted'}\n className={cn('volt-form-field__message', hasError && 'volt-form-field__message--error')}\n role={hasError ? 'alert' : undefined}\n >\n {message}\n </Text>\n ) : null;\n\n if (layout === 'inline') {\n return (\n <div\n ref={ref}\n id={baseId}\n className={cn(\n 'volt-form-field volt-form-field--inline',\n !hasLabel && 'volt-form-field--no-label',\n className\n )}\n {...rest}\n >\n {labelNode}\n <div className='volt-form-field__body'>\n <div className='volt-form-field__control'>{children}</div>\n {messageNode}\n </div>\n </div>\n );\n }\n\n return (\n <Stack\n ref={ref}\n id={baseId}\n className={cn('volt-form-field', className)}\n {...rest}\n >\n {labelNode}\n <div className='volt-form-field__control'>{children}</div>\n {messageNode}\n </Stack>\n );\n});\n\nFormField.displayName = 'FormField';\n\nexport default FormField;\n","import { cn } from '@/shared/utils/cn';\nimport './Checkbox.css';\nimport Text from '../Text';\nimport { Check, Minus } from 'lucide-react';\nimport { forwardRef, useEffect, useId, useRef } from 'react';\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_CHECKBOX_NAME_ERROR = 'Checkbox requires an accessible name via the `label` prop, `aria-label`, `aria-labelledby`, or an external label bound to its id.';\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\n\ntype NativeCheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>;\n\nexport interface CheckboxProps extends NativeCheckboxProps {\n /** Controlled checked state. */\n checked?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Inline text label rendered after the box and wired to the input. */\n label?: ReactNode;\n /** Renders the mixed (—) state. Maps to the input's `indeterminate` property. */\n indeterminate?: boolean;\n disabled?: boolean;\n size?: CheckboxSize;\n className?: string;\n /** Class applied to the outer wrapper `<label>`. */\n containerClassName?: string;\n}\n\n/**\n * Accessible custom-styled checkbox built on a real `<input type=\"checkbox\">`.\n * The native input is visually hidden but remains the source of truth for state,\n * keyboard interaction (Space toggles), and assistive tech. The brand-tinted box\n * is purely presentational (`aria-hidden`).\n *\n * `--color-brand-primary` fills the checked box; `--color-on-accent` colors the check.\n */\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(({\n checked,\n onChange,\n label,\n indeterminate = false,\n disabled = false,\n size = 'md',\n className,\n containerClassName,\n id,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const innerRef = useRef<HTMLInputElement | null>(null);\n const hasWarnedForMissingNameRef = useRef(false);\n const reactId = useId();\n const inputId = id ?? `volt-checkbox-${reactId}`;\n\n // The `indeterminate` flag only exists as a DOM property, never an attribute.\n useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const setRefs = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n };\n\n const hasVisibleLabel = label != null && label !== '';\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n\n if (!hasVisibleLabel && !resolvedAriaLabel && !resolvedAriaLabelledBy && !resolvedTitle) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_CHECKBOX_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'volt-checkbox',\n `volt-checkbox--${size}`,\n checked && 'volt-checkbox--checked',\n indeterminate && 'volt-checkbox--indeterminate',\n disabled && 'volt-checkbox--disabled',\n containerClassName\n )}\n title={resolvedTitle}\n >\n <input\n ref={setRefs}\n id={inputId}\n type='checkbox'\n className={cn('volt-checkbox__input', className)}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-checked={indeterminate ? 'mixed' : undefined}\n aria-label={!hasVisibleLabel ? resolvedAriaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n {...props}\n />\n <span className='volt-checkbox__box' aria-hidden='true'>\n {indeterminate ? (\n <Minus className='volt-checkbox__indicator' strokeWidth={3} />\n ) : (\n <Check className='volt-checkbox__indicator' strokeWidth={3} />\n )}\n </span>\n {hasVisibleLabel && (\n <Text as='span' size='sm' tone='primary' className='volt-checkbox__label'>\n {label}\n </Text>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import { cn } from '@/shared/utils/cn';\nimport './Radio.css';\nimport Text from '../Text';\nimport { forwardRef, useId, useRef } from 'react';\nimport type { ChangeEventHandler, InputHTMLAttributes, ReactNode } from 'react';\n\nconst MISSING_RADIO_NAME_ERROR = 'Radio requires an accessible name via the `label` prop, `aria-label`, `aria-labelledby`, or an external label bound to its id.';\n\nexport type RadioSize = 'sm' | 'md' | 'lg';\n\ntype NativeRadioProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>;\n\nexport interface RadioProps extends NativeRadioProps {\n /** Controlled checked state. */\n checked?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /** Inline text label rendered after the dot and wired to the input. */\n label?: ReactNode;\n /** Radio group name. Required for native single-selection within a group. */\n name?: string;\n /** Submitted value for this option. */\n value?: string;\n disabled?: boolean;\n size?: RadioSize;\n className?: string;\n /** Class applied to the outer wrapper `<label>`. */\n containerClassName?: string;\n}\n\n/**\n * Accessible custom-styled radio built on a real `<input type=\"radio\">`.\n * The native input remains the source of truth for state, keyboard interaction\n * (arrow keys move within a `name` group), and assistive tech; the brand-tinted\n * circle is presentational (`aria-hidden`).\n *\n * `--color-brand-primary` fills the selected circle; `--color-on-accent` is the dot.\n */\nconst Radio = forwardRef<HTMLInputElement, RadioProps>(({\n checked,\n onChange,\n label,\n name,\n value,\n disabled = false,\n size = 'md',\n className,\n containerClassName,\n id,\n title,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const reactId = useId();\n const inputId = id ?? `volt-radio-${reactId}`;\n\n const hasVisibleLabel = label != null && label !== '';\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const resolvedTitle = title?.trim() || undefined;\n\n if (!hasVisibleLabel && !resolvedAriaLabel && !resolvedAriaLabelledBy && !resolvedTitle) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_RADIO_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'volt-radio',\n `volt-radio--${size}`,\n checked && 'volt-radio--checked',\n disabled && 'volt-radio--disabled',\n containerClassName\n )}\n title={resolvedTitle}\n >\n <input\n ref={ref}\n id={inputId}\n type='radio'\n className={cn('volt-radio__input', className)}\n checked={checked}\n onChange={onChange}\n name={name}\n value={value}\n disabled={disabled}\n aria-label={!hasVisibleLabel ? resolvedAriaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n {...props}\n />\n <span className='volt-radio__box' aria-hidden='true'>\n <span className='volt-radio__indicator' />\n </span>\n {hasVisibleLabel && (\n <Text as='span' size='sm' tone='primary' className='volt-radio__label'>\n {label}\n </Text>\n )}\n </label>\n );\n});\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import { cn } from '@/shared/utils/cn';\nimport './Tabs.css';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n ButtonHTMLAttributes,\n HTMLAttributes,\n KeyboardEvent,\n MutableRefObject,\n ReactNode\n} from 'react';\nimport type { ControlSize } from '../types';\n\nconst MISSING_TABS_LABEL_ERROR = 'Tabs.List requires an accessible name via aria-label or aria-labelledby so assistive tech can announce the tab group.';\n\n/** Tabs supports the standard control sizes; underline content tabs read best at sm/md/lg. */\nexport type TabsSize = Extract<ControlSize, 'sm' | 'md' | 'lg'>;\n\ninterface TabsContextValue {\n /** Stable id used to namespace every tab/panel id pair. */\n baseId: string;\n /** The currently selected tab value. */\n value: string | undefined;\n /** Selects a tab by value (no-op when disabled). */\n selectValue: (next: string) => void;\n /** Visual size shared with Tab/Panel descendants. */\n size: TabsSize;\n /** Registry of focusable (non-disabled) tab values in DOM order, for roving focus. */\n registerTab: (value: string, disabled: boolean) => void;\n unregisterTab: (value: string) => void;\n /** Imperatively move focus to the tab with the given value. */\n focusTab: (value: string) => void;\n /** Ordered, currently-focusable tab values resolved on demand. */\n orderedValuesRef: MutableRefObject<string[]>;\n tabNodesRef: MutableRefObject<Map<string, HTMLButtonElement>>;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = (component: string): TabsContextValue => {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(`${component} must be rendered inside <Tabs>.`);\n }\n return ctx;\n};\n\nconst tabId = (baseId: string, value: string) => `${baseId}-tab-${value}`;\nconst panelId = (baseId: string, value: string) => `${baseId}-panel-${value}`;\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Controlled selected value. Pair with `onChange`. */\n value?: string;\n /** Initial selected value when uncontrolled. */\n defaultValue?: string;\n /** Fires with the next value whenever selection changes. */\n onChange?: (value: string) => void;\n /** Visual scale shared by every tab + panel. */\n size?: TabsSize;\n children?: ReactNode;\n className?: string;\n};\n\ninterface TabsComponent\n extends React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>> {\n List: typeof TabsList;\n Tab: typeof Tab;\n Panel: typeof TabsPanel;\n};\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsProps>(({\n value: controlledValue,\n defaultValue,\n onChange,\n size = 'md',\n className,\n children,\n ...rest\n}, ref) => {\n const baseId = useId();\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<string | undefined>(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n // DOM-ordered registry: a Map preserves insertion order, which mirrors render order.\n const registryRef = useRef<Map<string, boolean>>(new Map());\n const orderedValuesRef = useRef<string[]>([]);\n const tabNodesRef = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n const recomputeOrder = useCallback(() => {\n orderedValuesRef.current = Array.from(registryRef.current.entries())\n .filter(([, disabled]) => !disabled)\n .map(([tabValue]) => tabValue);\n }, []);\n\n const registerTab = useCallback((tabValue: string, disabled: boolean) => {\n registryRef.current.set(tabValue, disabled);\n recomputeOrder();\n }, [recomputeOrder]);\n\n const unregisterTab = useCallback((tabValue: string) => {\n registryRef.current.delete(tabValue);\n tabNodesRef.current.delete(tabValue);\n recomputeOrder();\n }, [recomputeOrder]);\n\n const selectValue = useCallback((next: string) => {\n if (!isControlled) {\n setUncontrolledValue(next);\n }\n onChange?.(next);\n }, [isControlled, onChange]);\n\n const focusTab = useCallback((tabValue: string) => {\n tabNodesRef.current.get(tabValue)?.focus();\n }, []);\n\n const contextValue = useMemo<TabsContextValue>(() => ({\n baseId,\n value,\n selectValue,\n size,\n registerTab,\n unregisterTab,\n focusTab,\n orderedValuesRef,\n tabNodesRef\n }), [baseId, value, selectValue, size, registerTab, unregisterTab, focusTab]);\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn('volt-tabs', `volt-tabs--${size}`, className)}\n {...rest}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n});\n\nTabsRoot.displayName = 'Tabs';\n\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n className?: string;\n};\n\nconst TabsList = forwardRef<HTMLDivElement, TabsListProps>(({\n className,\n children,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}, ref) => {\n const { size } = useTabsContext('Tabs.List');\n const hasWarnedForMissingNameRef = useRef(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n\n if (!resolvedAriaLabel && !resolvedAriaLabelledBy && !hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_TABS_LABEL_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n return (\n <div\n ref={ref}\n role='tablist'\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-orientation='horizontal'\n className={cn('volt-tabs__list', 'd-flex', 'items-end', 'border-bottom-soft', `volt-tabs__list--${size}`, className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nTabsList.displayName = 'Tabs.List';\n\ntype NativeTabButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'onClick'>;\n\nexport interface TabProps extends NativeTabButtonProps {\n /** Identifies this tab; must match the Panel `value` it controls. */\n value: string;\n children?: ReactNode;\n /** Optional leading icon, rendered decoratively (aria-hidden). */\n leftIcon?: ReactNode;\n disabled?: boolean;\n className?: string;\n};\n\nconst Tab = forwardRef<HTMLButtonElement, TabProps>(({\n value,\n children,\n leftIcon,\n disabled = false,\n className,\n id,\n onKeyDown,\n ...rest\n}, ref) => {\n const {\n baseId,\n value: selectedValue,\n selectValue,\n size,\n registerTab,\n unregisterTab,\n focusTab,\n orderedValuesRef,\n tabNodesRef\n } = useTabsContext('Tabs.Tab');\n\n const isSelected = selectedValue === value;\n const resolvedTabId = id ?? tabId(baseId, value);\n const resolvedPanelId = panelId(baseId, value);\n\n // Register in DOM order for roving focus; keep the registry in sync with disabled state.\n const setNodeRef = useCallback((node: HTMLButtonElement | null) => {\n if (node) {\n tabNodesRef.current.set(value, node);\n registerTab(value, disabled);\n } else {\n unregisterTab(value);\n }\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<HTMLButtonElement | null>).current = node;\n }\n }, [value, disabled, registerTab, unregisterTab, tabNodesRef, ref]);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n\n const order = orderedValuesRef.current;\n const currentIndex = order.indexOf(value);\n if (currentIndex === -1) {\n return;\n }\n\n let nextValue: string | undefined;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextValue = order[(currentIndex + 1) % order.length];\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextValue = order[(currentIndex - 1 + order.length) % order.length];\n break;\n case 'Home':\n nextValue = order[0];\n break;\n case 'End':\n nextValue = order[order.length - 1];\n break;\n default:\n return;\n }\n\n if (nextValue !== undefined) {\n event.preventDefault();\n selectValue(nextValue);\n focusTab(nextValue);\n }\n };\n\n return (\n <button\n ref={setNodeRef}\n type='button'\n role='tab'\n id={resolvedTabId}\n aria-selected={isSelected}\n aria-controls={resolvedPanelId}\n tabIndex={isSelected ? 0 : -1}\n disabled={disabled}\n className={cn(\n 'volt-tabs__tab',\n 'd-flex',\n 'items-center',\n 'transition-fast',\n `volt-tabs__tab--${size}`,\n isSelected && 'is-selected',\n disabled && 'is-disabled',\n className\n )}\n onClick={() => {\n if (disabled) return;\n selectValue(value);\n }}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {leftIcon && (\n <span className='volt-tabs__tab-icon d-flex flex-center' aria-hidden='true'>\n {leftIcon}\n </span>\n )}\n <span className='volt-tabs__tab-label'>{children}</span>\n <span className='volt-tabs__indicator' aria-hidden='true' />\n </button>\n );\n});\n\nTab.displayName = 'Tabs.Tab';\n\nexport interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Identifies the tab whose selection reveals this panel. */\n value: string;\n children?: ReactNode;\n /**\n * Keep the panel mounted (just hidden) when inactive. Defaults to `false`,\n * which unmounts inactive panels so heavy 3D/chart content does not stay live.\n */\n keepMounted?: boolean;\n className?: string;\n};\n\nconst TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(({\n value,\n children,\n keepMounted = false,\n className,\n id,\n ...rest\n}, ref) => {\n const { baseId, value: selectedValue } = useTabsContext('Tabs.Panel');\n const isSelected = selectedValue === value;\n\n if (!isSelected && !keepMounted) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n id={id ?? panelId(baseId, value)}\n aria-labelledby={tabId(baseId, value)}\n hidden={!isSelected}\n tabIndex={0}\n className={cn('volt-tabs__panel', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nTabsPanel.displayName = 'Tabs.Panel';\n\nconst Tabs = TabsRoot as TabsComponent;\nTabs.List = TabsList;\nTabs.Tab = Tab;\nTabs.Panel = TabsPanel;\n\nexport { TabsList, Tab, TabsPanel };\n\nexport default Tabs;\n","import './Breadcrumbs.css';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\nexport interface BreadcrumbItem {\n id: string;\n title: string;\n leftIcon?: ReactNode;\n onClick?: () => void;\n};\n\nexport type BreadcrumbsVariant = 'default' | 'compact' | 'pill';\n\ninterface BreadcrumbsProps {\n items: BreadcrumbItem[];\n variant?: BreadcrumbsVariant;\n separator?: ReactNode;\n ariaLabel?: string;\n title?: string;\n className?: string;\n onItemClick?: (item: BreadcrumbItem, index: number) => void;\n};\n\nconst MAX_BREADCRUMB_LABEL_LENGTH = 24;\n\nconst truncateBreadcrumbLabel = (label: string) => {\n if (label.length <= MAX_BREADCRUMB_LABEL_LENGTH) {\n return label;\n }\n\n return `${label.slice(0, MAX_BREADCRUMB_LABEL_LENGTH - 1)}…`;\n};\n\nconst Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(({\n items,\n variant = 'default',\n separator,\n ariaLabel = 'Breadcrumbs',\n title,\n className,\n onItemClick\n}, ref) => {\n if (!items.length) {\n return null;\n }\n\n const resolvedSeparator = separator ?? (\n variant === 'compact'\n ? <span className='volt-breadcrumbs__separator'>/</span>\n : <ChevronRight size={12} className='volt-breadcrumbs__separator' aria-hidden='true' />\n );\n\n return (\n <nav\n ref={ref}\n className={cn('volt-breadcrumbs', `volt-breadcrumbs--${variant}`, className)}\n aria-label={ariaLabel}\n title={title}\n >\n <ol className='volt-breadcrumbs__list'>\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n const displayTitle = variant === 'compact'\n ? truncateBreadcrumbLabel(item.title)\n : item.title;\n\n const handleClick = () => {\n item.onClick?.();\n onItemClick?.(item, index);\n };\n\n return (\n <li key={item.id} className='volt-breadcrumbs__item'>\n {index > 0 && resolvedSeparator}\n {isCurrent ? (\n <span\n className='volt-breadcrumbs__current'\n aria-current='page'\n title={item.title}\n >\n {item.leftIcon && (\n <span aria-hidden='true'>{item.leftIcon}</span>\n )}\n {displayTitle}\n </span>\n ) : (\n <button\n type='button'\n className='volt-breadcrumbs__trigger'\n onClick={handleClick}\n title={item.title}\n aria-label={`Open ${item.title}`}\n >\n {item.leftIcon && (\n <span aria-hidden='true'>{item.leftIcon}</span>\n )}\n {displayTitle}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\nexport default Breadcrumbs;\n","import IconButton from '@/shared/presentation/primitives/IconButton';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport './CollapsibleSection.css';\nimport { ChevronDown, Trash2, Plus } from 'lucide-react';\nimport { useState, useEffect, memo, useId, forwardRef } from 'react';\nimport type { MouseEvent, ReactNode } from 'react';\n\ntype CollapsibleSectionHeadingTag = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\ninterface CollapsibleSectionProps {\n title: string;\n children: ReactNode;\n defaultExpanded?: boolean;\n expanded?: boolean;\n onExpandedChange?: (next: boolean) => void;\n className?: string;\n headerClassName?: string;\n titleClassName?: string;\n iconClassName?: string;\n bodyClassName?: string;\n contentClassName?: string;\n noSpacing?: boolean;\n arrowSize?: number;\n useDefaultHeaderStyles?: boolean;\n useDefaultTitleStyles?: boolean;\n onDelete?: () => void;\n deleteActionLabel?: string;\n deleteActionAlwaysVisible?: boolean;\n onAdd?: () => void;\n icon?: ReactNode;\n headerAction?: ReactNode;\n collapsible?: boolean;\n titleAs?: CollapsibleSectionHeadingTag;\n};\n\nconst CollapsibleSection = forwardRef<HTMLElement, CollapsibleSectionProps>(({\n title,\n children,\n defaultExpanded = false,\n expanded,\n onExpandedChange,\n className = '',\n headerClassName = '',\n titleClassName = '',\n bodyClassName = '',\n contentClassName = '',\n noSpacing = false,\n arrowSize = 20,\n useDefaultHeaderStyles = true,\n useDefaultTitleStyles = true,\n onDelete,\n deleteActionLabel = 'Delete section',\n deleteActionAlwaysVisible = false,\n onAdd,\n headerAction,\n collapsible = true,\n titleAs = 'h3'\n}, ref) => {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n const [hasBeenExpanded, setHasBeenExpanded] = useState(defaultExpanded);\n const [height, setHeight] = useState<number | 'auto'>(defaultExpanded ? 'auto' : 0);\n const reactId = useId();\n const isControlled = typeof expanded === 'boolean';\n const actualExpanded = isControlled ? expanded : isExpanded;\n const headerBaseClass = useDefaultHeaderStyles ? 'collapsible-section-header' : '';\n const titleBaseClass = useDefaultTitleStyles ? 'collapsible-section-title font-weight-6 color-primary' : 'collapsible-section-title';\n const bodyId = `collapsible-section-body-${reactId}`;\n const headingId = `collapsible-section-heading-${reactId}`;\n const triggerId = `collapsible-section-trigger-${reactId}`;\n const TitleTag = titleAs;\n\n useEffect(() => {\n if (actualExpanded && !hasBeenExpanded) {\n setHasBeenExpanded(true);\n }\n }, [actualExpanded, hasBeenExpanded]);\n\n useEffect(() => {\n setHeight(actualExpanded ? 'auto' : 0);\n }, [actualExpanded]);\n\n const handleToggle = () => {\n if (!collapsible) return;\n const next = !actualExpanded;\n if (isControlled) {\n onExpandedChange?.(next);\n return;\n }\n setIsExpanded(next);\n };\n\n const handleDelete = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onDelete?.();\n };\n\n const handleAdd = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onAdd?.();\n };\n\n const actions = (\n <Row gap='025' className='collapsible-section-actions'>\n {headerAction}\n {onAdd && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleAdd}\n className='collapsible-section-action--add'\n title='Add item'\n >\n <Plus size={16} />\n </IconButton>\n )}\n {onDelete && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleDelete}\n className={`collapsible-section-action--delete ${deleteActionAlwaysVisible ? 'collapsible-section-action--delete-visible' : ''}`}\n title={deleteActionLabel}\n aria-label={deleteActionLabel}\n >\n <Trash2 size={16} />\n </IconButton>\n )}\n </Row>\n );\n\n return (\n <Stack ref={ref} mb={noSpacing ? undefined : '1-5'} className={className}>\n <Row justify='between' gap='05' className={`${headerBaseClass} ${headerClassName}`}>\n <TitleTag id={headingId} className='collapsible-section-heading'>\n {collapsible ? (\n <Row gap='05' className='collapsible-section-header-row'>\n <button\n id={triggerId}\n type='button'\n className='collapsible-section-trigger d-flex items-center gap-05 u-select-none'\n onClick={handleToggle}\n aria-expanded={actualExpanded}\n aria-controls={bodyId}\n >\n <Row gap='05' className='collapsible-section-trigger-content'>\n <span className={`${titleBaseClass} ${titleClassName}`}>{title}</span>\n </Row>\n </button>\n {actions}\n <button\n type='button'\n className='collapsible-section-chevron-trigger d-flex flex-center color-muted'\n onClick={handleToggle}\n aria-expanded={actualExpanded}\n aria-controls={bodyId}\n aria-label={`${actualExpanded ? 'Collapse' : 'Expand'} ${title}`}\n >\n <div className={`collapsible-section-arrow d-flex flex-center ${!actualExpanded ? 'collapsible-section-arrow--collapsed' : ''}`} aria-hidden='true'>\n <ChevronDown size={arrowSize} />\n </div>\n </button>\n </Row>\n ) : (\n <Row gap='05' className='collapsible-section-title-row'>\n <Row gap='05' className='collapsible-section-trigger-content'>\n <span className={`${titleBaseClass} ${titleClassName}`}>{title}</span>\n </Row>\n {actions}\n </Row>\n )}\n </TitleTag>\n </Row>\n {collapsible && (\n <div\n id={bodyId}\n className={`collapsible-section-body ${bodyClassName}`}\n style={{ height }}\n role='region'\n aria-labelledby={triggerId}\n >\n <Stack className={`collapsible-section-content ${contentClassName}`}>\n {hasBeenExpanded ? children : null}\n </Stack>\n </div>\n )}\n\n {!collapsible && (\n <div id={bodyId} className={`collapsible-section-body collapsible-section-body--static ${bodyClassName}`} role='region' aria-labelledby={headingId}>\n <Stack className={`collapsible-section-content ${contentClassName}`}>\n {children}\n </Stack>\n </div>\n )}\n </Stack>\n );\n});\n\nCollapsibleSection.displayName = 'CollapsibleSection';\n\nexport default memo(CollapsibleSection);\n","import CloseButton from '../CloseButton';\nimport FloatingRootContext, { TopLayerRootContext } from '@/shared/presentation/contexts/FloatingRootContext';\nimport useMedia from '@/shared/presentation/hooks/use-media';\nimport './Modal.css';\nimport React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\n\ndeclare module 'react' {\n interface ButtonHTMLAttributes<T> extends React.HTMLAttributes<T> {\n command?: string;\n commandfor?: string;\n }\n}\n\ntype ModalTriggerElement = React.ReactElement<React.ButtonHTMLAttributes<HTMLButtonElement>>;\n\ninterface ModalProps {\n id: string;\n trigger?: ReactNode;\n title?: string;\n description?: string;\n children: ReactNode;\n footer?: ReactNode;\n className?: string;\n width?: string;\n onClose?: () => void;\n dismissible?: boolean;\n lazyMount?: boolean;\n};\n\nconst COARSE_POINTER_MEDIA_QUERY = '(pointer: coarse)';\nconst LAZY_MOUNT_UNMOUNT_DELAY_MS = 250;\n\nconst isDialogElement = (element: HTMLElement | null): element is HTMLDialogElement => {\n return element instanceof HTMLDialogElement;\n};\n\nconst getFocusableElements = (dialog: HTMLDialogElement) => {\n const selector = [\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(',');\n\n const focusableElements = dialog.querySelectorAll<HTMLElement>(selector);\n\n return Array.from(focusableElements).filter((element) => {\n return !element.hasAttribute('hidden') && element.getAttribute('aria-hidden') !== 'true';\n });\n};\n\nconst getInitialFocusTarget = (dialog: HTMLDialogElement, isCoarsePointer: boolean) => {\n if (isCoarsePointer) {\n return dialog;\n }\n\n const preferredFocusTarget = dialog.querySelector<HTMLElement>('[data-modal-initial-focus=\"true\"]');\n if (preferredFocusTarget && !preferredFocusTarget.hasAttribute('disabled')) {\n return preferredFocusTarget;\n }\n\n const autofocusElement = dialog.querySelector<HTMLElement>('[autofocus]');\n if (autofocusElement && !autofocusElement.hasAttribute('disabled')) {\n return autofocusElement;\n }\n\n return getFocusableElements(dialog)[0] ?? dialog;\n};\n\nconst Modal = ({\n id,\n trigger,\n title,\n description,\n children,\n footer,\n className = '',\n width,\n onClose,\n dismissible = true,\n lazyMount = false\n}: ModalProps) => {\n const [dialogElement, setDialogElement] = useState<HTMLDialogElement | null>(null);\n const [shouldRenderContents, setShouldRenderContents] = useState(!lazyMount);\n const restoreFocusElementRef = useRef<HTMLElement | null>(null);\n const isCoarsePointer = useMedia(COARSE_POINTER_MEDIA_QUERY);\n const titleId = title ? `${id}-title` : undefined;\n const descriptionId = description ? `${id}-description` : undefined;\n\n useEffect(() => {\n if (!dialogElement) {\n return;\n }\n\n let unmountTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const clearUnmountTimer = () => {\n if (unmountTimeoutId !== null) {\n clearTimeout(unmountTimeoutId);\n unmountTimeoutId = null;\n }\n };\n\n const syncDialogState = () => {\n if (dialogElement.open) {\n if (lazyMount) {\n clearUnmountTimer();\n setShouldRenderContents(true);\n }\n\n if (!restoreFocusElementRef.current && document.activeElement instanceof HTMLElement) {\n restoreFocusElementRef.current = document.activeElement;\n }\n\n window.requestAnimationFrame(() => {\n if (!dialogElement.open) {\n return;\n }\n\n const focusTarget = getInitialFocusTarget(dialogElement, isCoarsePointer);\n focusTarget.focus({ preventScroll: true });\n });\n\n return;\n }\n\n if (lazyMount) {\n clearUnmountTimer();\n unmountTimeoutId = setTimeout(() => {\n setShouldRenderContents(false);\n unmountTimeoutId = null;\n }, LAZY_MOUNT_UNMOUNT_DELAY_MS);\n }\n\n if (restoreFocusElementRef.current?.isConnected) {\n restoreFocusElementRef.current.focus({ preventScroll: true });\n }\n\n restoreFocusElementRef.current = null;\n };\n\n const observer = new MutationObserver(syncDialogState);\n observer.observe(dialogElement, { attributes: true, attributeFilter: ['open'] });\n syncDialogState();\n\n return () => {\n observer.disconnect();\n clearUnmountTimer();\n restoreFocusElementRef.current = null;\n };\n }, [dialogElement, isCoarsePointer, lazyMount]);\n\n const handleBackdropClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n if (!dismissible) {\n return;\n }\n\n const dialog = event.currentTarget;\n const rect = dialog.getBoundingClientRect();\n const isInDialog = (\n rect.top <= event.clientY\n && event.clientY <= rect.top + rect.height\n && rect.left <= event.clientX\n && event.clientX <= rect.left + rect.width\n );\n\n if (!isInDialog) {\n dialog.close();\n }\n };\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n if (!dismissible) {\n event.preventDefault();\n }\n };\n\n return (\n <>\n {trigger && React.isValidElement(trigger) ? (\n React.cloneElement(trigger as ModalTriggerElement, {\n command: 'show-modal',\n commandfor: id,\n 'aria-controls': id,\n 'aria-haspopup': 'dialog',\n type: 'button'\n })\n ) : null}\n\n <dialog\n ref={setDialogElement}\n id={id}\n className={`volt-modal ${className}`}\n style={width ? { maxWidth: width } : undefined}\n onClick={handleBackdropClick}\n onCancel={handleCancel}\n onClose={onClose}\n aria-modal='true'\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n >\n <TopLayerRootContext.Provider value={dialogElement ?? undefined}>\n <FloatingRootContext.Provider value={dialogElement ?? undefined}>\n {shouldRenderContents && (\n <div className='d-flex column w-max'>\n {(title || description) && (\n <div className='d-flex items-start content-between volt-modal-header'>\n <div className='d-flex column gap-025'>\n {title && <h3 id={titleId} className='font-size-4 font-weight-6'>{title}</h3>}\n {description && <p id={descriptionId} className='font-size-2 color-secondary'>{description}</p>}\n </div>\n {dismissible && (\n <CloseButton\n commandfor={id}\n command='close'\n aria-label='Close modal'\n />\n )}\n </div>\n )}\n\n <div className='volt-modal-body'>\n {children}\n </div>\n\n {footer && (\n <div className='d-flex items-center content-end gap-05 volt-modal-footer'>\n {footer}\n </div>\n )}\n </div>\n )}\n </FloatingRootContext.Provider>\n </TopLayerRootContext.Provider>\n </dialog>\n </>\n );\n};\n\nexport default Modal;\n\n/** Opens a modal dialog by id when it is not already open. */\nexport const openModal = (id: string) => {\n const element = document.getElementById(id);\n if (isDialogElement(element) && !element.open) {\n element.showModal();\n const toaster = document.getElementById('app-toaster-popover');\n if (toaster) {\n toaster.hidePopover();\n toaster.showPopover();\n }\n }\n};\n\n/** Closes a modal dialog by id when it is open. */\nexport const closeModal = (id: string) => {\n const element = document.getElementById(id);\n if (isDialogElement(element) && element.open) {\n element.close();\n }\n};\n\n/** Closes a modal and runs reset work after the close animation delay. */\nexport const resetModal = (id: string, reset: () => void, delay = 300) => {\n closeModal(id);\n window.setTimeout(reset, delay);\n};\n","import React from 'react';\n\nconst setRef = <T,>(ref: React.Ref<T> | undefined, value: T | null) => {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n\n if (ref && typeof ref === 'object') {\n Object.assign(ref, { current: value });\n }\n};\n\nconst composeRefs = <T,>(...refs: Array<React.Ref<T> | undefined>) => {\n return (node: T | null) => {\n refs.forEach((ref) => {\n setRef(ref, node);\n });\n };\n};\n\nexport default composeRefs;\n","import FloatingRootContext, {\n FloatingOwnerIdsContext,\n appendFloatingOwnerIds,\n hasFloatingOwnerId,\n useFloatingOwnerIds,\n useFloatingRoot\n} from '@/shared/presentation/contexts/FloatingRootContext';\nimport composeRefs from '@/shared/presentation/utilities/compose-refs';\nimport './Popover.css';\nimport { useFloating, useClick, useDismiss, useRole, useInteractions, FloatingPortal, FloatingFocusManager, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { useState, useCallback, useLayoutEffect, useMemo, cloneElement, isValidElement } from 'react';\nimport React from 'react';\nimport type { Placement, VirtualElement } from '@floating-ui/react';\nimport type { HTMLAttributes, ReactNode, ReactElement, Ref } from 'react';\n\ntype PopoverRole = 'dialog' | 'menu' | 'listbox' | 'tooltip';\n\ntype ContextMenuOpenPredicate = (event: React.MouseEvent<Element>) => boolean;\n\ntype PopoverTriggerProps = HTMLAttributes<HTMLElement> & {\n ref?: Ref<HTMLElement>;\n 'data-popover-trigger'?: string;\n};\n\ntype PopoverTriggerElement = ReactElement<PopoverTriggerProps>;\n\ninterface ContextMenuPosition {\n x: number;\n y: number;\n};\n\ninterface PopoverProps {\n id: string;\n trigger: ReactNode;\n children: ReactNode | ((close: () => void) => ReactNode);\n className?: string;\n noPadding?: boolean;\n triggerAction?: 'click' | 'contextmenu';\n onOpenChange?: (isOpen: boolean) => void;\n placement?: Placement;\n role?: PopoverRole;\n triggerAriaHaspopup?: 'menu' | 'dialog';\n ariaLabel?: string;\n ariaLabelledBy?: string;\n ariaDescribedBy?: string;\n shouldOpenOnContextMenu?: ContextMenuOpenPredicate;\n};\n\nconst Popover = ({\n id,\n trigger,\n children,\n className = '',\n noPadding = false,\n triggerAction = 'click',\n onOpenChange,\n placement = 'bottom-start',\n role: popoverRole = 'dialog',\n triggerAriaHaspopup,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n shouldOpenOnContextMenu\n}: PopoverProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [contextMenuPosition, setContextMenuPosition] = useState<ContextMenuPosition | null>(null);\n const [floatingElement, setFloatingElement] = useState<HTMLElement | null>(null);\n const floatingRoot = useFloatingRoot();\n const floatingOwnerIds = useFloatingOwnerIds();\n const onOpenChangeRef = React.useRef(onOpenChange);\n const nextFloatingOwnerIds = useMemo(() => appendFloatingOwnerIds(floatingOwnerIds, id), [floatingOwnerIds, id]);\n\n useLayoutEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n });\n\n const handleOpenChange = useCallback((nextOpen: boolean) => {\n setIsOpen(nextOpen);\n if (!nextOpen) {\n setContextMenuPosition(null);\n }\n onOpenChangeRef.current?.(nextOpen);\n }, []);\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: handleOpenChange,\n placement,\n middleware: [\n offset(8),\n flip({ padding: 16 }),\n shift({ padding: 16 })\n ],\n whileElementsMounted: autoUpdate\n });\n\n const positionReference = useMemo<VirtualElement | null>(() => {\n if (triggerAction !== 'contextmenu' || !contextMenuPosition) {\n return null;\n }\n\n return {\n getBoundingClientRect() {\n return {\n width: 0,\n height: 0,\n x: contextMenuPosition.x,\n y: contextMenuPosition.y,\n top: contextMenuPosition.y,\n right: contextMenuPosition.x,\n bottom: contextMenuPosition.y,\n left: contextMenuPosition.x\n };\n }\n };\n }, [contextMenuPosition, triggerAction]);\n\n useLayoutEffect(() => {\n if (positionReference) {\n refs.setPositionReference(positionReference);\n return;\n }\n\n const referenceElement = refs.domReference.current;\n\n if (referenceElement) {\n refs.setPositionReference(referenceElement);\n }\n }, [positionReference, refs]);\n\n const click = useClick(context, {\n enabled: triggerAction === 'click'\n });\n const dismiss = useDismiss(context, {\n outsidePress: (event) => {\n return !hasFloatingOwnerId(event.target instanceof Element ? event.target : null, id);\n }\n });\n const role = useRole(context, { role: popoverRole });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role\n ]);\n\n const close = useCallback(() => {\n handleOpenChange(false);\n }, [handleOpenChange]);\n\n const handleFloatingRef = useCallback((node: HTMLElement | null) => {\n refs.setFloating(node);\n setFloatingElement(node);\n }, [refs]);\n\n const handleContextMenu = useCallback((event: React.MouseEvent) => {\n if (triggerAction !== 'contextmenu') return;\n if (event.defaultPrevented) return;\n if (shouldOpenOnContextMenu && !shouldOpenOnContextMenu(event)) return;\n event.preventDefault();\n event.stopPropagation();\n setContextMenuPosition({\n x: event.clientX,\n y: event.clientY\n });\n handleOpenChange(true);\n }, [triggerAction, handleOpenChange, shouldOpenOnContextMenu]);\n\n const renderChildren = () => {\n if (typeof children === 'function') {\n return children(close);\n }\n return children;\n };\n\n const triggerElement = trigger && isValidElement(trigger)\n ? cloneElement(trigger as PopoverTriggerElement, {\n ...(triggerAction === 'contextmenu'\n ? {}\n : {\n ref: composeRefs(\n refs.setReference,\n (trigger as PopoverTriggerElement).props.ref\n )\n }),\n 'data-popover-trigger': id,\n 'aria-controls': isOpen ? id : undefined,\n 'aria-expanded': triggerAction === 'click' ? isOpen : undefined,\n 'aria-haspopup': triggerAriaHaspopup ?? (popoverRole === 'menu' ? 'menu' : 'dialog'),\n ...getReferenceProps({\n onContextMenu: handleContextMenu\n })\n })\n : null;\n\n return (\n <>\n {triggerElement}\n\n {isOpen && (\n <FloatingPortal root={floatingRoot}>\n <FloatingFocusManager context={context} modal={false}>\n <div ref={handleFloatingRef} id={id} className={`popover ${noPadding ? 'popover--no-padding' : ''} radius-lg d-flex column glass-bg ${className} color-primary`} style={floatingStyles} onClick={(event) => event.stopPropagation()} aria-label={ariaLabel} aria-labelledby={ariaLabelledBy} aria-describedby={ariaDescribedBy} tabIndex={-1} {...getFloatingProps()}>\n <FloatingOwnerIdsContext.Provider value={nextFloatingOwnerIds}>\n <FloatingRootContext.Provider value={floatingElement ?? floatingRoot}>\n {renderChildren()}\n </FloatingRootContext.Provider>\n </FloatingOwnerIdsContext.Provider>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nexport default Popover;\n","import './PopoverMenu.css';\nimport React, { forwardRef, useEffect, useRef } from 'react';\nimport type { KeyboardEvent, ReactNode } from 'react';\n\ninterface PopoverMenuItemElement extends HTMLElement {\n disabled?: boolean;\n};\n\ninterface PopoverMenuProps {\n children: ReactNode;\n label?: string;\n onClose?: () => void;\n};\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]';\n\nconst getMenuItems = (menuElement: HTMLDivElement | null) => {\n if (!menuElement) {\n return [];\n }\n\n const items = Array.from(menuElement.querySelectorAll<PopoverMenuItemElement>(MENU_ITEM_SELECTOR));\n\n return items.filter((item) => {\n return item.closest('[role=\"menu\"]') === menuElement && !item.hasAttribute('disabled') && item.getAttribute('aria-disabled') !== 'true';\n });\n};\n\nconst PopoverMenu = forwardRef<HTMLDivElement, PopoverMenuProps>(({ children, label = 'Menu', onClose }, ref) => {\n const menuRef = useRef<HTMLDivElement | null>(null);\n\n const setRefs = (node: HTMLDivElement | null) => {\n (menuRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n useEffect(() => {\n const focusTimer = window.requestAnimationFrame(() => {\n const menuItems = getMenuItems(menuRef.current);\n menuItems[0]?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(focusTimer);\n };\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const menuItems = getMenuItems(menuRef.current);\n const activeElement = document.activeElement;\n const currentIndex = menuItems.findIndex((item) => item === activeElement || item.contains(activeElement));\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onClose?.();\n return;\n }\n\n if (menuItems.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % menuItems.length;\n menuItems[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const nextIndex = currentIndex < 0 ? menuItems.length - 1 : (currentIndex - 1 + menuItems.length) % menuItems.length;\n menuItems[nextIndex]?.focus();\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n menuItems[0]?.focus();\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n menuItems[menuItems.length - 1]?.focus();\n }\n };\n\n return (\n <div ref={setRefs} className='popover-menu d-flex column gap-025' role='menu' aria-label={label} aria-orientation='vertical' onKeyDown={handleKeyDown}>\n {children}\n </div>\n );\n});\n\nPopoverMenu.displayName = 'PopoverMenu';\n\nexport default PopoverMenu;\n","import Button from '@/shared/presentation/primitives/Button';\nimport './PopoverMenuItem.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype PopoverMenuItemRole = 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';\n\ninterface PopoverMenuItemProps {\n icon?: ReactNode;\n label?: string;\n children?: ReactNode;\n onClick?: () => void;\n variant?: 'default' | 'danger';\n size?: 'sm' | 'md';\n disabled?: boolean;\n isLoading?: boolean;\n rightAdornment?: ReactNode;\n role?: PopoverMenuItemRole;\n ariaHaspopup?: 'menu' | 'dialog';\n ariaExpanded?: boolean;\n ariaControls?: string;\n tabIndex?: number;\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst PopoverMenuItem = forwardRef<HTMLButtonElement, PopoverMenuItemProps>(({\n icon,\n label,\n children,\n onClick,\n variant = 'default',\n size = 'md',\n disabled = false,\n isLoading = false,\n rightAdornment,\n role = 'menuitem',\n ariaHaspopup,\n ariaExpanded,\n ariaControls,\n tabIndex = -1,\n onKeyDown,\n onBlur,\n onMouseEnter,\n onMouseLeave\n}, ref) => {\n const content = children ?? label;\n\n return (\n <Button\n ref={ref}\n variant='ghost'\n intent={variant === 'danger' ? 'danger' : 'neutral'}\n size={size}\n block\n align='start'\n className={`popover-menu-item popover-menu-item--${size} radius-sm color-primary u-select-none cursor-pointer`}\n onClick={isLoading ? undefined : onClick}\n disabled={disabled || isLoading}\n isLoading={isLoading}\n role={role}\n aria-haspopup={ariaHaspopup}\n aria-expanded={ariaExpanded}\n aria-controls={ariaControls}\n aria-disabled={disabled || isLoading}\n tabIndex={tabIndex}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-popover-menu-item='true'\n leftIcon={icon ? <span className='popover-menu-item-icon d-flex items-center content-center f-shrink-0'>{icon}</span> : undefined}\n >\n <span className='popover-menu-item-content d-flex items-center content-between gap-05 w-max'>\n <span className='popover-menu-item-label'>{content}</span>\n {rightAdornment ? <span className='popover-menu-item-adornment d-flex items-center content-center f-shrink-0'>{rightAdornment}</span> : null}\n </span>\n </Button>\n );\n});\n\nPopoverMenuItem.displayName = 'PopoverMenuItem';\n\nexport default PopoverMenuItem;\n","import { cn } from '@/shared/utils/cn';\nimport Popover from '@/shared/presentation/primitives/Popover';\nimport PopoverMenu from '@/shared/presentation/primitives/PopoverMenu';\nimport PopoverMenuItem from '@/shared/presentation/primitives/PopoverMenuItem';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './Menu.css';\nimport { forwardRef, isValidElement, useId, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Placement } from '@floating-ui/react';\nimport type { StatusTone } from '@/shared/presentation/primitives/types';\n\nconst MISSING_MENU_NAME_ERROR = 'Menu requires an accessible name via ariaLabel (or menuLabel) so assistive tech can announce the menu.';\nconst FALLBACK_MENU_LABEL = 'Menu';\n\ntype MenuSize = 'sm' | 'md';\n\n/**\n * A single actionable entry in a {@link Menu}.\n *\n * Set `divider: true` to render a visual separator instead of an action;\n * separator entries ignore every other field except `id`.\n */\nexport interface MenuItem {\n /** Stable, unique key for this entry. */\n id: string;\n /** Visible label. Required for actionable items, unused for dividers. */\n label?: ReactNode;\n /** Optional leading icon node (e.g. a lucide-react icon element). */\n icon?: ReactNode;\n /** Invoked when the item is chosen; the menu closes afterwards. */\n onSelect?: () => void;\n /** Semantic tone. Only `danger` is visually distinct (maps to the danger item style). */\n tone?: StatusTone;\n /** Disabled items are not focusable and cannot be selected. */\n disabled?: boolean;\n /** Render this entry as a separator rule instead of an action. */\n divider?: boolean;\n}\n\n/** Render-prop form of the trigger; receives the menu's open state. */\nexport type MenuTriggerRenderProp = (state: { isOpen: boolean }) => ReactNode;\n\nexport interface MenuProps {\n /**\n * The element (or render-prop) that opens the menu. A render-prop receives\n * `{ isOpen }`. The trigger is wrapped in a focusable element so any node works.\n */\n trigger: ReactNode | MenuTriggerRenderProp;\n /** The menu entries. Use `divider: true` entries to group sections. */\n items: MenuItem[];\n /** Floating-ui placement of the menu relative to the trigger. */\n placement?: Placement;\n /** Control density passed through to each item. */\n size?: MenuSize;\n /** Stable id for the popover; auto-generated when omitted. */\n id?: string;\n /** Accessible name announced for the menu region. Falls back to `menuLabel`. */\n ariaLabel?: string;\n /** Human label for the menu list (also used as the accessible name fallback). */\n menuLabel?: string;\n /** Accessible name for the auto-generated trigger wrapper. */\n triggerAriaLabel?: string;\n /** Rendered when `items` is empty (after filtering dividers). */\n emptyContent?: ReactNode;\n /** Notified whenever the menu opens or closes. */\n onOpenChange?: (isOpen: boolean) => void;\n /** Extra classes for the popover panel. */\n className?: string;\n /** Extra classes for the trigger wrapper. */\n triggerClassName?: string;\n}\n\nconst isRenderProp = (value: MenuProps['trigger']): value is MenuTriggerRenderProp => typeof value === 'function';\n\nconst Menu = forwardRef<HTMLSpanElement, MenuProps>(({\n trigger,\n items,\n placement = 'bottom-start',\n size = 'md',\n id,\n ariaLabel,\n menuLabel = 'Menu',\n triggerAriaLabel,\n emptyContent,\n onOpenChange,\n className,\n triggerClassName\n}, ref) => {\n const generatedId = useId();\n const popoverId = id ?? `menu-${generatedId}`;\n const [isOpen, setIsOpen] = useState(false);\n const hasWarnedForMissingNameRef = useRef(false);\n\n const resolvedAriaLabel = ariaLabel?.trim() || menuLabel?.trim() || undefined;\n let accessibleName = resolvedAriaLabel;\n if (!accessibleName) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_MENU_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n\n accessibleName = FALLBACK_MENU_LABEL;\n }\n\n const handleOpenChange = (nextOpen: boolean) => {\n setIsOpen(nextOpen);\n onOpenChange?.(nextOpen);\n };\n\n const triggerNode = isRenderProp(trigger) ? trigger({ isOpen }) : trigger;\n\n // Popover clones its trigger to attach ref + aria-* state, so it needs a\n // single valid element. We always wrap in a focusable span so render-props,\n // text, fragments, and bare elements behave identically.\n const triggerElement = (\n <span\n ref={ref}\n className={cn('menu-trigger u-select-none cursor-pointer', triggerClassName)}\n role='button'\n tabIndex={isValidElement(triggerNode) ? -1 : 0}\n aria-label={triggerAriaLabel}\n >\n {triggerNode}\n </span>\n );\n\n const actionableItems = items.filter((item) => !item.divider);\n\n return (\n <Popover\n id={popoverId}\n trigger={triggerElement}\n placement={placement}\n role='menu'\n triggerAriaHaspopup='menu'\n ariaLabel={accessibleName}\n noPadding\n className={cn('menu-popover', className)}\n onOpenChange={handleOpenChange}\n >\n {(close) => (\n <PopoverMenu label={accessibleName} onClose={close}>\n {actionableItems.length === 0\n ? (emptyContent ?? (\n <Text as='p' size='sm' className='menu-empty color-muted' role='status' aria-live='polite'>\n No actions available\n </Text>\n ))\n : items.map((item) => {\n if (item.divider) {\n return <div key={item.id} className='menu-separator' role='separator' aria-hidden='true' />;\n }\n\n return (\n <PopoverMenuItem\n key={item.id}\n icon={item.icon}\n size={size}\n variant={item.tone === 'danger' ? 'danger' : 'default'}\n disabled={item.disabled}\n onClick={() => {\n item.onSelect?.();\n close();\n }}\n >\n {item.label}\n </PopoverMenuItem>\n );\n })}\n </PopoverMenu>\n )}\n </Popover>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { useFloatingRoot } from '@/shared/presentation/contexts/FloatingRootContext';\nimport composeRefs from '@/shared/presentation/utilities/compose-refs';\nimport './Tooltip.css';\nimport { useFloating, useHover, useFocus, useDismiss, useRole, useInteractions, FloatingPortal, offset, flip, shift, autoUpdate } from '@floating-ui/react';\nimport { useId, useState, cloneElement, isValidElement } from 'react';\nimport React from 'react';\nimport type { Placement } from '@floating-ui/react';\nimport type { HTMLAttributes, ReactNode, ReactElement, Ref } from 'react';\n\nexport type TooltipPlacement = Placement;\n\ntype TooltipTriggerElement = ReactElement<HTMLAttributes<HTMLElement> & { ref?: Ref<HTMLElement> }>;\n\ninterface TooltipProps {\n children: ReactNode;\n content: ReactNode;\n placement?: TooltipPlacement;\n delay?: number;\n disabled?: boolean;\n className?: string;\n};\n\nconst Tooltip = ({\n children,\n content,\n placement = 'top',\n delay = 300,\n disabled = false,\n className = ''\n}: TooltipProps) => {\n const [isVisible, setIsVisible] = useState(false);\n const floatingRoot = useFloatingRoot();\n const tooltipId = useId();\n\n const { refs, floatingStyles, context, placement: actualPlacement } = useFloating({\n open: isVisible,\n onOpenChange: setIsVisible,\n placement,\n middleware: [\n offset(8),\n flip({ padding: 8 }),\n shift({ padding: 8 })\n ],\n whileElementsMounted: autoUpdate\n });\n\n const hover = useHover(context, {\n delay: {\n open: delay,\n close: 0\n },\n enabled: !disabled\n });\n const focus = useFocus(context, {\n enabled: !disabled\n });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'tooltip' });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role\n ]);\n\n if (!content) return <>{children}</>;\n\n const child = React.Children.only(children);\n if (!isValidElement(child)) {\n return <>{children}</>;\n }\n\n const triggerElement = child as TooltipTriggerElement;\n const placementSide = actualPlacement.split('-')[0];\n const childProps = triggerElement.props;\n const originalRef = childProps.ref;\n const childDescribedBy = typeof childProps['aria-describedby'] === 'string'\n ? childProps['aria-describedby']\n : undefined;\n const describedBy = [childDescribedBy, tooltipId].filter(Boolean).join(' ') || undefined;\n\n const clonedChild = cloneElement(triggerElement, {\n ref: composeRefs(refs.setReference, originalRef),\n 'aria-describedby': describedBy,\n ...getReferenceProps(childProps)\n });\n\n return (\n <>\n {clonedChild}\n\n {isVisible && (\n <FloatingPortal root={floatingRoot}>\n <div\n ref={refs.setFloating}\n id={tooltipId}\n className={`volt-tooltip volt-tooltip-${placementSide} ${className} overflow-hidden`}\n style={floatingStyles}\n role='tooltip'\n {...getFloatingProps()}\n >\n {content}\n </div>\n </FloatingPortal>\n )}\n </>\n );\n};\n\nexport default Tooltip;\n","import { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\nimport { useFloatingRoot } from '@/shared/presentation/contexts/FloatingRootContext';\nimport './CursorTooltip.css';\nimport { useFloating, offset, flip, shift, autoUpdate, FloatingPortal } from '@floating-ui/react';\nimport { useEffect, useId, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport type { Middleware, VirtualElement } from '@floating-ui/react';\n\ninterface CursorTooltipProps {\n isOpen: boolean;\n x: number;\n y: number;\n content?: ReactNode;\n className?: string;\n autoPosition?: boolean;\n interactive?: boolean;\n offset?: number;\n ariaLabel?: string;\n};\n\nconst createVirtualCursorRect = (x: number, y: number) => ({\n x,\n y,\n top: y,\n right: x,\n bottom: y,\n left: x,\n width: 0,\n height: 0\n});\n\nconst CursorTooltip = ({\n isOpen,\n x,\n y,\n content,\n className = '',\n autoPosition = true,\n interactive = false,\n offset: cursorOffset = 16,\n ariaLabel = 'Additional details'\n}: CursorTooltipProps) => {\n const arrowOffset = cursorOffset;\n const floatingRoot = useFloatingRoot();\n const prefersReducedMotion = usePrefersReducedMotion();\n const reactId = useId();\n const tooltipId = `cursor-tooltip-${reactId}`;\n\n const virtualElementRef = useRef<VirtualElement>({\n getBoundingClientRect: () => createVirtualCursorRect(x, y)\n });\n\n const middleware: Middleware[] = [offset({ mainAxis: arrowOffset, crossAxis: arrowOffset })];\n\n if (autoPosition) {\n middleware.push(flip({ padding: 16 }));\n middleware.push(shift({ padding: 16 }));\n }\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n placement: 'right-start',\n middleware,\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n virtualElementRef.current.getBoundingClientRect = () => createVirtualCursorRect(x, y);\n refs.setPositionReference(virtualElementRef.current);\n }, [x, y, refs]);\n\n if (!isOpen) return null;\n\n return (\n <FloatingPortal root={floatingRoot}>\n <div\n ref={refs.setFloating}\n className={`cursor-tooltip visible ${interactive ? 'interactive' : ''} ${className}`}\n style={floatingStyles}\n id={tooltipId}\n role={interactive ? 'dialog' : 'tooltip'}\n aria-label={interactive ? ariaLabel : undefined}\n aria-modal={interactive ? false : undefined}\n tabIndex={interactive ? -1 : undefined}\n data-reduced-motion={prefersReducedMotion ? 'true' : 'false'}\n >\n {content}\n </div>\n </FloatingPortal>\n );\n};\n\nexport default CursorTooltip;\n","import { cn } from '@/shared/utils/cn';\nimport './FloatingToolbar.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type FloatingToolbarPlacement = 'top' | 'bottom';\nexport type FloatingToolbarAlign = 'start' | 'center' | 'end';\n\nexport interface FloatingToolbarProps extends HTMLAttributes<HTMLDivElement> {\n placement?: FloatingToolbarPlacement;\n align?: FloatingToolbarAlign;\n /** Offset distance (rem) from the edge the toolbar is anchored to. */\n offset?: number;\n children?: ReactNode;\n}\n\n/**\n * Centered floating pill toolbar (glass-bg) used over canvases/viewports.\n * Positions itself absolute relative to its nearest positioned ancestor.\n */\nconst FloatingToolbar = forwardRef<HTMLDivElement, FloatingToolbarProps>(({\n placement = 'top',\n align = 'center',\n offset = 1,\n className,\n style,\n children,\n role = 'toolbar',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-floating-toolbar',\n `volt-floating-toolbar--${placement}`,\n `volt-floating-toolbar--align-${align}`,\n 'glass-bg',\n className\n );\n\n const anchorStyle: React.CSSProperties = {\n ...style,\n [placement]: `${offset}rem`\n };\n\n return (\n <div ref={ref} role={role} className={classes} style={anchorStyle} {...rest}>\n {children}\n </div>\n );\n});\n\nFloatingToolbar.displayName = 'FloatingToolbar';\n\nexport default FloatingToolbar;\n","import { cn } from '@/shared/utils/cn';\nimport './Tag.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type TagTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\nexport type TagSize = 'xs' | 'sm' | 'md';\nexport type TagVariant = 'soft' | 'solid' | 'outline';\nexport type TagShape = 'pill' | 'square';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n tone?: TagTone;\n size?: TagSize;\n variant?: TagVariant;\n shape?: TagShape;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n children?: ReactNode;\n}\n\nconst Tag = forwardRef<HTMLSpanElement, TagProps>(({\n tone = 'neutral',\n size = 'sm',\n variant = 'soft',\n shape = 'pill',\n leftIcon,\n rightIcon,\n className,\n children,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-tag',\n `volt-tag--tone-${tone}`,\n `volt-tag--size-${size}`,\n `volt-tag--variant-${variant}`,\n `volt-tag--shape-${shape}`,\n className\n );\n\n return (\n <span ref={ref} className={classes} {...rest}>\n {leftIcon && <span className='volt-tag__icon' aria-hidden='true'>{leftIcon}</span>}\n <span className='volt-tag__label'>{children}</span>\n {rightIcon && <span className='volt-tag__icon' aria-hidden='true'>{rightIcon}</span>}\n </span>\n );\n});\n\nTag.displayName = 'Tag';\n\nexport default Tag;\n","import { cn } from '@/shared/utils/cn';\nimport './StatusBadge.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype StatusBadgeVariant = 'active' | 'inactive' | 'danger' | 'neutral' | 'success' | 'warning' | 'brand' | 'primary';\n\nexport interface StatusBadgeProps{\n /**\n * Status string - will be mapped to variant automatically\n */\n status?: string;\n\n /**\n * Visual variant override\n */\n variant?: StatusBadgeVariant;\n\n /**\n * Size variant\n * @default 'default'\n */\n size?: 'default' | 'compact';\n\n /**\n * Badge content (alternative to status)\n */\n children?: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\nconst STATUS_VARIANTS: Record<string, StatusBadgeVariant> = {\n ready: 'success',\n completed: 'success',\n success: 'success',\n active: 'success',\n published: 'success',\n healthy: 'success',\n online: 'success',\n accepted: 'success',\n connected: 'success',\n processing: 'warning',\n queued: 'warning',\n rendering: 'warning',\n warning: 'warning',\n pending: 'warning',\n 'waiting-for-process': 'warning',\n analyzing: 'warning',\n running: 'active',\n failed: 'danger',\n error: 'danger',\n danger: 'danger',\n critical: 'danger',\n rejected: 'danger',\n inactive: 'inactive',\n draft: 'inactive',\n disabled: 'inactive',\n offline: 'inactive',\n disconnected: 'inactive',\n brand: 'brand',\n primary: 'primary'\n};\n\nconst statusToVariant = (status: string): StatusBadgeVariant => {\n return STATUS_VARIANTS[status.toLowerCase()] ?? 'neutral';\n};\n\nconst StatusBadge = forwardRef<HTMLSpanElement, StatusBadgeProps>(({ status, variant, size = 'default', children, className = '' }, ref) => {\n const computedVariant = variant ?? (status ? statusToVariant(status) : 'neutral');\n const content = children ?? status;\n\n const classes = cn(\n 'status-badge',\n 'radius-full',\n `variant-${computedVariant}`,\n size !== 'default' && `size-${size}`,\n 'gap-025',\n 'font-size-1',\n 'font-weight-5',\n className\n );\n\n return (\n <span ref={ref} className={classes}>\n {content}\n </span>\n );\n});\n\nStatusBadge.displayName = 'StatusBadge';\n\nexport default StatusBadge;\n","import { cn } from '@/shared/utils/cn';\nimport './StatusDot.css';\nimport { forwardRef } from 'react';\n\nexport type StatusDotTone = 'success' | 'warning' | 'danger' | 'info' | 'neutral' | 'brand';\n\ninterface StatusDotProps {\n tone?: StatusDotTone;\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n label?: string;\n /** Animates the dot with a gentle pulse. */\n pulse?: boolean;\n /** Adds a soft glow halo (same color as the dot). */\n glow?: boolean;\n};\n\nconst StatusDot = forwardRef<HTMLSpanElement, StatusDotProps>(({\n tone = 'neutral',\n size = 'sm',\n className = '',\n label,\n pulse = false,\n glow = false\n}, ref) => {\n const classes = cn(\n 'status-dot',\n 'radius-full',\n 'f-shrink-0',\n `size-${size}`,\n `status-dot--tone-${tone}`,\n pulse && 'status-dot--pulse',\n glow && 'status-dot--glow',\n className\n );\n\n return (\n <span\n ref={ref}\n className={classes}\n role='status'\n aria-label={label ?? `${tone} status`}\n />\n );\n});\n\nStatusDot.displayName = 'StatusDot';\n\nexport default StatusDot;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type InlineStatusTone = 'neutral' | 'muted' | 'success' | 'warning' | 'danger';\n\nconst toneClass: Record<InlineStatusTone, string> = {\n neutral: 'color-primary',\n muted: 'color-muted',\n success: 'status-success',\n warning: 'status-warning',\n danger: 'status-error'\n};\n\nexport interface InlineStatusProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n tone?: InlineStatusTone;\n icon?: ReactNode;\n live?: 'polite' | 'assertive' | 'off';\n severity?: 'status' | 'alert';\n children?: ReactNode;\n}\n\n/**\n * Inline live-region status/alert row (icon + message). Use for form-save\n * feedback, toast-lite inline messages, etc.\n */\nconst InlineStatus = forwardRef<HTMLDivElement, InlineStatusProps>(({\n tone = 'neutral',\n icon,\n live = 'polite',\n severity = 'status',\n className,\n children,\n ...rest\n}, ref) => {\n const textTone = tone === 'muted' ? 'muted' : tone === 'neutral' ? 'secondary' : undefined;\n const inlineStyle = tone !== 'neutral' && tone !== 'muted'\n ? { color: `var(--${toneClass[tone]})` }\n : undefined;\n\n return (\n <Row\n ref={ref}\n gap='05'\n role={severity}\n aria-live={live}\n aria-atomic='true'\n className={cn('font-size-1', className)}\n style={inlineStyle}\n {...rest}\n >\n {icon && <span className='d-flex items-center' aria-hidden='true'>{icon}</span>}\n <Text as='span' size='sm' tone={textTone}>{children}</Text>\n </Row>\n );\n});\n\nInlineStatus.displayName = 'InlineStatus';\n\nexport default InlineStatus;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport Loader from '../Loader';\nimport { AlertCircle, Check } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport type SaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusIndicatorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n status: SaveStatus;\n savingLabel?: string;\n savedLabel?: string;\n errorLabel?: string;\n /** Hide when `idle`. Default: true. */\n hideIdle?: boolean;\n}\n\n/**\n * Inline save-state indicator (saving / saved / error) with live-region\n * announcement. Consolidates plugin/latex/whiteboard \"Saved\" pills.\n */\nconst SaveStatusIndicator = forwardRef<HTMLDivElement, SaveStatusIndicatorProps>(({\n status,\n savingLabel = 'Saving…',\n savedLabel = 'Saved',\n errorLabel = 'Save failed',\n hideIdle = true,\n className,\n ...rest\n}, ref) => {\n if (hideIdle && status === 'idle') return null;\n\n const tone = status === 'saved' ? 'muted' : 'secondary';\n const errorStyle = status === 'error' ? { color: 'var(--status-error)' } : undefined;\n\n return (\n <Row\n ref={ref}\n gap='025'\n role='status'\n aria-live='polite'\n aria-atomic='true'\n className={cn('font-size-1', className)}\n style={errorStyle}\n {...rest}\n >\n {status === 'saving' && <Loader scale={0.35} isFixed={false} />}\n {status === 'saved' && <Check size={12} aria-hidden='true' />}\n {status === 'error' && <AlertCircle size={12} aria-hidden='true' />}\n <Text as='span' size='sm' tone={status === 'error' ? undefined : tone}>\n {status === 'saving' && savingLabel}\n {status === 'saved' && savedLabel}\n {status === 'error' && errorLabel}\n </Text>\n </Row>\n );\n});\n\nSaveStatusIndicator.displayName = 'SaveStatusIndicator';\n\nexport default SaveStatusIndicator;\n","/** Minimal user-like shape needed to derive initials — structural so this\n * helper carries no domain (auth) dependency. */\ninterface InitialsUserSource {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n}\n\nexport const getInitialsFromUser = (user: InitialsUserSource | string | null | undefined): string => {\n if(!user || typeof user === 'string') return '?';\n \n if(user.firstName && user.lastName){\n return (user.firstName[0] + user.lastName[0]).toUpperCase();\n }\n \n if(user.email){\n const parts = user.email.split('@')[0].split('.');\n if(parts.length >= 2){\n return (parts[0][0] + parts[1][0]).toUpperCase();\n }\n return user.email[0].toUpperCase();\n }\n \n return '?';\n};\n\nexport const getInitialsFromEmail = (email: string): string => {\n if(!email) return '?';\n return email.split('@')[0].charAt(0).toUpperCase();\n};\n\nconst AVATAR_COLORS = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A', '#98D8C8'];\n\nexport const getAvatarColorFromString = (str: string): string => {\n if(!str) return AVATAR_COLORS[0];\n const hash = str.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return AVATAR_COLORS[hash % AVATAR_COLORS.length];\n};\n","import { cn } from '@/shared/utils/cn';\nimport { getInitialsFromUser } from '@/shared/utils/user';\nimport StatusDot from '../StatusDot';\nimport './Avatar.css';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\ntype AvatarSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/** Minimal user-like shape the Avatar renders from. Local to the primitive so\n * the design system carries no domain (auth) coupling; a domain `User` is\n * structurally assignable. */\nexport interface AvatarUser {\n firstName?: string | null;\n lastName?: string | null;\n email?: string | null;\n avatar?: string | null;\n}\n\ninterface AvatarProps {\n src?: string | null;\n alt?: string;\n fallback?: string;\n user?: AvatarUser | null;\n size?: AvatarSize;\n className?: string;\n isOnline?: boolean;\n showStatus?: boolean;\n icon?: ReactNode;\n};\n\nconst Avatar = forwardRef<HTMLDivElement, AvatarProps>(({\n src,\n alt,\n fallback,\n user,\n size = 'md',\n className = '',\n isOnline = false,\n showStatus = false,\n icon\n}, ref) => {\n const imageSrc = src ?? user?.avatar;\n const initials = fallback ?? (user ? getInitialsFromUser(user) : '?');\n const altText = alt ?? (user ? `${user.firstName ?? ''} ${user.lastName ?? ''}`.trim() : 'Avatar');\n\n return (\n <div ref={ref} className={`${cn('avatar', `avatar-${size}`, 'd-flex flex-center radius-full overflow-hidden f-shrink-0 p-relative', className)}`}>\n {icon ? (\n <div className='avatar-icon d-flex flex-center'>\n {icon}\n </div>\n ) : imageSrc ? (\n <img src={imageSrc} alt={altText} className='w-max h-max avatar-image' />\n ) : (\n <p className='avatar-initials font-weight-6'>\n {initials}\n </p>\n )}\n {showStatus && (\n <StatusDot tone={isOnline ? 'success' : 'neutral'} className='avatar-status p-absolute bottom-0 right-0' />\n )}\n </div>\n );\n});\n\nAvatar.displayName = 'Avatar';\n\nexport default Avatar;\n","import Avatar from '@/shared/presentation/primitives/Avatar';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './AvatarStack.css';\nimport { forwardRef } from 'react';\nimport type { AvatarUser } from '@/shared/presentation/primitives/Avatar';\n\ntype StackSize = 'xs' | 'sm' | 'md';\n\ntype AvatarStackUser = AvatarUser & {\n isOnline?: boolean | null;\n _id?: string;\n id?: string;\n};\n\ninterface AvatarStackProps {\n users: AvatarStackUser[];\n maxDisplay?: number;\n size?: StackSize;\n className?: string;\n};\n\nconst AvatarStack = forwardRef<HTMLElement, AvatarStackProps>(({ users, maxDisplay = 3, size = 'sm', className = '' }, ref) => {\n if(users.length === 0) return null;\n\n const displayedUsers = users.slice(0, maxDisplay);\n const remainingCount = users.length - maxDisplay;\n\n return (\n <Row ref={ref} className={`avatar-stack ${className}`}>\n {displayedUsers.map((user, index) => (\n <Avatar\n key={user._id ?? user.id ?? index}\n user={user}\n size={size}\n className='avatar-stack-item'\n />\n ))}\n {remainingCount > 0 && (\n <div className={`avatar-stack-overflow avatar avatar-${size} d-flex flex-center radius-full`}>\n <Text as='p' weight='bold' className='avatar-initials'>+{remainingCount}</Text>\n </div>\n )}\n </Row>\n );\n});\n\nAvatarStack.displayName = 'AvatarStack';\n\nexport default AvatarStack;\n","import { cn } from '@/shared/utils/cn';\nimport './IconFrame.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type IconFrameSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type IconFrameTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger' | 'info';\nexport type IconFrameShape = 'square' | 'circle';\n\nexport interface IconFrameProps extends HTMLAttributes<HTMLDivElement> {\n size?: IconFrameSize;\n tone?: IconFrameTone;\n shape?: IconFrameShape;\n children?: ReactNode;\n}\n\n/**\n * Tinted rounded container for a decorative icon. Unifies the\n * ~5 hand-rolled \"icon bubbles\" scattered across dashboards, tiles and menus.\n */\nconst IconFrame = forwardRef<HTMLDivElement, IconFrameProps>(({\n size = 'md',\n tone = 'neutral',\n shape = 'square',\n className,\n children,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-icon-frame',\n `volt-icon-frame--size-${size}`,\n `volt-icon-frame--tone-${tone}`,\n `volt-icon-frame--shape-${shape}`,\n className\n );\n\n return (\n <div ref={ref} className={classes} aria-hidden='true' {...rest}>\n {children}\n </div>\n );\n});\n\nIconFrame.displayName = 'IconFrame';\n\nexport default IconFrame;\n","import { cn } from '@/shared/utils/cn';\nimport Surface from '../Surface';\nimport './Card.css';\nimport { forwardRef, useRef } from 'react';\nimport type {\n ElementType,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n Ref\n} from 'react';\nimport type { SurfaceVariant } from '../types';\n\nconst MISSING_INTERACTIVE_NAME_ERROR =\n 'Card with `interactive` requires an accessible name via aria-label or aria-labelledby.';\n\nexport type CardVariant = 'elevated' | 'glass' | 'plain';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * Maps a {@link CardVariant} to the background-only `Surface` variant that\n * supplies its background/border/shadow. `plain` has no Surface variant — the\n * flat `.volt-card--plain` rules cover it.\n */\nconst SURFACE_VARIANT: Record<CardVariant, SurfaceVariant | undefined> = {\n elevated: 'elevated',\n glass: 'glass',\n plain: undefined\n};\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /** Background/elevation treatment. Defaults to `elevated`. */\n variant?: CardVariant;\n /**\n * Makes the whole card clickable/focusable. Renders a `<button>` (unless\n * `as`/`to` overrides the element) with keyboard activation. Requires an\n * accessible name.\n */\n interactive?: boolean;\n /** Applies the brand selected ring + `aria-selected` when interactive. */\n selected?: boolean;\n /**\n * Convenience body padding applied directly to the root. Prefer\n * `Card.Header`/`Card.Body`/`Card.Footer` slots for structured content;\n * use this for simple single-region cards. Defaults to `none`.\n */\n padding?: CardPadding;\n /** Element/component to render as. Defaults to `button` when interactive, else `div`. */\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n}\n\nconst Card = forwardRef<HTMLDivElement, CardProps>(({\n variant = 'elevated',\n interactive = false,\n selected = false,\n padding = 'none',\n as,\n className,\n children,\n onKeyDown,\n role,\n tabIndex,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n\n const Component: ElementType = as ?? (interactive ? 'button' : 'div');\n const isNativeButton = interactive && Component === 'button';\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n\n if (interactive && !resolvedAriaLabel && !resolvedAriaLabelledBy) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_INTERACTIVE_NAME_ERROR);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const classes = cn(\n 'volt-card',\n `volt-card--${variant}`,\n interactive && 'volt-card--interactive',\n selected && 'volt-card--selected',\n padding !== 'none' && `volt-card--pad-${padding}`,\n className\n );\n\n // Non-native interactive elements (e.g. `as='div'`/`as={Link}`) need an\n // explicit button role + keyboard activation to stay accessible.\n const needsButtonSemantics = interactive && !isNativeButton;\n\n const handleKeyDown = needsButtonSemantics\n ? (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n event.preventDefault();\n (event.currentTarget as HTMLElement).click();\n }\n }\n : onKeyDown;\n\n const interactiveProps = interactive\n ? {\n role: needsButtonSemantics ? (role ?? 'button') : role,\n tabIndex: needsButtonSemantics ? (tabIndex ?? 0) : tabIndex,\n ...(isNativeButton ? { type: 'button' as const } : {}),\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': resolvedAriaLabelledBy,\n 'aria-selected': selected || undefined,\n onKeyDown: handleKeyDown\n }\n : {\n role,\n tabIndex,\n 'aria-label': resolvedAriaLabel,\n 'aria-labelledby': resolvedAriaLabelledBy,\n onKeyDown\n };\n\n return (\n <Surface\n ref={ref as Ref<HTMLElement>}\n as={Component}\n variant={SURFACE_VARIANT[variant]}\n className={classes}\n {...interactiveProps}\n {...rest}\n >\n {children}\n </Surface>\n );\n});\n\nCard.displayName = 'Card';\n\n/* Slots ----------------------------------------------------------------- */\n\nexport interface CardSlotProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType;\n children?: ReactNode;\n className?: string;\n}\n\nexport interface CardBodyProps extends CardSlotProps {\n /** Body padding. Defaults to `md`. Use `none` to pad children manually. */\n padding?: CardPadding;\n}\n\nconst CardHeader = forwardRef<HTMLDivElement, CardSlotProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('volt-card__header', 'panel-header-bordered', className)}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardHeader.displayName = 'Card.Header';\n\nconst CardBody = forwardRef<HTMLDivElement, CardBodyProps>(({\n as,\n padding = 'md',\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(\n 'volt-card__body',\n padding !== 'none' && `volt-card__body--pad-${padding}`,\n className\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardBody.displayName = 'Card.Body';\n\nconst CardFooter = forwardRef<HTMLDivElement, CardSlotProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'div') as ElementType;\n return (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('volt-card__footer', 'panel-footer-bordered', className)}\n {...rest}\n >\n {children}\n </Component>\n );\n});\n\nCardFooter.displayName = 'Card.Footer';\n\ntype CardComponent = typeof Card & {\n Header: typeof CardHeader;\n Body: typeof CardBody;\n Footer: typeof CardFooter;\n};\n\nconst CardWithSlots = Card as CardComponent;\nCardWithSlots.Header = CardHeader;\nCardWithSlots.Body = CardBody;\nCardWithSlots.Footer = CardFooter;\n\nexport { CardHeader, CardBody, CardFooter };\nexport default CardWithSlots;\n","import { cn } from '@/shared/utils/cn';\nimport './Skeleton.css';\nimport { forwardRef } from 'react';\nimport type { CSSProperties } from 'react';\n\nexport type SkeletonVariant = 'text' | 'rectangular' | 'rounded' | 'circular';\nexport type SkeletonAnimation = 'wave' | 'pulse' | 'none';\n\nexport interface SkeletonProps {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n width?: string | number;\n height?: string | number;\n className?: string;\n style?: CSSProperties;\n};\n\nconst toCssSize = (value: string | number | undefined): string | undefined => {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return `${value}px`;\n return value;\n};\n\nconst Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(({\n variant = 'text',\n animation = 'pulse',\n width,\n height,\n className = '',\n style\n}, ref) => {\n const classes = cn(\n 'volt-skeleton',\n `volt-skeleton--${variant}`,\n `volt-skeleton--${animation}`,\n className\n );\n\n const resolvedStyle: CSSProperties = {\n ...style,\n width: toCssSize(width) ?? style?.width,\n height: toCssSize(height) ?? style?.height\n };\n\n return (\n <span\n ref={ref}\n className={classes}\n style={resolvedStyle}\n aria-hidden='true'\n data-variant={variant}\n data-animation={animation}\n />\n );\n});\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n","import { cn } from '@/shared/utils/cn';\nimport Stack from '../Stack';\nimport Row from '../Row';\nimport Text from '../Text';\nimport SectionLabel from '../SectionLabel';\nimport Skeleton from '../Skeleton';\nimport './StatCard.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type StatCardTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';\nexport type StatCardState = 'ready' | 'loading';\n\nexport interface StatCardProps extends HTMLAttributes<HTMLDivElement> {\n label: ReactNode;\n value?: ReactNode;\n unit?: ReactNode;\n icon?: ReactNode;\n trend?: ReactNode;\n footer?: ReactNode;\n tone?: StatCardTone;\n state?: StatCardState;\n tabular?: boolean;\n surface?: 'elevated' | 'soft';\n}\n\n/**\n * Metric/stat display card. Consolidates the hand-rolled stat-card JSX\n * used across dashboard, cluster metrics, container metrics and secret-key\n * usage panels.\n */\nconst StatCard = forwardRef<HTMLDivElement, StatCardProps>(({\n label,\n value,\n unit,\n icon,\n trend,\n footer,\n tone = 'neutral',\n state = 'ready',\n tabular = true,\n surface = 'soft',\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-stat-card',\n `volt-stat-card--tone-${tone}`,\n surface === 'elevated' ? 'card-elevated' : 'b-soft radius-md',\n 'p-1-5',\n className\n );\n\n return (\n <Stack ref={ref} gap='075' className={classes} {...rest}>\n <Row gap='05' align='center'>\n {icon && (\n <span className='volt-stat-card__icon' aria-hidden='true'>\n {icon}\n </span>\n )}\n <SectionLabel className='volt-stat-card__label'>{label}</SectionLabel>\n </Row>\n\n {state === 'loading' ? (\n <Skeleton variant='text' width='60%' height={28} animation='wave' />\n ) : (\n <Row gap='05' className={cn('items-baseline', tabular && 'tabular-nums')}>\n {value !== undefined && value !== null && (\n <Text as='span' size='3xl' weight='bold' tone='primary' className='volt-stat-card__value'>\n {value}\n </Text>\n )}\n {unit && (\n <Text as='span' size='md' tone='muted' className='volt-stat-card__unit'>\n {unit}\n </Text>\n )}\n {trend && (\n <span className='volt-stat-card__trend'>{trend}</span>\n )}\n </Row>\n )}\n\n {footer && <div className='volt-stat-card__footer'>{footer}</div>}\n </Stack>\n );\n});\n\nStatCard.displayName = 'StatCard';\n\nexport default StatCard;\n","import { cn } from '@/shared/utils/cn';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport Heading from '../Heading';\nimport IconFrame from '../IconFrame';\nimport './SelectableCard.css';\nimport { forwardRef } from 'react';\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\nimport type { IconFrameTone } from '../IconFrame';\n\nexport interface SelectableCardProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title' | 'onSelect'> {\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n iconTone?: IconFrameTone;\n selected?: boolean;\n badge?: ReactNode;\n /**\n * `radio` for mutually-exclusive groups (single selection),\n * `checkbox` for multi-select.\n */\n selectionRole?: 'radio' | 'checkbox';\n onSelect?: () => void;\n}\n\n/**\n * Toggleable card with selected ring. Consolidates ~3 onboarding/creation\n * card shapes (template cards, cluster-onboarding choices, create-container\n * template selectors).\n */\nconst SelectableCard = forwardRef<HTMLButtonElement, SelectableCardProps>(({\n title,\n description,\n icon,\n iconTone = 'brand',\n selected = false,\n badge,\n selectionRole,\n onSelect,\n onClick,\n className,\n children,\n type = 'button',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-selectable-card',\n selected && 'volt-selectable-card--selected',\n className\n );\n\n const ariaProps = selectionRole === 'radio'\n ? { role: 'radio', 'aria-checked': selected }\n : selectionRole === 'checkbox'\n ? { role: 'checkbox', 'aria-checked': selected }\n : { 'aria-pressed': selected };\n\n return (\n <button\n ref={ref}\n type={type}\n className={classes}\n onClick={(event) => {\n onSelect?.();\n onClick?.(event);\n }}\n {...ariaProps}\n {...rest}\n >\n {badge && <span className='volt-selectable-card__badge'>{badge}</span>}\n <Stack align='center' gap='075' textAlign='center'>\n {icon && (\n <IconFrame size='lg' tone={iconTone}>\n {icon}\n </IconFrame>\n )}\n <Heading level={3} size='md' weight='semibold'>\n {title}\n </Heading>\n {description && (\n <Text size='sm' tone='secondary' lineHeight='5'>\n {description}\n </Text>\n )}\n {children}\n </Stack>\n </button>\n );\n});\n\nSelectableCard.displayName = 'SelectableCard';\n\nexport default SelectableCard;\n","import { cn } from '@/shared/utils/cn';\nimport './DashedActionBox.css';\nimport { Plus } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nexport type DashedActionTone = 'muted' | 'brand';\nexport type DashedActionSize = 'sm' | 'md' | 'lg';\n\nexport interface DashedActionBoxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n icon?: ReactNode;\n label: ReactNode;\n tone?: DashedActionTone;\n size?: DashedActionSize;\n block?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Dashed-border \"add X\" call-to-action button. Consolidates the\n * add-argument, add-option, add-field, file-dropzone patterns.\n */\nconst DashedActionBox = forwardRef<HTMLButtonElement, DashedActionBoxProps>(({\n icon,\n label,\n tone = 'muted',\n size = 'md',\n block = false,\n className,\n children,\n type = 'button',\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-dashed-action',\n `volt-dashed-action--tone-${tone}`,\n `volt-dashed-action--size-${size}`,\n block && 'volt-dashed-action--block',\n className\n );\n\n return (\n <button ref={ref} type={type} className={classes} {...rest}>\n <span className='volt-dashed-action__icon' aria-hidden='true'>\n {icon ?? <Plus size={16} />}\n </span>\n <span className='volt-dashed-action__label'>{label}</span>\n {children}\n </button>\n );\n});\n\nDashedActionBox.displayName = 'DashedActionBox';\n\nexport default DashedActionBox;\n","function __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nexport { _extends as _, _object_without_properties_loose as a };\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport { _ as _extends, a as _object_without_properties_loose } from './cc-B6peeNak.mjs';\nimport { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { memo, useMemo, useState, useRef, useLayoutEffect, useEffect, useCallback } from 'react';\nimport { motion } from 'motion/react';\n\n__insertCSS(\":root{--sileo-spring-easing:linear(\\n\\t\\t0,\\n\\t\\t0.002 0.6%,\\n\\t\\t0.007 1.2%,\\n\\t\\t0.015 1.8%,\\n\\t\\t0.026 2.4%,\\n\\t\\t0.041 3.1%,\\n\\t\\t0.06 3.8%,\\n\\t\\t0.108 5.3%,\\n\\t\\t0.157 6.6%,\\n\\t\\t0.214 8%,\\n\\t\\t0.467 13.7%,\\n\\t\\t0.577 16.3%,\\n\\t\\t0.631 17.7%,\\n\\t\\t0.682 19.1%,\\n\\t\\t0.73 20.5%,\\n\\t\\t0.771 21.8%,\\n\\t\\t0.808 23.1%,\\n\\t\\t0.844 24.5%,\\n\\t\\t0.874 25.8%,\\n\\t\\t0.903 27.2%,\\n\\t\\t0.928 28.6%,\\n\\t\\t0.952 30.1%,\\n\\t\\t0.972 31.6%,\\n\\t\\t0.988 33.1%,\\n\\t\\t1.01 35.7%,\\n\\t\\t1.025 38.5%,\\n\\t\\t1.034 41.6%,\\n\\t\\t1.038 45%,\\n\\t\\t1.035 50.1%,\\n\\t\\t1.012 64.2%,\\n\\t\\t1.003 73%,\\n\\t\\t0.999 83.7%,\\n\\t\\t1\\n\\t);--sileo-duration:600ms;--sileo-height:40px;--sileo-width:350px;--sileo-state-success:oklch(0.723 0.219 142.136);--sileo-state-loading:oklch(0.556 0 0);--sileo-state-error:oklch(0.637 0.237 25.331);--sileo-state-warning:oklch(0.795 0.184 86.047);--sileo-state-info:oklch(0.685 0.169 237.323);--sileo-state-action:oklch(0.623 0.214 259.815)}[data-sileo-toast]{position:relative;cursor:pointer;pointer-events:auto;touch-action:none;border:0;background:0 0;padding:0;width:var(--sileo-width);height:var(--_h,var(--sileo-height));opacity:0;transform:translateZ(0) scale(.95);transform-origin:center;contain:layout style;overflow:visible}[data-sileo-toast][data-state=loading]{cursor:default}[data-sileo-toast][data-ready=true]{opacity:1;transform:translateZ(0) scale(1);transition:transform calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),opacity calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),margin-bottom calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),margin-top calc(var(--sileo-duration) * .66) var(--sileo-spring-easing),height var(--sileo-duration) var(--sileo-spring-easing)}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){transform:translateY(-6px) scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){transform:translateY(6px) scale(.95)}[data-sileo-toast][data-ready=true][data-exiting=true]{opacity:0;pointer-events:none}[data-sileo-viewport][data-position^=top] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(-6px) scale(.95)}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast][data-ready=true][data-exiting=true]{transform:translateY(6px) scale(.95)}[data-sileo-canvas]{position:absolute;left:0;right:0;pointer-events:none;transform:translateZ(0);contain:layout style;overflow:visible}[data-sileo-canvas][data-edge=top]{bottom:0;transform:scaleY(-1) translateZ(0)}[data-sileo-canvas][data-edge=bottom]{top:0}[data-sileo-svg]{overflow:visible}[data-sileo-header]{position:absolute;z-index:20;display:flex;align-items:center;padding:.5rem;height:var(--sileo-height);overflow:hidden;left:var(--_px,0);transform:var(--_ht);max-width:var(--_pw)}[data-sileo-toast][data-ready=true] [data-sileo-header]{transition:transform var(--sileo-duration) var(--sileo-spring-easing),left var(--sileo-duration) var(--sileo-spring-easing),max-width var(--sileo-duration) var(--sileo-spring-easing)}[data-sileo-header][data-edge=top]{bottom:0}[data-sileo-header][data-edge=bottom]{top:0}[data-sileo-header-stack]{position:relative;display:inline-flex;align-items:center;height:100%}[data-sileo-header-inner]{display:flex;align-items:center;gap:.5rem;white-space:nowrap;opacity:1;filter:blur(0px);transform:translateZ(0)}[data-sileo-header-inner][data-layer=current]{position:relative;z-index:1;animation:sileo-header-enter var(--sileo-duration) var(--sileo-spring-easing) both}[data-sileo-header-inner][data-exiting=true],[data-sileo-header-inner][data-layer=current]:not(:only-child){will-change:opacity,filter}[data-sileo-header-inner][data-layer=prev]{position:absolute;left:0;top:0;z-index:0;pointer-events:none}[data-sileo-header-inner][data-exiting=true]{animation:sileo-header-exit calc(var(--sileo-duration) * .7) ease forwards}[data-sileo-badge]{display:flex;height:24px;width:24px;flex-shrink:0;align-items:center;justify-content:center;padding:2px;box-sizing:border-box;border-radius:9999px;color:var(--sileo-tone,currentColor);background-color:var(--sileo-tone-bg,transparent)}[data-sileo-title]{font-size:.825rem;line-height:1rem;font-weight:500;text-transform:capitalize;color:var(--sileo-tone,currentColor)}:is([data-sileo-badge],[data-sileo-title],[data-sileo-button])[data-state]{--_c:var(--sileo-state-success)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=loading]{--_c:var(--sileo-state-loading)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=error]{--_c:var(--sileo-state-error)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=warning]{--_c:var(--sileo-state-warning)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=info]{--_c:var(--sileo-state-info)}:is(\\n[data-sileo-badge],[data-sileo-title],[data-sileo-button]\\n)[data-state=action]{--_c:var(--sileo-state-action)}:is([data-sileo-badge],[data-sileo-title])[data-state]{--sileo-tone:var(--_c);--sileo-tone-bg:color-mix(in oklch, var(--_c) 20%, transparent)}[data-sileo-content]{position:absolute;left:0;z-index:10;width:100%;pointer-events:none;opacity:var(--_co, 0)}[data-sileo-content]:not([data-visible=true]){content-visibility:hidden}[data-sileo-toast][data-ready=true] [data-sileo-content]{transition:opacity calc(var(--sileo-duration) * .08) ease calc(var(--sileo-duration) * .04)}[data-sileo-content][data-edge=top]{top:0}[data-sileo-content][data-edge=bottom]{top:var(--sileo-height)}[data-sileo-content][data-visible=true]{pointer-events:auto}[data-sileo-toast][data-ready=true] [data-sileo-content][data-visible=true]{transition:opacity calc(var(--sileo-duration) * .6) ease calc(var(--sileo-duration) * .3)}[data-sileo-description]{width:100%;text-align:left;padding:1rem;font-size:.875rem;line-height:1.25rem;contain:layout style paint;content-visibility:auto}[data-sileo-button]{display:flex;align-items:center;justify-content:center;height:1.75rem;padding:0 .625rem;margin-top:.75rem;border-radius:9999px;border:0;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--sileo-btn-color,currentColor);background-color:var(--sileo-btn-bg,transparent);transition:background-color 150ms ease}[data-sileo-button]:hover{background-color:var(--sileo-btn-bg-hover,transparent)}[data-sileo-button][data-state]{--sileo-btn-color:var(--_c);--sileo-btn-bg:color-mix(in oklch, var(--_c) 15%, transparent);--sileo-btn-bg-hover:color-mix(in oklch, var(--_c) 25%, transparent)}[data-sileo-icon=spin]{animation:sileo-spin 1s linear infinite}@keyframes sileo-spin{to{transform:rotate(360deg)}}@keyframes sileo-header-enter{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0px)}}@keyframes sileo-header-exit{from{opacity:1;filter:blur(0px)}to{opacity:0;filter:blur(6px)}}[data-sileo-viewport]{position:fixed;z-index:50;display:flex;gap:.75rem;padding:.75rem;pointer-events:none;max-width:calc(100vw - 1.5rem);contain:layout style}[data-sileo-viewport][data-position^=top] [data-sileo-toast]:not([data-ready=true]){margin-bottom:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=bottom] [data-sileo-toast]:not([data-ready=true]){margin-top:calc(-1 * (var(--sileo-height) + .75rem))}[data-sileo-viewport][data-position^=top]{top:0;flex-direction:column-reverse}[data-sileo-viewport][data-position^=bottom]{bottom:0;flex-direction:column}[data-sileo-viewport][data-position$=left]{left:0;align-items:flex-start}[data-sileo-viewport][data-position$=right]{right:0;align-items:flex-end}[data-sileo-viewport][data-position$=center]{left:50%;transform:translateX(-50%);align-items:center}@media (prefers-reduced-motion:no-preference){[data-sileo-toast][data-ready=true]:hover,[data-sileo-toast][data-ready=true][data-exiting=true]{will-change:transform,opacity,height}}@media (prefers-reduced-motion:reduce){[data-sileo-viewport],[data-sileo-viewport] *,[data-sileo-viewport] ::after,[data-sileo-viewport] ::before{animation-duration:0s;animation-iteration-count:1;transition-duration:0s}}[data-sileo-viewport][data-theme=dark] [data-sileo-description]{color:rgba(0,0,0,.5)}[data-sileo-viewport][data-theme=light] [data-sileo-description]{color:rgba(255,255,255,.5)}\");\n\n/* --------------------------------- Layout --------------------------------- */ const HEIGHT = 40;\nconst WIDTH = 350;\nconst DEFAULT_ROUNDNESS = 16;\n/* --------------------------------- Timing --------------------------------- */ const DURATION_MS = 600;\nconst DURATION_S = DURATION_MS / 1000;\nconst DEFAULT_TOAST_DURATION = 6000;\nconst EXIT_DURATION = DEFAULT_TOAST_DURATION * 0.1;\nconst AUTO_EXPAND_DELAY = DEFAULT_TOAST_DURATION * 0.025;\nconst AUTO_COLLAPSE_DELAY = DEFAULT_TOAST_DURATION - 2000;\nconst SPRING = {\n type: \"spring\",\n bounce: 0.25,\n duration: DURATION_S\n};\n/* --------------------------------- Render --------------------------------- */ const BLUR_RATIO = 0.5;\nconst PILL_PADDING = 10;\nconst MIN_EXPAND_RATIO = 2.25;\nconst SWAP_COLLAPSE_MS = 200;\nconst HEADER_EXIT_MS = DURATION_MS * 0.7;\n\nconst Icon = (_0)=>{\n let { title, children } = _0, props = _object_without_properties_loose(_0, [\n \"title\",\n \"children\"\n ]);\n return /*#__PURE__*/ jsxs(\"svg\", _extends({}, props, {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: [\n /*#__PURE__*/ jsx(\"title\", {\n children: title\n }),\n children\n ]\n }));\n};\nconst ArrowRight = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Arrow Right\",\n children: [\n /*#__PURE__*/ jsx(\"path\", {\n d: \"M5 12h14\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m12 5 7 7-7 7\"\n })\n ]\n });\nconst LifeBuoy = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Life Buoy\",\n children: [\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m4.93 4.93 4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m14.83 9.17 4.24-4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m14.83 14.83 4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m9.17 14.83-4.24 4.24\"\n }),\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"4\"\n })\n ]\n });\nconst LoaderCircle = (props)=>/*#__PURE__*/ jsx(Icon, _extends({\n title: \"Loader Circle\"\n }, props, {\n children: /*#__PURE__*/ jsx(\"path\", {\n d: \"M21 12a9 9 0 1 1-6.219-8.56\"\n })\n }));\nconst X = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"X\",\n children: [\n /*#__PURE__*/ jsx(\"path\", {\n d: \"M18 6 6 18\"\n }),\n /*#__PURE__*/ jsx(\"path\", {\n d: \"m6 6 12 12\"\n })\n ]\n });\nconst CircleAlert = ()=>/*#__PURE__*/ jsxs(Icon, {\n title: \"Circle Alert\",\n children: [\n /*#__PURE__*/ jsx(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }),\n /*#__PURE__*/ jsx(\"line\", {\n x1: \"12\",\n x2: \"12\",\n y1: \"8\",\n y2: \"12\"\n }),\n /*#__PURE__*/ jsx(\"line\", {\n x1: \"12\",\n x2: \"12.01\",\n y1: \"16\",\n y2: \"16\"\n })\n ]\n });\nconst Check = ()=>/*#__PURE__*/ jsx(Icon, {\n title: \"Check\",\n children: /*#__PURE__*/ jsx(\"path\", {\n d: \"M20 6 9 17l-5-5\"\n })\n });\n\n/* ---------------------------------- Icons --------------------------------- */ const STATE_ICON = {\n success: /*#__PURE__*/ jsx(Check, {}),\n loading: /*#__PURE__*/ jsx(LoaderCircle, {\n \"data-sileo-icon\": \"spin\",\n \"aria-hidden\": \"true\"\n }),\n error: /*#__PURE__*/ jsx(X, {}),\n warning: /*#__PURE__*/ jsx(CircleAlert, {}),\n info: /*#__PURE__*/ jsx(LifeBuoy, {}),\n action: /*#__PURE__*/ jsx(ArrowRight, {})\n};\n/* ----------------------------- Memoised Defs ------------------------------ */ const GooeyDefs = /*#__PURE__*/ memo(function GooeyDefs({ filterId, blur }) {\n return /*#__PURE__*/ jsx(\"defs\", {\n children: /*#__PURE__*/ jsxs(\"filter\", {\n id: filterId,\n x: \"-20%\",\n y: \"-20%\",\n width: \"140%\",\n height: \"140%\",\n colorInterpolationFilters: \"sRGB\",\n children: [\n /*#__PURE__*/ jsx(\"feGaussianBlur\", {\n in: \"SourceGraphic\",\n stdDeviation: blur,\n result: \"blur\"\n }),\n /*#__PURE__*/ jsx(\"feColorMatrix\", {\n in: \"blur\",\n mode: \"matrix\",\n values: \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\",\n result: \"goo\"\n }),\n /*#__PURE__*/ jsx(\"feComposite\", {\n in: \"SourceGraphic\",\n in2: \"goo\",\n operator: \"atop\"\n })\n ]\n })\n });\n});\n/* ------------------------------- Component -------------------------------- */ const Sileo = /*#__PURE__*/ memo(function Sileo({ id, fill = \"#FFFFFF\", state = \"success\", title = state, description, position = \"left\", expand = \"bottom\", className, icon, styles, button, roundness, exiting = false, autoExpandDelayMs, autoCollapseDelayMs, canExpand, interruptKey, refreshKey, onMouseEnter, onMouseLeave, onDismiss }) {\n var _headerLayer_current_view_icon, _headerLayer_prev_view_icon;\n var _headerLayer_current_view_styles, _headerLayer_current_view_styles1, _headerLayer_prev_view_styles, _headerLayer_prev_view_styles1, _view_styles, _view_styles1;\n const next = useMemo(()=>({\n title,\n description,\n state,\n icon,\n styles,\n button,\n fill\n }), [\n title,\n description,\n state,\n icon,\n styles,\n button,\n fill\n ]);\n const [view, setView] = useState(next);\n const [applied, setApplied] = useState(refreshKey);\n const [isExpanded, setIsExpanded] = useState(false);\n const [ready, setReady] = useState(false);\n const [pillWidth, setPillWidth] = useState(0);\n const [contentHeight, setContentHeight] = useState(0);\n const hasDesc = Boolean(view.description) || Boolean(view.button);\n const isLoading = view.state === \"loading\";\n const open = hasDesc && isExpanded && !isLoading;\n const allowExpand = isLoading ? false : canExpand != null ? canExpand : !interruptKey || interruptKey === id;\n const headerKey = `${view.state}-${view.title}`;\n const filterId = `sileo-gooey-${id}`;\n const resolvedRoundness = Math.max(0, roundness != null ? roundness : DEFAULT_ROUNDNESS);\n const blur = resolvedRoundness * BLUR_RATIO;\n const headerRef = useRef(null);\n const contentRef = useRef(null);\n const headerExitRef = useRef(null);\n const autoExpandRef = useRef(null);\n const autoCollapseRef = useRef(null);\n const swapTimerRef = useRef(null);\n const lastRefreshKeyRef = useRef(refreshKey);\n const pendingRef = useRef(null);\n const [headerLayer, setHeaderLayer] = useState({\n current: {\n key: headerKey,\n view\n },\n prev: null\n });\n /* ------------------------------ Measurements ------------------------------ */ const innerRef = useRef(null);\n const headerPadRef = useRef(null);\n const pillRoRef = useRef(null);\n const pillRafRef = useRef(0);\n const pillObservedRef = useRef(null);\n // biome-ignore lint/correctness/useExhaustiveDependencies: headerLayer.current.key is used to force a re-render\n useLayoutEffect(()=>{\n const el = innerRef.current;\n const header = headerRef.current;\n if (!el || !header) return;\n if (headerPadRef.current === null) {\n const cs = getComputedStyle(header);\n headerPadRef.current = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\n }\n const px = headerPadRef.current;\n const measure = ()=>{\n const w = el.scrollWidth + px + PILL_PADDING;\n if (w > PILL_PADDING) {\n setPillWidth((prev)=>prev === w ? prev : w);\n }\n };\n measure();\n if (!pillRoRef.current) {\n pillRoRef.current = new ResizeObserver(()=>{\n cancelAnimationFrame(pillRafRef.current);\n pillRafRef.current = requestAnimationFrame(()=>{\n var _headerPadRef_current;\n const inner = innerRef.current;\n const pad = (_headerPadRef_current = headerPadRef.current) != null ? _headerPadRef_current : 0;\n if (!inner) return;\n const w = inner.scrollWidth + pad + PILL_PADDING;\n if (w > PILL_PADDING) {\n setPillWidth((prev)=>prev === w ? prev : w);\n }\n });\n });\n }\n if (pillObservedRef.current !== el) {\n if (pillObservedRef.current) {\n pillRoRef.current.unobserve(pillObservedRef.current);\n }\n pillRoRef.current.observe(el);\n pillObservedRef.current = el;\n }\n }, [\n headerLayer.current.key\n ]);\n useEffect(()=>{\n return ()=>{\n var _pillRoRef_current;\n cancelAnimationFrame(pillRafRef.current);\n (_pillRoRef_current = pillRoRef.current) == null ? void 0 : _pillRoRef_current.disconnect();\n };\n }, []);\n useLayoutEffect(()=>{\n if (!hasDesc) {\n setContentHeight(0);\n return;\n }\n const el = contentRef.current;\n if (!el) return;\n const measure = ()=>{\n const h = el.scrollHeight;\n setContentHeight((prev)=>prev === h ? prev : h);\n };\n measure();\n let rafId = 0;\n const ro = new ResizeObserver(()=>{\n cancelAnimationFrame(rafId);\n rafId = requestAnimationFrame(measure);\n });\n ro.observe(el);\n return ()=>{\n cancelAnimationFrame(rafId);\n ro.disconnect();\n };\n }, [\n hasDesc\n ]);\n useEffect(()=>{\n const raf = requestAnimationFrame(()=>setReady(true));\n return ()=>cancelAnimationFrame(raf);\n }, []);\n useLayoutEffect(()=>{\n setHeaderLayer((state)=>{\n if (state.current.key === headerKey) {\n if (state.current.view === view) return state;\n return _extends({}, state, {\n current: {\n key: headerKey,\n view\n }\n });\n }\n return {\n prev: state.current,\n current: {\n key: headerKey,\n view\n }\n };\n });\n }, [\n headerKey,\n view\n ]);\n useEffect(()=>{\n if (!headerLayer.prev) return;\n if (headerExitRef.current) {\n clearTimeout(headerExitRef.current);\n }\n headerExitRef.current = window.setTimeout(()=>{\n headerExitRef.current = null;\n setHeaderLayer((state)=>_extends({}, state, {\n prev: null\n }));\n }, HEADER_EXIT_MS);\n return ()=>{\n if (headerExitRef.current) {\n clearTimeout(headerExitRef.current);\n headerExitRef.current = null;\n }\n };\n }, [\n headerLayer.prev\n ]);\n /* ----------------------------- Sync fill ---------------------------------- */ useEffect(()=>{\n setView((prev)=>prev.fill === fill ? prev : _extends({}, prev, {\n fill\n }));\n }, [\n fill\n ]);\n /* ----------------------------- Refresh logic ------------------------------ */ useEffect(()=>{\n if (refreshKey === undefined) {\n setView(next);\n setApplied(undefined);\n pendingRef.current = null;\n lastRefreshKeyRef.current = refreshKey;\n return;\n }\n if (lastRefreshKeyRef.current === refreshKey) return;\n lastRefreshKeyRef.current = refreshKey;\n if (swapTimerRef.current) {\n clearTimeout(swapTimerRef.current);\n swapTimerRef.current = null;\n }\n if (open) {\n pendingRef.current = {\n key: refreshKey,\n payload: next\n };\n setIsExpanded(false);\n swapTimerRef.current = window.setTimeout(()=>{\n swapTimerRef.current = null;\n const pending = pendingRef.current;\n if (!pending) return;\n setView(pending.payload);\n setApplied(pending.key);\n pendingRef.current = null;\n }, SWAP_COLLAPSE_MS);\n } else {\n pendingRef.current = null;\n setView(next);\n setApplied(refreshKey);\n }\n }, [\n open,\n refreshKey,\n next\n ]);\n /* ----------------------------- Auto expand/collapse ----------------------- */ // biome-ignore lint/correctness/useExhaustiveDependencies: applied is used to force a re-render\n useEffect(()=>{\n if (!hasDesc) return;\n if (autoExpandRef.current) clearTimeout(autoExpandRef.current);\n if (autoCollapseRef.current) clearTimeout(autoCollapseRef.current);\n if (exiting || !allowExpand) {\n setIsExpanded(false);\n return;\n }\n if (autoExpandDelayMs == null && autoCollapseDelayMs == null) return;\n const expandDelay = autoExpandDelayMs != null ? autoExpandDelayMs : 0;\n const collapseDelay = autoCollapseDelayMs != null ? autoCollapseDelayMs : 0;\n if (expandDelay > 0) {\n autoExpandRef.current = window.setTimeout(()=>setIsExpanded(true), expandDelay);\n } else {\n setIsExpanded(true);\n }\n if (collapseDelay > 0) {\n autoCollapseRef.current = window.setTimeout(()=>setIsExpanded(false), collapseDelay);\n }\n return ()=>{\n if (autoExpandRef.current) clearTimeout(autoExpandRef.current);\n if (autoCollapseRef.current) clearTimeout(autoCollapseRef.current);\n };\n }, [\n autoCollapseDelayMs,\n autoExpandDelayMs,\n hasDesc,\n allowExpand,\n exiting,\n applied\n ]);\n /* ------------------------------ Derived values ---------------------------- */ const minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n const rawExpanded = hasDesc ? Math.max(minExpanded, HEIGHT + contentHeight) : minExpanded;\n const frozenExpandedRef = useRef(rawExpanded);\n if (open) {\n frozenExpandedRef.current = rawExpanded;\n }\n const expanded = open ? rawExpanded : frozenExpandedRef.current;\n const svgHeight = hasDesc ? Math.max(expanded, minExpanded) : HEIGHT;\n const expandedContent = Math.max(0, expanded - HEIGHT);\n const resolvedPillWidth = Math.max(pillWidth || HEIGHT, HEIGHT);\n const pillHeight = HEIGHT + blur * 3;\n const pillX = position === \"right\" ? WIDTH - resolvedPillWidth : position === \"center\" ? (WIDTH - resolvedPillWidth) / 2 : 0;\n /* ------------------------------- Memoised animate targets ----------------- */ const pillAnimate = useMemo(()=>({\n x: pillX,\n width: resolvedPillWidth,\n height: open ? pillHeight : HEIGHT\n }), [\n pillX,\n resolvedPillWidth,\n open,\n pillHeight\n ]);\n const bodyAnimate = useMemo(()=>({\n height: open ? expandedContent : 0,\n opacity: open ? 1 : 0\n }), [\n open,\n expandedContent\n ]);\n const bodyTransition = useMemo(()=>open ? SPRING : _extends({}, SPRING, {\n bounce: 0\n }), [\n open\n ]);\n const pillTransition = useMemo(()=>ready ? SPRING : {\n duration: 0\n }, [\n ready\n ]);\n const viewBox = `0 0 ${WIDTH} ${svgHeight}`;\n const canvasStyle = useMemo(()=>({\n filter: `url(#${filterId})`\n }), [\n filterId\n ]);\n /* ------------------------------- Inline styles ---------------------------- */ const rootStyle = useMemo(()=>({\n \"--_h\": `${open ? expanded : HEIGHT}px`,\n \"--_pw\": `${resolvedPillWidth}px`,\n \"--_px\": `${pillX}px`,\n \"--_ht\": `translateY(${open ? expand === \"bottom\" ? 3 : -3 : 0}px) scale(${open ? 0.9 : 1})`,\n \"--_co\": `${open ? 1 : 0}`\n }), [\n open,\n expanded,\n resolvedPillWidth,\n pillX,\n expand\n ]);\n /* -------------------------------- Handlers -------------------------------- */ const handleEnter = useCallback((e)=>{\n onMouseEnter == null ? void 0 : onMouseEnter(e);\n if (hasDesc) setIsExpanded(true);\n }, [\n hasDesc,\n onMouseEnter\n ]);\n const handleLeave = useCallback((e)=>{\n onMouseLeave == null ? void 0 : onMouseLeave(e);\n setIsExpanded(false);\n }, [\n onMouseLeave\n ]);\n const handleTransitionEnd = useCallback((e)=>{\n if (e.propertyName !== \"height\" && e.propertyName !== \"transform\") return;\n if (open) return;\n const pending = pendingRef.current;\n if (!pending) return;\n if (swapTimerRef.current) {\n clearTimeout(swapTimerRef.current);\n swapTimerRef.current = null;\n }\n setView(pending.payload);\n setApplied(pending.key);\n pendingRef.current = null;\n }, [\n open\n ]);\n /* -------------------------------- Swipe ----------------------------------- */ const SWIPE_DISMISS = 30;\n const SWIPE_MAX = 20;\n const buttonRef = useRef(null);\n const pointerStartRef = useRef(null);\n const onDismissRef = useRef(onDismiss);\n onDismissRef.current = onDismiss;\n const swipeHandlersRef = useRef(null);\n if (!swipeHandlersRef.current) {\n const handlers = {\n onMove: (e)=>{\n const el = buttonRef.current;\n if (pointerStartRef.current === null || !el) return;\n const dy = e.clientY - pointerStartRef.current;\n const sign = dy > 0 ? 1 : -1;\n const clamped = Math.min(Math.abs(dy), SWIPE_MAX) * sign;\n el.style.transform = `translateY(${clamped}px)`;\n },\n onUp: (e)=>{\n const el = buttonRef.current;\n if (pointerStartRef.current === null || !el) return;\n const dy = e.clientY - pointerStartRef.current;\n pointerStartRef.current = null;\n el.style.transform = \"\";\n el.removeEventListener(\"pointermove\", handlers.onMove);\n el.removeEventListener(\"pointerup\", handlers.onUp);\n if (Math.abs(dy) > SWIPE_DISMISS) {\n onDismissRef.current == null ? void 0 : onDismissRef.current.call(onDismissRef);\n }\n }\n };\n swipeHandlersRef.current = handlers;\n }\n const handleButtonClick = useCallback((e)=>{\n var _view_button;\n e.preventDefault();\n e.stopPropagation();\n (_view_button = view.button) == null ? void 0 : _view_button.onClick();\n }, [\n view.button\n ]);\n const handlePointerDown = useCallback((e)=>{\n if (exiting || !onDismiss) return;\n const target = e.target;\n if (target.closest(\"[data-sileo-button]\")) return;\n pointerStartRef.current = e.clientY;\n e.currentTarget.setPointerCapture(e.pointerId);\n const el = buttonRef.current;\n const h = swipeHandlersRef.current;\n if (el && h) {\n el.addEventListener(\"pointermove\", h.onMove, {\n passive: true\n });\n el.addEventListener(\"pointerup\", h.onUp, {\n passive: true\n });\n }\n }, [\n exiting,\n onDismiss\n ]);\n /* --------------------------------- Render --------------------------------- */ return /*#__PURE__*/ jsxs(\"button\", {\n ref: buttonRef,\n type: \"button\",\n \"data-sileo-toast\": true,\n \"data-ready\": ready,\n \"data-expanded\": open,\n \"data-exiting\": exiting,\n \"data-edge\": expand,\n \"data-position\": position,\n \"data-state\": view.state,\n className: className,\n style: rootStyle,\n onMouseEnter: handleEnter,\n onMouseLeave: handleLeave,\n onTransitionEnd: handleTransitionEnd,\n onPointerDown: handlePointerDown,\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-canvas\": true,\n \"data-edge\": expand,\n style: canvasStyle,\n children: /*#__PURE__*/ jsxs(\"svg\", {\n \"data-sileo-svg\": true,\n width: WIDTH,\n height: svgHeight,\n viewBox: viewBox,\n children: [\n /*#__PURE__*/ jsx(\"title\", {\n children: \"Sileo Notification\"\n }),\n /*#__PURE__*/ jsx(GooeyDefs, {\n filterId: filterId,\n blur: blur\n }),\n /*#__PURE__*/ jsx(motion.rect, {\n \"data-sileo-pill\": true,\n rx: resolvedRoundness,\n ry: resolvedRoundness,\n fill: view.fill,\n initial: false,\n animate: pillAnimate,\n transition: pillTransition\n }),\n /*#__PURE__*/ jsx(motion.rect, {\n \"data-sileo-body\": true,\n y: HEIGHT,\n width: WIDTH,\n rx: resolvedRoundness,\n ry: resolvedRoundness,\n fill: view.fill,\n initial: false,\n animate: bodyAnimate,\n transition: bodyTransition\n })\n ]\n })\n }),\n /*#__PURE__*/ jsx(\"div\", {\n ref: headerRef,\n \"data-sileo-header\": true,\n \"data-edge\": expand,\n children: /*#__PURE__*/ jsxs(\"div\", {\n \"data-sileo-header-stack\": true,\n children: [\n /*#__PURE__*/ jsxs(\"div\", {\n ref: innerRef,\n \"data-sileo-header-inner\": true,\n \"data-layer\": \"current\",\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-badge\": true,\n \"data-state\": headerLayer.current.view.state,\n className: (_headerLayer_current_view_styles = headerLayer.current.view.styles) == null ? void 0 : _headerLayer_current_view_styles.badge,\n children: (_headerLayer_current_view_icon = headerLayer.current.view.icon) != null ? _headerLayer_current_view_icon : STATE_ICON[headerLayer.current.view.state]\n }),\n /*#__PURE__*/ jsx(\"span\", {\n \"data-sileo-title\": true,\n \"data-state\": headerLayer.current.view.state,\n className: (_headerLayer_current_view_styles1 = headerLayer.current.view.styles) == null ? void 0 : _headerLayer_current_view_styles1.title,\n children: headerLayer.current.view.title\n })\n ]\n }, headerLayer.current.key),\n headerLayer.prev && /*#__PURE__*/ jsxs(\"div\", {\n \"data-sileo-header-inner\": true,\n \"data-layer\": \"prev\",\n \"data-exiting\": \"true\",\n children: [\n /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-badge\": true,\n \"data-state\": headerLayer.prev.view.state,\n className: (_headerLayer_prev_view_styles = headerLayer.prev.view.styles) == null ? void 0 : _headerLayer_prev_view_styles.badge,\n children: (_headerLayer_prev_view_icon = headerLayer.prev.view.icon) != null ? _headerLayer_prev_view_icon : STATE_ICON[headerLayer.prev.view.state]\n }),\n /*#__PURE__*/ jsx(\"span\", {\n \"data-sileo-title\": true,\n \"data-state\": headerLayer.prev.view.state,\n className: (_headerLayer_prev_view_styles1 = headerLayer.prev.view.styles) == null ? void 0 : _headerLayer_prev_view_styles1.title,\n children: headerLayer.prev.view.title\n })\n ]\n }, headerLayer.prev.key)\n ]\n })\n }),\n hasDesc && /*#__PURE__*/ jsx(\"div\", {\n \"data-sileo-content\": true,\n \"data-edge\": expand,\n \"data-visible\": open,\n children: /*#__PURE__*/ jsxs(\"div\", {\n ref: contentRef,\n \"data-sileo-description\": true,\n className: (_view_styles = view.styles) == null ? void 0 : _view_styles.description,\n children: [\n view.description,\n view.button && // biome-ignore lint/a11y/useValidAnchor: cannot use button inside a button\n /*#__PURE__*/ jsx(\"a\", {\n href: \"#\",\n type: \"button\",\n \"data-sileo-button\": true,\n \"data-state\": view.state,\n className: (_view_styles1 = view.styles) == null ? void 0 : _view_styles1.button,\n onClick: handleButtonClick,\n children: view.button.title\n })\n ]\n })\n })\n ]\n });\n});\n\nconst pillAlign = (pos)=>pos.includes(\"right\") ? \"right\" : pos.includes(\"center\") ? \"center\" : \"left\";\nconst expandDir = (pos)=>pos.startsWith(\"top\") ? \"bottom\" : \"top\";\nconst store = {\n toasts: [],\n listeners: new Set(),\n position: \"top-right\",\n options: undefined,\n emit () {\n for (const fn of this.listeners)fn(this.toasts);\n },\n update (fn) {\n this.toasts = fn(this.toasts);\n this.emit();\n }\n};\nlet idCounter = 0;\nconst generateId = ()=>`${++idCounter}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\nconst timeoutKey = (t)=>`${t.id}:${t.instanceId}`;\n/* ------------------------------- Toast API -------------------------------- */ const dismissToast = (id)=>{\n const item = store.toasts.find((t)=>t.id === id);\n if (!item || item.exiting) return;\n store.update((prev)=>prev.map((t)=>t.id === id ? _extends({}, t, {\n exiting: true\n }) : t));\n setTimeout(()=>store.update((prev)=>prev.filter((t)=>t.id !== id)), EXIT_DURATION);\n};\nconst resolveAutopilot = (opts, duration)=>{\n var _ref, _ref1;\n if (opts.autopilot === false || !duration || duration <= 0) return {};\n const cfg = typeof opts.autopilot === \"object\" ? opts.autopilot : undefined;\n const clamp = (v)=>Math.min(duration, Math.max(0, v));\n return {\n expandDelayMs: clamp((_ref = cfg == null ? void 0 : cfg.expand) != null ? _ref : AUTO_EXPAND_DELAY),\n collapseDelayMs: clamp((_ref1 = cfg == null ? void 0 : cfg.collapse) != null ? _ref1 : AUTO_COLLAPSE_DELAY)\n };\n};\nconst mergeOptions = (options)=>{\n var _store_options;\n return _extends({}, store.options, options, {\n styles: _extends({}, (_store_options = store.options) == null ? void 0 : _store_options.styles, options.styles)\n });\n};\nconst buildSileoItem = (merged, id, fallbackPosition)=>{\n var _merged_duration, _ref, _merged_position;\n const duration = (_merged_duration = merged.duration) != null ? _merged_duration : DEFAULT_TOAST_DURATION;\n const auto = resolveAutopilot(merged, duration);\n return _extends({}, merged, {\n id,\n instanceId: generateId(),\n position: (_ref = (_merged_position = merged.position) != null ? _merged_position : fallbackPosition) != null ? _ref : store.position,\n autoExpandDelayMs: auto.expandDelayMs,\n autoCollapseDelayMs: auto.collapseDelayMs\n });\n};\nconst createToast = (options)=>{\n var _merged_id, _merged_duration;\n const live = store.toasts.filter((t)=>!t.exiting);\n const merged = mergeOptions(options);\n const id = (_merged_id = merged.id) != null ? _merged_id : \"sileo-default\";\n const prev = live.find((t)=>t.id === id);\n const item = buildSileoItem(merged, id, prev == null ? void 0 : prev.position);\n if (prev) {\n store.update((p)=>p.map((t)=>t.id === id ? item : t));\n } else {\n store.update((p)=>[\n ...p.filter((t)=>t.id !== id),\n item\n ]);\n }\n return {\n id,\n duration: (_merged_duration = merged.duration) != null ? _merged_duration : DEFAULT_TOAST_DURATION\n };\n};\nconst updateToast = (id, options)=>{\n const existing = store.toasts.find((t)=>t.id === id);\n if (!existing) return;\n const item = buildSileoItem(mergeOptions(options), id, existing.position);\n store.update((prev)=>prev.map((t)=>t.id === id ? item : t));\n};\nconst sileo = {\n show: (opts)=>createToast(_extends({}, opts, {\n state: opts.type\n })).id,\n success: (opts)=>createToast(_extends({}, opts, {\n state: \"success\"\n })).id,\n error: (opts)=>createToast(_extends({}, opts, {\n state: \"error\"\n })).id,\n warning: (opts)=>createToast(_extends({}, opts, {\n state: \"warning\"\n })).id,\n info: (opts)=>createToast(_extends({}, opts, {\n state: \"info\"\n })).id,\n action: (opts)=>createToast(_extends({}, opts, {\n state: \"action\"\n })).id,\n promise: (promise, opts)=>{\n const { id } = createToast(_extends({}, opts.loading, {\n state: \"loading\",\n duration: null,\n position: opts.position\n }));\n const p = typeof promise === \"function\" ? promise() : promise;\n p.then((data)=>{\n if (opts.action) {\n const actionOpts = typeof opts.action === \"function\" ? opts.action(data) : opts.action;\n updateToast(id, _extends({}, actionOpts, {\n state: \"action\",\n id\n }));\n } else {\n const successOpts = typeof opts.success === \"function\" ? opts.success(data) : opts.success;\n updateToast(id, _extends({}, successOpts, {\n state: \"success\",\n id\n }));\n }\n }).catch((err)=>{\n const errorOpts = typeof opts.error === \"function\" ? opts.error(err) : opts.error;\n updateToast(id, _extends({}, errorOpts, {\n state: \"error\",\n id\n }));\n });\n return p;\n },\n dismiss: dismissToast,\n clear: (position)=>store.update((prev)=>position ? prev.filter((t)=>t.position !== position) : [])\n};\n/* ------------------------------ Toaster Component ------------------------- */ const THEME_FILLS = {\n light: \"#1a1a1a\",\n dark: \"#f2f2f2\"\n};\nfunction useResolvedTheme(theme) {\n const [resolved, setResolved] = useState(()=>{\n if (theme === \"light\" || theme === \"dark\") return theme;\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n });\n useEffect(()=>{\n if (theme === \"light\" || theme === \"dark\") {\n setResolved(theme);\n return;\n }\n const mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handler = (e)=>setResolved(e.matches ? \"dark\" : \"light\");\n setResolved(mq.matches ? \"dark\" : \"light\");\n mq.addEventListener(\"change\", handler);\n return ()=>mq.removeEventListener(\"change\", handler);\n }, [\n theme\n ]);\n return resolved;\n}\nfunction Toaster({ children, position = \"top-right\", offset, options, theme }) {\n const resolvedTheme = useResolvedTheme(theme);\n const [toasts, setToasts] = useState(store.toasts);\n const [activeId, setActiveId] = useState();\n const hoverRef = useRef(false);\n const timersRef = useRef(new Map());\n const listRef = useRef(toasts);\n const latestRef = useRef(undefined);\n const handlersCache = useRef(new Map());\n useEffect(()=>{\n store.position = position;\n store.options = options;\n }, [\n position,\n options\n ]);\n const clearAllTimers = useCallback(()=>{\n for (const t of timersRef.current.values())clearTimeout(t);\n timersRef.current.clear();\n }, []);\n const schedule = useCallback((items)=>{\n if (hoverRef.current) return;\n for (const item of items){\n var _item_duration;\n if (item.exiting) continue;\n const key = timeoutKey(item);\n if (timersRef.current.has(key)) continue;\n if (item.duration === null) continue;\n const dur = (_item_duration = item.duration) != null ? _item_duration : DEFAULT_TOAST_DURATION;\n if (dur <= 0) continue;\n timersRef.current.set(key, window.setTimeout(()=>dismissToast(item.id), dur));\n }\n }, []);\n useEffect(()=>{\n const listener = (next)=>setToasts(next);\n store.listeners.add(listener);\n return ()=>{\n store.listeners.delete(listener);\n clearAllTimers();\n };\n }, [\n clearAllTimers\n ]);\n useEffect(()=>{\n listRef.current = toasts;\n const toastKeys = new Set(toasts.map(timeoutKey));\n const toastIds = new Set(toasts.map((t)=>t.id));\n for (const [key, timer] of timersRef.current){\n if (!toastKeys.has(key)) {\n clearTimeout(timer);\n timersRef.current.delete(key);\n }\n }\n for (const id of handlersCache.current.keys()){\n if (!toastIds.has(id)) handlersCache.current.delete(id);\n }\n schedule(toasts);\n }, [\n toasts,\n schedule\n ]);\n const handleMouseEnterRef = useRef(null);\n const handleMouseLeaveRef = useRef(null);\n handleMouseEnterRef.current = useCallback(()=>{\n if (hoverRef.current) return;\n hoverRef.current = true;\n clearAllTimers();\n }, [\n clearAllTimers\n ]);\n handleMouseLeaveRef.current = useCallback(()=>{\n if (!hoverRef.current) return;\n hoverRef.current = false;\n schedule(listRef.current);\n }, [\n schedule\n ]);\n const latest = useMemo(()=>{\n for(let i = toasts.length - 1; i >= 0; i--){\n if (!toasts[i].exiting) return toasts[i].id;\n }\n return undefined;\n }, [\n toasts\n ]);\n useEffect(()=>{\n latestRef.current = latest;\n setActiveId(latest);\n }, [\n latest\n ]);\n const getHandlers = useCallback((toastId)=>{\n let cached = handlersCache.current.get(toastId);\n if (cached) return cached;\n cached = {\n enter: (e)=>{\n setActiveId((prev)=>prev === toastId ? prev : toastId);\n handleMouseEnterRef.current == null ? void 0 : handleMouseEnterRef.current.call(handleMouseEnterRef, e);\n },\n leave: (e)=>{\n setActiveId((prev)=>prev === latestRef.current ? prev : latestRef.current);\n handleMouseLeaveRef.current == null ? void 0 : handleMouseLeaveRef.current.call(handleMouseLeaveRef, e);\n },\n dismiss: ()=>dismissToast(toastId)\n };\n handlersCache.current.set(toastId, cached);\n return cached;\n }, []);\n const getViewportStyle = useCallback((pos)=>{\n if (offset === undefined) return undefined;\n const o = typeof offset === \"object\" ? offset : {\n top: offset,\n right: offset,\n bottom: offset,\n left: offset\n };\n const s = {};\n const px = (v)=>typeof v === \"number\" ? `${v}px` : v;\n if (pos.startsWith(\"top\") && o.top) s.top = px(o.top);\n if (pos.startsWith(\"bottom\") && o.bottom) s.bottom = px(o.bottom);\n if (pos.endsWith(\"left\") && o.left) s.left = px(o.left);\n if (pos.endsWith(\"right\") && o.right) s.right = px(o.right);\n return s;\n }, [\n offset\n ]);\n const activePositions = useMemo(()=>{\n const map = new Map();\n for (const t of toasts){\n var _t_position;\n const pos = (_t_position = t.position) != null ? _t_position : position;\n const arr = map.get(pos);\n if (arr) {\n arr.push(t);\n } else {\n map.set(pos, [\n t\n ]);\n }\n }\n return map;\n }, [\n toasts,\n position\n ]);\n return /*#__PURE__*/ jsxs(Fragment, {\n children: [\n children,\n Array.from(activePositions, ([pos, items])=>{\n const pill = pillAlign(pos);\n const expand = expandDir(pos);\n return /*#__PURE__*/ jsx(\"section\", {\n \"data-sileo-viewport\": true,\n \"data-position\": pos,\n \"data-theme\": theme ? resolvedTheme : undefined,\n \"aria-live\": \"polite\",\n style: getViewportStyle(pos),\n children: items.map((item)=>{\n var _item_fill;\n const h = getHandlers(item.id);\n return /*#__PURE__*/ jsx(Sileo, {\n id: item.id,\n state: item.state,\n title: item.title,\n description: item.description,\n position: pill,\n expand: expand,\n icon: item.icon,\n fill: (_item_fill = item.fill) != null ? _item_fill : theme ? THEME_FILLS[resolvedTheme] : undefined,\n styles: item.styles,\n button: item.button,\n roundness: item.roundness,\n exiting: item.exiting,\n autoExpandDelayMs: item.autoExpandDelayMs,\n autoCollapseDelayMs: item.autoCollapseDelayMs,\n refreshKey: item.instanceId,\n canExpand: activeId === undefined || activeId === item.id,\n onMouseEnter: h.enter,\n onMouseLeave: h.leave,\n onDismiss: h.dismiss\n }, item.id);\n })\n }, pos);\n })\n ]\n });\n}\n\nexport { Toaster, sileo };\n","import { sileo } from 'sileo';\n\ninterface CopyToClipboardOptions {\n successMessage?: string;\n errorMessage?: string;\n};\n\nconst DEFAULT_SUCCESS_MESSAGE = 'Copied to clipboard';\nconst DEFAULT_ERROR_MESSAGE = 'Failed to copy to clipboard';\n\n/** Copies text to the clipboard and shows consistent toast feedback. */\nexport const copyTextToClipboard = async (\n text: string,\n {\n successMessage = DEFAULT_SUCCESS_MESSAGE,\n errorMessage = DEFAULT_ERROR_MESSAGE\n }: CopyToClipboardOptions = {}\n): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text);\n sileo.success({ title: successMessage });\n return true;\n } catch {\n sileo.error({ title: errorMessage });\n return false;\n }\n};\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport Stack from '../Stack';\nimport IconButton from '../IconButton';\nimport './KeyValueList.css';\nimport { copyTextToClipboard } from '@/shared/presentation/utilities/copy-to-clipboard';\nimport { Check, Copy } from 'lucide-react';\nimport { forwardRef, useCallback, useState } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n label: ReactNode;\n value: ReactNode;\n copyValue?: string;\n action?: ReactNode;\n tabular?: boolean;\n}\n\n/**\n * Single label/value pair row with optional copy action or custom trailing\n * action slot. Intended for use inside `KeyValueList`.\n */\nexport const KeyValueRow = forwardRef<HTMLDivElement, KeyValueRowProps>(({\n label,\n value,\n copyValue,\n action,\n tabular = false,\n className,\n ...rest\n}, ref) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n if (!copyValue) return;\n const ok = await copyTextToClipboard(copyValue);\n if (ok) {\n setCopied(true);\n setTimeout(() => setCopied(false), 1400);\n }\n }, [copyValue]);\n\n return (\n <div ref={ref} className={cn('volt-kv-row', className)} {...rest}>\n <Text as='span' size='sm' tone='secondary' className='volt-kv-row__label'>\n {label}\n </Text>\n <Row gap='05' align='center' className='volt-kv-row__value-group'>\n <Text\n as='span'\n size='sm'\n tone='primary'\n weight='medium'\n className={cn('volt-kv-row__value', tabular && 'tabular-nums')}\n >\n {value}\n </Text>\n {copyValue && (\n <IconButton\n size='sm'\n variant='ghost'\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy value'}\n >\n {copied ? <Check size={14} /> : <Copy size={14} />}\n </IconButton>\n )}\n {action}\n </Row>\n </div>\n );\n});\n\nKeyValueRow.displayName = 'KeyValueRow';\n\nexport interface KeyValueListProps extends HTMLAttributes<HTMLDivElement> {\n dividers?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Definition-style list. Renders each child `KeyValueRow` with consistent\n * spacing and optional inter-row dividers.\n */\nconst KeyValueList = forwardRef<HTMLDivElement, KeyValueListProps>(({\n dividers = true,\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <Stack\n ref={ref}\n className={cn('volt-kv-list', dividers && 'volt-kv-list--dividers', className)}\n {...rest}\n >\n {children}\n </Stack>\n );\n});\n\nKeyValueList.displayName = 'KeyValueList';\n\nexport default KeyValueList;\n","import { cn } from '@/shared/utils/cn';\nimport Text from '../Text';\nimport './ListRow.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nexport interface ListRowProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n leading?: ReactNode;\n title?: ReactNode;\n subtitle?: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n selected?: boolean;\n active?: boolean;\n onClick?: () => void;\n to?: string;\n /** When `onClick`/`to` are absent, renders as a passive `div`. */\n as?: 'button' | 'div' | 'li';\n disabled?: boolean;\n}\n\n/**\n * Hoverable list row with leading / primary / subtitle / trailing slots.\n * Consolidates team member rows, chat list items, user cells, and similar list entries.\n */\nconst ListRow = forwardRef<HTMLElement, ListRowProps>(({\n leading,\n title,\n subtitle,\n meta,\n trailing,\n selected = false,\n active = false,\n onClick,\n to,\n as,\n disabled,\n className,\n ...rest\n}, ref) => {\n const classes = cn(\n 'volt-list-row',\n 'list-item-hoverable',\n selected && 'volt-list-row--selected',\n active && 'volt-list-row--active',\n disabled && 'volt-list-row--disabled',\n className\n );\n\n const inner = (\n <>\n {leading && (\n <div className='volt-list-row__leading' aria-hidden='true'>\n {leading}\n </div>\n )}\n <div className='volt-list-row__content'>\n {title && (\n <Text as='span' size='md' weight='medium' tone='primary' truncate>\n {title}\n </Text>\n )}\n {subtitle && (\n <Text as='span' size='sm' tone='muted' truncate>\n {subtitle}\n </Text>\n )}\n {meta}\n </div>\n {trailing && (\n <div className='volt-list-row__trailing'>\n {trailing}\n </div>\n )}\n </>\n );\n\n if (to) {\n return (\n <Link\n ref={ref as React.Ref<HTMLAnchorElement>}\n to={to}\n className={classes}\n aria-current={selected ? 'page' : undefined}\n {...(rest as unknown as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {inner}\n </Link>\n );\n }\n\n if (onClick || as === 'button') {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type='button'\n className={classes}\n onClick={onClick}\n disabled={disabled}\n aria-pressed={selected || undefined}\n {...(rest as unknown as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {inner}\n </button>\n );\n }\n\n const Component = (as ?? 'div') as 'div' | 'li';\n\n return (\n <Component\n ref={ref as unknown as React.Ref<HTMLDivElement & HTMLLIElement>}\n className={classes}\n {...(rest as HTMLAttributes<HTMLElement>)}\n >\n {inner}\n </Component>\n );\n});\n\nListRow.displayName = 'ListRow';\n\nexport default ListRow;\n","/**\n * Format a number to a human-readable string with K, M, B suffixes\n */\nexport const formatNumber = (num: number): string => {\n if(num === 0) return '0';\n const absNum = Math.abs(num);\n const sign = num < 0 ? '-' : '';\n if(absNum >= 1000000000){\n return sign + (absNum / 1000000000).toFixed(2).replace(/\\.?0+$/, '') + 'B';\n }\n if(absNum >= 1000000){\n return sign + (absNum / 1000000).toFixed(2).replace(/\\.?0+$/, '') + 'M';\n }\n if(absNum >= 1000){\n return sign + (absNum / 1000).toFixed(2).replace(/\\.?0+$/, '') + 'K';\n }\n return sign + absNum.toString();\n};\n\n/**\n * Format a duration in minutes as \"Dd Hh\", \"Hh Mm\", \"Mm\", or \"<1m\" for fractional values.\n */\nexport const formatDuration = (minutes: number): string => {\n if(minutes <= 0) return '0m';\n if(minutes < 1) return '<1m';\n\n const totalMinutes = Math.floor(minutes);\n const hours = Math.floor(totalMinutes / 60);\n const mins = totalMinutes % 60;\n\n if(hours >= 24){\n const days = Math.floor(hours / 24);\n const remainingHours = hours % 24;\n return remainingHours > 0 ? `${days}d ${remainingHours}h` : `${days}d`;\n }\n if(hours > 0){\n return mins > 0 ? `${hours}h ${mins}m` : `${hours}h`;\n }\n return `${mins}m`;\n};\n\n/**\n * Format bytes to human-readable size string\n */\nexport const formatSize = (bytes: number): string => {\n if(bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.min(Math.max(0, Math.floor(Math.log(bytes) / Math.log(k))), sizes.length - 1);\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * Format an unknown runtime value into a safe display string.\n */\nexport const formatUnknownValue = (value: unknown): string => {\n if(value === null || value === undefined) return '-';\n if(typeof value === 'string') return value;\n if(typeof value === 'number' || typeof value === 'bigint' || typeof value === 'boolean') {\n return String(value);\n }\n if(value instanceof Date) return value.toISOString();\n if(Array.isArray(value)){\n if(value.length === 0) return '[]';\n const preview = value.slice(0, 3).map(formatUnknownValue).join(', ');\n return value.length > 3 ? `[${preview}, ...]` : `[${preview}]`;\n }\n if(typeof value === 'object'){\n const entries = Object.entries(value as Record<string, unknown>);\n if(entries.length === 0) return '{}';\n const preview = entries\n .slice(0, 3)\n .map(([key, entry]) => `${key}: ${formatUnknownValue(entry)}`)\n .join(', ');\n return entries.length > 3 ? `{${preview}, ...}` : `{${preview}}`;\n }\n\n try{\n const serialized = JSON.stringify(value);\n return typeof serialized === 'string' ? serialized : String(value);\n }catch{\n return String(value);\n }\n};\n\n/**\n * Get nested value from object by dot-notation path\n */\nexport const getValueByPath = (obj: unknown, path: string): unknown => {\n if(!obj || typeof obj !== 'object') return undefined;\n const keys = path.split('.');\n let current: unknown = obj;\n for(const key of keys){\n if(current === null || current === undefined) return undefined;\n if(typeof current !== 'object') return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n};\n","import './Table.css';\nimport Skeleton from '../Skeleton';\nimport { forwardRef, useCallback } from 'react';\nimport { formatUnknownValue } from '@/shared/utils/format';\nimport type { Ref } from 'react';\n\nexport enum TableSortDirection {\n Ascending = 'ascending',\n Descending = 'descending',\n None = 'none'\n};\n\nexport interface Column<T> {\n key: string;\n header: string;\n render?: (row: T) => React.ReactNode;\n headerClassName?: string;\n cellClassName?: string;\n sortable?: boolean;\n};\n\ninterface TableProps<T> {\n columns: Column<T>[];\n data: T[];\n getRowKey: (row: T, index: number) => string | number;\n isLoading?: boolean;\n skeletonRows?: number;\n onRowClick?: (row: T) => void;\n rowClassName?: string | ((row: T) => string);\n className?: string;\n getAriaSort?: (column: Column<T>) => TableSortDirection;\n onSort?: (column: Column<T>) => void;\n caption?: string;\n};\n\nconst TableImpl = <T,>(\n {\n columns,\n data,\n getRowKey,\n isLoading = false,\n skeletonRows = 5,\n onRowClick,\n rowClassName,\n className = '',\n getAriaSort = () => TableSortDirection.None,\n onSort,\n caption\n }: TableProps<T>,\n ref: Ref<HTMLDivElement>\n) => {\n const getRowClass = useCallback((row: T): string => {\n const base = onRowClick ? 'clickable' : '';\n if (!rowClassName) return base;\n if (typeof rowClassName === 'string') return `${base} ${rowClassName}`;\n return `${base} ${rowClassName(row)}`;\n }, [onRowClick, rowClassName]);\n\n const renderSkeletonRows = () => (\n Array.from({ length: skeletonRows }).map((_, i) => (\n <tr key={`skeleton-${i}`} aria-hidden='true'>\n {columns.map((col) => (\n <td key={col.key}>\n <Skeleton variant='text' width='70%' height={20} animation='wave' />\n </td>\n ))}\n </tr>\n ))\n );\n\n const renderCell = (row: T, col: Column<T>) => {\n if (col.render) return col.render(row);\n return formatUnknownValue((row as Record<string, unknown>)[col.key]);\n };\n\n const renderHeaderCell = (col: Column<T>) => {\n if (!col.sortable || !onSort) {\n return col.header;\n }\n\n return (\n <button\n type='button'\n className='table-sort-button'\n onClick={() => onSort(col)}\n aria-label={`Sort by ${col.header}`}\n >\n {col.header}\n </button>\n );\n };\n\n return (\n <div ref={ref} className='table-scroll-wrapper'>\n <table className={`table ${className}`}>\n {caption && <caption className='table-caption'>{caption}</caption>}\n <thead>\n <tr>\n {columns.map((col) => (\n <th key={col.key} scope='col' className={col.headerClassName} aria-sort={getAriaSort(col)}>\n {renderHeaderCell(col)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {isLoading ? renderSkeletonRows() : (\n data.map((row, index) => (\n <tr\n key={getRowKey(row, index)}\n className={getRowClass(row)}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n >\n {columns.map((col) => (\n <td key={col.key} className={col.cellClassName}>\n {renderCell(row, col)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nconst Table = forwardRef(TableImpl) as (<T>(\n props: TableProps<T> & { ref?: Ref<HTMLDivElement> }\n) => ReturnType<typeof TableImpl>) & { displayName?: string };\n\nTable.displayName = 'Table';\n\nexport default Table;\n","import { cn } from '@/shared/utils/cn';\nimport './Timeline.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nexport type TimelineTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';\n\nexport interface TimelineItemProps extends HTMLAttributes<HTMLLIElement> {\n icon?: ReactNode;\n tone?: TimelineTone;\n connector?: boolean;\n children?: ReactNode;\n}\n\n/** A single timeline entry — dot/icon column + content column. */\nexport const TimelineItem = forwardRef<HTMLLIElement, TimelineItemProps>(({\n icon,\n tone = 'neutral',\n connector = true,\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <li\n ref={ref}\n className={cn('volt-timeline-item', `volt-timeline-item--tone-${tone}`, className)}\n {...rest}\n >\n <span className='volt-timeline-item__rail' aria-hidden='true'>\n <span className='volt-timeline-item__dot'>{icon}</span>\n {connector && <span className='volt-timeline-item__line' />}\n </span>\n <div className='volt-timeline-item__content'>\n {children}\n </div>\n </li>\n );\n});\n\nTimelineItem.displayName = 'TimelineItem';\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n children?: ReactNode;\n}\n\n/** Vertical timeline container. Children should be `TimelineItem` instances. */\nconst Timeline = forwardRef<HTMLOListElement, TimelineProps>(({\n className,\n children,\n ...rest\n}, ref) => {\n return (\n <ol ref={ref} className={cn('volt-timeline', className)} {...rest}>\n {children}\n </ol>\n );\n});\n\nTimeline.displayName = 'Timeline';\n\nexport default Timeline;\n","import { useId, useMemo } from 'react';\nimport { AreaChart, Area, YAxis, ResponsiveContainer } from 'recharts';\nimport { usePrefersReducedMotion } from '@/shared/presentation/hooks/use-prefers-reduced-motion';\n\nexport interface SparklineProps {\n color: string;\n values: number[];\n labels?: string[];\n yDomain?: { min: number; max: number };\n width?: number | `${number}%`;\n height?: number;\n strokeWidth?: number;\n fillOpacityStart?: number;\n fillOpacityEnd?: number;\n interpolation?: 'linear' | 'monotone';\n animate?: boolean;\n minDataMax?: number;\n};\n\ninterface SparklineDatum {\n label: string;\n value: number;\n};\n\nconst Sparkline = ({\n color,\n values,\n labels,\n yDomain,\n width = '100%',\n height = 80,\n strokeWidth = 2,\n fillOpacityStart = 0.25,\n fillOpacityEnd = 0.25,\n interpolation = 'linear',\n animate,\n minDataMax\n}: SparklineProps) => {\n const prefersReducedMotion = usePrefersReducedMotion();\n const gradientId = useId();\n const fillId = `${gradientId}-sparkline-fill`;\n\n const chartData = useMemo<SparklineDatum[]>(() => {\n if (!values.length) {\n return [{ label: '', value: 0 }, { label: '', value: 0 }];\n }\n if (values.length === 1) {\n const only = Number.isFinite(values[0]) ? values[0] : 0;\n return [{ label: labels?.[0] ?? '', value: only }, { label: labels?.[0] ?? '', value: only }];\n }\n const length = Math.max(labels?.length || 0, values.length);\n return Array.from({ length }, (_, i) => {\n const raw = Number(values[i]);\n return {\n label: labels?.[i] ?? '',\n value: Number.isFinite(raw) ? raw : 0\n };\n });\n }, [values, labels]);\n\n const yAxisDomain: [number | string | ((v: number) => number), number | string | ((v: number) => number)] = yDomain\n ? [yDomain.min, yDomain.max]\n : minDataMax !== undefined\n ? ['dataMin', (max: number) => Math.max(max, minDataMax)]\n : ['auto', 'auto'];\n\n const isAnimationActive = animate !== undefined ? animate : !prefersReducedMotion;\n\n return (\n <ResponsiveContainer width={width} height={height}>\n <AreaChart\n data={chartData}\n margin={{ top: 2, right: 0, left: 0, bottom: 0 }}\n >\n <defs>\n <linearGradient id={fillId} x1='0' y1='0' x2='0' y2='1'>\n <stop offset='0%' stopColor={color} stopOpacity={fillOpacityStart} />\n <stop offset='100%' stopColor={color} stopOpacity={fillOpacityEnd} />\n </linearGradient>\n </defs>\n <YAxis hide domain={yAxisDomain} />\n <Area\n type={interpolation}\n dataKey='value'\n stroke={color}\n strokeWidth={strokeWidth}\n fill={`url(#${fillId})`}\n fillOpacity={1}\n dot={false}\n activeDot={false}\n isAnimationActive={isAnimationActive}\n />\n </AreaChart>\n </ResponsiveContainer>\n );\n};\n\nexport default Sparkline;\n","import './Callout.css';\nimport Button from '@/shared/presentation/primitives/Button';\nimport Heading from '@/shared/presentation/primitives/Heading';\nimport Row from '@/shared/presentation/primitives/Row';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport Text from '@/shared/presentation/primitives/Text';\nimport { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\n\nexport type CalloutTone = 'danger' | 'warning' | 'info' | 'success';\n\ntype ButtonIntent = 'neutral' | 'brand' | 'danger' | 'success';\n\ninterface CalloutAction {\n label: string;\n onClick: () => void;\n icon?: ReactNode;\n isLoading?: boolean;\n disabled?: boolean;\n};\n\ninterface CalloutProps {\n tone: CalloutTone;\n title?: string;\n description?: string;\n message?: ReactNode;\n icon?: ReactNode;\n action?: CalloutAction;\n children?: ReactNode;\n className?: string;\n ariaLabel?: string;\n role?: string;\n ariaLive?: 'off' | 'polite' | 'assertive';\n};\n\nconst toneToIntent: Record<CalloutTone, ButtonIntent> = {\n danger: 'danger',\n warning: 'neutral',\n info: 'brand',\n success: 'success'\n};\n\nconst Callout = forwardRef<HTMLDivElement, CalloutProps>(({\n tone,\n title,\n description,\n message,\n icon,\n action,\n children,\n className,\n ariaLabel,\n role,\n ariaLive\n}, ref) => {\n const hasHeaderContent = Boolean(title || description);\n const layout = hasHeaderContent ? 'stacked' : 'inline';\n\n const resolvedRole = role ?? (hasHeaderContent ? 'region' : 'status');\n const resolvedAriaLive = ariaLive ?? (hasHeaderContent ? undefined : 'polite');\n const resolvedAriaLabel = ariaLabel ?? title;\n\n const classes = cn(\n 'volt-callout',\n `volt-callout--tone-${tone}`,\n `volt-callout--layout-${layout}`,\n className\n );\n\n if (layout === 'inline') {\n return (\n <div\n ref={ref}\n className={classes}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n aria-label={resolvedAriaLabel}\n >\n <Row gap='05' className='font-size-2'>\n {icon && <span className='volt-callout__icon'>{icon}</span>}\n <div className='volt-callout__body'>\n {message ?? children}\n </div>\n </Row>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n aria-label={resolvedAriaLabel}\n >\n <Row justify='between' gap='1'>\n <Stack gap='025'>\n {title && (\n <Heading level={2} size='md' weight='bold'>\n {title}\n </Heading>\n )}\n {description && (\n <Text as='p' tone='muted' size='sm'>\n {description}\n </Text>\n )}\n {children}\n </Stack>\n {action && (\n <Button\n intent={toneToIntent[tone]}\n variant='outline'\n size='sm'\n leftIcon={action.icon}\n onClick={action.onClick}\n isLoading={action.isLoading}\n disabled={action.disabled}\n >\n {action.label}\n </Button>\n )}\n </Row>\n </div>\n );\n});\n\nCallout.displayName = 'Callout';\n\nexport default Callout;\n","import Button from '@/shared/presentation/primitives/Button';\nimport Heading from '@/shared/presentation/primitives/Heading';\nimport Stack from '@/shared/presentation/primitives/Stack';\nimport Text from '@/shared/presentation/primitives/Text';\nimport './EmptyState.css';\nimport { forwardRef, useId } from 'react';\nimport type { ReactNode } from 'react';\n\ninterface EmptyStateProps {\n title: string;\n description: string;\n icon?: ReactNode;\n buttonText?: string;\n buttonOnClick?: () => void;\n buttonIsLoading?: boolean;\n className?: string;\n headingLevel?: 'h1' | 'h2' | 'h3';\n announce?: boolean;\n};\n\nconst EmptyState = forwardRef<HTMLElement, EmptyStateProps>(({\n title,\n description,\n icon,\n buttonText,\n buttonOnClick,\n buttonIsLoading = false,\n className,\n headingLevel = 'h2',\n announce = false\n}, ref) => {\n const headingId = useId();\n const level = Number(headingLevel.slice(1)) as 1 | 2 | 3;\n\n return (\n <section ref={ref} aria-labelledby={headingId} className={`d-flex items-center content-center w-max h-max empty-state-container ${className || ''}`}>\n <Stack align='center' gap='1-5' textAlign='center' className='empty-state-content'>\n {announce && (\n <span className='empty-state-live-region' aria-live='polite' aria-atomic='true'>\n {title}. {description}\n </span>\n )}\n {icon && (\n <Stack align='center' justify='center' className='empty-state-icon color-muted'>\n {icon}\n </Stack>\n )}\n\n <Stack gap='05' textAlign='center'>\n <Heading level={level} id={headingId}>\n {title}\n </Heading>\n <Text size='md' tone='secondary' lineHeight='5'>{description}</Text>\n </Stack>\n\n {buttonText && buttonOnClick && (\n <Button\n variant='solid'\n intent='brand'\n size='sm'\n onClick={buttonOnClick}\n isLoading={buttonIsLoading}\n className='mt-05'\n >\n {buttonText}\n </Button>\n )}\n </Stack>\n </section>\n );\n});\n\nEmptyState.displayName = 'EmptyState';\n\nexport default EmptyState;\n","import './Toast.css';\nimport CloseButton from '../CloseButton';\nimport IconFrame from '../IconFrame';\nimport Row from '../Row';\nimport Stack from '../Stack';\nimport Surface from '../Surface';\nimport Text from '../Text';\nimport { cn } from '@/shared/utils/cn';\nimport { Bell, CircleAlert, CircleCheck, Info, TriangleAlert } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nexport type ToastTone = StatusTone;\n\nexport interface ToastProps {\n /** Semantic tone — drives the default icon, tint and aria-live politeness. */\n tone?: ToastTone;\n /** Optional bold heading shown above the message. */\n title?: ReactNode;\n /** Primary body content. Required. */\n message: ReactNode;\n /** Override the default tone icon. Pass `null` to hide it entirely. */\n icon?: ReactNode;\n /** When provided, renders a dismiss (close) button wired to this handler. */\n onDismiss?: () => void;\n /** Optional trailing action node (e.g. a Button or link). */\n action?: ReactNode;\n /** Accessible label for the dismiss button. */\n dismissLabel?: string;\n /**\n * Override the live-region politeness. Defaults to `assertive` for\n * `danger`, `polite` otherwise.\n */\n ariaLive?: 'polite' | 'assertive' | 'off';\n className?: string;\n}\n\nconst DEFAULT_TONE_ICON: Record<ToastTone, ReactNode> = {\n neutral: <Bell size={18} />,\n brand: <Info size={18} />,\n success: <CircleCheck size={18} />,\n warning: <TriangleAlert size={18} />,\n danger: <CircleAlert size={18} />,\n info: <Info size={18} />\n};\n\n/**\n * Presentational toast / notification unit. This is the visual surface the\n * app's `AppToaster` system renders — it owns no timers, no portal and no\n * stacking; it is a pure, accessible building block.\n *\n * Composes {@link Surface} (elevated card), {@link IconFrame} (tinted tone\n * glyph), {@link Text} and {@link CloseButton}.\n */\nconst Toast = forwardRef<HTMLDivElement, ToastProps>(({\n tone = 'neutral',\n title,\n message,\n icon,\n onDismiss,\n action,\n dismissLabel = 'Dismiss notification',\n ariaLive,\n className\n}, ref) => {\n const resolvedAriaLive = ariaLive ?? (tone === 'danger' ? 'assertive' : 'polite');\n const showIcon = icon !== null;\n const resolvedIcon = icon ?? DEFAULT_TONE_ICON[tone];\n\n return (\n <Surface\n ref={ref}\n variant='elevated'\n role='status'\n aria-live={resolvedAriaLive}\n aria-atomic='true'\n className={cn('volt-toast', `volt-toast--tone-${tone}`, className)}\n >\n <Row align='start' gap='075' className='volt-toast__layout'>\n {showIcon && (\n <IconFrame tone={tone} size='sm' className='volt-toast__icon'>\n {resolvedIcon}\n </IconFrame>\n )}\n\n <Stack gap='025' className='volt-toast__body'>\n {title && (\n <Text as='p' size='sm' weight='semibold' tone='primary'>\n {title}\n </Text>\n )}\n <Text as='div' size='sm' tone={title ? 'secondary' : 'primary'}>\n {message}\n </Text>\n {action && (\n <Row gap='05' className='volt-toast__actions'>\n {action}\n </Row>\n )}\n </Stack>\n\n {onDismiss && (\n <div className='volt-toast__dismiss'>\n <CloseButton onClick={onDismiss} aria-label={dismissLabel} />\n </div>\n )}\n </Row>\n </Surface>\n );\n});\n\nToast.displayName = 'Toast';\n\nexport default Toast;\n","import { cn } from '@/shared/utils/cn';\nimport './ThinkingDots.css';\nimport { forwardRef } from 'react';\nimport type { HTMLAttributes } from 'react';\n\nexport interface ThinkingDotsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'role'> {\n label?: string;\n size?: 'sm' | 'md';\n}\n\n/**\n * Three-dot typing indicator (chat/AI \"thinking\" state).\n * Renders a visually-hidden label for assistive tech.\n */\nconst ThinkingDots = forwardRef<HTMLSpanElement, ThinkingDotsProps>(({\n label = 'Thinking',\n size = 'md',\n className,\n ...rest\n}, ref) => {\n return (\n <span\n ref={ref}\n role='status'\n aria-live='polite'\n className={cn('volt-thinking-dots', `volt-thinking-dots--${size}`, className)}\n {...rest}\n >\n <span className='sr-only'>{label}</span>\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n <span className='volt-thinking-dots__dot' aria-hidden='true' />\n </span>\n );\n});\n\nThinkingDots.displayName = 'ThinkingDots';\n\nexport default ThinkingDots;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport './ProgressBar.css';\nimport { forwardRef, useId, useRef } from 'react';\nimport { STATUS_TONE_VARS } from '../types';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nconst MISSING_PROGRESS_NAME_WARNING =\n 'ProgressBar requires an accessible name via `label`, `aria-label`, or `aria-labelledby`.';\n\nexport type ProgressBarSize = 'sm' | 'md';\n\ninterface ProgressBarStyle extends CSSProperties {\n '--progress-fill'?: string;\n '--progress-value'?: string;\n}\n\nexport interface ProgressBarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Completion in the range 0–100. Clamped. Ignored when `indeterminate`. */\n value?: number;\n /** Semantic color of the fill. @default 'brand' */\n tone?: StatusTone;\n /** Track / fill thickness. @default 'md' */\n size?: ProgressBarSize;\n /** Visible label rendered above the track and used as the accessible name. */\n label?: ReactNode;\n /** Render the numeric percentage next to the label. @default false */\n showValue?: boolean;\n /** Animate an undetermined-duration bar; drops `aria-valuenow`. @default false */\n indeterminate?: boolean;\n}\n\nconst clampPercent = (value: number): number => {\n if (Number.isNaN(value)) return 0;\n if (value < 0) return 0;\n if (value > 100) return 100;\n return value;\n};\n\n/**\n * Linear determinate (or indeterminate) progress indicator.\n *\n * Track uses `--color-surface-2/3`; the fill resolves from the {@link StatusTone}\n * via {@link STATUS_TONE_VARS}, defaulting to `--color-brand-primary`. Replaces the\n * hand-rolled bars in `ProcessingLoader` and `TrajectoryUploadProgressPanel`.\n */\nconst ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(({\n value = 0,\n tone = 'brand',\n size = 'md',\n label,\n showValue = false,\n indeterminate = false,\n className,\n id,\n style,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const generatedId = useId();\n const labelId = `${generatedId}-label`;\n\n const percent = clampPercent(value);\n const rounded = Math.round(percent);\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const hasVisibleLabel = label !== undefined && label !== null && label !== false;\n\n // The visible label, when present, becomes the accessible name via aria-labelledby.\n const computedLabelledBy = resolvedAriaLabelledBy ?? (hasVisibleLabel ? labelId : undefined);\n\n if (!computedLabelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_PROGRESS_NAME_WARNING);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const fill = tone === 'brand' ? 'var(--color-brand-primary)' : STATUS_TONE_VARS[tone].fg;\n\n const resolvedStyle: ProgressBarStyle = {\n ...style,\n '--progress-fill': fill,\n '--progress-value': `${percent}%`\n };\n\n const classes = cn(\n 'volt-progress',\n `volt-progress--size-${size}`,\n indeterminate && 'volt-progress--indeterminate'\n );\n\n const showHeader = hasVisibleLabel || (showValue && !indeterminate);\n\n return (\n <div className={cn('volt-progress-root', className)}>\n {showHeader && (\n <Row justify='between' align='center' gap='05' className='volt-progress-header'>\n {hasVisibleLabel\n ? <Text as='span' id={labelId} size='sm' tone='secondary'>{label}</Text>\n : <span />}\n {showValue && !indeterminate && (\n <Text as='span' size='sm' tone='muted' className='volt-progress-value'>\n {rounded}%\n </Text>\n )}\n </Row>\n )}\n\n <div\n ref={ref}\n id={id}\n role='progressbar'\n className={classes}\n style={resolvedStyle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={computedLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-valuemin={indeterminate ? undefined : 0}\n aria-valuemax={indeterminate ? undefined : 100}\n aria-valuenow={indeterminate ? undefined : rounded}\n aria-valuetext={indeterminate ? undefined : `${rounded}%`}\n aria-busy={indeterminate || undefined}\n {...rest}\n >\n <div className='volt-progress-fill' aria-hidden='true' />\n </div>\n </div>\n );\n});\n\nProgressBar.displayName = 'ProgressBar';\n\nexport default ProgressBar;\n","import { cn } from '@/shared/utils/cn';\nimport Row from '../Row';\nimport Text from '../Text';\nimport './Meter.css';\nimport { forwardRef, useId, useRef } from 'react';\nimport { STATUS_TONE_VARS } from '../types';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport type { StatusTone } from '../types';\n\nconst MISSING_METER_NAME_WARNING =\n 'Meter requires an accessible name via `label`, `aria-label`, or `aria-labelledby`.';\n\ninterface MeterStyle extends CSSProperties {\n '--progress-fill'?: string;\n '--progress-value'?: string;\n}\n\nexport interface MeterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {\n /** Measured value, between `min` and `max`. Clamped. */\n value: number;\n /** Lower bound of the range. @default 0 */\n min?: number;\n /** Upper bound of the range. @default 100 */\n max?: number;\n /** Semantic color of the fill. @default 'brand' */\n tone?: StatusTone;\n /** Inline leading label, also used as the accessible name. */\n label?: ReactNode;\n /** Render the value (formatted by `formatValue`) at the trailing edge. @default false */\n showValue?: boolean;\n /** Formats the trailing value text; defaults to the raw number. */\n formatValue?: (value: number, min: number, max: number) => ReactNode;\n}\n\nconst clamp = (value: number, min: number, max: number): number => {\n if (Number.isNaN(value)) return min;\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\n/**\n * Compact inline gauge for a known-range scalar (e.g. quota, utilization,\n * confidence). A `role=\"meter\"` sibling of {@link default ProgressBar}: shares the\n * track/fill visual but expresses a measurement rather than task completion.\n */\nconst Meter = forwardRef<HTMLDivElement, MeterProps>(({\n value,\n min = 0,\n max = 100,\n tone = 'brand',\n label,\n showValue = false,\n formatValue,\n className,\n id,\n style,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...rest\n}, ref) => {\n const hasWarnedForMissingNameRef = useRef(false);\n const generatedId = useId();\n const labelId = `${generatedId}-label`;\n\n const safeMax = max > min ? max : min + 1;\n const clamped = clamp(value, min, safeMax);\n const percent = ((clamped - min) / (safeMax - min)) * 100;\n\n const resolvedAriaLabel = ariaLabel?.trim() || undefined;\n const resolvedAriaLabelledBy = ariaLabelledBy?.trim() || undefined;\n const hasVisibleLabel = label !== undefined && label !== null && label !== false;\n const computedLabelledBy = resolvedAriaLabelledBy ?? (hasVisibleLabel ? labelId : undefined);\n\n if (!computedLabelledBy && !resolvedAriaLabel) {\n if (!hasWarnedForMissingNameRef.current) {\n console.warn(MISSING_METER_NAME_WARNING);\n hasWarnedForMissingNameRef.current = true;\n }\n }\n\n const fill = tone === 'brand' ? 'var(--color-brand-primary)' : STATUS_TONE_VARS[tone].fg;\n\n const resolvedStyle: MeterStyle = {\n ...style,\n '--progress-fill': fill,\n '--progress-value': `${percent}%`\n };\n\n const formattedValue = formatValue ? formatValue(clamped, min, safeMax) : clamped;\n\n return (\n <Row\n align='center'\n gap='05'\n className={cn('volt-meter', className)}\n >\n {hasVisibleLabel && (\n <Text as='span' id={labelId} size='sm' tone='secondary' className='volt-meter-label'>\n {label}\n </Text>\n )}\n\n <div\n ref={ref}\n id={id}\n role='meter'\n className='volt-meter-track'\n style={resolvedStyle}\n aria-label={resolvedAriaLabel}\n aria-labelledby={computedLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-valuemin={min}\n aria-valuemax={safeMax}\n aria-valuenow={clamped}\n {...rest}\n >\n <div className='volt-meter-fill' aria-hidden='true' />\n </div>\n\n {showValue && (\n <Text as='span' size='sm' tone='muted' className='volt-meter-value'>\n {formattedValue}\n </Text>\n )}\n </Row>\n );\n});\n\nMeter.displayName = 'Meter';\n\nexport default Meter;\n","import type { ReactNode } from 'react';\n\nexport interface AsyncBoundaryState {\n loading?: boolean;\n error?: unknown;\n accessDenied?: boolean;\n /** When empty is true, the `empty` slot renders instead of children. */\n empty?: boolean;\n}\n\nexport interface AsyncBoundaryProps {\n state: AsyncBoundaryState;\n loading: ReactNode;\n error: (err: unknown) => ReactNode;\n accessDenied?: ReactNode;\n empty?: ReactNode;\n children: ReactNode;\n}\n\n/**\n * Renders the appropriate fallback based on async state. Consolidates the\n * loading → error → access-denied → empty → content switch hand-rolled in\n * every data-backed panel.\n *\n * The `error` slot is a function so callers can decide how to derive\n * retry/description from the error value.\n */\nconst AsyncBoundary = ({\n state,\n loading,\n error,\n accessDenied,\n empty,\n children\n}: AsyncBoundaryProps) => {\n if (state.accessDenied && accessDenied) return <>{accessDenied}</>;\n if (state.error !== undefined && state.error !== null) return <>{error(state.error)}</>;\n if (state.loading) return <>{loading}</>;\n if (state.empty && empty !== undefined) return <>{empty}</>;\n return <>{children}</>;\n};\n\nexport default AsyncBoundary;\n","import { cn } from '@/shared/utils/cn';\nimport { forwardRef } from 'react';\nimport type { ElementType, HTMLAttributes, ReactNode, Ref } from 'react';\n\nexport interface VisuallyHiddenProps extends HTMLAttributes<HTMLElement> {\n as?: ElementType;\n children?: ReactNode;\n}\n\n/**\n * Screen-reader-only wrapper. Hides its children visually but keeps them\n * reachable by assistive technology. Maps to the `.sr-only` utility.\n */\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(({\n as,\n className,\n children,\n ...rest\n}, ref) => {\n const Component = (as ?? 'span') as ElementType;\n return (\n <Component ref={ref as Ref<HTMLElement>} className={cn('sr-only', className)} {...rest}>\n {children}\n </Component>\n );\n});\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n\nexport default VisuallyHidden;\n","import { useState, useCallback, useMemo } from 'react';\n\ninterface UseStepperOptions<K extends string>{\n steps: K[];\n};\n\nconst useStepper = <K extends string>(initialStep: K, options?: UseStepperOptions<K>) => {\n const [step, setStep] = useState<K>(initialStep);\n const steps = options?.steps;\n\n const goTo = useCallback((next: K) => setStep(next), []);\n const reset = useCallback(() => setStep(initialStep), [initialStep]);\n\n const currentIndex = useMemo(() => {\n if(!steps) return -1;\n return steps.indexOf(step);\n }, [steps, step]);\n\n const next = useCallback(() => {\n if(!steps || currentIndex === -1 || currentIndex >= steps.length - 1) return;\n setStep(steps[currentIndex + 1]);\n }, [steps, currentIndex]);\n\n const prev = useCallback(() => {\n if(!steps || currentIndex <= 0) return;\n setStep(steps[currentIndex - 1]);\n }, [steps, currentIndex]);\n\n const isFirst = currentIndex === 0;\n const isLast = steps ? currentIndex === steps.length - 1 : false;\n\n return { step, goTo, reset, next, prev, currentIndex, isFirst, isLast };\n};\n\nexport default useStepper;\n","import { useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\n\ninterface UseInfiniteScrollOptions {\n rootRef?: RefObject<HTMLElement | null> | null;\n hasMore: boolean;\n isFetchingMore: boolean;\n onLoadMore?: () => void;\n};\n\nconst useInfiniteScroll = ({ rootRef, hasMore, isFetchingMore, onLoadMore }: UseInfiniteScrollOptions) => {\n const sentinelRef = useRef<HTMLDivElement | null>(null);\n const hasMountedRef = useRef(false);\n const onLoadMoreRef = useRef(onLoadMore);\n\n useEffect(() => {\n onLoadMoreRef.current = onLoadMore;\n });\n\n useEffect(() => {\n const timer = setTimeout(() => {\n hasMountedRef.current = true;\n }, 100);\n return () => clearTimeout(timer);\n }, []);\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n\n const root = rootRef ? rootRef.current : null;\n\n const observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (\n entry?.isIntersecting\n && hasMore\n && !isFetchingMore\n && hasMountedRef.current\n ) {\n onLoadMoreRef.current?.();\n }\n },\n { root, rootMargin: '0px 0px 200px 0px', threshold: 0 }\n );\n\n observer.observe(sentinel);\n return () => observer.disconnect();\n }, [rootRef, hasMore, isFetchingMore]);\n\n return { sentinelRef };\n};\n\nexport default useInfiniteScroll;\n","import { useMemo } from 'react';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\ninterface ShortcutOptions {\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n alt?: boolean;\n preventDefault?: boolean;\n enabled?: boolean;\n enableOnFormTags?: boolean;\n};\n\nconst useKeyboardShortcut = (\n key: string,\n callback: () => void,\n options: ShortcutOptions = {}\n) => {\n const {\n ctrl = false,\n meta = false,\n shift = false,\n alt = false,\n preventDefault = true,\n enabled = true,\n enableOnFormTags = false\n } = options;\n\n const hotkey = useMemo(() => {\n const parts: string[] = [];\n\n if (ctrl) parts.push('ctrl');\n if (meta) parts.push('meta');\n if (shift) parts.push('shift');\n if (alt) parts.push('alt');\n\n parts.push(key.toLowerCase());\n\n return parts.join('+');\n }, [alt, ctrl, key, meta, shift]);\n\n useHotkeys(\n hotkey,\n () => callback(),\n {\n enabled,\n enableOnFormTags: enableOnFormTags\n ? ['INPUT', 'TEXTAREA', 'SELECT']\n : false,\n preventDefault\n },\n [callback]\n );\n};\n\nexport default useKeyboardShortcut;\n"]}