@tenerife.music/ui 1.2.1 → 2.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.d.ts CHANGED
@@ -1,16 +1,22 @@
1
- import { cW as ResponsiveSelectSize, d5 as SelectVariantToken, cX as ResponsiveSelectWidth, cZ as ResponsiveSideOffset, cJ as ResponsiveAlignOffset, d3 as SelectSizeToken, d4 as SelectStateToken, d6 as SelectWidthToken, cS as ResponsiveModalSize, cT as ResponsiveModalWidth, cR as ResponsiveModalHeight, c_ as ResponsiveSpace, cI as RadiusToken, db as SurfaceToken, cA as ModalFooterAlignToken, dg as Responsive, b as INPUT_TOKENS, U as InputSize, cV as ResponsiveRadius$1, d7 as ShadowToken, cM as ResponsiveColor$1, cN as ResponsiveContainerMaxWidth, cQ as ResponsiveFlexBasis, cP as ResponsiveDelay, dh as ResponsiveContextMenuSize, di as ResponsiveContextMenuWidth, dj as ContextMenuItemToneToken, dk as ResponsiveTabsSize, dl as TabsVariantToken, dm as TabsToneToken } from './index-DXmHg8ji.js';
2
- export { A as ALERT_TOKENS, j as AlertVariant, b9 as Animation, B as BUTTON_TOKENS, bC as BorderRadius, dn as Breakpoint, k as ButtonFontSize, l as ButtonHeight, m as ButtonPaddingHorizontal, n as ButtonPaddingVertical, o as ButtonShadow, C as CARD_TOKENS, a as CHECKBOX_TOKENS, c7 as CanonicalFontSize, c8 as CanonicalFontWeight, c9 as CanonicalLetterSpacing, ca as CanonicalLineHeight, cb as CanonicalTextColor, p as CardPadding, q as CardRadius, r as CardShadow, s as CardSize, t as CardSpacingVertical, u as CheckboxSize, v as CheckboxState, w as CheckboxVariant, bI as ColoredShadow, bD as ComponentRadius, bW as ComponentSpacing, bX as ContainerSpacing, D as DATA_TOKENS, x as DataListLabelWidth, y as DataListRowPadding, ba as Duration, bb as Easing, bJ as ElevationShadow, E as EmptyStateIconSize, bK as FocusRing, cc as FontFamily, cd as FontSize, ce as FontWeight, bL as GlowEffect, bY as GridSpacing, I as ICON_TOKENS, z as IconColor, F as IconSize, G as IconStroke, H as InputFontSize, J as InputHeight, K as InputPaddingHorizontal, L as InputPaddingVertical, Q as InputRadius, bc as Keyframe, cf as LetterSpacing, cg as LineHeight, M as MENU_TOKENS, c as MOTION_TOKENS, V as MenuContentMinWidth, W as MenuContentPadding, X as MenuContentRadius, Y as MenuContentShadow, Z as MenuIndicatorOffset, _ as MenuIndicatorSize, $ as MenuItemGap, a0 as MenuItemHeight, a1 as MenuItemPadding, a2 as MenuItemRadius, a3 as MenuLabelPadding, a4 as MenuSeparatorMargin, a5 as MotionAnimation, a6 as MotionDuration, a7 as MotionEasing, a8 as MotionTransition, a9 as MotionTransitionPreset, bo as MotionV2CombinedType, bp as MotionV2Duration, bq as MotionV2Easing, br as MotionV2SlideDirection, bs as MotionV2Transition, N as NAVIGATION_TOKENS, d as NOTIFICATION_TOKENS, aa as NavigationItemPadding, ab as NavigationListGap, ac as NavigationRadius, ad as NavigationShadow, ae as NavigationSize, af as NavigationState, ag as NotificationPanelWidth, ah as NotificationTokenVariant, O as OVERLAY_TOKENS, ai as OverlayBackdropVariant, aj as OverlayModalSize, P as POPOVER_TOKENS, ak as PopoverArrowOffset, al as PopoverArrowSize, am as PopoverContentPadding, an as PopoverContentRadius, ao as PopoverContentShadow, ap as PopoverContentWidth, R as RADIO_TOKENS, aq as RadioSize, ar as RadioState, as as RadioVariant, S as SECTION_TOKENS, f as SURFACE_TOKENS, g as SWITCH_TOKENS, at as SectionGap, au as SectionPadding, bZ as SectionSpacing, b_ as SemanticSpacing, aL as SkeletonAnimation, aM as SkeletonBackground, aN as SkeletonVariant, b$ as Spacing, bd as Spring, c0 as StackSpacing, aO as SurfacePadding, aP as SurfaceRadius, aQ as SurfaceShadow, aR as SurfaceVariant, aS as SwitchSize, aT as SwitchState, aU as SwitchVariant, T as TEXT_TOKENS, h as TOAST_TOKENS, i as TOOLTIP_TOKENS, aV as TableCellPadding, aW as TableGap, aX as TableHeaderPadding, aY as TableRowHeight, aZ as TableShadow, a_ as TextFontSize, a$ as TextFontWeight, b0 as TextLetterSpacing, b1 as TextLineHeight, ch as TextStyle, b2 as ToastVariant, b3 as TooltipContentRadius, b4 as TooltipContentShadow, be as Transition, c6 as UI_COLORS, bM as accentColoredShadows, b5 as allCSSVariables, b6 as allCSSVariablesCSS, bf as animations, bE as borderRadius, bF as componentRadius, bN as componentShadowMapping, bg as durations, bh as easings, bO as elevationShadows, bP as focusRings, ci as fontFamily, cj as fontSize, ck as fontSizeWithMd, cl as fontWeight, b7 as generateCSSVariablesCSS, bQ as glowEffects, bi as keyframes, c1 as layoutSpacing, cm as letterSpacing, cn as lineHeight, bj as motionCSSVariables, bt as motionV2CSSVariables, bu as motionV2Combined, bv as motionV2Durations, bw as motionV2Easings, bx as motionV2Fade, by as motionV2Scale, bz as motionV2Slide, bA as motionV2TailwindConfig, bB as motionV2Transitions, bR as primaryColoredShadows, bG as radiusCSSVariables, bk as reducedMotion, c2 as semanticSpacing, bS as shadowBase, bT as shadowCSSVariables, bU as shadowOpacity, c3 as spacing, c4 as spacingCSSVariables, bl as springs, bm as tailwindMotionConfig, bH as tailwindRadiusConfig, bV as tailwindShadowConfig, c5 as tailwindSpacingConfig, co as tailwindTypographyConfig, cp as textStyles, b8 as tokenSystemSummary, bn as transitions, cq as typographyCSSVariables } from './index-DXmHg8ji.js';
1
+ import { cM as ResponsiveSideOffset, cw as ResponsiveAlignOffset, cF as ResponsiveModalSize, cG as ResponsiveModalWidth, cE as ResponsiveModalHeight, cN as ResponsiveSpace, cv as RadiusToken, c_ as SurfaceToken, cn as ModalFooterAlignToken, cI as ResponsiveRadius$1, cW as ShadowToken, cz as ResponsiveColor$1, d3 as Responsive, cA as ResponsiveContainerMaxWidth, cD as ResponsiveFlexBasis, cC as ResponsiveDelay, d4 as ResponsiveContextMenuSize, d5 as ResponsiveContextMenuWidth, d6 as ContextMenuItemToneToken, d7 as ResponsiveTabsSize, d8 as TabsVariantToken, d9 as TabsToneToken, z as IconColor, G as IconStroke, E as EmptyStateIconSize } from './index-DGtRM9Db.js';
2
+ export { A as ALERT_TOKENS, B as BUTTON_TOKENS, bp as BorderRadius, da as Breakpoint, k as ButtonFontSize, l as ButtonHeight, m as ButtonPaddingHorizontal, n as ButtonPaddingVertical, o as ButtonShadow, C as CARD_TOKENS, a as CHECKBOX_TOKENS, bW as CanonicalFontSize, bX as CanonicalFontWeight, bY as CanonicalLetterSpacing, bZ as CanonicalLineHeight, b_ as CanonicalTextColor, p as CardPadding, q as CardRadius, r as CardShadow, s as CardSize, t as CardSpacingVertical, u as CheckboxSize, v as CheckboxState, w as CheckboxVariant, bv as ColoredShadow, ba as ComponentMotionDuration, bb as ComponentMotionEasing, bd as ComponentMotionTransition, bq as ComponentRadius, bJ as ComponentSpacing, bK as ContainerSpacing, D as DATA_TOKENS, x as DataListLabelWidth, y as DataListRowPadding, bw as ElevationShadow, bx as FocusRing, b$ as FontFamily, c0 as FontSize, c1 as FontWeight, by as GlowEffect, bL as GridSpacing, I as ICON_TOKENS, c as INPUT_TOKENS, F as IconSize, H as InputFontSize, J as InputHeight, K as InputPaddingHorizontal, L as InputPaddingVertical, Q as InputRadius, U as InputSize, c2 as LetterSpacing, c3 as LineHeight, M as MENU_TOKENS, d as MOTION_TOKENS, V as MenuContentMinWidth, W as MenuContentPadding, X as MenuContentRadius, Y as MenuContentShadow, Z as MenuIndicatorOffset, _ as MenuIndicatorSize, $ as MenuItemGap, a0 as MenuItemHeight, a1 as MenuItemPadding, a2 as MenuItemRadius, a3 as MenuLabelPadding, a4 as MenuSeparatorMargin, a5 as MotionAnimation, b9 as MotionCombinedType, ba as MotionDuration, bb as MotionEasing, bc as MotionSlideDirection, bd as MotionTransition, a9 as MotionTransitionPreset, N as NAVIGATION_TOKENS, e as NOTIFICATION_TOKENS, aa as NavigationItemPadding, ab as NavigationListGap, ac as NavigationRadius, ad as NavigationShadow, ae as NavigationSize, af as NavigationState, ag as NotificationPanelWidth, ah as NotificationTokenVariant, O as OVERLAY_TOKENS, ai as OverlayBackdropVariant, aj as OverlayModalSize, P as POPOVER_TOKENS, ak as PopoverArrowOffset, al as PopoverArrowSize, am as PopoverContentPadding, an as PopoverContentRadius, ao as PopoverContentShadow, ap as PopoverContentWidth, R as RADIO_TOKENS, aq as RadioSize, ar as RadioState, as as RadioVariant, S as SECTION_TOKENS, g as SURFACE_TOKENS, h as SWITCH_TOKENS, at as SectionGap, au as SectionPadding, bM as SectionSpacing, bN as SemanticSpacing, aL as SkeletonAnimation, aM as SkeletonBackground, bO as Spacing, bP as StackSpacing, aO as SurfacePadding, aP as SurfaceRadius, aQ as SurfaceShadow, aR as SurfaceVariant, aS as SwitchSize, aT as SwitchState, aU as SwitchVariant, T as TEXT_TOKENS, i as TOAST_TOKENS, j as TOOLTIP_TOKENS, aV as TableCellPadding, aW as TableGap, aX as TableHeaderPadding, aY as TableRowHeight, aZ as TableShadow, a_ as TextFontSize, a$ as TextFontWeight, b0 as TextLetterSpacing, b1 as TextLineHeight, c4 as TextStyle, b2 as ToastVariant, b3 as TooltipContentRadius, b4 as TooltipContentShadow, bV as UI_COLORS, bz as accentColoredShadows, b5 as allCSSVariables, b6 as allCSSVariablesCSS, br as borderRadius, bs as componentRadius, bA as componentShadowMapping, bB as elevationShadows, bC as focusRings, c5 as fontFamily, c6 as fontSize, c7 as fontSizeWithMd, c8 as fontWeight, b7 as generateCSSVariablesCSS, bD as glowEffects, bQ as layoutSpacing, c9 as letterSpacing, ca as lineHeight, be as motionCSSVariables, bf as motionCombined, bg as motionDurations, bh as motionEasings, bi as motionFade, bj as motionReducedMotion, bk as motionScale, bl as motionSlide, bm as motionTailwindConfig, bn as motionTransitionProperty, bo as motionTransitions, bE as primaryColoredShadows, bt as radiusCSSVariables, bR as semanticSpacing, bF as shadowBase, bG as shadowCSSVariables, bH as shadowOpacity, bS as spacing, bT as spacingCSSVariables, bu as tailwindRadiusConfig, bI as tailwindShadowConfig, bU as tailwindSpacingConfig, cb as tailwindTypographyConfig, cc as textStyles, b8 as tokenSystemSummary, cd as typographyCSSVariables } from './index-DGtRM9Db.js';
3
3
  export { B as BaseColorTokens, C as ChartColors, a as ColorScale, b as ColorTokens, M as Mode, S as SemanticColors, c as SurfaceColors, T as TextColors, d as accentColors, e as baseColors, f as chartColors, g as colorCSSVariables, h as cssVariableColorTokens, p as primaryColors, s as secondaryColors, i as semanticColors, j as surfaceColors, t as tailwindThemeColors, k as textColors } from './colors-BrFmCQv-.js';
4
4
  import * as React$1 from 'react';
5
5
  import React__default, { ReactNode } from 'react';
6
6
  import * as class_variance_authority_types from 'class-variance-authority/types';
7
- import { VariantProps } from 'class-variance-authority';
7
+ import { L as LinkProps } from './Link-ZWr5iFB0.js';
8
+ export { a as Link, b as LinkSize, c as LinkVariant, l as linkVariants } from './Link-ZWr5iFB0.js';
8
9
  import * as react_jsx_runtime from 'react/jsx-runtime';
10
+ import * as class_variance_authority from 'class-variance-authority';
11
+ import { VariantProps } from 'class-variance-authority';
9
12
  import * as SelectPrimitive from '@radix-ui/react-select';
10
13
  import * as DialogPrimitive from '@radix-ui/react-dialog';
11
14
  import * as LabelPrimitive from '@radix-ui/react-label';
15
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
16
+ import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
12
17
  import * as ToastPrimitives from '@radix-ui/react-toast';
13
18
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
19
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
14
20
  import * as PopoverPrimitive from '@radix-ui/react-popover';
15
21
  import * as TabsPrimitive from '@radix-ui/react-tabs';
16
22
 
@@ -27,24 +33,42 @@ type ButtonVariant = "primary" | "secondary" | "accent" | "outline" | "ghost" |
27
33
  /**
28
34
  * Button Size Type
29
35
  *
30
- * Type-level enforcement: Only these size values are allowed.
36
+ * Type-level enforcement: Only GlobalSize values are allowed.
31
37
  * TypeScript will error if any other string is passed.
32
38
  *
33
39
  * @enforcement TUNG_BUTTON_CVA_ENFORCEMENT
40
+ * @enforcement VARIANTS_SIZE_CANON - Must use only GlobalSize values
41
+ *
42
+ * Canonical sizes: "sm" | "md" | "lg" (GlobalSize compliant)
43
+ * For icon-only buttons, use `iconOnly={true}` prop with any size.
34
44
  */
35
- type ButtonSize = "sm" | "md" | "lg" | "icon";
45
+ type ButtonSize = "sm" | "md" | "lg";
36
46
  /**
37
47
  * Button Component Props
38
48
  *
39
49
  * @enforcement TUNG_BUTTON_CVA_ENFORCEMENT
40
50
  * @rule variant prop is restricted to ButtonVariant union type
41
- * @rule size prop is restricted to ButtonSize union type
51
+ * @rule size prop is restricted to ButtonSize union type (GlobalSize values only: "sm" | "md" | "lg")
52
+ * @rule iconOnly prop creates square icon-only button using size for dimensions (canonical way to create icon buttons)
42
53
  * @rule className prop cannot override color classes (tokenCVA validation in dev mode)
43
54
  * @rule Button is fully token-based - no raw Tailwind colors allowed
44
55
  */
45
56
  interface ButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "className" | "style"> {
46
57
  variant?: ButtonVariant;
47
58
  size?: ButtonSize;
59
+ /**
60
+ * Icon-only mode: Creates a square button (equal width and height) with icon-centered layout.
61
+ * When `iconOnly={true}`, the button uses the `size` prop to determine dimensions.
62
+ * This is the canonical way to create icon-only buttons (replaces deprecated `size="icon"`).
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <Button iconOnly size="md" aria-label="Search">
67
+ * <SearchIcon />
68
+ * </Button>
69
+ * ```
70
+ */
71
+ iconOnly?: boolean;
48
72
  asChild?: boolean;
49
73
  leftIcon?: React$1.ReactNode;
50
74
  rightIcon?: React$1.ReactNode;
@@ -74,84 +98,124 @@ interface ButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElemen
74
98
  */
75
99
  declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
76
100
 
77
- declare const textVariants: (props?: ({
78
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
79
- weight?: "normal" | "medium" | "semibold" | "bold" | null | undefined;
80
- muted?: boolean | null | undefined;
81
- variant?: "primary" | "secondary" | "muted" | "accent" | "destructive" | "outline" | "link" | "ghost" | null | undefined;
82
- } & class_variance_authority_types.ClassProp) | undefined) => string;
83
- interface TextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "className" | "style">, VariantProps<typeof textVariants> {
84
- /**
85
- * @deprecated Use muted prop or semantic text colors instead
86
- */
87
- variant?: "primary" | "secondary" | "accent" | "outline" | "ghost" | "link" | "destructive" | "muted";
88
- }
89
- declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLSpanElement>>;
90
- type TextSize = VariantProps<typeof textVariants>["size"];
91
- type TextWeight = VariantProps<typeof textVariants>["weight"];
92
-
93
- declare const alertVariants: (props?: ({
94
- variant?: "primary" | "secondary" | "accent" | "destructive" | "default" | "success" | "warning" | "danger" | "info" | null | undefined;
95
- } & class_variance_authority_types.ClassProp) | undefined) => string;
96
- interface AlertProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {
97
- }
98
- declare const Alert: React$1.ForwardRefExoticComponent<AlertProps & React$1.RefAttributes<HTMLDivElement>>;
99
-
100
101
  /**
101
- * Link variant values (internal - used for type derivation only)
102
+ * Text size values (internal - used for type derivation only)
102
103
  *
103
104
  * @internal
104
105
  */
105
- declare const _LINK_VARIANTS: readonly ["primary", "secondary", "accent", "outline", "ghost", "link", "destructive"];
106
+ declare const _TEXT_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
106
107
  /**
107
- * Link variant type
108
+ * Text size type
109
+ * Typography scale for Text component (separate from interactive scale)
108
110
  *
109
111
  * @public
110
112
  */
111
- type LinkVariant = (typeof _LINK_VARIANTS)[number];
113
+ type TextSize = (typeof _TEXT_SIZES)[number];
112
114
  /**
113
- * Link size values (internal - used for type derivation only)
115
+ * Text weight values (internal - used for type derivation only)
114
116
  *
115
117
  * @internal
116
118
  */
117
- declare const _LINK_SIZES: readonly ["sm", "md", "lg"];
119
+ declare const _TEXT_WEIGHTS: readonly ["normal", "medium", "semibold", "bold"];
118
120
  /**
119
- * Link size type
121
+ * Text weight type
122
+ * Font weight scale for Text component
120
123
  *
121
124
  * @public
122
125
  */
123
- type LinkSize = (typeof _LINK_SIZES)[number];
124
- declare const linkVariants: (props?: ({
125
- variant?: "primary" | "secondary" | "accent" | "destructive" | "outline" | "link" | "ghost" | null | undefined;
126
- size?: "sm" | "md" | "lg" | null | undefined;
126
+ type TextWeight = (typeof _TEXT_WEIGHTS)[number];
127
+ /**
128
+ * Text tone values (internal - used for type derivation only)
129
+ *
130
+ * @internal
131
+ */
132
+ declare const _TEXT_TONES: readonly ["default", "muted"];
133
+ /**
134
+ * Text tone type
135
+ * Color tone variant for Text component
136
+ *
137
+ * @public
138
+ */
139
+ type TextTone = (typeof _TEXT_TONES)[number];
140
+ /**
141
+ * Text as element types
142
+ * Allowed HTML elements for polymorphic rendering
143
+ *
144
+ * @public
145
+ */
146
+ type TextAsElement = "span" | "p" | "label" | "strong" | "em";
147
+ declare const textVariants: (props?: ({
148
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
149
+ weight?: "normal" | "medium" | "semibold" | "bold" | null | undefined;
150
+ tone?: "muted" | "default" | null | undefined;
127
151
  } & class_variance_authority_types.ClassProp) | undefined) => string;
128
- interface LinkProps extends Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, "className" | "style"> {
129
- /**
130
- * Link variant style
131
- * @default "link"
132
- */
133
- variant?: LinkVariant;
134
- /**
135
- * Link size
136
- * @default "md"
137
- */
138
- size?: LinkSize;
139
- /**
140
- * Icon to display on the left side
141
- */
142
- leftIcon?: React$1.ReactNode;
152
+ /**
153
+ * Text component props
154
+ *
155
+ * @public
156
+ */
157
+ interface TextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "className" | "style"> {
158
+ /** HTML element to render (span, p, label, strong, em) */
159
+ as?: TextAsElement;
160
+ /** Typography size scale (xs, sm, md, lg, xl) */
161
+ size?: TextSize;
162
+ /** Font weight (normal, medium, semibold, bold) */
163
+ weight?: TextWeight;
164
+ /** Text color tone (default, muted) */
165
+ tone?: TextTone;
166
+ }
167
+ declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLElement>>;
168
+
169
+ /**
170
+ * Alert variant values
171
+ *
172
+ * @public
173
+ */
174
+ declare const ALERT_VARIANTS: readonly ["default", "primary", "secondary", "accent", "destructive"];
175
+ /**
176
+ * Alert variant type
177
+ *
178
+ * @public
179
+ */
180
+ type AlertVariant = (typeof ALERT_VARIANTS)[number];
181
+ declare const alertVariants: (props?: ({
182
+ variant?: "primary" | "secondary" | "accent" | "destructive" | "default" | null | undefined;
183
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
184
+ interface AlertProps extends React$1.HTMLAttributes<HTMLDivElement> {
143
185
  /**
144
- * Icon to display on the right side
186
+ * Alert variant style
187
+ * @default "default"
145
188
  */
146
- rightIcon?: React$1.ReactNode;
189
+ variant?: AlertVariant;
190
+ }
191
+ declare const Alert: React$1.ForwardRefExoticComponent<AlertProps & React$1.RefAttributes<HTMLDivElement>>;
192
+
193
+ /**
194
+ * NavLink props interface
195
+ * Extends Link props with navigation state indicator
196
+ *
197
+ * @public
198
+ */
199
+ interface NavLinkProps extends LinkProps {
147
200
  /**
148
- * Whether the link is disabled
149
- * When disabled, the link will not be navigable and will be removed from the tab order
201
+ * Whether this link represents the current page
202
+ * When true, aria-current='page' is applied for accessibility
203
+ * NavLink does not determine this state; it only reflects externally provided state
204
+ *
150
205
  * @default false
151
206
  */
152
- disabled?: boolean;
207
+ current?: boolean;
153
208
  }
154
- declare const Link: React$1.ForwardRefExoticComponent<LinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
209
+ /**
210
+ * NavLink component
211
+ *
212
+ * A navigation primitive built on top of the Foundation Link component.
213
+ * Represents a navigational link and reflects externally provided navigation state via aria-current.
214
+ * NavLink does not perform routing, route matching, or state detection.
215
+ *
216
+ * @public
217
+ */
218
+ declare const NavLink: React$1.ForwardRefExoticComponent<NavLinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
155
219
 
156
220
  /**
157
221
  * Badge variant values
@@ -177,6 +241,99 @@ interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement> {
177
241
  }
178
242
  declare function Badge({ className, variant, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
179
243
 
244
+ /**
245
+ * Chip variant values
246
+ * @public
247
+ */
248
+ declare const CHIP_VARIANTS: readonly ["primary", "secondary", "accent", "outline", "ghost", "destructive"];
249
+ /**
250
+ * Chip variant type
251
+ * @public
252
+ */
253
+ type ChipVariant = (typeof CHIP_VARIANTS)[number];
254
+ /**
255
+ * Chip radius values
256
+ * @public
257
+ */
258
+ declare const CHIP_RADIUS_VALUES: readonly ["sm", "md", "lg", "pill"];
259
+ /**
260
+ * Chip radius type
261
+ * @public
262
+ */
263
+ type ChipRadius = (typeof CHIP_RADIUS_VALUES)[number];
264
+ /**
265
+ * Chip variants using tokenCVA
266
+ */
267
+ declare const chipVariants: (props?: ({
268
+ variant?: "primary" | "secondary" | "accent" | "destructive" | "outline" | "ghost" | null | undefined;
269
+ radius?: "sm" | "md" | "lg" | "pill" | null | undefined;
270
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
271
+ /**
272
+ * Chip props interface
273
+ * @public
274
+ */
275
+ interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onClick"> {
276
+ /**
277
+ * Chip variant style
278
+ * @default "primary"
279
+ */
280
+ variant?: ChipVariant;
281
+ /**
282
+ * Border radius style
283
+ * @default "md"
284
+ */
285
+ radius?: ChipRadius;
286
+ /**
287
+ * Whether the chip can be removed (shows X button)
288
+ * @default false
289
+ */
290
+ removable?: boolean;
291
+ /**
292
+ * Whether the chip is selected (for selectable chips)
293
+ * @default false
294
+ */
295
+ selected?: boolean;
296
+ /**
297
+ * Whether the chip is disabled
298
+ * @default false
299
+ */
300
+ disabled?: boolean;
301
+ /**
302
+ * Click handler for the chip (makes it interactive)
303
+ */
304
+ onClick?: (event: React$1.MouseEvent<HTMLElement>) => void;
305
+ /**
306
+ * Remove handler for removable chips
307
+ * Only called when removable={true} and remove button is clicked
308
+ */
309
+ onRemove?: (event: React$1.MouseEvent<HTMLButtonElement>) => void;
310
+ /**
311
+ * Accessible label for the chip
312
+ * Required for icon-only chips or when children is not descriptive
313
+ */
314
+ "aria-label"?: string;
315
+ /**
316
+ * ARIA pressed state for selectable chips
317
+ */
318
+ "aria-pressed"?: boolean | "true" | "false" | "mixed";
319
+ /**
320
+ * Child content of the chip
321
+ */
322
+ children: React$1.ReactNode;
323
+ }
324
+ /**
325
+ * Chip component
326
+ *
327
+ * COMPLIANCE NOTES:
328
+ * - ✅ Uses token system exclusively (CHIP_TOKENS)
329
+ * - ✅ No raw values (all styling via tokens)
330
+ * - ✅ Motion compliance (MOTION_TOKENS.transitionPreset.colors)
331
+ * - ✅ Accessibility (ARIA attributes, keyboard navigation)
332
+ * - ✅ Focus management (focus-visible, keyboard-only)
333
+ * - ✅ Interaction Authority (disabled: prefix for disabled states)
334
+ */
335
+ declare const Chip: React$1.ForwardRefExoticComponent<ChipProps & React$1.RefAttributes<HTMLElement>>;
336
+
180
337
  declare const headingVariants: (props?: ({
181
338
  level?: 1 | 2 | 4 | 6 | 3 | 5 | null | undefined;
182
339
  weight?: "normal" | "medium" | "semibold" | "bold" | null | undefined;
@@ -196,17 +353,9 @@ interface SelectRootProps extends React$1.ComponentPropsWithoutRef<typeof Select
196
353
  declare const SelectRoot: React$1.FC<SelectRootProps>;
197
354
  interface SelectTriggerProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, "size" | "variant" | "width"> {
198
355
  /**
199
- * Size variant - token-based
200
- */
201
- size?: ResponsiveSelectSize;
202
- /**
203
- * Visual variant - token-based
356
+ * Invalid state - uses aria-invalid
204
357
  */
205
- variant?: SelectVariantToken;
206
- /**
207
- * Width - token-based
208
- */
209
- width?: ResponsiveSelectWidth;
358
+ "aria-invalid"?: boolean;
210
359
  }
211
360
  declare const SelectTrigger: React$1.ForwardRefExoticComponent<SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
212
361
  interface SelectValueProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Value> {
@@ -215,11 +364,7 @@ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectValueProps &
215
364
  interface SelectIconProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Icon> {
216
365
  }
217
366
  declare const SelectIcon: React$1.ForwardRefExoticComponent<SelectIconProps & React$1.RefAttributes<HTMLSpanElement>>;
218
- interface SelectContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>, "size" | "sideOffset" | "alignOffset"> {
219
- /**
220
- * Size variant - token-based
221
- */
222
- size?: ResponsiveSelectSize;
367
+ interface SelectContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>, "sideOffset" | "alignOffset"> {
223
368
  /**
224
369
  * Side offset - token-based
225
370
  */
@@ -234,10 +379,6 @@ interface SelectViewportProps extends React$1.ComponentPropsWithoutRef<typeof Se
234
379
  }
235
380
  declare const SelectViewport: React$1.ForwardRefExoticComponent<SelectViewportProps & React$1.RefAttributes<HTMLDivElement>>;
236
381
  interface SelectItemProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {
237
- /**
238
- * Size variant - token-based
239
- */
240
- size?: ResponsiveSelectSize;
241
382
  }
242
383
  declare const SelectItem: React$1.ForwardRefExoticComponent<SelectItemProps & React$1.RefAttributes<HTMLDivElement>>;
243
384
  interface SelectItemTextProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.ItemText> {
@@ -247,20 +388,12 @@ interface SelectItemIndicatorProps extends React$1.ComponentPropsWithoutRef<type
247
388
  }
248
389
  declare const SelectItemIndicator: React$1.ForwardRefExoticComponent<SelectItemIndicatorProps & React$1.RefAttributes<HTMLSpanElement>>;
249
390
  interface SelectSeparatorProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {
250
- /**
251
- * Size variant - token-based
252
- */
253
- size?: ResponsiveSelectSize;
254
391
  }
255
392
  declare const SelectSeparator: React$1.ForwardRefExoticComponent<SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
256
393
  interface SelectGroupProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Group> {
257
394
  }
258
395
  declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
259
396
  interface SelectLabelProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {
260
- /**
261
- * Size variant - token-based
262
- */
263
- size?: ResponsiveSelectSize;
264
397
  }
265
398
  declare const SelectLabel: React$1.ForwardRefExoticComponent<SelectLabelProps & React$1.RefAttributes<HTMLDivElement>>;
266
399
 
@@ -280,23 +413,282 @@ declare const Select: {
280
413
  };
281
414
 
282
415
  /**
283
- * Select size token type
416
+ * Option type for MultiSelect
417
+ * @public
418
+ */
419
+ interface MultiSelectOption {
420
+ value: string;
421
+ label: string;
422
+ disabled?: boolean;
423
+ }
424
+ /**
425
+ * Size union type (explicit, not CVA-derived)
426
+ * @public
427
+ */
428
+ type MultiSelectSize = "sm" | "md" | "lg";
429
+ /**
430
+ * MultiSelect props interface
431
+ * @public
432
+ */
433
+ interface MultiSelectProps {
434
+ /**
435
+ * Selected values (controlled)
436
+ */
437
+ value?: string[];
438
+ /**
439
+ * Default selected values (uncontrolled)
440
+ */
441
+ defaultValue?: string[];
442
+ /**
443
+ * Callback when selection changes
444
+ */
445
+ onValueChange?: (value: string[]) => void;
446
+ /**
447
+ * Options to display
448
+ */
449
+ options: MultiSelectOption[];
450
+ /**
451
+ * Placeholder text when no items selected
452
+ */
453
+ placeholder?: string;
454
+ /**
455
+ * Maximum number of tags to show in trigger
456
+ * @default undefined (show all tags)
457
+ */
458
+ maxTags?: number;
459
+ /**
460
+ * Size of the component
461
+ * @default "md"
462
+ */
463
+ size?: MultiSelectSize;
464
+ /**
465
+ * Whether the component is disabled
466
+ * @default false
467
+ */
468
+ disabled?: boolean;
469
+ /**
470
+ * Accessible label for the component
471
+ * Required if no visible label
472
+ */
473
+ "aria-label"?: string;
474
+ /**
475
+ * ID of the element that labels this component
476
+ */
477
+ "aria-labelledby"?: string;
478
+ /**
479
+ * Custom render function for tags
480
+ * @param option - The option being rendered as a tag
481
+ * @param onRemove - Function to call to remove this tag
482
+ */
483
+ renderTag?: (option: MultiSelectOption, onRemove: () => void) => React$1.ReactNode;
484
+ }
485
+ /**
486
+ * MultiSelect component
487
+ *
488
+ * COMPLIANCE NOTES:
489
+ * - ✅ Uses token system exclusively (INPUT_TOKENS, SELECT_TOKENS, CHECKBOX_TOKENS, CHIP_TOKENS)
490
+ * - ✅ Composes Foundation components (Select, Checkbox)
491
+ * - ✅ Motion compliance (MOTION_TOKENS.transitionPreset.colors)
492
+ * - ✅ A11Y compliance (aria-multiselectable, aria-checked, keyboard navigation)
493
+ * - ✅ Focus management (focus restore, keyboard-only indication)
494
+ */
495
+ declare const MultiSelect: React$1.ForwardRefExoticComponent<MultiSelectProps & React$1.RefAttributes<HTMLDivElement>>;
496
+
497
+ /**
498
+ * Avatar Component Variants
499
+ *
500
+ * Token-driven CVA (Class Variance Authority) variants for Avatar component.
501
+ * All values use token-based Tailwind classes via AVATAR_TOKENS.
502
+ *
503
+ * COMPLIANCE:
504
+ * - ✅ Uses tokenCVA (enforces token-driven styling)
505
+ * - ✅ Token-based sizing (h-* w-* map to spacing tokens)
506
+ * - ✅ Token-based radius (rounded-full = 9999px, rounded-md = 6px)
507
+ * - ✅ Token-based colors (semantic color tokens)
508
+ * - ✅ Type constraints with satisfies Record<Type, string>
509
+ *
510
+ * @see {@link Avatar} - Main Avatar component
511
+ * @see {@link AvatarGroup} - Avatar group component
512
+ */
513
+ /**
514
+ * Type exports for Avatar variants
284
515
  */
285
- type SelectSize = SelectSizeToken;
516
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
517
+ type AvatarShape = "circle" | "square";
518
+ type AvatarStatus = "online" | "offline" | "busy";
519
+
520
+ interface AvatarProps {
521
+ /**
522
+ * Image source URL
523
+ * @optional If not provided or fails to load, fallback is shown
524
+ */
525
+ src?: string;
526
+ /**
527
+ * Alt text for image (required for accessibility)
528
+ * Used to extract initials if no fallback provided
529
+ * @required
530
+ * @example "John Doe" → initials "JD"
531
+ */
532
+ alt: string;
533
+ /**
534
+ * Avatar size
535
+ * @default "md"
536
+ */
537
+ size?: AvatarSize;
538
+ /**
539
+ * Avatar shape
540
+ * @default "circle"
541
+ */
542
+ shape?: AvatarShape;
543
+ /**
544
+ * Custom fallback content (overrides initials extraction)
545
+ * @optional Can be initials string or React element (e.g., icon)
546
+ */
547
+ fallback?: React$1.ReactNode;
548
+ /**
549
+ * Status indicator
550
+ * @optional Shows colored dot at bottom-right
551
+ */
552
+ status?: AvatarStatus | null;
553
+ /**
554
+ * Additional CSS classes
555
+ */
556
+ className?: string;
557
+ }
286
558
  /**
287
- * Select variant token type
559
+ * Avatar component
560
+ *
561
+ * COMPLIANCE NOTES:
562
+ * - ✅ Uses token system exclusively (no raw values)
563
+ * - ✅ Delegates behavior to Radix UI (@radix-ui/react-avatar)
564
+ * - ✅ Follows Extension Authority Contract
565
+ * - ✅ Token-based sizing (h-*, w-*)
566
+ * - ✅ Token-based radius (rounded-full, rounded-md)
567
+ * - ✅ Token-based colors (bg-muted, text-muted-foreground, bg-semantic-*)
568
+ * - ✅ Enhanced accessibility with computed aria-label
288
569
  */
289
- type SelectVariant = SelectVariantToken;
570
+ declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
571
+
290
572
  /**
291
- * Select width token type
573
+ * AvatarGroup Component
574
+ *
575
+ * Displays multiple avatars with overlap effect.
576
+ * Shows a maximum number of avatars and indicates remaining count.
577
+ *
578
+ * @example
579
+ * ```tsx
580
+ * <AvatarGroup
581
+ * avatars={users.map(u => ({
582
+ * key: u.id, // Optional but recommended for dynamic lists
583
+ * src: u.image,
584
+ * alt: u.name
585
+ * }))}
586
+ * max={3}
587
+ * size="md"
588
+ * />
589
+ * ```
292
590
  */
293
- type SelectWidth = SelectWidthToken;
591
+
592
+ type AvatarGroupSpacing = "tight" | "normal" | "loose";
593
+ interface AvatarGroupProps {
594
+ /**
595
+ * Array of avatar data
596
+ * @required Minimum 1 avatar
597
+ *
598
+ * @remarks
599
+ * For dynamic lists (items can be added/removed/reordered), provide a unique `key`
600
+ * for each avatar to ensure proper React reconciliation. If no key is provided,
601
+ * the component falls back to using `alt` or array index.
602
+ */
603
+ avatars: Array<{
604
+ /**
605
+ * Optional unique identifier for React key
606
+ * @recommended For dynamic lists to ensure proper reconciliation
607
+ */
608
+ key?: string | number;
609
+ src?: string;
610
+ alt: string;
611
+ fallback?: React$1.ReactNode;
612
+ }>;
613
+ /**
614
+ * Maximum avatars to show (remaining count shown as "+N")
615
+ * @default Show all avatars
616
+ * @optional
617
+ */
618
+ max?: number;
619
+ /**
620
+ * Size for all avatars in group
621
+ * @default "md"
622
+ */
623
+ size?: AvatarSize;
624
+ /**
625
+ * Shape for all avatars in group
626
+ * @default "circle"
627
+ */
628
+ shape?: AvatarShape;
629
+ /**
630
+ * Spacing between avatars (negative margin for overlap)
631
+ * @default "normal"
632
+ */
633
+ spacing?: AvatarGroupSpacing;
634
+ /**
635
+ * Additional CSS classes
636
+ */
637
+ className?: string;
638
+ }
294
639
  /**
295
- * Select state token type
640
+ * AvatarGroup component
641
+ *
642
+ * COMPLIANCE NOTES:
643
+ * - ✅ Uses token system exclusively (no raw values)
644
+ * - ✅ Composes Avatar component internally
645
+ * - ✅ Token-based spacing (negative margin via -space-x-*)
646
+ * - ✅ Follows Extension Authority Contract
647
+ * - ✅ Smart key management with fallback chain
648
+ * - ✅ Development-mode warnings for edge cases
296
649
  */
297
- type SelectState = SelectStateToken;
650
+ declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
298
651
 
299
652
  /**
653
+ * ============================================================================
654
+ * ⏳ FOUNDATION · LEGACY · UNLOCKED_FOR_MIGRATION - Modal Component
655
+ * ============================================================================
656
+ *
657
+ * **STATUS:** ⏳ LEGACY UNLOCKED (Pending Canonical Migration)
658
+ * **UNLOCK DATE:** 2025-12-19
659
+ * **TASK:** TUNG_FOUNDATION_LEGACY_UNLOCK_01
660
+ *
661
+ * **UNLOCK RATIONALE:**
662
+ * Modal was declared as LOCKED but was implemented using legacy patterns and
663
+ * never passed the canonical Foundation Step Pipeline (0–13). The current lock
664
+ * is declarative only and blocks required migration.
665
+ *
666
+ * **MIGRATION PATH:**
667
+ * Modal will undergo canonical Foundation lock process (Steps 0–13) to ensure
668
+ * full compliance with all Authority Contracts and canonical lifecycle
669
+ * requirements, similar to Button/Link standards.
670
+ *
671
+ * **CONSTRAINTS DURING UNLOCK:**
672
+ * - ❌ No public API expansion
673
+ * - ❌ No new variants or sizes
674
+ * - ❌ No behavior changes outside canonicalization
675
+ * - ❌ No bypass of Authority Contracts
676
+ * - ✅ Refactor strictly via Foundation Step Pipeline
677
+ * - ✅ Canonical CVA, typing, and interaction refactor allowed
678
+ * - ✅ Authority Contract alignment allowed
679
+ *
680
+ * **EXIT CRITERIA:**
681
+ * - Component completes Steps 0–13
682
+ * - Foundation lock report exists
683
+ * - Public Type Surface is locked
684
+ * - Component re-marked as FOUNDATION · LOCKED
685
+ *
686
+ * **REFERENCE:**
687
+ * - docs/architecture/FOUNDATION_LOCK.md (Legacy Foundation Components section)
688
+ * - docs/workflows/foundation/COMPONENT_REFACTORING_PIPELINE.md
689
+ *
690
+ * ============================================================================
691
+ *
300
692
  * Modal Component
301
693
  *
302
694
  * Radix-based modal component with token-driven styling.
@@ -304,6 +696,12 @@ type SelectState = SelectStateToken;
304
696
  * Tenerife UI provides visual styling through tokens only.
305
697
  */
306
698
 
699
+ /**
700
+ * Modal size union type
701
+ * Explicit union type for Modal size prop (sm | md | lg)
702
+ * Per VARIANTS_SIZE_CANON: overlay components restricted to sm | md | lg only
703
+ */
704
+ type ModalSize = "sm" | "md" | "lg";
307
705
  interface ModalRootProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
308
706
  }
309
707
  /**
@@ -386,6 +784,20 @@ interface ModalContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof
386
784
  * ```
387
785
  */
388
786
  surface?: SurfaceToken;
787
+ /**
788
+ * Ref to the trigger element for focus restore on close
789
+ *
790
+ * When provided, Modal will deterministically restore focus to this element
791
+ * when the modal closes (via close button or Escape key).
792
+ *
793
+ * @example
794
+ * ```tsx
795
+ * const triggerRef = useRef<HTMLButtonElement>(null);
796
+ * <Button ref={triggerRef}>Open Modal</Button>
797
+ * <Modal.Content triggerRef={triggerRef}>...</Modal.Content>
798
+ * ```
799
+ */
800
+ triggerRef?: React$1.RefObject<HTMLElement>;
389
801
  }
390
802
  /**
391
803
  * Modal Content component
@@ -434,6 +846,12 @@ interface ModalDescriptionProps extends React$1.ComponentPropsWithoutRef<typeof
434
846
  * Wrapper around Radix Dialog Description with token-based typography
435
847
  */
436
848
  declare const ModalDescription: React$1.ForwardRefExoticComponent<ModalDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
849
+ interface ModalBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
850
+ /**
851
+ * Body content
852
+ */
853
+ children?: React$1.ReactNode;
854
+ }
437
855
  interface ModalFooterProps extends React$1.HTMLAttributes<HTMLDivElement> {
438
856
  /**
439
857
  * Gap between footer items - token-based
@@ -463,7 +881,7 @@ declare const ModalClose: React$1.ForwardRefExoticComponent<ModalCloseProps & Re
463
881
  * Radix Dialog-based modal component with token-driven styling.
464
882
  *
465
883
  * **Usage:**
466
- * ```tsx
884
+ * @example
467
885
  * <Modal.Root open={open} onOpenChange={setOpen}>
468
886
  * <Modal.Trigger>Open</Modal.Trigger>
469
887
  * <Modal.Content>
@@ -471,42 +889,372 @@ declare const ModalClose: React$1.ForwardRefExoticComponent<ModalCloseProps & Re
471
889
  * <Modal.Title>Title</Modal.Title>
472
890
  * <Modal.Description>Description</Modal.Description>
473
891
  * </Modal.Header>
474
- * <div>Content</div>
892
+ * <Modal.Body>
893
+ * {/* Scrollable content *\/}
894
+ * </Modal.Body>
475
895
  * <Modal.Footer>
476
896
  * <Modal.Close>Close</Modal.Close>
477
897
  * </Modal.Footer>
478
898
  * <Modal.Close />
479
899
  * </Modal.Content>
480
900
  * </Modal.Root>
901
+ *
902
+ * **Note:** Modal.Portal and Modal.Overlay are internal and should not be used directly.
903
+ * ModalContent automatically handles portal and overlay rendering.
904
+ * Modal.Body is optional but recommended for scrollable content.
905
+ */
906
+ declare const Modal: {
907
+ Root: React$1.FC<ModalRootProps>;
908
+ Trigger: React$1.ForwardRefExoticComponent<ModalTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
909
+ Overlay: React$1.ForwardRefExoticComponent<ModalOverlayProps & React$1.RefAttributes<HTMLDivElement>>;
910
+ Content: React$1.ForwardRefExoticComponent<ModalContentProps & React$1.RefAttributes<HTMLDivElement>>;
911
+ Header: React$1.ForwardRefExoticComponent<ModalHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
912
+ Title: React$1.ForwardRefExoticComponent<ModalTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
913
+ Description: React$1.ForwardRefExoticComponent<ModalDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
914
+ Body: React$1.ForwardRefExoticComponent<ModalBodyProps & React$1.RefAttributes<HTMLDivElement>>;
915
+ Footer: React$1.ForwardRefExoticComponent<ModalFooterProps & React$1.RefAttributes<HTMLDivElement>>;
916
+ Close: React$1.ForwardRefExoticComponent<ModalCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
917
+ };
918
+
919
+ /**
920
+ * FileUpload Types
921
+ *
922
+ * Type definitions for FileUpload component.
923
+ * All types follow TYPING_STANDARD (explicit union types, no CVA-derived types in public API).
924
+ */
925
+ /**
926
+ * FileUpload Size Type
927
+ * Explicit union type for size variants
928
+ */
929
+ type FileUploadSize = "sm" | "md" | "lg";
930
+ /**
931
+ * FileUpload Variant Type
932
+ * Explicit union type for visual variants
933
+ */
934
+ type FileUploadVariant = "outline" | "filled";
935
+ /**
936
+ * FileUpload Error Type
937
+ * Error types for validation failures
938
+ */
939
+ interface FileUploadError {
940
+ type: "file-too-large" | "file-type-not-supported" | "too-many-files" | "unknown";
941
+ message: string;
942
+ file?: File;
943
+ }
944
+ /**
945
+ * FileUpload Props
946
+ * Main component props interface
947
+ *
948
+ * Extension component: className/style allowed but excluded from type definition
949
+ * for consistency with FormData components pattern
950
+ */
951
+ interface FileUploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue" | "onError"> {
952
+ /** Allow multiple file selection */
953
+ multiple?: boolean;
954
+ /** Accepted file types (e.g., "image/*", ".pdf,.doc") */
955
+ accept?: string;
956
+ /** Maximum file size in bytes */
957
+ maxSize?: number;
958
+ /** Maximum number of files (for multiple mode) */
959
+ maxFiles?: number;
960
+ /** Disabled state */
961
+ disabled?: boolean;
962
+ /** Loading state (upload in progress) */
963
+ loading?: boolean;
964
+ /** Controlled value (array of File objects) */
965
+ value?: File[];
966
+ /** Default value (uncontrolled mode) */
967
+ defaultValue?: File[];
968
+ /** Called when files are selected */
969
+ onFileSelect?: (files: File[]) => void;
970
+ /** Called when a file is removed */
971
+ onFileRemove?: (file: File) => void;
972
+ /** Called when validation error occurs */
973
+ onError?: (error: FileUploadError) => void;
974
+ /** Size variant */
975
+ size?: FileUploadSize;
976
+ /** Visual variant */
977
+ variant?: FileUploadVariant;
978
+ /** Accessible label for dropzone */
979
+ "aria-label"?: string;
980
+ /** ID of element describing the component */
981
+ "aria-describedby"?: string;
982
+ }
983
+
984
+ /**
985
+ * FileUpload Component
986
+ *
987
+ * Extension composite component for file upload with drag-and-drop,
988
+ * file preview, validation, and progress tracking.
989
+ *
990
+ * Features:
991
+ * - Drag-and-drop file selection
992
+ * - File preview with thumbnails (for images)
993
+ * - File validation (size, type, count)
994
+ * - Controlled and uncontrolled modes
995
+ * - Size variants (sm, md, lg)
996
+ * - Visual variants (outline, filled)
997
+ * - Error handling
998
+ * - ARIA compliance
999
+ * - Keyboard navigation
1000
+ *
1001
+ * @example Basic usage
1002
+ * ```tsx
1003
+ * <FileUpload onFileSelect={(files) => console.log(files)} />
481
1004
  * ```
482
1005
  *
483
- * **Note:** Modal.Portal and Modal.Overlay are internal and should not be used directly.
484
- * ModalContent automatically handles portal and overlay rendering.
1006
+ * @example Multiple files with validation
1007
+ * ```tsx
1008
+ * <FileUpload
1009
+ * multiple
1010
+ * maxSize={5 * 1024 * 1024} // 5MB
1011
+ * accept="image/*"
1012
+ * maxFiles={5}
1013
+ * onFileSelect={handleUpload}
1014
+ * onError={(error) => console.error(error)}
1015
+ * />
1016
+ * ```
1017
+ *
1018
+ * @example Controlled mode with loading state
1019
+ * ```tsx
1020
+ * <FileUpload
1021
+ * value={files}
1022
+ * loading={isUploading}
1023
+ * onFileSelect={setFiles}
1024
+ * onFileRemove={handleRemove}
1025
+ * />
1026
+ * ```
1027
+ */
1028
+
1029
+ /**
1030
+ * FileUpload component
1031
+ *
1032
+ * COMPLIANCE NOTES:
1033
+ * - ✅ Uses token system exclusively (no raw values)
1034
+ * - ✅ Composes Foundation components (Button, Text)
1035
+ * - ✅ Follows Extension Authority Contract
1036
+ * - ✅ Uses descriptive, intent-based naming
1037
+ * - ✅ Does NOT duplicate Foundation functionality
1038
+ * - ✅ Motion compliance: uses .tm-motion-fade-in for file appearance
1039
+ * - ✅ A11Y compliance: aria-label, aria-describedby, aria-busy, aria-invalid
1040
+ * - ✅ Focus compliance: keyboard navigation, focus-visible styles
1041
+ */
1042
+ declare const FileUpload: React$1.ForwardRefExoticComponent<FileUploadProps & React$1.RefAttributes<HTMLDivElement>>;
1043
+
1044
+ type RangeSliderSize = "sm" | "md" | "lg";
1045
+ type RangeSliderVariant = "primary" | "secondary" | "outline";
1046
+ type RangeSliderOrientation = "horizontal" | "vertical";
1047
+ interface RangeSliderMark {
1048
+ /**
1049
+ * Value at which the mark should be placed
1050
+ */
1051
+ value: number;
1052
+ /**
1053
+ * Optional label to display at the mark
1054
+ */
1055
+ label?: string | React$1.ReactNode;
1056
+ }
1057
+ interface RangeSliderProps {
1058
+ /**
1059
+ * Current value of the range slider (controlled)
1060
+ * Tuple of [min, max]
1061
+ */
1062
+ value?: [number, number];
1063
+ /**
1064
+ * Default value of the range slider (uncontrolled)
1065
+ * Tuple of [min, max]
1066
+ * @default [25, 75]
1067
+ */
1068
+ defaultValue?: [number, number];
1069
+ /**
1070
+ * Callback fired when the value changes
1071
+ */
1072
+ onValueChange?: (value: [number, number]) => void;
1073
+ /**
1074
+ * Minimum value
1075
+ * @default 0
1076
+ */
1077
+ min?: number;
1078
+ /**
1079
+ * Maximum value
1080
+ * @default 100
1081
+ */
1082
+ max?: number;
1083
+ /**
1084
+ * Step increment
1085
+ * @default 1
1086
+ */
1087
+ step?: number;
1088
+ /**
1089
+ * Visual size variant
1090
+ * @default "md"
1091
+ */
1092
+ size?: RangeSliderSize;
1093
+ /**
1094
+ * Visual style variant
1095
+ * @default "primary"
1096
+ */
1097
+ variant?: RangeSliderVariant;
1098
+ /**
1099
+ * Whether the range slider is disabled
1100
+ * @default false
1101
+ */
1102
+ disabled?: boolean;
1103
+ /**
1104
+ * Orientation of the range slider
1105
+ * @default "horizontal"
1106
+ */
1107
+ orientation?: RangeSliderOrientation;
1108
+ /**
1109
+ * Marks to display on the range slider
1110
+ * Can be an array of mark objects or just an array of values
1111
+ */
1112
+ marks?: RangeSliderMark[] | number[];
1113
+ /**
1114
+ * Whether to show labels for marks
1115
+ * @default false
1116
+ */
1117
+ showMarkLabels?: boolean;
1118
+ /**
1119
+ * Accessible label for the range slider
1120
+ */
1121
+ "aria-label"?: string;
1122
+ /**
1123
+ * Name attribute for form submission
1124
+ */
1125
+ name?: string;
1126
+ }
1127
+ /**
1128
+ * RangeSlider component
1129
+ *
1130
+ * COMPLIANCE NOTES:
1131
+ * - ✅ Uses token system exclusively (no raw values)
1132
+ * - ✅ Uses Radix UI Slider primitive with minStepsBetweenThumbs
1133
+ * - ✅ Follows Extension Authority Contract
1134
+ * - ✅ Interactive Size Scale Authority (sm/md/lg)
1135
+ * - ✅ InteractiveVariant subset (primary/secondary/outline)
1136
+ * - ✅ CVA pattern for variants and sizes
1137
+ */
1138
+ declare const RangeSlider: React$1.ForwardRefExoticComponent<RangeSliderProps & React$1.RefAttributes<HTMLSpanElement>>;
1139
+
1140
+ type SliderSize = "sm" | "md" | "lg";
1141
+ type SliderVariant = "primary" | "secondary" | "outline";
1142
+ type SliderOrientation = "horizontal" | "vertical";
1143
+ interface SliderMark {
1144
+ /**
1145
+ * Value at which the mark should be placed
1146
+ */
1147
+ value: number;
1148
+ /**
1149
+ * Optional label to display at the mark
1150
+ */
1151
+ label?: string | React$1.ReactNode;
1152
+ }
1153
+ interface SliderProps {
1154
+ /**
1155
+ * Current value of the slider (controlled)
1156
+ */
1157
+ value?: number;
1158
+ /**
1159
+ * Default value of the slider (uncontrolled)
1160
+ * @default 50
1161
+ */
1162
+ defaultValue?: number;
1163
+ /**
1164
+ * Callback fired when the value changes
1165
+ */
1166
+ onValueChange?: (value: number) => void;
1167
+ /**
1168
+ * Minimum value
1169
+ * @default 0
1170
+ */
1171
+ min?: number;
1172
+ /**
1173
+ * Maximum value
1174
+ * @default 100
1175
+ */
1176
+ max?: number;
1177
+ /**
1178
+ * Step increment
1179
+ * @default 1
1180
+ */
1181
+ step?: number;
1182
+ /**
1183
+ * Visual size variant
1184
+ * @default "md"
1185
+ */
1186
+ size?: SliderSize;
1187
+ /**
1188
+ * Visual style variant
1189
+ * @default "primary"
1190
+ */
1191
+ variant?: SliderVariant;
1192
+ /**
1193
+ * Whether the slider is disabled
1194
+ * @default false
1195
+ */
1196
+ disabled?: boolean;
1197
+ /**
1198
+ * Orientation of the slider
1199
+ * @default "horizontal"
1200
+ */
1201
+ orientation?: SliderOrientation;
1202
+ /**
1203
+ * Marks to display on the slider
1204
+ * Can be an array of mark objects or just an array of values
1205
+ */
1206
+ marks?: SliderMark[] | number[];
1207
+ /**
1208
+ * Whether to show labels for marks
1209
+ * @default false
1210
+ */
1211
+ showMarkLabels?: boolean;
1212
+ /**
1213
+ * Accessible label for the slider
1214
+ */
1215
+ "aria-label"?: string;
1216
+ /**
1217
+ * Name attribute for form submission
1218
+ */
1219
+ name?: string;
1220
+ }
1221
+ /**
1222
+ * Slider component
1223
+ *
1224
+ * COMPLIANCE NOTES:
1225
+ * - ✅ Uses token system exclusively (SLIDER_TOKENS, no raw values)
1226
+ * - ✅ Uses Radix UI Slider primitive
1227
+ * - ✅ Follows Extension Authority Contract
1228
+ * - ✅ Interactive Size Scale Authority (sm/md/lg)
1229
+ * - ✅ InteractiveVariant subset (primary/secondary/outline)
1230
+ * - ✅ tokenCVA pattern for variants and sizes (Decision Matrix RULE 1 compliance)
485
1231
  */
486
- declare const Modal: {
487
- Root: React$1.FC<ModalRootProps>;
488
- Trigger: React$1.ForwardRefExoticComponent<ModalTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
489
- Overlay: React$1.ForwardRefExoticComponent<ModalOverlayProps & React$1.RefAttributes<HTMLDivElement>>;
490
- Content: React$1.ForwardRefExoticComponent<ModalContentProps & React$1.RefAttributes<HTMLDivElement>>;
491
- Header: React$1.ForwardRefExoticComponent<ModalHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
492
- Title: React$1.ForwardRefExoticComponent<ModalTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
493
- Description: React$1.ForwardRefExoticComponent<ModalDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
494
- Footer: React$1.ForwardRefExoticComponent<ModalFooterProps & React$1.RefAttributes<HTMLDivElement>>;
495
- Close: React$1.ForwardRefExoticComponent<ModalCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
496
- };
1232
+ declare const Slider: React$1.ForwardRefExoticComponent<SliderProps & React$1.RefAttributes<HTMLSpanElement>>;
497
1233
 
1234
+ /**
1235
+ * Checkbox Variant Types
1236
+ *
1237
+ * Explicit union types for Checkbox component.
1238
+ * Canonical size scale for interactive components: sm | md | lg
1239
+ */
1240
+ type CheckboxVariant = "primary" | "secondary" | "outline" | "ghost" | "destructive";
1241
+ type CheckboxSize = "sm" | "md" | "lg";
1242
+ type CheckboxState = "default" | "checked" | "indeterminate" | "error" | "disabled" | "disabledChecked";
498
1243
  /**
499
1244
  * Checkbox Variants
500
1245
  *
501
- * CVA-based variant system for Checkbox component.
1246
+ * tokenCVA-based variant system for Checkbox component (token-driven axes).
502
1247
  * Supports variants (primary, secondary, outline, ghost, destructive),
503
- * sizes (xs, sm, md, lg, xl), and states (default, checked, disabled, error, indeterminate).
1248
+ * sizes (sm, md, lg - canonical interactive scale), and states (default, checked, disabled, error, indeterminate).
504
1249
  * All styling uses token-based values with CSS variable references.
1250
+ *
1251
+ * NOTE: Size scale restricted to sm|md|lg per canonical interactive size scale (FOUNDATION_LOCK.md).
1252
+ * xs and xl sizes removed to comply with Button-defined canonical scale.
505
1253
  */
506
1254
  declare const checkboxVariants: (props?: ({
507
1255
  variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
508
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
509
- state?: "default" | "disabled" | "error" | "checked" | "indeterminate" | null | undefined;
1256
+ size?: "sm" | "md" | "lg" | null | undefined;
1257
+ state?: "default" | "disabled" | "error" | "checked" | "indeterminate" | "disabledChecked" | null | undefined;
510
1258
  } & class_variance_authority_types.ClassProp) | undefined) => string;
511
1259
 
512
1260
  /**
@@ -514,23 +1262,26 @@ declare const checkboxVariants: (props?: ({
514
1262
  *
515
1263
  * Extends native button HTML attributes with variant props, checked state, and accessibility props.
516
1264
  * Uses button role="checkbox" pattern for full keyboard accessibility.
1265
+ *
1266
+ * NOTE: Size scale restricted to sm|md|lg per canonical interactive size scale.
1267
+ * VariantProps removed — public API uses explicit union types only.
517
1268
  */
518
- interface CheckboxProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style">, VariantProps<typeof checkboxVariants> {
1269
+ interface CheckboxProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style"> {
519
1270
  /**
520
1271
  * Checkbox variant style
521
1272
  * @default "outline"
522
1273
  */
523
- variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive";
1274
+ variant?: CheckboxVariant;
524
1275
  /**
525
- * Checkbox size
1276
+ * Checkbox size (canonical interactive scale: sm | md | lg)
526
1277
  * @default "md"
527
1278
  */
528
- size?: "xs" | "sm" | "md" | "lg" | "xl";
1279
+ size?: CheckboxSize;
529
1280
  /**
530
1281
  * Checkbox state
531
1282
  * @default "default"
532
1283
  */
533
- state?: "default" | "checked" | "indeterminate" | "error" | "disabled";
1284
+ state?: CheckboxState;
534
1285
  /**
535
1286
  * Whether checkbox is checked (controlled)
536
1287
  */
@@ -595,8 +1346,7 @@ interface CheckboxProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElem
595
1346
  */
596
1347
  declare const Checkbox: React$1.ForwardRefExoticComponent<CheckboxProps & React$1.RefAttributes<HTMLButtonElement>>;
597
1348
 
598
- declare const labelVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
599
- interface LabelProps extends Omit<React$1.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>, "className" | "style">, VariantProps<typeof labelVariants> {
1349
+ interface LabelProps extends Omit<React$1.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>, "className" | "style"> {
600
1350
  /**
601
1351
  * Whether the field is required (shows asterisk)
602
1352
  */
@@ -606,35 +1356,83 @@ declare const Label: React$1.ForwardRefExoticComponent<LabelProps & React$1.RefA
606
1356
 
607
1357
  /**
608
1358
  * Field Container Component
609
- * Provides spacing between field elements using Stack
1359
+ *
1360
+ * Provides vertical layout structure for form field elements with consistent spacing.
1361
+ * Composes Label, Control wrapper, Description, and Error into a Stack layout.
1362
+ *
1363
+ * @example
1364
+ * ```tsx
1365
+ * <Field>
1366
+ * <Field.Label htmlFor="email">Email</Field.Label>
1367
+ * <Field.Control>
1368
+ * <Input id="email" type="email" />
1369
+ * </Field.Control>
1370
+ * <Field.Description>We'll never share your email.</Field.Description>
1371
+ * </Field>
1372
+ * ```
610
1373
  */
611
1374
  interface FieldProps extends React$1.HTMLAttributes<HTMLDivElement> {
612
1375
  }
613
1376
  declare const Field: React$1.ForwardRefExoticComponent<FieldProps & React$1.RefAttributes<HTMLDivElement>>;
614
1377
  /**
615
1378
  * Field Label Component
616
- * Wraps Label component with proper styling
1379
+ *
1380
+ * Wraps the Foundation Label component for form field labels.
1381
+ * Delegates all behavior and styling to Label (Foundation component).
1382
+ *
1383
+ * @example
1384
+ * ```tsx
1385
+ * <Field.Label htmlFor="email">Email Address</Field.Label>
1386
+ * ```
617
1387
  */
618
1388
  interface FieldLabelProps extends React$1.ComponentProps<typeof Label> {
619
1389
  }
620
1390
  declare const FieldLabel: React$1.ForwardRefExoticComponent<Omit<FieldLabelProps, "ref"> & React$1.RefAttributes<HTMLLabelElement>>;
621
1391
  /**
622
1392
  * Field Control Component
623
- * Wrapper for input/textarea/select controls
1393
+ *
1394
+ * Wrapper for form control elements (Input, Textarea, Select, etc.).
1395
+ * Provides ref forwarding and className merging for control elements.
1396
+ *
1397
+ * @example
1398
+ * ```tsx
1399
+ * <Field.Control>
1400
+ * <Input id="email" type="email" />
1401
+ * </Field.Control>
1402
+ * ```
624
1403
  */
625
1404
  interface FieldControlProps extends React$1.HTMLAttributes<HTMLDivElement> {
626
1405
  }
627
1406
  declare const FieldControl: React$1.ForwardRefExoticComponent<FieldControlProps & React$1.RefAttributes<HTMLDivElement>>;
628
1407
  /**
629
1408
  * Field Description Component
630
- * Helper text displayed below the control
1409
+ *
1410
+ * Helper text displayed below the control to provide additional context.
1411
+ * Uses Text component with size="sm" and muted styling by default.
1412
+ *
1413
+ * @example
1414
+ * ```tsx
1415
+ * <Field.Description>We'll never share your email with anyone else.</Field.Description>
1416
+ * ```
631
1417
  */
632
1418
  interface FieldDescriptionProps extends React$1.ComponentProps<typeof Text> {
633
1419
  }
634
1420
  declare const FieldDescription: React$1.ForwardRefExoticComponent<Omit<FieldDescriptionProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
635
1421
  /**
636
1422
  * Field Error Component
637
- * Error message displayed below the control
1423
+ *
1424
+ * Error message displayed below the control for validation feedback.
1425
+ * Uses Text component with size="sm" wrapped in destructive color span.
1426
+ *
1427
+ * Note: Wrapper span with className="text-destructive" is used to apply
1428
+ * destructive color without modifying Text component (Foundation component).
1429
+ * This pattern allows Field (Composition component) to use className while
1430
+ * respecting Foundation Enforcement rules for Text.
1431
+ *
1432
+ * @example
1433
+ * ```tsx
1434
+ * <Field.Error>Email is required</Field.Error>
1435
+ * ```
638
1436
  */
639
1437
  interface FieldErrorProps extends React$1.ComponentProps<typeof Text> {
640
1438
  }
@@ -647,121 +1445,103 @@ declare const FieldRoot: typeof Field & {
647
1445
  };
648
1446
 
649
1447
  /**
650
- * Input Variants
651
- *
652
- * CVA-based variant system for Input component.
653
- * Supports variants (primary, secondary, outline, ghost, destructive),
654
- * sizes (xs, sm, md, lg, xl), and states (default, disabled, error, success).
655
- * All styling uses token-based values with CSS variable references.
656
- */
657
- declare const inputVariants: (props?: ({
658
- variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
659
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
660
- state?: "default" | "disabled" | "success" | "error" | null | undefined;
661
- fullWidth?: boolean | null | undefined;
662
- } & class_variance_authority_types.ClassProp) | undefined) => string;
663
-
664
- /**
665
- * Input variant type derived from INPUT_TOKENS
1448
+ * Input size type
666
1449
  *
667
- * Available variants: "primary" | "secondary" | "outline" | "ghost" | "destructive"
1450
+ * Available sizes: "sm" | "md" | "lg"
668
1451
  *
669
1452
  * @example
670
1453
  * ```tsx
671
- * const variant: InputVariant = "outline";
1454
+ * const size: InputSize = "md";
672
1455
  * ```
673
1456
  */
674
- type InputVariant = keyof typeof INPUT_TOKENS.variant;
675
-
1457
+ type InputSize = "sm" | "md" | "lg";
676
1458
  /**
677
1459
  * Input Component Props
678
1460
  *
679
- * Extends native input HTML attributes with variant props, icon slots, and accessibility props.
1461
+ * Minimal native-aligned interface for low-level form control primitive.
1462
+ * Extends native input HTML attributes with size and invalid props.
680
1463
  */
681
- interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "className" | "style">, Omit<VariantProps<typeof inputVariants>, "variant" | "size"> {
1464
+ interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "className" | "style"> {
682
1465
  /**
683
- * Input variant style
684
- *
685
- * Supports responsive values:
686
- * - Single value: `variant="outline"`
687
- * - Responsive object: `variant={{ base: "outline", md: "primary" }}`
1466
+ * Input size
688
1467
  *
689
- * @default "outline"
1468
+ * @default "md"
690
1469
  *
691
1470
  * @example
692
1471
  * ```tsx
693
- * // Single value
694
- * <Input variant="outline" />
695
- *
696
- * // Responsive
697
- * <Input variant={{ base: "outline", md: "primary" }} />
1472
+ * <Input size="md" />
698
1473
  * ```
699
1474
  */
700
- variant?: Responsive<InputVariant>;
1475
+ size?: InputSize;
701
1476
  /**
702
- * Input size
1477
+ * Whether the input is in an invalid state
703
1478
  *
704
- * Supports responsive values:
705
- * - Single value: `size="md"`
706
- * - Responsive object: `size={{ base: "sm", md: "lg" }}`
707
- *
708
- * @default "md"
1479
+ * Maps to aria-invalid attribute for accessibility.
709
1480
  *
710
1481
  * @example
711
1482
  * ```tsx
712
- * // Single value
713
- * <Input size="md" />
714
- *
715
- * // Responsive
716
- * <Input size={{ base: "sm", md: "lg" }} />
1483
+ * <Input invalid />
717
1484
  * ```
718
1485
  */
719
- size?: Responsive<InputSize>;
720
- /**
721
- * Input state
722
- * @default "default"
723
- */
724
- state?: "default" | "disabled" | "error" | "success";
725
- /**
726
- * Whether input should take full width
727
- * @default true
728
- */
729
- fullWidth?: boolean;
730
- /**
731
- * Icon to display on the left side of the input
732
- */
733
- iconLeft?: React$1.ReactNode;
734
- /**
735
- * Icon to display on the right side of the input
736
- */
737
- iconRight?: React$1.ReactNode;
1486
+ invalid?: boolean;
738
1487
  }
739
1488
 
740
1489
  /**
741
1490
  * Input Component
742
1491
  *
743
- * A fully accessible, theme-aware input component with variant support,
744
- * icon slots, and comprehensive state management.
1492
+ * @semantic_role FOUNDATION_PRIMITIVE_TEXT_INPUT
1493
+ * @semantic_definition Input is a low-level form control primitive that wraps the native <input> element.
1494
+ * It is responsible only for visual styling via tokens, accessibility via native and ARIA attributes,
1495
+ * and forwarding all native input behavior. Input does not handle labels, errors, validation,
1496
+ * helper text, or form logic. Higher-level composition is delegated to FormField or domain-level form abstractions.
1497
+ *
1498
+ * @status FOUNDATION LOCK (Target - 2025-12-26)
1499
+ * @rule DO NOT modify, extend, or create alternatives (after Foundation Lock)
1500
+ */
1501
+
1502
+ /**
1503
+ * Input Component
1504
+ *
1505
+ * A minimal, low-level form control primitive that wraps the native <input> element.
1506
+ * Supports size variants and invalid state for accessibility.
745
1507
  *
746
1508
  * @example
747
1509
  * ```tsx
748
- * <Input
749
- * variant="outline"
750
- * size="md"
751
- * placeholder="Enter text..."
752
- * iconLeft={<Icon name="search" />}
753
- * />
1510
+ * <Input size="md" placeholder="Enter text..." />
1511
+ * <Input invalid aria-describedby="error-id" />
754
1512
  * ```
755
1513
  */
756
1514
  declare const Input: React$1.ForwardRefExoticComponent<InputProps & React$1.RefAttributes<HTMLInputElement>>;
757
1515
 
1516
+ /**
1517
+ * Input Variants
1518
+ *
1519
+ * Token-driven CVA system for Input component (size-only variant system).
1520
+ * All styling uses token-based values with CSS variable references.
1521
+ *
1522
+ * Invalid state styling is handled via CSS [aria-invalid="true"] selector (see base classes).
1523
+ */
1524
+ declare const inputVariants: (props?: ({
1525
+ size?: "sm" | "md" | "lg" | null | undefined;
1526
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1527
+
1528
+ /**
1529
+ * Explicit union types for Radio component
1530
+ * Required for CVA type constraints (satisfies Record<Type, string>)
1531
+ */
1532
+ type RadioVariant = "primary" | "secondary" | "outline" | "ghost" | "destructive";
1533
+ type RadioSize = "xs" | "sm" | "md" | "lg" | "xl";
1534
+ type RadioState = "default" | "checked" | "disabled" | "error";
758
1535
  /**
759
1536
  * Radio Variants
760
1537
  *
761
- * CVA-based variant system for Radio component.
1538
+ * tokenCVA-based variant system for Radio component.
762
1539
  * Supports variants (primary, secondary, outline, ghost, destructive),
763
1540
  * sizes (xs, sm, md, lg, xl), and states (default, checked, disabled, error).
764
1541
  * All styling uses token-based values with CSS variable references.
1542
+ *
1543
+ * Uses tokenCVA (not cva) because component has token-driven axes (variant, size, state).
1544
+ * Per CVA Usage Decision Matrix RULE 1: tokenCVA is REQUIRED for token-driven axes.
765
1545
  */
766
1546
  declare const radioVariants: (props?: ({
767
1547
  variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
@@ -769,28 +1549,49 @@ declare const radioVariants: (props?: ({
769
1549
  state?: "default" | "disabled" | "error" | "checked" | null | undefined;
770
1550
  } & class_variance_authority_types.ClassProp) | undefined) => string;
771
1551
 
1552
+ /**
1553
+ * Radio component
1554
+ */
1555
+ declare const Radio: React$1.ForwardRefExoticComponent<Omit<Omit<React$1.DetailedHTMLProps<React$1.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "className" | "size" | "style" | "onChange"> & class_variance_authority.VariantProps<(props?: ({
1556
+ variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
1557
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
1558
+ state?: "default" | "disabled" | "error" | "checked" | null | undefined;
1559
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
1560
+ variant?: RadioVariant;
1561
+ size?: RadioSize;
1562
+ state?: RadioState;
1563
+ checked?: boolean;
1564
+ disabled?: boolean;
1565
+ value?: string;
1566
+ onCheckedChange?: (checked: boolean) => void;
1567
+ icon?: React$1.ReactNode;
1568
+ "aria-label"?: string;
1569
+ "aria-labelledby"?: string;
1570
+ "aria-describedby"?: string;
1571
+ } & React$1.RefAttributes<HTMLButtonElement>>;
1572
+
772
1573
  /**
773
1574
  * Radio Component Props
774
1575
  *
775
1576
  * Extends native button HTML attributes with variant props, checked state, and accessibility props.
776
1577
  * Uses button role="radio" pattern for full keyboard accessibility.
777
1578
  */
778
- interface RadioProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style">, VariantProps<typeof radioVariants> {
1579
+ type RadioProps = Omit<React$1.ComponentPropsWithoutRef<"button">, "size" | "onChange" | "className" | "style"> & VariantProps<typeof radioVariants> & {
779
1580
  /**
780
1581
  * Radio variant style
781
1582
  * @default "outline"
782
1583
  */
783
- variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive";
1584
+ variant?: RadioVariant;
784
1585
  /**
785
1586
  * Radio size
786
1587
  * @default "md"
787
1588
  */
788
- size?: "xs" | "sm" | "md" | "lg" | "xl";
1589
+ size?: RadioSize;
789
1590
  /**
790
1591
  * Radio state
791
1592
  * @default "default"
792
1593
  */
793
- state?: "default" | "checked" | "disabled" | "error";
1594
+ state?: RadioState;
794
1595
  /**
795
1596
  * Whether radio is checked (controlled)
796
1597
  */
@@ -828,29 +1629,7 @@ interface RadioProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement
828
1629
  * Points to the ID of the element that describes this radio
829
1630
  */
830
1631
  "aria-describedby"?: string;
831
- }
832
-
833
- /**
834
- * Radio Component
835
- *
836
- * A fully accessible, theme-aware radio button component with variant support,
837
- * keyboard navigation, and comprehensive state management.
838
- * Uses button role="radio" pattern for full accessibility.
839
- * Can be used standalone or within RadioGroup for group behavior.
840
- *
841
- * @example
842
- * ```tsx
843
- * <RadioGroup value={value} onValueChange={setValue}>
844
- * <Radio value="option1" aria-label="Option 1" />
845
- * <Radio value="option2" aria-label="Option 2" />
846
- * </RadioGroup>
847
- * ```
848
- */
849
-
850
- /**
851
- * Radio component
852
- */
853
- declare const Radio: React$1.ForwardRefExoticComponent<RadioProps & React$1.RefAttributes<HTMLButtonElement>>;
1632
+ };
854
1633
 
855
1634
  /**
856
1635
  * RadioGroup Component Props
@@ -899,82 +1678,98 @@ interface RadioGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
899
1678
  */
900
1679
  declare const RadioGroup: React$1.ForwardRefExoticComponent<RadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
901
1680
 
1681
+ /**
1682
+ * Textarea size type
1683
+ * Limited to sm, md, lg sizes for strict primitive model
1684
+ */
1685
+ type TextareaSize = "sm" | "md" | "lg";
902
1686
  /**
903
1687
  * Textarea Variants
904
1688
  *
905
- * CVA-based variant system for Textarea component.
906
- * Supports variants (primary, secondary, outline, ghost, destructive),
907
- * sizes (xs, sm, md, lg, xl), and states (default, disabled, error, success).
1689
+ * @enforcement Token-driven CVA system using tokenCVA
1690
+ * @rule ALL visual properties MUST use token-based utilities
1691
+ * @rule NO raw Tailwind color/spacing classes allowed
1692
+ *
1693
+ * Strict low-level primitive variant system for Textarea component.
1694
+ * Supports only size variants (sm, md, lg) and default styling.
908
1695
  * All styling uses token-based values with CSS variable references.
1696
+ *
1697
+ * State styling (invalid, disabled) is handled via aria-invalid and disabled attributes,
1698
+ * not as CVA variant axis (per STATE_AUTHORITY).
909
1699
  */
910
1700
  declare const textareaVariants: (props?: ({
911
- variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
912
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
913
- state?: "default" | "disabled" | "success" | "error" | null | undefined;
914
- fullWidth?: boolean | null | undefined;
1701
+ size?: "sm" | "md" | "lg" | null | undefined;
915
1702
  } & class_variance_authority_types.ClassProp) | undefined) => string;
916
1703
 
917
1704
  /**
918
1705
  * Textarea Component Props
919
1706
  *
920
- * Extends native textarea HTML attributes with variant props, character counter, and accessibility props.
1707
+ * Strict low-level multiline form control primitive.
1708
+ * Thin wrapper around native <textarea> element with minimal API.
1709
+ *
1710
+ * Note: className and style props are excluded per Foundation Enforcement rule.
1711
+ * State styling (invalid, disabled) is handled via native HTML attributes (disabled, aria-invalid),
1712
+ * not as separate variant axis (per STATE_AUTHORITY).
921
1713
  */
922
- interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "className" | "style">, VariantProps<typeof textareaVariants> {
923
- /**
924
- * Textarea variant style
925
- * @default "outline"
926
- */
927
- variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive";
1714
+ interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "rows" | "className" | "style"> {
928
1715
  /**
929
1716
  * Textarea size
1717
+ * Limited to sm, md, lg sizes for strict primitive model
930
1718
  * @default "md"
931
1719
  */
932
- size?: "xs" | "sm" | "md" | "lg" | "xl";
933
- /**
934
- * Textarea state
935
- * @default "default"
936
- */
937
- state?: "default" | "disabled" | "error" | "success";
938
- /**
939
- * Whether textarea should take full width
940
- * @default true
941
- */
942
- fullWidth?: boolean;
943
- /**
944
- * Maximum character length (for character counter)
945
- */
946
- maxLength?: number;
1720
+ size?: TextareaSize;
947
1721
  /**
948
- * Show character counter
949
- * Only displays when both showCharacterCount and maxLength are provided
1722
+ * Invalid state indicator
1723
+ * Maps to aria-invalid attribute for accessibility
950
1724
  * @default false
951
1725
  */
952
- showCharacterCount?: boolean;
1726
+ invalid?: boolean;
953
1727
  }
954
1728
 
955
1729
  /**
956
1730
  * Textarea Component
957
1731
  *
958
- * A fully accessible, theme-aware textarea component with variant support,
959
- * character counter, and comprehensive state management.
1732
+ * Strict low-level multiline form control primitive.
1733
+ * Thin wrapper around native <textarea> element aligned with Input canonical model.
1734
+ *
1735
+ * State handling follows STATE_AUTHORITY pattern:
1736
+ * - Invalid state: Use invalid={true} or aria-invalid={true} (native HTML attribute)
1737
+ * - Disabled state: Use disabled={true} (native HTML attribute)
1738
+ * - No separate "state" prop (states are derived from HTML attributes)
960
1739
  *
961
1740
  * @example
962
1741
  * ```tsx
963
1742
  * <Textarea
964
- * variant="outline"
965
1743
  * size="md"
966
1744
  * placeholder="Enter text..."
967
- * showCharacterCount
968
- * maxLength={200}
969
1745
  * />
1746
+ *
1747
+ * // Invalid state
1748
+ * <Textarea
1749
+ * invalid={true}
1750
+ * aria-describedby="error-message"
1751
+ * />
1752
+ *
1753
+ * // Disabled state
1754
+ * <Textarea disabled />
970
1755
  * ```
971
1756
  */
972
1757
  declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
973
1758
 
1759
+ /**
1760
+ * Skeleton variant type
1761
+ * Explicit union type for variant prop
1762
+ */
1763
+ type SkeletonVariant = "text" | "inline" | "block" | "card" | "circle";
974
1764
  declare const skeletonVariants: (props?: ({
975
1765
  variant?: "block" | "card" | "text" | "inline" | "circle" | null | undefined;
976
1766
  } & class_variance_authority_types.ClassProp) | undefined) => string;
977
- interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof skeletonVariants> {
1767
+ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement> {
1768
+ /**
1769
+ * Skeleton variant style
1770
+ * @default "text"
1771
+ */
1772
+ variant?: SkeletonVariant;
978
1773
  /**
979
1774
  * Whether to hide from screen readers
980
1775
  * @default true
@@ -991,7 +1786,182 @@ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantP
991
1786
  * <Skeleton variant="card" />
992
1787
  * ```
993
1788
  */
994
- declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
1789
+ declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
1790
+
1791
+ /**
1792
+ * Progress size variants
1793
+ * Subset of GlobalSize scale (sm, md, lg)
1794
+ */
1795
+ type ProgressSize = "sm" | "md" | "lg";
1796
+ /**
1797
+ * Progress component props
1798
+ */
1799
+ interface ProgressProps {
1800
+ /**
1801
+ * Progress value (0-max)
1802
+ */
1803
+ value: number;
1804
+ /**
1805
+ * Maximum progress value
1806
+ * @default 100
1807
+ */
1808
+ max?: number;
1809
+ /**
1810
+ * Progress bar size
1811
+ * @default "md"
1812
+ */
1813
+ size?: ProgressSize;
1814
+ /**
1815
+ * Additional CSS classes (Extension layer allows className)
1816
+ */
1817
+ className?: string;
1818
+ }
1819
+ /**
1820
+ * Progress Component
1821
+ *
1822
+ * Displays visual feedback for operation progress from 0% to 100%.
1823
+ * Shows a filled bar proportional to the completion percentage.
1824
+ *
1825
+ * @example
1826
+ * ```tsx
1827
+ * // Default progress bar (md size)
1828
+ * <Progress value={45} />
1829
+ *
1830
+ * // Small progress bar
1831
+ * <Progress value={75} size="sm" />
1832
+ *
1833
+ * // Large progress bar
1834
+ * <Progress value={30} size="lg" />
1835
+ *
1836
+ * // With max value
1837
+ * <Progress value={3} max={10} /> // 30%
1838
+ * ```
1839
+ */
1840
+ declare const Progress: React$1.ForwardRefExoticComponent<ProgressProps & React$1.RefAttributes<HTMLDivElement>>;
1841
+
1842
+ /**
1843
+ * Separator Color Variant Types
1844
+ *
1845
+ * Explicit union types for Separator component color variants.
1846
+ */
1847
+ type SeparatorColor = "border" | "muted" | "primary" | "secondary" | "accent";
1848
+ /**
1849
+ * Separator Thickness Types
1850
+ *
1851
+ * Explicit union types for Separator component thickness variants.
1852
+ */
1853
+ type SeparatorThickness = "1" | "2";
1854
+ /**
1855
+ * Separator variants using tokenCVA
1856
+ *
1857
+ * Token-based styling for:
1858
+ * - Orientation (horizontal/vertical)
1859
+ * - Color variants
1860
+ * - Thickness variants
1861
+ */
1862
+ declare const separatorVariants: (props?: ({
1863
+ orientation?: "horizontal" | "vertical" | null | undefined;
1864
+ color?: "primary" | "secondary" | "muted" | "accent" | "border" | null | undefined;
1865
+ thickness?: "1" | "2" | null | undefined;
1866
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1867
+ interface SeparatorProps extends React$1.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {
1868
+ /**
1869
+ * Orientation of the separator
1870
+ * @default "horizontal"
1871
+ */
1872
+ orientation?: "horizontal" | "vertical";
1873
+ /**
1874
+ * Whether the separator is decorative (no semantic meaning)
1875
+ * @default true
1876
+ */
1877
+ decorative?: boolean;
1878
+ /**
1879
+ * Color variant
1880
+ * @default "border"
1881
+ */
1882
+ color?: SeparatorColor;
1883
+ /**
1884
+ * Thickness variant
1885
+ * @default "1"
1886
+ */
1887
+ thickness?: SeparatorThickness;
1888
+ }
1889
+ /**
1890
+ * Separator component
1891
+ *
1892
+ * COMPLIANCE NOTES:
1893
+ * - ✅ Uses @radix-ui/react-separator for behavior
1894
+ * - ✅ Token-based styling (tokenCVA, SEPARATOR_TOKENS)
1895
+ * - ✅ Supports horizontal and vertical orientations
1896
+ * - ✅ Semantic (role="separator") vs decorative (role="none")
1897
+ * - ✅ ARIA attributes handled by Radix
1898
+ * - ✅ Follows Extension Authority Contract
1899
+ * - ✅ Explicit union types (SeparatorColor, SeparatorThickness)
1900
+ * - ✅ Type constraints (satisfies Record<Type, string>)
1901
+ */
1902
+ declare const Separator: React$1.ForwardRefExoticComponent<SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
1903
+
1904
+ /**
1905
+ * AspectRatio Component
1906
+ *
1907
+ * Container that maintains a fixed aspect ratio for its content.
1908
+ * Useful for responsive images, videos, and cards.
1909
+ *
1910
+ * @example
1911
+ * ```tsx
1912
+ * // 16:9 aspect ratio (video)
1913
+ * <AspectRatio ratio={16 / 9}>
1914
+ * <img src="..." alt="..." />
1915
+ * </AspectRatio>
1916
+ *
1917
+ * // Square aspect ratio (1:1)
1918
+ * <AspectRatio ratio={1}>
1919
+ * <img src="..." alt="..." />
1920
+ * </AspectRatio>
1921
+ *
1922
+ * // Using preset
1923
+ * <AspectRatio preset="video">
1924
+ * <iframe src="..." />
1925
+ * </AspectRatio>
1926
+ * ```
1927
+ */
1928
+
1929
+ /**
1930
+ * Common aspect ratio presets
1931
+ */
1932
+ declare const ASPECT_RATIO_PRESETS: {
1933
+ readonly square: number;
1934
+ readonly video: number;
1935
+ readonly cinema: number;
1936
+ readonly portrait: number;
1937
+ readonly photo: number;
1938
+ readonly golden: number;
1939
+ };
1940
+ type AspectRatioPreset = keyof typeof ASPECT_RATIO_PRESETS;
1941
+ interface AspectRatioProps extends React$1.ComponentPropsWithoutRef<typeof AspectRatioPrimitive.Root> {
1942
+ /**
1943
+ * Aspect ratio as a number (width / height)
1944
+ * @example 16 / 9 for 16:9 ratio
1945
+ * @example 1 for square (1:1)
1946
+ */
1947
+ ratio?: number;
1948
+ /**
1949
+ * Preset aspect ratio
1950
+ * Overrides `ratio` prop if provided
1951
+ */
1952
+ preset?: AspectRatioPreset;
1953
+ }
1954
+ /**
1955
+ * AspectRatio component
1956
+ *
1957
+ * COMPLIANCE NOTES:
1958
+ * - ✅ Uses @radix-ui/react-aspect-ratio for behavior
1959
+ * - ✅ Pure layout utility (no visual tokens needed)
1960
+ * - ✅ Supports custom ratios and common presets
1961
+ * - ✅ Responsive by default
1962
+ * - ✅ Follows Extension Authority Contract
1963
+ */
1964
+ declare const AspectRatio: React$1.ForwardRefExoticComponent<AspectRatioProps & React$1.RefAttributes<HTMLDivElement>>;
995
1965
 
996
1966
  /**
997
1967
  * Layout Primitives Shared Types
@@ -1214,14 +2184,9 @@ interface StackProps extends Omit<BoxProps, "display" | "flexDirection" | "gap">
1214
2184
  direction?: "vertical" | "horizontal";
1215
2185
  /**
1216
2186
  * Spacing between stack items - token-based (xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl)
1217
- * This is the canonical prop for spacing. Use `spacing` instead of `gap` for clarity.
2187
+ * This is the canonical prop for spacing.
1218
2188
  */
1219
2189
  spacing?: ResponsiveSpacing;
1220
- /**
1221
- * Gap between stack items - token-based (xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl)
1222
- * @deprecated Use `spacing` prop instead. This prop is kept for backward compatibility.
1223
- */
1224
- gap?: ResponsiveSpacing;
1225
2190
  /**
1226
2191
  * Align items
1227
2192
  */
@@ -1378,6 +2343,27 @@ declare const Flex: React$1.ForwardRefExoticComponent<FlexProps & React$1.RefAtt
1378
2343
  interface GridProps extends Omit<BoxProps, "display" | "align" | "justify"> {
1379
2344
  /**
1380
2345
  * Number of columns (1-6, 12, or none)
2346
+ *
2347
+ * Can be a simple value, a responsive object, or combined with shorthand props (sm, md, lg, xl, 2xl).
2348
+ * Merging behavior:
2349
+ * - If `cols` is a simple value and shorthand props are provided, `cols` becomes the base value
2350
+ * - If `cols` is undefined and shorthand props are provided, shorthand props are used directly
2351
+ * - If `cols` is a responsive object and shorthand props are provided, they are merged together
2352
+ *
2353
+ * @example
2354
+ * ```tsx
2355
+ * // Simple value
2356
+ * <Grid cols={3} />
2357
+ *
2358
+ * // Responsive object
2359
+ * <Grid cols={{ base: 1, md: 2, lg: 3 }} />
2360
+ *
2361
+ * // Shorthand props (cols becomes base)
2362
+ * <Grid cols={1} md={2} lg={3} />
2363
+ *
2364
+ * // Shorthand props only (no cols)
2365
+ * <Grid sm={1} md={2} lg={3} />
2366
+ * ```
1381
2367
  */
1382
2368
  cols?: ResponsiveColumns;
1383
2369
  /**
@@ -1451,14 +2437,19 @@ interface RowProps extends Omit<StackProps, "direction"> {
1451
2437
  */
1452
2438
  declare const Row: React$1.ForwardRefExoticComponent<RowProps & React$1.RefAttributes<HTMLDivElement>>;
1453
2439
 
2440
+ /**
2441
+ * Surface variant type (canonical SurfaceVariant dictionary)
2442
+ * @see docs/architecture/VARIANTS_SIZE_CANON.md for canonical variant dictionary
2443
+ */
2444
+ type SurfaceVariantType = "default" | "elevated" | "outlined" | "filled" | "subtle";
1454
2445
  declare const surfaceVariants: (props?: ({
1455
- variant?: "flat" | "raised" | "sunken" | "outline" | "subtle" | null | undefined;
2446
+ variant?: "default" | "subtle" | "elevated" | "outlined" | "filled" | null | undefined;
1456
2447
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1457
- interface SurfaceProps extends Omit<BoxProps, "bg" | "shadow" | "radius" | "p">, VariantProps<typeof surfaceVariants> {
2448
+ interface SurfaceProps extends Omit<BoxProps, "bg" | "shadow" | "radius" | "p"> {
1458
2449
  /**
1459
- * Surface variant
2450
+ * Surface variant (canonical SurfaceVariant dictionary)
1460
2451
  */
1461
- variant?: "flat" | "raised" | "sunken" | "outline" | "subtle";
2452
+ variant?: SurfaceVariantType;
1462
2453
  /**
1463
2454
  * Padding - token-based (sm, md, lg, xl)
1464
2455
  * Overrides default variant padding
@@ -1557,7 +2548,7 @@ declare const CardFooter: React$1.ForwardRefExoticComponent<CardFooterProps & Re
1557
2548
  * All styling uses tokens exclusively (no raw CSS values).
1558
2549
  */
1559
2550
 
1560
- interface SectionProps extends Omit<StackProps, "py" | "gap"> {
2551
+ interface SectionProps extends Omit<StackProps, "py" | "spacing"> {
1561
2552
  /**
1562
2553
  * Vertical padding - token-based
1563
2554
  * Accepts spacing tokens (xs, sm, md, lg, xl, 2xl, etc.) or responsive object
@@ -1566,12 +2557,12 @@ interface SectionProps extends Omit<StackProps, "py" | "gap"> {
1566
2557
  */
1567
2558
  padding?: ResponsiveSpacing;
1568
2559
  /**
1569
- * Gap spacing for content blocks - token-based
2560
+ * Spacing for content blocks - token-based
1570
2561
  * Accepts spacing tokens (xs, sm, md, lg, xl, 2xl, etc.) or responsive object
1571
- * @example gap="md"
1572
- * @example gap={{ base: "sm", lg: "xl" }}
2562
+ * @example spacing="md"
2563
+ * @example spacing={{ base: "sm", lg: "xl" }}
1573
2564
  */
1574
- gap?: ResponsiveSpacing;
2565
+ spacing?: ResponsiveSpacing;
1575
2566
  /**
1576
2567
  * Render as different HTML element
1577
2568
  */
@@ -1702,31 +2693,51 @@ declare const Dialog: React$1.FC<DialogProps> & {
1702
2693
  Footer: React$1.ForwardRefExoticComponent<DialogFooterProps & React$1.RefAttributes<HTMLDivElement>>;
1703
2694
  };
1704
2695
 
1705
- declare const toastVariants: (props?: ({
1706
- variant?: "default" | "success" | "warning" | "danger" | "info" | null | undefined;
1707
- } & class_variance_authority_types.ClassProp) | undefined) => string;
1708
- interface ToastActionData {
1709
- label: string;
1710
- onClick: () => void;
1711
- }
2696
+ /**
2697
+ * Toast variant type
2698
+ * Represents visual intent only (no behavior changes)
2699
+ */
2700
+ type ToastVariant = "default" | "success" | "warning" | "error";
2701
+ /**
2702
+ * Toast data type for imperative toast creation
2703
+ * Used by useGlobalToast and other toast management hooks
2704
+ */
1712
2705
  interface ToastData {
1713
- id: string;
2706
+ variant?: ToastVariant;
1714
2707
  title?: string;
1715
2708
  description?: string;
1716
- variant?: "default" | "success" | "info" | "warning" | "danger";
1717
- action?: ToastActionData;
1718
- /**
1719
- * Toast duration - token-based
1720
- * Uses motion duration tokens
1721
- * Passed to Radix Toast.Root duration prop
1722
- */
1723
2709
  duration?: ResponsiveDelay;
2710
+ action?: {
2711
+ label: string;
2712
+ onClick: () => void;
2713
+ };
1724
2714
  }
2715
+ /**
2716
+ * Toast options type for toast configuration
2717
+ */
2718
+ type ToastOptions = Partial<ToastData>;
2719
+ declare const toastVariants: (props?: ({
2720
+ variant?: "default" | "error" | "success" | "warning" | null | undefined;
2721
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1725
2722
  interface ToastRootProps extends Omit<React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Root>, "duration">, VariantProps<typeof toastVariants> {
1726
2723
  /**
1727
- * Toast data
2724
+ * Controlled open state
2725
+ * Must be provided externally - Toast does not own state
2726
+ */
2727
+ open: boolean;
2728
+ /**
2729
+ * Callback when open state changes
2730
+ * Must be provided externally - Toast does not own state
2731
+ */
2732
+ onOpenChange: (open: boolean) => void;
2733
+ /**
2734
+ * Visual variant (visual only, no behavior changes)
1728
2735
  */
1729
- toast: ToastData;
2736
+ variant?: ToastVariant;
2737
+ /**
2738
+ * Children (use ToastTitle, ToastDescription, ToastAction, ToastClose)
2739
+ */
2740
+ children: React$1.ReactNode;
1730
2741
  }
1731
2742
  /**
1732
2743
  * Toast Action component
@@ -1742,7 +2753,7 @@ declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitive
1742
2753
  * Rationale: Previous API used `Toast` as the main component name.
1743
2754
  * This alias allows existing code to continue working without changes.
1744
2755
  * Note: This is a simple alias - no legacy behavior is preserved.
1745
- * The component is fully Radix-based regardless of which name is used.
2756
+ * The component is fully stateless regardless of which name is used.
1746
2757
  *
1747
2758
  * - ToastProps: Alias for ToastRootProps
1748
2759
  * Rationale: Previous API used `ToastProps` as the type name.
@@ -1754,7 +2765,21 @@ declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitive
1754
2765
  * - These legacy exports may be removed in a future major version
1755
2766
  */
1756
2767
  type ToastProps = ToastRootProps;
1757
- declare const Toast: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.RefAttributes<HTMLLIElement>>;
2768
+ declare const Toast$1: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.RefAttributes<HTMLLIElement>>;
2769
+
2770
+ interface ToastProviderProps extends React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Provider> {
2771
+ /**
2772
+ * Children to render
2773
+ */
2774
+ children: React$1.ReactNode;
2775
+ }
2776
+ /**
2777
+ * ToastProvider component
2778
+ * Thin wrapper around Radix Toast.Provider with props passthrough.
2779
+ * Radix handles all state management, auto-dismiss, and queue management.
2780
+ * This component is stateless and does not own any state or business logic.
2781
+ */
2782
+ declare function ToastProvider({ children, ...props }: ToastProviderProps): react_jsx_runtime.JSX.Element;
1758
2783
 
1759
2784
  /**
1760
2785
  * ToastViewport Component
@@ -1765,7 +2790,7 @@ declare const Toast: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.
1765
2790
  * Radix Toast.Viewport handles portal rendering internally.
1766
2791
  * Tenerife UI provides visual styling and positioning through tokens only.
1767
2792
  *
1768
- * This component is locked as a foundation component per TUI_ARCHITECTURE_LOCK.md.
2793
+ * This component is locked as a foundation component per UI_ARCHITECTURE_LOCK.md.
1769
2794
  * DO NOT reimplement portal logic - Radix handles this internally.
1770
2795
  */
1771
2796
 
@@ -1783,99 +2808,69 @@ interface ToastViewportProps extends React$1.ComponentPropsWithoutRef<typeof Toa
1783
2808
  */
1784
2809
  declare const ToastViewport: React$1.ForwardRefExoticComponent<ToastViewportProps & React$1.RefAttributes<HTMLOListElement>>;
1785
2810
 
1786
- interface ToastOptions {
2811
+ type ToastType = "success" | "error" | "warning" | "info";
2812
+ interface Toast {
2813
+ id: string;
2814
+ type: ToastType;
1787
2815
  title?: string;
1788
2816
  description?: string;
1789
- variant?: "default" | "success" | "info" | "warning" | "danger";
1790
- action?: ToastActionData;
1791
2817
  /**
1792
2818
  * Toast duration - token-based
1793
2819
  * Uses motion duration tokens
1794
- * Passed to Radix Toast.Root duration prop (Radix handles auto-dismiss)
1795
2820
  */
1796
2821
  duration?: ResponsiveDelay;
1797
- }
1798
- interface ToastContextType {
1799
- toast: (options: ToastOptions) => string;
1800
- dismiss: (id: string) => void;
2822
+ action?: {
2823
+ label: string;
2824
+ onClick: () => void;
2825
+ };
2826
+ }
2827
+ interface UseToastReturn {
2828
+ toasts: Toast[];
2829
+ toast: (toast: Omit<Toast, "id">) => string;
2830
+ dismiss: (toastId: string) => void;
1801
2831
  dismissAll: () => void;
1802
2832
  }
1803
- interface ToastProviderProps {
1804
- /**
1805
- * Children to render
1806
- */
1807
- children: React$1.ReactNode;
1808
- /**
1809
- * Position of toast viewport
1810
- */
1811
- position?: ToastPosition;
1812
- /**
1813
- * Swipe direction for toast dismissal
1814
- * Radix handles swipe gestures internally
1815
- */
1816
- swipeDirection?: "up" | "down" | "left" | "right";
1817
- /**
1818
- * Default duration for toasts in milliseconds
1819
- * Radix handles auto-dismiss based on this value
1820
- *
1821
- * NOTE: This is a behavioral prop for Radix Toast.Provider API (requires number),
1822
- * not a visual prop. The eslint rule is disabled for this specific case.
1823
- */
1824
- duration?: number;
1825
- }
1826
- /**
1827
- * ToastProvider component
1828
- * Wrapper around Radix Toast.Provider with convenience toast() function.
1829
- * Radix handles all state management, auto-dismiss, and queue management.
1830
- */
1831
- declare function ToastProvider({ children, position, swipeDirection, duration, }: ToastProviderProps): react_jsx_runtime.JSX.Element;
1832
- /**
1833
- * Hook to use toast context
1834
- */
1835
- declare function useToast(): ToastContextType;
2833
+ declare function useLocalToast(): UseToastReturn;
1836
2834
 
1837
2835
  declare function Toaster(): react_jsx_runtime.JSX.Element;
1838
2836
 
1839
2837
  /**
1840
2838
  * ============================================================================
1841
- * 🔒 FOUNDATION LOCK - ContextMenu Component
2839
+ * FOUNDATION · LEGACY · UNLOCKED_FOR_MIGRATION - ContextMenu Component
1842
2840
  * ============================================================================
1843
2841
  *
1844
- * This component is LOCKED as part of the UI Foundation Layer.
1845
- *
1846
- * **ARCHITECTURE LOCK DOCUMENTATION:**
1847
- * See: docs/architecture/TUI_ARCHITECTURE_LOCK.md
1848
- *
1849
- * This component must not be modified except for critical bug fixes.
1850
- * All architectural decisions are final. Museum-grade quality achieved.
1851
- *
1852
- * LOCKED STATUS:
1853
- * - Component: ContextMenu (Radix ContextMenu wrapper)
1854
- * - Category: Menus (Foundation Layer)
1855
- * - Lock Date: 2025-12-12
1856
- * - Status: LOCKED (FOUNDATION_LOCKED)
1857
- *
1858
- * ALLOWED CHANGES (Minimal, approval required):
1859
- * - Critical bug fixes only (with explicit approval)
1860
- * - Typing improvements (TypeScript only, no runtime changes)
1861
- * - Token wiring improvements (connecting existing tokens, no new tokens)
1862
- * - Stories/tests fixes (test updates only, no component changes)
1863
- * - Documentation updates (comments, docs only)
1864
- * - Code comments explaining intentional design decisions
1865
- *
1866
- * FORBIDDEN CHANGES (Strictly prohibited):
1867
- * - ❌ New foundation components or subcomponents
1868
- * - Duplicate component implementations
1869
- * - Custom behavior that Radix ContextMenu should handle
1870
- * - String/number visual props (must use tokens only)
1871
- * - Re-implementing focus/keyboard/aria/portal logic
1872
- * - ❌ Breaking API changes
1873
- * - ❌ Behavioral rewrites or custom logic additions
1874
- * - Token system modifications (additions/removals)
1875
- * - ❌ Style modifications beyond token wiring
1876
- * - ❌ New props that change component behavior
1877
- *
1878
- * **If you believe changes are necessary, review TUI_ARCHITECTURE_LOCK.md first.**
2842
+ * **STATUS:** LEGACY UNLOCKED (Pending Canonical Migration)
2843
+ * **UNLOCK DATE:** 2025-12-19
2844
+ * **TASK:** TUNG_FOUNDATION_LEGACY_UNLOCK_01
2845
+ *
2846
+ * **UNLOCK RATIONALE:**
2847
+ * ContextMenu was declared as LOCKED but was implemented using legacy patterns
2848
+ * and never passed the canonical Foundation Step Pipeline (0–13). The current
2849
+ * lock is declarative only and blocks required migration.
2850
+ *
2851
+ * **MIGRATION PATH:**
2852
+ * ContextMenu will undergo canonical Foundation lock process (Steps 0–13) to
2853
+ * ensure full compliance with all Authority Contracts and canonical lifecycle
2854
+ * requirements, similar to Button/Link standards.
2855
+ *
2856
+ * **CONSTRAINTS DURING UNLOCK:**
2857
+ * - No public API expansion
2858
+ * - No new variants or sizes
2859
+ * - No behavior changes outside canonicalization
2860
+ * - No bypass of Authority Contracts
2861
+ * - Refactor strictly via Foundation Step Pipeline
2862
+ * - Canonical CVA, typing, and interaction refactor allowed
2863
+ * - ✅ Authority Contract alignment allowed
2864
+ *
2865
+ * **EXIT CRITERIA:**
2866
+ * - Component completes Steps 0–13
2867
+ * - Foundation lock report exists
2868
+ * - Public Type Surface is locked
2869
+ * - Component re-marked as FOUNDATION · LOCKED
2870
+ *
2871
+ * **REFERENCE:**
2872
+ * - docs/architecture/FOUNDATION_LOCK.md (Legacy Foundation Components section)
2873
+ * - docs/workflows/foundation/COMPONENT_REFACTORING_PIPELINE.md
1879
2874
  *
1880
2875
  * ============================================================================
1881
2876
  *
@@ -2119,6 +3114,303 @@ declare const ContextMenu: {
2119
3114
  SubContent: React$1.ForwardRefExoticComponent<ContextMenuSubContentProps & React$1.RefAttributes<HTMLDivElement>>;
2120
3115
  };
2121
3116
 
3117
+ /**
3118
+ * Spinner Component
3119
+ *
3120
+ * Animated loading indicator for visual feedback during async operations.
3121
+ * Provides multiple visual variants (circle/dots/bounce/linear/bars/pulse/wave/orbit/bars-horizontal/ripple), size variants (xs/sm/md/lg/xl/2xl/3xl),
3122
+ * tone variants (primary/muted/subtle), and optional text label with configurable positioning.
3123
+ *
3124
+ * @semantic_role EXTENSION_VISUAL_FEEDBACK
3125
+ *
3126
+ * @semantic_definition
3127
+ * Spinner is a visual feedback component that displays animated loading indicators in various styles.
3128
+ * It provides visual feedback during async operations (data loading, form submission, etc.).
3129
+ * Spinner supports multiple visual variants (circle, dots, bounce, linear, bars, pulse, wave, orbit, bars-horizontal, ripple), full size scale (xs-3xl),
3130
+ * and tone variants for different visual contexts. Optional text label can be displayed alongside spinner
3131
+ * with configurable positioning.
3132
+ *
3133
+ * **What Spinner IS:**
3134
+ * - Visual feedback component for loading states
3135
+ * - Multiple visual style variants (circle, dots, bounce, linear, bars, pulse, wave, orbit, bars-horizontal, ripple)
3136
+ * - Non-interactive display component
3137
+ * - Supports inline, page, data, and overlay loading scenarios
3138
+ *
3139
+ * **What Spinner IS NOT:**
3140
+ * - NOT an interactive component (no hover/active/focus states)
3141
+ * - NOT a progress indicator (use Progress component for progress bars)
3142
+ * - NOT a skeleton loader (use Skeleton component for content placeholders)
3143
+ * - NOT a Foundation component (Extension layer component)
3144
+ *
3145
+ * @example
3146
+ * ```tsx
3147
+ * // Basic spinner (circle variant, default)
3148
+ * <Spinner />
3149
+ *
3150
+ * // Dots variant
3151
+ * <Spinner variant="dots" size="md" tone="muted" />
3152
+ *
3153
+ * // Bounce variant
3154
+ * <Spinner variant="bounce" size="md" />
3155
+ *
3156
+ * // Linear variant
3157
+ * <Spinner variant="linear" size="sm" />
3158
+ *
3159
+ * // Spinner with label
3160
+ * <Spinner label="Loading..." labelPosition="right" />
3161
+ *
3162
+ * // Spinner with accessibility label
3163
+ * <Spinner aria-label="Loading data" />
3164
+ * ```
3165
+ */
3166
+
3167
+ /**
3168
+ * Spinner size type
3169
+ * Full GlobalSize scale: xs, sm, md, lg, xl, 2xl, 3xl
3170
+ */
3171
+ type SpinnerSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
3172
+ /**
3173
+ * Spinner tone type
3174
+ * Color tone variants: primary, muted, subtle
3175
+ */
3176
+ type SpinnerTone = "primary" | "muted" | "subtle";
3177
+ /**
3178
+ * Spinner variant type
3179
+ * Visual style variants: circle, dots, bounce, linear, bars, pulse, wave, orbit, bars-horizontal, ripple
3180
+ */
3181
+ type SpinnerVariant = "circle" | "dots" | "bounce" | "linear" | "bars" | "pulse" | "wave" | "orbit" | "bars-horizontal" | "ripple";
3182
+ /**
3183
+ * Spinner label position type
3184
+ * Label position relative to spinner: top, right, bottom, left
3185
+ */
3186
+ type SpinnerLabelPosition = "top" | "right" | "bottom" | "left";
3187
+ /**
3188
+ * Spinner easing type
3189
+ * Animation timing function: linear, ease-in, ease-out, ease-in-out
3190
+ */
3191
+ type SpinnerEasing = "linear" | "ease-in" | "ease-out" | "ease-in-out";
3192
+ /**
3193
+ * Spinner component props
3194
+ */
3195
+ interface SpinnerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "className" | "style"> {
3196
+ /**
3197
+ * Visual style variant (circle/dots/bounce/linear/bars/pulse/wave/orbit/bars-horizontal/ripple)
3198
+ * @default "circle"
3199
+ */
3200
+ variant?: SpinnerVariant;
3201
+ /**
3202
+ * Size of spinner (xs/sm/md/lg/xl/2xl/3xl)
3203
+ * @default "md"
3204
+ */
3205
+ size?: SpinnerSize;
3206
+ /**
3207
+ * Color tone (primary/muted/subtle)
3208
+ * @default "primary"
3209
+ */
3210
+ tone?: SpinnerTone;
3211
+ /**
3212
+ * Animation easing (linear/ease-in/ease-out/ease-in-out)
3213
+ * Controls how animation speed changes over time
3214
+ * @default "linear"
3215
+ */
3216
+ easing?: SpinnerEasing;
3217
+ /**
3218
+ * Optional text label displayed alongside spinner
3219
+ */
3220
+ label?: string;
3221
+ /**
3222
+ * Label position relative to spinner
3223
+ * @default "bottom"
3224
+ */
3225
+ labelPosition?: SpinnerLabelPosition;
3226
+ /**
3227
+ * Accessibility label (required if no visual label)
3228
+ * Provides accessible name for screen readers
3229
+ */
3230
+ "aria-label"?: string;
3231
+ }
3232
+ /**
3233
+ * Spinner Component
3234
+ *
3235
+ * Animated loading indicator for visual feedback during async operations.
3236
+ * Supports multiple visual variants (circle/dots/bounce/linear/bars/pulse/wave/orbit/bars-horizontal/ripple), full size scale (xs-3xl),
3237
+ * tone variants (primary/muted/subtle), and optional text label.
3238
+ *
3239
+ * @example
3240
+ * ```tsx
3241
+ * // Basic spinner (circle variant, default)
3242
+ * <Spinner />
3243
+ *
3244
+ * // Dots variant with size and tone
3245
+ * <Spinner variant="dots" size="lg" tone="muted" />
3246
+ *
3247
+ * // Dots variant
3248
+ * <Spinner variant="dots" size="md" />
3249
+ *
3250
+ * // Spinner with label on the right
3251
+ * <Spinner label="Loading..." labelPosition="right" />
3252
+ *
3253
+ * // Spinner with accessibility label
3254
+ * <Spinner aria-label="Loading data" />
3255
+ * ```
3256
+ */
3257
+ declare const Spinner: React$1.ForwardRefExoticComponent<SpinnerProps & React$1.RefAttributes<HTMLDivElement>>;
3258
+
3259
+ /**
3260
+ * Accordion Component
3261
+ *
3262
+ * Vertically stacked set of interactive headings that reveal/hide associated content panels.
3263
+ * Provides accessible disclosure pattern with keyboard navigation and ARIA support.
3264
+ *
3265
+ * @semantic_role EXTENSION_COMPOSITE_DISCLOSURE
3266
+ *
3267
+ * @semantic_definition
3268
+ * Accordion is a composite disclosure component that allows users to toggle the visibility
3269
+ * of content sections. It supports single (only one item open) and multiple (multiple items
3270
+ * can be open) modes, semantic variants (primary/secondary/accent/neutral), and size variants
3271
+ * (sm/md/lg). All behavior (keyboard navigation, focus management, ARIA attributes) is delegated
3272
+ * to Radix Accordion primitives.
3273
+ *
3274
+ * **What Accordion IS:**
3275
+ * - Disclosure component for collapsible content sections
3276
+ * - Supports single and multiple open modes
3277
+ * - Provides keyboard navigation (Arrow Up/Down, Enter/Space)
3278
+ * - Accessible via ARIA attributes (role="region", aria-expanded, aria-labelledby)
3279
+ *
3280
+ * **What Accordion IS NOT:**
3281
+ * - NOT a Foundation component (Extension layer component)
3282
+ * - NOT a navigation component (use Tabs for navigation)
3283
+ * - NOT a menu component (use ContextMenu or DropdownMenu for menus)
3284
+ *
3285
+ * @example
3286
+ * ```tsx
3287
+ * // Single mode (default)
3288
+ * <Accordion.Root type="single" collapsible>
3289
+ * <Accordion.Item value="item-1">
3290
+ * <Accordion.Trigger variant="primary" size="md">
3291
+ * Section 1
3292
+ * </Accordion.Trigger>
3293
+ * <Accordion.Content>
3294
+ * Content for section 1
3295
+ * </Accordion.Content>
3296
+ * </Accordion.Item>
3297
+ * </Accordion.Root>
3298
+ *
3299
+ * // Multiple mode
3300
+ * <Accordion.Root type="multiple" defaultValue={["item-1", "item-2"]}>
3301
+ * <Accordion.Item value="item-1">
3302
+ * <Accordion.Trigger variant="secondary" size="lg">
3303
+ * Section 1
3304
+ * </Accordion.Trigger>
3305
+ * <Accordion.Content>
3306
+ * Content for section 1
3307
+ * </Accordion.Content>
3308
+ * </Accordion.Item>
3309
+ * </Accordion.Root>
3310
+ * ```
3311
+ */
3312
+
3313
+ /**
3314
+ * Accordion variant type
3315
+ * Semantic variants: primary, secondary, accent, neutral
3316
+ */
3317
+ type AccordionVariant = "primary" | "secondary" | "accent" | "neutral";
3318
+ /**
3319
+ * Accordion size type
3320
+ * Standard interactive component sizes: sm, md, lg
3321
+ */
3322
+ type AccordionSize = "sm" | "md" | "lg";
3323
+ type AccordionRootProps = React$1.ComponentPropsWithoutRef<typeof AccordionPrimitive.Accordion>;
3324
+ interface AccordionItemProps extends React$1.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> {
3325
+ /**
3326
+ * Unique value identifier for this item
3327
+ */
3328
+ value: string;
3329
+ }
3330
+ interface AccordionTriggerProps extends Omit<React$1.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>, "size" | "variant"> {
3331
+ /**
3332
+ * Semantic variant (primary/secondary/accent/neutral)
3333
+ * @default "primary"
3334
+ */
3335
+ variant?: AccordionVariant;
3336
+ /**
3337
+ * Size (sm/md/lg)
3338
+ * @default "md"
3339
+ */
3340
+ size?: AccordionSize;
3341
+ }
3342
+ interface AccordionContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>, "size" | "variant"> {
3343
+ /**
3344
+ * Size (sm/md/lg) - for padding and typography
3345
+ * @default "md"
3346
+ */
3347
+ size?: AccordionSize;
3348
+ /**
3349
+ * Semantic variant (primary/secondary/accent/neutral) - for background and text colors
3350
+ * @default "primary"
3351
+ */
3352
+ variant?: AccordionVariant;
3353
+ }
3354
+ declare const Accordion: {
3355
+ Root: React$1.FC<AccordionRootProps>;
3356
+ Item: React$1.ForwardRefExoticComponent<AccordionItemProps & React$1.RefAttributes<HTMLDivElement>>;
3357
+ Trigger: React$1.ForwardRefExoticComponent<AccordionTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
3358
+ Content: React$1.ForwardRefExoticComponent<AccordionContentProps & React$1.RefAttributes<HTMLDivElement>>;
3359
+ };
3360
+
3361
+ /**
3362
+ * Combobox size type - Explicit union (TYPING_STANDARD compliant)
3363
+ * Interactive Size Scale: sm | md | lg
3364
+ */
3365
+ type ComboboxSize = "sm" | "md" | "lg";
3366
+ /**
3367
+ * Option type
3368
+ */
3369
+ interface ComboboxOption {
3370
+ value: string;
3371
+ label?: string;
3372
+ disabled?: boolean;
3373
+ }
3374
+ interface ComboboxRootProps {
3375
+ value?: string | string[];
3376
+ defaultValue?: string | string[];
3377
+ onValueChange?: (value: string | string[]) => void;
3378
+ multiple?: boolean;
3379
+ open?: boolean;
3380
+ onOpenChange?: (open: boolean) => void;
3381
+ size?: ComboboxSize;
3382
+ children: React$1.ReactNode;
3383
+ }
3384
+ /**
3385
+ * ComboboxRoot - Context provider for Combobox state
3386
+ */
3387
+ declare function ComboboxRoot({ value: controlledValue, defaultValue, onValueChange, multiple, open: controlledOpen, onOpenChange, size, children, }: ComboboxRootProps): react_jsx_runtime.JSX.Element;
3388
+ interface ComboboxInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "value" | "onChange"> {
3389
+ placeholder?: string;
3390
+ disabled?: boolean;
3391
+ "aria-invalid"?: boolean;
3392
+ "aria-label"?: string;
3393
+ }
3394
+ /**
3395
+ * ComboboxInput - Input field for typing/filtering
3396
+ */
3397
+ declare const ComboboxInput: React$1.ForwardRefExoticComponent<ComboboxInputProps & React$1.RefAttributes<HTMLInputElement>>;
3398
+ interface ComboboxListProps {
3399
+ options: ComboboxOption[];
3400
+ filterable?: boolean;
3401
+ onSearch?: (query: string) => void;
3402
+ loading?: boolean;
3403
+ emptyMessage?: string;
3404
+ }
3405
+ /**
3406
+ * ComboboxList - Dropdown list of options
3407
+ */
3408
+ declare function ComboboxList({ options, filterable, onSearch, loading, emptyMessage, }: ComboboxListProps): react_jsx_runtime.JSX.Element;
3409
+ declare const Combobox: typeof ComboboxRoot & {
3410
+ Input: React$1.ForwardRefExoticComponent<ComboboxInputProps & React$1.RefAttributes<HTMLInputElement>>;
3411
+ List: typeof ComboboxList;
3412
+ };
3413
+
2122
3414
  /**
2123
3415
  * NotificationCenter.DismissAll Component
2124
3416
  *
@@ -2187,7 +3479,7 @@ interface NotificationData {
2187
3479
  description?: string;
2188
3480
  variant?: NotificationVariant;
2189
3481
  channel?: NotificationChannel;
2190
- action?: ToastActionData;
3482
+ action?: ToastData["action"];
2191
3483
  /**
2192
3484
  * Notification duration - token-based
2193
3485
  * Uses motion duration tokens
@@ -2205,7 +3497,7 @@ interface NotificationOptions {
2205
3497
  description?: string;
2206
3498
  variant?: NotificationVariant;
2207
3499
  channel?: NotificationChannel;
2208
- action?: ToastActionData;
3500
+ action?: ToastData["action"];
2209
3501
  /**
2210
3502
  * Notification duration - token-based
2211
3503
  * Uses motion duration tokens
@@ -2280,10 +3572,6 @@ interface NotificationCenterItemProps extends Omit<React$1.HTMLAttributes<HTMLLI
2280
3572
  * Callback when notification is clicked
2281
3573
  */
2282
3574
  onClick?: (id: string) => void;
2283
- /**
2284
- * Show expandable details
2285
- */
2286
- expandable?: boolean;
2287
3575
  }
2288
3576
  /**
2289
3577
  * NotificationCenter.Item component - individual notification item
@@ -2352,7 +3640,7 @@ interface NotificationCenterPanelProps {
2352
3640
  /**
2353
3641
  * Element to return focus to when panel closes
2354
3642
  */
2355
- returnFocusRef?: React$1.RefObject<HTMLElement>;
3643
+ returnFocusRef?: React$1.RefObject<HTMLElement | null>;
2356
3644
  }
2357
3645
  /**
2358
3646
  * NotificationCenter.Panel component - side drawer notification panel
@@ -2442,10 +3730,24 @@ declare const NotificationCenter: {
2442
3730
  DismissAll: React$1.ForwardRefExoticComponent<NotificationCenterDismissAllProps & React$1.RefAttributes<HTMLButtonElement>>;
2443
3731
  };
2444
3732
 
2445
- declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref">, "sideOffset" | "alignOffset"> & VariantProps<(props?: ({
2446
- variant?: "primary" | "secondary" | "accent" | "destructive" | "outline" | "link" | "ghost" | null | undefined;
2447
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
2448
- } & class_variance_authority_types.ClassProp) | undefined) => string> & {
3733
+ /**
3734
+ * Popover variant type - Explicit union (not derived from CVA)
3735
+ */
3736
+ type PopoverVariant = "primary" | "secondary" | "accent" | "outline" | "ghost" | "link" | "destructive";
3737
+ /**
3738
+ * Popover size type - Explicit union (not derived from CVA)
3739
+ * Restricted to sm, md, lg per overlay size restriction rule (VARIANTS_SIZE_CANON.md)
3740
+ */
3741
+ type PopoverSize = "sm" | "md" | "lg";
3742
+ /**
3743
+ * PopoverContent - Styled popover content component
3744
+ *
3745
+ * Use this component directly when composing custom popover implementations.
3746
+ * For simpler use cases, prefer PopoverWrapper.
3747
+ */
3748
+ declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref">, "sideOffset" | "alignOffset"> & {
3749
+ variant?: PopoverVariant;
3750
+ size?: PopoverSize;
2449
3751
  sideOffset?: ResponsiveSideOffset;
2450
3752
  alignOffset?: ResponsiveAlignOffset;
2451
3753
  } & React$1.RefAttributes<HTMLDivElement>>;
@@ -2458,7 +3760,15 @@ declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<Popove
2458
3760
  */
2459
3761
 
2460
3762
  interface HoverCardContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof PopoverContent>, "onMouseEnter" | "onMouseLeave"> {
3763
+ /**
3764
+ * Mouse enter handler
3765
+ * Called when mouse enters the content area (keeps hover card open)
3766
+ */
2461
3767
  onMouseEnter?: React$1.MouseEventHandler<HTMLDivElement>;
3768
+ /**
3769
+ * Mouse leave handler
3770
+ * Called when mouse leaves the content area (closes hover card)
3771
+ */
2462
3772
  onMouseLeave?: React$1.MouseEventHandler<HTMLDivElement>;
2463
3773
  }
2464
3774
  /**
@@ -2489,10 +3799,12 @@ interface HoverCardRootProps {
2489
3799
  onOpenChange?: (open: boolean) => void;
2490
3800
  /**
2491
3801
  * Default open state (uncontrolled mode)
3802
+ * @default false
2492
3803
  */
2493
3804
  defaultOpen?: boolean;
2494
3805
  /**
2495
3806
  * Whether the hover card is modal (blocks interaction with other elements)
3807
+ * @default false
2496
3808
  */
2497
3809
  modal?: boolean;
2498
3810
  /**
@@ -2517,6 +3829,8 @@ declare namespace HoverCardRoot {
2517
3829
  interface HoverCardTriggerProps extends React$1.HTMLAttributes<HTMLElement> {
2518
3830
  /**
2519
3831
  * Render as child element (composition pattern)
3832
+ * When true, the component will merge its props with its child element
3833
+ * @default false
2520
3834
  */
2521
3835
  asChild?: boolean;
2522
3836
  }
@@ -2526,35 +3840,57 @@ interface HoverCardTriggerProps extends React$1.HTMLAttributes<HTMLElement> {
2526
3840
  declare const HoverCardTrigger: React$1.ForwardRefExoticComponent<HoverCardTriggerProps & React$1.RefAttributes<HTMLElement>>;
2527
3841
 
2528
3842
  /**
2529
- * DataList Root Component
3843
+ * ============================================================================
3844
+ * 🔒 FOUNDATION · LOCKED - Tabs Component
3845
+ * ============================================================================
2530
3846
  *
2531
- * Mobile-first data list component for displaying key-value pairs.
2532
- * Uses Stack for vertical layout and DATA_LIST_TOKENS for spacing.
2533
- */
2534
-
2535
- interface DataListRootProps extends React$1.HTMLAttributes<HTMLDListElement> {
2536
- /**
2537
- * Label width for desktop layout
2538
- * @default "md"
2539
- */
2540
- labelWidth?: "sm" | "md" | "lg";
2541
- }
2542
- /**
2543
- * DataList Root component
3847
+ * **STATUS:** LOCKED (Pipeline 18A Complete, 2025-12-25)
3848
+ * **LOCK DATE:** 2025-12-25
3849
+ * **PIPELINE:** Pipeline 18A (Steps 0-12 complete)
3850
+ *
3851
+ * **LOCK RATIONALE:**
3852
+ * Tabs has completed canonical Foundation Step Pipeline (Steps 0-12) and
3853
+ * demonstrates full compliance with all Authority Contracts and canonical
3854
+ * lifecycle requirements.
3855
+ *
3856
+ * **REFERENCE:**
3857
+ * - docs/architecture/FOUNDATION_LOCK.md
3858
+ * - docs/workflows/foundation/COMPONENT_REFACTORING_PIPELINE.md
3859
+ * - docs/reports/audit/TABS_BASELINE_REPORT.md
3860
+ *
3861
+ * ============================================================================
3862
+ *
3863
+ * ARCHITECTURAL INVARIANTS (MANDATORY)
3864
+ * ============================================================================
3865
+ *
3866
+ * **RADIX OWNERSHIP INVARIANT:**
3867
+ * - All runtime behavior (keyboard navigation, focus management, ARIA attributes,
3868
+ * state management, disabled state handling) MUST be delegated to Radix primitives.
3869
+ * - Tabs component MUST NOT implement custom state management or interaction logic.
3870
+ * - Tabs component MUST NOT override or extend Radix behavior beyond visual styling.
3871
+ * - Violation: Adding useState, useEffect, useRef, or custom event handlers for behavior.
3872
+ *
3873
+ * **STYLING/TOKEN OWNERSHIP INVARIANT:**
3874
+ * - All visual styling MUST use TABS_TOKENS as the single source of truth.
3875
+ * - All spacing, typography, colors, radius, shadows MUST reference tokens, never raw values.
3876
+ * - Tabs component owns visual styling at COMPOSITION level, Foundation tokens own token definitions.
3877
+ * - Violation: Using raw CSS values, inline styles, or non-token Tailwind classes for styling.
3878
+ *
3879
+ * **VARIANT SYSTEM INVARIANT:**
3880
+ * - Variant system (underline, pill, segmented) is FINITE and EXPLICIT.
3881
+ * - Size system (sm, md, lg) is FINITE and EXPLICIT.
3882
+ * - Tone system (neutral, primary) is FINITE and EXPLICIT.
3883
+ * - Adding new variants, sizes, or tones REQUIRES Foundation Step Pipeline approval.
3884
+ * - Violation: Adding new variant/size/tone values without pipeline approval.
3885
+ *
3886
+ * **PUBLIC API INVARIANT:**
3887
+ * - Public API surface MUST remain minimal and expressive.
3888
+ * - Custom props (size, variant, tone, icon props) MUST be token-based unions.
3889
+ * - Radix props MUST be passed through without modification.
3890
+ * - Violation: Adding non-token props, changing prop types, or modifying Radix prop behavior.
3891
+ *
3892
+ * ============================================================================
2544
3893
  *
2545
- * @example
2546
- * ```tsx
2547
- * <DataList.Root>
2548
- * <DataList.Item>
2549
- * <DataList.Label>Name</DataList.Label>
2550
- * <DataList.Value>John Doe</DataList.Value>
2551
- * </DataList.Item>
2552
- * </DataList.Root>
2553
- * ```
2554
- */
2555
- declare const DataListRoot: React$1.ForwardRefExoticComponent<DataListRootProps & React$1.RefAttributes<HTMLDListElement>>;
2556
-
2557
- /**
2558
3894
  * Tabs Component
2559
3895
  *
2560
3896
  * Radix-based tabs component with token-driven styling.
@@ -2576,15 +3912,15 @@ interface TabsListProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Tab
2576
3912
  }
2577
3913
  interface TabsTriggerProps extends Omit<React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>, "size" | "variant" | "tone"> {
2578
3914
  /**
2579
- * Size variant - token-based (inherited from context if not provided)
3915
+ * Size variant - token-based (defaults to "md" if not provided)
2580
3916
  */
2581
3917
  size?: ResponsiveTabsSize;
2582
3918
  /**
2583
- * Visual variant - token-based (inherited from context if not provided)
3919
+ * Visual variant - token-based (defaults to "underline" if not provided)
2584
3920
  */
2585
3921
  variant?: TabsVariantToken;
2586
3922
  /**
2587
- * Tone - token-based (inherited from context if not provided)
3923
+ * Tone - token-based (defaults to "primary" if not provided)
2588
3924
  */
2589
3925
  tone?: TabsToneToken;
2590
3926
  /**
@@ -2613,6 +3949,25 @@ declare const Tabs: {
2613
3949
  Content: React$1.ForwardRefExoticComponent<TabsContentProps & React$1.RefAttributes<HTMLDivElement>>;
2614
3950
  };
2615
3951
 
3952
+ /**
3953
+ * Size options for SegmentedControl
3954
+ * @public
3955
+ */
3956
+ type SegmentedControlSize = "sm" | "md" | "lg";
3957
+ /**
3958
+ * Orientation options for SegmentedControl
3959
+ * @public
3960
+ */
3961
+ type SegmentedControlOrientation = "horizontal" | "vertical";
3962
+ /**
3963
+ * Size Mapping Table (per SIZE_MAPPING_SPEC.md)
3964
+ *
3965
+ * | Size | heightToken | paddingXToken | paddingYToken | textToken | radiusToken |
3966
+ * |------|-------------|---------------|---------------|-----------|-------------|
3967
+ * | sm | NAVIGATION_TOKENS.sizes.sm.height | NAVIGATION_TOKENS.sizes.sm.padding.horizontal | NAVIGATION_TOKENS.sizes.sm.padding.vertical | NAVIGATION_TOKENS.sizes.sm.fontSize | NAVIGATION_TOKENS.radius.default |
3968
+ * | md | NAVIGATION_TOKENS.sizes.md.height | NAVIGATION_TOKENS.sizes.md.padding.horizontal | NAVIGATION_TOKENS.sizes.md.padding.vertical | NAVIGATION_TOKENS.sizes.md.fontSize | NAVIGATION_TOKENS.radius.default |
3969
+ * | lg | NAVIGATION_TOKENS.sizes.lg.height | NAVIGATION_TOKENS.sizes.lg.padding.horizontal | NAVIGATION_TOKENS.sizes.lg.padding.vertical | NAVIGATION_TOKENS.sizes.lg.fontSize | NAVIGATION_TOKENS.radius.default |
3970
+ */
2616
3971
  declare const segmentedControlRootVariants: (props?: ({
2617
3972
  orientation?: "horizontal" | "vertical" | null | undefined;
2618
3973
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -2621,7 +3976,7 @@ declare const segmentedControlItemVariants: (props?: ({
2621
3976
  size?: "sm" | "md" | "lg" | null | undefined;
2622
3977
  state?: "default" | "selected" | null | undefined;
2623
3978
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2624
- interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "role">, VariantProps<typeof segmentedControlRootVariants> {
3979
+ interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "role"> {
2625
3980
  /**
2626
3981
  * Controlled value
2627
3982
  */
@@ -2638,8 +3993,18 @@ interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivE
2638
3993
  * Name for the radio group
2639
3994
  */
2640
3995
  name?: string;
3996
+ /**
3997
+ * Orientation of the segmented control
3998
+ * @default "horizontal"
3999
+ */
4000
+ orientation?: SegmentedControlOrientation;
4001
+ /**
4002
+ * Size of the segmented control
4003
+ * @default "md"
4004
+ */
4005
+ size?: SegmentedControlSize;
2641
4006
  }
2642
- interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "role">, VariantProps<typeof segmentedControlItemVariants> {
4007
+ interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "role"> {
2643
4008
  /**
2644
4009
  * Value of this item
2645
4010
  */
@@ -2648,6 +4013,10 @@ interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HT
2648
4013
  * Whether this item is disabled
2649
4014
  */
2650
4015
  disabled?: boolean;
4016
+ /**
4017
+ * Size of this item (overrides Root size if provided)
4018
+ */
4019
+ size?: SegmentedControlSize;
2651
4020
  }
2652
4021
  declare const SegmentedControl: React$1.ForwardRefExoticComponent<SegmentedControlRootProps & React$1.RefAttributes<HTMLDivElement>> & {
2653
4022
  Root: React$1.ForwardRefExoticComponent<SegmentedControlRootProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -2685,10 +4054,6 @@ interface BreadcrumbsRootProps extends React$1.HTMLAttributes<HTMLElement> {
2685
4054
  ariaLabel?: string;
2686
4055
  }
2687
4056
  interface BreadcrumbsItemProps extends React$1.HTMLAttributes<HTMLLIElement> {
2688
- /**
2689
- * Whether this is the last item (current page)
2690
- */
2691
- isLast?: boolean;
2692
4057
  /**
2693
4058
  * Whether this item is disabled
2694
4059
  */
@@ -2868,31 +4233,387 @@ interface StepperLabelProps extends React$1.HTMLAttributes<HTMLDivElement> {
2868
4233
  /**
2869
4234
  * Whether this is the active step
2870
4235
  */
2871
- isActive: boolean;
2872
- }
2873
- interface StepperContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
4236
+ isActive: boolean;
4237
+ }
4238
+ interface StepperContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
4239
+ /**
4240
+ * Step index this content belongs to
4241
+ */
4242
+ stepIndex: number;
4243
+ /**
4244
+ * Whether this content should be visible
4245
+ */
4246
+ isActive: boolean;
4247
+ }
4248
+ /**
4249
+ * Stepper.Item - Individual step container
4250
+ */
4251
+ interface StepperItemPropsInternal extends StepperItemProps {
4252
+ orientation?: "horizontal" | "vertical";
4253
+ }
4254
+ declare const Stepper: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>> & {
4255
+ Root: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>>;
4256
+ Item: React$1.ForwardRefExoticComponent<StepperItemPropsInternal & React$1.RefAttributes<HTMLDivElement>>;
4257
+ Indicator: React$1.ForwardRefExoticComponent<StepperIndicatorProps & React$1.RefAttributes<HTMLDivElement>>;
4258
+ Label: React$1.ForwardRefExoticComponent<StepperLabelProps & React$1.RefAttributes<HTMLDivElement>>;
4259
+ Content: React$1.ForwardRefExoticComponent<StepperContentProps & React$1.RefAttributes<HTMLDivElement>>;
4260
+ };
4261
+
4262
+ interface NavSeparatorProps extends React$1.HTMLAttributes<HTMLSpanElement> {
4263
+ /**
4264
+ * Separator content
4265
+ * @default '/'
4266
+ */
4267
+ children?: React$1.ReactNode;
4268
+ /**
4269
+ * Render as child element (composition pattern via Radix Slot)
4270
+ * When true, renders children through Slot component instead of <span>
4271
+ */
4272
+ asChild?: boolean;
4273
+ }
4274
+ /**
4275
+ * NavSeparator component
4276
+ *
4277
+ * Renders a visual separator between navigation items.
4278
+ * This is a purely decorative element with `aria-hidden="true"`.
4279
+ *
4280
+ * COMPLIANCE NOTES:
4281
+ * - ✅ Uses token system exclusively (NAVIGATION_TOKENS)
4282
+ * - ✅ Purely visual component (no logic, no state)
4283
+ * - ✅ Follows Extension Authority Contract
4284
+ * - ✅ Uses descriptive, intent-based naming
4285
+ * - ✅ Does NOT duplicate Foundation functionality
4286
+ * - ✅ aria-hidden="true" always set
4287
+ */
4288
+ declare const NavSeparator: React$1.ForwardRefExoticComponent<NavSeparatorProps & React$1.RefAttributes<HTMLSpanElement>>;
4289
+
4290
+ interface NavTextProps extends React$1.HTMLAttributes<HTMLSpanElement> {
4291
+ /**
4292
+ * Child content (text content for navigation)
4293
+ */
4294
+ children: React$1.ReactNode;
4295
+ /**
4296
+ * ARIA current attribute for indicating current page/location
4297
+ * NavText MAY accept aria-current='page' for accessibility
4298
+ * NavText does NOT determine this state; it only passes through externally provided value
4299
+ */
4300
+ "aria-current"?: "page";
4301
+ /**
4302
+ * Render as child element (composition pattern via Radix Slot)
4303
+ * When true, renders children through Slot component instead of <span>
4304
+ */
4305
+ asChild?: boolean;
4306
+ }
4307
+ /**
4308
+ * NavText component
4309
+ *
4310
+ * Non-interactive navigation text primitive that renders semantic text
4311
+ * for navigation structures. This component is fully stateless and does
4312
+ * not perform routing, route matching, or state detection.
4313
+ *
4314
+ * COMPLIANCE NOTES:
4315
+ * - ✅ Uses token system exclusively (NAVIGATION_TOKENS)
4316
+ * - ✅ Purely semantic component (no logic, no state, no routing)
4317
+ * - ✅ Follows Extension Authority Contract
4318
+ * - ✅ Uses descriptive, intent-based naming
4319
+ * - ✅ Does NOT duplicate Foundation functionality
4320
+ * - ✅ Non-interactive (not focusable, no role overrides)
4321
+ * - ✅ Supports asChild pattern for composition
4322
+ */
4323
+ declare const NavText: React$1.ForwardRefExoticComponent<NavTextProps & React$1.RefAttributes<HTMLSpanElement>>;
4324
+
4325
+ interface NavItemProps extends React$1.HTMLAttributes<HTMLLIElement> {
4326
+ /**
4327
+ * Render as child element (composition pattern via Radix Slot)
4328
+ * When true, renders children through Slot component instead of <li>
4329
+ */
4330
+ asChild?: boolean;
4331
+ /**
4332
+ * Child elements
4333
+ */
4334
+ children: React$1.ReactNode;
4335
+ }
4336
+
4337
+ /**
4338
+ * NavItem - Structural navigation item wrapper
4339
+ *
4340
+ * Renders a list item (`<li>`) for use inside NavList.
4341
+ * This is a pure structural wrapper with no styling or logic.
4342
+ *
4343
+ * **What NavItem IS:**
4344
+ * - Structural navigation list item
4345
+ * - List item wrapper for navigation primitives
4346
+ * - Pure composition container
4347
+ *
4348
+ * **What NavItem IS NOT:**
4349
+ * - Link
4350
+ * - Text renderer
4351
+ * - Separator
4352
+ * - Layout component
4353
+ * - Stateful component
4354
+ * - Logic container
4355
+ *
4356
+ * @example
4357
+ * <NavList>
4358
+ * <NavItem>Home</NavItem>
4359
+ * <NavItem>About</NavItem>
4360
+ * </NavList>
4361
+ *
4362
+ * @example
4363
+ * <NavList>
4364
+ * <NavItem asChild>
4365
+ * <div>Custom item</div>
4366
+ * </NavItem>
4367
+ * </NavList>
4368
+ */
4369
+ declare const NavItem: React$1.ForwardRefExoticComponent<NavItemProps & React$1.RefAttributes<HTMLLIElement>>;
4370
+
4371
+ /**
4372
+ * NavRoot Component Props
4373
+ *
4374
+ * Pure semantic navigation boundary component.
4375
+ * Renders a <nav> element with required aria-label for accessibility.
4376
+ */
4377
+ interface NavRootProps extends React$1.HTMLAttributes<HTMLElement> {
4378
+ /**
4379
+ * ARIA label for the navigation element (required for accessibility)
4380
+ */
4381
+ "aria-label": string;
4382
+ /**
4383
+ * Render as child element (composition pattern via Radix Slot)
4384
+ * When true, renders children through Slot component instead of <nav>
4385
+ */
4386
+ asChild?: boolean;
4387
+ /**
4388
+ * Child content (navigation primitives like NavLink, navigation lists, etc.)
4389
+ */
4390
+ children: React$1.ReactNode;
4391
+ }
4392
+ /**
4393
+ * NavRoot Component
4394
+ *
4395
+ * Pure semantic navigation boundary component with zero logic.
4396
+ * Provides a semantic <nav> wrapper that enforces accessibility (required aria-label)
4397
+ * while remaining a pure composition wrapper with no assumptions about navigation
4398
+ * structure or styling.
4399
+ *
4400
+ * **What NavRoot IS:**
4401
+ * - Semantic navigation root
4402
+ * - Accessibility boundary (enforces aria-label)
4403
+ * - Composition wrapper for navigation primitives
4404
+ *
4405
+ * **What NavRoot IS NOT:**
4406
+ * - Layout component
4407
+ * - List renderer
4408
+ * - Navigation pattern
4409
+ * - Stateful component
4410
+ * - Logic container
4411
+ *
4412
+ * @example
4413
+ * ```tsx
4414
+ * <NavRoot aria-label="Main navigation">
4415
+ * <NavLink href="/">Home</NavLink>
4416
+ * <NavLink href="/about">About</NavLink>
4417
+ * </NavRoot>
4418
+ * ```
4419
+ *
4420
+ * @example
4421
+ * ```tsx
4422
+ * <NavRoot aria-label="Footer navigation" asChild>
4423
+ * <footer>
4424
+ * <NavLink href="/">Home</NavLink>
4425
+ * </footer>
4426
+ * </NavRoot>
4427
+ * ```
4428
+ */
4429
+ declare const NavRoot: React$1.ForwardRefExoticComponent<NavRootProps & React$1.RefAttributes<HTMLElement>>;
4430
+
4431
+ interface NavListProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, "className" | "style"> {
4432
+ /**
4433
+ * HTML element to render
4434
+ * @default 'ol'
4435
+ */
4436
+ as?: "ol" | "ul";
4437
+ /**
4438
+ * Render as child component (Radix pattern)
4439
+ * When true, renders children through Slot component instead of list element
4440
+ */
4441
+ asChild?: boolean;
4442
+ /**
4443
+ * List items (NavItem components)
4444
+ */
4445
+ children: React$1.ReactNode;
4446
+ }
4447
+ /**
4448
+ * NavList - Structural list container for navigation
4449
+ *
4450
+ * Renders an ordered (`<ol>`) or unordered (`<ul>`) list.
4451
+ * Default element is `<ol>` for semantic navigation lists.
4452
+ *
4453
+ * This component is a pure structural wrapper with no styling, layout, or logic.
4454
+ * All visual styling should be applied through child components or external wrappers.
4455
+ */
4456
+ declare const NavList: React$1.ForwardRefExoticComponent<NavListProps & React$1.RefAttributes<HTMLOListElement | HTMLUListElement>>;
4457
+
4458
+ /**
4459
+ * Icon Props Interface
4460
+ *
4461
+ * Shared props interface for all icon components.
4462
+ * Ensures consistent API across all icons in the registry.
4463
+ */
4464
+
4465
+ /**
4466
+ * Base props for all icon components
4467
+ */
4468
+ interface IconProps$1 extends React$1.SVGProps<SVGSVGElement> {
4469
+ /**
4470
+ * Additional CSS classes
4471
+ */
4472
+ className?: string;
4473
+ /**
4474
+ * Hide icon from screen readers
4475
+ * @default true
4476
+ */
4477
+ "aria-hidden"?: boolean;
4478
+ /**
4479
+ * Accessible label for the icon
4480
+ */
4481
+ "aria-label"?: string;
4482
+ }
4483
+
4484
+ /**
4485
+ * Arrow right icon component
4486
+ */
4487
+ declare const IconArrowRight: React$1.FC<IconProps$1>;
4488
+
4489
+ /**
4490
+ * Calendar icon component
4491
+ */
4492
+ declare const IconCalendar: React$1.FC<IconProps$1>;
4493
+
4494
+ /**
4495
+ * Check icon component (checkmark)
4496
+ */
4497
+ declare const IconCheck: React$1.FC<IconProps$1>;
4498
+
4499
+ /**
4500
+ * Chevron down icon component
4501
+ */
4502
+ declare const IconChevronDown: React$1.FC<IconProps$1>;
4503
+
4504
+ /**
4505
+ * Chevron right icon component
4506
+ */
4507
+ declare const IconChevronRight: React$1.FC<IconProps$1>;
4508
+
4509
+ /**
4510
+ * Close icon component (X)
4511
+ */
4512
+ declare const IconClose: React$1.FC<IconProps$1>;
4513
+
4514
+ /**
4515
+ * Error icon component (X in circle - used as fallback)
4516
+ */
4517
+ declare const IconError: React$1.FC<IconProps$1>;
4518
+
4519
+ /**
4520
+ * Info icon component (information circle)
4521
+ */
4522
+ declare const IconInfo: React$1.FC<IconProps$1>;
4523
+
4524
+ /**
4525
+ * Location icon component
4526
+ */
4527
+ declare const IconLocation: React$1.FC<IconProps$1>;
4528
+
4529
+ /**
4530
+ * Menu icon component (hamburger menu)
4531
+ */
4532
+ declare const IconMenu: React$1.FC<IconProps$1>;
4533
+
4534
+ /**
4535
+ * Search icon component
4536
+ */
4537
+ declare const IconSearch: React$1.FC<IconProps$1>;
4538
+
4539
+ /**
4540
+ * Success icon component (checkmark in circle)
4541
+ */
4542
+ declare const IconSuccess: React$1.FC<IconProps$1>;
4543
+
4544
+ /**
4545
+ * Warning icon component (warning triangle)
4546
+ */
4547
+ declare const IconWarning: React$1.FC<IconProps$1>;
4548
+
4549
+ /**
4550
+ * Icon Registry
4551
+ *
4552
+ * Central registry for all icon components.
4553
+ * Supports tree-shaking through individual named exports.
4554
+ */
4555
+
4556
+ /**
4557
+ * Icons map for registry lookup
4558
+ * Used by Icon component to resolve icon by name
4559
+ */
4560
+ declare const ICONS_MAP: Record<string, React$1.FC<IconProps$1>>;
4561
+ /**
4562
+ * Icon name type - union of all available icon names
4563
+ */
4564
+ type IconName = keyof typeof ICONS_MAP;
4565
+
4566
+ /**
4567
+ * Icon size type
4568
+ * Icon uses a visual size scale (sm, md, lg, xl) distinct from interactive components.
4569
+ * Per Foundation rule: "Semi-interactive components (Icon, Badge, Avatar) MUST NOT use size as interactive scale"
4570
+ */
4571
+ type IconSizeSubset = "sm" | "md" | "lg" | "xl";
4572
+ declare const iconVariants: (props?: ({
4573
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
4574
+ color?: "muted" | "default" | "info" | "success" | "warning" | "danger" | null | undefined;
4575
+ stroke?: "normal" | "bold" | "thin" | null | undefined;
4576
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
4577
+ interface IconProps extends Omit<React$1.SVGProps<SVGSVGElement>, "color" | "stroke"> {
4578
+ /**
4579
+ * Icon name from registry
4580
+ */
4581
+ name: IconName;
4582
+ /**
4583
+ * Icon size
4584
+ * Icon uses a visual size scale (sm, md, lg, xl) distinct from interactive components.
4585
+ */
4586
+ size?: IconSizeSubset;
4587
+ /**
4588
+ * Icon color variant
4589
+ */
4590
+ color?: IconColor;
2874
4591
  /**
2875
- * Step index this content belongs to
4592
+ * Stroke width variant
2876
4593
  */
2877
- stepIndex: number;
4594
+ stroke?: IconStroke;
2878
4595
  /**
2879
- * Whether this content should be visible
4596
+ * Render as child element (composition pattern)
4597
+ * Uses Radix UI Slot for composition
2880
4598
  */
2881
- isActive: boolean;
4599
+ asChild?: boolean;
2882
4600
  }
2883
4601
  /**
2884
- * Stepper.Item - Individual step container
4602
+ * Icon component
4603
+ *
4604
+ * Unified icon component with token-driven sizing, colors, and stroke.
4605
+ * Supports SSR-safe rendering and tree-shakeable icon registry.
4606
+ *
4607
+ * Icon is a semi-interactive primitive that provides pure visual representation
4608
+ * without interactive behavior. All interactivity (clicks, keyboard navigation)
4609
+ * is delegated to parent components.
4610
+ *
4611
+ * @example
4612
+ * ```tsx
4613
+ * <Icon name="search" size="md" color="default" />
4614
+ * ```
2885
4615
  */
2886
- interface StepperItemPropsInternal extends StepperItemProps {
2887
- orientation?: "horizontal" | "vertical";
2888
- }
2889
- declare const Stepper: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>> & {
2890
- Root: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>>;
2891
- Item: React$1.ForwardRefExoticComponent<StepperItemPropsInternal & React$1.RefAttributes<HTMLDivElement>>;
2892
- Indicator: React$1.ForwardRefExoticComponent<StepperIndicatorProps & React$1.RefAttributes<HTMLDivElement>>;
2893
- Label: React$1.ForwardRefExoticComponent<StepperLabelProps & React$1.RefAttributes<HTMLDivElement>>;
2894
- Content: React$1.ForwardRefExoticComponent<StepperContentProps & React$1.RefAttributes<HTMLDivElement>>;
2895
- };
4616
+ declare const Icon: React$1.ForwardRefExoticComponent<Omit<IconProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
2896
4617
 
2897
4618
  /**
2898
4619
  * DataList Component Types
@@ -2900,6 +4621,16 @@ declare const Stepper: React$1.ForwardRefExoticComponent<StepperRootProps & Reac
2900
4621
  * TypeScript interfaces and types for DataList component.
2901
4622
  */
2902
4623
 
4624
+ /**
4625
+ * DataList Root component props
4626
+ */
4627
+ interface DataListRootProps extends React.HTMLAttributes<HTMLDListElement> {
4628
+ /**
4629
+ * Label width for desktop layout
4630
+ * @default "md"
4631
+ */
4632
+ labelWidth?: "sm" | "md" | "lg";
4633
+ }
2903
4634
  /**
2904
4635
  * DataList Item component props
2905
4636
  */
@@ -2914,6 +4645,28 @@ interface DataListItemProps$1 extends React.HTMLAttributes<HTMLDivElement> {
2914
4645
  padding?: ResponsiveSpacing;
2915
4646
  }
2916
4647
 
4648
+ /**
4649
+ * DataList Root Component
4650
+ *
4651
+ * Mobile-first data list component for displaying key-value pairs.
4652
+ * Uses Stack for vertical layout and DATA_LIST_TOKENS for spacing.
4653
+ */
4654
+
4655
+ /**
4656
+ * DataList Root component
4657
+ *
4658
+ * @example
4659
+ * ```tsx
4660
+ * <DataList.Root labelWidth="lg">
4661
+ * <DataList.Item>
4662
+ * <DataList.Label>Name</DataList.Label>
4663
+ * <DataList.Value>John Doe</DataList.Value>
4664
+ * </DataList.Item>
4665
+ * </DataList.Root>
4666
+ * ```
4667
+ */
4668
+ declare const DataListRoot: React$1.ForwardRefExoticComponent<DataListRootProps & React$1.RefAttributes<HTMLDListElement>>;
4669
+
2917
4670
  /**
2918
4671
  * DataList Item Component
2919
4672
  *
@@ -2944,7 +4697,7 @@ interface DataListLabelProps extends React$1.HTMLAttributes<HTMLElement> {
2944
4697
  /**
2945
4698
  * DataList Label component
2946
4699
  * Mobile: full width
2947
- * Desktop: fixed width (from tokens)
4700
+ * Desktop: fixed width (from tokens, controlled by Root labelWidth prop)
2948
4701
  */
2949
4702
  declare const DataListLabel: React$1.ForwardRefExoticComponent<DataListLabelProps & React$1.RefAttributes<HTMLElement>>;
2950
4703
 
@@ -3046,7 +4799,7 @@ interface EmptyStateIconProps extends React$1.HTMLAttributes<HTMLDivElement> {
3046
4799
  * Icon size
3047
4800
  * @default "md"
3048
4801
  */
3049
- size?: "sm" | "md" | "lg";
4802
+ size?: EmptyStateIconSize;
3050
4803
  }
3051
4804
  /**
3052
4805
  * EmptyState Icon component
@@ -3076,42 +4829,6 @@ declare const EmptyStateTitle: React$1.ForwardRefExoticComponent<EmptyStateTitle
3076
4829
  * TypeScript interfaces and types for Table component.
3077
4830
  */
3078
4831
 
3079
- /**
3080
- * Table column definition
3081
- */
3082
- interface TableColumn$1<T = Record<string, unknown>> {
3083
- /**
3084
- * Column key (must match a key in the data object)
3085
- */
3086
- key: keyof T;
3087
- /**
3088
- * Column header title
3089
- */
3090
- title: string;
3091
- /**
3092
- * Custom render function for cell content
3093
- */
3094
- render?: (value: T[keyof T], item: T, index: number) => ReactNode;
3095
- /**
3096
- * Column alignment
3097
- * @default "left"
3098
- */
3099
- align?: "left" | "center" | "right";
3100
- /**
3101
- * Column width (CSS value or Tailwind class)
3102
- */
3103
- width?: string;
3104
- /**
3105
- * Whether column is sortable
3106
- * @default false
3107
- */
3108
- sortable?: boolean;
3109
- /**
3110
- * Cell size
3111
- * @default "md"
3112
- */
3113
- size?: "sm" | "md" | "lg";
3114
- }
3115
4832
  /**
3116
4833
  * Sort direction
3117
4834
  */
@@ -3153,60 +4870,16 @@ interface TableContextValue {
3153
4870
  * Whether table has expandable rows
3154
4871
  */
3155
4872
  expandable?: boolean;
3156
- /**
3157
- * Render function for expandable content
3158
- */
3159
- renderExpandableContent?: (item: unknown, index: number) => ReactNode;
3160
4873
  }
3161
4874
  /**
3162
4875
  * Table Root component props
3163
4876
  */
3164
- interface TableRootProps<T = Record<string, unknown>> extends React.HTMLAttributes<HTMLTableElement> {
3165
- /**
3166
- * Table data array
3167
- */
3168
- data: T[];
3169
- /**
3170
- * Column definitions
3171
- */
3172
- columns: TableColumn$1<T>[];
3173
- /**
3174
- * Key to use for row identification
3175
- */
3176
- rowKey: keyof T | ((item: T, index: number) => string | number);
3177
- /**
3178
- * Whether table supports sorting
3179
- * @default false
3180
- */
3181
- sortable?: boolean;
4877
+ interface TableRootProps extends React.HTMLAttributes<HTMLTableElement> {
3182
4878
  /**
3183
4879
  * Whether table supports expandable rows
3184
4880
  * @default false
3185
4881
  */
3186
4882
  expandable?: boolean;
3187
- /**
3188
- * Render function for expandable content
3189
- */
3190
- renderExpandableContent?: (item: T, index: number) => ReactNode;
3191
- /**
3192
- * Whether table is in loading state
3193
- * @default false
3194
- */
3195
- loading?: boolean;
3196
- /**
3197
- * Empty state message (shown when data is empty)
3198
- */
3199
- emptyMessage?: string;
3200
- /**
3201
- * Whether header is sticky
3202
- * @default false
3203
- */
3204
- stickyHeader?: boolean;
3205
- /**
3206
- * Row size
3207
- * @default "md"
3208
- */
3209
- rowSize?: "sm" | "md" | "lg";
3210
4883
  }
3211
4884
  /**
3212
4885
  * Table Header component props
@@ -3261,10 +4934,6 @@ interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
3261
4934
  * @default false
3262
4935
  */
3263
4936
  expandable?: boolean;
3264
- /**
3265
- * Row key (for expansion tracking)
3266
- */
3267
- rowKey?: string | number;
3268
4937
  /**
3269
4938
  * Whether row is expanded
3270
4939
  * @default false
@@ -3346,28 +5015,25 @@ declare function useTableContext(): TableContextValue;
3346
5015
  *
3347
5016
  * @example
3348
5017
  * ```tsx
3349
- * <Table.Root
3350
- * data={users}
3351
- * columns={columns}
3352
- * rowKey="id"
3353
- * sortable
3354
- * >
5018
+ * <Table expandable>
3355
5019
  * <Table.Header>
3356
5020
  * <Table.Row>
3357
- * <Table.Head>Name</Table.Head>
5021
+ * <Table.Head sortable columnKey="name">Name</Table.Head>
5022
+ * <Table.Head>Email</Table.Head>
3358
5023
  * </Table.Row>
3359
5024
  * </Table.Header>
3360
5025
  * <Table.Body>
3361
5026
  * {users.map((user) => (
3362
- * <Table.Row key={user.id}>
5027
+ * <Table.Row key={user.id} expandable expanded={expanded.has(user.id)}>
3363
5028
  * <Table.Cell>{user.name}</Table.Cell>
5029
+ * <Table.Cell>{user.email}</Table.Cell>
3364
5030
  * </Table.Row>
3365
5031
  * ))}
3366
5032
  * </Table.Body>
3367
- * </Table.Root>
5033
+ * </Table>
3368
5034
  * ```
3369
5035
  */
3370
- declare function TableRoot<T extends Record<string, unknown>>({ data: _data, columns: _columns, rowKey: _rowKey, sortable: _sortable, expandable, renderExpandableContent, loading: _loading, emptyMessage: _emptyMessage, stickyHeader: _stickyHeader, rowSize: _rowSize, className, children, ...props }: TableRootProps<T>): react_jsx_runtime.JSX.Element;
5036
+ declare function TableRoot({ expandable, className, children, ...props }: TableRootProps): react_jsx_runtime.JSX.Element;
3371
5037
  declare namespace TableRoot {
3372
5038
  var displayName: string;
3373
5039
  }
@@ -3470,147 +5136,27 @@ declare const TableRow: React$1.ForwardRefExoticComponent<TableRowProps & React$
3470
5136
  */
3471
5137
  declare const TableSortIcon: React$1.ForwardRefExoticComponent<TableSortIconProps & React$1.RefAttributes<HTMLSpanElement>>;
3472
5138
 
3473
- interface TableColumn<T> {
3474
- key: keyof T;
3475
- title: string;
3476
- render?: (value: T[keyof T], item: T) => React__default.ReactNode;
3477
- }
3478
-
3479
5139
  /**
3480
- * Icon Props Interface
5140
+ * Table column configuration
3481
5141
  *
3482
- * Shared props interface for all icon components.
3483
- * Ensures consistent API across all icons in the registry.
3484
- */
3485
-
3486
- /**
3487
- * Base props for all icon components
5142
+ * @template T - The type of data items in the table
3488
5143
  */
3489
- interface IconProps$1 extends React$1.SVGProps<SVGSVGElement> {
3490
- /**
3491
- * Additional CSS classes
3492
- */
3493
- className?: string;
3494
- /**
3495
- * Hide icon from screen readers
3496
- * @default true
3497
- */
3498
- "aria-hidden"?: boolean;
5144
+ interface TableColumn<T> {
3499
5145
  /**
3500
- * Accessible label for the icon
5146
+ * Key of the data item property to display in this column
3501
5147
  */
3502
- "aria-label"?: string;
3503
- }
3504
-
3505
- /**
3506
- * Arrow right icon component
3507
- */
3508
- declare const IconArrowRight: React$1.FC<IconProps$1>;
3509
-
3510
- /**
3511
- * Calendar icon component
3512
- */
3513
- declare const IconCalendar: React$1.FC<IconProps$1>;
3514
-
3515
- /**
3516
- * Check icon component (checkmark)
3517
- */
3518
- declare const IconCheck: React$1.FC<IconProps$1>;
3519
-
3520
- /**
3521
- * Chevron down icon component
3522
- */
3523
- declare const IconChevronDown: React$1.FC<IconProps$1>;
3524
-
3525
- /**
3526
- * Chevron right icon component
3527
- */
3528
- declare const IconChevronRight: React$1.FC<IconProps$1>;
3529
-
3530
- /**
3531
- * Close icon component (X)
3532
- */
3533
- declare const IconClose: React$1.FC<IconProps$1>;
3534
-
3535
- /**
3536
- * Error icon component (X in circle - used as fallback)
3537
- */
3538
- declare const IconError: React$1.FC<IconProps$1>;
3539
-
3540
- /**
3541
- * Info icon component (information circle)
3542
- */
3543
- declare const IconInfo: React$1.FC<IconProps$1>;
3544
-
3545
- /**
3546
- * Location icon component
3547
- */
3548
- declare const IconLocation: React$1.FC<IconProps$1>;
3549
-
3550
- /**
3551
- * Menu icon component (hamburger menu)
3552
- */
3553
- declare const IconMenu: React$1.FC<IconProps$1>;
3554
-
3555
- /**
3556
- * Search icon component
3557
- */
3558
- declare const IconSearch: React$1.FC<IconProps$1>;
3559
-
3560
- /**
3561
- * Success icon component (checkmark in circle)
3562
- */
3563
- declare const IconSuccess: React$1.FC<IconProps$1>;
3564
-
3565
- /**
3566
- * Warning icon component (warning triangle)
3567
- */
3568
- declare const IconWarning: React$1.FC<IconProps$1>;
3569
-
3570
- /**
3571
- * Icon Registry
3572
- *
3573
- * Central registry for all icon components.
3574
- * Supports tree-shaking through individual named exports.
3575
- */
3576
-
3577
- /**
3578
- * Icons map for registry lookup
3579
- * Used by Icon component to resolve icon by name
3580
- */
3581
- declare const ICONS_MAP: Record<string, React$1.FC<IconProps$1>>;
3582
- /**
3583
- * Icon name type - union of all available icon names
3584
- */
3585
- type IconName = keyof typeof ICONS_MAP;
3586
-
3587
- declare const iconVariants: (props?: ({
3588
- size?: "sm" | "md" | "lg" | "xl" | null | undefined;
3589
- color?: "muted" | "default" | "success" | "warning" | "danger" | "info" | null | undefined;
3590
- stroke?: "normal" | "bold" | "thin" | null | undefined;
3591
- } & class_variance_authority_types.ClassProp) | undefined) => string;
3592
- interface IconProps extends Omit<React$1.SVGProps<SVGSVGElement>, "color" | "stroke">, VariantProps<typeof iconVariants> {
5148
+ key: keyof T;
3593
5149
  /**
3594
- * Icon name from registry
5150
+ * Column header title
3595
5151
  */
3596
- name: IconName;
5152
+ title: string;
3597
5153
  /**
3598
- * Render as child element (composition pattern)
3599
- * Uses Radix UI Slot for composition
5154
+ * Optional custom render function for cell content
5155
+ * @param value - The value of the cell
5156
+ * @param item - The entire data item
5157
+ * @returns React node to render in the cell
3600
5158
  */
3601
- asChild?: boolean;
5159
+ render?: (value: T[keyof T], item: T) => React__default.ReactNode;
3602
5160
  }
3603
- /**
3604
- * Icon component
3605
- *
3606
- * Unified icon component with token-driven sizing, colors, and stroke.
3607
- * Supports SSR-safe rendering and tree-shakeable icon registry.
3608
- *
3609
- * @example
3610
- * ```tsx
3611
- * <Icon name="search" size="md" color="default" />
3612
- * ```
3613
- */
3614
- declare const Icon: React$1.ForwardRefExoticComponent<Omit<IconProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
3615
5161
 
3616
- export { Alert, type AlertProps, BADGE_VARIANTS, Backdrop, type BackdropProps, Badge, type BadgeProps, type BadgeVariant, Box, type BoxProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsItemProps, type BreadcrumbsRootProps, type BreadcrumbsSeparatorProps, Button, type ButtonProps, Card, CardBody, type CardBodyProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, Checkbox, type CheckboxProps, Column, type StackProps as ColumnProps, Container, type ContainerProps, Surface as ContainerSurface, type SurfaceProps as ContainerSurfaceProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, type ContextMenuContentProps, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuRoot, type ContextMenuRootProps, ContextMenuSeparator, type ContextMenuSeparatorProps, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubContentProps, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, DataListRoot as DataList, DataListItem, type DataListItemProps, DataListLabel, type DataListLabelProps, DataListRoot, type DataListRootProps, DataListValue, type DataListValueProps, Dialog, DialogBody, type DialogBodyProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, type DialogProps, DialogRoot, DialogTitle, type DialogTitleProps, EmptyState, EmptyStateAction, type EmptyStateActionProps, EmptyStateDescription, type EmptyStateDescriptionProps, EmptyStateIcon, type EmptyStateIconProps, type EmptyStateProps, EmptyStateTitle, type EmptyStateTitleProps, FieldRoot as Field, type FieldControlProps, type FieldDescriptionProps, type FieldErrorProps, type FieldLabelProps, type FieldProps, Flex, type FlexProps, Grid, type GridProps, type GroupByFunction, Heading, type HeadingProps, HoverCardContent, type HoverCardContentProps, HoverCardRoot, type HoverCardRootProps, HoverCardTrigger, type HoverCardTriggerProps, ICONS_MAP, INPUT_TOKENS, Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, type IconProps$1 as IconComponentProps, IconError, IconInfo, IconLocation, IconMenu, type IconName, type IconProps, IconSearch, IconSuccess, IconWarning, Input, type InputProps, InputSize, Label, type LabelProps, Link, type LinkProps, type LinkSize, type LinkVariant, Modal, ModalClose, type ModalCloseProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, ModalFooter, type ModalFooterProps, ModalHeader, type ModalHeaderProps, ModalOverlay, type ModalOverlayProps, ModalRoot, type ModalRootProps, ModalTitle, type ModalTitleProps, ModalTrigger, type ModalTriggerProps, NotificationCenter, NotificationCenterDismissAll, type NotificationCenterDismissAllProps, NotificationCenterGroupHeader, type NotificationCenterGroupHeaderProps, NotificationCenterItem, type NotificationCenterItemProps, NotificationCenterList, type NotificationCenterListProps, NotificationCenterPanel, type NotificationCenterPanelProps, NotificationCenterProvider, type NotificationCenterProviderProps, NotificationCenterTrigger, type NotificationCenterTriggerProps, type NotificationChannel, type NotificationContextType, type NotificationData, type NotificationOptions, type NotificationVariant, Pagination, type PaginationEllipsisProps, type PaginationItemProps, type PaginationNextProps, type PaginationPrevProps, type PaginationRootProps, Portal, type PortalProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, Responsive, Row, type RowProps, Section, type SectionProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlRootProps, Select, SelectContent, type SelectContentProps, SelectGroup, type SelectGroupProps, SelectIcon, type SelectIconProps, SelectItem, SelectItemIndicator, type SelectItemIndicatorProps, type SelectItemProps, SelectItemText, type SelectItemTextProps, SelectLabel, type SelectLabelProps, SelectRoot, type SelectRootProps, SelectSeparator, type SelectSeparatorProps, type SelectSize, type SelectState, SelectTrigger, type SelectTriggerProps, SelectValue, type SelectValueProps, type SelectVariant, SelectViewport, type SelectViewportProps, type SelectWidth, Skeleton, type SkeletonProps, type SortDirection, type SortState, Stack, type StackProps, Stepper, type StepperContentProps, type StepperIndicatorProps, type StepperItemProps, type StepperLabelProps, type StepperRootProps, type StepperStep, Surface, type SurfaceProps, TableRoot as Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, type TableColumn, type TableContextValue, TableEmpty, type TableEmptyProps, TableExpandableContent, type TableExpandableContentProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableLoadingState, type TableLoadingStateProps, TableRoot, type TableRootProps, TableRow, type TableRowProps, TableSortIcon, type TableSortIconProps, Tabs, type TabsContentProps, type TabsListProps, type TabsRootProps, type TabsTriggerProps, Text, type TextProps, type TextSize, type TextWeight, Textarea, type TextareaProps, Toast, ToastAction, type ToastData, type ToastOptions, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, ToastViewport, type ToastViewportProps, Toaster, alertVariants, badgeVariants, checkboxVariants, surfaceVariants as containerSurfaceVariants, headingVariants, iconVariants, inputVariants, labelVariants, linkVariants, radioVariants, segmentedControlItemVariants, segmentedControlRootVariants, skeletonVariants, surfaceVariants, textVariants, textareaVariants, useNotificationCenter, useNotificationCenterContext, useTableContext, useToast };
5162
+ export { ALERT_VARIANTS, ASPECT_RATIO_PRESETS, Accordion, type AccordionContentProps, type AccordionItemProps, type AccordionRootProps, type AccordionSize, type AccordionTriggerProps, type AccordionVariant, Alert, type AlertProps, type AlertVariant, AspectRatio, type AspectRatioPreset, type AspectRatioProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarGroupSpacing, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, BADGE_VARIANTS, Backdrop, type BackdropProps, Badge, type BadgeProps, type BadgeVariant, Box, type BoxProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsItemProps, type BreadcrumbsRootProps, type BreadcrumbsSeparatorProps, Button, type ButtonProps, CHIP_RADIUS_VALUES, CHIP_VARIANTS, Card, CardBody, type CardBodyProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipRadius, type ChipVariant, Column, type StackProps as ColumnProps, Combobox, ComboboxInput, type ComboboxInputProps, ComboboxList, type ComboboxListProps, type ComboboxOption, ComboboxRoot, type ComboboxRootProps, type ComboboxSize, Container, type ContainerProps, Surface as ContainerSurface, type SurfaceProps as ContainerSurfaceProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, type ContextMenuContentProps, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuRoot, type ContextMenuRootProps, ContextMenuSeparator, type ContextMenuSeparatorProps, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubContentProps, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, DataListRoot as DataList, DataListItem, type DataListItemProps, DataListLabel, type DataListLabelProps, DataListRoot, type DataListRootProps, DataListValue, type DataListValueProps, Dialog, DialogBody, type DialogBodyProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, type DialogProps, DialogRoot, DialogTitle, type DialogTitleProps, EmptyState, EmptyStateAction, type EmptyStateActionProps, EmptyStateDescription, type EmptyStateDescriptionProps, EmptyStateIcon, type EmptyStateIconProps, EmptyStateIconSize, type EmptyStateProps, EmptyStateTitle, type EmptyStateTitleProps, FieldRoot as Field, type FieldControlProps, type FieldDescriptionProps, type FieldErrorProps, type FieldLabelProps, type FieldProps, FileUpload, type FileUploadError, type FileUploadProps, type FileUploadSize, type FileUploadVariant, Flex, type FlexProps, Grid, type GridProps, type GroupByFunction, Heading, type HeadingProps, HoverCardContent, type HoverCardContentProps, HoverCardRoot, type HoverCardRootProps, HoverCardTrigger, type HoverCardTriggerProps, ICONS_MAP, Icon, IconArrowRight, IconCalendar, IconCheck, IconChevronDown, IconChevronRight, IconClose, IconColor, type IconProps$1 as IconComponentProps, IconError, IconInfo, IconLocation, IconMenu, type IconName, type IconProps, IconSearch, IconStroke, IconSuccess, IconWarning, Input, type InputProps, Label, type LabelProps, LinkProps, Modal, ModalClose, type ModalCloseProps, ModalContent, type ModalContentProps, ModalDescription, type ModalDescriptionProps, ModalFooter, type ModalFooterProps, ModalHeader, type ModalHeaderProps, ModalOverlay, type ModalOverlayProps, ModalRoot, type ModalRootProps, type ModalSize, ModalTitle, type ModalTitleProps, ModalTrigger, type ModalTriggerProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, type MultiSelectSize, NavItem, type NavItemProps, NavLink, type NavLinkProps, NavList, type NavListProps, NavRoot, type NavRootProps, NavSeparator, type NavSeparatorProps, NavText, type NavTextProps, NotificationCenter, NotificationCenterDismissAll, type NotificationCenterDismissAllProps, NotificationCenterGroupHeader, type NotificationCenterGroupHeaderProps, NotificationCenterItem, type NotificationCenterItemProps, NotificationCenterList, type NotificationCenterListProps, NotificationCenterPanel, type NotificationCenterPanelProps, NotificationCenterProvider, type NotificationCenterProviderProps, NotificationCenterTrigger, type NotificationCenterTriggerProps, type NotificationChannel, type NotificationContextType, type NotificationData, type NotificationOptions, type NotificationVariant, Pagination, type PaginationEllipsisProps, type PaginationItemProps, type PaginationNextProps, type PaginationPrevProps, type PaginationRootProps, Portal, type PortalProps, Progress, type ProgressProps, type ProgressSize, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, type RangeSliderSize, type RangeSliderVariant, Responsive, Row, type RowProps, Section, type SectionProps, SegmentedControl, type SegmentedControlItemProps, type SegmentedControlOrientation, type SegmentedControlRootProps, type SegmentedControlSize, Select, SelectContent, type SelectContentProps, SelectGroup, type SelectGroupProps, SelectIcon, type SelectIconProps, SelectItem, SelectItemIndicator, type SelectItemIndicatorProps, type SelectItemProps, SelectItemText, type SelectItemTextProps, SelectLabel, type SelectLabelProps, SelectRoot, type SelectRootProps, SelectSeparator, type SelectSeparatorProps, SelectTrigger, type SelectTriggerProps, SelectValue, type SelectValueProps, SelectViewport, type SelectViewportProps, Separator, type SeparatorProps, Skeleton, type SkeletonProps, type SkeletonVariant, Slider, type SliderProps, type SliderSize, type SliderVariant, type SortDirection, type SortState, Spinner, type SpinnerEasing, type SpinnerLabelPosition, type SpinnerProps, type SpinnerSize, type SpinnerTone, type SpinnerVariant, Stack, type StackProps, Stepper, type StepperContentProps, type StepperIndicatorProps, type StepperItemProps, type StepperLabelProps, type StepperRootProps, type StepperStep, Surface, type SurfaceProps, TableRoot as Table, TableBody, type TableBodyProps, TableCell, type TableCellProps, type TableColumn, type TableContextValue, TableEmpty, type TableEmptyProps, TableExpandableContent, type TableExpandableContentProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableLoadingState, type TableLoadingStateProps, TableRoot, type TableRootProps, TableRow, type TableRowProps, TableSortIcon, type TableSortIconProps, Tabs, type TabsContentProps, type TabsListProps, type TabsRootProps, type TabsTriggerProps, Text, type TextProps, type TextSize, type TextWeight, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastData, type ToastOptions, type ToastPosition, type ToastProps, ToastProvider, type ToastProviderProps, ToastViewport, type ToastViewportProps, Toaster, alertVariants, badgeVariants, checkboxVariants, chipVariants, surfaceVariants as containerSurfaceVariants, headingVariants, iconVariants, inputVariants, radioVariants, segmentedControlItemVariants, segmentedControlRootVariants, separatorVariants, skeletonVariants, surfaceVariants, textVariants, textareaVariants, useNotificationCenter, useNotificationCenterContext, useTableContext, useLocalToast as useToast };