sherick-ui 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +55 -199
  2. package/dist/cjs/components/Breadcrumb.cjs +47 -0
  3. package/dist/cjs/components/Breadcrumb.cjs.map +1 -0
  4. package/dist/cjs/components/Calendar.cjs +298 -0
  5. package/dist/cjs/components/Calendar.cjs.map +1 -0
  6. package/dist/cjs/components/Combobox.cjs +1 -1
  7. package/dist/cjs/components/Combobox.cjs.map +1 -1
  8. package/dist/cjs/components/Command.cjs +81 -0
  9. package/dist/cjs/components/Command.cjs.map +1 -0
  10. package/dist/cjs/components/CommandPalette.cjs +52 -0
  11. package/dist/cjs/components/CommandPalette.cjs.map +1 -0
  12. package/dist/cjs/components/DatePicker.cjs +107 -0
  13. package/dist/cjs/components/DatePicker.cjs.map +1 -0
  14. package/dist/cjs/components/DateRangePicker.cjs +165 -0
  15. package/dist/cjs/components/DateRangePicker.cjs.map +1 -0
  16. package/dist/cjs/components/FileUpload.cjs +203 -0
  17. package/dist/cjs/components/FileUpload.cjs.map +1 -0
  18. package/dist/cjs/components/Media.cjs +27 -0
  19. package/dist/cjs/components/Media.cjs.map +1 -0
  20. package/dist/cjs/components/Pagination.cjs +115 -0
  21. package/dist/cjs/components/Pagination.cjs.map +1 -0
  22. package/dist/cjs/components/Select.cjs +1 -1
  23. package/dist/cjs/components/Select.cjs.map +1 -1
  24. package/dist/cjs/components/Stepper.cjs +40 -0
  25. package/dist/cjs/components/Stepper.cjs.map +1 -0
  26. package/dist/cjs/components/Tabs.cjs +1 -1
  27. package/dist/cjs/components/Tabs.cjs.map +1 -1
  28. package/dist/cjs/components/TreeView.cjs +247 -0
  29. package/dist/cjs/components/TreeView.cjs.map +1 -0
  30. package/dist/cjs/components/date-family.cjs +191 -0
  31. package/dist/cjs/components/date-family.cjs.map +1 -0
  32. package/dist/cjs/components/date-field.cjs +90 -0
  33. package/dist/cjs/components/date-field.cjs.map +1 -0
  34. package/dist/cjs/components/fileUpload.rules.cjs +121 -0
  35. package/dist/cjs/components/fileUpload.rules.cjs.map +1 -0
  36. package/dist/cjs/components/tree.cjs +95 -0
  37. package/dist/cjs/components/tree.cjs.map +1 -0
  38. package/dist/cjs/components/ui.common.cjs +27 -7
  39. package/dist/cjs/components/ui.common.cjs.map +1 -1
  40. package/dist/cjs/components/ui.motion.cjs +3 -3
  41. package/dist/cjs/components/ui.motion.cjs.map +1 -1
  42. package/dist/cjs/dev.cjs +5 -0
  43. package/dist/cjs/dev.cjs.map +1 -1
  44. package/dist/cjs/index.cjs +22 -0
  45. package/dist/cjs/index.cjs.map +1 -1
  46. package/dist/esm/components/Breadcrumb.js +43 -0
  47. package/dist/esm/components/Breadcrumb.js.map +1 -0
  48. package/dist/esm/components/Calendar.js +294 -0
  49. package/dist/esm/components/Calendar.js.map +1 -0
  50. package/dist/esm/components/Combobox.js +2 -2
  51. package/dist/esm/components/Combobox.js.map +1 -1
  52. package/dist/esm/components/Command.js +77 -0
  53. package/dist/esm/components/Command.js.map +1 -0
  54. package/dist/esm/components/CommandPalette.js +48 -0
  55. package/dist/esm/components/CommandPalette.js.map +1 -0
  56. package/dist/esm/components/DatePicker.js +103 -0
  57. package/dist/esm/components/DatePicker.js.map +1 -0
  58. package/dist/esm/components/DateRangePicker.js +161 -0
  59. package/dist/esm/components/DateRangePicker.js.map +1 -0
  60. package/dist/esm/components/FileUpload.js +199 -0
  61. package/dist/esm/components/FileUpload.js.map +1 -0
  62. package/dist/esm/components/Media.js +25 -0
  63. package/dist/esm/components/Media.js.map +1 -0
  64. package/dist/esm/components/Pagination.js +111 -0
  65. package/dist/esm/components/Pagination.js.map +1 -0
  66. package/dist/esm/components/Select.js +2 -2
  67. package/dist/esm/components/Select.js.map +1 -1
  68. package/dist/esm/components/Stepper.js +36 -0
  69. package/dist/esm/components/Stepper.js.map +1 -0
  70. package/dist/esm/components/Tabs.js +2 -2
  71. package/dist/esm/components/Tabs.js.map +1 -1
  72. package/dist/esm/components/TreeView.js +243 -0
  73. package/dist/esm/components/TreeView.js.map +1 -0
  74. package/dist/esm/components/date-family.js +173 -0
  75. package/dist/esm/components/date-family.js.map +1 -0
  76. package/dist/esm/components/date-field.js +84 -0
  77. package/dist/esm/components/date-field.js.map +1 -0
  78. package/dist/esm/components/fileUpload.rules.js +114 -0
  79. package/dist/esm/components/fileUpload.rules.js.map +1 -0
  80. package/dist/esm/components/tree.js +88 -0
  81. package/dist/esm/components/tree.js.map +1 -0
  82. package/dist/esm/components/ui.common.js +23 -8
  83. package/dist/esm/components/ui.common.js.map +1 -1
  84. package/dist/esm/components/ui.motion.js +3 -3
  85. package/dist/esm/components/ui.motion.js.map +1 -1
  86. package/dist/esm/dev.js +1 -1
  87. package/dist/esm/index.js +11 -0
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/styles.css +362 -20
  90. package/dist/theme.css +15 -9
  91. package/dist/types/dev.d.cts +8 -3
  92. package/dist/types/dev.d.ts +8 -3
  93. package/dist/types/index.d.cts +600 -66
  94. package/dist/types/index.d.ts +600 -66
  95. package/package.json +1 -1
@@ -1,18 +1,20 @@
1
1
  import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
2
- import React, { ReactNode, ButtonHTMLAttributes, ImgHTMLAttributes, HTMLAttributes, Ref, ComponentProps, InputHTMLAttributes, ComponentPropsWithoutRef, ForwardRefExoticComponent, RefAttributes, ReactElement, MouseEventHandler, AnchorHTMLAttributes, TextareaHTMLAttributes } from 'react';
2
+ import * as React from 'react';
3
+ import React__default, { ReactNode, ButtonHTMLAttributes, ImgHTMLAttributes, HTMLAttributes, ComponentPropsWithoutRef, AnchorHTMLAttributes, ComponentProps, Ref, ReactElement, InputHTMLAttributes, ForwardRefExoticComponent, RefAttributes, MouseEventHandler, ComponentPropsWithRef, TextareaHTMLAttributes } from 'react';
3
4
  import { Collapsible as Collapsible$1 } from '@base-ui/react/collapsible';
4
5
  import { AlertDialog as AlertDialog$1 } from '@base-ui/react/alert-dialog';
5
6
  import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
6
7
  import { Toggle } from '@base-ui/react/toggle';
7
8
  import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
8
9
  import { Combobox as Combobox$1 } from '@base-ui/react/combobox';
10
+ import { Autocomplete } from '@base-ui/react/autocomplete';
11
+ import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
12
+ import { Popover as Popover$1 } from '@base-ui/react/popover';
9
13
  import { Select as Select$1 } from '@base-ui/react/select';
10
14
  import { Field as Field$1 } from '@base-ui/react/field';
11
15
  import { Input as Input$1 } from '@base-ui/react/input';
12
- import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
13
16
  import { Menu as Menu$1 } from '@base-ui/react/menu';
14
17
  import { NumberField as NumberField$1 } from '@base-ui/react/number-field';
15
- import { Popover as Popover$1 } from '@base-ui/react/popover';
16
18
  import { Progress as Progress$1 } from '@base-ui/react/progress';
17
19
  import { RadioGroup as RadioGroup$1 } from '@base-ui/react/radio-group';
18
20
  import { Slider as Slider$1 } from '@base-ui/react/slider';
@@ -67,14 +69,14 @@ interface AccordionPanelProps {
67
69
  /** Adds to the measured region. The region's height and clipping are the recipe's. */
68
70
  className?: string;
69
71
  }
70
- declare const AccordionItem: ({ children, className, ...props }: AccordionItemProps) => React.JSX.Element;
71
- type AccordionComponent = ((props: AccordionProps) => React.JSX.Element) & {
72
+ declare const AccordionItem: ({ children, className, ...props }: AccordionItemProps) => React__default.JSX.Element;
73
+ type AccordionComponent = ((props: AccordionProps) => React__default.JSX.Element) & {
72
74
  Item: typeof AccordionItem;
73
75
  Trigger: typeof AccordionTrigger;
74
76
  Panel: typeof AccordionPanel;
75
77
  };
76
- declare const AccordionTrigger: ({ children, className }: AccordionTriggerProps) => React.JSX.Element;
77
- declare const AccordionPanel: ({ children, className }: AccordionPanelProps) => React.JSX.Element;
78
+ declare const AccordionTrigger: ({ children, className }: AccordionTriggerProps) => React__default.JSX.Element;
79
+ declare const AccordionPanel: ({ children, className }: AccordionPanelProps) => React__default.JSX.Element;
78
80
  declare const Accordion: AccordionComponent;
79
81
 
80
82
  interface CollapsibleProps {
@@ -100,12 +102,12 @@ interface CollapsiblePanelProps {
100
102
  /** Adds to the measured region. The region's height and clipping are the recipe's. */
101
103
  className?: string;
102
104
  }
103
- type CollapsibleComponent = ((props: CollapsibleProps) => React.JSX.Element) & {
105
+ type CollapsibleComponent = ((props: CollapsibleProps) => React__default.JSX.Element) & {
104
106
  Trigger: typeof CollapsibleTrigger;
105
107
  Panel: typeof CollapsiblePanel;
106
108
  };
107
- declare const CollapsibleTrigger: ({ children, className }: CollapsibleTriggerProps) => React.JSX.Element;
108
- declare const CollapsiblePanel: ({ children, className }: CollapsiblePanelProps) => React.JSX.Element;
109
+ declare const CollapsibleTrigger: ({ children, className }: CollapsibleTriggerProps) => React__default.JSX.Element;
110
+ declare const CollapsiblePanel: ({ children, className }: CollapsiblePanelProps) => React__default.JSX.Element;
109
111
  /**
110
112
  * One region that expands where it sits, without belonging to a group. Base UI owns the expanded
111
113
  * state and the trigger's `aria-expanded`/`aria-controls` plumbing — including making the
@@ -139,7 +141,7 @@ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
139
141
  icon?: ReactNode;
140
142
  loading?: boolean;
141
143
  }
142
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
144
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
143
145
 
144
146
  interface AlertProps {
145
147
  children: ReactNode;
@@ -148,7 +150,7 @@ interface AlertProps {
148
150
  closeable?: boolean;
149
151
  onDismiss?: () => void;
150
152
  }
151
- declare const Alert: ({ children, variant, className, closeable, onDismiss, }: AlertProps) => React.JSX.Element | null;
153
+ declare const Alert: ({ children, variant, className, closeable, onDismiss, }: AlertProps) => React__default.JSX.Element | null;
152
154
 
153
155
  interface AlertDialogProps {
154
156
  /** The question the dialog asks. Base makes it the surface's accessible name. */
@@ -183,7 +185,7 @@ interface AlertDialogProps {
183
185
  * anything. Base owns presence, focus restoration, Escape and the `alertdialog` semantics; the
184
186
  * surface, typography and shape are the same ones `Dialog` uses.
185
187
  */
186
- declare const AlertDialog: React.ForwardRefExoticComponent<AlertDialogProps & React.RefAttributes<HTMLDivElement>>;
188
+ declare const AlertDialog: React__default.ForwardRefExoticComponent<AlertDialogProps & React__default.RefAttributes<HTMLDivElement>>;
187
189
 
188
190
  interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" | "alt" | "width" | "height"> {
189
191
  src: string;
@@ -191,20 +193,115 @@ interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "src" |
191
193
  size?: "sm" | "md" | "lg";
192
194
  shape?: "circle" | "rounded";
193
195
  }
194
- declare const Avatar: ({ src, alt, size, shape: shapeRole, className, ...props }: AvatarProps) => React.JSX.Element;
196
+ declare const Avatar: ({ src, alt, size, shape: shapeRole, className, ...props }: AvatarProps) => React__default.JSX.Element;
195
197
 
196
198
  interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
197
199
  children: ReactNode;
198
200
  variant?: Variant;
199
201
  icon?: ReactNode;
200
202
  }
201
- declare const Badge: ({ children, variant, icon, className, ...props }: BadgeProps) => React.JSX.Element;
203
+ declare const Badge: ({ children, variant, icon, className, ...props }: BadgeProps) => React__default.JSX.Element;
204
+
205
+ interface BreadcrumbItem {
206
+ label: ReactNode;
207
+ href?: string;
208
+ }
209
+ interface BreadcrumbProps extends Omit<ComponentPropsWithoutRef<"nav">, "children"> {
210
+ items: BreadcrumbItem[];
211
+ /**
212
+ * How an intermediate destination is rendered — the escape hatch for a router link. The supplied
213
+ * props carry the destination, the shared classes and the item's own content, and the renderer
214
+ * spreads them onto its element.
215
+ */
216
+ renderLink?: (item: BreadcrumbItem, props: AnchorHTMLAttributes<HTMLAnchorElement>) => ReactNode;
217
+ }
218
+ declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLElement>>;
219
+
220
+ type CalendarDate = string;
221
+ interface DateRange {
222
+ start: CalendarDate | null;
223
+ end: CalendarDate | null;
224
+ }
225
+ interface CalendarLabels {
226
+ /** The control that moves the grid to the previous month. */
227
+ previousMonth: string;
228
+ /** The control that moves the grid to the next month. */
229
+ nextMonth: string;
230
+ /** The control that navigates to today without selecting it. */
231
+ today: string;
232
+ /** Describes a single-date grid to assistive technology. */
233
+ selectDate: string;
234
+ /** Describes a range grid to assistive technology. */
235
+ selectRange: string;
236
+ /** Reported when a date — or a range — cannot be selected or is not acceptable. */
237
+ unavailableRange: string;
238
+ }
239
+
240
+ interface CalendarBaseProps extends Omit<ComponentProps<"div">, "children" | "value" | "defaultValue" | "defaultChecked" | "onChange"> {
241
+ /** The month on screen, normalized to its first day. Undefined means the calendar owns it. */
242
+ month?: CalendarDate;
243
+ defaultMonth?: CalendarDate;
244
+ /** Receives the month the grid moved to, as a date normalized to its first day. */
245
+ onMonthChange?: (month: CalendarDate) => void;
246
+ /** The earliest selectable date, inclusive. */
247
+ min?: CalendarDate;
248
+ /** The latest selectable date, inclusive. */
249
+ max?: CalendarDate;
250
+ /**
251
+ * Whether a date cannot be chosen. Unavailable dates stay visible, focusable and announced as
252
+ * disabled; they are simply never selected, and a range may not span one.
253
+ */
254
+ isDateUnavailable?: (date: CalendarDate) => boolean;
255
+ disabled?: boolean;
256
+ /** Marks the calendar's own value as not acceptable; the selection wears the danger tone. */
257
+ invalid?: boolean;
258
+ /** A BCP 47 tag. It changes how the grid writes and announces dates, never what they mean. */
259
+ locale?: string;
260
+ /** Which weekday a row starts on: 0 is Sunday. */
261
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
262
+ /** The civil day this application calls today; defaults to the current UTC day. */
263
+ today?: CalendarDate;
264
+ labels?: Partial<CalendarLabels>;
265
+ }
266
+ interface CalendarSingleProps extends CalendarBaseProps {
267
+ mode?: "single";
268
+ value?: CalendarDate | null;
269
+ defaultValue?: CalendarDate | null;
270
+ onValueChange?: (value: CalendarDate | null) => void;
271
+ }
272
+ interface CalendarRangeProps extends CalendarBaseProps {
273
+ mode: "range";
274
+ value?: DateRange | null;
275
+ defaultValue?: DateRange | null;
276
+ onValueChange?: (value: DateRange) => void;
277
+ }
278
+ /** A single-date grid, or a range grid whose selection is a pair of endpoints. */
279
+ type CalendarProps = CalendarSingleProps | CalendarRangeProps;
280
+ /**
281
+ * One month of a Gregorian calendar, navigated as a keyboard grid.
282
+ *
283
+ * The grid follows the APG date-picker model: a `grid` of `gridcolumnheader` and `gridcell`
284
+ * elements, exactly one tabbable day, `aria-selected` on the selected cells and `aria-current`
285
+ * on today. Arrow keys move by day and week, Home and End move within the row, PageUp and
286
+ * PageDown move a month, and Shift with them moves a year; every one of those retains a real
287
+ * day under focus, so the grid can be crossed by keyboard alone. The horizontal arrows mirror in
288
+ * a right-to-left page, because the reader's "next day" is the direction the text runs in.
289
+ *
290
+ * Days outside `min` and `max`, or refused by `isDateUnavailable`, stay in the grid — they are
291
+ * discoverable, focusable and announced as disabled — and selection is refused on them. A range
292
+ * may not span one either: an endpoint that would complete such a range is refused and the
293
+ * reason is announced, because a completed range must describe dates the application can accept.
294
+ *
295
+ * Values are `YYYY-MM-DD` civil dates and carry no time; every step the grid takes is calendar
296
+ * arithmetic, so a month crossing, a leap day and a year boundary are all exact.
297
+ */
298
+ declare const Calendar: React__default.ForwardRefExoticComponent<(Omit<CalendarSingleProps, "ref"> | Omit<CalendarRangeProps, "ref">) & React__default.RefAttributes<HTMLDivElement>>;
202
299
 
203
300
  interface CardProps extends HTMLAttributes<HTMLDivElement> {
204
301
  children: ReactNode;
205
302
  variant?: Variant;
206
303
  }
207
- declare const Card: ({ children, variant, className, ...props }: CardProps) => React.JSX.Element;
304
+ declare const Card: ({ children, variant, className, ...props }: CardProps) => React__default.JSX.Element;
208
305
 
209
306
  interface CheckboxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value" | "type"> {
210
307
  checked?: boolean;
@@ -224,7 +321,7 @@ interface CheckboxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "v
224
321
  * A ticked, unticked or mixed choice. The ref points at the visible button; the form input Base
225
322
  * UI keeps beside it is reached through `inputRef`.
226
323
  */
227
- declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
324
+ declare const Checkbox: React__default.ForwardRefExoticComponent<CheckboxProps & React__default.RefAttributes<HTMLButtonElement>>;
228
325
 
229
326
  /** The parts every chip has, whichever of its two forms it takes. */
230
327
  interface ChipAnatomy {
@@ -281,7 +378,7 @@ type ChipProps = (ChipAnatomy & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "v
281
378
  * its normal emphasis while its icon carries the semantic tone, and its only control is the dismiss
282
379
  * one. The ref points at the chip's own element — the button or the tag's span.
283
380
  */
284
- declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLElement>>;
381
+ declare const Chip: React__default.ForwardRefExoticComponent<ChipProps & React__default.RefAttributes<HTMLElement>>;
285
382
 
286
383
  interface ChipGroupProps extends Omit<ToggleGroup$1.Props<string>, "multiple" | "className" | "render"> {
287
384
  children: ReactNode;
@@ -302,7 +399,7 @@ interface ChipGroupProps extends Omit<ToggleGroup$1.Props<string>, "multiple" |
302
399
  * A tag inside the group is not a toggle, so it takes no part in the shared value and no part in
303
400
  * the roving focus; its dismiss control is reachable by Tab like any other control.
304
401
  */
305
- declare const ChipGroup: React.ForwardRefExoticComponent<Omit<ChipGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
402
+ declare const ChipGroup: React__default.ForwardRefExoticComponent<Omit<ChipGroupProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
306
403
 
307
404
  interface ComboboxOption {
308
405
  label: string;
@@ -359,7 +456,223 @@ interface ComboboxProps {
359
456
  * Filtering is Base's and it is local — an application that needs remote results owns the
360
457
  * fetching, the debounce and the loading state around this control.
361
458
  */
362
- declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
459
+ declare const Combobox: React__default.ForwardRefExoticComponent<ComboboxProps & React__default.RefAttributes<HTMLInputElement>>;
460
+
461
+ interface CommandItem {
462
+ /** The action's own identity. Values are unique across the list. */
463
+ value: string;
464
+ /** What a reader scans, and what the default matching searches. */
465
+ label: string;
466
+ /**
467
+ * An action that cannot be performed. It stays in the list and stays reachable by keyboard —
468
+ * a command that cannot run is still one a reader has to be able to find and be told about —
469
+ * but it cannot activate, and it takes no hover or press state.
470
+ */
471
+ disabled?: boolean;
472
+ /** The group this command is listed under. Commands without one keep a group of their own. */
473
+ group?: string;
474
+ /**
475
+ * Metadata beside the label: the gesture that runs this command elsewhere. It is a hint rather
476
+ * than a registered shortcut, and this control owns no keyboard manager.
477
+ */
478
+ shortcut?: ReactNode;
479
+ /** Metadata: the row's leading mark. */
480
+ icon?: ReactNode;
481
+ /** Extra terms the default matching searches beside the label. */
482
+ keywords?: string[];
483
+ }
484
+ type AutocompleteRootProps = Autocomplete.Root.Props<CommandItem>;
485
+ type CommandQueryChangeDetails = Parameters<NonNullable<AutocompleteRootProps["onValueChange"]>>[1];
486
+ interface CommandProps {
487
+ items: CommandItem[];
488
+ /**
489
+ * Names the search field for assistive technology. It is the field's own name — a palette's
490
+ * heading names the surface — so it is not rendered as visible copy.
491
+ */
492
+ label: string;
493
+ /**
494
+ * What choosing a command does. A command performs an action rather than holding a value, so
495
+ * this is the next domain value rather than an event, and activating one leaves the query and
496
+ * the list exactly as they were.
497
+ */
498
+ onAction?: (value: string) => void;
499
+ /** The query, when the application controls it. */
500
+ value?: string;
501
+ /** The query a fresh control starts with. Undefined means uncontrolled. */
502
+ defaultValue?: string;
503
+ /** Base's own query-change callback, event details included. */
504
+ onValueChange?: (value: string, eventDetails: CommandQueryChangeDetails) => void;
505
+ placeholder?: string;
506
+ /** Shown in place of the list when the query matches no command. */
507
+ emptyMessage?: ReactNode;
508
+ disabled?: boolean;
509
+ /** A string comparison locale for the default matching. */
510
+ locale?: string;
511
+ /**
512
+ * Custom matching, or `null` to list every command whatever the query. The item is the caller's
513
+ * own `CommandItem`, so the callback matches on the data rather than on anything rendered.
514
+ */
515
+ filter?: ((item: CommandItem, query: string) => boolean) | null;
516
+ /** Adds to the control's own column. */
517
+ className?: string;
518
+ /** Adds to the search field itself. */
519
+ inputClassName?: string;
520
+ /** The search field's own id, for a caller's native `<label htmlFor>`. */
521
+ id?: string;
522
+ /**
523
+ * The command's own content, in place of its label. It is non-interactive content: the row
524
+ * itself is the control, and a nested action would be a second target inside one.
525
+ */
526
+ renderItem?: (item: CommandItem) => ReactNode;
527
+ }
528
+ /**
529
+ * A command list: a search field and the commands it filters, both inline on the surface they
530
+ * belong to. Base UI owns the filtering, the highlight, the active-descendant wiring, the keyboard
531
+ * navigation, the collection and its groups, the empty region and the scroll behaviour; Sherick UI
532
+ * owns the field, the sheet, the row treatment and the one thing a command adds to a listbox — an
533
+ * activation that performs an action and leaves the query alone.
534
+ *
535
+ * The list is deliberately never a popup. `Select` holds a value and `Combobox` chooses one, so
536
+ * both open a list that dismisses; a command list stays where it is, which is what makes a command
537
+ * repeatable without reopening anything.
538
+ */
539
+ declare const Command: React__default.ForwardRefExoticComponent<CommandProps & React__default.RefAttributes<HTMLInputElement>>;
540
+
541
+ interface CommandPaletteProps extends Omit<CommandProps, "className" | "id"> {
542
+ /** The surface's own heading. It names the dialog. */
543
+ title: string;
544
+ /** Supporting copy beneath the heading, when the surface needs it. */
545
+ description?: ReactNode;
546
+ /**
547
+ * The element the trigger's own props are handed to — usually a Sherick `Button`. The palette
548
+ * opens from whatever this renders, so the control that opens it looks like the control it is.
549
+ */
550
+ trigger?: ReactElement;
551
+ open?: boolean;
552
+ defaultOpen?: boolean;
553
+ /** Base's own open-change callback, event details included. */
554
+ onOpenChange?: Dialog$1.Root.Props["onOpenChange"];
555
+ /** Adds to the dialog surface's own shell. */
556
+ className?: string;
557
+ }
558
+ /**
559
+ * The same command list as a surface that owns the viewport: a palette. It is a `Dialog` — Base's
560
+ * dialog root, the shared `DialogSurface` and dismissal, with a compact command header — with one
561
+ * difference: the surface exists to be typed into, so the search field takes the initial focus and
562
+ * the commands are the answer to what was typed.
563
+ *
564
+ * The palette keeps no open state of its own. Base owns modality, the portal, the focus trap, the
565
+ * first-Escape dismissal and the restoration; the action reports what ran and the primitive's own
566
+ * `actionsRef.close()` dismisses the surface, which is also what resets an uncontrolled query —
567
+ * the control unmounts with the popup it was rendered in.
568
+ *
569
+ * It composes Base's dialog root and the shared surface rather than the `Dialog` component, because
570
+ * the two things a palette adds are both contracts of the surface: the search field is the initial
571
+ * focus, and a run command closes the surface through Base's own actions instead of through an
572
+ * open state kept here.
573
+ */
574
+ declare const CommandPalette: React__default.ForwardRefExoticComponent<CommandPaletteProps & React__default.RefAttributes<HTMLInputElement>>;
575
+
576
+ interface DatePickerProps {
577
+ /** The selected date, or `null` for no selection. Undefined makes the picker uncontrolled. */
578
+ value?: CalendarDate | null;
579
+ defaultValue?: CalendarDate | null;
580
+ /** Receives the next date, or `null` when the field is cleared. */
581
+ onValueChange?: (value: CalendarDate | null) => void;
582
+ /** The field's label. It names the native field, its control and the calendar popup. */
583
+ label: string;
584
+ description?: ReactNode;
585
+ error?: ReactNode;
586
+ required?: boolean;
587
+ disabled?: boolean;
588
+ /** Styles the field's own column. */
589
+ className?: string;
590
+ id?: string;
591
+ /** The form that owns the field, when it renders outside it. */
592
+ form?: string;
593
+ /** Identifies the field when it is submitted. */
594
+ name?: string;
595
+ open?: boolean;
596
+ defaultOpen?: boolean;
597
+ /** Base's own open-change callback, event details included. */
598
+ onOpenChange?: Popover$1.Root.Props["onOpenChange"];
599
+ /** The earliest acceptable date, inclusive. */
600
+ min?: CalendarDate;
601
+ /** The latest acceptable date, inclusive. */
602
+ max?: CalendarDate;
603
+ /** Whether a date cannot be chosen. Unavailable dates stay visible and are never selected. */
604
+ isDateUnavailable?: (date: CalendarDate) => boolean;
605
+ locale?: string;
606
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
607
+ today?: CalendarDate;
608
+ labels?: Partial<CalendarLabels>;
609
+ }
610
+ /**
611
+ * A date field: a native `type=date` input, with a named control beside it that opens the shared
612
+ * `Calendar` in a popover.
613
+ *
614
+ * The native input stays the field's control, so the browser owns its entry, its mobile UI, its
615
+ * form submission and the `required` and `min`/`max` constraints; `isDateUnavailable` is reported
616
+ * through the field's own validation, and a date the calendar would refuse is never accepted as a
617
+ * value — the input keeps what was typed and the field says why. The calendar gives the same
618
+ * value a grid, a keyboard and a month of context.
619
+ */
620
+ declare const DatePicker: React__default.ForwardRefExoticComponent<DatePickerProps & React__default.RefAttributes<HTMLInputElement>>;
621
+
622
+ interface DateRangePickerProps {
623
+ /** The selected range. `{ start: null, end: null }` is an empty selection; a start without an
624
+ * end is a range that is still being chosen. Undefined makes the picker uncontrolled. */
625
+ value?: DateRange | null;
626
+ defaultValue?: DateRange | null;
627
+ /** Receives the next range; clearing reports both endpoints as `null`. */
628
+ onValueChange?: (value: DateRange) => void;
629
+ /** Names the range group. */
630
+ label: string;
631
+ /** The first field's own label. */
632
+ startLabel?: string;
633
+ /** The second field's own label. */
634
+ endLabel?: string;
635
+ description?: ReactNode;
636
+ error?: ReactNode;
637
+ required?: boolean;
638
+ disabled?: boolean;
639
+ /** Styles the range group. */
640
+ className?: string;
641
+ /** The first field's own id. The second derives its id from it. */
642
+ id?: string;
643
+ /** The form that owns the fields, when they render outside it. */
644
+ form?: string;
645
+ /** Identifies the range's start when it is submitted. */
646
+ startName?: string;
647
+ /** Identifies the range's end when it is submitted. */
648
+ endName?: string;
649
+ open?: boolean;
650
+ defaultOpen?: boolean;
651
+ /** Base's own open-change callback, event details included. */
652
+ onOpenChange?: Popover$1.Root.Props["onOpenChange"];
653
+ /** The earliest acceptable date, inclusive. */
654
+ min?: CalendarDate;
655
+ /** The latest acceptable date, inclusive. */
656
+ max?: CalendarDate;
657
+ /** Whether a date cannot be chosen. A range may not span an unavailable date. */
658
+ isDateUnavailable?: (date: CalendarDate) => boolean;
659
+ locale?: string;
660
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
661
+ today?: CalendarDate;
662
+ labels?: Partial<CalendarLabels>;
663
+ }
664
+ /**
665
+ * A range of dates: two independently labelled native date fields in one named group, and one
666
+ * calendar they share.
667
+ *
668
+ * Each endpoint is the browser's own `type=date` control, so entry, mobile UI, submission and the
669
+ * `required` and `min`/`max` constraints belong to the platform. The picker's own rule is that a
670
+ * range which reverses its endpoints or spans a date the application refuses is never accepted:
671
+ * the typed value stays on screen, the field reports why, and the calendar's selection does not
672
+ * move. The calendar itself refuses the same spans, so a pointer and a keyboard cannot reach a
673
+ * range the field would reject.
674
+ */
675
+ declare const DateRangePicker: React__default.ForwardRefExoticComponent<DateRangePickerProps & React__default.RefAttributes<HTMLInputElement>>;
363
676
 
364
677
  declare const edgeTone: {
365
678
  readonly row: "border-sherick-edge/[0.06]";
@@ -379,7 +692,7 @@ interface DividerProps {
379
692
  /** The weight of the line. `rule` is the general section break. */
380
693
  weight?: DividerWeight;
381
694
  }
382
- declare const Divider: ({ className, orientation, weight }: DividerProps) => React.JSX.Element;
695
+ declare const Divider: ({ className, orientation, weight }: DividerProps) => React__default.JSX.Element;
383
696
 
384
697
  interface SelectOption {
385
698
  label: string;
@@ -399,7 +712,7 @@ interface SelectProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "val
399
712
  readOnly?: boolean;
400
713
  required?: boolean;
401
714
  }
402
- declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;
715
+ declare const Select: React__default.ForwardRefExoticComponent<SelectProps & React__default.RefAttributes<HTMLButtonElement>>;
403
716
 
404
717
  interface FieldProps extends Omit<ComponentProps<typeof Field$1.Root>, "children" | "className" | "ref"> {
405
718
  /** The field's label. Base UI associates it with the control and names the group. */
@@ -432,7 +745,69 @@ interface FieldProps extends Omit<ComponentProps<typeof Field$1.Root>, "children
432
745
  * `aria-describedby` / `aria-invalid` wiring; this component owns only the order and the
433
746
  * typography of label, control, description and error.
434
747
  */
435
- declare const Field: React.ForwardRefExoticComponent<FieldProps & React.RefAttributes<HTMLDivElement>>;
748
+ declare const Field: React__default.ForwardRefExoticComponent<FieldProps & React__default.RefAttributes<HTMLDivElement>>;
749
+
750
+ type RejectionCode = "type" | "size" | "count";
751
+ /** One file a selection operation refused, with the reason it was refused. */
752
+ interface FileRejection {
753
+ file: File;
754
+ code: RejectionCode;
755
+ message: string;
756
+ }
757
+
758
+ /**
759
+ * A labelled field that selects files from the native picker or by dropping them on its zone.
760
+ *
761
+ * `files` / `defaultFiles` own the *presented* selection. They are deliberately not the picker's
762
+ * own value: the native input stays uncontrolled and is emptied after every read, so choosing the
763
+ * same file twice still reports twice, and nothing this component does assigns files to it or
764
+ * mirrors them into hidden inputs. There is therefore no `name`/`required` submission contract —
765
+ * a consumer builds `FormData` from `onFilesChange`, which is the one place the selection is
766
+ * reported.
767
+ *
768
+ * The chooser and the drop zone are the same door twice, so they answer to one policy
769
+ * (`fileUpload.rules.ts`): a file refused by the picker's `accept` value cannot enter through a
770
+ * drop, and a mixed batch keeps whatever was valid.
771
+ */
772
+ interface FileUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange" | "defaultValue"> {
773
+ /** The field's label. It names the picker. */
774
+ label: string;
775
+ /** Supporting copy beneath the field. */
776
+ description?: ReactNode;
777
+ /**
778
+ * The message shown while the field is invalid. Its presence is what makes the field invalid,
779
+ * exactly as `error` does on the other fields in the library.
780
+ */
781
+ error?: ReactNode;
782
+ /** The controlled selection. Undefined leaves the selection to the component. */
783
+ files?: File[];
784
+ /** The selection the field starts with when it is not controlled. */
785
+ defaultFiles?: File[];
786
+ /**
787
+ * Reports the selection after every accepted change. The callback receives the next selection as
788
+ * a whole, which is what a consumer builds `FormData` from.
789
+ */
790
+ onFilesChange?: (files: File[]) => void;
791
+ /** Whether the field holds several files or replaces its selection with one. */
792
+ multiple?: boolean;
793
+ /** The native `accept` value: comma-separated MIME types and extensions. A UX restriction only. */
794
+ accept?: string;
795
+ /** Per-file byte limit. A larger file is refused and reported. */
796
+ maxSize?: number;
797
+ /** Total file limit. Only meaningful with `multiple`. */
798
+ maxFiles?: number;
799
+ /** Ignore user interaction. Removes the picker, the drop, the removals and the clear control. */
800
+ disabled?: boolean;
801
+ /** Reports the files a batch refused, with the reason for each. */
802
+ onReject?: (items: FileRejection[]) => void;
803
+ /** The copy on the zone's own affordance. */
804
+ selectLabel?: string;
805
+ /** The accessible name of one removal control. Defaults to `Remove <file name>`. */
806
+ removeLabel?: (file: File) => string;
807
+ /** The accessible name of the control that empties the selection. */
808
+ clearLabel?: string;
809
+ }
810
+ declare const FileUpload: React__default.ForwardRefExoticComponent<FileUploadProps & React__default.RefAttributes<HTMLInputElement>>;
436
811
 
437
812
  type IconButtonAppearance = "tonal" | "ghost" | "acrylic";
438
813
  interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -441,7 +816,7 @@ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
441
816
  icon?: ReactNode;
442
817
  loading?: boolean;
443
818
  }
444
- declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
819
+ declare const IconButton: React__default.ForwardRefExoticComponent<IconButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
445
820
 
446
821
  interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
447
822
  label?: ReactNode;
@@ -452,25 +827,25 @@ interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
452
827
  /** Base's value-change callback, event details included. */
453
828
  onValueChange?: Input$1.Props["onValueChange"];
454
829
  }
455
- declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
830
+ declare const Input: React__default.ForwardRefExoticComponent<InputProps & React__default.RefAttributes<HTMLInputElement>>;
456
831
 
457
832
  type DialogContentProps = HTMLAttributes<HTMLDivElement>;
458
- declare const DialogContent: ({ children, className, ...props }: DialogContentProps) => React.JSX.Element;
833
+ declare const DialogContent: ({ children, className, ...props }: DialogContentProps) => React__default.JSX.Element;
459
834
 
460
835
  type DialogDescriptionProps = ComponentPropsWithoutRef<typeof Dialog$1.Description>;
461
- declare const DialogDescription: ({ className, ...props }: DialogDescriptionProps) => React.JSX.Element;
836
+ declare const DialogDescription: ({ className, ...props }: DialogDescriptionProps) => React__default.JSX.Element;
462
837
 
463
838
  interface DialogFooterProps {
464
839
  children: ReactNode;
465
840
  className?: string;
466
841
  }
467
- declare const DialogFooter: ({ children, className }: DialogFooterProps) => React.JSX.Element;
842
+ declare const DialogFooter: ({ children, className }: DialogFooterProps) => React__default.JSX.Element;
468
843
 
469
844
  interface DialogHeaderProps {
470
845
  children: ReactNode;
471
846
  className?: string;
472
847
  }
473
- declare const DialogHeader: ({ children, className }: DialogHeaderProps) => React.JSX.Element;
848
+ declare const DialogHeader: ({ children, className }: DialogHeaderProps) => React__default.JSX.Element;
474
849
 
475
850
  interface DialogProps {
476
851
  children: ReactNode;
@@ -546,21 +921,68 @@ interface MenuSeparatorProps {
546
921
  * capabilities this package supports, not the primitive's complete prop set. Composing a Base
547
922
  * primitive is how these components are built; it is not what they promise.
548
923
  */
549
- type MenuComponent = ((props: MenuProps) => React.JSX.Element) & {
924
+ type MenuComponent = ((props: MenuProps) => React__default.JSX.Element) & {
550
925
  Trigger: typeof MenuTrigger;
551
926
  Content: typeof MenuContent;
552
927
  Item: typeof MenuItem;
553
928
  Separator: typeof MenuSeparator;
554
929
  };
555
- declare const MenuContent: ({ children, className, side, align, sideOffset, alignOffset, }: MenuContentProps) => React.JSX.Element;
556
- declare const MenuTrigger: ({ ...props }: MenuTriggerProps) => React.JSX.Element;
930
+ declare const MenuContent: ({ children, className, side, align, sideOffset, alignOffset, }: MenuContentProps) => React__default.JSX.Element;
931
+ declare const MenuTrigger: ({ ...props }: MenuTriggerProps) => React__default.JSX.Element;
557
932
  declare const MenuItem: {
558
- ({ variant, className, children, ...props }: MenuItemProps): React.JSX.Element;
933
+ ({ variant, className, children, ...props }: MenuItemProps): React__default.JSX.Element;
559
934
  displayName: string;
560
935
  };
561
- declare const MenuSeparator: ({ className }: MenuSeparatorProps) => React.JSX.Element;
936
+ declare const MenuSeparator: ({ className }: MenuSeparatorProps) => React__default.JSX.Element;
562
937
  declare const Menu: MenuComponent;
563
938
 
939
+ type Presentation = {
940
+ aspect?: "auto" | "square" | "portrait" | "landscape" | "video" | "wide";
941
+ fit?: "cover" | "contain";
942
+ position?: "center" | "top" | "bottom";
943
+ radius?: "default" | "none";
944
+ /** Applied to the frame, not the native media element. */
945
+ className?: string;
946
+ };
947
+ type MediaImageProps = Presentation & Omit<ComponentPropsWithRef<"img">, keyof Presentation | "alt"> & ({
948
+ alt: string;
949
+ decorative?: false;
950
+ } | {
951
+ decorative: true;
952
+ alt?: never;
953
+ });
954
+ type MediaVideoProps = Presentation & Omit<ComponentPropsWithRef<"video">, keyof Presentation | "controls" | "tabIndex" | "aria-hidden"> & ({
955
+ decorative?: false;
956
+ controls?: boolean;
957
+ tabIndex?: number;
958
+ "aria-hidden"?: boolean | "true" | "false";
959
+ } | {
960
+ decorative: true;
961
+ controls?: never;
962
+ tabIndex?: never;
963
+ "aria-hidden"?: never;
964
+ });
965
+ declare const Media: {
966
+ Image: React__default.ForwardRefExoticComponent<(Omit<Presentation & Omit<React__default.DetailedHTMLProps<React__default.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "alt" | keyof Presentation> & {
967
+ alt: string;
968
+ decorative?: false;
969
+ }, "ref"> | Omit<Presentation & Omit<React__default.DetailedHTMLProps<React__default.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "alt" | keyof Presentation> & {
970
+ decorative: true;
971
+ alt?: never;
972
+ }, "ref">) & React__default.RefAttributes<HTMLImageElement>>;
973
+ Video: React__default.ForwardRefExoticComponent<(Omit<Presentation & Omit<React__default.DetailedHTMLProps<React__default.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "tabIndex" | "aria-hidden" | keyof Presentation | "controls"> & {
974
+ decorative?: false;
975
+ controls?: boolean;
976
+ tabIndex?: number;
977
+ "aria-hidden"?: boolean | "true" | "false";
978
+ }, "ref"> | Omit<Presentation & Omit<React__default.DetailedHTMLProps<React__default.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "tabIndex" | "aria-hidden" | keyof Presentation | "controls"> & {
979
+ decorative: true;
980
+ controls?: never;
981
+ tabIndex?: never;
982
+ "aria-hidden"?: never;
983
+ }, "ref">) & React__default.RefAttributes<HTMLVideoElement>>;
984
+ };
985
+
564
986
  interface NavGroupItem {
565
987
  label: string;
566
988
  href: string;
@@ -579,7 +1001,7 @@ interface NavGroupProps {
579
1001
  headingLevel?: NavGroupHeadingLevel;
580
1002
  className?: string;
581
1003
  }
582
- declare const NavGroup: ({ title, items, activeHref, headingLevel, className }: NavGroupProps) => React.JSX.Element;
1004
+ declare const NavGroup: ({ title, items, activeHref, headingLevel, className }: NavGroupProps) => React__default.JSX.Element;
583
1005
 
584
1006
  interface NavItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
585
1007
  children: ReactNode;
@@ -587,7 +1009,7 @@ interface NavItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
587
1009
  icon?: ReactNode;
588
1010
  active?: boolean;
589
1011
  }
590
- declare const NavItem: ({ children, icon, className, href, active, ...props }: NavItemProps) => React.JSX.Element;
1012
+ declare const NavItem: ({ children, icon, className, href, active, ...props }: NavItemProps) => React__default.JSX.Element;
591
1013
 
592
1014
  interface NumberFieldProps extends Omit<ComponentProps<"input">, "value" | "defaultValue" | "onChange" | "min" | "max" | "step" | "type" | "size" | "ref"> {
593
1015
  value?: number | null;
@@ -614,7 +1036,30 @@ interface NumberFieldProps extends Omit<ComponentProps<"input">, "value" | "defa
614
1036
  * A number typed or stepped. Base UI owns parsing, stepping, clamping, spinbutton semantics and
615
1037
  * locale formatting; the ref points at the input, and the hidden form input is `inputRef`.
616
1038
  */
617
- declare const NumberField: React.ForwardRefExoticComponent<NumberFieldProps & React.RefAttributes<HTMLInputElement>>;
1039
+ declare const NumberField: React__default.ForwardRefExoticComponent<NumberFieldProps & React__default.RefAttributes<HTMLInputElement>>;
1040
+
1041
+ interface PaginationProps extends Omit<ComponentPropsWithoutRef<"nav">, "children" | "defaultValue" | "onChange"> {
1042
+ /** Total number of pages. `0` is a valid pagination with nothing to navigate to. */
1043
+ count: number;
1044
+ /** The current page, 1-based. Supplying it makes the pagination controlled. */
1045
+ value?: number;
1046
+ /** The page an uncontrolled pagination starts on. */
1047
+ defaultValue?: number;
1048
+ /** Reports the page an ordinary activation asked for. */
1049
+ onValueChange?: (page: number) => void;
1050
+ /** Pages kept on each side of the current one, capped at 5 to keep rendering bounded. */
1051
+ siblingCount?: number;
1052
+ disabled?: boolean;
1053
+ /** Renders every available page as a real anchor to the href this returns. */
1054
+ getPageHref?: (page: number) => string;
1055
+ /** The accessible name of a page control. Defaults to `Page {page}`. */
1056
+ getPageLabel?: (page: number) => string;
1057
+ /** Defaults to `Previous page`. */
1058
+ previousLabel?: string;
1059
+ /** Defaults to `Next page`. */
1060
+ nextLabel?: string;
1061
+ }
1062
+ declare const Pagination: React.ForwardRefExoticComponent<PaginationProps & React.RefAttributes<HTMLElement>>;
618
1063
 
619
1064
  interface PopoverProps {
620
1065
  children: ReactNode;
@@ -655,12 +1100,12 @@ interface PopoverContentProps {
655
1100
  * capabilities this package supports, not the primitive's complete prop set. Composing a Base
656
1101
  * primitive is how this component is built; it is not what it promises.
657
1102
  */
658
- type PopoverComponent = ((props: PopoverProps) => React.JSX.Element) & {
1103
+ type PopoverComponent = ((props: PopoverProps) => React__default.JSX.Element) & {
659
1104
  Trigger: typeof PopoverTrigger;
660
1105
  Content: typeof PopoverContent;
661
1106
  };
662
- declare const PopoverTrigger: ({ ...props }: PopoverTriggerProps) => React.JSX.Element;
663
- declare const PopoverContent: ({ children, className, side, align, sideOffset, alignOffset, }: PopoverContentProps) => React.JSX.Element;
1107
+ declare const PopoverTrigger: ({ ...props }: PopoverTriggerProps) => React__default.JSX.Element;
1108
+ declare const PopoverContent: ({ children, className, side, align, sideOffset, alignOffset, }: PopoverContentProps) => React__default.JSX.Element;
664
1109
  declare const Popover: PopoverComponent;
665
1110
 
666
1111
  interface ProgressProps extends Omit<ComponentProps<"div">, "children">, Pick<Progress$1.Root.Props, "min" | "max" | "format" | "locale" | "getAriaValueText"> {
@@ -686,7 +1131,7 @@ interface ProgressProps extends Omit<ComponentProps<"div">, "children">, Pick<Pr
686
1131
  * percentage and the accessible text; Sherick UI owns the recessed groove, the accent fill and the
687
1132
  * sweep an unknown extent reports itself with.
688
1133
  */
689
- declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1134
+ declare const Progress: React__default.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
690
1135
 
691
1136
  interface RadioGroupOption {
692
1137
  value: string;
@@ -715,7 +1160,7 @@ interface RadioGroupProps extends Omit<ComponentProps<"div">, "onChange" | "defa
715
1160
  * One choice out of a list. Base UI owns the value, the roving tab index, the arrow keys,
716
1161
  * the name and the form participation; Sherick UI owns the labelled column and the rows.
717
1162
  */
718
- declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1163
+ declare const RadioGroup: React__default.ForwardRefExoticComponent<Omit<RadioGroupProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
719
1164
 
720
1165
  interface SearchProps extends InputHTMLAttributes<HTMLInputElement> {
721
1166
  onSearch: (value: string) => void;
@@ -726,7 +1171,7 @@ interface SearchProps extends InputHTMLAttributes<HTMLInputElement> {
726
1171
  debounceMs?: number;
727
1172
  inputClassName?: string;
728
1173
  }
729
- declare const Search: React.ForwardRefExoticComponent<SearchProps & React.RefAttributes<HTMLInputElement>>;
1174
+ declare const Search: React__default.ForwardRefExoticComponent<SearchProps & React__default.RefAttributes<HTMLInputElement>>;
730
1175
 
731
1176
  interface SegmentedControlOption {
732
1177
  value: string;
@@ -764,10 +1209,10 @@ interface SegmentedControlProps extends Omit<ComponentProps<"div">, "onChange" |
764
1209
  * It names itself the way a tab list does — through `aria-label` / `aria-labelledby` — because it
765
1210
  * is one control holding one value rather than a group of labelled controls.
766
1211
  */
767
- declare const SegmentedControl: React.ForwardRefExoticComponent<Omit<SegmentedControlProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1212
+ declare const SegmentedControl: React__default.ForwardRefExoticComponent<Omit<SegmentedControlProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
768
1213
 
769
1214
  type SkeletonProps = HTMLAttributes<HTMLDivElement>;
770
- declare const Skeleton: ({ className, "aria-hidden": ariaHidden, ...props }: SkeletonProps) => React.JSX.Element;
1215
+ declare const Skeleton: ({ className, "aria-hidden": ariaHidden, ...props }: SkeletonProps) => React__default.JSX.Element;
771
1216
 
772
1217
  interface SliderProps extends Omit<ComponentProps<"div">, "defaultValue" | "onChange" | "children"> {
773
1218
  value?: number;
@@ -797,7 +1242,7 @@ interface SliderProps extends Omit<ComponentProps<"div">, "defaultValue" | "onCh
797
1242
  /**
798
1243
  * A single handle on a groove. The ref points at the handle, which is the part a user grabs.
799
1244
  */
800
- declare const Slider: React.ForwardRefExoticComponent<Omit<SliderProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
1245
+ declare const Slider: React__default.ForwardRefExoticComponent<Omit<SliderProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
801
1246
 
802
1247
  declare const spinnerVariants: (props?: ({
803
1248
  show?: boolean | null | undefined;
@@ -807,9 +1252,34 @@ declare const loaderVariants: (props?: ({
807
1252
  } & class_variance_authority_types.ClassProp) | undefined) => string;
808
1253
  interface SpinnerProps extends VariantProps<typeof spinnerVariants>, VariantProps<typeof loaderVariants> {
809
1254
  className?: string;
810
- children?: React.ReactNode;
1255
+ children?: React__default.ReactNode;
811
1256
  }
812
- declare function Spinner({ size, show, children, className }: SpinnerProps): React.JSX.Element;
1257
+ declare function Spinner({ size, show, children, className }: SpinnerProps): React__default.JSX.Element;
1258
+
1259
+ interface StepperItem {
1260
+ value: string;
1261
+ label: ReactNode;
1262
+ description?: ReactNode;
1263
+ complete?: boolean;
1264
+ disabled?: boolean;
1265
+ }
1266
+ interface StepperProps extends Omit<ComponentProps<"nav">, "children" | "defaultValue" | "onChange"> {
1267
+ items: StepperItem[];
1268
+ /**
1269
+ * The step the workflow has reached. Deliberately controlled, and deliberately nullable: the
1270
+ * consumer owns the workflow, and `null` is a workflow that has not started, not its first step.
1271
+ */
1272
+ value: string | null;
1273
+ /**
1274
+ * Reports the step a native button activated. Its presence is what makes the list interactive:
1275
+ * without it the steps are informative text, and no focusable fake controls are rendered.
1276
+ */
1277
+ onValueChange?: (value: string) => void;
1278
+ /** Horizontal when the container has room; otherwise the same sequence stacks vertically. */
1279
+ orientation?: "horizontal" | "vertical";
1280
+ disabled?: boolean;
1281
+ }
1282
+ declare const Stepper: React__default.ForwardRefExoticComponent<Omit<StepperProps, "ref"> & React__default.RefAttributes<HTMLElement>>;
813
1283
 
814
1284
  interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
815
1285
  checked?: boolean;
@@ -823,7 +1293,7 @@ interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "val
823
1293
  required?: boolean;
824
1294
  inputRef?: Ref<HTMLInputElement>;
825
1295
  }
826
- declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
1296
+ declare const Switch: React__default.ForwardRefExoticComponent<SwitchProps & React__default.RefAttributes<HTMLButtonElement>>;
827
1297
 
828
1298
  type TabsChangeDetails = Parameters<NonNullable<Tabs$1.Root.Props["onValueChange"]>>[1];
829
1299
  interface Tab {
@@ -842,7 +1312,7 @@ interface TabsProps {
842
1312
  onValueChange?: (tabId: string, eventDetails: TabsChangeDetails) => void;
843
1313
  ariaLabel?: string;
844
1314
  }
845
- declare const Tabs: ({ tabs, variant, className, value, defaultValue, onValueChange, ariaLabel, }: TabsProps) => React.JSX.Element | null;
1315
+ declare const Tabs: ({ tabs, variant, className, value, defaultValue, onValueChange, ariaLabel, }: TabsProps) => React__default.JSX.Element | null;
846
1316
 
847
1317
  interface ToggleGroupProps extends Omit<ToggleGroup$1.Props<string>, "className" | "render"> {
848
1318
  /** Styles the group's own track. The segments style themselves. */
@@ -861,7 +1331,7 @@ interface ToggleGroupItemProps extends Omit<Toggle.Props<string>, "value" | "chi
861
1331
  * One option in a `ToggleGroup`. Segments are equal objects in one groove: unselected they show
862
1332
  * the track through, and the selected one takes the selected tone and rises out of it.
863
1333
  */
864
- declare const ToggleGroupItem: React.ForwardRefExoticComponent<Omit<ToggleGroupItemProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
1334
+ declare const ToggleGroupItem: React__default.ForwardRefExoticComponent<Omit<ToggleGroupItemProps, "ref"> & React__default.RefAttributes<HTMLButtonElement>>;
865
1335
  type ToggleGroupComponent = ForwardRefExoticComponent<ToggleGroupProps & RefAttributes<HTMLDivElement>> & {
866
1336
  Item: typeof ToggleGroupItem;
867
1337
  };
@@ -880,7 +1350,7 @@ interface TableProps {
880
1350
  rows: ReactNode[][];
881
1351
  className?: string;
882
1352
  }
883
- declare const Table: ({ headers, rows, className, }: TableProps) => React.JSX.Element;
1353
+ declare const Table: ({ headers, rows, className, }: TableProps) => React__default.JSX.Element;
884
1354
 
885
1355
  interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
886
1356
  label?: ReactNode;
@@ -891,7 +1361,7 @@ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
891
1361
  /** Base's value-change callback, event details included. */
892
1362
  onValueChange?: ComponentProps<typeof Field$1.Control>["onValueChange"];
893
1363
  }
894
- declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
1364
+ declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
895
1365
 
896
1366
  interface TooltipProps {
897
1367
  children: ReactElement;
@@ -899,7 +1369,71 @@ interface TooltipProps {
899
1369
  className?: string;
900
1370
  position?: "top" | "right" | "bottom" | "left";
901
1371
  }
902
- declare const Tooltip: ({ children, content, className, position }: TooltipProps) => React.JSX.Element;
1372
+ declare const Tooltip: ({ children, content, className, position }: TooltipProps) => React__default.JSX.Element;
1373
+
1374
+ /**
1375
+ * The finite static tree a `TreeView` presents.
1376
+ *
1377
+ * A node is data, never markup: the tree renders the roles, the nesting and the indentation
1378
+ * itself, so every node in it is reachable the same way whether it is a leaf or a branch.
1379
+ * `value` identifies a node throughout the tree and is unique; `label` is what the node is
1380
+ * called — its accessible name and what a typeahead search matches.
1381
+ */
1382
+ interface TreeViewItem {
1383
+ value: string;
1384
+ label: string;
1385
+ icon?: ReactNode;
1386
+ disabled?: boolean;
1387
+ children?: TreeViewItem[];
1388
+ }
1389
+
1390
+ interface TreeViewProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "defaultValue" | "onChange"> {
1391
+ /** The nodes to present. Values are unique across the whole tree. */
1392
+ items: TreeViewItem[];
1393
+ /** The tree's own accessible name. */
1394
+ label: string;
1395
+ /** The selected node, when the application owns the selection. */
1396
+ value?: string | null;
1397
+ /** The node selected at first, for a tree that owns its own selection. */
1398
+ defaultValue?: string | null;
1399
+ /** The node the user just chose, or `null` — selection never follows focus. */
1400
+ onValueChange?: (value: string | null) => void;
1401
+ /** The expanded nodes, when the application owns the expansion. */
1402
+ expandedValues?: string[];
1403
+ /** The nodes expanded at first, for a tree that owns its own expansion. */
1404
+ defaultExpandedValues?: string[];
1405
+ /** The nodes that should be expanded next. A controlled tree may decline the request. */
1406
+ onExpandedValuesChange?: (values: string[]) => void;
1407
+ /** Whether the whole tree is unavailable. A disabled node is disabled on its own. */
1408
+ disabled?: boolean;
1409
+ /**
1410
+ * Renders a node's own label content — the part of the row beside its icon. It is labelled
1411
+ * content rather than a control: `label` stays the node's accessible name, and what the tree
1412
+ * renders here is what a reader sees, not a second place to put an action.
1413
+ */
1414
+ renderItem?: (item: TreeViewItem) => ReactNode;
1415
+ }
1416
+ /**
1417
+ * A tree of nodes the user browses, expands and chooses from.
1418
+ *
1419
+ * Base UI ships no tree primitive — its composite internals are not a supported interface — so
1420
+ * this component owns the APG treeview mechanics itself rather than opening a second headless
1421
+ * layer beside Base: one roving tab stop, a visible node order the keyboard walks, a branch-only
1422
+ * `aria-expanded`, and a selection that is deliberately independent of focus.
1423
+ *
1424
+ * Three things follow from that ownership, and they are the parts the API is built around:
1425
+ *
1426
+ * * **Focus and selection are two facts.** Arrow keys move the keyboard and never choose; Enter
1427
+ * and Space choose and never move. A node a typeahead lands on is not selected by arriving.
1428
+ * * **A disabled node is local.** It stays discoverable and focusable so it can be announced as
1429
+ * unavailable, its already-visible children are untouched, and it simply cannot be chosen or
1430
+ * opened. A disabled *tree* dims once, at the root.
1431
+ * * **The tree repairs its own focus, and only its own.** If a node leaves the tree — removed by
1432
+ * the application, or hidden by a branch that collapsed — the keyboard moves to the nearest
1433
+ * ancestor still shown, but only when the tree already had it. Focus that is somewhere else on
1434
+ * the page is never taken.
1435
+ */
1436
+ declare const TreeView: React__default.ForwardRefExoticComponent<TreeViewProps & React__default.RefAttributes<HTMLDivElement>>;
903
1437
 
904
1438
  /**
905
1439
  * Where a viewport-owning surface is attached. `center` is a dialog: it has no edge, so it rises
@@ -951,7 +1485,7 @@ interface DrawerFooterProps {
951
1485
  children: ReactNode;
952
1486
  className?: string;
953
1487
  }
954
- type DrawerComponent = ((props: DrawerProps) => React.JSX.Element) & {
1488
+ type DrawerComponent = ((props: DrawerProps) => React__default.JSX.Element) & {
955
1489
  Trigger: typeof DrawerTrigger;
956
1490
  Content: typeof DrawerContent;
957
1491
  Header: typeof DrawerHeader;
@@ -959,7 +1493,7 @@ type DrawerComponent = ((props: DrawerProps) => React.JSX.Element) & {
959
1493
  Footer: typeof DrawerFooter;
960
1494
  Close: typeof DrawerClose;
961
1495
  };
962
- declare const DrawerTrigger: ({ ...props }: DrawerTriggerProps) => React.JSX.Element;
1496
+ declare const DrawerTrigger: ({ ...props }: DrawerTriggerProps) => React__default.JSX.Element;
963
1497
  /**
964
1498
  * The sheet itself: the plane behind it, the viewport, the edge-attached surface, and the
965
1499
  * dismissal control every sheet carries. Base UI — through the same dialog root a `Dialog` uses —
@@ -970,11 +1504,11 @@ declare const DrawerTrigger: ({ ...props }: DrawerTriggerProps) => React.JSX.Ele
970
1504
  * traps focus, restores it, locks the page and dismisses exactly as a dialog does. Use a `Dialog`
971
1505
  * when the surface has no edge.
972
1506
  */
973
- declare const DrawerContent: ({ children, className }: DrawerContentProps) => React.JSX.Element;
974
- declare const DrawerHeader: ({ children, className }: DrawerHeaderProps) => React.JSX.Element;
975
- declare const DrawerDescription: ({ children, className }: DrawerDescriptionProps) => React.JSX.Element;
976
- declare const DrawerFooter: ({ children, className }: DrawerFooterProps) => React.JSX.Element;
977
- declare const DrawerClose: (props: ComponentProps<typeof Dialog$1.Close>) => React.JSX.Element;
1507
+ declare const DrawerContent: ({ children, className }: DrawerContentProps) => React__default.JSX.Element;
1508
+ declare const DrawerHeader: ({ children, className }: DrawerHeaderProps) => React__default.JSX.Element;
1509
+ declare const DrawerDescription: ({ children, className }: DrawerDescriptionProps) => React__default.JSX.Element;
1510
+ declare const DrawerFooter: ({ children, className }: DrawerFooterProps) => React__default.JSX.Element;
1511
+ declare const DrawerClose: (props: ComponentProps<typeof Dialog$1.Close>) => React__default.JSX.Element;
978
1512
  /**
979
1513
  * A surface attached to one edge of the viewport: a bottom sheet, a side panel, a top drawer. It
980
1514
  * is a `Dialog` with an edge rather than a second kind of modal — the same root, the same scrim,
@@ -1079,14 +1613,14 @@ interface ToastViewportProps {
1079
1613
  * region and its priority, swipe dismissal and the stack's own state; Sherick UI owns the surface
1080
1614
  * and how the stack moves.
1081
1615
  */
1082
- declare const ToastProvider: ({ children, manager, ...props }: ToastProviderProps) => React.JSX.Element;
1616
+ declare const ToastProvider: ({ children, manager, ...props }: ToastProviderProps) => React__default.JSX.Element;
1083
1617
  /**
1084
1618
  * The stack, and the only place a toast is rendered. Put one inside `ToastProvider` at the root of
1085
1619
  * the application: `useToast().add(...)` raises a toast, and this renders every toast the manager
1086
1620
  * is holding. Base provides F6 entry and focus restoration; the live region remains available
1087
1621
  * while a modal is open. Keep the keyboard shortcut discoverable without reimplementing it.
1088
1622
  */
1089
- declare const ToastViewport: ({ position, className }: ToastViewportProps) => React.JSX.Element;
1623
+ declare const ToastViewport: ({ position, className }: ToastViewportProps) => React__default.JSX.Element;
1090
1624
  /**
1091
1625
  * Raises, updates and closes toasts from inside the React tree. The handle is stable for as long as
1092
1626
  * the provider is, so it can be listed as a dependency without churning an effect.
@@ -1105,7 +1639,7 @@ interface DirectionProviderProps {
1105
1639
  children: ReactNode;
1106
1640
  }
1107
1641
  /** Declares writing direction to the interaction and positioning primitives, including portals. */
1108
- declare const DirectionProvider: ({ direction, children }: DirectionProviderProps) => React.JSX.Element;
1642
+ declare const DirectionProvider: ({ direction, children }: DirectionProviderProps) => React__default.JSX.Element;
1109
1643
 
1110
- export { Accordion, Alert, AlertDialog, Avatar, Badge, Button, Card, Checkbox, Chip, ChipGroup, Collapsible, Combobox, Dialog, DirectionProvider, Divider, Drawer, Field, IconButton, Input, Menu, NavGroup, NavItem, NumberField, Popover, Progress, RadioGroup, Search, SegmentedControl, Select, Skeleton, Slider, Spinner, Switch, Table, Tabs, Textarea, ToastProvider, ToastViewport, ToggleGroup, Tooltip, createToastManager, useToast };
1111
- export type { AccordionHeadingLevel, AccordionItemProps, AccordionPanelProps, AccordionProps, AccordionTriggerProps, AlertDialogProps, AlertProps, AvatarProps, BadgeProps, ButtonAppearance, ButtonProps, ButtonSize, CardProps, CheckboxProps, ChipGroupProps, ChipProps, CollapsiblePanelProps, CollapsibleProps, CollapsibleTriggerProps, ComboboxOption, ComboboxProps, DialogContentProps, DialogDescriptionProps, DialogFooterProps, DialogHeaderProps, DialogProps, DirectionProviderProps, DividerProps, DividerWeight, DrawerContentProps, DrawerDescriptionProps, DrawerFooterProps, DrawerHeaderProps, DrawerProps, DrawerSide, DrawerTriggerProps, FieldProps, IconButtonAppearance, IconButtonProps, InputProps, MenuContentProps, MenuItemProps, MenuProps, MenuSeparatorProps, MenuTriggerProps, NavGroupHeadingLevel, NavGroupItem, NavGroupProps, NavItemProps, NumberFieldProps, OverlayAlign, OverlaySide, PopoverContentProps, PopoverProps, PopoverTriggerProps, ProgressProps, RadioGroupOption, RadioGroupProps, SearchProps, SegmentedControlOption, SegmentedControlProps, SelectOption, SelectProps, SkeletonProps, SliderProps, SpinnerProps, SwitchProps, Tab, TableProps, TabsProps, TextareaProps, ToastActionOptions, ToastManager, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProviderProps, ToastType, ToastUpdateOptions, ToastViewportProps, ToggleGroupItemProps, ToggleGroupProps, TooltipProps, Variant };
1644
+ export { Accordion, Alert, AlertDialog, Avatar, Badge, Breadcrumb, Button, Calendar, Card, Checkbox, Chip, ChipGroup, Collapsible, Combobox, Command, CommandPalette, DatePicker, DateRangePicker, Dialog, DirectionProvider, Divider, Drawer, Field, FileUpload, IconButton, Input, Media, Menu, NavGroup, NavItem, NumberField, Pagination, Popover, Progress, RadioGroup, Search, SegmentedControl, Select, Skeleton, Slider, Spinner, Stepper, Switch, Table, Tabs, Textarea, ToastProvider, ToastViewport, ToggleGroup, Tooltip, TreeView, createToastManager, useToast };
1645
+ export type { AccordionHeadingLevel, AccordionItemProps, AccordionPanelProps, AccordionProps, AccordionTriggerProps, AlertDialogProps, AlertProps, AvatarProps, BadgeProps, BreadcrumbItem, BreadcrumbProps, ButtonAppearance, ButtonProps, ButtonSize, CalendarDate, CalendarLabels, CalendarProps, CardProps, CheckboxProps, ChipGroupProps, ChipProps, CollapsiblePanelProps, CollapsibleProps, CollapsibleTriggerProps, ComboboxOption, ComboboxProps, CommandItem, CommandPaletteProps, CommandProps, DatePickerProps, DateRange, DateRangePickerProps, DialogContentProps, DialogDescriptionProps, DialogFooterProps, DialogHeaderProps, DialogProps, DirectionProviderProps, DividerProps, DividerWeight, DrawerContentProps, DrawerDescriptionProps, DrawerFooterProps, DrawerHeaderProps, DrawerProps, DrawerSide, DrawerTriggerProps, FieldProps, FileRejection, FileUploadProps, IconButtonAppearance, IconButtonProps, InputProps, MediaImageProps, MediaVideoProps, MenuContentProps, MenuItemProps, MenuProps, MenuSeparatorProps, MenuTriggerProps, NavGroupHeadingLevel, NavGroupItem, NavGroupProps, NavItemProps, NumberFieldProps, OverlayAlign, OverlaySide, PaginationProps, PopoverContentProps, PopoverProps, PopoverTriggerProps, ProgressProps, RadioGroupOption, RadioGroupProps, SearchProps, SegmentedControlOption, SegmentedControlProps, SelectOption, SelectProps, SkeletonProps, SliderProps, SpinnerProps, StepperItem, StepperProps, SwitchProps, Tab, TableProps, TabsProps, TextareaProps, ToastActionOptions, ToastManager, ToastOptions, ToastPosition, ToastPromiseOptions, ToastProviderProps, ToastType, ToastUpdateOptions, ToastViewportProps, ToggleGroupItemProps, ToggleGroupProps, TooltipProps, TreeViewItem, TreeViewProps, Variant };