@mindtris/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 +76 -0
- package/assets/logos/favicon.svg +14 -0
- package/assets/logos/mindtris-logo.svg +17 -0
- package/assets/logos/simplifi.svg +22 -0
- package/dist/index.d.mts +3886 -0
- package/dist/index.mjs +13969 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +87 -0
- package/tokens/base/animations.css +116 -0
- package/tokens/base/colors.css +79 -0
- package/tokens/base/radii.css +12 -0
- package/tokens/base/shadows.css +10 -0
- package/tokens/base/typography.css +11 -0
- package/tokens/index.css +12 -0
- package/tokens/themes/amber.css +111 -0
- package/tokens/themes/dark.css +78 -0
- package/tokens/themes/default.css +113 -0
- package/tokens/themes/mindtris-ui.css +77 -0
- package/tokens/themes/simplifi.css +85 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,3886 @@
|
|
|
1
|
+
import { ClassValue } from 'clsx';
|
|
2
|
+
import * as React$1 from 'react';
|
|
3
|
+
import React__default, { ReactNode, Dispatch, SetStateAction, RefObject, ComponentType } from 'react';
|
|
4
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
5
|
+
import { OTPInput } from 'input-otp';
|
|
6
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
7
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
8
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
9
|
+
import useEmblaCarousel, { UseEmblaCarouselType } from 'embla-carousel-react';
|
|
10
|
+
import * as MenubarPrimitive from '@radix-ui/react-menubar';
|
|
11
|
+
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
12
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
13
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
14
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
15
|
+
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
16
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
17
|
+
import { Drawer as Drawer$1 } from 'vaul';
|
|
18
|
+
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
|
19
|
+
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
20
|
+
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
21
|
+
import { DayPicker, DateRange } from 'react-day-picker';
|
|
22
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
23
|
+
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
24
|
+
import * as RechartsPrimitive from 'recharts';
|
|
25
|
+
import * as react_hook_form from 'react-hook-form';
|
|
26
|
+
import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
|
|
27
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
28
|
+
import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
|
|
29
|
+
import { LucideIcon } from 'lucide-react';
|
|
30
|
+
import { Command as Command$1 } from 'cmdk';
|
|
31
|
+
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
32
|
+
import { Separator as Separator$1, Panel, Group } from 'react-resizable-panels';
|
|
33
|
+
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
34
|
+
import { ToasterProps as ToasterProps$1, toast } from 'sonner';
|
|
35
|
+
export { toast } from 'sonner';
|
|
36
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
37
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Merge class names with Tailwind conflict resolution.
|
|
41
|
+
* Required for design-system components (variants + theme classes).
|
|
42
|
+
*/
|
|
43
|
+
declare function cn(...inputs: ClassValue[]): string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Animation utilities
|
|
47
|
+
* Helper functions for working with animation tokens and transitions
|
|
48
|
+
*/
|
|
49
|
+
/**
|
|
50
|
+
* Get transition class string from animation tokens
|
|
51
|
+
* Uses CSS custom properties from tokens/base/animations.css
|
|
52
|
+
*
|
|
53
|
+
* @param property - CSS property to transition (default: 'all')
|
|
54
|
+
* @param duration - Duration token name (default: 'normal')
|
|
55
|
+
* @param easing - Easing token name (default: 'ease-out')
|
|
56
|
+
* @returns Transition CSS string
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```tsx
|
|
60
|
+
* const transition = getTransitionClass('colors', 'fast', 'ease-out')
|
|
61
|
+
* // Returns: 'color 100ms cubic-bezier(0, 0, 0.2, 1), background-color 100ms cubic-bezier(0, 0, 0.2, 1), border-color 100ms cubic-bezier(0, 0, 0.2, 1)'
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
declare function getTransitionClass(property?: 'all' | 'colors' | 'opacity' | 'transform' | string, duration?: 'fast' | 'base' | 'normal' | 'slow' | 'slower', easing?: 'linear' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'ease-bounce'): string;
|
|
65
|
+
/**
|
|
66
|
+
* Check if user prefers reduced motion
|
|
67
|
+
* Safe to call on server (returns false)
|
|
68
|
+
*
|
|
69
|
+
* @returns boolean - true if user prefers reduced motion
|
|
70
|
+
*/
|
|
71
|
+
declare function shouldReduceMotion(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Get animation duration respecting reduced motion preference
|
|
74
|
+
*
|
|
75
|
+
* @param duration - Desired duration in milliseconds
|
|
76
|
+
* @param respectPreference - Whether to respect reduced motion (default: true)
|
|
77
|
+
* @returns Effective duration (0 if reduced motion preferred)
|
|
78
|
+
*/
|
|
79
|
+
declare function getRespectfulDuration(duration: number, respectPreference?: boolean): number;
|
|
80
|
+
/**
|
|
81
|
+
* Create a keyframe animation string from animation tokens
|
|
82
|
+
*
|
|
83
|
+
* @param animationName - Name of keyframe animation (fadeIn, fadeOut, slideUp, slideDown, spin, pulse, bounce)
|
|
84
|
+
* @returns Animation CSS string
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* const animation = createKeyframe('fadeIn')
|
|
89
|
+
* // Returns: 'fadeIn 200ms cubic-bezier(0, 0, 0.2, 1)'
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare function createKeyframe(animationName: 'fadeIn' | 'fadeOut' | 'slideUp' | 'slideDown' | 'spin' | 'pulse' | 'bounce'): string;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Focus utilities
|
|
96
|
+
* Helper functions for managing focus and focusable elements
|
|
97
|
+
*/
|
|
98
|
+
/**
|
|
99
|
+
* Get all focusable elements within a container
|
|
100
|
+
*
|
|
101
|
+
* @param container - Container element to search within
|
|
102
|
+
* @returns Array of focusable HTMLElements
|
|
103
|
+
*/
|
|
104
|
+
declare function getFocusableElements(container?: HTMLElement | Document): HTMLElement[];
|
|
105
|
+
/**
|
|
106
|
+
* Focus the first focusable element in a container
|
|
107
|
+
*
|
|
108
|
+
* @param container - Container element to search within
|
|
109
|
+
* @returns The focused element, or null if none found
|
|
110
|
+
*/
|
|
111
|
+
declare function focusFirstElement(container?: HTMLElement | Document): HTMLElement | null;
|
|
112
|
+
/**
|
|
113
|
+
* Focus the last focusable element in a container
|
|
114
|
+
*
|
|
115
|
+
* @param container - Container element to search within
|
|
116
|
+
* @returns The focused element, or null if none found
|
|
117
|
+
*/
|
|
118
|
+
declare function focusLastElement(container?: HTMLElement | Document): HTMLElement | null;
|
|
119
|
+
/**
|
|
120
|
+
* Focus the next focusable element after the current one
|
|
121
|
+
*
|
|
122
|
+
* @param currentElement - Current focused element
|
|
123
|
+
* @param container - Container to search within (default: document)
|
|
124
|
+
* @returns The focused element, or null if none found
|
|
125
|
+
*/
|
|
126
|
+
declare function focusNextElement(currentElement: HTMLElement, container?: HTMLElement | Document): HTMLElement | null;
|
|
127
|
+
/**
|
|
128
|
+
* Focus the previous focusable element before the current one
|
|
129
|
+
*
|
|
130
|
+
* @param currentElement - Current focused element
|
|
131
|
+
* @param container - Container to search within (default: document)
|
|
132
|
+
* @returns The focused element, or null if none found
|
|
133
|
+
*/
|
|
134
|
+
declare function focusPreviousElement(currentElement: HTMLElement, container?: HTMLElement | Document): HTMLElement | null;
|
|
135
|
+
/**
|
|
136
|
+
* Check if an element is focusable
|
|
137
|
+
*
|
|
138
|
+
* @param element - Element to check
|
|
139
|
+
* @returns true if element is focusable
|
|
140
|
+
*/
|
|
141
|
+
declare function isFocusable(element: HTMLElement): boolean;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Variant configuration for component variants
|
|
145
|
+
*/
|
|
146
|
+
interface VariantConfig<T extends string> {
|
|
147
|
+
base?: ClassValue;
|
|
148
|
+
variants: Record<string, Record<T | string, ClassValue>>;
|
|
149
|
+
defaultVariants?: Partial<Record<string, T | string>>;
|
|
150
|
+
compoundVariants?: Array<{
|
|
151
|
+
variants: Partial<Record<string, T | string>>;
|
|
152
|
+
class: ClassValue;
|
|
153
|
+
}>;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create a variant function for type-safe component variants
|
|
157
|
+
* Combines base classes with variant classes and compound variants
|
|
158
|
+
*
|
|
159
|
+
* @param config - Variant configuration
|
|
160
|
+
* @returns Function that generates className strings from variant props
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```tsx
|
|
164
|
+
* const buttonVariants = createVariants({
|
|
165
|
+
* base: "px-4 py-2 rounded font-medium",
|
|
166
|
+
* variants: {
|
|
167
|
+
* variant: {
|
|
168
|
+
* primary: "bg-primary text-primary-foreground",
|
|
169
|
+
* secondary: "bg-secondary text-secondary-foreground",
|
|
170
|
+
* },
|
|
171
|
+
* size: {
|
|
172
|
+
* sm: "text-sm px-3 py-1",
|
|
173
|
+
* md: "px-4 py-2",
|
|
174
|
+
* lg: "text-lg px-6 py-3",
|
|
175
|
+
* },
|
|
176
|
+
* },
|
|
177
|
+
* defaultVariants: {
|
|
178
|
+
* variant: "primary",
|
|
179
|
+
* size: "md",
|
|
180
|
+
* },
|
|
181
|
+
* compoundVariants: [
|
|
182
|
+
* {
|
|
183
|
+
* variants: { variant: "primary", size: "lg" },
|
|
184
|
+
* class: "shadow-lg",
|
|
185
|
+
* },
|
|
186
|
+
* ],
|
|
187
|
+
* })
|
|
188
|
+
*
|
|
189
|
+
* // Usage
|
|
190
|
+
* const className = buttonVariants({ variant: "primary", size: "lg" })
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
declare function createVariants<T extends string>(config: VariantConfig<T>): (props?: Partial<Record<string, T | string | undefined>>) => string;
|
|
194
|
+
/**
|
|
195
|
+
* Generate variant class names from variant props
|
|
196
|
+
* Simpler version without compound variants
|
|
197
|
+
*
|
|
198
|
+
* @param base - Base classes
|
|
199
|
+
* @param variants - Variant class maps
|
|
200
|
+
* @param props - Variant props
|
|
201
|
+
* @returns Merged className string
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```tsx
|
|
205
|
+
* const className = variantClassNames(
|
|
206
|
+
* "px-4 py-2",
|
|
207
|
+
* {
|
|
208
|
+
* variant: {
|
|
209
|
+
* primary: "bg-primary",
|
|
210
|
+
* secondary: "bg-secondary",
|
|
211
|
+
* },
|
|
212
|
+
* },
|
|
213
|
+
* { variant: "primary" }
|
|
214
|
+
* )
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
declare function variantClassNames(base: ClassValue, variants: Record<string, Record<string, ClassValue>>, props: Record<string, string | undefined>): string;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Accessibility utilities
|
|
221
|
+
* Helper functions for ARIA attributes, IDs, and screen reader support
|
|
222
|
+
*/
|
|
223
|
+
/**
|
|
224
|
+
* Generate a unique ID for use in ARIA attributes
|
|
225
|
+
* Safe to call on server (uses counter instead of random)
|
|
226
|
+
*
|
|
227
|
+
* @param prefix - Prefix for the ID
|
|
228
|
+
* @returns Unique ID string
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```tsx
|
|
232
|
+
* const id = generateId('input')
|
|
233
|
+
* // Returns: 'input-1', 'input-2', etc.
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
declare function generateId(prefix?: string): string;
|
|
237
|
+
/**
|
|
238
|
+
* Get ARIA label from various sources
|
|
239
|
+
* Prioritizes explicit label, then aria-label, then aria-labelledby
|
|
240
|
+
*
|
|
241
|
+
* @param options - Label options
|
|
242
|
+
* @returns Label string or undefined
|
|
243
|
+
*/
|
|
244
|
+
declare function getAriaLabel(options: {
|
|
245
|
+
label?: string;
|
|
246
|
+
'aria-label'?: string;
|
|
247
|
+
'aria-labelledby'?: string;
|
|
248
|
+
element?: HTMLElement;
|
|
249
|
+
}): string | undefined;
|
|
250
|
+
/**
|
|
251
|
+
* Get ARIA described by ID from helper text or error message
|
|
252
|
+
*
|
|
253
|
+
* @param options - Description options
|
|
254
|
+
* @returns ID string or undefined
|
|
255
|
+
*/
|
|
256
|
+
declare function getAriaDescribedBy(options: {
|
|
257
|
+
helperTextId?: string;
|
|
258
|
+
errorId?: string;
|
|
259
|
+
hasError?: boolean;
|
|
260
|
+
}): string | undefined;
|
|
261
|
+
/**
|
|
262
|
+
* Announce a message to screen readers via ARIA live region
|
|
263
|
+
* Creates a temporary live region element and announces the message
|
|
264
|
+
*
|
|
265
|
+
* @param message - Message to announce
|
|
266
|
+
* @param priority - Priority level ('polite' or 'assertive')
|
|
267
|
+
*
|
|
268
|
+
* @example
|
|
269
|
+
* ```tsx
|
|
270
|
+
* announceToScreenReader('Form submitted successfully', 'polite')
|
|
271
|
+
* announceToScreenReader('Error: Invalid input', 'assertive')
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
declare function announceToScreenReader(message: string, priority?: 'polite' | 'assertive'): void;
|
|
275
|
+
/**
|
|
276
|
+
* Check if an element is visible to screen readers
|
|
277
|
+
*
|
|
278
|
+
* @param element - Element to check
|
|
279
|
+
* @returns true if element is visible to screen readers
|
|
280
|
+
*/
|
|
281
|
+
declare function isVisibleToScreenReader(element: HTMLElement): boolean;
|
|
282
|
+
/**
|
|
283
|
+
* Get accessible name for an element
|
|
284
|
+
* Uses ARIA naming algorithm: aria-label > aria-labelledby > visible text content
|
|
285
|
+
*
|
|
286
|
+
* @param element - Element to get name for
|
|
287
|
+
* @returns Accessible name or undefined
|
|
288
|
+
*/
|
|
289
|
+
declare function getAccessibleName(element: HTMLElement): string | undefined;
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Performance utilities
|
|
293
|
+
* Helper functions for performance optimization
|
|
294
|
+
*/
|
|
295
|
+
/**
|
|
296
|
+
* Throttle a function call
|
|
297
|
+
* Ensures function is called at most once per delay period
|
|
298
|
+
*
|
|
299
|
+
* @param func - Function to throttle
|
|
300
|
+
* @param delay - Delay in milliseconds
|
|
301
|
+
* @returns Throttled function
|
|
302
|
+
*
|
|
303
|
+
* @example
|
|
304
|
+
* ```tsx
|
|
305
|
+
* const throttledScroll = throttle((event) => {
|
|
306
|
+
* console.log('Scroll')
|
|
307
|
+
* }, 100)
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
declare function throttle<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void;
|
|
311
|
+
/**
|
|
312
|
+
* Debounce a function call
|
|
313
|
+
* Delays execution until after delay has passed since last call
|
|
314
|
+
*
|
|
315
|
+
* @param func - Function to debounce
|
|
316
|
+
* @param delay - Delay in milliseconds
|
|
317
|
+
* @returns Debounced function
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* ```tsx
|
|
321
|
+
* const debouncedSearch = debounce((query) => {
|
|
322
|
+
* performSearch(query)
|
|
323
|
+
* }, 300)
|
|
324
|
+
* ```
|
|
325
|
+
*/
|
|
326
|
+
declare function debounce<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void;
|
|
327
|
+
/**
|
|
328
|
+
* Request animation frame wrapper
|
|
329
|
+
* Provides a clean way to use requestAnimationFrame
|
|
330
|
+
*
|
|
331
|
+
* @param callback - Callback to execute on next frame
|
|
332
|
+
* @returns Function to cancel the animation frame
|
|
333
|
+
*
|
|
334
|
+
* @example
|
|
335
|
+
* ```tsx
|
|
336
|
+
* const cancel = raf(() => {
|
|
337
|
+
* updatePosition()
|
|
338
|
+
* })
|
|
339
|
+
* ```
|
|
340
|
+
*/
|
|
341
|
+
declare function raf(callback: () => void): () => void;
|
|
342
|
+
/**
|
|
343
|
+
* Double request animation frame
|
|
344
|
+
* Useful for ensuring DOM updates are complete
|
|
345
|
+
*
|
|
346
|
+
* @param callback - Callback to execute after two frames
|
|
347
|
+
* @returns Function to cancel
|
|
348
|
+
*/
|
|
349
|
+
declare function doubleRaf(callback: () => void): () => void;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Validation patterns
|
|
353
|
+
* Common validation rules and utilities for form validation
|
|
354
|
+
*/
|
|
355
|
+
type ValidationRule<T = string> = (value: T) => string | undefined;
|
|
356
|
+
/**
|
|
357
|
+
* Required field validation
|
|
358
|
+
*/
|
|
359
|
+
declare const required: ValidationRule;
|
|
360
|
+
/**
|
|
361
|
+
* Email validation
|
|
362
|
+
*/
|
|
363
|
+
declare const email: ValidationRule<string>;
|
|
364
|
+
/**
|
|
365
|
+
* Minimum length validation
|
|
366
|
+
*/
|
|
367
|
+
declare const minLength: (min: number) => ValidationRule<string>;
|
|
368
|
+
/**
|
|
369
|
+
* Maximum length validation
|
|
370
|
+
*/
|
|
371
|
+
declare const maxLength: (max: number) => ValidationRule<string>;
|
|
372
|
+
/**
|
|
373
|
+
* Pattern validation (regex)
|
|
374
|
+
*/
|
|
375
|
+
declare const pattern: (regex: RegExp, message: string) => ValidationRule<string>;
|
|
376
|
+
/**
|
|
377
|
+
* Number range validation
|
|
378
|
+
*/
|
|
379
|
+
declare const numberRange: (min: number, max: number) => ValidationRule<number>;
|
|
380
|
+
/**
|
|
381
|
+
* Minimum value validation
|
|
382
|
+
*/
|
|
383
|
+
declare const min: (minimum: number) => ValidationRule<number>;
|
|
384
|
+
/**
|
|
385
|
+
* Maximum value validation
|
|
386
|
+
*/
|
|
387
|
+
declare const max: (maximum: number) => ValidationRule<number>;
|
|
388
|
+
/**
|
|
389
|
+
* URL validation
|
|
390
|
+
*/
|
|
391
|
+
declare const url: ValidationRule<string>;
|
|
392
|
+
/**
|
|
393
|
+
* Combine multiple validation rules
|
|
394
|
+
*/
|
|
395
|
+
declare const combine: <T>(...rules: ValidationRule<T>[]) => ValidationRule<T>;
|
|
396
|
+
/**
|
|
397
|
+
* Conditional validation
|
|
398
|
+
* Only validate if condition is true
|
|
399
|
+
*/
|
|
400
|
+
declare const conditional: <T>(condition: (value: T) => boolean, rule: ValidationRule<T>) => ValidationRule<T>;
|
|
401
|
+
/**
|
|
402
|
+
* Custom validation rule creator
|
|
403
|
+
*/
|
|
404
|
+
declare const createRule: <T>(validator: (value: T) => boolean, message: string) => ValidationRule<T>;
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Standard component props pattern
|
|
408
|
+
* Base props that most components should include
|
|
409
|
+
*/
|
|
410
|
+
interface StandardComponentProps {
|
|
411
|
+
/**
|
|
412
|
+
* Additional CSS classes
|
|
413
|
+
*/
|
|
414
|
+
className?: string;
|
|
415
|
+
/**
|
|
416
|
+
* Child elements
|
|
417
|
+
*/
|
|
418
|
+
children?: ReactNode;
|
|
419
|
+
/**
|
|
420
|
+
* Test ID for testing
|
|
421
|
+
*/
|
|
422
|
+
'data-testid'?: string;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Polymorphic component props
|
|
426
|
+
* Allows component to render as different HTML elements
|
|
427
|
+
*/
|
|
428
|
+
interface PolymorphicProps<T extends React.ElementType = 'div'> extends StandardComponentProps {
|
|
429
|
+
/**
|
|
430
|
+
* Element type to render as
|
|
431
|
+
*/
|
|
432
|
+
as?: T;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Variant component props pattern
|
|
436
|
+
* Components with variants should follow this pattern
|
|
437
|
+
*/
|
|
438
|
+
interface VariantComponentProps extends StandardComponentProps {
|
|
439
|
+
/**
|
|
440
|
+
* Visual variant
|
|
441
|
+
*/
|
|
442
|
+
variant?: string;
|
|
443
|
+
/**
|
|
444
|
+
* Size variant
|
|
445
|
+
*/
|
|
446
|
+
size?: string;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Form component props pattern
|
|
450
|
+
* Base props for form input components
|
|
451
|
+
*/
|
|
452
|
+
interface FormComponentProps extends StandardComponentProps {
|
|
453
|
+
/**
|
|
454
|
+
* Field name (for form submission)
|
|
455
|
+
*/
|
|
456
|
+
name?: string;
|
|
457
|
+
/**
|
|
458
|
+
* Field value
|
|
459
|
+
*/
|
|
460
|
+
value?: string | number;
|
|
461
|
+
/**
|
|
462
|
+
* Default value (uncontrolled)
|
|
463
|
+
*/
|
|
464
|
+
defaultValue?: string | number;
|
|
465
|
+
/**
|
|
466
|
+
* Whether field is disabled
|
|
467
|
+
*/
|
|
468
|
+
disabled?: boolean;
|
|
469
|
+
/**
|
|
470
|
+
* Whether field is required
|
|
471
|
+
*/
|
|
472
|
+
required?: boolean;
|
|
473
|
+
/**
|
|
474
|
+
* Whether field has error
|
|
475
|
+
*/
|
|
476
|
+
error?: boolean;
|
|
477
|
+
/**
|
|
478
|
+
* Error message
|
|
479
|
+
*/
|
|
480
|
+
errorMessage?: string;
|
|
481
|
+
/**
|
|
482
|
+
* Helper text
|
|
483
|
+
*/
|
|
484
|
+
helperText?: string;
|
|
485
|
+
/**
|
|
486
|
+
* ARIA label
|
|
487
|
+
*/
|
|
488
|
+
'aria-label'?: string;
|
|
489
|
+
/**
|
|
490
|
+
* ARIA described by (for helper text/error)
|
|
491
|
+
*/
|
|
492
|
+
'aria-describedby'?: string;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Interactive component props pattern
|
|
496
|
+
* Base props for clickable/interactive components
|
|
497
|
+
*/
|
|
498
|
+
interface InteractiveComponentProps extends StandardComponentProps {
|
|
499
|
+
/**
|
|
500
|
+
* Click handler
|
|
501
|
+
*/
|
|
502
|
+
onClick?: (event: React.MouseEvent) => void;
|
|
503
|
+
/**
|
|
504
|
+
* Whether component is disabled
|
|
505
|
+
*/
|
|
506
|
+
disabled?: boolean;
|
|
507
|
+
/**
|
|
508
|
+
* ARIA label (required for icon-only buttons)
|
|
509
|
+
*/
|
|
510
|
+
'aria-label'?: string;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Create standard props with defaults
|
|
514
|
+
*/
|
|
515
|
+
declare function createStandardProps(props: StandardComponentProps, defaults?: Partial<StandardComponentProps>): StandardComponentProps;
|
|
516
|
+
|
|
517
|
+
interface AppContextProps {
|
|
518
|
+
sidebarOpen: boolean;
|
|
519
|
+
setSidebarOpen: Dispatch<SetStateAction<boolean>>;
|
|
520
|
+
sidebarExpanded: boolean;
|
|
521
|
+
setSidebarExpanded: Dispatch<SetStateAction<boolean>>;
|
|
522
|
+
}
|
|
523
|
+
declare function AppProvider({ children, }: {
|
|
524
|
+
children: React.ReactNode;
|
|
525
|
+
}): React$1.JSX.Element;
|
|
526
|
+
declare const useAppProvider: () => AppContextProps;
|
|
527
|
+
|
|
528
|
+
declare function useWindowWidth(): number | undefined;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* useMediaQuery
|
|
532
|
+
* Hook to track media query matches
|
|
533
|
+
*/
|
|
534
|
+
declare function useMediaQuery(query: string): boolean;
|
|
535
|
+
/**
|
|
536
|
+
* useBreakpoint
|
|
537
|
+
* Hook to track common breakpoints
|
|
538
|
+
*/
|
|
539
|
+
declare function useBreakpoint(): {
|
|
540
|
+
isMobile: boolean;
|
|
541
|
+
isTablet: boolean;
|
|
542
|
+
isDesktop: boolean;
|
|
543
|
+
isLarge: boolean;
|
|
544
|
+
};
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* useClickOutside
|
|
548
|
+
* Hook to detect clicks outside a referenced element
|
|
549
|
+
*/
|
|
550
|
+
declare function useClickOutside<T extends HTMLElement = HTMLElement>(ref: RefObject<T>, handler: (event: MouseEvent | TouchEvent) => void): void;
|
|
551
|
+
|
|
552
|
+
/**
|
|
553
|
+
* useDebounce
|
|
554
|
+
* Hook to debounce a value
|
|
555
|
+
*/
|
|
556
|
+
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* usePrefersReducedMotion
|
|
560
|
+
* Hook to detect user's preference for reduced motion
|
|
561
|
+
* Respects prefers-reduced-motion media query for accessibility
|
|
562
|
+
*
|
|
563
|
+
* @returns boolean - true if user prefers reduced motion
|
|
564
|
+
*
|
|
565
|
+
* @example
|
|
566
|
+
* ```tsx
|
|
567
|
+
* const prefersReducedMotion = usePrefersReducedMotion()
|
|
568
|
+
* const animationDuration = prefersReducedMotion ? 0 : 200
|
|
569
|
+
* ```
|
|
570
|
+
*/
|
|
571
|
+
declare function usePrefersReducedMotion(): boolean;
|
|
572
|
+
|
|
573
|
+
type TransitionState = 'entering' | 'entered' | 'exiting' | 'exited';
|
|
574
|
+
interface UseTransitionStateOptions {
|
|
575
|
+
/**
|
|
576
|
+
* Duration of enter transition in milliseconds
|
|
577
|
+
* @default 200
|
|
578
|
+
*/
|
|
579
|
+
enterDuration?: number;
|
|
580
|
+
/**
|
|
581
|
+
* Duration of exit transition in milliseconds
|
|
582
|
+
* @default 150
|
|
583
|
+
*/
|
|
584
|
+
exitDuration?: number;
|
|
585
|
+
/**
|
|
586
|
+
* Whether to mount the component initially
|
|
587
|
+
* @default false
|
|
588
|
+
*/
|
|
589
|
+
initialMount?: boolean;
|
|
590
|
+
/**
|
|
591
|
+
* Whether to respect prefers-reduced-motion
|
|
592
|
+
* @default true
|
|
593
|
+
*/
|
|
594
|
+
respectReducedMotion?: boolean;
|
|
595
|
+
}
|
|
596
|
+
/**
|
|
597
|
+
* useTransitionState
|
|
598
|
+
* Hook to manage enter/exit transition states for components
|
|
599
|
+
* Useful for modals, dropdowns, tooltips, and other animated components
|
|
600
|
+
*
|
|
601
|
+
* @param isOpen - Whether the component should be visible
|
|
602
|
+
* @param options - Transition configuration options
|
|
603
|
+
* @returns Object with transition state and control functions
|
|
604
|
+
*
|
|
605
|
+
* @example
|
|
606
|
+
* ```tsx
|
|
607
|
+
* const { state, shouldMount, endTransition } = useTransitionState(isOpen)
|
|
608
|
+
*
|
|
609
|
+
* return shouldMount && (
|
|
610
|
+
* <div className={state === 'entered' ? 'opacity-100' : 'opacity-0'}>
|
|
611
|
+
* Content
|
|
612
|
+
* </div>
|
|
613
|
+
* )
|
|
614
|
+
* ```
|
|
615
|
+
*/
|
|
616
|
+
declare function useTransitionState(isOpen: boolean, options?: UseTransitionStateOptions): {
|
|
617
|
+
state: TransitionState;
|
|
618
|
+
shouldMount: boolean;
|
|
619
|
+
endTransition: () => void;
|
|
620
|
+
};
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* useFocusTrap
|
|
624
|
+
* Hook to trap focus within a container element
|
|
625
|
+
* Useful for modals, dialogs, and other overlay components
|
|
626
|
+
*
|
|
627
|
+
* @param isActive - Whether the focus trap should be active
|
|
628
|
+
* @param containerRef - Ref to the container element
|
|
629
|
+
* @param options - Configuration options
|
|
630
|
+
*
|
|
631
|
+
* @example
|
|
632
|
+
* ```tsx
|
|
633
|
+
* const containerRef = useRef<HTMLDivElement>(null)
|
|
634
|
+
* useFocusTrap(isOpen, containerRef)
|
|
635
|
+
*
|
|
636
|
+
* return (
|
|
637
|
+
* <div ref={containerRef}>
|
|
638
|
+
* <button>First</button>
|
|
639
|
+
* <button>Last</button>
|
|
640
|
+
* </div>
|
|
641
|
+
* )
|
|
642
|
+
* ```
|
|
643
|
+
*/
|
|
644
|
+
declare function useFocusTrap(isActive: boolean, containerRef: React.RefObject<HTMLElement>, options?: {
|
|
645
|
+
/**
|
|
646
|
+
* Whether to return focus to the previously focused element on deactivate
|
|
647
|
+
* @default true
|
|
648
|
+
*/
|
|
649
|
+
returnFocus?: boolean;
|
|
650
|
+
/**
|
|
651
|
+
* Initial element to focus when trap activates
|
|
652
|
+
* @default first focusable element
|
|
653
|
+
*/
|
|
654
|
+
initialFocus?: HTMLElement | null;
|
|
655
|
+
}): void;
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* useFocusReturn
|
|
659
|
+
* Hook to return focus to a previously focused element
|
|
660
|
+
* Useful for modals, dropdowns, and other overlay components that close
|
|
661
|
+
*
|
|
662
|
+
* @param shouldReturn - Whether to return focus (typically when component closes)
|
|
663
|
+
* @param fallbackElement - Element to focus if previous element is not available
|
|
664
|
+
*
|
|
665
|
+
* @example
|
|
666
|
+
* ```tsx
|
|
667
|
+
* const [isOpen, setIsOpen] = useState(false)
|
|
668
|
+
* const triggerRef = useRef<HTMLButtonElement>(null)
|
|
669
|
+
*
|
|
670
|
+
* useFocusReturn(!isOpen, triggerRef.current)
|
|
671
|
+
*
|
|
672
|
+
* return (
|
|
673
|
+
* <>
|
|
674
|
+
* <button ref={triggerRef} onClick={() => setIsOpen(true)}>Open</button>
|
|
675
|
+
* {isOpen && <Modal onClose={() => setIsOpen(false)} />}
|
|
676
|
+
* </>
|
|
677
|
+
* )
|
|
678
|
+
* ```
|
|
679
|
+
*/
|
|
680
|
+
declare function useFocusReturn(shouldReturn: boolean, fallbackElement?: HTMLElement | null): void;
|
|
681
|
+
|
|
682
|
+
type AsyncState<T> = {
|
|
683
|
+
status: 'idle';
|
|
684
|
+
} | {
|
|
685
|
+
status: 'loading';
|
|
686
|
+
} | {
|
|
687
|
+
status: 'success';
|
|
688
|
+
data: T;
|
|
689
|
+
} | {
|
|
690
|
+
status: 'error';
|
|
691
|
+
error: Error;
|
|
692
|
+
};
|
|
693
|
+
interface UseAsyncStateOptions<T> {
|
|
694
|
+
/**
|
|
695
|
+
* Initial data value
|
|
696
|
+
*/
|
|
697
|
+
initialData?: T;
|
|
698
|
+
/**
|
|
699
|
+
* Whether to reset state when component unmounts
|
|
700
|
+
* @default false
|
|
701
|
+
*/
|
|
702
|
+
resetOnUnmount?: boolean;
|
|
703
|
+
/**
|
|
704
|
+
* Callback when async operation succeeds
|
|
705
|
+
*/
|
|
706
|
+
onSuccess?: (data: T) => void;
|
|
707
|
+
/**
|
|
708
|
+
* Callback when async operation fails
|
|
709
|
+
*/
|
|
710
|
+
onError?: (error: Error) => void;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* useAsyncState
|
|
714
|
+
* Hook to manage async operation state (loading, success, error)
|
|
715
|
+
* Useful for API calls, form submissions, and other async operations
|
|
716
|
+
*
|
|
717
|
+
* @param options - Configuration options
|
|
718
|
+
* @returns Object with state and control functions
|
|
719
|
+
*
|
|
720
|
+
* @example
|
|
721
|
+
* ```tsx
|
|
722
|
+
* const { state, execute, reset } = useAsyncState()
|
|
723
|
+
*
|
|
724
|
+
* const handleSubmit = async () => {
|
|
725
|
+
* execute(async () => {
|
|
726
|
+
* const data = await api.createUser(formData)
|
|
727
|
+
* return data
|
|
728
|
+
* })
|
|
729
|
+
* }
|
|
730
|
+
*
|
|
731
|
+
* return (
|
|
732
|
+
* <div>
|
|
733
|
+
* {state.status === 'loading' && <Spinner />}
|
|
734
|
+
* {state.status === 'error' && <Error message={state.error.message} />}
|
|
735
|
+
* {state.status === 'success' && <Success data={state.data} />}
|
|
736
|
+
* </div>
|
|
737
|
+
* )
|
|
738
|
+
* ```
|
|
739
|
+
*/
|
|
740
|
+
declare function useAsyncState<T = unknown>(options?: UseAsyncStateOptions<T>): {
|
|
741
|
+
state: AsyncState<T>;
|
|
742
|
+
execute: (asyncFn: () => Promise<T>) => Promise<T | undefined>;
|
|
743
|
+
reset: () => void;
|
|
744
|
+
setData: (data: T) => void;
|
|
745
|
+
setError: (error: Error) => void;
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* useToggle
|
|
750
|
+
* Hook to manage boolean state with toggle, setTrue, and setFalse functions
|
|
751
|
+
* Useful for modals, dropdowns, checkboxes, and other boolean states
|
|
752
|
+
*
|
|
753
|
+
* @param initialValue - Initial boolean value
|
|
754
|
+
* @returns Object with value and control functions
|
|
755
|
+
*
|
|
756
|
+
* @example
|
|
757
|
+
* ```tsx
|
|
758
|
+
* const { value: isOpen, toggle, setTrue, setFalse } = useToggle(false)
|
|
759
|
+
*
|
|
760
|
+
* return (
|
|
761
|
+
* <>
|
|
762
|
+
* <button onClick={toggle}>Toggle</button>
|
|
763
|
+
* <button onClick={setTrue}>Open</button>
|
|
764
|
+
* <button onClick={setFalse}>Close</button>
|
|
765
|
+
* {isOpen && <Modal />}
|
|
766
|
+
* </>
|
|
767
|
+
* )
|
|
768
|
+
* ```
|
|
769
|
+
*/
|
|
770
|
+
declare function useToggle(initialValue?: boolean): {
|
|
771
|
+
value: boolean;
|
|
772
|
+
toggle: () => void;
|
|
773
|
+
setTrue: () => void;
|
|
774
|
+
setFalse: () => void;
|
|
775
|
+
setValue: (value: boolean) => void;
|
|
776
|
+
};
|
|
777
|
+
|
|
778
|
+
interface UseCounterOptions {
|
|
779
|
+
/**
|
|
780
|
+
* Initial counter value
|
|
781
|
+
* @default 0
|
|
782
|
+
*/
|
|
783
|
+
initialValue?: number;
|
|
784
|
+
/**
|
|
785
|
+
* Minimum value (inclusive)
|
|
786
|
+
*/
|
|
787
|
+
min?: number;
|
|
788
|
+
/**
|
|
789
|
+
* Maximum value (inclusive)
|
|
790
|
+
*/
|
|
791
|
+
max?: number;
|
|
792
|
+
/**
|
|
793
|
+
* Step value for increment/decrement
|
|
794
|
+
* @default 1
|
|
795
|
+
*/
|
|
796
|
+
step?: number;
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* useCounter
|
|
800
|
+
* Hook to manage numeric counter state with increment, decrement, and reset functions
|
|
801
|
+
* Useful for quantity selectors, pagination, and other numeric inputs
|
|
802
|
+
*
|
|
803
|
+
* @param options - Configuration options
|
|
804
|
+
* @returns Object with value and control functions
|
|
805
|
+
*
|
|
806
|
+
* @example
|
|
807
|
+
* ```tsx
|
|
808
|
+
* const { value, increment, decrement, reset, setValue } = useCounter({
|
|
809
|
+
* initialValue: 0,
|
|
810
|
+
* min: 0,
|
|
811
|
+
* max: 10,
|
|
812
|
+
* step: 1
|
|
813
|
+
* })
|
|
814
|
+
*
|
|
815
|
+
* return (
|
|
816
|
+
* <div>
|
|
817
|
+
* <button onClick={decrement}>-</button>
|
|
818
|
+
* <span>{value}</span>
|
|
819
|
+
* <button onClick={increment}>+</button>
|
|
820
|
+
* </div>
|
|
821
|
+
* )
|
|
822
|
+
* ```
|
|
823
|
+
*/
|
|
824
|
+
declare function useCounter(options?: UseCounterOptions): {
|
|
825
|
+
value: number;
|
|
826
|
+
increment: () => void;
|
|
827
|
+
decrement: () => void;
|
|
828
|
+
reset: () => void;
|
|
829
|
+
setValue: (value: number) => void;
|
|
830
|
+
};
|
|
831
|
+
|
|
832
|
+
/**
|
|
833
|
+
* useAriaLive
|
|
834
|
+
* Hook to manage ARIA live region for screen reader announcements
|
|
835
|
+
* Creates a persistent live region element
|
|
836
|
+
*
|
|
837
|
+
* @param priority - Priority level ('polite' or 'assertive')
|
|
838
|
+
* @returns Function to announce messages
|
|
839
|
+
*
|
|
840
|
+
* @example
|
|
841
|
+
* ```tsx
|
|
842
|
+
* const announce = useAriaLive('polite')
|
|
843
|
+
*
|
|
844
|
+
* useEffect(() => {
|
|
845
|
+
* if (success) {
|
|
846
|
+
* announce('Operation completed successfully')
|
|
847
|
+
* }
|
|
848
|
+
* }, [success, announce])
|
|
849
|
+
* ```
|
|
850
|
+
*/
|
|
851
|
+
declare function useAriaLive(priority?: 'polite' | 'assertive'): (message: string) => void;
|
|
852
|
+
|
|
853
|
+
/**
|
|
854
|
+
* useThrottle
|
|
855
|
+
* Hook to throttle a callback function
|
|
856
|
+
* Useful for scroll handlers, resize handlers, and other frequent events
|
|
857
|
+
*
|
|
858
|
+
* @param callback - Function to throttle
|
|
859
|
+
* @param delay - Throttle delay in milliseconds
|
|
860
|
+
* @returns Throttled callback function
|
|
861
|
+
*
|
|
862
|
+
* @example
|
|
863
|
+
* ```tsx
|
|
864
|
+
* const throttledScroll = useThrottle((event) => {
|
|
865
|
+
* console.log('Scroll position:', window.scrollY)
|
|
866
|
+
* }, 100)
|
|
867
|
+
*
|
|
868
|
+
* useEffect(() => {
|
|
869
|
+
* window.addEventListener('scroll', throttledScroll)
|
|
870
|
+
* return () => window.removeEventListener('scroll', throttledScroll)
|
|
871
|
+
* }, [throttledScroll])
|
|
872
|
+
* ```
|
|
873
|
+
*/
|
|
874
|
+
declare function useThrottle<T extends (...args: any[]) => any>(callback: T, delay: number): T;
|
|
875
|
+
|
|
876
|
+
interface FieldValidation<T = unknown> {
|
|
877
|
+
value: T;
|
|
878
|
+
error?: string;
|
|
879
|
+
touched: boolean;
|
|
880
|
+
rules?: ValidationRule<any>[];
|
|
881
|
+
}
|
|
882
|
+
interface UseFormValidationOptions {
|
|
883
|
+
/**
|
|
884
|
+
* Whether to validate on change (in addition to blur)
|
|
885
|
+
* @default false
|
|
886
|
+
*/
|
|
887
|
+
validateOnChange?: boolean;
|
|
888
|
+
/**
|
|
889
|
+
* Whether to validate on blur
|
|
890
|
+
* @default true
|
|
891
|
+
*/
|
|
892
|
+
validateOnBlur?: boolean;
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* useFormValidation
|
|
896
|
+
* Hook to manage form field validation
|
|
897
|
+
* Provides validation state and handlers for form fields
|
|
898
|
+
*
|
|
899
|
+
* @param options - Validation options
|
|
900
|
+
* @returns Object with validation state and handlers
|
|
901
|
+
*
|
|
902
|
+
* @example
|
|
903
|
+
* ```tsx
|
|
904
|
+
* const { fields, setFieldValue, setFieldError, validateField, validateForm } = useFormValidation()
|
|
905
|
+
*
|
|
906
|
+
* const handleSubmit = () => {
|
|
907
|
+
* if (validateForm()) {
|
|
908
|
+
* // Form is valid, submit
|
|
909
|
+
* }
|
|
910
|
+
* }
|
|
911
|
+
*
|
|
912
|
+
* return (
|
|
913
|
+
* <form onSubmit={handleSubmit}>
|
|
914
|
+
* <input
|
|
915
|
+
* value={fields.email?.value || ''}
|
|
916
|
+
* onChange={(e) => setFieldValue('email', e.target.value, [required, email])}
|
|
917
|
+
* onBlur={() => validateField('email')}
|
|
918
|
+
* />
|
|
919
|
+
* {fields.email?.error && <span>{fields.email.error}</span>}
|
|
920
|
+
* </form>
|
|
921
|
+
* )
|
|
922
|
+
* ```
|
|
923
|
+
*/
|
|
924
|
+
declare function useFormValidation(options?: UseFormValidationOptions): {
|
|
925
|
+
fields: Record<string, FieldValidation>;
|
|
926
|
+
setFieldValue: <T>(name: string, value: T, rules?: ValidationRule<T>[]) => void;
|
|
927
|
+
setFieldError: (name: string, error: string | undefined) => void;
|
|
928
|
+
validateField: (name: string) => boolean;
|
|
929
|
+
validateForm: () => boolean;
|
|
930
|
+
resetField: (name: string) => void;
|
|
931
|
+
resetForm: () => void;
|
|
932
|
+
getFieldValue: <T>(name: string) => T | undefined;
|
|
933
|
+
};
|
|
934
|
+
|
|
935
|
+
/**
|
|
936
|
+
* Design system theme types
|
|
937
|
+
* Adapted from reference customizer for built-in themes only
|
|
938
|
+
*/
|
|
939
|
+
type ThemeStyleProps = {
|
|
940
|
+
background: string;
|
|
941
|
+
foreground: string;
|
|
942
|
+
card: string;
|
|
943
|
+
"card-foreground": string;
|
|
944
|
+
popover: string;
|
|
945
|
+
"popover-foreground": string;
|
|
946
|
+
/** Control surface (inputs, textareas, etc.). Optional for older presets/themes. */
|
|
947
|
+
field?: string;
|
|
948
|
+
primary: string;
|
|
949
|
+
"primary-foreground": string;
|
|
950
|
+
secondary: string;
|
|
951
|
+
"secondary-foreground": string;
|
|
952
|
+
muted: string;
|
|
953
|
+
"muted-foreground": string;
|
|
954
|
+
accent: string;
|
|
955
|
+
"accent-foreground": string;
|
|
956
|
+
destructive: string;
|
|
957
|
+
"destructive-foreground": string;
|
|
958
|
+
border: string;
|
|
959
|
+
input: string;
|
|
960
|
+
ring: string;
|
|
961
|
+
"chart-1": string;
|
|
962
|
+
"chart-2": string;
|
|
963
|
+
"chart-3": string;
|
|
964
|
+
"chart-4": string;
|
|
965
|
+
"chart-5": string;
|
|
966
|
+
sidebar?: string;
|
|
967
|
+
"sidebar-foreground"?: string;
|
|
968
|
+
"sidebar-primary"?: string;
|
|
969
|
+
"sidebar-primary-foreground"?: string;
|
|
970
|
+
"sidebar-accent"?: string;
|
|
971
|
+
"sidebar-accent-foreground"?: string;
|
|
972
|
+
"sidebar-border"?: string;
|
|
973
|
+
"sidebar-ring"?: string;
|
|
974
|
+
radius: string;
|
|
975
|
+
"font-sans": string;
|
|
976
|
+
"font-serif"?: string;
|
|
977
|
+
"font-mono": string;
|
|
978
|
+
spacing?: string;
|
|
979
|
+
"tracking-normal"?: string;
|
|
980
|
+
"shadow-color"?: string;
|
|
981
|
+
"shadow-opacity"?: string;
|
|
982
|
+
"shadow-blur"?: string;
|
|
983
|
+
"shadow-spread"?: string;
|
|
984
|
+
"shadow-x"?: string;
|
|
985
|
+
"shadow-y"?: string;
|
|
986
|
+
"shadow-2xs"?: string;
|
|
987
|
+
"shadow-xs"?: string;
|
|
988
|
+
"shadow-sm"?: string;
|
|
989
|
+
shadow?: string;
|
|
990
|
+
"shadow-md"?: string;
|
|
991
|
+
"shadow-lg"?: string;
|
|
992
|
+
"shadow-xl"?: string;
|
|
993
|
+
"shadow-2xl"?: string;
|
|
994
|
+
"hue-shift"?: string;
|
|
995
|
+
"saturation-mult"?: string;
|
|
996
|
+
"lightness-mult"?: string;
|
|
997
|
+
};
|
|
998
|
+
type ThemeStyles = {
|
|
999
|
+
/**
|
|
1000
|
+
* Theme CSS variables, without `--` prefix.
|
|
1001
|
+
* Keep this as a simple map so we can support hex, hsl(), oklch(), shadows, spacing, etc.
|
|
1002
|
+
*/
|
|
1003
|
+
light: Record<string, string>;
|
|
1004
|
+
dark: Record<string, string>;
|
|
1005
|
+
};
|
|
1006
|
+
type ThemePreset = {
|
|
1007
|
+
source?: "SAVED" | "BUILT_IN";
|
|
1008
|
+
createdAt?: string;
|
|
1009
|
+
label?: string;
|
|
1010
|
+
styles: ThemeStyles;
|
|
1011
|
+
};
|
|
1012
|
+
interface ColorTheme {
|
|
1013
|
+
name: string;
|
|
1014
|
+
value: string;
|
|
1015
|
+
preset: ThemePreset;
|
|
1016
|
+
}
|
|
1017
|
+
interface RadiusOption {
|
|
1018
|
+
name: string;
|
|
1019
|
+
value: string;
|
|
1020
|
+
}
|
|
1021
|
+
interface BrandColor {
|
|
1022
|
+
name: string;
|
|
1023
|
+
cssVar: string;
|
|
1024
|
+
}
|
|
1025
|
+
/** One collapsible section in the color sidebar (e.g. "Primary Colors") */
|
|
1026
|
+
interface ColorGroup {
|
|
1027
|
+
title: string;
|
|
1028
|
+
colors: BrandColor[];
|
|
1029
|
+
}
|
|
1030
|
+
interface ImportedTheme {
|
|
1031
|
+
light: Record<string, string>;
|
|
1032
|
+
dark: Record<string, string>;
|
|
1033
|
+
}
|
|
1034
|
+
type CustomThemeBase = {
|
|
1035
|
+
type: 'preset';
|
|
1036
|
+
value: string;
|
|
1037
|
+
} | {
|
|
1038
|
+
type: 'imported';
|
|
1039
|
+
theme: ImportedTheme;
|
|
1040
|
+
};
|
|
1041
|
+
type CustomThemeLayoutOverrides = {
|
|
1042
|
+
sidebar?: {
|
|
1043
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
1044
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
1045
|
+
side?: "left" | "right";
|
|
1046
|
+
};
|
|
1047
|
+
};
|
|
1048
|
+
type CustomThemeOverrides = {
|
|
1049
|
+
/** Per-mode overrides (keys without `--`). Only include deltas vs base. */
|
|
1050
|
+
light?: Record<string, string>;
|
|
1051
|
+
dark?: Record<string, string>;
|
|
1052
|
+
/**
|
|
1053
|
+
* Mode-agnostic overrides (keys without `--`).
|
|
1054
|
+
* Used for tweakcn-style knobs: hue-shift/saturation-mult/lightness-mult, spacing, tracking, shadow component vars, radius, etc.
|
|
1055
|
+
*/
|
|
1056
|
+
other?: Record<string, string>;
|
|
1057
|
+
/** Non-token layout settings (kept separate from CSS vars). */
|
|
1058
|
+
layout?: CustomThemeLayoutOverrides;
|
|
1059
|
+
};
|
|
1060
|
+
type CustomThemeArtifactV1 = {
|
|
1061
|
+
version: 1;
|
|
1062
|
+
name: string;
|
|
1063
|
+
base: CustomThemeBase;
|
|
1064
|
+
overrides: CustomThemeOverrides;
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1067
|
+
/**
|
|
1068
|
+
* Apply theme preset to document.documentElement
|
|
1069
|
+
* Writes preset's light/dark object to CSS variables
|
|
1070
|
+
* Includes HSL transformations and shadow updates
|
|
1071
|
+
*/
|
|
1072
|
+
|
|
1073
|
+
/**
|
|
1074
|
+
* Reset all CSS variables that could be set by themes
|
|
1075
|
+
*/
|
|
1076
|
+
declare function resetTheme(): void;
|
|
1077
|
+
/**
|
|
1078
|
+
* Apply a theme preset to the document
|
|
1079
|
+
* Includes HSL transformations and shadow updates
|
|
1080
|
+
*/
|
|
1081
|
+
declare function applyThemePreset(preset: ThemePreset, darkMode: boolean): void;
|
|
1082
|
+
/**
|
|
1083
|
+
* Apply an imported theme to the document
|
|
1084
|
+
* Includes HSL transformations and shadow updates
|
|
1085
|
+
*/
|
|
1086
|
+
declare function applyImportedTheme(themeData: ImportedTheme, darkMode: boolean): void;
|
|
1087
|
+
/**
|
|
1088
|
+
* Apply radius value
|
|
1089
|
+
*/
|
|
1090
|
+
declare function applyRadius(radius: string): void;
|
|
1091
|
+
/**
|
|
1092
|
+
* Single entry point for any theme CSS variable (colors, typography, radius, HSL, spacing, shadow).
|
|
1093
|
+
* Use this from all customizer panels so one component controls the design tokens.
|
|
1094
|
+
* Includes validation and shadow updates.
|
|
1095
|
+
*/
|
|
1096
|
+
declare function handleColorChange(cssVar: string, value: string): void;
|
|
1097
|
+
|
|
1098
|
+
declare function useThemeManager(): {
|
|
1099
|
+
theme: string;
|
|
1100
|
+
setTheme: React__default.Dispatch<React__default.SetStateAction<string>>;
|
|
1101
|
+
isDarkMode: boolean;
|
|
1102
|
+
brandColorsValues: Record<string, string>;
|
|
1103
|
+
setBrandColorsValues: React__default.Dispatch<React__default.SetStateAction<Record<string, string>>>;
|
|
1104
|
+
currentThemeValue: string;
|
|
1105
|
+
customThemeValue: string;
|
|
1106
|
+
customThemeName: string;
|
|
1107
|
+
customThemeArtifact: CustomThemeArtifactV1;
|
|
1108
|
+
error: string;
|
|
1109
|
+
resetTheme: typeof resetTheme;
|
|
1110
|
+
applyTheme: (themeValue: string, darkMode: boolean) => void;
|
|
1111
|
+
applyTweakcnTheme: (themePreset: ThemePreset, darkMode: boolean) => void;
|
|
1112
|
+
applyImportedTheme: (themeData: ImportedTheme, darkMode: boolean) => void;
|
|
1113
|
+
saveCustomThemeArtifactFromCurrent: (name?: string, layout?: CustomThemeLayoutOverrides) => CustomThemeArtifactV1 | null;
|
|
1114
|
+
importCustomThemeArtifact: (theme: CustomThemeArtifactV1) => void;
|
|
1115
|
+
applyRadius: (radius: string) => void;
|
|
1116
|
+
handleColorChange: (cssVar: string, value: string) => void;
|
|
1117
|
+
updateBrandColorsFromTheme: (styles: Record<string, string>) => void;
|
|
1118
|
+
clearError: () => void;
|
|
1119
|
+
};
|
|
1120
|
+
|
|
1121
|
+
/**
|
|
1122
|
+
* Design system theme data
|
|
1123
|
+
* Converts presets to ColorTheme[] for dropdown
|
|
1124
|
+
*/
|
|
1125
|
+
|
|
1126
|
+
declare const colorThemes: ColorTheme[];
|
|
1127
|
+
|
|
1128
|
+
/**
|
|
1129
|
+
* Design system theme presets
|
|
1130
|
+
* Built-in themes only (no third-party product names)
|
|
1131
|
+
*/
|
|
1132
|
+
|
|
1133
|
+
declare const themePresets: Record<string, ThemePreset>;
|
|
1134
|
+
|
|
1135
|
+
/**
|
|
1136
|
+
* Design system theme constants
|
|
1137
|
+
* Radius options and brand colors for theme customizer
|
|
1138
|
+
*/
|
|
1139
|
+
|
|
1140
|
+
declare const radiusOptions: RadiusOption[];
|
|
1141
|
+
declare const baseColors: BrandColor[];
|
|
1142
|
+
/** Color groups for tweakcn-style sidebar. Vars match Mindtris UI presets in presets.ts. */
|
|
1143
|
+
declare const colorGroups: ColorGroup[];
|
|
1144
|
+
|
|
1145
|
+
/** Section when used under Colors / Typography / Others tabs (like tweakcn). No Theme/Layout tabs. */
|
|
1146
|
+
type ThemeCustomizerSection = 'colors' | 'typography' | 'others';
|
|
1147
|
+
interface ThemeCustomizerProps {
|
|
1148
|
+
open: boolean;
|
|
1149
|
+
onOpenChange: (open: boolean) => void;
|
|
1150
|
+
/** When true, render as inline content (no fixed overlay/backdrop). Use in sidebar layout. */
|
|
1151
|
+
inline?: boolean;
|
|
1152
|
+
/** When true, hide the internal header (Customizer title + Reset). Use when the host provides its own top bar. */
|
|
1153
|
+
hideHeader?: boolean;
|
|
1154
|
+
/** When set (e.g. by theme sidebar), render only this section. Theme/Layout tabs are removed; content lives under Colors, Typography, Others. */
|
|
1155
|
+
section?: ThemeCustomizerSection;
|
|
1156
|
+
/** When true, preset selector is in parent header; Colors section won't show preset (avoid duplicate). */
|
|
1157
|
+
presetInHeader?: boolean;
|
|
1158
|
+
/** Controlled preset (when preset is in parent header). */
|
|
1159
|
+
selectedTheme?: string;
|
|
1160
|
+
setSelectedTheme?: (value: string) => void;
|
|
1161
|
+
sidebarConfig?: {
|
|
1162
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
1163
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
1164
|
+
side?: "left" | "right";
|
|
1165
|
+
};
|
|
1166
|
+
onSidebarConfigChange?: (config: {
|
|
1167
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
1168
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
1169
|
+
side?: "left" | "right";
|
|
1170
|
+
}) => void;
|
|
1171
|
+
/** When true, Import is not shown inside Others tab (e.g. when host provides Import in top bar). */
|
|
1172
|
+
hideImportInOthers?: boolean;
|
|
1173
|
+
/** When true, Layout (Sidebar Variant / Collapsible / Position) is not shown in Others tab. */
|
|
1174
|
+
hideLayoutSection?: boolean;
|
|
1175
|
+
}
|
|
1176
|
+
declare function ThemeCustomizer({ open, onOpenChange, inline, hideHeader, section: sectionProp, presetInHeader, selectedTheme: selectedThemeProp, setSelectedTheme: setSelectedThemeProp, sidebarConfig, onSidebarConfigChange, hideImportInOthers, hideLayoutSection, }: ThemeCustomizerProps): React__default.JSX.Element;
|
|
1177
|
+
|
|
1178
|
+
type ThemeTabVariant = 'full' | 'colors-only' | 'others-only';
|
|
1179
|
+
interface ThemeTabProps {
|
|
1180
|
+
selectedTheme: string;
|
|
1181
|
+
setSelectedTheme: (theme: string) => void;
|
|
1182
|
+
selectedRadius: string;
|
|
1183
|
+
setSelectedRadius: (radius: string) => void;
|
|
1184
|
+
setImportedTheme: (theme: ImportedTheme | null) => void;
|
|
1185
|
+
onImportClick: () => void;
|
|
1186
|
+
/** When set, render only colors section (Mindtris UI) or only others (Radius, Mode, Import). */
|
|
1187
|
+
variant?: ThemeTabVariant;
|
|
1188
|
+
/** When true (e.g. preset in sidebar header), don't render preset selector. */
|
|
1189
|
+
hidePreset?: boolean;
|
|
1190
|
+
}
|
|
1191
|
+
declare function ThemeTab({ selectedTheme, setSelectedTheme, selectedRadius, setSelectedRadius, setImportedTheme, onImportClick, variant, hidePreset, }: ThemeTabProps): React__default.JSX.Element;
|
|
1192
|
+
|
|
1193
|
+
interface LayoutTabProps {
|
|
1194
|
+
sidebarConfig?: {
|
|
1195
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
1196
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
1197
|
+
side?: "left" | "right";
|
|
1198
|
+
};
|
|
1199
|
+
onSidebarConfigChange?: (config: {
|
|
1200
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
1201
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
1202
|
+
side?: "left" | "right";
|
|
1203
|
+
}) => void;
|
|
1204
|
+
}
|
|
1205
|
+
declare function LayoutTab({ sidebarConfig, onSidebarConfigChange }: LayoutTabProps): React__default.JSX.Element;
|
|
1206
|
+
|
|
1207
|
+
interface ImportModalProps {
|
|
1208
|
+
open: boolean;
|
|
1209
|
+
onOpenChange: (open: boolean) => void;
|
|
1210
|
+
/** Import CSS theme (:root + .dark). */
|
|
1211
|
+
onImport?: (theme: ImportedTheme, name: string) => void;
|
|
1212
|
+
/** Import standardized Custom Theme artifact JSON (theme.json). */
|
|
1213
|
+
onImportArtifact?: (theme: CustomThemeArtifactV1) => void;
|
|
1214
|
+
}
|
|
1215
|
+
declare function ImportModal({ open, onOpenChange, onImport, onImportArtifact }: ImportModalProps): React__default.JSX.Element;
|
|
1216
|
+
|
|
1217
|
+
interface ColorsPanelProps {
|
|
1218
|
+
/** When these change (e.g. preset or mode), re-read values from document */
|
|
1219
|
+
selectedTheme?: string;
|
|
1220
|
+
isDarkMode?: boolean;
|
|
1221
|
+
}
|
|
1222
|
+
declare function ColorsPanel({ selectedTheme, isDarkMode }?: ColorsPanelProps): React__default.JSX.Element;
|
|
1223
|
+
|
|
1224
|
+
/** Single color row: swatch + label + input (like tweakcn / form input with prefix) */
|
|
1225
|
+
interface ColorInputProps {
|
|
1226
|
+
label: string;
|
|
1227
|
+
cssVar: string;
|
|
1228
|
+
value: string;
|
|
1229
|
+
onChange: (cssVar: string, value: string) => void;
|
|
1230
|
+
className?: string;
|
|
1231
|
+
}
|
|
1232
|
+
declare function ColorInput({ label, cssVar, value, onChange, className }: ColorInputProps): React__default.JSX.Element;
|
|
1233
|
+
|
|
1234
|
+
declare function TypographyPanel(): React__default.JSX.Element;
|
|
1235
|
+
|
|
1236
|
+
/** Other tab: matches tweakcn order — Mode, HSL, Radius, Spacing, Shadow (no separators). Optional Layout section (wire sidebarConfig + onSidebarConfigChange to apply; hide with hideLayoutSection). */
|
|
1237
|
+
interface OtherPanelProps {
|
|
1238
|
+
/** Controlled radius value (optional). If omitted, panel reads `--radius` from the active theme. */
|
|
1239
|
+
selectedRadius?: string;
|
|
1240
|
+
/** Controlled radius setter (optional). */
|
|
1241
|
+
setSelectedRadius?: (value: string) => void;
|
|
1242
|
+
onImportClick?: () => void;
|
|
1243
|
+
/** When true, hide Mode (Light/Dark) controls. Useful when host app owns mode toggle. */
|
|
1244
|
+
hideModeSection?: boolean;
|
|
1245
|
+
/** When true, Layout (Sidebar Variant / Collapsible / Position) is not shown. */
|
|
1246
|
+
hideLayoutSection?: boolean;
|
|
1247
|
+
sidebarConfig?: {
|
|
1248
|
+
variant?: 'sidebar' | 'floating' | 'inset';
|
|
1249
|
+
collapsible?: 'offcanvas' | 'icon' | 'none';
|
|
1250
|
+
side?: 'left' | 'right';
|
|
1251
|
+
};
|
|
1252
|
+
onSidebarConfigChange?: (config: {
|
|
1253
|
+
variant?: 'sidebar' | 'floating' | 'inset';
|
|
1254
|
+
collapsible?: 'offcanvas' | 'icon' | 'none';
|
|
1255
|
+
side?: 'left' | 'right';
|
|
1256
|
+
}) => void;
|
|
1257
|
+
}
|
|
1258
|
+
declare function OtherPanel({ selectedRadius, setSelectedRadius, onImportClick, hideModeSection, hideLayoutSection, sidebarConfig, onSidebarConfigChange, }: OtherPanelProps): React__default.JSX.Element;
|
|
1259
|
+
|
|
1260
|
+
/**
|
|
1261
|
+
* Button: Displays a button or a component that looks like a button.
|
|
1262
|
+
*
|
|
1263
|
+
* Design-system contract
|
|
1264
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1265
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1266
|
+
* - One source of truth: variants/sizes via `createVariants(...)`.
|
|
1267
|
+
* - A11y: icon-only requires `aria-label`; `isLoading` => `aria-busy` + disabled.
|
|
1268
|
+
* - Disabled: native `disabled` for `<button>`; emulate for `render` targets (`aria-disabled`, `tabIndex=-1`, prevent click).
|
|
1269
|
+
* - API: `size` supports text (`default|xs|sm|md|lg|xl`) + icon (`icon|icon-...`) sizes; `render` enables Link-as-button.
|
|
1270
|
+
* - Motion: spinner respects `prefers-reduced-motion`.
|
|
1271
|
+
*
|
|
1272
|
+
* @author: @mindtris-team
|
|
1273
|
+
* @version: 1.0.0
|
|
1274
|
+
* @since: 2026-01-31
|
|
1275
|
+
*
|
|
1276
|
+
* @example
|
|
1277
|
+
* <Button variant="primary" size="md" isLoading={true} fullWidth={true} leadingIcon={<Icon name="plus" />} trailingIcon={<Icon name="minus" />} iconOnly={true} tooltip="Add item" render={<Link href="/items">Items</Link>} />
|
|
1278
|
+
*/
|
|
1279
|
+
|
|
1280
|
+
type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'outline' | 'outline-strong' | 'ghost' | 'link' | 'menu' | 'icon' | 'icon-ghost' | 'danger' | 'danger-outline' | 'destructive' | 'destructive-outline';
|
|
1281
|
+
type ButtonTextSize = 'default' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
1282
|
+
type ButtonIconSize = 'icon' | 'icon-xs' | 'icon-sm' | 'icon-md' | 'icon-lg' | 'icon-xl';
|
|
1283
|
+
type ButtonSize = ButtonTextSize | ButtonIconSize;
|
|
1284
|
+
type ButtonWeight = 'default' | 'strong';
|
|
1285
|
+
type ButtonAlign = 'left' | 'center' | 'right' | 'between';
|
|
1286
|
+
type ButtonMotion = 'none' | 'lift';
|
|
1287
|
+
type ButtonShape = 'rounded' | 'pill';
|
|
1288
|
+
interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
1289
|
+
variant?: ButtonVariant;
|
|
1290
|
+
size?: ButtonSize;
|
|
1291
|
+
weight?: ButtonWeight;
|
|
1292
|
+
/** Controls horizontal alignment of button content (best paired with `fullWidth`). */
|
|
1293
|
+
align?: ButtonAlign;
|
|
1294
|
+
/** Controls the button corner shape. */
|
|
1295
|
+
shape?: ButtonShape;
|
|
1296
|
+
/** Subtle interaction motion (respects prefers-reduced-motion). */
|
|
1297
|
+
motion?: ButtonMotion;
|
|
1298
|
+
isLoading?: boolean;
|
|
1299
|
+
fullWidth?: boolean;
|
|
1300
|
+
/** Adds a chevron and animates it on hover (like “Learn more →”). */
|
|
1301
|
+
arrowIcon?: boolean;
|
|
1302
|
+
leadingIcon?: React__default.ReactNode;
|
|
1303
|
+
trailingIcon?: React__default.ReactNode;
|
|
1304
|
+
/** Forces icon-only layout (square button). Also implied by `variant="icon"`. */
|
|
1305
|
+
iconOnly?: boolean;
|
|
1306
|
+
tooltip?: string;
|
|
1307
|
+
/**
|
|
1308
|
+
* Render as another element (e.g. `next/link`), while preserving button styles.
|
|
1309
|
+
*
|
|
1310
|
+
* Similar intent to coss's `render` prop.
|
|
1311
|
+
*/
|
|
1312
|
+
render?: React__default.ReactElement<any>;
|
|
1313
|
+
}
|
|
1314
|
+
declare function Button({ className, variant, size, weight, align, shape, motion, isLoading, fullWidth, arrowIcon, leadingIcon, trailingIcon, iconOnly, disabled, tooltip, render, children, title: titleProp, ...props }: ButtonProps): React__default.JSX.Element;
|
|
1315
|
+
|
|
1316
|
+
/**
|
|
1317
|
+
* ButtonGroup: Visually groups buttons into a segmented control.
|
|
1318
|
+
*
|
|
1319
|
+
* Design-system contract
|
|
1320
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1321
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1322
|
+
* - Composition: uses a Group + Item pattern (like shadcn ToggleGroup) to keep Button API intact.
|
|
1323
|
+
* - A11y: relies on underlying Button semantics. Use `aria-label` for icon-only items.
|
|
1324
|
+
*
|
|
1325
|
+
* Reference: shadcn dashboard template `toggle-group.tsx` pattern (context + first/last rounding).
|
|
1326
|
+
*
|
|
1327
|
+
* @author: @mindtris-team
|
|
1328
|
+
* @version: 0.1.0
|
|
1329
|
+
* @since: 2026-02-01
|
|
1330
|
+
*/
|
|
1331
|
+
|
|
1332
|
+
type ButtonGroupOrientation = 'horizontal' | 'vertical';
|
|
1333
|
+
interface ButtonGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1334
|
+
/** Default variant applied to `ButtonGroupItem` children. */
|
|
1335
|
+
variant?: ButtonVariant;
|
|
1336
|
+
/** Default size applied to `ButtonGroupItem` children. */
|
|
1337
|
+
size?: ButtonSize;
|
|
1338
|
+
orientation?: ButtonGroupOrientation;
|
|
1339
|
+
/** Adds separators between items (uses `divide-*`). */
|
|
1340
|
+
withSeparator?: boolean;
|
|
1341
|
+
}
|
|
1342
|
+
declare function ButtonGroup({ variant, size, orientation, withSeparator, className, children, ...props }: ButtonGroupProps): React$1.JSX.Element;
|
|
1343
|
+
interface ButtonGroupItemProps extends Omit<ButtonProps, 'shape'> {
|
|
1344
|
+
variant?: ButtonVariant;
|
|
1345
|
+
size?: ButtonSize;
|
|
1346
|
+
}
|
|
1347
|
+
declare function ButtonGroupItem({ className, variant, size, ...props }: ButtonGroupItemProps): React$1.JSX.Element;
|
|
1348
|
+
interface ButtonGroupSeparatorProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1349
|
+
orientation?: ButtonGroupOrientation;
|
|
1350
|
+
}
|
|
1351
|
+
/**
|
|
1352
|
+
* ButtonGroupSeparator
|
|
1353
|
+
* Use when you want explicit separators (e.g. split button).
|
|
1354
|
+
* If `ButtonGroup` uses `withSeparator`, you usually don't need this.
|
|
1355
|
+
*/
|
|
1356
|
+
declare function ButtonGroupSeparator({ orientation, className, ...props }: ButtonGroupSeparatorProps): React$1.JSX.Element;
|
|
1357
|
+
|
|
1358
|
+
/**
|
|
1359
|
+
* ToggleGroup: Group of toggleable buttons (single or multiple selection).
|
|
1360
|
+
*
|
|
1361
|
+
* Design-system contract
|
|
1362
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1363
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1364
|
+
* - Controlled + uncontrolled: supports `value`/`onValueChange` or `defaultValue`.
|
|
1365
|
+
* - A11y:
|
|
1366
|
+
* - `type="single"` uses `role="radiogroup"` + items `role="radio"` / `aria-checked`
|
|
1367
|
+
* - `type="multiple"` uses `role="group"` + items `aria-pressed`
|
|
1368
|
+
*
|
|
1369
|
+
* Reference: shadcn `toggle-group.tsx` pattern (context + first/last rounding).
|
|
1370
|
+
*
|
|
1371
|
+
* @author: @mindtris-team
|
|
1372
|
+
* @version: 0.1.0
|
|
1373
|
+
* @since: 2026-02-01
|
|
1374
|
+
*/
|
|
1375
|
+
|
|
1376
|
+
type ToggleGroupType = 'single' | 'multiple';
|
|
1377
|
+
type ToggleGroupOrientation = 'horizontal' | 'vertical';
|
|
1378
|
+
type ToggleGroupBaseProps = Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onChange'> & {
|
|
1379
|
+
type?: ToggleGroupType;
|
|
1380
|
+
orientation?: ToggleGroupOrientation;
|
|
1381
|
+
/** Visual variant used for non-selected items. */
|
|
1382
|
+
variant?: ButtonVariant;
|
|
1383
|
+
/** Visual variant used for selected items. */
|
|
1384
|
+
activeVariant?: ButtonVariant;
|
|
1385
|
+
/** Size applied to items. */
|
|
1386
|
+
size?: ButtonSize;
|
|
1387
|
+
/** Adds separators between items (uses `divide-*`). */
|
|
1388
|
+
withSeparator?: boolean;
|
|
1389
|
+
/** Allow deselecting the active item in single mode. */
|
|
1390
|
+
allowDeselect?: boolean;
|
|
1391
|
+
};
|
|
1392
|
+
type ToggleGroupSingleProps = ToggleGroupBaseProps & {
|
|
1393
|
+
type?: 'single';
|
|
1394
|
+
value?: string | null;
|
|
1395
|
+
defaultValue?: string | null;
|
|
1396
|
+
onValueChange?: (value: string | null) => void;
|
|
1397
|
+
};
|
|
1398
|
+
type ToggleGroupMultipleProps = ToggleGroupBaseProps & {
|
|
1399
|
+
type: 'multiple';
|
|
1400
|
+
value?: readonly string[];
|
|
1401
|
+
defaultValue?: readonly string[];
|
|
1402
|
+
onValueChange?: (value: readonly string[]) => void;
|
|
1403
|
+
};
|
|
1404
|
+
type ToggleGroupProps = ToggleGroupSingleProps | ToggleGroupMultipleProps;
|
|
1405
|
+
declare function ToggleGroup(props: ToggleGroupProps): React$1.JSX.Element;
|
|
1406
|
+
interface ToggleGroupItemProps extends Omit<React$1.ComponentProps<typeof Button>, 'variant' | 'size' | 'onClick'> {
|
|
1407
|
+
value: string;
|
|
1408
|
+
variant?: ButtonVariant;
|
|
1409
|
+
activeVariant?: ButtonVariant;
|
|
1410
|
+
size?: ButtonSize;
|
|
1411
|
+
disabled?: boolean;
|
|
1412
|
+
}
|
|
1413
|
+
declare function ToggleGroupItem({ value, className, variant, activeVariant, size, disabled, ...props }: ToggleGroupItemProps): React$1.JSX.Element;
|
|
1414
|
+
|
|
1415
|
+
/**
|
|
1416
|
+
* Accordion: Shows/hides content under a trigger.
|
|
1417
|
+
*
|
|
1418
|
+
* Design-system contract
|
|
1419
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1420
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1421
|
+
* - A11y: uses a real `<button>` trigger with `aria-expanded`, `aria-controls`, and a region panel.
|
|
1422
|
+
* - Controlled + uncontrolled: supports `open` + `onOpenChange` or `defaultOpen`.
|
|
1423
|
+
* - Motion: uses token durations/easings; content is visually collapsed via CSS grid.
|
|
1424
|
+
*
|
|
1425
|
+
* @author: @mindtris-team
|
|
1426
|
+
* @version: 1.0.0
|
|
1427
|
+
* @since: 2026-01-31
|
|
1428
|
+
*
|
|
1429
|
+
* @example
|
|
1430
|
+
* <Accordion title="Details" defaultOpen={true}>
|
|
1431
|
+
* Content goes here.
|
|
1432
|
+
* </Accordion>
|
|
1433
|
+
*/
|
|
1434
|
+
|
|
1435
|
+
interface AccordionProps {
|
|
1436
|
+
title: React$1.ReactNode;
|
|
1437
|
+
children: React$1.ReactNode;
|
|
1438
|
+
defaultOpen?: boolean;
|
|
1439
|
+
open?: boolean;
|
|
1440
|
+
onOpenChange?: (open: boolean) => void;
|
|
1441
|
+
disabled?: boolean;
|
|
1442
|
+
className?: string;
|
|
1443
|
+
triggerClassName?: string;
|
|
1444
|
+
contentClassName?: string;
|
|
1445
|
+
}
|
|
1446
|
+
declare function Accordion({ title, children, defaultOpen, open, onOpenChange, disabled, className, triggerClassName, contentClassName, }: AccordionProps): React$1.JSX.Element;
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* AccordionGroup: Renders a stacked set of accordion items (single or multiple open).
|
|
1450
|
+
*
|
|
1451
|
+
* Design-system contract
|
|
1452
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1453
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1454
|
+
* - A11y: each item uses a real `<button>` trigger with `aria-expanded`, `aria-controls`, and a region panel.
|
|
1455
|
+
* - Controlled + uncontrolled:
|
|
1456
|
+
* - `type="single"`: `value?: string|null` / `defaultValue?: string|null`
|
|
1457
|
+
* - `type="multiple"`: `value?: string[]` / `defaultValue?: string[]`
|
|
1458
|
+
*
|
|
1459
|
+
* Reference (Mindtris UI) variants we mirror in Mindtris docs:
|
|
1460
|
+
* - Basic (single item)
|
|
1461
|
+
* - Table row accordion
|
|
1462
|
+
* - Rich table row accordion
|
|
1463
|
+
*
|
|
1464
|
+
* Planned Mindtris variants (placeholders; refine later per `button.tsx` + `simplifi-frontend/CONTRIBUTING.md`):
|
|
1465
|
+
* - Group: `type="single"` (only one open)
|
|
1466
|
+
* - Group: `type="multiple"` (multiple open)
|
|
1467
|
+
* - Group: `collapsible={false}` (single mode cannot close last open)
|
|
1468
|
+
* - Group: `disabled` at group/item level
|
|
1469
|
+
*
|
|
1470
|
+
* @author: @mindtris-team
|
|
1471
|
+
* @version: 0.1.0
|
|
1472
|
+
* @since: 2026-02-01
|
|
1473
|
+
*
|
|
1474
|
+
* @example
|
|
1475
|
+
* <AccordionGroup
|
|
1476
|
+
* type="single"
|
|
1477
|
+
* defaultValue="first"
|
|
1478
|
+
* items={[
|
|
1479
|
+
* { id: 'first', title: 'First item', content: 'Content for the first item' },
|
|
1480
|
+
* { id: 'second', title: 'Second item', content: 'Content for the second item' },
|
|
1481
|
+
* ]}
|
|
1482
|
+
* />
|
|
1483
|
+
*/
|
|
1484
|
+
|
|
1485
|
+
interface AccordionGroupItem {
|
|
1486
|
+
id: string;
|
|
1487
|
+
title: React$1.ReactNode;
|
|
1488
|
+
content: React$1.ReactNode;
|
|
1489
|
+
disabled?: boolean;
|
|
1490
|
+
}
|
|
1491
|
+
type SharedAccordionGroupProps = {
|
|
1492
|
+
items: AccordionGroupItem[];
|
|
1493
|
+
disabled?: boolean;
|
|
1494
|
+
className?: string;
|
|
1495
|
+
itemClassName?: string;
|
|
1496
|
+
triggerClassName?: string;
|
|
1497
|
+
contentClassName?: string;
|
|
1498
|
+
};
|
|
1499
|
+
type AccordionGroupSingleProps = SharedAccordionGroupProps & {
|
|
1500
|
+
type?: 'single';
|
|
1501
|
+
/** When false, the currently-open item cannot be collapsed by clicking it again. */
|
|
1502
|
+
collapsible?: boolean;
|
|
1503
|
+
value?: string | null;
|
|
1504
|
+
defaultValue?: string | null;
|
|
1505
|
+
onValueChange?: (value: string | null) => void;
|
|
1506
|
+
};
|
|
1507
|
+
type AccordionGroupMultipleProps = SharedAccordionGroupProps & {
|
|
1508
|
+
type: 'multiple';
|
|
1509
|
+
value?: string[];
|
|
1510
|
+
defaultValue?: string[];
|
|
1511
|
+
onValueChange?: (value: string[]) => void;
|
|
1512
|
+
};
|
|
1513
|
+
type AccordionGroupProps = AccordionGroupSingleProps | AccordionGroupMultipleProps;
|
|
1514
|
+
declare function AccordionGroup(props: AccordionGroupProps): React$1.JSX.Element;
|
|
1515
|
+
|
|
1516
|
+
/**
|
|
1517
|
+
* Avatar: Composable image/fallback avatar (Radix-based).
|
|
1518
|
+
*
|
|
1519
|
+
* Design-system contract
|
|
1520
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1521
|
+
* - Tokens-only: semantic token classes only; no hardcoded colors.
|
|
1522
|
+
* Any component accepts className to apply any semantic token (e.g. bg-primary, bg-secondary, bg-chart-1).
|
|
1523
|
+
* - Composition: Avatar (root) + AvatarImage + AvatarFallback; optional AvatarBadge.
|
|
1524
|
+
* AvatarGroup and AvatarGroupCount for stacked avatars and +N count.
|
|
1525
|
+
* - Minimal state: Radix handles image load/error; fallback shows when image fails or is absent.
|
|
1526
|
+
*
|
|
1527
|
+
* @see https://ui.shadcn.com/docs/components/radix/avatar
|
|
1528
|
+
*
|
|
1529
|
+
* @author: @mindtris-team
|
|
1530
|
+
* @version: 0.2.0
|
|
1531
|
+
* @since: 2026-02-01
|
|
1532
|
+
*
|
|
1533
|
+
* @example
|
|
1534
|
+
* <Avatar size="md">
|
|
1535
|
+
* <AvatarImage src="/photo.jpg" alt="Profile" />
|
|
1536
|
+
* <AvatarFallback>AB</AvatarFallback>
|
|
1537
|
+
* </Avatar>
|
|
1538
|
+
*
|
|
1539
|
+
* @example
|
|
1540
|
+
* <Avatar size="md">
|
|
1541
|
+
* <AvatarImage src="/photo.jpg" alt="Profile" />
|
|
1542
|
+
* <AvatarFallback>AB</AvatarFallback>
|
|
1543
|
+
* <AvatarBadge variant="primary" />
|
|
1544
|
+
* </Avatar>
|
|
1545
|
+
*/
|
|
1546
|
+
|
|
1547
|
+
type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
1548
|
+
interface AvatarProps extends React$1.ComponentProps<typeof AvatarPrimitive.Root> {
|
|
1549
|
+
size?: AvatarSize;
|
|
1550
|
+
}
|
|
1551
|
+
declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1552
|
+
interface AvatarImageProps extends React$1.ComponentProps<typeof AvatarPrimitive.Image> {
|
|
1553
|
+
}
|
|
1554
|
+
declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarImageProps, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
|
|
1555
|
+
type AvatarFallbackVariant = "default" | "primary" | "secondary" | "tertiary" | "chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5";
|
|
1556
|
+
interface AvatarFallbackProps extends React$1.ComponentProps<typeof AvatarPrimitive.Fallback> {
|
|
1557
|
+
size?: AvatarSize;
|
|
1558
|
+
variant?: AvatarFallbackVariant;
|
|
1559
|
+
}
|
|
1560
|
+
declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarFallbackProps, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1561
|
+
type AvatarBadgeVariant = "primary" | "secondary" | "destructive" | "muted" | "accent";
|
|
1562
|
+
interface AvatarBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
1563
|
+
variant?: AvatarBadgeVariant;
|
|
1564
|
+
size?: AvatarSize;
|
|
1565
|
+
}
|
|
1566
|
+
declare const AvatarBadge: React$1.ForwardRefExoticComponent<AvatarBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1567
|
+
type AvatarGroupOverlap = "2xs" | "xs" | "sm" | "md" | "lg";
|
|
1568
|
+
interface AvatarGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1569
|
+
overlap?: AvatarGroupOverlap;
|
|
1570
|
+
withRing?: boolean;
|
|
1571
|
+
itemClassName?: string;
|
|
1572
|
+
}
|
|
1573
|
+
declare function AvatarGroup({ overlap, withRing, className, itemClassName, children, ...props }: AvatarGroupProps): React$1.JSX.Element;
|
|
1574
|
+
interface AvatarGroupCountProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
1575
|
+
size?: AvatarSize;
|
|
1576
|
+
}
|
|
1577
|
+
declare function AvatarGroupCount({ size, className, children, ...props }: AvatarGroupCountProps): React$1.JSX.Element;
|
|
1578
|
+
|
|
1579
|
+
/**
|
|
1580
|
+
* Alert: Inline message block for status and feedback.
|
|
1581
|
+
*
|
|
1582
|
+
* Design-system contract
|
|
1583
|
+
* - Scope: UI-only primitive. No domain copy, no API calls.
|
|
1584
|
+
* - Tokens-only: semantic token classes only.
|
|
1585
|
+
* - Composition: title/description slots, optional icon.
|
|
1586
|
+
*
|
|
1587
|
+
* Mindtris UI reference variants we mirror:
|
|
1588
|
+
* - Banner-like inline alerts (apps can compose dismiss + actions)
|
|
1589
|
+
*
|
|
1590
|
+
* @author: @mindtris-team
|
|
1591
|
+
* @version: 0.1.0
|
|
1592
|
+
* @since: 2026-02-01
|
|
1593
|
+
*/
|
|
1594
|
+
|
|
1595
|
+
type AlertVariant = 'default' | 'accent' | 'destructive';
|
|
1596
|
+
interface AlertProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
1597
|
+
variant?: AlertVariant;
|
|
1598
|
+
icon?: React$1.ReactNode;
|
|
1599
|
+
title?: React$1.ReactNode;
|
|
1600
|
+
description?: React$1.ReactNode;
|
|
1601
|
+
/** Optional action slot (e.g. button). */
|
|
1602
|
+
action?: React$1.ReactNode;
|
|
1603
|
+
}
|
|
1604
|
+
declare function Alert({ variant, icon, title, description, action, className, ...props }: AlertProps): React$1.JSX.Element;
|
|
1605
|
+
|
|
1606
|
+
/**
|
|
1607
|
+
* Aspect Ratio: Wrapper for fixed aspect ratios.
|
|
1608
|
+
*
|
|
1609
|
+
* Design-system contract:
|
|
1610
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
1611
|
+
* - Tokens-only: semantic token classes only.
|
|
1612
|
+
* - Composition: single wrapper; children fill the area.
|
|
1613
|
+
*
|
|
1614
|
+
* @author: @mindtris-team
|
|
1615
|
+
* @version: 0.1.0
|
|
1616
|
+
* @since: 2026-02-05
|
|
1617
|
+
*/
|
|
1618
|
+
|
|
1619
|
+
type AspectRatioPreset = "square" | "video" | "video-wide" | "portrait" | "auto";
|
|
1620
|
+
interface AspectRatioProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1621
|
+
/** Preset ratio or custom value (e.g. "16/9", "4/3"). */
|
|
1622
|
+
ratio?: AspectRatioPreset | string;
|
|
1623
|
+
}
|
|
1624
|
+
declare function AspectRatio({ ratio, className, children, style, ...props }: AspectRatioProps): React$1.JSX.Element;
|
|
1625
|
+
|
|
1626
|
+
/**
|
|
1627
|
+
* Badge: Small status/label pill.
|
|
1628
|
+
*
|
|
1629
|
+
* Design-system contract
|
|
1630
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1631
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1632
|
+
* - Composition: optional `leadingIcon` slot; content via children.
|
|
1633
|
+
*
|
|
1634
|
+
* mindtris-ui reference variants we mirror:
|
|
1635
|
+
* - Small + large pills
|
|
1636
|
+
* - Pills with an icon
|
|
1637
|
+
* - Compact “chart delta” pills
|
|
1638
|
+
*
|
|
1639
|
+
* @author: @mindtris-team
|
|
1640
|
+
* @version: 0.1.0
|
|
1641
|
+
* @since: 2026-02-01
|
|
1642
|
+
*
|
|
1643
|
+
* @example
|
|
1644
|
+
* <Badge variant="accent">Working on</Badge>
|
|
1645
|
+
*
|
|
1646
|
+
* @example
|
|
1647
|
+
* <Badge size="sm" variant="inverse" leadingIcon={<Icon name="bolt" />}>Special Offer</Badge>
|
|
1648
|
+
*/
|
|
1649
|
+
|
|
1650
|
+
type BadgeVariant = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'muted' | 'outline' | 'ghost' | 'destructive' | 'inverse';
|
|
1651
|
+
type BadgeSize = 'xs' | 'sm' | 'md';
|
|
1652
|
+
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
1653
|
+
variant?: BadgeVariant;
|
|
1654
|
+
size?: BadgeSize;
|
|
1655
|
+
leadingIcon?: React$1.ReactNode;
|
|
1656
|
+
trailingIcon?: React$1.ReactNode;
|
|
1657
|
+
}
|
|
1658
|
+
declare function Badge({ variant, size, leadingIcon, trailingIcon, className, children, ...props }: BadgeProps): React$1.JSX.Element;
|
|
1659
|
+
|
|
1660
|
+
/**
|
|
1661
|
+
* Breadcrumb: Hierarchical navigation trail.
|
|
1662
|
+
*
|
|
1663
|
+
* Design-system contract
|
|
1664
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1665
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1666
|
+
* - A11y: renders `<nav aria-label="Breadcrumb">`.
|
|
1667
|
+
*
|
|
1668
|
+
* Mindtris UI reference variants we mirror:
|
|
1669
|
+
* - Separators: slash, dot, chevron
|
|
1670
|
+
*
|
|
1671
|
+
* @author: @mindtris-team
|
|
1672
|
+
* @version: 0.1.0
|
|
1673
|
+
* @since: 2026-02-01
|
|
1674
|
+
*/
|
|
1675
|
+
|
|
1676
|
+
type BreadcrumbSeparator = 'slash' | 'dot' | 'chevron' | React$1.ReactNode;
|
|
1677
|
+
interface BreadcrumbItem {
|
|
1678
|
+
label: React$1.ReactNode;
|
|
1679
|
+
href?: string;
|
|
1680
|
+
onClick?: (e: React$1.MouseEvent<HTMLAnchorElement>) => void;
|
|
1681
|
+
current?: boolean;
|
|
1682
|
+
}
|
|
1683
|
+
interface BreadcrumbProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
1684
|
+
items: BreadcrumbItem[];
|
|
1685
|
+
separator?: BreadcrumbSeparator;
|
|
1686
|
+
}
|
|
1687
|
+
declare function Breadcrumb({ items, separator, className, ...props }: BreadcrumbProps): React$1.JSX.Element;
|
|
1688
|
+
|
|
1689
|
+
/**
|
|
1690
|
+
* Pagination: Page navigation controls.
|
|
1691
|
+
*
|
|
1692
|
+
* Design-system contract
|
|
1693
|
+
* - Scope: UI-only primitive. No routing, no API calls, no domain logic.
|
|
1694
|
+
* - Tokens-only: semantic token classes only.
|
|
1695
|
+
* - A11y: uses nav/aria-label and current page semantics.
|
|
1696
|
+
*
|
|
1697
|
+
* Mindtris UI reference variants we mirror:
|
|
1698
|
+
* - Numeric pager with ellipsis
|
|
1699
|
+
* - Classic prev/next with a results summary (apps can render the summary)
|
|
1700
|
+
*
|
|
1701
|
+
* @author: @mindtris-team
|
|
1702
|
+
* @version: 0.1.0
|
|
1703
|
+
* @since: 2026-02-01
|
|
1704
|
+
*/
|
|
1705
|
+
|
|
1706
|
+
type PaginationVariant = 'numeric' | 'classic';
|
|
1707
|
+
interface PaginationProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
1708
|
+
page: number;
|
|
1709
|
+
totalPages: number;
|
|
1710
|
+
onPageChange: (page: number) => void;
|
|
1711
|
+
variant?: PaginationVariant;
|
|
1712
|
+
/** Max numeric buttons (including first/last). Default 7. */
|
|
1713
|
+
maxButtons?: number;
|
|
1714
|
+
/** Optional results summary slot (for classic layout). */
|
|
1715
|
+
summary?: React$1.ReactNode;
|
|
1716
|
+
}
|
|
1717
|
+
declare function Pagination({ page, totalPages, onPageChange, variant, maxButtons, summary, className, ...props }: PaginationProps): React$1.JSX.Element;
|
|
1718
|
+
|
|
1719
|
+
interface CardProps {
|
|
1720
|
+
children: React$1.ReactNode;
|
|
1721
|
+
className?: string;
|
|
1722
|
+
/** Size variant: default or compact spacing. */
|
|
1723
|
+
size?: 'default' | 'sm';
|
|
1724
|
+
/** Shadow: app opts in. Use "none" for flat, or token-driven shadow. */
|
|
1725
|
+
shadow?: 'none' | 'sm' | 'md' | 'lg';
|
|
1726
|
+
border?: boolean;
|
|
1727
|
+
rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
1728
|
+
background?: 'white' | 'gray' | 'transparent';
|
|
1729
|
+
hover?: boolean;
|
|
1730
|
+
}
|
|
1731
|
+
declare function Card({ children, className, size, shadow, border, rounded, background, hover }: CardProps): React$1.JSX.Element;
|
|
1732
|
+
declare function DashboardCard({ children, className, ...props }: Omit<CardProps, 'shadow' | 'border' | 'rounded'>): React$1.JSX.Element;
|
|
1733
|
+
declare function StatCard({ children, className, ...props }: Omit<CardProps, 'shadow' | 'border' | 'rounded'>): React$1.JSX.Element;
|
|
1734
|
+
declare function SimpleCard({ children, className, ...props }: Omit<CardProps, 'shadow' | 'border' | 'rounded'>): React$1.JSX.Element;
|
|
1735
|
+
interface CardHeaderProps {
|
|
1736
|
+
children: React$1.ReactNode;
|
|
1737
|
+
className?: string;
|
|
1738
|
+
}
|
|
1739
|
+
/** Header with optional CardTitle, CardDescription, CardAction. CardAction appears top-right. */
|
|
1740
|
+
declare function CardHeader({ children, className }: CardHeaderProps): React$1.JSX.Element;
|
|
1741
|
+
declare function CardTitle({ children, className }: {
|
|
1742
|
+
children: React$1.ReactNode;
|
|
1743
|
+
className?: string;
|
|
1744
|
+
}): React$1.JSX.Element;
|
|
1745
|
+
declare function CardDescription({ children, className }: {
|
|
1746
|
+
children: React$1.ReactNode;
|
|
1747
|
+
className?: string;
|
|
1748
|
+
}): React$1.JSX.Element;
|
|
1749
|
+
/** Places content in the top-right of the header (e.g. button, badge). */
|
|
1750
|
+
declare function CardAction({ children, className }: {
|
|
1751
|
+
children: React$1.ReactNode;
|
|
1752
|
+
className?: string;
|
|
1753
|
+
}): React$1.JSX.Element;
|
|
1754
|
+
/** Image or media before the header. Full-width, rounded top. Place as first child of Card. */
|
|
1755
|
+
declare function CardImage({ children, className }: {
|
|
1756
|
+
children: React$1.ReactNode;
|
|
1757
|
+
className?: string;
|
|
1758
|
+
}): React$1.JSX.Element;
|
|
1759
|
+
declare function CardContent({ children, className }: {
|
|
1760
|
+
children: React$1.ReactNode;
|
|
1761
|
+
className?: string;
|
|
1762
|
+
}): React$1.JSX.Element;
|
|
1763
|
+
declare function CardFooter({ children, className }: {
|
|
1764
|
+
children: React$1.ReactNode;
|
|
1765
|
+
className?: string;
|
|
1766
|
+
}): React$1.JSX.Element;
|
|
1767
|
+
|
|
1768
|
+
type InputSize = 'sm' | 'md' | 'lg';
|
|
1769
|
+
interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
1770
|
+
size?: InputSize;
|
|
1771
|
+
}
|
|
1772
|
+
declare const Input: React__default.ForwardRefExoticComponent<InputProps & React__default.RefAttributes<HTMLInputElement>>;
|
|
1773
|
+
/**
|
|
1774
|
+
* Radio
|
|
1775
|
+
* Token-driven radio button component
|
|
1776
|
+
*/
|
|
1777
|
+
interface RadioProps extends React__default.InputHTMLAttributes<HTMLInputElement> {
|
|
1778
|
+
}
|
|
1779
|
+
declare const Radio: React__default.ForwardRefExoticComponent<RadioProps & React__default.RefAttributes<HTMLInputElement>>;
|
|
1780
|
+
|
|
1781
|
+
/** "connected" = slots share borders (strip). "boxed" = 6 square boxes with gap. */
|
|
1782
|
+
type InputOTPSlotVariant = "connected" | "boxed";
|
|
1783
|
+
type InputOTPProps = Omit<React$1.ComponentProps<typeof OTPInput>, "render" | "containerClassName"> & {
|
|
1784
|
+
/** The visual container classes (token-driven). */
|
|
1785
|
+
containerClassName?: string;
|
|
1786
|
+
/** Slot layout: connected (strip) or boxed (6 square boxes with gap). Default connected. */
|
|
1787
|
+
slotVariant?: InputOTPSlotVariant;
|
|
1788
|
+
/** Rendered slot structure (use `InputOTPGroup` + `InputOTPSlot`). */
|
|
1789
|
+
children: React$1.ReactNode;
|
|
1790
|
+
};
|
|
1791
|
+
/**
|
|
1792
|
+
* InputOTP
|
|
1793
|
+
* Compound OTP input primitive built on top of `input-otp`.
|
|
1794
|
+
*
|
|
1795
|
+
* Design-system rules:
|
|
1796
|
+
* - Token-driven styling only
|
|
1797
|
+
* - Minimal state (delegates behavior to `input-otp`)
|
|
1798
|
+
* - No hidden side effects
|
|
1799
|
+
*/
|
|
1800
|
+
declare function InputOTP({ className, containerClassName, children, disabled, slotVariant, ...props }: InputOTPProps): React$1.JSX.Element;
|
|
1801
|
+
type InputOTPGroupProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
1802
|
+
/** Groups multiple `InputOTPSlot`s into a single segmented control. */
|
|
1803
|
+
declare function InputOTPGroup({ className, ...props }: InputOTPGroupProps): React$1.JSX.Element;
|
|
1804
|
+
type InputOTPSeparatorOrientation = "vertical" | "horizontal";
|
|
1805
|
+
type InputOTPSeparatorProps = React$1.HTMLAttributes<HTMLDivElement> & {
|
|
1806
|
+
/** Vertical = thin line between groups (default). Horizontal = dash between groups. */
|
|
1807
|
+
orientation?: InputOTPSeparatorOrientation;
|
|
1808
|
+
};
|
|
1809
|
+
/** Visual separator between OTP groups. */
|
|
1810
|
+
declare function InputOTPSeparator({ orientation, className, ...props }: InputOTPSeparatorProps): React$1.JSX.Element;
|
|
1811
|
+
type InputOTPSize = "sm" | "md" | "lg";
|
|
1812
|
+
type InputOTPSlotProps = React$1.HTMLAttributes<HTMLDivElement> & {
|
|
1813
|
+
index: number;
|
|
1814
|
+
/** Slot size; defaults to md to match Input. */
|
|
1815
|
+
size?: InputOTPSize;
|
|
1816
|
+
};
|
|
1817
|
+
declare function InputOTPSlot({ index, size, className, ...props }: InputOTPSlotProps): React$1.JSX.Element;
|
|
1818
|
+
type InputOTPSingleProps = Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> & {
|
|
1819
|
+
/** Max length (e.g. 4 or 6). */
|
|
1820
|
+
maxLength?: number;
|
|
1821
|
+
/** Restrict to digits only; otherwise alphanumeric. */
|
|
1822
|
+
digitsOnly?: boolean;
|
|
1823
|
+
/** Size; defaults to md. */
|
|
1824
|
+
size?: InputOTPSize;
|
|
1825
|
+
};
|
|
1826
|
+
/**
|
|
1827
|
+
* InputOTPSingle
|
|
1828
|
+
* Single input box for OTP/code entry (e.g. multi-factor verification).
|
|
1829
|
+
* Styled like Input; supports digits-only or alphanumeric, sizes, and controlled value.
|
|
1830
|
+
*/
|
|
1831
|
+
declare const InputOTPSingle: React$1.ForwardRefExoticComponent<Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & {
|
|
1832
|
+
/** Max length (e.g. 4 or 6). */
|
|
1833
|
+
maxLength?: number;
|
|
1834
|
+
/** Restrict to digits only; otherwise alphanumeric. */
|
|
1835
|
+
digitsOnly?: boolean;
|
|
1836
|
+
/** Size; defaults to md. */
|
|
1837
|
+
size?: InputOTPSize;
|
|
1838
|
+
} & React$1.RefAttributes<HTMLInputElement>>;
|
|
1839
|
+
|
|
1840
|
+
interface FileInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'defaultValue' | 'size'> {
|
|
1841
|
+
/** Text shown when no file is selected. */
|
|
1842
|
+
emptyLabel?: string;
|
|
1843
|
+
/** Button label (left side). */
|
|
1844
|
+
buttonLabel?: string;
|
|
1845
|
+
}
|
|
1846
|
+
/**
|
|
1847
|
+
* FileInput
|
|
1848
|
+
* Custom, token-driven file picker that renders consistently across browsers.
|
|
1849
|
+
*
|
|
1850
|
+
* - Uses a hidden native `<input type="file" />` for actual file selection.
|
|
1851
|
+
* - Renders a visible "Choose File" button + filename label inside an Input-like container.
|
|
1852
|
+
* - Tokens-only styling (no hex/palette). Button uses `bg-background` (Simplifi: #f7f5f2).
|
|
1853
|
+
*/
|
|
1854
|
+
declare function FileInput({ id, name, accept, multiple, disabled, required, onChange, className, emptyLabel, buttonLabel, ...props }: FileInputProps): React$1.JSX.Element;
|
|
1855
|
+
|
|
1856
|
+
type TextareaSize = 'sm' | 'md' | 'lg';
|
|
1857
|
+
interface TextareaProps extends Omit<React__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
|
|
1858
|
+
/**
|
|
1859
|
+
* Visual padding size. Use `className` to override if needed.
|
|
1860
|
+
* Defaults to `md` to match `Input`.
|
|
1861
|
+
*/
|
|
1862
|
+
size?: TextareaSize;
|
|
1863
|
+
}
|
|
1864
|
+
/**
|
|
1865
|
+
* Textarea
|
|
1866
|
+
* Token-driven textarea aligned to `Input` styling.
|
|
1867
|
+
*
|
|
1868
|
+
* - Reusable component first (no business logic)
|
|
1869
|
+
* - Tokens-only styling
|
|
1870
|
+
* - Minimal state (uncontrolled by default)
|
|
1871
|
+
* - No hidden side effects
|
|
1872
|
+
*/
|
|
1873
|
+
declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
|
|
1874
|
+
type RichTextEditorSize = 'sm' | 'md' | 'lg';
|
|
1875
|
+
interface RichTextEditorProps {
|
|
1876
|
+
placeholder?: string;
|
|
1877
|
+
defaultValue?: string;
|
|
1878
|
+
value?: string;
|
|
1879
|
+
onChange?: (html: string) => void;
|
|
1880
|
+
disabled?: boolean;
|
|
1881
|
+
size?: RichTextEditorSize;
|
|
1882
|
+
showAttach?: boolean;
|
|
1883
|
+
showEmoji?: boolean;
|
|
1884
|
+
/** Called when attach button is clicked. If not provided, default file input is used. */
|
|
1885
|
+
onAttachClick?: () => void;
|
|
1886
|
+
/** Called when emoji button is clicked. If not provided, default emoji popover is shown. */
|
|
1887
|
+
onEmojiClick?: () => void;
|
|
1888
|
+
/** Called when files are selected (default flow). If not provided, first image is inserted as data URL. */
|
|
1889
|
+
onAttachFiles?: (files: File[]) => void;
|
|
1890
|
+
className?: string;
|
|
1891
|
+
editorClassName?: string;
|
|
1892
|
+
}
|
|
1893
|
+
/**
|
|
1894
|
+
* RichTextEditor
|
|
1895
|
+
* Production-ready Tiptap editor: bold, italic, strike, code, link, lists, emoji (default picker),
|
|
1896
|
+
* attach (default file input; inserts image or calls onAttachFiles). All options work out of the box.
|
|
1897
|
+
*/
|
|
1898
|
+
declare function RichTextEditor({ placeholder, defaultValue, value, onChange, disabled, size, showAttach, showEmoji, onAttachClick: onAttachClickProp, onEmojiClick: onEmojiClickProp, onAttachFiles, className, editorClassName, }: RichTextEditorProps): React__default.JSX.Element;
|
|
1899
|
+
|
|
1900
|
+
type InputGroupProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
1901
|
+
type InputGroupAddonAlign = "inline-start" | "inline-end" | "block-start" | "block-end";
|
|
1902
|
+
type InputGroupAddonProps = React$1.HTMLAttributes<HTMLDivElement> & {
|
|
1903
|
+
align?: InputGroupAddonAlign;
|
|
1904
|
+
};
|
|
1905
|
+
type InputGroupInputProps = React$1.ComponentProps<typeof Input> & {
|
|
1906
|
+
/** Set data-slot for focus state handling when used inside InputGroup. */
|
|
1907
|
+
"data-slot"?: string;
|
|
1908
|
+
};
|
|
1909
|
+
type InputGroupTextareaProps = React$1.ComponentProps<typeof Textarea> & {
|
|
1910
|
+
/** Set data-slot for focus state handling when used inside InputGroup. */
|
|
1911
|
+
"data-slot"?: string;
|
|
1912
|
+
};
|
|
1913
|
+
/**
|
|
1914
|
+
* InputGroup. Wraps an input and addons in a single bordered box.
|
|
1915
|
+
*
|
|
1916
|
+
* Design intent:
|
|
1917
|
+
* - Should feel like a regular `Input` by default (same inset/padding).
|
|
1918
|
+
* - Addons live *inside* the control with predictable left/right spacing.
|
|
1919
|
+
* - Avoid absolute-positioning surprises across browsers/layouts.
|
|
1920
|
+
*
|
|
1921
|
+
* Focus order: Place InputGroupAddon *after* InputGroupInput/InputGroupTextarea in the DOM
|
|
1922
|
+
* so the focusable control receives focus before addon buttons when tabbing. Use the
|
|
1923
|
+
* `align` prop to position the addon visually (inline-start, inline-end, block-start, block-end).
|
|
1924
|
+
*/
|
|
1925
|
+
declare const InputGroup: React$1.ForwardRefExoticComponent<InputGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1926
|
+
/**
|
|
1927
|
+
* InputGroupAddon. Renders icons, text, or buttons beside the input. Align: inline-start | inline-end | block-start | block-end.
|
|
1928
|
+
*/
|
|
1929
|
+
declare const InputGroupAddon: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
|
|
1930
|
+
align?: InputGroupAddonAlign;
|
|
1931
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
1932
|
+
/**
|
|
1933
|
+
* InputGroupInput. Input styled for use inside InputGroup. Pass through to Input with data-slot for focus handling.
|
|
1934
|
+
*/
|
|
1935
|
+
declare const InputGroupInput: React$1.ForwardRefExoticComponent<Omit<InputGroupInputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
1936
|
+
declare const InputGroupTextarea: React$1.ForwardRefExoticComponent<Omit<InputGroupTextareaProps, "ref"> & React$1.RefAttributes<HTMLTextAreaElement>>;
|
|
1937
|
+
|
|
1938
|
+
type SwitchSize = "sm" | "md" | "lg";
|
|
1939
|
+
type SwitchProps = Omit<React$1.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, "size"> & {
|
|
1940
|
+
size?: SwitchSize;
|
|
1941
|
+
};
|
|
1942
|
+
/**
|
|
1943
|
+
* Switch. Token-driven. Toggle between checked and unchecked.
|
|
1944
|
+
* Use with Label for accessibility; supports size (sm, md, lg), disabled, aria-invalid.
|
|
1945
|
+
*/
|
|
1946
|
+
declare const Switch: React$1.ForwardRefExoticComponent<Omit<Omit<SwitchPrimitive.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref">, "size"> & {
|
|
1947
|
+
size?: SwitchSize;
|
|
1948
|
+
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1949
|
+
|
|
1950
|
+
type CheckboxProps = React$1.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;
|
|
1951
|
+
/**
|
|
1952
|
+
* Checkbox. Token-driven. Check when checked; minus when indeterminate.
|
|
1953
|
+
*/
|
|
1954
|
+
declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1955
|
+
|
|
1956
|
+
type RadioGroupProps = React$1.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;
|
|
1957
|
+
type RadioGroupSize = "sm" | "md" | "lg";
|
|
1958
|
+
type RadioGroupItemProps = Omit<React$1.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, "size"> & {
|
|
1959
|
+
size?: RadioGroupSize;
|
|
1960
|
+
};
|
|
1961
|
+
/**
|
|
1962
|
+
* RadioGroup. Token-driven. Single choice from a set of options.
|
|
1963
|
+
*/
|
|
1964
|
+
declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1965
|
+
/**
|
|
1966
|
+
* RadioGroupItem. Token-driven. Border and focus match Input/Checkbox.
|
|
1967
|
+
* Supports size: sm (12px), md (16px), lg (20px).
|
|
1968
|
+
*/
|
|
1969
|
+
declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref">, "size"> & {
|
|
1970
|
+
size?: RadioGroupSize;
|
|
1971
|
+
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1972
|
+
|
|
1973
|
+
/**
|
|
1974
|
+
* Chip: Compact pill used for selection, filtering, and tags.
|
|
1975
|
+
*
|
|
1976
|
+
* Design-system contract
|
|
1977
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
1978
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
1979
|
+
* - A11y: toggle chips use `aria-pressed`; disabled uses native `disabled`.
|
|
1980
|
+
* - Controlled + uncontrolled: supports `selected` + `onSelectedChange` or `defaultSelected`.
|
|
1981
|
+
*
|
|
1982
|
+
* Reference (Once UI / modern apps):
|
|
1983
|
+
* - selectable chips
|
|
1984
|
+
* - optional leading icon
|
|
1985
|
+
* - optional remove action
|
|
1986
|
+
*
|
|
1987
|
+
* @author: @mindtris-team
|
|
1988
|
+
* @version: 0.1.0
|
|
1989
|
+
* @since: 2026-02-01
|
|
1990
|
+
*/
|
|
1991
|
+
|
|
1992
|
+
type ChipSize = 'sm' | 'md';
|
|
1993
|
+
type ChipVariant = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'muted' | 'outline' | 'ghost' | 'destructive' | 'inverse'
|
|
1994
|
+
/** @deprecated Use "primary" instead. */
|
|
1995
|
+
| 'default';
|
|
1996
|
+
interface ChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
|
|
1997
|
+
size?: ChipSize;
|
|
1998
|
+
variant?: ChipVariant;
|
|
1999
|
+
leadingIcon?: React$1.ReactNode;
|
|
2000
|
+
/** Shows a trailing remove button (X). */
|
|
2001
|
+
onRemove?: () => void;
|
|
2002
|
+
/** Uncontrolled initial selected state. */
|
|
2003
|
+
defaultSelected?: boolean;
|
|
2004
|
+
/** Controlled selected state. */
|
|
2005
|
+
selected?: boolean;
|
|
2006
|
+
/** Fired when selection changes (toggle). */
|
|
2007
|
+
onSelectedChange?: (selected: boolean) => void;
|
|
2008
|
+
}
|
|
2009
|
+
declare function Chip({ size, variant, leadingIcon, onRemove, defaultSelected, selected, onSelectedChange, className, disabled, children, onClick, ...props }: ChipProps): React$1.JSX.Element;
|
|
2010
|
+
|
|
2011
|
+
interface SelectProps extends React__default.SelectHTMLAttributes<HTMLSelectElement> {
|
|
2012
|
+
}
|
|
2013
|
+
/**
|
|
2014
|
+
* Select styled to match Input — single design system control for dropdowns.
|
|
2015
|
+
* Use across theme customizer (preset, fonts, etc.) for consistency.
|
|
2016
|
+
*/
|
|
2017
|
+
declare const Select: React__default.ForwardRefExoticComponent<SelectProps & React__default.RefAttributes<HTMLSelectElement>>;
|
|
2018
|
+
|
|
2019
|
+
/**
|
|
2020
|
+
* Native Select: Styled native <select> when Radix Select is not needed.
|
|
2021
|
+
*
|
|
2022
|
+
* Design-system contract:
|
|
2023
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2024
|
+
* - Tokens-only: semantic token classes only.
|
|
2025
|
+
* - Simple, accessible, token-driven. Use for basic selects without custom dropdown.
|
|
2026
|
+
*
|
|
2027
|
+
* @author: @mindtris-team
|
|
2028
|
+
* @version: 0.1.0
|
|
2029
|
+
* @since: 2026-02-01
|
|
2030
|
+
*/
|
|
2031
|
+
|
|
2032
|
+
type NativeSelectSize = "sm" | "default" | "lg";
|
|
2033
|
+
interface NativeSelectProps extends Omit<React$1.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
|
|
2034
|
+
/** Size variant. */
|
|
2035
|
+
size?: NativeSelectSize;
|
|
2036
|
+
/** Whether the field has an error. */
|
|
2037
|
+
invalid?: boolean;
|
|
2038
|
+
/** Full width. */
|
|
2039
|
+
fullWidth?: boolean;
|
|
2040
|
+
}
|
|
2041
|
+
declare const NativeSelect: React$1.ForwardRefExoticComponent<NativeSelectProps & React$1.RefAttributes<HTMLSelectElement>>;
|
|
2042
|
+
|
|
2043
|
+
/**
|
|
2044
|
+
* Field: Standard form layout (label, control slot, description, error).
|
|
2045
|
+
*
|
|
2046
|
+
* Design-system contract:
|
|
2047
|
+
* - Scope: UI-only primitive. No react-hook-form coupling.
|
|
2048
|
+
* - Tokens-only: semantic token classes only.
|
|
2049
|
+
* - Composition: label, children (control), description, error slots.
|
|
2050
|
+
*
|
|
2051
|
+
* @author: @mindtris-team
|
|
2052
|
+
* @version: 0.1.0
|
|
2053
|
+
* @since: 2026-02-01
|
|
2054
|
+
*/
|
|
2055
|
+
|
|
2056
|
+
interface FieldProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2057
|
+
/** Label text (rendered above the control). */
|
|
2058
|
+
label?: React$1.ReactNode;
|
|
2059
|
+
/** Optional htmlFor for the label (links to control id). */
|
|
2060
|
+
htmlFor?: string;
|
|
2061
|
+
/** Whether the field is required (adds required indicator). */
|
|
2062
|
+
required?: boolean;
|
|
2063
|
+
/** Description text below the control. */
|
|
2064
|
+
description?: React$1.ReactNode;
|
|
2065
|
+
/** Error message (renders in destructive color). */
|
|
2066
|
+
error?: React$1.ReactNode;
|
|
2067
|
+
/** Whether the field has an error state (for styling the control). */
|
|
2068
|
+
invalid?: boolean;
|
|
2069
|
+
/** Optional hint text (renders below description). */
|
|
2070
|
+
hint?: React$1.ReactNode;
|
|
2071
|
+
}
|
|
2072
|
+
declare function Field({ label, htmlFor, required, description, error, invalid, hint, children, className, id: idProp, ...props }: FieldProps): React$1.JSX.Element;
|
|
2073
|
+
|
|
2074
|
+
/**
|
|
2075
|
+
* Empty: Empty state primitive (icon, title, description, action).
|
|
2076
|
+
*
|
|
2077
|
+
* Design-system contract:
|
|
2078
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2079
|
+
* - Tokens-only: semantic token classes only.
|
|
2080
|
+
* - Composition: icon slot, title, description, action slot.
|
|
2081
|
+
*
|
|
2082
|
+
* @author: @mindtris-team
|
|
2083
|
+
* @version: 0.1.0
|
|
2084
|
+
* @since: 2026-02-01
|
|
2085
|
+
*/
|
|
2086
|
+
|
|
2087
|
+
interface EmptyProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
2088
|
+
/** Optional icon or illustration above the title. */
|
|
2089
|
+
icon?: React$1.ReactNode;
|
|
2090
|
+
/** Main heading for the empty state. */
|
|
2091
|
+
title?: React$1.ReactNode;
|
|
2092
|
+
/** Supporting description text. */
|
|
2093
|
+
description?: React$1.ReactNode;
|
|
2094
|
+
/** Optional action (e.g. button) below the description. */
|
|
2095
|
+
action?: React$1.ReactNode;
|
|
2096
|
+
/** Size variant. */
|
|
2097
|
+
size?: "sm" | "default" | "lg";
|
|
2098
|
+
}
|
|
2099
|
+
declare function Empty({ icon, title, description, action, size, className, children, ...props }: EmptyProps): React$1.JSX.Element;
|
|
2100
|
+
|
|
2101
|
+
/**
|
|
2102
|
+
* Carousel: Image/content slides using Embla Carousel.
|
|
2103
|
+
*
|
|
2104
|
+
* Design-system contract:
|
|
2105
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2106
|
+
* - Tokens-only: semantic token classes only.
|
|
2107
|
+
* - Composition: Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext.
|
|
2108
|
+
*
|
|
2109
|
+
* @author: @mindtris-team
|
|
2110
|
+
* @version: 0.1.0
|
|
2111
|
+
* @since: 2026-02-01
|
|
2112
|
+
*/
|
|
2113
|
+
|
|
2114
|
+
type CarouselApi = UseEmblaCarouselType[1];
|
|
2115
|
+
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
2116
|
+
type CarouselOptions = UseCarouselParameters[0];
|
|
2117
|
+
type CarouselPlugin = UseCarouselParameters[1];
|
|
2118
|
+
type CarouselProps = {
|
|
2119
|
+
opts?: CarouselOptions;
|
|
2120
|
+
plugins?: CarouselPlugin;
|
|
2121
|
+
orientation?: "horizontal" | "vertical";
|
|
2122
|
+
setApi?: (api: CarouselApi) => void;
|
|
2123
|
+
} & React$1.HTMLAttributes<HTMLDivElement>;
|
|
2124
|
+
declare const Carousel: React$1.ForwardRefExoticComponent<{
|
|
2125
|
+
opts?: CarouselOptions;
|
|
2126
|
+
plugins?: CarouselPlugin;
|
|
2127
|
+
orientation?: "horizontal" | "vertical";
|
|
2128
|
+
setApi?: (api: CarouselApi) => void;
|
|
2129
|
+
} & React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2130
|
+
type CarouselContentProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
2131
|
+
declare const CarouselContent: React$1.ForwardRefExoticComponent<CarouselContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2132
|
+
type CarouselItemProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
2133
|
+
declare const CarouselItem: React$1.ForwardRefExoticComponent<CarouselItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2134
|
+
type CarouselPreviousProps = React$1.ComponentProps<typeof Button>;
|
|
2135
|
+
declare function CarouselPrevious({ className, variant, size, ...props }: CarouselPreviousProps): React$1.JSX.Element;
|
|
2136
|
+
declare namespace CarouselPrevious {
|
|
2137
|
+
var displayName: string;
|
|
2138
|
+
}
|
|
2139
|
+
type CarouselNextProps = React$1.ComponentProps<typeof Button>;
|
|
2140
|
+
declare function CarouselNext({ className, variant, size, ...props }: CarouselNextProps): React$1.JSX.Element;
|
|
2141
|
+
declare namespace CarouselNext {
|
|
2142
|
+
var displayName: string;
|
|
2143
|
+
}
|
|
2144
|
+
|
|
2145
|
+
/**
|
|
2146
|
+
* Combobox: Searchable select (Popover + Command pattern).
|
|
2147
|
+
*
|
|
2148
|
+
* Design-system contract:
|
|
2149
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2150
|
+
* - Tokens-only: semantic token classes only.
|
|
2151
|
+
* - Composition: Popover + Command for searchable dropdown.
|
|
2152
|
+
*
|
|
2153
|
+
* @author: @mindtris-team
|
|
2154
|
+
* @version: 0.1.0
|
|
2155
|
+
* @since: 2026-02-01
|
|
2156
|
+
*/
|
|
2157
|
+
|
|
2158
|
+
interface ComboboxOption<T extends string = string> {
|
|
2159
|
+
value: T;
|
|
2160
|
+
label: string;
|
|
2161
|
+
disabled?: boolean;
|
|
2162
|
+
}
|
|
2163
|
+
interface ComboboxProps<T extends string = string> {
|
|
2164
|
+
/** Controlled value. */
|
|
2165
|
+
value?: T;
|
|
2166
|
+
/** Callback when selection changes. */
|
|
2167
|
+
onChange?: (value: T) => void;
|
|
2168
|
+
/** Options to display. */
|
|
2169
|
+
options: readonly ComboboxOption<T>[];
|
|
2170
|
+
/** Placeholder when nothing selected. */
|
|
2171
|
+
placeholder?: string;
|
|
2172
|
+
/** Search input placeholder. */
|
|
2173
|
+
searchPlaceholder?: string;
|
|
2174
|
+
/** Empty state message when no results. */
|
|
2175
|
+
emptyMessage?: string;
|
|
2176
|
+
/** Whether the combobox is disabled. */
|
|
2177
|
+
disabled?: boolean;
|
|
2178
|
+
/** Whether to allow clearing (empty value). When true, adds an explicit "Clear" option. */
|
|
2179
|
+
clearable?: boolean;
|
|
2180
|
+
/** Label for the clear option when clearable. Default: "Clear" */
|
|
2181
|
+
clearLabel?: string;
|
|
2182
|
+
/** Optional class for the trigger button. */
|
|
2183
|
+
triggerClassName?: string;
|
|
2184
|
+
/** Optional class for the popover content. */
|
|
2185
|
+
contentClassName?: string;
|
|
2186
|
+
/** Full width trigger. */
|
|
2187
|
+
fullWidth?: boolean;
|
|
2188
|
+
}
|
|
2189
|
+
declare function Combobox<T extends string = string>({ value, onChange, options, placeholder, searchPlaceholder, emptyMessage, disabled, clearable, clearLabel, triggerClassName, contentClassName, fullWidth, }: ComboboxProps<T>): React$1.JSX.Element;
|
|
2190
|
+
|
|
2191
|
+
/**
|
|
2192
|
+
* Menubar: Desktop-style horizontal menu (File | Edit | View).
|
|
2193
|
+
*
|
|
2194
|
+
* Design-system contract:
|
|
2195
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2196
|
+
* - Tokens-only: semantic token classes only.
|
|
2197
|
+
* - Composition: Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, etc.
|
|
2198
|
+
*
|
|
2199
|
+
* @author: @mindtris-team
|
|
2200
|
+
* @version: 0.1.0
|
|
2201
|
+
* @since: 2026-02-05
|
|
2202
|
+
*/
|
|
2203
|
+
|
|
2204
|
+
type MenubarProps = React$1.ComponentProps<typeof MenubarPrimitive.Root>;
|
|
2205
|
+
type MenubarMenuProps = React$1.ComponentProps<typeof MenubarPrimitive.Menu>;
|
|
2206
|
+
type MenubarTriggerProps = React$1.ComponentProps<typeof MenubarPrimitive.Trigger>;
|
|
2207
|
+
type MenubarContentProps = React$1.ComponentProps<typeof MenubarPrimitive.Content>;
|
|
2208
|
+
type MenubarItemProps = React$1.ComponentProps<typeof MenubarPrimitive.Item> & {
|
|
2209
|
+
inset?: boolean;
|
|
2210
|
+
variant?: "default" | "destructive";
|
|
2211
|
+
};
|
|
2212
|
+
type MenubarCheckboxItemProps = React$1.ComponentProps<typeof MenubarPrimitive.CheckboxItem>;
|
|
2213
|
+
type MenubarRadioGroupProps = React$1.ComponentProps<typeof MenubarPrimitive.RadioGroup>;
|
|
2214
|
+
type MenubarRadioItemProps = React$1.ComponentProps<typeof MenubarPrimitive.RadioItem>;
|
|
2215
|
+
type MenubarLabelProps = React$1.ComponentProps<typeof MenubarPrimitive.Label> & {
|
|
2216
|
+
inset?: boolean;
|
|
2217
|
+
};
|
|
2218
|
+
type MenubarSeparatorProps = React$1.ComponentProps<typeof MenubarPrimitive.Separator>;
|
|
2219
|
+
type MenubarShortcutProps = React$1.HTMLAttributes<HTMLSpanElement>;
|
|
2220
|
+
type MenubarGroupProps = React$1.ComponentProps<typeof MenubarPrimitive.Group>;
|
|
2221
|
+
type MenubarPortalProps = React$1.ComponentProps<typeof MenubarPrimitive.Portal>;
|
|
2222
|
+
type MenubarSubProps = React$1.ComponentProps<typeof MenubarPrimitive.Sub>;
|
|
2223
|
+
type MenubarSubTriggerProps = React$1.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
|
|
2224
|
+
inset?: boolean;
|
|
2225
|
+
};
|
|
2226
|
+
type MenubarSubContentProps = React$1.ComponentProps<typeof MenubarPrimitive.SubContent>;
|
|
2227
|
+
declare const Menubar: React$1.ForwardRefExoticComponent<MenubarPrimitive.MenubarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2228
|
+
declare const MenubarMenu: React$1.ComponentType<MenubarMenuProps>;
|
|
2229
|
+
declare const MenubarTrigger: React$1.ComponentType<MenubarTriggerProps>;
|
|
2230
|
+
declare const MenubarGroup: React$1.ComponentType<MenubarGroupProps>;
|
|
2231
|
+
declare const MenubarPortal: React$1.ComponentType<MenubarPortalProps>;
|
|
2232
|
+
declare const MenubarRadioGroup: React$1.ComponentType<MenubarRadioGroupProps>;
|
|
2233
|
+
declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: MenubarContentProps): React$1.JSX.Element;
|
|
2234
|
+
declare function MenubarItem({ className, inset, variant, ...props }: MenubarItemProps): React$1.JSX.Element;
|
|
2235
|
+
declare function MenubarCheckboxItem({ className, children, checked, ...props }: MenubarCheckboxItemProps): React$1.JSX.Element;
|
|
2236
|
+
declare function MenubarRadioItem({ className, children, ...props }: MenubarRadioItemProps): React$1.JSX.Element;
|
|
2237
|
+
declare function MenubarLabel({ className, inset, ...props }: MenubarLabelProps): React$1.JSX.Element;
|
|
2238
|
+
declare function MenubarSeparator({ className, ...props }: MenubarSeparatorProps): React$1.JSX.Element;
|
|
2239
|
+
declare function MenubarShortcut({ className, ...props }: MenubarShortcutProps): React$1.JSX.Element;
|
|
2240
|
+
declare function MenubarSub({ ...props }: MenubarSubProps): React$1.JSX.Element;
|
|
2241
|
+
declare function MenubarSubTrigger({ className, inset, children, ...props }: MenubarSubTriggerProps): React$1.JSX.Element;
|
|
2242
|
+
declare function MenubarSubContent({ className, ...props }: MenubarSubContentProps): React$1.JSX.Element;
|
|
2243
|
+
|
|
2244
|
+
/**
|
|
2245
|
+
* Context Menu: Right-click menu.
|
|
2246
|
+
*
|
|
2247
|
+
* Design-system contract:
|
|
2248
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
2249
|
+
* - Tokens-only: semantic token classes only.
|
|
2250
|
+
* - Composition: ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, etc.
|
|
2251
|
+
*
|
|
2252
|
+
* @author: @mindtris-team
|
|
2253
|
+
* @version: 0.1.0
|
|
2254
|
+
* @since: 2026-02-01
|
|
2255
|
+
*/
|
|
2256
|
+
|
|
2257
|
+
type ContextMenuProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Root>;
|
|
2258
|
+
type ContextMenuTriggerProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Trigger>;
|
|
2259
|
+
type ContextMenuContentProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Content>;
|
|
2260
|
+
type ContextMenuItemProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Item> & {
|
|
2261
|
+
inset?: boolean;
|
|
2262
|
+
variant?: "default" | "destructive";
|
|
2263
|
+
};
|
|
2264
|
+
type ContextMenuCheckboxItemProps = React$1.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>;
|
|
2265
|
+
type ContextMenuRadioGroupProps = React$1.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>;
|
|
2266
|
+
type ContextMenuRadioItemProps = React$1.ComponentProps<typeof ContextMenuPrimitive.RadioItem>;
|
|
2267
|
+
type ContextMenuLabelProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Label> & {
|
|
2268
|
+
inset?: boolean;
|
|
2269
|
+
};
|
|
2270
|
+
type ContextMenuSeparatorProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Separator>;
|
|
2271
|
+
type ContextMenuShortcutProps = React$1.HTMLAttributes<HTMLSpanElement>;
|
|
2272
|
+
type ContextMenuSubProps = React$1.ComponentProps<typeof ContextMenuPrimitive.Sub>;
|
|
2273
|
+
type ContextMenuSubTriggerProps = React$1.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
|
|
2274
|
+
inset?: boolean;
|
|
2275
|
+
};
|
|
2276
|
+
type ContextMenuSubContentProps = React$1.ComponentProps<typeof ContextMenuPrimitive.SubContent>;
|
|
2277
|
+
declare const ContextMenu: React$1.FC<ContextMenuPrimitive.ContextMenuProps>;
|
|
2278
|
+
declare const ContextMenuTrigger: React$1.ForwardRefExoticComponent<ContextMenuPrimitive.ContextMenuTriggerProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2279
|
+
declare const ContextMenuGroup: React$1.ForwardRefExoticComponent<ContextMenuPrimitive.ContextMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2280
|
+
declare const ContextMenuRadioGroup: React$1.ForwardRefExoticComponent<ContextMenuPrimitive.ContextMenuRadioGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2281
|
+
declare const ContextMenuPortal: React$1.FC<ContextMenuPrimitive.ContextMenuPortalProps>;
|
|
2282
|
+
declare function ContextMenuContent({ className, ...props }: ContextMenuContentProps): React$1.JSX.Element;
|
|
2283
|
+
declare function ContextMenuItem({ className, inset, variant, ...props }: ContextMenuItemProps): React$1.JSX.Element;
|
|
2284
|
+
declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: ContextMenuCheckboxItemProps): React$1.JSX.Element;
|
|
2285
|
+
declare function ContextMenuRadioItem({ className, children, ...props }: ContextMenuRadioItemProps): React$1.JSX.Element;
|
|
2286
|
+
declare function ContextMenuLabel({ className, inset, ...props }: ContextMenuLabelProps): React$1.JSX.Element;
|
|
2287
|
+
declare function ContextMenuSeparator({ className, ...props }: ContextMenuSeparatorProps): React$1.JSX.Element;
|
|
2288
|
+
declare function ContextMenuShortcut({ className, ...props }: ContextMenuShortcutProps): React$1.JSX.Element;
|
|
2289
|
+
declare function ContextMenuSub({ ...props }: ContextMenuSubProps): React$1.JSX.Element;
|
|
2290
|
+
declare function ContextMenuSubTrigger({ className, inset, children, ...props }: ContextMenuSubTriggerProps): React$1.JSX.Element;
|
|
2291
|
+
declare function ContextMenuSubContent({ className, ...props }: ContextMenuSubContentProps): React$1.JSX.Element;
|
|
2292
|
+
|
|
2293
|
+
/**
|
|
2294
|
+
* Dropdowns (single file, multi-variants)
|
|
2295
|
+
*
|
|
2296
|
+
* Goal: keep one implementation surface for all dropdown styles defined no conditional chaos, business logic;
|
|
2297
|
+
* (classic select, full-width select, menu, filter, etc.) while reusing the same
|
|
2298
|
+
* primitive positioning/portal logic.
|
|
2299
|
+
*/
|
|
2300
|
+
|
|
2301
|
+
type DropdownAlign = 'start' | 'center' | 'end';
|
|
2302
|
+
type DropdownOption<T extends string = string> = {
|
|
2303
|
+
value: T;
|
|
2304
|
+
label: string;
|
|
2305
|
+
leadingIcon?: React$1.ReactNode;
|
|
2306
|
+
};
|
|
2307
|
+
type DropdownSelectOptionVariant = 'checkmark' | 'checkbox';
|
|
2308
|
+
/**
|
|
2309
|
+
* Variant: "classic" (select-like)
|
|
2310
|
+
* Used for: navbar preset selector, full-width selects, filter pills, etc.
|
|
2311
|
+
*/
|
|
2312
|
+
interface DropdownSelectProps<T extends string = string> {
|
|
2313
|
+
value: T;
|
|
2314
|
+
options: readonly DropdownOption<T>[];
|
|
2315
|
+
onChange: (value: T) => void;
|
|
2316
|
+
/** Button label for screen readers */
|
|
2317
|
+
ariaLabel?: string;
|
|
2318
|
+
/** Optional left icon inside the button */
|
|
2319
|
+
buttonLeadingIcon?: React$1.ReactNode;
|
|
2320
|
+
/** Align dropdown panel relative to trigger */
|
|
2321
|
+
align?: DropdownAlign;
|
|
2322
|
+
/** Match "full width" dropdown behavior */
|
|
2323
|
+
fullWidth?: boolean;
|
|
2324
|
+
/** Option list variant: checkmark icon or checkbox */
|
|
2325
|
+
optionVariant?: DropdownSelectOptionVariant;
|
|
2326
|
+
/** When > 0, shows active border and count badge */
|
|
2327
|
+
selectedCount?: number;
|
|
2328
|
+
/** Filter mode: trigger always shows this label instead of selected option (for filters) */
|
|
2329
|
+
filterLabel?: string;
|
|
2330
|
+
/** When optionVariant is checkbox, option with this value is rendered without checkbox (label/header row) */
|
|
2331
|
+
labelOptionValue?: T;
|
|
2332
|
+
/** Show search input under label to filter options (when labelOptionValue is used) */
|
|
2333
|
+
searchable?: boolean;
|
|
2334
|
+
/** Placeholder for search input when searchable */
|
|
2335
|
+
searchPlaceholder?: string;
|
|
2336
|
+
className?: string;
|
|
2337
|
+
}
|
|
2338
|
+
declare function DropdownSelect<T extends string = string>({ value, options, onChange, ariaLabel, buttonLeadingIcon, align, fullWidth, optionVariant, selectedCount, filterLabel, labelOptionValue, searchable, searchPlaceholder, className, }: DropdownSelectProps<T>): React$1.JSX.Element;
|
|
2339
|
+
/**
|
|
2340
|
+
* ClassicDropdown
|
|
2341
|
+
* Matches `app/(alternative)/components-library/dropdown` classic style (date-select.tsx).
|
|
2342
|
+
* Uses @headlessui/react Menu (not Popover) for exact mindtris-ui behavior.
|
|
2343
|
+
* Token-driven (no hardcoded grays).
|
|
2344
|
+
*/
|
|
2345
|
+
interface ClassicDropdownProps<T extends string = string> {
|
|
2346
|
+
value: T;
|
|
2347
|
+
options: readonly DropdownOption<T>[];
|
|
2348
|
+
onChange: (value: T) => void;
|
|
2349
|
+
ariaLabel?: string;
|
|
2350
|
+
buttonLeadingIcon?: React$1.ReactNode;
|
|
2351
|
+
align?: DropdownAlign;
|
|
2352
|
+
fullWidth?: boolean;
|
|
2353
|
+
className?: string;
|
|
2354
|
+
}
|
|
2355
|
+
declare function ClassicDropdown<T extends string = string>({ value, options, onChange, ariaLabel, buttonLeadingIcon, align, fullWidth, className, }: ClassicDropdownProps<T>): React$1.JSX.Element;
|
|
2356
|
+
type DropdownMenuAlign = 'left' | 'right';
|
|
2357
|
+
interface DropdownIconMenuProps {
|
|
2358
|
+
ariaLabel: string;
|
|
2359
|
+
icon: React$1.ReactNode;
|
|
2360
|
+
align?: DropdownMenuAlign;
|
|
2361
|
+
children: React$1.ReactNode;
|
|
2362
|
+
className?: string;
|
|
2363
|
+
}
|
|
2364
|
+
/**
|
|
2365
|
+
* DropdownIconMenu
|
|
2366
|
+
* Matches components-library "icon button opens menu" pattern (notifications/help).
|
|
2367
|
+
* Token driven (no hardcoded gray palette).
|
|
2368
|
+
*/
|
|
2369
|
+
declare function DropdownIconMenu({ ariaLabel, icon, align, children, className, }: DropdownIconMenuProps): React$1.JSX.Element;
|
|
2370
|
+
declare function DropdownMenuSectionLabel({ children }: {
|
|
2371
|
+
children: React$1.ReactNode;
|
|
2372
|
+
}): React$1.JSX.Element;
|
|
2373
|
+
interface DropdownMenuActionProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2374
|
+
activeClassName?: string;
|
|
2375
|
+
}
|
|
2376
|
+
declare function DropdownMenuAction({ className, activeClassName, children, ...props }: DropdownMenuActionProps): React$1.JSX.Element;
|
|
2377
|
+
/**
|
|
2378
|
+
* DropdownMenu primitives (Radix)
|
|
2379
|
+
* Baseline interaction/ARIA provided by Radix; styling aligns with our select/dropdown surfaces.
|
|
2380
|
+
*/
|
|
2381
|
+
type DropdownMenuProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Root>;
|
|
2382
|
+
type DropdownMenuTriggerProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Trigger>;
|
|
2383
|
+
type DropdownMenuPortalProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Portal>;
|
|
2384
|
+
type DropdownMenuContentProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Content>;
|
|
2385
|
+
type DropdownMenuGroupProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Group>;
|
|
2386
|
+
type DropdownMenuLabelProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
2387
|
+
inset?: boolean;
|
|
2388
|
+
};
|
|
2389
|
+
type DropdownMenuItemProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
2390
|
+
inset?: boolean;
|
|
2391
|
+
variant?: 'default' | 'destructive';
|
|
2392
|
+
};
|
|
2393
|
+
type DropdownMenuCheckboxItemProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>;
|
|
2394
|
+
type DropdownMenuRadioGroupProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>;
|
|
2395
|
+
type DropdownMenuRadioItemProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>;
|
|
2396
|
+
type DropdownMenuSeparatorProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Separator>;
|
|
2397
|
+
type DropdownMenuSubProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.Sub>;
|
|
2398
|
+
type DropdownMenuSubTriggerProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
2399
|
+
inset?: boolean;
|
|
2400
|
+
};
|
|
2401
|
+
type DropdownMenuSubContentProps = React$1.ComponentProps<typeof DropdownMenuPrimitive.SubContent>;
|
|
2402
|
+
declare function DropdownMenu({ ...props }: DropdownMenuProps): React$1.JSX.Element;
|
|
2403
|
+
declare function DropdownMenuPortal({ ...props }: DropdownMenuPortalProps): React$1.JSX.Element;
|
|
2404
|
+
declare function DropdownMenuTrigger({ ...props }: DropdownMenuTriggerProps): React$1.JSX.Element;
|
|
2405
|
+
declare function DropdownMenuContent({ className, sideOffset, ...props }: DropdownMenuContentProps): React$1.JSX.Element;
|
|
2406
|
+
declare function DropdownMenuGroup({ ...props }: DropdownMenuGroupProps): React$1.JSX.Element;
|
|
2407
|
+
declare function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelProps): React$1.JSX.Element;
|
|
2408
|
+
declare function DropdownMenuItem({ className, inset, variant, ...props }: DropdownMenuItemProps): React$1.JSX.Element;
|
|
2409
|
+
declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: DropdownMenuCheckboxItemProps): React$1.JSX.Element;
|
|
2410
|
+
declare function DropdownMenuRadioGroup({ ...props }: DropdownMenuRadioGroupProps): React$1.JSX.Element;
|
|
2411
|
+
declare function DropdownMenuRadioItem({ className, children, ...props }: DropdownMenuRadioItemProps): React$1.JSX.Element;
|
|
2412
|
+
declare function DropdownMenuSeparator({ className, ...props }: DropdownMenuSeparatorProps): React$1.JSX.Element;
|
|
2413
|
+
declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<'span'>): React$1.JSX.Element;
|
|
2414
|
+
declare function DropdownMenuSub({ ...props }: DropdownMenuSubProps): React$1.JSX.Element;
|
|
2415
|
+
declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: DropdownMenuSubTriggerProps): React$1.JSX.Element;
|
|
2416
|
+
declare function DropdownMenuSubContent({ className, sideOffset, ...props }: DropdownMenuSubContentProps & {
|
|
2417
|
+
sideOffset?: number;
|
|
2418
|
+
}): React$1.JSX.Element;
|
|
2419
|
+
/**
|
|
2420
|
+
* DropdownProfile
|
|
2421
|
+
* Profile dropdown with avatar, name, role, and menu items.
|
|
2422
|
+
* Token-driven (no hardcoded grays).
|
|
2423
|
+
*/
|
|
2424
|
+
interface DropdownProfileProps {
|
|
2425
|
+
/** User avatar image source */
|
|
2426
|
+
avatarSrc?: string;
|
|
2427
|
+
/** User name */
|
|
2428
|
+
name?: string;
|
|
2429
|
+
/** User role/title */
|
|
2430
|
+
role?: string;
|
|
2431
|
+
/** Menu items */
|
|
2432
|
+
items?: Array<{
|
|
2433
|
+
label: string;
|
|
2434
|
+
href: string;
|
|
2435
|
+
onClick?: () => void;
|
|
2436
|
+
}>;
|
|
2437
|
+
/** Align dropdown panel */
|
|
2438
|
+
align?: 'left' | 'right';
|
|
2439
|
+
className?: string;
|
|
2440
|
+
}
|
|
2441
|
+
declare function DropdownProfile({ avatarSrc, name, role, items, align, className, }: DropdownProfileProps): React$1.JSX.Element;
|
|
2442
|
+
|
|
2443
|
+
interface LogoProps {
|
|
2444
|
+
className?: string;
|
|
2445
|
+
ariaLabel?: string;
|
|
2446
|
+
}
|
|
2447
|
+
declare function Logo({ className, ariaLabel }?: LogoProps): React$1.JSX.Element;
|
|
2448
|
+
|
|
2449
|
+
/**
|
|
2450
|
+
* Separator: Visual divider (horizontal or vertical).
|
|
2451
|
+
*
|
|
2452
|
+
* Design-system contract
|
|
2453
|
+
* - Scope: UI-only primitive.
|
|
2454
|
+
* - Tokens-only: semantic token classes only.
|
|
2455
|
+
* - A11y: decorative by default.
|
|
2456
|
+
*
|
|
2457
|
+
* Usage
|
|
2458
|
+
* - Horizontal divider between sections:
|
|
2459
|
+
* `<Separator className="my-4" />`
|
|
2460
|
+
* - Vertical divider between inline items:
|
|
2461
|
+
* `<Separator orientation="vertical" className="mx-3 h-5" />`
|
|
2462
|
+
*
|
|
2463
|
+
* Accessibility
|
|
2464
|
+
* - `decorative` defaults to `true` (presentation). This is the correct default for purely visual dividers.
|
|
2465
|
+
* - If the separator conveys structure/meaning, set `decorative={false}`.
|
|
2466
|
+
*
|
|
2467
|
+
* Implementation notes
|
|
2468
|
+
* - We set explicit sizing from the `orientation` prop (instead of relying on data-attribute variants)
|
|
2469
|
+
* to avoid accidental “thick” dividers when attributes/styles differ across environments.
|
|
2470
|
+
*
|
|
2471
|
+
* Reference: shadcn `separator.tsx` (Radix Separator).
|
|
2472
|
+
*/
|
|
2473
|
+
|
|
2474
|
+
type SeparatorProps = React$1.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>;
|
|
2475
|
+
declare const Separator: React$1.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2476
|
+
|
|
2477
|
+
type SidebarVariant = 'sidebar' | 'floating' | 'inset';
|
|
2478
|
+
type SidebarCollapsible = 'offcanvas' | 'icon' | 'none';
|
|
2479
|
+
type SidebarSide = 'left' | 'right';
|
|
2480
|
+
interface SidebarLinkProps {
|
|
2481
|
+
children: React$1.ReactNode;
|
|
2482
|
+
href: string;
|
|
2483
|
+
/** Controlled active state (app determines current route). */
|
|
2484
|
+
active?: boolean;
|
|
2485
|
+
/** Optional leading icon. */
|
|
2486
|
+
leadingIcon?: React$1.ReactNode;
|
|
2487
|
+
onClick?: React$1.MouseEventHandler<HTMLAnchorElement>;
|
|
2488
|
+
className?: string;
|
|
2489
|
+
}
|
|
2490
|
+
/**
|
|
2491
|
+
* SidebarLink: route-agnostic link styling with optional leading icon.
|
|
2492
|
+
*/
|
|
2493
|
+
declare function SidebarLink({ children, href, active, leadingIcon, onClick, className, }: SidebarLinkProps): React$1.JSX.Element;
|
|
2494
|
+
interface SidebarLinkGroupProps {
|
|
2495
|
+
children: (handleClick: () => void, openGroup: boolean) => React$1.ReactNode;
|
|
2496
|
+
open?: boolean;
|
|
2497
|
+
className?: string;
|
|
2498
|
+
}
|
|
2499
|
+
/**
|
|
2500
|
+
* SidebarLinkGroup: UI-only disclosure wrapper for grouped nav.
|
|
2501
|
+
*/
|
|
2502
|
+
declare function SidebarLinkGroup({ children, open, className }: SidebarLinkGroupProps): React$1.JSX.Element;
|
|
2503
|
+
interface SidebarMenuButtonProps extends React$1.ComponentProps<'button'> {
|
|
2504
|
+
/** Controlled active state. */
|
|
2505
|
+
isActive?: boolean;
|
|
2506
|
+
/** Optional leading icon. */
|
|
2507
|
+
leadingIcon?: React$1.ReactNode;
|
|
2508
|
+
}
|
|
2509
|
+
/**
|
|
2510
|
+
* SidebarMenuButton: nav item with optional icon and label.
|
|
2511
|
+
*/
|
|
2512
|
+
declare function SidebarMenuButton({ children, isActive, leadingIcon, className, ...props }: SidebarMenuButtonProps): React$1.JSX.Element;
|
|
2513
|
+
interface SidebarProps {
|
|
2514
|
+
open: boolean;
|
|
2515
|
+
onOpenChange: (open: boolean) => void;
|
|
2516
|
+
showBackdrop?: boolean;
|
|
2517
|
+
variant?: SidebarVariant;
|
|
2518
|
+
collapsible?: SidebarCollapsible;
|
|
2519
|
+
side?: SidebarSide;
|
|
2520
|
+
className?: string;
|
|
2521
|
+
headerSlot?: React$1.ReactNode;
|
|
2522
|
+
footerSlot?: React$1.ReactNode;
|
|
2523
|
+
children?: React$1.ReactNode;
|
|
2524
|
+
}
|
|
2525
|
+
/**
|
|
2526
|
+
* Sidebar: layout chrome with variants (sidebar, floating, inset). Controlled state.
|
|
2527
|
+
*/
|
|
2528
|
+
declare function Sidebar({ open, onOpenChange, showBackdrop, variant, collapsible, side, className, headerSlot, footerSlot, children, }: SidebarProps): React$1.JSX.Element;
|
|
2529
|
+
declare function SidebarHeader({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2530
|
+
declare function SidebarFooter({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2531
|
+
declare function SidebarContent({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2532
|
+
declare function SidebarGroup({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2533
|
+
declare function SidebarGroupLabel({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2534
|
+
declare function SidebarGroupContent({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
2535
|
+
declare function SidebarMenu({ className, ...props }: React$1.ComponentProps<'ul'>): React$1.JSX.Element;
|
|
2536
|
+
declare function SidebarMenuItem({ className, ...props }: React$1.ComponentProps<'li'>): React$1.JSX.Element;
|
|
2537
|
+
declare function SidebarInput(props: React$1.ComponentProps<typeof Input>): React$1.JSX.Element;
|
|
2538
|
+
declare function SidebarSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): React$1.JSX.Element;
|
|
2539
|
+
|
|
2540
|
+
type PopoverProps = React$1.ComponentProps<typeof PopoverPrimitive.Root>;
|
|
2541
|
+
type PopoverTriggerProps = React$1.ComponentProps<typeof PopoverPrimitive.Trigger>;
|
|
2542
|
+
type PopoverAnchorProps = React$1.ComponentProps<typeof PopoverPrimitive.Anchor>;
|
|
2543
|
+
type PopoverContentProps = React$1.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>;
|
|
2544
|
+
declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
|
|
2545
|
+
declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2546
|
+
declare const PopoverAnchor: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2547
|
+
declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2548
|
+
|
|
2549
|
+
/**
|
|
2550
|
+
* Alert Dialog: Modal confirmation dialogs.
|
|
2551
|
+
*
|
|
2552
|
+
* Design-system contract:
|
|
2553
|
+
* - Scope: UI-only primitive. No domain copy, no API calls.
|
|
2554
|
+
* - Tokens-only: semantic token classes only.
|
|
2555
|
+
* - Composition: title/description slots, Action/Cancel buttons.
|
|
2556
|
+
*
|
|
2557
|
+
* @author: @mindtris-team
|
|
2558
|
+
* @version: 0.1.0
|
|
2559
|
+
* @since: 2026-02-01
|
|
2560
|
+
*/
|
|
2561
|
+
|
|
2562
|
+
type AlertDialogProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Root>;
|
|
2563
|
+
type AlertDialogTriggerProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Trigger>;
|
|
2564
|
+
type AlertDialogContentProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Content>;
|
|
2565
|
+
type AlertDialogHeaderProps = React$1.ComponentProps<"div">;
|
|
2566
|
+
type AlertDialogFooterProps = React$1.ComponentProps<"div">;
|
|
2567
|
+
type AlertDialogTitleProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Title>;
|
|
2568
|
+
type AlertDialogDescriptionProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Description>;
|
|
2569
|
+
type AlertDialogActionProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Action> & {
|
|
2570
|
+
variant?: "default" | "destructive";
|
|
2571
|
+
} & {
|
|
2572
|
+
variant?: "default" | "destructive";
|
|
2573
|
+
};
|
|
2574
|
+
type AlertDialogCancelProps = React$1.ComponentProps<typeof AlertDialogPrimitive.Cancel>;
|
|
2575
|
+
declare function AlertDialog({ ...props }: AlertDialogProps): React$1.JSX.Element;
|
|
2576
|
+
declare function AlertDialogTrigger({ ...props }: AlertDialogTriggerProps): React$1.JSX.Element;
|
|
2577
|
+
declare function AlertDialogContent({ className, children, ...props }: AlertDialogContentProps): React$1.JSX.Element;
|
|
2578
|
+
declare function AlertDialogHeader({ className, ...props }: AlertDialogHeaderProps): React$1.JSX.Element;
|
|
2579
|
+
declare function AlertDialogFooter({ className, ...props }: AlertDialogFooterProps): React$1.JSX.Element;
|
|
2580
|
+
declare function AlertDialogTitle({ className, ...props }: AlertDialogTitleProps): React$1.JSX.Element;
|
|
2581
|
+
declare function AlertDialogDescription({ className, ...props }: AlertDialogDescriptionProps): React$1.JSX.Element;
|
|
2582
|
+
declare function AlertDialogAction({ className, variant, ...props }: AlertDialogActionProps): React$1.JSX.Element;
|
|
2583
|
+
declare function AlertDialogCancel({ className, ...props }: AlertDialogCancelProps): React$1.JSX.Element;
|
|
2584
|
+
|
|
2585
|
+
type DialogProps = React$1.ComponentProps<typeof DialogPrimitive.Root>;
|
|
2586
|
+
type DialogTriggerProps = React$1.ComponentProps<typeof DialogPrimitive.Trigger>;
|
|
2587
|
+
type DialogPortalProps = React$1.ComponentProps<typeof DialogPrimitive.Portal>;
|
|
2588
|
+
type DialogCloseProps = React$1.ComponentProps<typeof DialogPrimitive.Close>;
|
|
2589
|
+
type DialogOverlayProps = React$1.ComponentProps<typeof DialogPrimitive.Overlay>;
|
|
2590
|
+
type DialogContentProps = React$1.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
2591
|
+
/** Whether to render the top-right close button. */
|
|
2592
|
+
showCloseButton?: boolean;
|
|
2593
|
+
};
|
|
2594
|
+
type DialogHeaderProps = React$1.ComponentProps<"div">;
|
|
2595
|
+
type DialogFooterProps = React$1.ComponentProps<"div">;
|
|
2596
|
+
type DialogTitleProps = React$1.ComponentProps<typeof DialogPrimitive.Title>;
|
|
2597
|
+
type DialogDescriptionProps = React$1.ComponentProps<typeof DialogPrimitive.Description>;
|
|
2598
|
+
declare function Dialog({ ...props }: DialogProps): React$1.JSX.Element;
|
|
2599
|
+
declare function DialogTrigger({ ...props }: DialogTriggerProps): React$1.JSX.Element;
|
|
2600
|
+
declare function DialogPortal({ ...props }: DialogPortalProps): React$1.JSX.Element;
|
|
2601
|
+
declare function DialogClose({ ...props }: DialogCloseProps): React$1.JSX.Element;
|
|
2602
|
+
declare function DialogOverlay({ className, ...props }: DialogOverlayProps): React$1.JSX.Element;
|
|
2603
|
+
declare function DialogContent({ className, children, showCloseButton, ...props }: DialogContentProps): React$1.JSX.Element;
|
|
2604
|
+
declare function DialogHeader({ className, ...props }: DialogHeaderProps): React$1.JSX.Element;
|
|
2605
|
+
declare function DialogFooter({ className, ...props }: DialogFooterProps): React$1.JSX.Element;
|
|
2606
|
+
declare function DialogTitle({ className, ...props }: DialogTitleProps): React$1.JSX.Element;
|
|
2607
|
+
declare function DialogDescription({ className, ...props }: DialogDescriptionProps): React$1.JSX.Element;
|
|
2608
|
+
type ResponsiveDialogMode = "dialog" | "drawer";
|
|
2609
|
+
type ResponsiveDrawerDirection = "top" | "right" | "bottom" | "left";
|
|
2610
|
+
interface ResponsiveDialogProps {
|
|
2611
|
+
open: boolean;
|
|
2612
|
+
onOpenChange: (open: boolean) => void;
|
|
2613
|
+
title?: React$1.ReactNode;
|
|
2614
|
+
description?: React$1.ReactNode;
|
|
2615
|
+
children: React$1.ReactNode;
|
|
2616
|
+
footer?: React$1.ReactNode;
|
|
2617
|
+
desktopQuery?: string;
|
|
2618
|
+
drawerDirection?: ResponsiveDrawerDirection;
|
|
2619
|
+
mode?: ResponsiveDialogMode;
|
|
2620
|
+
contentClassName?: string;
|
|
2621
|
+
bodyClassName?: string;
|
|
2622
|
+
headerClassName?: string;
|
|
2623
|
+
footerClassName?: string;
|
|
2624
|
+
hideClose?: boolean;
|
|
2625
|
+
}
|
|
2626
|
+
/**
|
|
2627
|
+
* ResponsiveDialog
|
|
2628
|
+
* Renders Dialog on desktop and Drawer on mobile (md+ breakpoint). Extends Dialog; apps use this when a modal should adapt by breakpoint.
|
|
2629
|
+
*/
|
|
2630
|
+
declare function ResponsiveDialog({ open, onOpenChange, title, description, children, footer, desktopQuery, drawerDirection, mode, contentClassName, bodyClassName, headerClassName, footerClassName, hideClose, }: ResponsiveDialogProps): React$1.JSX.Element;
|
|
2631
|
+
|
|
2632
|
+
type DrawerProps = React$1.ComponentProps<typeof Drawer$1.Root>;
|
|
2633
|
+
type DrawerTriggerProps = React$1.ComponentProps<typeof Drawer$1.Trigger>;
|
|
2634
|
+
type DrawerPortalProps = React$1.ComponentProps<typeof Drawer$1.Portal>;
|
|
2635
|
+
type DrawerCloseProps = React$1.ComponentProps<typeof Drawer$1.Close>;
|
|
2636
|
+
type DrawerOverlayProps = React$1.ComponentProps<typeof Drawer$1.Overlay>;
|
|
2637
|
+
type DrawerContentProps = React$1.ComponentProps<typeof Drawer$1.Content> & {
|
|
2638
|
+
/** Whether to show the top-right close button (matches Sheet). */
|
|
2639
|
+
showCloseButton?: boolean;
|
|
2640
|
+
};
|
|
2641
|
+
type DrawerHeaderProps = React$1.ComponentProps<"div">;
|
|
2642
|
+
type DrawerFooterProps = React$1.ComponentProps<"div">;
|
|
2643
|
+
type DrawerTitleProps = React$1.ComponentProps<typeof Drawer$1.Title>;
|
|
2644
|
+
type DrawerDescriptionProps = React$1.ComponentProps<typeof Drawer$1.Description>;
|
|
2645
|
+
declare function Drawer({ ...props }: DrawerProps): React$1.JSX.Element;
|
|
2646
|
+
declare function DrawerTrigger({ ...props }: DrawerTriggerProps): React$1.JSX.Element;
|
|
2647
|
+
declare function DrawerPortal({ ...props }: DrawerPortalProps): React$1.JSX.Element;
|
|
2648
|
+
declare function DrawerClose({ ...props }: DrawerCloseProps): React$1.JSX.Element;
|
|
2649
|
+
declare function DrawerOverlay({ className, ...props }: DrawerOverlayProps): React$1.JSX.Element;
|
|
2650
|
+
declare function DrawerContent({ className, children, showCloseButton, ...props }: DrawerContentProps): React$1.JSX.Element;
|
|
2651
|
+
declare function DrawerHeader({ className, ...props }: DrawerHeaderProps): React$1.JSX.Element;
|
|
2652
|
+
declare function DrawerFooter({ className, ...props }: DrawerFooterProps): React$1.JSX.Element;
|
|
2653
|
+
declare function DrawerTitle({ className, ...props }: DrawerTitleProps): React$1.JSX.Element;
|
|
2654
|
+
declare function DrawerDescription({ className, ...props }: DrawerDescriptionProps): React$1.JSX.Element;
|
|
2655
|
+
|
|
2656
|
+
/**
|
|
2657
|
+
* Modal: Dialog overlay for focused tasks.
|
|
2658
|
+
*
|
|
2659
|
+
* Design-system contract
|
|
2660
|
+
* - Scope: UI-only primitive. No routing, no API calls, no domain copy.
|
|
2661
|
+
* - Tokens-only: semantic token classes only.
|
|
2662
|
+
* - A11y: built on Radix Dialog primitives.
|
|
2663
|
+
*
|
|
2664
|
+
* mindtris-ui reference variants we mirror:
|
|
2665
|
+
* - Basic modal shell (title/body/footer)
|
|
2666
|
+
* - Scrollable body with sticky-ish footer (handled via className hooks)
|
|
2667
|
+
*
|
|
2668
|
+
* @author: @mindtris-team
|
|
2669
|
+
* @version: 0.2.0
|
|
2670
|
+
* @since: 2026-02-01
|
|
2671
|
+
*/
|
|
2672
|
+
|
|
2673
|
+
type ModalSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
2674
|
+
interface ModalProps {
|
|
2675
|
+
open: boolean;
|
|
2676
|
+
onOpenChange: (open: boolean) => void;
|
|
2677
|
+
title?: React$1.ReactNode;
|
|
2678
|
+
description?: React$1.ReactNode;
|
|
2679
|
+
children: React$1.ReactNode;
|
|
2680
|
+
footer?: React$1.ReactNode;
|
|
2681
|
+
size?: ModalSize;
|
|
2682
|
+
/** Hide the top-right close button. */
|
|
2683
|
+
hideClose?: boolean;
|
|
2684
|
+
className?: string;
|
|
2685
|
+
panelClassName?: string;
|
|
2686
|
+
/** Optional className for the body wrapper. */
|
|
2687
|
+
bodyClassName?: string;
|
|
2688
|
+
/** Optional className for the footer wrapper. */
|
|
2689
|
+
footerClassName?: string;
|
|
2690
|
+
/** Optional className for the header wrapper. */
|
|
2691
|
+
headerClassName?: string;
|
|
2692
|
+
}
|
|
2693
|
+
declare function Modal({ open, onOpenChange, title, description, children, footer, size, hideClose, className, panelClassName, bodyClassName, footerClassName, headerClassName, }: ModalProps): React$1.JSX.Element;
|
|
2694
|
+
|
|
2695
|
+
type SheetProps = React$1.ComponentProps<typeof DialogPrimitive.Root>;
|
|
2696
|
+
type SheetTriggerProps = React$1.ComponentProps<typeof DialogPrimitive.Trigger>;
|
|
2697
|
+
type SheetPortalProps = React$1.ComponentProps<typeof DialogPrimitive.Portal>;
|
|
2698
|
+
type SheetCloseProps = React$1.ComponentProps<typeof DialogPrimitive.Close>;
|
|
2699
|
+
type SheetOverlayProps = React$1.ComponentProps<typeof DialogPrimitive.Overlay>;
|
|
2700
|
+
type SheetContentSide = "top" | "right" | "bottom" | "left";
|
|
2701
|
+
type SheetContentProps = React$1.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
2702
|
+
side?: SheetContentSide;
|
|
2703
|
+
/** Whether to render the top-right close button. */
|
|
2704
|
+
showCloseButton?: boolean;
|
|
2705
|
+
};
|
|
2706
|
+
type SheetHeaderProps = React$1.ComponentProps<"div">;
|
|
2707
|
+
type SheetFooterProps = React$1.ComponentProps<"div">;
|
|
2708
|
+
type SheetTitleProps = React$1.ComponentProps<typeof DialogPrimitive.Title>;
|
|
2709
|
+
type SheetDescriptionProps = React$1.ComponentProps<typeof DialogPrimitive.Description>;
|
|
2710
|
+
declare function Sheet({ ...props }: SheetProps): React$1.JSX.Element;
|
|
2711
|
+
declare function SheetTrigger({ ...props }: SheetTriggerProps): React$1.JSX.Element;
|
|
2712
|
+
declare function SheetPortal({ ...props }: SheetPortalProps): React$1.JSX.Element;
|
|
2713
|
+
declare function SheetClose({ ...props }: SheetCloseProps): React$1.JSX.Element;
|
|
2714
|
+
declare function SheetOverlay({ className, ...props }: SheetOverlayProps): React$1.JSX.Element;
|
|
2715
|
+
declare function SheetContent({ className, children, side, showCloseButton, ...props }: SheetContentProps): React$1.JSX.Element;
|
|
2716
|
+
declare function SheetHeader({ className, ...props }: SheetHeaderProps): React$1.JSX.Element;
|
|
2717
|
+
declare function SheetFooter({ className, ...props }: SheetFooterProps): React$1.JSX.Element;
|
|
2718
|
+
declare function SheetTitle({ className, ...props }: SheetTitleProps): React$1.JSX.Element;
|
|
2719
|
+
declare function SheetDescription({ className, ...props }: SheetDescriptionProps): React$1.JSX.Element;
|
|
2720
|
+
|
|
2721
|
+
type TableProps = React$1.ComponentProps<"table">;
|
|
2722
|
+
type TableHeaderProps = React$1.ComponentProps<"thead">;
|
|
2723
|
+
type TableBodyProps = React$1.ComponentProps<"tbody">;
|
|
2724
|
+
type TableFooterProps = React$1.ComponentProps<"tfoot">;
|
|
2725
|
+
type TableRowProps = React$1.ComponentProps<"tr">;
|
|
2726
|
+
type TableHeadProps = React$1.ComponentProps<"th">;
|
|
2727
|
+
type TableCellProps = React$1.ComponentProps<"td">;
|
|
2728
|
+
type TableCaptionProps = React$1.ComponentProps<"caption">;
|
|
2729
|
+
declare function Table({ className, ...props }: TableProps): React$1.JSX.Element;
|
|
2730
|
+
declare function TableHeader({ className, ...props }: TableHeaderProps): React$1.JSX.Element;
|
|
2731
|
+
declare function TableBody({ className, ...props }: TableBodyProps): React$1.JSX.Element;
|
|
2732
|
+
declare function TableFooter({ className, ...props }: TableFooterProps): React$1.JSX.Element;
|
|
2733
|
+
declare function TableRow({ className, ...props }: TableRowProps): React$1.JSX.Element;
|
|
2734
|
+
declare function TableHead({ className, ...props }: TableHeadProps): React$1.JSX.Element;
|
|
2735
|
+
declare function TableCell({ className, ...props }: TableCellProps): React$1.JSX.Element;
|
|
2736
|
+
declare function TableCaption({ className, ...props }: TableCaptionProps): React$1.JSX.Element;
|
|
2737
|
+
|
|
2738
|
+
type HoverCardProps = React$1.ComponentProps<typeof HoverCardPrimitive.Root>;
|
|
2739
|
+
type HoverCardTriggerProps = React$1.ComponentProps<typeof HoverCardPrimitive.Trigger>;
|
|
2740
|
+
type HoverCardContentProps = React$1.ComponentProps<typeof HoverCardPrimitive.Content>;
|
|
2741
|
+
declare function HoverCard({ ...props }: HoverCardProps): React$1.JSX.Element;
|
|
2742
|
+
declare function HoverCardTrigger({ ...props }: HoverCardTriggerProps): React$1.JSX.Element;
|
|
2743
|
+
declare function HoverCardContent({ className, align, sideOffset, ...props }: HoverCardContentProps): React$1.JSX.Element;
|
|
2744
|
+
|
|
2745
|
+
type CardDecoratorProps = React$1.ComponentProps<"div"> & {
|
|
2746
|
+
/** The decorative center content (usually an icon). */
|
|
2747
|
+
children: React$1.ReactNode;
|
|
2748
|
+
};
|
|
2749
|
+
/**
|
|
2750
|
+
* CardDecorator
|
|
2751
|
+
* Small decorative wrapper for empty states / feature callouts.
|
|
2752
|
+
* Token-driven, no inline styles.
|
|
2753
|
+
*/
|
|
2754
|
+
declare function CardDecorator({ className, children, ...props }: CardDecoratorProps): React$1.JSX.Element;
|
|
2755
|
+
|
|
2756
|
+
type ProgressVariant = "primary" | "secondary" | "tertiary" | "accent" | "destructive" | "muted" | "foreground";
|
|
2757
|
+
type ProgressSize = "sm" | "md" | "lg";
|
|
2758
|
+
type ProgressProps = React$1.ComponentProps<typeof ProgressPrimitive.Root> & {
|
|
2759
|
+
/** 0-100 */
|
|
2760
|
+
value?: number | null;
|
|
2761
|
+
variant?: ProgressVariant;
|
|
2762
|
+
size?: ProgressSize;
|
|
2763
|
+
};
|
|
2764
|
+
declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2765
|
+
|
|
2766
|
+
type SliderSize = "sm" | "md" | "lg";
|
|
2767
|
+
type SliderVariant = "tertiary" | "foreground" | "primary" | "secondary" | "accent" | "destructive" | "muted";
|
|
2768
|
+
type SliderThumbStyle = "outline" | "solid";
|
|
2769
|
+
type SliderMark = {
|
|
2770
|
+
value: number;
|
|
2771
|
+
label?: React$1.ReactNode;
|
|
2772
|
+
};
|
|
2773
|
+
type SliderProps = React$1.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> & {
|
|
2774
|
+
size?: SliderSize;
|
|
2775
|
+
variant?: SliderVariant;
|
|
2776
|
+
/**
|
|
2777
|
+
* Thumb visual style.
|
|
2778
|
+
* - outline: background uses `bg-background` with a token border.
|
|
2779
|
+
* - solid: background uses the token variant color.
|
|
2780
|
+
*/
|
|
2781
|
+
thumbStyle?: SliderThumbStyle;
|
|
2782
|
+
/**
|
|
2783
|
+
* Optional marks/ticks along the track.
|
|
2784
|
+
* Provide `label` to render step labels.
|
|
2785
|
+
*/
|
|
2786
|
+
marks?: SliderMark[];
|
|
2787
|
+
/** Render labels for marks that include `label`. */
|
|
2788
|
+
showMarkLabels?: boolean;
|
|
2789
|
+
};
|
|
2790
|
+
declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & {
|
|
2791
|
+
size?: SliderSize;
|
|
2792
|
+
variant?: SliderVariant;
|
|
2793
|
+
/**
|
|
2794
|
+
* Thumb visual style.
|
|
2795
|
+
* - outline: background uses `bg-background` with a token border.
|
|
2796
|
+
* - solid: background uses the token variant color.
|
|
2797
|
+
*/
|
|
2798
|
+
thumbStyle?: SliderThumbStyle;
|
|
2799
|
+
/**
|
|
2800
|
+
* Optional marks/ticks along the track.
|
|
2801
|
+
* Provide `label` to render step labels.
|
|
2802
|
+
*/
|
|
2803
|
+
marks?: SliderMark[];
|
|
2804
|
+
/** Render labels for marks that include `label`. */
|
|
2805
|
+
showMarkLabels?: boolean;
|
|
2806
|
+
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2807
|
+
|
|
2808
|
+
interface LoadingSpinnerProps {
|
|
2809
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
2810
|
+
variant?: 'default' | 'primary' | 'white' | 'gray';
|
|
2811
|
+
className?: string;
|
|
2812
|
+
text?: string;
|
|
2813
|
+
}
|
|
2814
|
+
declare function LoadingSpinner({ size, variant, className, text }: LoadingSpinnerProps): React$1.JSX.Element;
|
|
2815
|
+
declare function CardSkeleton({ className }: {
|
|
2816
|
+
className?: string;
|
|
2817
|
+
}): React$1.JSX.Element;
|
|
2818
|
+
declare function TableSkeleton({ rows, columns }: {
|
|
2819
|
+
rows?: number;
|
|
2820
|
+
columns?: number;
|
|
2821
|
+
}): React$1.JSX.Element;
|
|
2822
|
+
|
|
2823
|
+
/**
|
|
2824
|
+
* Skeleton: Loading placeholder (composable building block).
|
|
2825
|
+
*
|
|
2826
|
+
* Design-system contract
|
|
2827
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
2828
|
+
* - Tokens-only: no Tailwind palette colors; use semantic token classes only.
|
|
2829
|
+
* - Compositional: prefer composition (Avatar/Text/Card/Form/Table patterns) over config-heavy APIs.
|
|
2830
|
+
* - Motion: respects `prefers-reduced-motion` via Tailwind `motion-*` utilities.
|
|
2831
|
+
* - A11y: skeletons are typically decorative; set `aria-busy` on the parent region while loading.
|
|
2832
|
+
*
|
|
2833
|
+
* @author: @mindtris-team
|
|
2834
|
+
* @version: 0.3.0
|
|
2835
|
+
* @since: 2026-02-01
|
|
2836
|
+
*
|
|
2837
|
+
* @example
|
|
2838
|
+
* <div aria-busy="true" aria-live="polite">
|
|
2839
|
+
* <Skeleton className="h-10 w-10 rounded-full" />
|
|
2840
|
+
* <Skeleton lines={2} className="mt-3" />
|
|
2841
|
+
* </div>
|
|
2842
|
+
*
|
|
2843
|
+
* Reference: shadcn + Mindtris UI (composition patterns).
|
|
2844
|
+
*/
|
|
2845
|
+
|
|
2846
|
+
type SkeletonTone = 'muted' | 'accent';
|
|
2847
|
+
type SkeletonRadius = 'sm' | 'md' | 'lg' | 'full';
|
|
2848
|
+
type SkeletonLineSize = 'sm' | 'md' | 'lg';
|
|
2849
|
+
interface SkeletonProps extends React$1.ComponentPropsWithoutRef<'div'> {
|
|
2850
|
+
/**
|
|
2851
|
+
* Optional multi-line skeleton helper (kept for back-compat).
|
|
2852
|
+
* When set to > 1, the component renders a stack of line placeholders.
|
|
2853
|
+
*/
|
|
2854
|
+
lines?: number;
|
|
2855
|
+
/** Visual tone (semantic token background). */
|
|
2856
|
+
tone?: SkeletonTone;
|
|
2857
|
+
/** Corner radius for the single-block skeleton. */
|
|
2858
|
+
radius?: SkeletonRadius;
|
|
2859
|
+
/** Line height when `lines` is used. */
|
|
2860
|
+
lineSize?: SkeletonLineSize;
|
|
2861
|
+
}
|
|
2862
|
+
declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2863
|
+
|
|
2864
|
+
interface ErrorBoundaryState {
|
|
2865
|
+
hasError: boolean;
|
|
2866
|
+
error: Error | null;
|
|
2867
|
+
}
|
|
2868
|
+
interface ErrorBoundaryProps {
|
|
2869
|
+
children: React__default.ReactNode;
|
|
2870
|
+
fallback?: React__default.ComponentType<{
|
|
2871
|
+
error: Error | null;
|
|
2872
|
+
resetError: () => void;
|
|
2873
|
+
}>;
|
|
2874
|
+
}
|
|
2875
|
+
/**
|
|
2876
|
+
* Error Boundary component for theme system
|
|
2877
|
+
* Follows CONTRIBUTING.md: error handling, error boundaries
|
|
2878
|
+
*/
|
|
2879
|
+
declare class ErrorBoundary extends React__default.Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
2880
|
+
constructor(props: ErrorBoundaryProps);
|
|
2881
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
2882
|
+
componentDidCatch(error: Error, errorInfo: React__default.ErrorInfo): void;
|
|
2883
|
+
resetError: () => void;
|
|
2884
|
+
render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode>> | React__default.JSX.Element;
|
|
2885
|
+
}
|
|
2886
|
+
declare function ErrorFallback({ error, resetError, }: {
|
|
2887
|
+
error: Error | null;
|
|
2888
|
+
resetError: () => void;
|
|
2889
|
+
}): React__default.JSX.Element;
|
|
2890
|
+
declare function useErrorHandler(): {
|
|
2891
|
+
error: Error;
|
|
2892
|
+
setError: React__default.Dispatch<React__default.SetStateAction<Error>>;
|
|
2893
|
+
resetError: () => void;
|
|
2894
|
+
handleError: (err: unknown) => void;
|
|
2895
|
+
};
|
|
2896
|
+
|
|
2897
|
+
type CalendarProps = React$1.ComponentProps<typeof DayPicker>;
|
|
2898
|
+
declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps): React$1.JSX.Element;
|
|
2899
|
+
declare namespace Calendar {
|
|
2900
|
+
var displayName: string;
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2903
|
+
interface DatePickerProps {
|
|
2904
|
+
/** Selected date (controlled). */
|
|
2905
|
+
value?: Date;
|
|
2906
|
+
/** Called when date is selected. */
|
|
2907
|
+
onSelect?: (date: Date | undefined) => void;
|
|
2908
|
+
/** Placeholder when no date selected. */
|
|
2909
|
+
placeholder?: string;
|
|
2910
|
+
/** Disabled state. */
|
|
2911
|
+
disabled?: boolean;
|
|
2912
|
+
/** Trigger button class. */
|
|
2913
|
+
className?: string;
|
|
2914
|
+
/** Calendar props (e.g. disabled dates). mode/selected/onSelect/required are controlled by this component. */
|
|
2915
|
+
calendarProps?: Omit<React$1.ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect' | 'required'>;
|
|
2916
|
+
}
|
|
2917
|
+
/**
|
|
2918
|
+
* DatePicker
|
|
2919
|
+
* Single-date picker: Popover + Calendar. Token-driven, minimal state.
|
|
2920
|
+
* Reusable component; no business logic. Composition: PopoverTrigger + Calendar.
|
|
2921
|
+
*/
|
|
2922
|
+
declare function DatePicker({ value, onSelect, placeholder, disabled, className, calendarProps, }: DatePickerProps): React$1.JSX.Element;
|
|
2923
|
+
interface DatePickerRangeProps {
|
|
2924
|
+
/** Selected range (controlled). */
|
|
2925
|
+
value?: DateRange;
|
|
2926
|
+
/** Called when range is selected. */
|
|
2927
|
+
onSelect?: (range: DateRange | undefined) => void;
|
|
2928
|
+
/** Placeholder when no range selected. */
|
|
2929
|
+
placeholder?: string;
|
|
2930
|
+
/** Disabled state. */
|
|
2931
|
+
disabled?: boolean;
|
|
2932
|
+
/** Trigger button class. */
|
|
2933
|
+
className?: string;
|
|
2934
|
+
/** Calendar props. mode/selected/onSelect/required are controlled by this component. */
|
|
2935
|
+
calendarProps?: Omit<React$1.ComponentProps<typeof Calendar>, 'mode' | 'selected' | 'onSelect' | 'required'>;
|
|
2936
|
+
}
|
|
2937
|
+
/**
|
|
2938
|
+
* DatePickerRange
|
|
2939
|
+
* Range date picker: Popover + Calendar in range mode. Token-driven, minimal state.
|
|
2940
|
+
*/
|
|
2941
|
+
declare function DatePickerRange({ value, onSelect, placeholder, disabled, className, calendarProps, }: DatePickerRangeProps): React$1.JSX.Element;
|
|
2942
|
+
|
|
2943
|
+
declare function Header({ variant, rightSlot, }: {
|
|
2944
|
+
variant?: 'default' | 'v2' | 'v3';
|
|
2945
|
+
/** App-specific header actions (search, notifications, theme toggle, profile). Pass from app. */
|
|
2946
|
+
rightSlot?: ReactNode;
|
|
2947
|
+
}): React$1.JSX.Element;
|
|
2948
|
+
|
|
2949
|
+
interface NavbarLink {
|
|
2950
|
+
href: string;
|
|
2951
|
+
label: string;
|
|
2952
|
+
}
|
|
2953
|
+
interface NavbarProps {
|
|
2954
|
+
/** Left side brand. Defaults to Mindtris logo + "Design System". */
|
|
2955
|
+
brand?: React__default.ReactNode;
|
|
2956
|
+
links?: readonly NavbarLink[];
|
|
2957
|
+
rightSlot?: React__default.ReactNode;
|
|
2958
|
+
className?: string;
|
|
2959
|
+
}
|
|
2960
|
+
declare function Navbar({ brand, links, rightSlot, className }: NavbarProps): React__default.JSX.Element;
|
|
2961
|
+
|
|
2962
|
+
type TabsVariant = 'simple' | 'underline' | 'container';
|
|
2963
|
+
interface TabsItem {
|
|
2964
|
+
id: string;
|
|
2965
|
+
label: string;
|
|
2966
|
+
icon?: React__default.ReactNode;
|
|
2967
|
+
}
|
|
2968
|
+
interface TabsProps {
|
|
2969
|
+
items: readonly TabsItem[];
|
|
2970
|
+
value: string;
|
|
2971
|
+
onValueChange: (id: string) => void;
|
|
2972
|
+
variant?: TabsVariant;
|
|
2973
|
+
className?: string;
|
|
2974
|
+
}
|
|
2975
|
+
/**
|
|
2976
|
+
* Tabs
|
|
2977
|
+
* Based on `app/(alternative)/components-library/tabs`.
|
|
2978
|
+
* - simple: bottom border container
|
|
2979
|
+
* - underline: active underline
|
|
2980
|
+
* - container: pill buttons (existing)
|
|
2981
|
+
*/
|
|
2982
|
+
declare function Tabs({ items, value, onValueChange, variant, className, }: TabsProps): React__default.JSX.Element;
|
|
2983
|
+
type TabsWithContainerItem = TabsItem;
|
|
2984
|
+
declare function TabsWithContainer(props: Omit<TabsProps, 'variant'>): React__default.JSX.Element;
|
|
2985
|
+
|
|
2986
|
+
/**
|
|
2987
|
+
* Tabs (Radix): shadcn-style tab primitives.
|
|
2988
|
+
*
|
|
2989
|
+
* Design-system contract
|
|
2990
|
+
* - Scope: UI-only primitive.
|
|
2991
|
+
* - Tokens-only: semantic token classes only.
|
|
2992
|
+
* - A11y: Radix handles keyboard + aria.
|
|
2993
|
+
*
|
|
2994
|
+
* Reference: shadcn `tabs.tsx`.
|
|
2995
|
+
*/
|
|
2996
|
+
|
|
2997
|
+
type TabsRootProps = React$1.ComponentProps<typeof TabsPrimitive.Root>;
|
|
2998
|
+
type TabsListProps = React$1.ComponentProps<typeof TabsPrimitive.List> & {
|
|
2999
|
+
/** Visual style of the tab list. */
|
|
3000
|
+
variant?: 'segmented' | 'line' | 'line-separator';
|
|
3001
|
+
};
|
|
3002
|
+
type TabsTriggerProps = React$1.ComponentProps<typeof TabsPrimitive.Trigger>;
|
|
3003
|
+
type TabsContentProps = React$1.ComponentProps<typeof TabsPrimitive.Content>;
|
|
3004
|
+
declare function TabsRoot({ className, ...props }: TabsRootProps): React$1.JSX.Element;
|
|
3005
|
+
declare function TabsList({ className, variant, ...props }: TabsListProps): React$1.JSX.Element;
|
|
3006
|
+
declare function TabsTrigger({ className, ...props }: TabsTriggerProps): React$1.JSX.Element;
|
|
3007
|
+
declare function TabsContent({ className, ...props }: TabsContentProps): React$1.JSX.Element;
|
|
3008
|
+
|
|
3009
|
+
/** Shared collapsible section used across Colors, Typography, Other tabs (design-system consistency) */
|
|
3010
|
+
interface CollapsibleSectionProps {
|
|
3011
|
+
title: string;
|
|
3012
|
+
open: boolean;
|
|
3013
|
+
onToggle: () => void;
|
|
3014
|
+
children: React__default.ReactNode;
|
|
3015
|
+
className?: string;
|
|
3016
|
+
}
|
|
3017
|
+
declare function CollapsibleSection({ title, open, onToggle, children, className }: CollapsibleSectionProps): React__default.JSX.Element;
|
|
3018
|
+
|
|
3019
|
+
declare const Collapsible: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3020
|
+
declare const CollapsibleTrigger: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
3021
|
+
declare const CollapsibleContent: React$1.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3022
|
+
|
|
3023
|
+
declare const THEMES: {
|
|
3024
|
+
readonly light: "";
|
|
3025
|
+
readonly dark: ".dark";
|
|
3026
|
+
};
|
|
3027
|
+
type ChartConfig = {
|
|
3028
|
+
[k in string]: {
|
|
3029
|
+
label?: React$1.ReactNode;
|
|
3030
|
+
icon?: React$1.ComponentType<{
|
|
3031
|
+
className?: string;
|
|
3032
|
+
}>;
|
|
3033
|
+
} & ({
|
|
3034
|
+
color?: string;
|
|
3035
|
+
theme?: never;
|
|
3036
|
+
} | {
|
|
3037
|
+
color?: never;
|
|
3038
|
+
theme: Record<keyof typeof THEMES, string>;
|
|
3039
|
+
});
|
|
3040
|
+
};
|
|
3041
|
+
type ChartContainerProps = React$1.ComponentProps<'div'> & {
|
|
3042
|
+
config: ChartConfig;
|
|
3043
|
+
children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
|
|
3044
|
+
};
|
|
3045
|
+
declare function ChartContainer({ id, className, children, config, ...props }: ChartContainerProps): React$1.JSX.Element;
|
|
3046
|
+
declare function ChartStyle({ id, config, }: {
|
|
3047
|
+
id: string;
|
|
3048
|
+
config: ChartConfig;
|
|
3049
|
+
}): React$1.JSX.Element;
|
|
3050
|
+
declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
3051
|
+
type ChartTooltipContentProps = React$1.ComponentProps<typeof RechartsPrimitive.Tooltip> & React$1.ComponentProps<'div'> & {
|
|
3052
|
+
hideLabel?: boolean;
|
|
3053
|
+
hideIndicator?: boolean;
|
|
3054
|
+
indicator?: 'line' | 'dot' | 'dashed';
|
|
3055
|
+
nameKey?: string;
|
|
3056
|
+
labelKey?: string;
|
|
3057
|
+
};
|
|
3058
|
+
declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: ChartTooltipContentProps): React$1.JSX.Element;
|
|
3059
|
+
declare const ChartLegend: typeof RechartsPrimitive.Legend;
|
|
3060
|
+
type ChartLegendContentProps = React$1.ComponentProps<'div'> & Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {
|
|
3061
|
+
hideIcon?: boolean;
|
|
3062
|
+
nameKey?: string;
|
|
3063
|
+
};
|
|
3064
|
+
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: ChartLegendContentProps): React$1.JSX.Element;
|
|
3065
|
+
|
|
3066
|
+
type LabelProps = React$1.LabelHTMLAttributes<HTMLLabelElement>;
|
|
3067
|
+
/**
|
|
3068
|
+
* Label
|
|
3069
|
+
* Accessible label for form controls. Use with htmlFor + id on the control.
|
|
3070
|
+
* Token-driven; supports peer-disabled and group disabled state.
|
|
3071
|
+
* Composable: no business logic, no domain terminology.
|
|
3072
|
+
*/
|
|
3073
|
+
declare const Label: React$1.ForwardRefExoticComponent<LabelProps & React$1.RefAttributes<HTMLLabelElement>>;
|
|
3074
|
+
|
|
3075
|
+
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
|
|
3076
|
+
declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ControllerProps<TFieldValues, TName>): React$1.JSX.Element;
|
|
3077
|
+
declare function useFormField(): {
|
|
3078
|
+
invalid: boolean;
|
|
3079
|
+
isDirty: boolean;
|
|
3080
|
+
isTouched: boolean;
|
|
3081
|
+
isValidating: boolean;
|
|
3082
|
+
error?: react_hook_form.FieldError;
|
|
3083
|
+
id: string;
|
|
3084
|
+
name: string;
|
|
3085
|
+
formItemId: string;
|
|
3086
|
+
formDescriptionId: string;
|
|
3087
|
+
formMessageId: string;
|
|
3088
|
+
};
|
|
3089
|
+
declare function FormItem({ className, ...props }: React$1.ComponentProps<'div'>): React$1.JSX.Element;
|
|
3090
|
+
declare function FormLabel({ className, ...props }: React$1.ComponentProps<typeof Label>): React$1.JSX.Element;
|
|
3091
|
+
declare function FormControl(props: React$1.ComponentProps<typeof Slot>): React$1.JSX.Element;
|
|
3092
|
+
declare function FormDescription({ className, ...props }: React$1.ComponentProps<'p'>): React$1.JSX.Element;
|
|
3093
|
+
declare function FormMessage({ className, ...props }: React$1.ComponentProps<'p'>): React$1.JSX.Element;
|
|
3094
|
+
|
|
3095
|
+
declare function NavigationMenuRoot({ className, children, viewport, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
|
|
3096
|
+
viewport?: boolean;
|
|
3097
|
+
}): React$1.JSX.Element;
|
|
3098
|
+
declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>): React$1.JSX.Element;
|
|
3099
|
+
declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>): React$1.JSX.Element;
|
|
3100
|
+
declare const navigationMenuTriggerClass = "inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground";
|
|
3101
|
+
declare function NavigationMenuTrigger({ className, children, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): React$1.JSX.Element;
|
|
3102
|
+
declare function NavigationMenuContent({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Content>): React$1.JSX.Element;
|
|
3103
|
+
declare function NavigationMenuViewport({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): React$1.JSX.Element;
|
|
3104
|
+
declare function NavigationMenuLink({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Link>): React$1.JSX.Element;
|
|
3105
|
+
declare function NavigationMenuIndicator({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): React$1.JSX.Element;
|
|
3106
|
+
|
|
3107
|
+
declare function ThemeToggleIcon(): React$1.JSX.Element;
|
|
3108
|
+
|
|
3109
|
+
/**
|
|
3110
|
+
* Icon constants for consistent styling across the design system
|
|
3111
|
+
*/
|
|
3112
|
+
declare const ICON_DEFAULT_SIZE = 16;
|
|
3113
|
+
declare const ICON_DEFAULT_STROKE_WIDTH = 2.25;
|
|
3114
|
+
declare const ICON_SIZES: {
|
|
3115
|
+
readonly xs: 12;
|
|
3116
|
+
readonly sm: 14;
|
|
3117
|
+
readonly md: 16;
|
|
3118
|
+
readonly lg: 20;
|
|
3119
|
+
readonly xl: 24;
|
|
3120
|
+
};
|
|
3121
|
+
type IconSize = keyof typeof ICON_SIZES;
|
|
3122
|
+
|
|
3123
|
+
interface IconProps extends React$1.SVGProps<SVGSVGElement> {
|
|
3124
|
+
/** Lucide icon component */
|
|
3125
|
+
icon: LucideIcon;
|
|
3126
|
+
/** Icon size - defaults to 'md' (16px) */
|
|
3127
|
+
size?: IconSize | number;
|
|
3128
|
+
/** Stroke width - defaults to 1.5 */
|
|
3129
|
+
strokeWidth?: number;
|
|
3130
|
+
/** Additional className */
|
|
3131
|
+
className?: string;
|
|
3132
|
+
}
|
|
3133
|
+
/**
|
|
3134
|
+
* Centralized Icon component for consistent styling across the design system
|
|
3135
|
+
*
|
|
3136
|
+
* Ensures all icons have consistent stroke width and sizing.
|
|
3137
|
+
*
|
|
3138
|
+
* @example
|
|
3139
|
+
* ```tsx
|
|
3140
|
+
* import { Icon } from '@mindtris/design-system'
|
|
3141
|
+
* import { GitCompareArrows } from 'lucide-react'
|
|
3142
|
+
*
|
|
3143
|
+
* <Icon icon={GitCompareArrows} size="md" />
|
|
3144
|
+
* ```
|
|
3145
|
+
*/
|
|
3146
|
+
declare function Icon({ icon: IconComponent, size, strokeWidth, className, ...props }: IconProps): React$1.JSX.Element;
|
|
3147
|
+
/**
|
|
3148
|
+
* Helper function to create an icon element with consistent styling
|
|
3149
|
+
* Useful for inline usage where you want to pass the icon directly
|
|
3150
|
+
*
|
|
3151
|
+
* @example
|
|
3152
|
+
* ```tsx
|
|
3153
|
+
* import { createIcon } from '@mindtris/design-system'
|
|
3154
|
+
* import { GitCompareArrows } from 'lucide-react'
|
|
3155
|
+
*
|
|
3156
|
+
* const icon = createIcon(GitCompareArrows, { size: 'md' })
|
|
3157
|
+
* ```
|
|
3158
|
+
*/
|
|
3159
|
+
declare function createIcon(IconComponent: LucideIcon, options?: {
|
|
3160
|
+
size?: IconSize | number;
|
|
3161
|
+
strokeWidth?: number;
|
|
3162
|
+
className?: string;
|
|
3163
|
+
}): React$1.ReactElement;
|
|
3164
|
+
|
|
3165
|
+
/**
|
|
3166
|
+
* Kbd: Keyboard shortcut display.
|
|
3167
|
+
*
|
|
3168
|
+
* Design-system contract:
|
|
3169
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
3170
|
+
* - Tokens-only: semantic token classes only.
|
|
3171
|
+
* - Composition: renders <kbd> with token styling.
|
|
3172
|
+
*
|
|
3173
|
+
* @author: @mindtris-team
|
|
3174
|
+
* @version: 0.1.0
|
|
3175
|
+
* @since: 2026-02-05
|
|
3176
|
+
*/
|
|
3177
|
+
|
|
3178
|
+
interface KbdProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
3179
|
+
/** Size variant. */
|
|
3180
|
+
size?: "sm" | "default" | "lg";
|
|
3181
|
+
}
|
|
3182
|
+
declare const Kbd: React$1.ForwardRefExoticComponent<KbdProps & React$1.RefAttributes<HTMLElement>>;
|
|
3183
|
+
|
|
3184
|
+
type CommandProps = React$1.ComponentPropsWithoutRef<typeof Command$1>;
|
|
3185
|
+
type CommandDialogProps = DialogProps & {
|
|
3186
|
+
title?: string;
|
|
3187
|
+
description?: string;
|
|
3188
|
+
/** Props applied to the inner command root. */
|
|
3189
|
+
commandProps?: CommandProps;
|
|
3190
|
+
/** Extra classes applied to the dialog content. */
|
|
3191
|
+
className?: string;
|
|
3192
|
+
/** Whether to render the top-right close button. */
|
|
3193
|
+
showCloseButton?: boolean;
|
|
3194
|
+
};
|
|
3195
|
+
declare const Command: React$1.ForwardRefExoticComponent<Omit<{
|
|
3196
|
+
children?: React$1.ReactNode;
|
|
3197
|
+
} & Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3198
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3199
|
+
} & {
|
|
3200
|
+
asChild?: boolean;
|
|
3201
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3202
|
+
label?: string;
|
|
3203
|
+
shouldFilter?: boolean;
|
|
3204
|
+
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
3205
|
+
defaultValue?: string;
|
|
3206
|
+
value?: string;
|
|
3207
|
+
onValueChange?: (value: string) => void;
|
|
3208
|
+
loop?: boolean;
|
|
3209
|
+
disablePointerSelection?: boolean;
|
|
3210
|
+
vimBindings?: boolean;
|
|
3211
|
+
} & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3212
|
+
declare function CommandDialog({ title, description, children, commandProps, className, showCloseButton, ...props }: CommandDialogProps): React$1.JSX.Element;
|
|
3213
|
+
declare const CommandInput: React$1.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React$1.DetailedHTMLProps<React$1.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React$1.InputHTMLAttributes<HTMLInputElement>> & {
|
|
3214
|
+
ref?: React$1.Ref<HTMLInputElement>;
|
|
3215
|
+
} & {
|
|
3216
|
+
asChild?: boolean;
|
|
3217
|
+
}, "key" | "asChild" | keyof React$1.InputHTMLAttributes<HTMLInputElement>>, "value" | "type" | "onChange"> & {
|
|
3218
|
+
value?: string;
|
|
3219
|
+
onValueChange?: (search: string) => void;
|
|
3220
|
+
} & React$1.RefAttributes<HTMLInputElement>, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
3221
|
+
declare const CommandList: React$1.ForwardRefExoticComponent<Omit<{
|
|
3222
|
+
children?: React$1.ReactNode;
|
|
3223
|
+
} & Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3224
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3225
|
+
} & {
|
|
3226
|
+
asChild?: boolean;
|
|
3227
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3228
|
+
label?: string;
|
|
3229
|
+
} & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3230
|
+
declare const CommandEmpty: React$1.ForwardRefExoticComponent<Omit<{
|
|
3231
|
+
children?: React$1.ReactNode;
|
|
3232
|
+
} & Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3233
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3234
|
+
} & {
|
|
3235
|
+
asChild?: boolean;
|
|
3236
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>> & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3237
|
+
declare const CommandGroup: React$1.ForwardRefExoticComponent<Omit<{
|
|
3238
|
+
children?: React$1.ReactNode;
|
|
3239
|
+
} & Omit<Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3240
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3241
|
+
} & {
|
|
3242
|
+
asChild?: boolean;
|
|
3243
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
|
|
3244
|
+
heading?: React$1.ReactNode;
|
|
3245
|
+
value?: string;
|
|
3246
|
+
forceMount?: boolean;
|
|
3247
|
+
} & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3248
|
+
declare const CommandSeparator: React$1.ForwardRefExoticComponent<Omit<Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3249
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3250
|
+
} & {
|
|
3251
|
+
asChild?: boolean;
|
|
3252
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3253
|
+
alwaysRender?: boolean;
|
|
3254
|
+
} & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3255
|
+
declare const CommandItem: React$1.ForwardRefExoticComponent<Omit<{
|
|
3256
|
+
children?: React$1.ReactNode;
|
|
3257
|
+
} & Omit<Pick<Pick<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React$1.HTMLAttributes<HTMLDivElement>> & {
|
|
3258
|
+
ref?: React$1.Ref<HTMLDivElement>;
|
|
3259
|
+
} & {
|
|
3260
|
+
asChild?: boolean;
|
|
3261
|
+
}, "key" | "asChild" | keyof React$1.HTMLAttributes<HTMLDivElement>>, "value" | "disabled" | "onSelect"> & {
|
|
3262
|
+
disabled?: boolean;
|
|
3263
|
+
onSelect?: (value: string) => void;
|
|
3264
|
+
value?: string;
|
|
3265
|
+
keywords?: string[];
|
|
3266
|
+
forceMount?: boolean;
|
|
3267
|
+
} & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3268
|
+
declare function CommandShortcut({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
|
|
3269
|
+
|
|
3270
|
+
type ScrollAreaProps = React$1.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>;
|
|
3271
|
+
type ScrollAreaViewportProps = React$1.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Viewport>;
|
|
3272
|
+
type ScrollBarProps = React$1.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Scrollbar>;
|
|
3273
|
+
/**
|
|
3274
|
+
* ScrollArea
|
|
3275
|
+
* Token-styled scroll container with Radix primitives. Vertical scroll by default.
|
|
3276
|
+
* Add <ScrollBar orientation="horizontal" /> as a child for horizontal scroll (shadcn-style composition).
|
|
3277
|
+
*/
|
|
3278
|
+
declare const ScrollArea: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3279
|
+
declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
3280
|
+
|
|
3281
|
+
type ResizablePanelGroupProps = React$1.ComponentPropsWithoutRef<typeof Group> & {
|
|
3282
|
+
/**
|
|
3283
|
+
* Alias for `orientation`.
|
|
3284
|
+
* Kept for familiarity with other design systems.
|
|
3285
|
+
*/
|
|
3286
|
+
direction?: "horizontal" | "vertical";
|
|
3287
|
+
};
|
|
3288
|
+
type ResizablePanelProps = React$1.ComponentPropsWithoutRef<typeof Panel>;
|
|
3289
|
+
type ResizableHandleProps = React$1.ComponentPropsWithoutRef<typeof Separator$1> & {
|
|
3290
|
+
/** Renders a visible grab handle affordance. */
|
|
3291
|
+
withHandle?: boolean;
|
|
3292
|
+
};
|
|
3293
|
+
declare function ResizablePanelGroup({ className, direction, orientation: orientationProp, ...props }: ResizablePanelGroupProps): React$1.JSX.Element;
|
|
3294
|
+
declare function ResizablePanel({ className, ...props }: ResizablePanelProps): React$1.JSX.Element;
|
|
3295
|
+
declare const ResizableHandle: React$1.ForwardRefExoticComponent<{
|
|
3296
|
+
slot?: string | undefined;
|
|
3297
|
+
style?: React$1.CSSProperties | undefined;
|
|
3298
|
+
title?: string | undefined;
|
|
3299
|
+
dir?: string | undefined;
|
|
3300
|
+
hidden?: boolean | undefined;
|
|
3301
|
+
inert?: boolean | undefined;
|
|
3302
|
+
"aria-hidden"?: (boolean | "true" | "false") | undefined;
|
|
3303
|
+
id?: string | undefined;
|
|
3304
|
+
"aria-label"?: string | undefined;
|
|
3305
|
+
"aria-labelledby"?: string | undefined;
|
|
3306
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined;
|
|
3307
|
+
"aria-atomic"?: (boolean | "true" | "false") | undefined;
|
|
3308
|
+
defaultValue?: string | number | readonly string[] | undefined;
|
|
3309
|
+
"aria-describedby"?: string | undefined;
|
|
3310
|
+
onClick?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3311
|
+
className?: string | undefined;
|
|
3312
|
+
children?: React$1.ReactNode | undefined;
|
|
3313
|
+
onError?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3314
|
+
popover?: "" | "auto" | "manual" | undefined;
|
|
3315
|
+
color?: string | undefined;
|
|
3316
|
+
defaultChecked?: boolean | undefined;
|
|
3317
|
+
suppressContentEditableWarning?: boolean | undefined;
|
|
3318
|
+
suppressHydrationWarning?: boolean | undefined;
|
|
3319
|
+
accessKey?: string | undefined;
|
|
3320
|
+
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
|
|
3321
|
+
autoFocus?: boolean | undefined;
|
|
3322
|
+
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
3323
|
+
contextMenu?: string | undefined;
|
|
3324
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
3325
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
3326
|
+
lang?: string | undefined;
|
|
3327
|
+
nonce?: string | undefined;
|
|
3328
|
+
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
3329
|
+
translate?: "yes" | "no" | undefined;
|
|
3330
|
+
radioGroup?: string | undefined;
|
|
3331
|
+
about?: string | undefined;
|
|
3332
|
+
content?: string | undefined;
|
|
3333
|
+
datatype?: string | undefined;
|
|
3334
|
+
inlist?: any;
|
|
3335
|
+
prefix?: string | undefined;
|
|
3336
|
+
property?: string | undefined;
|
|
3337
|
+
rel?: string | undefined;
|
|
3338
|
+
resource?: string | undefined;
|
|
3339
|
+
rev?: string | undefined;
|
|
3340
|
+
typeof?: string | undefined;
|
|
3341
|
+
vocab?: string | undefined;
|
|
3342
|
+
autoCorrect?: string | undefined;
|
|
3343
|
+
autoSave?: string | undefined;
|
|
3344
|
+
itemProp?: string | undefined;
|
|
3345
|
+
itemScope?: boolean | undefined;
|
|
3346
|
+
itemType?: string | undefined;
|
|
3347
|
+
itemID?: string | undefined;
|
|
3348
|
+
itemRef?: string | undefined;
|
|
3349
|
+
results?: number | undefined;
|
|
3350
|
+
security?: string | undefined;
|
|
3351
|
+
unselectable?: "on" | "off" | undefined;
|
|
3352
|
+
popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
|
|
3353
|
+
popoverTarget?: string | undefined;
|
|
3354
|
+
inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
|
|
3355
|
+
is?: string | undefined;
|
|
3356
|
+
"aria-activedescendant"?: string | undefined;
|
|
3357
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
|
|
3358
|
+
"aria-braillelabel"?: string | undefined;
|
|
3359
|
+
"aria-brailleroledescription"?: string | undefined;
|
|
3360
|
+
"aria-busy"?: (boolean | "true" | "false") | undefined;
|
|
3361
|
+
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
3362
|
+
"aria-colcount"?: number | undefined;
|
|
3363
|
+
"aria-colindex"?: number | undefined;
|
|
3364
|
+
"aria-colindextext"?: string | undefined;
|
|
3365
|
+
"aria-colspan"?: number | undefined;
|
|
3366
|
+
"aria-controls"?: string | undefined;
|
|
3367
|
+
"aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
|
|
3368
|
+
"aria-description"?: string | undefined;
|
|
3369
|
+
"aria-details"?: string | undefined;
|
|
3370
|
+
"aria-disabled"?: (boolean | "true" | "false") | undefined;
|
|
3371
|
+
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
|
|
3372
|
+
"aria-errormessage"?: string | undefined;
|
|
3373
|
+
"aria-expanded"?: (boolean | "true" | "false") | undefined;
|
|
3374
|
+
"aria-flowto"?: string | undefined;
|
|
3375
|
+
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
|
|
3376
|
+
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
|
|
3377
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
|
|
3378
|
+
"aria-keyshortcuts"?: string | undefined;
|
|
3379
|
+
"aria-level"?: number | undefined;
|
|
3380
|
+
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
3381
|
+
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
3382
|
+
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
3383
|
+
"aria-orientation"?: "horizontal" | "vertical" | undefined;
|
|
3384
|
+
"aria-owns"?: string | undefined;
|
|
3385
|
+
"aria-placeholder"?: string | undefined;
|
|
3386
|
+
"aria-posinset"?: number | undefined;
|
|
3387
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
|
|
3388
|
+
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
3389
|
+
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
|
|
3390
|
+
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
3391
|
+
"aria-roledescription"?: string | undefined;
|
|
3392
|
+
"aria-rowcount"?: number | undefined;
|
|
3393
|
+
"aria-rowindex"?: number | undefined;
|
|
3394
|
+
"aria-rowindextext"?: string | undefined;
|
|
3395
|
+
"aria-rowspan"?: number | undefined;
|
|
3396
|
+
"aria-selected"?: (boolean | "true" | "false") | undefined;
|
|
3397
|
+
"aria-setsize"?: number | undefined;
|
|
3398
|
+
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
|
|
3399
|
+
"aria-valuemax"?: number | undefined;
|
|
3400
|
+
"aria-valuemin"?: number | undefined;
|
|
3401
|
+
"aria-valuenow"?: number | undefined;
|
|
3402
|
+
"aria-valuetext"?: string | undefined;
|
|
3403
|
+
dangerouslySetInnerHTML?: {
|
|
3404
|
+
__html: string | TrustedHTML;
|
|
3405
|
+
} | undefined;
|
|
3406
|
+
onCopy?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3407
|
+
onCopyCapture?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3408
|
+
onCut?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3409
|
+
onCutCapture?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3410
|
+
onPaste?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3411
|
+
onPasteCapture?: React$1.ClipboardEventHandler<HTMLDivElement>;
|
|
3412
|
+
onCompositionEnd?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3413
|
+
onCompositionEndCapture?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3414
|
+
onCompositionStart?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3415
|
+
onCompositionStartCapture?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3416
|
+
onCompositionUpdate?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3417
|
+
onCompositionUpdateCapture?: React$1.CompositionEventHandler<HTMLDivElement>;
|
|
3418
|
+
onFocus?: React$1.FocusEventHandler<HTMLDivElement>;
|
|
3419
|
+
onFocusCapture?: React$1.FocusEventHandler<HTMLDivElement>;
|
|
3420
|
+
onBlur?: React$1.FocusEventHandler<HTMLDivElement>;
|
|
3421
|
+
onBlurCapture?: React$1.FocusEventHandler<HTMLDivElement>;
|
|
3422
|
+
onChange?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3423
|
+
onChangeCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3424
|
+
onBeforeInput?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3425
|
+
onBeforeInputCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3426
|
+
onInput?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3427
|
+
onInputCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3428
|
+
onReset?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3429
|
+
onResetCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3430
|
+
onSubmit?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3431
|
+
onSubmitCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3432
|
+
onInvalid?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3433
|
+
onInvalidCapture?: React$1.FormEventHandler<HTMLDivElement>;
|
|
3434
|
+
onLoad?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3435
|
+
onLoadCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3436
|
+
onErrorCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3437
|
+
onKeyDown?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3438
|
+
onKeyDownCapture?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3439
|
+
onKeyPress?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3440
|
+
onKeyPressCapture?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3441
|
+
onKeyUp?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3442
|
+
onKeyUpCapture?: React$1.KeyboardEventHandler<HTMLDivElement>;
|
|
3443
|
+
onAbort?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3444
|
+
onAbortCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3445
|
+
onCanPlay?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3446
|
+
onCanPlayCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3447
|
+
onCanPlayThrough?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3448
|
+
onCanPlayThroughCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3449
|
+
onDurationChange?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3450
|
+
onDurationChangeCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3451
|
+
onEmptied?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3452
|
+
onEmptiedCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3453
|
+
onEncrypted?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3454
|
+
onEncryptedCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3455
|
+
onEnded?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3456
|
+
onEndedCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3457
|
+
onLoadedData?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3458
|
+
onLoadedDataCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3459
|
+
onLoadedMetadata?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3460
|
+
onLoadedMetadataCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3461
|
+
onLoadStart?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3462
|
+
onLoadStartCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3463
|
+
onPause?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3464
|
+
onPauseCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3465
|
+
onPlay?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3466
|
+
onPlayCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3467
|
+
onPlaying?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3468
|
+
onPlayingCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3469
|
+
onProgress?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3470
|
+
onProgressCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3471
|
+
onRateChange?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3472
|
+
onRateChangeCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3473
|
+
onResize?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3474
|
+
onResizeCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3475
|
+
onSeeked?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3476
|
+
onSeekedCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3477
|
+
onSeeking?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3478
|
+
onSeekingCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3479
|
+
onStalled?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3480
|
+
onStalledCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3481
|
+
onSuspend?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3482
|
+
onSuspendCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3483
|
+
onTimeUpdate?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3484
|
+
onTimeUpdateCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3485
|
+
onVolumeChange?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3486
|
+
onVolumeChangeCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3487
|
+
onWaiting?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3488
|
+
onWaitingCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3489
|
+
onAuxClick?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3490
|
+
onAuxClickCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3491
|
+
onClickCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3492
|
+
onContextMenu?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3493
|
+
onContextMenuCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3494
|
+
onDoubleClick?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3495
|
+
onDoubleClickCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3496
|
+
onDrag?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3497
|
+
onDragCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3498
|
+
onDragEnd?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3499
|
+
onDragEndCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3500
|
+
onDragEnter?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3501
|
+
onDragEnterCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3502
|
+
onDragExit?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3503
|
+
onDragExitCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3504
|
+
onDragLeave?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3505
|
+
onDragLeaveCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3506
|
+
onDragOver?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3507
|
+
onDragOverCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3508
|
+
onDragStart?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3509
|
+
onDragStartCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3510
|
+
onDrop?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3511
|
+
onDropCapture?: React$1.DragEventHandler<HTMLDivElement>;
|
|
3512
|
+
onMouseDown?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3513
|
+
onMouseDownCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3514
|
+
onMouseEnter?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3515
|
+
onMouseLeave?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3516
|
+
onMouseMove?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3517
|
+
onMouseMoveCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3518
|
+
onMouseOut?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3519
|
+
onMouseOutCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3520
|
+
onMouseOver?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3521
|
+
onMouseOverCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3522
|
+
onMouseUp?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3523
|
+
onMouseUpCapture?: React$1.MouseEventHandler<HTMLDivElement>;
|
|
3524
|
+
onSelect?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3525
|
+
onSelectCapture?: React$1.ReactEventHandler<HTMLDivElement>;
|
|
3526
|
+
onTouchCancel?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3527
|
+
onTouchCancelCapture?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3528
|
+
onTouchEnd?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3529
|
+
onTouchEndCapture?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3530
|
+
onTouchMove?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3531
|
+
onTouchMoveCapture?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3532
|
+
onTouchStart?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3533
|
+
onTouchStartCapture?: React$1.TouchEventHandler<HTMLDivElement>;
|
|
3534
|
+
onPointerDown?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3535
|
+
onPointerDownCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3536
|
+
onPointerMove?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3537
|
+
onPointerMoveCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3538
|
+
onPointerUp?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3539
|
+
onPointerUpCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3540
|
+
onPointerCancel?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3541
|
+
onPointerCancelCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3542
|
+
onPointerEnter?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3543
|
+
onPointerLeave?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3544
|
+
onPointerOver?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3545
|
+
onPointerOverCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3546
|
+
onPointerOut?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3547
|
+
onPointerOutCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3548
|
+
onGotPointerCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3549
|
+
onGotPointerCaptureCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3550
|
+
onLostPointerCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3551
|
+
onLostPointerCaptureCapture?: React$1.PointerEventHandler<HTMLDivElement>;
|
|
3552
|
+
onScroll?: React$1.UIEventHandler<HTMLDivElement>;
|
|
3553
|
+
onScrollCapture?: React$1.UIEventHandler<HTMLDivElement>;
|
|
3554
|
+
onWheel?: React$1.WheelEventHandler<HTMLDivElement>;
|
|
3555
|
+
onWheelCapture?: React$1.WheelEventHandler<HTMLDivElement>;
|
|
3556
|
+
onAnimationStart?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3557
|
+
onAnimationStartCapture?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3558
|
+
onAnimationEnd?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3559
|
+
onAnimationEndCapture?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3560
|
+
onAnimationIteration?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3561
|
+
onAnimationIterationCapture?: React$1.AnimationEventHandler<HTMLDivElement>;
|
|
3562
|
+
onToggle?: React$1.ToggleEventHandler<HTMLDivElement>;
|
|
3563
|
+
onBeforeToggle?: React$1.ToggleEventHandler<HTMLDivElement>;
|
|
3564
|
+
onTransitionCancel?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3565
|
+
onTransitionCancelCapture?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3566
|
+
onTransitionEnd?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3567
|
+
onTransitionEndCapture?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3568
|
+
onTransitionRun?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3569
|
+
onTransitionRunCapture?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3570
|
+
onTransitionStart?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3571
|
+
onTransitionStartCapture?: React$1.TransitionEventHandler<HTMLDivElement>;
|
|
3572
|
+
} & {
|
|
3573
|
+
className?: string | undefined;
|
|
3574
|
+
elementRef?: React$1.Ref<HTMLDivElement> | undefined;
|
|
3575
|
+
id?: string | number | undefined;
|
|
3576
|
+
style?: React$1.CSSProperties | undefined;
|
|
3577
|
+
} & {
|
|
3578
|
+
/** Renders a visible grab handle affordance. */
|
|
3579
|
+
withHandle?: boolean;
|
|
3580
|
+
} & React$1.RefAttributes<never>>;
|
|
3581
|
+
|
|
3582
|
+
/**
|
|
3583
|
+
* Typography: Text and heading primitives with semantic levels.
|
|
3584
|
+
*
|
|
3585
|
+
* Design-system contract:
|
|
3586
|
+
* - Scope: UI-only primitive. No domain copy.
|
|
3587
|
+
* - Tokens-only: semantic token classes only.
|
|
3588
|
+
* - Composition: Text, H1-H6, Lead, Small, Muted.
|
|
3589
|
+
*
|
|
3590
|
+
* @author: @mindtris-team
|
|
3591
|
+
* @version: 0.1.0
|
|
3592
|
+
* @since: 2026-02-05
|
|
3593
|
+
*/
|
|
3594
|
+
|
|
3595
|
+
interface TextProps extends React$1.HTMLAttributes<HTMLParagraphElement> {
|
|
3596
|
+
/** Semantic variant. */
|
|
3597
|
+
variant?: "default" | "lead" | "small" | "muted";
|
|
3598
|
+
}
|
|
3599
|
+
declare function Text({ variant, className, as: Component, ...props }: TextProps & {
|
|
3600
|
+
as?: React$1.ElementType;
|
|
3601
|
+
}): React$1.JSX.Element;
|
|
3602
|
+
type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
3603
|
+
interface HeadingProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
3604
|
+
/** Semantic level (maps to h1–h6). */
|
|
3605
|
+
level?: HeadingLevel;
|
|
3606
|
+
}
|
|
3607
|
+
declare function Heading({ level, className, as, ...props }: HeadingProps & {
|
|
3608
|
+
as?: React$1.ElementType;
|
|
3609
|
+
}): React$1.JSX.Element;
|
|
3610
|
+
/** Lead paragraph: larger, muted. */
|
|
3611
|
+
declare function Lead({ className, ...props }: React$1.HTMLAttributes<HTMLParagraphElement>): React$1.JSX.Element;
|
|
3612
|
+
/** Small text. */
|
|
3613
|
+
declare function Small({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
|
|
3614
|
+
/** Muted text. */
|
|
3615
|
+
declare function Muted({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
|
|
3616
|
+
|
|
3617
|
+
/**
|
|
3618
|
+
* Toggle: Single toggleable control.
|
|
3619
|
+
*
|
|
3620
|
+
* Design-system contract
|
|
3621
|
+
* - Scope: UI-only primitive.
|
|
3622
|
+
* - Tokens-only: semantic token classes only.
|
|
3623
|
+
* - A11y: uses `aria-pressed`.
|
|
3624
|
+
*
|
|
3625
|
+
* Reference: shadcn `toggle.tsx` (Radix Toggle + variants).
|
|
3626
|
+
*/
|
|
3627
|
+
|
|
3628
|
+
type ToggleVariant = 'default' | 'outline';
|
|
3629
|
+
type ToggleSize = 'default' | 'sm' | 'lg';
|
|
3630
|
+
type ToggleActiveVariant = 'primary' | 'secondary' | 'tertiary';
|
|
3631
|
+
declare const toggleVariants: (props?: Partial<Record<string, string>>) => string;
|
|
3632
|
+
interface ToggleProps extends React$1.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> {
|
|
3633
|
+
variant?: ToggleVariant;
|
|
3634
|
+
size?: ToggleSize;
|
|
3635
|
+
/** Which semantic color to use when pressed. */
|
|
3636
|
+
activeVariant?: ToggleActiveVariant;
|
|
3637
|
+
}
|
|
3638
|
+
declare const Toggle: React$1.ForwardRefExoticComponent<ToggleProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
3639
|
+
|
|
3640
|
+
/**
|
|
3641
|
+
* Sonner Toaster (shadcn-style).
|
|
3642
|
+
*
|
|
3643
|
+
* Design-system contract
|
|
3644
|
+
* - Scope: UI-only primitive.
|
|
3645
|
+
* - Tokens-only: ties toast colors to CSS variables.
|
|
3646
|
+
*
|
|
3647
|
+
* Reference: shadcn `sonner.tsx`.
|
|
3648
|
+
*/
|
|
3649
|
+
|
|
3650
|
+
type ToasterVariant = 'default' | 'soft' | 'solid';
|
|
3651
|
+
type ToasterProps = ToasterProps$1 & {
|
|
3652
|
+
/**
|
|
3653
|
+
* Visual style for semantic "type" toasts (success/info/warning/error).
|
|
3654
|
+
* - default: neutral surface, regular text
|
|
3655
|
+
* - soft: light token color background, dark token text
|
|
3656
|
+
* - solid: strong token color background, white token text
|
|
3657
|
+
*/
|
|
3658
|
+
variant?: ToasterVariant;
|
|
3659
|
+
};
|
|
3660
|
+
declare function Toaster(props: ToasterProps): React$1.JSX.Element;
|
|
3661
|
+
type ToastSemanticVariant = 'neutral' | 'primary' | 'secondary' | 'tertiary' | 'accent' | 'muted' | 'foreground' | 'destructive' | 'success' | 'info' | 'warning' | 'error';
|
|
3662
|
+
type ToastMessage = Parameters<typeof toast>[0];
|
|
3663
|
+
type ToastOptions = Parameters<typeof toast>[1];
|
|
3664
|
+
/**
|
|
3665
|
+
* `toastSemantic`: fire toasts using design-system semantic variants.
|
|
3666
|
+
*
|
|
3667
|
+
* - `success/info/warning/error` call Sonner’s typed helpers (keeps icons/behavior).
|
|
3668
|
+
* - Other variants use `toast(..., { className })` to apply token-driven colors.
|
|
3669
|
+
*/
|
|
3670
|
+
declare function toastSemantic(variant: ToastSemanticVariant, message: ToastMessage, options?: ToastOptions): string | number;
|
|
3671
|
+
|
|
3672
|
+
/**
|
|
3673
|
+
* Select (Radix): Composable select primitives.
|
|
3674
|
+
*
|
|
3675
|
+
* Design-system contract (CONTRIBUTING.md):
|
|
3676
|
+
* - Scope: UI-only primitive; no domain logic.
|
|
3677
|
+
* - Tokens-only: semantic token classes only; no hardcoded colors.
|
|
3678
|
+
* - Minimal state: Radix handles value, open state, a11y.
|
|
3679
|
+
* - Composition: SelectRoot, SelectTrigger, SelectValue, SelectContent,
|
|
3680
|
+
* SelectItem, SelectGroup, SelectLabel, SelectSeparator.
|
|
3681
|
+
*
|
|
3682
|
+
* @see https://ui.shadcn.com/docs/components/radix/select
|
|
3683
|
+
*/
|
|
3684
|
+
|
|
3685
|
+
declare const SelectRoot: React$1.FC<SelectPrimitive.SelectProps>;
|
|
3686
|
+
declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3687
|
+
declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
3688
|
+
type SelectRootProps = React$1.ComponentProps<typeof SelectPrimitive.Root>;
|
|
3689
|
+
type SelectTriggerProps = React$1.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
|
3690
|
+
size?: "sm" | "default";
|
|
3691
|
+
};
|
|
3692
|
+
type SelectContentProps = React$1.ComponentProps<typeof SelectPrimitive.Content>;
|
|
3693
|
+
type SelectItemProps = React$1.ComponentProps<typeof SelectPrimitive.Item>;
|
|
3694
|
+
type SelectLabelProps = React$1.ComponentProps<typeof SelectPrimitive.Label>;
|
|
3695
|
+
type SelectSeparatorProps = React$1.ComponentProps<typeof SelectPrimitive.Separator>;
|
|
3696
|
+
declare function SelectTrigger({ className, size, children, ...props }: SelectTriggerProps): React$1.JSX.Element;
|
|
3697
|
+
declare function SelectContent({ className, children, position, ...props }: SelectContentProps): React$1.JSX.Element;
|
|
3698
|
+
declare function SelectLabel({ className, ...props }: SelectLabelProps): React$1.JSX.Element;
|
|
3699
|
+
declare function SelectItem({ className, children, ...props }: SelectItemProps): React$1.JSX.Element;
|
|
3700
|
+
declare function SelectSeparator({ className, ...props }: SelectSeparatorProps): React$1.JSX.Element;
|
|
3701
|
+
|
|
3702
|
+
/**
|
|
3703
|
+
* ButtonTooltip / Tooltip: Lightweight tooltip wrapper.
|
|
3704
|
+
*
|
|
3705
|
+
* Design-system contract
|
|
3706
|
+
* - Scope: UI-only primitive (2-app rule). No domain terms, no API calls.
|
|
3707
|
+
* - Tokens-only: uses semantic token classes only.
|
|
3708
|
+
* - A11y: trigger remains provided by consumer; tooltip shows on hover/focus.
|
|
3709
|
+
*
|
|
3710
|
+
* Note: This is the "simple" tooltip API used across the playground.
|
|
3711
|
+
* For Radix tooltip primitives (Trigger/Content/Provider), see `ui/tooltip.tsx`.
|
|
3712
|
+
*
|
|
3713
|
+
* @author: @mindtris-team
|
|
3714
|
+
* @version: 0.2.0
|
|
3715
|
+
* @since: 2026-02-01
|
|
3716
|
+
*/
|
|
3717
|
+
|
|
3718
|
+
interface ButtonTooltipProps {
|
|
3719
|
+
children: React$1.ReactNode;
|
|
3720
|
+
/** Tooltip content */
|
|
3721
|
+
content: React$1.ReactNode;
|
|
3722
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
3723
|
+
bg?: 'dark' | 'light';
|
|
3724
|
+
size?: 'sm' | 'md' | 'lg' | 'none';
|
|
3725
|
+
className?: string;
|
|
3726
|
+
disabled?: boolean;
|
|
3727
|
+
}
|
|
3728
|
+
declare function ButtonTooltip({ children, content, position, bg, size, className, disabled, }: ButtonTooltipProps): React$1.JSX.Element;
|
|
3729
|
+
/**
|
|
3730
|
+
* Tooltip
|
|
3731
|
+
* Alias for ButtonTooltip (generic name for consumers).
|
|
3732
|
+
*/
|
|
3733
|
+
declare const Tooltip$1: typeof ButtonTooltip;
|
|
3734
|
+
type TooltipProps$1 = ButtonTooltipProps;
|
|
3735
|
+
|
|
3736
|
+
type TooltipProviderProps = React$1.ComponentProps<typeof TooltipPrimitive.Provider>;
|
|
3737
|
+
type TooltipProps = React$1.ComponentProps<typeof TooltipPrimitive.Root>;
|
|
3738
|
+
type TooltipTriggerProps = React$1.ComponentProps<typeof TooltipPrimitive.Trigger>;
|
|
3739
|
+
type TooltipVariant = "default" | "primary" | "secondary" | "tertiary";
|
|
3740
|
+
type TooltipContentProps = React$1.ComponentProps<typeof TooltipPrimitive.Content> & {
|
|
3741
|
+
/**
|
|
3742
|
+
* Visual variant for token-driven tooltip colors.
|
|
3743
|
+
* Use `className` for fine-grained tweaks (e.g. max-width, whitespace).
|
|
3744
|
+
*/
|
|
3745
|
+
variant?: TooltipVariant;
|
|
3746
|
+
};
|
|
3747
|
+
declare function TooltipProvider({ delayDuration, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): React$1.JSX.Element;
|
|
3748
|
+
declare function Tooltip({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): React$1.JSX.Element;
|
|
3749
|
+
declare function TooltipTrigger({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Trigger>): React$1.JSX.Element;
|
|
3750
|
+
declare function TooltipContent({ className, sideOffset, variant, children, ...props }: TooltipContentProps): React$1.JSX.Element;
|
|
3751
|
+
|
|
3752
|
+
/**
|
|
3753
|
+
* Layout primitives (root-level so consuming bundlers can resolve without ./components/ paths).
|
|
3754
|
+
* Canonical source for Container, Page, Section, Grid, Stack.
|
|
3755
|
+
*/
|
|
3756
|
+
interface ContainerProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3757
|
+
maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'none';
|
|
3758
|
+
padding?: 'none' | 'sm' | 'md' | 'lg';
|
|
3759
|
+
center?: boolean;
|
|
3760
|
+
}
|
|
3761
|
+
declare function Container({ children, maxWidth, padding, center, className, ...props }: ContainerProps): React$1.JSX.Element;
|
|
3762
|
+
interface PageProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3763
|
+
title?: string;
|
|
3764
|
+
description?: string;
|
|
3765
|
+
maxWidth?: ContainerProps['maxWidth'];
|
|
3766
|
+
padding?: ContainerProps['padding'];
|
|
3767
|
+
}
|
|
3768
|
+
declare function Page({ children, title, description, maxWidth, padding, className, ...props }: PageProps): React$1.JSX.Element;
|
|
3769
|
+
interface SectionProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
3770
|
+
title?: string;
|
|
3771
|
+
description?: string;
|
|
3772
|
+
maxWidth?: ContainerProps['maxWidth'];
|
|
3773
|
+
padding?: ContainerProps['padding'];
|
|
3774
|
+
}
|
|
3775
|
+
declare function Section({ children, title, description, maxWidth, padding, className, ...props }: SectionProps): React$1.JSX.Element;
|
|
3776
|
+
interface GridProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3777
|
+
cols?: 1 | 2 | 3 | 4;
|
|
3778
|
+
colsSm?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
3779
|
+
colsMd?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
3780
|
+
gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
3781
|
+
}
|
|
3782
|
+
declare function Grid({ children, cols, colsSm, colsMd, gap, className, ...props }: GridProps): React$1.JSX.Element;
|
|
3783
|
+
interface StackProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3784
|
+
direction?: 'row' | 'col';
|
|
3785
|
+
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
3786
|
+
justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
3787
|
+
gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
3788
|
+
wrap?: boolean;
|
|
3789
|
+
}
|
|
3790
|
+
declare function Stack({ children, direction, align, justify, gap, wrap, className, ...props }: StackProps): React$1.JSX.Element;
|
|
3791
|
+
|
|
3792
|
+
interface HeaderLinkItem {
|
|
3793
|
+
id: string;
|
|
3794
|
+
title: string;
|
|
3795
|
+
href?: string;
|
|
3796
|
+
type: 'link' | 'dropdown';
|
|
3797
|
+
children?: HeaderLinkItem[];
|
|
3798
|
+
}
|
|
3799
|
+
interface HeaderCtaItem {
|
|
3800
|
+
title: string;
|
|
3801
|
+
href: string;
|
|
3802
|
+
type?: 'primary' | 'secondary' | 'external';
|
|
3803
|
+
variant?: ButtonProps['variant'];
|
|
3804
|
+
}
|
|
3805
|
+
interface HeaderBlockData {
|
|
3806
|
+
items: HeaderLinkItem[];
|
|
3807
|
+
ctaItems?: HeaderCtaItem[];
|
|
3808
|
+
}
|
|
3809
|
+
interface HeaderBlockSlots {
|
|
3810
|
+
logo?: ReactNode;
|
|
3811
|
+
/** Component to use for navigation links (e.g. next/link) */
|
|
3812
|
+
linkComponent?: ComponentType<{
|
|
3813
|
+
href: string;
|
|
3814
|
+
className?: string;
|
|
3815
|
+
children: ReactNode;
|
|
3816
|
+
onClick?: () => void;
|
|
3817
|
+
}>;
|
|
3818
|
+
/** Custom mobile menu trigger icon */
|
|
3819
|
+
menuIcon?: ReactNode;
|
|
3820
|
+
/** Custom mobile menu close icon */
|
|
3821
|
+
closeIcon?: ReactNode;
|
|
3822
|
+
/** Slot for extra content on the right (like theme toggle) */
|
|
3823
|
+
rightActionSlot?: ReactNode;
|
|
3824
|
+
}
|
|
3825
|
+
interface HeaderBlockProps {
|
|
3826
|
+
data: HeaderBlockData;
|
|
3827
|
+
slots?: HeaderBlockSlots;
|
|
3828
|
+
className?: string;
|
|
3829
|
+
/**
|
|
3830
|
+
* Sticky mode
|
|
3831
|
+
* @default true
|
|
3832
|
+
*/
|
|
3833
|
+
sticky?: boolean;
|
|
3834
|
+
}
|
|
3835
|
+
|
|
3836
|
+
declare function HeaderBlock({ data, slots, className, sticky }: HeaderBlockProps): React__default.JSX.Element;
|
|
3837
|
+
|
|
3838
|
+
interface FooterLink {
|
|
3839
|
+
title: string;
|
|
3840
|
+
href: string;
|
|
3841
|
+
}
|
|
3842
|
+
interface FooterColumn {
|
|
3843
|
+
title: string;
|
|
3844
|
+
links: FooterLink[];
|
|
3845
|
+
}
|
|
3846
|
+
interface FooterSocialLink {
|
|
3847
|
+
name: string;
|
|
3848
|
+
icon: string | ReactNode;
|
|
3849
|
+
href: string;
|
|
3850
|
+
}
|
|
3851
|
+
interface FooterBlockData {
|
|
3852
|
+
branding: {
|
|
3853
|
+
copyrightText: string;
|
|
3854
|
+
brandName: string;
|
|
3855
|
+
brandUrl?: string;
|
|
3856
|
+
};
|
|
3857
|
+
columns: FooterColumn[];
|
|
3858
|
+
social?: FooterSocialLink[];
|
|
3859
|
+
legal?: FooterLink[];
|
|
3860
|
+
}
|
|
3861
|
+
interface FooterBlockSlots {
|
|
3862
|
+
logo?: ReactNode;
|
|
3863
|
+
/** Component to use for navigation links (e.g. next/link) */
|
|
3864
|
+
linkComponent?: ComponentType<{
|
|
3865
|
+
href: string;
|
|
3866
|
+
className?: string;
|
|
3867
|
+
children: ReactNode;
|
|
3868
|
+
target?: string;
|
|
3869
|
+
rel?: string;
|
|
3870
|
+
}>;
|
|
3871
|
+
/**
|
|
3872
|
+
* Optional illustration slot for the bottom area
|
|
3873
|
+
* (e.g., the "Big Text" effect from Simplifi)
|
|
3874
|
+
*/
|
|
3875
|
+
bottomIllustration?: ReactNode;
|
|
3876
|
+
}
|
|
3877
|
+
interface FooterBlockProps {
|
|
3878
|
+
data: FooterBlockData;
|
|
3879
|
+
slots?: FooterBlockSlots;
|
|
3880
|
+
className?: string;
|
|
3881
|
+
border?: boolean;
|
|
3882
|
+
}
|
|
3883
|
+
|
|
3884
|
+
declare function FooterBlock({ data, slots, className, border }: FooterBlockProps): React__default.JSX.Element;
|
|
3885
|
+
|
|
3886
|
+
export { Accordion, AccordionGroup, type AccordionGroupItem, type AccordionGroupMultipleProps, type AccordionGroupProps, type AccordionGroupSingleProps, type AccordionProps, Alert, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, type AlertDialogDescriptionProps, AlertDialogFooter, type AlertDialogFooterProps, AlertDialogHeader, type AlertDialogHeaderProps, type AlertDialogProps, AlertDialogTitle, type AlertDialogTitleProps, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, type AlertVariant, AppProvider, AspectRatio, type AspectRatioPreset, type AspectRatioProps, type AsyncState, Avatar, AvatarBadge, type AvatarBadgeProps, type AvatarBadgeVariant, AvatarFallback, type AvatarFallbackProps, type AvatarFallbackVariant, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupOverlap, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeSize, type BadgeVariant, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, type BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupOrientation, type ButtonGroupProps, ButtonGroupSeparator, type ButtonGroupSeparatorProps, type ButtonProps, type ButtonSize, ButtonTooltip, type ButtonTooltipProps, type ButtonVariant, Calendar, Card, CardAction, CardContent, CardDecorator, type CardDecoratorProps, CardDescription, CardFooter, CardHeader, CardImage, type CardProps, CardSkeleton, CardTitle, Carousel, type CarouselApi, CarouselContent, type CarouselContentProps, CarouselItem, type CarouselItemProps, CarouselNext, type CarouselNextProps, type CarouselOptions, type CarouselPlugin, CarouselPrevious, type CarouselPreviousProps, type CarouselProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipSize, type ChipVariant, ClassicDropdown, Collapsible, CollapsibleContent, CollapsibleSection, CollapsibleTrigger, type ColorGroup, ColorInput, type ColorTheme, ColorsPanel, Combobox, type ComboboxOption, type ComboboxProps, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, type CommandProps, CommandSeparator, CommandShortcut, Container, type ContainerProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, type ContextMenuContentProps, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, type ContextMenuSeparatorProps, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubContentProps, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, type CustomThemeArtifactV1, type CustomThemeBase, type CustomThemeLayoutOverrides, type CustomThemeOverrides, DashboardCard, DatePicker, type DatePickerProps, DatePickerRange, type DatePickerRangeProps, Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, type DialogFooterProps, DialogHeader, type DialogHeaderProps, DialogOverlay, type DialogOverlayProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogTitle, type DialogTitleProps, DialogTrigger, type DialogTriggerProps, Drawer, DrawerClose, type DrawerCloseProps, DrawerContent, type DrawerContentProps, DrawerDescription, type DrawerDescriptionProps, DrawerFooter, type DrawerFooterProps, DrawerHeader, type DrawerHeaderProps, DrawerOverlay, type DrawerOverlayProps, DrawerPortal, type DrawerPortalProps, type DrawerProps, DrawerTitle, type DrawerTitleProps, DrawerTrigger, type DrawerTriggerProps, type DropdownAlign, DropdownIconMenu, type DropdownIconMenuProps, DropdownMenu, DropdownMenuAction, type DropdownMenuActionProps, type DropdownMenuAlign, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, type DropdownMenuGroupProps, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, type DropdownMenuPortalProps, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSectionLabel, DropdownMenuSeparator, type DropdownMenuSeparatorProps, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubContentProps, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, type DropdownOption, DropdownProfile, type DropdownProfileProps, DropdownSelect, type DropdownSelectProps, Empty, type EmptyProps, ErrorBoundary, ErrorFallback, Field, type FieldProps, type FieldValidation, FileInput, type FileInputProps, FooterBlock, type FooterBlockData, type FooterBlockProps, type FooterBlockSlots, type FooterColumn, type FooterLink, type FooterSocialLink, Form, type FormComponentProps, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Grid, type GridProps, Header, HeaderBlock, type HeaderBlockData, type HeaderBlockProps, type HeaderBlockSlots, type HeaderCtaItem, type HeaderLinkItem, Heading, type HeadingLevel, type HeadingProps, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardProps, HoverCardTrigger, type HoverCardTriggerProps, ICON_DEFAULT_SIZE, ICON_DEFAULT_STROKE_WIDTH, ICON_SIZES, Icon, type IconProps, type IconSize, ImportModal, type ImportedTheme, Input, InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupTextarea, type InputGroupTextareaProps, InputOTP, InputOTPGroup, type InputOTPGroupProps, type InputOTPProps, InputOTPSeparator, type InputOTPSeparatorOrientation, type InputOTPSeparatorProps, InputOTPSingle, type InputOTPSingleProps, type InputOTPSize, InputOTPSlot, type InputOTPSlotProps, type InputOTPSlotVariant, type InputProps, type InteractiveComponentProps, Kbd, type KbdProps, Label, type LabelProps, LayoutTab, Lead, LoadingSpinner, Logo, Menubar, MenubarCheckboxItem, type MenubarCheckboxItemProps, MenubarContent, type MenubarContentProps, MenubarGroup, MenubarItem, type MenubarItemProps, MenubarLabel, type MenubarLabelProps, MenubarMenu, type MenubarMenuProps, MenubarPortal, type MenubarProps, MenubarRadioGroup, type MenubarRadioGroupProps, MenubarRadioItem, type MenubarRadioItemProps, MenubarSeparator, type MenubarSeparatorProps, MenubarShortcut, MenubarSub, MenubarSubContent, type MenubarSubContentProps, type MenubarSubProps, MenubarSubTrigger, type MenubarSubTriggerProps, MenubarTrigger, type MenubarTriggerProps, Modal, type ModalProps, type ModalSize, Muted, NativeSelect, type NativeSelectProps, type NativeSelectSize, Navbar, NavigationMenuRoot as NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, OtherPanel, Page, type PageProps, Pagination, type PaginationProps, type PaginationVariant, type PolymorphicProps, Popover, PopoverAnchor, type PopoverAnchorProps, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Progress, type ProgressProps, type ProgressSize, type ProgressVariant, Radio, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type RadioProps, Tooltip as RadixTooltip, TooltipContent as RadixTooltipContent, type TooltipContentProps as RadixTooltipContentProps, type TooltipProps as RadixTooltipProps, TooltipProvider as RadixTooltipProvider, type TooltipProviderProps as RadixTooltipProviderProps, TooltipTrigger as RadixTooltipTrigger, type TooltipTriggerProps as RadixTooltipTriggerProps, ResizableHandle, type ResizableHandleProps, ResizablePanel, ResizablePanelGroup, type ResizablePanelGroupProps, type ResizablePanelProps, ResponsiveDialog, type ResponsiveDialogMode, type ResponsiveDialogProps, type ResponsiveDrawerDirection, RichTextEditor, type RichTextEditorProps, type RichTextEditorSize, ScrollArea, type ScrollAreaProps, type ScrollAreaViewportProps, ScrollBar, type ScrollBarProps, Section, type SectionProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectLabelProps, type SelectProps, SelectRoot, type SelectRootProps, SelectSeparator, type SelectSeparatorProps, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type SeparatorProps, Sheet, SheetClose, type SheetCloseProps, SheetContent, type SheetContentProps, type SheetContentSide, SheetDescription, type SheetDescriptionProps, SheetFooter, type SheetFooterProps, SheetHeader, type SheetHeaderProps, SheetOverlay, type SheetOverlayProps, SheetPortal, type SheetPortalProps, type SheetProps, SheetTitle, type SheetTitleProps, SheetTrigger, type SheetTriggerProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarLink, SidebarLinkGroup, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarSeparator, SimpleCard, Skeleton, type SkeletonLineSize, type SkeletonProps, type SkeletonRadius, type SkeletonTone, Slider, type SliderProps, type SliderSize, type SliderVariant, Small, Stack, type StackProps, type StandardComponentProps, StatCard, Switch, type SwitchProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, TableSkeleton, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, TabsRoot, type TabsRootProps, TabsTrigger, type TabsTriggerProps, TabsWithContainer, type TabsWithContainerItem, Text, type TextProps, Textarea, type TextareaProps, type TextareaSize, ThemeCustomizer, type ThemeCustomizerSection, type ThemePreset, type ThemeStyleProps, type ThemeStyles, ThemeTab, ThemeToggleIcon, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupOrientation, type ToggleGroupProps, type ToggleGroupType, type ToggleProps, type ToggleSize, type ToggleVariant, Tooltip$1 as Tooltip, type TooltipProps$1 as TooltipProps, type TransitionState, TypographyPanel, type UseAsyncStateOptions, type UseCounterOptions, type UseFormValidationOptions, type UseTransitionStateOptions, type ValidationRule, type VariantComponentProps, type VariantConfig, announceToScreenReader, applyImportedTheme, applyRadius, applyThemePreset, baseColors, cn, colorGroups, colorThemes, combine, conditional, createIcon, createKeyframe, createRule, createStandardProps, createVariants, debounce, doubleRaf, email, focusFirstElement, focusLastElement, focusNextElement, focusPreviousElement, generateId, getAccessibleName, getAriaDescribedBy, getAriaLabel, getFocusableElements, getRespectfulDuration, getTransitionClass, handleColorChange, isFocusable, isVisibleToScreenReader, max, maxLength, min, minLength, navigationMenuTriggerClass, numberRange, pattern, radiusOptions, raf, required, resetTheme, shouldReduceMotion, themePresets, throttle, toastSemantic, toggleVariants, url, useAppProvider, useAriaLive, useAsyncState, useBreakpoint, useClickOutside, useCounter, useDebounce, useErrorHandler, useFocusReturn, useFocusTrap, useFormField, useFormValidation, useMediaQuery, usePrefersReducedMotion, useThemeManager, useThrottle, useToggle, useTransitionState, useWindowWidth, variantClassNames };
|