@flood-md/react 0.2.10 → 0.2.11

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 (49) hide show
  1. package/README.md +239 -1
  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 +1 -1
  15. package/dist/data-table.js +44 -9
  16. package/dist/date-picker.js +2 -2
  17. package/dist/date-range-picker.js +2 -2
  18. package/dist/date-time-picker.js +2 -2
  19. package/dist/date-time-range-picker.js +2 -2
  20. package/dist/disclosure.d.ts +2 -1
  21. package/dist/disclosure.js +4 -4
  22. package/dist/filter-condition.d.ts +3 -0
  23. package/dist/filter-condition.js +21 -0
  24. package/dist/filter-group.d.ts +2 -0
  25. package/dist/filter-group.js +62 -0
  26. package/dist/foundations.css +752 -76
  27. package/dist/index.d.ts +399 -3
  28. package/dist/index.js +61 -7
  29. package/dist/menu.js +5 -4
  30. package/dist/menubar.d.ts +2 -0
  31. package/dist/menubar.js +85 -0
  32. package/dist/navigation-group.d.ts +3 -0
  33. package/dist/navigation-group.js +13 -0
  34. package/dist/navigation-item.d.ts +3 -0
  35. package/dist/navigation-item.js +68 -0
  36. package/dist/navigation-layout.d.ts +2 -1
  37. package/dist/navigation-layout.js +12 -4
  38. package/dist/navigation-tree.js +51 -7
  39. package/dist/navigation.js +2 -2
  40. package/dist/overflow-actions.d.ts +2 -0
  41. package/dist/overflow-actions.js +75 -0
  42. package/dist/overlay-runtime.d.ts +3 -0
  43. package/dist/overlay-runtime.js +35 -1
  44. package/dist/overlays.js +32 -16
  45. package/dist/select.js +4 -1
  46. package/dist/sidebar.d.ts +2 -0
  47. package/dist/sidebar.js +58 -0
  48. package/dist/toolbar.js +2 -2
  49. package/package.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1,4 +1,162 @@
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
+ filterContent?: ReactNode;
86
+ filtersLabel?: string;
87
+ filterTitle?: string;
88
+ filtersOpen?: boolean;
89
+ onFiltersOpenChange?: (open: boolean) => void;
90
+ filterPanelRef?: Ref<HTMLDivElement>;
91
+ filterPanelClassName?: string;
92
+ onClear?: () => void;
93
+ canClear?: boolean;
94
+ clearLabel?: string;
95
+ controlSize?: "sm" | "md" | "lg" | "xl";
96
+ }
97
+ /** Search, accepted summaries and staged filter disclosure; saved views and query semantics stay host-owned. @since 0.2.11 */
98
+ export declare const CollectionToolbar: import("react").ForwardRefExoticComponent<CollectionToolbarProps & import("react").RefAttributes<HTMLFieldSetElement>>;
99
+ export interface CollectionViewOption {
100
+ id: string;
101
+ name: string;
102
+ disabled?: boolean;
103
+ }
104
+ export interface CollectionViewSwitcherProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onChange"> {
105
+ label: string;
106
+ views: readonly CollectionViewOption[];
107
+ value: string;
108
+ onValueChange: (id: string) => void;
109
+ actions?: readonly OverflowAction[];
110
+ onAction?: (id: string) => void;
111
+ actionsLabel?: string;
112
+ moreLabel?: string;
113
+ controlSize?: "sm" | "md" | "lg" | "xl";
114
+ disabled?: boolean;
115
+ /** Focus target for host-owned naming/deletion dialogs. */
116
+ selectRef?: Ref<HTMLSelectElement>;
117
+ }
118
+ /** Controlled saved/preset view choice with optional adaptive commands. @since 0.2.11 */
119
+ export declare const CollectionViewSwitcher: import("react").ForwardRefExoticComponent<CollectionViewSwitcherProps & import("react").RefAttributes<HTMLDivElement>>;
120
+ export interface BulkActionBarProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onAction"> {
121
+ label: string;
122
+ selectionCount: number;
123
+ /** Complete localized count, for example "2 selected". */
124
+ selectionLabel?: string;
125
+ /** Visible selection summary. Hidden counters do not reserve a slot. */
126
+ counter?: "label" | "number" | "none";
127
+ /** Reserved counter width; stable while selectionCount changes. */
128
+ counterWidth?: CSSProperties["inlineSize"];
129
+ items: readonly OverflowAction[];
130
+ onAction?: (id: string) => void;
131
+ onClear: () => void;
132
+ clearLabel?: string;
133
+ moreLabel?: string;
134
+ size?: "sm" | "md" | "lg" | "xl";
135
+ /** One to three visible commands; the default is two. */
136
+ maxVisibleActions?: 1 | 2 | 3;
137
+ disabled?: boolean;
138
+ pending?: boolean;
139
+ }
140
+ /** A bounded single-row selection command capsule. The host owns positioning and updates. @since 0.2.11 */
141
+ export declare const BulkActionBar: import("react").ForwardRefExoticComponent<BulkActionBarProps & import("react").RefAttributes<HTMLDivElement>>;
142
+ export interface MenubarMenu {
143
+ id: string;
144
+ label: string;
145
+ disabled?: boolean;
146
+ items: readonly MenuItem[];
147
+ }
148
+ export interface MenubarProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "onAction"> {
149
+ label: string;
150
+ menus: readonly MenubarMenu[];
151
+ openValue?: string | null;
152
+ defaultOpenValue?: string | null;
153
+ onOpenValueChange?: (id: string | null) => void;
154
+ onAction?: (menuId: string, actionId: string) => void;
155
+ controlSize?: "sm" | "md" | "lg" | "xl";
156
+ disabled?: boolean;
157
+ }
158
+ /** Desktop application commands; destinations use native links instead. @since 0.2.11 */
159
+ export declare const Menubar: import("react").ForwardRefExoticComponent<MenubarProps & import("react").RefAttributes<HTMLDivElement>>;
2
160
  export interface TimePickerProps extends Omit<TimeFieldProps, "end"> {
3
161
  interval?: number;
4
162
  open?: boolean;
@@ -29,6 +187,10 @@ export interface DateTimeRangePickerProps extends Omit<HTMLAttributes<HTMLDivEle
29
187
  startTimeLabel?: string;
30
188
  endDateLabel?: string;
31
189
  endTimeLabel?: string;
190
+ startDatePickerLabels?: DateTimePickerProps["datePickerLabels"];
191
+ endDatePickerLabels?: DateTimePickerProps["datePickerLabels"];
192
+ startTimePickerLabels?: DateTimePickerProps["timePickerLabels"];
193
+ endTimePickerLabels?: DateTimePickerProps["timePickerLabels"];
32
194
  form?: string;
33
195
  required?: boolean;
34
196
  disabled?: boolean;
@@ -116,6 +278,7 @@ export interface DataTableColumn {
116
278
  id: string;
117
279
  label: string;
118
280
  sortable?: boolean;
281
+ numeric?: boolean;
119
282
  align?: "start" | "end";
120
283
  width?: CSSProperties["width"];
121
284
  }
@@ -125,6 +288,15 @@ export interface DataTableRow {
125
288
  cells: Readonly<Record<string, ReactNode>>;
126
289
  sortValues?: Readonly<Record<string, string | number | null>>;
127
290
  selectionDisabled?: boolean;
291
+ /** One named record-opening action. Other controls in the row remain independent. */
292
+ primaryAction?: {
293
+ column: string;
294
+ title: string;
295
+ description?: ReactNode;
296
+ buttonProps: Omit<ButtonProps, "children" | "type" | "variant" | "size"> & {
297
+ ref?: Ref<HTMLButtonElement>;
298
+ };
299
+ };
128
300
  }
129
301
  export interface DataTableSort {
130
302
  column: string;
@@ -146,6 +318,11 @@ export interface DataTableLabels {
146
318
  page?: (page: number) => string;
147
319
  }
148
320
  export interface DataTableProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
321
+ /** Host-owned heading, search and filters aligned with the outer table cells. */
322
+ toolbar?: ReactNode;
323
+ inset?: "standard" | "roomy";
324
+ /** Ready with no rows only. Compose EmptyState/actions here; loading and error keep their owners. */
325
+ emptyContent?: ReactNode;
149
326
  caption: string;
150
327
  hideCaption?: boolean;
151
328
  columns: readonly DataTableColumn[];
@@ -165,6 +342,13 @@ export interface DataTableProps extends Omit<HTMLAttributes<HTMLDivElement>, "ch
165
342
  defaultPage?: number;
166
343
  pageSize?: number;
167
344
  onPageChange?: (page: number) => void;
345
+ /** Hide the result range while preserving selection and pagination controls. */
346
+ showResults?: boolean;
347
+ /** Server mode renders rows as the supplied page, without local sorting/slicing. */
348
+ paginationMode?: "client" | "server";
349
+ totalRows?: number;
350
+ /** Server dataset selection is controlled; the host validates IDs outside this page. */
351
+ selectionScope?: "page" | "dataset";
168
352
  state?: "ready" | "loading" | "error";
169
353
  onRetry?: () => void;
170
354
  labels?: DataTableLabels;
@@ -289,6 +473,8 @@ export interface DateTimePickerProps extends Omit<HTMLAttributes<HTMLDivElement>
289
473
  onValueChange?: (value: DateTimeValue) => void;
290
474
  dateLabel?: string;
291
475
  timeLabel?: string;
476
+ datePickerLabels?: Pick<DatePickerProps, "calendarLabel" | "openCalendarLabel" | "previousMonthLabel" | "nextMonthLabel" | "viewLabels" | "segmentLabels" | "messages">;
477
+ timePickerLabels?: Pick<TimePickerProps, "panelLabel" | "openTimeLabel" | "segmentLabels" | "messages">;
292
478
  dateName?: string;
293
479
  timeName?: string;
294
480
  form?: string;
@@ -342,28 +528,136 @@ export interface TreeProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
342
528
  }
343
529
  /** @since 0.2.7 */
344
530
  export declare const Tree: import("react").ForwardRefExoticComponent<TreeProps & import("react").RefAttributes<HTMLDivElement>>;
531
+ export interface NavigationItemDisclosure {
532
+ expanded: boolean;
533
+ onExpandedChange: (expanded: boolean) => void;
534
+ label: string;
535
+ controls?: string;
536
+ disabled?: boolean;
537
+ }
538
+ export interface NavigationItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {
539
+ label: string;
540
+ description?: string;
541
+ icon?: ReactNode;
542
+ reserveIcon?: boolean;
543
+ trailing?: ReactNode;
544
+ /** Independent action rendered beside the primary control in expanded rows. */
545
+ trailingAction?: ReactNode;
546
+ href?: string;
547
+ linkProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'children' | 'aria-current'>;
548
+ onAction?: () => void;
549
+ actionProps?: Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
550
+ disclosure?: NavigationItemDisclosure;
551
+ current?: boolean;
552
+ currentKind?: 'page' | 'location';
553
+ ancestorCurrent?: boolean;
554
+ disabled?: boolean;
555
+ size?: 'sm' | 'md' | 'lg';
556
+ compact?: boolean;
557
+ variant?: 'quiet' | 'standard';
558
+ tooltip?: boolean;
559
+ tooltipSide?: 'left' | 'right';
560
+ controlRef?: Ref<HTMLElement>;
561
+ disclosureRef?: Ref<HTMLButtonElement>;
562
+ }
563
+ /** Shared navigation row geometry and native destination/action behavior. @since 0.2.11 */
564
+ export declare const NavigationItem: import("react").ForwardRefExoticComponent<NavigationItemProps & import("react").RefAttributes<HTMLDivElement>>;
565
+ export interface NavigationGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "title" | "onChange"> {
566
+ label?: string;
567
+ hideLabel?: boolean;
568
+ headingAction?: ReactNode;
569
+ separator?: boolean;
570
+ collapsible?: boolean;
571
+ expanded?: boolean;
572
+ defaultExpanded?: boolean;
573
+ onExpandedChange?: (expanded: boolean) => void;
574
+ compact?: boolean;
575
+ size?: "sm" | "md" | "lg";
576
+ collapseDisabled?: boolean;
577
+ children?: ReactNode;
578
+ }
579
+ /** Related navigation with independently configurable presentation. @since 0.2.11 */
580
+ export declare const NavigationGroup: import("react").ForwardRefExoticComponent<NavigationGroupProps & import("react").RefAttributes<HTMLDivElement>>;
345
581
  export interface NavigationTreeItem {
346
582
  value: string;
347
583
  label: string;
348
584
  href?: string;
349
585
  icon?: ReactNode;
586
+ trailing?: ReactNode;
587
+ trailingAction?: ReactNode;
350
588
  disabled?: boolean;
351
589
  children?: readonly NavigationTreeItem[];
352
590
  content?: ReactNode;
591
+ flyout?: {
592
+ openOnHover?: boolean;
593
+ positionReference?: RefObject<HTMLElement | null>;
594
+ };
353
595
  linkProps?: Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children" | "aria-current">;
354
596
  }
355
597
  export interface NavigationTreeProps extends Omit<HTMLAttributes<HTMLElement>, "children" | "onChange"> {
356
598
  label: string;
357
599
  items: readonly NavigationTreeItem[];
358
600
  currentValue?: string;
601
+ /** Page destination versus the current global module/location. */
602
+ currentKind?: "page" | "location";
359
603
  expandedValues?: readonly string[];
360
604
  defaultExpandedValues?: readonly string[];
361
605
  onExpandedValuesChange?: (values: string[]) => void;
362
606
  expandLabel?: (item: NavigationTreeItem, expanded: boolean) => string;
363
607
  size?: ContentSize;
608
+ variant?: "quiet" | "standard";
609
+ /** Icon rail; branches open a Popover without changing the accepted expansion set. */
610
+ compact?: boolean;
611
+ flyoutSide?: "left" | "right";
612
+ branchGuides?: boolean;
364
613
  }
365
614
  /** @since 0.2.7 */
366
615
  export declare const NavigationTree: import("react").ForwardRefExoticComponent<NavigationTreeProps & import("react").RefAttributes<HTMLElement>>;
616
+ export interface SidebarGroup {
617
+ id: string;
618
+ label: string;
619
+ /** Keep the navigation name while omitting a redundant visible section title. */
620
+ hideLabel?: boolean;
621
+ separator?: boolean;
622
+ branchGuides?: boolean;
623
+ headingAction?: ReactNode;
624
+ collapsible?: boolean;
625
+ expanded?: boolean;
626
+ defaultExpanded?: boolean;
627
+ onExpandedChange?: (expanded: boolean) => void;
628
+ items: readonly NavigationTreeItem[];
629
+ }
630
+ export interface SidebarSlotState {
631
+ collapsed: boolean;
632
+ }
633
+ export interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, "children" | "onChange"> {
634
+ label: string;
635
+ groups: readonly SidebarGroup[];
636
+ currentValue?: string;
637
+ currentKind?: NavigationTreeProps["currentKind"];
638
+ collapsed?: boolean;
639
+ defaultCollapsed?: boolean;
640
+ onCollapsedChange?: (collapsed: boolean) => void;
641
+ collapsible?: boolean;
642
+ collapseLabel?: string;
643
+ expandLabel?: string;
644
+ expandedValues?: readonly string[];
645
+ defaultExpandedValues?: readonly string[];
646
+ onExpandedValuesChange?: (values: string[]) => void;
647
+ expandItemLabel?: NavigationTreeProps["expandLabel"];
648
+ size?: ContentSize;
649
+ /** Quiet recedes behind work content; standard preserves the stronger pill recipe. */
650
+ variant?: "quiet" | "standard";
651
+ side?: "start" | "end";
652
+ width?: CSSProperties["width"];
653
+ header?: ReactNode | ((state: SidebarSlotState) => ReactNode);
654
+ headerLayout?: "stacked" | "inline";
655
+ footer?: ReactNode | ((state: SidebarSlotState) => ReactNode);
656
+ footerSeparator?: boolean;
657
+ headerSeparator?: boolean;
658
+ }
659
+ /** Bounded desktop navigation composed from NavigationTree and ScrollArea. @since 0.2.11 */
660
+ export declare const Sidebar: import("react").ForwardRefExoticComponent<SidebarProps & import("react").RefAttributes<HTMLElement>>;
367
661
  export interface ErrorSummaryItem {
368
662
  id: string;
369
663
  fieldId: string;
@@ -440,6 +734,7 @@ export interface DateRangePickerProps extends Omit<DateRangeFieldProps, "end"> {
440
734
  onOpenChange?: (open: boolean) => void;
441
735
  calendarLabel?: string;
442
736
  openCalendarLabel?: string;
737
+ viewLabels?: CalendarProps["viewLabels"];
443
738
  locale?: string;
444
739
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
445
740
  today?: string;
@@ -455,6 +750,7 @@ export interface DatePickerProps extends Omit<DateFieldProps, "end"> {
455
750
  onOpenChange?: (open: boolean) => void;
456
751
  calendarLabel?: string;
457
752
  openCalendarLabel?: string;
753
+ viewLabels?: CalendarProps["viewLabels"];
458
754
  locale?: string;
459
755
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
460
756
  today?: string;
@@ -620,6 +916,7 @@ export declare const Editable: import("react").ForwardRefExoticComponent<Editabl
620
916
  export type ControlSize = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
621
917
  export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
622
918
  variant?: "solid" | "subtle" | "outline" | "ghost";
919
+ tone?: "default" | "danger";
623
920
  size?: ControlSize;
624
921
  loading?: boolean;
625
922
  }
@@ -645,6 +942,10 @@ export interface ToolbarProps extends Omit<HTMLAttributes<HTMLDivElement>, "role
645
942
  label: string;
646
943
  orientation?: "horizontal" | "vertical";
647
944
  loop?: boolean;
945
+ /** Pill keeps a single horizontal rail; rounded permits wrapped tool groups. */
946
+ shape?: "rounded" | "pill";
947
+ /** Plain groups keep control height without another surface or outer inset. */
948
+ variant?: "contained" | "plain";
648
949
  }
649
950
  /** @since 0.2.4 */
650
951
  export declare const Toolbar: import("react").ForwardRefExoticComponent<ToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -748,6 +1049,7 @@ export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
748
1049
  onValueChange?: (value: string) => void;
749
1050
  activationMode?: "automatic" | "manual";
750
1051
  orientation?: "horizontal" | "vertical";
1052
+ variant?: "contained" | "line";
751
1053
  controlSize?: "sm" | "md" | "lg" | "xl";
752
1054
  disabled?: boolean;
753
1055
  iconOnly?: boolean;
@@ -839,9 +1141,13 @@ export interface MenuProps extends Omit<HTMLAttributes<HTMLDivElement>, "childre
839
1141
  }
840
1142
  /** @since 0.2.4 */
841
1143
  export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLDivElement>>;
1144
+ export interface TooltipTriggerProps extends HTMLAttributes<HTMLElement> {
1145
+ ref: RefCallback<HTMLElement>;
1146
+ }
842
1147
  export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "content" | "title" | "role"> {
843
1148
  content: string;
844
- trigger: (props: OverlayTriggerProps) => ReactNode;
1149
+ /** Native link/button-safe hover/focus props; the trigger keeps its own semantics. */
1150
+ trigger: (props: TooltipTriggerProps) => ReactNode;
845
1151
  side?: "top" | "bottom" | "left" | "right";
846
1152
  align?: "start" | "center" | "end";
847
1153
  delay?: number;
@@ -850,7 +1156,7 @@ export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, "chil
850
1156
  export declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
851
1157
  export interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "title" | "role"> {
852
1158
  title: string;
853
- chrome?: "default" | "minimal";
1159
+ chrome?: "default" | "minimal" | "title-only";
854
1160
  trigger: (props: OverlayTriggerProps) => ReactNode;
855
1161
  children?: ReactNode;
856
1162
  open?: boolean;
@@ -862,6 +1168,7 @@ export interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, "chil
862
1168
  closeLabel?: string;
863
1169
  initialFocusRef?: RefObject<HTMLElement | null>;
864
1170
  positionReference?: RefObject<HTMLElement | null>;
1171
+ focusOnOpen?: boolean;
865
1172
  }
866
1173
  export declare const Popover: import("react").ForwardRefExoticComponent<PopoverProps & import("react").RefAttributes<HTMLDivElement>>;
867
1174
  export interface DialogProps extends Omit<HTMLAttributes<HTMLDialogElement>, "children" | "title" | "role"> {
@@ -878,6 +1185,21 @@ export interface DialogProps extends Omit<HTMLAttributes<HTMLDialogElement>, "ch
878
1185
  initialFocusRef?: RefObject<HTMLElement | null>;
879
1186
  }
880
1187
  export declare const Dialog: import("react").ForwardRefExoticComponent<DialogProps & import("react").RefAttributes<HTMLDialogElement>>;
1188
+ export interface CommandPaletteProps extends Omit<DialogProps, "children" | "description" | "initialFocusRef"> {
1189
+ searchLabel: string;
1190
+ items: readonly CommandListItem[];
1191
+ density?: "comfortable" | "compact";
1192
+ query?: string;
1193
+ defaultQuery?: string;
1194
+ onQueryChange?: (query: string) => void;
1195
+ onAction: (id: string) => void;
1196
+ loading?: boolean;
1197
+ placeholder?: string;
1198
+ emptyMessage?: string;
1199
+ loadingMessage?: string;
1200
+ }
1201
+ /** @since 0.2.11 */
1202
+ export declare const CommandPalette: import("react").ForwardRefExoticComponent<CommandPaletteProps & import("react").RefAttributes<HTMLDialogElement>>;
881
1203
  export interface DrawerProps extends DialogProps {
882
1204
  side?: "start" | "end" | "top" | "bottom";
883
1205
  size?: "sm" | "md" | "lg";
@@ -895,6 +1217,8 @@ export interface AlertDialogProps extends Omit<DialogProps, "children" | "role"
895
1217
  export declare const AlertDialog: import("react").ForwardRefExoticComponent<AlertDialogProps & import("react").RefAttributes<HTMLDialogElement>>;
896
1218
  export interface CollapsibleProps extends Omit<HTMLAttributes<HTMLDivElement>, "title" | "onChange"> {
897
1219
  title: string;
1220
+ /** Independent action beside the disclosure trigger, never nested inside it. */
1221
+ headerAction?: ReactNode;
898
1222
  open?: boolean;
899
1223
  defaultOpen?: boolean;
900
1224
  onOpenChange?: (open: boolean) => void;
@@ -996,6 +1320,7 @@ export interface ComboboxOption {
996
1320
  description?: string;
997
1321
  keywords?: readonly string[];
998
1322
  disabled?: boolean;
1323
+ group?: string;
999
1324
  }
1000
1325
  export interface ComboboxProps extends Omit<InputProps, "type" | "value" | "defaultValue" | "onChange" | "children"> {
1001
1326
  options: readonly ComboboxOption[];
@@ -1008,7 +1333,27 @@ export interface ComboboxProps extends Omit<InputProps, "type" | "value" | "defa
1008
1333
  toggleLabel?: string;
1009
1334
  clearLabel?: string;
1010
1335
  invalidSelectionMessage?: string;
1336
+ query?: string;
1337
+ onQueryChange?: (query: string) => void;
1338
+ /** Manual results require a controlled query and a matching optionsQuery. */
1339
+ filtering?: "local" | "manual";
1340
+ optionsQuery?: string;
1341
+ /** Retain the selected record's presentation while remote results change. */
1342
+ selectedOptions?: readonly ComboboxOption[];
1343
+ loadState?: "ready" | "loading" | "error";
1344
+ loadingMessage?: string;
1345
+ errorMessage?: string;
1346
+ onRetry?: () => void;
1347
+ retryLabel?: string;
1348
+ }
1349
+ export interface AutocompleteProps extends Omit<ComboboxProps, "query" | "onQueryChange" | "selectedOptions" | "value" | "defaultValue" | "onValueChange"> {
1350
+ value?: string;
1351
+ defaultValue?: string;
1352
+ onValueChange?: (value: string) => void;
1353
+ onOptionSelect?: (option: ComboboxOption) => void;
1011
1354
  }
1355
+ /** A free text field with suggestions; FormData contains text rather than an option ID. @since 0.2.11 */
1356
+ export declare const Autocomplete: import("react").ForwardRefExoticComponent<AutocompleteProps & import("react").RefAttributes<HTMLInputElement>>;
1012
1357
  /** @since 0.2.5 */
1013
1358
  export declare const Combobox: import("react").ForwardRefExoticComponent<ComboboxProps & import("react").RefAttributes<HTMLInputElement>>;
1014
1359
  export interface MultiSelectProps extends Omit<ComboboxProps, "value" | "defaultValue" | "onValueChange"> {
@@ -1101,9 +1446,13 @@ export interface RadioGroupProps extends Omit<FieldsetProps, "children" | "defau
1101
1446
  required?: boolean;
1102
1447
  }
1103
1448
  export declare const RadioGroup: import("react").ForwardRefExoticComponent<RadioGroupProps & import("react").RefAttributes<HTMLFieldSetElement>>;
1449
+ export interface SegmentedControlOption extends ToggleOption {
1450
+ /** Optional visible count read with the label. Format localized counts before passing them. @since 0.2.11 */
1451
+ count?: number | string;
1452
+ }
1104
1453
  export interface SegmentedControlProps extends Omit<RadioGroupProps, "legend" | "options"> {
1105
1454
  label: string;
1106
- options: readonly ToggleOption[];
1455
+ options: readonly SegmentedControlOption[];
1107
1456
  controlSize?: "sm" | "md" | "lg" | "xl";
1108
1457
  iconOnly?: boolean;
1109
1458
  fullWidth?: boolean;
@@ -1240,6 +1589,8 @@ export interface IconSlotProps extends HTMLAttributes<HTMLSpanElement> {
1240
1589
  export declare const IconSlot: import("react").ForwardRefExoticComponent<IconSlotProps & import("react").RefAttributes<HTMLSpanElement>>;
1241
1590
  export interface IconButtonProps extends Omit<ButtonProps, "aria-label"> {
1242
1591
  label: string;
1592
+ /** Glyph size only; size continues to own the interactive target and insets. */
1593
+ iconSize?: ControlSize;
1243
1594
  }
1244
1595
  export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
1245
1596
  export declare const Divider: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLHRElement> & import("react").RefAttributes<HTMLHRElement>>;
@@ -1400,6 +1751,51 @@ export interface SectionProps extends Omit<HTMLAttributes<HTMLElement>, "title">
1400
1751
  headingSize?: "display" | "large" | "page" | "section";
1401
1752
  }
1402
1753
  export declare const Section: import("react").ForwardRefExoticComponent<SectionProps & import("react").RefAttributes<HTMLElement>>;
1754
+ export interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "title" | "children"> {
1755
+ title: string;
1756
+ description?: ReactNode;
1757
+ actions?: ReactNode;
1758
+ headingId?: string;
1759
+ /** Use level 2 when showing a page header inside an existing document outline. */
1760
+ headingLevel?: 1 | 2;
1761
+ headingSize?: "page" | "large" | "display";
1762
+ }
1763
+ /** The primary heading and associated actions inside a page's main region. @since 0.2.11 */
1764
+ export declare const PageHeader: import("react").ForwardRefExoticComponent<PageHeaderProps & import("react").RefAttributes<HTMLElement>>;
1765
+ export interface AppTopBarProps extends Omit<HTMLAttributes<HTMLElement>, "children"> {
1766
+ start?: ReactNode;
1767
+ end?: ReactNode;
1768
+ bordered?: boolean;
1769
+ }
1770
+ /** Persistent application chrome with independent context and action slots. @since 0.2.11 */
1771
+ export declare const AppTopBar: import("react").ForwardRefExoticComponent<AppTopBarProps & import("react").RefAttributes<HTMLElement>>;
1772
+ export interface AppShellNavigationDrawer {
1773
+ /** Switch below this shell width in CSS pixels. */
1774
+ below: number;
1775
+ title: string;
1776
+ triggerLabel?: string;
1777
+ size?: DrawerProps["size"];
1778
+ renderContent: (close: () => void) => ReactNode;
1779
+ }
1780
+ export interface AppShellProps extends HTMLAttributes<HTMLDivElement> {
1781
+ navigation?: ReactNode;
1782
+ navigationSide?: "start" | "end";
1783
+ navigationDrawer?: AppShellNavigationDrawer;
1784
+ /** Render function places the shell's responsive trigger in a custom top bar. */
1785
+ topBar?: ReactNode | ((navigationTrigger: ReactNode) => ReactNode);
1786
+ footer?: ReactNode;
1787
+ scroll?: "content" | "page";
1788
+ mainId?: string;
1789
+ /** Use section when embedding a shell inside an existing main landmark. */
1790
+ mainAs?: "main" | "section";
1791
+ mainLabel?: string;
1792
+ mainRef?: Ref<HTMLElement>;
1793
+ scrollLabel?: string;
1794
+ scrollOrientation?: ScrollAreaProps["orientation"];
1795
+ skipLabel?: string;
1796
+ }
1797
+ /** Composes application navigation and a main landmark with optional bounded scrolling. @since 0.2.11 */
1798
+ export declare const AppShell: import("react").ForwardRefExoticComponent<AppShellProps & import("react").RefAttributes<HTMLDivElement>>;
1403
1799
  export interface SplitProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
1404
1800
  main: ReactNode;
1405
1801
  aside: ReactNode;