@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/README.md +39 -2
- package/dist/Link-ZWr5iFB0.d.cts +60 -0
- package/dist/Link-ZWr5iFB0.d.ts +60 -0
- package/dist/extensions/next/index.cjs +406 -0
- package/dist/extensions/next/index.d.cts +37 -0
- package/dist/extensions/next/index.d.ts +37 -0
- package/dist/extensions/next/index.mjs +381 -0
- package/dist/{index-DXmHg8ji.d.cts → index-DGtRM9Db.d.cts} +193 -901
- package/dist/{index-DXmHg8ji.d.ts → index-DGtRM9Db.d.ts} +193 -901
- package/dist/index.cjs +3376 -2793
- package/dist/index.d.cts +1670 -722
- package/dist/index.d.ts +1670 -722
- package/dist/index.mjs +3336 -2765
- package/dist/preset.cjs +129 -321
- package/dist/preset.mjs +129 -321
- package/dist/styles.css +417 -101
- package/dist/theme/index.cjs +20 -230
- package/dist/theme/index.mjs +20 -230
- package/dist/tokens/index.cjs +502 -593
- package/dist/tokens/index.d.cts +165 -2
- package/dist/tokens/index.d.ts +165 -2
- package/dist/tokens/index.mjs +490 -577
- package/package.json +22 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { A as ALERT_TOKENS,
|
|
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 {
|
|
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
|
|
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"
|
|
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
|
-
*
|
|
101
|
+
* Text size values (internal - used for type derivation only)
|
|
102
102
|
*
|
|
103
103
|
* @internal
|
|
104
104
|
*/
|
|
105
|
-
declare const
|
|
105
|
+
declare const _TEXT_SIZES: readonly ["xs", "sm", "md", "lg", "xl"];
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
107
|
+
* Text size type
|
|
108
|
+
* Typography scale for Text component (separate from interactive scale)
|
|
108
109
|
*
|
|
109
110
|
* @public
|
|
110
111
|
*/
|
|
111
|
-
type
|
|
112
|
+
type TextSize = (typeof _TEXT_SIZES)[number];
|
|
112
113
|
/**
|
|
113
|
-
*
|
|
114
|
+
* Text weight values (internal - used for type derivation only)
|
|
114
115
|
*
|
|
115
116
|
* @internal
|
|
116
117
|
*/
|
|
117
|
-
declare const
|
|
118
|
+
declare const _TEXT_WEIGHTS: readonly ["normal", "medium", "semibold", "bold"];
|
|
118
119
|
/**
|
|
119
|
-
*
|
|
120
|
+
* Text weight type
|
|
121
|
+
* Font weight scale for Text component
|
|
120
122
|
*
|
|
121
123
|
* @public
|
|
122
124
|
*/
|
|
123
|
-
type
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
*
|
|
185
|
+
* Alert variant style
|
|
186
|
+
* @default "default"
|
|
145
187
|
*/
|
|
146
|
-
|
|
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
|
|
149
|
-
* When
|
|
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
|
-
|
|
206
|
+
current?: boolean;
|
|
153
207
|
}
|
|
154
|
-
|
|
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
|
-
*
|
|
200
|
-
*/
|
|
201
|
-
size?: ResponsiveSelectSize;
|
|
202
|
-
/**
|
|
203
|
-
* Visual variant - token-based
|
|
262
|
+
* Invalid state - uses aria-invalid
|
|
204
263
|
*/
|
|
205
|
-
|
|
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>, "
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
|
|
394
|
+
declare const Avatar: React$1.ForwardRefExoticComponent<AvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
395
|
+
|
|
290
396
|
/**
|
|
291
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
* <
|
|
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
|
-
|
|
500
|
-
|
|
501
|
-
|
|
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
|
-
*
|
|
521
|
-
* @default "outline"
|
|
748
|
+
* Value at which the mark should be placed
|
|
522
749
|
*/
|
|
523
|
-
|
|
750
|
+
value: number;
|
|
524
751
|
/**
|
|
525
|
-
*
|
|
526
|
-
* @default "md"
|
|
752
|
+
* Optional label to display at the mark
|
|
527
753
|
*/
|
|
528
|
-
|
|
754
|
+
label?: string | React$1.ReactNode;
|
|
755
|
+
}
|
|
756
|
+
interface RangeSliderProps {
|
|
529
757
|
/**
|
|
530
|
-
*
|
|
531
|
-
*
|
|
758
|
+
* Current value of the range slider (controlled)
|
|
759
|
+
* Tuple of [min, max]
|
|
532
760
|
*/
|
|
533
|
-
|
|
761
|
+
value?: [number, number];
|
|
534
762
|
/**
|
|
535
|
-
*
|
|
763
|
+
* Default value of the range slider (uncontrolled)
|
|
764
|
+
* Tuple of [min, max]
|
|
765
|
+
* @default [25, 75]
|
|
536
766
|
*/
|
|
537
|
-
|
|
767
|
+
defaultValue?: [number, number];
|
|
538
768
|
/**
|
|
539
|
-
*
|
|
540
|
-
* When true, overrides checked state visually
|
|
769
|
+
* Callback fired when the value changes
|
|
541
770
|
*/
|
|
542
|
-
|
|
771
|
+
onValueChange?: (value: [number, number]) => void;
|
|
543
772
|
/**
|
|
544
|
-
*
|
|
773
|
+
* Minimum value
|
|
774
|
+
* @default 0
|
|
545
775
|
*/
|
|
546
|
-
|
|
776
|
+
min?: number;
|
|
547
777
|
/**
|
|
548
|
-
*
|
|
778
|
+
* Maximum value
|
|
779
|
+
* @default 100
|
|
549
780
|
*/
|
|
550
|
-
|
|
781
|
+
max?: number;
|
|
551
782
|
/**
|
|
552
|
-
*
|
|
553
|
-
*
|
|
783
|
+
* Step increment
|
|
784
|
+
* @default 1
|
|
554
785
|
*/
|
|
555
|
-
|
|
786
|
+
step?: number;
|
|
556
787
|
/**
|
|
557
|
-
*
|
|
558
|
-
*
|
|
788
|
+
* Visual size variant
|
|
789
|
+
* @default "md"
|
|
559
790
|
*/
|
|
560
|
-
|
|
791
|
+
size?: RangeSliderSize;
|
|
561
792
|
/**
|
|
562
|
-
*
|
|
563
|
-
*
|
|
793
|
+
* Visual style variant
|
|
794
|
+
* @default "primary"
|
|
564
795
|
*/
|
|
565
|
-
|
|
796
|
+
variant?: RangeSliderVariant;
|
|
566
797
|
/**
|
|
567
|
-
*
|
|
568
|
-
*
|
|
798
|
+
* Whether the range slider is disabled
|
|
799
|
+
* @default false
|
|
569
800
|
*/
|
|
570
|
-
|
|
801
|
+
disabled?: boolean;
|
|
571
802
|
/**
|
|
572
|
-
*
|
|
573
|
-
*
|
|
803
|
+
* Orientation of the range slider
|
|
804
|
+
* @default "horizontal"
|
|
574
805
|
*/
|
|
575
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
*
|
|
589
|
-
*
|
|
590
|
-
*
|
|
591
|
-
*
|
|
592
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
1147
|
+
* Input size type
|
|
651
1148
|
*
|
|
652
|
-
*
|
|
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
|
|
1153
|
+
* const size: InputSize = "md";
|
|
672
1154
|
* ```
|
|
673
1155
|
*/
|
|
674
|
-
type
|
|
675
|
-
|
|
1156
|
+
type InputSize = "sm" | "md" | "lg";
|
|
676
1157
|
/**
|
|
677
1158
|
* Input Component Props
|
|
678
1159
|
*
|
|
679
|
-
*
|
|
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" | "
|
|
1163
|
+
interface InputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "color" | "className" | "style"> {
|
|
682
1164
|
/**
|
|
683
|
-
* Input
|
|
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 "
|
|
1167
|
+
* @default "md"
|
|
690
1168
|
*
|
|
691
1169
|
* @example
|
|
692
1170
|
* ```tsx
|
|
693
|
-
*
|
|
694
|
-
* <Input variant="outline" />
|
|
695
|
-
*
|
|
696
|
-
* // Responsive
|
|
697
|
-
* <Input variant={{ base: "outline", md: "primary" }} />
|
|
1171
|
+
* <Input size="md" />
|
|
698
1172
|
* ```
|
|
699
1173
|
*/
|
|
700
|
-
|
|
1174
|
+
size?: InputSize;
|
|
701
1175
|
/**
|
|
702
|
-
*
|
|
1176
|
+
* Whether the input is in an invalid state
|
|
703
1177
|
*
|
|
704
|
-
*
|
|
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
|
-
*
|
|
713
|
-
* <Input size="md" />
|
|
714
|
-
*
|
|
715
|
-
* // Responsive
|
|
716
|
-
* <Input size={{ base: "sm", md: "lg" }} />
|
|
1182
|
+
* <Input invalid />
|
|
717
1183
|
* ```
|
|
718
1184
|
*/
|
|
719
|
-
|
|
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
|
-
*
|
|
744
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
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?:
|
|
1283
|
+
variant?: RadioVariant;
|
|
784
1284
|
/**
|
|
785
1285
|
* Radio size
|
|
786
1286
|
* @default "md"
|
|
787
1287
|
*/
|
|
788
|
-
size?:
|
|
1288
|
+
size?: RadioSize;
|
|
789
1289
|
/**
|
|
790
1290
|
* Radio state
|
|
791
1291
|
* @default "default"
|
|
792
1292
|
*/
|
|
793
|
-
state?:
|
|
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
|
-
*
|
|
906
|
-
*
|
|
907
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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"
|
|
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?:
|
|
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
|
-
*
|
|
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
|
-
|
|
1425
|
+
invalid?: boolean;
|
|
953
1426
|
}
|
|
954
1427
|
|
|
955
1428
|
/**
|
|
956
1429
|
* Textarea Component
|
|
957
1430
|
*
|
|
958
|
-
*
|
|
959
|
-
*
|
|
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
|
|
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.
|
|
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?: "
|
|
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"
|
|
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?:
|
|
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" | "
|
|
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
|
-
*
|
|
2259
|
+
* Spacing for content blocks - token-based
|
|
1570
2260
|
* Accepts spacing tokens (xs, sm, md, lg, xl, 2xl, etc.) or responsive object
|
|
1571
|
-
* @example
|
|
1572
|
-
* @example
|
|
2261
|
+
* @example spacing="md"
|
|
2262
|
+
* @example spacing={{ base: "sm", lg: "xl" }}
|
|
1573
2263
|
*/
|
|
1574
|
-
|
|
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
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
2423
|
+
* Controlled open state
|
|
2424
|
+
* Must be provided externally - Toast does not own state
|
|
1728
2425
|
*/
|
|
1729
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
2538
|
+
* ⏳ FOUNDATION · LEGACY · UNLOCKED_FOR_MIGRATION - ContextMenu Component
|
|
1842
2539
|
* ============================================================================
|
|
1843
2540
|
*
|
|
1844
|
-
*
|
|
1845
|
-
*
|
|
1846
|
-
* **
|
|
1847
|
-
*
|
|
1848
|
-
*
|
|
1849
|
-
*
|
|
1850
|
-
*
|
|
1851
|
-
*
|
|
1852
|
-
*
|
|
1853
|
-
*
|
|
1854
|
-
*
|
|
1855
|
-
*
|
|
1856
|
-
*
|
|
1857
|
-
*
|
|
1858
|
-
*
|
|
1859
|
-
* -
|
|
1860
|
-
* -
|
|
1861
|
-
* -
|
|
1862
|
-
* -
|
|
1863
|
-
* -
|
|
1864
|
-
* -
|
|
1865
|
-
*
|
|
1866
|
-
*
|
|
1867
|
-
*
|
|
1868
|
-
* -
|
|
1869
|
-
* -
|
|
1870
|
-
* -
|
|
1871
|
-
* -
|
|
1872
|
-
*
|
|
1873
|
-
*
|
|
1874
|
-
* -
|
|
1875
|
-
* -
|
|
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?:
|
|
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?:
|
|
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
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
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
|
-
*
|
|
3245
|
+
* ============================================================================
|
|
3246
|
+
* 🔒 FOUNDATION · LOCKED - Tabs Component
|
|
3247
|
+
* ============================================================================
|
|
2530
3248
|
*
|
|
2531
|
-
*
|
|
2532
|
-
*
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
*
|
|
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 (
|
|
3317
|
+
* Size variant - token-based (defaults to "md" if not provided)
|
|
2580
3318
|
*/
|
|
2581
3319
|
size?: ResponsiveTabsSize;
|
|
2582
3320
|
/**
|
|
2583
|
-
* Visual variant - token-based (
|
|
3321
|
+
* Visual variant - token-based (defaults to "underline" if not provided)
|
|
2584
3322
|
*/
|
|
2585
3323
|
variant?: TabsVariantToken;
|
|
2586
3324
|
/**
|
|
2587
|
-
* Tone - token-based (
|
|
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"
|
|
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"
|
|
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
|
-
*
|
|
3990
|
+
* Icon color variant
|
|
2870
3991
|
*/
|
|
2871
|
-
|
|
2872
|
-
}
|
|
2873
|
-
interface StepperContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3992
|
+
color?: IconColor;
|
|
2874
3993
|
/**
|
|
2875
|
-
*
|
|
3994
|
+
* Stroke width variant
|
|
2876
3995
|
*/
|
|
2877
|
-
|
|
3996
|
+
stroke?: IconStroke;
|
|
2878
3997
|
/**
|
|
2879
|
-
*
|
|
3998
|
+
* Render as child element (composition pattern)
|
|
3999
|
+
* Uses Radix UI Slot for composition
|
|
2880
4000
|
*/
|
|
2881
|
-
|
|
4001
|
+
asChild?: boolean;
|
|
2882
4002
|
}
|
|
2883
4003
|
/**
|
|
2884
|
-
*
|
|
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
|
-
|
|
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?:
|
|
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
|
|
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
|
|
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
|
|
4435
|
+
* </Table>
|
|
3368
4436
|
* ```
|
|
3369
4437
|
*/
|
|
3370
|
-
declare function TableRoot
|
|
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
|
-
*
|
|
4542
|
+
* Table column configuration
|
|
3481
4543
|
*
|
|
3482
|
-
*
|
|
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
|
|
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
|
-
*
|
|
4548
|
+
* Key of the data item property to display in this column
|
|
3501
4549
|
*/
|
|
3502
|
-
|
|
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
|
-
*
|
|
4552
|
+
* Column header title
|
|
3595
4553
|
*/
|
|
3596
|
-
|
|
4554
|
+
title: string;
|
|
3597
4555
|
/**
|
|
3598
|
-
*
|
|
3599
|
-
*
|
|
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
|
-
|
|
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,
|
|
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 };
|