@hilum/ui 3.8.5 → 3.10.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 (90) hide show
  1. package/README.md +32 -1
  2. package/dist/{chunk-RI6QJR2L.js → chunk-R576DV2A.js} +120 -14
  3. package/dist/chunk-R576DV2A.js.map +1 -0
  4. package/dist/create-theme.js +2 -1
  5. package/dist/create-theme.js.map +1 -1
  6. package/dist/index.d.ts +733 -68
  7. package/dist/index.js +3097 -1619
  8. package/dist/index.js.map +1 -1
  9. package/dist/tokens.css +163 -19
  10. package/dist/tokens.d.ts +69 -5
  11. package/dist/tokens.js +1 -1
  12. package/llms.txt +11 -4
  13. package/package.json +11 -10
  14. package/src/components/accordion.tsx +2 -2
  15. package/src/components/account-menu.tsx +1 -1
  16. package/src/components/alert-dialog.tsx +107 -0
  17. package/src/components/ask-user-questions.tsx +24 -18
  18. package/src/components/badge.tsx +36 -3
  19. package/src/components/breadcrumb.tsx +4 -2
  20. package/src/components/button-group.tsx +1 -1
  21. package/src/components/button.tsx +31 -23
  22. package/src/components/calendar.tsx +1 -1
  23. package/src/components/card.tsx +4 -2
  24. package/src/components/checkbox-card.tsx +1 -1
  25. package/src/components/checkbox-group.tsx +2 -1
  26. package/src/components/code-block.tsx +99 -0
  27. package/src/components/color-input.tsx +9 -6
  28. package/src/components/color-picker.tsx +38 -26
  29. package/src/components/combobox.tsx +59 -12
  30. package/src/components/command-palette.tsx +150 -42
  31. package/src/components/command.tsx +5 -3
  32. package/src/components/context-menu.tsx +18 -15
  33. package/src/components/contextual-save-bar.tsx +156 -0
  34. package/src/components/data-table.tsx +34 -5
  35. package/src/components/date-picker.tsx +275 -28
  36. package/src/components/date-text.tsx +90 -0
  37. package/src/components/dropdown-menu.tsx +11 -8
  38. package/src/components/dropdown.tsx +6 -3
  39. package/src/components/empty-state.tsx +85 -20
  40. package/src/components/file-dropzone.tsx +2 -1
  41. package/src/components/file-thumbnail.tsx +84 -20
  42. package/src/components/filter-bar.tsx +91 -0
  43. package/src/components/grid-list.tsx +2 -2
  44. package/src/components/help-tooltip.tsx +1 -1
  45. package/src/components/input-copy.tsx +1 -1
  46. package/src/components/input-group.tsx +1 -1
  47. package/src/components/input-message.tsx +5 -4
  48. package/src/components/input-number.tsx +103 -11
  49. package/src/components/input.tsx +5 -3
  50. package/src/components/label.tsx +1 -0
  51. package/src/components/media-asset-card.tsx +1 -1
  52. package/src/components/menu-item.tsx +37 -3
  53. package/src/components/menubar.tsx +21 -18
  54. package/src/components/native-select.tsx +1 -1
  55. package/src/components/navigation-menu.tsx +2 -2
  56. package/src/components/notification.tsx +1 -1
  57. package/src/components/pagination.tsx +97 -3
  58. package/src/components/popover.tsx +2 -0
  59. package/src/components/property-row.tsx +7 -4
  60. package/src/components/radio-card.tsx +1 -1
  61. package/src/components/radio-group.tsx +2 -1
  62. package/src/components/rating.tsx +136 -0
  63. package/src/components/resizable.tsx +1 -1
  64. package/src/components/resource-item.tsx +133 -0
  65. package/src/components/rich-text-editor.tsx +1 -0
  66. package/src/components/search-input.tsx +98 -0
  67. package/src/components/searchable-table.tsx +10 -11
  68. package/src/components/select.tsx +28 -9
  69. package/src/components/sidebar.tsx +4 -4
  70. package/src/components/slider.tsx +78 -36
  71. package/src/components/sonner.tsx +18 -4
  72. package/src/components/stat-card.tsx +121 -37
  73. package/src/components/status-badge.tsx +142 -47
  74. package/src/components/status-tile.tsx +9 -0
  75. package/src/components/switch.tsx +6 -5
  76. package/src/components/tabs-subtle.tsx +10 -2
  77. package/src/components/tabs.tsx +23 -3
  78. package/src/components/textarea.tsx +2 -3
  79. package/src/components/thinking-steps.tsx +3 -3
  80. package/src/components/toggle.tsx +14 -13
  81. package/src/components/tooltip.tsx +11 -8
  82. package/src/components/url-redirect-prompt.tsx +0 -1
  83. package/src/index.ts +15 -0
  84. package/src/lib/density-context.tsx +65 -0
  85. package/src/lib/format.tsx +301 -0
  86. package/src/lib/interaction.ts +12 -4
  87. package/src/lib/scroll-fade.tsx +39 -0
  88. package/src/tokens/tokens.test.ts +77 -0
  89. package/src/tokens/tokens.ts +114 -5
  90. package/dist/chunk-RI6QJR2L.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import * as React from 'react';
4
- import { ComponentType, ReactNode, HTMLAttributes, ButtonHTMLAttributes, CSSProperties, ComponentPropsWithoutRef, InputHTMLAttributes, ChangeEventHandler, TextareaHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
4
+ import { ComponentType, ReactNode, RefObject, CSSProperties, HTMLAttributes, ButtonHTMLAttributes, ComponentPropsWithoutRef, InputHTMLAttributes, ChangeEventHandler, TextareaHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
5
5
  import * as _radix_ui_react_dropdown_menu from '@radix-ui/react-dropdown-menu';
6
6
  import { DropdownMenu, AlertDialog, AspectRatio, Avatar as Avatar$1, Checkbox, Collapsible, ContextMenu, HoverCard, Label as Label$1, Menubar, Dialog as Dialog$1, NavigationMenu, Popover, Progress, ScrollArea, Separator as Separator$1, ToggleGroup, Toggle } from 'radix-ui';
7
7
  import * as class_variance_authority_types from 'class-variance-authority/types';
@@ -15,11 +15,12 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
15
15
  import { ColumnDef } from '@tanstack/react-table';
16
16
  export { ColumnDef, createColumnHelper } from '@tanstack/react-table';
17
17
  import * as vaul from 'vaul';
18
- import * as pdfjs_dist from 'pdfjs-dist';
18
+ import * as Pdfjs from 'pdfjs-dist';
19
19
  import * as input_otp from 'input-otp';
20
20
  import * as _radix_ui_react_context from '@radix-ui/react-context';
21
21
  import { SeparatorProps, Panel, GroupProps } from 'react-resizable-panels';
22
- import { Toaster as Toaster$1 } from 'sonner';
22
+ import { toast, Toaster as Toaster$1 } from 'sonner';
23
+ export { toast, useSonner } from 'sonner';
23
24
  import * as TabsPrimitive from '@radix-ui/react-tabs';
24
25
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
25
26
 
@@ -91,6 +92,168 @@ declare function SurfaceProvider({ value, children }: {
91
92
  children: ReactNode;
92
93
  }): react_jsx_runtime.JSX.Element;
93
94
 
95
+ /**
96
+ * Control density.
97
+ *
98
+ * - `default` — the standard Hilum sizing (40px inputs, 32px buttons, 40px
99
+ * menu rows). Used everywhere unless something opts in.
100
+ * - `compact` — editor-chrome sizing (Figma / Framer / Linear inspectors):
101
+ * 24px controls, 28px rows and menu items, 12px text, 11px labels, 8px
102
+ * horizontal padding, 4–6px radii.
103
+ *
104
+ * Density is carried two ways so it works for both CSS and portalled UI:
105
+ * 1. the `data-density="compact"` attribute on an ancestor element drives the
106
+ * `compact:` Tailwind variant and the `--density-*` CSS variables emitted
107
+ * in tokens.css;
108
+ * 2. React context, so portalled content (menus, popovers, select lists)
109
+ * can re-apply the attribute on its own root outside the DOM subtree.
110
+ */
111
+ type Density = "default" | "compact";
112
+ declare const DensityContext: React.Context<Density>;
113
+ declare function useDensity(): Density;
114
+ interface DensityProviderProps {
115
+ density: Density;
116
+ children: ReactNode;
117
+ /**
118
+ * Render a `display: contents` wrapper carrying `data-density` (default).
119
+ * Pass `false` when you already set `data-density` on your own element and
120
+ * only need the React context (e.g. for portalled menus).
121
+ */
122
+ wrap?: boolean;
123
+ }
124
+ declare function DensityProvider({ density, children, wrap }: DensityProviderProps): react_jsx_runtime.JSX.Element;
125
+ /**
126
+ * Props to spread on a portalled content root so it inherits the density of
127
+ * the tree that opened it. Returns `{}` in default density so markup is
128
+ * unchanged for non-editor consumers.
129
+ */
130
+ declare function useDensityAttributes(): {
131
+ "data-density"?: Density;
132
+ };
133
+
134
+ type DateInput = Date | string | number | null | undefined;
135
+ /**
136
+ * - `date` / `short` — "Sep 26, 2026" (default; `short` is an alias)
137
+ * - `long` — "September 26, 2026"
138
+ * - `datetime` — "Sep 26, 2026, 3:04 PM"
139
+ * - `time` — "3:04 PM"
140
+ * - `monthDay` — "Sep 26" (dense timelines, same-year lists)
141
+ * - `month` — "September 2026"
142
+ * - `iso` — "2026-09-26" (local calendar date, for APIs)
143
+ */
144
+ type DateFormatStyle = "date" | "short" | "long" | "datetime" | "time" | "monthDay" | "month" | "iso";
145
+ interface FormatOptions {
146
+ /** BCP-47 locale. Defaults to the provider locale, then the runtime default. */
147
+ locale?: string | undefined;
148
+ /** IANA time zone, e.g. "America/Lima". Defaults to the runtime zone. */
149
+ timeZone?: string | undefined;
150
+ }
151
+ /**
152
+ * Parse a date-ish value. Date-only ISO strings ("2026-09-26") are read as
153
+ * local calendar dates instead of UTC midnight, so they never shift a day
154
+ * backwards in western time zones. Returns `null` for empty/invalid input.
155
+ */
156
+ declare function toDate(value: DateInput): Date | null;
157
+ /** Format a Date as a local calendar date string ("YYYY-MM-DD"). */
158
+ declare function toISODate(value: DateInput): string;
159
+ interface FormatDateOptions extends FormatOptions {
160
+ /** Preset style. Default: `"date"` ("Sep 26, 2026"). */
161
+ style?: DateFormatStyle;
162
+ /** Rendered for empty/invalid input. Default: "—". */
163
+ fallback?: string;
164
+ }
165
+ declare function formatDate(value: DateInput, options?: FormatDateOptions): string;
166
+ declare function formatDateTime(value: DateInput, options?: Omit<FormatDateOptions, "style">): string;
167
+ interface FormatDateRangeOptions extends FormatOptions {
168
+ style?: Exclude<DateFormatStyle, "iso" | "time">;
169
+ fallback?: string;
170
+ }
171
+ /** "Sep 1 – 26, 2026" — collapses shared parts via Intl.DateTimeFormat#formatRange. */
172
+ declare function formatDateRange(start: DateInput, end: DateInput, options?: FormatDateRangeOptions): string;
173
+ interface FormatRelativeTimeOptions extends FormatOptions {
174
+ /** Reference time. Default: now. */
175
+ now?: DateInput;
176
+ /**
177
+ * After this many seconds the absolute date is shown instead
178
+ * ("Sep 26, 2026"). Default: 7 days. Pass `Infinity` to always be relative.
179
+ */
180
+ maxRelativeSeconds?: number;
181
+ fallback?: string;
182
+ }
183
+ /** "just now", "5 minutes ago", "in 2 days"; absolute date past `maxRelativeSeconds`. */
184
+ declare function formatRelativeTime(value: DateInput, options?: FormatRelativeTimeOptions): string;
185
+ interface FormatNumberOptions extends FormatOptions, Intl.NumberFormatOptions {
186
+ fallback?: string;
187
+ }
188
+ declare function formatNumber(value: number | string | null | undefined, options?: FormatNumberOptions): string;
189
+ interface FormatCurrencyOptions extends FormatNumberOptions {
190
+ /** ISO-4217 code. Default: provider currency, then "USD". */
191
+ currency?: string;
192
+ /** When true, `value` is in minor units (cents) and divided by 10^fractionDigits. */
193
+ minorUnits?: boolean;
194
+ }
195
+ declare function formatCurrency(value: number | string | null | undefined, options?: FormatCurrencyOptions): string;
196
+ declare function formatPercent(value: number | null | undefined, options?: FormatNumberOptions): string;
197
+ interface PluralizeOptions extends FormatOptions {
198
+ /** Plural form. Default: `${singular}s`. */
199
+ plural?: string;
200
+ /** Omit the number ("items" instead of "2 items"). */
201
+ hideCount?: boolean;
202
+ }
203
+ /**
204
+ * "1 item", "2 items", "1,204 orders". Uses Intl.PluralRules to pick the form
205
+ * and Intl.NumberFormat for the count.
206
+ */
207
+ declare function pluralize(count: number, singular: string, options?: PluralizeOptions): string;
208
+ interface FormatContextValue {
209
+ locale?: string | undefined;
210
+ currency?: string | undefined;
211
+ timeZone?: string | undefined;
212
+ }
213
+ interface FormatProviderProps extends FormatContextValue {
214
+ children: ReactNode;
215
+ }
216
+ declare function FormatProvider({ locale, currency, timeZone, children }: FormatProviderProps): react_jsx_runtime.JSX.Element;
217
+ /** Formatters bound to the nearest FormatProvider's locale/currency/timeZone. */
218
+ declare function useFormatter(): {
219
+ locale: string | undefined;
220
+ currencyCode: string | undefined;
221
+ timeZone: string | undefined;
222
+ date: (value: DateInput, options?: FormatDateOptions) => string;
223
+ dateTime: (value: DateInput, options?: Omit<FormatDateOptions, "style">) => string;
224
+ dateRange: (start: DateInput, end: DateInput, options?: FormatDateRangeOptions) => string;
225
+ relative: (value: DateInput, options?: FormatRelativeTimeOptions) => string;
226
+ number: (value: number | string | null | undefined, options?: FormatNumberOptions) => string;
227
+ currency: (value: number | string | null | undefined, options?: FormatCurrencyOptions) => string;
228
+ percent: (value: number | null | undefined, options?: FormatNumberOptions) => string;
229
+ pluralize: (count: number, singular: string, options?: PluralizeOptions) => string;
230
+ };
231
+
232
+ interface ScrollEdges {
233
+ top: boolean;
234
+ bottom: boolean;
235
+ left: boolean;
236
+ right: boolean;
237
+ }
238
+ interface UseScrollEdgesOptions {
239
+ /** Attach/detach tracking. While false all edges read false. Callers whose
240
+ * scroller mounts late (portals) must fold that into `enabled` so the
241
+ * hook re-attaches once the element exists. Defaults to `true`. */
242
+ enabled?: boolean;
243
+ /** Which axes to measure. Defaults to `"vertical"`. */
244
+ axis?: "vertical" | "horizontal" | "both";
245
+ }
246
+ declare function useScrollEdges(ref: RefObject<HTMLElement | null>, { enabled, axis }?: UseScrollEdgesOptions): ScrollEdges;
247
+ /**
248
+ * CSS mask that fades whichever horizontal edges still hide content. Works on
249
+ * any background (unlike a surface-coloured gradient), so it suits tab tracks.
250
+ */
251
+ declare function horizontalEdgeMask(left: boolean, right: boolean): string | undefined;
252
+ /** Style for a horizontally scrolling strip: edge fades while content is hidden. */
253
+ declare function useHorizontalOverflowMask(ref: RefObject<HTMLElement | null>, enabled?: boolean): CSSProperties | undefined;
254
+ /** Scroll `index`'s `[data-proximity-index]` child into view inside a horizontal strip. */
255
+ declare function scrollStripItemIntoView(container: HTMLElement | null, index: number): void;
256
+
94
257
  declare const DropdownMenuRoot: React.FC<DropdownMenu.DropdownMenuProps>;
95
258
  declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenu.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
96
259
  declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenu.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -238,9 +401,46 @@ declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialog
238
401
  declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialog.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
239
402
  declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialog.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
240
403
  declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialog.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
404
+ interface ConfirmDialogProps {
405
+ /** Element that opens the dialog (e.g. a "Delete" Button). Optional when controlled. */
406
+ trigger?: React.ReactNode;
407
+ open?: boolean;
408
+ onOpenChange?: (open: boolean) => void;
409
+ title: React.ReactNode;
410
+ description?: React.ReactNode;
411
+ confirmLabel?: React.ReactNode;
412
+ cancelLabel?: React.ReactNode;
413
+ /** Red confirm button for irreversible actions (delete, cancel order). */
414
+ destructive?: boolean;
415
+ /**
416
+ * Runs on confirm. If it returns a promise the confirm button shows a
417
+ * pending state and the dialog stays open until it resolves; a rejection
418
+ * keeps the dialog open so the caller can surface the error (e.g. toast).
419
+ */
420
+ onConfirm: () => void | Promise<unknown>;
421
+ /** Extra content between the description and the footer. */
422
+ children?: React.ReactNode;
423
+ className?: string;
424
+ }
425
+ /**
426
+ * One-call confirmation dialog — replaces hand-built "Delete X" dialogs.
427
+ *
428
+ * <ConfirmDialog
429
+ * trigger={<Button variant="destructive">Delete</Button>}
430
+ * title="Delete product?"
431
+ * description="This can't be undone."
432
+ * confirmLabel="Delete product"
433
+ * destructive
434
+ * onConfirm={() => deleteProduct(id)}
435
+ * />
436
+ */
437
+ declare function ConfirmDialog({ trigger, open: openProp, onOpenChange, title, description, confirmLabel, cancelLabel, destructive, onConfirm, children, className, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
438
+ declare namespace ConfirmDialog {
439
+ var displayName: string;
440
+ }
241
441
 
242
442
  declare const alertVariants: (props?: ({
243
- variant?: "destructive" | "default" | "info" | "success" | "warning" | null | undefined;
443
+ variant?: "default" | "destructive" | "info" | "success" | "warning" | null | undefined;
244
444
  } & class_variance_authority_types.ClassProp) | undefined) => string;
245
445
  interface AlertProps extends React.ComponentProps<"div">, VariantProps<typeof alertVariants> {
246
446
  }
@@ -360,12 +560,31 @@ declare const badgeColors: {
360
560
  readonly rose: "#f43f5e";
361
561
  };
362
562
  type BadgeColor = keyof typeof badgeColors;
563
+ /**
564
+ * Semantic tones — the convention every product surface should use instead
565
+ * of picking badge colours by hand:
566
+ *
567
+ * - `success` — finished and healthy: paid, fulfilled, active, delivered.
568
+ * - `info` — in motion, nothing to do yet: processing, shipped, scheduled.
569
+ * - `attention` — needs a merchant action soon: unfulfilled, partially paid, on hold.
570
+ * - `warning` — at risk / waiting on someone else: pending, past due, expiring.
571
+ * - `critical` — failed or blocked: failed, cancelled, suspended, declined.
572
+ * - `neutral` — inactive or terminal-but-fine: draft, archived, refunded, closed.
573
+ */
574
+ type StatusTone = "success" | "info" | "attention" | "warning" | "critical" | "neutral";
575
+ type ToneBadgeVariant = "success" | "brand" | "warning" | "destructive" | "secondary";
576
+ declare const STATUS_TONE_BADGE: Record<StatusTone, {
577
+ variant: ToneBadgeVariant;
578
+ color?: BadgeColor;
579
+ }>;
363
580
  declare const badgeVariants: (props?: ({
364
- variant?: "dot" | "destructive" | "outline" | "default" | "brand" | "secondary" | "solid" | "success" | "warning" | null | undefined;
581
+ variant?: "dot" | "default" | "destructive" | "outline" | "brand" | "secondary" | "solid" | "success" | "warning" | null | undefined;
365
582
  size?: "sm" | "md" | "lg" | null | undefined;
366
583
  } & class_variance_authority_types.ClassProp) | undefined) => string;
367
584
  interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, "color">, VariantProps<typeof badgeVariants> {
368
585
  color?: BadgeColor;
586
+ /** Semantic tone — wins over `variant`/`color`. See `StatusTone`. */
587
+ tone?: StatusTone;
369
588
  }
370
589
  declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
371
590
 
@@ -402,8 +621,8 @@ declare namespace ButtonGroupItem {
402
621
  }
403
622
 
404
623
  declare const buttonVariants: (props?: ({
405
- variant?: "link" | "destructive" | "outline" | "default" | "primary" | "brand" | "secondary" | "tertiary" | "ghost" | null | undefined;
406
- size?: "icon" | "xs" | "sm" | "md" | "lg" | "default" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
624
+ variant?: "link" | "default" | "destructive" | "outline" | "primary" | "brand" | "secondary" | "tertiary" | "ghost" | null | undefined;
625
+ size?: "icon" | "default" | "xs" | "sm" | "md" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
407
626
  iconLeft?: boolean | null | undefined;
408
627
  iconRight?: boolean | null | undefined;
409
628
  } & class_variance_authority_types.ClassProp) | undefined) => string;
@@ -426,7 +645,7 @@ declare namespace Calendar {
426
645
  }
427
646
 
428
647
  declare const calloutVariants: (props?: ({
429
- tone?: "destructive" | "default" | "info" | "success" | "warning" | null | undefined;
648
+ tone?: "default" | "destructive" | "info" | "success" | "warning" | null | undefined;
430
649
  compact?: boolean | null | undefined;
431
650
  } & class_variance_authority_types.ClassProp) | undefined) => string;
432
651
  interface CalloutProps extends Omit<React.ComponentProps<"div">, "title">, VariantProps<typeof calloutVariants> {
@@ -492,7 +711,7 @@ declare const CHART_COLORS: {
492
711
  secondary: "#CDEA19";
493
712
  tertiary: "#fff5bf";
494
713
  muted: "#737373";
495
- subtle: "#f5f5f5";
714
+ subtle: "#e5e5e5";
496
715
  dark: "#171717";
497
716
  };
498
717
  declare const THEMES: {
@@ -618,6 +837,28 @@ declare const CollapsibleRoot: React.ForwardRefExoticComponent<Collapsible.Colla
618
837
  declare const CollapsibleTrigger: React.ForwardRefExoticComponent<Collapsible.CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
619
838
  declare const CollapsibleContent: React.ForwardRefExoticComponent<Collapsible.CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
620
839
 
840
+ interface CodeBlockProps {
841
+ /** Code as a string (copied verbatim). */
842
+ children: string;
843
+ /** Optional language / filename label in the header. */
844
+ language?: string;
845
+ /** Max height before the block scrolls, e.g. 320 or "20rem". */
846
+ maxHeight?: number | string;
847
+ /** Show a copy button. Default: true. */
848
+ copy?: boolean;
849
+ /** Soft-wrap long lines instead of scrolling horizontally. Default: false. */
850
+ wrap?: boolean;
851
+ className?: string;
852
+ }
853
+ /**
854
+ * Styled, scrollable `<pre>` with copy-to-clipboard — for API keys, webhook
855
+ * payloads, snippets and logs. No syntax highlighting (bring your own).
856
+ */
857
+ declare function CodeBlock({ children, language, maxHeight, copy, wrap, className, }: CodeBlockProps): react_jsx_runtime.JSX.Element;
858
+ declare namespace CodeBlock {
859
+ var displayName: string;
860
+ }
861
+
621
862
  type ControlDensity = "default" | "compact";
622
863
  type ControlMobileSurface = "default" | "flush";
623
864
  interface InputProps extends React.ComponentProps<"input"> {
@@ -732,7 +973,9 @@ interface ComboboxOption {
732
973
  statusColor?: string;
733
974
  avatar?: string;
734
975
  }
735
- interface ComboboxProps {
976
+ /** ARIA attributes the combobox manages itself and therefore doesn't accept. */
977
+ type ManagedAria = "aria-expanded" | "aria-controls" | "aria-activedescendant" | "aria-autocomplete" | "aria-haspopup";
978
+ interface ComboboxProps extends Omit<React.AriaAttributes, ManagedAria> {
736
979
  options: ComboboxOption[];
737
980
  value?: string;
738
981
  onValueChange?: (value: string) => void;
@@ -740,11 +983,14 @@ interface ComboboxProps {
740
983
  searchPlaceholder?: string;
741
984
  emptyText?: string;
742
985
  className?: string;
986
+ /** id of the text input (e.g. for a `<label htmlFor>`). */
987
+ id?: string;
988
+ /** Form field name. Submits the selected option's `value` via a hidden input. */
989
+ name?: string;
990
+ disabled?: boolean;
991
+ onBlur?: React.FocusEventHandler<HTMLInputElement>;
743
992
  }
744
- declare function Combobox({ options, value, onValueChange, placeholder, searchPlaceholder, emptyText, className, }: ComboboxProps): react_jsx_runtime.JSX.Element;
745
- declare namespace Combobox {
746
- var displayName: string;
747
- }
993
+ declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
748
994
 
749
995
  interface CommandPaletteItem {
750
996
  id?: string | number;
@@ -761,8 +1007,18 @@ interface CommandPaletteProps {
761
1007
  items: CommandPaletteItem[];
762
1008
  placeholder?: string;
763
1009
  emptyText?: string;
764
- }
765
- declare function CommandPalette({ open, onClose, items, placeholder, emptyText, }: CommandPaletteProps): react_jsx_runtime.JSX.Element;
1010
+ /** Accessible name of the dialog (visually hidden). */
1011
+ title?: string;
1012
+ /** Accessible description of the dialog (visually hidden). */
1013
+ description?: string;
1014
+ /**
1015
+ * Called for items with an `href` (instead of a full page load via
1016
+ * `window.location`). Pass your router's navigate function for client-side
1017
+ * routing. As before, an item's `href` takes precedence over its `onSelect`.
1018
+ */
1019
+ onNavigate?: (href: string) => void;
1020
+ }
1021
+ declare function CommandPalette({ open, onClose, items, placeholder, emptyText, title, description, onNavigate, }: CommandPaletteProps): react_jsx_runtime.JSX.Element;
766
1022
  declare namespace CommandPalette {
767
1023
  var displayName: string;
768
1024
  }
@@ -847,6 +1103,52 @@ declare namespace ContextMenuShortcut {
847
1103
  var displayName: string;
848
1104
  }
849
1105
 
1106
+ interface ContextualSaveBarProps {
1107
+ /** Show the bar — usually `form.isDirty`. */
1108
+ open: boolean;
1109
+ /** Message on the leading edge. Default: "Unsaved changes". */
1110
+ message?: React.ReactNode;
1111
+ /** Primary action. */
1112
+ onSave?: () => void;
1113
+ /** Secondary action — resets the form to its saved state. */
1114
+ onDiscard?: () => void;
1115
+ saveLabel?: React.ReactNode;
1116
+ discardLabel?: React.ReactNode;
1117
+ /** Shows a spinner on Save and disables both actions. */
1118
+ saving?: boolean;
1119
+ /** Disable Save (e.g. while the form is invalid). */
1120
+ saveDisabled?: boolean;
1121
+ /**
1122
+ * Wire the Save button to a `<form id>` instead of `onSave` — the button
1123
+ * becomes `type="submit" form={formId}` so native validation still runs.
1124
+ */
1125
+ formId?: string;
1126
+ /**
1127
+ * `fixed` pins the bar to the viewport (default: top on desktop,
1128
+ * bottom on mobile for thumb reach). `sticky` keeps it inside its scroll
1129
+ * container — useful inside a settings pane or a dialog.
1130
+ */
1131
+ position?: "fixed" | "sticky";
1132
+ /** Extra content between the message and the actions (e.g. a "Preview" link). */
1133
+ children?: React.ReactNode;
1134
+ className?: string;
1135
+ }
1136
+ /**
1137
+ * Contextual save bar — the "you have unsaved changes" strip that replaces
1138
+ * per-card Save buttons on edit screens (Shopify's contextual save bar).
1139
+ * Announces itself politely to assistive tech and binds ⌘S / Ctrl+S to Save
1140
+ * while open.
1141
+ */
1142
+ declare function ContextualSaveBar({ open, message, onSave, onDiscard, saveLabel, discardLabel, saving, saveDisabled, formId, position, children, className, }: ContextualSaveBarProps): react_jsx_runtime.JSX.Element;
1143
+ declare namespace ContextualSaveBar {
1144
+ var displayName: string;
1145
+ }
1146
+ /**
1147
+ * Warn before the tab closes / reloads while `dirty` is true. Pair with
1148
+ * ContextualSaveBar; route-level blocking belongs to your router.
1149
+ */
1150
+ declare function useUnsavedChangesWarning(dirty: boolean): void;
1151
+
850
1152
  interface DataTableProps<TData> {
851
1153
  columns: ColumnDef<TData, any>[];
852
1154
  data: TData[];
@@ -854,8 +1156,14 @@ interface DataTableProps<TData> {
854
1156
  searchPlaceholder?: string;
855
1157
  pageSize?: number;
856
1158
  showPagination?: boolean;
1159
+ /** Rendered in the table body when there are no rows (e.g. an `<EmptyState>` with an action). */
1160
+ emptyState?: React.ReactNode;
1161
+ /** Make rows clickable (e.g. open the detail page). Enter/Space activate focused rows. */
1162
+ onRowClick?: (row: TData) => void;
1163
+ /** Noun for the result count — "12 orders". Default: "result". */
1164
+ itemLabel?: string;
857
1165
  }
858
- declare function DataTable<TData>({ columns, data, searchKey, searchPlaceholder, pageSize, showPagination, }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
1166
+ declare function DataTable<TData>({ columns, data, searchKey, searchPlaceholder, pageSize, showPagination, emptyState, onRowClick, itemLabel, }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
859
1167
 
860
1168
  interface DataTransferScopeOption {
861
1169
  value: string;
@@ -887,18 +1195,106 @@ declare namespace DataTransferControls {
887
1195
  var displayName: string;
888
1196
  }
889
1197
 
890
- declare const formatDate: (date: Date) => string;
891
- interface DatePickerProps {
892
- value?: Date | undefined;
893
- onChange?: (date: Date | undefined) => void;
1198
+ type DateRange = {
1199
+ from: Date | undefined;
1200
+ to?: Date | undefined;
1201
+ };
1202
+ interface DatePickerBaseProps {
894
1203
  placeholder?: string;
895
1204
  disabled?: boolean;
1205
+ /** Earliest selectable day. */
1206
+ minDate?: Date;
1207
+ /** Latest selectable day. */
1208
+ maxDate?: Date;
1209
+ /** Show a clear (×) button when a value is set. */
1210
+ clearable?: boolean;
1211
+ /** BCP-47 locale for the trigger label. Defaults to FormatProvider. */
1212
+ locale?: string;
1213
+ /**
1214
+ * Stretch the trigger to its container (default, like Input). Pass `false`
1215
+ * for an inline 15rem trigger, or size it with `containerClassName`.
1216
+ */
1217
+ fullWidth?: boolean;
1218
+ /** Classes for the trigger wrapper (width, margins). `className` targets the button. */
1219
+ containerClassName?: string;
1220
+ id?: string;
1221
+ name?: string;
1222
+ "aria-label"?: string;
1223
+ "aria-invalid"?: boolean;
896
1224
  className?: string;
897
1225
  }
898
- declare function DatePicker({ value, onChange, placeholder, disabled, className, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1226
+ interface DatePickerProps extends DatePickerBaseProps {
1227
+ value?: Date | undefined;
1228
+ onChange?: (date: Date | undefined) => void;
1229
+ }
1230
+ /**
1231
+ * Single-date picker — a button trigger + calendar popover. Replaces native
1232
+ * `<input type="date">` so dates look and localise the same everywhere.
1233
+ * Pair with `toISODate()` / `toDate()` when your API speaks "YYYY-MM-DD".
1234
+ */
1235
+ declare function DatePicker({ value, onChange, placeholder, minDate, maxDate, locale, ...rest }: DatePickerProps): react_jsx_runtime.JSX.Element;
899
1236
  declare namespace DatePicker {
900
1237
  var displayName: string;
901
1238
  }
1239
+ interface DateRangePreset {
1240
+ label: string;
1241
+ range: () => DateRange;
1242
+ }
1243
+ /** Common analytics / reporting presets. */
1244
+ declare const DEFAULT_DATE_RANGE_PRESETS: DateRangePreset[];
1245
+ interface DateRangePickerProps extends DatePickerBaseProps {
1246
+ value?: DateRange | undefined;
1247
+ /** Shorthand for `value={{ from, to }}`. Ignored when `value` is set. */
1248
+ from?: Date | undefined;
1249
+ /** Shorthand for `value={{ from, to }}`. Ignored when `value` is set. */
1250
+ to?: Date | undefined;
1251
+ onChange?: (range: DateRange | undefined) => void;
1252
+ /** Quick ranges shown beside the calendar. Pass `[]` to hide. */
1253
+ presets?: DateRangePreset[];
1254
+ /** Months shown side-by-side from `sm` up. Default: 2. */
1255
+ numberOfMonths?: number;
1256
+ }
1257
+ /**
1258
+ * Date-range picker with optional presets ("Last 30 days") — for analytics
1259
+ * filters, reports and exports. Replaces pairs of native date inputs.
1260
+ */
1261
+ declare function DateRangePicker({ value: valueProp, from, to, onChange, placeholder, minDate, maxDate, locale, presets, numberOfMonths, ...rest }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
1262
+ declare namespace DateRangePicker {
1263
+ var displayName: string;
1264
+ }
1265
+
1266
+ interface DateTextProps extends Omit<React.HTMLAttributes<HTMLTimeElement>, "children"> {
1267
+ /** Date, ISO string, or epoch ms. Empty/invalid renders `fallback`. */
1268
+ value: DateInput;
1269
+ /**
1270
+ * Preset. `date`/`short` → "Sep 26, 2026" (default), `datetime` → "Sep 26,
1271
+ * 2026, 3:04 PM", `monthDay` → "Sep 26", `long`, `month`, `time`, `iso`, or
1272
+ * `relative` → "3 hours ago".
1273
+ */
1274
+ format?: DateFormatStyle | "relative";
1275
+ locale?: string;
1276
+ timeZone?: string;
1277
+ /** Shown when `value` is empty or invalid. Default: "—". */
1278
+ fallback?: string;
1279
+ }
1280
+ /**
1281
+ * Renders a semantic `<time>` with a consistent, locale-aware format and the
1282
+ * full date-time as a hover title. Use it for every date in tables, detail
1283
+ * sidebars and timelines instead of `toLocaleDateString()` or raw ISO strings.
1284
+ */
1285
+ declare function DateText({ value, format, locale, timeZone, fallback, className, title, ...props }: DateTextProps): react_jsx_runtime.JSX.Element;
1286
+ declare namespace DateText {
1287
+ var displayName: string;
1288
+ }
1289
+ interface RelativeTimeProps extends Omit<DateTextProps, "format"> {
1290
+ /** Re-render on an interval so "just now" ages. Default: 60s. `0` disables. */
1291
+ updateInterval?: number;
1292
+ }
1293
+ /** "5 minutes ago" that keeps itself fresh; falls back to a date after 7 days. */
1294
+ declare function RelativeTime({ updateInterval, ...props }: RelativeTimeProps): react_jsx_runtime.JSX.Element;
1295
+ declare namespace RelativeTime {
1296
+ var displayName: string;
1297
+ }
902
1298
 
903
1299
  interface DescriptionItem {
904
1300
  term: string;
@@ -949,18 +1345,36 @@ declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.Re
949
1345
  declare const DropdownLabel: React.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
950
1346
  declare const DropdownSeparator: React.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
951
1347
 
1348
+ interface EmptyStateAction {
1349
+ label: string;
1350
+ href?: string;
1351
+ onClick?: () => void;
1352
+ /** Optional leading icon. */
1353
+ icon?: React.ReactNode;
1354
+ }
952
1355
  interface EmptyStateProps {
953
1356
  icon?: React.ReactNode;
954
1357
  title: string;
955
- description?: string;
956
- action?: {
957
- label: string;
958
- href?: string;
959
- onClick?: () => void;
960
- };
1358
+ description?: React.ReactNode;
1359
+ /**
1360
+ * Primary call to action — every first-run empty state should have one
1361
+ * ("Add product", "Create discount"). Pass an element for router links.
1362
+ */
1363
+ action?: EmptyStateAction | React.ReactElement;
1364
+ /** Secondary, lower-emphasis action (e.g. "Import CSV", "Learn more"). */
1365
+ secondaryAction?: EmptyStateAction | React.ReactElement;
1366
+ /**
1367
+ * `plain` (default) — sits inside an existing card/table.
1368
+ * `card` — standalone bordered surface for a whole page section.
1369
+ */
1370
+ variant?: "plain" | "card";
1371
+ /** `sm` for inline table/list bodies, `md` (default) for page sections. */
1372
+ size?: "sm" | "md";
1373
+ /** Extra content below the actions (e.g. a help link or illustration). */
1374
+ children?: React.ReactNode;
961
1375
  className?: string;
962
1376
  }
963
- declare function EmptyState({ icon, title, description, action, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1377
+ declare function EmptyState({ icon, title, description, action, secondaryAction, variant, size, children, className, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
964
1378
  declare namespace EmptyState {
965
1379
  var displayName: string;
966
1380
  }
@@ -981,9 +1395,11 @@ declare namespace Field {
981
1395
  var displayName: string;
982
1396
  }
983
1397
 
984
- type PdfjsModule = typeof pdfjs_dist;
985
- declare function loadPdfjs(): Promise<PdfjsModule>;
986
- declare function renderPdfFirstPage(file: File, targetWidth: number): Promise<string>;
1398
+ type PdfjsModule = typeof Pdfjs;
1399
+ /** Set the pdf.js worker URL used by FileThumbnail PDF previews (app-wide). */
1400
+ declare function setPdfWorkerSrc(workerSrc: string | undefined): void;
1401
+ declare function loadPdfjs(workerSrc?: string): Promise<PdfjsModule>;
1402
+ declare function renderPdfFirstPage(file: File, targetWidth: number, workerSrc?: string): Promise<string>;
987
1403
  interface FileThumbnailProps {
988
1404
  file?: File;
989
1405
  name?: string;
@@ -991,8 +1407,45 @@ interface FileThumbnailProps {
991
1407
  /** Side length of the square thumbnail in pixels. */
992
1408
  size?: number | string;
993
1409
  className?: string;
1410
+ /**
1411
+ * URL of the pdf.js worker used for PDF previews. Overrides
1412
+ * setPdfWorkerSrc(); when neither is set, the worker loads from jsDelivr.
1413
+ */
1414
+ pdfWorkerSrc?: string;
1415
+ }
1416
+ declare function FileThumbnail({ file, name, type, size, className, pdfWorkerSrc, }: FileThumbnailProps): react_jsx_runtime.JSX.Element;
1417
+
1418
+ interface FilterBarSearch {
1419
+ value: string;
1420
+ onValueChange: (value: string) => void;
1421
+ placeholder?: string;
1422
+ loading?: boolean;
1423
+ }
1424
+ interface FilterBarProps {
1425
+ /** Built-in SearchInput. Omit for filter-only bars. */
1426
+ search?: FilterBarSearch;
1427
+ /** Filter controls — Select, DateRangePicker, toggles. Scroll horizontally on mobile. */
1428
+ children?: React.ReactNode;
1429
+ /** Whether any filter/search is applied; shows the clear action. */
1430
+ active?: boolean;
1431
+ /** Reset search and filters. Shown only while `active`. */
1432
+ onClear?: () => void;
1433
+ clearLabel?: string;
1434
+ /** Trailing actions (sort, export, view toggle) aligned right from `sm`. */
1435
+ actions?: React.ReactNode;
1436
+ /** Result summary under the bar ("24 orders"). */
1437
+ summary?: React.ReactNode;
1438
+ className?: string;
1439
+ }
1440
+ /**
1441
+ * List toolbar: search + filters + clear + actions. Stacks on mobile with the
1442
+ * filter row scrolling horizontally; one row from `md`. Replaces hand-built
1443
+ * "Input + Select + date inputs + reset" rows above tables.
1444
+ */
1445
+ declare function FilterBar({ search, children, active, onClear, clearLabel, actions, summary, className, }: FilterBarProps): react_jsx_runtime.JSX.Element;
1446
+ declare namespace FilterBar {
1447
+ var displayName: string;
994
1448
  }
995
- declare function FileThumbnail({ file, name, type, size, className }: FileThumbnailProps): react_jsx_runtime.JSX.Element;
996
1449
 
997
1450
  type FileDropzoneSelectedFile = Pick<File, "name" | "size">;
998
1451
  interface FileDropzoneProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, "children" | "onChange" | "onDrop" | "onDragOver" | "onDragLeave"> {
@@ -1222,8 +1675,26 @@ interface InputNumberProps extends Omit<React.ComponentProps<"input">, "type" |
1222
1675
  mixedLabel?: string | undefined;
1223
1676
  /** Calls onChange while typing instead of waiting for blur/Enter. */
1224
1677
  commitOnChange?: boolean | undefined;
1225
- /** Hides the up/down stepper buttons. */
1678
+ /**
1679
+ * Hides the up/down stepper buttons. Defaults to `true` under
1680
+ * data-density="compact" (editor chrome relies on arrow keys + label
1681
+ * scrubbing there) and `false` otherwise.
1682
+ */
1226
1683
  hideSteppers?: boolean | undefined;
1684
+ /**
1685
+ * Short prefix label rendered inside the field (e.g. "X", "W", an icon).
1686
+ * It doubles as a scrub handle: drag horizontally to change the value
1687
+ * (Shift = 10×), like Figma's inspector fields.
1688
+ */
1689
+ label?: React.ReactNode;
1690
+ /** Accessible name for the scrub handle when `label` is not plain text. */
1691
+ scrubLabel?: string | undefined;
1692
+ /**
1693
+ * Horizontal alignment of the number. Defaults to `"left"` when a `label`
1694
+ * is given or under compact density (value sits next to its label), and
1695
+ * `"right"` otherwise.
1696
+ */
1697
+ align?: "left" | "right" | undefined;
1227
1698
  }
1228
1699
  /**
1229
1700
  * Numeric input with up/down steppers, unit suffix, and arrow-key step (Shift = 10×).
@@ -1311,6 +1782,8 @@ declare namespace MediaObject {
1311
1782
  var displayName: string;
1312
1783
  }
1313
1784
 
1785
+ /** ARIA flavour of a menu row. */
1786
+ type MenuItemType = "item" | "radio" | "checkbox";
1314
1787
  interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {
1315
1788
  /** Optional leading icon. When omitted, the row renders text-only with no
1316
1789
  * reserved icon column. */
@@ -1318,6 +1791,16 @@ interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {
1318
1791
  label?: string;
1319
1792
  index?: number;
1320
1793
  checked?: boolean;
1794
+ /**
1795
+ * ARIA semantics of the row:
1796
+ * - `"item"` → `role="menuitem"` (a plain action, no `aria-checked`)
1797
+ * - `"radio"` → `role="menuitemradio"` (one-of-many selection)
1798
+ * - `"checkbox"` → `role="menuitemcheckbox"` (independent toggle)
1799
+ *
1800
+ * Defaults to `"radio"` when the row carries selection state — `checked` is
1801
+ * passed or the parent `<Dropdown>` has a `checkedIndex` — otherwise `"item"`.
1802
+ */
1803
+ type?: MenuItemType;
1321
1804
  onSelect?: () => void;
1322
1805
  trailing?: ReactNode;
1323
1806
  }
@@ -1357,7 +1840,7 @@ declare const SheetRoot: React.FC<Dialog$1.DialogProps>;
1357
1840
  declare const SheetTrigger: React.ForwardRefExoticComponent<Dialog$1.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
1358
1841
  declare const SheetClose: React.ForwardRefExoticComponent<Dialog$1.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
1359
1842
  declare const sheetContentVariants: (props?: ({
1360
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
1843
+ side?: "top" | "bottom" | "left" | "right" | null | undefined;
1361
1844
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1362
1845
  interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof Dialog$1.Content>, VariantProps<typeof sheetContentVariants> {
1363
1846
  }
@@ -1478,7 +1961,7 @@ type PaginationLinkProps = React.ComponentProps<"a"> & {
1478
1961
  isActive?: boolean;
1479
1962
  };
1480
1963
  declare const PaginationLink: {
1481
- ({ className, isActive, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
1964
+ ({ className, isActive, children, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
1482
1965
  displayName: string;
1483
1966
  };
1484
1967
  declare const PaginationPrevious: {
@@ -1493,6 +1976,31 @@ declare const PaginationEllipsis: {
1493
1976
  ({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
1494
1977
  displayName: string;
1495
1978
  };
1979
+ interface PaginationBarProps {
1980
+ /** 1-based current page. */
1981
+ page: number;
1982
+ pageSize: number;
1983
+ /** Total item count. Omit for cursor pagination (then pass `hasNextPage`). */
1984
+ total?: number;
1985
+ /** Cursor pagination: whether a next page exists when `total` is unknown. */
1986
+ hasNextPage?: boolean;
1987
+ onPageChange: (page: number) => void;
1988
+ /** Noun for the summary — "Showing 1–20 of 124 orders". Default: "result". */
1989
+ itemLabel?: string;
1990
+ /** Plural noun when it isn't `${itemLabel}s`. */
1991
+ itemLabelPlural?: string;
1992
+ previousLabel?: string;
1993
+ nextLabel?: string;
1994
+ className?: string;
1995
+ }
1996
+ /**
1997
+ * Compact list/table footer: "Showing 21–40 of 124 orders" plus Previous /
1998
+ * Next. Replaces hand-built Prev/Next rows; use Pagination* for numbered pages.
1999
+ */
2000
+ declare function PaginationBar({ page, pageSize, total, hasNextPage, onPageChange, itemLabel, itemLabelPlural, previousLabel, nextLabel, className, }: PaginationBarProps): react_jsx_runtime.JSX.Element;
2001
+ declare namespace PaginationBar {
2002
+ var displayName: string;
2003
+ }
1496
2004
 
1497
2005
  declare const PopoverRoot: React.FC<Popover.PopoverProps>;
1498
2006
  declare const PopoverTrigger: React.ForwardRefExoticComponent<Popover.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1546,6 +2054,33 @@ declare namespace RadioCards {
1546
2054
  var displayName: string;
1547
2055
  }
1548
2056
 
2057
+ interface RatingProps {
2058
+ /** Current rating; fractional values render partial stars (read-only). */
2059
+ value: number;
2060
+ /** Number of stars. Default: 5. */
2061
+ max?: number;
2062
+ /** When set, renders an interactive radio group (whole stars). */
2063
+ onValueChange?: (value: number) => void;
2064
+ size?: "sm" | "md" | "lg";
2065
+ /** Show "4.5" after the stars. */
2066
+ showValue?: boolean;
2067
+ /** Optional count after the value, e.g. "(128)". */
2068
+ count?: number;
2069
+ /** Accessible name for the interactive variant. Default: "Rating". */
2070
+ label?: string;
2071
+ disabled?: boolean;
2072
+ className?: string;
2073
+ }
2074
+ /**
2075
+ * Star rating. Read-only by default (reviews, product cards); pass
2076
+ * `onValueChange` for an accessible radio-group input. Colours are tokens
2077
+ * (`foreground` fill on a `border` track) so it works in every theme.
2078
+ */
2079
+ declare function Rating({ value, max, onValueChange, size, showValue, count, label, disabled, className, }: RatingProps): react_jsx_runtime.JSX.Element;
2080
+ declare namespace Rating {
2081
+ var displayName: string;
2082
+ }
2083
+
1549
2084
  interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
1550
2085
  children: ReactNode;
1551
2086
  selectedIndex?: number;
@@ -1582,6 +2117,53 @@ declare namespace ResizableHandle {
1582
2117
  var displayName: string;
1583
2118
  }
1584
2119
 
2120
+ interface ResourceCellProps {
2121
+ /** Primary line — the resource name / order number. Rendered strongest. */
2122
+ title: React.ReactNode;
2123
+ /** Secondary line — email, SKU, "3 items", date. Rendered muted and smaller. */
2124
+ subtitle?: React.ReactNode;
2125
+ /** Leading thumbnail / avatar (32px works best). */
2126
+ media?: React.ReactNode;
2127
+ /** Inline trailing content on the title line (e.g. a StatusBadge). */
2128
+ badge?: React.ReactNode;
2129
+ /** Link the title (e.g. to the detail page). Use a router link via `title` for SPA navigation. */
2130
+ href?: string;
2131
+ className?: string;
2132
+ }
2133
+ /**
2134
+ * Two-line table cell with the canonical hierarchy: a strong primary line and
2135
+ * a muted secondary line — never the other way round. Use it for the first
2136
+ * column of resource tables (products, orders, customers, merchants).
2137
+ */
2138
+ declare function ResourceCell({ title, subtitle, media, badge, href, className }: ResourceCellProps): react_jsx_runtime.JSX.Element;
2139
+ declare namespace ResourceCell {
2140
+ var displayName: string;
2141
+ }
2142
+ interface ResourceItemProps extends Omit<ResourceCellProps, "href" | "className"> {
2143
+ /** Row-level metadata under the subtitle (e.g. "Sep 26, 2026 · 3 items"). */
2144
+ meta?: React.ReactNode;
2145
+ /** Right-aligned primary value (amount, count). */
2146
+ trailing?: React.ReactNode;
2147
+ /** Right-aligned secondary value under `trailing` (date, status). */
2148
+ trailingSecondary?: React.ReactNode;
2149
+ /** Make the whole row a link. */
2150
+ href?: string;
2151
+ /** Make the whole row a button. Ignored when `href` is set. */
2152
+ onClick?: () => void;
2153
+ /** Accessible name when the row is interactive and `title` isn't plain text. */
2154
+ "aria-label"?: string;
2155
+ className?: string;
2156
+ }
2157
+ /**
2158
+ * List row for `<StackedList>` — the mobile counterpart of a resource table
2159
+ * row. Same primary/secondary hierarchy as ResourceCell, with a trailing
2160
+ * value column. The entire row is one link/button target.
2161
+ */
2162
+ declare function ResourceItem({ title, subtitle, media, badge, meta, trailing, trailingSecondary, href, onClick, "aria-label": ariaLabel, className, }: ResourceItemProps): react_jsx_runtime.JSX.Element;
2163
+ declare namespace ResourceItem {
2164
+ var displayName: string;
2165
+ }
2166
+
1585
2167
  type RichTextImageUrlHandler = () => string | null | undefined | Promise<string | null | undefined>;
1586
2168
  interface RichTextEditorProps {
1587
2169
  value: string;
@@ -1617,6 +2199,23 @@ interface SectionHeadingProps {
1617
2199
  }
1618
2200
  declare function SectionHeading({ title, description, actions, border, className, }: SectionHeadingProps): react_jsx_runtime.JSX.Element;
1619
2201
 
2202
+ interface SearchInputProps extends Omit<InputProps, "type" | "onChange" | "value"> {
2203
+ value: string;
2204
+ /** Called with the new string (not the event) on every keystroke and on clear. */
2205
+ onValueChange: (value: string) => void;
2206
+ /** Show a spinner in place of the clear button (e.g. while results load). */
2207
+ loading?: boolean;
2208
+ /** Accessible name when there is no visible label. Default: placeholder or "Search". */
2209
+ "aria-label"?: string;
2210
+ /** Classes for the wrapper (width, margins). `className` targets the input. */
2211
+ containerClassName?: string;
2212
+ }
2213
+ /**
2214
+ * Search field with a leading magnifier, clear button and Escape-to-clear.
2215
+ * Replaces the hand-built "Input + absolutely positioned Search icon" pattern.
2216
+ */
2217
+ declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
2218
+
1620
2219
  interface SearchableTableFilterOption {
1621
2220
  value: string;
1622
2221
  label: string;
@@ -1643,16 +2242,11 @@ interface SearchableTableProps<T extends {
1643
2242
  options: SearchableTableFilterOption[];
1644
2243
  placeholder: string;
1645
2244
  }>;
1646
- emptyState?: {
1647
- icon?: React.ReactNode;
1648
- title: string;
1649
- description: string;
1650
- action?: {
1651
- label: string;
1652
- href?: string;
1653
- onClick?: () => void;
1654
- };
1655
- };
2245
+ /**
2246
+ * Shown when there are no rows. Give first-run states a primary `action`
2247
+ * ("Add product"); give filtered-empty states a "Clear filters" action.
2248
+ */
2249
+ emptyState?: Pick<EmptyStateProps, "icon" | "title" | "description" | "action" | "secondaryAction">;
1656
2250
  actions?: (item: T) => React.ReactNode;
1657
2251
  mobileCard?: (item: T) => React.ReactNode;
1658
2252
  tableClassName?: string;
@@ -1818,6 +2412,12 @@ interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" |
1818
2412
  hideFill?: boolean;
1819
2413
  thumbColor?: string;
1820
2414
  thumbBorderColor?: string;
2415
+ /**
2416
+ * Track thickness in px. Default 4 (thin track + filled range). Thick tracks
2417
+ * (≥ 8px, e.g. colour-picker hue / alpha strips) keep the thumb inside the
2418
+ * rounded ends instead of overhanging them.
2419
+ */
2420
+ trackSize?: number;
1821
2421
  }
1822
2422
  declare const Slider: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
1823
2423
  interface SliderComfortableProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue" | "onDrag" | "onDragStart" | "onDragEnd" | "onDragOver" | "onAnimationStart"> {
@@ -1835,10 +2435,22 @@ declare const SliderComfortable: React.ForwardRefExoticComponent<SliderComfortab
1835
2435
  declare const SliderControl: React.ForwardRefExoticComponent<SliderProps & React.RefAttributes<HTMLDivElement>>;
1836
2436
 
1837
2437
  type ToasterProps = React.ComponentProps<typeof Toaster$1>;
1838
- declare function Toaster({ ...props }: ToasterProps): react_jsx_runtime.JSX.Element;
2438
+ type ToastOptions = NonNullable<Parameters<typeof toast>[1]>;
2439
+ /**
2440
+ * Toast host. Mount once near the app root; fire toasts with the re-exported
2441
+ * `toast()` API so apps never import `sonner` directly:
2442
+ *
2443
+ * import { Toaster, toast } from "@hilum/ui";
2444
+ * toast.success("Product saved");
2445
+ * toast.promise(save(), { loading: "Saving…", success: "Saved", error: "Could not save" });
2446
+ *
2447
+ * Colours come from Hilum tokens, so the default `theme="system"` only
2448
+ * affects Sonner's built-in icons and close button.
2449
+ */
2450
+ declare function Toaster({ theme, position, ...props }: ToasterProps): react_jsx_runtime.JSX.Element;
1839
2451
 
1840
2452
  declare const spinnerVariants: (props?: ({
1841
- size?: "xs" | "sm" | "lg" | "xl" | "default" | null | undefined;
2453
+ size?: "default" | "xs" | "sm" | "lg" | "xl" | null | undefined;
1842
2454
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1843
2455
  interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof spinnerVariants> {
1844
2456
  }
@@ -1860,15 +2472,35 @@ interface StackedListItemProps {
1860
2472
  }
1861
2473
  declare function StackedListItem({ children, href, onClick, className }: StackedListItemProps): react_jsx_runtime.JSX.Element;
1862
2474
 
2475
+ type StatTrendTone = "positive" | "negative" | "neutral";
2476
+ interface StatCardTrend {
2477
+ value: string;
2478
+ direction: "up" | "down" | "neutral";
2479
+ /**
2480
+ * Whether the change is good or bad. Defaults to up → positive,
2481
+ * down → negative. Set explicitly for metrics where "up" is bad
2482
+ * (refunds, churn, response time).
2483
+ */
2484
+ tone?: StatTrendTone;
2485
+ /** Screen-reader / caption context, e.g. "vs last 30 days". */
2486
+ label?: string;
2487
+ }
1863
2488
  interface StatCardProps {
1864
2489
  label?: string;
1865
2490
  title?: string;
1866
- value?: string | number;
1867
- variant?: "default" | "responsive";
1868
- trend?: {
1869
- value: string;
1870
- direction: "up" | "down" | "neutral";
1871
- };
2491
+ value?: React.ReactNode;
2492
+ /**
2493
+ * `default` — bordered card. `responsive` — flat on mobile, card from `sm`.
2494
+ * `plain` — no surface; use inside an existing Card or a divided StatGrid.
2495
+ */
2496
+ variant?: "default" | "responsive" | "plain";
2497
+ trend?: StatCardTrend;
2498
+ /** Secondary line under the value (e.g. "32 orders", "Last 30 days"). */
2499
+ description?: React.ReactNode;
2500
+ /** Render skeletons for the value and trend. */
2501
+ loading?: boolean;
2502
+ /** Make the whole card a link (e.g. drill into the orders list). */
2503
+ href?: string;
1872
2504
  icon?: React.ReactNode;
1873
2505
  children?: React.ReactNode;
1874
2506
  actionButtons?: React.ReactNode;
@@ -1879,6 +2511,11 @@ interface StatCardProps {
1879
2511
  }
1880
2512
  interface StatCardGridProps {
1881
2513
  children: React.ReactNode;
2514
+ /**
2515
+ * Column count at the widest breakpoint. Always 2 columns on mobile (1 for
2516
+ * `columns={1}`), stepping up through `sm`/`lg`. Default: 6-slot dashboard grid.
2517
+ */
2518
+ columns?: 1 | 2 | 3 | 4 | 5 | 6;
1882
2519
  maxSlots?: number;
1883
2520
  onAddCard?: () => void;
1884
2521
  className?: string;
@@ -1889,7 +2526,7 @@ interface StatCardSlotProps {
1889
2526
  className?: string;
1890
2527
  label?: string;
1891
2528
  }
1892
- declare function StatCard({ label, title, value, variant, trend, icon, children, actionButtons, className, containerClassName, titleClassName, valueClassName, }: StatCardProps): react_jsx_runtime.JSX.Element;
2529
+ declare function StatCard({ label, title, value, variant, trend, description, loading, href, icon, children, actionButtons, className, containerClassName, titleClassName, valueClassName, }: StatCardProps): react_jsx_runtime.JSX.Element;
1893
2530
  declare namespace StatCard {
1894
2531
  var displayName: string;
1895
2532
  }
@@ -1897,18 +2534,28 @@ declare function StatCardSlot({ onAddCard, className, label }: StatCardSlotProps
1897
2534
  declare namespace StatCardSlot {
1898
2535
  var displayName: string;
1899
2536
  }
1900
- declare function StatCardGrid({ children, maxSlots, onAddCard, className, showEmptySlots, }: StatCardGridProps): react_jsx_runtime.JSX.Element;
2537
+ declare function StatCardGrid({ children, columns, maxSlots, onAddCard, className, showEmptySlots, }: StatCardGridProps): react_jsx_runtime.JSX.Element;
1901
2538
  declare namespace StatCardGrid {
1902
2539
  var displayName: string;
1903
2540
  }
2541
+ /** Alias — `StatGrid` reads better next to `StatCard` in new code. */
2542
+ declare const StatGrid: typeof StatCardGrid;
1904
2543
 
1905
2544
  type StatusBadgeVariant = NonNullable<React.ComponentProps<typeof Badge>["variant"]>;
1906
2545
  type StatusBadgeIcon = React.ComponentType<{
1907
2546
  className?: string;
1908
2547
  }>;
2548
+ declare const DEFAULT_STATUS_TONE: Record<string, StatusTone>;
1909
2549
  interface StatusBadgeProps extends Omit<React.ComponentProps<typeof Badge>, "children" | "variant"> {
1910
2550
  status?: string | null;
1911
2551
  label?: React.ReactNode;
2552
+ /**
2553
+ * Semantic tone. Wins over `variant` and the built-in status map. Prefer
2554
+ * `tone` / `toneMap` over raw `variant` so colours stay consistent.
2555
+ */
2556
+ tone?: StatusTone;
2557
+ /** Per-app status → tone overrides, merged over the built-in convention. */
2558
+ toneMap?: Record<string, StatusTone>;
1912
2559
  variant?: StatusBadgeVariant;
1913
2560
  variantMap?: Record<string, StatusBadgeVariant>;
1914
2561
  labelMap?: Record<string, React.ReactNode>;
@@ -1919,8 +2566,14 @@ interface StatusBadgeProps extends Omit<React.ComponentProps<typeof Badge>, "chi
1919
2566
  dotClassName?: string;
1920
2567
  }
1921
2568
  declare function statusLabel(status?: string | null): string;
2569
+ /**
2570
+ * Resolve a status string to its semantic tone. Unknown statuses resolve to
2571
+ * `neutral`. Status strings are normalised ("Partially Fulfilled",
2572
+ * "partially-fulfilled" and "PARTIALLY_FULFILLED" are equivalent).
2573
+ */
2574
+ declare function statusToneFor(status?: string | null, toneMap?: Record<string, StatusTone>): StatusTone;
1922
2575
  declare function statusBadgeVariantFor(status?: string | null, variantMap?: Record<string, StatusBadgeVariant>): StatusBadgeVariant;
1923
- declare function StatusBadge({ status, label, variant, variantMap, labelMap, icon, iconMap, iconClassName, showDot, dotClassName, className, ...props }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
2576
+ declare function StatusBadge({ status, label, tone, toneMap, variant, variantMap, labelMap, icon, iconMap, iconClassName, showDot, dotClassName, className, ...props }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
1924
2577
  declare namespace StatusBadge {
1925
2578
  var displayName: string;
1926
2579
  }
@@ -1937,6 +2590,10 @@ interface StatusTileProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "ti
1937
2590
  className?: string;
1938
2591
  }>;
1939
2592
  labelMap?: Record<string, React.ReactNode>;
2593
+ /** Semantic tone override for the badge. */
2594
+ tone?: StatusTone;
2595
+ /** Per-app status → tone overrides. */
2596
+ toneMap?: Record<string, StatusTone>;
1940
2597
  variantMap?: Record<string, StatusBadgeVariant>;
1941
2598
  iconMap?: Record<string, React.ComponentType<{
1942
2599
  className?: string;
@@ -1946,7 +2603,7 @@ declare function StatusTileGrid({ columns, className, ...props }: StatusTileGrid
1946
2603
  declare namespace StatusTileGrid {
1947
2604
  var displayName: string;
1948
2605
  }
1949
- declare function StatusTile({ title, status, description, meta, icon: Icon, labelMap, variantMap, iconMap, className, ...props }: StatusTileProps): react_jsx_runtime.JSX.Element;
2606
+ declare function StatusTile({ title, status, description, meta, icon: Icon, labelMap, tone, toneMap, variantMap, iconMap, className, ...props }: StatusTileProps): react_jsx_runtime.JSX.Element;
1950
2607
  declare namespace StatusTile {
1951
2608
  var displayName: string;
1952
2609
  }
@@ -2029,8 +2686,16 @@ interface TabsProps extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.R
2029
2686
  onSelect?: (index: number) => void;
2030
2687
  }
2031
2688
  declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
2032
- type TabsListProps = ComponentPropsWithoutRef<typeof TabsPrimitive.List>;
2033
- declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
2689
+ interface TabsListProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.List> {
2690
+ /**
2691
+ * Let the strip scroll horizontally instead of clipping when the tabs are
2692
+ * wider than their container (settings tabs on mobile, narrow panels).
2693
+ * Edges fade while more tabs are hidden and the active tab is scrolled into
2694
+ * view. Default: `true`.
2695
+ */
2696
+ scrollable?: boolean;
2697
+ }
2698
+ declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
2034
2699
  interface TabItemProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {
2035
2700
  /** Unique value for this tab. */
2036
2701
  value: string;
@@ -2121,7 +2786,7 @@ interface ThinkingStepProps {
2121
2786
  children?: ReactNode;
2122
2787
  className?: string;
2123
2788
  }
2124
- declare function ThinkingStep({ icon, showIcon, label, description, status, index, delay, isLast, children, className, }: ThinkingStepProps): react_jsx_runtime.JSX.Element | null;
2789
+ declare function ThinkingStep({ icon, showIcon, label, description, status, isLast, children, className, }: ThinkingStepProps): react_jsx_runtime.JSX.Element | null;
2125
2790
  interface ThinkingStepDetailsProps {
2126
2791
  summary: string;
2127
2792
  details?: string[];
@@ -2177,17 +2842,17 @@ declare namespace TitledCard {
2177
2842
  }
2178
2843
 
2179
2844
  declare const ToggleGroupRoot: React.ForwardRefExoticComponent<((Omit<ToggleGroup.ToggleGroupSingleProps & React.RefAttributes<HTMLDivElement>, "ref"> | Omit<ToggleGroup.ToggleGroupMultipleProps & React.RefAttributes<HTMLDivElement>, "ref">) & VariantProps<(props?: ({
2180
- variant?: "outline" | "default" | "brand" | null | undefined;
2181
- size?: "icon" | "sm" | "lg" | "default" | "icon-sm" | "icon-lg" | null | undefined;
2845
+ variant?: "default" | "outline" | "brand" | null | undefined;
2846
+ size?: "icon" | "default" | "sm" | "lg" | "icon-sm" | "icon-lg" | null | undefined;
2182
2847
  } & class_variance_authority_types.ClassProp) | undefined) => string>) & React.RefAttributes<HTMLDivElement>>;
2183
2848
  declare const ToggleGroupItem: React.ForwardRefExoticComponent<Omit<ToggleGroup.ToggleGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
2184
- variant?: "outline" | "default" | "brand" | null | undefined;
2185
- size?: "icon" | "sm" | "lg" | "default" | "icon-sm" | "icon-lg" | null | undefined;
2849
+ variant?: "default" | "outline" | "brand" | null | undefined;
2850
+ size?: "icon" | "default" | "sm" | "lg" | "icon-sm" | "icon-lg" | null | undefined;
2186
2851
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React.RefAttributes<HTMLButtonElement>>;
2187
2852
 
2188
2853
  declare const toggleVariants: (props?: ({
2189
- variant?: "outline" | "default" | "brand" | null | undefined;
2190
- size?: "icon" | "sm" | "lg" | "default" | "icon-sm" | "icon-lg" | null | undefined;
2854
+ variant?: "default" | "outline" | "brand" | null | undefined;
2855
+ size?: "icon" | "default" | "sm" | "lg" | "icon-sm" | "icon-lg" | null | undefined;
2191
2856
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2192
2857
  interface ToggleProps extends React.ComponentPropsWithoutRef<typeof Toggle.Root>, VariantProps<typeof toggleVariants> {
2193
2858
  }
@@ -2252,4 +2917,4 @@ interface UsageBarProps extends React.HTMLAttributes<HTMLDivElement> {
2252
2917
  }
2253
2918
  declare function UsageBar({ label, value, max, percent, valueLabel, showPercent, layout, tone, className, barClassName, indicatorClassName, ...props }: UsageBarProps): react_jsx_runtime.JSX.Element;
2254
2919
 
2255
- export { Accordion, AccordionContent, AccordionGroup, AccordionItem, AccordionTrigger, AccountMenuContent, AccountMenuHeader, AccountMenuItem, AccountMenuSection, AccountMenuSeparator, ActionPanel, ActivityFeed, Alert, AlertDescription, AlertDialogRoot as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, type AskUserAnswer, type AskUserOption, type AskUserQuestion, AskUserQuestions, type AskUserQuestionsProps, AspectRatioRoot as AspectRatio, Avatar, AvatarFallback, AvatarImage, AvatarStack, type AvatarStackItem, AvatarWithStatus, Badge, type BadgeColor, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem$1 as BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, type ButtonProps, CHART_COLORS, Calendar, type CalendarProps, Callout, type CalloutProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardMedia, type CardMobileSurface, type CardProps, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, type ChatMessageProps, CheckboxRoot as Checkbox, CheckboxCard, type CheckboxCardProps, CheckboxGroup, CheckboxItem, CollapsibleRoot as Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorFormat, ColorInput, type ColorInputProps, ColorPicker, ColorPickerPopover, type ColorPickerPopoverProps, ColorPickerPortalContainer, type ColorPickerProps, ColorSwatch, type ColorSwatchProps, ColorTile, Combobox, type ComboboxOption, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, type CommandPaletteItem, CommandSeparator, CommandShortcut, ContextMenuRoot as ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, type ControlDensity, type ControlMobileSurface, DataTable, type DataTransferAction, DataTransferControls, type DataTransferControlsProps, type DataTransferScopeOption, DatePicker, type DescriptionItem, DescriptionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DrawerRoot as Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Dropdown, DropdownLabel, DropdownMenuRoot as DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSeparator, EmptyState, type FeedEvent, Field, FileDropzone, type FileDropzoneProps, type FileDropzoneSelectedFile, FileThumbnail, type FileThumbnailProps, GridList, GridListAccentCard, GridListCard, HelpTooltip, type HelpTooltipProps, HoverCardRoot as HoverCard, HoverCardContent, HoverCardTrigger, type IconComponent, type IconLibrary, type IconName, IconProvider, Input, InputCopy, type InputCopyProps, InputField, InputGroup, InputMessage, type InputMessageProps, type InputMessageSlotContext, InputNumber, type InputNumberProps, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Kbd, Label, MediaAssetCard, type MediaAssetCardProps, MediaAssetGrid, MediaAssetGridItem, type MediaAssetGridProps, MediaObject, MenuItem, MenubarRoot as Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MobileDrawer, type MobileDrawerProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavItem, type NavItemProps, NavMenu, type NavMenuItem, type NavMenuProps, NavigationMenuRoot as NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Notification, PageHeading, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type ParsedColor, PopoverRoot as Popover, PopoverClose, PopoverContent, PopoverTrigger, ProgressRoot as Progress, PropertyRow, type PropertyRowProps, type QueuedMessage, type RadioCardOption, RadioCards, RadioGroup, RadioGroupItem, RadioItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, type RichTextEditorProps, type RichTextImageUrlHandler, SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollAreaRoot as ScrollArea, SearchableTable, type SearchableTableColumn, type SearchableTableFilterOption, type SearchableTableProps, SectionHeading, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type ShapeClasses, ShapeProvider, type ShapeVariant, SheetRoot as Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SliderComfortable, type SliderComfortableProps, SliderControl, type SliderProps, type SliderValue, Spinner, StackedList, StackedListItem, StatCard, StatCardGrid, type StatCardGridProps, type StatCardProps, StatCardSlot, type StatCardSlotProps, StatusBadge, type StatusBadgeProps, type StatusBadgeVariant, StatusTile, StatusTileGrid, type StatusTileGridProps, type StatusTileProps, type Step, type StepStatus, Steps, SummaryTile, SummaryTileGrid, type SummaryTileGridProps, type SummaryTileProps, SurfaceProvider, Switch, type SwitchProps, TabItem, type TabItemProps, TabPanel, type TabPanelProps, Table, TableBody, TableCaption, TableCell, type TableDensity, TableFooter, TableHead, TableHeader, type TableMobileSurface, type TableProps, TableRow, Tabs, TabsContent, TabsList, type TabsListProps, type TabsProps, TabsSubtle, TabsSubtleItem, TabsSubtlePanel, TabsTrigger, Textarea, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, ThinkingStep, ThinkingStepDetails, type ThinkingStepDetailsProps, ThinkingStepImage, type ThinkingStepImageProps, type ThinkingStepProps, ThinkingStepSource, type ThinkingStepSourceProps, ThinkingStepSources, type ThinkingStepSourcesProps, type ThinkingStepStatus, ThinkingSteps, ThinkingStepsContent, type ThinkingStepsContentProps, ThinkingStepsHeader, type ThinkingStepsHeaderProps, type ThinkingStepsProps, TitledCard, type TitledCardProps, Toaster, ToggleRoot as Toggle, ToggleGroupRoot as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipPortalContainer, type TooltipProps, TooltipProvider, TooltipRoot, type TooltipSide, TooltipTrigger, UrlRedirectPrompt, type UrlRedirectPromptProps, UsageBar, type UsageBarLayout, type UsageBarProps, type UsageBarTone, type ValuePosition, badgeColors, badgeVariants, buildParsed, buttonVariants, cardVariants, cn, formatDate, formatFileSize, hasUrlHandleChanged, iconLibraryLabels, iconLibraryOrder, loadPdfjs, navigationMenuTriggerStyle, normalizeUrlHandle, parseColor, renderPdfFirstPage, shapeMap, spinnerVariants, statusBadgeVariantFor, statusLabel, toggleVariants, triggerVariants, urlResourcePath, useDropdown, useIcon, useIconLibrary, useIcons, useOptionalSidebar, useShape, useShapeContext, useSidebar, useSurface };
2920
+ export { Accordion, AccordionContent, AccordionGroup, AccordionItem, AccordionTrigger, AccountMenuContent, AccountMenuHeader, AccountMenuItem, AccountMenuSection, AccountMenuSeparator, ActionPanel, ActivityFeed, Alert, AlertDescription, AlertDialogRoot as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, type AskUserAnswer, type AskUserOption, type AskUserQuestion, AskUserQuestions, type AskUserQuestionsProps, AspectRatioRoot as AspectRatio, Avatar, AvatarFallback, AvatarImage, AvatarStack, type AvatarStackItem, AvatarWithStatus, Badge, type BadgeColor, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem$1 as BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, type ButtonProps, CHART_COLORS, Calendar, type CalendarProps, Callout, type CalloutProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardMedia, type CardMobileSurface, type CardProps, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, type ChatMessageProps, CheckboxRoot as Checkbox, CheckboxCard, type CheckboxCardProps, CheckboxGroup, CheckboxItem, CodeBlock, type CodeBlockProps, CollapsibleRoot as Collapsible, CollapsibleContent, CollapsibleTrigger, type ColorFormat, ColorInput, type ColorInputProps, ColorPicker, ColorPickerPopover, type ColorPickerPopoverProps, ColorPickerPortalContainer, type ColorPickerProps, ColorSwatch, type ColorSwatchProps, ColorTile, Combobox, type ComboboxOption, type ComboboxProps, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, ContextMenuRoot as ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContextualSaveBar, type ContextualSaveBarProps, type ControlDensity, type ControlMobileSurface, DEFAULT_DATE_RANGE_PRESETS, DEFAULT_STATUS_TONE, DataTable, type DataTableProps, type DataTransferAction, DataTransferControls, type DataTransferControlsProps, type DataTransferScopeOption, type DateFormatStyle, type DateInput, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, DateText, type DateTextProps, type Density, DensityContext, DensityProvider, type DensityProviderProps, type DescriptionItem, DescriptionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DrawerRoot as Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Dropdown, DropdownLabel, DropdownMenuRoot as DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSeparator, EmptyState, type EmptyStateAction, type EmptyStateProps, type FeedEvent, Field, FileDropzone, type FileDropzoneProps, type FileDropzoneSelectedFile, FileThumbnail, type FileThumbnailProps, FilterBar, type FilterBarProps, type FilterBarSearch, type FormatContextValue, type FormatCurrencyOptions, type FormatDateOptions, type FormatDateRangeOptions, type FormatNumberOptions, type FormatOptions, FormatProvider, type FormatProviderProps, type FormatRelativeTimeOptions, GridList, GridListAccentCard, GridListCard, HelpTooltip, type HelpTooltipProps, HoverCardRoot as HoverCard, HoverCardContent, HoverCardTrigger, type IconComponent, type IconLibrary, type IconName, IconProvider, Input, InputCopy, type InputCopyProps, InputField, InputGroup, InputMessage, type InputMessageProps, type InputMessageSlotContext, InputNumber, type InputNumberProps, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Kbd, Label, MediaAssetCard, type MediaAssetCardProps, MediaAssetGrid, MediaAssetGridItem, type MediaAssetGridProps, MediaObject, MenuItem, type MenuItemProps, type MenuItemType, MenubarRoot as Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MobileDrawer, type MobileDrawerProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavItem, type NavItemProps, NavMenu, type NavMenuItem, type NavMenuProps, NavigationMenuRoot as NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Notification, PageHeading, Pagination, PaginationBar, type PaginationBarProps, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type ParsedColor, type PluralizeOptions, PopoverRoot as Popover, PopoverClose, PopoverContent, PopoverTrigger, ProgressRoot as Progress, PropertyRow, type PropertyRowProps, type QueuedMessage, type RadioCardOption, RadioCards, RadioGroup, RadioGroupItem, RadioItem, Rating, type RatingProps, RelativeTime, type RelativeTimeProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResourceCell, type ResourceCellProps, ResourceItem, type ResourceItemProps, RichTextEditor, type RichTextEditorProps, type RichTextImageUrlHandler, SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, STATUS_TONE_BADGE, ScrollAreaRoot as ScrollArea, SearchInput, type SearchInputProps, SearchableTable, type SearchableTableColumn, type SearchableTableFilterOption, type SearchableTableProps, SectionHeading, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type ShapeClasses, ShapeProvider, type ShapeVariant, SheetRoot as Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SliderComfortable, type SliderComfortableProps, SliderControl, type SliderProps, type SliderValue, Spinner, StackedList, StackedListItem, StatCard, StatCardGrid, type StatCardGridProps, type StatCardProps, StatCardSlot, type StatCardSlotProps, type StatCardTrend, StatGrid, type StatTrendTone, StatusBadge, type StatusBadgeProps, type StatusBadgeVariant, StatusTile, StatusTileGrid, type StatusTileGridProps, type StatusTileProps, type StatusTone, type Step, type StepStatus, Steps, SummaryTile, SummaryTileGrid, type SummaryTileGridProps, type SummaryTileProps, SurfaceProvider, Switch, type SwitchProps, TabItem, type TabItemProps, TabPanel, type TabPanelProps, Table, TableBody, TableCaption, TableCell, type TableDensity, TableFooter, TableHead, TableHeader, type TableMobileSurface, type TableProps, TableRow, Tabs, TabsContent, TabsList, type TabsListProps, type TabsProps, TabsSubtle, TabsSubtleItem, TabsSubtlePanel, TabsTrigger, Textarea, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, ThinkingStep, ThinkingStepDetails, type ThinkingStepDetailsProps, ThinkingStepImage, type ThinkingStepImageProps, type ThinkingStepProps, ThinkingStepSource, type ThinkingStepSourceProps, ThinkingStepSources, type ThinkingStepSourcesProps, type ThinkingStepStatus, ThinkingSteps, ThinkingStepsContent, type ThinkingStepsContentProps, ThinkingStepsHeader, type ThinkingStepsHeaderProps, type ThinkingStepsProps, TitledCard, type TitledCardProps, type ToastOptions, Toaster, type ToasterProps, ToggleRoot as Toggle, ToggleGroupRoot as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipPortalContainer, type TooltipProps, TooltipProvider, TooltipRoot, type TooltipSide, TooltipTrigger, UrlRedirectPrompt, type UrlRedirectPromptProps, UsageBar, type UsageBarLayout, type UsageBarProps, type UsageBarTone, type ValuePosition, badgeColors, badgeVariants, buildParsed, buttonVariants, cardVariants, cn, formatCurrency, formatDate, formatDateRange, formatDateTime, formatFileSize, formatNumber, formatPercent, formatRelativeTime, hasUrlHandleChanged, horizontalEdgeMask, iconLibraryLabels, iconLibraryOrder, loadPdfjs, navigationMenuTriggerStyle, normalizeUrlHandle, parseColor, pluralize, renderPdfFirstPage, scrollStripItemIntoView, setPdfWorkerSrc, shapeMap, spinnerVariants, statusBadgeVariantFor, statusLabel, statusToneFor, toDate, toISODate, toggleVariants, triggerVariants, urlResourcePath, useDensity, useDensityAttributes, useDropdown, useFormatter, useHorizontalOverflowMask, useIcon, useIconLibrary, useIcons, useOptionalSidebar, useScrollEdges, useShape, useShapeContext, useSidebar, useSurface, useUnsavedChangesWarning };