@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.
@@ -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 };