omverse-ui 0.1.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 +73 -0
- package/dist/index.cjs +9244 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2956 -0
- package/dist/index.d.ts +2956 -0
- package/dist/index.js +9182 -0
- package/dist/index.js.map +1 -0
- package/package.json +59 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,2956 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { ComponentPropsWithoutRef, ReactNode } from 'react';
|
|
4
|
+
import * as lucide_react from 'lucide-react';
|
|
5
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
6
|
+
import { VariantProps } from 'class-variance-authority';
|
|
7
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Merges Tailwind classes intelligently — later classes override earlier ones
|
|
11
|
+
* even when they target the same property (e.g. `px-2` vs `px-4`).
|
|
12
|
+
*
|
|
13
|
+
* Configured with design-system font-size and text-color groups so the custom
|
|
14
|
+
* typography scale (text-label-lg, text-body-md, …) and semantic color tokens
|
|
15
|
+
* (text-on-primary, text-on-surface, …) are never treated as conflicting.
|
|
16
|
+
*/
|
|
17
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Size scale for icons. Tied to the design system's spacing scale so
|
|
21
|
+
* icons always sit cleanly with text of the same scale.
|
|
22
|
+
*/
|
|
23
|
+
declare const iconVariants: (props?: ({
|
|
24
|
+
size?: "sm" | "md" | "lg" | "xl" | null | undefined;
|
|
25
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
26
|
+
/**
|
|
27
|
+
* The design system's icon registry. Keys are design-system names (kebab-case);
|
|
28
|
+
* values are the current icon source. When custom Figma icons are ready, swap
|
|
29
|
+
* the right-hand side here — every component using <Icon /> updates automatically.
|
|
30
|
+
*/
|
|
31
|
+
declare const iconMap: {
|
|
32
|
+
readonly 'chevron-down': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
33
|
+
readonly 'chevron-up': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
34
|
+
readonly 'chevron-left': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
35
|
+
readonly 'chevron-right': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
36
|
+
readonly check: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
37
|
+
readonly close: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
38
|
+
readonly search: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
39
|
+
readonly 'arrow-right': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
40
|
+
readonly 'arrow-left': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
41
|
+
readonly plus: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
42
|
+
readonly minus: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
43
|
+
readonly 'alert-circle': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
44
|
+
readonly info: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
45
|
+
readonly 'check-circle': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
46
|
+
readonly edit: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
47
|
+
readonly settings: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
48
|
+
readonly bookmark: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
49
|
+
readonly heart: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
50
|
+
readonly star: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
51
|
+
readonly bell: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
52
|
+
readonly trash: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
53
|
+
readonly download: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
54
|
+
readonly upload: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
55
|
+
readonly share: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
56
|
+
readonly dots: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
57
|
+
readonly 'dots-vertical': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
58
|
+
readonly refresh: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
59
|
+
readonly eye: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
60
|
+
readonly 'eye-off': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
61
|
+
readonly mail: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
62
|
+
readonly lock: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
63
|
+
readonly play: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
64
|
+
readonly 'file-text': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
65
|
+
readonly 'credit-card': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
66
|
+
readonly users: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
67
|
+
readonly rocket: react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
68
|
+
readonly 'message-square': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
69
|
+
readonly 'chevron-down-filled': react.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & react.RefAttributes<SVGSVGElement>>;
|
|
70
|
+
};
|
|
71
|
+
type IconName = keyof typeof iconMap;
|
|
72
|
+
interface IconProps extends VariantProps<typeof iconVariants> {
|
|
73
|
+
/** Design system name of the icon to render. */
|
|
74
|
+
name: IconName;
|
|
75
|
+
className?: string;
|
|
76
|
+
/**
|
|
77
|
+
* Provide a label to make the icon meaningful to screen readers.
|
|
78
|
+
* Omit for purely decorative icons (icon next to text).
|
|
79
|
+
*/
|
|
80
|
+
'aria-label'?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Renders the icon as a solid/filled shape instead of the default stroke outline.
|
|
83
|
+
* Sets fill="currentColor" and strokeWidth=0 on the underlying SVG.
|
|
84
|
+
* Use for toggle-on states — bookmarks, likes, stars, bells, etc.
|
|
85
|
+
*/
|
|
86
|
+
filled?: boolean;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Icon — the only component allowed to know about the underlying icon source.
|
|
90
|
+
*
|
|
91
|
+
* Every other component imports from here, not from `lucide-react` directly.
|
|
92
|
+
* This indirection is what makes swapping to custom Figma icons a one-file change.
|
|
93
|
+
*/
|
|
94
|
+
declare const Icon: react.ForwardRefExoticComponent<IconProps & react.RefAttributes<SVGSVGElement>>;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Button visual variants.
|
|
98
|
+
*
|
|
99
|
+
* Design intent (M3-inspired, extended):
|
|
100
|
+
* - `filled` — highest emphasis; single primary CTA per screen
|
|
101
|
+
* - `tonal` — medium-high emphasis; secondary primary actions
|
|
102
|
+
* - `outlined` — medium emphasis; alternative or cancel actions
|
|
103
|
+
* - `text` — lowest named emphasis; tertiary / inline use
|
|
104
|
+
* - `elevated` — filled surface lifted above tonal backgrounds
|
|
105
|
+
* - `ghost` — near-invisible; toolbars, icon-adjacent, dense UIs
|
|
106
|
+
* - `destructive` — irreversible actions (delete, revoke, leave)
|
|
107
|
+
*/
|
|
108
|
+
declare const buttonVariants: (props?: ({
|
|
109
|
+
variant?: "text" | "filled" | "tonal" | "outlined" | "elevated" | "ghost" | "destructive" | null | undefined;
|
|
110
|
+
size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
|
|
111
|
+
shape?: "rounded" | "pill" | null | undefined;
|
|
112
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
113
|
+
type ButtonVariantProps = VariantProps<typeof buttonVariants>;
|
|
114
|
+
|
|
115
|
+
interface ButtonProps extends ComponentPropsWithoutRef<'button'>, ButtonVariantProps {
|
|
116
|
+
/**
|
|
117
|
+
* Renders the first child element with button props merged onto it.
|
|
118
|
+
* Use to wrap a router `<Link>` while keeping button styling and a11y.
|
|
119
|
+
* Do NOT combine with `leadingIcon` / `trailingIcon` — Radix Slot cannot
|
|
120
|
+
* merge props onto a React.Fragment; place icons inside the child instead.
|
|
121
|
+
*/
|
|
122
|
+
asChild?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Shows a loading spinner and disables interaction. Preserves layout to
|
|
125
|
+
* prevent content reflow. Sets `aria-busy` for assistive technology.
|
|
126
|
+
*/
|
|
127
|
+
loading?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Replaces the button label while `loading` is true.
|
|
130
|
+
* Pass an empty string to show only the spinner with no label.
|
|
131
|
+
*/
|
|
132
|
+
loadingText?: string;
|
|
133
|
+
/**
|
|
134
|
+
* Swaps the leading icon to a checkmark to confirm a completed action.
|
|
135
|
+
* If no leading icon was present, a checkmark is prepended to the label.
|
|
136
|
+
* The trailing icon is hidden while success is active to reduce noise.
|
|
137
|
+
* Parent controls the duration — set back to false to restore original state.
|
|
138
|
+
* For icon-only buttons, also set `aria-label` on the button for a11y.
|
|
139
|
+
*/
|
|
140
|
+
success?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Applies a blue→purple gradient background. Only takes effect on `filled`
|
|
143
|
+
* and `destructive` variants; silently ignored on all others.
|
|
144
|
+
* Hover/active states use opacity instead of background-color shifts because
|
|
145
|
+
* a CSS gradient (background-image) is not affected by background-color changes.
|
|
146
|
+
*/
|
|
147
|
+
gradient?: boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Icon rendered before the label. Accepts any design-system icon name.
|
|
150
|
+
* Always decorative — the label text is the accessible name.
|
|
151
|
+
*/
|
|
152
|
+
leadingIcon?: IconName;
|
|
153
|
+
/**
|
|
154
|
+
* Icon rendered after the label. Accepts any design-system icon name.
|
|
155
|
+
* Always decorative — the label text is the accessible name.
|
|
156
|
+
*/
|
|
157
|
+
trailingIcon?: IconName;
|
|
158
|
+
/**
|
|
159
|
+
* Stretches the button to its container's full width.
|
|
160
|
+
* When both `leadingIcon` and `trailingIcon` are present the icons are
|
|
161
|
+
* pushed to the edges with the label centred between them (`justify-between`).
|
|
162
|
+
*/
|
|
163
|
+
fullWidth?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Button — the primary interactive control of the design system.
|
|
167
|
+
*
|
|
168
|
+
* Seven variants covering the full emphasis spectrum, five sizes, two
|
|
169
|
+
* shapes, optional gradient treatment, leading/trailing icon slots,
|
|
170
|
+
* full-width edge-spread layout, loading and success state management,
|
|
171
|
+
* and the `asChild` composition pattern for wrapping router links.
|
|
172
|
+
*
|
|
173
|
+
* Design rationale: variant choice drives perceived importance in the UI
|
|
174
|
+
* hierarchy. Use `filled` for the single primary action per screen,
|
|
175
|
+
* `ghost` for low-attention actions in toolbars, and `destructive` only
|
|
176
|
+
* for irreversible paths — never as a general-purpose danger colour.
|
|
177
|
+
*
|
|
178
|
+
* @see {@link https://m3.material.io/components/buttons/overview}
|
|
179
|
+
*/
|
|
180
|
+
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* IconButton variants — CVA configuration.
|
|
184
|
+
*
|
|
185
|
+
* Design intent:
|
|
186
|
+
* - filled → highest emphasis, primary action
|
|
187
|
+
* - tonal → medium-high, secondary action
|
|
188
|
+
* - outlined → medium emphasis
|
|
189
|
+
* - standard → low emphasis, toolbars, inline actions
|
|
190
|
+
* - ghost → subtle, barely visible until hover
|
|
191
|
+
* - destructive → delete / danger actions
|
|
192
|
+
*
|
|
193
|
+
* All variants use semantic tokens only — never raw hex or palette steps.
|
|
194
|
+
* State layers follow M3 spec: hover=8%, focus=12%, pressed=12%.
|
|
195
|
+
*/
|
|
196
|
+
declare const iconButtonVariants: (props?: ({
|
|
197
|
+
variant?: "filled" | "tonal" | "outlined" | "ghost" | "destructive" | "standard" | null | undefined;
|
|
198
|
+
size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
|
|
199
|
+
shape?: "circle" | "square" | null | undefined;
|
|
200
|
+
fab?: boolean | null | undefined;
|
|
201
|
+
gradient?: boolean | null | undefined;
|
|
202
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
203
|
+
type IconButtonVariantProps = VariantProps<typeof iconButtonVariants>;
|
|
204
|
+
|
|
205
|
+
interface IconButtonProps extends Omit<ComponentPropsWithoutRef<'button'>, 'children'>, IconButtonVariantProps {
|
|
206
|
+
/**
|
|
207
|
+
* The icon to display. Uses the design system's Icon component.
|
|
208
|
+
* Never import lucide-react directly in consuming components.
|
|
209
|
+
*/
|
|
210
|
+
icon: IconName;
|
|
211
|
+
/**
|
|
212
|
+
* Accessible label — required. Describes the action to screen readers.
|
|
213
|
+
* When badge is a number, include the count in the label:
|
|
214
|
+
* aria-label="5 notifications"
|
|
215
|
+
*/
|
|
216
|
+
'aria-label': string;
|
|
217
|
+
/**
|
|
218
|
+
* Toggle mode — button has pressed/unpressed state.
|
|
219
|
+
* Use for bookmarks, likes, stars, and other binary actions.
|
|
220
|
+
*/
|
|
221
|
+
toggle?: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Controlled pressed state for toggle mode.
|
|
224
|
+
* If omitted, the component manages its own state (uncontrolled).
|
|
225
|
+
*/
|
|
226
|
+
pressed?: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Callback fired when pressed state changes in toggle mode.
|
|
229
|
+
*/
|
|
230
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
231
|
+
/**
|
|
232
|
+
* Icon to show when toggle is pressed.
|
|
233
|
+
* If omitted, the same icon is used for both states.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* <IconButton icon="bookmark" pressedIcon="bookmark" toggle />
|
|
237
|
+
*/
|
|
238
|
+
pressedIcon?: IconName;
|
|
239
|
+
/**
|
|
240
|
+
* Badge displayed on the icon button.
|
|
241
|
+
* - `true` → red dot only
|
|
242
|
+
* - `number` → shows the number (capped at 99+)
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* <IconButton icon="bell" badge={5} aria-label="5 notifications" />
|
|
246
|
+
*/
|
|
247
|
+
badge?: boolean | number;
|
|
248
|
+
/**
|
|
249
|
+
* Shows a tooltip with the aria-label text on hover and focus.
|
|
250
|
+
* Defaults to true — set to false to disable.
|
|
251
|
+
*/
|
|
252
|
+
tooltip?: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* Shows a loading spinner instead of the icon.
|
|
255
|
+
* Disables interaction and announces aria-busy.
|
|
256
|
+
*/
|
|
257
|
+
loading?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* Applies a brand gradient background.
|
|
260
|
+
* Only meaningful on filled and destructive variants.
|
|
261
|
+
*/
|
|
262
|
+
gradient?: boolean;
|
|
263
|
+
/**
|
|
264
|
+
* FAB (floating action button) mode.
|
|
265
|
+
* Adds elevation shadow. Pair with size="xl" and shape="square".
|
|
266
|
+
*/
|
|
267
|
+
fab?: boolean;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* IconButton — an icon-only interactive control.
|
|
271
|
+
*
|
|
272
|
+
* Features beyond M3:
|
|
273
|
+
* - toggle mode with pressed/unpressed state and aria-pressed
|
|
274
|
+
* - badge (dot or number, capped at 99+)
|
|
275
|
+
* - built-in tooltip (no extra library)
|
|
276
|
+
* - loading state with spinner
|
|
277
|
+
* - gradient variant
|
|
278
|
+
* - FAB mode with elevation
|
|
279
|
+
* - 44×44px minimum touch target on ALL sizes via pseudo element
|
|
280
|
+
* - aria-label is TypeScript-required (no silent a11y failures)
|
|
281
|
+
*
|
|
282
|
+
* @example
|
|
283
|
+
* // Basic
|
|
284
|
+
* <IconButton icon="search" aria-label="Search" />
|
|
285
|
+
*
|
|
286
|
+
* // Toggle
|
|
287
|
+
* <IconButton icon="bookmark" toggle pressed={saved} onPressedChange={setSaved} aria-label="Save" />
|
|
288
|
+
*
|
|
289
|
+
* // Badge
|
|
290
|
+
* <IconButton icon="bell" badge={5} aria-label="5 notifications" />
|
|
291
|
+
*
|
|
292
|
+
* // FAB
|
|
293
|
+
* <IconButton icon="plus" variant="filled" size="xl" shape="square" fab aria-label="Add new" />
|
|
294
|
+
*
|
|
295
|
+
* // Gradient
|
|
296
|
+
* <IconButton icon="plus" variant="filled" gradient aria-label="Add" />
|
|
297
|
+
*/
|
|
298
|
+
declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
299
|
+
|
|
300
|
+
interface InputProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'prefix'> {
|
|
301
|
+
/**
|
|
302
|
+
* Visual variant of the input.
|
|
303
|
+
* - `outlined` → bordered input (default)
|
|
304
|
+
* - `filled` → tonal background, bottom border only
|
|
305
|
+
* - `floating` → label animates up on focus/fill
|
|
306
|
+
*/
|
|
307
|
+
variant?: 'outlined' | 'filled' | 'floating';
|
|
308
|
+
/**
|
|
309
|
+
* Size of the input.
|
|
310
|
+
* - `sm` → 36px height
|
|
311
|
+
* - `md` → 44px height (default)
|
|
312
|
+
* - `lg` → 52px height
|
|
313
|
+
*/
|
|
314
|
+
size?: 'sm' | 'md' | 'lg';
|
|
315
|
+
/** Label displayed above (or floating inside) the input. */
|
|
316
|
+
label?: string;
|
|
317
|
+
/** Marks field as required — adds * indicator and aria-required. */
|
|
318
|
+
required?: boolean;
|
|
319
|
+
/** Adds "(optional)" tag next to the label. */
|
|
320
|
+
optional?: boolean;
|
|
321
|
+
/** Helper text shown below the input in default state. */
|
|
322
|
+
helperText?: string;
|
|
323
|
+
/** Error state — red border + error icon. */
|
|
324
|
+
error?: boolean;
|
|
325
|
+
/** Error message shown below the input when error=true. Replaces helperText. */
|
|
326
|
+
errorText?: string;
|
|
327
|
+
/** Success state — green border + success icon. */
|
|
328
|
+
success?: boolean;
|
|
329
|
+
/** Success message shown below the input when success=true. Replaces helperText. */
|
|
330
|
+
successText?: string;
|
|
331
|
+
/** Loading state — spinner in trailing slot (async validation). */
|
|
332
|
+
loading?: boolean;
|
|
333
|
+
/** Icon displayed before the input. */
|
|
334
|
+
leadingIcon?: IconName;
|
|
335
|
+
/** Icon displayed after the input. */
|
|
336
|
+
trailingIcon?: IconName;
|
|
337
|
+
/**
|
|
338
|
+
* Shows a clear (×) button when the input has a value.
|
|
339
|
+
* Fires onChange with empty value when clicked.
|
|
340
|
+
*/
|
|
341
|
+
clearable?: boolean;
|
|
342
|
+
/**
|
|
343
|
+
* Auto-adds a password visibility toggle button.
|
|
344
|
+
* Only meaningful when type="password".
|
|
345
|
+
*/
|
|
346
|
+
passwordToggle?: boolean;
|
|
347
|
+
/** Text displayed before the input (e.g. "https://", "$"). */
|
|
348
|
+
prefix?: ReactNode;
|
|
349
|
+
/** Text displayed after the input (e.g. "USD", ".com"). */
|
|
350
|
+
suffix?: ReactNode;
|
|
351
|
+
/**
|
|
352
|
+
* Maximum character count.
|
|
353
|
+
* When combined with showCount, displays a counter below.
|
|
354
|
+
*/
|
|
355
|
+
maxLength?: number;
|
|
356
|
+
/** Shows character count below the input. Requires maxLength. */
|
|
357
|
+
showCount?: boolean;
|
|
358
|
+
/**
|
|
359
|
+
* Renders a multiline textarea instead of a single-line input.
|
|
360
|
+
*/
|
|
361
|
+
textarea?: boolean;
|
|
362
|
+
/** Number of initial rows for textarea. Default: 3 */
|
|
363
|
+
rows?: number;
|
|
364
|
+
/**
|
|
365
|
+
* Shows a copy button in the trailing slot.
|
|
366
|
+
* Best combined with readOnly.
|
|
367
|
+
*/
|
|
368
|
+
copyable?: boolean;
|
|
369
|
+
/** Additional className for the outer wrapper. */
|
|
370
|
+
wrapperClassName?: string;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Input / TextField — the primary text input control.
|
|
374
|
+
*
|
|
375
|
+
* Features beyond M3:
|
|
376
|
+
* - 3 variants: outlined, filled, floating label
|
|
377
|
+
* - 3 sizes: sm, md, lg
|
|
378
|
+
* - error, success, disabled, readonly, loading states
|
|
379
|
+
* - leadingIcon, trailingIcon, clearable, passwordToggle
|
|
380
|
+
* - prefix / suffix text slots
|
|
381
|
+
* - character count with maxLength
|
|
382
|
+
* - textarea mode with auto-resize
|
|
383
|
+
* - copyable mode with "Copied!" feedback
|
|
384
|
+
* - full accessibility: aria-describedby, aria-invalid, aria-required,
|
|
385
|
+
* aria-readonly, aria-busy, aria-live announcements
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* // Basic
|
|
389
|
+
* <Input label="Email" placeholder="you@example.com" />
|
|
390
|
+
*
|
|
391
|
+
* // Error state
|
|
392
|
+
* <Input label="Email" error errorText="Invalid email" leadingIcon="mail" />
|
|
393
|
+
*
|
|
394
|
+
* // Password
|
|
395
|
+
* <Input label="Password" type="password" passwordToggle />
|
|
396
|
+
*
|
|
397
|
+
* // With prefix/suffix
|
|
398
|
+
* <Input label="Website" prefix="https://" suffix=".com" />
|
|
399
|
+
*
|
|
400
|
+
* // Character count
|
|
401
|
+
* <Input label="Bio" maxLength={150} showCount />
|
|
402
|
+
*
|
|
403
|
+
* // Copyable API key
|
|
404
|
+
* <Input label="API Key" value="sk-xxxx" readOnly copyable />
|
|
405
|
+
*
|
|
406
|
+
* // Textarea
|
|
407
|
+
* <Input label="Message" textarea rows={4} maxLength={500} showCount />
|
|
408
|
+
*/
|
|
409
|
+
declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Badge variants — CVA configuration.
|
|
413
|
+
*
|
|
414
|
+
* Design intent:
|
|
415
|
+
* - filled → solid background, highest visibility
|
|
416
|
+
* - tonal → soft background, medium visibility
|
|
417
|
+
* - outlined → bordered, minimal fill
|
|
418
|
+
* - ghost → no border, no fill, text only
|
|
419
|
+
*/
|
|
420
|
+
declare const badgeVariants: (props?: ({
|
|
421
|
+
variant?: "filled" | "tonal" | "outlined" | "ghost" | null | undefined;
|
|
422
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
423
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
424
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
425
|
+
type BadgeVariantProps = VariantProps<typeof badgeVariants>;
|
|
426
|
+
|
|
427
|
+
interface BadgeProps extends ComponentPropsWithoutRef<'span'>, BadgeVariantProps {
|
|
428
|
+
/**
|
|
429
|
+
* Visual style of the badge.
|
|
430
|
+
* - `filled` → solid background (default)
|
|
431
|
+
* - `tonal` → soft container background
|
|
432
|
+
* - `outlined` → border only, no fill
|
|
433
|
+
* - `ghost` → text only, no border or fill
|
|
434
|
+
*/
|
|
435
|
+
variant?: 'filled' | 'tonal' | 'outlined' | 'ghost';
|
|
436
|
+
/**
|
|
437
|
+
* Color of the badge.
|
|
438
|
+
* Maps to your design system semantic tokens.
|
|
439
|
+
*/
|
|
440
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
441
|
+
/**
|
|
442
|
+
* Size of the badge.
|
|
443
|
+
*/
|
|
444
|
+
size?: 'sm' | 'md' | 'lg';
|
|
445
|
+
/**
|
|
446
|
+
* Shows a dot indicator instead of text.
|
|
447
|
+
* When true, children and count are ignored.
|
|
448
|
+
*/
|
|
449
|
+
dot?: boolean;
|
|
450
|
+
/**
|
|
451
|
+
* Displays a number. Automatically capped at 99+.
|
|
452
|
+
* Ignored when dot=true.
|
|
453
|
+
*/
|
|
454
|
+
count?: number;
|
|
455
|
+
/**
|
|
456
|
+
* Adds an animated pulse ring around the dot.
|
|
457
|
+
* Only works when dot=true. Useful for live/active indicators.
|
|
458
|
+
*/
|
|
459
|
+
pulse?: boolean;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Badge — a small label for status, counts, and categories.
|
|
463
|
+
*
|
|
464
|
+
* Features beyond M3:
|
|
465
|
+
* - 4 variants × 6 colors = 24 combinations
|
|
466
|
+
* - dot mode for minimal indicators
|
|
467
|
+
* - pulse animation for live/active status
|
|
468
|
+
* - count mode with 99+ cap
|
|
469
|
+
*
|
|
470
|
+
* @example
|
|
471
|
+
* // Label
|
|
472
|
+
* <Badge color="success">Active</Badge>
|
|
473
|
+
*
|
|
474
|
+
* // Count
|
|
475
|
+
* <Badge color="error" count={5} />
|
|
476
|
+
*
|
|
477
|
+
* // Live indicator
|
|
478
|
+
* <Badge color="success" dot pulse />
|
|
479
|
+
*
|
|
480
|
+
* // Tonal status
|
|
481
|
+
* <Badge variant="tonal" color="warning">Pending</Badge>
|
|
482
|
+
*/
|
|
483
|
+
declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Avatar variants — CVA configuration.
|
|
487
|
+
*
|
|
488
|
+
* Design intent:
|
|
489
|
+
* - shape: circle (default) or square (rounded)
|
|
490
|
+
* - size: xs to 2xl
|
|
491
|
+
* - variant: image, initials, icon, fallback
|
|
492
|
+
*/
|
|
493
|
+
declare const avatarVariants: (props?: ({
|
|
494
|
+
size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
|
|
495
|
+
shape?: "circle" | "square" | null | undefined;
|
|
496
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
497
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
498
|
+
type AvatarVariantProps = VariantProps<typeof avatarVariants>;
|
|
499
|
+
|
|
500
|
+
interface AvatarProps extends Omit<ComponentPropsWithoutRef<'span'>, 'color'>, AvatarVariantProps {
|
|
501
|
+
/**
|
|
502
|
+
* Image URL. When provided, renders an img element.
|
|
503
|
+
* Automatically falls back to initials or icon on error.
|
|
504
|
+
*/
|
|
505
|
+
src?: string;
|
|
506
|
+
/**
|
|
507
|
+
* Alt text for the image. Required when src is provided.
|
|
508
|
+
*/
|
|
509
|
+
alt?: string;
|
|
510
|
+
/**
|
|
511
|
+
* Full name or display name.
|
|
512
|
+
* Used to generate initials when no image is available.
|
|
513
|
+
* Also used as aria-label when no alt is provided.
|
|
514
|
+
*
|
|
515
|
+
* @example "John Doe" → "JD"
|
|
516
|
+
*/
|
|
517
|
+
name?: string;
|
|
518
|
+
/**
|
|
519
|
+
* Online status indicator shown as a colored dot.
|
|
520
|
+
* - `online` → green
|
|
521
|
+
* - `offline` → gray
|
|
522
|
+
* - `busy` → red
|
|
523
|
+
* - `away` → amber
|
|
524
|
+
*/
|
|
525
|
+
status?: 'online' | 'offline' | 'busy' | 'away';
|
|
526
|
+
/**
|
|
527
|
+
* Shape of the avatar.
|
|
528
|
+
* - `circle` → fully rounded (default)
|
|
529
|
+
* - `square` → rounded corners, size-appropriate radius
|
|
530
|
+
*/
|
|
531
|
+
shape?: 'circle' | 'square';
|
|
532
|
+
/**
|
|
533
|
+
* Background color for initials/icon fallback.
|
|
534
|
+
*/
|
|
535
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
536
|
+
/**
|
|
537
|
+
* Size of the avatar.
|
|
538
|
+
*/
|
|
539
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
540
|
+
/**
|
|
541
|
+
* Clickable — adds hover/focus styles and role="button".
|
|
542
|
+
*/
|
|
543
|
+
clickable?: boolean;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Avatar — displays a user's profile image, initials, or icon fallback.
|
|
547
|
+
*
|
|
548
|
+
* Features beyond M3:
|
|
549
|
+
* - 6 sizes: xs to 2xl
|
|
550
|
+
* - circle and square shapes
|
|
551
|
+
* - online status indicator (online, offline, busy, away)
|
|
552
|
+
* - smart initials generation from name
|
|
553
|
+
* - image error fallback to initials → icon
|
|
554
|
+
* - 6 background colors for initials
|
|
555
|
+
* - clickable mode with focus ring
|
|
556
|
+
* - AvatarGroup for stacked avatars
|
|
557
|
+
*
|
|
558
|
+
* @example
|
|
559
|
+
* // Image
|
|
560
|
+
* <Avatar src="/photo.jpg" alt="John Doe" name="John Doe" />
|
|
561
|
+
*
|
|
562
|
+
* // Initials
|
|
563
|
+
* <Avatar name="John Doe" color="secondary" />
|
|
564
|
+
*
|
|
565
|
+
* // With status
|
|
566
|
+
* <Avatar name="Jane Smith" status="online" />
|
|
567
|
+
*
|
|
568
|
+
* // Clickable
|
|
569
|
+
* <Avatar name="John Doe" clickable onClick={openProfile} />
|
|
570
|
+
*/
|
|
571
|
+
declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLSpanElement>>;
|
|
572
|
+
interface AvatarGroupProps extends ComponentPropsWithoutRef<'div'> {
|
|
573
|
+
/**
|
|
574
|
+
* Maximum number of avatars to show before collapsing to a count.
|
|
575
|
+
*/
|
|
576
|
+
max?: number;
|
|
577
|
+
/**
|
|
578
|
+
* Size passed to all child Avatar components.
|
|
579
|
+
*/
|
|
580
|
+
size?: AvatarProps['size'];
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* AvatarGroup — stacks multiple avatars with overlap and a count overflow.
|
|
584
|
+
*
|
|
585
|
+
* @example
|
|
586
|
+
* <AvatarGroup max={4}>
|
|
587
|
+
* <Avatar name="John Doe" />
|
|
588
|
+
* <Avatar name="Jane Smith" />
|
|
589
|
+
* <Avatar name="Bob Lee" />
|
|
590
|
+
* <Avatar name="Alice Wang" />
|
|
591
|
+
* <Avatar name="Tom Jones" />
|
|
592
|
+
* </AvatarGroup>
|
|
593
|
+
*/
|
|
594
|
+
declare const AvatarGroup: react.ForwardRefExoticComponent<AvatarGroupProps & react.RefAttributes<HTMLDivElement>>;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Chip variants — CVA configuration.
|
|
598
|
+
*
|
|
599
|
+
* Design intent:
|
|
600
|
+
* - outlined → default, bordered, low fill
|
|
601
|
+
* - filled → solid tonal background
|
|
602
|
+
* - tonal → soft container color
|
|
603
|
+
* - elevated → white with shadow
|
|
604
|
+
*
|
|
605
|
+
* Selected state changes color based on variant + color combination.
|
|
606
|
+
* All tokens are semantic — never raw hex or palette steps.
|
|
607
|
+
*/
|
|
608
|
+
declare const chipVariants: (props?: ({
|
|
609
|
+
variant?: "filled" | "tonal" | "outlined" | "elevated" | null | undefined;
|
|
610
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
611
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
612
|
+
selected?: boolean | null | undefined;
|
|
613
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
614
|
+
type ChipVariantProps = VariantProps<typeof chipVariants>;
|
|
615
|
+
|
|
616
|
+
interface ChipProps extends Omit<ComponentPropsWithoutRef<'button'>, 'color'>, ChipVariantProps {
|
|
617
|
+
/**
|
|
618
|
+
* Visual variant of the chip.
|
|
619
|
+
*/
|
|
620
|
+
variant?: 'outlined' | 'filled' | 'tonal' | 'elevated';
|
|
621
|
+
/**
|
|
622
|
+
* Color applied when chip is selected.
|
|
623
|
+
*/
|
|
624
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
625
|
+
/** Size of the chip. */
|
|
626
|
+
size?: 'sm' | 'md' | 'lg';
|
|
627
|
+
/**
|
|
628
|
+
* Controlled selected state.
|
|
629
|
+
* If omitted, chip manages its own state (uncontrolled).
|
|
630
|
+
*/
|
|
631
|
+
selected?: boolean;
|
|
632
|
+
/**
|
|
633
|
+
* Callback fired when selected state changes.
|
|
634
|
+
*/
|
|
635
|
+
onSelectedChange?: (selected: boolean) => void;
|
|
636
|
+
/**
|
|
637
|
+
* Icon displayed before the label.
|
|
638
|
+
* Hidden when loading=true (replaced by spinner).
|
|
639
|
+
*/
|
|
640
|
+
leadingIcon?: IconName;
|
|
641
|
+
/**
|
|
642
|
+
* Shows a checkmark when selected instead of leadingIcon.
|
|
643
|
+
* Default: true for filter chips.
|
|
644
|
+
*/
|
|
645
|
+
showCheckOnSelect?: boolean;
|
|
646
|
+
/**
|
|
647
|
+
* Shows a colored dot before the label.
|
|
648
|
+
* Useful for status indication.
|
|
649
|
+
*/
|
|
650
|
+
colorDot?: string;
|
|
651
|
+
/**
|
|
652
|
+
* Avatar image URL shown before the label.
|
|
653
|
+
* Useful for people chips.
|
|
654
|
+
*/
|
|
655
|
+
avatarSrc?: string;
|
|
656
|
+
/** Alt text for the avatar image. */
|
|
657
|
+
avatarAlt?: string;
|
|
658
|
+
/**
|
|
659
|
+
* Badge count shown after the label.
|
|
660
|
+
*/
|
|
661
|
+
badgeCount?: number;
|
|
662
|
+
/**
|
|
663
|
+
* Shows a remove (×) button after the label.
|
|
664
|
+
* Fires onRemove when clicked.
|
|
665
|
+
*/
|
|
666
|
+
removable?: boolean;
|
|
667
|
+
/**
|
|
668
|
+
* Callback fired when the remove button is clicked.
|
|
669
|
+
*/
|
|
670
|
+
onRemove?: () => void;
|
|
671
|
+
/**
|
|
672
|
+
* Shows a loading spinner — disables interaction.
|
|
673
|
+
* Useful for async filter actions.
|
|
674
|
+
*/
|
|
675
|
+
loading?: boolean;
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Chip — a compact interactive element for filters, tags, and selections.
|
|
679
|
+
*
|
|
680
|
+
* Features beyond M3:
|
|
681
|
+
* - 4 variants × 6 colors
|
|
682
|
+
* - controlled + uncontrolled toggle state
|
|
683
|
+
* - checkmark on select (filter chip behavior)
|
|
684
|
+
* - avatar, colorDot, badgeCount slots
|
|
685
|
+
* - removable with onRemove callback
|
|
686
|
+
* - loading state with spinner
|
|
687
|
+
*
|
|
688
|
+
* @example
|
|
689
|
+
* // Filter chip (uncontrolled)
|
|
690
|
+
* <Chip showCheckOnSelect>Design</Chip>
|
|
691
|
+
*
|
|
692
|
+
* // Input chip (removable)
|
|
693
|
+
* <Chip removable onRemove={() => remove(id)}>john@example.com</Chip>
|
|
694
|
+
*
|
|
695
|
+
* // With badge
|
|
696
|
+
* <Chip badgeCount={12} leadingIcon="star">Starred</Chip>
|
|
697
|
+
*
|
|
698
|
+
* // Color
|
|
699
|
+
* <Chip color="success" selected>Active</Chip>
|
|
700
|
+
*
|
|
701
|
+
* // Loading
|
|
702
|
+
* <Chip loading>Applying...</Chip>
|
|
703
|
+
*/
|
|
704
|
+
declare const Chip: react.ForwardRefExoticComponent<ChipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
705
|
+
interface ChipGroupProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
706
|
+
/**
|
|
707
|
+
* Selection mode.
|
|
708
|
+
* - `single` → only one chip selected at a time (like radio)
|
|
709
|
+
* - `multi` → multiple chips can be selected (like checkbox)
|
|
710
|
+
*/
|
|
711
|
+
mode?: 'single' | 'multi';
|
|
712
|
+
/**
|
|
713
|
+
* Controlled selected values.
|
|
714
|
+
*/
|
|
715
|
+
value?: string[];
|
|
716
|
+
/**
|
|
717
|
+
* Callback fired when selection changes.
|
|
718
|
+
*/
|
|
719
|
+
onChange?: (value: string[]) => void;
|
|
720
|
+
/**
|
|
721
|
+
* Maximum number of chips to show before collapsing.
|
|
722
|
+
* Shows "+ X more" button when exceeded.
|
|
723
|
+
*/
|
|
724
|
+
max?: number;
|
|
725
|
+
/** Size passed to all child Chip components. */
|
|
726
|
+
size?: ChipProps['size'];
|
|
727
|
+
/** Variant passed to all child Chip components. */
|
|
728
|
+
variant?: ChipProps['variant'];
|
|
729
|
+
/** Children must be Chip components with a value prop. */
|
|
730
|
+
children: ReactNode;
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* ChipGroup — manages selection state for a group of chips.
|
|
734
|
+
*
|
|
735
|
+
* Features beyond M3:
|
|
736
|
+
* - single and multi select modes
|
|
737
|
+
* - controlled and uncontrolled
|
|
738
|
+
* - overflow collapse with "+ X more" button
|
|
739
|
+
*
|
|
740
|
+
* @example
|
|
741
|
+
* // Single select
|
|
742
|
+
* <ChipGroup mode="single" value={[filter]} onChange={v => setFilter(v[0])}>
|
|
743
|
+
* <Chip value="all">All</Chip>
|
|
744
|
+
* <Chip value="design">Design</Chip>
|
|
745
|
+
* </ChipGroup>
|
|
746
|
+
*
|
|
747
|
+
* // Multi select
|
|
748
|
+
* <ChipGroup mode="multi" value={tags} onChange={setTags}>
|
|
749
|
+
* <Chip value="react">React</Chip>
|
|
750
|
+
* <Chip value="ts">TypeScript</Chip>
|
|
751
|
+
* </ChipGroup>
|
|
752
|
+
*/
|
|
753
|
+
declare const ChipGroup: react.ForwardRefExoticComponent<ChipGroupProps & react.RefAttributes<HTMLDivElement>>;
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Checkbox variants — CVA configuration.
|
|
757
|
+
*/
|
|
758
|
+
declare const checkboxVariants: (props?: ({
|
|
759
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
760
|
+
shape?: "circle" | "square" | null | undefined;
|
|
761
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
762
|
+
checked?: boolean | null | undefined;
|
|
763
|
+
indeterminate?: boolean | null | undefined;
|
|
764
|
+
isError?: boolean | null | undefined;
|
|
765
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
766
|
+
type CheckboxVariantProps = VariantProps<typeof checkboxVariants>;
|
|
767
|
+
|
|
768
|
+
interface CheckboxProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<CheckboxVariantProps, 'size' | 'shape' | 'color'> {
|
|
769
|
+
/**
|
|
770
|
+
* Label text shown next to the checkbox.
|
|
771
|
+
*/
|
|
772
|
+
label?: ReactNode;
|
|
773
|
+
/**
|
|
774
|
+
* Helper text shown below the label.
|
|
775
|
+
*/
|
|
776
|
+
helperText?: string;
|
|
777
|
+
/**
|
|
778
|
+
* Marks the checkbox as required — adds * to label.
|
|
779
|
+
*/
|
|
780
|
+
required?: boolean;
|
|
781
|
+
/**
|
|
782
|
+
* Error state — red border.
|
|
783
|
+
*/
|
|
784
|
+
error?: boolean;
|
|
785
|
+
/**
|
|
786
|
+
* Error message shown below the label when error=true.
|
|
787
|
+
*/
|
|
788
|
+
errorText?: string;
|
|
789
|
+
/**
|
|
790
|
+
* Indeterminate state — shows a dash instead of checkmark.
|
|
791
|
+
* Used for "select all" parent checkboxes.
|
|
792
|
+
*/
|
|
793
|
+
indeterminate?: boolean;
|
|
794
|
+
/**
|
|
795
|
+
* Card style — wraps the checkbox in a bordered card.
|
|
796
|
+
* Useful for plan selection, feature toggles, etc.
|
|
797
|
+
*/
|
|
798
|
+
card?: boolean;
|
|
799
|
+
/**
|
|
800
|
+
* Description shown inside the card below the label.
|
|
801
|
+
* Only used when card=true.
|
|
802
|
+
*/
|
|
803
|
+
description?: string;
|
|
804
|
+
/**
|
|
805
|
+
* Size of the checkbox.
|
|
806
|
+
*/
|
|
807
|
+
size?: 'sm' | 'md' | 'lg';
|
|
808
|
+
/**
|
|
809
|
+
* Shape of the checkbox.
|
|
810
|
+
* - `square` → rounded corners (default)
|
|
811
|
+
* - `circle` → fully rounded
|
|
812
|
+
*/
|
|
813
|
+
shape?: 'square' | 'circle';
|
|
814
|
+
/**
|
|
815
|
+
* Color of the checkbox when checked.
|
|
816
|
+
*/
|
|
817
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Checkbox — a binary input control.
|
|
821
|
+
*
|
|
822
|
+
* Features beyond M3:
|
|
823
|
+
* - 6 colors
|
|
824
|
+
* - 3 sizes
|
|
825
|
+
* - square and circle shapes
|
|
826
|
+
* - indeterminate state (auto-managed by CheckboxGroup)
|
|
827
|
+
* - card style with description
|
|
828
|
+
* - helper text, error text, required indicator
|
|
829
|
+
* - controlled + uncontrolled
|
|
830
|
+
*
|
|
831
|
+
* @example
|
|
832
|
+
* // Basic
|
|
833
|
+
* <Checkbox label="Accept terms" required />
|
|
834
|
+
*
|
|
835
|
+
* // With helper
|
|
836
|
+
* <Checkbox label="Email notifications" helperText="We'll send you updates" />
|
|
837
|
+
*
|
|
838
|
+
* // Error
|
|
839
|
+
* <Checkbox label="Accept terms" error errorText="You must accept the terms" />
|
|
840
|
+
*
|
|
841
|
+
* // Card style
|
|
842
|
+
* <Checkbox label="Pro plan" description="$12/month" card />
|
|
843
|
+
*
|
|
844
|
+
* // Color
|
|
845
|
+
* <Checkbox label="Success" color="success" defaultChecked />
|
|
846
|
+
*/
|
|
847
|
+
declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
|
|
848
|
+
interface CheckboxGroupProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
|
|
849
|
+
/**
|
|
850
|
+
* Legend / group label shown above the checkboxes.
|
|
851
|
+
*/
|
|
852
|
+
legend?: string;
|
|
853
|
+
/**
|
|
854
|
+
* Controlled selected values.
|
|
855
|
+
*/
|
|
856
|
+
value?: string[];
|
|
857
|
+
/**
|
|
858
|
+
* Callback fired when selection changes.
|
|
859
|
+
*/
|
|
860
|
+
onChange?: (value: string[]) => void;
|
|
861
|
+
/**
|
|
862
|
+
* Shows a "select all" parent checkbox with auto indeterminate state.
|
|
863
|
+
*/
|
|
864
|
+
selectAll?: boolean;
|
|
865
|
+
/**
|
|
866
|
+
* Label for the select all checkbox.
|
|
867
|
+
*/
|
|
868
|
+
selectAllLabel?: string;
|
|
869
|
+
/**
|
|
870
|
+
* Color applied to all child checkboxes.
|
|
871
|
+
*/
|
|
872
|
+
color?: CheckboxProps['color'];
|
|
873
|
+
/**
|
|
874
|
+
* Size applied to all child checkboxes.
|
|
875
|
+
*/
|
|
876
|
+
size?: CheckboxProps['size'];
|
|
877
|
+
/** Children must be Checkbox components with a value prop. */
|
|
878
|
+
children: ReactNode;
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* CheckboxGroup — manages a group of checkboxes with optional select-all.
|
|
882
|
+
*
|
|
883
|
+
* Features beyond M3:
|
|
884
|
+
* - auto-managed indeterminate state on select-all parent
|
|
885
|
+
* - controlled + uncontrolled
|
|
886
|
+
* - accessible fieldset + legend
|
|
887
|
+
*
|
|
888
|
+
* @example
|
|
889
|
+
* <CheckboxGroup
|
|
890
|
+
* legend="Permissions"
|
|
891
|
+
* selectAll
|
|
892
|
+
* selectAllLabel="All permissions"
|
|
893
|
+
* value={selected}
|
|
894
|
+
* onChange={setSelected}
|
|
895
|
+
* >
|
|
896
|
+
* <Checkbox value="read" label="Read" />
|
|
897
|
+
* <Checkbox value="write" label="Write" />
|
|
898
|
+
* <Checkbox value="delete" label="Delete" />
|
|
899
|
+
* </CheckboxGroup>
|
|
900
|
+
*/
|
|
901
|
+
declare const CheckboxGroup: react.ForwardRefExoticComponent<CheckboxGroupProps & react.RefAttributes<HTMLFieldSetElement>>;
|
|
902
|
+
|
|
903
|
+
/**
|
|
904
|
+
* Radio variants — CVA configuration.
|
|
905
|
+
*
|
|
906
|
+
* Design intent:
|
|
907
|
+
* - Always circular (radio buttons are always round by convention)
|
|
908
|
+
* - 6 colors matching design system semantic tokens
|
|
909
|
+
* - 3 sizes
|
|
910
|
+
* - 3 display styles: default, card, button, segmented
|
|
911
|
+
*/
|
|
912
|
+
declare const radioVariants: (props?: ({
|
|
913
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
914
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
915
|
+
selected?: boolean | null | undefined;
|
|
916
|
+
isError?: boolean | null | undefined;
|
|
917
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
918
|
+
type RadioVariantProps = VariantProps<typeof radioVariants>;
|
|
919
|
+
|
|
920
|
+
interface RadioProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<RadioVariantProps, 'size' | 'color'> {
|
|
921
|
+
/** Label shown next to the radio. */
|
|
922
|
+
label?: ReactNode;
|
|
923
|
+
/** Helper text shown below the label. */
|
|
924
|
+
helperText?: string;
|
|
925
|
+
/** Error state — red border. */
|
|
926
|
+
error?: boolean;
|
|
927
|
+
/** Error message shown below the label. */
|
|
928
|
+
errorText?: string;
|
|
929
|
+
/**
|
|
930
|
+
* Card style — wraps in a bordered card.
|
|
931
|
+
* Useful for plan/option selection.
|
|
932
|
+
*/
|
|
933
|
+
card?: boolean;
|
|
934
|
+
/**
|
|
935
|
+
* Description shown inside the card below the label.
|
|
936
|
+
* Only used when card=true.
|
|
937
|
+
*/
|
|
938
|
+
description?: string;
|
|
939
|
+
/**
|
|
940
|
+
* Badge shown in the top-right of the card.
|
|
941
|
+
* Only used when card=true.
|
|
942
|
+
*/
|
|
943
|
+
badge?: string;
|
|
944
|
+
/** Whether this radio is selected. */
|
|
945
|
+
checked?: boolean;
|
|
946
|
+
/** Size of the radio button. */
|
|
947
|
+
size?: 'sm' | 'md' | 'lg';
|
|
948
|
+
/** Color when selected. */
|
|
949
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
950
|
+
}
|
|
951
|
+
/**
|
|
952
|
+
* Radio — a single radio button option.
|
|
953
|
+
*
|
|
954
|
+
* Always used inside RadioGroup. Supports default, card,
|
|
955
|
+
* button, and segmented display styles via RadioGroup's `display` prop.
|
|
956
|
+
*
|
|
957
|
+
* Features beyond M3:
|
|
958
|
+
* - 6 colors
|
|
959
|
+
* - 3 sizes
|
|
960
|
+
* - card style with badge
|
|
961
|
+
* - helper text + error text
|
|
962
|
+
* - button and segmented styles via RadioGroup
|
|
963
|
+
*
|
|
964
|
+
* @example
|
|
965
|
+
* <RadioGroup value={plan} onChange={setPlan}>
|
|
966
|
+
* <Radio value="pro" label="Pro" description="$12/month" card badge="Popular" />
|
|
967
|
+
* <Radio value="team" label="Team" description="$49/month" card />
|
|
968
|
+
* </RadioGroup>
|
|
969
|
+
*/
|
|
970
|
+
declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLInputElement>>;
|
|
971
|
+
interface RadioGroupProps extends Omit<ComponentPropsWithoutRef<'fieldset'>, 'onChange'> {
|
|
972
|
+
/** Legend shown above the group. */
|
|
973
|
+
legend?: string;
|
|
974
|
+
/** Controlled selected value. */
|
|
975
|
+
value?: string;
|
|
976
|
+
/** Callback fired when selection changes. */
|
|
977
|
+
onChange?: (value: string) => void;
|
|
978
|
+
/**
|
|
979
|
+
* Display style of the radio group.
|
|
980
|
+
* - `default` → standard radio circles with labels
|
|
981
|
+
* - `card` → bordered cards (overrides Radio card prop)
|
|
982
|
+
* - `button` → pill-shaped buttons
|
|
983
|
+
* - `segmented` → segmented control (tab-like)
|
|
984
|
+
*/
|
|
985
|
+
display?: 'default' | 'card' | 'button' | 'segmented';
|
|
986
|
+
/**
|
|
987
|
+
* Layout direction.
|
|
988
|
+
* - `vertical` → stacked (default)
|
|
989
|
+
* - `horizontal` → side by side
|
|
990
|
+
*/
|
|
991
|
+
direction?: 'vertical' | 'horizontal';
|
|
992
|
+
/** Error state for the entire group. */
|
|
993
|
+
error?: boolean;
|
|
994
|
+
/** Error message shown below the group. */
|
|
995
|
+
errorText?: string;
|
|
996
|
+
/** Color applied to all child radios. */
|
|
997
|
+
color?: RadioProps['color'];
|
|
998
|
+
/** Size applied to all child radios. */
|
|
999
|
+
size?: RadioProps['size'];
|
|
1000
|
+
/** Children must be Radio components with a value prop. */
|
|
1001
|
+
children: ReactNode;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* RadioGroup — manages a group of radio buttons.
|
|
1005
|
+
*
|
|
1006
|
+
* Features beyond M3:
|
|
1007
|
+
* - 4 display styles: default, card, button, segmented
|
|
1008
|
+
* - vertical and horizontal layouts
|
|
1009
|
+
* - controlled state management
|
|
1010
|
+
* - accessible fieldset + legend + radiogroup role
|
|
1011
|
+
*
|
|
1012
|
+
* @example
|
|
1013
|
+
* // Default
|
|
1014
|
+
* <RadioGroup value={gender} onChange={setGender} direction="horizontal">
|
|
1015
|
+
* <Radio value="male" label="Male" />
|
|
1016
|
+
* <Radio value="female" label="Female" />
|
|
1017
|
+
* <Radio value="other" label="Other" />
|
|
1018
|
+
* </RadioGroup>
|
|
1019
|
+
*
|
|
1020
|
+
* // Button style
|
|
1021
|
+
* <RadioGroup value={billing} onChange={setBilling} display="button">
|
|
1022
|
+
* <Radio value="monthly" label="Monthly" />
|
|
1023
|
+
* <Radio value="yearly" label="Yearly" />
|
|
1024
|
+
* </RadioGroup>
|
|
1025
|
+
*
|
|
1026
|
+
* // Segmented
|
|
1027
|
+
* <RadioGroup value={view} onChange={setView} display="segmented">
|
|
1028
|
+
* <Radio value="day" label="Day" />
|
|
1029
|
+
* <Radio value="week" label="Week" />
|
|
1030
|
+
* <Radio value="month" label="Month" />
|
|
1031
|
+
* </RadioGroup>
|
|
1032
|
+
*/
|
|
1033
|
+
declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupProps & react.RefAttributes<HTMLFieldSetElement>>;
|
|
1034
|
+
|
|
1035
|
+
/**
|
|
1036
|
+
* Switch variants — CVA configuration.
|
|
1037
|
+
*
|
|
1038
|
+
* Design intent:
|
|
1039
|
+
* - Track changes color when on
|
|
1040
|
+
* - Thumb slides from left to right
|
|
1041
|
+
* - 6 colors, 3 sizes
|
|
1042
|
+
* - Optional icon inside thumb
|
|
1043
|
+
*/
|
|
1044
|
+
declare const switchTrackVariants: (props?: ({
|
|
1045
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1046
|
+
checked?: boolean | null | undefined;
|
|
1047
|
+
color?: "info" | "success" | "default" | "error" | "secondary" | "warning" | null | undefined;
|
|
1048
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1049
|
+
type SwitchTrackVariantProps = VariantProps<typeof switchTrackVariants>;
|
|
1050
|
+
|
|
1051
|
+
interface SwitchProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size' | 'color' | 'type'>, Pick<SwitchTrackVariantProps, 'size' | 'color'> {
|
|
1052
|
+
/**
|
|
1053
|
+
* Label shown next to the switch.
|
|
1054
|
+
*/
|
|
1055
|
+
label?: ReactNode;
|
|
1056
|
+
/**
|
|
1057
|
+
* Helper text shown below the label.
|
|
1058
|
+
*/
|
|
1059
|
+
helperText?: string;
|
|
1060
|
+
/**
|
|
1061
|
+
* Position of the label relative to the switch.
|
|
1062
|
+
* - `right` → label after switch (default)
|
|
1063
|
+
* - `left` → label before switch, switch pinned right
|
|
1064
|
+
*/
|
|
1065
|
+
labelPosition?: 'left' | 'right';
|
|
1066
|
+
/**
|
|
1067
|
+
* Icon shown inside the thumb when switch is ON.
|
|
1068
|
+
* Disappears when switch is off.
|
|
1069
|
+
*/
|
|
1070
|
+
checkedIcon?: IconName;
|
|
1071
|
+
/**
|
|
1072
|
+
* Icon shown inside the thumb when switch is OFF.
|
|
1073
|
+
*/
|
|
1074
|
+
uncheckedIcon?: IconName;
|
|
1075
|
+
/**
|
|
1076
|
+
* Card style — wraps switch in a bordered card.
|
|
1077
|
+
* Label becomes the card title, helperText becomes description.
|
|
1078
|
+
*/
|
|
1079
|
+
card?: boolean;
|
|
1080
|
+
/**
|
|
1081
|
+
* Whether the switch is on.
|
|
1082
|
+
* If omitted, component manages its own state (uncontrolled).
|
|
1083
|
+
*/
|
|
1084
|
+
checked?: boolean;
|
|
1085
|
+
/** Default checked state for uncontrolled usage. */
|
|
1086
|
+
defaultChecked?: boolean;
|
|
1087
|
+
/** Size of the switch. */
|
|
1088
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1089
|
+
/** Color of the track when on. */
|
|
1090
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
1091
|
+
}
|
|
1092
|
+
/**
|
|
1093
|
+
* Switch — an on/off toggle control.
|
|
1094
|
+
*
|
|
1095
|
+
* Use Switch (not Checkbox) when the action takes effect immediately
|
|
1096
|
+
* without requiring form submission.
|
|
1097
|
+
*
|
|
1098
|
+
* Features beyond M3:
|
|
1099
|
+
* - 6 colors
|
|
1100
|
+
* - 3 sizes
|
|
1101
|
+
* - icon inside thumb (on and off states)
|
|
1102
|
+
* - label left or right position
|
|
1103
|
+
* - card style with title + description
|
|
1104
|
+
* - controlled + uncontrolled
|
|
1105
|
+
*
|
|
1106
|
+
* @example
|
|
1107
|
+
* // Basic
|
|
1108
|
+
* <Switch label="Dark mode" />
|
|
1109
|
+
*
|
|
1110
|
+
* // With icon
|
|
1111
|
+
* <Switch label="Wi-Fi" checkedIcon="wifi" color="success" />
|
|
1112
|
+
*
|
|
1113
|
+
* // Label left
|
|
1114
|
+
* <Switch label="Notifications" labelPosition="left" />
|
|
1115
|
+
*
|
|
1116
|
+
* // Card style
|
|
1117
|
+
* <Switch label="Email notifications" helperText="Get updates via email" card />
|
|
1118
|
+
*
|
|
1119
|
+
* // Controlled
|
|
1120
|
+
* <Switch checked={enabled} onChange={e => setEnabled(e.target.checked)} />
|
|
1121
|
+
*/
|
|
1122
|
+
declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLInputElement>>;
|
|
1123
|
+
|
|
1124
|
+
interface SelectOption {
|
|
1125
|
+
/** Unique value for this option. */
|
|
1126
|
+
value: string;
|
|
1127
|
+
/** Display label. */
|
|
1128
|
+
label: string;
|
|
1129
|
+
/** Optional description shown below label. */
|
|
1130
|
+
description?: string;
|
|
1131
|
+
/** Avatar image URL. */
|
|
1132
|
+
avatarSrc?: string;
|
|
1133
|
+
/** Avatar alt text. */
|
|
1134
|
+
avatarAlt?: string;
|
|
1135
|
+
/** Leading icon. */
|
|
1136
|
+
icon?: string;
|
|
1137
|
+
/** Whether this option is disabled. */
|
|
1138
|
+
disabled?: boolean;
|
|
1139
|
+
}
|
|
1140
|
+
interface SelectOptionGroup {
|
|
1141
|
+
/** Group label shown above options. */
|
|
1142
|
+
label: string;
|
|
1143
|
+
/** Options in this group. */
|
|
1144
|
+
options: SelectOption[];
|
|
1145
|
+
}
|
|
1146
|
+
interface SelectProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
1147
|
+
/** Label shown above the select. */
|
|
1148
|
+
label?: string;
|
|
1149
|
+
/** Placeholder shown when no value selected. */
|
|
1150
|
+
placeholder?: string;
|
|
1151
|
+
/** Helper text shown below the select. */
|
|
1152
|
+
helperText?: string;
|
|
1153
|
+
/** Marks field as required. */
|
|
1154
|
+
required?: boolean;
|
|
1155
|
+
/** Error state. */
|
|
1156
|
+
error?: boolean;
|
|
1157
|
+
/** Error message shown below. */
|
|
1158
|
+
errorText?: string;
|
|
1159
|
+
/** Flat list of options. Use optionGroups for grouped options. */
|
|
1160
|
+
options?: SelectOption[];
|
|
1161
|
+
/** Grouped options. Takes priority over options. */
|
|
1162
|
+
optionGroups?: SelectOptionGroup[];
|
|
1163
|
+
/** Controlled value (single select). */
|
|
1164
|
+
value?: string;
|
|
1165
|
+
/** Controlled values (multi select). */
|
|
1166
|
+
values?: string[];
|
|
1167
|
+
/** Callback for single select. */
|
|
1168
|
+
onChange?: (value: string) => void;
|
|
1169
|
+
/** Callback for multi select. */
|
|
1170
|
+
onChangeMulti?: (values: string[]) => void;
|
|
1171
|
+
/** Enables multi-select mode. */
|
|
1172
|
+
multi?: boolean;
|
|
1173
|
+
/** Shows a search input inside the dropdown. */
|
|
1174
|
+
searchable?: boolean;
|
|
1175
|
+
/** Placeholder for the search input. */
|
|
1176
|
+
searchPlaceholder?: string;
|
|
1177
|
+
/** Shows a clear button when a value is selected. */
|
|
1178
|
+
clearable?: boolean;
|
|
1179
|
+
/** Disables the select. */
|
|
1180
|
+
disabled?: boolean;
|
|
1181
|
+
/** Size of the select trigger. */
|
|
1182
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1183
|
+
/** Maximum number of items to show in multi mode before showing count. */
|
|
1184
|
+
maxDisplay?: number;
|
|
1185
|
+
}
|
|
1186
|
+
/**
|
|
1187
|
+
* Select — a fully custom dropdown selector.
|
|
1188
|
+
*
|
|
1189
|
+
* Features beyond M3:
|
|
1190
|
+
* - searchable options with highlight
|
|
1191
|
+
* - option groups with labels
|
|
1192
|
+
* - multi-select with chip display
|
|
1193
|
+
* - avatar options with description
|
|
1194
|
+
* - clearable
|
|
1195
|
+
* - disabled options
|
|
1196
|
+
* - full keyboard navigation (arrows, enter, escape, home, end)
|
|
1197
|
+
* - 3 sizes
|
|
1198
|
+
* - WCAG AA accessible
|
|
1199
|
+
*
|
|
1200
|
+
* @example
|
|
1201
|
+
* // Single
|
|
1202
|
+
* <Select label="Department" options={options} value={dept} onChange={setDept} />
|
|
1203
|
+
*
|
|
1204
|
+
* // Multi
|
|
1205
|
+
* <Select label="Tags" options={options} multi values={tags} onChangeMulti={setTags} />
|
|
1206
|
+
*
|
|
1207
|
+
* // Searchable
|
|
1208
|
+
* <Select label="Country" options={countries} searchable />
|
|
1209
|
+
*
|
|
1210
|
+
* // Grouped
|
|
1211
|
+
* <Select label="Location" optionGroups={groups} />
|
|
1212
|
+
*/
|
|
1213
|
+
declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLDivElement>>;
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* Tooltip variants — CVA configuration.
|
|
1217
|
+
*
|
|
1218
|
+
* Design intent:
|
|
1219
|
+
* - dark → default, high contrast, works on any background
|
|
1220
|
+
* - light → for dark backgrounds
|
|
1221
|
+
* - primary → brand colored, for promotional hints
|
|
1222
|
+
*/
|
|
1223
|
+
declare const tooltipVariants: (props?: ({
|
|
1224
|
+
variant?: "dark" | "light" | "primary" | null | undefined;
|
|
1225
|
+
position?: "bottom" | "left" | "right" | "top" | null | undefined;
|
|
1226
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1227
|
+
type TooltipVariantProps = VariantProps<typeof tooltipVariants>;
|
|
1228
|
+
|
|
1229
|
+
interface TooltipProps extends Omit<ComponentPropsWithoutRef<'div'>, 'content'>, TooltipVariantProps {
|
|
1230
|
+
/**
|
|
1231
|
+
* The element that triggers the tooltip.
|
|
1232
|
+
* Wrap any element — button, icon, disabled button, etc.
|
|
1233
|
+
*/
|
|
1234
|
+
children: ReactNode;
|
|
1235
|
+
/**
|
|
1236
|
+
* Tooltip content — string for simple text, ReactNode for rich tooltips.
|
|
1237
|
+
*/
|
|
1238
|
+
content: ReactNode;
|
|
1239
|
+
/**
|
|
1240
|
+
* Position of the tooltip relative to the trigger.
|
|
1241
|
+
* @default 'top'
|
|
1242
|
+
*/
|
|
1243
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
1244
|
+
/**
|
|
1245
|
+
* Visual variant.
|
|
1246
|
+
* - `dark` → dark background, light text (default)
|
|
1247
|
+
* - `light` → white background, dark text, border
|
|
1248
|
+
* - `primary` → brand color background
|
|
1249
|
+
*/
|
|
1250
|
+
variant?: 'dark' | 'light' | 'primary';
|
|
1251
|
+
/**
|
|
1252
|
+
* Keyboard shortcut shown inside the tooltip.
|
|
1253
|
+
* Renders in a monospace badge.
|
|
1254
|
+
*
|
|
1255
|
+
* @example
|
|
1256
|
+
* <Tooltip content="Save" shortcut="⌘S">...</Tooltip>
|
|
1257
|
+
*/
|
|
1258
|
+
shortcut?: string;
|
|
1259
|
+
/**
|
|
1260
|
+
* Delay in ms before the tooltip appears.
|
|
1261
|
+
* @default 0
|
|
1262
|
+
*/
|
|
1263
|
+
delay?: number;
|
|
1264
|
+
/**
|
|
1265
|
+
* Whether the tooltip is disabled (never shows).
|
|
1266
|
+
*/
|
|
1267
|
+
disabled?: boolean;
|
|
1268
|
+
/**
|
|
1269
|
+
* Max width for rich tooltips with long content.
|
|
1270
|
+
* @default 'none' (whitespace-nowrap)
|
|
1271
|
+
*/
|
|
1272
|
+
maxWidth?: number;
|
|
1273
|
+
/**
|
|
1274
|
+
* Title for rich tooltips — shown in bold above content.
|
|
1275
|
+
*/
|
|
1276
|
+
title?: string;
|
|
1277
|
+
/**
|
|
1278
|
+
* Action link text for rich tooltips.
|
|
1279
|
+
*/
|
|
1280
|
+
actionLabel?: string;
|
|
1281
|
+
/**
|
|
1282
|
+
* Callback when the action link is clicked.
|
|
1283
|
+
*/
|
|
1284
|
+
onAction?: () => void;
|
|
1285
|
+
}
|
|
1286
|
+
/**
|
|
1287
|
+
* Tooltip — contextual information shown on hover and focus.
|
|
1288
|
+
*
|
|
1289
|
+
* Features beyond M3:
|
|
1290
|
+
* - 3 variants: dark, light, primary
|
|
1291
|
+
* - 4 positions: top, bottom, left, right
|
|
1292
|
+
* - keyboard shortcut display
|
|
1293
|
+
* - rich tooltip with title + description + action
|
|
1294
|
+
* - configurable show delay
|
|
1295
|
+
* - works on disabled elements (wraps in span)
|
|
1296
|
+
* - shows on hover AND focus (keyboard accessible)
|
|
1297
|
+
*
|
|
1298
|
+
* @example
|
|
1299
|
+
* // Simple
|
|
1300
|
+
* <Tooltip content="Delete item">
|
|
1301
|
+
* <IconButton icon="trash" aria-label="Delete" />
|
|
1302
|
+
* </Tooltip>
|
|
1303
|
+
*
|
|
1304
|
+
* // With shortcut
|
|
1305
|
+
* <Tooltip content="Save document" shortcut="⌘S">
|
|
1306
|
+
* <Button>Save</Button>
|
|
1307
|
+
* </Tooltip>
|
|
1308
|
+
*
|
|
1309
|
+
* // Rich
|
|
1310
|
+
* <Tooltip
|
|
1311
|
+
* title="Design tokens"
|
|
1312
|
+
* content="Tokens are the atomic values that define your system."
|
|
1313
|
+
* actionLabel="Learn more"
|
|
1314
|
+
* onAction={() => navigate('/docs')}
|
|
1315
|
+
* maxWidth={200}
|
|
1316
|
+
* >
|
|
1317
|
+
* <Icon name="info" />
|
|
1318
|
+
* </Tooltip>
|
|
1319
|
+
*
|
|
1320
|
+
* // On disabled element
|
|
1321
|
+
* <Tooltip content="You need permission to do this">
|
|
1322
|
+
* <Button disabled>Delete</Button>
|
|
1323
|
+
* </Tooltip>
|
|
1324
|
+
*/
|
|
1325
|
+
declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLDivElement>>;
|
|
1326
|
+
|
|
1327
|
+
/**
|
|
1328
|
+
* Spinner variants — CVA configuration.
|
|
1329
|
+
*
|
|
1330
|
+
* 9 variants:
|
|
1331
|
+
* circular, ring, dots, bars, dual, pulse, ripple, gradient, skeleton
|
|
1332
|
+
*
|
|
1333
|
+
* 6 sizes: xs, sm, md, lg, xl, 2xl
|
|
1334
|
+
* 6 colors: default, secondary, success, warning, error, white
|
|
1335
|
+
*/
|
|
1336
|
+
declare const spinnerVariants: (props?: ({
|
|
1337
|
+
variant?: "dots" | "gradient" | "pulse" | "circular" | "ring" | "bars" | "dual" | "ripple" | "skeleton" | null | undefined;
|
|
1338
|
+
size?: "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
|
|
1339
|
+
color?: "success" | "default" | "error" | "secondary" | "warning" | "white" | null | undefined;
|
|
1340
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1341
|
+
type SpinnerVariantProps = VariantProps<typeof spinnerVariants>;
|
|
1342
|
+
|
|
1343
|
+
interface SpinnerProps extends ComponentPropsWithoutRef<'div'>, SpinnerVariantProps {
|
|
1344
|
+
/**
|
|
1345
|
+
* Visual style of the spinner.
|
|
1346
|
+
* - `circular` → single border spin (default)
|
|
1347
|
+
* - `ring` → track + colored top border
|
|
1348
|
+
* - `dots` → three pulsing dots
|
|
1349
|
+
* - `bars` → four bouncing bars
|
|
1350
|
+
* - `dual` → two rings spinning opposite directions
|
|
1351
|
+
* - `pulse` → breathing dot
|
|
1352
|
+
* - `ripple` → expanding rings (radar effect)
|
|
1353
|
+
* - `gradient` → conic gradient spin
|
|
1354
|
+
* - `skeleton` → shimmer placeholder (pass width/height via className)
|
|
1355
|
+
*/
|
|
1356
|
+
variant?: 'circular' | 'ring' | 'dots' | 'bars' | 'dual' | 'pulse' | 'ripple' | 'gradient' | 'skeleton';
|
|
1357
|
+
/**
|
|
1358
|
+
* Size of the spinner.
|
|
1359
|
+
*/
|
|
1360
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
1361
|
+
/**
|
|
1362
|
+
* Color of the spinner.
|
|
1363
|
+
*/
|
|
1364
|
+
color?: 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'white';
|
|
1365
|
+
/**
|
|
1366
|
+
* Label shown next to or below the spinner.
|
|
1367
|
+
*/
|
|
1368
|
+
label?: string;
|
|
1369
|
+
/**
|
|
1370
|
+
* Position of the label relative to the spinner.
|
|
1371
|
+
* @default 'bottom'
|
|
1372
|
+
*/
|
|
1373
|
+
labelPosition?: 'top' | 'bottom' | 'left' | 'right';
|
|
1374
|
+
/**
|
|
1375
|
+
* Covers a parent element with a semi-transparent overlay.
|
|
1376
|
+
* Parent must have position: relative.
|
|
1377
|
+
*/
|
|
1378
|
+
overlay?: boolean;
|
|
1379
|
+
}
|
|
1380
|
+
/**
|
|
1381
|
+
* Spinner — loading indicator with 9 variants.
|
|
1382
|
+
*
|
|
1383
|
+
* Features beyond M3:
|
|
1384
|
+
* - 9 variants: circular, ring, dots, bars, dual, pulse, ripple, gradient, skeleton
|
|
1385
|
+
* - 6 sizes: xs to 2xl
|
|
1386
|
+
* - 6 colors
|
|
1387
|
+
* - label with position control
|
|
1388
|
+
* - overlay mode for covering content
|
|
1389
|
+
* - skeleton variant for content placeholders
|
|
1390
|
+
* - respects prefers-reduced-motion
|
|
1391
|
+
*
|
|
1392
|
+
* @example
|
|
1393
|
+
* // Basic
|
|
1394
|
+
* <Spinner />
|
|
1395
|
+
* <Spinner variant="dots" color="secondary" />
|
|
1396
|
+
*
|
|
1397
|
+
* // With label
|
|
1398
|
+
* <Spinner label="Loading..." labelPosition="right" />
|
|
1399
|
+
*
|
|
1400
|
+
* // Overlay
|
|
1401
|
+
* <div style={{ position: 'relative' }}>
|
|
1402
|
+
* <YourContent />
|
|
1403
|
+
* <Spinner overlay label="Please wait..." />
|
|
1404
|
+
* </div>
|
|
1405
|
+
*
|
|
1406
|
+
* // Skeleton
|
|
1407
|
+
* <Spinner variant="skeleton" className="h-4 w-32" />
|
|
1408
|
+
*/
|
|
1409
|
+
declare const Spinner: react.ForwardRefExoticComponent<SpinnerProps & react.RefAttributes<HTMLDivElement>>;
|
|
1410
|
+
interface SkeletonProps extends ComponentPropsWithoutRef<'div'> {
|
|
1411
|
+
/**
|
|
1412
|
+
* Shape of the skeleton.
|
|
1413
|
+
* - `text` → rounded rectangle (default)
|
|
1414
|
+
* - `circle` → circle shape
|
|
1415
|
+
* - `card` → taller rectangle for cards
|
|
1416
|
+
*/
|
|
1417
|
+
shape?: 'text' | 'circle' | 'card';
|
|
1418
|
+
}
|
|
1419
|
+
/**
|
|
1420
|
+
* Skeleton — shimmer placeholder shown while content loads.
|
|
1421
|
+
*
|
|
1422
|
+
* @example
|
|
1423
|
+
* // Text line
|
|
1424
|
+
* <Skeleton className="h-4 w-48" />
|
|
1425
|
+
*
|
|
1426
|
+
* // Avatar
|
|
1427
|
+
* <Skeleton shape="circle" className="size-10" />
|
|
1428
|
+
*
|
|
1429
|
+
* // Card
|
|
1430
|
+
* <Skeleton shape="card" className="h-32 w-full" />
|
|
1431
|
+
*/
|
|
1432
|
+
declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Card variants — CVA configuration.
|
|
1436
|
+
*
|
|
1437
|
+
* Base variants: elevated, filled, outlined, ghost, gradient, glass
|
|
1438
|
+
* All interactive states handled via compound variants.
|
|
1439
|
+
*/
|
|
1440
|
+
declare const cardVariants: (props?: ({
|
|
1441
|
+
variant?: "filled" | "outlined" | "elevated" | "ghost" | "gradient" | "glass" | null | undefined;
|
|
1442
|
+
radius?: "sm" | "md" | "lg" | "none" | "full" | null | undefined;
|
|
1443
|
+
interactive?: boolean | null | undefined;
|
|
1444
|
+
selected?: boolean | null | undefined;
|
|
1445
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1446
|
+
type CardVariantProps = VariantProps<typeof cardVariants>;
|
|
1447
|
+
|
|
1448
|
+
interface CardProps extends ComponentPropsWithoutRef<'div'>, CardVariantProps {
|
|
1449
|
+
/**
|
|
1450
|
+
* Visual style of the card.
|
|
1451
|
+
* - `elevated` → shadow, lifts on hover (default)
|
|
1452
|
+
* - `filled` → tonal surface background
|
|
1453
|
+
* - `outlined` → border, highlights on hover
|
|
1454
|
+
* - `ghost` → dashed border, minimal
|
|
1455
|
+
* - `gradient` → brand gradient background
|
|
1456
|
+
* - `glass` → frosted glass, use on colored backgrounds
|
|
1457
|
+
*/
|
|
1458
|
+
variant?: 'elevated' | 'filled' | 'outlined' | 'ghost' | 'gradient' | 'glass';
|
|
1459
|
+
/** Border radius of the card. */
|
|
1460
|
+
radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
|
|
1461
|
+
/** Adds hover/focus/active interactive states. */
|
|
1462
|
+
interactive?: boolean;
|
|
1463
|
+
/** Shows a selected ring or border. */
|
|
1464
|
+
selected?: boolean;
|
|
1465
|
+
/**
|
|
1466
|
+
* Renders the card as a button element for better semantics
|
|
1467
|
+
* when the entire card is clickable.
|
|
1468
|
+
*/
|
|
1469
|
+
asButton?: boolean;
|
|
1470
|
+
}
|
|
1471
|
+
/**
|
|
1472
|
+
* Card — a surface container for grouping related content.
|
|
1473
|
+
*
|
|
1474
|
+
* Features beyond M3:
|
|
1475
|
+
* - 6 variants: elevated, filled, outlined, ghost, gradient, glass
|
|
1476
|
+
* - interactive mode with hover/focus/active states
|
|
1477
|
+
* - selected state
|
|
1478
|
+
* - asButton for fully clickable cards
|
|
1479
|
+
* - radius control
|
|
1480
|
+
* - composable with CardHeader, CardBody, CardFooter, CardMedia
|
|
1481
|
+
*
|
|
1482
|
+
* @example
|
|
1483
|
+
* // Basic
|
|
1484
|
+
* <Card>
|
|
1485
|
+
* <CardBody>
|
|
1486
|
+
* <p>Content here</p>
|
|
1487
|
+
* </CardBody>
|
|
1488
|
+
* </Card>
|
|
1489
|
+
*
|
|
1490
|
+
* // Interactive outlined
|
|
1491
|
+
* <Card variant="outlined" interactive onClick={handleClick}>
|
|
1492
|
+
* <CardBody>Click me</CardBody>
|
|
1493
|
+
* </Card>
|
|
1494
|
+
*
|
|
1495
|
+
* // Gradient
|
|
1496
|
+
* <Card variant="gradient">
|
|
1497
|
+
* <CardBody>
|
|
1498
|
+
* <h3>Featured</h3>
|
|
1499
|
+
* </CardBody>
|
|
1500
|
+
* </Card>
|
|
1501
|
+
*
|
|
1502
|
+
* // Glass (use on colored background)
|
|
1503
|
+
* <div className="bg-gradient-to-br from-primary to-secondary p-8">
|
|
1504
|
+
* <Card variant="glass">
|
|
1505
|
+
* <CardBody>Glass card</CardBody>
|
|
1506
|
+
* </Card>
|
|
1507
|
+
* </div>
|
|
1508
|
+
*/
|
|
1509
|
+
declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>>;
|
|
1510
|
+
interface CardMediaProps extends ComponentPropsWithoutRef<'div'> {
|
|
1511
|
+
/** Image source URL. */
|
|
1512
|
+
src?: string;
|
|
1513
|
+
/** Image alt text. */
|
|
1514
|
+
alt?: string;
|
|
1515
|
+
/** Height of the media area. Default: 160px */
|
|
1516
|
+
height?: number;
|
|
1517
|
+
/** Gradient overlay on the image. */
|
|
1518
|
+
overlay?: boolean;
|
|
1519
|
+
/** Content shown over the overlay. */
|
|
1520
|
+
overlayContent?: ReactNode;
|
|
1521
|
+
}
|
|
1522
|
+
/**
|
|
1523
|
+
* CardMedia — image area at the top of a card.
|
|
1524
|
+
* Shows an image or a placeholder if no src provided.
|
|
1525
|
+
*/
|
|
1526
|
+
declare const CardMedia: react.ForwardRefExoticComponent<CardMediaProps & react.RefAttributes<HTMLDivElement>>;
|
|
1527
|
+
interface CardHeaderProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {
|
|
1528
|
+
/** Main title. */
|
|
1529
|
+
title?: ReactNode;
|
|
1530
|
+
/** Subtitle shown below title. */
|
|
1531
|
+
subtitle?: ReactNode;
|
|
1532
|
+
/** Element shown on the right side (badge, menu, icon). */
|
|
1533
|
+
action?: ReactNode;
|
|
1534
|
+
/** Avatar or icon shown on the left. */
|
|
1535
|
+
avatar?: ReactNode;
|
|
1536
|
+
}
|
|
1537
|
+
/**
|
|
1538
|
+
* CardHeader — title area with optional subtitle, action, and avatar.
|
|
1539
|
+
*/
|
|
1540
|
+
declare const CardHeader: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
|
|
1541
|
+
interface CardBodyProps extends ComponentPropsWithoutRef<'div'> {
|
|
1542
|
+
/** Remove default padding. */
|
|
1543
|
+
noPadding?: boolean;
|
|
1544
|
+
}
|
|
1545
|
+
/**
|
|
1546
|
+
* CardBody — main content area of the card.
|
|
1547
|
+
*/
|
|
1548
|
+
declare const CardBody: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
|
|
1549
|
+
interface CardFooterProps extends ComponentPropsWithoutRef<'div'> {
|
|
1550
|
+
/** Adds a top border separator. */
|
|
1551
|
+
divider?: boolean;
|
|
1552
|
+
}
|
|
1553
|
+
/**
|
|
1554
|
+
* CardFooter — bottom area for actions and metadata.
|
|
1555
|
+
*/
|
|
1556
|
+
declare const CardFooter: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
|
|
1557
|
+
|
|
1558
|
+
declare const dialogPanelVariants: (props?: ({
|
|
1559
|
+
size?: "sm" | "md" | "lg" | "xs" | "fullscreen" | null | undefined;
|
|
1560
|
+
position?: "bottom" | "left" | "right" | "center" | null | undefined;
|
|
1561
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1562
|
+
type DialogPanelVariantProps = VariantProps<typeof dialogPanelVariants>;
|
|
1563
|
+
|
|
1564
|
+
interface DialogProps extends DialogPanelVariantProps {
|
|
1565
|
+
/** Whether the dialog is open. */
|
|
1566
|
+
open: boolean;
|
|
1567
|
+
/** Called when dialog should close (ESC, backdrop click, close button). */
|
|
1568
|
+
onClose: () => void;
|
|
1569
|
+
/**
|
|
1570
|
+
* Dialog type — affects icon and color scheme.
|
|
1571
|
+
* - `default` → neutral (default)
|
|
1572
|
+
* - `destructive` → red, for dangerous actions
|
|
1573
|
+
* - `success` → green, for confirmations
|
|
1574
|
+
* - `warning` → amber, for caution
|
|
1575
|
+
* - `info` → blue, for information
|
|
1576
|
+
*/
|
|
1577
|
+
type?: 'default' | 'destructive' | 'success' | 'warning' | 'info';
|
|
1578
|
+
/**
|
|
1579
|
+
* Position of the dialog.
|
|
1580
|
+
* - `center` → centered modal (default)
|
|
1581
|
+
* - `bottom` → bottom drawer/sheet
|
|
1582
|
+
* - `left` → left side panel
|
|
1583
|
+
* - `right` → right side panel
|
|
1584
|
+
*/
|
|
1585
|
+
position?: 'center' | 'bottom' | 'left' | 'right';
|
|
1586
|
+
/** Dialog size (only applies to center position). */
|
|
1587
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'fullscreen';
|
|
1588
|
+
/** Title shown in the dialog header. */
|
|
1589
|
+
title?: string;
|
|
1590
|
+
/** Subtitle shown below the title. */
|
|
1591
|
+
subtitle?: string;
|
|
1592
|
+
/** Emoji or icon shown above the title. */
|
|
1593
|
+
icon?: string;
|
|
1594
|
+
/** Hero image shown at the top of the dialog (above header). */
|
|
1595
|
+
imageSrc?: string;
|
|
1596
|
+
/** Alt text for the hero image. */
|
|
1597
|
+
imageAlt?: string;
|
|
1598
|
+
/** Height of the hero image. Default: 160px */
|
|
1599
|
+
imageHeight?: number;
|
|
1600
|
+
/** Shows a close button in the top-right corner. */
|
|
1601
|
+
showCloseButton?: boolean;
|
|
1602
|
+
/** Close when clicking the backdrop. Default: true */
|
|
1603
|
+
closeOnBackdrop?: boolean;
|
|
1604
|
+
/** Close on Escape key. Default: true */
|
|
1605
|
+
closeOnEscape?: boolean;
|
|
1606
|
+
/** Footer content — usually action buttons. */
|
|
1607
|
+
footer?: ReactNode;
|
|
1608
|
+
/** Shows a divider between body and footer. */
|
|
1609
|
+
footerDivider?: boolean;
|
|
1610
|
+
/** Additional className for the panel. */
|
|
1611
|
+
panelClassName?: string;
|
|
1612
|
+
/** Children = dialog body content. */
|
|
1613
|
+
children?: ReactNode;
|
|
1614
|
+
}
|
|
1615
|
+
/**
|
|
1616
|
+
* Dialog — a modal overlay that demands user attention.
|
|
1617
|
+
*
|
|
1618
|
+
* Features beyond M3:
|
|
1619
|
+
* - 5 types: default, destructive, success, warning, info
|
|
1620
|
+
* - 4 positions: center, bottom drawer, left/right side panel
|
|
1621
|
+
* - 5 sizes: xs, sm, md, lg, fullscreen
|
|
1622
|
+
* - hero image header
|
|
1623
|
+
* - focus trap + escape + backdrop close
|
|
1624
|
+
* - scroll lock on open
|
|
1625
|
+
* - portal rendering (outside DOM tree)
|
|
1626
|
+
* - composable with DialogHeader, DialogBody, DialogFooter
|
|
1627
|
+
*
|
|
1628
|
+
* @example
|
|
1629
|
+
* // Basic
|
|
1630
|
+
* <Dialog open={open} onClose={() => setOpen(false)} title="Hello">
|
|
1631
|
+
* <DialogBody>Content here</DialogBody>
|
|
1632
|
+
* </Dialog>
|
|
1633
|
+
*
|
|
1634
|
+
* // Destructive
|
|
1635
|
+
* <Dialog
|
|
1636
|
+
* open={open} onClose={() => setOpen(false)}
|
|
1637
|
+
* type="destructive"
|
|
1638
|
+
* title="Delete account?"
|
|
1639
|
+
* icon="🗑️"
|
|
1640
|
+
* footer={
|
|
1641
|
+
* <>
|
|
1642
|
+
* <Button variant="text" onClick={() => setOpen(false)}>Cancel</Button>
|
|
1643
|
+
* <Button variant="destructive" onClick={handleDelete}>Delete</Button>
|
|
1644
|
+
* </>
|
|
1645
|
+
* }
|
|
1646
|
+
* >
|
|
1647
|
+
* <DialogBody>This cannot be undone.</DialogBody>
|
|
1648
|
+
* </Dialog>
|
|
1649
|
+
*
|
|
1650
|
+
* // Bottom drawer
|
|
1651
|
+
* <Dialog open={open} onClose={() => setOpen(false)} position="bottom" title="Share">
|
|
1652
|
+
* <DialogBody>...</DialogBody>
|
|
1653
|
+
* </Dialog>
|
|
1654
|
+
*/
|
|
1655
|
+
declare const Dialog: react.ForwardRefExoticComponent<DialogProps & react.RefAttributes<HTMLDivElement>>;
|
|
1656
|
+
|
|
1657
|
+
/**
|
|
1658
|
+
* Toast variants — CVA configuration.
|
|
1659
|
+
*
|
|
1660
|
+
* Types: default, success, error, warning, info, loading, gradient, glass
|
|
1661
|
+
* Positions: 6 positions
|
|
1662
|
+
*/
|
|
1663
|
+
declare const toastVariants: (props?: ({
|
|
1664
|
+
type?: "info" | "loading" | "success" | "gradient" | "default" | "error" | "warning" | "glass" | null | undefined;
|
|
1665
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1666
|
+
type ToastVariantProps = VariantProps<typeof toastVariants>;
|
|
1667
|
+
type ToastType = 'default' | 'success' | 'error' | 'warning' | 'info' | 'loading' | 'gradient' | 'glass';
|
|
1668
|
+
type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
|
|
1669
|
+
|
|
1670
|
+
interface ToasterProps {
|
|
1671
|
+
/**
|
|
1672
|
+
* Position of the toast stack.
|
|
1673
|
+
* @default 'bottom-right'
|
|
1674
|
+
*/
|
|
1675
|
+
position?: ToastPosition;
|
|
1676
|
+
/**
|
|
1677
|
+
* Maximum number of toasts visible at once.
|
|
1678
|
+
* @default 5
|
|
1679
|
+
*/
|
|
1680
|
+
maxToasts?: number;
|
|
1681
|
+
/**
|
|
1682
|
+
* Whether to expand all toasts or collapse into a stack.
|
|
1683
|
+
* @default false (collapsed)
|
|
1684
|
+
*/
|
|
1685
|
+
expand?: boolean;
|
|
1686
|
+
/**
|
|
1687
|
+
* Gap between toasts in pixels.
|
|
1688
|
+
* @default 8
|
|
1689
|
+
*/
|
|
1690
|
+
gap?: number;
|
|
1691
|
+
}
|
|
1692
|
+
/**
|
|
1693
|
+
* Toaster — renders the toast stack. Place once at the root of your app.
|
|
1694
|
+
*
|
|
1695
|
+
* @example
|
|
1696
|
+
* // In App.tsx or main layout
|
|
1697
|
+
* <Toaster position="bottom-right" />
|
|
1698
|
+
*
|
|
1699
|
+
* // Then anywhere in your app
|
|
1700
|
+
* import { toast } from './components/Toast';
|
|
1701
|
+
* toast.success('Saved!')
|
|
1702
|
+
*/
|
|
1703
|
+
declare function Toaster({ position, maxToasts, expand, gap, }: ToasterProps): react.ReactPortal | null;
|
|
1704
|
+
|
|
1705
|
+
interface ToastAction {
|
|
1706
|
+
label: string;
|
|
1707
|
+
onClick: () => void;
|
|
1708
|
+
variant?: 'primary' | 'ghost';
|
|
1709
|
+
}
|
|
1710
|
+
interface ToastData {
|
|
1711
|
+
id: string;
|
|
1712
|
+
type: ToastType;
|
|
1713
|
+
title: string;
|
|
1714
|
+
description?: string;
|
|
1715
|
+
duration?: number;
|
|
1716
|
+
progress?: number;
|
|
1717
|
+
showProgress?: boolean;
|
|
1718
|
+
actions?: ToastAction[];
|
|
1719
|
+
avatarSrc?: string;
|
|
1720
|
+
avatarName?: string;
|
|
1721
|
+
imageSrc?: string;
|
|
1722
|
+
icon?: ReactNode;
|
|
1723
|
+
dismissible?: boolean;
|
|
1724
|
+
onDismiss?: () => void;
|
|
1725
|
+
createdAt: number;
|
|
1726
|
+
}
|
|
1727
|
+
interface ToastOptions extends Omit<ToastData, 'id' | 'createdAt' | 'type'> {
|
|
1728
|
+
id?: string;
|
|
1729
|
+
type?: ToastType;
|
|
1730
|
+
}
|
|
1731
|
+
/**
|
|
1732
|
+
* toast — the main API for showing toasts.
|
|
1733
|
+
*
|
|
1734
|
+
* @example
|
|
1735
|
+
* toast('Hello world')
|
|
1736
|
+
* toast.success('Saved!')
|
|
1737
|
+
* toast.error('Failed!', { description: 'Check your connection' })
|
|
1738
|
+
* toast.promise(fetch('/api'), { loading: 'Loading...', success: 'Done!', error: 'Failed' })
|
|
1739
|
+
* toast.update(id, { progress: 75 })
|
|
1740
|
+
* toast.dismiss(id)
|
|
1741
|
+
* toast.dismissAll()
|
|
1742
|
+
*/
|
|
1743
|
+
declare const toast: ((title: string, options?: Partial<ToastOptions>) => string) & {
|
|
1744
|
+
success: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1745
|
+
error: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1746
|
+
warning: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1747
|
+
info: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1748
|
+
loading: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1749
|
+
gradient: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1750
|
+
/**
|
|
1751
|
+
* Rich toast with avatar and multiple actions.
|
|
1752
|
+
*/
|
|
1753
|
+
rich: (options: ToastOptions) => string;
|
|
1754
|
+
/**
|
|
1755
|
+
* Progress toast — update progress with toast.update(id, { progress: 75 }).
|
|
1756
|
+
*/
|
|
1757
|
+
progress: (title: string, options?: Partial<ToastOptions>) => string;
|
|
1758
|
+
/**
|
|
1759
|
+
* Promise toast — shows loading, then success or error.
|
|
1760
|
+
*
|
|
1761
|
+
* @example
|
|
1762
|
+
* toast.promise(saveData(), {
|
|
1763
|
+
* loading: 'Saving...',
|
|
1764
|
+
* success: 'Saved successfully!',
|
|
1765
|
+
* error: 'Failed to save'
|
|
1766
|
+
* })
|
|
1767
|
+
*/
|
|
1768
|
+
promise: <T>(promise: Promise<T>, messages: {
|
|
1769
|
+
loading: string;
|
|
1770
|
+
success: string | ((data: T) => string);
|
|
1771
|
+
error: string | ((err: unknown) => string);
|
|
1772
|
+
}, options?: Partial<ToastOptions>) => Promise<T>;
|
|
1773
|
+
/**
|
|
1774
|
+
* Update an existing toast by id.
|
|
1775
|
+
*/
|
|
1776
|
+
update: (id: string, options: Partial<ToastOptions>) => void;
|
|
1777
|
+
/**
|
|
1778
|
+
* Dismiss a toast by id.
|
|
1779
|
+
*/
|
|
1780
|
+
dismiss: (id: string) => void;
|
|
1781
|
+
/**
|
|
1782
|
+
* Dismiss all toasts.
|
|
1783
|
+
*/
|
|
1784
|
+
dismissAll: () => void;
|
|
1785
|
+
};
|
|
1786
|
+
|
|
1787
|
+
/**
|
|
1788
|
+
* Tabs variants — CVA configuration.
|
|
1789
|
+
*
|
|
1790
|
+
* Variants: underline, pill, filled, bordered, card, floating, line, bubble, gradient
|
|
1791
|
+
* Orientations: horizontal, vertical
|
|
1792
|
+
*/
|
|
1793
|
+
declare const tabsListVariants: (props?: ({
|
|
1794
|
+
variant?: "filled" | "pill" | "line" | "gradient" | "floating" | "card" | "underline" | "bordered" | "bubble" | null | undefined;
|
|
1795
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
1796
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1797
|
+
declare const tabTriggerVariants: (props?: ({
|
|
1798
|
+
variant?: "filled" | "pill" | "line" | "gradient" | "floating" | "card" | "underline" | "bordered" | "bubble" | null | undefined;
|
|
1799
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1800
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1801
|
+
type TabsListVariantProps = VariantProps<typeof tabsListVariants>;
|
|
1802
|
+
type TabTriggerVariantProps = VariantProps<typeof tabTriggerVariants>;
|
|
1803
|
+
|
|
1804
|
+
interface TabsProps extends ComponentPropsWithoutRef<'div'> {
|
|
1805
|
+
/**
|
|
1806
|
+
* Default active tab value (uncontrolled).
|
|
1807
|
+
*/
|
|
1808
|
+
defaultValue?: string;
|
|
1809
|
+
/**
|
|
1810
|
+
* Controlled active tab value.
|
|
1811
|
+
*/
|
|
1812
|
+
value?: string;
|
|
1813
|
+
/**
|
|
1814
|
+
* Callback when active tab changes.
|
|
1815
|
+
*/
|
|
1816
|
+
onValueChange?: (value: string) => void;
|
|
1817
|
+
/**
|
|
1818
|
+
* Visual variant.
|
|
1819
|
+
* - `underline` → M3 primary style, bottom border indicator
|
|
1820
|
+
* - `pill` → segmented control, filled active tab
|
|
1821
|
+
* - `filled` → tonal background on active
|
|
1822
|
+
* - `bordered` → button group style
|
|
1823
|
+
* - `card` → each tab is a card with icon
|
|
1824
|
+
* - `floating` → elevated pill with shadow
|
|
1825
|
+
* - `line` → left border indicator (sidebar style)
|
|
1826
|
+
* - `bubble` → pill outline that fills on active
|
|
1827
|
+
* - `gradient` → brand gradient on active tab
|
|
1828
|
+
*/
|
|
1829
|
+
variant?: TabsListVariantProps['variant'];
|
|
1830
|
+
/**
|
|
1831
|
+
* Tab orientation.
|
|
1832
|
+
* - `horizontal` → tabs in a row (default)
|
|
1833
|
+
* - `vertical` → tabs in a column (sidebar style)
|
|
1834
|
+
*/
|
|
1835
|
+
orientation?: 'horizontal' | 'vertical';
|
|
1836
|
+
/**
|
|
1837
|
+
* Size of the tab labels.
|
|
1838
|
+
*/
|
|
1839
|
+
size?: TabTriggerVariantProps['size'];
|
|
1840
|
+
}
|
|
1841
|
+
/**
|
|
1842
|
+
* Tabs — a navigation component for switching between views.
|
|
1843
|
+
*
|
|
1844
|
+
* Features beyond M3:
|
|
1845
|
+
* - 9 variants: underline, pill, filled, bordered, card, floating, line, bubble, gradient
|
|
1846
|
+
* - horizontal and vertical orientations
|
|
1847
|
+
* - badge counts on tabs
|
|
1848
|
+
* - icons in tabs
|
|
1849
|
+
* - subtitle below tab label
|
|
1850
|
+
* - scrollable overflow
|
|
1851
|
+
* - step/wizard tab style
|
|
1852
|
+
* - full keyboard navigation (arrows, home, end)
|
|
1853
|
+
* - controlled + uncontrolled
|
|
1854
|
+
*
|
|
1855
|
+
* @example
|
|
1856
|
+
* <Tabs defaultValue="overview">
|
|
1857
|
+
* <TabsList>
|
|
1858
|
+
* <TabsTrigger value="overview">Overview</TabsTrigger>
|
|
1859
|
+
* <TabsTrigger value="analytics">Analytics</TabsTrigger>
|
|
1860
|
+
* </TabsList>
|
|
1861
|
+
* <TabsContent value="overview">Overview content</TabsContent>
|
|
1862
|
+
* <TabsContent value="analytics">Analytics content</TabsContent>
|
|
1863
|
+
* </Tabs>
|
|
1864
|
+
*/
|
|
1865
|
+
declare const Tabs: react.ForwardRefExoticComponent<TabsProps & react.RefAttributes<HTMLDivElement>>;
|
|
1866
|
+
interface StepTabItem {
|
|
1867
|
+
value: string;
|
|
1868
|
+
label: string;
|
|
1869
|
+
done?: boolean;
|
|
1870
|
+
disabled?: boolean;
|
|
1871
|
+
}
|
|
1872
|
+
interface StepTabsProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
1873
|
+
/** Step items. */
|
|
1874
|
+
steps: StepTabItem[];
|
|
1875
|
+
/** Currently active step value. */
|
|
1876
|
+
value: string;
|
|
1877
|
+
/** Callback when step is clicked. */
|
|
1878
|
+
onChange?: (value: string) => void;
|
|
1879
|
+
}
|
|
1880
|
+
/**
|
|
1881
|
+
* StepTabs — wizard/onboarding progress tabs.
|
|
1882
|
+
*
|
|
1883
|
+
* @example
|
|
1884
|
+
* <StepTabs
|
|
1885
|
+
* steps={[
|
|
1886
|
+
* { value: 'account', label: 'Account', done: true },
|
|
1887
|
+
* { value: 'profile', label: 'Profile' },
|
|
1888
|
+
* { value: 'plan', label: 'Plan', disabled: true },
|
|
1889
|
+
* ]}
|
|
1890
|
+
* value="profile"
|
|
1891
|
+
* onChange={setStep}
|
|
1892
|
+
* />
|
|
1893
|
+
*/
|
|
1894
|
+
declare const StepTabs: react.ForwardRefExoticComponent<StepTabsProps & react.RefAttributes<HTMLDivElement>>;
|
|
1895
|
+
|
|
1896
|
+
type AccordionVariant = 'default' | 'bordered' | 'filled' | 'card' | 'flush' | 'separated' | 'gradient' | 'plus' | 'numbered' | 'image';
|
|
1897
|
+
|
|
1898
|
+
interface AccordionProps extends ComponentPropsWithoutRef<'div'> {
|
|
1899
|
+
/**
|
|
1900
|
+
* Visual variant.
|
|
1901
|
+
* - `default` → underline divider between items
|
|
1902
|
+
* - `bordered` → full border around the group
|
|
1903
|
+
* - `filled` → tonal background on items
|
|
1904
|
+
* - `card` → each item is a card
|
|
1905
|
+
* - `flush` → no borders, hover highlight
|
|
1906
|
+
* - `separated` → separated cards with focus ring
|
|
1907
|
+
* - `gradient` → brand gradient header when open
|
|
1908
|
+
* - `plus` → FAQ style with +/- icon
|
|
1909
|
+
* - `numbered` → step numbers (onboarding)
|
|
1910
|
+
* - `image` → image/icon side panel
|
|
1911
|
+
*/
|
|
1912
|
+
variant?: AccordionVariant;
|
|
1913
|
+
/**
|
|
1914
|
+
* Selection mode.
|
|
1915
|
+
* - `single` → only one item open at a time (default)
|
|
1916
|
+
* - `multiple` → many items can be open simultaneously
|
|
1917
|
+
*/
|
|
1918
|
+
mode?: 'single' | 'multiple';
|
|
1919
|
+
/**
|
|
1920
|
+
* Default open item(s). Use value prop of AccordionItem.
|
|
1921
|
+
*/
|
|
1922
|
+
defaultValue?: string | string[];
|
|
1923
|
+
/**
|
|
1924
|
+
* Controlled open items.
|
|
1925
|
+
*/
|
|
1926
|
+
value?: string | string[];
|
|
1927
|
+
/**
|
|
1928
|
+
* Callback when open items change.
|
|
1929
|
+
*/
|
|
1930
|
+
onValueChange?: (value: string | string[]) => void;
|
|
1931
|
+
/**
|
|
1932
|
+
* Icon style for the expand indicator.
|
|
1933
|
+
* - `chevron` → rotating chevron (default)
|
|
1934
|
+
* - `plus` → +/- toggle
|
|
1935
|
+
* - `arrow` → right arrow
|
|
1936
|
+
* - `none` → no icon
|
|
1937
|
+
*/
|
|
1938
|
+
iconStyle?: 'chevron' | 'plus' | 'arrow' | 'none';
|
|
1939
|
+
}
|
|
1940
|
+
/**
|
|
1941
|
+
* Accordion — collapsible content sections.
|
|
1942
|
+
*
|
|
1943
|
+
* Features beyond M3:
|
|
1944
|
+
* - 10 variants: default, bordered, filled, card, flush, separated, gradient, plus, numbered, image
|
|
1945
|
+
* - single and multiple open modes
|
|
1946
|
+
* - 4 icon styles: chevron, plus, arrow, none
|
|
1947
|
+
* - badge and subtitle on triggers
|
|
1948
|
+
* - icon/image in trigger
|
|
1949
|
+
* - nested accordions
|
|
1950
|
+
* - smooth height animation
|
|
1951
|
+
* - full keyboard navigation
|
|
1952
|
+
*
|
|
1953
|
+
* @example
|
|
1954
|
+
* <Accordion defaultValue="item-1">
|
|
1955
|
+
* <AccordionItem value="item-1" title="What is this?">
|
|
1956
|
+
* Content here
|
|
1957
|
+
* </AccordionItem>
|
|
1958
|
+
* <AccordionItem value="item-2" title="How does it work?">
|
|
1959
|
+
* More content
|
|
1960
|
+
* </AccordionItem>
|
|
1961
|
+
* </Accordion>
|
|
1962
|
+
*/
|
|
1963
|
+
declare const Accordion: react.ForwardRefExoticComponent<AccordionProps & react.RefAttributes<HTMLDivElement>>;
|
|
1964
|
+
|
|
1965
|
+
/**
|
|
1966
|
+
* Progress variants — CVA configuration.
|
|
1967
|
+
*
|
|
1968
|
+
* Variants: default, gradient, glow, striped, thin, segmented
|
|
1969
|
+
* Colors: default, secondary, success, warning, error, info
|
|
1970
|
+
* Sizes: xs, sm, md, lg, xl
|
|
1971
|
+
*/
|
|
1972
|
+
declare const progressTrackVariants: (props?: ({
|
|
1973
|
+
size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
|
|
1974
|
+
variant?: "gradient" | "default" | "indeterminate" | "thin" | "bubble" | "glow" | "striped" | null | undefined;
|
|
1975
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1976
|
+
type ProgressTrackVariantProps = VariantProps<typeof progressTrackVariants>;
|
|
1977
|
+
type ProgressColor = 'default' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
1978
|
+
type ProgressVariant = 'default' | 'gradient' | 'glow' | 'striped' | 'thin' | 'indeterminate' | 'bubble';
|
|
1979
|
+
|
|
1980
|
+
interface ProgressProps extends ComponentPropsWithoutRef<'div'>, ProgressTrackVariantProps {
|
|
1981
|
+
/**
|
|
1982
|
+
* Progress value 0-100.
|
|
1983
|
+
* Omit for indeterminate progress.
|
|
1984
|
+
*/
|
|
1985
|
+
value?: number;
|
|
1986
|
+
/**
|
|
1987
|
+
* Visual variant.
|
|
1988
|
+
* - `default` → solid fill
|
|
1989
|
+
* - `gradient` → brand gradient fill
|
|
1990
|
+
* - `glow` → neon glow effect
|
|
1991
|
+
* - `striped` → animated diagonal stripes
|
|
1992
|
+
* - `thin` → 2px ultra-minimal line
|
|
1993
|
+
* - `indeterminate` → unknown progress, bouncing animation
|
|
1994
|
+
* - `bubble` → floating value tooltip on fill
|
|
1995
|
+
*/
|
|
1996
|
+
variant?: ProgressVariant;
|
|
1997
|
+
/**
|
|
1998
|
+
* Color of the progress fill.
|
|
1999
|
+
*/
|
|
2000
|
+
color?: ProgressColor;
|
|
2001
|
+
/**
|
|
2002
|
+
* Size (height) of the progress bar.
|
|
2003
|
+
*/
|
|
2004
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
2005
|
+
/**
|
|
2006
|
+
* Label shown above the progress bar.
|
|
2007
|
+
*/
|
|
2008
|
+
label?: string;
|
|
2009
|
+
/**
|
|
2010
|
+
* Value display format.
|
|
2011
|
+
* - `percent` → "65%"
|
|
2012
|
+
* - `fraction` → "6.5/10"
|
|
2013
|
+
* - `custom` → use valueLabel prop
|
|
2014
|
+
* - `none` → hide value
|
|
2015
|
+
*/
|
|
2016
|
+
showValue?: 'percent' | 'fraction' | 'none';
|
|
2017
|
+
/**
|
|
2018
|
+
* Custom value label (used when showValue="fraction" or custom).
|
|
2019
|
+
*/
|
|
2020
|
+
valueLabel?: string;
|
|
2021
|
+
/**
|
|
2022
|
+
* Helper text shown below the bar.
|
|
2023
|
+
*/
|
|
2024
|
+
helperText?: string;
|
|
2025
|
+
/**
|
|
2026
|
+
* Maximum value (default: 100).
|
|
2027
|
+
*/
|
|
2028
|
+
max?: number;
|
|
2029
|
+
}
|
|
2030
|
+
/**
|
|
2031
|
+
* Progress — a linear progress indicator.
|
|
2032
|
+
*
|
|
2033
|
+
* Features beyond M3:
|
|
2034
|
+
* - 7 variants: default, gradient, glow, striped, thin, indeterminate, bubble
|
|
2035
|
+
* - 6 colors
|
|
2036
|
+
* - 5 sizes
|
|
2037
|
+
* - label, value display, helper text
|
|
2038
|
+
* - bubble tooltip that tracks fill position
|
|
2039
|
+
* - full ARIA support
|
|
2040
|
+
*
|
|
2041
|
+
* @example
|
|
2042
|
+
* // Basic
|
|
2043
|
+
* <Progress value={65} />
|
|
2044
|
+
*
|
|
2045
|
+
* // Gradient with label
|
|
2046
|
+
* <Progress value={75} variant="gradient" label="Profile completion" showValue="percent" />
|
|
2047
|
+
*
|
|
2048
|
+
* // Indeterminate
|
|
2049
|
+
* <Progress variant="indeterminate" label="Loading..." />
|
|
2050
|
+
*
|
|
2051
|
+
* // Glow
|
|
2052
|
+
* <Progress value={85} variant="glow" color="success" />
|
|
2053
|
+
*/
|
|
2054
|
+
declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
|
|
2055
|
+
interface SegmentedProgressProps extends ComponentPropsWithoutRef<'div'> {
|
|
2056
|
+
/** Total number of segments. */
|
|
2057
|
+
total: number;
|
|
2058
|
+
/** Number of filled segments. */
|
|
2059
|
+
value: number;
|
|
2060
|
+
/** Color of filled segments. */
|
|
2061
|
+
color?: ProgressColor;
|
|
2062
|
+
/** Size of each segment. */
|
|
2063
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2064
|
+
/** Label shown above. */
|
|
2065
|
+
label?: string;
|
|
2066
|
+
/** Custom color per segment index. */
|
|
2067
|
+
segmentColors?: Partial<Record<number, ProgressColor>>;
|
|
2068
|
+
}
|
|
2069
|
+
/**
|
|
2070
|
+
* SegmentedProgress — discrete steps shown as individual pills.
|
|
2071
|
+
*
|
|
2072
|
+
* @example
|
|
2073
|
+
* <SegmentedProgress total={5} value={3} label="Step 3 of 5" />
|
|
2074
|
+
*/
|
|
2075
|
+
declare const SegmentedProgress: react.ForwardRefExoticComponent<SegmentedProgressProps & react.RefAttributes<HTMLDivElement>>;
|
|
2076
|
+
interface CircularProgressProps extends ComponentPropsWithoutRef<'div'> {
|
|
2077
|
+
/** Progress value 0-100. */
|
|
2078
|
+
value?: number;
|
|
2079
|
+
/** Size in pixels. */
|
|
2080
|
+
size?: number;
|
|
2081
|
+
/** Stroke width. */
|
|
2082
|
+
strokeWidth?: number;
|
|
2083
|
+
/** Color of the progress arc. */
|
|
2084
|
+
color?: ProgressColor;
|
|
2085
|
+
/** Whether to show value in center. */
|
|
2086
|
+
showValue?: boolean;
|
|
2087
|
+
/** Custom label inside circle. */
|
|
2088
|
+
centerLabel?: string;
|
|
2089
|
+
/** Use gradient stroke. */
|
|
2090
|
+
gradient?: boolean;
|
|
2091
|
+
}
|
|
2092
|
+
/**
|
|
2093
|
+
* CircularProgress — a circular progress indicator.
|
|
2094
|
+
*
|
|
2095
|
+
* @example
|
|
2096
|
+
* <CircularProgress value={75} showValue />
|
|
2097
|
+
* <CircularProgress value={85} color="success" size={80} />
|
|
2098
|
+
*/
|
|
2099
|
+
declare const CircularProgress: react.ForwardRefExoticComponent<CircularProgressProps & react.RefAttributes<HTMLDivElement>>;
|
|
2100
|
+
interface MultiProgressSegment {
|
|
2101
|
+
value: number;
|
|
2102
|
+
color: ProgressColor;
|
|
2103
|
+
label?: string;
|
|
2104
|
+
}
|
|
2105
|
+
interface MultiProgressProps extends ComponentPropsWithoutRef<'div'> {
|
|
2106
|
+
/** Array of segments. Values should sum to 100. */
|
|
2107
|
+
segments: MultiProgressSegment[];
|
|
2108
|
+
/** Size of the bar. */
|
|
2109
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2110
|
+
/** Show legend below. */
|
|
2111
|
+
showLegend?: boolean;
|
|
2112
|
+
/** Label shown above. */
|
|
2113
|
+
label?: string;
|
|
2114
|
+
}
|
|
2115
|
+
/**
|
|
2116
|
+
* MultiProgress — a stacked multi-color progress bar.
|
|
2117
|
+
*
|
|
2118
|
+
* @example
|
|
2119
|
+
* <MultiProgress
|
|
2120
|
+
* segments={[
|
|
2121
|
+
* { value: 45, color: 'default', label: 'Design' },
|
|
2122
|
+
* { value: 30, color: 'secondary', label: 'Dev' },
|
|
2123
|
+
* { value: 25, color: 'success', label: 'QA' },
|
|
2124
|
+
* ]}
|
|
2125
|
+
* showLegend
|
|
2126
|
+
* />
|
|
2127
|
+
*/
|
|
2128
|
+
declare const MultiProgress: react.ForwardRefExoticComponent<MultiProgressProps & react.RefAttributes<HTMLDivElement>>;
|
|
2129
|
+
|
|
2130
|
+
type MenuTheme = 'light' | 'dark';
|
|
2131
|
+
|
|
2132
|
+
interface DropdownMenuProps {
|
|
2133
|
+
/**
|
|
2134
|
+
* The trigger element. Usually a Button or IconButton.
|
|
2135
|
+
*/
|
|
2136
|
+
trigger: ReactNode;
|
|
2137
|
+
/**
|
|
2138
|
+
* Menu content — use MenuItem, MenuSeparator, MenuGroup etc.
|
|
2139
|
+
*/
|
|
2140
|
+
children: ReactNode;
|
|
2141
|
+
/**
|
|
2142
|
+
* Visual theme.
|
|
2143
|
+
*/
|
|
2144
|
+
theme?: MenuTheme;
|
|
2145
|
+
/**
|
|
2146
|
+
* Horizontal alignment of the menu relative to the trigger.
|
|
2147
|
+
*/
|
|
2148
|
+
align?: 'start' | 'end' | 'center';
|
|
2149
|
+
/**
|
|
2150
|
+
* Which side of the trigger to open on.
|
|
2151
|
+
*/
|
|
2152
|
+
side?: 'bottom' | 'top';
|
|
2153
|
+
/**
|
|
2154
|
+
* Whether the menu is open (controlled).
|
|
2155
|
+
*/
|
|
2156
|
+
open?: boolean;
|
|
2157
|
+
/**
|
|
2158
|
+
* Callback when open state changes.
|
|
2159
|
+
*/
|
|
2160
|
+
onOpenChange?: (open: boolean) => void;
|
|
2161
|
+
/**
|
|
2162
|
+
* Min width of the menu.
|
|
2163
|
+
*/
|
|
2164
|
+
minWidth?: number;
|
|
2165
|
+
className?: string;
|
|
2166
|
+
}
|
|
2167
|
+
/**
|
|
2168
|
+
* DropdownMenu — a floating panel of actions triggered by a button.
|
|
2169
|
+
*
|
|
2170
|
+
* Features beyond M3:
|
|
2171
|
+
* - light and dark themes
|
|
2172
|
+
* - search filter inside menu
|
|
2173
|
+
* - checkbox and radio items
|
|
2174
|
+
* - submenu support
|
|
2175
|
+
* - header with user info
|
|
2176
|
+
* - emoji reactions
|
|
2177
|
+
* - color picker
|
|
2178
|
+
* - avatar team picker
|
|
2179
|
+
* - keyboard navigation (arrows, enter, escape, tab)
|
|
2180
|
+
* - portal rendering
|
|
2181
|
+
* - close on outside click and escape
|
|
2182
|
+
*
|
|
2183
|
+
* @example
|
|
2184
|
+
* <DropdownMenu trigger={<Button>Options</Button>}>
|
|
2185
|
+
* <MenuItem icon="edit" shortcut="⌘E">Edit</MenuItem>
|
|
2186
|
+
* <MenuItem icon="copy">Duplicate</MenuItem>
|
|
2187
|
+
* <MenuSeparator />
|
|
2188
|
+
* <MenuItem icon="trash" intent="danger">Delete</MenuItem>
|
|
2189
|
+
* </DropdownMenu>
|
|
2190
|
+
*/
|
|
2191
|
+
declare function DropdownMenu({ trigger, children, theme, align, side, open: controlledOpen, onOpenChange, minWidth, className, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
|
|
2192
|
+
interface MenuItemProps extends ComponentPropsWithoutRef<'button'> {
|
|
2193
|
+
/** Leading icon. */
|
|
2194
|
+
icon?: IconName;
|
|
2195
|
+
/** Keyboard shortcut label. */
|
|
2196
|
+
shortcut?: string;
|
|
2197
|
+
/** Danger/destructive style. */
|
|
2198
|
+
intent?: 'default' | 'danger' | 'active';
|
|
2199
|
+
/** Badge count. */
|
|
2200
|
+
badge?: number | string;
|
|
2201
|
+
/** Description below the label. */
|
|
2202
|
+
description?: string;
|
|
2203
|
+
/** Whether to close menu on click. Default: true */
|
|
2204
|
+
closeOnClick?: boolean;
|
|
2205
|
+
/** Arrow indicating submenu. */
|
|
2206
|
+
hasSubmenu?: boolean;
|
|
2207
|
+
}
|
|
2208
|
+
/**
|
|
2209
|
+
* MenuItem — a single action in the dropdown menu.
|
|
2210
|
+
*/
|
|
2211
|
+
declare const MenuItem: react.ForwardRefExoticComponent<MenuItemProps & react.RefAttributes<HTMLButtonElement>>;
|
|
2212
|
+
interface MenuCheckboxItemProps extends Omit<MenuItemProps, 'intent'> {
|
|
2213
|
+
checked?: boolean;
|
|
2214
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
2215
|
+
}
|
|
2216
|
+
/**
|
|
2217
|
+
* MenuCheckboxItem — a toggleable checkbox item.
|
|
2218
|
+
*/
|
|
2219
|
+
declare const MenuCheckboxItem: react.ForwardRefExoticComponent<MenuCheckboxItemProps & react.RefAttributes<HTMLButtonElement>>;
|
|
2220
|
+
interface MenuRadioItemProps extends Omit<MenuItemProps, 'intent'> {
|
|
2221
|
+
checked?: boolean;
|
|
2222
|
+
onSelect?: () => void;
|
|
2223
|
+
}
|
|
2224
|
+
/**
|
|
2225
|
+
* MenuRadioItem — a radio selection item.
|
|
2226
|
+
*/
|
|
2227
|
+
declare const MenuRadioItem: react.ForwardRefExoticComponent<MenuRadioItemProps & react.RefAttributes<HTMLButtonElement>>;
|
|
2228
|
+
declare function MenuSeparator({ className }: {
|
|
2229
|
+
className?: string;
|
|
2230
|
+
}): react_jsx_runtime.JSX.Element;
|
|
2231
|
+
declare function MenuGroup({ label, className, children }: {
|
|
2232
|
+
label?: string;
|
|
2233
|
+
className?: string;
|
|
2234
|
+
children?: ReactNode;
|
|
2235
|
+
}): react_jsx_runtime.JSX.Element;
|
|
2236
|
+
interface MenuHeaderProps {
|
|
2237
|
+
name: string;
|
|
2238
|
+
email?: string;
|
|
2239
|
+
avatarSrc?: string;
|
|
2240
|
+
className?: string;
|
|
2241
|
+
}
|
|
2242
|
+
/**
|
|
2243
|
+
* MenuHeader — user info shown at the top of profile menus.
|
|
2244
|
+
*/
|
|
2245
|
+
declare function MenuHeader({ name, email, avatarSrc, className }: MenuHeaderProps): react_jsx_runtime.JSX.Element;
|
|
2246
|
+
interface MenuSearchProps {
|
|
2247
|
+
value: string;
|
|
2248
|
+
onChange: (value: string) => void;
|
|
2249
|
+
placeholder?: string;
|
|
2250
|
+
className?: string;
|
|
2251
|
+
}
|
|
2252
|
+
/**
|
|
2253
|
+
* MenuSearch — a search input inside the menu.
|
|
2254
|
+
*/
|
|
2255
|
+
declare function MenuSearch({ value, onChange, placeholder, className }: MenuSearchProps): react_jsx_runtime.JSX.Element;
|
|
2256
|
+
interface MenuAvatarItemProps extends Omit<MenuItemProps, 'icon'> {
|
|
2257
|
+
name: string;
|
|
2258
|
+
avatarSrc?: string;
|
|
2259
|
+
role?: string;
|
|
2260
|
+
selected?: boolean;
|
|
2261
|
+
}
|
|
2262
|
+
/**
|
|
2263
|
+
* MenuAvatarItem — a team member item with avatar.
|
|
2264
|
+
*/
|
|
2265
|
+
declare const MenuAvatarItem: react.ForwardRefExoticComponent<MenuAvatarItemProps & react.RefAttributes<HTMLButtonElement>>;
|
|
2266
|
+
interface MenuColorPickerProps {
|
|
2267
|
+
colors?: string[];
|
|
2268
|
+
value?: string;
|
|
2269
|
+
onChange?: (color: string) => void;
|
|
2270
|
+
className?: string;
|
|
2271
|
+
}
|
|
2272
|
+
/**
|
|
2273
|
+
* MenuColorPicker — a color dot grid inside a menu.
|
|
2274
|
+
*/
|
|
2275
|
+
declare function MenuColorPicker({ colors, value, onChange, className }: MenuColorPickerProps): react_jsx_runtime.JSX.Element;
|
|
2276
|
+
interface MenuEmojiReactionsProps {
|
|
2277
|
+
emojis?: string[];
|
|
2278
|
+
onReact?: (emoji: string) => void;
|
|
2279
|
+
className?: string;
|
|
2280
|
+
}
|
|
2281
|
+
/**
|
|
2282
|
+
* MenuEmojiReactions — a row of emoji reaction buttons.
|
|
2283
|
+
*/
|
|
2284
|
+
declare function MenuEmojiReactions({ emojis, onReact, className }: MenuEmojiReactionsProps): react_jsx_runtime.JSX.Element;
|
|
2285
|
+
interface ContextMenuProps {
|
|
2286
|
+
children: ReactNode;
|
|
2287
|
+
menu: ReactNode;
|
|
2288
|
+
theme?: MenuTheme;
|
|
2289
|
+
}
|
|
2290
|
+
/**
|
|
2291
|
+
* ContextMenu — shows a menu on right-click.
|
|
2292
|
+
*
|
|
2293
|
+
* @example
|
|
2294
|
+
* <ContextMenu menu={<><MenuItem>Copy</MenuItem><MenuItem>Paste</MenuItem></>}>
|
|
2295
|
+
* <div>Right click me</div>
|
|
2296
|
+
* </ContextMenu>
|
|
2297
|
+
*/
|
|
2298
|
+
declare function ContextMenu({ children, menu, theme }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
2299
|
+
|
|
2300
|
+
/**
|
|
2301
|
+
* Popover variants — CVA configuration.
|
|
2302
|
+
*/
|
|
2303
|
+
declare const popoverVariants: (props?: ({
|
|
2304
|
+
size?: "sm" | "md" | "lg" | "auto" | null | undefined;
|
|
2305
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2306
|
+
type PopoverVariantProps = VariantProps<typeof popoverVariants>;
|
|
2307
|
+
type PopoverSide = 'top' | 'bottom' | 'left' | 'right';
|
|
2308
|
+
type PopoverAlign = 'start' | 'center' | 'end';
|
|
2309
|
+
|
|
2310
|
+
interface PopoverProps extends PopoverVariantProps {
|
|
2311
|
+
/** Trigger element. */
|
|
2312
|
+
trigger: ReactNode;
|
|
2313
|
+
/** Popover content. */
|
|
2314
|
+
children: ReactNode;
|
|
2315
|
+
/** Which side to open on. */
|
|
2316
|
+
side?: PopoverSide;
|
|
2317
|
+
/** Alignment along the side. */
|
|
2318
|
+
align?: PopoverAlign;
|
|
2319
|
+
/** Show arrow indicator. */
|
|
2320
|
+
showArrow?: boolean;
|
|
2321
|
+
/** Controlled open state. */
|
|
2322
|
+
open?: boolean;
|
|
2323
|
+
/** Callback when open changes. */
|
|
2324
|
+
onOpenChange?: (open: boolean) => void;
|
|
2325
|
+
/** Close on outside click. Default: true */
|
|
2326
|
+
closeOnOutside?: boolean;
|
|
2327
|
+
/** Close on escape. Default: true */
|
|
2328
|
+
closeOnEscape?: boolean;
|
|
2329
|
+
/** Additional className for the panel. */
|
|
2330
|
+
className?: string;
|
|
2331
|
+
/** Offset from trigger in px. */
|
|
2332
|
+
offset?: number;
|
|
2333
|
+
}
|
|
2334
|
+
/**
|
|
2335
|
+
* Popover — a floating interactive panel anchored to a trigger.
|
|
2336
|
+
*
|
|
2337
|
+
* Unlike Tooltip (read-only) and Dropdown (list of actions),
|
|
2338
|
+
* Popover contains rich interactive content like forms, filters,
|
|
2339
|
+
* previews, and settings panels.
|
|
2340
|
+
*
|
|
2341
|
+
* Features:
|
|
2342
|
+
* - 4 sides: top, bottom, left, right
|
|
2343
|
+
* - 3 alignments: start, center, end
|
|
2344
|
+
* - optional arrow indicator
|
|
2345
|
+
* - close on outside click + escape
|
|
2346
|
+
* - portal rendering
|
|
2347
|
+
* - controlled + uncontrolled
|
|
2348
|
+
*
|
|
2349
|
+
* @example
|
|
2350
|
+
* <Popover trigger={<Button>Open</Button>}>
|
|
2351
|
+
* <p>Popover content here</p>
|
|
2352
|
+
* </Popover>
|
|
2353
|
+
*/
|
|
2354
|
+
declare function Popover({ trigger, children, side, align, showArrow, open: controlledOpen, onOpenChange, closeOnOutside, closeOnEscape, size, offset, className, }: PopoverProps): react_jsx_runtime.JSX.Element;
|
|
2355
|
+
interface PopoverHeaderProps extends ComponentPropsWithoutRef<'div'> {
|
|
2356
|
+
title: string;
|
|
2357
|
+
description?: string;
|
|
2358
|
+
onClose?: () => void;
|
|
2359
|
+
}
|
|
2360
|
+
declare function PopoverHeader({ title, description, onClose, className, ...props }: PopoverHeaderProps): react_jsx_runtime.JSX.Element;
|
|
2361
|
+
declare function PopoverFooter({ className, children, ...props }: ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
|
|
2362
|
+
|
|
2363
|
+
type CalendarVariant = 'default' | 'dark' | 'gradient' | 'minimal';
|
|
2364
|
+
interface CalendarProps {
|
|
2365
|
+
value?: Date | null;
|
|
2366
|
+
rangeValue?: [Date | null, Date | null];
|
|
2367
|
+
onChange?: (date: Date) => void;
|
|
2368
|
+
onRangeChange?: (range: [Date | null, Date | null]) => void;
|
|
2369
|
+
mode?: 'single' | 'range';
|
|
2370
|
+
minDate?: Date;
|
|
2371
|
+
maxDate?: Date;
|
|
2372
|
+
disabledDates?: Date[];
|
|
2373
|
+
disableWeekends?: boolean;
|
|
2374
|
+
showTime?: boolean;
|
|
2375
|
+
/** Controlled hour value (lifted from parent). */
|
|
2376
|
+
timeHour?: string;
|
|
2377
|
+
/** Controlled minute value (lifted from parent). */
|
|
2378
|
+
timeMin?: string;
|
|
2379
|
+
/** Controlled AM/PM value (lifted from parent). */
|
|
2380
|
+
timeAmPm?: 'AM' | 'PM';
|
|
2381
|
+
/** Called when user changes time values. */
|
|
2382
|
+
onTimeChange?: (time: {
|
|
2383
|
+
hour: string;
|
|
2384
|
+
min: string;
|
|
2385
|
+
ampm: 'AM' | 'PM';
|
|
2386
|
+
}) => void;
|
|
2387
|
+
variant?: CalendarVariant;
|
|
2388
|
+
presets?: boolean;
|
|
2389
|
+
/** For dual month — which month offset to show */
|
|
2390
|
+
monthOffset?: number;
|
|
2391
|
+
/** For dual month — shared nav handler */
|
|
2392
|
+
onPrevMonth?: () => void;
|
|
2393
|
+
onNextMonth?: () => void;
|
|
2394
|
+
showPrev?: boolean;
|
|
2395
|
+
showNext?: boolean;
|
|
2396
|
+
className?: string;
|
|
2397
|
+
}
|
|
2398
|
+
declare function Calendar({ value, rangeValue, onChange, onRangeChange, mode, minDate, maxDate, disabledDates, disableWeekends, showTime, timeHour: timeHourProp, timeMin: timeMinProp, timeAmPm: timeAmPmProp, onTimeChange, variant, presets, monthOffset, onPrevMonth, onNextMonth, showPrev, showNext, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
2399
|
+
interface DatePickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
2400
|
+
value?: Date | null;
|
|
2401
|
+
onChange?: (date: Date | null) => void;
|
|
2402
|
+
placeholder?: string;
|
|
2403
|
+
format?: string;
|
|
2404
|
+
showTime?: boolean;
|
|
2405
|
+
minDate?: Date;
|
|
2406
|
+
maxDate?: Date;
|
|
2407
|
+
disableWeekends?: boolean;
|
|
2408
|
+
disabled?: boolean;
|
|
2409
|
+
clearable?: boolean;
|
|
2410
|
+
label?: string;
|
|
2411
|
+
error?: boolean;
|
|
2412
|
+
errorText?: string;
|
|
2413
|
+
helperText?: string;
|
|
2414
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2415
|
+
variant?: CalendarVariant;
|
|
2416
|
+
presets?: boolean;
|
|
2417
|
+
}
|
|
2418
|
+
declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLDivElement>>;
|
|
2419
|
+
interface DateRangePickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
2420
|
+
value?: [Date | null, Date | null];
|
|
2421
|
+
onChange?: (range: [Date | null, Date | null]) => void;
|
|
2422
|
+
placeholder?: [string, string];
|
|
2423
|
+
label?: string;
|
|
2424
|
+
disabled?: boolean;
|
|
2425
|
+
minDate?: Date;
|
|
2426
|
+
maxDate?: Date;
|
|
2427
|
+
disableWeekends?: boolean;
|
|
2428
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2429
|
+
helperText?: string;
|
|
2430
|
+
variant?: CalendarVariant;
|
|
2431
|
+
presets?: boolean;
|
|
2432
|
+
dualMonth?: boolean;
|
|
2433
|
+
}
|
|
2434
|
+
declare const DateRangePicker: react.ForwardRefExoticComponent<DateRangePickerProps & react.RefAttributes<HTMLDivElement>>;
|
|
2435
|
+
|
|
2436
|
+
type SliderColor = 'default' | 'secondary' | 'success' | 'warning' | 'error';
|
|
2437
|
+
type SliderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
2438
|
+
type SliderThumbStyle = 'default' | 'pill' | 'square' | 'bubble';
|
|
2439
|
+
type SliderTrackStyle = 'default' | 'glow' | 'gradient' | 'spectrum';
|
|
2440
|
+
|
|
2441
|
+
interface SliderProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {
|
|
2442
|
+
/** Current value (single). */
|
|
2443
|
+
value?: number;
|
|
2444
|
+
/** Default value for uncontrolled. */
|
|
2445
|
+
defaultValue?: number;
|
|
2446
|
+
/** Callback when value changes. */
|
|
2447
|
+
onChange?: (value: number) => void;
|
|
2448
|
+
/** Minimum value. */
|
|
2449
|
+
min?: number;
|
|
2450
|
+
/** Maximum value. */
|
|
2451
|
+
max?: number;
|
|
2452
|
+
/** Step increment. */
|
|
2453
|
+
step?: number;
|
|
2454
|
+
/** Color of the track fill and thumb. */
|
|
2455
|
+
color?: SliderColor;
|
|
2456
|
+
/** Size (track height + thumb size). */
|
|
2457
|
+
size?: SliderSize;
|
|
2458
|
+
/** Thumb visual style. */
|
|
2459
|
+
thumbStyle?: SliderThumbStyle;
|
|
2460
|
+
/** Track visual style. */
|
|
2461
|
+
trackStyle?: SliderTrackStyle;
|
|
2462
|
+
/** Show tooltip above thumb on hover/drag. */
|
|
2463
|
+
showTooltip?: boolean;
|
|
2464
|
+
/** Show step marks on track. */
|
|
2465
|
+
showMarks?: boolean;
|
|
2466
|
+
/** Labels shown below the track. */
|
|
2467
|
+
marks?: Array<{
|
|
2468
|
+
value: number;
|
|
2469
|
+
label?: string;
|
|
2470
|
+
}>;
|
|
2471
|
+
/** Show min/max labels. */
|
|
2472
|
+
showLabels?: boolean;
|
|
2473
|
+
/** Show numeric input synced to slider. */
|
|
2474
|
+
showInput?: boolean;
|
|
2475
|
+
/** Disabled state. */
|
|
2476
|
+
disabled?: boolean;
|
|
2477
|
+
/** Orientation. */
|
|
2478
|
+
orientation?: 'horizontal' | 'vertical';
|
|
2479
|
+
/** Label shown above. */
|
|
2480
|
+
label?: string;
|
|
2481
|
+
/** Format the displayed value. */
|
|
2482
|
+
formatValue?: (value: number) => string;
|
|
2483
|
+
/** Spectrum colors for spectrum track style. */
|
|
2484
|
+
spectrumColors?: string[];
|
|
2485
|
+
}
|
|
2486
|
+
/**
|
|
2487
|
+
* Slider — a draggable range input.
|
|
2488
|
+
*
|
|
2489
|
+
* Features:
|
|
2490
|
+
* - 4 thumb styles: default, pill, square, bubble
|
|
2491
|
+
* - 4 track styles: default, glow, gradient, spectrum
|
|
2492
|
+
* - 6 colors
|
|
2493
|
+
* - 5 sizes
|
|
2494
|
+
* - tooltip on hover/drag
|
|
2495
|
+
* - step marks
|
|
2496
|
+
* - custom labels
|
|
2497
|
+
* - number input sync
|
|
2498
|
+
* - vertical orientation
|
|
2499
|
+
* - keyboard navigation
|
|
2500
|
+
* - touch support
|
|
2501
|
+
*
|
|
2502
|
+
* @example
|
|
2503
|
+
* <Slider value={volume} onChange={setVolume} label="Volume" />
|
|
2504
|
+
* <Slider thumbStyle="pill" color="secondary" showTooltip />
|
|
2505
|
+
* <Slider trackStyle="glow" color="success" showMarks step={10} />
|
|
2506
|
+
* <Slider trackStyle="spectrum" />
|
|
2507
|
+
*/
|
|
2508
|
+
declare const Slider: react.ForwardRefExoticComponent<SliderProps & react.RefAttributes<HTMLDivElement>>;
|
|
2509
|
+
interface RangeSliderProps extends Omit<SliderProps, 'value' | 'defaultValue' | 'onChange'> {
|
|
2510
|
+
/** [min, max] selected range. */
|
|
2511
|
+
value?: [number, number];
|
|
2512
|
+
/** Default range. */
|
|
2513
|
+
defaultValue?: [number, number];
|
|
2514
|
+
/** Callback when range changes. */
|
|
2515
|
+
onChange?: (value: [number, number]) => void;
|
|
2516
|
+
}
|
|
2517
|
+
/**
|
|
2518
|
+
* RangeSlider — two thumbs for selecting a min/max range.
|
|
2519
|
+
*
|
|
2520
|
+
* @example
|
|
2521
|
+
* <RangeSlider
|
|
2522
|
+
* value={[25, 75]}
|
|
2523
|
+
* onChange={setRange}
|
|
2524
|
+
* label="Price range"
|
|
2525
|
+
* formatValue={v => `$${v}`}
|
|
2526
|
+
* />
|
|
2527
|
+
*/
|
|
2528
|
+
declare const RangeSlider: react.ForwardRefExoticComponent<RangeSliderProps & react.RefAttributes<HTMLDivElement>>;
|
|
2529
|
+
|
|
2530
|
+
type BreadcrumbVariant = 'default' | 'pill' | 'outlined' | 'dark' | 'floating' | 'gradient' | 'underline' | 'arrow' | 'glass' | 'highlight' | 'numbered';
|
|
2531
|
+
type BreadcrumbSeparator = 'chevron' | 'slash' | 'dot' | 'arrow';
|
|
2532
|
+
|
|
2533
|
+
interface BreadcrumbItem {
|
|
2534
|
+
/** Display label. */
|
|
2535
|
+
label: string;
|
|
2536
|
+
/** URL or href. */
|
|
2537
|
+
href?: string;
|
|
2538
|
+
/** Leading icon. */
|
|
2539
|
+
icon?: IconName;
|
|
2540
|
+
/** Whether this is the current/active page. */
|
|
2541
|
+
active?: boolean;
|
|
2542
|
+
/** Click handler. */
|
|
2543
|
+
onClick?: () => void;
|
|
2544
|
+
/** Step number (for numbered variant). */
|
|
2545
|
+
step?: number;
|
|
2546
|
+
/** Step status (for numbered variant). */
|
|
2547
|
+
stepStatus?: 'done' | 'current' | 'pending';
|
|
2548
|
+
}
|
|
2549
|
+
interface BreadcrumbProps extends ComponentPropsWithoutRef<'nav'> {
|
|
2550
|
+
/** Array of breadcrumb items. */
|
|
2551
|
+
items: BreadcrumbItem[];
|
|
2552
|
+
/**
|
|
2553
|
+
* Visual variant.
|
|
2554
|
+
* - `default` → plain text with separator
|
|
2555
|
+
* - `pill` → each item is a pill badge
|
|
2556
|
+
* - `outlined` → segmented outlined container
|
|
2557
|
+
* - `dark` → dark background
|
|
2558
|
+
* - `floating` → elevated white pill container
|
|
2559
|
+
* - `gradient` → gradient text on active item
|
|
2560
|
+
* - `underline` → underline on active item
|
|
2561
|
+
* - `arrow` → chevron-shaped arrow badges
|
|
2562
|
+
* - `glass` → frosted glass (use on colored backgrounds)
|
|
2563
|
+
* - `highlight` → active item wrapped in pill
|
|
2564
|
+
* - `numbered` → step numbers with done/current/pending
|
|
2565
|
+
*/
|
|
2566
|
+
variant?: BreadcrumbVariant;
|
|
2567
|
+
/**
|
|
2568
|
+
* Separator style.
|
|
2569
|
+
* - `chevron` → › (default)
|
|
2570
|
+
* - `slash` → /
|
|
2571
|
+
* - `dot` → •
|
|
2572
|
+
* - `arrow` → hidden (arrow variant uses clip-path)
|
|
2573
|
+
*/
|
|
2574
|
+
separator?: BreadcrumbSeparator;
|
|
2575
|
+
/**
|
|
2576
|
+
* Custom separator element.
|
|
2577
|
+
*/
|
|
2578
|
+
customSeparator?: ReactNode;
|
|
2579
|
+
/**
|
|
2580
|
+
* Maximum items to show before collapsing.
|
|
2581
|
+
* Items in the middle are collapsed into ···
|
|
2582
|
+
* 0 = show all (default)
|
|
2583
|
+
*/
|
|
2584
|
+
maxItems?: number;
|
|
2585
|
+
/**
|
|
2586
|
+
* Show home icon on first item.
|
|
2587
|
+
*/
|
|
2588
|
+
showHomeIcon?: boolean;
|
|
2589
|
+
}
|
|
2590
|
+
/**
|
|
2591
|
+
* Breadcrumb — hierarchical navigation trail.
|
|
2592
|
+
*
|
|
2593
|
+
* Features beyond M3:
|
|
2594
|
+
* - 11 variants: default, pill, outlined, dark, floating, gradient,
|
|
2595
|
+
* underline, arrow, glass, highlight, numbered
|
|
2596
|
+
* - 4 separator styles: chevron, slash, dot, arrow
|
|
2597
|
+
* - icons on items
|
|
2598
|
+
* - collapsible middle items with ellipsis
|
|
2599
|
+
* - home icon on first item
|
|
2600
|
+
* - step status for numbered variant
|
|
2601
|
+
* - full ARIA accessibility
|
|
2602
|
+
*
|
|
2603
|
+
* @example
|
|
2604
|
+
* <Breadcrumb
|
|
2605
|
+
* items={[
|
|
2606
|
+
* { label: 'Home', href: '/' },
|
|
2607
|
+
* { label: 'Settings', href: '/settings' },
|
|
2608
|
+
* { label: 'Profile', active: true },
|
|
2609
|
+
* ]}
|
|
2610
|
+
* />
|
|
2611
|
+
*
|
|
2612
|
+
* // Glass on dark background
|
|
2613
|
+
* <div className="bg-gradient-to-r from-primary to-secondary p-6">
|
|
2614
|
+
* <Breadcrumb items={items} variant="glass" />
|
|
2615
|
+
* </div>
|
|
2616
|
+
*/
|
|
2617
|
+
declare const Breadcrumb: react.ForwardRefExoticComponent<BreadcrumbProps & react.RefAttributes<HTMLElement>>;
|
|
2618
|
+
|
|
2619
|
+
type PaginationVariant = 'default' | 'outlined' | 'pill' | 'simple' | 'compact' | 'underline' | 'floating' | 'dark' | 'glass-card' | 'vercel' | 'notion' | 'linear' | 'github' | 'stripe' | 'dots' | 'table' | 'segmented';
|
|
2620
|
+
|
|
2621
|
+
interface PaginationProps extends ComponentPropsWithoutRef<'nav'> {
|
|
2622
|
+
/** Current page (1-indexed). */
|
|
2623
|
+
page: number;
|
|
2624
|
+
/** Total number of pages. */
|
|
2625
|
+
totalPages: number;
|
|
2626
|
+
/** Callback when page changes. */
|
|
2627
|
+
onPageChange: (page: number) => void;
|
|
2628
|
+
/**
|
|
2629
|
+
* Visual variant.
|
|
2630
|
+
*/
|
|
2631
|
+
variant?: PaginationVariant;
|
|
2632
|
+
/**
|
|
2633
|
+
* Number of sibling pages shown around current.
|
|
2634
|
+
* @default 1
|
|
2635
|
+
*/
|
|
2636
|
+
siblings?: number;
|
|
2637
|
+
/** Show first/last page buttons. */
|
|
2638
|
+
showFirstLast?: boolean;
|
|
2639
|
+
/** Show prev/next buttons. */
|
|
2640
|
+
showPrevNext?: boolean;
|
|
2641
|
+
/** Show page jump input. */
|
|
2642
|
+
showJump?: boolean;
|
|
2643
|
+
/**
|
|
2644
|
+
* For table variant — rows per page options.
|
|
2645
|
+
*/
|
|
2646
|
+
rowsPerPage?: number;
|
|
2647
|
+
rowsPerPageOptions?: number[];
|
|
2648
|
+
onRowsPerPageChange?: (rows: number) => void;
|
|
2649
|
+
totalItems?: number;
|
|
2650
|
+
/** Loading state — shows skeleton. */
|
|
2651
|
+
loading?: boolean;
|
|
2652
|
+
/** Size. */
|
|
2653
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2654
|
+
}
|
|
2655
|
+
/**
|
|
2656
|
+
* Pagination — page navigation component.
|
|
2657
|
+
*
|
|
2658
|
+
* Features beyond M3:
|
|
2659
|
+
* - 17 variants: default, outlined, pill, simple, compact, underline,
|
|
2660
|
+
* floating, dark, glass-card, vercel, notion, linear,
|
|
2661
|
+
* github, stripe, dots, table, segmented
|
|
2662
|
+
* - ellipsis for large page counts
|
|
2663
|
+
* - first/last page buttons
|
|
2664
|
+
* - page jump input
|
|
2665
|
+
* - table variant with rows per page
|
|
2666
|
+
* - loading skeleton state
|
|
2667
|
+
* - keyboard accessible
|
|
2668
|
+
*
|
|
2669
|
+
* @example
|
|
2670
|
+
* <Pagination page={3} totalPages={10} onPageChange={setPage} />
|
|
2671
|
+
* <Pagination page={3} totalPages={10} onPageChange={setPage} variant="vercel" />
|
|
2672
|
+
* <Pagination page={3} totalPages={10} onPageChange={setPage} variant="dots" />
|
|
2673
|
+
*/
|
|
2674
|
+
declare const Pagination: react.ForwardRefExoticComponent<PaginationProps & react.RefAttributes<HTMLElement>>;
|
|
2675
|
+
|
|
2676
|
+
interface NavItem {
|
|
2677
|
+
id: string;
|
|
2678
|
+
label: string;
|
|
2679
|
+
icon?: IconName;
|
|
2680
|
+
badge?: number | string;
|
|
2681
|
+
href?: string;
|
|
2682
|
+
onClick?: () => void;
|
|
2683
|
+
disabled?: boolean;
|
|
2684
|
+
children?: NavItem[];
|
|
2685
|
+
}
|
|
2686
|
+
interface NavSection {
|
|
2687
|
+
label?: string;
|
|
2688
|
+
items: NavItem[];
|
|
2689
|
+
}
|
|
2690
|
+
type NavbarVariant = 'default' | 'saas' | 'vercel' | 'notion' | 'linear' | 'stripe' | 'glass' | 'dark' | 'floating' | 'centered' | 'frosted' | 'pill' | 'gradient' | 'outlined' | 'two-row' | 'command';
|
|
2691
|
+
interface NavbarProps extends ComponentPropsWithoutRef<'nav'> {
|
|
2692
|
+
/**
|
|
2693
|
+
* Visual variant.
|
|
2694
|
+
*/
|
|
2695
|
+
variant?: NavbarVariant;
|
|
2696
|
+
/**
|
|
2697
|
+
* Nav items shown in the center/main area.
|
|
2698
|
+
*/
|
|
2699
|
+
items?: NavItem[];
|
|
2700
|
+
/**
|
|
2701
|
+
* Active item id.
|
|
2702
|
+
*/
|
|
2703
|
+
activeId?: string;
|
|
2704
|
+
/**
|
|
2705
|
+
* Callback when nav item is clicked.
|
|
2706
|
+
*/
|
|
2707
|
+
onItemClick?: (item: NavItem) => void;
|
|
2708
|
+
/**
|
|
2709
|
+
* Logo/brand element.
|
|
2710
|
+
*/
|
|
2711
|
+
logo?: ReactNode;
|
|
2712
|
+
/**
|
|
2713
|
+
* Brand name text (if no logo element).
|
|
2714
|
+
*/
|
|
2715
|
+
brandName?: string;
|
|
2716
|
+
/**
|
|
2717
|
+
* Right side actions (buttons, avatar, search, etc).
|
|
2718
|
+
*/
|
|
2719
|
+
actions?: ReactNode;
|
|
2720
|
+
/**
|
|
2721
|
+
* Sub-tabs for two-row variant.
|
|
2722
|
+
*/
|
|
2723
|
+
subItems?: NavItem[];
|
|
2724
|
+
/**
|
|
2725
|
+
* Active sub-item id.
|
|
2726
|
+
*/
|
|
2727
|
+
activeSubId?: string;
|
|
2728
|
+
/**
|
|
2729
|
+
* Title for two-row/notion variant.
|
|
2730
|
+
*/
|
|
2731
|
+
title?: string;
|
|
2732
|
+
/**
|
|
2733
|
+
* Show search trigger with ⌘K for command variant.
|
|
2734
|
+
*/
|
|
2735
|
+
showSearch?: boolean;
|
|
2736
|
+
/**
|
|
2737
|
+
* Callback for search click.
|
|
2738
|
+
*/
|
|
2739
|
+
onSearchClick?: () => void;
|
|
2740
|
+
/**
|
|
2741
|
+
* For sidebar type navbars.
|
|
2742
|
+
*/
|
|
2743
|
+
sections?: NavSection[];
|
|
2744
|
+
/**
|
|
2745
|
+
* Sidebar collapsed state.
|
|
2746
|
+
*/
|
|
2747
|
+
collapsed?: boolean;
|
|
2748
|
+
/**
|
|
2749
|
+
* Workspace name for linear variant.
|
|
2750
|
+
*/
|
|
2751
|
+
workspaceName?: string;
|
|
2752
|
+
/**
|
|
2753
|
+
* Workspace icon/initials.
|
|
2754
|
+
*/
|
|
2755
|
+
workspaceIcon?: string;
|
|
2756
|
+
/**
|
|
2757
|
+
* User info for profile area.
|
|
2758
|
+
*/
|
|
2759
|
+
user?: {
|
|
2760
|
+
name: string;
|
|
2761
|
+
email?: string;
|
|
2762
|
+
avatarSrc?: string;
|
|
2763
|
+
};
|
|
2764
|
+
}
|
|
2765
|
+
/**
|
|
2766
|
+
* Navbar — a flexible navigation component for web apps.
|
|
2767
|
+
*
|
|
2768
|
+
* 16 variants covering every real-world web use case:
|
|
2769
|
+
* default, saas, vercel, notion, linear, stripe, glass, dark,
|
|
2770
|
+
* floating, centered, frosted, pill, gradient, outlined, two-row, command
|
|
2771
|
+
*
|
|
2772
|
+
* Also includes Sidebar and IconSidebar for dashboard layouts.
|
|
2773
|
+
*/
|
|
2774
|
+
declare const Navbar: react.ForwardRefExoticComponent<NavbarProps & react.RefAttributes<HTMLElement>>;
|
|
2775
|
+
interface SidebarProps {
|
|
2776
|
+
sections?: NavSection[];
|
|
2777
|
+
activeId?: string;
|
|
2778
|
+
onItemClick?: (item: NavItem) => void;
|
|
2779
|
+
collapsed?: boolean;
|
|
2780
|
+
brandName?: string;
|
|
2781
|
+
logo?: ReactNode;
|
|
2782
|
+
user?: {
|
|
2783
|
+
name: string;
|
|
2784
|
+
email?: string;
|
|
2785
|
+
avatarSrc?: string;
|
|
2786
|
+
};
|
|
2787
|
+
className?: string;
|
|
2788
|
+
}
|
|
2789
|
+
/**
|
|
2790
|
+
* Sidebar — a vertical navigation panel for dashboards.
|
|
2791
|
+
*/
|
|
2792
|
+
declare function Sidebar({ sections, activeId, onItemClick, collapsed, brandName, logo, user, className, }: SidebarProps): react_jsx_runtime.JSX.Element;
|
|
2793
|
+
|
|
2794
|
+
type StepStatus = 'done' | 'active' | 'pending' | 'error';
|
|
2795
|
+
interface StepItem {
|
|
2796
|
+
id: string;
|
|
2797
|
+
label: string;
|
|
2798
|
+
description?: string;
|
|
2799
|
+
sublabel?: string;
|
|
2800
|
+
icon?: IconName;
|
|
2801
|
+
status?: StepStatus;
|
|
2802
|
+
optional?: boolean;
|
|
2803
|
+
content?: ReactNode;
|
|
2804
|
+
}
|
|
2805
|
+
type StepperVariant = 'default' | 'pill' | 'dot' | 'badge' | 'timeline' | 'gradient' | 'checklist' | 'card' | 'progress' | 'icon';
|
|
2806
|
+
interface StepperProps extends ComponentPropsWithoutRef<'div'> {
|
|
2807
|
+
/** Array of steps. */
|
|
2808
|
+
steps: StepItem[];
|
|
2809
|
+
/** Index of the active step (0-based). */
|
|
2810
|
+
activeStep: number;
|
|
2811
|
+
/** Callback when a step is clicked. */
|
|
2812
|
+
onStepClick?: (index: number, step: StepItem) => void;
|
|
2813
|
+
/** Visual variant. */
|
|
2814
|
+
variant?: StepperVariant;
|
|
2815
|
+
/** Orientation. */
|
|
2816
|
+
orientation?: 'horizontal' | 'vertical';
|
|
2817
|
+
/** Allow clicking on completed steps to go back. */
|
|
2818
|
+
clickable?: boolean;
|
|
2819
|
+
/** Color scheme. */
|
|
2820
|
+
color?: 'default' | 'success' | 'secondary';
|
|
2821
|
+
/** Show step content below (for horizontal) or beside (for vertical). */
|
|
2822
|
+
showContent?: boolean;
|
|
2823
|
+
}
|
|
2824
|
+
/**
|
|
2825
|
+
* Stepper — a multi-step progress indicator.
|
|
2826
|
+
*
|
|
2827
|
+
* Features beyond M3:
|
|
2828
|
+
* - 10 variants: default, pill, dot, badge, timeline, gradient,
|
|
2829
|
+
* checklist, card, progress, icon
|
|
2830
|
+
* - horizontal and vertical orientations
|
|
2831
|
+
* - clickable steps (navigate back)
|
|
2832
|
+
* - error state per step
|
|
2833
|
+
* - optional step labels
|
|
2834
|
+
* - description/sublabel on steps
|
|
2835
|
+
* - content panel
|
|
2836
|
+
*
|
|
2837
|
+
* @example
|
|
2838
|
+
* <Stepper steps={steps} activeStep={2} />
|
|
2839
|
+
* <Stepper steps={steps} activeStep={1} variant="timeline" orientation="vertical" />
|
|
2840
|
+
* <Stepper steps={steps} activeStep={2} variant="gradient" />
|
|
2841
|
+
*/
|
|
2842
|
+
declare const Stepper: react.ForwardRefExoticComponent<StepperProps & react.RefAttributes<HTMLDivElement>>;
|
|
2843
|
+
|
|
2844
|
+
type DividerStyle = 'solid' | 'dashed' | 'dotted' | 'thick' | 'gradient' | 'gradient-fade' | 'double';
|
|
2845
|
+
type DividerColor = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';
|
|
2846
|
+
type DividerOrientation = 'horizontal' | 'vertical';
|
|
2847
|
+
type DividerLabelAlign = 'left' | 'center' | 'right';
|
|
2848
|
+
|
|
2849
|
+
interface DividerProps extends ComponentPropsWithoutRef<'div'> {
|
|
2850
|
+
/**
|
|
2851
|
+
* Line style.
|
|
2852
|
+
* - `solid` → plain line (default)
|
|
2853
|
+
* - `dashed` → dashed line
|
|
2854
|
+
* - `dotted` → dotted line
|
|
2855
|
+
* - `thick` → 2px thick line
|
|
2856
|
+
* - `gradient` → colored gradient line
|
|
2857
|
+
* - `gradient-fade` → fades to transparent at edges
|
|
2858
|
+
* - `double` → two parallel lines
|
|
2859
|
+
*/
|
|
2860
|
+
lineStyle?: DividerStyle;
|
|
2861
|
+
/**
|
|
2862
|
+
* Color of the line.
|
|
2863
|
+
*/
|
|
2864
|
+
color?: DividerColor;
|
|
2865
|
+
/**
|
|
2866
|
+
* Orientation.
|
|
2867
|
+
* - `horizontal` → horizontal line (default)
|
|
2868
|
+
* - `vertical` → vertical line for inline use
|
|
2869
|
+
*/
|
|
2870
|
+
orientation?: DividerOrientation;
|
|
2871
|
+
/**
|
|
2872
|
+
* Label shown in the middle (or left/right) of the divider.
|
|
2873
|
+
*/
|
|
2874
|
+
label?: ReactNode;
|
|
2875
|
+
/**
|
|
2876
|
+
* Label alignment.
|
|
2877
|
+
* @default 'center'
|
|
2878
|
+
*/
|
|
2879
|
+
labelAlign?: DividerLabelAlign;
|
|
2880
|
+
/**
|
|
2881
|
+
* Icon shown centered in the divider.
|
|
2882
|
+
*/
|
|
2883
|
+
icon?: IconName;
|
|
2884
|
+
/**
|
|
2885
|
+
* Inset from left (for list separators).
|
|
2886
|
+
* E.g. inset={48} adds 48px left margin.
|
|
2887
|
+
*/
|
|
2888
|
+
inset?: number;
|
|
2889
|
+
/**
|
|
2890
|
+
* Show as a section title divider — label above the line.
|
|
2891
|
+
*/
|
|
2892
|
+
sectionTitle?: boolean;
|
|
2893
|
+
/**
|
|
2894
|
+
* Show as a chat date badge style.
|
|
2895
|
+
*/
|
|
2896
|
+
chatDate?: boolean;
|
|
2897
|
+
/**
|
|
2898
|
+
* Bold section break style.
|
|
2899
|
+
*/
|
|
2900
|
+
boldBreak?: boolean;
|
|
2901
|
+
/**
|
|
2902
|
+
* Decorative spacing dots style (vertical).
|
|
2903
|
+
*/
|
|
2904
|
+
spacingDots?: boolean;
|
|
2905
|
+
/**
|
|
2906
|
+
* Number of decorative dots for spacingDots variant.
|
|
2907
|
+
* @default 1
|
|
2908
|
+
*/
|
|
2909
|
+
dots?: number;
|
|
2910
|
+
}
|
|
2911
|
+
/**
|
|
2912
|
+
* Divider — a line that separates content sections.
|
|
2913
|
+
*
|
|
2914
|
+
* Features beyond M3:
|
|
2915
|
+
* - 7 line styles: solid, dashed, dotted, thick, gradient, gradient-fade, double
|
|
2916
|
+
* - 6 colors: default, primary, secondary, success, warning, error
|
|
2917
|
+
* - horizontal and vertical orientations
|
|
2918
|
+
* - label with left/center/right alignment
|
|
2919
|
+
* - icon centered in divider
|
|
2920
|
+
* - inset for list separators
|
|
2921
|
+
* - section title (label above line)
|
|
2922
|
+
* - chat date badge style
|
|
2923
|
+
* - bold section break
|
|
2924
|
+
* - decorative spacing dots
|
|
2925
|
+
*
|
|
2926
|
+
* @example
|
|
2927
|
+
* // Basic
|
|
2928
|
+
* <Divider />
|
|
2929
|
+
*
|
|
2930
|
+
* // With label
|
|
2931
|
+
* <Divider label="OR" />
|
|
2932
|
+
* <Divider label="Today" chatDate />
|
|
2933
|
+
*
|
|
2934
|
+
* // Styled
|
|
2935
|
+
* <Divider lineStyle="dashed" />
|
|
2936
|
+
* <Divider lineStyle="gradient" color="primary" />
|
|
2937
|
+
*
|
|
2938
|
+
* // Vertical
|
|
2939
|
+
* <div className="flex h-8 items-center gap-3">
|
|
2940
|
+
* <span>Home</span>
|
|
2941
|
+
* <Divider orientation="vertical" />
|
|
2942
|
+
* <span>About</span>
|
|
2943
|
+
* </div>
|
|
2944
|
+
*
|
|
2945
|
+
* // Inset (list separator)
|
|
2946
|
+
* <Divider inset={48} />
|
|
2947
|
+
*
|
|
2948
|
+
* // Section title
|
|
2949
|
+
* <Divider label="Personal information" sectionTitle />
|
|
2950
|
+
*
|
|
2951
|
+
* // Bold break
|
|
2952
|
+
* <Divider label="Chapter 1" boldBreak />
|
|
2953
|
+
*/
|
|
2954
|
+
declare const Divider: react.ForwardRefExoticComponent<DividerProps & react.RefAttributes<HTMLDivElement>>;
|
|
2955
|
+
|
|
2956
|
+
export { Accordion, type AccordionProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardBody, CardFooter, CardHeader, CardMedia, type CardProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CircularProgress, ContextMenu, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, type DialogProps, Divider, type DividerProps, DropdownMenu, type DropdownMenuProps, Icon, IconButton, type IconButtonProps, type IconName, Input, type InputProps, MenuAvatarItem, MenuCheckboxItem, MenuColorPicker, MenuEmojiReactions, MenuGroup, MenuHeader, MenuItem, type MenuItemProps, MenuRadioItem, MenuSearch, MenuSeparator, MultiProgress, type NavItem, type NavSection, Navbar, type NavbarProps, type NavbarVariant, Pagination, type PaginationProps, Popover, PopoverFooter, PopoverHeader, type PopoverProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, RangeSlider, type RangeSliderProps, SegmentedProgress, Select, type SelectProps, Sidebar, type SidebarProps, Skeleton, Slider, type SliderProps, Spinner, type SpinnerProps, type StepItem, type StepStatus, StepTabs, Stepper, type StepperProps, type StepperVariant, Switch, type SwitchProps, Tabs, type TabsProps, type ToastAction, type ToastData, type ToastOptions, type ToastPosition, type ToastType, type ToastVariantProps, Toaster, type ToasterProps, Tooltip, type TooltipProps, cn, toast, toastVariants };
|