@flood-md/react 0.2.10 → 0.2.12

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 (57) hide show
  1. package/README.md +275 -5
  2. package/dist/app-shell.d.ts +3 -0
  3. package/dist/app-shell.js +66 -0
  4. package/dist/bulk-action-bar.d.ts +3 -0
  5. package/dist/bulk-action-bar.js +17 -0
  6. package/dist/collection-toolbar.d.ts +3 -0
  7. package/dist/collection-toolbar.js +26 -0
  8. package/dist/collection-view-switcher.d.ts +3 -0
  9. package/dist/collection-view-switcher.js +19 -0
  10. package/dist/combobox.d.ts +6 -1
  11. package/dist/combobox.js +77 -29
  12. package/dist/command-list.d.ts +5 -1
  13. package/dist/command-list.js +2 -2
  14. package/dist/data-display.js +28 -4
  15. package/dist/data-table-columns.d.ts +25 -0
  16. package/dist/data-table-columns.js +271 -0
  17. package/dist/data-table-expansion.d.ts +21 -0
  18. package/dist/data-table-expansion.js +79 -0
  19. package/dist/data-table.js +140 -12
  20. package/dist/date-picker.js +2 -2
  21. package/dist/date-range-picker.js +2 -2
  22. package/dist/date-time-picker.js +2 -2
  23. package/dist/date-time-range-picker.js +2 -2
  24. package/dist/disclosure.d.ts +2 -1
  25. package/dist/disclosure.js +4 -4
  26. package/dist/editable.js +57 -18
  27. package/dist/filter-condition.d.ts +3 -0
  28. package/dist/filter-condition.js +21 -0
  29. package/dist/filter-group.d.ts +2 -0
  30. package/dist/filter-group.js +62 -0
  31. package/dist/foundations.css +1131 -93
  32. package/dist/index.d.ts +469 -5
  33. package/dist/index.js +72 -9
  34. package/dist/menu.js +5 -4
  35. package/dist/menubar.d.ts +2 -0
  36. package/dist/menubar.js +85 -0
  37. package/dist/navigation-group.d.ts +3 -0
  38. package/dist/navigation-group.js +13 -0
  39. package/dist/navigation-item.d.ts +3 -0
  40. package/dist/navigation-item.js +68 -0
  41. package/dist/navigation-layout.d.ts +2 -1
  42. package/dist/navigation-layout.js +12 -4
  43. package/dist/navigation-tree.js +51 -7
  44. package/dist/navigation.js +2 -2
  45. package/dist/overflow-actions.d.ts +2 -0
  46. package/dist/overflow-actions.js +75 -0
  47. package/dist/overlay-runtime.d.ts +6 -2
  48. package/dist/overlay-runtime.js +41 -5
  49. package/dist/overlays.d.ts +1 -0
  50. package/dist/overlays.js +34 -18
  51. package/dist/select.js +4 -1
  52. package/dist/sidebar.d.ts +2 -0
  53. package/dist/sidebar.js +58 -0
  54. package/dist/sparkline.d.ts +2 -0
  55. package/dist/sparkline.js +65 -0
  56. package/dist/toolbar.js +2 -2
  57. package/package.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1,4 +1,164 @@
1
1
  import { type ButtonHTMLAttributes, type InputHTMLAttributes, type TextareaHTMLAttributes, type SelectHTMLAttributes, type AnchorHTMLAttributes, type ReactNode, type HTMLAttributes, type CSSProperties, type LabelHTMLAttributes, type FieldsetHTMLAttributes, type RefCallback, type RefObject, type Ref, type MouseEvent as ReactMouseEvent, type TableHTMLAttributes, type ImgHTMLAttributes, type BlockquoteHTMLAttributes } from "react";
2
+ export interface OverflowAction extends MenuActionItem {
3
+ /** Higher priority actions remain visible longer; source order stays unchanged. */
4
+ priority?: number;
5
+ }
6
+ export interface OverflowActionsProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onAction"> {
7
+ label: string;
8
+ items: readonly OverflowAction[];
9
+ onAction?: (id: string) => void;
10
+ moreLabel?: string;
11
+ size?: "sm" | "md" | "lg" | "xl";
12
+ variant?: ButtonProps["variant"];
13
+ shape?: ToolbarProps["shape"];
14
+ containerVariant?: ToolbarProps["variant"];
15
+ disabled?: boolean;
16
+ /** Optional fixed content measured before command space is allocated. */
17
+ leading?: ReactNode;
18
+ trailing?: ReactNode;
19
+ /** Upper bound for visible commands; additional commands remain in More. */
20
+ maxVisibleActions?: number;
21
+ }
22
+ /** Priority-based overflow composed from Toolbar, Button and Menu. @since 0.2.11 */
23
+ export declare const OverflowActions: import("react").ForwardRefExoticComponent<OverflowActionsProps & import("react").RefAttributes<HTMLDivElement>>;
24
+ export interface FilterConditionValue {
25
+ property: string;
26
+ operator: "is" | "is-not";
27
+ values: string[];
28
+ }
29
+ export interface FilterConditionProperty {
30
+ id: string;
31
+ label: string;
32
+ options: readonly ComboboxOption[];
33
+ disabled?: boolean;
34
+ }
35
+ export interface FilterConditionProps extends Omit<FieldsetProps, "children" | "legend" | "onChange"> {
36
+ label: string;
37
+ properties: readonly FilterConditionProperty[];
38
+ value: FilterConditionValue;
39
+ onValueChange: (value: FilterConditionValue) => void;
40
+ onRemove?: () => void;
41
+ controlSize?: "sm" | "md" | "lg" | "xl";
42
+ labels?: Partial<Record<"property" | "operator" | "values" | "include" | "exclude" | "placeholder" | "remove", string>>;
43
+ }
44
+ /** One finite-choice filter predicate; the host owns application and query semantics. @since 0.2.11 */
45
+ export declare const FilterCondition: import("react").ForwardRefExoticComponent<FilterConditionProps & import("react").RefAttributes<HTMLFieldSetElement>>;
46
+ export interface FilterGroupCondition extends FilterConditionValue {
47
+ id: string;
48
+ }
49
+ export interface FilterGroupValue {
50
+ match: "all" | "any";
51
+ conditions: FilterGroupCondition[];
52
+ }
53
+ export interface FilterGroupProps extends Omit<FieldsetProps, "children" | "legend" | "onChange"> {
54
+ label: string;
55
+ properties: readonly FilterConditionProperty[];
56
+ value: FilterGroupValue;
57
+ onValueChange: (value: FilterGroupValue) => void;
58
+ controlSize?: "sm" | "md" | "lg" | "xl";
59
+ allowDuplicateProperties?: boolean;
60
+ maxConditions?: number;
61
+ labels?: Partial<Record<"match" | "all" | "any" | "add" | "condition", string>>;
62
+ conditionLabels?: FilterConditionProps["labels"];
63
+ }
64
+ /** A flat controlled group of finite-choice predicates, without query execution or Apply/Cancel ownership. @since 0.2.11 */
65
+ export declare const FilterGroup: import("react").ForwardRefExoticComponent<FilterGroupProps & import("react").RefAttributes<HTMLFieldSetElement>>;
66
+ export interface CollectionFilterSummary {
67
+ id: string;
68
+ label: string;
69
+ removeLabel?: string;
70
+ disabled?: boolean;
71
+ }
72
+ export interface CollectionToolbarProps extends Omit<FieldsetProps, "children" | "legend" | "onChange"> {
73
+ label: string;
74
+ searchValue: string;
75
+ onSearchValueChange: (value: string) => void;
76
+ searchLabel?: string;
77
+ searchPlaceholder?: string;
78
+ clearSearchLabel?: string;
79
+ appliedFilters?: readonly CollectionFilterSummary[];
80
+ onRemoveFilter?: (id: string) => void;
81
+ appliedFiltersLabel?: string;
82
+ summaryPrefix?: ReactNode;
83
+ /** At most two task-important quick filters; move additional properties into filterContent. */
84
+ quickFilters?: ReactNode;
85
+ /** Additional commands beside Filters in the same tool row. */
86
+ actions?: ReactNode;
87
+ filterContent?: ReactNode;
88
+ filtersLabel?: string;
89
+ filterTitle?: string;
90
+ filtersOpen?: boolean;
91
+ onFiltersOpenChange?: (open: boolean) => void;
92
+ filterPanelRef?: Ref<HTMLDivElement>;
93
+ filterPanelClassName?: string;
94
+ onClear?: () => void;
95
+ canClear?: boolean;
96
+ clearLabel?: string;
97
+ controlSize?: "sm" | "md" | "lg" | "xl";
98
+ }
99
+ /** Search, accepted summaries and staged filter disclosure; saved views and query semantics stay host-owned. @since 0.2.11 */
100
+ export declare const CollectionToolbar: import("react").ForwardRefExoticComponent<CollectionToolbarProps & import("react").RefAttributes<HTMLFieldSetElement>>;
101
+ export interface CollectionViewOption {
102
+ id: string;
103
+ name: string;
104
+ disabled?: boolean;
105
+ }
106
+ export interface CollectionViewSwitcherProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange"> {
107
+ label: string;
108
+ views: readonly CollectionViewOption[];
109
+ value: string;
110
+ onValueChange: (id: string) => void;
111
+ actions?: readonly OverflowAction[];
112
+ onAction?: (id: string) => void;
113
+ actionsLabel?: string;
114
+ moreLabel?: string;
115
+ controlSize?: "sm" | "md" | "lg" | "xl";
116
+ disabled?: boolean;
117
+ /** Focus target for host-owned naming/deletion dialogs. */
118
+ selectRef?: Ref<HTMLSelectElement>;
119
+ }
120
+ /** Controlled saved/preset view choice with optional adaptive commands. @since 0.2.11 */
121
+ export declare const CollectionViewSwitcher: import("react").ForwardRefExoticComponent<CollectionViewSwitcherProps & import("react").RefAttributes<HTMLDivElement>>;
122
+ export interface BulkActionBarProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onAction"> {
123
+ label: string;
124
+ selectionCount: number;
125
+ /** Complete localized count, for example "2 selected". */
126
+ selectionLabel?: string;
127
+ /** Visible selection summary. Hidden counters do not reserve a slot. */
128
+ counter?: "label" | "number" | "none";
129
+ /** Reserved counter width; stable while selectionCount changes. */
130
+ counterWidth?: CSSProperties["inlineSize"];
131
+ items: readonly OverflowAction[];
132
+ onAction?: (id: string) => void;
133
+ onClear: () => void;
134
+ clearLabel?: string;
135
+ moreLabel?: string;
136
+ size?: "sm" | "md" | "lg" | "xl";
137
+ /** One to three visible commands; the default is two. */
138
+ maxVisibleActions?: 1 | 2 | 3;
139
+ disabled?: boolean;
140
+ pending?: boolean;
141
+ }
142
+ /** A bounded single-row selection command capsule. The host owns positioning and updates. @since 0.2.11 */
143
+ export declare const BulkActionBar: import("react").ForwardRefExoticComponent<BulkActionBarProps & import("react").RefAttributes<HTMLDivElement>>;
144
+ export interface MenubarMenu {
145
+ id: string;
146
+ label: string;
147
+ disabled?: boolean;
148
+ items: readonly MenuItem[];
149
+ }
150
+ export interface MenubarProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onAction"> {
151
+ label: string;
152
+ menus: readonly MenubarMenu[];
153
+ openValue?: string | null;
154
+ defaultOpenValue?: string | null;
155
+ onOpenValueChange?: (id: string | null) => void;
156
+ onAction?: (menuId: string, actionId: string) => void;
157
+ controlSize?: "sm" | "md" | "lg" | "xl";
158
+ disabled?: boolean;
159
+ }
160
+ /** Desktop application commands; destinations use native links instead. @since 0.2.11 */
161
+ export declare const Menubar: import("react").ForwardRefExoticComponent<MenubarProps & import("react").RefAttributes<HTMLDivElement>>;
2
162
  export interface TimePickerProps extends Omit<TimeFieldProps, "end"> {
3
163
  interval?: number;
4
164
  open?: boolean;
@@ -29,6 +189,10 @@ export interface DateTimeRangePickerProps extends Omit<HTMLAttributes<HTMLDivEle
29
189
  startTimeLabel?: string;
30
190
  endDateLabel?: string;
31
191
  endTimeLabel?: string;
192
+ startDatePickerLabels?: DateTimePickerProps["datePickerLabels"];
193
+ endDatePickerLabels?: DateTimePickerProps["datePickerLabels"];
194
+ startTimePickerLabels?: DateTimePickerProps["timePickerLabels"];
195
+ endTimePickerLabels?: DateTimePickerProps["timePickerLabels"];
32
196
  form?: string;
33
197
  required?: boolean;
34
198
  disabled?: boolean;
@@ -115,9 +279,21 @@ export declare const ImagePreview: import("react").ForwardRefExoticComponent<Ima
115
279
  export interface DataTableColumn {
116
280
  id: string;
117
281
  label: string;
282
+ /** Short unit shown alongside the label, such as USD or kg. */
283
+ unit?: string;
118
284
  sortable?: boolean;
285
+ numeric?: boolean;
119
286
  align?: "start" | "end";
120
287
  width?: CSSProperties["width"];
288
+ /** Keep this column visible when the host or Columns menu hides other columns. */
289
+ hideable?: boolean;
290
+ /** Opt into pointer and keyboard width adjustments for this column. */
291
+ resizable?: boolean;
292
+ /** Interactive width bounds in CSS pixels. */
293
+ minWidth?: number;
294
+ maxWidth?: number;
295
+ /** Keep the column at a logical edge when the table scrolls horizontally. */
296
+ pinned?: "start" | "end";
121
297
  }
122
298
  export interface DataTableRow {
123
299
  id: string;
@@ -125,6 +301,17 @@ export interface DataTableRow {
125
301
  cells: Readonly<Record<string, ReactNode>>;
126
302
  sortValues?: Readonly<Record<string, string | number | null>>;
127
303
  selectionDisabled?: boolean;
304
+ /** Related detail rendered in a separate full-width row on disclosure. */
305
+ expandedContent?: ReactNode;
306
+ /** One named record-opening action. Other controls in the row remain independent. */
307
+ primaryAction?: {
308
+ column: string;
309
+ title: string;
310
+ description?: ReactNode;
311
+ buttonProps: Omit<ButtonProps, "children" | "type" | "variant" | "size"> & {
312
+ ref?: Ref<HTMLButtonElement>;
313
+ };
314
+ };
128
315
  }
129
316
  export interface DataTableSort {
130
317
  column: string;
@@ -140,19 +327,47 @@ export interface DataTableLabels {
140
327
  results?: (from: number, to: number, total: number) => string;
141
328
  selection?: (selected: number, total: number) => string;
142
329
  sort?: (label: string) => string;
330
+ columns?: string;
331
+ resetColumns?: string;
332
+ sortedColumn?: (label: string) => string;
333
+ resizeColumn?: (label: string) => string;
334
+ expandRow?: (label: string) => string;
335
+ collapseRow?: (label: string) => string;
336
+ rowDetails?: string;
143
337
  pagination?: string;
144
338
  previousPage?: string;
145
339
  nextPage?: string;
146
340
  page?: (page: number) => string;
147
341
  }
148
342
  export interface DataTableProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
343
+ /** Host-owned heading, search and filters aligned with the outer table cells. */
344
+ toolbar?: ReactNode | ((controls: {
345
+ columns: ReactNode;
346
+ }) => ReactNode);
347
+ inset?: "standard" | "roomy";
348
+ /** Ready with no rows only. Compose EmptyState/actions here; loading and error keep their owners. */
349
+ emptyContent?: ReactNode;
149
350
  caption: string;
150
351
  hideCaption?: boolean;
151
352
  columns: readonly DataTableColumn[];
353
+ showColumnVisibility?: boolean;
354
+ hiddenColumnIds?: readonly string[];
355
+ /** Initial hidden columns and the layout restored by Reset columns. */
356
+ defaultHiddenColumnIds?: readonly string[];
357
+ onHiddenColumnIdsChange?: (ids: string[]) => void;
358
+ columnWidths?: Readonly<Record<string, number>>;
359
+ defaultColumnWidths?: Readonly<Record<string, number>>;
360
+ onColumnWidthsChange?: (widths: Record<string, number>) => void;
152
361
  rows: readonly DataTableRow[];
362
+ expandedIds?: readonly string[];
363
+ defaultExpandedIds?: readonly string[];
364
+ onExpandedChange?: (ids: string[]) => void;
153
365
  density?: "compact" | "comfortable";
154
366
  striped?: boolean;
155
367
  minWidth?: CSSProperties["minWidth"];
368
+ /** Maximum height of the scroll viewport, including the header. */
369
+ maxViewportHeight?: CSSProperties["maxBlockSize"];
370
+ stickyHeader?: boolean;
156
371
  sort?: DataTableSort | null;
157
372
  defaultSort?: DataTableSort | null;
158
373
  onSortChange?: (sort: DataTableSort | null) => void;
@@ -165,12 +380,35 @@ export interface DataTableProps extends Omit<HTMLAttributes<HTMLDivElement>, "ch
165
380
  defaultPage?: number;
166
381
  pageSize?: number;
167
382
  onPageChange?: (page: number) => void;
383
+ /** Hide the result range while preserving selection and pagination controls. */
384
+ showResults?: boolean;
385
+ /** Hide the visible selection count while retaining its accessible status. */
386
+ showSelection?: boolean;
387
+ /** Server mode renders rows as the supplied page, without local sorting/slicing. */
388
+ paginationMode?: "client" | "server";
389
+ totalRows?: number;
390
+ /** Server dataset selection is controlled; the host validates IDs outside this page. */
391
+ selectionScope?: "page" | "dataset";
168
392
  state?: "ready" | "loading" | "error";
169
393
  onRetry?: () => void;
170
394
  labels?: DataTableLabels;
171
395
  }
172
396
  /** A client-side table composed from native table, checkbox and pagination. @since 0.2.8 */
173
397
  export declare const DataTable: import("react").ForwardRefExoticComponent<DataTableProps & import("react").RefAttributes<HTMLDivElement>>;
398
+ export interface SparklineProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "role" | "aria-label" | "aria-labelledby"> {
399
+ /** Equally spaced observations in order. Missing or nonfinite values break the line. */
400
+ values: readonly (number | null)[];
401
+ /** Localized text conveying the trend or the absence of data. */
402
+ label: string;
403
+ showLabel?: boolean;
404
+ /** Shared lower and upper bounds for comparisons. Values outside the bounds are clipped. */
405
+ domain?: readonly [number, number];
406
+ size?: "sm" | "md";
407
+ tone?: "neutral" | "accent" | "success" | "warning" | "error";
408
+ variant?: "line" | "area";
409
+ }
410
+ /** @since 0.2.11 */
411
+ export declare const Sparkline: import("react").ForwardRefExoticComponent<SparklineProps & import("react").RefAttributes<HTMLDivElement>>;
174
412
  export interface DataListProps extends Omit<HTMLAttributes<HTMLUListElement>, "role"> {
175
413
  density?: "compact" | "comfortable";
176
414
  dividers?: boolean;
@@ -289,6 +527,8 @@ export interface DateTimePickerProps extends Omit<HTMLAttributes<HTMLDivElement>
289
527
  onValueChange?: (value: DateTimeValue) => void;
290
528
  dateLabel?: string;
291
529
  timeLabel?: string;
530
+ datePickerLabels?: Pick<DatePickerProps, "calendarLabel" | "openCalendarLabel" | "previousMonthLabel" | "nextMonthLabel" | "viewLabels" | "segmentLabels" | "messages">;
531
+ timePickerLabels?: Pick<TimePickerProps, "panelLabel" | "openTimeLabel" | "segmentLabels" | "messages">;
292
532
  dateName?: string;
293
533
  timeName?: string;
294
534
  form?: string;
@@ -342,28 +582,136 @@ export interface TreeProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
342
582
  }
343
583
  /** @since 0.2.7 */
344
584
  export declare const Tree: import("react").ForwardRefExoticComponent<TreeProps & import("react").RefAttributes<HTMLDivElement>>;
585
+ export interface NavigationItemDisclosure {
586
+ expanded: boolean;
587
+ onExpandedChange: (expanded: boolean) => void;
588
+ label: string;
589
+ controls?: string;
590
+ disabled?: boolean;
591
+ }
592
+ export interface NavigationItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {
593
+ label: string;
594
+ description?: string;
595
+ icon?: ReactNode;
596
+ reserveIcon?: boolean;
597
+ trailing?: ReactNode;
598
+ /** Independent action rendered beside the primary control in expanded rows. */
599
+ trailingAction?: ReactNode;
600
+ href?: string;
601
+ linkProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'children' | 'aria-current'>;
602
+ onAction?: () => void;
603
+ actionProps?: Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
604
+ disclosure?: NavigationItemDisclosure;
605
+ current?: boolean;
606
+ currentKind?: 'page' | 'location';
607
+ ancestorCurrent?: boolean;
608
+ disabled?: boolean;
609
+ size?: 'sm' | 'md' | 'lg';
610
+ compact?: boolean;
611
+ variant?: 'quiet' | 'standard';
612
+ tooltip?: boolean;
613
+ tooltipSide?: 'left' | 'right';
614
+ controlRef?: Ref<HTMLElement>;
615
+ disclosureRef?: Ref<HTMLButtonElement>;
616
+ }
617
+ /** Shared navigation row geometry and native destination/action behavior. @since 0.2.11 */
618
+ export declare const NavigationItem: import("react").ForwardRefExoticComponent<NavigationItemProps & import("react").RefAttributes<HTMLDivElement>>;
619
+ export interface NavigationGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "title" | "onChange"> {
620
+ label?: string;
621
+ hideLabel?: boolean;
622
+ headingAction?: ReactNode;
623
+ separator?: boolean;
624
+ collapsible?: boolean;
625
+ expanded?: boolean;
626
+ defaultExpanded?: boolean;
627
+ onExpandedChange?: (expanded: boolean) => void;
628
+ compact?: boolean;
629
+ size?: "sm" | "md" | "lg";
630
+ collapseDisabled?: boolean;
631
+ children?: ReactNode;
632
+ }
633
+ /** Related navigation with independently configurable presentation. @since 0.2.11 */
634
+ export declare const NavigationGroup: import("react").ForwardRefExoticComponent<NavigationGroupProps & import("react").RefAttributes<HTMLDivElement>>;
345
635
  export interface NavigationTreeItem {
346
636
  value: string;
347
637
  label: string;
348
638
  href?: string;
349
639
  icon?: ReactNode;
640
+ trailing?: ReactNode;
641
+ trailingAction?: ReactNode;
350
642
  disabled?: boolean;
351
643
  children?: readonly NavigationTreeItem[];
352
644
  content?: ReactNode;
645
+ flyout?: {
646
+ openOnHover?: boolean;
647
+ positionReference?: RefObject<HTMLElement | null>;
648
+ };
353
649
  linkProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children" | "aria-current">;
354
650
  }
355
651
  export interface NavigationTreeProps extends Omit<HTMLAttributes<HTMLElement>, "children" | "onChange"> {
356
652
  label: string;
357
653
  items: readonly NavigationTreeItem[];
358
654
  currentValue?: string;
655
+ /** Page destination versus the current global module/location. */
656
+ currentKind?: "page" | "location";
359
657
  expandedValues?: readonly string[];
360
658
  defaultExpandedValues?: readonly string[];
361
659
  onExpandedValuesChange?: (values: string[]) => void;
362
660
  expandLabel?: (item: NavigationTreeItem, expanded: boolean) => string;
363
661
  size?: ContentSize;
662
+ variant?: "quiet" | "standard";
663
+ /** Icon rail; branches open a Popover without changing the accepted expansion set. */
664
+ compact?: boolean;
665
+ flyoutSide?: "left" | "right";
666
+ branchGuides?: boolean;
364
667
  }
365
668
  /** @since 0.2.7 */
366
669
  export declare const NavigationTree: import("react").ForwardRefExoticComponent<NavigationTreeProps & import("react").RefAttributes<HTMLElement>>;
670
+ export interface SidebarGroup {
671
+ id: string;
672
+ label: string;
673
+ /** Keep the navigation name while omitting a redundant visible section title. */
674
+ hideLabel?: boolean;
675
+ separator?: boolean;
676
+ branchGuides?: boolean;
677
+ headingAction?: ReactNode;
678
+ collapsible?: boolean;
679
+ expanded?: boolean;
680
+ defaultExpanded?: boolean;
681
+ onExpandedChange?: (expanded: boolean) => void;
682
+ items: readonly NavigationTreeItem[];
683
+ }
684
+ export interface SidebarSlotState {
685
+ collapsed: boolean;
686
+ }
687
+ export interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, "children" | "onChange"> {
688
+ label: string;
689
+ groups: readonly SidebarGroup[];
690
+ currentValue?: string;
691
+ currentKind?: NavigationTreeProps["currentKind"];
692
+ collapsed?: boolean;
693
+ defaultCollapsed?: boolean;
694
+ onCollapsedChange?: (collapsed: boolean) => void;
695
+ collapsible?: boolean;
696
+ collapseLabel?: string;
697
+ expandLabel?: string;
698
+ expandedValues?: readonly string[];
699
+ defaultExpandedValues?: readonly string[];
700
+ onExpandedValuesChange?: (values: string[]) => void;
701
+ expandItemLabel?: NavigationTreeProps["expandLabel"];
702
+ size?: ContentSize;
703
+ /** Quiet recedes behind work content; standard preserves the stronger pill recipe. */
704
+ variant?: "quiet" | "standard";
705
+ side?: "start" | "end";
706
+ width?: CSSProperties["width"];
707
+ header?: ReactNode | ((state: SidebarSlotState) => ReactNode);
708
+ headerLayout?: "stacked" | "inline";
709
+ footer?: ReactNode | ((state: SidebarSlotState) => ReactNode);
710
+ footerSeparator?: boolean;
711
+ headerSeparator?: boolean;
712
+ }
713
+ /** Bounded desktop navigation composed from NavigationTree and ScrollArea. @since 0.2.11 */
714
+ export declare const Sidebar: import("react").ForwardRefExoticComponent<SidebarProps & import("react").RefAttributes<HTMLElement>>;
367
715
  export interface ErrorSummaryItem {
368
716
  id: string;
369
717
  fieldId: string;
@@ -440,6 +788,7 @@ export interface DateRangePickerProps extends Omit<DateRangeFieldProps, "end"> {
440
788
  onOpenChange?: (open: boolean) => void;
441
789
  calendarLabel?: string;
442
790
  openCalendarLabel?: string;
791
+ viewLabels?: CalendarProps["viewLabels"];
443
792
  locale?: string;
444
793
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
445
794
  today?: string;
@@ -455,6 +804,7 @@ export interface DatePickerProps extends Omit<DateFieldProps, "end"> {
455
804
  onOpenChange?: (open: boolean) => void;
456
805
  calendarLabel?: string;
457
806
  openCalendarLabel?: string;
807
+ viewLabels?: CalendarProps["viewLabels"];
458
808
  locale?: string;
459
809
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
460
810
  today?: string;
@@ -602,6 +952,12 @@ export interface EditableProps extends Omit<HTMLAttributes<HTMLDivElement>, "def
602
952
  onEditingChange?: (editing: boolean) => void;
603
953
  onCommit?: (value: string) => void;
604
954
  onCancel?: () => void;
955
+ /** Return a message to keep the draft open and prevent a commit. */
956
+ validate?: (value: string) => string | undefined;
957
+ inputMode?: InputHTMLAttributes<HTMLInputElement>["inputMode"];
958
+ previewVariant?: "subtle" | "ghost";
959
+ /** Render the editor over its trigger at this preferred width. */
960
+ editorOverlayWidth?: CSSProperties["inlineSize"];
605
961
  blurAction?: "commit" | "cancel" | "none";
606
962
  readOnly?: boolean;
607
963
  disabled?: boolean;
@@ -620,6 +976,7 @@ export declare const Editable: import("react").ForwardRefExoticComponent<Editabl
620
976
  export type ControlSize = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
621
977
  export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
622
978
  variant?: "solid" | "subtle" | "outline" | "ghost";
979
+ tone?: "default" | "danger";
623
980
  size?: ControlSize;
624
981
  loading?: boolean;
625
982
  }
@@ -645,6 +1002,10 @@ export interface ToolbarProps extends Omit<HTMLAttributes<HTMLDivElement>, "role
645
1002
  label: string;
646
1003
  orientation?: "horizontal" | "vertical";
647
1004
  loop?: boolean;
1005
+ /** Pill keeps a single horizontal rail; rounded permits wrapped tool groups. */
1006
+ shape?: "rounded" | "pill";
1007
+ /** Plain groups keep control height without another surface or outer inset. */
1008
+ variant?: "contained" | "plain";
648
1009
  }
649
1010
  /** @since 0.2.4 */
650
1011
  export declare const Toolbar: import("react").ForwardRefExoticComponent<ToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -669,6 +1030,9 @@ export interface TableProps extends Omit<TableHTMLAttributes<HTMLTableElement>,
669
1030
  density?: DataDensity;
670
1031
  striped?: boolean;
671
1032
  scrollLabel?: string;
1033
+ /** Maximum height of the scroll viewport, including the header and caption. */
1034
+ maxViewportHeight?: CSSProperties["maxBlockSize"];
1035
+ stickyHeader?: boolean;
672
1036
  /** Shared cell alignment. Middle keeps mixed record/action rows coherent; top is an explicit prose-table choice. */
673
1037
  cellVerticalAlign?: "top" | "middle" | "bottom";
674
1038
  }
@@ -748,6 +1112,7 @@ export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
748
1112
  onValueChange?: (value: string) => void;
749
1113
  activationMode?: "automatic" | "manual";
750
1114
  orientation?: "horizontal" | "vertical";
1115
+ variant?: "contained" | "line";
751
1116
  controlSize?: "sm" | "md" | "lg" | "xl";
752
1117
  disabled?: boolean;
753
1118
  iconOnly?: boolean;
@@ -839,9 +1204,13 @@ export interface MenuProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
839
1204
  }
840
1205
  /** @since 0.2.4 */
841
1206
  export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLDivElement>>;
1207
+ export interface TooltipTriggerProps extends HTMLAttributes<HTMLElement> {
1208
+ ref: RefCallback<HTMLElement>;
1209
+ }
842
1210
  export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "content" | "title" | "role"> {
843
1211
  content: string;
844
- trigger: (props: OverlayTriggerProps) => ReactNode;
1212
+ /** Native link/button-safe hover/focus props; the trigger keeps its own semantics. */
1213
+ trigger: (props: TooltipTriggerProps) => ReactNode;
845
1214
  side?: "top" | "bottom" | "left" | "right";
846
1215
  align?: "start" | "center" | "end";
847
1216
  delay?: number;
@@ -850,7 +1219,7 @@ export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "chil
850
1219
  export declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
851
1220
  export interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "title" | "role"> {
852
1221
  title: string;
853
- chrome?: "default" | "minimal";
1222
+ chrome?: "default" | "minimal" | "title-only";
854
1223
  trigger: (props: OverlayTriggerProps) => ReactNode;
855
1224
  children?: ReactNode;
856
1225
  open?: boolean;
@@ -862,6 +1231,7 @@ export interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "chil
862
1231
  closeLabel?: string;
863
1232
  initialFocusRef?: RefObject<HTMLElement | null>;
864
1233
  positionReference?: RefObject<HTMLElement | null>;
1234
+ focusOnOpen?: boolean;
865
1235
  }
866
1236
  export declare const Popover: import("react").ForwardRefExoticComponent<PopoverProps & import("react").RefAttributes<HTMLDivElement>>;
867
1237
  export interface DialogProps extends Omit<HTMLAttributes<HTMLDialogElement>, "children" | "title" | "role"> {
@@ -878,12 +1248,30 @@ export interface DialogProps extends Omit<HTMLAttributes<HTMLDialogElement>, "ch
878
1248
  initialFocusRef?: RefObject<HTMLElement | null>;
879
1249
  }
880
1250
  export declare const Dialog: import("react").ForwardRefExoticComponent<DialogProps & import("react").RefAttributes<HTMLDialogElement>>;
1251
+ export interface CommandPaletteProps extends Omit<DialogProps, "children" | "description" | "initialFocusRef"> {
1252
+ searchLabel: string;
1253
+ items: readonly CommandListItem[];
1254
+ density?: "comfortable" | "compact";
1255
+ query?: string;
1256
+ defaultQuery?: string;
1257
+ onQueryChange?: (query: string) => void;
1258
+ onAction: (id: string) => void;
1259
+ loading?: boolean;
1260
+ placeholder?: string;
1261
+ emptyMessage?: string;
1262
+ loadingMessage?: string;
1263
+ }
1264
+ /** @since 0.2.11 */
1265
+ export declare const CommandPalette: import("react").ForwardRefExoticComponent<CommandPaletteProps & import("react").RefAttributes<HTMLDialogElement>>;
881
1266
  export interface DrawerProps extends DialogProps {
882
1267
  side?: "start" | "end" | "top" | "bottom";
883
1268
  size?: "sm" | "md" | "lg";
884
1269
  footer?: ReactNode;
885
1270
  }
886
1271
  export declare const Drawer: import("react").ForwardRefExoticComponent<DrawerProps & import("react").RefAttributes<HTMLDialogElement>>;
1272
+ export type SheetProps = Omit<DrawerProps, "side">;
1273
+ /** A modal bottom sheet for a short task or a list of choices. @since 0.2.12 */
1274
+ export declare const Sheet: import("react").ForwardRefExoticComponent<SheetProps & import("react").RefAttributes<HTMLDialogElement>>;
887
1275
  export interface AlertDialogProps extends Omit<DialogProps, "children" | "role" | "description" | "closeLabel" | "closeOnOutsideClick" | "initialFocusRef"> {
888
1276
  description: string;
889
1277
  confirmLabel?: string;
@@ -895,6 +1283,8 @@ export interface AlertDialogProps extends Omit<DialogProps, "children" | "role"
895
1283
  export declare const AlertDialog: import("react").ForwardRefExoticComponent<AlertDialogProps & import("react").RefAttributes<HTMLDialogElement>>;
896
1284
  export interface CollapsibleProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "onChange"> {
897
1285
  title: string;
1286
+ /** Independent action beside the disclosure trigger, never nested inside it. */
1287
+ headerAction?: ReactNode;
898
1288
  open?: boolean;
899
1289
  defaultOpen?: boolean;
900
1290
  onOpenChange?: (open: boolean) => void;
@@ -996,6 +1386,7 @@ export interface ComboboxOption {
996
1386
  description?: string;
997
1387
  keywords?: readonly string[];
998
1388
  disabled?: boolean;
1389
+ group?: string;
999
1390
  }
1000
1391
  export interface ComboboxProps extends Omit<InputProps, "type" | "value" | "defaultValue" | "onChange" | "children"> {
1001
1392
  options: readonly ComboboxOption[];
@@ -1008,7 +1399,27 @@ export interface ComboboxProps extends Omit<InputProps, "type" | "value" | "defa
1008
1399
  toggleLabel?: string;
1009
1400
  clearLabel?: string;
1010
1401
  invalidSelectionMessage?: string;
1402
+ query?: string;
1403
+ onQueryChange?: (query: string) => void;
1404
+ /** Manual results require a controlled query and a matching optionsQuery. */
1405
+ filtering?: "local" | "manual";
1406
+ optionsQuery?: string;
1407
+ /** Retain the selected record's presentation while remote results change. */
1408
+ selectedOptions?: readonly ComboboxOption[];
1409
+ loadState?: "ready" | "loading" | "error";
1410
+ loadingMessage?: string;
1411
+ errorMessage?: string;
1412
+ onRetry?: () => void;
1413
+ retryLabel?: string;
1011
1414
  }
1415
+ export interface AutocompleteProps extends Omit<ComboboxProps, "query" | "onQueryChange" | "selectedOptions" | "value" | "defaultValue" | "onValueChange"> {
1416
+ value?: string;
1417
+ defaultValue?: string;
1418
+ onValueChange?: (value: string) => void;
1419
+ onOptionSelect?: (option: ComboboxOption) => void;
1420
+ }
1421
+ /** A free text field with suggestions; FormData contains text rather than an option ID. @since 0.2.11 */
1422
+ export declare const Autocomplete: import("react").ForwardRefExoticComponent<AutocompleteProps & import("react").RefAttributes<HTMLInputElement>>;
1012
1423
  /** @since 0.2.5 */
1013
1424
  export declare const Combobox: import("react").ForwardRefExoticComponent<ComboboxProps & import("react").RefAttributes<HTMLInputElement>>;
1014
1425
  export interface MultiSelectProps extends Omit<ComboboxProps, "value" | "defaultValue" | "onValueChange"> {
@@ -1101,9 +1512,13 @@ export interface RadioGroupProps extends Omit<FieldsetProps, "children" | "defau
1101
1512
  required?: boolean;
1102
1513
  }
1103
1514
  export declare const RadioGroup: import("react").ForwardRefExoticComponent<RadioGroupProps & import("react").RefAttributes<HTMLFieldSetElement>>;
1515
+ export interface SegmentedControlOption extends ToggleOption {
1516
+ /** Optional visible count read with the label. Format localized counts before passing them. @since 0.2.11 */
1517
+ count?: number | string;
1518
+ }
1104
1519
  export interface SegmentedControlProps extends Omit<RadioGroupProps, "legend" | "options"> {
1105
1520
  label: string;
1106
- options: readonly ToggleOption[];
1521
+ options: readonly SegmentedControlOption[];
1107
1522
  controlSize?: "sm" | "md" | "lg" | "xl";
1108
1523
  iconOnly?: boolean;
1109
1524
  fullWidth?: boolean;
@@ -1155,7 +1570,7 @@ export interface TextProps extends HTMLAttributes<HTMLElement> {
1155
1570
  export declare const Text: import("react").ForwardRefExoticComponent<TextProps & import("react").RefAttributes<HTMLElement>>;
1156
1571
  export interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
1157
1572
  level?: 1 | 2 | 3 | 4 | 5 | 6;
1158
- size?: "display" | "large" | "page" | "section";
1573
+ size?: "display" | "large" | "page" | "section" | "group";
1159
1574
  }
1160
1575
  export declare const Heading: import("react").ForwardRefExoticComponent<HeadingProps & import("react").RefAttributes<HTMLHeadingElement>>;
1161
1576
  export type Space = "0" | "1" | "2" | "3" | "4" | "6" | "8" | "12";
@@ -1240,6 +1655,8 @@ export interface IconSlotProps extends HTMLAttributes<HTMLSpanElement> {
1240
1655
  export declare const IconSlot: import("react").ForwardRefExoticComponent<IconSlotProps & import("react").RefAttributes<HTMLSpanElement>>;
1241
1656
  export interface IconButtonProps extends Omit<ButtonProps, "aria-label"> {
1242
1657
  label: string;
1658
+ /** Glyph size only; size continues to own the interactive target and insets. */
1659
+ iconSize?: ControlSize;
1243
1660
  }
1244
1661
  export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
1245
1662
  export declare const Divider: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLHRElement> & import("react").RefAttributes<HTMLHRElement>>;
@@ -1397,9 +1814,56 @@ export interface SectionProps extends Omit<HTMLAttributes<HTMLElement>, "title">
1397
1814
  description?: ReactNode;
1398
1815
  actions?: ReactNode;
1399
1816
  headingLevel?: 2 | 3 | 4 | 5 | 6;
1400
- headingSize?: "display" | "large" | "page" | "section";
1817
+ headingSize?: HeadingProps["size"];
1401
1818
  }
1402
1819
  export declare const Section: import("react").ForwardRefExoticComponent<SectionProps & import("react").RefAttributes<HTMLElement>>;
1820
+ export interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
1821
+ title: string;
1822
+ description?: ReactNode;
1823
+ actions?: ReactNode;
1824
+ headingId?: string;
1825
+ /** Use level 2 when showing a page header inside an existing document outline. */
1826
+ headingLevel?: 1 | 2;
1827
+ headingSize?: "page" | "large" | "display";
1828
+ }
1829
+ /** The primary heading and associated actions inside a page's main region. @since 0.2.11 */
1830
+ export declare const PageHeader: import("react").ForwardRefExoticComponent<PageHeaderProps & import("react").RefAttributes<HTMLElement>>;
1831
+ export interface AppTopBarProps extends Omit<HTMLAttributes<HTMLElement>, "children"> {
1832
+ start?: ReactNode;
1833
+ end?: ReactNode;
1834
+ bordered?: boolean;
1835
+ }
1836
+ /** Persistent application chrome with independent context and action slots. @since 0.2.11 */
1837
+ export declare const AppTopBar: import("react").ForwardRefExoticComponent<AppTopBarProps & import("react").RefAttributes<HTMLElement>>;
1838
+ export interface AppShellNavigationDrawer {
1839
+ /** Switch below this shell width in CSS pixels. */
1840
+ below: number;
1841
+ title: string;
1842
+ triggerLabel?: string;
1843
+ size?: DrawerProps["size"];
1844
+ renderContent: (close: () => void) => ReactNode;
1845
+ }
1846
+ export interface AppShellProps extends HTMLAttributes<HTMLDivElement> {
1847
+ navigation?: ReactNode;
1848
+ navigationSide?: "start" | "end";
1849
+ navigationDrawer?: AppShellNavigationDrawer;
1850
+ /** Render function places the shell's responsive trigger in a custom top bar. */
1851
+ topBar?: ReactNode | ((navigationTrigger: ReactNode) => ReactNode);
1852
+ footer?: ReactNode;
1853
+ scroll?: "content" | "page";
1854
+ mainId?: string;
1855
+ /** Use section when embedding a shell inside an existing main landmark. */
1856
+ mainAs?: "main" | "section";
1857
+ mainLabel?: string;
1858
+ mainRef?: Ref<HTMLElement>;
1859
+ scrollLabel?: string;
1860
+ scrollOrientation?: ScrollAreaProps["orientation"];
1861
+ /** Keep the content width stable with "none" when the layout already clears the overlay rails. */
1862
+ scrollContentInset?: ScrollAreaProps["contentInset"];
1863
+ skipLabel?: string;
1864
+ }
1865
+ /** Composes application navigation and a main landmark with optional bounded scrolling. @since 0.2.11 */
1866
+ export declare const AppShell: import("react").ForwardRefExoticComponent<AppShellProps & import("react").RefAttributes<HTMLDivElement>>;
1403
1867
  export interface SplitProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
1404
1868
  main: ReactNode;
1405
1869
  aside: ReactNode;