@tenerife.music/ui 1.2.1 → 2.0.0

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,14 +1,19 @@
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';
14
19
  import * as PopoverPrimitive from '@radix-ui/react-popover';
@@ -27,24 +32,42 @@ type ButtonVariant = "primary" | "secondary" | "accent" | "outline" | "ghost" |
27
32
  /**
28
33
  * Button Size Type
29
34
  *
30
- * Type-level enforcement: Only these size values are allowed.
35
+ * Type-level enforcement: Only GlobalSize values are allowed.
31
36
  * TypeScript will error if any other string is passed.
32
37
  *
33
38
  * @enforcement TUNG_BUTTON_CVA_ENFORCEMENT
39
+ * @enforcement VARIANTS_SIZE_CANON - Must use only GlobalSize values
40
+ *
41
+ * Canonical sizes: "sm" | "md" | "lg" (GlobalSize compliant)
42
+ * For icon-only buttons, use `iconOnly={true}` prop with any size.
34
43
  */
35
- type ButtonSize = "sm" | "md" | "lg" | "icon";
44
+ type ButtonSize = "sm" | "md" | "lg";
36
45
  /**
37
46
  * Button Component Props
38
47
  *
39
48
  * @enforcement TUNG_BUTTON_CVA_ENFORCEMENT
40
49
  * @rule variant prop is restricted to ButtonVariant union type
41
- * @rule size prop is restricted to ButtonSize union type
50
+ * @rule size prop is restricted to ButtonSize union type (GlobalSize values only: "sm" | "md" | "lg")
51
+ * @rule iconOnly prop creates square icon-only button using size for dimensions (canonical way to create icon buttons)
42
52
  * @rule className prop cannot override color classes (tokenCVA validation in dev mode)
43
53
  * @rule Button is fully token-based - no raw Tailwind colors allowed
44
54
  */
45
55
  interface ButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "className" | "style"> {
46
56
  variant?: ButtonVariant;
47
57
  size?: ButtonSize;
58
+ /**
59
+ * Icon-only mode: Creates a square button (equal width and height) with icon-centered layout.
60
+ * When `iconOnly={true}`, the button uses the `size` prop to determine dimensions.
61
+ * This is the canonical way to create icon-only buttons (replaces deprecated `size="icon"`).
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * <Button iconOnly size="md" aria-label="Search">
66
+ * <SearchIcon />
67
+ * </Button>
68
+ * ```
69
+ */
70
+ iconOnly?: boolean;
48
71
  asChild?: boolean;
49
72
  leftIcon?: React$1.ReactNode;
50
73
  rightIcon?: React$1.ReactNode;
@@ -74,84 +97,124 @@ interface ButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElemen
74
97
  */
75
98
  declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
76
99
 
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
100
  /**
101
- * Link variant values (internal - used for type derivation only)
101
+ * Text size values (internal - used for type derivation only)
102
102
  *
103
103
  * @internal
104
104
  */
105
- declare const _LINK_VARIANTS: readonly ["primary", "secondary", "accent", "outline", "ghost", "link", "destructive"];
105
+ declare const _TEXT_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
106
106
  /**
107
- * Link variant type
107
+ * Text size type
108
+ * Typography scale for Text component (separate from interactive scale)
108
109
  *
109
110
  * @public
110
111
  */
111
- type LinkVariant = (typeof _LINK_VARIANTS)[number];
112
+ type TextSize = (typeof _TEXT_SIZES)[number];
112
113
  /**
113
- * Link size values (internal - used for type derivation only)
114
+ * Text weight values (internal - used for type derivation only)
114
115
  *
115
116
  * @internal
116
117
  */
117
- declare const _LINK_SIZES: readonly ["sm", "md", "lg"];
118
+ declare const _TEXT_WEIGHTS: readonly ["normal", "medium", "semibold", "bold"];
118
119
  /**
119
- * Link size type
120
+ * Text weight type
121
+ * Font weight scale for Text component
120
122
  *
121
123
  * @public
122
124
  */
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;
125
+ type TextWeight = (typeof _TEXT_WEIGHTS)[number];
126
+ /**
127
+ * Text tone values (internal - used for type derivation only)
128
+ *
129
+ * @internal
130
+ */
131
+ declare const _TEXT_TONES: readonly ["default", "muted"];
132
+ /**
133
+ * Text tone type
134
+ * Color tone variant for Text component
135
+ *
136
+ * @public
137
+ */
138
+ type TextTone = (typeof _TEXT_TONES)[number];
139
+ /**
140
+ * Text as element types
141
+ * Allowed HTML elements for polymorphic rendering
142
+ *
143
+ * @public
144
+ */
145
+ type TextAsElement = "span" | "p" | "label" | "strong" | "em";
146
+ declare const textVariants: (props?: ({
147
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
148
+ weight?: "normal" | "medium" | "semibold" | "bold" | null | undefined;
149
+ tone?: "muted" | "default" | null | undefined;
127
150
  } & 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;
151
+ /**
152
+ * Text component props
153
+ *
154
+ * @public
155
+ */
156
+ interface TextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "className" | "style"> {
157
+ /** HTML element to render (span, p, label, strong, em) */
158
+ as?: TextAsElement;
159
+ /** Typography size scale (xs, sm, md, lg, xl) */
160
+ size?: TextSize;
161
+ /** Font weight (normal, medium, semibold, bold) */
162
+ weight?: TextWeight;
163
+ /** Text color tone (default, muted) */
164
+ tone?: TextTone;
165
+ }
166
+ declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLElement>>;
167
+
168
+ /**
169
+ * Alert variant values
170
+ *
171
+ * @public
172
+ */
173
+ declare const ALERT_VARIANTS: readonly ["default", "primary", "secondary", "accent", "destructive"];
174
+ /**
175
+ * Alert variant type
176
+ *
177
+ * @public
178
+ */
179
+ type AlertVariant = (typeof ALERT_VARIANTS)[number];
180
+ declare const alertVariants: (props?: ({
181
+ variant?: "primary" | "secondary" | "accent" | "destructive" | "default" | null | undefined;
182
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
183
+ interface AlertProps extends React$1.HTMLAttributes<HTMLDivElement> {
143
184
  /**
144
- * Icon to display on the right side
185
+ * Alert variant style
186
+ * @default "default"
145
187
  */
146
- rightIcon?: React$1.ReactNode;
188
+ variant?: AlertVariant;
189
+ }
190
+ declare const Alert: React$1.ForwardRefExoticComponent<AlertProps & React$1.RefAttributes<HTMLDivElement>>;
191
+
192
+ /**
193
+ * NavLink props interface
194
+ * Extends Link props with navigation state indicator
195
+ *
196
+ * @public
197
+ */
198
+ interface NavLinkProps extends LinkProps {
147
199
  /**
148
- * Whether the link is disabled
149
- * When disabled, the link will not be navigable and will be removed from the tab order
200
+ * Whether this link represents the current page
201
+ * When true, aria-current='page' is applied for accessibility
202
+ * NavLink does not determine this state; it only reflects externally provided state
203
+ *
150
204
  * @default false
151
205
  */
152
- disabled?: boolean;
206
+ current?: boolean;
153
207
  }
154
- declare const Link: React$1.ForwardRefExoticComponent<LinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
208
+ /**
209
+ * NavLink component
210
+ *
211
+ * A navigation primitive built on top of the Foundation Link component.
212
+ * Represents a navigational link and reflects externally provided navigation state via aria-current.
213
+ * NavLink does not perform routing, route matching, or state detection.
214
+ *
215
+ * @public
216
+ */
217
+ declare const NavLink: React$1.ForwardRefExoticComponent<NavLinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
155
218
 
156
219
  /**
157
220
  * Badge variant values
@@ -196,17 +259,9 @@ interface SelectRootProps extends React$1.ComponentPropsWithoutRef<typeof Select
196
259
  declare const SelectRoot: React$1.FC<SelectRootProps>;
197
260
  interface SelectTriggerProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, "size" | "variant" | "width"> {
198
261
  /**
199
- * Size variant - token-based
200
- */
201
- size?: ResponsiveSelectSize;
202
- /**
203
- * Visual variant - token-based
262
+ * Invalid state - uses aria-invalid
204
263
  */
205
- variant?: SelectVariantToken;
206
- /**
207
- * Width - token-based
208
- */
209
- width?: ResponsiveSelectWidth;
264
+ "aria-invalid"?: boolean;
210
265
  }
211
266
  declare const SelectTrigger: React$1.ForwardRefExoticComponent<SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
212
267
  interface SelectValueProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Value> {
@@ -215,11 +270,7 @@ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectValueProps &
215
270
  interface SelectIconProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Icon> {
216
271
  }
217
272
  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;
273
+ interface SelectContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>, "sideOffset" | "alignOffset"> {
223
274
  /**
224
275
  * Side offset - token-based
225
276
  */
@@ -234,10 +285,6 @@ interface SelectViewportProps extends React$1.ComponentPropsWithoutRef<typeof Se
234
285
  }
235
286
  declare const SelectViewport: React$1.ForwardRefExoticComponent<SelectViewportProps & React$1.RefAttributes<HTMLDivElement>>;
236
287
  interface SelectItemProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {
237
- /**
238
- * Size variant - token-based
239
- */
240
- size?: ResponsiveSelectSize;
241
288
  }
242
289
  declare const SelectItem: React$1.ForwardRefExoticComponent<SelectItemProps & React$1.RefAttributes<HTMLDivElement>>;
243
290
  interface SelectItemTextProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.ItemText> {
@@ -247,20 +294,12 @@ interface SelectItemIndicatorProps extends React$1.ComponentPropsWithoutRef<type
247
294
  }
248
295
  declare const SelectItemIndicator: React$1.ForwardRefExoticComponent<SelectItemIndicatorProps & React$1.RefAttributes<HTMLSpanElement>>;
249
296
  interface SelectSeparatorProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {
250
- /**
251
- * Size variant - token-based
252
- */
253
- size?: ResponsiveSelectSize;
254
297
  }
255
298
  declare const SelectSeparator: React$1.ForwardRefExoticComponent<SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
256
299
  interface SelectGroupProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Group> {
257
300
  }
258
301
  declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
259
302
  interface SelectLabelProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {
260
- /**
261
- * Size variant - token-based
262
- */
263
- size?: ResponsiveSelectSize;
264
303
  }
265
304
  declare const SelectLabel: React$1.ForwardRefExoticComponent<SelectLabelProps & React$1.RefAttributes<HTMLDivElement>>;
266
305
 
@@ -280,23 +319,200 @@ declare const Select: {
280
319
  };
281
320
 
282
321
  /**
283
- * Select size token type
322
+ * Avatar Component Variants
323
+ *
324
+ * Token-driven CVA (Class Variance Authority) variants for Avatar component.
325
+ * All values use token-based Tailwind classes via AVATAR_TOKENS.
326
+ *
327
+ * COMPLIANCE:
328
+ * - ✅ Uses tokenCVA (enforces token-driven styling)
329
+ * - ✅ Token-based sizing (h-* w-* map to spacing tokens)
330
+ * - ✅ Token-based radius (rounded-full = 9999px, rounded-md = 6px)
331
+ * - ✅ Token-based colors (semantic color tokens)
332
+ * - ✅ Type constraints with satisfies Record<Type, string>
333
+ *
334
+ * @see {@link Avatar} - Main Avatar component
335
+ * @see {@link AvatarGroup} - Avatar group component
336
+ */
337
+ /**
338
+ * Type exports for Avatar variants
284
339
  */
285
- type SelectSize = SelectSizeToken;
340
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
341
+ type AvatarShape = "circle" | "square";
342
+ type AvatarStatus = "online" | "offline" | "busy";
343
+
344
+ interface AvatarProps {
345
+ /**
346
+ * Image source URL
347
+ * @optional If not provided or fails to load, fallback is shown
348
+ */
349
+ src?: string;
350
+ /**
351
+ * Alt text for image (required for accessibility)
352
+ * Used to extract initials if no fallback provided
353
+ * @required
354
+ * @example "John Doe" → initials "JD"
355
+ */
356
+ alt: string;
357
+ /**
358
+ * Avatar size
359
+ * @default "md"
360
+ */
361
+ size?: AvatarSize;
362
+ /**
363
+ * Avatar shape
364
+ * @default "circle"
365
+ */
366
+ shape?: AvatarShape;
367
+ /**
368
+ * Custom fallback content (overrides initials extraction)
369
+ * @optional Can be initials string or React element (e.g., icon)
370
+ */
371
+ fallback?: React$1.ReactNode;
372
+ /**
373
+ * Status indicator
374
+ * @optional Shows colored dot at bottom-right
375
+ */
376
+ status?: AvatarStatus | null;
377
+ /**
378
+ * Additional CSS classes
379
+ */
380
+ className?: string;
381
+ }
286
382
  /**
287
- * Select variant token type
383
+ * Avatar component
384
+ *
385
+ * COMPLIANCE NOTES:
386
+ * - ✅ Uses token system exclusively (no raw values)
387
+ * - ✅ Delegates behavior to Radix UI (@radix-ui/react-avatar)
388
+ * - ✅ Follows Extension Authority Contract
389
+ * - ✅ Token-based sizing (h-*, w-*)
390
+ * - ✅ Token-based radius (rounded-full, rounded-md)
391
+ * - ✅ Token-based colors (bg-muted, text-muted-foreground, bg-semantic-*)
392
+ * - ✅ Enhanced accessibility with computed aria-label
288
393
  */
289
- type SelectVariant = SelectVariantToken;
394
+ declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
395
+
290
396
  /**
291
- * Select width token type
397
+ * AvatarGroup Component
398
+ *
399
+ * Displays multiple avatars with overlap effect.
400
+ * Shows a maximum number of avatars and indicates remaining count.
401
+ *
402
+ * @example
403
+ * ```tsx
404
+ * <AvatarGroup
405
+ * avatars={users.map(u => ({
406
+ * key: u.id, // Optional but recommended for dynamic lists
407
+ * src: u.image,
408
+ * alt: u.name
409
+ * }))}
410
+ * max={3}
411
+ * size="md"
412
+ * />
413
+ * ```
292
414
  */
293
- type SelectWidth = SelectWidthToken;
415
+
416
+ type AvatarGroupSpacing = "tight" | "normal" | "loose";
417
+ interface AvatarGroupProps {
418
+ /**
419
+ * Array of avatar data
420
+ * @required Minimum 1 avatar
421
+ *
422
+ * @remarks
423
+ * For dynamic lists (items can be added/removed/reordered), provide a unique `key`
424
+ * for each avatar to ensure proper React reconciliation. If no key is provided,
425
+ * the component falls back to using `alt` or array index.
426
+ */
427
+ avatars: Array<{
428
+ /**
429
+ * Optional unique identifier for React key
430
+ * @recommended For dynamic lists to ensure proper reconciliation
431
+ */
432
+ key?: string | number;
433
+ src?: string;
434
+ alt: string;
435
+ fallback?: React$1.ReactNode;
436
+ }>;
437
+ /**
438
+ * Maximum avatars to show (remaining count shown as "+N")
439
+ * @default Show all avatars
440
+ * @optional
441
+ */
442
+ max?: number;
443
+ /**
444
+ * Size for all avatars in group
445
+ * @default "md"
446
+ */
447
+ size?: AvatarSize;
448
+ /**
449
+ * Shape for all avatars in group
450
+ * @default "circle"
451
+ */
452
+ shape?: AvatarShape;
453
+ /**
454
+ * Spacing between avatars (negative margin for overlap)
455
+ * @default "normal"
456
+ */
457
+ spacing?: AvatarGroupSpacing;
458
+ /**
459
+ * Additional CSS classes
460
+ */
461
+ className?: string;
462
+ }
294
463
  /**
295
- * Select state token type
464
+ * AvatarGroup component
465
+ *
466
+ * COMPLIANCE NOTES:
467
+ * - ✅ Uses token system exclusively (no raw values)
468
+ * - ✅ Composes Avatar component internally
469
+ * - ✅ Token-based spacing (negative margin via -space-x-*)
470
+ * - ✅ Follows Extension Authority Contract
471
+ * - ✅ Smart key management with fallback chain
472
+ * - ✅ Development-mode warnings for edge cases
296
473
  */
297
- type SelectState = SelectStateToken;
474
+ declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
298
475
 
299
476
  /**
477
+ * ============================================================================
478
+ * ⏳ FOUNDATION · LEGACY · UNLOCKED_FOR_MIGRATION - Modal Component
479
+ * ============================================================================
480
+ *
481
+ * **STATUS:** ⏳ LEGACY UNLOCKED (Pending Canonical Migration)
482
+ * **UNLOCK DATE:** 2025-12-19
483
+ * **TASK:** TUNG_FOUNDATION_LEGACY_UNLOCK_01
484
+ *
485
+ * **UNLOCK RATIONALE:**
486
+ * Modal was declared as LOCKED but was implemented using legacy patterns and
487
+ * never passed the canonical Foundation Step Pipeline (0–13). The current lock
488
+ * is declarative only and blocks required migration.
489
+ *
490
+ * **MIGRATION PATH:**
491
+ * Modal will undergo canonical Foundation lock process (Steps 0–13) to ensure
492
+ * full compliance with all Authority Contracts and canonical lifecycle
493
+ * requirements, similar to Button/Link standards.
494
+ *
495
+ * **CONSTRAINTS DURING UNLOCK:**
496
+ * - ❌ No public API expansion
497
+ * - ❌ No new variants or sizes
498
+ * - ❌ No behavior changes outside canonicalization
499
+ * - ❌ No bypass of Authority Contracts
500
+ * - ✅ Refactor strictly via Foundation Step Pipeline
501
+ * - ✅ Canonical CVA, typing, and interaction refactor allowed
502
+ * - ✅ Authority Contract alignment allowed
503
+ *
504
+ * **EXIT CRITERIA:**
505
+ * - Component completes Steps 0–13
506
+ * - Foundation lock report exists
507
+ * - Public Type Surface is locked
508
+ * - Component re-marked as FOUNDATION · LOCKED
509
+ *
510
+ * **REFERENCE:**
511
+ * - docs/architecture/FOUNDATION_LOCK.md (Legacy Foundation Components section)
512
+ * - docs/workflows/foundation/FOUNDATION_STEP_PIPELINE.md
513
+ *
514
+ * ============================================================================
515
+ *
300
516
  * Modal Component
301
517
  *
302
518
  * Radix-based modal component with token-driven styling.
@@ -304,6 +520,12 @@ type SelectState = SelectStateToken;
304
520
  * Tenerife UI provides visual styling through tokens only.
305
521
  */
306
522
 
523
+ /**
524
+ * Modal size union type
525
+ * Explicit union type for Modal size prop (sm | md | lg)
526
+ * Per VARIANTS_SIZE_CANON: overlay components restricted to sm | md | lg only
527
+ */
528
+ type ModalSize = "sm" | "md" | "lg";
307
529
  interface ModalRootProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
308
530
  }
309
531
  /**
@@ -386,6 +608,20 @@ interface ModalContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof
386
608
  * ```
387
609
  */
388
610
  surface?: SurfaceToken;
611
+ /**
612
+ * Ref to the trigger element for focus restore on close
613
+ *
614
+ * When provided, Modal will deterministically restore focus to this element
615
+ * when the modal closes (via close button or Escape key).
616
+ *
617
+ * @example
618
+ * ```tsx
619
+ * const triggerRef = useRef<HTMLButtonElement>(null);
620
+ * <Button ref={triggerRef}>Open Modal</Button>
621
+ * <Modal.Content triggerRef={triggerRef}>...</Modal.Content>
622
+ * ```
623
+ */
624
+ triggerRef?: React$1.RefObject<HTMLElement>;
389
625
  }
390
626
  /**
391
627
  * Modal Content component
@@ -434,6 +670,12 @@ interface ModalDescriptionProps extends React$1.ComponentPropsWithoutRef<typeof
434
670
  * Wrapper around Radix Dialog Description with token-based typography
435
671
  */
436
672
  declare const ModalDescription: React$1.ForwardRefExoticComponent<ModalDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
673
+ interface ModalBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
674
+ /**
675
+ * Body content
676
+ */
677
+ children?: React$1.ReactNode;
678
+ }
437
679
  interface ModalFooterProps extends React$1.HTMLAttributes<HTMLDivElement> {
438
680
  /**
439
681
  * Gap between footer items - token-based
@@ -463,7 +705,7 @@ declare const ModalClose: React$1.ForwardRefExoticComponent<ModalCloseProps & Re
463
705
  * Radix Dialog-based modal component with token-driven styling.
464
706
  *
465
707
  * **Usage:**
466
- * ```tsx
708
+ * @example
467
709
  * <Modal.Root open={open} onOpenChange={setOpen}>
468
710
  * <Modal.Trigger>Open</Modal.Trigger>
469
711
  * <Modal.Content>
@@ -471,17 +713,19 @@ declare const ModalClose: React$1.ForwardRefExoticComponent<ModalCloseProps & Re
471
713
  * <Modal.Title>Title</Modal.Title>
472
714
  * <Modal.Description>Description</Modal.Description>
473
715
  * </Modal.Header>
474
- * <div>Content</div>
716
+ * <Modal.Body>
717
+ * {/* Scrollable content *\/}
718
+ * </Modal.Body>
475
719
  * <Modal.Footer>
476
720
  * <Modal.Close>Close</Modal.Close>
477
721
  * </Modal.Footer>
478
722
  * <Modal.Close />
479
723
  * </Modal.Content>
480
724
  * </Modal.Root>
481
- * ```
482
725
  *
483
726
  * **Note:** Modal.Portal and Modal.Overlay are internal and should not be used directly.
484
727
  * ModalContent automatically handles portal and overlay rendering.
728
+ * Modal.Body is optional but recommended for scrollable content.
485
729
  */
486
730
  declare const Modal: {
487
731
  Root: React$1.FC<ModalRootProps>;
@@ -491,112 +735,317 @@ declare const Modal: {
491
735
  Header: React$1.ForwardRefExoticComponent<ModalHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
492
736
  Title: React$1.ForwardRefExoticComponent<ModalTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
493
737
  Description: React$1.ForwardRefExoticComponent<ModalDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
738
+ Body: React$1.ForwardRefExoticComponent<ModalBodyProps & React$1.RefAttributes<HTMLDivElement>>;
494
739
  Footer: React$1.ForwardRefExoticComponent<ModalFooterProps & React$1.RefAttributes<HTMLDivElement>>;
495
740
  Close: React$1.ForwardRefExoticComponent<ModalCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
496
741
  };
497
742
 
498
- /**
499
- * Checkbox Variants
500
- *
501
- * CVA-based variant system for Checkbox component.
502
- * Supports variants (primary, secondary, outline, ghost, destructive),
503
- * sizes (xs, sm, md, lg, xl), and states (default, checked, disabled, error, indeterminate).
504
- * All styling uses token-based values with CSS variable references.
505
- */
506
- declare const checkboxVariants: (props?: ({
507
- 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;
510
- } & class_variance_authority_types.ClassProp) | undefined) => string;
511
-
512
- /**
513
- * Checkbox Component Props
514
- *
515
- * Extends native button HTML attributes with variant props, checked state, and accessibility props.
516
- * Uses button role="checkbox" pattern for full keyboard accessibility.
517
- */
518
- interface CheckboxProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style">, VariantProps<typeof checkboxVariants> {
743
+ type RangeSliderSize = "sm" | "md" | "lg";
744
+ type RangeSliderVariant = "primary" | "secondary" | "outline";
745
+ type RangeSliderOrientation = "horizontal" | "vertical";
746
+ interface RangeSliderMark {
519
747
  /**
520
- * Checkbox variant style
521
- * @default "outline"
748
+ * Value at which the mark should be placed
522
749
  */
523
- variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive";
750
+ value: number;
524
751
  /**
525
- * Checkbox size
526
- * @default "md"
752
+ * Optional label to display at the mark
527
753
  */
528
- size?: "xs" | "sm" | "md" | "lg" | "xl";
754
+ label?: string | React$1.ReactNode;
755
+ }
756
+ interface RangeSliderProps {
529
757
  /**
530
- * Checkbox state
531
- * @default "default"
758
+ * Current value of the range slider (controlled)
759
+ * Tuple of [min, max]
532
760
  */
533
- state?: "default" | "checked" | "indeterminate" | "error" | "disabled";
761
+ value?: [number, number];
534
762
  /**
535
- * Whether checkbox is checked (controlled)
763
+ * Default value of the range slider (uncontrolled)
764
+ * Tuple of [min, max]
765
+ * @default [25, 75]
536
766
  */
537
- checked?: boolean;
767
+ defaultValue?: [number, number];
538
768
  /**
539
- * Whether checkbox is in indeterminate state
540
- * When true, overrides checked state visually
769
+ * Callback fired when the value changes
541
770
  */
542
- indeterminate?: boolean;
771
+ onValueChange?: (value: [number, number]) => void;
543
772
  /**
544
- * Whether checkbox is disabled
773
+ * Minimum value
774
+ * @default 0
545
775
  */
546
- disabled?: boolean;
776
+ min?: number;
547
777
  /**
548
- * Callback fired when checked state changes
778
+ * Maximum value
779
+ * @default 100
549
780
  */
550
- onCheckedChange?: (checked: boolean) => void;
781
+ max?: number;
551
782
  /**
552
- * Custom icon to display when checked
553
- * Defaults to IconCheck from icon system
783
+ * Step increment
784
+ * @default 1
554
785
  */
555
- icon?: React$1.ReactNode;
786
+ step?: number;
556
787
  /**
557
- * Custom icon to display when indeterminate
558
- * Defaults to horizontal line indicator
788
+ * Visual size variant
789
+ * @default "md"
559
790
  */
560
- indeterminateIcon?: React$1.ReactNode;
791
+ size?: RangeSliderSize;
561
792
  /**
562
- * ARIA label for the checkbox
563
- * Required if no visible label is present
793
+ * Visual style variant
794
+ * @default "primary"
564
795
  */
565
- "aria-label"?: string;
796
+ variant?: RangeSliderVariant;
566
797
  /**
567
- * ARIA labelledby reference
568
- * Points to the ID of the element that labels this checkbox
798
+ * Whether the range slider is disabled
799
+ * @default false
569
800
  */
570
- "aria-labelledby"?: string;
801
+ disabled?: boolean;
571
802
  /**
572
- * ARIA describedby reference
573
- * Points to the ID of the element that describes this checkbox
803
+ * Orientation of the range slider
804
+ * @default "horizontal"
574
805
  */
575
- "aria-describedby"?: string;
806
+ orientation?: RangeSliderOrientation;
807
+ /**
808
+ * Marks to display on the range slider
809
+ * Can be an array of mark objects or just an array of values
810
+ */
811
+ marks?: RangeSliderMark[] | number[];
812
+ /**
813
+ * Whether to show labels for marks
814
+ * @default false
815
+ */
816
+ showMarkLabels?: boolean;
817
+ /**
818
+ * Accessible label for the range slider
819
+ */
820
+ "aria-label"?: string;
821
+ /**
822
+ * Name attribute for form submission
823
+ */
824
+ name?: string;
576
825
  }
577
-
578
826
  /**
579
- * Checkbox Component
580
- *
581
- * A fully accessible, theme-aware checkbox component with variant support,
582
- * keyboard navigation, and comprehensive state management.
583
- * Uses button role="checkbox" pattern for full accessibility.
827
+ * RangeSlider component
584
828
  *
585
- * @example
586
- * ```tsx
587
- * <Checkbox
588
- * variant="outline"
589
- * size="md"
590
- * checked={isChecked}
591
- * onCheckedChange={setIsChecked}
592
- * aria-label="Accept terms"
593
- * />
594
- * ```
829
+ * COMPLIANCE NOTES:
830
+ * - ✅ Uses token system exclusively (no raw values)
831
+ * - ✅ Uses Radix UI Slider primitive with minStepsBetweenThumbs
832
+ * - ✅ Follows Extension Authority Contract
833
+ * - ✅ Interactive Size Scale Authority (sm/md/lg)
834
+ * - ✅ InteractiveVariant subset (primary/secondary/outline)
835
+ * - ✅ CVA pattern for variants and sizes
836
+ */
837
+ declare const RangeSlider: React$1.ForwardRefExoticComponent<RangeSliderProps & React$1.RefAttributes<HTMLSpanElement>>;
838
+
839
+ type SliderSize = "sm" | "md" | "lg";
840
+ type SliderVariant = "primary" | "secondary" | "outline";
841
+ type SliderOrientation = "horizontal" | "vertical";
842
+ interface SliderMark {
843
+ /**
844
+ * Value at which the mark should be placed
845
+ */
846
+ value: number;
847
+ /**
848
+ * Optional label to display at the mark
849
+ */
850
+ label?: string | React$1.ReactNode;
851
+ }
852
+ interface SliderProps {
853
+ /**
854
+ * Current value of the slider (controlled)
855
+ */
856
+ value?: number;
857
+ /**
858
+ * Default value of the slider (uncontrolled)
859
+ * @default 50
860
+ */
861
+ defaultValue?: number;
862
+ /**
863
+ * Callback fired when the value changes
864
+ */
865
+ onValueChange?: (value: number) => void;
866
+ /**
867
+ * Minimum value
868
+ * @default 0
869
+ */
870
+ min?: number;
871
+ /**
872
+ * Maximum value
873
+ * @default 100
874
+ */
875
+ max?: number;
876
+ /**
877
+ * Step increment
878
+ * @default 1
879
+ */
880
+ step?: number;
881
+ /**
882
+ * Visual size variant
883
+ * @default "md"
884
+ */
885
+ size?: SliderSize;
886
+ /**
887
+ * Visual style variant
888
+ * @default "primary"
889
+ */
890
+ variant?: SliderVariant;
891
+ /**
892
+ * Whether the slider is disabled
893
+ * @default false
894
+ */
895
+ disabled?: boolean;
896
+ /**
897
+ * Orientation of the slider
898
+ * @default "horizontal"
899
+ */
900
+ orientation?: SliderOrientation;
901
+ /**
902
+ * Marks to display on the slider
903
+ * Can be an array of mark objects or just an array of values
904
+ */
905
+ marks?: SliderMark[] | number[];
906
+ /**
907
+ * Whether to show labels for marks
908
+ * @default false
909
+ */
910
+ showMarkLabels?: boolean;
911
+ /**
912
+ * Accessible label for the slider
913
+ */
914
+ "aria-label"?: string;
915
+ /**
916
+ * Name attribute for form submission
917
+ */
918
+ name?: string;
919
+ }
920
+ /**
921
+ * Slider component
922
+ *
923
+ * COMPLIANCE NOTES:
924
+ * - ✅ Uses token system exclusively (SLIDER_TOKENS, no raw values)
925
+ * - ✅ Uses Radix UI Slider primitive
926
+ * - ✅ Follows Extension Authority Contract
927
+ * - ✅ Interactive Size Scale Authority (sm/md/lg)
928
+ * - ✅ InteractiveVariant subset (primary/secondary/outline)
929
+ * - ✅ tokenCVA pattern for variants and sizes (Decision Matrix RULE 1 compliance)
930
+ */
931
+ declare const Slider: React$1.ForwardRefExoticComponent<SliderProps & React$1.RefAttributes<HTMLSpanElement>>;
932
+
933
+ /**
934
+ * Checkbox Variant Types
935
+ *
936
+ * Explicit union types for Checkbox component.
937
+ * Canonical size scale for interactive components: sm | md | lg
938
+ */
939
+ type CheckboxVariant = "primary" | "secondary" | "outline" | "ghost" | "destructive";
940
+ type CheckboxSize = "sm" | "md" | "lg";
941
+ type CheckboxState = "default" | "checked" | "indeterminate" | "error" | "disabled";
942
+ /**
943
+ * Checkbox Variants
944
+ *
945
+ * tokenCVA-based variant system for Checkbox component (token-driven axes).
946
+ * Supports variants (primary, secondary, outline, ghost, destructive),
947
+ * sizes (sm, md, lg - canonical interactive scale), and states (default, checked, disabled, error, indeterminate).
948
+ * All styling uses token-based values with CSS variable references.
949
+ *
950
+ * NOTE: Size scale restricted to sm|md|lg per canonical interactive size scale (FOUNDATION_LOCK.md).
951
+ * xs and xl sizes removed to comply with Button-defined canonical scale.
952
+ */
953
+ declare const checkboxVariants: (props?: ({
954
+ variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
955
+ size?: "sm" | "md" | "lg" | null | undefined;
956
+ state?: "default" | "disabled" | "error" | "checked" | "indeterminate" | null | undefined;
957
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
958
+
959
+ /**
960
+ * Checkbox Component Props
961
+ *
962
+ * Extends native button HTML attributes with variant props, checked state, and accessibility props.
963
+ * Uses button role="checkbox" pattern for full keyboard accessibility.
964
+ *
965
+ * NOTE: Size scale restricted to sm|md|lg per canonical interactive size scale.
966
+ * VariantProps removed — public API uses explicit union types only.
967
+ */
968
+ interface CheckboxProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style"> {
969
+ /**
970
+ * Checkbox variant style
971
+ * @default "outline"
972
+ */
973
+ variant?: CheckboxVariant;
974
+ /**
975
+ * Checkbox size (canonical interactive scale: sm | md | lg)
976
+ * @default "md"
977
+ */
978
+ size?: CheckboxSize;
979
+ /**
980
+ * Checkbox state
981
+ * @default "default"
982
+ */
983
+ state?: CheckboxState;
984
+ /**
985
+ * Whether checkbox is checked (controlled)
986
+ */
987
+ checked?: boolean;
988
+ /**
989
+ * Whether checkbox is in indeterminate state
990
+ * When true, overrides checked state visually
991
+ */
992
+ indeterminate?: boolean;
993
+ /**
994
+ * Whether checkbox is disabled
995
+ */
996
+ disabled?: boolean;
997
+ /**
998
+ * Callback fired when checked state changes
999
+ */
1000
+ onCheckedChange?: (checked: boolean) => void;
1001
+ /**
1002
+ * Custom icon to display when checked
1003
+ * Defaults to IconCheck from icon system
1004
+ */
1005
+ icon?: React$1.ReactNode;
1006
+ /**
1007
+ * Custom icon to display when indeterminate
1008
+ * Defaults to horizontal line indicator
1009
+ */
1010
+ indeterminateIcon?: React$1.ReactNode;
1011
+ /**
1012
+ * ARIA label for the checkbox
1013
+ * Required if no visible label is present
1014
+ */
1015
+ "aria-label"?: string;
1016
+ /**
1017
+ * ARIA labelledby reference
1018
+ * Points to the ID of the element that labels this checkbox
1019
+ */
1020
+ "aria-labelledby"?: string;
1021
+ /**
1022
+ * ARIA describedby reference
1023
+ * Points to the ID of the element that describes this checkbox
1024
+ */
1025
+ "aria-describedby"?: string;
1026
+ }
1027
+
1028
+ /**
1029
+ * Checkbox Component
1030
+ *
1031
+ * A fully accessible, theme-aware checkbox component with variant support,
1032
+ * keyboard navigation, and comprehensive state management.
1033
+ * Uses button role="checkbox" pattern for full accessibility.
1034
+ *
1035
+ * @example
1036
+ * ```tsx
1037
+ * <Checkbox
1038
+ * variant="outline"
1039
+ * size="md"
1040
+ * checked={isChecked}
1041
+ * onCheckedChange={setIsChecked}
1042
+ * aria-label="Accept terms"
1043
+ * />
1044
+ * ```
595
1045
  */
596
1046
  declare const Checkbox: React$1.ForwardRefExoticComponent<CheckboxProps & React$1.RefAttributes<HTMLButtonElement>>;
597
1047
 
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> {
1048
+ interface LabelProps extends Omit<React$1.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>, "className" | "style"> {
600
1049
  /**
601
1050
  * Whether the field is required (shows asterisk)
602
1051
  */
@@ -606,35 +1055,83 @@ declare const Label: React$1.ForwardRefExoticComponent<LabelProps & React$1.RefA
606
1055
 
607
1056
  /**
608
1057
  * Field Container Component
609
- * Provides spacing between field elements using Stack
1058
+ *
1059
+ * Provides vertical layout structure for form field elements with consistent spacing.
1060
+ * Composes Label, Control wrapper, Description, and Error into a Stack layout.
1061
+ *
1062
+ * @example
1063
+ * ```tsx
1064
+ * <Field>
1065
+ * <Field.Label htmlFor="email">Email</Field.Label>
1066
+ * <Field.Control>
1067
+ * <Input id="email" type="email" />
1068
+ * </Field.Control>
1069
+ * <Field.Description>We'll never share your email.</Field.Description>
1070
+ * </Field>
1071
+ * ```
610
1072
  */
611
1073
  interface FieldProps extends React$1.HTMLAttributes<HTMLDivElement> {
612
1074
  }
613
1075
  declare const Field: React$1.ForwardRefExoticComponent<FieldProps & React$1.RefAttributes<HTMLDivElement>>;
614
1076
  /**
615
1077
  * Field Label Component
616
- * Wraps Label component with proper styling
1078
+ *
1079
+ * Wraps the Foundation Label component for form field labels.
1080
+ * Delegates all behavior and styling to Label (Foundation component).
1081
+ *
1082
+ * @example
1083
+ * ```tsx
1084
+ * <Field.Label htmlFor="email">Email Address</Field.Label>
1085
+ * ```
617
1086
  */
618
1087
  interface FieldLabelProps extends React$1.ComponentProps<typeof Label> {
619
1088
  }
620
1089
  declare const FieldLabel: React$1.ForwardRefExoticComponent<Omit<FieldLabelProps, "ref"> & React$1.RefAttributes<HTMLLabelElement>>;
621
1090
  /**
622
1091
  * Field Control Component
623
- * Wrapper for input/textarea/select controls
1092
+ *
1093
+ * Wrapper for form control elements (Input, Textarea, Select, etc.).
1094
+ * Provides ref forwarding and className merging for control elements.
1095
+ *
1096
+ * @example
1097
+ * ```tsx
1098
+ * <Field.Control>
1099
+ * <Input id="email" type="email" />
1100
+ * </Field.Control>
1101
+ * ```
624
1102
  */
625
1103
  interface FieldControlProps extends React$1.HTMLAttributes<HTMLDivElement> {
626
1104
  }
627
1105
  declare const FieldControl: React$1.ForwardRefExoticComponent<FieldControlProps & React$1.RefAttributes<HTMLDivElement>>;
628
1106
  /**
629
1107
  * Field Description Component
630
- * Helper text displayed below the control
1108
+ *
1109
+ * Helper text displayed below the control to provide additional context.
1110
+ * Uses Text component with size="sm" and muted styling by default.
1111
+ *
1112
+ * @example
1113
+ * ```tsx
1114
+ * <Field.Description>We'll never share your email with anyone else.</Field.Description>
1115
+ * ```
631
1116
  */
632
1117
  interface FieldDescriptionProps extends React$1.ComponentProps<typeof Text> {
633
1118
  }
634
1119
  declare const FieldDescription: React$1.ForwardRefExoticComponent<Omit<FieldDescriptionProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
635
1120
  /**
636
1121
  * Field Error Component
637
- * Error message displayed below the control
1122
+ *
1123
+ * Error message displayed below the control for validation feedback.
1124
+ * Uses Text component with size="sm" wrapped in destructive color span.
1125
+ *
1126
+ * Note: Wrapper span with className="text-destructive" is used to apply
1127
+ * destructive color without modifying Text component (Foundation component).
1128
+ * This pattern allows Field (Composition component) to use className while
1129
+ * respecting Foundation Enforcement rules for Text.
1130
+ *
1131
+ * @example
1132
+ * ```tsx
1133
+ * <Field.Error>Email is required</Field.Error>
1134
+ * ```
638
1135
  */
639
1136
  interface FieldErrorProps extends React$1.ComponentProps<typeof Text> {
640
1137
  }
@@ -647,121 +1144,103 @@ declare const FieldRoot: typeof Field & {
647
1144
  };
648
1145
 
649
1146
  /**
650
- * Input Variants
1147
+ * Input size type
651
1148
  *
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
666
- *
667
- * Available variants: "primary" | "secondary" | "outline" | "ghost" | "destructive"
1149
+ * Available sizes: "sm" | "md" | "lg"
668
1150
  *
669
1151
  * @example
670
1152
  * ```tsx
671
- * const variant: InputVariant = "outline";
1153
+ * const size: InputSize = "md";
672
1154
  * ```
673
1155
  */
674
- type InputVariant = keyof typeof INPUT_TOKENS.variant;
675
-
1156
+ type InputSize = "sm" | "md" | "lg";
676
1157
  /**
677
1158
  * Input Component Props
678
1159
  *
679
- * Extends native input HTML attributes with variant props, icon slots, and accessibility props.
1160
+ * Minimal native-aligned interface for low-level form control primitive.
1161
+ * Extends native input HTML attributes with size and invalid props.
680
1162
  */
681
- interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "className" | "style">, Omit<VariantProps<typeof inputVariants>, "variant" | "size"> {
1163
+ interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "className" | "style"> {
682
1164
  /**
683
- * Input variant style
684
- *
685
- * Supports responsive values:
686
- * - Single value: `variant="outline"`
687
- * - Responsive object: `variant={{ base: "outline", md: "primary" }}`
1165
+ * Input size
688
1166
  *
689
- * @default "outline"
1167
+ * @default "md"
690
1168
  *
691
1169
  * @example
692
1170
  * ```tsx
693
- * // Single value
694
- * <Input variant="outline" />
695
- *
696
- * // Responsive
697
- * <Input variant={{ base: "outline", md: "primary" }} />
1171
+ * <Input size="md" />
698
1172
  * ```
699
1173
  */
700
- variant?: Responsive<InputVariant>;
1174
+ size?: InputSize;
701
1175
  /**
702
- * Input size
1176
+ * Whether the input is in an invalid state
703
1177
  *
704
- * Supports responsive values:
705
- * - Single value: `size="md"`
706
- * - Responsive object: `size={{ base: "sm", md: "lg" }}`
707
- *
708
- * @default "md"
1178
+ * Maps to aria-invalid attribute for accessibility.
709
1179
  *
710
1180
  * @example
711
1181
  * ```tsx
712
- * // Single value
713
- * <Input size="md" />
714
- *
715
- * // Responsive
716
- * <Input size={{ base: "sm", md: "lg" }} />
1182
+ * <Input invalid />
717
1183
  * ```
718
1184
  */
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;
1185
+ invalid?: boolean;
738
1186
  }
739
1187
 
740
1188
  /**
741
1189
  * Input Component
742
1190
  *
743
- * A fully accessible, theme-aware input component with variant support,
744
- * icon slots, and comprehensive state management.
1191
+ * @semantic_role FOUNDATION_PRIMITIVE_TEXT_INPUT
1192
+ * @semantic_definition Input is a low-level form control primitive that wraps the native <input> element.
1193
+ * It is responsible only for visual styling via tokens, accessibility via native and ARIA attributes,
1194
+ * and forwarding all native input behavior. Input does not handle labels, errors, validation,
1195
+ * helper text, or form logic. Higher-level composition is delegated to FormField or domain-level form abstractions.
1196
+ *
1197
+ * @status FOUNDATION LOCK (Target - 2025-12-26)
1198
+ * @rule DO NOT modify, extend, or create alternatives (after Foundation Lock)
1199
+ */
1200
+
1201
+ /**
1202
+ * Input Component
1203
+ *
1204
+ * A minimal, low-level form control primitive that wraps the native <input> element.
1205
+ * Supports size variants and invalid state for accessibility.
745
1206
  *
746
1207
  * @example
747
1208
  * ```tsx
748
- * <Input
749
- * variant="outline"
750
- * size="md"
751
- * placeholder="Enter text..."
752
- * iconLeft={<Icon name="search" />}
753
- * />
1209
+ * <Input size="md" placeholder="Enter text..." />
1210
+ * <Input invalid aria-describedby="error-id" />
754
1211
  * ```
755
1212
  */
756
1213
  declare const Input: React$1.ForwardRefExoticComponent<InputProps & React$1.RefAttributes<HTMLInputElement>>;
757
1214
 
1215
+ /**
1216
+ * Input Variants
1217
+ *
1218
+ * Token-driven CVA system for Input component (size-only variant system).
1219
+ * All styling uses token-based values with CSS variable references.
1220
+ *
1221
+ * Invalid state styling is handled via CSS [aria-invalid="true"] selector (see base classes).
1222
+ */
1223
+ declare const inputVariants: (props?: ({
1224
+ size?: "sm" | "md" | "lg" | null | undefined;
1225
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1226
+
1227
+ /**
1228
+ * Explicit union types for Radio component
1229
+ * Required for CVA type constraints (satisfies Record<Type, string>)
1230
+ */
1231
+ type RadioVariant = "primary" | "secondary" | "outline" | "ghost" | "destructive";
1232
+ type RadioSize = "xs" | "sm" | "md" | "lg" | "xl";
1233
+ type RadioState = "default" | "checked" | "disabled" | "error";
758
1234
  /**
759
1235
  * Radio Variants
760
1236
  *
761
- * CVA-based variant system for Radio component.
1237
+ * tokenCVA-based variant system for Radio component.
762
1238
  * Supports variants (primary, secondary, outline, ghost, destructive),
763
1239
  * sizes (xs, sm, md, lg, xl), and states (default, checked, disabled, error).
764
1240
  * All styling uses token-based values with CSS variable references.
1241
+ *
1242
+ * Uses tokenCVA (not cva) because component has token-driven axes (variant, size, state).
1243
+ * Per CVA Usage Decision Matrix RULE 1: tokenCVA is REQUIRED for token-driven axes.
765
1244
  */
766
1245
  declare const radioVariants: (props?: ({
767
1246
  variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
@@ -769,28 +1248,49 @@ declare const radioVariants: (props?: ({
769
1248
  state?: "default" | "disabled" | "error" | "checked" | null | undefined;
770
1249
  } & class_variance_authority_types.ClassProp) | undefined) => string;
771
1250
 
1251
+ /**
1252
+ * Radio component
1253
+ */
1254
+ 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?: ({
1255
+ variant?: "primary" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
1256
+ size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
1257
+ state?: "default" | "disabled" | "error" | "checked" | null | undefined;
1258
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
1259
+ variant?: RadioVariant;
1260
+ size?: RadioSize;
1261
+ state?: RadioState;
1262
+ checked?: boolean;
1263
+ disabled?: boolean;
1264
+ value?: string;
1265
+ onCheckedChange?: (checked: boolean) => void;
1266
+ icon?: React$1.ReactNode;
1267
+ "aria-label"?: string;
1268
+ "aria-labelledby"?: string;
1269
+ "aria-describedby"?: string;
1270
+ } & React$1.RefAttributes<HTMLButtonElement>>;
1271
+
772
1272
  /**
773
1273
  * Radio Component Props
774
1274
  *
775
1275
  * Extends native button HTML attributes with variant props, checked state, and accessibility props.
776
1276
  * Uses button role="radio" pattern for full keyboard accessibility.
777
1277
  */
778
- interface RadioProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "onChange" | "className" | "style">, VariantProps<typeof radioVariants> {
1278
+ type RadioProps = Omit<React$1.ComponentPropsWithoutRef<"button">, "size" | "onChange" | "className" | "style"> & VariantProps<typeof radioVariants> & {
779
1279
  /**
780
1280
  * Radio variant style
781
1281
  * @default "outline"
782
1282
  */
783
- variant?: "primary" | "secondary" | "outline" | "ghost" | "destructive";
1283
+ variant?: RadioVariant;
784
1284
  /**
785
1285
  * Radio size
786
1286
  * @default "md"
787
1287
  */
788
- size?: "xs" | "sm" | "md" | "lg" | "xl";
1288
+ size?: RadioSize;
789
1289
  /**
790
1290
  * Radio state
791
1291
  * @default "default"
792
1292
  */
793
- state?: "default" | "checked" | "disabled" | "error";
1293
+ state?: RadioState;
794
1294
  /**
795
1295
  * Whether radio is checked (controlled)
796
1296
  */
@@ -828,29 +1328,7 @@ interface RadioProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement
828
1328
  * Points to the ID of the element that describes this radio
829
1329
  */
830
1330
  "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>>;
1331
+ };
854
1332
 
855
1333
  /**
856
1334
  * RadioGroup Component Props
@@ -899,82 +1377,98 @@ interface RadioGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
899
1377
  */
900
1378
  declare const RadioGroup: React$1.ForwardRefExoticComponent<RadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
901
1379
 
1380
+ /**
1381
+ * Textarea size type
1382
+ * Limited to sm, md, lg sizes for strict primitive model
1383
+ */
1384
+ type TextareaSize = "sm" | "md" | "lg";
902
1385
  /**
903
1386
  * Textarea Variants
904
1387
  *
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).
1388
+ * @enforcement Token-driven CVA system using tokenCVA
1389
+ * @rule ALL visual properties MUST use token-based utilities
1390
+ * @rule NO raw Tailwind color/spacing classes allowed
1391
+ *
1392
+ * Strict low-level primitive variant system for Textarea component.
1393
+ * Supports only size variants (sm, md, lg) and default styling.
908
1394
  * All styling uses token-based values with CSS variable references.
1395
+ *
1396
+ * State styling (invalid, disabled) is handled via aria-invalid and disabled attributes,
1397
+ * not as CVA variant axis (per STATE_AUTHORITY).
909
1398
  */
910
1399
  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;
1400
+ size?: "sm" | "md" | "lg" | null | undefined;
915
1401
  } & class_variance_authority_types.ClassProp) | undefined) => string;
916
1402
 
917
1403
  /**
918
1404
  * Textarea Component Props
919
1405
  *
920
- * Extends native textarea HTML attributes with variant props, character counter, and accessibility props.
1406
+ * Strict low-level multiline form control primitive.
1407
+ * Thin wrapper around native <textarea> element with minimal API.
1408
+ *
1409
+ * Note: className and style props are excluded per Foundation Enforcement rule.
1410
+ * State styling (invalid, disabled) is handled via native HTML attributes (disabled, aria-invalid),
1411
+ * not as separate variant axis (per STATE_AUTHORITY).
921
1412
  */
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";
1413
+ interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "rows" | "className" | "style"> {
928
1414
  /**
929
1415
  * Textarea size
1416
+ * Limited to sm, md, lg sizes for strict primitive model
930
1417
  * @default "md"
931
1418
  */
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;
1419
+ size?: TextareaSize;
943
1420
  /**
944
- * Maximum character length (for character counter)
945
- */
946
- maxLength?: number;
947
- /**
948
- * Show character counter
949
- * Only displays when both showCharacterCount and maxLength are provided
1421
+ * Invalid state indicator
1422
+ * Maps to aria-invalid attribute for accessibility
950
1423
  * @default false
951
1424
  */
952
- showCharacterCount?: boolean;
1425
+ invalid?: boolean;
953
1426
  }
954
1427
 
955
1428
  /**
956
1429
  * Textarea Component
957
1430
  *
958
- * A fully accessible, theme-aware textarea component with variant support,
959
- * character counter, and comprehensive state management.
1431
+ * Strict low-level multiline form control primitive.
1432
+ * Thin wrapper around native <textarea> element aligned with Input canonical model.
1433
+ *
1434
+ * State handling follows STATE_AUTHORITY pattern:
1435
+ * - Invalid state: Use invalid={true} or aria-invalid={true} (native HTML attribute)
1436
+ * - Disabled state: Use disabled={true} (native HTML attribute)
1437
+ * - No separate "state" prop (states are derived from HTML attributes)
960
1438
  *
961
1439
  * @example
962
1440
  * ```tsx
963
1441
  * <Textarea
964
- * variant="outline"
965
1442
  * size="md"
966
1443
  * placeholder="Enter text..."
967
- * showCharacterCount
968
- * maxLength={200}
969
1444
  * />
1445
+ *
1446
+ * // Invalid state
1447
+ * <Textarea
1448
+ * invalid={true}
1449
+ * aria-describedby="error-message"
1450
+ * />
1451
+ *
1452
+ * // Disabled state
1453
+ * <Textarea disabled />
970
1454
  * ```
971
1455
  */
972
1456
  declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
973
1457
 
1458
+ /**
1459
+ * Skeleton variant type
1460
+ * Explicit union type for variant prop
1461
+ */
1462
+ type SkeletonVariant = "text" | "inline" | "block" | "card" | "circle";
974
1463
  declare const skeletonVariants: (props?: ({
975
1464
  variant?: "block" | "card" | "text" | "inline" | "circle" | null | undefined;
976
1465
  } & class_variance_authority_types.ClassProp) | undefined) => string;
977
- interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof skeletonVariants> {
1466
+ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement> {
1467
+ /**
1468
+ * Skeleton variant style
1469
+ * @default "text"
1470
+ */
1471
+ variant?: SkeletonVariant;
978
1472
  /**
979
1473
  * Whether to hide from screen readers
980
1474
  * @default true
@@ -993,6 +1487,181 @@ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantP
993
1487
  */
994
1488
  declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
995
1489
 
1490
+ /**
1491
+ * Progress size variants
1492
+ * Subset of GlobalSize scale (sm, md, lg)
1493
+ */
1494
+ type ProgressSize = "sm" | "md" | "lg";
1495
+ /**
1496
+ * Progress component props
1497
+ */
1498
+ interface ProgressProps {
1499
+ /**
1500
+ * Progress value (0-max)
1501
+ */
1502
+ value: number;
1503
+ /**
1504
+ * Maximum progress value
1505
+ * @default 100
1506
+ */
1507
+ max?: number;
1508
+ /**
1509
+ * Progress bar size
1510
+ * @default "md"
1511
+ */
1512
+ size?: ProgressSize;
1513
+ /**
1514
+ * Additional CSS classes (Extension layer allows className)
1515
+ */
1516
+ className?: string;
1517
+ }
1518
+ /**
1519
+ * Progress Component
1520
+ *
1521
+ * Displays visual feedback for operation progress from 0% to 100%.
1522
+ * Shows a filled bar proportional to the completion percentage.
1523
+ *
1524
+ * @example
1525
+ * ```tsx
1526
+ * // Default progress bar (md size)
1527
+ * <Progress value={45} />
1528
+ *
1529
+ * // Small progress bar
1530
+ * <Progress value={75} size="sm" />
1531
+ *
1532
+ * // Large progress bar
1533
+ * <Progress value={30} size="lg" />
1534
+ *
1535
+ * // With max value
1536
+ * <Progress value={3} max={10} /> // 30%
1537
+ * ```
1538
+ */
1539
+ declare const Progress: React$1.ForwardRefExoticComponent<ProgressProps & React$1.RefAttributes<HTMLDivElement>>;
1540
+
1541
+ /**
1542
+ * Separator Color Variant Types
1543
+ *
1544
+ * Explicit union types for Separator component color variants.
1545
+ */
1546
+ type SeparatorColor = "border" | "muted" | "primary" | "secondary" | "accent";
1547
+ /**
1548
+ * Separator Thickness Types
1549
+ *
1550
+ * Explicit union types for Separator component thickness variants.
1551
+ */
1552
+ type SeparatorThickness = "1" | "2";
1553
+ /**
1554
+ * Separator variants using tokenCVA
1555
+ *
1556
+ * Token-based styling for:
1557
+ * - Orientation (horizontal/vertical)
1558
+ * - Color variants
1559
+ * - Thickness variants
1560
+ */
1561
+ declare const separatorVariants: (props?: ({
1562
+ orientation?: "horizontal" | "vertical" | null | undefined;
1563
+ color?: "primary" | "secondary" | "muted" | "accent" | "border" | null | undefined;
1564
+ thickness?: "1" | "2" | null | undefined;
1565
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1566
+ interface SeparatorProps extends React$1.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {
1567
+ /**
1568
+ * Orientation of the separator
1569
+ * @default "horizontal"
1570
+ */
1571
+ orientation?: "horizontal" | "vertical";
1572
+ /**
1573
+ * Whether the separator is decorative (no semantic meaning)
1574
+ * @default true
1575
+ */
1576
+ decorative?: boolean;
1577
+ /**
1578
+ * Color variant
1579
+ * @default "border"
1580
+ */
1581
+ color?: SeparatorColor;
1582
+ /**
1583
+ * Thickness variant
1584
+ * @default "1"
1585
+ */
1586
+ thickness?: SeparatorThickness;
1587
+ }
1588
+ /**
1589
+ * Separator component
1590
+ *
1591
+ * COMPLIANCE NOTES:
1592
+ * - ✅ Uses @radix-ui/react-separator for behavior
1593
+ * - ✅ Token-based styling (tokenCVA, SEPARATOR_TOKENS)
1594
+ * - ✅ Supports horizontal and vertical orientations
1595
+ * - ✅ Semantic (role="separator") vs decorative (role="none")
1596
+ * - ✅ ARIA attributes handled by Radix
1597
+ * - ✅ Follows Extension Authority Contract
1598
+ * - ✅ Explicit union types (SeparatorColor, SeparatorThickness)
1599
+ * - ✅ Type constraints (satisfies Record<Type, string>)
1600
+ */
1601
+ declare const Separator: React$1.ForwardRefExoticComponent<SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
1602
+
1603
+ /**
1604
+ * AspectRatio Component
1605
+ *
1606
+ * Container that maintains a fixed aspect ratio for its content.
1607
+ * Useful for responsive images, videos, and cards.
1608
+ *
1609
+ * @example
1610
+ * ```tsx
1611
+ * // 16:9 aspect ratio (video)
1612
+ * <AspectRatio ratio={16 / 9}>
1613
+ * <img src="..." alt="..." />
1614
+ * </AspectRatio>
1615
+ *
1616
+ * // Square aspect ratio (1:1)
1617
+ * <AspectRatio ratio={1}>
1618
+ * <img src="..." alt="..." />
1619
+ * </AspectRatio>
1620
+ *
1621
+ * // Using preset
1622
+ * <AspectRatio preset="video">
1623
+ * <iframe src="..." />
1624
+ * </AspectRatio>
1625
+ * ```
1626
+ */
1627
+
1628
+ /**
1629
+ * Common aspect ratio presets
1630
+ */
1631
+ declare const ASPECT_RATIO_PRESETS: {
1632
+ readonly square: number;
1633
+ readonly video: number;
1634
+ readonly cinema: number;
1635
+ readonly portrait: number;
1636
+ readonly photo: number;
1637
+ readonly golden: number;
1638
+ };
1639
+ type AspectRatioPreset = keyof typeof ASPECT_RATIO_PRESETS;
1640
+ interface AspectRatioProps extends React$1.ComponentPropsWithoutRef<typeof AspectRatioPrimitive.Root> {
1641
+ /**
1642
+ * Aspect ratio as a number (width / height)
1643
+ * @example 16 / 9 for 16:9 ratio
1644
+ * @example 1 for square (1:1)
1645
+ */
1646
+ ratio?: number;
1647
+ /**
1648
+ * Preset aspect ratio
1649
+ * Overrides `ratio` prop if provided
1650
+ */
1651
+ preset?: AspectRatioPreset;
1652
+ }
1653
+ /**
1654
+ * AspectRatio component
1655
+ *
1656
+ * COMPLIANCE NOTES:
1657
+ * - ✅ Uses @radix-ui/react-aspect-ratio for behavior
1658
+ * - ✅ Pure layout utility (no visual tokens needed)
1659
+ * - ✅ Supports custom ratios and common presets
1660
+ * - ✅ Responsive by default
1661
+ * - ✅ Follows Extension Authority Contract
1662
+ */
1663
+ declare const AspectRatio: React$1.ForwardRefExoticComponent<AspectRatioProps & React$1.RefAttributes<HTMLDivElement>>;
1664
+
996
1665
  /**
997
1666
  * Layout Primitives Shared Types
998
1667
  *
@@ -1214,14 +1883,9 @@ interface StackProps extends Omit<BoxProps, "display" | "flexDirection" | "gap">
1214
1883
  direction?: "vertical" | "horizontal";
1215
1884
  /**
1216
1885
  * 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.
1886
+ * This is the canonical prop for spacing.
1218
1887
  */
1219
1888
  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
1889
  /**
1226
1890
  * Align items
1227
1891
  */
@@ -1378,6 +2042,27 @@ declare const Flex: React$1.ForwardRefExoticComponent<FlexProps & React$1.RefAtt
1378
2042
  interface GridProps extends Omit<BoxProps, "display" | "align" | "justify"> {
1379
2043
  /**
1380
2044
  * Number of columns (1-6, 12, or none)
2045
+ *
2046
+ * Can be a simple value, a responsive object, or combined with shorthand props (sm, md, lg, xl, 2xl).
2047
+ * Merging behavior:
2048
+ * - If `cols` is a simple value and shorthand props are provided, `cols` becomes the base value
2049
+ * - If `cols` is undefined and shorthand props are provided, shorthand props are used directly
2050
+ * - If `cols` is a responsive object and shorthand props are provided, they are merged together
2051
+ *
2052
+ * @example
2053
+ * ```tsx
2054
+ * // Simple value
2055
+ * <Grid cols={3} />
2056
+ *
2057
+ * // Responsive object
2058
+ * <Grid cols={{ base: 1, md: 2, lg: 3 }} />
2059
+ *
2060
+ * // Shorthand props (cols becomes base)
2061
+ * <Grid cols={1} md={2} lg={3} />
2062
+ *
2063
+ * // Shorthand props only (no cols)
2064
+ * <Grid sm={1} md={2} lg={3} />
2065
+ * ```
1381
2066
  */
1382
2067
  cols?: ResponsiveColumns;
1383
2068
  /**
@@ -1451,14 +2136,19 @@ interface RowProps extends Omit<StackProps, "direction"> {
1451
2136
  */
1452
2137
  declare const Row: React$1.ForwardRefExoticComponent<RowProps & React$1.RefAttributes<HTMLDivElement>>;
1453
2138
 
2139
+ /**
2140
+ * Surface variant type (canonical SurfaceVariant dictionary)
2141
+ * @see docs/architecture/VARIANTS_SIZE_CANON.md for canonical variant dictionary
2142
+ */
2143
+ type SurfaceVariantType = "default" | "elevated" | "outlined" | "filled" | "subtle";
1454
2144
  declare const surfaceVariants: (props?: ({
1455
- variant?: "flat" | "raised" | "sunken" | "outline" | "subtle" | null | undefined;
2145
+ variant?: "default" | "subtle" | "elevated" | "outlined" | "filled" | null | undefined;
1456
2146
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1457
- interface SurfaceProps extends Omit<BoxProps, "bg" | "shadow" | "radius" | "p">, VariantProps<typeof surfaceVariants> {
2147
+ interface SurfaceProps extends Omit<BoxProps, "bg" | "shadow" | "radius" | "p"> {
1458
2148
  /**
1459
- * Surface variant
2149
+ * Surface variant (canonical SurfaceVariant dictionary)
1460
2150
  */
1461
- variant?: "flat" | "raised" | "sunken" | "outline" | "subtle";
2151
+ variant?: SurfaceVariantType;
1462
2152
  /**
1463
2153
  * Padding - token-based (sm, md, lg, xl)
1464
2154
  * Overrides default variant padding
@@ -1557,7 +2247,7 @@ declare const CardFooter: React$1.ForwardRefExoticComponent<CardFooterProps & Re
1557
2247
  * All styling uses tokens exclusively (no raw CSS values).
1558
2248
  */
1559
2249
 
1560
- interface SectionProps extends Omit<StackProps, "py" | "gap"> {
2250
+ interface SectionProps extends Omit<StackProps, "py" | "spacing"> {
1561
2251
  /**
1562
2252
  * Vertical padding - token-based
1563
2253
  * Accepts spacing tokens (xs, sm, md, lg, xl, 2xl, etc.) or responsive object
@@ -1566,12 +2256,12 @@ interface SectionProps extends Omit<StackProps, "py" | "gap"> {
1566
2256
  */
1567
2257
  padding?: ResponsiveSpacing;
1568
2258
  /**
1569
- * Gap spacing for content blocks - token-based
2259
+ * Spacing for content blocks - token-based
1570
2260
  * Accepts spacing tokens (xs, sm, md, lg, xl, 2xl, etc.) or responsive object
1571
- * @example gap="md"
1572
- * @example gap={{ base: "sm", lg: "xl" }}
2261
+ * @example spacing="md"
2262
+ * @example spacing={{ base: "sm", lg: "xl" }}
1573
2263
  */
1574
- gap?: ResponsiveSpacing;
2264
+ spacing?: ResponsiveSpacing;
1575
2265
  /**
1576
2266
  * Render as different HTML element
1577
2267
  */
@@ -1702,31 +2392,51 @@ declare const Dialog: React$1.FC<DialogProps> & {
1702
2392
  Footer: React$1.ForwardRefExoticComponent<DialogFooterProps & React$1.RefAttributes<HTMLDivElement>>;
1703
2393
  };
1704
2394
 
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
- }
2395
+ /**
2396
+ * Toast variant type
2397
+ * Represents visual intent only (no behavior changes)
2398
+ */
2399
+ type ToastVariant = "default" | "success" | "warning" | "error";
2400
+ /**
2401
+ * Toast data type for imperative toast creation
2402
+ * Used by useGlobalToast and other toast management hooks
2403
+ */
1712
2404
  interface ToastData {
1713
- id: string;
2405
+ variant?: ToastVariant;
1714
2406
  title?: string;
1715
2407
  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
2408
  duration?: ResponsiveDelay;
2409
+ action?: {
2410
+ label: string;
2411
+ onClick: () => void;
2412
+ };
1724
2413
  }
2414
+ /**
2415
+ * Toast options type for toast configuration
2416
+ */
2417
+ type ToastOptions = Partial<ToastData>;
2418
+ declare const toastVariants: (props?: ({
2419
+ variant?: "default" | "error" | "success" | "warning" | null | undefined;
2420
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1725
2421
  interface ToastRootProps extends Omit<React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Root>, "duration">, VariantProps<typeof toastVariants> {
1726
2422
  /**
1727
- * Toast data
2423
+ * Controlled open state
2424
+ * Must be provided externally - Toast does not own state
1728
2425
  */
1729
- toast: ToastData;
2426
+ open: boolean;
2427
+ /**
2428
+ * Callback when open state changes
2429
+ * Must be provided externally - Toast does not own state
2430
+ */
2431
+ onOpenChange: (open: boolean) => void;
2432
+ /**
2433
+ * Visual variant (visual only, no behavior changes)
2434
+ */
2435
+ variant?: ToastVariant;
2436
+ /**
2437
+ * Children (use ToastTitle, ToastDescription, ToastAction, ToastClose)
2438
+ */
2439
+ children: React$1.ReactNode;
1730
2440
  }
1731
2441
  /**
1732
2442
  * Toast Action component
@@ -1742,7 +2452,7 @@ declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitive
1742
2452
  * Rationale: Previous API used `Toast` as the main component name.
1743
2453
  * This alias allows existing code to continue working without changes.
1744
2454
  * Note: This is a simple alias - no legacy behavior is preserved.
1745
- * The component is fully Radix-based regardless of which name is used.
2455
+ * The component is fully stateless regardless of which name is used.
1746
2456
  *
1747
2457
  * - ToastProps: Alias for ToastRootProps
1748
2458
  * Rationale: Previous API used `ToastProps` as the type name.
@@ -1754,7 +2464,21 @@ declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitive
1754
2464
  * - These legacy exports may be removed in a future major version
1755
2465
  */
1756
2466
  type ToastProps = ToastRootProps;
1757
- declare const Toast: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.RefAttributes<HTMLLIElement>>;
2467
+ declare const Toast$1: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.RefAttributes<HTMLLIElement>>;
2468
+
2469
+ interface ToastProviderProps extends React$1.ComponentPropsWithoutRef<typeof ToastPrimitives.Provider> {
2470
+ /**
2471
+ * Children to render
2472
+ */
2473
+ children: React$1.ReactNode;
2474
+ }
2475
+ /**
2476
+ * ToastProvider component
2477
+ * Thin wrapper around Radix Toast.Provider with props passthrough.
2478
+ * Radix handles all state management, auto-dismiss, and queue management.
2479
+ * This component is stateless and does not own any state or business logic.
2480
+ */
2481
+ declare function ToastProvider({ children, ...props }: ToastProviderProps): react_jsx_runtime.JSX.Element;
1758
2482
 
1759
2483
  /**
1760
2484
  * ToastViewport Component
@@ -1765,7 +2489,7 @@ declare const Toast: React$1.ForwardRefExoticComponent<ToastRootProps & React$1.
1765
2489
  * Radix Toast.Viewport handles portal rendering internally.
1766
2490
  * Tenerife UI provides visual styling and positioning through tokens only.
1767
2491
  *
1768
- * This component is locked as a foundation component per TUI_ARCHITECTURE_LOCK.md.
2492
+ * This component is locked as a foundation component per UI_ARCHITECTURE_LOCK.md.
1769
2493
  * DO NOT reimplement portal logic - Radix handles this internally.
1770
2494
  */
1771
2495
 
@@ -1783,99 +2507,69 @@ interface ToastViewportProps extends React$1.ComponentPropsWithoutRef<typeof Toa
1783
2507
  */
1784
2508
  declare const ToastViewport: React$1.ForwardRefExoticComponent<ToastViewportProps & React$1.RefAttributes<HTMLOListElement>>;
1785
2509
 
1786
- interface ToastOptions {
2510
+ type ToastType = "success" | "error" | "warning" | "info";
2511
+ interface Toast {
2512
+ id: string;
2513
+ type: ToastType;
1787
2514
  title?: string;
1788
2515
  description?: string;
1789
- variant?: "default" | "success" | "info" | "warning" | "danger";
1790
- action?: ToastActionData;
1791
2516
  /**
1792
2517
  * Toast duration - token-based
1793
2518
  * Uses motion duration tokens
1794
- * Passed to Radix Toast.Root duration prop (Radix handles auto-dismiss)
1795
2519
  */
1796
2520
  duration?: ResponsiveDelay;
1797
- }
1798
- interface ToastContextType {
1799
- toast: (options: ToastOptions) => string;
1800
- dismiss: (id: string) => void;
2521
+ action?: {
2522
+ label: string;
2523
+ onClick: () => void;
2524
+ };
2525
+ }
2526
+ interface UseToastReturn {
2527
+ toasts: Toast[];
2528
+ toast: (toast: Omit<Toast, "id">) => string;
2529
+ dismiss: (toastId: string) => void;
1801
2530
  dismissAll: () => void;
1802
2531
  }
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;
2532
+ declare function useLocalToast(): UseToastReturn;
1836
2533
 
1837
2534
  declare function Toaster(): react_jsx_runtime.JSX.Element;
1838
2535
 
1839
2536
  /**
1840
2537
  * ============================================================================
1841
- * 🔒 FOUNDATION LOCK - ContextMenu Component
2538
+ * FOUNDATION · LEGACY · UNLOCKED_FOR_MIGRATION - ContextMenu Component
1842
2539
  * ============================================================================
1843
2540
  *
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.**
2541
+ * **STATUS:** LEGACY UNLOCKED (Pending Canonical Migration)
2542
+ * **UNLOCK DATE:** 2025-12-19
2543
+ * **TASK:** TUNG_FOUNDATION_LEGACY_UNLOCK_01
2544
+ *
2545
+ * **UNLOCK RATIONALE:**
2546
+ * ContextMenu was declared as LOCKED but was implemented using legacy patterns
2547
+ * and never passed the canonical Foundation Step Pipeline (0–13). The current
2548
+ * lock is declarative only and blocks required migration.
2549
+ *
2550
+ * **MIGRATION PATH:**
2551
+ * ContextMenu will undergo canonical Foundation lock process (Steps 0–13) to
2552
+ * ensure full compliance with all Authority Contracts and canonical lifecycle
2553
+ * requirements, similar to Button/Link standards.
2554
+ *
2555
+ * **CONSTRAINTS DURING UNLOCK:**
2556
+ * - No public API expansion
2557
+ * - No new variants or sizes
2558
+ * - No behavior changes outside canonicalization
2559
+ * - No bypass of Authority Contracts
2560
+ * - Refactor strictly via Foundation Step Pipeline
2561
+ * - Canonical CVA, typing, and interaction refactor allowed
2562
+ * - ✅ Authority Contract alignment allowed
2563
+ *
2564
+ * **EXIT CRITERIA:**
2565
+ * - Component completes Steps 0–13
2566
+ * - Foundation lock report exists
2567
+ * - Public Type Surface is locked
2568
+ * - Component re-marked as FOUNDATION · LOCKED
2569
+ *
2570
+ * **REFERENCE:**
2571
+ * - docs/architecture/FOUNDATION_LOCK.md (Legacy Foundation Components section)
2572
+ * - docs/workflows/foundation/FOUNDATION_STEP_PIPELINE.md
1879
2573
  *
1880
2574
  * ============================================================================
1881
2575
  *
@@ -2187,7 +2881,7 @@ interface NotificationData {
2187
2881
  description?: string;
2188
2882
  variant?: NotificationVariant;
2189
2883
  channel?: NotificationChannel;
2190
- action?: ToastActionData;
2884
+ action?: ToastData["action"];
2191
2885
  /**
2192
2886
  * Notification duration - token-based
2193
2887
  * Uses motion duration tokens
@@ -2205,7 +2899,7 @@ interface NotificationOptions {
2205
2899
  description?: string;
2206
2900
  variant?: NotificationVariant;
2207
2901
  channel?: NotificationChannel;
2208
- action?: ToastActionData;
2902
+ action?: ToastData["action"];
2209
2903
  /**
2210
2904
  * Notification duration - token-based
2211
2905
  * Uses motion duration tokens
@@ -2280,10 +2974,6 @@ interface NotificationCenterItemProps extends Omit<React$1.HTMLAttributes<HTMLLI
2280
2974
  * Callback when notification is clicked
2281
2975
  */
2282
2976
  onClick?: (id: string) => void;
2283
- /**
2284
- * Show expandable details
2285
- */
2286
- expandable?: boolean;
2287
2977
  }
2288
2978
  /**
2289
2979
  * NotificationCenter.Item component - individual notification item
@@ -2442,10 +3132,24 @@ declare const NotificationCenter: {
2442
3132
  DismissAll: React$1.ForwardRefExoticComponent<NotificationCenterDismissAllProps & React$1.RefAttributes<HTMLButtonElement>>;
2443
3133
  };
2444
3134
 
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> & {
3135
+ /**
3136
+ * Popover variant type - Explicit union (not derived from CVA)
3137
+ */
3138
+ type PopoverVariant = "primary" | "secondary" | "accent" | "outline" | "ghost" | "link" | "destructive";
3139
+ /**
3140
+ * Popover size type - Explicit union (not derived from CVA)
3141
+ * Restricted to sm, md, lg per overlay size restriction rule (VARIANTS_SIZE_CANON.md)
3142
+ */
3143
+ type PopoverSize = "sm" | "md" | "lg";
3144
+ /**
3145
+ * PopoverContent - Styled popover content component
3146
+ *
3147
+ * Use this component directly when composing custom popover implementations.
3148
+ * For simpler use cases, prefer PopoverWrapper.
3149
+ */
3150
+ declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref">, "sideOffset" | "alignOffset"> & {
3151
+ variant?: PopoverVariant;
3152
+ size?: PopoverSize;
2449
3153
  sideOffset?: ResponsiveSideOffset;
2450
3154
  alignOffset?: ResponsiveAlignOffset;
2451
3155
  } & React$1.RefAttributes<HTMLDivElement>>;
@@ -2458,7 +3162,15 @@ declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<Omit<Popove
2458
3162
  */
2459
3163
 
2460
3164
  interface HoverCardContentProps extends Omit<React$1.ComponentPropsWithoutRef<typeof PopoverContent>, "onMouseEnter" | "onMouseLeave"> {
3165
+ /**
3166
+ * Mouse enter handler
3167
+ * Called when mouse enters the content area (keeps hover card open)
3168
+ */
2461
3169
  onMouseEnter?: React$1.MouseEventHandler<HTMLDivElement>;
3170
+ /**
3171
+ * Mouse leave handler
3172
+ * Called when mouse leaves the content area (closes hover card)
3173
+ */
2462
3174
  onMouseLeave?: React$1.MouseEventHandler<HTMLDivElement>;
2463
3175
  }
2464
3176
  /**
@@ -2489,10 +3201,12 @@ interface HoverCardRootProps {
2489
3201
  onOpenChange?: (open: boolean) => void;
2490
3202
  /**
2491
3203
  * Default open state (uncontrolled mode)
3204
+ * @default false
2492
3205
  */
2493
3206
  defaultOpen?: boolean;
2494
3207
  /**
2495
3208
  * Whether the hover card is modal (blocks interaction with other elements)
3209
+ * @default false
2496
3210
  */
2497
3211
  modal?: boolean;
2498
3212
  /**
@@ -2517,6 +3231,8 @@ declare namespace HoverCardRoot {
2517
3231
  interface HoverCardTriggerProps extends React$1.HTMLAttributes<HTMLElement> {
2518
3232
  /**
2519
3233
  * Render as child element (composition pattern)
3234
+ * When true, the component will merge its props with its child element
3235
+ * @default false
2520
3236
  */
2521
3237
  asChild?: boolean;
2522
3238
  }
@@ -2526,35 +3242,57 @@ interface HoverCardTriggerProps extends React$1.HTMLAttributes<HTMLElement> {
2526
3242
  declare const HoverCardTrigger: React$1.ForwardRefExoticComponent<HoverCardTriggerProps & React$1.RefAttributes<HTMLElement>>;
2527
3243
 
2528
3244
  /**
2529
- * DataList Root Component
3245
+ * ============================================================================
3246
+ * 🔒 FOUNDATION · LOCKED - Tabs Component
3247
+ * ============================================================================
2530
3248
  *
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
3249
+ * **STATUS:** LOCKED (Pipeline 18A Complete, 2025-12-25)
3250
+ * **LOCK DATE:** 2025-12-25
3251
+ * **PIPELINE:** Pipeline 18A (Steps 0-12 complete)
3252
+ *
3253
+ * **LOCK RATIONALE:**
3254
+ * Tabs has completed canonical Foundation Step Pipeline (Steps 0-12) and
3255
+ * demonstrates full compliance with all Authority Contracts and canonical
3256
+ * lifecycle requirements.
3257
+ *
3258
+ * **REFERENCE:**
3259
+ * - docs/architecture/FOUNDATION_LOCK.md
3260
+ * - docs/workflows/foundation/FOUNDATION_STEP_PIPELINE.md
3261
+ * - docs/reports/audit/TABS_BASELINE_REPORT.md
3262
+ *
3263
+ * ============================================================================
3264
+ *
3265
+ * ARCHITECTURAL INVARIANTS (MANDATORY)
3266
+ * ============================================================================
3267
+ *
3268
+ * **RADIX OWNERSHIP INVARIANT:**
3269
+ * - All runtime behavior (keyboard navigation, focus management, ARIA attributes,
3270
+ * state management, disabled state handling) MUST be delegated to Radix primitives.
3271
+ * - Tabs component MUST NOT implement custom state management or interaction logic.
3272
+ * - Tabs component MUST NOT override or extend Radix behavior beyond visual styling.
3273
+ * - Violation: Adding useState, useEffect, useRef, or custom event handlers for behavior.
3274
+ *
3275
+ * **STYLING/TOKEN OWNERSHIP INVARIANT:**
3276
+ * - All visual styling MUST use TABS_TOKENS as the single source of truth.
3277
+ * - All spacing, typography, colors, radius, shadows MUST reference tokens, never raw values.
3278
+ * - Tabs component owns visual styling at COMPOSITION level, Foundation tokens own token definitions.
3279
+ * - Violation: Using raw CSS values, inline styles, or non-token Tailwind classes for styling.
3280
+ *
3281
+ * **VARIANT SYSTEM INVARIANT:**
3282
+ * - Variant system (underline, pill, segmented) is FINITE and EXPLICIT.
3283
+ * - Size system (sm, md, lg) is FINITE and EXPLICIT.
3284
+ * - Tone system (neutral, primary) is FINITE and EXPLICIT.
3285
+ * - Adding new variants, sizes, or tones REQUIRES Foundation Step Pipeline approval.
3286
+ * - Violation: Adding new variant/size/tone values without pipeline approval.
3287
+ *
3288
+ * **PUBLIC API INVARIANT:**
3289
+ * - Public API surface MUST remain minimal and expressive.
3290
+ * - Custom props (size, variant, tone, icon props) MUST be token-based unions.
3291
+ * - Radix props MUST be passed through without modification.
3292
+ * - Violation: Adding non-token props, changing prop types, or modifying Radix prop behavior.
3293
+ *
3294
+ * ============================================================================
2544
3295
  *
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
3296
  * Tabs Component
2559
3297
  *
2560
3298
  * Radix-based tabs component with token-driven styling.
@@ -2576,15 +3314,15 @@ interface TabsListProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Tab
2576
3314
  }
2577
3315
  interface TabsTriggerProps extends Omit<React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>, "size" | "variant" | "tone"> {
2578
3316
  /**
2579
- * Size variant - token-based (inherited from context if not provided)
3317
+ * Size variant - token-based (defaults to "md" if not provided)
2580
3318
  */
2581
3319
  size?: ResponsiveTabsSize;
2582
3320
  /**
2583
- * Visual variant - token-based (inherited from context if not provided)
3321
+ * Visual variant - token-based (defaults to "underline" if not provided)
2584
3322
  */
2585
3323
  variant?: TabsVariantToken;
2586
3324
  /**
2587
- * Tone - token-based (inherited from context if not provided)
3325
+ * Tone - token-based (defaults to "primary" if not provided)
2588
3326
  */
2589
3327
  tone?: TabsToneToken;
2590
3328
  /**
@@ -2613,6 +3351,25 @@ declare const Tabs: {
2613
3351
  Content: React$1.ForwardRefExoticComponent<TabsContentProps & React$1.RefAttributes<HTMLDivElement>>;
2614
3352
  };
2615
3353
 
3354
+ /**
3355
+ * Size options for SegmentedControl
3356
+ * @public
3357
+ */
3358
+ type SegmentedControlSize = "sm" | "md" | "lg";
3359
+ /**
3360
+ * Orientation options for SegmentedControl
3361
+ * @public
3362
+ */
3363
+ type SegmentedControlOrientation = "horizontal" | "vertical";
3364
+ /**
3365
+ * Size Mapping Table (per SIZE_MAPPING_SPEC.md)
3366
+ *
3367
+ * | Size | heightToken | paddingXToken | paddingYToken | textToken | radiusToken |
3368
+ * |------|-------------|---------------|---------------|-----------|-------------|
3369
+ * | 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 |
3370
+ * | 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 |
3371
+ * | 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 |
3372
+ */
2616
3373
  declare const segmentedControlRootVariants: (props?: ({
2617
3374
  orientation?: "horizontal" | "vertical" | null | undefined;
2618
3375
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -2621,7 +3378,7 @@ declare const segmentedControlItemVariants: (props?: ({
2621
3378
  size?: "sm" | "md" | "lg" | null | undefined;
2622
3379
  state?: "default" | "selected" | null | undefined;
2623
3380
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2624
- interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "role">, VariantProps<typeof segmentedControlRootVariants> {
3381
+ interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "role"> {
2625
3382
  /**
2626
3383
  * Controlled value
2627
3384
  */
@@ -2638,8 +3395,18 @@ interface SegmentedControlRootProps extends Omit<React$1.HTMLAttributes<HTMLDivE
2638
3395
  * Name for the radio group
2639
3396
  */
2640
3397
  name?: string;
3398
+ /**
3399
+ * Orientation of the segmented control
3400
+ * @default "horizontal"
3401
+ */
3402
+ orientation?: SegmentedControlOrientation;
3403
+ /**
3404
+ * Size of the segmented control
3405
+ * @default "md"
3406
+ */
3407
+ size?: SegmentedControlSize;
2641
3408
  }
2642
- interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "role">, VariantProps<typeof segmentedControlItemVariants> {
3409
+ interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "role"> {
2643
3410
  /**
2644
3411
  * Value of this item
2645
3412
  */
@@ -2648,6 +3415,10 @@ interface SegmentedControlItemProps extends Omit<React$1.ButtonHTMLAttributes<HT
2648
3415
  * Whether this item is disabled
2649
3416
  */
2650
3417
  disabled?: boolean;
3418
+ /**
3419
+ * Size of this item (overrides Root size if provided)
3420
+ */
3421
+ size?: SegmentedControlSize;
2651
3422
  }
2652
3423
  declare const SegmentedControl: React$1.ForwardRefExoticComponent<SegmentedControlRootProps & React$1.RefAttributes<HTMLDivElement>> & {
2653
3424
  Root: React$1.ForwardRefExoticComponent<SegmentedControlRootProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -2685,10 +3456,6 @@ interface BreadcrumbsRootProps extends React$1.HTMLAttributes<HTMLElement> {
2685
3456
  ariaLabel?: string;
2686
3457
  }
2687
3458
  interface BreadcrumbsItemProps extends React$1.HTMLAttributes<HTMLLIElement> {
2688
- /**
2689
- * Whether this is the last item (current page)
2690
- */
2691
- isLast?: boolean;
2692
3459
  /**
2693
3460
  * Whether this item is disabled
2694
3461
  */
@@ -2864,35 +3631,391 @@ interface StepperLabelProps extends React$1.HTMLAttributes<HTMLDivElement> {
2864
3631
  /**
2865
3632
  * Optional description
2866
3633
  */
2867
- description?: string;
3634
+ description?: string;
3635
+ /**
3636
+ * Whether this is the active step
3637
+ */
3638
+ isActive: boolean;
3639
+ }
3640
+ interface StepperContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
3641
+ /**
3642
+ * Step index this content belongs to
3643
+ */
3644
+ stepIndex: number;
3645
+ /**
3646
+ * Whether this content should be visible
3647
+ */
3648
+ isActive: boolean;
3649
+ }
3650
+ /**
3651
+ * Stepper.Item - Individual step container
3652
+ */
3653
+ interface StepperItemPropsInternal extends StepperItemProps {
3654
+ orientation?: "horizontal" | "vertical";
3655
+ }
3656
+ declare const Stepper: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>> & {
3657
+ Root: React$1.ForwardRefExoticComponent<StepperRootProps & React$1.RefAttributes<HTMLDivElement>>;
3658
+ Item: React$1.ForwardRefExoticComponent<StepperItemPropsInternal & React$1.RefAttributes<HTMLDivElement>>;
3659
+ Indicator: React$1.ForwardRefExoticComponent<StepperIndicatorProps & React$1.RefAttributes<HTMLDivElement>>;
3660
+ Label: React$1.ForwardRefExoticComponent<StepperLabelProps & React$1.RefAttributes<HTMLDivElement>>;
3661
+ Content: React$1.ForwardRefExoticComponent<StepperContentProps & React$1.RefAttributes<HTMLDivElement>>;
3662
+ };
3663
+
3664
+ interface NavSeparatorProps extends React$1.HTMLAttributes<HTMLSpanElement> {
3665
+ /**
3666
+ * Separator content
3667
+ * @default '/'
3668
+ */
3669
+ children?: React$1.ReactNode;
3670
+ /**
3671
+ * Render as child element (composition pattern via Radix Slot)
3672
+ * When true, renders children through Slot component instead of <span>
3673
+ */
3674
+ asChild?: boolean;
3675
+ }
3676
+ /**
3677
+ * NavSeparator component
3678
+ *
3679
+ * Renders a visual separator between navigation items.
3680
+ * This is a purely decorative element with `aria-hidden="true"`.
3681
+ *
3682
+ * COMPLIANCE NOTES:
3683
+ * - ✅ Uses token system exclusively (NAVIGATION_TOKENS)
3684
+ * - ✅ Purely visual component (no logic, no state)
3685
+ * - ✅ Follows Extension Authority Contract
3686
+ * - ✅ Uses descriptive, intent-based naming
3687
+ * - ✅ Does NOT duplicate Foundation functionality
3688
+ * - ✅ aria-hidden="true" always set
3689
+ */
3690
+ declare const NavSeparator: React$1.ForwardRefExoticComponent<NavSeparatorProps & React$1.RefAttributes<HTMLSpanElement>>;
3691
+
3692
+ interface NavTextProps extends React$1.HTMLAttributes<HTMLSpanElement> {
3693
+ /**
3694
+ * Child content (text content for navigation)
3695
+ */
3696
+ children: React$1.ReactNode;
3697
+ /**
3698
+ * ARIA current attribute for indicating current page/location
3699
+ * NavText MAY accept aria-current='page' for accessibility
3700
+ * NavText does NOT determine this state; it only passes through externally provided value
3701
+ */
3702
+ "aria-current"?: "page";
3703
+ /**
3704
+ * Render as child element (composition pattern via Radix Slot)
3705
+ * When true, renders children through Slot component instead of <span>
3706
+ */
3707
+ asChild?: boolean;
3708
+ }
3709
+ /**
3710
+ * NavText component
3711
+ *
3712
+ * Non-interactive navigation text primitive that renders semantic text
3713
+ * for navigation structures. This component is fully stateless and does
3714
+ * not perform routing, route matching, or state detection.
3715
+ *
3716
+ * COMPLIANCE NOTES:
3717
+ * - ✅ Uses token system exclusively (NAVIGATION_TOKENS)
3718
+ * - ✅ Purely semantic component (no logic, no state, no routing)
3719
+ * - ✅ Follows Extension Authority Contract
3720
+ * - ✅ Uses descriptive, intent-based naming
3721
+ * - ✅ Does NOT duplicate Foundation functionality
3722
+ * - ✅ Non-interactive (not focusable, no role overrides)
3723
+ * - ✅ Supports asChild pattern for composition
3724
+ */
3725
+ declare const NavText: React$1.ForwardRefExoticComponent<NavTextProps & React$1.RefAttributes<HTMLSpanElement>>;
3726
+
3727
+ interface NavItemProps extends React$1.HTMLAttributes<HTMLLIElement> {
3728
+ /**
3729
+ * Render as child element (composition pattern via Radix Slot)
3730
+ * When true, renders children through Slot component instead of <li>
3731
+ */
3732
+ asChild?: boolean;
3733
+ /**
3734
+ * Child elements
3735
+ */
3736
+ children: React$1.ReactNode;
3737
+ }
3738
+
3739
+ /**
3740
+ * NavItem - Structural navigation item wrapper
3741
+ *
3742
+ * Renders a list item (`<li>`) for use inside NavList.
3743
+ * This is a pure structural wrapper with no styling or logic.
3744
+ *
3745
+ * **What NavItem IS:**
3746
+ * - Structural navigation list item
3747
+ * - List item wrapper for navigation primitives
3748
+ * - Pure composition container
3749
+ *
3750
+ * **What NavItem IS NOT:**
3751
+ * - Link
3752
+ * - Text renderer
3753
+ * - Separator
3754
+ * - Layout component
3755
+ * - Stateful component
3756
+ * - Logic container
3757
+ *
3758
+ * @example
3759
+ * <NavList>
3760
+ * <NavItem>Home</NavItem>
3761
+ * <NavItem>About</NavItem>
3762
+ * </NavList>
3763
+ *
3764
+ * @example
3765
+ * <NavList>
3766
+ * <NavItem asChild>
3767
+ * <div>Custom item</div>
3768
+ * </NavItem>
3769
+ * </NavList>
3770
+ */
3771
+ declare const NavItem: React$1.ForwardRefExoticComponent<NavItemProps & React$1.RefAttributes<HTMLLIElement>>;
3772
+
3773
+ /**
3774
+ * NavRoot Component Props
3775
+ *
3776
+ * Pure semantic navigation boundary component.
3777
+ * Renders a <nav> element with required aria-label for accessibility.
3778
+ */
3779
+ interface NavRootProps extends React$1.HTMLAttributes<HTMLElement> {
3780
+ /**
3781
+ * ARIA label for the navigation element (required for accessibility)
3782
+ */
3783
+ "aria-label": string;
3784
+ /**
3785
+ * Render as child element (composition pattern via Radix Slot)
3786
+ * When true, renders children through Slot component instead of <nav>
3787
+ */
3788
+ asChild?: boolean;
3789
+ /**
3790
+ * Child content (navigation primitives like NavLink, navigation lists, etc.)
3791
+ */
3792
+ children: React$1.ReactNode;
3793
+ }
3794
+ /**
3795
+ * NavRoot Component
3796
+ *
3797
+ * Pure semantic navigation boundary component with zero logic.
3798
+ * Provides a semantic <nav> wrapper that enforces accessibility (required aria-label)
3799
+ * while remaining a pure composition wrapper with no assumptions about navigation
3800
+ * structure or styling.
3801
+ *
3802
+ * **What NavRoot IS:**
3803
+ * - Semantic navigation root
3804
+ * - Accessibility boundary (enforces aria-label)
3805
+ * - Composition wrapper for navigation primitives
3806
+ *
3807
+ * **What NavRoot IS NOT:**
3808
+ * - Layout component
3809
+ * - List renderer
3810
+ * - Navigation pattern
3811
+ * - Stateful component
3812
+ * - Logic container
3813
+ *
3814
+ * @example
3815
+ * ```tsx
3816
+ * <NavRoot aria-label="Main navigation">
3817
+ * <NavLink href="/">Home</NavLink>
3818
+ * <NavLink href="/about">About</NavLink>
3819
+ * </NavRoot>
3820
+ * ```
3821
+ *
3822
+ * @example
3823
+ * ```tsx
3824
+ * <NavRoot aria-label="Footer navigation" asChild>
3825
+ * <footer>
3826
+ * <NavLink href="/">Home</NavLink>
3827
+ * </footer>
3828
+ * </NavRoot>
3829
+ * ```
3830
+ */
3831
+ declare const NavRoot: React$1.ForwardRefExoticComponent<NavRootProps & React$1.RefAttributes<HTMLElement>>;
3832
+
3833
+ interface NavListProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, "className" | "style"> {
3834
+ /**
3835
+ * HTML element to render
3836
+ * @default 'ol'
3837
+ */
3838
+ as?: "ol" | "ul";
3839
+ /**
3840
+ * Render as child component (Radix pattern)
3841
+ * When true, renders children through Slot component instead of list element
3842
+ */
3843
+ asChild?: boolean;
3844
+ /**
3845
+ * List items (NavItem components)
3846
+ */
3847
+ children: React$1.ReactNode;
3848
+ }
3849
+ /**
3850
+ * NavList - Structural list container for navigation
3851
+ *
3852
+ * Renders an ordered (`<ol>`) or unordered (`<ul>`) list.
3853
+ * Default element is `<ol>` for semantic navigation lists.
3854
+ *
3855
+ * This component is a pure structural wrapper with no styling, layout, or logic.
3856
+ * All visual styling should be applied through child components or external wrappers.
3857
+ */
3858
+ declare const NavList: React$1.ForwardRefExoticComponent<NavListProps & React$1.RefAttributes<HTMLOListElement | HTMLUListElement>>;
3859
+
3860
+ /**
3861
+ * Icon Props Interface
3862
+ *
3863
+ * Shared props interface for all icon components.
3864
+ * Ensures consistent API across all icons in the registry.
3865
+ */
3866
+
3867
+ /**
3868
+ * Base props for all icon components
3869
+ */
3870
+ interface IconProps$1 extends React$1.SVGProps<SVGSVGElement> {
3871
+ /**
3872
+ * Additional CSS classes
3873
+ */
3874
+ className?: string;
3875
+ /**
3876
+ * Hide icon from screen readers
3877
+ * @default true
3878
+ */
3879
+ "aria-hidden"?: boolean;
3880
+ /**
3881
+ * Accessible label for the icon
3882
+ */
3883
+ "aria-label"?: string;
3884
+ }
3885
+
3886
+ /**
3887
+ * Arrow right icon component
3888
+ */
3889
+ declare const IconArrowRight: React$1.FC<IconProps$1>;
3890
+
3891
+ /**
3892
+ * Calendar icon component
3893
+ */
3894
+ declare const IconCalendar: React$1.FC<IconProps$1>;
3895
+
3896
+ /**
3897
+ * Check icon component (checkmark)
3898
+ */
3899
+ declare const IconCheck: React$1.FC<IconProps$1>;
3900
+
3901
+ /**
3902
+ * Chevron down icon component
3903
+ */
3904
+ declare const IconChevronDown: React$1.FC<IconProps$1>;
3905
+
3906
+ /**
3907
+ * Chevron right icon component
3908
+ */
3909
+ declare const IconChevronRight: React$1.FC<IconProps$1>;
3910
+
3911
+ /**
3912
+ * Close icon component (X)
3913
+ */
3914
+ declare const IconClose: React$1.FC<IconProps$1>;
3915
+
3916
+ /**
3917
+ * Error icon component (X in circle - used as fallback)
3918
+ */
3919
+ declare const IconError: React$1.FC<IconProps$1>;
3920
+
3921
+ /**
3922
+ * Info icon component (information circle)
3923
+ */
3924
+ declare const IconInfo: React$1.FC<IconProps$1>;
3925
+
3926
+ /**
3927
+ * Location icon component
3928
+ */
3929
+ declare const IconLocation: React$1.FC<IconProps$1>;
3930
+
3931
+ /**
3932
+ * Menu icon component (hamburger menu)
3933
+ */
3934
+ declare const IconMenu: React$1.FC<IconProps$1>;
3935
+
3936
+ /**
3937
+ * Search icon component
3938
+ */
3939
+ declare const IconSearch: React$1.FC<IconProps$1>;
3940
+
3941
+ /**
3942
+ * Success icon component (checkmark in circle)
3943
+ */
3944
+ declare const IconSuccess: React$1.FC<IconProps$1>;
3945
+
3946
+ /**
3947
+ * Warning icon component (warning triangle)
3948
+ */
3949
+ declare const IconWarning: React$1.FC<IconProps$1>;
3950
+
3951
+ /**
3952
+ * Icon Registry
3953
+ *
3954
+ * Central registry for all icon components.
3955
+ * Supports tree-shaking through individual named exports.
3956
+ */
3957
+
3958
+ /**
3959
+ * Icons map for registry lookup
3960
+ * Used by Icon component to resolve icon by name
3961
+ */
3962
+ declare const ICONS_MAP: Record<string, React$1.FC<IconProps$1>>;
3963
+ /**
3964
+ * Icon name type - union of all available icon names
3965
+ */
3966
+ type IconName = keyof typeof ICONS_MAP;
3967
+
3968
+ /**
3969
+ * Icon size type
3970
+ * Icon uses a visual size scale (sm, md, lg, xl) distinct from interactive components.
3971
+ * Per Foundation rule: "Semi-interactive components (Icon, Badge, Avatar) MUST NOT use size as interactive scale"
3972
+ */
3973
+ type IconSizeSubset = "sm" | "md" | "lg" | "xl";
3974
+ declare const iconVariants: (props?: ({
3975
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
3976
+ color?: "muted" | "default" | "info" | "success" | "warning" | "danger" | null | undefined;
3977
+ stroke?: "normal" | "bold" | "thin" | null | undefined;
3978
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
3979
+ interface IconProps extends Omit<React$1.SVGProps<SVGSVGElement>, "color" | "stroke"> {
3980
+ /**
3981
+ * Icon name from registry
3982
+ */
3983
+ name: IconName;
3984
+ /**
3985
+ * Icon size
3986
+ * Icon uses a visual size scale (sm, md, lg, xl) distinct from interactive components.
3987
+ */
3988
+ size?: IconSizeSubset;
2868
3989
  /**
2869
- * Whether this is the active step
3990
+ * Icon color variant
2870
3991
  */
2871
- isActive: boolean;
2872
- }
2873
- interface StepperContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
3992
+ color?: IconColor;
2874
3993
  /**
2875
- * Step index this content belongs to
3994
+ * Stroke width variant
2876
3995
  */
2877
- stepIndex: number;
3996
+ stroke?: IconStroke;
2878
3997
  /**
2879
- * Whether this content should be visible
3998
+ * Render as child element (composition pattern)
3999
+ * Uses Radix UI Slot for composition
2880
4000
  */
2881
- isActive: boolean;
4001
+ asChild?: boolean;
2882
4002
  }
2883
4003
  /**
2884
- * Stepper.Item - Individual step container
4004
+ * Icon component
4005
+ *
4006
+ * Unified icon component with token-driven sizing, colors, and stroke.
4007
+ * Supports SSR-safe rendering and tree-shakeable icon registry.
4008
+ *
4009
+ * Icon is a semi-interactive primitive that provides pure visual representation
4010
+ * without interactive behavior. All interactivity (clicks, keyboard navigation)
4011
+ * is delegated to parent components.
4012
+ *
4013
+ * @example
4014
+ * ```tsx
4015
+ * <Icon name="search" size="md" color="default" />
4016
+ * ```
2885
4017
  */
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
- };
4018
+ declare const Icon: React$1.ForwardRefExoticComponent<Omit<IconProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
2896
4019
 
2897
4020
  /**
2898
4021
  * DataList Component Types
@@ -2900,6 +4023,16 @@ declare const Stepper: React$1.ForwardRefExoticComponent<StepperRootProps & Reac
2900
4023
  * TypeScript interfaces and types for DataList component.
2901
4024
  */
2902
4025
 
4026
+ /**
4027
+ * DataList Root component props
4028
+ */
4029
+ interface DataListRootProps extends React.HTMLAttributes<HTMLDListElement> {
4030
+ /**
4031
+ * Label width for desktop layout
4032
+ * @default "md"
4033
+ */
4034
+ labelWidth?: "sm" | "md" | "lg";
4035
+ }
2903
4036
  /**
2904
4037
  * DataList Item component props
2905
4038
  */
@@ -2914,6 +4047,28 @@ interface DataListItemProps$1 extends React.HTMLAttributes<HTMLDivElement> {
2914
4047
  padding?: ResponsiveSpacing;
2915
4048
  }
2916
4049
 
4050
+ /**
4051
+ * DataList Root Component
4052
+ *
4053
+ * Mobile-first data list component for displaying key-value pairs.
4054
+ * Uses Stack for vertical layout and DATA_LIST_TOKENS for spacing.
4055
+ */
4056
+
4057
+ /**
4058
+ * DataList Root component
4059
+ *
4060
+ * @example
4061
+ * ```tsx
4062
+ * <DataList.Root labelWidth="lg">
4063
+ * <DataList.Item>
4064
+ * <DataList.Label>Name</DataList.Label>
4065
+ * <DataList.Value>John Doe</DataList.Value>
4066
+ * </DataList.Item>
4067
+ * </DataList.Root>
4068
+ * ```
4069
+ */
4070
+ declare const DataListRoot: React$1.ForwardRefExoticComponent<DataListRootProps & React$1.RefAttributes<HTMLDListElement>>;
4071
+
2917
4072
  /**
2918
4073
  * DataList Item Component
2919
4074
  *
@@ -2944,7 +4099,7 @@ interface DataListLabelProps extends React$1.HTMLAttributes<HTMLElement> {
2944
4099
  /**
2945
4100
  * DataList Label component
2946
4101
  * Mobile: full width
2947
- * Desktop: fixed width (from tokens)
4102
+ * Desktop: fixed width (from tokens, controlled by Root labelWidth prop)
2948
4103
  */
2949
4104
  declare const DataListLabel: React$1.ForwardRefExoticComponent<DataListLabelProps & React$1.RefAttributes<HTMLElement>>;
2950
4105
 
@@ -3046,7 +4201,7 @@ interface EmptyStateIconProps extends React$1.HTMLAttributes<HTMLDivElement> {
3046
4201
  * Icon size
3047
4202
  * @default "md"
3048
4203
  */
3049
- size?: "sm" | "md" | "lg";
4204
+ size?: EmptyStateIconSize;
3050
4205
  }
3051
4206
  /**
3052
4207
  * EmptyState Icon component
@@ -3076,42 +4231,6 @@ declare const EmptyStateTitle: React$1.ForwardRefExoticComponent<EmptyStateTitle
3076
4231
  * TypeScript interfaces and types for Table component.
3077
4232
  */
3078
4233
 
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
4234
  /**
3116
4235
  * Sort direction
3117
4236
  */
@@ -3153,60 +4272,16 @@ interface TableContextValue {
3153
4272
  * Whether table has expandable rows
3154
4273
  */
3155
4274
  expandable?: boolean;
3156
- /**
3157
- * Render function for expandable content
3158
- */
3159
- renderExpandableContent?: (item: unknown, index: number) => ReactNode;
3160
4275
  }
3161
4276
  /**
3162
4277
  * Table Root component props
3163
4278
  */
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;
4279
+ interface TableRootProps extends React.HTMLAttributes<HTMLTableElement> {
3182
4280
  /**
3183
4281
  * Whether table supports expandable rows
3184
4282
  * @default false
3185
4283
  */
3186
4284
  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
4285
  }
3211
4286
  /**
3212
4287
  * Table Header component props
@@ -3261,10 +4336,6 @@ interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
3261
4336
  * @default false
3262
4337
  */
3263
4338
  expandable?: boolean;
3264
- /**
3265
- * Row key (for expansion tracking)
3266
- */
3267
- rowKey?: string | number;
3268
4339
  /**
3269
4340
  * Whether row is expanded
3270
4341
  * @default false
@@ -3346,28 +4417,25 @@ declare function useTableContext(): TableContextValue;
3346
4417
  *
3347
4418
  * @example
3348
4419
  * ```tsx
3349
- * <Table.Root
3350
- * data={users}
3351
- * columns={columns}
3352
- * rowKey="id"
3353
- * sortable
3354
- * >
4420
+ * <Table expandable>
3355
4421
  * <Table.Header>
3356
4422
  * <Table.Row>
3357
- * <Table.Head>Name</Table.Head>
4423
+ * <Table.Head sortable columnKey="name">Name</Table.Head>
4424
+ * <Table.Head>Email</Table.Head>
3358
4425
  * </Table.Row>
3359
4426
  * </Table.Header>
3360
4427
  * <Table.Body>
3361
4428
  * {users.map((user) => (
3362
- * <Table.Row key={user.id}>
4429
+ * <Table.Row key={user.id} expandable expanded={expanded.has(user.id)}>
3363
4430
  * <Table.Cell>{user.name}</Table.Cell>
4431
+ * <Table.Cell>{user.email}</Table.Cell>
3364
4432
  * </Table.Row>
3365
4433
  * ))}
3366
4434
  * </Table.Body>
3367
- * </Table.Root>
4435
+ * </Table>
3368
4436
  * ```
3369
4437
  */
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;
4438
+ declare function TableRoot({ expandable, className, children, ...props }: TableRootProps): react_jsx_runtime.JSX.Element;
3371
4439
  declare namespace TableRoot {
3372
4440
  var displayName: string;
3373
4441
  }
@@ -3470,147 +4538,27 @@ declare const TableRow: React$1.ForwardRefExoticComponent<TableRowProps & React$
3470
4538
  */
3471
4539
  declare const TableSortIcon: React$1.ForwardRefExoticComponent<TableSortIconProps & React$1.RefAttributes<HTMLSpanElement>>;
3472
4540
 
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
4541
  /**
3480
- * Icon Props Interface
4542
+ * Table column configuration
3481
4543
  *
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
4544
+ * @template T - The type of data items in the table
3488
4545
  */
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;
4546
+ interface TableColumn<T> {
3499
4547
  /**
3500
- * Accessible label for the icon
4548
+ * Key of the data item property to display in this column
3501
4549
  */
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> {
4550
+ key: keyof T;
3593
4551
  /**
3594
- * Icon name from registry
4552
+ * Column header title
3595
4553
  */
3596
- name: IconName;
4554
+ title: string;
3597
4555
  /**
3598
- * Render as child element (composition pattern)
3599
- * Uses Radix UI Slot for composition
4556
+ * Optional custom render function for cell content
4557
+ * @param value - The value of the cell
4558
+ * @param item - The entire data item
4559
+ * @returns React node to render in the cell
3600
4560
  */
3601
- asChild?: boolean;
4561
+ render?: (value: T[keyof T], item: T) => React__default.ReactNode;
3602
4562
  }
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
4563
 
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 };
4564
+ export { ALERT_VARIANTS, ASPECT_RATIO_PRESETS, 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, 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, EmptyStateIconSize, 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, 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, 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, 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, surfaceVariants as containerSurfaceVariants, headingVariants, iconVariants, inputVariants, radioVariants, segmentedControlItemVariants, segmentedControlRootVariants, separatorVariants, skeletonVariants, surfaceVariants, textVariants, textareaVariants, useNotificationCenter, useNotificationCenterContext, useTableContext, useLocalToast as useToast };