bruv-ui 0.2.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.
Files changed (44) hide show
  1. package/dist/area-chart.d.ts +84 -0
  2. package/dist/area-chart.js +2002 -0
  3. package/dist/area-chart.js.map +1 -0
  4. package/dist/bar-chart.d.ts +80 -0
  5. package/dist/bar-chart.js +2251 -0
  6. package/dist/bar-chart.js.map +1 -0
  7. package/dist/chart-background-BK77UXhl.d.ts +9 -0
  8. package/dist/chart-brush-BoxY9aDm.d.ts +72 -0
  9. package/dist/chart-dot-8H287EDv.d.ts +17 -0
  10. package/dist/chart-legend-Dv9pqes-.d.ts +16 -0
  11. package/dist/chart-tooltip-DajpzJRy.d.ts +68 -0
  12. package/dist/charts.d.ts +17 -0
  13. package/dist/charts.js +5097 -0
  14. package/dist/charts.js.map +1 -0
  15. package/dist/composed-chart.d.ts +93 -0
  16. package/dist/composed-chart.js +2338 -0
  17. package/dist/composed-chart.js.map +1 -0
  18. package/dist/form-dK_DJRTw.d.ts +43 -0
  19. package/dist/form-rhf.d.ts +26 -0
  20. package/dist/form-rhf.js +268 -0
  21. package/dist/form-rhf.js.map +1 -0
  22. package/dist/index.d.ts +2881 -0
  23. package/dist/index.js +9368 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/line-chart.d.ts +81 -0
  26. package/dist/line-chart.js +1879 -0
  27. package/dist/line-chart.js.map +1 -0
  28. package/dist/pie-chart.d.ts +64 -0
  29. package/dist/pie-chart.js +1094 -0
  30. package/dist/pie-chart.js.map +1 -0
  31. package/dist/radar-chart.d.ts +67 -0
  32. package/dist/radar-chart.js +1318 -0
  33. package/dist/radar-chart.js.map +1 -0
  34. package/dist/radial-chart.d.ts +56 -0
  35. package/dist/radial-chart.js +1051 -0
  36. package/dist/radial-chart.js.map +1 -0
  37. package/dist/sankey-chart.d.ts +58 -0
  38. package/dist/sankey-chart.js +1179 -0
  39. package/dist/sankey-chart.js.map +1 -0
  40. package/package.json +135 -0
  41. package/src/scales.css +288 -0
  42. package/src/shiki.css +37 -0
  43. package/src/styles.css +23 -0
  44. package/src/theme.css +659 -0
@@ -0,0 +1,2881 @@
1
+ import { ClassValue } from 'clsx';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import * as react from 'react';
4
+ import react__default, { ReactNode, ComponentType, ComponentProps, ComponentPropsWithoutRef, forwardRef, ReactElement, MouseEvent, CSSProperties } from 'react';
5
+ import { Button as Button$1 } from '@base-ui/react/button';
6
+ import { Switch } from '@base-ui/react/switch';
7
+ import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
8
+ import { Separator as Separator$1 } from '@base-ui/react/separator';
9
+ export { F as Form, a as FormErrorProps, b as FormFieldProps, c as FormHintProps, d as FormInputProps, e as FormInputSize, f as FormLabelProps, g as FormRootProps, h as FormTextareaProps } from './form-dK_DJRTw.js';
10
+ import { Menu } from '@base-ui/react/menu';
11
+ import * as _base_ui_react from '@base-ui/react';
12
+ import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
13
+ import { ColumnDef, RowSelectionState, Row, TableOptions, Table as Table$1 } from '@tanstack/react-table';
14
+ export { Column, ColumnDef, ColumnFiltersState, Row, RowSelectionState, SortingState, TableOptions } from '@tanstack/react-table';
15
+ import { Progress as Progress$1 } from '@base-ui/react/progress';
16
+ import { Slider as Slider$1 } from '@base-ui/react/slider';
17
+ import { NumberField } from '@base-ui/react/number-field';
18
+ import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
19
+ import { ContextMenu as ContextMenu$1 } from '@base-ui/react/context-menu';
20
+ import { OTPFieldPreview } from '@base-ui/react/otp-field';
21
+ import { Toolbar as Toolbar$1 } from '@base-ui/react/toolbar';
22
+ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
23
+ import { Popover as Popover$1 } from '@base-ui/react/popover';
24
+ import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
25
+ import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
26
+ import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
27
+ import { Drawer as Drawer$1 } from '@base-ui/react/drawer';
28
+ import { Command as Command$1 } from 'cmdk';
29
+ import { Toggle as Toggle$1 } from '@base-ui/react/toggle';
30
+ import { ToggleGroup } from '@base-ui/react/toggle-group';
31
+ import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
32
+ import { Radio } from '@base-ui/react/radio';
33
+ import '@base-ui/react/field';
34
+
35
+ declare function cn(...inputs: ClassValue[]): string;
36
+
37
+ type LinkComponent$1 = ComponentType<{
38
+ to?: string;
39
+ href?: string;
40
+ className?: string;
41
+ children?: ReactNode;
42
+ }>;
43
+ interface BreadcrumbOption {
44
+ readonly value: string;
45
+ readonly label: string;
46
+ readonly icon?: ReactNode;
47
+ readonly [key: string]: unknown;
48
+ }
49
+ interface BreadcrumbItem {
50
+ /** Display label for this segment */
51
+ readonly label: string;
52
+ /** Optional icon rendered before the label */
53
+ readonly icon?: ReactNode;
54
+ /** Link URL — makes the label a clickable link */
55
+ readonly href?: string;
56
+ /** Enable a dropdown selector (ChevronUpDown trigger) */
57
+ readonly selector?: boolean;
58
+ /** Options for the selector dropdown */
59
+ readonly options?: BreadcrumbOption[];
60
+ /** Callback when a selector option is chosen */
61
+ readonly onSelect?: (value: string) => void;
62
+ /** Currently selected value for the selector */
63
+ readonly value?: string;
64
+ }
65
+ interface BreadcrumbProps {
66
+ /** Breadcrumb segments */
67
+ readonly items: BreadcrumbItem[];
68
+ /** Custom link component (e.g. TanStack Router's Link, Next.js Link). Defaults to <a>. */
69
+ readonly linkComponent?: LinkComponent$1;
70
+ readonly className?: string;
71
+ }
72
+ /**
73
+ * Breadcrumb navigation with support for links, selectors, and icons.
74
+ *
75
+ * Each segment can be:
76
+ * - **Static text** — plain label (last segment, current page)
77
+ * - **Link** — clickable label that navigates to a parent page
78
+ * - **Selector** — label + chevron dropdown to switch between siblings
79
+ * (e.g. switch repos). The label can also be a link independently.
80
+ *
81
+ * Usage:
82
+ * ```tsx
83
+ * <Breadcrumb
84
+ * items={[
85
+ * { label: "Repositories", href: "/repositories" },
86
+ * { label: "landing", href: "/repos/landing", selector: true, options: repos, value: "landing" },
87
+ * { label: "Settings" },
88
+ * ]}
89
+ * />
90
+ * ```
91
+ */
92
+ declare function Breadcrumb({ items, linkComponent: LinkEl, className, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
93
+
94
+ declare const variantConfig$2: {
95
+ readonly primary: {
96
+ readonly active: true;
97
+ readonly bg: "bg-bruv-inverse";
98
+ readonly bgClassName: "shadow-xs inset-shadow-bruv-primary group-hover/btn:bg-bruv-inverse/90";
99
+ readonly text: "text-bruv-inverse";
100
+ };
101
+ readonly outline: {
102
+ readonly active: true;
103
+ readonly bg: "bg-bruv-base-2";
104
+ readonly bgClassName: "border border-bruv-neutral shadow-xs group-hover/btn:bg-bruv-subtle group-active/btn:bg-bruv-subtle";
105
+ readonly text: "text-bruv-primary";
106
+ };
107
+ readonly secondary: {
108
+ readonly active: true;
109
+ readonly bg: "bg-bruv-subtle";
110
+ readonly bgClassName: "group-hover/btn:bg-bruv-subtle/70";
111
+ readonly text: "text-bruv-primary";
112
+ };
113
+ readonly transparent: {
114
+ readonly active: false;
115
+ readonly bg: "";
116
+ readonly bgClassName: "group-hover/btn:bg-bruv-subtle group-active/btn:bg-bruv-subtle";
117
+ readonly text: "text-bruv-secondary";
118
+ };
119
+ readonly danger: {
120
+ readonly active: true;
121
+ readonly bg: "bg-bruv-danger";
122
+ readonly bgClassName: "border border-bruv-danger shadow-xs group-hover/btn:bg-bruv-danger-strong group-active/btn:bg-bruv-danger-strong";
123
+ readonly text: "text-bruv-danger-on";
124
+ };
125
+ readonly "danger-light": {
126
+ readonly active: true;
127
+ readonly bg: "bg-bruv-danger-subtle";
128
+ readonly bgClassName: "group-hover/btn:bg-bruv-danger/30 group-active/btn:bg-bruv-danger/50";
129
+ readonly text: "text-bruv-danger";
130
+ };
131
+ };
132
+ declare const sizeStyles$c: {
133
+ readonly xs: {
134
+ readonly height: "h-6";
135
+ readonly padding: "px-1.5";
136
+ readonly textPadding: "px-1";
137
+ readonly icon: "w-6";
138
+ };
139
+ readonly sm: {
140
+ readonly height: "h-7";
141
+ readonly padding: "px-1.5";
142
+ readonly textPadding: "px-1";
143
+ readonly icon: "w-7";
144
+ };
145
+ readonly md: {
146
+ readonly height: "h-8";
147
+ readonly padding: "px-2";
148
+ readonly textPadding: "px-1";
149
+ readonly icon: "w-8";
150
+ };
151
+ };
152
+ type ButtonVariant = keyof typeof variantConfig$2;
153
+ type ButtonSize = keyof typeof sizeStyles$c;
154
+ interface ButtonProps extends ComponentProps<typeof Button$1> {
155
+ /** Visual style variant */
156
+ variant?: ButtonVariant;
157
+ /** Size of the button */
158
+ size?: ButtonSize;
159
+ /** Icon element rendered before the label */
160
+ iconLeft?: ReactNode;
161
+ /** Icon element rendered after the label */
162
+ iconRight?: ReactNode;
163
+ /** Free-form content rendered after the label, before iconRight */
164
+ trailing?: ReactNode;
165
+ /** Show a loading spinner overlay */
166
+ loading?: boolean;
167
+ }
168
+ /**
169
+ * Button component built on Base UI with Tailwind CSS styling.
170
+ *
171
+ * All variants use an animated hover layer for consistent press/hover
172
+ * feedback. The layer handles bg, border, and shadow - the outer button
173
+ * is just a layout shell.
174
+ */
175
+ declare const Button: react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & react.RefAttributes<HTMLElement>>;
176
+
177
+ interface HoverGroupProps {
178
+ children: ReactNode;
179
+ /** Background class for the sliding pill */
180
+ background?: string;
181
+ /** Border radius class for the sliding pill */
182
+ borderRadius?: string;
183
+ className?: string;
184
+ }
185
+ declare function HoverGroup({ children, background, borderRadius, className, }: HoverGroupProps): react_jsx_runtime.JSX.Element;
186
+ interface HoverProps extends Omit<ComponentProps<"div">, "children"> {
187
+ children: ReactNode;
188
+ /** Force the hover background visible (e.g. active/selected state) */
189
+ active?: boolean;
190
+ /** Background class applied to the hover layer */
191
+ background?: string;
192
+ /** Additional classes on the animated background layer (border, shadow, hover color shifts, etc.) */
193
+ backgroundClassName?: string;
194
+ /** Border radius class */
195
+ borderRadius?: string;
196
+ /** Enable focus ring */
197
+ focus?: boolean;
198
+ /** Enable active/press shrink effect */
199
+ interactive?: boolean;
200
+ /** When true, hover bg appears instantly (no opacity/inset transition).
201
+ * Only the press effect (inset shrink) animates. Useful for menus. */
202
+ instantHover?: boolean;
203
+ /** Disable all hover/focus effects */
204
+ disabled?: boolean;
205
+ /** Stretch to full width */
206
+ fullWidth?: boolean;
207
+ }
208
+ /**
209
+ * Animated hover/focus wrapper.
210
+ *
211
+ * **Standalone**: renders an absolutely-positioned background layer behind its
212
+ * children that transitions in on hover/focus. On press, the background shrinks
213
+ * by 1px on all sides.
214
+ *
215
+ * **Inside Hover.Group**: registers for the shared sliding hover pill.
216
+ * When `active`, renders its own static background with the press inset
217
+ * effect (same as standalone active state). The group pill handles hover.
218
+ */
219
+ declare function Hover({ children, active, background, backgroundClassName, borderRadius, focus, interactive, instantHover, disabled, fullWidth, className, ...rest }: HoverProps): react_jsx_runtime.JSX.Element;
220
+
221
+ declare const sizeStyles$b: {
222
+ readonly sm: {
223
+ readonly track: "w-9 h-5";
224
+ readonly thumb: "h-4 w-4 group-active/toggle:w-5";
225
+ };
226
+ readonly md: {
227
+ readonly track: "w-11 h-6";
228
+ readonly thumb: "h-5 w-5 group-active/toggle:w-6";
229
+ };
230
+ };
231
+ type ToggleSize = keyof typeof sizeStyles$b;
232
+ interface ToggleProps extends ComponentPropsWithoutRef<typeof Switch.Root> {
233
+ /** Size of the toggle. */
234
+ size?: ToggleSize;
235
+ }
236
+ /**
237
+ * Toggle switch component built on Base UI Switch with Tailwind CSS styling.
238
+ */
239
+ declare const Toggle: react.ForwardRefExoticComponent<ToggleProps & react.RefAttributes<HTMLButtonElement>>;
240
+
241
+ declare const sizeStyles$a: {
242
+ readonly sm: {
243
+ readonly root: "size-4 rounded-[4px]";
244
+ readonly icon: "size-3";
245
+ readonly label: "text-bruv-sm";
246
+ };
247
+ readonly md: {
248
+ readonly root: "size-[18px] rounded-[5px]";
249
+ readonly icon: "size-3.5";
250
+ readonly label: "text-bruv-base";
251
+ };
252
+ };
253
+ type CheckboxSize = keyof typeof sizeStyles$a;
254
+ interface CheckboxProps extends ComponentPropsWithoutRef<typeof Checkbox$1.Root> {
255
+ /** Size of the checkbox. */
256
+ size?: CheckboxSize;
257
+ /** Optional label rendered beside the checkbox. */
258
+ label?: ReactNode;
259
+ }
260
+ /**
261
+ * Checkbox component built on Base UI Checkbox with Tailwind CSS styling.
262
+ *
263
+ * Supports controlled/uncontrolled usage, indeterminate state, disabled
264
+ * state, and an optional label. The label is clickable and toggles the
265
+ * checkbox. An expanded hit area (32px) makes the checkbox easier to click.
266
+ *
267
+ * Checked state uses accent color. Indeterminate state uses neutral gray
268
+ * to visually distinguish it from a deliberate selection.
269
+ */
270
+ declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLButtonElement>>;
271
+
272
+ declare const sizeStyles$9: {
273
+ readonly sm: "size-6";
274
+ readonly md: "size-7";
275
+ };
276
+ type ColorPickerSize = keyof typeof sizeStyles$9;
277
+ interface ColorPickerOption {
278
+ readonly value: string;
279
+ readonly label: string;
280
+ readonly color: string;
281
+ }
282
+ interface ColorPickerProps {
283
+ readonly options: readonly ColorPickerOption[];
284
+ readonly label?: string;
285
+ readonly value?: string;
286
+ readonly defaultValue?: string;
287
+ readonly onValueChange?: (value: string) => void;
288
+ readonly size?: ColorPickerSize;
289
+ readonly className?: string;
290
+ readonly disabled?: boolean;
291
+ readonly "aria-label"?: string;
292
+ }
293
+ declare const ColorPicker: react.ForwardRefExoticComponent<ColorPickerProps & react.RefAttributes<HTMLDivElement>>;
294
+
295
+ declare const variantStyles$1: {
296
+ readonly default: "bg-bruv-base-1 rounded-bruv-lg shadow-xs ring-1 ring-bruv-neutral";
297
+ readonly nested: "bg-bruv-base-2 rounded-bruv-sm shadow-sm ring-1 ring-bruv-neutral/50";
298
+ };
299
+ type CardVariant = keyof typeof variantStyles$1;
300
+ interface CardProps {
301
+ /** Visual style variant */
302
+ variant?: CardVariant;
303
+ className?: string;
304
+ children: ReactNode;
305
+ }
306
+ interface CardContentProps {
307
+ className?: string;
308
+ children: ReactNode;
309
+ }
310
+ interface CardHeaderProps {
311
+ className?: string;
312
+ children: ReactNode;
313
+ }
314
+ interface CardBodyProps {
315
+ className?: string;
316
+ children: ReactNode;
317
+ }
318
+ interface CardSectionProps {
319
+ className?: string;
320
+ children: ReactNode;
321
+ }
322
+ /**
323
+ * Inner wrapper that provides consistent padding inside a Card.
324
+ * Put Card.Header, Card.Body, nested Cards, etc. inside this.
325
+ */
326
+ declare const CardContent: react.ForwardRefExoticComponent<CardContentProps & react.RefAttributes<HTMLDivElement>>;
327
+ declare const CardHeader: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
328
+ declare const CardBody: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
329
+ declare const CardSection: react.ForwardRefExoticComponent<CardSectionProps & react.RefAttributes<HTMLDivElement>>;
330
+ /**
331
+ * Card compound component.
332
+ *
333
+ * Use Card.Content as the first child to get consistent inner padding,
334
+ * then place Card.Header, Card.Body, Card.Section, or nested Cards inside it.
335
+ */
336
+ declare const Card$1: ReturnType<typeof forwardRef<HTMLDivElement, CardProps>> & {
337
+ Content: typeof CardContent;
338
+ Header: typeof CardHeader;
339
+ Body: typeof CardBody;
340
+ Section: typeof CardSection;
341
+ };
342
+
343
+ declare const sizeStyles$8: {
344
+ readonly sm: "h-7 px-1.5";
345
+ readonly md: "h-8 px-1.5";
346
+ };
347
+ type NavLinkSize = keyof typeof sizeStyles$8;
348
+ interface NavLinksProps {
349
+ className?: string;
350
+ children: ReactNode;
351
+ }
352
+ interface NavLinkProps {
353
+ /** Whether this link is the currently active/selected item */
354
+ active?: boolean;
355
+ /** Optional icon rendered before the label */
356
+ icon?: ReactNode;
357
+ /** When provided, renders an <a> tag instead of <button> */
358
+ href?: string;
359
+ /** Click handler */
360
+ onClick?: () => void;
361
+ /** Size of the nav link */
362
+ size?: NavLinkSize;
363
+ className?: string;
364
+ children: ReactNode;
365
+ }
366
+ /**
367
+ * Container for a horizontal group of navigation links.
368
+ *
369
+ * Wraps children in a HoverGroup so the sliding indicator
370
+ * is shared across all NavLink items.
371
+ */
372
+ declare function NavLinks({ className, children }: NavLinksProps): react_jsx_runtime.JSX.Element;
373
+ /**
374
+ * Individual navigation link item.
375
+ *
376
+ * Inside a NavLinks (HoverGroup), automatically gets the shared sliding
377
+ * indicator on hover and a press shrink effect on click.
378
+ * Renders a `<button>` by default - when `href` is provided,
379
+ * renders an `<a>` tag instead.
380
+ */
381
+ declare function NavLink({ active, icon, href, onClick, size, className, children, }: NavLinkProps): react_jsx_runtime.JSX.Element;
382
+
383
+ type AvatarVariant = "circle" | "square";
384
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
385
+ type AvatarColor = "neutral" | "accent" | "danger" | "warn" | "success";
386
+ type AvatarGenerativePattern = "grid" | "symmetric" | "dense" | "quad" | "quad-dense" | "diagonal" | "sierpinski";
387
+ interface AvatarProps {
388
+ /** Image URL */
389
+ src?: string;
390
+ /** Fallback initials (1-2 characters) */
391
+ initials?: string;
392
+ /**
393
+ * Seed string for generative pixel-grid fallback.
394
+ * Used when no `src` or `initials` are provided.
395
+ * Each seed produces a unique deterministic pattern and color.
396
+ */
397
+ seed?: string;
398
+ /**
399
+ * Pattern variant for the generative fallback.
400
+ * Only used when rendering from `seed`.
401
+ */
402
+ generativePattern?: AvatarGenerativePattern;
403
+ /** Alt text for the image */
404
+ alt?: string;
405
+ /** Shape variant */
406
+ variant?: AvatarVariant;
407
+ /** Size */
408
+ size?: AvatarSize;
409
+ /** Color preset — automatically sets matching background and text color */
410
+ color?: AvatarColor;
411
+ className?: string;
412
+ }
413
+ /**
414
+ * Avatar component with image, initials, or generative pixel-grid fallback.
415
+ *
416
+ * Fallback priority: `src` > `initials` > `seed` (generative) > empty
417
+ *
418
+ * - `circle` variant for users (fully rounded)
419
+ * - `square` variant for organizations/workspaces (rounded corners)
420
+ */
421
+ declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLElement>>;
422
+
423
+ type LinkComponent = ComponentType<{
424
+ to?: string;
425
+ href?: string;
426
+ className?: string;
427
+ children?: ReactNode;
428
+ }>;
429
+ interface AppHeaderProps {
430
+ children: ReactNode;
431
+ className?: string;
432
+ }
433
+ interface AppHeaderBreadcrumbProps {
434
+ items: BreadcrumbItem[];
435
+ /** Optional leading logo/mark rendered before the first breadcrumb segment. */
436
+ logo?: ReactNode;
437
+ /** Optional href the logo links to. Defaults to "/". */
438
+ logoHref?: string;
439
+ /** Custom link component (e.g. TanStack Router's Link, Next.js Link, etc.). Defaults to <a>. */
440
+ linkComponent?: LinkComponent;
441
+ className?: string;
442
+ }
443
+ interface AppHeaderActionsProps {
444
+ children: ReactNode;
445
+ className?: string;
446
+ }
447
+ /**
448
+ * AppHeader breadcrumb — optionally renders a leading logo link followed by
449
+ * breadcrumb segments. Delegates to the standalone Breadcrumb component for
450
+ * segment rendering.
451
+ */
452
+ declare function AppHeaderBreadcrumb({ items, logo, logoHref, linkComponent: LinkEl, className, }: AppHeaderBreadcrumbProps): react_jsx_runtime.JSX.Element;
453
+ declare const AppHeaderActions: react.ForwardRefExoticComponent<AppHeaderActionsProps & react.RefAttributes<HTMLDivElement>>;
454
+ declare const AppHeader: ReturnType<typeof forwardRef<HTMLElement, AppHeaderProps>> & {
455
+ Breadcrumb: typeof AppHeaderBreadcrumb;
456
+ Actions: typeof AppHeaderActions;
457
+ Avatar: typeof Avatar;
458
+ };
459
+
460
+ interface SettingsCardProps {
461
+ /** Title displayed in the card header */
462
+ title?: string;
463
+ /** Description displayed below the title */
464
+ description?: string;
465
+ /**
466
+ * When true, renders a Toggle in the header. Toggling it on disables (mutes)
467
+ * the card's rows - useful for "Use Organization Settings" patterns.
468
+ */
469
+ toggle?: boolean;
470
+ /** Controlled toggle state */
471
+ toggled?: boolean;
472
+ /** Callback when toggle state changes */
473
+ onToggleChange?: (toggled: boolean) => void;
474
+ /** Initial toggle state for uncontrolled usage */
475
+ defaultToggled?: boolean;
476
+ /** Settings rows or other content */
477
+ children: ReactNode;
478
+ className?: string;
479
+ }
480
+ /**
481
+ * A specialized card for settings pages. Uses the Card component internally
482
+ * with an optional header and a nested card for the settings rows.
483
+ *
484
+ * Pass `toggle` to show a toggle in the header. When toggled on, the child
485
+ * rows are visually disabled (muted + non-interactive).
486
+ */
487
+ declare const SettingsCard: react.ForwardRefExoticComponent<SettingsCardProps & react.RefAttributes<HTMLDivElement>>;
488
+ interface SettingsRowRootProps extends ComponentProps<"div"> {
489
+ children: ReactNode;
490
+ }
491
+ interface SettingsRowHeaderProps {
492
+ className?: string;
493
+ children: ReactNode;
494
+ }
495
+ interface SettingsRowLabelProps {
496
+ className?: string;
497
+ children: ReactNode;
498
+ }
499
+ interface SettingsRowDescriptionProps {
500
+ className?: string;
501
+ children: ReactNode;
502
+ }
503
+ interface SettingsRowControlProps {
504
+ className?: string;
505
+ children: ReactNode;
506
+ }
507
+ interface SettingsRowActionProps {
508
+ className?: string;
509
+ children: ReactNode;
510
+ }
511
+ interface SettingsRowContentProps {
512
+ className?: string;
513
+ children: ReactNode;
514
+ }
515
+ /**
516
+ * Composable settings row for use inside `SettingsCard`.
517
+ *
518
+ * ```tsx
519
+ * <SettingsRow.Root>
520
+ * <SettingsRow.Header>
521
+ * <div>
522
+ * <SettingsRow.Label>Language</SettingsRow.Label>
523
+ * <SettingsRow.Description>
524
+ * Set the language for reviews.
525
+ * </SettingsRow.Description>
526
+ * </div>
527
+ * <SettingsRow.Control>
528
+ * <Select />
529
+ * </SettingsRow.Control>
530
+ * </SettingsRow.Header>
531
+ * </SettingsRow.Root>
532
+ *
533
+ * // With content below
534
+ * <SettingsRow.Root>
535
+ * <SettingsRow.Header>
536
+ * <div>
537
+ * <SettingsRow.Label>Instructions</SettingsRow.Label>
538
+ * <SettingsRow.Description>
539
+ * Custom review instructions.
540
+ * </SettingsRow.Description>
541
+ * </div>
542
+ * <SettingsRow.Action>
543
+ * <Button>Add</Button>
544
+ * </SettingsRow.Action>
545
+ * </SettingsRow.Header>
546
+ * <SettingsRow.Content>
547
+ * <Textarea />
548
+ * </SettingsRow.Content>
549
+ * </SettingsRow.Root>
550
+ * ```
551
+ */
552
+ declare const SettingsRow: {
553
+ Root: react.ForwardRefExoticComponent<Omit<SettingsRowRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
554
+ Header: react.ForwardRefExoticComponent<SettingsRowHeaderProps & react.RefAttributes<HTMLDivElement>>;
555
+ Label: react.ForwardRefExoticComponent<SettingsRowLabelProps & react.RefAttributes<HTMLDivElement>>;
556
+ Description: react.ForwardRefExoticComponent<SettingsRowDescriptionProps & react.RefAttributes<HTMLDivElement>>;
557
+ Control: react.ForwardRefExoticComponent<SettingsRowControlProps & react.RefAttributes<HTMLDivElement>>;
558
+ Action: react.ForwardRefExoticComponent<SettingsRowActionProps & react.RefAttributes<HTMLDivElement>>;
559
+ Content: react.ForwardRefExoticComponent<SettingsRowContentProps & react.RefAttributes<HTMLDivElement>>;
560
+ };
561
+
562
+ interface PageLayoutHeaderProps extends ComponentProps<"div"> {
563
+ }
564
+ interface PageLayoutBodyProps extends ComponentProps<"div"> {
565
+ }
566
+ interface PageLayoutProps {
567
+ /** Sidebar content */
568
+ readonly sidebar?: ReactNode;
569
+ readonly className?: string;
570
+ readonly children: ReactNode;
571
+ }
572
+ /**
573
+ * Full-page layout shell with a sidebar and content area.
574
+ *
575
+ * Structure: sidebar (fixed width) + content panel (flex-1).
576
+ * The content panel renders as a rounded card on bg-bruv-base-0.
577
+ */
578
+ declare const PageLayout: react.ForwardRefExoticComponent<PageLayoutProps & react.RefAttributes<HTMLDivElement>> & {
579
+ Header: react.ForwardRefExoticComponent<Omit<PageLayoutHeaderProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
580
+ Body: react.ForwardRefExoticComponent<Omit<PageLayoutBodyProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
581
+ };
582
+
583
+ type SidebarLinkComponent = ComponentType<{
584
+ readonly to?: string;
585
+ readonly href?: string;
586
+ readonly className?: string;
587
+ readonly children?: ReactNode;
588
+ }>;
589
+ interface SidebarContextValue {
590
+ readonly collapsed: boolean;
591
+ readonly toggle: () => void;
592
+ readonly linkComponent?: SidebarLinkComponent;
593
+ readonly mobile: boolean;
594
+ readonly mobileOpen: boolean;
595
+ readonly setMobileOpen: (open: boolean) => void;
596
+ }
597
+ declare function useSidebar(): SidebarContextValue;
598
+
599
+ interface SidebarProviderProps {
600
+ /** Start in collapsed state (uncontrolled) */
601
+ readonly defaultCollapsed?: boolean;
602
+ /** Controlled collapsed state */
603
+ readonly collapsed?: boolean;
604
+ /** Callback when collapsed state changes (controlled mode) */
605
+ readonly onCollapsedChange?: (collapsed: boolean) => void;
606
+ /** Custom link component for client-side navigation */
607
+ readonly linkComponent?: SidebarLinkComponent;
608
+ readonly children: ReactNode;
609
+ }
610
+ /**
611
+ * Context-only provider for sidebar state — no visual output.
612
+ *
613
+ * Wrap your entire page layout with this when you need `useSidebar()`
614
+ * outside the visual `<Sidebar>` container (e.g. in the page header
615
+ * or in portaled components).
616
+ *
617
+ * When `<Sidebar>` is rendered inside a `<Sidebar.Provider>`, it
618
+ * skips creating its own context and uses the provider's state.
619
+ *
620
+ * ```tsx
621
+ * <Sidebar.Provider collapsed={collapsed} onCollapsedChange={setCollapsed}>
622
+ * <PageLayout sidebar={<Sidebar>...</Sidebar>}>
623
+ * <MyHeader />
624
+ * </PageLayout>
625
+ * </Sidebar.Provider>
626
+ * ```
627
+ */
628
+ declare function SidebarProvider({ defaultCollapsed, collapsed: controlledCollapsed, onCollapsedChange, linkComponent, children, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
629
+ interface SidebarRootProps {
630
+ /** Start in collapsed state (uncontrolled). Ignored when inside a Sidebar.Provider. */
631
+ readonly defaultCollapsed?: boolean;
632
+ /** Controlled collapsed state. Ignored when inside a Sidebar.Provider. */
633
+ readonly collapsed?: boolean;
634
+ /** Callback when collapsed state changes. Ignored when inside a Sidebar.Provider. */
635
+ readonly onCollapsedChange?: (collapsed: boolean) => void;
636
+ /** Custom link component for client-side navigation. Ignored when inside a Sidebar.Provider. */
637
+ readonly linkComponent?: SidebarLinkComponent;
638
+ readonly className?: string;
639
+ readonly children: ReactNode;
640
+ }
641
+ /**
642
+ * Responsive sidebar with collapsible state and directional layer transitions.
643
+ *
644
+ * When rendered inside a `<Sidebar.Provider>`, uses the provider's context
645
+ * and only renders the visual shell. Otherwise, creates its own context.
646
+ *
647
+ * **Desktop** (`md:` and up): renders inline with collapse/expand animation.
648
+ * **Mobile** (below `md:`): shows collapsed icons inline. Tapping an icon
649
+ * or the collapse button opens the full sidebar in a left-side Drawer.
650
+ */
651
+ declare function SidebarRoot({ defaultCollapsed, collapsed: controlledCollapsed, onCollapsedChange, linkComponent, className, children, }: SidebarRootProps): react_jsx_runtime.JSX.Element;
652
+ interface SidebarSectionProps {
653
+ readonly className?: string;
654
+ readonly children: ReactNode;
655
+ }
656
+ declare function SidebarSection({ className, children }: SidebarSectionProps): react_jsx_runtime.JSX.Element;
657
+ interface SidebarLabelProps extends ComponentProps<"div"> {
658
+ }
659
+ interface SidebarHeaderProps {
660
+ readonly className?: string;
661
+ readonly children: ReactNode;
662
+ }
663
+ /**
664
+ * Header row that smoothly hides its children when the sidebar collapses.
665
+ *
666
+ * Matches the Vue DSidebar header pattern:
667
+ * - `AnimatePresence mode="popLayout"` keeps CollapseButton stable in layout
668
+ * - Children slide out with `x: -320, scale: 0.5` spring animation
669
+ * - Row uses `justify-center` so CollapseButton centers when collapsed
670
+ * - Padding `px-2` only applied when expanded
671
+ *
672
+ * Usage:
673
+ * ```tsx
674
+ * <Sidebar.Header>
675
+ * <YourLogo />
676
+ * <span>Your App</span>
677
+ * </Sidebar.Header>
678
+ * ```
679
+ * The `CollapseButton` is rendered automatically at the end of the row.
680
+ */
681
+ declare function SidebarHeader({ className, children }: SidebarHeaderProps): react_jsx_runtime.JSX.Element;
682
+ interface SidebarLinkProps extends Omit<ComponentProps<"div">, "children"> {
683
+ /** Display name */
684
+ readonly name: string;
685
+ /** Link URL — renders via `linkComponent` (or native `<a>` if none provided) */
686
+ readonly href?: string;
687
+ /** Render as "div" when nested inside an interactive container (e.g. DropdownMenu.Trigger) to avoid nested `<button>` */
688
+ readonly as?: "div";
689
+ /** Whether this link is currently active */
690
+ readonly active?: boolean;
691
+ /** Icon component rendered before the name */
692
+ readonly icon?: ReactNode;
693
+ /** Show a trailing chevron indicating navigation to a nested layer */
694
+ readonly nested?: boolean;
695
+ /** Show an external link arrow and open in new tab */
696
+ readonly external?: boolean;
697
+ /** Show a pulsing activity indicator dot */
698
+ readonly showIndicator?: boolean;
699
+ /** Arbitrary trailing content rendered after the name (e.g. badges, lock icons) */
700
+ readonly trailing?: ReactNode;
701
+ /** Disable the link — reduces opacity and prevents clicks */
702
+ readonly disabled?: boolean;
703
+ /** Show a skeleton placeholder instead of the link content */
704
+ readonly loading?: boolean;
705
+ /** Click handler */
706
+ readonly onClick?: () => void;
707
+ }
708
+ declare function SidebarLink({ name, href, as, active, icon, nested, external, showIndicator, trailing, disabled, loading, onClick, className, ...rest }: SidebarLinkProps): react_jsx_runtime.JSX.Element;
709
+ interface SidebarBackLinkProps {
710
+ /** Display name */
711
+ readonly name: string;
712
+ /** Click handler */
713
+ readonly onClick?: () => void;
714
+ readonly className?: string;
715
+ }
716
+ declare function SidebarBackLink({ name, onClick, className }: SidebarBackLinkProps): react_jsx_runtime.JSX.Element;
717
+ interface SidebarCollapseButtonProps {
718
+ readonly className?: string;
719
+ }
720
+ declare function SidebarCollapseButton({ className }: SidebarCollapseButtonProps): react_jsx_runtime.JSX.Element;
721
+ interface SidebarLayersProps {
722
+ /** Unique key for the current layer — changes trigger the animation */
723
+ readonly activeKey: string;
724
+ /** Direction of the transition: forward drills in, back goes up */
725
+ readonly direction?: "forward" | "back";
726
+ readonly className?: string;
727
+ readonly children: ReactNode;
728
+ }
729
+ /**
730
+ * Wraps sidebar content in directional slide animations.
731
+ *
732
+ * When `activeKey` changes, the old content slides out and new content
733
+ * slides in. `direction="forward"` slides left (drilling in),
734
+ * `direction="back"` slides right (going up).
735
+ *
736
+ * Usage:
737
+ * ```tsx
738
+ * <Sidebar.Layers activeKey={currentSection} direction={navDirection}>
739
+ * {currentSection === "main" ? <MainNav /> : <SettingsNav />}
740
+ * </Sidebar.Layers>
741
+ * ```
742
+ */
743
+ declare function SidebarLayers({ activeKey, direction, className, children, }: SidebarLayersProps): react_jsx_runtime.JSX.Element;
744
+ interface SidebarGroupProps {
745
+ /** Group label */
746
+ readonly name: string;
747
+ /** Icon rendered before the label */
748
+ readonly icon?: ReactNode;
749
+ /** Whether a child link is currently active — makes the label bold */
750
+ readonly active?: boolean;
751
+ /** Start collapsed */
752
+ readonly defaultCollapsed?: boolean;
753
+ /** Called when the group header is clicked (in addition to toggling collapse) */
754
+ readonly onClick?: () => void;
755
+ /** Nested links rendered when expanded */
756
+ readonly children: ReactNode;
757
+ readonly className?: string;
758
+ }
759
+ declare function SidebarGroup({ name, icon, active, defaultCollapsed, onClick, children, className, }: SidebarGroupProps): react_jsx_runtime.JSX.Element;
760
+ declare const Sidebar: typeof SidebarRoot & {
761
+ Provider: typeof SidebarProvider;
762
+ Section: typeof SidebarSection;
763
+ Header: typeof SidebarHeader;
764
+ Label: react.ForwardRefExoticComponent<Omit<SidebarLabelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
765
+ Link: typeof SidebarLink;
766
+ BackLink: typeof SidebarBackLink;
767
+ CollapseButton: typeof SidebarCollapseButton;
768
+ Layers: typeof SidebarLayers;
769
+ Group: typeof SidebarGroup;
770
+ };
771
+
772
+ type PixelSpinnerVariant =
773
+ /** One dim cell rotates around a bright ring; center bright */
774
+ "hole"
775
+ /** Trail of 5 fading cells chases around the ring; center dim */
776
+ | "trail"
777
+ /** Diagonal wave sweeps from top-left to bottom-right */
778
+ | "wave"
779
+ /** Rings expand outward: center to middle to corners, repeating */
780
+ | "radiate"
781
+ /** All cells pulse together */
782
+ | "pulse"
783
+ /** All cells flicker independently (TV static) */
784
+ | "static";
785
+ type PixelSpinnerSize = "xs" | "sm" | "md" | "lg";
786
+ interface PixelSpinnerProps {
787
+ /** Animation variant */
788
+ variant?: PixelSpinnerVariant;
789
+ /**
790
+ * Size preset or raw px value.
791
+ * Presets: `xs` = 10px, `sm` = 14px, `md` = 20px, `lg` = 32px.
792
+ * Default is `xs`.
793
+ */
794
+ size?: PixelSpinnerSize | number;
795
+ /** Gap between pixels as a fraction of pixel size (0-1). Default 0.25. */
796
+ gap?: number;
797
+ /** Cycle duration in seconds. Default 1.2. */
798
+ duration?: number;
799
+ className?: string;
800
+ }
801
+ /**
802
+ * A 3x3 pixel-grid spinner with configurable animation variants.
803
+ *
804
+ * All 9 cells render; the `variant` controls how they animate:
805
+ *
806
+ * - `hole` One dim cell rotates around a bright ring (center bright)
807
+ * - `trail` A fading 5-cell trail chases around the ring
808
+ * - `wave` Anti-diagonal wave sweeps top-left to bottom-right
809
+ * - `radiate` Rings expand outward: center to edges to corners
810
+ * - `pulse` All cells breathe together with a subtle ripple
811
+ * - `static` Cells flicker independently (TV static)
812
+ */
813
+ declare function PixelSpinner({ variant, size, gap, duration, className, }: PixelSpinnerProps): react_jsx_runtime.JSX.Element;
814
+
815
+ interface SpinnerProps {
816
+ /** Text label shown next to the spinner. */
817
+ label?: string;
818
+ /** Show the animated dots after the label. */
819
+ showDots?: boolean;
820
+ /** Show the pixel spinner glyph. */
821
+ showSpinner?: boolean;
822
+ /** Size variant. */
823
+ size?: "sm" | "md";
824
+ /** Animation variant for the pixel spinner. Defaults to `wave`. */
825
+ variant?: PixelSpinnerVariant;
826
+ className?: string;
827
+ }
828
+ /**
829
+ * Text loading indicator with a 3x3 pixel spinner and animated dots.
830
+ *
831
+ * Uses `PixelSpinner` for the animated glyph and a CSS animation to cycle
832
+ * an animated dots suffix on the label text.
833
+ */
834
+ declare const Spinner: react.ForwardRefExoticComponent<SpinnerProps & react.RefAttributes<HTMLSpanElement>>;
835
+
836
+ interface ComboboxItem {
837
+ readonly value: string;
838
+ readonly label: string;
839
+ readonly icon?: ReactNode;
840
+ readonly [key: string]: unknown;
841
+ }
842
+ interface ComboboxProps {
843
+ /** Controlled value */
844
+ readonly value?: string;
845
+ /** Uncontrolled default value */
846
+ readonly defaultValue?: string;
847
+ /** Called when a value is selected */
848
+ readonly onValueChange?: (value: string) => void;
849
+ /** Item data for filtering and rendering */
850
+ readonly items: ComboboxItem[];
851
+ readonly children: ReactNode;
852
+ readonly className?: string;
853
+ }
854
+ /**
855
+ * Searchable combobox with filtering.
856
+ *
857
+ * Wraps Base UI Combobox.Root with shared Menu visual primitives.
858
+ * For non-searchable dropdowns, use Select instead.
859
+ *
860
+ * Supports both controlled (`value` + `onValueChange`)
861
+ * and uncontrolled (`defaultValue`) usage.
862
+ */
863
+ declare function Combobox({ value, defaultValue, onValueChange, items, children, className, }: ComboboxProps): ReactElement;
864
+ interface ComboboxTriggerProps {
865
+ children: ReactNode;
866
+ className?: string;
867
+ }
868
+ /**
869
+ * Fully composable trigger. Renders whatever children you give it as the
870
+ * element that opens the combobox popup.
871
+ *
872
+ * Use ComboboxButton for button-based triggers so BaseCombobox.Trigger does
873
+ * not wrap a Button in another native button.
874
+ */
875
+ declare const ComboboxTrigger: react.ForwardRefExoticComponent<ComboboxTriggerProps & react.RefAttributes<HTMLButtonElement>>;
876
+ interface ComboboxButtonProps {
877
+ /** Placeholder text shown when no value is selected */
878
+ placeholder?: string;
879
+ /** Size of the button */
880
+ size?: ButtonSize;
881
+ className?: string;
882
+ }
883
+ /**
884
+ * Pre-styled trigger for form contexts.
885
+ * Renders as a Button with the selected value + chevron icon.
886
+ * For fully custom triggers, use ComboboxTrigger instead.
887
+ */
888
+ declare const ComboboxButton: react.ForwardRefExoticComponent<ComboboxButtonProps & react.RefAttributes<HTMLButtonElement>>;
889
+ interface ComboboxContentProps {
890
+ /** Alignment relative to trigger */
891
+ align?: "start" | "center" | "end";
892
+ /** Placeholder text for the search input */
893
+ searchPlaceholder?: string;
894
+ /** Empty state message */
895
+ emptyMessage?: string;
896
+ /** Minimum width of the popup */
897
+ minWidth?: string;
898
+ /**
899
+ * Render function for each item. Receives a ComboboxItem and should return
900
+ * a ComboboxOption element. When not provided, renders a default option
901
+ * with optional icon + label + checkmark.
902
+ */
903
+ children?: (item: ComboboxItem) => ReactNode;
904
+ className?: string;
905
+ }
906
+ /**
907
+ * Popup with search input and a scrollable list of filtered options.
908
+ * Uses Base UI's render function pattern for automatic filtering.
909
+ */
910
+ declare function ComboboxContent({ align, searchPlaceholder, emptyMessage, minWidth, children, className, }: ComboboxContentProps): ReactElement;
911
+ interface ComboboxOptionProps {
912
+ /** Value for this option */
913
+ readonly value: string;
914
+ /** Icon element rendered before the label */
915
+ readonly icon?: ReactNode;
916
+ readonly children: ReactNode;
917
+ readonly className?: string;
918
+ }
919
+ /**
920
+ * Individual option in the combobox popup.
921
+ * Automatically includes a checkmark indicator when selected.
922
+ */
923
+ declare const ComboboxOption: react.ForwardRefExoticComponent<ComboboxOptionProps & react.RefAttributes<HTMLDivElement>>;
924
+ interface ComboboxGroupProps {
925
+ readonly className?: string;
926
+ readonly children: ReactNode;
927
+ }
928
+ /**
929
+ * Groups related combobox items with an optional label.
930
+ * Wraps Base UI's Combobox.Group.
931
+ */
932
+ declare const ComboboxGroup: react.ForwardRefExoticComponent<ComboboxGroupProps & react.RefAttributes<HTMLDivElement>>;
933
+ interface ComboboxGroupLabelProps {
934
+ readonly className?: string;
935
+ readonly children: ReactNode;
936
+ }
937
+ /**
938
+ * Accessible label automatically associated with its parent group.
939
+ * Renders via Menu.GroupLabel for consistent styling.
940
+ */
941
+ declare const ComboboxGroupLabel: react.ForwardRefExoticComponent<ComboboxGroupLabelProps & react.RefAttributes<HTMLDivElement>>;
942
+ interface ComboboxSeparatorProps {
943
+ readonly className?: string;
944
+ }
945
+ /**
946
+ * Visual separator between combobox groups.
947
+ * Renders via Menu.Separator for consistent styling.
948
+ */
949
+ declare const ComboboxSeparator: react.ForwardRefExoticComponent<ComboboxSeparatorProps & react.RefAttributes<HTMLDivElement>>;
950
+
951
+ interface SelectItem {
952
+ value: string;
953
+ label: string;
954
+ icon?: ReactNode;
955
+ [key: string]: unknown;
956
+ }
957
+ interface SelectProps {
958
+ /** Controlled value */
959
+ value?: string;
960
+ /** Uncontrolled default value */
961
+ defaultValue?: string;
962
+ /** Called when a value is selected */
963
+ onValueChange?: (value: string) => void;
964
+ /** Item data for rendering and value display */
965
+ items: SelectItem[];
966
+ /** Whether the select is disabled */
967
+ disabled?: boolean;
968
+ children: ReactNode;
969
+ className?: string;
970
+ }
971
+ /**
972
+ * Select component for choosing from a list of predefined options.
973
+ *
974
+ * For searchable/filterable lists, use Combobox instead.
975
+ *
976
+ * Wraps Base UI Select.Root with shared Menu visual primitives.
977
+ */
978
+ declare function Select({ value, defaultValue, onValueChange, items, disabled, children, className, }: SelectProps): ReactElement;
979
+ interface SelectTriggerProps {
980
+ children: ReactNode;
981
+ className?: string;
982
+ }
983
+ /**
984
+ * Fully composable trigger. Renders whatever children you give it as the
985
+ * element that opens the select popup.
986
+ */
987
+ declare const SelectTrigger: react.ForwardRefExoticComponent<SelectTriggerProps & react.RefAttributes<HTMLButtonElement>>;
988
+ interface SelectButtonProps {
989
+ /** Placeholder text shown when no value is selected */
990
+ placeholder?: string;
991
+ /** Size of the button */
992
+ size?: ButtonSize;
993
+ className?: string;
994
+ }
995
+ /**
996
+ * Pre-styled trigger for form contexts.
997
+ * Renders as a Button with the selected value + chevron icon.
998
+ */
999
+ declare const SelectButton: react.ForwardRefExoticComponent<SelectButtonProps & react.RefAttributes<HTMLButtonElement>>;
1000
+ interface SelectContentProps {
1001
+ /** Alignment relative to trigger */
1002
+ align?: "start" | "center" | "end";
1003
+ /** Side relative to the trigger */
1004
+ side?: "top" | "bottom" | "left" | "right";
1005
+ /** Offset from the trigger in px */
1006
+ sideOffset?: number;
1007
+ /** Minimum width */
1008
+ minWidth?: string;
1009
+ /** SelectOption elements */
1010
+ children?: ReactNode;
1011
+ className?: string;
1012
+ }
1013
+ /**
1014
+ * Popup with a scrollable list of options.
1015
+ * Uses Base UI Select primitives with shared Menu visuals.
1016
+ */
1017
+ declare function SelectContent({ align, side, sideOffset, minWidth, children, className, }: SelectContentProps): ReactElement;
1018
+ interface SelectOptionProps {
1019
+ /** Value for this option */
1020
+ value: string;
1021
+ /** Icon element rendered before the label */
1022
+ icon?: ReactNode;
1023
+ children: ReactNode;
1024
+ className?: string;
1025
+ }
1026
+ /**
1027
+ * Individual option in the select popup.
1028
+ * Automatically includes a checkmark indicator when selected.
1029
+ */
1030
+ declare const SelectOption: react.ForwardRefExoticComponent<SelectOptionProps & react.RefAttributes<HTMLDivElement>>;
1031
+ interface SelectSeparatorProps {
1032
+ className?: string;
1033
+ }
1034
+ declare const SelectSeparator: react.ForwardRefExoticComponent<SelectSeparatorProps & react.RefAttributes<HTMLDivElement>>;
1035
+ interface SelectGroupProps {
1036
+ className?: string;
1037
+ children: ReactNode;
1038
+ }
1039
+ declare const SelectGroup: react.ForwardRefExoticComponent<SelectGroupProps & react.RefAttributes<HTMLDivElement>>;
1040
+ interface SelectGroupLabelProps {
1041
+ className?: string;
1042
+ children: ReactNode;
1043
+ }
1044
+ declare const SelectGroupLabel: react.ForwardRefExoticComponent<SelectGroupLabelProps & react.RefAttributes<HTMLDivElement>>;
1045
+
1046
+ interface SeparatorProps extends ComponentProps<typeof Separator$1> {
1047
+ orientation?: "horizontal" | "vertical";
1048
+ }
1049
+ declare const Separator: react.ForwardRefExoticComponent<Omit<SeparatorProps, "ref"> & react.RefAttributes<HTMLHRElement>>;
1050
+
1051
+ declare const filledVariantStyles: {
1052
+ readonly neutral: "bg-bruv-subtle text-bruv-secondary";
1053
+ readonly accent: "bg-bruv-accent-subtle text-bruv-accent";
1054
+ readonly danger: "bg-bruv-danger-subtle text-bruv-danger";
1055
+ readonly warn: "bg-bruv-warn-subtle text-bruv-warn";
1056
+ readonly success: "bg-bruv-success-subtle text-bruv-success";
1057
+ };
1058
+ declare const sizeStyles$7: {
1059
+ readonly sm: "px-1.5 py-0.5 text-bruv-sm";
1060
+ readonly md: "px-2 py-0.5 text-bruv-base";
1061
+ };
1062
+ type BadgeVariant = keyof typeof filledVariantStyles;
1063
+ type BadgeSize = keyof typeof sizeStyles$7;
1064
+ type BadgeDotPosition = "leading" | "trailing";
1065
+ interface BadgeProps extends ComponentPropsWithoutRef<"span"> {
1066
+ /** Semantic intent (color). */
1067
+ variant?: BadgeVariant;
1068
+ /** Size of the badge. */
1069
+ size?: BadgeSize;
1070
+ /**
1071
+ * Render with a border instead of a filled (subtle) background.
1072
+ * Border color is bound to the variant's text color so contrast
1073
+ * passes WCAG in both light and dark mode.
1074
+ */
1075
+ border?: boolean;
1076
+ /** Show a status dot whose color follows `variant`. */
1077
+ dot?: boolean;
1078
+ /** Where the dot sits relative to the label. Default `"leading"`. */
1079
+ dotPosition?: BadgeDotPosition;
1080
+ /**
1081
+ * Render a trailing dismiss (×) button and call this on click.
1082
+ * Receives the event so callers can `stopPropagation()` when the
1083
+ * badge sits inside an interactive parent.
1084
+ */
1085
+ onDismiss?: (event: MouseEvent<HTMLButtonElement>) => void;
1086
+ /** Accessible label for the dismiss button. */
1087
+ dismissLabel?: string;
1088
+ }
1089
+ declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
1090
+
1091
+ /**
1092
+ * Returns `true` on macOS / iOS, `false` on Windows / Linux.
1093
+ * SSR-safe (defaults to Mac).
1094
+ */
1095
+ declare function useIsMac(): boolean;
1096
+ interface KbdProps extends ComponentPropsWithoutRef<"kbd"> {
1097
+ /**
1098
+ * A `+`-separated shortcut string using abstract key names.
1099
+ *
1100
+ * Tokens are mapped per-platform and rendered together
1101
+ * inside a single key cap, separated by spaces:
1102
+ * `"mod+shift+k"` → `⌘ ⇧ K` (Mac) / `Ctrl Shift K` (Win)
1103
+ *
1104
+ * - `mod` → ⌘ (Mac) / Ctrl (Win)
1105
+ * - `alt` → ⌥ (Mac) / Alt (Win)
1106
+ * - `shift` → ⇧ (Mac) / Shift (Win)
1107
+ * - `ctrl` → ⌃ (Mac) / Ctrl (Win)
1108
+ * - `enter`, `escape`, `backspace`, `delete`, `tab`, `space`
1109
+ * - `up`, `down`, `left`, `right`
1110
+ * - Any other token is uppercased as-is.
1111
+ *
1112
+ * @example "mod+k" → ⌘ K (Mac) or Ctrl K (Win)
1113
+ * @example "mod+shift+s" → ⌘ ⇧ S (Mac) or Ctrl Shift S (Win)
1114
+ */
1115
+ keys?: string;
1116
+ }
1117
+ /**
1118
+ * Renders keyboard keys or shortcuts in a single styled `<kbd>` element.
1119
+ *
1120
+ * When `keys` is provided, parses the `+`-separated string and renders
1121
+ * all tokens inside one key cap with platform-aware symbols.
1122
+ * All tokens are joined with spaces inside one key cap.
1123
+ *
1124
+ * When `children` is provided (without `keys`), renders a single `<kbd>`
1125
+ * with the raw content — useful for one-off custom key caps.
1126
+ */
1127
+ declare const Kbd: react.ForwardRefExoticComponent<KbdProps & react.RefAttributes<HTMLElement>>;
1128
+
1129
+ interface SkeletonProps {
1130
+ /** Use rounded-full instead of rounded-bruv-md (for avatar placeholders) */
1131
+ circular?: boolean;
1132
+ className?: string;
1133
+ }
1134
+ /**
1135
+ * Skeleton loading placeholder with a sweeping pixel wave.
1136
+ *
1137
+ * Uses the `sweepOnly` mode of FlickeringGrid: pixels light up purely
1138
+ * based on the sweep wave position, with a per-pixel noise offset
1139
+ * creating a fuzzy, fringing edge on the wave front. No random flicker,
1140
+ * so the effect reads as a single directional motion rather than noise.
1141
+ */
1142
+ declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
1143
+
1144
+ declare const variantStyles: {
1145
+ readonly neutral: "bg-bruv-tertiary";
1146
+ readonly accent: "bg-bruv-accent";
1147
+ readonly success: "bg-bruv-success";
1148
+ readonly warn: "bg-bruv-warn";
1149
+ readonly danger: "bg-bruv-danger";
1150
+ };
1151
+ declare const sizeStyles$6: {
1152
+ readonly sm: "size-1.5";
1153
+ readonly md: "size-2";
1154
+ readonly lg: "size-2.5";
1155
+ };
1156
+ type StatusDotVariant = keyof typeof variantStyles;
1157
+ type StatusDotSize = keyof typeof sizeStyles$6;
1158
+ interface StatusDotProps {
1159
+ /** Color variant */
1160
+ variant?: StatusDotVariant;
1161
+ /** Dot size */
1162
+ size?: StatusDotSize;
1163
+ /** Accessible label (required for meaningful status indicators) */
1164
+ label?: string;
1165
+ className?: string;
1166
+ }
1167
+ /**
1168
+ * Small circular status indicator dot.
1169
+ *
1170
+ * Use alongside text labels, avatars, or table cells
1171
+ * to convey online/offline, severity, or activity state.
1172
+ */
1173
+ declare const StatusDot: react.ForwardRefExoticComponent<StatusDotProps & react.RefAttributes<HTMLSpanElement>>;
1174
+
1175
+ interface FlickeringGridProps {
1176
+ /** Size of each square pixel in px */
1177
+ squareSize?: number;
1178
+ /** Gap between squares in px */
1179
+ gridGap?: number;
1180
+ /** Probability per second that a pixel changes opacity (0-1) */
1181
+ flickerChance?: number;
1182
+ /** Pixel color — CSS color string. Use `currentColor` to inherit from text */
1183
+ color?: string;
1184
+ /** Max opacity for any pixel (0-1) */
1185
+ maxOpacity?: number;
1186
+ /**
1187
+ * Enable a sweeping wave of brightness across the grid.
1188
+ * When enabled, pixels near the wave front appear brighter.
1189
+ */
1190
+ sweep?: boolean;
1191
+ /** Sweep direction */
1192
+ sweepDirection?: "left" | "right";
1193
+ /** Duration of one sweep cycle in seconds */
1194
+ sweepDuration?: number;
1195
+ /** Width of the sweep band as a fraction of total width (0-1) */
1196
+ sweepWidth?: number;
1197
+ /**
1198
+ * When true, disables random flicker and drives pixel opacity purely
1199
+ * from the sweep wave. Each pixel gets a fixed noise offset so the
1200
+ * wave front has a fuzzy, fringing edge instead of a clean line.
1201
+ */
1202
+ sweepOnly?: boolean;
1203
+ /**
1204
+ * Magnitude of the per-pixel noise offset (0-1) when `sweepOnly` is true.
1205
+ * Higher values produce fuzzier, more chaotic edges.
1206
+ */
1207
+ sweepNoise?: number;
1208
+ className?: string;
1209
+ }
1210
+ declare function FlickeringGrid({ squareSize, gridGap, flickerChance, color, maxOpacity, sweep, sweepDirection, sweepDuration, sweepWidth, sweepOnly, sweepNoise, className, }: FlickeringGridProps): react_jsx_runtime.JSX.Element;
1211
+
1212
+ interface DropdownMenuRootProps {
1213
+ /** Controlled open state */
1214
+ open?: boolean;
1215
+ /** Uncontrolled default open state */
1216
+ defaultOpen?: boolean;
1217
+ /** Called when open state changes */
1218
+ onOpenChange?: (open: boolean) => void;
1219
+ /** Whether the menu is modal (locks scroll + traps focus). Default true. */
1220
+ modal?: boolean;
1221
+ children: ReactNode;
1222
+ }
1223
+ declare function DropdownMenuRoot({ open, defaultOpen, onOpenChange, modal, children, }: DropdownMenuRootProps): react_jsx_runtime.JSX.Element;
1224
+ interface DropdownMenuTriggerProps extends ComponentProps<typeof Menu.Trigger> {
1225
+ }
1226
+ interface DropdownMenuContentProps {
1227
+ /** Side relative to the trigger */
1228
+ side?: "top" | "bottom" | "left" | "right";
1229
+ /** Alignment relative to the trigger */
1230
+ align?: "start" | "center" | "end";
1231
+ /** Offset from the trigger in px */
1232
+ sideOffset?: number;
1233
+ /** Minimum width */
1234
+ minWidth?: string;
1235
+ className?: string;
1236
+ children: ReactNode;
1237
+ }
1238
+ declare function DropdownMenuContent({ side, align, sideOffset, minWidth, className, children, }: DropdownMenuContentProps): react_jsx_runtime.JSX.Element;
1239
+ interface DropdownMenuItemProps {
1240
+ /** Danger styling (red text) */
1241
+ variant?: "default" | "danger";
1242
+ /** Icon element rendered before the label */
1243
+ icon?: ReactNode;
1244
+ /** Called when the item is clicked */
1245
+ onClick?: () => void;
1246
+ /** Close menu on click. Default true. */
1247
+ closeOnClick?: boolean;
1248
+ /** Whether the item is disabled */
1249
+ disabled?: boolean;
1250
+ className?: string;
1251
+ children?: ReactNode;
1252
+ }
1253
+ interface DropdownMenuSeparatorProps {
1254
+ className?: string;
1255
+ }
1256
+ interface DropdownMenuLabelProps {
1257
+ className?: string;
1258
+ children: ReactNode;
1259
+ }
1260
+ interface DropdownMenuGroupProps {
1261
+ className?: string;
1262
+ children: ReactNode;
1263
+ }
1264
+ declare const DropdownMenu: {
1265
+ Root: typeof DropdownMenuRoot;
1266
+ Trigger: react.ForwardRefExoticComponent<Omit<DropdownMenuTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1267
+ Content: typeof DropdownMenuContent;
1268
+ Item: react.ForwardRefExoticComponent<DropdownMenuItemProps & react.RefAttributes<HTMLDivElement>>;
1269
+ Separator: react.ForwardRefExoticComponent<DropdownMenuSeparatorProps & react.RefAttributes<HTMLDivElement>>;
1270
+ Label: react.ForwardRefExoticComponent<DropdownMenuLabelProps & react.RefAttributes<HTMLDivElement>>;
1271
+ Group: react.ForwardRefExoticComponent<DropdownMenuGroupProps & react.RefAttributes<HTMLDivElement>>;
1272
+ };
1273
+
1274
+ interface DialogRootProps extends ComponentProps<typeof Dialog$1.Root> {
1275
+ }
1276
+ declare function DialogRoot({ ...props }: DialogRootProps): react_jsx_runtime.JSX.Element;
1277
+ interface DialogTriggerProps extends ComponentProps<typeof Dialog$1.Trigger> {
1278
+ }
1279
+ interface DialogBackdropProps extends ComponentProps<typeof Dialog$1.Backdrop> {
1280
+ }
1281
+ declare const sizeStyles$5: {
1282
+ readonly md: "max-w-[450px]";
1283
+ readonly lg: "max-w-[550px]";
1284
+ };
1285
+ type DialogSize = keyof typeof sizeStyles$5;
1286
+ interface DialogContentProps extends ComponentProps<typeof Dialog$1.Popup> {
1287
+ size?: DialogSize;
1288
+ }
1289
+ declare function DialogContent({ size, className, children, ...props }: DialogContentProps): react_jsx_runtime.JSX.Element;
1290
+ interface DialogPanelProps {
1291
+ className?: string;
1292
+ children: ReactNode;
1293
+ }
1294
+ interface DialogTitleProps extends ComponentProps<typeof Dialog$1.Title> {
1295
+ }
1296
+ interface DialogBodyProps {
1297
+ className?: string;
1298
+ children: ReactNode;
1299
+ }
1300
+ interface DialogFooterProps {
1301
+ className?: string;
1302
+ children: ReactNode;
1303
+ }
1304
+ interface DialogCloseProps extends ComponentProps<typeof Dialog$1.Close> {
1305
+ }
1306
+ declare const Dialog: {
1307
+ Root: typeof DialogRoot;
1308
+ Trigger: react.ForwardRefExoticComponent<Omit<DialogTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1309
+ Content: typeof DialogContent;
1310
+ Panel: react.ForwardRefExoticComponent<DialogPanelProps & react.RefAttributes<HTMLDivElement>>;
1311
+ Title: react.ForwardRefExoticComponent<Omit<DialogTitleProps, "ref"> & react.RefAttributes<HTMLHeadingElement>>;
1312
+ /** @deprecated Use a plain `<p>` inside Dialog.Body instead. */
1313
+ Description: react.ForwardRefExoticComponent<Omit<_base_ui_react.AlertDialogDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
1314
+ Body: react.ForwardRefExoticComponent<DialogBodyProps & react.RefAttributes<HTMLDivElement>>;
1315
+ Footer: react.ForwardRefExoticComponent<DialogFooterProps & react.RefAttributes<HTMLDivElement>>;
1316
+ Close: react.ForwardRefExoticComponent<Omit<DialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1317
+ };
1318
+
1319
+ interface DataTableProps<TData> {
1320
+ /** Column definitions - see @tanstack/react-table ColumnDef */
1321
+ columns: ColumnDef<TData, unknown>[];
1322
+ /** Data array */
1323
+ data: TData[];
1324
+ /** Enable column sorting. Default false. */
1325
+ sortable?: boolean;
1326
+ /** Enable pagination. Default false. */
1327
+ paginated?: boolean;
1328
+ /** Rows per page when paginated. Default 10. */
1329
+ pageSize?: number;
1330
+ /** Available page size options. Default [10, 25, 50]. */
1331
+ pageSizeOptions?: number[];
1332
+ /** Enable row selection with checkboxes. Default false. */
1333
+ selectable?: boolean;
1334
+ /** Controlled row selection state */
1335
+ rowSelection?: RowSelectionState;
1336
+ /** Called when row selection changes */
1337
+ onRowSelectionChange?: (selection: RowSelectionState) => void;
1338
+ /** Called when a row is clicked */
1339
+ onRowClick?: (row: Row<TData>) => void;
1340
+ /** Show skeleton loading state. Default false. */
1341
+ loading?: boolean;
1342
+ /** Number of skeleton rows to show when loading. Default 5. */
1343
+ loadingRows?: number;
1344
+ /** Message shown when data is empty. Default "No results." */
1345
+ emptyMessage?: string | ReactNode;
1346
+ /** Enable expandable rows via TanStack `getSubRows` */
1347
+ expandable?: boolean;
1348
+ /** Resolve child rows for expandable tables */
1349
+ getSubRows?: (row: TData) => TData[] | undefined;
1350
+ /** Pin the first data column while scrolling horizontally */
1351
+ stickyFirstColumn?: boolean;
1352
+ /** Pin the last data column while scrolling horizontally */
1353
+ stickyLastColumn?: boolean;
1354
+ /** Virtualize row rendering for large datasets */
1355
+ virtualized?: boolean;
1356
+ /** Estimated row height when virtualized. Default 44 */
1357
+ estimateRowHeight?: number;
1358
+ /** Additional class on the outer wrapper */
1359
+ className?: string;
1360
+ /** Additional TanStack Table options for advanced use cases */
1361
+ tableOptions?: Partial<TableOptions<TData>>;
1362
+ }
1363
+ type DataTableActionCellProps = ComponentProps<"div">;
1364
+ /**
1365
+ * Wrapper for interactive content inside a DataTable cell.
1366
+ *
1367
+ * Stops click and keyboard events from propagating to the parent row so that
1368
+ * buttons, dropdown menus, and other interactive elements do not trigger
1369
+ * `onRowClick`.
1370
+ *
1371
+ * ```tsx
1372
+ * {
1373
+ * id: "actions",
1374
+ * header: "",
1375
+ * cell: ({ row }) => (
1376
+ * <DataTableActionCell>
1377
+ * <Button size="sm" onClick={() => handleEdit(row.original)}>
1378
+ * Edit
1379
+ * </Button>
1380
+ * </DataTableActionCell>
1381
+ * ),
1382
+ * }
1383
+ * ```
1384
+ */
1385
+ declare const DataTableActionCell: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
1386
+ /**
1387
+ * Data table powered by TanStack Table.
1388
+ *
1389
+ * Renders using the existing `Table` primitives (Table.Header, Table.Body,
1390
+ * Table.Row, Table.Cell) for visual consistency. TanStack Table provides the
1391
+ * headless logic for sorting, filtering, pagination, and row selection.
1392
+ *
1393
+ * Filtering is handled externally -- use `<DataTableToolbar />` with
1394
+ * `<DataTableSearch />`, `<Select />`, or `<Combobox />` above the table.
1395
+ * Pass filter state via `tableOptions` or pre-filtered `data`.
1396
+ *
1397
+ * For simple static tables, use `Table` directly. Use `DataTable` when you
1398
+ * need interactive features.
1399
+ */
1400
+ declare function DataTable<TData>({ columns, data, sortable, paginated, pageSize, pageSizeOptions, selectable, rowSelection: controlledRowSelection, onRowSelectionChange, onRowClick, loading, loadingRows, emptyMessage, expandable, getSubRows, stickyFirstColumn, stickyLastColumn, virtualized, estimateRowHeight, className, tableOptions, }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
1401
+
1402
+ interface DataTableToolbarProps {
1403
+ /** Toolbar contents -- typically DataTableSearch, Select, Combobox, Button, etc. */
1404
+ children: ReactNode;
1405
+ /** Additional class on the outer wrapper */
1406
+ className?: string;
1407
+ }
1408
+ /**
1409
+ * Layout container for controls above a DataTable.
1410
+ *
1411
+ * Renders a horizontal flex row that wraps on small screens. Compose with
1412
+ * any combination of `DataTableSearch`, `Select`, `Combobox`, `Button`,
1413
+ * or custom elements.
1414
+ *
1415
+ * ```tsx
1416
+ * <DataTableToolbar>
1417
+ * <DataTableSearch value={search} onChange={setSearch} />
1418
+ * <Select value={status} onValueChange={setStatus} items={statusOptions}>
1419
+ * <SelectButton placeholder="Status" />
1420
+ * <SelectContent>
1421
+ * <SelectOption value="all">All</SelectOption>
1422
+ * <SelectOption value="active">Active</SelectOption>
1423
+ * </SelectContent>
1424
+ * </Select>
1425
+ * </DataTableToolbar>
1426
+ * ```
1427
+ */
1428
+ declare const DataTableToolbar: react.ForwardRefExoticComponent<DataTableToolbarProps & react.RefAttributes<HTMLDivElement>>;
1429
+
1430
+ interface DataTableSearchProps {
1431
+ /** Current search value */
1432
+ value: string;
1433
+ /** Called when the search value changes */
1434
+ onChange: (value: string) => void;
1435
+ /** Placeholder text. Default "Search..." */
1436
+ placeholder?: string;
1437
+ /** Additional class on the outer wrapper */
1438
+ className?: string;
1439
+ }
1440
+ /**
1441
+ * A standalone search input for DataTable.
1442
+ *
1443
+ * Controlled component -- wire `value` and `onChange` to your own state.
1444
+ * For server-side search, use `onChange` to trigger an API call (with
1445
+ * debounce if needed). For client-side, pass the value to TanStack Table's
1446
+ * `globalFilter` or a column-specific filter.
1447
+ *
1448
+ * ```tsx
1449
+ * const [search, setSearch] = useState("")
1450
+ *
1451
+ * <DataTableSearch value={search} onChange={setSearch} placeholder="Search repositories..." />
1452
+ * <DataTable
1453
+ * columns={columns}
1454
+ * data={data}
1455
+ * tableOptions={{
1456
+ * state: { globalFilter: search },
1457
+ * onGlobalFilterChange: setSearch,
1458
+ * }}
1459
+ * />
1460
+ * ```
1461
+ */
1462
+ declare const DataTableSearch: react.ForwardRefExoticComponent<DataTableSearchProps & react.RefAttributes<HTMLDivElement>>;
1463
+
1464
+ interface DataTableColumnsButtonProps<TData> {
1465
+ table: Table$1<TData>;
1466
+ label?: string;
1467
+ }
1468
+ declare function DataTableColumnsButton<TData>({ table, label, }: DataTableColumnsButtonProps<TData>): react_jsx_runtime.JSX.Element | null;
1469
+
1470
+ interface DataTableBulkBarProps<TData> {
1471
+ table: Table$1<TData>;
1472
+ /** Controlled selection — defaults to table row selection state */
1473
+ rowSelection?: RowSelectionState;
1474
+ show?: boolean;
1475
+ message?: ReactNode;
1476
+ actions?: ReactNode;
1477
+ onClear?: () => void;
1478
+ position?: "bottom" | "top";
1479
+ }
1480
+ declare function DataTableBulkBar<TData>({ table, rowSelection, show, message, actions, onClear, position, }: DataTableBulkBarProps<TData>): react_jsx_runtime.JSX.Element;
1481
+
1482
+ interface FilterOption {
1483
+ /** Stable identifier. */
1484
+ readonly value: string;
1485
+ /** Display label rendered in the dropdown and on the trigger when active. */
1486
+ readonly label: string;
1487
+ /** Optional icon rendered before the label. */
1488
+ readonly icon?: ReactNode;
1489
+ }
1490
+
1491
+ interface FilterMultiSelectProps {
1492
+ /** Label shown on the trigger pill. */
1493
+ title: string;
1494
+ /** Override the leading icon on the trigger. */
1495
+ icon?: ReactNode;
1496
+ /** Available filter options. */
1497
+ options: readonly FilterOption[];
1498
+ /** Controlled selected values. */
1499
+ value?: readonly string[];
1500
+ /** Uncontrolled initial selected values. */
1501
+ defaultValue?: readonly string[];
1502
+ /** Called when the selection changes. */
1503
+ onValueChange?: (values: string[]) => void;
1504
+ /** Show the search input. Defaults to `true`. */
1505
+ searchable?: boolean;
1506
+ /** Placeholder for the search input. Defaults to the `title`. */
1507
+ searchPlaceholder?: string;
1508
+ /** Optional per-option counts rendered as a trailing badge in the dropdown. */
1509
+ facets?: Map<string, number>;
1510
+ /**
1511
+ * Async option loader. When provided, options are fetched as the user
1512
+ * types instead of filtering the static `options` array client-side.
1513
+ * The static `options` prop is still shown when the search is empty
1514
+ * (e.g. "recently used") and seeds the label cache for already-selected
1515
+ * values.
1516
+ */
1517
+ loadOptions?: (query: string) => Promise<readonly FilterOption[]>;
1518
+ /** Debounce delay for `loadOptions` in ms. Defaults to 200. */
1519
+ loadDebounceMs?: number;
1520
+ /** Label shown while `loadOptions` is in flight. Defaults to "Searching...". */
1521
+ loadingLabel?: string;
1522
+ /** Label shown when `loadOptions` rejects. Defaults to "Failed to load options.". */
1523
+ errorLabel?: string;
1524
+ disabled?: boolean;
1525
+ className?: string;
1526
+ }
1527
+ /**
1528
+ * Searchable multi-select filter. Renders a dashed pill until at least one
1529
+ * option is selected, then a solid pill with chips showing the selection.
1530
+ * "Clear filters" row appears when anything is selected.
1531
+ *
1532
+ * When `loadOptions` is provided, options are fetched async per query and
1533
+ * a label cache keeps trigger badges intact even when selected values
1534
+ * aren't in the currently-displayed list.
1535
+ */
1536
+ declare function FilterMultiSelect({ title, icon, options, value: controlledValue, defaultValue, onValueChange, searchable, searchPlaceholder, facets, loadOptions, loadDebounceMs, loadingLabel, errorLabel, disabled, className, }: FilterMultiSelectProps): react_jsx_runtime.JSX.Element;
1537
+
1538
+ interface FilterSingleSelectProps {
1539
+ /** Label shown on the trigger pill. */
1540
+ title: string;
1541
+ /** Override the leading icon on the trigger. */
1542
+ icon?: ReactNode;
1543
+ /** Available filter options. */
1544
+ options: readonly FilterOption[];
1545
+ /** Controlled selected value. */
1546
+ value?: string;
1547
+ /** Uncontrolled initial selected value. */
1548
+ defaultValue?: string;
1549
+ /** Called when the selection changes. Receives `undefined` when cleared. */
1550
+ onValueChange?: (value: string | undefined) => void;
1551
+ /** Show the search input. Defaults to `true`. */
1552
+ searchable?: boolean;
1553
+ /** Placeholder for the search input. Defaults to the `title`. */
1554
+ searchPlaceholder?: string;
1555
+ disabled?: boolean;
1556
+ className?: string;
1557
+ }
1558
+ /**
1559
+ * Searchable single-select filter. Picking an option closes the popover and
1560
+ * updates the trigger to show the selected label. "Clear" row appears when a
1561
+ * value is set.
1562
+ */
1563
+ declare function FilterSingleSelect({ title, icon, options, value: controlledValue, defaultValue, onValueChange, searchable, searchPlaceholder, disabled, className, }: FilterSingleSelectProps): react_jsx_runtime.JSX.Element;
1564
+
1565
+ interface FilterToggleProps {
1566
+ /** Label shown on the trigger pill. */
1567
+ title: string;
1568
+ /** Override the leading icon on the trigger. */
1569
+ icon?: ReactNode;
1570
+ /** Controlled pressed state. */
1571
+ pressed?: boolean;
1572
+ /** Uncontrolled initial pressed state. */
1573
+ defaultPressed?: boolean;
1574
+ /** Called when the pressed state flips. */
1575
+ onPressedChange?: (pressed: boolean) => void;
1576
+ disabled?: boolean;
1577
+ className?: string;
1578
+ }
1579
+ /**
1580
+ * Boolean filter pill — no popover. Clicking the trigger flips the pressed
1581
+ * state; the trigger styling switches between dashed-empty and solid-active.
1582
+ * Useful for "Show archived", "Only mine", etc.
1583
+ */
1584
+ declare function FilterToggle({ title, icon, pressed: controlledPressed, defaultPressed, onPressedChange, disabled, className, }: FilterToggleProps): react_jsx_runtime.JSX.Element;
1585
+
1586
+ interface FilterDateRangePreset {
1587
+ /** Label rendered on the preset button. */
1588
+ readonly label: string;
1589
+ /**
1590
+ * Resolved at click time so relative presets like "Last 7 days" stay
1591
+ * accurate as the day rolls over.
1592
+ */
1593
+ readonly value: () => FilterDateRangeValue;
1594
+ }
1595
+ /**
1596
+ * The five date-range presets most apps need. Pass to
1597
+ * `<Filter.DateRange presets={...} />`.
1598
+ */
1599
+ declare const dateRangePresets: readonly FilterDateRangePreset[];
1600
+
1601
+ interface FilterDateRangeValue {
1602
+ /** ISO date string (yyyy-mm-dd). */
1603
+ from?: string;
1604
+ /** ISO date string (yyyy-mm-dd). */
1605
+ to?: string;
1606
+ }
1607
+ interface FilterDateRangeProps {
1608
+ /** Label shown on the trigger pill. */
1609
+ title: string;
1610
+ /** Override the leading icon on the trigger. Defaults to a calendar icon. */
1611
+ icon?: ReactNode;
1612
+ /** Controlled value. */
1613
+ value?: FilterDateRangeValue;
1614
+ /** Uncontrolled initial value. */
1615
+ defaultValue?: FilterDateRangeValue;
1616
+ /** Called when the range changes. */
1617
+ onValueChange?: (value: FilterDateRangeValue) => void;
1618
+ /**
1619
+ * Quick-pick presets rendered above the from/to inputs. Clicking a
1620
+ * preset resolves its `value()` at click time, commits the result, and
1621
+ * closes the popover. See `dateRangePresets` for a sensible default.
1622
+ */
1623
+ presets?: readonly FilterDateRangePreset[];
1624
+ disabled?: boolean;
1625
+ className?: string;
1626
+ }
1627
+ /**
1628
+ * Date range filter with an inline Calendar in the popover.
1629
+ */
1630
+ declare function FilterDateRange({ title, icon, value: controlledValue, defaultValue, onValueChange, presets, disabled, className, }: FilterDateRangeProps): react_jsx_runtime.JSX.Element;
1631
+
1632
+ interface FilterNumericRangeValue {
1633
+ min?: number;
1634
+ max?: number;
1635
+ }
1636
+ interface FilterNumericRangeProps {
1637
+ /** Label shown on the trigger pill. */
1638
+ title: string;
1639
+ /** Override the leading icon on the trigger. */
1640
+ icon?: ReactNode;
1641
+ /** Controlled value. */
1642
+ value?: FilterNumericRangeValue;
1643
+ /** Uncontrolled initial value. */
1644
+ defaultValue?: FilterNumericRangeValue;
1645
+ /** Called when the range changes. */
1646
+ onValueChange?: (value: FilterNumericRangeValue) => void;
1647
+ /** Lower bound for the input controls (doesn't appear in the badge). */
1648
+ min?: number;
1649
+ /** Upper bound for the input controls (doesn't appear in the badge). */
1650
+ max?: number;
1651
+ /** Step for the input controls. */
1652
+ step?: number;
1653
+ /** Prefix shown next to each value in the trigger badge (e.g. "$", "★"). */
1654
+ unit?: string;
1655
+ /** Custom badge formatter. Falls back to `Intl.NumberFormat` + unit. */
1656
+ format?: (n: number) => string;
1657
+ disabled?: boolean;
1658
+ className?: string;
1659
+ }
1660
+ /**
1661
+ * Numeric range filter. Paired `<input type="number">` controls in the
1662
+ * popover; trigger shows the formatted range when active.
1663
+ */
1664
+ declare function FilterNumericRange({ title, icon, value: controlledValue, defaultValue, onValueChange, min, max, step, unit, format, disabled, className, }: FilterNumericRangeProps): react_jsx_runtime.JSX.Element;
1665
+
1666
+ interface FilterTextProps {
1667
+ /** Label shown on the trigger pill. */
1668
+ title: string;
1669
+ /** Override the leading icon on the trigger. */
1670
+ icon?: ReactNode;
1671
+ /** Controlled value. */
1672
+ value?: string;
1673
+ /** Uncontrolled initial value. */
1674
+ defaultValue?: string;
1675
+ /** Called on every keystroke. */
1676
+ onValueChange?: (value: string) => void;
1677
+ /** Placeholder for the popover input. Defaults to `title`. */
1678
+ placeholder?: string;
1679
+ disabled?: boolean;
1680
+ className?: string;
1681
+ }
1682
+ /**
1683
+ * Single-text-input filter. The popover hosts an auto-focused input with an
1684
+ * inline clear button. Commits on every keystroke; consumers can wrap
1685
+ * `onValueChange` if they need to debounce server-side filtering.
1686
+ */
1687
+ declare function FilterText({ title, icon, value: controlledValue, defaultValue, onValueChange, placeholder, disabled, className, }: FilterTextProps): react_jsx_runtime.JSX.Element;
1688
+
1689
+ interface FilterDateProps {
1690
+ title: string;
1691
+ icon?: ReactNode;
1692
+ value?: string;
1693
+ defaultValue?: string;
1694
+ onValueChange?: (value: string | undefined) => void;
1695
+ disabled?: boolean;
1696
+ className?: string;
1697
+ }
1698
+ declare function FilterDate({ title, icon, value: controlledValue, defaultValue, onValueChange, disabled, className, }: FilterDateProps): react_jsx_runtime.JSX.Element;
1699
+
1700
+ interface FilterSliderValue {
1701
+ min: number;
1702
+ max: number;
1703
+ }
1704
+ interface FilterSliderProps {
1705
+ title: string;
1706
+ icon?: ReactNode;
1707
+ min?: number;
1708
+ max?: number;
1709
+ step?: number;
1710
+ value?: FilterSliderValue;
1711
+ defaultValue?: FilterSliderValue;
1712
+ onValueChange?: (value: FilterSliderValue) => void;
1713
+ disabled?: boolean;
1714
+ className?: string;
1715
+ }
1716
+ declare function FilterSlider({ title, icon, min, max, step, value: controlledValue, defaultValue, onValueChange, disabled, className, }: FilterSliderProps): react_jsx_runtime.JSX.Element;
1717
+
1718
+ /**
1719
+ * Filter pills for lists and tables. Drop the appropriate sub-variant
1720
+ * onto your toolbar:
1721
+ *
1722
+ * - `Filter.MultiSelect` — searchable checkbox list (with optional async loader)
1723
+ * - `Filter.SingleSelect` — searchable radio list (picking closes)
1724
+ * - `Filter.Toggle` — boolean on/off pill, no popover
1725
+ * - `Filter.Date` — single date with Calendar
1726
+ * - `Filter.DateRange` — date range with Calendar, optional presets
1727
+ * - `Filter.NumericRange` — paired numeric inputs with optional unit prefix
1728
+ * - `Filter.Slider` — numeric range slider
1729
+ * - `Filter.Text` — single text input
1730
+ */
1731
+ declare const Filter: {
1732
+ MultiSelect: typeof FilterMultiSelect;
1733
+ SingleSelect: typeof FilterSingleSelect;
1734
+ Toggle: typeof FilterToggle;
1735
+ Date: typeof FilterDate;
1736
+ DateRange: typeof FilterDateRange;
1737
+ NumericRange: typeof FilterNumericRange;
1738
+ Slider: typeof FilterSlider;
1739
+ Text: typeof FilterText;
1740
+ };
1741
+
1742
+ declare function parseLocalDate(iso: string | undefined): Date | null;
1743
+ declare function formatIsoDate(date: Date): string;
1744
+
1745
+ type CalendarMode = "single" | "range";
1746
+ interface CalendarRangeValue {
1747
+ from?: Date;
1748
+ to?: Date;
1749
+ }
1750
+ interface CalendarProps extends Omit<ComponentProps<"div">, "onChange" | "defaultValue"> {
1751
+ mode?: CalendarMode;
1752
+ value?: Date | null;
1753
+ defaultValue?: Date | null;
1754
+ onValueChange?: (value: Date | null) => void;
1755
+ rangeValue?: CalendarRangeValue;
1756
+ defaultRangeValue?: CalendarRangeValue;
1757
+ onRangeValueChange?: (value: CalendarRangeValue) => void;
1758
+ month?: Date;
1759
+ defaultMonth?: Date;
1760
+ onMonthChange?: (month: Date) => void;
1761
+ minDate?: Date;
1762
+ maxDate?: Date;
1763
+ disabled?: (date: Date) => boolean;
1764
+ }
1765
+ declare function Calendar({ mode, value: controlledValue, defaultValue, onValueChange, rangeValue: controlledRange, defaultRangeValue, onRangeValueChange, month: controlledMonth, defaultMonth, onMonthChange, minDate, maxDate, disabled, className, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
1766
+
1767
+ interface DatePickerProps {
1768
+ value?: string;
1769
+ defaultValue?: string;
1770
+ onValueChange?: (value: string | undefined) => void;
1771
+ placeholder?: string;
1772
+ disabled?: boolean;
1773
+ size?: "sm" | "md";
1774
+ className?: string;
1775
+ minDate?: Date;
1776
+ maxDate?: Date;
1777
+ }
1778
+ declare function DatePicker({ value: controlledValue, defaultValue, onValueChange, placeholder, disabled, size, className, minDate, maxDate, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1779
+
1780
+ interface DateRangePickerValue {
1781
+ from?: string;
1782
+ to?: string;
1783
+ }
1784
+ interface DateRangePickerProps {
1785
+ value?: DateRangePickerValue;
1786
+ defaultValue?: DateRangePickerValue;
1787
+ onValueChange?: (value: DateRangePickerValue) => void;
1788
+ placeholder?: string;
1789
+ disabled?: boolean;
1790
+ size?: "sm" | "md";
1791
+ className?: string;
1792
+ minDate?: Date;
1793
+ maxDate?: Date;
1794
+ }
1795
+ declare function DateRangePicker({ value: controlledValue, defaultValue, onValueChange, placeholder, disabled, size, className, minDate, maxDate, }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
1796
+
1797
+ interface TimePickerProps {
1798
+ value?: string;
1799
+ defaultValue?: string;
1800
+ onValueChange?: (value: string | undefined) => void;
1801
+ disabled?: boolean;
1802
+ size?: "sm" | "md";
1803
+ className?: string;
1804
+ }
1805
+ declare const TimePicker: react.ForwardRefExoticComponent<TimePickerProps & react.RefAttributes<HTMLDivElement>>;
1806
+
1807
+ interface ProgressProps extends ComponentProps<typeof Progress$1.Root> {
1808
+ /** Show value label below the bar */
1809
+ showValue?: boolean;
1810
+ }
1811
+ interface ProgressCircularProps extends ComponentProps<"div"> {
1812
+ value: number | null;
1813
+ max?: number;
1814
+ size?: number;
1815
+ strokeWidth?: number;
1816
+ }
1817
+ declare const ProgressCircular: react.ForwardRefExoticComponent<Omit<ProgressCircularProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1818
+ declare const Progress: react.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & react.RefAttributes<HTMLDivElement>> & {
1819
+ Circular: react.ForwardRefExoticComponent<Omit<ProgressCircularProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1820
+ };
1821
+
1822
+ interface SliderProps extends ComponentProps<typeof Slider$1.Root> {
1823
+ showValue?: boolean;
1824
+ }
1825
+ declare const Slider: react.ForwardRefExoticComponent<Omit<SliderProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1826
+
1827
+ declare const sizeStyles$4: {
1828
+ readonly sm: {
1829
+ readonly input: "h-7 text-bruv-sm px-2.5";
1830
+ readonly button: "w-7";
1831
+ };
1832
+ readonly md: {
1833
+ readonly input: "h-8 text-bruv-base px-3";
1834
+ readonly button: "w-8";
1835
+ };
1836
+ };
1837
+ type NumberInputSize = keyof typeof sizeStyles$4;
1838
+ interface NumberInputProps extends ComponentProps<typeof NumberField.Root> {
1839
+ size?: NumberInputSize;
1840
+ }
1841
+ declare const NumberInput: react.ForwardRefExoticComponent<Omit<NumberInputProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1842
+
1843
+ interface EmptyStateProps extends Omit<ComponentProps<"div">, "title"> {
1844
+ title?: ReactNode;
1845
+ description?: ReactNode;
1846
+ icon?: ReactNode;
1847
+ action?: ReactNode;
1848
+ }
1849
+ declare const EmptyState: react.ForwardRefExoticComponent<Omit<EmptyStateProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1850
+
1851
+ interface ScrollAreaProps extends ComponentProps<typeof ScrollArea$1.Root> {
1852
+ children: ReactNode;
1853
+ orientation?: "vertical" | "horizontal" | "both";
1854
+ }
1855
+ declare const ScrollArea: react.ForwardRefExoticComponent<Omit<ScrollAreaProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1856
+
1857
+ interface StepperStep {
1858
+ id: string;
1859
+ label: ReactNode;
1860
+ description?: ReactNode;
1861
+ }
1862
+ interface StepperProps extends ComponentProps<"nav"> {
1863
+ steps: readonly StepperStep[];
1864
+ currentStep: string;
1865
+ orientation?: "horizontal" | "vertical";
1866
+ }
1867
+ declare const Stepper: react.ForwardRefExoticComponent<Omit<StepperProps, "ref"> & react.RefAttributes<HTMLElement>>;
1868
+
1869
+ interface TreeViewItem {
1870
+ id: string;
1871
+ label: ReactNode;
1872
+ children?: readonly TreeViewItem[];
1873
+ disabled?: boolean;
1874
+ }
1875
+ interface TreeViewProps {
1876
+ items: readonly TreeViewItem[];
1877
+ selectedId?: string;
1878
+ defaultSelectedId?: string;
1879
+ onSelectedIdChange?: (id: string) => void;
1880
+ defaultExpandedIds?: readonly string[];
1881
+ expandedIds?: readonly string[];
1882
+ onExpandedIdsChange?: (ids: string[]) => void;
1883
+ className?: string;
1884
+ }
1885
+ declare function TreeView({ items, selectedId: controlledSelected, defaultSelectedId, onSelectedIdChange, defaultExpandedIds, expandedIds: controlledExpanded, onExpandedIdsChange, className, }: TreeViewProps): react_jsx_runtime.JSX.Element;
1886
+
1887
+ interface ContextMenuRootProps extends ComponentProps<typeof ContextMenu$1.Root> {
1888
+ }
1889
+ declare function ContextMenuRoot(props: ContextMenuRootProps): react_jsx_runtime.JSX.Element;
1890
+ interface ContextMenuTriggerProps extends ComponentProps<typeof ContextMenu$1.Trigger> {
1891
+ }
1892
+ interface ContextMenuContentProps {
1893
+ side?: "top" | "bottom" | "left" | "right";
1894
+ align?: "start" | "center" | "end";
1895
+ sideOffset?: number;
1896
+ minWidth?: string;
1897
+ className?: string;
1898
+ children: ReactNode;
1899
+ }
1900
+ declare function ContextMenuContent({ side, align, sideOffset, minWidth, className, children, }: ContextMenuContentProps): react_jsx_runtime.JSX.Element;
1901
+ interface ContextMenuItemProps extends ComponentProps<typeof ContextMenu$1.Item> {
1902
+ }
1903
+ interface ContextMenuSeparatorProps extends ComponentProps<typeof ContextMenu$1.Separator> {
1904
+ }
1905
+ declare function ContextMenuSeparator(props: ContextMenuSeparatorProps): react_jsx_runtime.JSX.Element;
1906
+ interface ContextMenuLabelProps extends ComponentProps<typeof ContextMenu$1.GroupLabel> {
1907
+ }
1908
+ declare function ContextMenuLabel({ className, ...props }: ContextMenuLabelProps): react_jsx_runtime.JSX.Element;
1909
+ declare const ContextMenu: {
1910
+ Root: typeof ContextMenuRoot;
1911
+ Trigger: react.ForwardRefExoticComponent<Omit<ContextMenuTriggerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1912
+ Content: typeof ContextMenuContent;
1913
+ Item: react.ForwardRefExoticComponent<Omit<ContextMenuItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1914
+ Separator: typeof ContextMenuSeparator;
1915
+ Label: typeof ContextMenuLabel;
1916
+ };
1917
+
1918
+ interface TagsInputProps extends Omit<ComponentProps<"div">, "onChange"> {
1919
+ value?: string[];
1920
+ defaultValue?: string[];
1921
+ onValueChange?: (value: string[]) => void;
1922
+ placeholder?: string;
1923
+ disabled?: boolean;
1924
+ }
1925
+ declare const TagsInput: react.ForwardRefExoticComponent<Omit<TagsInputProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1926
+
1927
+ interface OTPProps extends Omit<ComponentProps<typeof OTPFieldPreview.Root>, "length"> {
1928
+ length?: number;
1929
+ }
1930
+ declare const OTP: react.ForwardRefExoticComponent<Omit<OTPProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1931
+
1932
+ interface ToolbarProps extends ComponentProps<typeof Toolbar$1.Root> {
1933
+ children: ReactNode;
1934
+ }
1935
+ interface ToolbarButtonProps extends ComponentProps<typeof Toolbar$1.Button> {
1936
+ }
1937
+ declare const ToolbarButton: react.ForwardRefExoticComponent<Omit<ToolbarButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1938
+ interface ToolbarSeparatorProps extends ComponentProps<typeof Toolbar$1.Separator> {
1939
+ }
1940
+ declare const ToolbarSeparator: react.ForwardRefExoticComponent<Omit<ToolbarSeparatorProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1941
+ declare const Toolbar: react.ForwardRefExoticComponent<Omit<ToolbarProps, "ref"> & react.RefAttributes<HTMLDivElement>> & {
1942
+ Button: react.ForwardRefExoticComponent<Omit<ToolbarButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1943
+ Separator: react.ForwardRefExoticComponent<Omit<ToolbarSeparatorProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
1944
+ };
1945
+
1946
+ interface ResizablePanelProps extends ComponentProps<"div"> {
1947
+ defaultSize?: number;
1948
+ minSize?: number;
1949
+ maxSize?: number;
1950
+ children: ReactNode;
1951
+ }
1952
+ declare function ResizablePanel({ defaultSize, minSize, maxSize, className, children, ...props }: ResizablePanelProps): react_jsx_runtime.JSX.Element;
1953
+ interface ResizableHandleProps extends ComponentProps<"div"> {
1954
+ onResize?: (delta: number) => void;
1955
+ }
1956
+ declare function ResizableHandle({ className, onResize, ...props }: ResizableHandleProps): react_jsx_runtime.JSX.Element;
1957
+ interface ResizableProps extends ComponentProps<"div"> {
1958
+ children: ReactNode;
1959
+ direction?: "horizontal" | "vertical";
1960
+ }
1961
+ declare function Resizable({ children, direction, className, ...props }: ResizableProps): react_jsx_runtime.JSX.Element;
1962
+ declare namespace Resizable {
1963
+ var Panel: typeof ResizablePanel;
1964
+ var Handle: typeof ResizableHandle;
1965
+ }
1966
+
1967
+ interface TruncatedCellProps {
1968
+ /** Content to render and use as tooltip text when truncated */
1969
+ readonly children: ReactNode;
1970
+ /** Override tooltip content (defaults to children if string) */
1971
+ readonly tooltip?: ReactNode;
1972
+ readonly className?: string;
1973
+ }
1974
+ /**
1975
+ * Renders inline text with `truncate` (ellipsis).
1976
+ * When the text overflows, a Tooltip shows the full content on hover.
1977
+ * When it fits, no tooltip is rendered.
1978
+ */
1979
+ declare const TruncatedCell: react.ForwardRefExoticComponent<TruncatedCellProps & react.RefAttributes<HTMLSpanElement>>;
1980
+
1981
+ interface TableProps {
1982
+ readonly className?: string;
1983
+ readonly children: ReactNode;
1984
+ }
1985
+ /**
1986
+ * Lightweight list-table container.
1987
+ *
1988
+ * Wraps a semantic `<table>` in a rounded, bordered container.
1989
+ * Designed for simple list-style data displays - not a full data-table.
1990
+ */
1991
+ declare const Table: ReturnType<typeof forwardRef<HTMLDivElement, TableProps>> & {
1992
+ Header: typeof TableHeader;
1993
+ Body: typeof TableBody;
1994
+ Row: typeof TableRow;
1995
+ HeaderCell: typeof TableHeaderCell;
1996
+ Cell: typeof TableCell;
1997
+ TruncatedCell: typeof TruncatedCell;
1998
+ Skeleton: typeof TableSkeleton;
1999
+ };
2000
+ interface TableHeaderProps {
2001
+ readonly className?: string;
2002
+ readonly children: ReactNode;
2003
+ }
2004
+ declare const TableHeader: react.ForwardRefExoticComponent<TableHeaderProps & react.RefAttributes<HTMLTableSectionElement>>;
2005
+ interface TableBodyProps {
2006
+ readonly className?: string;
2007
+ readonly children: ReactNode;
2008
+ }
2009
+ declare const TableBody: react.ForwardRefExoticComponent<TableBodyProps & react.RefAttributes<HTMLTableSectionElement>>;
2010
+ interface TableRowProps extends Omit<ComponentProps<"tr">, "children"> {
2011
+ className?: string;
2012
+ children: ReactNode;
2013
+ }
2014
+ declare const TableRow: react.ForwardRefExoticComponent<Omit<TableRowProps, "ref"> & react.RefAttributes<HTMLTableRowElement>>;
2015
+ interface TableHeaderCellProps {
2016
+ /** Fixed width in pixels or CSS value */
2017
+ width?: number | string;
2018
+ /** Column span */
2019
+ colSpan?: number;
2020
+ /** Truncate content with ellipsis and show tooltip on overflow */
2021
+ truncate?: boolean;
2022
+ className?: string;
2023
+ children?: ReactNode;
2024
+ }
2025
+ declare const TableHeaderCell: react.ForwardRefExoticComponent<TableHeaderCellProps & react.RefAttributes<HTMLTableCellElement>>;
2026
+ interface TableCellProps {
2027
+ /** Fixed width in pixels or CSS value */
2028
+ width?: number | string;
2029
+ /** Column span */
2030
+ colSpan?: number;
2031
+ /** Truncate content with ellipsis and show tooltip on overflow */
2032
+ truncate?: boolean;
2033
+ className?: string;
2034
+ style?: CSSProperties;
2035
+ children?: ReactNode;
2036
+ }
2037
+ declare const TableCell: react.ForwardRefExoticComponent<TableCellProps & react.RefAttributes<HTMLTableCellElement>>;
2038
+ interface TableSkeletonProps {
2039
+ /** Number of columns to render */
2040
+ readonly columns: number;
2041
+ /** Number of skeleton rows. Default 5. */
2042
+ readonly rows?: number;
2043
+ readonly className?: string;
2044
+ }
2045
+ /**
2046
+ * Skeleton loading rows for the Table.
2047
+ * Renders inside a `<tbody>` with the specified number of rows and columns.
2048
+ *
2049
+ * ```tsx
2050
+ * <Table>
2051
+ * <Table.Header>...</Table.Header>
2052
+ * {loading ? <Table.Skeleton columns={3} /> : <Table.Body>...</Table.Body>}
2053
+ * </Table>
2054
+ * ```
2055
+ */
2056
+ declare function TableSkeleton({ columns, rows, className }: TableSkeletonProps): react_jsx_runtime.JSX.Element;
2057
+
2058
+ declare const sizeStyles$3: {
2059
+ readonly sm: {
2060
+ readonly button: "size-7";
2061
+ readonly icon: "size-4";
2062
+ readonly strip: "h-9";
2063
+ };
2064
+ readonly md: {
2065
+ readonly button: "size-8";
2066
+ readonly icon: "size-4";
2067
+ readonly strip: "h-10";
2068
+ };
2069
+ };
2070
+ type PaginationSize = keyof typeof sizeStyles$3;
2071
+ interface PaginationProps {
2072
+ /** Current page (1-indexed) */
2073
+ page: number;
2074
+ /** Total number of pages */
2075
+ pageCount: number;
2076
+ /** Called when the page changes */
2077
+ onPageChange?: (page: number) => void;
2078
+ /** Total item count - shows "1–10 of XMarkIcon" when provided */
2079
+ totalItems?: number;
2080
+ /** Rows per page - shows selector when provided with onRowsPerPageChange */
2081
+ rowsPerPage?: number;
2082
+ /** Called when rows per page changes */
2083
+ onRowsPerPageChange?: (rows: number) => void;
2084
+ /** Available row count options. Default [10, 25, 50] */
2085
+ rowOptions?: number[];
2086
+ /** Number of sibling pages to show around active page. Default 1 */
2087
+ siblingCount?: number;
2088
+ /** Size of the pagination controls */
2089
+ size?: PaginationSize;
2090
+ className?: string;
2091
+ }
2092
+ /**
2093
+ * Pagination toolbar with clickable page numbers, optional rows-per-page
2094
+ * selector, and optional result count.
2095
+ *
2096
+ * Renders as a cohesive strip - pass `rowsPerPage` + `onRowsPerPageChange`
2097
+ * to show the rows-per-page selector, and `totalItems` to show the result count.
2098
+ */
2099
+ declare const Pagination: react.ForwardRefExoticComponent<PaginationProps & react.RefAttributes<HTMLElement>>;
2100
+
2101
+ declare const sizeStyles$2: {
2102
+ readonly sm: "h-7 px-2.5";
2103
+ readonly md: "h-8 px-3";
2104
+ };
2105
+ type SegmentedControlSize = keyof typeof sizeStyles$2;
2106
+ interface SegmentedControlOption<T extends string = string> {
2107
+ value: T;
2108
+ label?: string;
2109
+ icon?: ReactNode;
2110
+ }
2111
+ interface SegmentedControlProps<T extends string = string> {
2112
+ /** Options to display as segments */
2113
+ options: SegmentedControlOption<T>[];
2114
+ /** Controlled value */
2115
+ value?: T;
2116
+ /** Uncontrolled default value */
2117
+ defaultValue?: T;
2118
+ /** Called when the selected segment changes */
2119
+ onValueChange?: (value: T) => void;
2120
+ /**
2121
+ * Layout mode:
2122
+ * - `fill` - segments divide space equally (default)
2123
+ * - `fit` - segments hug their content
2124
+ */
2125
+ layout?: "fill" | "fit";
2126
+ /** Size of the segmented control items */
2127
+ size?: SegmentedControlSize;
2128
+ className?: string;
2129
+ }
2130
+ /**
2131
+ * Segmented control with a sliding indicator that animates between options.
2132
+ *
2133
+ * Two layout modes:
2134
+ * - `fill` (default) - equal-width segments via CSS grid, indicator positioned with translateX
2135
+ * - `fit` - segments size to content, indicator position/width measured from DOM
2136
+ */
2137
+ declare const SegmentedControl: <T extends string = string>(props: SegmentedControlProps<T> & react__default.RefAttributes<HTMLDivElement>) => react__default.ReactElement | null;
2138
+
2139
+ type ThemeMode = "light" | "dark" | "system";
2140
+ interface UserMenuUser {
2141
+ /** Display name */
2142
+ name: string;
2143
+ /** Organization or team name */
2144
+ org?: string;
2145
+ /** Avatar image URL */
2146
+ avatarUrl?: string;
2147
+ /** Fallback initials when no image (e.g. "AM") */
2148
+ initials?: string;
2149
+ }
2150
+ interface UserMenuItem {
2151
+ label: string;
2152
+ icon?: ReactNode;
2153
+ onClick?: () => void;
2154
+ }
2155
+ interface UserMenuProps {
2156
+ /** User information displayed in the header */
2157
+ user: UserMenuUser;
2158
+ /** Current theme mode */
2159
+ theme?: ThemeMode;
2160
+ /** Called when the theme is changed */
2161
+ onThemeChange?: (theme: ThemeMode) => void;
2162
+ /** Menu items rendered between the theme toggle and log out */
2163
+ items?: UserMenuItem[];
2164
+ /** Called when "Log out" is clicked */
2165
+ onLogout?: () => void;
2166
+ /** Custom trigger content. Defaults to a bare Avatar. */
2167
+ children?: ReactNode;
2168
+ /** Which side the dropdown opens on */
2169
+ side?: "top" | "bottom" | "left" | "right";
2170
+ /** Alignment of the dropdown relative to the trigger */
2171
+ align?: "start" | "center" | "end";
2172
+ className?: string;
2173
+ }
2174
+ /**
2175
+ * User menu dropdown - shows user info, theme toggle, navigation items,
2176
+ * and a log out action.
2177
+ *
2178
+ * Theme state is passed as props so the component stays decoupled from
2179
+ * any specific theme hook.
2180
+ */
2181
+ declare function UserMenu({ user, theme, onThemeChange, items, onLogout, children, side, align, className, }: UserMenuProps): react_jsx_runtime.JSX.Element;
2182
+
2183
+ interface TooltipProviderProps extends ComponentProps<typeof Tooltip$1.Provider> {
2184
+ }
2185
+ declare function TooltipProvider(props: TooltipProviderProps): react_jsx_runtime.JSX.Element;
2186
+ interface TooltipRootProps extends ComponentProps<typeof Tooltip$1.Root> {
2187
+ }
2188
+ declare function TooltipRoot(props: TooltipRootProps): react_jsx_runtime.JSX.Element;
2189
+ interface TooltipTriggerProps extends ComponentProps<typeof Tooltip$1.Trigger> {
2190
+ }
2191
+ interface TooltipContentProps extends ComponentProps<typeof Tooltip$1.Popup> {
2192
+ /** Side relative to the trigger */
2193
+ side?: "top" | "bottom" | "left" | "right";
2194
+ /** Alignment relative to the trigger */
2195
+ align?: "start" | "center" | "end";
2196
+ /** Offset from the trigger in px */
2197
+ sideOffset?: number;
2198
+ /** Content to display */
2199
+ children: ReactNode;
2200
+ }
2201
+ declare function TooltipContent({ side, align, sideOffset, className, children, ...props }: TooltipContentProps): react_jsx_runtime.JSX.Element;
2202
+ interface TooltipViewportProps extends ComponentProps<typeof Tooltip$1.Viewport> {
2203
+ }
2204
+ declare const createTooltipHandle: typeof Tooltip$1.createHandle;
2205
+ declare const Tooltip: {
2206
+ Provider: typeof TooltipProvider;
2207
+ Root: typeof TooltipRoot;
2208
+ Trigger: react.ForwardRefExoticComponent<Omit<TooltipTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2209
+ Content: typeof TooltipContent;
2210
+ Viewport: react.ForwardRefExoticComponent<Omit<TooltipViewportProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2211
+ createHandle: typeof Tooltip$1.createHandle;
2212
+ };
2213
+
2214
+ interface PopoverRootProps extends ComponentProps<typeof Popover$1.Root> {
2215
+ }
2216
+ declare function PopoverRoot(props: PopoverRootProps): react_jsx_runtime.JSX.Element;
2217
+ interface PopoverTriggerProps extends ComponentProps<typeof Popover$1.Trigger> {
2218
+ }
2219
+ interface PopoverContentProps extends ComponentProps<typeof Popover$1.Popup> {
2220
+ /** Side relative to the trigger */
2221
+ side?: "top" | "bottom" | "left" | "right";
2222
+ /** Alignment relative to the trigger */
2223
+ align?: "start" | "center" | "end";
2224
+ /** Offset from the trigger in px */
2225
+ sideOffset?: number;
2226
+ children: ReactNode;
2227
+ }
2228
+ declare function PopoverContent({ side, align, sideOffset, className, children, ...props }: PopoverContentProps): react_jsx_runtime.JSX.Element;
2229
+ interface PopoverArrowProps extends ComponentProps<typeof Popover$1.Arrow> {
2230
+ }
2231
+ interface PopoverCloseProps extends ComponentProps<typeof Popover$1.Close> {
2232
+ }
2233
+ interface PopoverTitleProps {
2234
+ className?: string;
2235
+ children: ReactNode;
2236
+ }
2237
+ interface PopoverDescriptionProps extends ComponentProps<typeof Popover$1.Description> {
2238
+ }
2239
+ declare const Popover: {
2240
+ Root: typeof PopoverRoot;
2241
+ Trigger: react.ForwardRefExoticComponent<Omit<PopoverTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2242
+ Content: typeof PopoverContent;
2243
+ Arrow: react.ForwardRefExoticComponent<Omit<PopoverArrowProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2244
+ Close: react.ForwardRefExoticComponent<Omit<PopoverCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2245
+ Title: react.ForwardRefExoticComponent<PopoverTitleProps & react.RefAttributes<HTMLParagraphElement>>;
2246
+ Description: react.ForwardRefExoticComponent<Omit<PopoverDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
2247
+ };
2248
+
2249
+ declare const variantConfig$1: {
2250
+ readonly accent: {
2251
+ readonly container: "bg-bruv-accent-subtle";
2252
+ readonly icon: "text-bruv-accent";
2253
+ readonly text: "text-bruv-accent [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:opacity-80";
2254
+ readonly pattern: "text-bruv-accent";
2255
+ readonly defaultIcon: react.ForwardRefExoticComponent<Omit<react.SVGProps<SVGSVGElement>, "ref"> & {
2256
+ title?: string;
2257
+ titleId?: string;
2258
+ } & react.RefAttributes<SVGSVGElement>>;
2259
+ };
2260
+ readonly success: {
2261
+ readonly container: "bg-bruv-success-subtle";
2262
+ readonly icon: "text-bruv-success";
2263
+ readonly text: "text-bruv-success [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:opacity-80";
2264
+ readonly pattern: "text-bruv-success";
2265
+ readonly defaultIcon: react.ForwardRefExoticComponent<Omit<react.SVGProps<SVGSVGElement>, "ref"> & {
2266
+ title?: string;
2267
+ titleId?: string;
2268
+ } & react.RefAttributes<SVGSVGElement>>;
2269
+ };
2270
+ readonly warn: {
2271
+ readonly container: "bg-bruv-warn-subtle";
2272
+ readonly icon: "text-bruv-warn";
2273
+ readonly text: "text-bruv-warn [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:opacity-80";
2274
+ readonly pattern: "text-bruv-warn";
2275
+ readonly defaultIcon: react.ForwardRefExoticComponent<Omit<react.SVGProps<SVGSVGElement>, "ref"> & {
2276
+ title?: string;
2277
+ titleId?: string;
2278
+ } & react.RefAttributes<SVGSVGElement>>;
2279
+ };
2280
+ readonly danger: {
2281
+ readonly container: "bg-bruv-danger-subtle";
2282
+ readonly icon: "text-bruv-danger";
2283
+ readonly text: "text-bruv-danger [&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:opacity-80";
2284
+ readonly pattern: "text-bruv-danger";
2285
+ readonly defaultIcon: react.ForwardRefExoticComponent<Omit<react.SVGProps<SVGSVGElement>, "ref"> & {
2286
+ title?: string;
2287
+ titleId?: string;
2288
+ } & react.RefAttributes<SVGSVGElement>>;
2289
+ };
2290
+ };
2291
+ type AlertVariant = keyof typeof variantConfig$1;
2292
+ type AlertLayout = "inline" | "banner";
2293
+ interface AlertProps {
2294
+ /** Visual style variant */
2295
+ variant?: AlertVariant;
2296
+ /**
2297
+ * Layout mode:
2298
+ * - `inline` (default) — horizontal bar with icon left, text center, action right
2299
+ * - `banner` — full-width centered layout for page-level announcements
2300
+ */
2301
+ layout?: AlertLayout;
2302
+ /** Override the default icon */
2303
+ icon?: ReactNode;
2304
+ /** Action element rendered beside the text (e.g. a Button) */
2305
+ action?: ReactNode;
2306
+ /** Called when the dismiss button is clicked. When provided, a close button appears. */
2307
+ onDismiss?: () => void;
2308
+ className?: string;
2309
+ children: ReactNode;
2310
+ }
2311
+ /**
2312
+ * Alert component for important messages.
2313
+ *
2314
+ * Two layouts:
2315
+ * - `inline` — horizontal bar with icon, text, and optional action. Features
2316
+ * a flickering pixel grid on the right side.
2317
+ * - `banner` — full-width centered layout for page-level announcements.
2318
+ * Content is centered with the icon above the text.
2319
+ */
2320
+ declare const Alert: react.ForwardRefExoticComponent<AlertProps & react.RefAttributes<HTMLDivElement>>;
2321
+
2322
+ interface AlertDialogRootProps extends ComponentProps<typeof AlertDialog$1.Root> {
2323
+ }
2324
+ declare function AlertDialogRoot(props: AlertDialogRootProps): react_jsx_runtime.JSX.Element;
2325
+ interface AlertDialogTriggerProps extends ComponentProps<typeof AlertDialog$1.Trigger> {
2326
+ }
2327
+ interface AlertDialogBackdropProps extends ComponentProps<typeof AlertDialog$1.Backdrop> {
2328
+ }
2329
+ interface AlertDialogContentProps extends ComponentProps<typeof AlertDialog$1.Popup> {
2330
+ }
2331
+ declare function AlertDialogContent({ className, children, ...props }: AlertDialogContentProps): react_jsx_runtime.JSX.Element;
2332
+ interface AlertDialogPanelProps {
2333
+ className?: string;
2334
+ children: ReactNode;
2335
+ }
2336
+ interface AlertDialogTitleProps extends ComponentProps<typeof AlertDialog$1.Title> {
2337
+ }
2338
+ interface AlertDialogDescriptionProps extends ComponentProps<typeof AlertDialog$1.Description> {
2339
+ }
2340
+ interface AlertDialogActionsProps {
2341
+ className?: string;
2342
+ children: ReactNode;
2343
+ }
2344
+ interface AlertDialogCloseProps extends ComponentProps<typeof AlertDialog$1.Close> {
2345
+ }
2346
+ declare const AlertDialog: {
2347
+ Root: typeof AlertDialogRoot;
2348
+ Trigger: react.ForwardRefExoticComponent<Omit<AlertDialogTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2349
+ Content: typeof AlertDialogContent;
2350
+ Panel: react.ForwardRefExoticComponent<AlertDialogPanelProps & react.RefAttributes<HTMLDivElement>>;
2351
+ Title: react.ForwardRefExoticComponent<Omit<AlertDialogTitleProps, "ref"> & react.RefAttributes<HTMLHeadingElement>>;
2352
+ Description: react.ForwardRefExoticComponent<Omit<AlertDialogDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
2353
+ Actions: react.ForwardRefExoticComponent<AlertDialogActionsProps & react.RefAttributes<HTMLDivElement>>;
2354
+ Close: react.ForwardRefExoticComponent<Omit<AlertDialogCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2355
+ };
2356
+
2357
+ interface AccordionRootProps extends ComponentProps<typeof Accordion$1.Root> {
2358
+ }
2359
+ interface AccordionItemProps extends ComponentProps<typeof Accordion$1.Item> {
2360
+ }
2361
+ interface AccordionTriggerProps extends ComponentProps<typeof Accordion$1.Trigger> {
2362
+ /** Icon element rendered before the label */
2363
+ icon?: ReactNode;
2364
+ }
2365
+ interface AccordionContentProps extends ComponentProps<typeof Accordion$1.Panel> {
2366
+ }
2367
+ declare const Accordion: {
2368
+ Root: react.ForwardRefExoticComponent<Omit<AccordionRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2369
+ Item: react.ForwardRefExoticComponent<Omit<AccordionItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2370
+ Trigger: react.ForwardRefExoticComponent<Omit<AccordionTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2371
+ Content: react.ForwardRefExoticComponent<Omit<AccordionContentProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2372
+ };
2373
+
2374
+ interface TabsRootProps extends ComponentProps<typeof Tabs$1.Root> {
2375
+ }
2376
+ interface TabsListProps extends ComponentProps<typeof Tabs$1.List> {
2377
+ /**
2378
+ * Layout mode:
2379
+ * - `fit` — tabs hug their content (default)
2380
+ * - `fill` — tabs divide space equally via CSS grid
2381
+ */
2382
+ layout?: "fill" | "fit";
2383
+ }
2384
+ declare const tabSizeStyles: {
2385
+ readonly sm: "h-7 px-2.5";
2386
+ readonly md: "h-8 px-3";
2387
+ };
2388
+ type TabsTabSize = keyof typeof tabSizeStyles;
2389
+ interface TabsTabProps extends ComponentProps<typeof Tabs$1.Tab> {
2390
+ /** Size of the tab */
2391
+ size?: TabsTabSize;
2392
+ }
2393
+ interface TabsPanelProps extends ComponentProps<typeof Tabs$1.Panel> {
2394
+ }
2395
+ declare const Tabs: {
2396
+ Root: react.ForwardRefExoticComponent<Omit<TabsRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2397
+ List: react.ForwardRefExoticComponent<Omit<TabsListProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2398
+ Tab: react.ForwardRefExoticComponent<Omit<TabsTabProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2399
+ Panel: react.ForwardRefExoticComponent<Omit<TabsPanelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2400
+ };
2401
+
2402
+ type DrawerSide = "right" | "left" | "bottom" | "top";
2403
+ interface DrawerRootProps extends Omit<ComponentProps<typeof Drawer$1.Root>, "swipeDirection"> {
2404
+ /** Which edge the drawer slides in from. Default: "right". */
2405
+ side?: DrawerSide;
2406
+ /**
2407
+ * When true (default), automatically switches to "bottom" on small viewports.
2408
+ * The CSS handles this via media queries on the Popup element.
2409
+ */
2410
+ responsive?: boolean;
2411
+ children: ReactNode;
2412
+ }
2413
+ declare function DrawerRoot({ side, responsive: _responsive, children, ...props }: DrawerRootProps): react_jsx_runtime.JSX.Element;
2414
+ interface DrawerTriggerProps extends ComponentProps<typeof Drawer$1.Trigger> {
2415
+ }
2416
+ interface DrawerBackdropProps extends ComponentProps<typeof Drawer$1.Backdrop> {
2417
+ }
2418
+ interface DrawerContentProps extends ComponentProps<typeof Drawer$1.Popup> {
2419
+ /** Which edge. Must match the Root side. Default: "right". */
2420
+ side?: DrawerSide;
2421
+ /** When true, switches to bottom on mobile. Default: true. */
2422
+ responsive?: boolean;
2423
+ }
2424
+ declare function DrawerContent({ side, responsive, className, children, ...props }: DrawerContentProps): react_jsx_runtime.JSX.Element;
2425
+ interface DrawerHeaderProps {
2426
+ className?: string;
2427
+ children: ReactNode;
2428
+ }
2429
+ interface DrawerTitleProps extends ComponentProps<typeof Drawer$1.Title> {
2430
+ }
2431
+ interface DrawerDescriptionProps extends ComponentProps<typeof Drawer$1.Description> {
2432
+ }
2433
+ interface DrawerBodyProps {
2434
+ className?: string;
2435
+ children: ReactNode;
2436
+ }
2437
+ interface DrawerFooterProps {
2438
+ className?: string;
2439
+ children: ReactNode;
2440
+ }
2441
+ interface DrawerCloseProps extends ComponentProps<typeof Drawer$1.Close> {
2442
+ /** Show default XMarkIcon icon. Default: true when no children. */
2443
+ asIcon?: boolean;
2444
+ }
2445
+ declare const Drawer: {
2446
+ Root: typeof DrawerRoot;
2447
+ Trigger: react.ForwardRefExoticComponent<Omit<DrawerTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2448
+ Content: typeof DrawerContent;
2449
+ Header: react.ForwardRefExoticComponent<DrawerHeaderProps & react.RefAttributes<HTMLDivElement>>;
2450
+ Title: react.ForwardRefExoticComponent<Omit<DrawerTitleProps, "ref"> & react.RefAttributes<HTMLHeadingElement>>;
2451
+ Description: react.ForwardRefExoticComponent<Omit<DrawerDescriptionProps, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
2452
+ Body: react.ForwardRefExoticComponent<DrawerBodyProps & react.RefAttributes<HTMLDivElement>>;
2453
+ Footer: react.ForwardRefExoticComponent<DrawerFooterProps & react.RefAttributes<HTMLDivElement>>;
2454
+ Close: react.ForwardRefExoticComponent<Omit<DrawerCloseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2455
+ };
2456
+
2457
+ interface CommandRootProps extends ComponentProps<typeof Command$1> {
2458
+ }
2459
+ interface CommandInputProps extends ComponentProps<typeof Command$1.Input> {
2460
+ }
2461
+ interface CommandListProps extends ComponentProps<typeof Command$1.List> {
2462
+ }
2463
+ interface CommandEmptyProps extends ComponentProps<typeof Command$1.Empty> {
2464
+ }
2465
+ interface CommandGroupProps extends ComponentProps<typeof Command$1.Group> {
2466
+ }
2467
+ interface CommandItemProps extends ComponentProps<typeof Command$1.Item> {
2468
+ /** Icon element rendered before the label */
2469
+ icon?: ReactNode;
2470
+ /** Keyboard shortcut hint rendered on the right */
2471
+ shortcut?: string;
2472
+ }
2473
+ interface CommandSeparatorProps extends ComponentProps<typeof Command$1.Separator> {
2474
+ }
2475
+ interface CommandDialogProps {
2476
+ /** Controlled open state */
2477
+ open?: boolean;
2478
+ /** Called when open state changes */
2479
+ onOpenChange?: (open: boolean) => void;
2480
+ /** Content for the command palette */
2481
+ children: ReactNode;
2482
+ className?: string;
2483
+ }
2484
+ declare function CommandDialog({ open, onOpenChange, children, className, }: CommandDialogProps): react_jsx_runtime.JSX.Element;
2485
+ declare const Command: {
2486
+ Root: react.ForwardRefExoticComponent<Omit<CommandRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2487
+ Input: react.ForwardRefExoticComponent<Omit<CommandInputProps, "ref"> & react.RefAttributes<HTMLInputElement>>;
2488
+ List: react.ForwardRefExoticComponent<Omit<CommandListProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2489
+ Empty: react.ForwardRefExoticComponent<Omit<CommandEmptyProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2490
+ Group: react.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2491
+ Item: react.ForwardRefExoticComponent<Omit<CommandItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2492
+ Separator: react.ForwardRefExoticComponent<Omit<CommandSeparatorProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2493
+ Dialog: typeof CommandDialog;
2494
+ };
2495
+
2496
+ declare const sizeStyles$1: {
2497
+ readonly xs: {
2498
+ readonly height: "h-6";
2499
+ readonly padding: "px-1.5";
2500
+ readonly textPadding: "px-1";
2501
+ readonly icon: "w-6";
2502
+ };
2503
+ readonly sm: {
2504
+ readonly height: "h-7";
2505
+ readonly padding: "px-1.5";
2506
+ readonly textPadding: "px-1";
2507
+ readonly icon: "w-7";
2508
+ };
2509
+ readonly md: {
2510
+ readonly height: "h-8";
2511
+ readonly padding: "px-2";
2512
+ readonly textPadding: "px-1";
2513
+ readonly icon: "w-8";
2514
+ };
2515
+ };
2516
+ type ToggleButtonSize = keyof typeof sizeStyles$1;
2517
+ interface ToggleButtonProps extends ComponentProps<typeof Toggle$1> {
2518
+ /** Size of the toggle button */
2519
+ size?: ToggleButtonSize;
2520
+ /** Icon element rendered before the label */
2521
+ iconLeft?: ReactNode;
2522
+ /** Icon element rendered after the label */
2523
+ iconRight?: ReactNode;
2524
+ }
2525
+ /**
2526
+ * A two-state button that can be pressed or unpressed.
2527
+ *
2528
+ * Built on Base UI Toggle. Visually matches the Button component but
2529
+ * toggles between pressed/unpressed states. Uses `data-[pressed]` for
2530
+ * the active visual.
2531
+ *
2532
+ * Use standalone for single toggles (like a bold button in a toolbar).
2533
+ * Use inside a `ToggleButtonGroup` for mutually exclusive or multi-select
2534
+ * button groups.
2535
+ */
2536
+ declare const ToggleButton: react.ForwardRefExoticComponent<Omit<ToggleButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
2537
+
2538
+ interface ButtonGroupProps extends ComponentPropsWithoutRef<"div"> {
2539
+ /** Orientation of the group */
2540
+ orientation?: "horizontal" | "vertical";
2541
+ }
2542
+ /**
2543
+ * Groups buttons together visually by merging their borders.
2544
+ *
2545
+ * Use for static button groups (e.g. a split button with a dropdown trigger).
2546
+ * For toggle button groups with selection state, use `ToggleButtonGroup`.
2547
+ *
2548
+ * Children should be `Button` or `ToggleButton` components. The group
2549
+ * removes inner border radii and collapses adjacent borders so the buttons
2550
+ * read as a single connected surface.
2551
+ */
2552
+ declare const ButtonGroup: react.ForwardRefExoticComponent<ButtonGroupProps & react.RefAttributes<HTMLDivElement>>;
2553
+ interface ToggleButtonGroupProps<Value extends string = string> extends Omit<ComponentPropsWithoutRef<typeof ToggleGroup>, "value" | "defaultValue" | "onValueChange"> {
2554
+ /** Controlled pressed values */
2555
+ value?: readonly Value[];
2556
+ /** Uncontrolled default pressed values */
2557
+ defaultValue?: readonly Value[];
2558
+ /** Called when the pressed states change */
2559
+ onValueChange?: (value: Value[]) => void;
2560
+ /** When false, only one toggle can be pressed at a time */
2561
+ multiple?: boolean;
2562
+ /** Orientation of the group */
2563
+ orientation?: "horizontal" | "vertical";
2564
+ }
2565
+ /**
2566
+ * Groups toggle buttons with shared selection state.
2567
+ *
2568
+ * Built on Base UI ToggleGroup. When `multiple` is false (default),
2569
+ * pressing one button unpresses the others. When true, any combination
2570
+ * of buttons can be pressed.
2571
+ *
2572
+ * Children should be `ToggleButton` components with `value` props.
2573
+ */
2574
+ declare const ToggleButtonGroup: react.ForwardRefExoticComponent<ToggleButtonGroupProps<string> & react.RefAttributes<HTMLDivElement>>;
2575
+
2576
+ interface RadioGroupRootProps extends ComponentProps<typeof RadioGroup$1> {
2577
+ /** Layout direction. Default "vertical". */
2578
+ orientation?: "horizontal" | "vertical";
2579
+ }
2580
+ declare const sizeStyles: {
2581
+ readonly sm: {
2582
+ readonly radio: "size-4";
2583
+ readonly indicator: "size-1.5";
2584
+ readonly label: "text-bruv-sm";
2585
+ };
2586
+ readonly md: {
2587
+ readonly radio: "size-[18px]";
2588
+ readonly indicator: "size-2";
2589
+ readonly label: "text-bruv-base";
2590
+ };
2591
+ };
2592
+ type RadioGroupItemSize = keyof typeof sizeStyles;
2593
+ interface RadioGroupItemProps extends ComponentProps<typeof Radio.Root> {
2594
+ /** Size of the radio indicator */
2595
+ size?: RadioGroupItemSize;
2596
+ /** Label text rendered beside the radio */
2597
+ label?: string;
2598
+ }
2599
+ interface RadioGroupCardProps {
2600
+ /** Unique value identifying this card */
2601
+ readonly value: string;
2602
+ /** Card title */
2603
+ readonly title: string;
2604
+ /** Optional description below the title */
2605
+ readonly description?: string;
2606
+ /** Optional icon rendered to the left of the text */
2607
+ readonly icon?: ReactNode;
2608
+ /** Disable this card */
2609
+ readonly disabled?: boolean;
2610
+ readonly className?: string;
2611
+ }
2612
+ declare function Card({ value, title, description, icon, disabled, className, }: RadioGroupCardProps): react_jsx_runtime.JSX.Element;
2613
+ declare const RadioGroup: {
2614
+ Root: react.ForwardRefExoticComponent<Omit<RadioGroupRootProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
2615
+ Item: react.ForwardRefExoticComponent<Omit<RadioGroupItemProps, "ref"> & react.RefAttributes<HTMLSpanElement>>;
2616
+ Card: typeof Card;
2617
+ };
2618
+
2619
+ interface SaveBarProps {
2620
+ /** Whether the bar is visible (typically bound to a dirty flag). */
2621
+ show: boolean;
2622
+ /** Message shown inside the pill. Defaults to "You have unsaved changes". */
2623
+ message?: ReactNode;
2624
+ /** Label for the discard button. Defaults to "Reset". */
2625
+ discardLabel?: string;
2626
+ /** Label for the save button. Defaults to "Save changes". */
2627
+ saveLabel?: string;
2628
+ /** Called when the user clicks discard. */
2629
+ onDiscard: () => void;
2630
+ /** Called when the user clicks save. */
2631
+ onSave: () => void;
2632
+ /** Show a loading spinner on the save button. */
2633
+ saving?: boolean;
2634
+ /** Disable the save button (e.g. validation failure). */
2635
+ saveDisabled?: boolean;
2636
+ /** Trigger a shake animation to draw attention (e.g. when navigation is blocked). */
2637
+ shake?: boolean;
2638
+ className?: string;
2639
+ }
2640
+ /**
2641
+ * Floating pill pinned to the bottom of the viewport.
2642
+ * Slides up when a form has unsaved changes.
2643
+ */
2644
+ declare const SaveBar: react.ForwardRefExoticComponent<SaveBarProps & react.RefAttributes<HTMLDivElement>>;
2645
+
2646
+ type ActionBarPosition = "bottom" | "top";
2647
+ interface ActionBarProps {
2648
+ /** Whether the bar is visible. Triggers the slide animation. */
2649
+ show: boolean;
2650
+ /** Selection count. Renders as `"{count} selected"` when no `message` is provided. */
2651
+ count?: number;
2652
+ /** Overrides the count-derived message. */
2653
+ message?: ReactNode;
2654
+ /** Anchor edge of the viewport. Defaults to `"bottom"`. */
2655
+ position?: ActionBarPosition;
2656
+ /** When set, renders an X clear button on the left and calls this on click. */
2657
+ onClear?: () => void;
2658
+ /** Accessible label for the clear button. */
2659
+ clearLabel?: string;
2660
+ /** Action buttons rendered on the right. */
2661
+ actions?: ReactNode;
2662
+ className?: string;
2663
+ }
2664
+ /**
2665
+ * Floating pill anchored to the bottom (or top) of the viewport. Designed
2666
+ * to surface bulk actions when items in a list or table are selected.
2667
+ *
2668
+ * The consumer controls visibility via `show`; the bar slides and fades
2669
+ * in/out using the same motion recipe as `SaveBar`.
2670
+ */
2671
+ declare const ActionBar: react.ForwardRefExoticComponent<ActionBarProps & react.RefAttributes<HTMLDivElement>>;
2672
+
2673
+ declare const variantConfig: {
2674
+ readonly primary: "bg-bruv-accent text-bruv-accent-on hover:bg-bruv-accent-strong active:bg-bruv-accent-strong";
2675
+ readonly secondary: "bg-bruv-base-2 text-bruv-primary ring-1 ring-bruv-neutral hover:bg-bruv-subtle active:bg-bruv-subtle";
2676
+ readonly danger: "bg-bruv-danger text-bruv-danger-on hover:bg-bruv-danger-strong active:bg-bruv-danger-strong";
2677
+ };
2678
+ declare const sizeConfig: {
2679
+ readonly md: {
2680
+ readonly circular: "size-12";
2681
+ readonly extended: "h-12 gap-2.5 px-5";
2682
+ readonly icon: "[&>svg]:size-5";
2683
+ };
2684
+ readonly lg: {
2685
+ readonly circular: "size-14";
2686
+ readonly extended: "h-14 gap-3 px-6";
2687
+ readonly icon: "[&>svg]:size-6";
2688
+ };
2689
+ };
2690
+ declare const positionConfig: {
2691
+ readonly "bottom-right": "bottom-6 right-6";
2692
+ readonly "bottom-left": "bottom-6 left-6";
2693
+ readonly "top-right": "top-6 right-6";
2694
+ readonly "top-left": "top-6 left-6";
2695
+ };
2696
+ type FabVariant = keyof typeof variantConfig;
2697
+ type FabSize = keyof typeof sizeConfig;
2698
+ type FabPosition = keyof typeof positionConfig;
2699
+ type FabAnchor = "viewport" | "container";
2700
+ interface FabProps extends Omit<ComponentProps<typeof Button$1>, "children" | "aria-label"> {
2701
+ /**
2702
+ * Accessible name. Required so icon-only FABs always expose a label
2703
+ * to assistive tech; extended FABs should typically mirror their
2704
+ * `children` text.
2705
+ */
2706
+ "aria-label": string;
2707
+ /** Icon element rendered inside the FAB. Required. */
2708
+ icon: ReactNode;
2709
+ /** Visual style variant. */
2710
+ variant?: FabVariant;
2711
+ /** Size variant. */
2712
+ size?: FabSize;
2713
+ /** Corner of the anchoring box to pin to. */
2714
+ position?: FabPosition;
2715
+ /**
2716
+ * What the FAB is positioned relative to:
2717
+ * - `"viewport"` (default) — `position: fixed`, pinned to the browser
2718
+ * window. The natural choice for a production app.
2719
+ * - `"container"` — `position: absolute`, pinned to the nearest
2720
+ * positioned ancestor. Useful inside cards, drawers, or previews
2721
+ * where you don't want the FAB to escape its panel.
2722
+ */
2723
+ anchor?: FabAnchor;
2724
+ /** Render as an extended pill with the icon and a label. */
2725
+ extended?: boolean;
2726
+ /** Label rendered beside the icon when `extended`. */
2727
+ children?: ReactNode;
2728
+ /** Whether the FAB is visible. Triggers the scale-in animation. */
2729
+ show?: boolean;
2730
+ }
2731
+ /**
2732
+ * Floating action button anchored to a viewport corner. Use for a single
2733
+ * primary action on a screen — e.g. "Compose", "Create", "Add".
2734
+ *
2735
+ * Set `extended` to widen the button into a pill with both icon and label.
2736
+ */
2737
+ declare const Fab: react.ForwardRefExoticComponent<Omit<FabProps, "ref"> & react.RefAttributes<HTMLElement>>;
2738
+
2739
+ type SettingsPageMaxWidth = "narrow" | "wide";
2740
+ interface SettingsPageProps {
2741
+ /** Page title displayed at the top. */
2742
+ title?: ReactNode;
2743
+ /**
2744
+ * Maximum content width.
2745
+ * - `"narrow"` (default): 800px — for settings forms
2746
+ * - `"wide"`: 1100px — for tables, permissions, dashboards
2747
+ */
2748
+ maxWidth?: SettingsPageMaxWidth;
2749
+ /** Optional leading content rendered above the title (e.g. a back button). */
2750
+ leading?: ReactNode;
2751
+ /** Main page content (cards, forms, tables, etc.). */
2752
+ children: ReactNode;
2753
+ className?: string;
2754
+ }
2755
+ /**
2756
+ * Content shell for settings pages.
2757
+ *
2758
+ * Centers content with a max-width constraint, provides consistent
2759
+ * vertical spacing, and renders an optional page title. Designed
2760
+ * to sit inside a `PageLayout` content area.
2761
+ *
2762
+ * ```tsx
2763
+ * <SettingsPage title="General">
2764
+ * <SettingsCard title="Basic settings">
2765
+ * ...
2766
+ * </SettingsCard>
2767
+ * </SettingsPage>
2768
+ * ```
2769
+ */
2770
+ declare const SettingsPage: react.ForwardRefExoticComponent<SettingsPageProps & react.RefAttributes<HTMLDivElement>>;
2771
+
2772
+ type ToastVariant = "default" | "success" | "danger" | "warn" | "accent";
2773
+ type ToastPosition = "top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center";
2774
+ interface ToastData {
2775
+ readonly id: string | number;
2776
+ readonly title?: ReactNode;
2777
+ readonly description?: ReactNode;
2778
+ readonly variant?: ToastVariant;
2779
+ readonly action?: ReactNode;
2780
+ readonly duration?: number;
2781
+ readonly dismissible?: boolean;
2782
+ readonly position?: ToastPosition;
2783
+ readonly onDismiss?: () => void;
2784
+ readonly onAutoClose?: () => void;
2785
+ /** @internal */
2786
+ readonly delete?: boolean;
2787
+ /** @internal Promise state tracking */
2788
+ readonly promiseState?: "loading" | "success" | "error";
2789
+ }
2790
+ interface ExternalToastOptions extends Partial<Omit<ToastData, "id" | "title" | "variant" | "promiseState">> {
2791
+ id?: string | number;
2792
+ }
2793
+ interface PromiseData<T = unknown> {
2794
+ readonly loading: ReactNode;
2795
+ readonly success: ReactNode | ((data: T) => ReactNode);
2796
+ readonly error: ReactNode | ((error: unknown) => ReactNode);
2797
+ readonly description?: ReactNode | ((data: T) => ReactNode);
2798
+ readonly finally?: () => void;
2799
+ }
2800
+ declare function toastFn(message: ReactNode, options?: ExternalToastOptions): string | number;
2801
+ /**
2802
+ * Imperative toast API. Call from anywhere — no hooks required.
2803
+ *
2804
+ * ```ts
2805
+ * toast("Hello")
2806
+ * toast.success("Saved!")
2807
+ * toast.error("Failed", { description: "Check your connection" })
2808
+ * toast.promise(asyncFn, { loading: "...", success: "...", error: "..." })
2809
+ * toast.dismiss(id)
2810
+ * ```
2811
+ */
2812
+ declare const toast: typeof toastFn & {
2813
+ success(message: ReactNode, options?: ExternalToastOptions): string | number;
2814
+ error(message: ReactNode, options?: ExternalToastOptions): string | number;
2815
+ warning(message: ReactNode, options?: ExternalToastOptions): string | number;
2816
+ info(message: ReactNode, options?: ExternalToastOptions): string | number;
2817
+ loading(message: ReactNode, options?: ExternalToastOptions): string | number;
2818
+ promise<T>(promise: Promise<T> | (() => Promise<T>), data: PromiseData<T>, options?: ExternalToastOptions): string | number;
2819
+ dismiss(id?: string | number): void;
2820
+ };
2821
+ interface ToasterProps {
2822
+ /** Position of the toast stack. Default: `"bottom-right"` */
2823
+ position?: ToastPosition;
2824
+ /** Default duration in ms. Default: `4000` */
2825
+ duration?: number;
2826
+ /** Show close button on each toast. Default: `true` */
2827
+ closeButton?: boolean;
2828
+ /** Maximum number of visible toasts. Default: `3` */
2829
+ visibleToasts?: number;
2830
+ /** Gap between expanded toasts in px. Default: `14` */
2831
+ gap?: number;
2832
+ /** Distance from viewport edge in px. Default: `24` */
2833
+ offset?: number;
2834
+ /** Width of each toast in px. Default: `356` */
2835
+ width?: number;
2836
+ /** Additional className for the toaster container */
2837
+ className?: string;
2838
+ }
2839
+ declare const Toaster: react.ForwardRefExoticComponent<ToasterProps & react.RefAttributes<HTMLElement>>;
2840
+ declare const Toast: {
2841
+ Provider: react.ForwardRefExoticComponent<ToasterProps & react.RefAttributes<HTMLElement>>;
2842
+ };
2843
+
2844
+ /**
2845
+ * Return type for `useDirtyState`.
2846
+ *
2847
+ * Provides a draft/saved state pair with helpers for detecting changes,
2848
+ * updating individual fields, discarding edits, and persisting them.
2849
+ */
2850
+ interface DirtyState<T extends object> {
2851
+ /** The current in-flight draft (may differ from saved). */
2852
+ readonly draft: T;
2853
+ /** The last-saved snapshot. */
2854
+ readonly saved: T;
2855
+ /** `true` when draft differs from saved. */
2856
+ readonly dirty: boolean;
2857
+ /** Replace the entire draft. */
2858
+ readonly setDraft: React.Dispatch<React.SetStateAction<T>>;
2859
+ /** Update a single field on the draft. */
2860
+ readonly update: <K extends keyof T>(key: K, value: T[K]) => void;
2861
+ /** Reset draft back to the saved snapshot. */
2862
+ readonly discard: () => void;
2863
+ /** Promote the current draft to saved (optimistic save). */
2864
+ readonly save: () => void;
2865
+ }
2866
+ /**
2867
+ * Manages a draft / saved state pair with built-in dirty detection.
2868
+ *
2869
+ * Replaces the repeated pattern across settings pages of:
2870
+ * ```ts
2871
+ * const [saved, setSaved] = useState(initial)
2872
+ * const [draft, setDraft] = useState(initial)
2873
+ * const dirty = JSON.stringify(draft) !== JSON.stringify(saved)
2874
+ * const update = (key, value) => setDraft(prev => ({ ...prev, [key]: value }))
2875
+ * ```
2876
+ *
2877
+ * @param initial – The starting state for both draft and saved.
2878
+ */
2879
+ declare function useDirtyState<T extends object>(initial: T): DirtyState<T>;
2880
+
2881
+ export { Accordion, type AccordionContentProps, type AccordionItemProps, type AccordionRootProps, type AccordionTriggerProps, ActionBar, type ActionBarPosition, type ActionBarProps, Alert, AlertDialog, type AlertDialogActionsProps, type AlertDialogBackdropProps, type AlertDialogCloseProps, type AlertDialogContentProps, type AlertDialogDescriptionProps, type AlertDialogPanelProps, type AlertDialogRootProps, type AlertDialogTitleProps, type AlertDialogTriggerProps, type AlertLayout, type AlertProps, type AlertVariant, AppHeader, type AppHeaderActionsProps, type AppHeaderBreadcrumbProps, type AppHeaderProps, Avatar, type AvatarProps, type AvatarSize, type AvatarVariant, Badge, type BadgeProps, type BadgeSize, type BadgeVariant, Breadcrumb, type BreadcrumbItem, type BreadcrumbOption, type BreadcrumbProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, type ButtonSize, type ButtonVariant, Calendar, type CalendarMode, type CalendarProps, type CalendarRangeValue, Card$1 as Card, type CardBodyProps, type CardContentProps, type CardHeaderProps, type CardProps, type CardSectionProps, Checkbox, type CheckboxProps, ColorPicker, type ColorPickerOption, type ColorPickerProps, type ColorPickerSize, Combobox, ComboboxButton, type ComboboxButtonProps, ComboboxContent, type ComboboxContentProps, ComboboxGroup, ComboboxGroupLabel, type ComboboxGroupLabelProps, type ComboboxGroupProps, type ComboboxItem, ComboboxOption, type ComboboxOptionProps, type ComboboxProps, ComboboxSeparator, type ComboboxSeparatorProps, ComboboxTrigger, type ComboboxTriggerProps, Command, type CommandDialogProps, type CommandEmptyProps, type CommandGroupProps, type CommandInputProps, type CommandItemProps, type CommandListProps, type CommandRootProps, type CommandSeparatorProps, ContextMenu, type ContextMenuContentProps, type ContextMenuItemProps, type ContextMenuLabelProps, type ContextMenuRootProps, type ContextMenuSeparatorProps, type ContextMenuTriggerProps, DataTable, DataTableActionCell, type DataTableActionCellProps, DataTableBulkBar, type DataTableBulkBarProps, DataTableColumnsButton, type DataTableColumnsButtonProps, type DataTableProps, DataTableSearch, type DataTableSearchProps, DataTableToolbar, type DataTableToolbarProps, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, type DateRangePickerValue, Dialog, type DialogBackdropProps, type DialogBodyProps, type DialogCloseProps, type DialogContentProps, type DialogFooterProps, type DialogPanelProps, type DialogRootProps, type DialogSize, type DialogTitleProps, type DialogTriggerProps, type DirtyState, Drawer, type DrawerBackdropProps, type DrawerBodyProps, type DrawerCloseProps, type DrawerContentProps, type DrawerDescriptionProps, type DrawerFooterProps, type DrawerHeaderProps, type DrawerRootProps, type DrawerTitleProps, type DrawerTriggerProps, DropdownMenu, type DropdownMenuContentProps, type DropdownMenuGroupProps, type DropdownMenuItemProps, type DropdownMenuLabelProps, type DropdownMenuRootProps, type DropdownMenuSeparatorProps, type DropdownMenuTriggerProps, EmptyState, type EmptyStateProps, type ExternalToastOptions, Fab, type FabAnchor, type FabPosition, type FabProps, type FabSize, type FabVariant, Filter, type FilterDateProps, type FilterDateRangePreset, type FilterDateRangeProps, type FilterDateRangeValue, type FilterMultiSelectProps, type FilterNumericRangeProps, type FilterNumericRangeValue, type FilterOption, type FilterSingleSelectProps, type FilterSliderProps, type FilterSliderValue, type FilterTextProps, type FilterToggleProps, FlickeringGrid, type FlickeringGridProps, Hover, HoverGroup, type HoverGroupProps, type HoverProps, Kbd, type KbdProps, NavLink, type NavLinkProps, type NavLinkSize, NavLinks, type NavLinksProps, NumberInput, type NumberInputProps, type NumberInputSize, OTP, type OTPProps, PageLayout, type PageLayoutBodyProps, type PageLayoutHeaderProps, type PageLayoutProps, Pagination, type PaginationProps, type PaginationSize, PixelSpinner, type PixelSpinnerProps, type PixelSpinnerVariant, Popover, type PopoverArrowProps, type PopoverCloseProps, type PopoverContentProps, type PopoverDescriptionProps, type PopoverRootProps, type PopoverTitleProps, type PopoverTriggerProps, Progress, ProgressCircular, type ProgressCircularProps, type ProgressProps, type PromiseData, RadioGroup, type RadioGroupItemProps, type RadioGroupItemSize, type RadioGroupRootProps, Resizable, ResizableHandle, type ResizableHandleProps, ResizablePanel, type ResizablePanelProps, type ResizableProps, SaveBar, type SaveBarProps, ScrollArea, type ScrollAreaProps, SegmentedControl, type SegmentedControlOption, type SegmentedControlProps, type SegmentedControlSize, Select, SelectButton, type SelectButtonProps, SelectContent, type SelectContentProps, SelectGroup, SelectGroupLabel, type SelectGroupLabelProps, type SelectGroupProps, type SelectItem, SelectOption, type SelectOptionProps, type SelectProps, SelectSeparator, type SelectSeparatorProps, SelectTrigger, type SelectTriggerProps, Separator, type SeparatorProps, SettingsCard, type SettingsCardProps, SettingsPage, type SettingsPageMaxWidth, type SettingsPageProps, SettingsRow, type SettingsRowActionProps, type SettingsRowContentProps, type SettingsRowControlProps, type SettingsRowDescriptionProps, type SettingsRowHeaderProps, type SettingsRowLabelProps, type SettingsRowRootProps, Sidebar, type SidebarBackLinkProps, type SidebarCollapseButtonProps, type SidebarGroupProps, type SidebarHeaderProps, type SidebarLabelProps, type SidebarLayersProps, type SidebarLinkComponent, type SidebarLinkProps, type SidebarProviderProps, type SidebarRootProps, type SidebarSectionProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, StatusDot, type StatusDotProps, type StatusDotSize, type StatusDotVariant, Stepper, type StepperProps, type StepperStep, Table, type TableBodyProps, type TableCellProps, type TableHeaderCellProps, type TableHeaderProps, type TableProps, type TableRowProps, Tabs, type TabsListProps, type TabsPanelProps, type TabsRootProps, type TabsTabProps, type TabsTabSize, TagsInput, type TagsInputProps, type ThemeMode, TimePicker, type TimePickerProps, Toast, type ToastData, type ToastPosition, type ToastVariant, Toaster, type ToasterProps, Toggle, ToggleButton, ToggleButtonGroup, type ToggleButtonGroupProps, type ToggleButtonProps, type ToggleButtonSize, type ToggleProps, Toolbar, ToolbarButton, type ToolbarButtonProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, type TooltipContentProps, type TooltipProviderProps, type TooltipRootProps, type TooltipTriggerProps, type TooltipViewportProps, TreeView, type TreeViewItem, type TreeViewProps, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuUser, cn, createTooltipHandle, dateRangePresets, formatIsoDate, parseLocalDate, toast, useDirtyState, useIsMac, useSidebar };