gridsmith-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,1311 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, LabelHTMLAttributes, TextareaHTMLAttributes, Ref, HTMLAttributes, ComponentProps } from 'react';
4
+ import { IconName } from './icons.js';
5
+ import { ColumnDef } from '@tanstack/react-table';
6
+ import { VirtualItem } from '@tanstack/react-virtual';
7
+ import { Separator, Panel, Group } from 'react-resizable-panels';
8
+
9
+ type ButtonVariant = "default" | "secondary" | "tertiary" | "outline" | "ghost" | "destructive" | "success" | "warning" | "link";
10
+ type ButtonSize = "sm" | "md" | "lg" | "icon-sm" | "icon" | "icon-lg";
11
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
12
+ variant?: ButtonVariant;
13
+ size?: ButtonSize;
14
+ iconLeft?: ReactNode;
15
+ iconRight?: ReactNode;
16
+ loading?: boolean;
17
+ children?: ReactNode;
18
+ }
19
+ declare function Button({ variant, size, iconLeft, iconRight, loading, className, children, disabled, style, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
20
+
21
+ type Side = "top" | "right" | "bottom" | "left";
22
+ type Align = "start" | "center" | "end";
23
+
24
+ interface DropdownMenuItem {
25
+ label: string;
26
+ icon?: IconName;
27
+ onClick: () => void;
28
+ variant?: "default" | "destructive";
29
+ disabled?: boolean;
30
+ }
31
+ interface DropdownMenuDivider {
32
+ type: "divider";
33
+ }
34
+ type DropdownMenuEntry = DropdownMenuItem | DropdownMenuDivider;
35
+ interface DropdownMenuProps {
36
+ trigger: ReactNode;
37
+ items: DropdownMenuEntry[];
38
+ align?: Align;
39
+ className?: string;
40
+ container?: Element | DocumentFragment;
41
+ }
42
+ declare function DropdownMenu({ trigger, items, align, className, container }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
43
+
44
+ interface BulkAction {
45
+ label: string;
46
+ onClick: () => void;
47
+ variant?: "default" | "destructive";
48
+ }
49
+ interface BulkActionBarProps {
50
+ selectedCount: number;
51
+ actions: BulkAction[];
52
+ onClearSelection: () => void;
53
+ className?: string;
54
+ }
55
+ declare function BulkActionBar({ selectedCount, actions, onClearSelection, className }: BulkActionBarProps): react_jsx_runtime.JSX.Element | null;
56
+
57
+ type InputSize = "sm" | "md";
58
+ declare function Input({ className, size, error, prefix, suffix, ...props }: Omit<InputHTMLAttributes<HTMLInputElement>, "size"> & {
59
+ size?: InputSize;
60
+ error?: boolean;
61
+ prefix?: ReactNode;
62
+ suffix?: ReactNode;
63
+ }): react_jsx_runtime.JSX.Element;
64
+ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
65
+ autoResize?: boolean;
66
+ maxRows?: number;
67
+ ref?: Ref<HTMLTextAreaElement>;
68
+ }
69
+ declare function Textarea({ className, autoResize, maxRows, ref, ...props }: TextareaProps): react_jsx_runtime.JSX.Element;
70
+ declare function Label({ className, children, ...props }: LabelHTMLAttributes<HTMLLabelElement>): react_jsx_runtime.JSX.Element;
71
+ declare function Toggle({ checked, onChange, label, disabled, error, "aria-labelledby": ariaLabelledBy, ...rest }: {
72
+ checked: boolean;
73
+ onChange: (v: boolean) => void;
74
+ label?: string;
75
+ disabled?: boolean;
76
+ error?: boolean;
77
+ "aria-labelledby"?: string;
78
+ } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onChange">): react_jsx_runtime.JSX.Element;
79
+
80
+ interface Option {
81
+ id: string;
82
+ label: string;
83
+ group?: string;
84
+ }
85
+ type DropdownSize = "sm" | "md";
86
+ interface DropdownProps {
87
+ options: Option[];
88
+ value: string | string[];
89
+ onChange: (value: string | string[]) => void;
90
+ label?: string;
91
+ disabled?: boolean;
92
+ placeholder?: string;
93
+ multiple?: boolean;
94
+ searchable?: boolean;
95
+ size?: DropdownSize;
96
+ className?: string;
97
+ ref?: Ref<HTMLDivElement>;
98
+ container?: Element | DocumentFragment;
99
+ error?: boolean;
100
+ }
101
+ declare function Dropdown({ options, value, onChange, label, disabled, placeholder, multiple, searchable, size, className, ref, container, error, }: DropdownProps): react_jsx_runtime.JSX.Element;
102
+
103
+ interface ComboboxOption {
104
+ value: string;
105
+ label: string;
106
+ disabled?: boolean;
107
+ }
108
+ interface ComboboxProps {
109
+ value: string;
110
+ onChange: (value: string) => void;
111
+ options: ComboboxOption[];
112
+ placeholder?: string;
113
+ disabled?: boolean;
114
+ loading?: boolean;
115
+ className?: string;
116
+ ref?: Ref<HTMLDivElement>;
117
+ container?: Element | DocumentFragment;
118
+ error?: boolean;
119
+ }
120
+ declare function Combobox({ value, onChange, options, placeholder, disabled, loading, className, ref, container, error }: ComboboxProps): react_jsx_runtime.JSX.Element;
121
+
122
+ interface CheckboxProps {
123
+ checked: boolean;
124
+ onChange: (checked: boolean) => void;
125
+ label?: string;
126
+ disabled?: boolean;
127
+ indeterminate?: boolean;
128
+ className?: string;
129
+ ref?: Ref<HTMLInputElement>;
130
+ }
131
+ declare function Checkbox({ checked, onChange, label, disabled, indeterminate, className, ref }: CheckboxProps): react_jsx_runtime.JSX.Element;
132
+ interface CheckboxGroupProps {
133
+ value: string[];
134
+ onChange: (value: string[]) => void;
135
+ children: ReactNode;
136
+ className?: string;
137
+ }
138
+ declare function CheckboxGroup({ value, onChange, children, className }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
139
+ interface CheckboxGroupItemProps {
140
+ value: string;
141
+ label: string;
142
+ disabled?: boolean;
143
+ /** @deprecated Use CheckboxGroup's value/onChange via context instead. */
144
+ groupValue?: string[];
145
+ /** @deprecated Use CheckboxGroup's value/onChange via context instead. */
146
+ onGroupChange?: (value: string[]) => void;
147
+ }
148
+ declare function CheckboxGroupItem({ value, label, disabled, groupValue, onGroupChange }: CheckboxGroupItemProps): react_jsx_runtime.JSX.Element;
149
+
150
+ interface RadioOption {
151
+ value: string;
152
+ label: string;
153
+ disabled?: boolean;
154
+ }
155
+ interface RadioGroupProps {
156
+ value: string;
157
+ onChange: (value: string) => void;
158
+ options: RadioOption[];
159
+ orientation?: "vertical" | "horizontal";
160
+ className?: string;
161
+ label?: string;
162
+ }
163
+ declare function RadioGroup({ value, onChange, options, orientation, className, label }: RadioGroupProps): react_jsx_runtime.JSX.Element;
164
+
165
+ interface DatePickerProps {
166
+ value: Date | null;
167
+ onChange: (date: Date | null) => void;
168
+ placeholder?: string;
169
+ disabled?: boolean;
170
+ className?: string;
171
+ ref?: Ref<HTMLDivElement>;
172
+ container?: Element | DocumentFragment;
173
+ error?: boolean;
174
+ label?: string;
175
+ }
176
+ declare function DatePicker({ value, onChange, placeholder, disabled, className, ref, container, error, label }: DatePickerProps): react_jsx_runtime.JSX.Element;
177
+
178
+ interface FileUploadProps {
179
+ onFiles: (files: File[]) => void;
180
+ accept?: string;
181
+ multiple?: boolean;
182
+ maxSize?: number;
183
+ className?: string;
184
+ error?: boolean;
185
+ label?: string;
186
+ }
187
+ declare function FileUpload({ onFiles, accept, multiple, maxSize, className, error, label }: FileUploadProps): react_jsx_runtime.JSX.Element;
188
+
189
+ interface SliderRangeProps {
190
+ value: number | [number, number];
191
+ onChange: (value: number | [number, number]) => void;
192
+ min?: number;
193
+ max?: number;
194
+ step?: number;
195
+ disabled?: boolean;
196
+ showValue?: boolean;
197
+ className?: string;
198
+ ref?: Ref<HTMLDivElement>;
199
+ error?: boolean;
200
+ }
201
+ declare function SliderRange({ value, onChange, min, max, step, disabled, showValue, className, ref, error, }: SliderRangeProps): react_jsx_runtime.JSX.Element;
202
+
203
+ interface TimePickerProps {
204
+ value: string;
205
+ onChange: (time: string) => void;
206
+ use24Hour?: boolean;
207
+ minuteStep?: number;
208
+ disabled?: boolean;
209
+ className?: string;
210
+ ref?: Ref<HTMLDivElement>;
211
+ container?: Element | DocumentFragment;
212
+ error?: boolean;
213
+ }
214
+ declare function TimePicker({ value, onChange, use24Hour, minuteStep, disabled, className, ref, container, error, }: TimePickerProps): react_jsx_runtime.JSX.Element;
215
+
216
+ interface NumberInputProps {
217
+ value: number;
218
+ onChange: (value: number) => void;
219
+ min?: number;
220
+ max?: number;
221
+ step?: number;
222
+ disabled?: boolean;
223
+ placeholder?: string;
224
+ prefix?: string;
225
+ suffix?: string;
226
+ size?: "sm" | "md" | "lg";
227
+ className?: string;
228
+ error?: boolean;
229
+ }
230
+ declare function NumberInput({ value, onChange, min, max, step, disabled, placeholder, prefix, suffix, size, className, error, }: NumberInputProps): react_jsx_runtime.JSX.Element;
231
+
232
+ interface TagInputProps {
233
+ value: string[];
234
+ onChange: (tags: string[]) => void;
235
+ placeholder?: string;
236
+ maxTags?: number;
237
+ disabled?: boolean;
238
+ className?: string;
239
+ error?: boolean;
240
+ }
241
+ declare function TagInput({ value, onChange, placeholder, maxTags, disabled, className, error, }: TagInputProps): react_jsx_runtime.JSX.Element;
242
+
243
+ interface PinInputProps {
244
+ value: string;
245
+ onChange: (value: string) => void;
246
+ length?: number;
247
+ mask?: boolean;
248
+ disabled?: boolean;
249
+ size?: "sm" | "md" | "lg";
250
+ className?: string;
251
+ error?: boolean;
252
+ }
253
+ declare function PinInput({ value, onChange, length, mask, disabled, size, className, error, }: PinInputProps): react_jsx_runtime.JSX.Element;
254
+
255
+ interface RatingProps {
256
+ value: number;
257
+ onChange?: (value: number) => void;
258
+ max?: number;
259
+ allowHalf?: boolean;
260
+ readOnly?: boolean;
261
+ size?: "sm" | "md" | "lg";
262
+ className?: string;
263
+ error?: boolean;
264
+ }
265
+ declare function Rating({ value, onChange, max, allowHalf, readOnly, size, className, error, }: RatingProps): react_jsx_runtime.JSX.Element;
266
+
267
+ interface ColorPickerProps {
268
+ value: string;
269
+ onChange: (color: string) => void;
270
+ showAlpha?: boolean;
271
+ swatches?: string[];
272
+ disabled?: boolean;
273
+ className?: string;
274
+ error?: boolean;
275
+ }
276
+ declare function ColorPicker({ value, onChange, showAlpha, swatches, disabled, className, error, }: ColorPickerProps): react_jsx_runtime.JSX.Element;
277
+
278
+ interface InlineFieldErrorProps {
279
+ message: string;
280
+ id: string;
281
+ className?: string;
282
+ }
283
+ declare function InlineFieldError({ message, id, className }: InlineFieldErrorProps): react_jsx_runtime.JSX.Element;
284
+
285
+ type ValidationMode = "onBlur" | "onSubmit" | "onChange";
286
+ interface FormErrors {
287
+ [field: string]: string | undefined;
288
+ }
289
+ interface FormContextValue {
290
+ errors: FormErrors;
291
+ setError: (field: string, message: string | undefined) => void;
292
+ clearErrors: () => void;
293
+ validationMode: ValidationMode;
294
+ submitted: boolean;
295
+ }
296
+ declare function useFormContext(): FormContextValue;
297
+ interface FormWrapperProps {
298
+ onSubmit: (errors: FormErrors) => void;
299
+ validationMode?: ValidationMode;
300
+ children: ReactNode;
301
+ className?: string;
302
+ ref?: React.Ref<HTMLFormElement>;
303
+ }
304
+ declare function FormWrapper({ onSubmit, validationMode, children, className, ref }: FormWrapperProps): react_jsx_runtime.JSX.Element;
305
+
306
+ interface TransferItem {
307
+ id: string;
308
+ label: string;
309
+ disabled?: boolean;
310
+ }
311
+ interface TransferListProps {
312
+ available: TransferItem[];
313
+ selected: TransferItem[];
314
+ onChange: (available: TransferItem[], selected: TransferItem[]) => void;
315
+ availableTitle?: string;
316
+ selectedTitle?: string;
317
+ searchable?: boolean;
318
+ className?: string;
319
+ ref?: Ref<HTMLDivElement>;
320
+ }
321
+ declare function TransferList({ available, selected, onChange, availableTitle, selectedTitle, searchable, className, ref, }: TransferListProps): react_jsx_runtime.JSX.Element;
322
+
323
+ interface RichTextEditorProps {
324
+ content?: string;
325
+ placeholder?: string;
326
+ onChange?: (html: string) => void;
327
+ editable?: boolean;
328
+ className?: string;
329
+ ref?: Ref<HTMLDivElement>;
330
+ }
331
+ declare function RichTextEditor({ content, placeholder, onChange, editable, className, ref, }: RichTextEditorProps): react_jsx_runtime.JSX.Element | null;
332
+
333
+ interface MentionSuggestion {
334
+ id: string;
335
+ label: string;
336
+ avatar?: string;
337
+ description?: string;
338
+ }
339
+ interface MentionInputProps {
340
+ value?: string;
341
+ onChange?: (value: string) => void;
342
+ suggestions: MentionSuggestion[];
343
+ trigger?: string;
344
+ placeholder?: string;
345
+ disabled?: boolean;
346
+ className?: string;
347
+ }
348
+ declare function MentionInput({ value: controlledValue, onChange, suggestions, trigger, placeholder, disabled, className, }: MentionInputProps): react_jsx_runtime.JSX.Element;
349
+
350
+ type CardVariant = "default" | "interactive" | "outline" | "ghost";
351
+ interface CardProps extends HTMLAttributes<HTMLDivElement> {
352
+ variant?: CardVariant;
353
+ loading?: boolean;
354
+ selected?: boolean;
355
+ selectable?: boolean;
356
+ onSelectedChange?: (selected: boolean) => void;
357
+ children: ReactNode;
358
+ }
359
+ declare function Card({ variant, loading, selected, selectable, onSelectedChange, className, children, onClick, ...props }: CardProps): react_jsx_runtime.JSX.Element;
360
+ interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
361
+ actions?: ReactNode;
362
+ }
363
+ declare function CardHeader({ className, children, actions, ...props }: CardHeaderProps): react_jsx_runtime.JSX.Element;
364
+ declare function CardTitle({ className, children, ...props }: HTMLAttributes<HTMLHeadingElement>): react_jsx_runtime.JSX.Element;
365
+ declare function CardDescription({ className, children, ...props }: HTMLAttributes<HTMLParagraphElement>): react_jsx_runtime.JSX.Element;
366
+ declare function CardContent({ className, children, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
367
+ declare function CardFooter({ className, children, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
368
+
369
+ interface Trend {
370
+ direction: "up" | "down" | "flat";
371
+ value: string;
372
+ }
373
+ interface StatsCardProps {
374
+ value: string | number;
375
+ label: string;
376
+ trend?: Trend;
377
+ icon?: IconName;
378
+ layout?: "card" | "inline";
379
+ children?: ReactNode;
380
+ className?: string;
381
+ }
382
+ declare function StatsCard({ value, label, trend, icon, layout, children, className }: StatsCardProps): react_jsx_runtime.JSX.Element;
383
+
384
+ interface DataListItem {
385
+ label: string;
386
+ value: ReactNode;
387
+ }
388
+ interface DataListProps {
389
+ items: DataListItem[];
390
+ columns?: 1 | 2;
391
+ className?: string;
392
+ }
393
+ declare function DataList({ items, columns, className }: DataListProps): react_jsx_runtime.JSX.Element;
394
+
395
+ interface AccordionItem {
396
+ trigger: ReactNode;
397
+ content: ReactNode;
398
+ }
399
+ interface AccordionProps {
400
+ items: AccordionItem[];
401
+ type?: "single" | "multiple";
402
+ defaultOpen?: number[];
403
+ open?: number[];
404
+ onOpenChange?: (open: number[]) => void;
405
+ className?: string;
406
+ }
407
+ declare function Accordion({ items, type, defaultOpen, open: controlledOpen, onOpenChange, className }: AccordionProps): react_jsx_runtime.JSX.Element;
408
+
409
+ declare const DEFAULT_BREAKPOINTS: {
410
+ readonly sm: 640;
411
+ readonly md: 768;
412
+ readonly lg: 1024;
413
+ readonly xl: 1280;
414
+ };
415
+ type BreakpointKey = keyof typeof DEFAULT_BREAKPOINTS;
416
+ /**
417
+ * Provides an override container width for all `useBreakpoint` calls within
418
+ * this subtree. Used by the builder's viewport preview to make components
419
+ * respond to the constrained canvas width instead of the browser viewport.
420
+ */
421
+ declare function BreakpointWidthProvider({ width, children }: {
422
+ width: number | null;
423
+ children: ReactNode;
424
+ }): react.FunctionComponentElement<react.ProviderProps<number | null>>;
425
+ /**
426
+ * Reactive breakpoint check that reads `--ds-bp-*` CSS variables.
427
+ * Returns true when the viewport (or override container) is at or below the
428
+ * named breakpoint.
429
+ *
430
+ * @example
431
+ * const isMobile = useBreakpoint("md"); // true when ≤768px
432
+ */
433
+ declare function useBreakpoint(key: BreakpointKey): boolean;
434
+
435
+ interface Column {
436
+ key: string;
437
+ header: string;
438
+ align?: "left" | "center" | "right";
439
+ sortable?: boolean;
440
+ }
441
+ type SortDir = "asc" | "desc" | null;
442
+ type TableDensity = "default" | "compact";
443
+ interface TableProps {
444
+ columns: Column[];
445
+ data: Record<string, string | number | ReactNode>[];
446
+ className?: string;
447
+ sortable?: boolean;
448
+ sortKey?: string | null;
449
+ sortDir?: SortDir;
450
+ onSortChange?: (key: string | null, dir: SortDir) => void;
451
+ selectable?: boolean;
452
+ selectedRows?: number[];
453
+ onSelectionChange?: (rows: number[]) => void;
454
+ expandable?: boolean;
455
+ renderExpanded?: (row: Record<string, string | number | ReactNode>, index: number) => ReactNode;
456
+ density?: TableDensity;
457
+ stickyHeader?: boolean;
458
+ striped?: boolean;
459
+ loading?: boolean;
460
+ emptyState?: ReactNode;
461
+ onRowClick?: (row: Record<string, string | number | ReactNode>, index: number) => void;
462
+ /** Breakpoint at which the table switches to card layout. Defaults to "md" (768px). */
463
+ mobileBreakpoint?: BreakpointKey;
464
+ ref?: Ref<HTMLDivElement>;
465
+ }
466
+ declare function Table({ columns, data, className, sortable, sortKey: controlledSortKey, sortDir: controlledSortDir, onSortChange, selectable, selectedRows, onSelectionChange, expandable, renderExpanded, density, stickyHeader, striped, loading, emptyState, onRowClick, mobileBreakpoint, ref, }: TableProps): react_jsx_runtime.JSX.Element;
467
+
468
+ interface CalendarEvent {
469
+ id: string;
470
+ title: string;
471
+ start: Date;
472
+ end?: Date;
473
+ allDay?: boolean;
474
+ category?: string;
475
+ description?: string;
476
+ location?: string;
477
+ }
478
+ interface EventCategory {
479
+ color: string;
480
+ label: string;
481
+ }
482
+ type CalendarView = "month" | "week" | "year";
483
+ interface CalendarProps {
484
+ events?: CalendarEvent[];
485
+ view?: CalendarView;
486
+ defaultView?: CalendarView;
487
+ onViewChange?: (view: CalendarView) => void;
488
+ date?: Date;
489
+ defaultDate?: Date;
490
+ onDateChange?: (date: Date) => void;
491
+ onDateRangeChange?: (range: {
492
+ start: Date;
493
+ end: Date;
494
+ }) => void;
495
+ onEventClick?: (event: CalendarEvent) => void;
496
+ onDayClick?: (date: Date) => void;
497
+ categories?: Record<string, EventCategory>;
498
+ weekStartsOn?: 0 | 1;
499
+ className?: string;
500
+ }
501
+
502
+ declare function Calendar({ events, view: controlledView, defaultView, onViewChange, date: controlledDate, defaultDate, onDateChange, onDateRangeChange, onEventClick, onDayClick, categories, weekStartsOn, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
503
+
504
+ type BadgeVariant = "default" | "neutral" | "subtle" | "success" | "success-soft" | "warning" | "warning-soft" | "error" | "error-soft" | "outline";
505
+ type BadgeSize = "xs" | "sm" | "md";
506
+ interface BadgeProps {
507
+ variant?: BadgeVariant;
508
+ size?: BadgeSize;
509
+ /** Icon to show before the label */
510
+ iconLeft?: IconName;
511
+ /** Icon to show after the label */
512
+ iconRight?: IconName;
513
+ className?: string;
514
+ children?: ReactNode;
515
+ }
516
+ declare function Badge({ variant, size, iconLeft, iconRight, className, children }: BadgeProps): react_jsx_runtime.JSX.Element;
517
+
518
+ type TagVariant = "default" | "subtle" | "success" | "warning" | "error" | "outline";
519
+ interface TagProps {
520
+ variant?: TagVariant;
521
+ size?: "sm" | "md";
522
+ onRemove?: () => void;
523
+ onClick?: () => void;
524
+ disabled?: boolean;
525
+ className?: string;
526
+ children: ReactNode;
527
+ }
528
+ declare const Tag: react.ForwardRefExoticComponent<TagProps & react.RefAttributes<HTMLSpanElement>>;
529
+
530
+ interface AvatarProps {
531
+ initials?: string;
532
+ src?: string;
533
+ alt?: string;
534
+ size?: "sm" | "md" | "lg";
535
+ status?: "online" | "away";
536
+ className?: string;
537
+ }
538
+ declare function Avatar({ initials, src, alt, size, status, className }: AvatarProps): react_jsx_runtime.JSX.Element;
539
+
540
+ interface EmptyStateProps {
541
+ icon?: ReactNode;
542
+ title: string;
543
+ description?: string;
544
+ action?: ReactNode;
545
+ variant?: "empty" | "filtered" | "error" | "no-permission";
546
+ className?: string;
547
+ }
548
+ declare function EmptyState({ icon, title, description, action, variant, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
549
+
550
+ interface TimelineItem {
551
+ title: string;
552
+ description?: string;
553
+ timestamp?: string;
554
+ icon?: ReactNode;
555
+ variant?: "default" | "success" | "warning" | "error";
556
+ }
557
+ interface TimelineProps {
558
+ items: TimelineItem[];
559
+ orientation?: "vertical" | "horizontal";
560
+ className?: string;
561
+ ref?: Ref<HTMLDivElement>;
562
+ }
563
+ declare function Timeline({ items, orientation, className, ref }: TimelineProps): react_jsx_runtime.JSX.Element;
564
+
565
+ interface CodeBlockProps {
566
+ code: string;
567
+ language?: string;
568
+ showLineNumbers?: boolean;
569
+ className?: string;
570
+ }
571
+ declare function CodeBlock({ code, language, showLineNumbers, className, }: CodeBlockProps): react_jsx_runtime.JSX.Element;
572
+
573
+ interface CollapsibleProps {
574
+ open?: boolean;
575
+ defaultOpen?: boolean;
576
+ onOpenChange?: (open: boolean) => void;
577
+ children: ReactNode | ((props: {
578
+ isOpen: boolean;
579
+ toggle: () => void;
580
+ }) => ReactNode);
581
+ className?: string;
582
+ }
583
+ interface CollapsibleTriggerProps {
584
+ children: ReactNode;
585
+ className?: string;
586
+ }
587
+ interface CollapsibleContentProps {
588
+ children: ReactNode;
589
+ className?: string;
590
+ }
591
+ declare function CollapsibleRoot({ open: controlledOpen, defaultOpen, onOpenChange, children, className, }: CollapsibleProps): react_jsx_runtime.JSX.Element;
592
+ declare function CollapsibleTrigger({ children, className }: CollapsibleTriggerProps): react_jsx_runtime.JSX.Element;
593
+ declare function CollapsibleContent({ children, className }: CollapsibleContentProps): react_jsx_runtime.JSX.Element;
594
+ declare const Collapsible: typeof CollapsibleRoot & {
595
+ Trigger: typeof CollapsibleTrigger;
596
+ Content: typeof CollapsibleContent;
597
+ };
598
+
599
+ interface KbdProps {
600
+ children: ReactNode;
601
+ className?: string;
602
+ }
603
+ declare function Kbd({ children, className }: KbdProps): react_jsx_runtime.JSX.Element;
604
+
605
+ interface SkeletonProps {
606
+ variant?: "text" | "avatar" | "card" | "table-row" | "custom";
607
+ lines?: number;
608
+ width?: string;
609
+ height?: string;
610
+ className?: string;
611
+ }
612
+ declare function Skeleton({ variant, lines, width, height, className }: SkeletonProps): react_jsx_runtime.JSX.Element;
613
+
614
+ interface TreeNode {
615
+ id: string;
616
+ label: string;
617
+ icon?: IconName;
618
+ children?: TreeNode[];
619
+ disabled?: boolean;
620
+ }
621
+ interface TreeViewProps {
622
+ nodes: TreeNode[];
623
+ selectable?: boolean;
624
+ multiSelect?: boolean;
625
+ checkable?: boolean;
626
+ defaultExpanded?: string[];
627
+ defaultSelected?: string[];
628
+ defaultChecked?: string[];
629
+ onSelect?: (ids: string[]) => void;
630
+ onCheck?: (ids: string[]) => void;
631
+ className?: string;
632
+ }
633
+ declare function TreeView({ nodes, selectable, multiSelect, checkable, defaultExpanded, defaultSelected, defaultChecked, onSelect, onCheck, className, }: TreeViewProps): react_jsx_runtime.JSX.Element;
634
+
635
+ interface CarouselProps {
636
+ children: ReactNode[];
637
+ autoPlay?: boolean;
638
+ autoPlayInterval?: number;
639
+ loop?: boolean;
640
+ showIndicators?: boolean;
641
+ showArrows?: boolean;
642
+ className?: string;
643
+ ref?: Ref<HTMLDivElement>;
644
+ }
645
+ declare function Carousel({ children, autoPlay, autoPlayInterval, loop, showIndicators, showArrows, className, ref, }: CarouselProps): react_jsx_runtime.JSX.Element;
646
+
647
+ interface DataGridProps<T> {
648
+ data: T[];
649
+ columns: ColumnDef<T, any>[];
650
+ pageSize?: number;
651
+ editable?: boolean;
652
+ onCellEdit?: (rowIndex: number, columnId: string, value: unknown) => void;
653
+ /** Breakpoint at which the grid switches to card layout. Defaults to "md" (768px). */
654
+ mobileBreakpoint?: BreakpointKey;
655
+ className?: string;
656
+ }
657
+ declare function DataGrid<T>({ data, columns, pageSize, editable, onCellEdit, mobileBreakpoint, className, }: DataGridProps<T>): react_jsx_runtime.JSX.Element;
658
+
659
+ interface KanbanCard {
660
+ id: string;
661
+ title: string;
662
+ description?: string;
663
+ tags?: string[];
664
+ avatar?: string;
665
+ }
666
+ interface KanbanColumn {
667
+ id: string;
668
+ title: string;
669
+ cards: KanbanCard[];
670
+ color?: string;
671
+ }
672
+ interface KanbanBoardProps {
673
+ columns: KanbanColumn[];
674
+ onColumnsChange?: (columns: KanbanColumn[]) => void;
675
+ renderCard?: (card: KanbanCard) => ReactNode;
676
+ className?: string;
677
+ }
678
+ declare function KanbanBoard({ columns: controlledCols, onColumnsChange, renderCard, className, }: KanbanBoardProps): react_jsx_runtime.JSX.Element;
679
+
680
+ interface ChatMessage {
681
+ id: string;
682
+ sender: {
683
+ name: string;
684
+ avatar?: string;
685
+ };
686
+ content: string | ReactNode;
687
+ timestamp: Date;
688
+ isOwn?: boolean;
689
+ }
690
+ interface ChatMessageListProps {
691
+ messages: ChatMessage[];
692
+ typingUser?: string;
693
+ showInput?: boolean;
694
+ onSend?: (text: string) => void;
695
+ className?: string;
696
+ }
697
+ declare function ChatMessageList({ messages, typingUser, showInput, onSend, className, }: ChatMessageListProps): react_jsx_runtime.JSX.Element;
698
+
699
+ interface VirtualizedListProps<T> {
700
+ items: T[];
701
+ estimateSize: (index: number) => number;
702
+ renderItem: (item: T, index: number, virtualItem: VirtualItem) => ReactNode;
703
+ overscan?: number;
704
+ height?: number | string;
705
+ className?: string;
706
+ ref?: Ref<HTMLDivElement>;
707
+ }
708
+ declare function VirtualizedList<T>({ items, estimateSize, renderItem, overscan, height, className, ref, }: VirtualizedListProps<T>): react_jsx_runtime.JSX.Element;
709
+
710
+ interface StackedListItem {
711
+ id: string | number;
712
+ leading?: ReactNode;
713
+ title: string;
714
+ subtitle?: string;
715
+ meta?: ReactNode;
716
+ actions?: ReactNode;
717
+ onClick?: () => void;
718
+ }
719
+ interface StackedListProps {
720
+ items: StackedListItem[];
721
+ divided?: boolean;
722
+ className?: string;
723
+ }
724
+ declare const StackedList: react.ForwardRefExoticComponent<StackedListProps & react.RefAttributes<HTMLUListElement>>;
725
+
726
+ type TabsVariant = "underline" | "pill";
727
+ interface Tab {
728
+ id: string;
729
+ label: string;
730
+ count?: number;
731
+ icon?: IconName;
732
+ disabled?: boolean;
733
+ }
734
+ interface TabsArrayProps {
735
+ tabs: Tab[];
736
+ activeTab: string;
737
+ onTabChange: (id: string) => void;
738
+ orientation?: "horizontal" | "vertical";
739
+ variant?: TabsVariant;
740
+ fullWidth?: boolean;
741
+ className?: string;
742
+ children?: never;
743
+ }
744
+ interface TabsCompoundProps {
745
+ activeTab: string;
746
+ onTabChange: (id: string) => void;
747
+ orientation?: "horizontal" | "vertical";
748
+ variant?: TabsVariant;
749
+ fullWidth?: boolean;
750
+ className?: string;
751
+ children: ReactNode;
752
+ tabs?: never;
753
+ }
754
+ type TabsProps = TabsArrayProps | TabsCompoundProps;
755
+ declare function TabsList({ children, className }: {
756
+ children: ReactNode;
757
+ className?: string;
758
+ }): react_jsx_runtime.JSX.Element;
759
+ declare function TabsTrigger({ value, children, count, icon, disabled, className }: {
760
+ value: string;
761
+ children: ReactNode;
762
+ count?: number;
763
+ icon?: IconName;
764
+ disabled?: boolean;
765
+ className?: string;
766
+ }): react_jsx_runtime.JSX.Element;
767
+ declare function TabsContent({ value, children, className }: {
768
+ value: string;
769
+ children: ReactNode;
770
+ className?: string;
771
+ }): react_jsx_runtime.JSX.Element | null;
772
+ declare function TabsRoot(props: TabsProps): react_jsx_runtime.JSX.Element;
773
+ declare const Tabs: typeof TabsRoot & {
774
+ List: typeof TabsList;
775
+ Trigger: typeof TabsTrigger;
776
+ Content: typeof TabsContent;
777
+ };
778
+
779
+ interface BreadcrumbItem$1 {
780
+ label: string;
781
+ href?: string;
782
+ onClick?: () => void;
783
+ }
784
+ interface BreadcrumbsProps {
785
+ items: BreadcrumbItem$1[];
786
+ separator?: "slash" | "chevron" | "dot";
787
+ className?: string;
788
+ }
789
+ declare function Breadcrumbs({ items, separator, className }: BreadcrumbsProps): react_jsx_runtime.JSX.Element;
790
+
791
+ interface PaginationProps {
792
+ currentPage: number;
793
+ totalPages: number;
794
+ onPageChange: (page: number) => void;
795
+ pageSize?: number;
796
+ pageSizeOptions?: number[];
797
+ onPageSizeChange?: (size: number) => void;
798
+ className?: string;
799
+ }
800
+ declare function Pagination({ currentPage, totalPages, onPageChange, pageSize, pageSizeOptions, onPageSizeChange, className }: PaginationProps): react_jsx_runtime.JSX.Element;
801
+
802
+ interface Step {
803
+ label: string;
804
+ description?: string;
805
+ status?: "complete" | "error" | "loading";
806
+ }
807
+ interface StepperProps {
808
+ steps: Step[];
809
+ currentStep: number;
810
+ onStepChange?: (step: number) => void;
811
+ orientation?: "horizontal" | "vertical";
812
+ className?: string;
813
+ }
814
+ declare function Stepper({ steps, currentStep, onStepChange, orientation, className }: StepperProps): react_jsx_runtime.JSX.Element;
815
+
816
+ type SidebarType = "traditional" | "compact" | "minimal";
817
+ interface SidebarContextValue {
818
+ collapsed: boolean;
819
+ onCollapsedChange: (collapsed: boolean) => void;
820
+ portalContainer: Element | null;
821
+ type: SidebarType;
822
+ }
823
+ declare function useSidebar(): SidebarContextValue | null;
824
+ type SidebarVariant = "default" | "dark" | "branded";
825
+ interface SidebarProps {
826
+ header?: ReactNode;
827
+ footer?: ReactNode;
828
+ children: ReactNode;
829
+ collapsed?: boolean;
830
+ defaultCollapsed?: boolean;
831
+ onCollapsedChange?: (collapsed: boolean) => void;
832
+ variant?: SidebarVariant;
833
+ /** Force dark-mode scoping for overlays (tooltips, dropdowns) portaled from this sidebar. */
834
+ darkMode?: boolean;
835
+ mini?: boolean;
836
+ /** Sidebar layout type: traditional (collapsible), compact (narrow icon+label stacked), minimal (transparent, no border) */
837
+ type?: SidebarType;
838
+ /** Fill available width (100%) instead of using a fixed token width. Use inside Drawers. */
839
+ fill?: boolean;
840
+ className?: string;
841
+ }
842
+ declare const Sidebar: react.ForwardRefExoticComponent<SidebarProps & react.RefAttributes<HTMLElement>>;
843
+
844
+ interface SidebarItem {
845
+ label: string;
846
+ icon?: IconName;
847
+ href?: string;
848
+ active?: boolean;
849
+ badge?: ReactNode;
850
+ children?: SidebarItem[];
851
+ defaultExpanded?: boolean;
852
+ }
853
+ interface SidebarSection {
854
+ label?: string;
855
+ items: SidebarItem[];
856
+ }
857
+ interface SidebarNavProps {
858
+ items?: SidebarItem[];
859
+ sections?: SidebarSection[];
860
+ collapsed?: boolean;
861
+ onCollapsedChange?: (collapsed: boolean) => void;
862
+ footer?: ReactNode;
863
+ onItemClick?: (item: SidebarItem, index: number) => void;
864
+ /** Override sidebar type (defaults to parent Sidebar context type) */
865
+ type?: SidebarType;
866
+ /** Mobile mode: disables hover flyouts for compact items, renders children inline instead. */
867
+ mobile?: boolean;
868
+ className?: string;
869
+ }
870
+ declare function SidebarNav({ items, sections, collapsed: propsCollapsed, onCollapsedChange: propsOnChange, footer, onItemClick, type: propsType, mobile, className, }: SidebarNavProps): react_jsx_runtime.JSX.Element;
871
+
872
+ interface SegmentedControlOption {
873
+ value: string;
874
+ label: string;
875
+ disabled?: boolean;
876
+ }
877
+ interface SegmentedControlProps {
878
+ value: string;
879
+ onChange: (value: string) => void;
880
+ options: SegmentedControlOption[];
881
+ size?: "sm" | "md" | "lg";
882
+ variant?: "default" | "ghost";
883
+ className?: string;
884
+ }
885
+ declare function SegmentedControl({ value, onChange, options, size, variant, className, }: SegmentedControlProps): react_jsx_runtime.JSX.Element;
886
+
887
+ interface BottomNavItem {
888
+ label: string;
889
+ icon: IconName;
890
+ active?: boolean;
891
+ }
892
+ interface BottomNavProps {
893
+ items: BottomNavItem[];
894
+ onItemClick?: (item: BottomNavItem, index: number) => void;
895
+ /** Max visible items before overflow. Defaults to 5. */
896
+ maxVisible?: number;
897
+ className?: string;
898
+ ref?: Ref<HTMLElement>;
899
+ }
900
+ declare function BottomNav({ items, onItemClick, maxVisible, className, ref }: BottomNavProps): react_jsx_runtime.JSX.Element;
901
+
902
+ interface BreadcrumbItem {
903
+ label: string;
904
+ href?: string;
905
+ onClick?: () => void;
906
+ }
907
+ type HeadingLevel = "h1" | "h2" | "h3" | "h4";
908
+ interface PageHeaderProps {
909
+ title: string;
910
+ description?: string;
911
+ badge?: ReactNode;
912
+ breadcrumbs?: BreadcrumbItem[];
913
+ onBack?: () => void;
914
+ actions?: ReactNode;
915
+ avatar?: ReactNode;
916
+ stats?: ReactNode;
917
+ filters?: ReactNode;
918
+ bannerImage?: string;
919
+ as?: HeadingLevel;
920
+ className?: string;
921
+ }
922
+ declare function PageHeader({ title, description, badge, breadcrumbs, onBack, actions, avatar, stats, filters, bannerImage, as: Heading, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
923
+
924
+ interface DockItem {
925
+ id: string;
926
+ icon: IconName | ReactNode;
927
+ label: string;
928
+ onClick?: () => void;
929
+ badge?: number;
930
+ }
931
+ interface DockProps {
932
+ items: DockItem[];
933
+ magnification?: number;
934
+ baseSize?: number;
935
+ className?: string;
936
+ }
937
+ declare function Dock({ items, magnification, baseSize, className, }: DockProps): react_jsx_runtime.JSX.Element;
938
+
939
+ type NavbarType = "default" | "underline" | "minimal";
940
+ type NavbarAlign = "left" | "center" | "right";
941
+ type NavbarVariant = "default" | "transparent" | "compact" | "branded";
942
+ interface NavbarProps {
943
+ logo?: ReactNode;
944
+ navLinks?: ReactNode;
945
+ search?: ReactNode;
946
+ actions?: ReactNode;
947
+ userMenu?: ReactNode;
948
+ variant?: NavbarVariant;
949
+ /** Visual style type: default (ghost-button nav items), underline (tab-style with bottom indicator), minimal (transparent, borderless, text-only) */
950
+ type?: NavbarType;
951
+ /** Horizontal alignment of nav links: left (default), center (viewport-centered), right (before actions) */
952
+ align?: NavbarAlign;
953
+ sticky?: boolean;
954
+ className?: string;
955
+ onMenuClick?: () => void;
956
+ }
957
+ declare const Navbar: react.ForwardRefExoticComponent<NavbarProps & react.RefAttributes<HTMLElement>>;
958
+
959
+ interface NavMenuItem {
960
+ label: string;
961
+ href?: string;
962
+ active?: boolean;
963
+ icon?: IconName;
964
+ description?: string;
965
+ /** Nested items render as a grouped section under this label */
966
+ children?: NavMenuItem[];
967
+ }
968
+ interface NavMenuProps {
969
+ /** Trigger label displayed in the navbar */
970
+ label: string;
971
+ items: NavMenuItem[];
972
+ /** Whether any child route is currently active (highlights the trigger) */
973
+ active?: boolean;
974
+ /** Matches the parent Navbar type for consistent styling */
975
+ type?: NavbarType;
976
+ onItemClick?: (item: NavMenuItem) => void;
977
+ className?: string;
978
+ }
979
+ declare function NavMenu({ label, items, active, type, onItemClick, className, }: NavMenuProps): react_jsx_runtime.JSX.Element;
980
+
981
+ type MobileHeaderMenuType = "default" | "underline" | "minimal";
982
+ interface MobileHeaderMenuItemData {
983
+ label: string;
984
+ icon?: IconName;
985
+ active?: boolean;
986
+ }
987
+ interface MobileHeaderMenuProps {
988
+ items: MobileHeaderMenuItemData[];
989
+ type?: MobileHeaderMenuType;
990
+ onItemClick?: (item: MobileHeaderMenuItemData, index: number) => void;
991
+ className?: string;
992
+ }
993
+ declare function MobileHeaderMenu({ items, type, onItemClick, className }: MobileHeaderMenuProps): react_jsx_runtime.JSX.Element;
994
+
995
+ type DialogSize = "sm" | "md" | "lg" | "xl" | "full";
996
+ interface DialogProps {
997
+ open: boolean;
998
+ onClose: () => void;
999
+ title: string;
1000
+ description?: string;
1001
+ children?: ReactNode;
1002
+ footer?: ReactNode;
1003
+ variant?: "default" | "destructive";
1004
+ size?: DialogSize;
1005
+ alert?: boolean;
1006
+ container?: Element | DocumentFragment;
1007
+ /** Called when Enter is pressed in the dialog (e.g. form submit). Primary footer button should use type="submit". */
1008
+ onSubmit?: () => void;
1009
+ }
1010
+ declare function Dialog({ open, onClose, title, description, children, footer, variant, size, alert, container, onSubmit }: DialogProps): react.ReactPortal | null;
1011
+
1012
+ interface DrawerProps {
1013
+ open: boolean;
1014
+ onClose: () => void;
1015
+ position?: "left" | "right" | "bottom";
1016
+ width?: string;
1017
+ title?: string;
1018
+ children: ReactNode;
1019
+ footer?: ReactNode;
1020
+ container?: Element | DocumentFragment;
1021
+ /** Remove default content padding — use when the child (e.g. Sidebar) handles its own spacing. */
1022
+ flush?: boolean;
1023
+ /** Use a lighter backdrop (no blur, subtle dim). Use for compact overlays. */
1024
+ lightBackdrop?: boolean;
1025
+ }
1026
+ declare function Drawer({ open, onClose, position, width, title, children, footer, container, flush, lightBackdrop }: DrawerProps): react.ReactPortal | null;
1027
+
1028
+ interface TooltipProps {
1029
+ content: ReactNode;
1030
+ children: ReactNode;
1031
+ side?: Side;
1032
+ delay?: number;
1033
+ className?: string;
1034
+ container?: Element | DocumentFragment;
1035
+ }
1036
+ declare function Tooltip({ content, children, side, delay, className, container }: TooltipProps): react_jsx_runtime.JSX.Element;
1037
+
1038
+ interface PopoverProps {
1039
+ open: boolean;
1040
+ onOpenChange: (open: boolean) => void;
1041
+ trigger: ReactNode;
1042
+ children: ReactNode;
1043
+ side?: Side;
1044
+ align?: Align;
1045
+ width?: "trigger" | "auto" | (string & {});
1046
+ className?: string;
1047
+ container?: Element | DocumentFragment;
1048
+ }
1049
+ declare function Popover({ open, onOpenChange, trigger, children, side, align, width, className, container }: PopoverProps): react_jsx_runtime.JSX.Element;
1050
+
1051
+ interface Command {
1052
+ id: string;
1053
+ label: string;
1054
+ icon?: IconName;
1055
+ shortcut?: string;
1056
+ group?: string;
1057
+ onSelect: () => void;
1058
+ }
1059
+ interface CommandPaletteProps {
1060
+ open: boolean;
1061
+ onOpenChange: (open: boolean) => void;
1062
+ commands: Command[];
1063
+ placeholder?: string;
1064
+ loading?: boolean;
1065
+ container?: Element | DocumentFragment;
1066
+ }
1067
+ declare function CommandPalette({ open, onOpenChange, commands, placeholder, loading, container }: CommandPaletteProps): react.ReactPortal | null;
1068
+
1069
+ interface HoverCardProps {
1070
+ content: ReactNode;
1071
+ children: ReactNode;
1072
+ side?: Side;
1073
+ delay?: number;
1074
+ closeDelay?: number;
1075
+ className?: string;
1076
+ container?: Element | DocumentFragment;
1077
+ }
1078
+ declare function HoverCard({ content, children, side, delay, closeDelay, className, container, }: HoverCardProps): react_jsx_runtime.JSX.Element;
1079
+
1080
+ interface ContextMenuItem {
1081
+ label: string;
1082
+ icon?: IconName;
1083
+ shortcut?: string;
1084
+ disabled?: boolean;
1085
+ destructive?: boolean;
1086
+ separator?: boolean;
1087
+ onClick?: () => void;
1088
+ }
1089
+ interface ContextMenuProps {
1090
+ items: ContextMenuItem[];
1091
+ children: ReactNode;
1092
+ className?: string;
1093
+ ref?: Ref<HTMLDivElement>;
1094
+ container?: Element | DocumentFragment;
1095
+ }
1096
+ declare function ContextMenu({ items, children, className, ref, container }: ContextMenuProps): react_jsx_runtime.JSX.Element;
1097
+
1098
+ interface SheetProps {
1099
+ open: boolean;
1100
+ onClose: () => void;
1101
+ title?: string;
1102
+ children: ReactNode;
1103
+ footer?: ReactNode;
1104
+ snapPoints?: number[];
1105
+ }
1106
+ declare function Sheet({ open, onClose, title, children, footer, snapPoints }: SheetProps): react.ReactPortal | null;
1107
+
1108
+ interface Notification {
1109
+ id: string;
1110
+ title: string;
1111
+ description?: string;
1112
+ timestamp: string;
1113
+ read?: boolean;
1114
+ avatar?: string;
1115
+ initials?: string;
1116
+ }
1117
+ interface NotificationCenterProps {
1118
+ notifications: Notification[];
1119
+ open?: boolean;
1120
+ onOpenChange?: (open: boolean) => void;
1121
+ onMarkRead?: (id: string) => void;
1122
+ onMarkAllRead?: () => void;
1123
+ onDismiss?: (id: string) => void;
1124
+ className?: string;
1125
+ container?: Element | DocumentFragment;
1126
+ ref?: Ref<HTMLDivElement>;
1127
+ variant?: "dropdown" | "page";
1128
+ filter?: "all" | "unread";
1129
+ onFilterChange?: (filter: "all" | "unread") => void;
1130
+ }
1131
+ declare function NotificationCenter({ notifications, open: controlledOpen, onOpenChange, onMarkRead, onMarkAllRead, onDismiss, className, container, ref, variant, filter: controlledFilter, onFilterChange, }: NotificationCenterProps): react_jsx_runtime.JSX.Element;
1132
+
1133
+ interface TourStep {
1134
+ target: string;
1135
+ title: string;
1136
+ content: ReactNode;
1137
+ placement?: "top" | "bottom" | "left" | "right";
1138
+ }
1139
+ interface TourProps {
1140
+ steps: TourStep[];
1141
+ open: boolean;
1142
+ onClose: () => void;
1143
+ onComplete?: () => void;
1144
+ container?: Element | DocumentFragment;
1145
+ }
1146
+ declare function Tour({ steps, open, onClose, onComplete, container }: TourProps): react.ReactPortal | null;
1147
+
1148
+ type AlertVariant = "info" | "success" | "warning" | "error";
1149
+ interface AlertAction {
1150
+ label: string;
1151
+ onClick: () => void;
1152
+ }
1153
+ interface AlertProps {
1154
+ variant: AlertVariant;
1155
+ title: string;
1156
+ children?: ReactNode;
1157
+ dismissible?: boolean;
1158
+ onDismiss?: () => void;
1159
+ action?: AlertAction;
1160
+ className?: string;
1161
+ }
1162
+ declare function Alert({ variant, title, children, dismissible, onDismiss, action, className }: AlertProps): react_jsx_runtime.JSX.Element;
1163
+
1164
+ type ToastVariant = "default" | "success" | "warning" | "error";
1165
+ type ToastPosition = "top-right" | "top-left" | "bottom-right" | "bottom-left" | "top-center" | "bottom-center";
1166
+ interface ToastAction {
1167
+ label: string;
1168
+ onClick: () => void;
1169
+ }
1170
+ interface ToastProps {
1171
+ variant?: ToastVariant;
1172
+ message: ReactNode;
1173
+ visible: boolean;
1174
+ onDismiss: () => void;
1175
+ duration?: number;
1176
+ pauseOnHover?: boolean;
1177
+ action?: ToastAction;
1178
+ position?: ToastPosition;
1179
+ container?: Element | DocumentFragment;
1180
+ }
1181
+ declare function Toast({ variant, message, visible, onDismiss, duration, pauseOnHover, action, position, container }: ToastProps): react.ReactPortal | null;
1182
+
1183
+ type ProgressVariant = "default" | "success" | "warning" | "error";
1184
+ interface ProgressProps {
1185
+ value?: number;
1186
+ max?: number;
1187
+ variant?: ProgressVariant;
1188
+ size?: "sm" | "md" | "lg";
1189
+ indeterminate?: boolean;
1190
+ showLabel?: boolean;
1191
+ className?: string;
1192
+ }
1193
+ declare function Progress({ value, max, variant, size, indeterminate, showLabel, className }: ProgressProps): react_jsx_runtime.JSX.Element;
1194
+
1195
+ declare const sizes: {
1196
+ readonly sm: "h-4 w-4 border-[1.5px]";
1197
+ readonly md: "h-6 w-6 border-2";
1198
+ readonly lg: "h-8 w-8 border-[2.5px]";
1199
+ };
1200
+ interface SpinnerProps {
1201
+ size?: keyof typeof sizes;
1202
+ color?: "default" | "inherit";
1203
+ label?: string;
1204
+ className?: string;
1205
+ }
1206
+ declare function Spinner({ size, color, label, className }: SpinnerProps): react_jsx_runtime.JSX.Element;
1207
+
1208
+ type Orientation = "horizontal" | "vertical";
1209
+ interface DividerProps {
1210
+ orientation?: Orientation;
1211
+ label?: ReactNode;
1212
+ className?: string;
1213
+ }
1214
+ declare function Divider({ orientation, label, className, }: DividerProps): react_jsx_runtime.JSX.Element;
1215
+
1216
+ interface ScrollAreaProps {
1217
+ children: ReactNode;
1218
+ className?: string;
1219
+ orientation?: "vertical" | "horizontal" | "both";
1220
+ maxHeight?: string | number;
1221
+ maxWidth?: string | number;
1222
+ }
1223
+ declare function ScrollArea({ children, className, orientation, maxHeight, maxWidth, }: ScrollAreaProps): react_jsx_runtime.JSX.Element;
1224
+
1225
+ type PanelGroupProps = ComponentProps<typeof Group>;
1226
+ type Direction = "horizontal" | "vertical";
1227
+ interface ResizablePanelGroupProps extends Omit<PanelGroupProps, "className" | "orientation"> {
1228
+ direction?: Direction;
1229
+ className?: string;
1230
+ }
1231
+ declare function ResizablePanelGroup({ className, direction, ...props }: ResizablePanelGroupProps): react_jsx_runtime.JSX.Element;
1232
+ type PanelProps = ComponentProps<typeof Panel>;
1233
+ interface ResizablePanelProps extends Omit<PanelProps, "className"> {
1234
+ className?: string;
1235
+ }
1236
+ declare function ResizablePanel({ className, ...props }: ResizablePanelProps): react_jsx_runtime.JSX.Element;
1237
+ type PanelResizeHandleProps = ComponentProps<typeof Separator>;
1238
+ interface ResizableHandleProps extends Omit<PanelResizeHandleProps, "className"> {
1239
+ withHandle?: boolean;
1240
+ className?: string;
1241
+ }
1242
+ declare function ResizableHandle({ withHandle, className, ...props }: ResizableHandleProps): react_jsx_runtime.JSX.Element;
1243
+
1244
+ interface AppShellContextValue {
1245
+ hasSidebar: boolean;
1246
+ hasMobileMenu: boolean;
1247
+ sidebarOpen: boolean;
1248
+ setSidebarOpen: (open: boolean) => void;
1249
+ isMobile: boolean;
1250
+ /** True only for tablet-sized viewports (between sm and md breakpoints). Drawer shows here, not on small mobile. */
1251
+ isTablet: boolean;
1252
+ }
1253
+ declare function useAppShell(): AppShellContextValue | null;
1254
+ type AppShellLayout = "sidebar" | "stacked" | "sidebar-header" | "multi-column";
1255
+ interface AppShellProps {
1256
+ layout?: AppShellLayout;
1257
+ sidebar?: ReactNode;
1258
+ /** Content to render in the mobile drawer. For sidebar layouts, this is typically a Sidebar+SidebarNav. For header layouts, a MobileHeaderMenu. */
1259
+ mobileMenu?: ReactNode;
1260
+ /** Override drawer width for the mobile menu. Defaults to --ds-drawer-width. */
1261
+ mobileMenuWidth?: string;
1262
+ /** Use a lighter backdrop for the mobile menu drawer. */
1263
+ mobileMenuLightBackdrop?: boolean;
1264
+ /** Remove drawer padding and borders. Default true. Set false for compact overlays. */
1265
+ mobileMenuFlush?: boolean;
1266
+ navbar?: ReactNode;
1267
+ mobileNav?: ReactNode;
1268
+ children: ReactNode;
1269
+ className?: string;
1270
+ /** When false, main area won't scroll — use for full-height layouts like ResizablePanelGroup. Default true. */
1271
+ scrollable?: boolean;
1272
+ }
1273
+ declare const AppShell: react.ForwardRefExoticComponent<AppShellProps & react.RefAttributes<HTMLDivElement>>;
1274
+
1275
+ type MaxWidth = "sm" | "md" | "lg" | "xl" | "full";
1276
+ type Padding = "none" | "default" | "wide";
1277
+ interface PageContainerProps {
1278
+ maxWidth?: MaxWidth;
1279
+ padding?: Padding;
1280
+ centered?: boolean;
1281
+ children: ReactNode;
1282
+ className?: string;
1283
+ }
1284
+ declare const PageContainer: react.ForwardRefExoticComponent<PageContainerProps & react.RefAttributes<HTMLDivElement>>;
1285
+
1286
+ interface SectionHeadingProps {
1287
+ title: string;
1288
+ description?: string;
1289
+ actions?: ReactNode;
1290
+ badge?: ReactNode;
1291
+ tabs?: ReactNode;
1292
+ bordered?: boolean;
1293
+ className?: string;
1294
+ }
1295
+ declare const SectionHeading: react.ForwardRefExoticComponent<SectionHeadingProps & react.RefAttributes<HTMLDivElement>>;
1296
+
1297
+ interface ActionPanelProps {
1298
+ title: string;
1299
+ description?: string;
1300
+ action: ReactNode;
1301
+ className?: string;
1302
+ }
1303
+ declare const ActionPanel: react.ForwardRefExoticComponent<ActionPanelProps & react.RefAttributes<HTMLDivElement>>;
1304
+ interface ActionPanelGroupProps {
1305
+ children: ReactNode;
1306
+ divided?: boolean;
1307
+ className?: string;
1308
+ }
1309
+ declare const ActionPanelGroup: react.ForwardRefExoticComponent<ActionPanelGroupProps & react.RefAttributes<HTMLDivElement>>;
1310
+
1311
+ export { Accordion, ActionPanel, ActionPanelGroup, Alert, AppShell, type AppShellContextValue, Avatar, Badge, type BadgeSize, type BadgeVariant, BottomNav, type BottomNavItem, Breadcrumbs, type BreakpointKey, BreakpointWidthProvider, BulkActionBar, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, ChatMessageList, Checkbox, CheckboxGroup, CheckboxGroupItem, CodeBlock, Collapsible, ColorPicker, type Column, Combobox, CommandPalette, ContextMenu, DataGrid, DataList, DatePicker, Dialog, Divider, Dock, Drawer, Dropdown, DropdownMenu, EmptyState, FileUpload, FormWrapper, HoverCard, InlineFieldError, Input, KanbanBoard, Kbd, Label, MentionInput, MobileHeaderMenu, type MobileHeaderMenuItemData, type MobileHeaderMenuType, NavMenu, type NavMenuItem, Navbar, type NavbarType, NotificationCenter, NumberInput, PageContainer, PageHeader, type PageHeaderProps, Pagination, PinInput, Popover, Progress, RadioGroup, Rating, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, ScrollArea, SectionHeading, SegmentedControl, Sheet, Sidebar, type SidebarContextValue, type SidebarItem, SidebarNav, type SidebarSection, type SidebarType, Skeleton, SliderRange, Spinner, StackedList, StatsCard, Stepper, type Tab, Table, type TableDensity, type TableProps, Tabs, Tag, TagInput, type TagVariant, Textarea, TimePicker, Timeline, Toast, Toggle, Tooltip, Tour, TransferList, TreeView, VirtualizedList, useAppShell, useBreakpoint, useFormContext, useSidebar };