@salemcobalt/ui 0.2.0-rc.2 → 0.2.0-rc.20

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ComponentPropsWithRef, ReactNode, ReactElement, CSSProperties } from 'react';
2
+ import { ComponentPropsWithRef, ReactNode, ReactElement, CSSProperties, MouseEvent, MouseEventHandler } from 'react';
3
3
  import { useRender } from '@base-ui/react/use-render';
4
4
  import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
5
5
  import * as _base_ui_react from '@base-ui/react';
@@ -8,6 +8,7 @@ import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
8
8
  import { Switch as Switch$1 } from '@base-ui/react/switch';
9
9
  import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
10
10
  import { Toolbar as Toolbar$1 } from '@base-ui/react/toolbar';
11
+ import { Popover as Popover$1 } from '@base-ui/react/popover';
11
12
 
12
13
  type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
13
14
  type ButtonSize = 'sm' | 'md' | 'lg';
@@ -24,9 +25,13 @@ interface ButtonProps extends ComponentPropsWithRef<'button'> {
24
25
  loading?: boolean | undefined;
25
26
  /** Stretches to the container. */
26
27
  fullWidth?: boolean | undefined;
28
+ /** A keyboard hint after the label: `shortcut={<Kbd>N</Kbd>}`. Hidden from assistive tech; announce the key with `aria-keyshortcuts="n"`. Not shown on devices with no fine pointer (touch only). */
29
+ shortcut?: ReactNode | undefined;
30
+ /** Shows only `iconStart` (or `iconEnd`) in a square button; the label stays the accessible name and the shortcut hides. Toggles without remounting, e.g. when a header runs out of room. Pair with a Tooltip carrying the label. */
31
+ iconOnly?: boolean | undefined;
27
32
  }
28
33
  /** The one way to trigger an action. Renders a native `<button>`; `type` defaults to `button`. */
29
- declare function Button({ variant, size, iconStart, iconEnd, loading, fullWidth, type, className, children, onClick, ...rest }: ButtonProps): react.JSX.Element;
34
+ declare function Button({ variant, size, iconStart, iconEnd, loading, fullWidth, shortcut, iconOnly, type, className, children, onClick, ...rest }: ButtonProps): react.JSX.Element;
30
35
 
31
36
  type BadgeTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
32
37
  type BadgeVariant = 'soft' | 'solid' | 'outline';
@@ -44,19 +49,19 @@ interface BadgeProps extends ComponentPropsWithRef<'span'> {
44
49
  /** One or two words of status beside a thing. Text only; never clickable. */
45
50
  declare function Badge({ tone, variant, size, dot, className, children, ...rest }: BadgeProps): react.JSX.Element;
46
51
 
47
- type CardVariant = 'outlined' | 'elevated' | 'filled';
52
+ type CardVariant = 'outlined' | 'elevated' | 'filled' | 'plain';
48
53
  type CardPadding = 'none' | 'sm' | 'md' | 'lg';
49
- type CardElement = 'div' | 'article' | 'section' | 'li' | 'a' | 'button';
54
+ type CardElement = 'div' | 'article' | 'section' | 'nav' | 'li' | 'a' | 'button';
50
55
  interface CardProps extends useRender.ComponentProps<'div'> {
51
- /** `outlined` hairline (default), `elevated` floats, `filled` is an inset region. */
56
+ /** `outlined` hairline (default), `elevated` floats, `filled` is an inset region, `plain` has no surface: a quiet list row that washes on hover and takes the accent wash and border when selected. */
52
57
  variant?: CardVariant | undefined;
53
58
  /** `none`, `sm` 12px, `md` 16px (default), `lg` 24px. */
54
59
  padding?: CardPadding | undefined;
55
60
  /** Hover lifts the card and the whole card is the target. Render it as `a` or `button` so it is a real control. */
56
61
  interactive?: boolean | undefined;
57
- /** Accent border with a 1px inset, for the active row or chosen option. */
62
+ /** Accent border with a 1px inset, for the active row or chosen option; on `plain`, the accent wash with a 1px accent border. Also recolours a Score inside. Visual only: pair it with `aria-pressed`, `aria-selected` or `aria-current`. */
58
63
  selected?: boolean | undefined;
59
- /** Element to render when `render` is not given. */
64
+ /** Element to render when `render` is not given. Use `nav` (with an `aria-label`) for a carded navigation landmark. */
60
65
  as?: CardElement | undefined;
61
66
  }
62
67
  /** A bordered surface that groups related content. Compose the inside with Stack and Inline. */
@@ -694,6 +699,9 @@ declare const Kbd: typeof KbdBase & {
694
699
  };
695
700
 
696
701
  type DialogSize = 'sm' | 'md' | 'lg';
702
+ type DialogVariant = 'dialog' | 'sheet' | 'fullscreen';
703
+ /** How a person asked to close: Esc, a press on the backdrop, or a `Dialog.Close`. */
704
+ type DialogCloseRequestReason = 'escape-key' | 'outside-press' | 'close-press';
697
705
  interface DialogRootProps {
698
706
  /** Controlled open state. */
699
707
  open?: boolean | undefined;
@@ -703,30 +711,53 @@ interface DialogRootProps {
703
711
  onOpenChange?: ((open: boolean) => void) | undefined;
704
712
  /** When `false`, Esc and backdrop clicks no longer close the dialog. Default `true`. */
705
713
  dismissible?: boolean | undefined;
714
+ /**
715
+ * When set, the dialog no longer closes itself: Esc, a backdrop press and every `Dialog.Close` call
716
+ * this with the reason instead, and the app closes it by setting `open` to `false` (for example after
717
+ * a "Leave for now?" confirmation). Use with a controlled `open`. `dismissible={false}` still swallows
718
+ * Esc and backdrop presses first.
719
+ */
720
+ onRequestClose?: ((reason: DialogCloseRequestReason) => void) | undefined;
706
721
  children?: ReactNode | undefined;
707
722
  }
708
723
  /** Owns the open state. Wrap a `Dialog.Trigger` and a `Dialog.Content`. */
709
- declare function Root$4({ dismissible, onOpenChange, open, defaultOpen, children }: DialogRootProps): react.JSX.Element;
724
+ declare function Root$6({ dismissible, onOpenChange, onRequestClose, open, defaultOpen, children, }: DialogRootProps): react.JSX.Element;
710
725
  interface DialogContentProps extends Omit<Dialog$1.Popup.Props, 'className'> {
711
- /** `sm` 400px for yes/no, `md` 560px (default) for a short form, `lg` 720px rarely. */
726
+ /**
727
+ * Maximum width: `sm` 400px for yes/no, `md` 560px (default) for a short form, `lg` 720px rarely.
728
+ * Every size clamps to the viewport minus a 16px gutter, so a 390px phone gets a 358px dialog.
729
+ */
712
730
  size?: DialogSize | undefined;
731
+ /**
732
+ * `dialog` (default) centres the popup. `sheet` is the same on wide viewports but below 640px it
733
+ * becomes a bottom sheet: full width, rounded top, title and actions pinned while `Dialog.Body`
734
+ * scrolls, padding that clears the home indicator. Use it for forms and pickers opened from a list.
735
+ * `fullscreen` covers the viewport (inset by 16px with a rounded edge from 900px), slides in from the
736
+ * inline end, keeps clear of the safe areas, and lets `Dialog.Body` scroll between a pinned title and
737
+ * actions; `size` is ignored. It is the surface of `FullScreenFlow`. Pair it with `onRequestClose` on
738
+ * the Root when leaving needs a confirmation.
739
+ */
740
+ variant?: DialogVariant | undefined;
713
741
  className?: string | undefined;
714
742
  }
715
- /** Portal, backdrop and the popup. Focus moves inside on open and returns to the trigger on close. */
716
- declare function Content$1({ size, className, children, ...rest }: DialogContentProps): react.JSX.Element;
743
+ /**
744
+ * Portal, backdrop and the popup. Focus moves inside on open and returns to the trigger on close.
745
+ * Menus, selects and tooltips opened from inside render above it (`--sc-z-dropdown` > `--sc-z-dialog`).
746
+ */
747
+ declare function Content$2({ size, variant, className, children, ...rest }: DialogContentProps): react.JSX.Element;
717
748
  interface DialogTitleProps extends Omit<Dialog$1.Title.Props, 'className'> {
718
749
  className?: string | undefined;
719
750
  }
720
751
  /** Required. Labels the dialog; a question or a statement. Renders an `<h2>`. */
721
- declare function Title({ className, ...rest }: DialogTitleProps): react.JSX.Element;
752
+ declare function Title$1({ className, ...rest }: DialogTitleProps): react.JSX.Element;
722
753
  interface DialogDescriptionProps extends Omit<Dialog$1.Description.Props, 'className'> {
723
754
  className?: string | undefined;
724
755
  }
725
756
  /** Optional, muted. Says what will happen. */
726
- declare function Description({ className, ...rest }: DialogDescriptionProps): react.JSX.Element;
757
+ declare function Description$1({ className, ...rest }: DialogDescriptionProps): react.JSX.Element;
727
758
  type DialogBodyProps = ComponentPropsWithRef<'div'>;
728
- /** Free content between the description and the actions. */
729
- declare function Body$1({ className, ...rest }: DialogBodyProps): react.JSX.Element;
759
+ /** Free content between the description and the actions. In a `sheet` it is the part that scrolls. */
760
+ declare function Body$2({ className, ...rest }: DialogBodyProps): react.JSX.Element;
730
761
  type DialogActionsProps = Omit<InlineProps, 'justify'>;
731
762
  /** Right-aligned row of Buttons. Put the confirming action last. */
732
763
  declare function Actions({ className, ...rest }: DialogActionsProps): react.JSX.Element;
@@ -734,17 +765,17 @@ interface DialogCloseProps extends Omit<Dialog$1.Close.Props, 'className'> {
734
765
  className?: string | undefined;
735
766
  }
736
767
  /** With no children or `render`, the × in the corner. Otherwise wraps any Button: `<Dialog.Close render={<Button variant="secondary" />}>Cancel</Dialog.Close>`. */
737
- declare function Close({ className, children, render, ...rest }: DialogCloseProps): react.JSX.Element;
768
+ declare function Close$1({ className, children, render, ...rest }: DialogCloseProps): react.JSX.Element;
738
769
  /** A modal that interrupts for a decision or a short form. Built on Base UI's Dialog. */
739
770
  declare const Dialog: {
740
- Root: typeof Root$4;
771
+ Root: typeof Root$6;
741
772
  Trigger: Dialog$1.Trigger;
742
- Content: typeof Content$1;
743
- Title: typeof Title;
744
- Description: typeof Description;
745
- Body: typeof Body$1;
773
+ Content: typeof Content$2;
774
+ Title: typeof Title$1;
775
+ Description: typeof Description$1;
776
+ Body: typeof Body$2;
746
777
  Actions: typeof Actions;
747
- Close: typeof Close;
778
+ Close: typeof Close$1;
748
779
  };
749
780
 
750
781
  type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'em';
@@ -901,7 +932,8 @@ declare const Tooltip: typeof TooltipBase & {
901
932
  Provider: react.FC<_base_ui_react.TooltipProviderProps>;
902
933
  };
903
934
 
904
- interface IconButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'children' | 'aria-label'> {
935
+ type IconButtonDotTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
936
+ interface IconButtonProps extends Omit<useRender.ComponentProps<'button'>, 'children' | 'aria-label'> {
905
937
  /** Required. The accessible name, and the tooltip text when `tooltip` is `true`. */
906
938
  label: string;
907
939
  /** The icon, usually a shipped `<Name>Icon`. It is decorative; `label` names the button. Optional only so a popup trigger can supply it through `render`. */
@@ -918,9 +950,15 @@ interface IconButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'childre
918
950
  round?: boolean | undefined;
919
951
  /** Shows a spinner, sets `aria-busy` and ignores clicks. */
920
952
  loading?: boolean | undefined;
953
+ /** A status dot in the top-left corner, ringed in `--sc-icon-button-dot-ring` (default `surface-default`). Decorative: put the status in `label` too ("Sweeps: paused"). */
954
+ dot?: IconButtonDotTone | undefined;
921
955
  }
922
- /** A square Button for one icon. Always named by `label`; use `tooltip` to show that name on hover. */
923
- declare function IconButton({ label, children, variant, size, tooltip, tooltipSide, round, loading, type, className, onClick, ...rest }: IconButtonProps): react.JSX.Element;
956
+ /**
957
+ * A square Button for one icon. Always named by `label`; use `tooltip` to show that name on hover.
958
+ * Renders a `<button>` unless `render` gives another element: `render={<a href="/settings" />}` or a
959
+ * Next.js `<Link href="/settings" />` makes it a link with the same look and name.
960
+ */
961
+ declare function IconButton({ label, children, variant, size, tooltip, tooltipSide, round, loading, dot, type, className, onClick, render, ref, ...rest }: IconButtonProps): react.JSX.Element;
924
962
 
925
963
  type MenuSide = 'top' | 'bottom' | 'left' | 'right';
926
964
  type MenuAlign = 'start' | 'center' | 'end';
@@ -939,7 +977,7 @@ interface MenuRootProps {
939
977
  children?: ReactNode | undefined;
940
978
  }
941
979
  /** Owns the open state. Wrap a `Menu.Trigger` and a `Menu.Content`. */
942
- declare function Root$3({ open, defaultOpen, onOpenChange, disabled, modal, children }: MenuRootProps): react.JSX.Element;
980
+ declare function Root$5({ open, defaultOpen, onOpenChange, disabled, modal, children }: MenuRootProps): react.JSX.Element;
943
981
  interface MenuTriggerProps extends Omit<Menu$1.Trigger.Props, 'className'> {
944
982
  className?: string | undefined;
945
983
  }
@@ -947,7 +985,7 @@ interface MenuTriggerProps extends Omit<Menu$1.Trigger.Props, 'className'> {
947
985
  * Opens the menu. With no `render` it is a secondary Button with a chevron; pass any Button or
948
986
  * IconButton through `render`: `<Menu.Trigger render={<IconButton label="More" />}><MoreHorizontalIcon /></Menu.Trigger>`.
949
987
  */
950
- declare function Trigger({ render, className, children, ...rest }: MenuTriggerProps): react.JSX.Element;
988
+ declare function Trigger$1({ render, className, children, ...rest }: MenuTriggerProps): react.JSX.Element;
951
989
  interface MenuContentProps extends Omit<Menu$1.Popup.Props, 'className'> {
952
990
  /** Side of the trigger the menu opens on; flips when there is no room. Default `bottom`. */
953
991
  side?: MenuSide | undefined;
@@ -958,7 +996,7 @@ interface MenuContentProps extends Omit<Menu$1.Popup.Props, 'className'> {
958
996
  className?: string | undefined;
959
997
  }
960
998
  /** Portal, positioner and the popup. Items go inside. */
961
- declare function Content({ side, align, sideOffset, className, children, ...rest }: MenuContentProps): react.JSX.Element;
999
+ declare function Content$1({ side, align, sideOffset, className, children, ...rest }: MenuContentProps): react.JSX.Element;
962
1000
  interface ItemSlots {
963
1001
  /** A 16px icon before the label. */
964
1002
  icon?: ReactNode | undefined;
@@ -975,8 +1013,11 @@ declare function Item({ icon, trailing, tone, className, children, ...rest }: Me
975
1013
  interface MenuLinkItemProps extends Omit<Menu$1.LinkItem.Props, 'className'>, ItemSlots {
976
1014
  className?: string | undefined;
977
1015
  }
978
- /** An item that navigates: renders an `<a href>`. */
979
- declare function LinkItem({ icon, trailing, tone, className, children, ...rest }: MenuLinkItemProps): react.JSX.Element;
1016
+ /**
1017
+ * An item that navigates: renders an `<a href>`. Closes the menu when chosen, like `Menu.Item`: with client-side
1018
+ * routing the page stays mounted, so an open menu would sit over the new page. Pass `closeOnClick={false}` to keep it.
1019
+ */
1020
+ declare function LinkItem({ icon, trailing, tone, className, closeOnClick, children, ...rest }: MenuLinkItemProps): react.JSX.Element;
980
1021
  interface MenuCheckboxItemProps extends Omit<Menu$1.CheckboxItem.Props, 'className' | 'onCheckedChange'> {
981
1022
  /** Called with the next checked state. */
982
1023
  onCheckedChange?: ((checked: boolean) => void) | undefined;
@@ -1021,9 +1062,9 @@ interface MenuSeparatorProps extends Omit<Menu$1.Separator.Props, 'className'> {
1021
1062
  declare function Separator$1({ className, ...rest }: MenuSeparatorProps): react.JSX.Element;
1022
1063
  /** A dropdown of actions on a trigger, with full keyboard support. Built on Base UI's Menu. */
1023
1064
  declare const Menu: {
1024
- Root: typeof Root$3;
1025
- Trigger: typeof Trigger;
1026
- Content: typeof Content;
1065
+ Root: typeof Root$5;
1066
+ Trigger: typeof Trigger$1;
1067
+ Content: typeof Content$1;
1027
1068
  Item: typeof Item;
1028
1069
  LinkItem: typeof LinkItem;
1029
1070
  CheckboxItem: typeof CheckboxItem;
@@ -1065,19 +1106,30 @@ interface InputProps extends Omit<ComponentPropsWithRef<'input'>, 'size' | 'name
1065
1106
  /** Called with the string value on every change, beside the native `onChange`. */
1066
1107
  onValueChange?: ((value: string) => void) | undefined;
1067
1108
  }
1068
- /** A labelled single-line text field. Renders a native `<input>` inside Base UI's Field. */
1109
+ /**
1110
+ * A labelled single-line text field. Renders a native `<input>` inside Base UI's Field, so every native
1111
+ * attribute passes through: `type="date" | "time" | "number" | "url" | …` keep the same height and
1112
+ * `iconStart` slot; `list="id"` with a `<datalist>` beside it gives native suggestions. Date and time
1113
+ * fields show the browser's picker at the end edge, so leave `iconEnd` off those.
1114
+ */
1069
1115
  declare function Input({ label, hideLabel, description, error, invalid, required, disabled, name, size, className, iconStart, iconEnd, onValueChange, ...rest }: InputProps): react.JSX.Element;
1070
1116
 
1117
+ type TextareaVariant = 'default' | 'code';
1071
1118
  interface TextareaProps extends Omit<ComponentPropsWithRef<'textarea'>, 'name' | 'disabled' | 'required' | 'className'>, Omit<FieldProps, 'size'> {
1072
1119
  /** Visible lines. Default 3. */
1073
1120
  rows?: number | undefined;
1074
1121
  /** `vertical` (default) lets the user drag it taller; `none` fixes the height. */
1075
1122
  resize?: 'vertical' | 'none' | undefined;
1123
+ /**
1124
+ * `code` for Markdown, JSON and other source: monospace, `tab-size: 2`, spellcheck, autocorrect and
1125
+ * autocapitalize off. Add the native `wrap="off"` to keep long lines on one line and scroll sideways.
1126
+ */
1127
+ variant?: TextareaVariant | undefined;
1076
1128
  /** Called with the string value on every change, beside the native `onChange`. */
1077
1129
  onValueChange?: ((value: string) => void) | undefined;
1078
1130
  }
1079
1131
  /** A labelled multi-line text field. Renders a native `<textarea>` inside Base UI's Field. */
1080
- declare function Textarea({ label, hideLabel, description, error, invalid, required, disabled, name, className, rows, resize, onValueChange, ...rest }: TextareaProps): react.JSX.Element;
1132
+ declare function Textarea({ label, hideLabel, description, error, invalid, required, disabled, name, className, rows, resize, variant, onValueChange, spellCheck, autoCorrect, autoCapitalize, ...rest }: TextareaProps): react.JSX.Element;
1081
1133
 
1082
1134
  interface SelectOption<Value extends string = string> {
1083
1135
  value: Value;
@@ -1092,14 +1144,21 @@ interface SelectGroup<Value extends string = string> {
1092
1144
  interface SelectProps<Value extends string = string> extends FieldProps {
1093
1145
  /** Flat options, or groups of options with a heading. */
1094
1146
  options: Array<SelectOption<Value> | SelectGroup<Value>>;
1095
- /** Controlled value; `null` for none. */
1147
+ /** Controlled value; `null` for none, which shows `placeholder`. No sentinel option needed. */
1096
1148
  value?: Value | null | undefined;
1097
- /** Initial value when uncontrolled. */
1149
+ /** Initial value when uncontrolled; `null` (default) for none. */
1098
1150
  defaultValue?: Value | null | undefined;
1099
- /** Called with the chosen value. */
1151
+ /** Called with the chosen value, or `null` when the field is cleared. */
1100
1152
  onValueChange?: ((value: Value | null) => void) | undefined;
1101
1153
  /** Shown in the trigger while nothing is chosen. */
1102
1154
  placeholder?: ReactNode | undefined;
1155
+ /**
1156
+ * Shows an × beside the chevron while a value is chosen; pressing it, or Backspace/Delete on the
1157
+ * focused trigger, sets the value to `null` and calls `onValueChange(null)`.
1158
+ */
1159
+ clearable?: boolean | undefined;
1160
+ /** Accessible name of the clear button. Default "Clear". */
1161
+ clearLabel?: string | undefined;
1103
1162
  /** Prevents choosing a different option. */
1104
1163
  readOnly?: boolean | undefined;
1105
1164
  /** Stretches the trigger to the container. */
@@ -1110,7 +1169,7 @@ interface SelectProps<Value extends string = string> extends FieldProps {
1110
1169
  * A labelled single-choice dropdown. Built on Base UI's Select so the list is styled and keyboard
1111
1170
  * complete; submits like a native select through `name`.
1112
1171
  */
1113
- declare function Select<Value extends string = string>({ label, hideLabel, description, error, invalid, required, disabled, name, size, className, options, value, defaultValue, onValueChange, placeholder, readOnly, fullWidth, id, }: SelectProps<Value>): react.JSX.Element;
1172
+ declare function Select<Value extends string = string>({ label, hideLabel, description, error, invalid, required, disabled, name, size, className, options, value, defaultValue, onValueChange, placeholder, clearable, clearLabel, readOnly, fullWidth, id, }: SelectProps<Value>): react.JSX.Element;
1114
1173
 
1115
1174
  interface CheckboxProps extends Omit<Checkbox$1.Root.Props, 'className' | 'onCheckedChange' | 'render' | 'children'> {
1116
1175
  /** Required. The visible label; clicking it toggles the box. */
@@ -1148,16 +1207,19 @@ interface TabsRootProps extends Omit<Tabs$1.Root.Props, 'className' | 'value' |
1148
1207
  className?: string | undefined;
1149
1208
  }
1150
1209
  /** Owns the active tab. Wrap a `Tabs.List` and one `Tabs.Panel` per tab. */
1151
- declare function Root$2({ className, onValueChange, ...rest }: TabsRootProps): react.JSX.Element;
1210
+ declare function Root$4({ className, onValueChange, ...rest }: TabsRootProps): react.JSX.Element;
1211
+ type TabsListVariant = 'line' | 'segmented';
1152
1212
  interface TabsListProps extends Omit<Tabs$1.List.Props, 'className'> {
1153
1213
  /** Names the set of tabs for assistive tech: "Inbox sections". */
1154
1214
  'aria-label': string;
1155
1215
  /** Tabs share the width equally instead of sizing to their labels. */
1156
1216
  fill?: boolean | undefined;
1217
+ /** `line` (default): an accent underline on the active tab. `segmented`: a quiet segmented control, a sunken track with the active tab raised and no accent colour. */
1218
+ variant?: TabsListVariant | undefined;
1157
1219
  className?: string | undefined;
1158
1220
  }
1159
1221
  /** The row of tabs with the sliding indicator. Arrow keys move between tabs; Enter or Space activates. */
1160
- declare function List({ fill, className, children, ...rest }: TabsListProps): react.JSX.Element;
1222
+ declare function List({ fill, variant, className, children, ...rest }: TabsListProps): react.JSX.Element;
1161
1223
  interface TabsTabProps extends Omit<Tabs$1.Tab.Props, 'className' | 'value'> {
1162
1224
  value: string;
1163
1225
  /** A 16px icon before the label. */
@@ -1176,7 +1238,7 @@ interface TabsPanelProps extends Omit<Tabs$1.Panel.Props, 'className' | 'value'>
1176
1238
  declare function Panel({ className, ...rest }: TabsPanelProps): react.JSX.Element;
1177
1239
  /** Switches between sections of one view. Built on Base UI's Tabs. */
1178
1240
  declare const Tabs: {
1179
- Root: typeof Root$2;
1241
+ Root: typeof Root$4;
1180
1242
  List: typeof List;
1181
1243
  Tab: typeof Tab;
1182
1244
  Panel: typeof Panel;
@@ -1195,7 +1257,7 @@ interface ToolbarRootProps extends Omit<Toolbar$1.Root.Props, 'className'> {
1195
1257
  * A row of controls with one tab stop: Tab enters, arrow keys move between items, Tab leaves. Put every
1196
1258
  * control through `Toolbar.Button` (`render={<IconButton … />}`) so it joins the roving focus.
1197
1259
  */
1198
- declare function Root$1({ wrap, gap, className, ...rest }: ToolbarRootProps): react.JSX.Element;
1260
+ declare function Root$3({ wrap, gap, className, ...rest }: ToolbarRootProps): react.JSX.Element;
1199
1261
  interface ToolbarGroupProps extends Omit<Toolbar$1.Group.Props, 'className'> {
1200
1262
  /** Names the group: "Playback". */
1201
1263
  'aria-label'?: string | undefined;
@@ -1213,6 +1275,9 @@ declare function Separator({ className, ...rest }: ToolbarSeparatorProps): react
1213
1275
  interface ToolbarButtonProps extends Omit<Toolbar$1.Button.Props, 'className'> {
1214
1276
  className?: string | undefined;
1215
1277
  }
1278
+ interface ToolbarLinkProps extends Omit<Toolbar$1.Link.Props, 'className'> {
1279
+ className?: string | undefined;
1280
+ }
1216
1281
  interface ToolbarSpacerProps {
1217
1282
  className?: string | undefined;
1218
1283
  }
@@ -1220,10 +1285,11 @@ interface ToolbarSpacerProps {
1220
1285
  declare function Spacer({ className }: ToolbarSpacerProps): react.JSX.Element;
1221
1286
  /** A horizontal container of controls. Built on Base UI's Toolbar. */
1222
1287
  declare const Toolbar: {
1223
- Root: typeof Root$1;
1288
+ Root: typeof Root$3;
1224
1289
  Group: typeof Group;
1225
1290
  Separator: typeof Separator;
1226
1291
  Button: react.ForwardRefExoticComponent<Omit<_base_ui_react.ToolbarButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
1292
+ Link: react.ForwardRefExoticComponent<Omit<_base_ui_react.ToolbarLinkProps, "ref"> & react.RefAttributes<HTMLAnchorElement>>;
1227
1293
  Spacer: typeof Spacer;
1228
1294
  };
1229
1295
 
@@ -1287,20 +1353,20 @@ interface ProgressProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {
1287
1353
  * Says that something is processing and, when known, how far along it is. Built on Base UI's Progress:
1288
1354
  * `role="progressbar"` with the aria value attributes, or none while indeterminate.
1289
1355
  */
1290
- declare function Progress({ value, max, min, label, valueText, showValue, tone, size, variant, className, ...rest }: ProgressProps): react.JSX.Element;
1356
+ declare function Progress$1({ value, max, min, label, valueText, showValue, tone, size, variant, className, ...rest }: ProgressProps): react.JSX.Element;
1291
1357
 
1292
1358
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
1293
- type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
1359
+ type HeadingSize = 'overline' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
1294
1360
  type HeadingElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span' | 'p';
1295
1361
  type TextTone = 'default' | 'muted' | 'subtle' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
1296
1362
  interface HeadingProps extends ComponentPropsWithRef<'h2'> {
1297
1363
  /** The outline level, rendered as `h1`–`h6`. Default 2. */
1298
1364
  level?: HeadingLevel | undefined;
1299
- /** Visual size from the type scale, independent of the level. Defaults by level: 3xl, 2xl, xl, lg, md, sm. */
1365
+ /** Visual size from the type scale, independent of the level. Defaults by level: 3xl, 2xl, xl, lg, md, sm. `overline` is a 12px uppercase mono label with wide tracking, muted by default, for section labels ("Why it fits"). */
1300
1366
  size?: HeadingSize | undefined;
1301
1367
  /** Render a different element and keep the look; `div`/`span` for a card title that is not an outline entry. */
1302
1368
  as?: HeadingElement | undefined;
1303
- /** Colour. Default is the text colour. */
1369
+ /** Colour. Default is the text colour; `muted` for `size="overline"`. */
1304
1370
  tone?: TextTone | undefined;
1305
1371
  /** One line with an ellipsis. */
1306
1372
  truncate?: boolean | undefined;
@@ -1597,6 +1663,7 @@ declare function Heading({ level, size, as, tone, truncate, className, ...rest }
1597
1663
  type TextSize = 'xs' | 'sm' | 'md' | 'lg';
1598
1664
  type TextWeight = 'regular' | 'medium' | 'semibold';
1599
1665
  type TextAlign = 'start' | 'center' | 'end';
1666
+ type TextFamily = 'sans' | 'mono';
1600
1667
  type TextElement = 'p' | 'span' | 'div' | 'label' | 'li' | 'dt' | 'dd' | 'strong' | 'em' | 'small' | 'time' | 'figcaption' | 'legend';
1601
1668
  interface TextProps extends ComponentPropsWithRef<'p'> {
1602
1669
  /** Element to render. Default `p`; `span` inside other text. */
@@ -1611,12 +1678,44 @@ interface TextProps extends ComponentPropsWithRef<'p'> {
1611
1678
  truncate?: boolean | number | undefined;
1612
1679
  /** Tabular figures, for numbers that line up in columns. */
1613
1680
  numeric?: boolean | undefined;
1681
+ /** `sans` (default) or `mono` for data next to prose: row metadata, dates, counts ("Quillstack · 5 h"). */
1682
+ family?: TextFamily | undefined;
1614
1683
  }
1615
1684
  /** Running text and labels from the type scale. Parents own spacing: Text has no margins. */
1616
- declare function Text({ as, size, tone, weight, align, truncate, numeric, className, style, ...rest }: TextProps): ReactElement;
1685
+ declare function Text({ as, size, tone, weight, align, truncate, numeric, family, className, style, ...rest }: TextProps): ReactElement;
1686
+
1687
+ /** The header checkbox: nothing, some or every row selected. */
1688
+ type RowSelectionHeaderState = 'none' | 'some' | 'all';
1689
+
1690
+ interface RowSelection {
1691
+ /** The selectable ids, in the order passed in. */
1692
+ ids: readonly string[];
1693
+ /** The selected ids; a subset of the ids passed in. */
1694
+ selected: ReadonlySet<string>;
1695
+ /** The selected ids in visible order. */
1696
+ selectedIds: readonly string[];
1697
+ count: number;
1698
+ /** Where the next Shift range starts. */
1699
+ anchor: string | null;
1700
+ /** For the header checkbox. */
1701
+ headerState: RowSelectionHeaderState;
1702
+ isSelected: (id: string) => boolean;
1703
+ toggle: (id: string) => void;
1704
+ /** Every row from the anchor to `id`, inclusive, in the current order, takes `id`'s new state. */
1705
+ toggleRange: (id: string) => void;
1706
+ selectAll: () => void;
1707
+ clear: () => void;
1708
+ }
1709
+ /**
1710
+ * Selection state for a list of rows, by id. Pass the selectable ids in visible order (after filtering and
1711
+ * sorting); when one disappears it leaves the selection and the rest stay. Hand the result to
1712
+ * `Table.Root selection` for the checkbox column and keyboard, or read it for a bulk-action bar.
1713
+ */
1714
+ declare function useRowSelection(ids: readonly string[]): RowSelection;
1617
1715
 
1618
1716
  type TableAlign = 'start' | 'center' | 'end';
1619
1717
  type TableDensity = 'comfortable' | 'compact';
1718
+ type TableSortDirection = 'ascending' | 'descending' | 'none';
1620
1719
  interface TableRootProps extends Omit<ComponentPropsWithRef<'table'>, 'style'> {
1621
1720
  /** Column headers stay visible while the table scrolls. Give `maxHeight` to scroll inside the table; otherwise they stick to the page. */
1622
1721
  stickyHeader?: boolean | undefined;
@@ -1633,25 +1732,56 @@ interface TableRootProps extends Omit<ComponentPropsWithRef<'table'>, 'style'> {
1633
1732
  wrapperStyle?: CSSProperties | undefined;
1634
1733
  style?: CSSProperties | undefined;
1635
1734
  children?: ReactNode | undefined;
1735
+ /**
1736
+ * `useRowSelection(ids)`. Turns on the selection column parts (`Table.SelectionHeader`, `Table.SelectionCell`),
1737
+ * modifier clicks on rows with a `selectionId`, and the keyboard: Cmd/Ctrl+A selects every row while focus
1738
+ * is inside the table, Escape clears.
1739
+ */
1740
+ selection?: RowSelection | undefined;
1636
1741
  }
1637
1742
  /** A semantic `<table>` in a horizontally scrolling wrapper. Compose `Table.Head`, `Table.Body`, `Table.Row`, `Table.Header`, `Table.Cell`. */
1638
- declare function Root({ stickyHeader, maxHeight, density, divided, layout, wrapperClassName, wrapperStyle, className, style, children, ...rest }: TableRootProps): react.JSX.Element;
1743
+ declare function Root$2({ stickyHeader, maxHeight, density, divided, layout, wrapperClassName, wrapperStyle, className, style, children, selection, onKeyDown, ...rest }: TableRootProps): react.JSX.Element;
1639
1744
  type TableCaptionProps = ComponentPropsWithRef<'caption'>;
1640
1745
  /** Names the table for assistive tech; visually a muted line above it. */
1641
1746
  declare function Caption({ className, ...rest }: TableCaptionProps): react.JSX.Element;
1642
1747
  type TableHeadProps = ComponentPropsWithRef<'thead'>;
1643
1748
  declare function Head({ className, ...rest }: TableHeadProps): react.JSX.Element;
1644
1749
  type TableBodyProps = ComponentPropsWithRef<'tbody'>;
1645
- declare function Body({ className, ...rest }: TableBodyProps): react.JSX.Element;
1750
+ declare function Body$1({ className, ...rest }: TableBodyProps): react.JSX.Element;
1646
1751
  type TableFootProps = ComponentPropsWithRef<'tfoot'>;
1647
1752
  declare function Foot({ className, ...rest }: TableFootProps): react.JSX.Element;
1648
1753
  interface TableRowProps extends ComponentPropsWithRef<'tr'> {
1649
- /** Accent wash, for the current row. */
1754
+ /** Accent wash, for the current row. With `selectionId` it defaults to the row's selection. */
1650
1755
  selected?: boolean | undefined;
1651
1756
  /** Hover wash and pointer; make the primary cell a link or button for the real target. */
1652
1757
  interactive?: boolean | undefined;
1758
+ /**
1759
+ * The row's id in `Table.Root selection`. Shift+click extends the range to this row and Cmd/Ctrl+click
1760
+ * toggles it, unless the click is on a link, button or field inside the row; neither reaches `onClick`,
1761
+ * so a plain click can still open the row.
1762
+ */
1763
+ selectionId?: string | undefined;
1764
+ }
1765
+ declare function Row({ selected, interactive, selectionId, className, onClick, onMouseDown, ...rest }: TableRowProps): react.JSX.Element;
1766
+ interface TableSelectionHeaderProps extends Omit<ComponentPropsWithRef<'th'>, 'children'> {
1767
+ /** The checkbox's accessible name. Default "Select all rows". */
1768
+ label?: string | undefined;
1653
1769
  }
1654
- declare function Row({ selected, interactive, className, ...rest }: TableRowProps): react.JSX.Element;
1770
+ /**
1771
+ * The selection column's header: a checkbox that is checked when every row is, mixed when some are, and
1772
+ * selects every row (or, when all are selected, none). The whole cell is the hit area.
1773
+ */
1774
+ declare function SelectionHeader({ label, className, onClick, ...rest }: TableSelectionHeaderProps): react.JSX.Element;
1775
+ interface TableSelectionCellProps extends Omit<ComponentPropsWithRef<'td'>, 'children'> {
1776
+ /** Required. Names the row's checkbox: "Select Tailscale, Front End Engineer". */
1777
+ label: string;
1778
+ }
1779
+ /**
1780
+ * The row's checkbox, inside a `Table.Row selectionId`. Click or Space toggles; Shift+click or Shift+Space
1781
+ * extends the range from the last toggled row. The whole cell is the hit area, and its clicks never reach the
1782
+ * row's `onClick`.
1783
+ */
1784
+ declare function SelectionCell({ label, className, onClick, onClickCapture, ...rest }: TableSelectionCellProps): react.JSX.Element;
1655
1785
  interface CellSlots {
1656
1786
  /** Horizontal alignment. Default `start`; `end` for numbers. */
1657
1787
  align?: TableAlign | undefined;
@@ -1665,22 +1795,98 @@ interface CellSlots {
1665
1795
  width?: string | undefined;
1666
1796
  }
1667
1797
  interface TableHeaderProps extends Omit<ComponentPropsWithRef<'th'>, 'align' | 'width'>, CellSlots {
1798
+ /** Renders the label as a button that sorts the column. The table stays controlled: sort the rows yourself in `onSort`. */
1799
+ sortable?: boolean | undefined;
1800
+ /** The column's current sort, reflected as `aria-sort`. `none` (default) for every column but the sorted one. */
1801
+ sortDirection?: TableSortDirection | undefined;
1802
+ /** Called with the direction to apply: `ascending` first, then it toggles. */
1803
+ onSort?: ((direction: Exclude<TableSortDirection, 'none'>) => void) | undefined;
1668
1804
  }
1669
- /** A `<th>`; `scope` defaults to `col` inside `Table.Head` usage and `row` when you say so. */
1670
- declare function Header({ align, numeric, nowrap, truncate, width, scope, className, style, ...rest }: TableHeaderProps): react.JSX.Element;
1805
+ /** A `<th>`; `scope` defaults to `col`, pass `row` for the first cell of a row. */
1806
+ declare function Header$1({ align, numeric, nowrap, truncate, width, sortable, sortDirection, onSort, scope, className, style, children, ...rest }: TableHeaderProps): react.JSX.Element;
1671
1807
  interface TableCellProps extends Omit<ComponentPropsWithRef<'td'>, 'align' | 'width'>, CellSlots {
1672
1808
  }
1673
1809
  declare function Cell({ align, numeric, nowrap, truncate, width, className, style, ...rest }: TableCellProps): react.JSX.Element;
1674
1810
  /** Rows of records with column headers. Native table elements, so screen readers get rows and columns. */
1675
1811
  declare const Table: {
1676
- Root: typeof Root;
1812
+ Root: typeof Root$2;
1677
1813
  Caption: typeof Caption;
1678
1814
  Head: typeof Head;
1679
- Body: typeof Body;
1815
+ Body: typeof Body$1;
1680
1816
  Foot: typeof Foot;
1681
1817
  Row: typeof Row;
1682
- Header: typeof Header;
1818
+ Header: typeof Header$1;
1683
1819
  Cell: typeof Cell;
1820
+ SelectionHeader: typeof SelectionHeader;
1821
+ SelectionCell: typeof SelectionCell;
1822
+ };
1823
+
1824
+ interface SelectionBarProps {
1825
+ /** How many rows are selected. The bar shows from 1 and leaves at 0. */
1826
+ count: number;
1827
+ /** Clears the selection (the Clear button). */
1828
+ onClear: () => void;
1829
+ /** The actions, each a `Toolbar.Button`: `<Toolbar.Button render={<Button size="sm" variant="secondary" />}>Close 3</Toolbar.Button>`. */
1830
+ children?: ReactNode | undefined;
1831
+ /** Names the toolbar. Default "Bulk actions". */
1832
+ 'aria-label'?: string | undefined;
1833
+ /** The count text, visible and announced. Default `${count} selected`. */
1834
+ countLabel?: ((count: number) => string) | undefined;
1835
+ /** Default "Clear". */
1836
+ clearLabel?: string | undefined;
1837
+ /** Announced when the selection goes back to none. Default "Selection cleared". */
1838
+ clearedMessage?: string | undefined;
1839
+ className?: string | undefined;
1840
+ }
1841
+ /**
1842
+ * A floating bar for bulk actions on selected rows, centred at the bottom of the viewport: the count, the actions
1843
+ * and Clear, as one Toolbar (one tab stop, arrow keys inside). A polite status region announces the count as it
1844
+ * changes. Put it after the table, at the end of the scrolling content: while it shows, it leaves a spacer as
1845
+ * tall as itself there, so the last rows can scroll clear of it. When it leaves while holding focus (an action
1846
+ * cleared the selection), focus goes back to where it came from, usually the last row checkbox.
1847
+ */
1848
+ declare function SelectionBar({ count, onClear, children, 'aria-label': ariaLabel, countLabel, clearLabel, clearedMessage, className, }: SelectionBarProps): react.JSX.Element;
1849
+
1850
+ type ToastTone = 'neutral' | 'success' | 'danger';
1851
+ interface ToastOptions {
1852
+ /** Required. One line: "Closed 5 applications". */
1853
+ title: ReactNode;
1854
+ description?: ReactNode | undefined;
1855
+ /** A coloured edge. Default `neutral`. */
1856
+ tone?: ToastTone | undefined;
1857
+ /** One action, usually Undo. It closes the toast after `onClick`. */
1858
+ action?: {
1859
+ label: string;
1860
+ onClick: () => void;
1861
+ } | undefined;
1862
+ /** Milliseconds before it closes; paused while hovered or focused; `0` keeps it. Default: the Provider's. */
1863
+ timeout?: number | undefined;
1864
+ /** `high` announces assertively (errors). Default `low`, polite. */
1865
+ priority?: 'low' | 'high' | undefined;
1866
+ }
1867
+ interface ToastProviderProps {
1868
+ children?: ReactNode | undefined;
1869
+ /** Default auto-close, in milliseconds. Default 6000. */
1870
+ timeout?: number | undefined;
1871
+ /** How many show at once; older ones close. Default 3. */
1872
+ limit?: number | undefined;
1873
+ }
1874
+ /** Holds the toasts for `useToast()` below it and renders them, bottom-end, in the top layer. */
1875
+ declare function Provider({ children, timeout, limit }: ToastProviderProps): react.JSX.Element;
1876
+ interface ToastApi {
1877
+ /** Shows a toast and returns its id. */
1878
+ add: (options: ToastOptions) => string;
1879
+ /** Closes one toast, or every toast without an id. */
1880
+ close: (id?: string) => void;
1881
+ }
1882
+ /** Shows toasts from inside a `Toast.Provider`. */
1883
+ declare function useToast(): ToastApi;
1884
+ /**
1885
+ * Short-lived status messages: "Closed 5 applications · Undo". Built on Base UI's Toast: announced through a
1886
+ * polite region (`priority: 'high'` for errors), paused while hovered or focused, F6 moves focus to them.
1887
+ */
1888
+ declare const Toast: {
1889
+ Provider: typeof Provider;
1684
1890
  };
1685
1891
 
1686
1892
  type StatTrend = 'up' | 'down' | 'flat';
@@ -1997,7 +2203,1103 @@ declare function Stat({ label, value, delta, deltaTone, trend, hint, icon, varia
1997
2203
  'data-size': StatSize;
1998
2204
  }, HTMLDivElement>;
1999
2205
 
2206
+ type ChipTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
2207
+ type ChipSize = 'sm' | 'md';
2208
+ interface ChipProps extends Omit<ComponentPropsWithRef<'span'>, 'onClick' | 'onRemove'> {
2209
+ /** The chip text. Keep it to a word or three. */
2210
+ children: ReactNode;
2211
+ /** A 14px icon before the text. Decorative. */
2212
+ icon?: ReactNode | undefined;
2213
+ /** Colour. `neutral` (default) for filters, a status tone when the chip is the status. */
2214
+ tone?: ChipTone | undefined;
2215
+ /** `md` 32px (default) or `sm` 24px inside table rows and Card headers. */
2216
+ size?: ChipSize | undefined;
2217
+ /** Filled and `aria-pressed`. Use with `onClick` for a toggling filter chip. */
2218
+ selected?: boolean | undefined;
2219
+ /** Makes the chip a `<button>` that toggles; `selected` is reflected as `aria-pressed`. */
2220
+ onClick?: ((event: MouseEvent<HTMLButtonElement>) => void) | undefined;
2221
+ /**
2222
+ * Adds a labelled × that calls this. Backspace or Delete on the focused chip (or on the ×) removes it
2223
+ * too. Focus is yours to manage after removal: move it to the next chip or the filter input.
2224
+ */
2225
+ onRemove?: (() => void) | undefined;
2226
+ /** Accessible name of the ×. Default "Remove" followed by the chip text when that text is a string. */
2227
+ removeLabel?: string | undefined;
2228
+ disabled?: boolean | undefined;
2229
+ }
2230
+ /**
2231
+ * A small pill: an applied filter, a tag, a selectable option in a row of a few. `onClick` makes it a
2232
+ * toggle button, `onRemove` adds the ×, and the two combine. Plain text otherwise.
2233
+ */
2234
+ declare function Chip({ children, icon, tone, size, selected, onClick, onRemove, removeLabel, disabled, className, ...rest }: ChipProps): react.JSX.Element;
2235
+
2236
+ interface DisclosureProps extends Omit<ComponentPropsWithRef<'details'>, 'open' | 'onToggle'> {
2237
+ /** Required. The summary line, a verb phrase: "Show full description". */
2238
+ summary: ReactNode;
2239
+ /** Replaces `summary` while open: "Show less". */
2240
+ summaryOpen?: ReactNode | undefined;
2241
+ /** Controlled open state. */
2242
+ open?: boolean | undefined;
2243
+ /** Initial open state when uncontrolled. */
2244
+ defaultOpen?: boolean | undefined;
2245
+ /** Called when the user toggles it. */
2246
+ onOpenChange?: ((open: boolean) => void) | undefined;
2247
+ /**
2248
+ * While closed, shows this many lines of the content fading out, so a long description still reads
2249
+ * as a teaser. Puts the summary line under the preview. Needs `::details-content` (2025 browsers);
2250
+ * older ones show the summary alone.
2251
+ */
2252
+ previewLines?: number | undefined;
2253
+ /** Puts the summary line above (default) or below the content. Defaults to `end` with `previewLines`. */
2254
+ summaryPosition?: 'start' | 'end' | undefined;
2255
+ children?: ReactNode | undefined;
2256
+ }
2257
+ /**
2258
+ * A native `<details>` collapse with a styled summary. Works without JavaScript, is announced as a
2259
+ * disclosure, and shares `name` with siblings for an exclusive group.
2260
+ */
2261
+ declare function Disclosure({ summary, summaryOpen, open, defaultOpen, onOpenChange, previewLines, summaryPosition, className, style, children, ref, ...rest }: DisclosureProps): react.JSX.Element;
2262
+
2263
+ type EmptyStateSize = 'sm' | 'md';
2264
+ type EmptyStateElement = 'div' | 'section' | 'li';
2265
+ interface EmptyStateProps extends Omit<ComponentPropsWithRef<'div'>, 'title'> {
2266
+ /** Required. What is empty, as a short statement: "No applications yet". */
2267
+ title: ReactNode;
2268
+ /** One sentence on why, or what to do: "Postings you apply to show up here." */
2269
+ description?: ReactNode | undefined;
2270
+ /** A 24px icon in a muted circle above the title. Decorative. */
2271
+ icon?: ReactNode | undefined;
2272
+ /** The actions, usually one primary Button and at most one secondary. Rendered in an Inline. */
2273
+ children?: ReactNode | undefined;
2274
+ /** `md` (default) for a whole view or panel, `sm` inside a Card or a table body. */
2275
+ size?: EmptyStateSize | undefined;
2276
+ /** Element to render. Default `div`. */
2277
+ as?: EmptyStateElement | undefined;
2278
+ }
2279
+ /**
2280
+ * Centred placeholder for a view with nothing in it: an icon, a title, a sentence and the action that
2281
+ * fills it. Say what is missing and the next step; never apologise.
2282
+ */
2283
+ declare function EmptyState({ title, description, icon, children, size, as, className, ...rest }: EmptyStateProps): react.DetailedReactHTMLElement<{
2284
+ slot?: string | undefined | undefined;
2285
+ style?: react.CSSProperties | undefined;
2286
+ ref?: react.Ref<HTMLDivElement> | undefined;
2287
+ key?: react.Key | null | undefined;
2288
+ defaultChecked?: boolean | undefined | undefined;
2289
+ defaultValue?: string | number | readonly string[] | undefined;
2290
+ suppressContentEditableWarning?: boolean | undefined | undefined;
2291
+ suppressHydrationWarning?: boolean | undefined | undefined;
2292
+ accessKey?: string | undefined | undefined;
2293
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
2294
+ autoFocus?: boolean | undefined | undefined;
2295
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
2296
+ contextMenu?: string | undefined | undefined;
2297
+ dir?: string | undefined | undefined;
2298
+ draggable?: (boolean | "true" | "false") | undefined;
2299
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
2300
+ hidden?: boolean | undefined | undefined;
2301
+ id?: string | undefined | undefined;
2302
+ lang?: string | undefined | undefined;
2303
+ nonce?: string | undefined | undefined;
2304
+ spellCheck?: (boolean | "true" | "false") | undefined;
2305
+ tabIndex?: number | undefined | undefined;
2306
+ translate?: "yes" | "no" | undefined | undefined;
2307
+ radioGroup?: string | undefined | undefined;
2308
+ role?: react.AriaRole | undefined;
2309
+ about?: string | undefined | undefined;
2310
+ content?: string | undefined | undefined;
2311
+ datatype?: string | undefined | undefined;
2312
+ inlist?: any;
2313
+ prefix?: string | undefined | undefined;
2314
+ property?: string | undefined | undefined;
2315
+ rel?: string | undefined | undefined;
2316
+ resource?: string | undefined | undefined;
2317
+ rev?: string | undefined | undefined;
2318
+ typeof?: string | undefined | undefined;
2319
+ vocab?: string | undefined | undefined;
2320
+ autoCorrect?: string | undefined | undefined;
2321
+ autoSave?: string | undefined | undefined;
2322
+ color?: string | undefined | undefined;
2323
+ itemProp?: string | undefined | undefined;
2324
+ itemScope?: boolean | undefined | undefined;
2325
+ itemType?: string | undefined | undefined;
2326
+ itemID?: string | undefined | undefined;
2327
+ itemRef?: string | undefined | undefined;
2328
+ results?: number | undefined | undefined;
2329
+ security?: string | undefined | undefined;
2330
+ unselectable?: "on" | "off" | undefined | undefined;
2331
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
2332
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
2333
+ popoverTarget?: string | undefined | undefined;
2334
+ inert?: boolean | undefined | undefined;
2335
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
2336
+ is?: string | undefined | undefined;
2337
+ exportparts?: string | undefined | undefined;
2338
+ part?: string | undefined | undefined;
2339
+ "aria-activedescendant"?: string | undefined | undefined;
2340
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
2341
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
2342
+ "aria-braillelabel"?: string | undefined | undefined;
2343
+ "aria-brailleroledescription"?: string | undefined | undefined;
2344
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
2345
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
2346
+ "aria-colcount"?: number | undefined | undefined;
2347
+ "aria-colindex"?: number | undefined | undefined;
2348
+ "aria-colindextext"?: string | undefined | undefined;
2349
+ "aria-colspan"?: number | undefined | undefined;
2350
+ "aria-controls"?: string | undefined | undefined;
2351
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
2352
+ "aria-describedby"?: string | undefined | undefined;
2353
+ "aria-description"?: string | undefined | undefined;
2354
+ "aria-details"?: string | undefined | undefined;
2355
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
2356
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
2357
+ "aria-errormessage"?: string | undefined | undefined;
2358
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
2359
+ "aria-flowto"?: string | undefined | undefined;
2360
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
2361
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
2362
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
2363
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
2364
+ "aria-keyshortcuts"?: string | undefined | undefined;
2365
+ "aria-label"?: string | undefined | undefined;
2366
+ "aria-labelledby"?: string | undefined | undefined;
2367
+ "aria-level"?: number | undefined | undefined;
2368
+ "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
2369
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
2370
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
2371
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
2372
+ "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
2373
+ "aria-owns"?: string | undefined | undefined;
2374
+ "aria-placeholder"?: string | undefined | undefined;
2375
+ "aria-posinset"?: number | undefined | undefined;
2376
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
2377
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
2378
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
2379
+ "aria-required"?: (boolean | "true" | "false") | undefined;
2380
+ "aria-roledescription"?: string | undefined | undefined;
2381
+ "aria-rowcount"?: number | undefined | undefined;
2382
+ "aria-rowindex"?: number | undefined | undefined;
2383
+ "aria-rowindextext"?: string | undefined | undefined;
2384
+ "aria-rowspan"?: number | undefined | undefined;
2385
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
2386
+ "aria-setsize"?: number | undefined | undefined;
2387
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
2388
+ "aria-valuemax"?: number | undefined | undefined;
2389
+ "aria-valuemin"?: number | undefined | undefined;
2390
+ "aria-valuenow"?: number | undefined | undefined;
2391
+ "aria-valuetext"?: string | undefined | undefined;
2392
+ dangerouslySetInnerHTML?: {
2393
+ __html: string | TrustedHTML;
2394
+ } | undefined | undefined;
2395
+ onCopy?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2396
+ onCopyCapture?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2397
+ onCut?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2398
+ onCutCapture?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2399
+ onPaste?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2400
+ onPasteCapture?: react.ClipboardEventHandler<HTMLDivElement> | undefined;
2401
+ onCompositionEnd?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2402
+ onCompositionEndCapture?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2403
+ onCompositionStart?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2404
+ onCompositionStartCapture?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2405
+ onCompositionUpdate?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2406
+ onCompositionUpdateCapture?: react.CompositionEventHandler<HTMLDivElement> | undefined;
2407
+ onFocus?: react.FocusEventHandler<HTMLDivElement> | undefined;
2408
+ onFocusCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
2409
+ onBlur?: react.FocusEventHandler<HTMLDivElement> | undefined;
2410
+ onBlurCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
2411
+ onChange?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
2412
+ onChangeCapture?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
2413
+ onBeforeInput?: react.InputEventHandler<HTMLDivElement> | undefined;
2414
+ onBeforeInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
2415
+ onInput?: react.InputEventHandler<HTMLDivElement> | undefined;
2416
+ onInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
2417
+ onReset?: react.ReactEventHandler<HTMLDivElement> | undefined;
2418
+ onResetCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2419
+ onSubmit?: react.SubmitEventHandler<HTMLDivElement> | undefined;
2420
+ onSubmitCapture?: react.SubmitEventHandler<HTMLDivElement> | undefined;
2421
+ onInvalid?: react.ReactEventHandler<HTMLDivElement> | undefined;
2422
+ onInvalidCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2423
+ onLoad?: react.ReactEventHandler<HTMLDivElement> | undefined;
2424
+ onLoadCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2425
+ onError?: react.ReactEventHandler<HTMLDivElement> | undefined;
2426
+ onErrorCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2427
+ onKeyDown?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2428
+ onKeyDownCapture?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2429
+ onKeyPress?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2430
+ onKeyPressCapture?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2431
+ onKeyUp?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2432
+ onKeyUpCapture?: react.KeyboardEventHandler<HTMLDivElement> | undefined;
2433
+ onAbort?: react.ReactEventHandler<HTMLDivElement> | undefined;
2434
+ onAbortCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2435
+ onCanPlay?: react.ReactEventHandler<HTMLDivElement> | undefined;
2436
+ onCanPlayCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2437
+ onCanPlayThrough?: react.ReactEventHandler<HTMLDivElement> | undefined;
2438
+ onCanPlayThroughCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2439
+ onDurationChange?: react.ReactEventHandler<HTMLDivElement> | undefined;
2440
+ onDurationChangeCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2441
+ onEmptied?: react.ReactEventHandler<HTMLDivElement> | undefined;
2442
+ onEmptiedCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2443
+ onEncrypted?: react.ReactEventHandler<HTMLDivElement> | undefined;
2444
+ onEncryptedCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2445
+ onEnded?: react.ReactEventHandler<HTMLDivElement> | undefined;
2446
+ onEndedCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2447
+ onLoadedData?: react.ReactEventHandler<HTMLDivElement> | undefined;
2448
+ onLoadedDataCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2449
+ onLoadedMetadata?: react.ReactEventHandler<HTMLDivElement> | undefined;
2450
+ onLoadedMetadataCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2451
+ onLoadStart?: react.ReactEventHandler<HTMLDivElement> | undefined;
2452
+ onLoadStartCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2453
+ onPause?: react.ReactEventHandler<HTMLDivElement> | undefined;
2454
+ onPauseCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2455
+ onPlay?: react.ReactEventHandler<HTMLDivElement> | undefined;
2456
+ onPlayCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2457
+ onPlaying?: react.ReactEventHandler<HTMLDivElement> | undefined;
2458
+ onPlayingCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2459
+ onProgress?: react.ReactEventHandler<HTMLDivElement> | undefined;
2460
+ onProgressCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2461
+ onRateChange?: react.ReactEventHandler<HTMLDivElement> | undefined;
2462
+ onRateChangeCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2463
+ onSeeked?: react.ReactEventHandler<HTMLDivElement> | undefined;
2464
+ onSeekedCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2465
+ onSeeking?: react.ReactEventHandler<HTMLDivElement> | undefined;
2466
+ onSeekingCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2467
+ onStalled?: react.ReactEventHandler<HTMLDivElement> | undefined;
2468
+ onStalledCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2469
+ onSuspend?: react.ReactEventHandler<HTMLDivElement> | undefined;
2470
+ onSuspendCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2471
+ onTimeUpdate?: react.ReactEventHandler<HTMLDivElement> | undefined;
2472
+ onTimeUpdateCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2473
+ onVolumeChange?: react.ReactEventHandler<HTMLDivElement> | undefined;
2474
+ onVolumeChangeCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2475
+ onWaiting?: react.ReactEventHandler<HTMLDivElement> | undefined;
2476
+ onWaitingCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2477
+ onAuxClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
2478
+ onAuxClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2479
+ onClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
2480
+ onClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2481
+ onContextMenu?: react.MouseEventHandler<HTMLDivElement> | undefined;
2482
+ onContextMenuCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2483
+ onDoubleClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
2484
+ onDoubleClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2485
+ onDrag?: react.DragEventHandler<HTMLDivElement> | undefined;
2486
+ onDragCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2487
+ onDragEnd?: react.DragEventHandler<HTMLDivElement> | undefined;
2488
+ onDragEndCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2489
+ onDragEnter?: react.DragEventHandler<HTMLDivElement> | undefined;
2490
+ onDragEnterCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2491
+ onDragExit?: react.DragEventHandler<HTMLDivElement> | undefined;
2492
+ onDragExitCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2493
+ onDragLeave?: react.DragEventHandler<HTMLDivElement> | undefined;
2494
+ onDragLeaveCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2495
+ onDragOver?: react.DragEventHandler<HTMLDivElement> | undefined;
2496
+ onDragOverCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2497
+ onDragStart?: react.DragEventHandler<HTMLDivElement> | undefined;
2498
+ onDragStartCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2499
+ onDrop?: react.DragEventHandler<HTMLDivElement> | undefined;
2500
+ onDropCapture?: react.DragEventHandler<HTMLDivElement> | undefined;
2501
+ onMouseDown?: react.MouseEventHandler<HTMLDivElement> | undefined;
2502
+ onMouseDownCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2503
+ onMouseEnter?: react.MouseEventHandler<HTMLDivElement> | undefined;
2504
+ onMouseLeave?: react.MouseEventHandler<HTMLDivElement> | undefined;
2505
+ onMouseMove?: react.MouseEventHandler<HTMLDivElement> | undefined;
2506
+ onMouseMoveCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2507
+ onMouseOut?: react.MouseEventHandler<HTMLDivElement> | undefined;
2508
+ onMouseOutCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2509
+ onMouseOver?: react.MouseEventHandler<HTMLDivElement> | undefined;
2510
+ onMouseOverCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2511
+ onMouseUp?: react.MouseEventHandler<HTMLDivElement> | undefined;
2512
+ onMouseUpCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
2513
+ onSelect?: react.ReactEventHandler<HTMLDivElement> | undefined;
2514
+ onSelectCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
2515
+ onTouchCancel?: react.TouchEventHandler<HTMLDivElement> | undefined;
2516
+ onTouchCancelCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
2517
+ onTouchEnd?: react.TouchEventHandler<HTMLDivElement> | undefined;
2518
+ onTouchEndCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
2519
+ onTouchMove?: react.TouchEventHandler<HTMLDivElement> | undefined;
2520
+ onTouchMoveCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
2521
+ onTouchStart?: react.TouchEventHandler<HTMLDivElement> | undefined;
2522
+ onTouchStartCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
2523
+ onPointerDown?: react.PointerEventHandler<HTMLDivElement> | undefined;
2524
+ onPointerDownCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2525
+ onPointerMove?: react.PointerEventHandler<HTMLDivElement> | undefined;
2526
+ onPointerMoveCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2527
+ onPointerUp?: react.PointerEventHandler<HTMLDivElement> | undefined;
2528
+ onPointerUpCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2529
+ onPointerCancel?: react.PointerEventHandler<HTMLDivElement> | undefined;
2530
+ onPointerCancelCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2531
+ onPointerEnter?: react.PointerEventHandler<HTMLDivElement> | undefined;
2532
+ onPointerLeave?: react.PointerEventHandler<HTMLDivElement> | undefined;
2533
+ onPointerOver?: react.PointerEventHandler<HTMLDivElement> | undefined;
2534
+ onPointerOverCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2535
+ onPointerOut?: react.PointerEventHandler<HTMLDivElement> | undefined;
2536
+ onPointerOutCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2537
+ onGotPointerCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2538
+ onGotPointerCaptureCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2539
+ onLostPointerCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2540
+ onLostPointerCaptureCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
2541
+ onScroll?: react.UIEventHandler<HTMLDivElement> | undefined;
2542
+ onScrollCapture?: react.UIEventHandler<HTMLDivElement> | undefined;
2543
+ onScrollEnd?: react.UIEventHandler<HTMLDivElement> | undefined;
2544
+ onScrollEndCapture?: react.UIEventHandler<HTMLDivElement> | undefined;
2545
+ onWheel?: react.WheelEventHandler<HTMLDivElement> | undefined;
2546
+ onWheelCapture?: react.WheelEventHandler<HTMLDivElement> | undefined;
2547
+ onAnimationStart?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2548
+ onAnimationStartCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2549
+ onAnimationEnd?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2550
+ onAnimationEndCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2551
+ onAnimationIteration?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2552
+ onAnimationIterationCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
2553
+ onToggle?: react.ToggleEventHandler<HTMLDivElement> | undefined;
2554
+ onBeforeToggle?: react.ToggleEventHandler<HTMLDivElement> | undefined;
2555
+ onTransitionCancel?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2556
+ onTransitionCancelCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2557
+ onTransitionEnd?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2558
+ onTransitionEndCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2559
+ onTransitionRun?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2560
+ onTransitionRunCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2561
+ onTransitionStart?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2562
+ onTransitionStartCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
2563
+ className: string;
2564
+ 'data-size': EmptyStateSize;
2565
+ }, HTMLDivElement>;
2566
+
2567
+ type SkeletonVariant = 'text' | 'rect' | 'circle';
2568
+ interface SkeletonProps extends ComponentPropsWithRef<'span'> {
2569
+ /** `text` (default) is one line of the current font size; `rect` a block; `circle` an avatar. */
2570
+ variant?: SkeletonVariant | undefined;
2571
+ /** Any CSS length. Default: text `100%`, rect `100%`, circle `40px`. */
2572
+ width?: string | number | undefined;
2573
+ /** Any CSS length. Default: text `1em` (one line), rect `80px`, circle = `width`. */
2574
+ height?: string | number | undefined;
2575
+ /** For `text`: how many lines; the last is shorter. Default 1. */
2576
+ lines?: number | undefined;
2577
+ /** Hides the shimmer. Default `false`; reduced motion hides it anyway. */
2578
+ still?: boolean | undefined;
2579
+ }
2580
+ /**
2581
+ * A placeholder shape shown while real content loads. It is hidden from assistive tech: put
2582
+ * `aria-busy="true"` on the region being filled, or a `Spinner` with a label beside it, so the loading
2583
+ * state is announced once instead of per block.
2584
+ */
2585
+ declare function Skeleton({ variant, width, height, lines, still, className, style, ...rest }: SkeletonProps): react.JSX.Element;
2586
+
2587
+ interface FileInputProps extends FieldProps {
2588
+ /** Accepted types, as for the native attribute: `".pdf,.docx,text/plain"` or a list. Extensions, exact MIME types and `image/*` wildcards. */
2589
+ accept?: string | readonly string[] | undefined;
2590
+ /** How the accepted types read in the error message. Default derived from `accept` ("PDF, DOCX or plain text"). */
2591
+ acceptLabel?: string | undefined;
2592
+ /** Largest file accepted, in bytes or as `"10MB"` (base 1000, like the size shown in the list). */
2593
+ maxFileSize?: number | string | undefined;
2594
+ /** Allows several files. Without it a new file replaces the current one. */
2595
+ multiple?: boolean | undefined;
2596
+ /** With `multiple`, the most files the list holds. */
2597
+ maxFiles?: number | undefined;
2598
+ /** Controlled list of accepted files. Pass `[]` to clear. */
2599
+ files?: readonly File[] | undefined;
2600
+ /** Initial files when uncontrolled. */
2601
+ defaultFiles?: readonly File[] | undefined;
2602
+ /** Called with the accepted files (plain `File` objects) after every add or remove. Rejected files never appear here. */
2603
+ onFilesChange?: ((files: File[]) => void) | undefined;
2604
+ /** Drop zone text before the browse link. Default "Drop a file here or" (or "Drop files here or" with `multiple`). */
2605
+ idleLabel?: string | undefined;
2606
+ /** The browse link's text. Default "browse". */
2607
+ browseLabel?: string | undefined;
2608
+ /**
2609
+ * Lets people check a file before it is uploaded: the name of each PDF, plain text, Markdown or image
2610
+ * file becomes a button that opens it in a `FilePreviewDialog`. Other types (DOCX …) show a plain name.
2611
+ * Default `true`; no preview while `disabled`.
2612
+ */
2613
+ preview?: boolean | undefined;
2614
+ }
2615
+ /**
2616
+ * A labelled file picker with a drop zone, on FilePond (docs/adr/0004). Files stay in the browser: the
2617
+ * component hands plain `File` objects to `onFilesChange`, and with `name` it also keeps them in a file
2618
+ * input so a `<form>` (or a Server Action) submits them. Type, size and count are checked before a file
2619
+ * joins the list; a rejected file never joins it, and the reason shows in the field's error slot and is
2620
+ * announced. FilePond loads on mount, so the server renders a static drop zone and nothing of FilePond.
2621
+ */
2622
+ declare function FileInput({ label, hideLabel, description, error, invalid, required, disabled, name, size, className, accept, acceptLabel, maxFileSize, multiple, maxFiles, files, defaultFiles, onFilesChange, idleLabel, browseLabel, preview, }: FileInputProps): react.JSX.Element;
2623
+
2624
+ interface FilePreviewDialogProps {
2625
+ /** The file to show. Kept while the dialog closes, so pass `null` only once it has. */
2626
+ file: File | null | undefined;
2627
+ /** Controlled open state. */
2628
+ open: boolean;
2629
+ /** Called when the dialog asks to close (Esc, the ×, the backdrop). */
2630
+ onOpenChange: (open: boolean) => void;
2631
+ /** Where focus goes on close. Default: the element that had focus when it opened. */
2632
+ finalFocus?: DialogContentProps['finalFocus'];
2633
+ }
2634
+ /**
2635
+ * Shows a local file before it is uploaded: a PDF in the browser's own viewer, plain text and Markdown as
2636
+ * text, an image as an image. Any other type gets a short note and nothing else, because a blob URL runs
2637
+ * with the page's origin: only a PDF is ever framed, and it is re-typed `application/pdf` first, so an HTML
2638
+ * file named `.pdf` cannot run. The object URL exists only while the dialog is open.
2639
+ */
2640
+ declare function FilePreviewDialog({ file, open, onOpenChange, finalFocus }: FilePreviewDialogProps): react.JSX.Element;
2641
+
2642
+ interface PriorityNavItem {
2643
+ /** Where the link goes. */
2644
+ href: string;
2645
+ /** The visible text. A string (or number) is part of the width cache key; see `PriorityNav`. */
2646
+ label: ReactNode;
2647
+ /** A stable key. Defaults to `href`. */
2648
+ id?: string | undefined;
2649
+ /** The page being shown: `aria-current="page"`, and the link never collapses into "More". */
2650
+ current?: boolean | undefined;
2651
+ /**
2652
+ * A small count (`2`) or `'dot'` after the label: something waiting there. `0` shows nothing. Visual only; say
2653
+ * what it means in `badgeLabel`. While the item is collapsed, "More" shows the summed count (or a dot) and adds
2654
+ * the label to its accessible name.
2655
+ */
2656
+ badge?: number | 'dot' | undefined;
2657
+ /** What the badge means, appended to the link's (and, while collapsed, More's) accessible name: "2 suggestions to review". A count without it is read as the bare number; a dot without it is not announced. */
2658
+ badgeLabel?: string | undefined;
2659
+ }
2660
+ /** What `renderLink` receives: spread it onto your link component. */
2661
+ interface PriorityNavLinkProps {
2662
+ href: string;
2663
+ className: string;
2664
+ 'aria-current': 'page' | undefined;
2665
+ onClick: MouseEventHandler<HTMLAnchorElement> | undefined;
2666
+ children: ReactNode;
2667
+ }
2668
+ interface PriorityNavProps extends Omit<ComponentPropsWithRef<'nav'>, 'children'> {
2669
+ /** Names the landmark: "Main". */
2670
+ 'aria-label': string;
2671
+ /** The links, in priority order: the first ones stay inline longest. */
2672
+ items: readonly PriorityNavItem[];
2673
+ /** Visible text of the overflow toggle. Default "More". */
2674
+ moreLabel?: string | undefined;
2675
+ /** Appended to the toggle's accessible name only: "More, 3 links". Default `n link(s)`. */
2676
+ moreCountLabel?: ((hidden: number) => string) | undefined;
2677
+ /** Renders each link. Default a plain `<a>`; pass a router link: `(props) => <Link {...props} />`. */
2678
+ renderLink?: ((props: PriorityNavLinkProps, item: PriorityNavItem) => ReactElement) | undefined;
2679
+ /**
2680
+ * Called when links start or stop collapsing into "More" (also `data-overflowing` on the `nav`), so a
2681
+ * header can make room, e.g. an action button going icon-only.
2682
+ */
2683
+ onOverflowChange?: ((overflowing: boolean) => void) | undefined;
2684
+ /**
2685
+ * Room in px the row must have beyond fitting every link before it stops reporting overflow. Set it to
2686
+ * the space your header gives back on overflow (the button label's width), so the two cannot oscillate.
2687
+ * Default 0.
2688
+ */
2689
+ overflowHysteresis?: number | undefined;
2690
+ }
2691
+ /**
2692
+ * Priority+ navigation: a row of primary links that keeps the ones that fit inline and collapses the rest
2693
+ * into a "More" disclosure at the end of the row. The current page is never collapsed. Follows the
2694
+ * WAI-ARIA APG disclosure navigation pattern (links in a list, a real button with `aria-expanded`), not
2695
+ * `role="menu"`. Server-renders every link inline, so it works before hydration and without JavaScript;
2696
+ * see docs/adr/0005-priority-nav.md.
2697
+ */
2698
+ declare function PriorityNav({ items, moreLabel, moreCountLabel, renderLink, onOverflowChange, overflowHysteresis, className, style, ...rest }: PriorityNavProps): react.JSX.Element;
2699
+
2700
+ type PopoverSide = 'top' | 'bottom' | 'left' | 'right';
2701
+ type PopoverAlign = 'start' | 'center' | 'end';
2702
+ interface PopoverRootProps {
2703
+ /** Controlled open state. */
2704
+ open?: boolean | undefined;
2705
+ /** Initial open state when uncontrolled. */
2706
+ defaultOpen?: boolean | undefined;
2707
+ /** Called when the popover opens or closes. */
2708
+ onOpenChange?: ((open: boolean) => void) | undefined;
2709
+ /** Default `false`: the page stays interactive and focus may leave. `true` makes the page inert until it closes. */
2710
+ modal?: boolean | undefined;
2711
+ children?: ReactNode | undefined;
2712
+ }
2713
+ /** Owns the open state. Wrap a `Popover.Trigger` and a `Popover.Content`. */
2714
+ declare function Root$1({ open, defaultOpen, onOpenChange, modal, children }: PopoverRootProps): react.JSX.Element;
2715
+ interface PopoverTriggerProps extends Omit<Popover$1.Trigger.Props, 'className'> {
2716
+ className?: string | undefined;
2717
+ }
2718
+ /**
2719
+ * Opens the popover. With no `render` it is a secondary Button; pass any Button or IconButton through
2720
+ * `render`: `<Popover.Trigger render={<IconButton label="Sweeps: running" dot="success" />}>`.
2721
+ */
2722
+ declare function Trigger({ render, className, children, ...rest }: PopoverTriggerProps): react.JSX.Element;
2723
+ interface PopoverContentProps extends Omit<Popover$1.Popup.Props, 'className'> {
2724
+ /** Side of the trigger it opens on; flips when there is no room. Default `bottom`. */
2725
+ side?: PopoverSide | undefined;
2726
+ /** Alignment along that side. Default `center`. */
2727
+ align?: PopoverAlign | undefined;
2728
+ /** Distance from the trigger in px. Default 4, or 8 with `arrow`. */
2729
+ sideOffset?: number | undefined;
2730
+ /** Draws a tip pointing at the trigger. */
2731
+ arrow?: boolean | undefined;
2732
+ className?: string | undefined;
2733
+ }
2734
+ /** Portal, positioner and the panel. Any content goes inside; name it with `Popover.Title`. */
2735
+ declare function Content({ side, align, sideOffset, arrow, className, children, ...rest }: PopoverContentProps): react.JSX.Element;
2736
+ interface PopoverTitleProps extends Omit<Popover$1.Title.Props, 'className'> {
2737
+ className?: string | undefined;
2738
+ }
2739
+ /** Names the popover (`aria-labelledby`). A heading, `h2` by default. */
2740
+ declare function Title({ className, ...rest }: PopoverTitleProps): react.JSX.Element;
2741
+ interface PopoverDescriptionProps extends Omit<Popover$1.Description.Props, 'className'> {
2742
+ className?: string | undefined;
2743
+ }
2744
+ /** Describes the popover (`aria-describedby`). Muted text. */
2745
+ declare function Description({ className, ...rest }: PopoverDescriptionProps): react.JSX.Element;
2746
+ interface PopoverCloseProps extends Omit<Popover$1.Close.Props, 'className'> {
2747
+ className?: string | undefined;
2748
+ }
2749
+ /** With no children or `render`, the × in the corner. Otherwise wraps any Button: `<Popover.Close render={<Button variant="ghost" />}>Done</Popover.Close>`. */
2750
+ declare function Close({ className, children, render, ...rest }: PopoverCloseProps): react.JSX.Element;
2751
+ /** A non-modal panel anchored to a trigger, for a small form, a status summary or a legend. Built on Base UI's Popover. */
2752
+ declare const Popover: {
2753
+ Root: typeof Root$1;
2754
+ Trigger: typeof Trigger;
2755
+ Content: typeof Content;
2756
+ Title: typeof Title;
2757
+ Description: typeof Description;
2758
+ Close: typeof Close;
2759
+ };
2760
+
2761
+ interface BroomIconProps extends Omit<ComponentPropsWithRef<'svg'>, 'children'> {
2762
+ /** Sweeps back and forth while dust drifts. With `prefers-reduced-motion` it holds still and shows the dust. */
2763
+ sweeping?: boolean | undefined;
2764
+ /** The Icon sizes (`lg` 20, the nav size, is the default), or `display` (72px, stroke 1.75px) for empty states and showcases. Inside an IconButton it fills the icon slot one step up, since it is drawn on a 24px grid. */
2765
+ size?: IconSize | 'display' | undefined;
2766
+ /** Gives the icon an accessible name (`role="img"`). Without it the icon is decorative and hidden from assistive tech. */
2767
+ title?: string | undefined;
2768
+ }
2769
+ /**
2770
+ * An animated broom on a 24×24 grid, for "a sweep is running". Inline SVG, because CSS cannot animate
2771
+ * inside a `<use>` clone. Strokes keep a fixed screen width at every size (`vector-effect: non-scaling-stroke`).
2772
+ * Decorative by default: say what is happening in the surrounding control's label ("Sweeps: running").
2773
+ */
2774
+ declare function BroomIcon({ sweeping, size, title, className, ...rest }: BroomIconProps): react.JSX.Element;
2775
+
2776
+ /** Which way the flow moved: `forward` slides the new step in from the inline end, `back` from the start. */
2777
+ type FlowDirection = 'forward' | 'back';
2778
+ /** Why the flow asked to close: Esc, or the × in the header. */
2779
+ type FlowCloseRequestReason = 'escape-key' | 'close-press';
2780
+ interface FullScreenFlowRootProps {
2781
+ /** Whether the flow is showing. Default `true`, for a flow that lives on its own route. */
2782
+ open?: boolean | undefined;
2783
+ /**
2784
+ * Esc and the header's × call this instead of closing. Show a leave confirmation (a nested `Dialog`),
2785
+ * then close by setting `open` to `false` or by navigating away. A press on the backdrop does nothing.
2786
+ */
2787
+ onRequestClose: (reason: FlowCloseRequestReason) => void;
2788
+ /** Enter (outside buttons, links, textareas and `[data-flow-keys="local"]`) and the forward arrow key call this. */
2789
+ onNext?: (() => void) | undefined;
2790
+ /** The back arrow key (outside form controls) calls this. */
2791
+ onBack?: (() => void) | undefined;
2792
+ /** A decorative layer behind everything, such as an illustration. Hidden from assistive tech. */
2793
+ decoration?: ReactNode | undefined;
2794
+ className?: string | undefined;
2795
+ /** `Header`, `Body` and `Footer`, in that order. */
2796
+ children?: ReactNode | undefined;
2797
+ }
2798
+ /**
2799
+ * A full-screen modal for a multi-step task, on `Dialog variant="fullscreen"`: focus is trapped, the page
2800
+ * behind is inert, and Esc goes to `onRequestClose`. Holds the polite live region that `Step` announces into.
2801
+ */
2802
+ declare function Root({ open, onRequestClose, onNext, onBack, decoration, className, children, }: FullScreenFlowRootProps): react.JSX.Element;
2803
+ interface FullScreenFlowHeaderProps extends Omit<ComponentPropsWithRef<'div'>, 'title'> {
2804
+ /** The flow's name ("Set up your search"). Labels the dialog. */
2805
+ title: ReactNode;
2806
+ /** A small mark before the title. Decorative. */
2807
+ logo?: ReactNode | undefined;
2808
+ /** Shown instead of `title` below 760px, where the progress drops to its own row: "4 of 10 · Roles". */
2809
+ compactTitle?: ReactNode | undefined;
2810
+ /** A status after the progress, such as a "Saved" tick. */
2811
+ status?: ReactNode | undefined;
2812
+ /** Name of the × button, which calls `onRequestClose('close-press')`. Default "Close". */
2813
+ closeLabel?: string | undefined;
2814
+ /** Usually a `FullScreenFlow.Progress`. */
2815
+ children?: ReactNode | undefined;
2816
+ }
2817
+ /** The top bar: logo and title, progress in the middle, a status, and the ×. Pinned; it never scrolls. */
2818
+ declare function Header({ title, logo, compactTitle, status, closeLabel, className, children, ...rest }: FullScreenFlowHeaderProps): react.JSX.Element;
2819
+ /** A chapter of the flow and how many numbered steps it holds. */
2820
+ interface FlowChapter {
2821
+ label: string;
2822
+ steps: number;
2823
+ }
2824
+ interface FullScreenFlowProgressProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {
2825
+ /** The chapters in order. Each draws one segment, as wide as its share of the steps. */
2826
+ chapters: readonly FlowChapter[];
2827
+ /**
2828
+ * The current step, counted from 1 across every chapter. `0` is before the first (a welcome screen);
2829
+ * anything past the total fills every segment. The current step counts as half done.
2830
+ */
2831
+ step: number;
2832
+ /** One line above the segments: "Step 4 of 10 · Roles · about 5 min left". Hidden below 760px. */
2833
+ label?: ReactNode | undefined;
2834
+ /** Name of the list of segments. Default "Progress". */
2835
+ listLabel?: string | undefined;
2836
+ }
2837
+ /** Segmented progress, one segment per chapter; the chapter holding the current step has `aria-current="step"`. */
2838
+ declare function Progress({ chapters, step, label, listLabel, className, ...rest }: FullScreenFlowProgressProps): react.JSX.Element;
2839
+ type FullScreenFlowBodyProps = ComponentPropsWithRef<'div'>;
2840
+ /** Between header and footer: a `Rail` (from 1000px) beside the `Viewport`. */
2841
+ declare function Body({ className, ...rest }: FullScreenFlowBodyProps): react.JSX.Element;
2842
+ interface FullScreenFlowRailProps extends ComponentPropsWithRef<'nav'> {
2843
+ /** A note under the steps, such as where answers can be changed later. Hidden on short screens. */
2844
+ footer?: ReactNode | undefined;
2845
+ }
2846
+ /** Every step by chapter, shown from 1000px. Holds `RailGroup`s of `RailItem`s. Named "Steps" unless `aria-label` says otherwise. */
2847
+ declare function Rail({ 'aria-label': ariaLabel, footer, className, children, ...rest }: FullScreenFlowRailProps): react.JSX.Element;
2848
+ interface FullScreenFlowRailGroupProps extends Omit<ComponentPropsWithRef<'div'>, 'title'> {
2849
+ /** The chapter name. */
2850
+ label: ReactNode;
2851
+ }
2852
+ /** One chapter in the rail: its name over a list of `RailItem`s. */
2853
+ declare function RailGroup({ label, className, children, ...rest }: FullScreenFlowRailGroupProps): react.JSX.Element;
2854
+ interface FullScreenFlowRailItemProps extends ComponentPropsWithRef<'button'> {
2855
+ /** The step on screen: `aria-current="step"` and the accent wash. */
2856
+ current?: boolean | undefined;
2857
+ /** Shows a check and adds `doneLabel` for assistive tech. */
2858
+ done?: boolean | undefined;
2859
+ /** Read after the label when `done`. Default "done". */
2860
+ doneLabel?: string | undefined;
2861
+ /** A small icon at the end of the row, e.g. "drafted for you". Give it a `title` if it carries meaning. */
2862
+ adornment?: ReactNode | undefined;
2863
+ }
2864
+ /** A step in the rail. A button: disable the steps not reached yet. */
2865
+ declare function RailItem({ current, done, doneLabel, adornment, type, className, children, ...rest }: FullScreenFlowRailItemProps): react.JSX.Element;
2866
+ interface FullScreenFlowViewportProps extends Omit<ComponentPropsWithRef<'div'>, 'children' | 'ref'> {
2867
+ /** Which way this change goes. Set it with the step: `back` when the person went back. Default `forward`. */
2868
+ direction?: FlowDirection | undefined;
2869
+ /** Exactly one `FullScreenFlow.Step`, keyed by step: `<FullScreenFlow.Step key={step.id} …>`. */
2870
+ children: ReactElement;
2871
+ }
2872
+ /**
2873
+ * The scrolling area that shows one step. When the child's `key` changes, the old step slides out and the
2874
+ * new one slides in (by `direction`; a short crossfade under reduced motion), the area scrolls to the top,
2875
+ * and the new step's title takes focus and is announced.
2876
+ */
2877
+ declare function Viewport({ direction, className, children, ...rest }: FullScreenFlowViewportProps): react.JSX.Element;
2878
+ interface FullScreenFlowStepProps extends Omit<ComponentPropsWithRef<'section'>, 'title'> {
2879
+ /** The step's heading, an `<h2>` that takes focus (`tabindex="-1"`) when the step arrives. */
2880
+ title: ReactNode;
2881
+ /** A short line above the title: "Your search · Step 4 of 10". */
2882
+ eyebrow?: ReactNode | undefined;
2883
+ /** Why this step is asked, under the title. */
2884
+ description?: ReactNode | undefined;
2885
+ /** What the live region says when the step arrives: "Step 4 of 10, Roles". Defaults to `title` when it is a string. */
2886
+ announcement?: string | undefined;
2887
+ }
2888
+ /** One step: eyebrow, title, description, then its content. Render it inside `Viewport` with a `key`. */
2889
+ declare function Step({ title, eyebrow, description, announcement, className, children, ...rest }: FullScreenFlowStepProps): react.JSX.Element;
2890
+ interface FullScreenFlowFooterProps extends ComponentPropsWithRef<'div'> {
2891
+ /** At the inline start: a Back button. */
2892
+ back?: ReactNode | undefined;
2893
+ /** Before the actions, from 760px: "Press Enter to continue". */
2894
+ hint?: ReactNode | undefined;
2895
+ /** The primary action, at the inline end; stretches below 520px. */
2896
+ children?: ReactNode | undefined;
2897
+ }
2898
+ /** The pinned bottom bar. Buttons in it are at least 44px tall and wide, and it clears the home indicator. */
2899
+ declare function Footer({ back, hint, className, children, ...rest }: FullScreenFlowFooterProps): react.JSX.Element;
2900
+ /**
2901
+ * A full-screen, multi-step flow (onboarding, setup) on `Dialog variant="fullscreen"`:
2902
+ * `Root` › `Header` (with `Progress`) · `Body` (`Rail` › `RailGroup` › `RailItem`, and `Viewport` › `Step`) · `Footer`.
2903
+ * The app owns the state (which step, which direction); this owns the surface, motion, focus and announcements.
2904
+ */
2905
+ declare const FullScreenFlow: {
2906
+ Root: typeof Root;
2907
+ Header: typeof Header;
2908
+ Progress: typeof Progress;
2909
+ Body: typeof Body;
2910
+ Rail: typeof Rail;
2911
+ RailGroup: typeof RailGroup;
2912
+ RailItem: typeof RailItem;
2913
+ Viewport: typeof Viewport;
2914
+ Step: typeof Step;
2915
+ Footer: typeof Footer;
2916
+ };
2917
+
2918
+ type ScoreTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger';
2919
+ type ScoreSize = 'sm' | 'md';
2920
+ type ScoreVariant = 'tile' | 'ring';
2921
+ interface ScoreProps extends Omit<ComponentPropsWithRef<'span'>, 'children'> {
2922
+ /**
2923
+ * The number shown, e.g. a fit score. Rendered as given; round it first. `null` means not scored yet: a neutral
2924
+ * tile (or an empty ring) with a dash, read as "{label}: not scored", and `tone` is ignored.
2925
+ */
2926
+ value: number | null;
2927
+ /** The top of the scale. Default 100. Fills the ring and ends the default accessible text. */
2928
+ max?: number | undefined;
2929
+ /** Colour. The system holds no thresholds: map the value to a tone in the app. Default `accent`. */
2930
+ tone?: ScoreTone | undefined;
2931
+ /** `tile` (default), a number on a tinted square, or `ring`, a donut for detail headers. */
2932
+ variant?: ScoreVariant | undefined;
2933
+ /** Tile size: `sm` 40px for list rows (default), `md` 48px. The ring is 64px. */
2934
+ size?: ScoreSize | undefined;
2935
+ /** A short word under the number: "fit". Visual only; say it in `label`. */
2936
+ caption?: ReactNode | undefined;
2937
+ /** What the number measures, read before it: "Fit score". Default "Score". */
2938
+ label?: string | undefined;
2939
+ /** The whole text assistive tech reads instead of the default "{label} {value} out of {max}" ("{label}: not scored" without a value). */
2940
+ valueText?: string | undefined;
2941
+ /** Shows the selected look (solid fill). Also on automatically inside a selected Card or an element with `aria-pressed="true"` or `aria-selected="true"`. */
2942
+ selected?: boolean | undefined;
2943
+ }
2944
+ /**
2945
+ * A score as a number on a tinted tile or inside a ring. The number and caption are visual; assistive tech reads one
2946
+ * visually hidden sentence ("Fit score 94 out of 100"), so the score is named without `aria-label` on a non-interactive
2947
+ * element and reads whole inside a row button. A `null` value is "not scored": a dash, no tone, no arc.
2948
+ */
2949
+ declare function Score({ value, max, tone, variant, size, caption, label, valueText, selected, className, style, ...rest }: ScoreProps): react.JSX.Element;
2950
+
2951
+ type ReasonTone = 'for' | 'against' | 'gap';
2952
+ type ReasonListSize = 'sm' | 'md';
2953
+ interface ReasonListProps extends ComponentPropsWithRef<'ul'> {
2954
+ /** What every item in the list is: `for` (a filled square), `against` (a bar) or `gap` (a hollow circle). Shape and colour both carry it. */
2955
+ tone: ReasonTone;
2956
+ /** `md` 14px (default) for a detail view, `sm` 12px for the compact form inside a card. */
2957
+ size?: ReasonListSize | undefined;
2958
+ /** A dashed rule above the list, for the compact form under a card's title. */
2959
+ divider?: boolean | undefined;
2960
+ }
2961
+ type ReasonListItemProps = ComponentPropsWithRef<'li'>;
2962
+ /**
2963
+ * A list of reasons with a marker shape per tone, so the meaning is never colour alone. Name the list with a
2964
+ * heading ("Why it fits", "Watch for") and point `aria-labelledby` at it: the heading says what the marker means.
2965
+ */
2966
+ declare function ReasonListRoot({ tone, size, divider, className, ...rest }: ReasonListProps): react.JSX.Element;
2967
+ /** One reason. `<strong>` inside picks out the key words in the default text colour. */
2968
+ declare function ReasonListItem({ className, ...rest }: ReasonListItemProps): react.JSX.Element;
2969
+ declare const ReasonList: typeof ReasonListRoot & {
2970
+ Item: typeof ReasonListItem;
2971
+ };
2972
+
2973
+ type WordDiffKind = 'same' | 'added' | 'removed';
2974
+ interface WordDiffPart {
2975
+ kind: WordDiffKind;
2976
+ text: string;
2977
+ }
2978
+ type WordDiffElement = 'p' | 'div' | 'span';
2979
+ type WordDiffSize = 'sm' | 'md';
2980
+ type WordDiffFamily = 'sans' | 'mono';
2981
+ interface WordDiffProps extends Omit<ComponentPropsWithRef<'p'>, 'children'> {
2982
+ /** Runs of unchanged, removed and added text, in reading order, whitespace included. Rendered exactly: joining every `text` gives the visible string. */
2983
+ parts: readonly WordDiffPart[];
2984
+ /** Element to render. Default `p`; `div` or `span` inside other text. */
2985
+ as?: WordDiffElement | undefined;
2986
+ /** `sm` 14px UI text (default) or `md` body copy. */
2987
+ size?: WordDiffSize | undefined;
2988
+ /**
2989
+ * `sans` prose (default), or `mono` for code and structured text (YAML, JSON, Markdown source): the mono face, no
2990
+ * reading-measure cap, and marks without side padding so columns stay aligned.
2991
+ */
2992
+ family?: WordDiffFamily | undefined;
2993
+ /** Screen reader word around added text: "[added: …]". Default "added". */
2994
+ addedLabel?: string | undefined;
2995
+ /** Screen reader word around removed text: "[removed: …]". Default "removed". */
2996
+ removedLabel?: string | undefined;
2997
+ }
2998
+ /**
2999
+ * A word-level diff as prose: removed text struck through and added text underlined, each on a tint, inside real
3000
+ * `<del>` and `<ins>` with "[removed: …]" / "[added: …]" for screen readers. The line, not the colour, carries the
3001
+ * meaning. Whitespace is preserved exactly (`white-space: pre-wrap`).
3002
+ */
3003
+ declare function WordDiff({ parts, as, size, family, addedLabel, removedLabel, className, ...rest }: WordDiffProps): react.DetailedReactHTMLElement<{
3004
+ slot?: string | undefined | undefined;
3005
+ style?: react.CSSProperties | undefined;
3006
+ title?: string | undefined | undefined;
3007
+ ref?: react.Ref<HTMLParagraphElement> | undefined;
3008
+ key?: react.Key | null | undefined;
3009
+ defaultChecked?: boolean | undefined | undefined;
3010
+ defaultValue?: string | number | readonly string[] | undefined;
3011
+ suppressContentEditableWarning?: boolean | undefined | undefined;
3012
+ suppressHydrationWarning?: boolean | undefined | undefined;
3013
+ accessKey?: string | undefined | undefined;
3014
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
3015
+ autoFocus?: boolean | undefined | undefined;
3016
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
3017
+ contextMenu?: string | undefined | undefined;
3018
+ dir?: string | undefined | undefined;
3019
+ draggable?: (boolean | "true" | "false") | undefined;
3020
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
3021
+ hidden?: boolean | undefined | undefined;
3022
+ id?: string | undefined | undefined;
3023
+ lang?: string | undefined | undefined;
3024
+ nonce?: string | undefined | undefined;
3025
+ spellCheck?: (boolean | "true" | "false") | undefined;
3026
+ tabIndex?: number | undefined | undefined;
3027
+ translate?: "yes" | "no" | undefined | undefined;
3028
+ radioGroup?: string | undefined | undefined;
3029
+ role?: react.AriaRole | undefined;
3030
+ about?: string | undefined | undefined;
3031
+ content?: string | undefined | undefined;
3032
+ datatype?: string | undefined | undefined;
3033
+ inlist?: any;
3034
+ prefix?: string | undefined | undefined;
3035
+ property?: string | undefined | undefined;
3036
+ rel?: string | undefined | undefined;
3037
+ resource?: string | undefined | undefined;
3038
+ rev?: string | undefined | undefined;
3039
+ typeof?: string | undefined | undefined;
3040
+ vocab?: string | undefined | undefined;
3041
+ autoCorrect?: string | undefined | undefined;
3042
+ autoSave?: string | undefined | undefined;
3043
+ color?: string | undefined | undefined;
3044
+ itemProp?: string | undefined | undefined;
3045
+ itemScope?: boolean | undefined | undefined;
3046
+ itemType?: string | undefined | undefined;
3047
+ itemID?: string | undefined | undefined;
3048
+ itemRef?: string | undefined | undefined;
3049
+ results?: number | undefined | undefined;
3050
+ security?: string | undefined | undefined;
3051
+ unselectable?: "on" | "off" | undefined | undefined;
3052
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
3053
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
3054
+ popoverTarget?: string | undefined | undefined;
3055
+ inert?: boolean | undefined | undefined;
3056
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
3057
+ is?: string | undefined | undefined;
3058
+ exportparts?: string | undefined | undefined;
3059
+ part?: string | undefined | undefined;
3060
+ "aria-activedescendant"?: string | undefined | undefined;
3061
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
3062
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
3063
+ "aria-braillelabel"?: string | undefined | undefined;
3064
+ "aria-brailleroledescription"?: string | undefined | undefined;
3065
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
3066
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
3067
+ "aria-colcount"?: number | undefined | undefined;
3068
+ "aria-colindex"?: number | undefined | undefined;
3069
+ "aria-colindextext"?: string | undefined | undefined;
3070
+ "aria-colspan"?: number | undefined | undefined;
3071
+ "aria-controls"?: string | undefined | undefined;
3072
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
3073
+ "aria-describedby"?: string | undefined | undefined;
3074
+ "aria-description"?: string | undefined | undefined;
3075
+ "aria-details"?: string | undefined | undefined;
3076
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
3077
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
3078
+ "aria-errormessage"?: string | undefined | undefined;
3079
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
3080
+ "aria-flowto"?: string | undefined | undefined;
3081
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
3082
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
3083
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
3084
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
3085
+ "aria-keyshortcuts"?: string | undefined | undefined;
3086
+ "aria-label"?: string | undefined | undefined;
3087
+ "aria-labelledby"?: string | undefined | undefined;
3088
+ "aria-level"?: number | undefined | undefined;
3089
+ "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
3090
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
3091
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
3092
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
3093
+ "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
3094
+ "aria-owns"?: string | undefined | undefined;
3095
+ "aria-placeholder"?: string | undefined | undefined;
3096
+ "aria-posinset"?: number | undefined | undefined;
3097
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
3098
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
3099
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
3100
+ "aria-required"?: (boolean | "true" | "false") | undefined;
3101
+ "aria-roledescription"?: string | undefined | undefined;
3102
+ "aria-rowcount"?: number | undefined | undefined;
3103
+ "aria-rowindex"?: number | undefined | undefined;
3104
+ "aria-rowindextext"?: string | undefined | undefined;
3105
+ "aria-rowspan"?: number | undefined | undefined;
3106
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
3107
+ "aria-setsize"?: number | undefined | undefined;
3108
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
3109
+ "aria-valuemax"?: number | undefined | undefined;
3110
+ "aria-valuemin"?: number | undefined | undefined;
3111
+ "aria-valuenow"?: number | undefined | undefined;
3112
+ "aria-valuetext"?: string | undefined | undefined;
3113
+ dangerouslySetInnerHTML?: {
3114
+ __html: string | TrustedHTML;
3115
+ } | undefined | undefined;
3116
+ onCopy?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3117
+ onCopyCapture?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3118
+ onCut?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3119
+ onCutCapture?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3120
+ onPaste?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3121
+ onPasteCapture?: react.ClipboardEventHandler<HTMLParagraphElement> | undefined;
3122
+ onCompositionEnd?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3123
+ onCompositionEndCapture?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3124
+ onCompositionStart?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3125
+ onCompositionStartCapture?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3126
+ onCompositionUpdate?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3127
+ onCompositionUpdateCapture?: react.CompositionEventHandler<HTMLParagraphElement> | undefined;
3128
+ onFocus?: react.FocusEventHandler<HTMLParagraphElement> | undefined;
3129
+ onFocusCapture?: react.FocusEventHandler<HTMLParagraphElement> | undefined;
3130
+ onBlur?: react.FocusEventHandler<HTMLParagraphElement> | undefined;
3131
+ onBlurCapture?: react.FocusEventHandler<HTMLParagraphElement> | undefined;
3132
+ onChange?: react.ChangeEventHandler<HTMLParagraphElement, Element> | undefined;
3133
+ onChangeCapture?: react.ChangeEventHandler<HTMLParagraphElement, Element> | undefined;
3134
+ onBeforeInput?: react.InputEventHandler<HTMLParagraphElement> | undefined;
3135
+ onBeforeInputCapture?: react.InputEventHandler<HTMLParagraphElement> | undefined;
3136
+ onInput?: react.InputEventHandler<HTMLParagraphElement> | undefined;
3137
+ onInputCapture?: react.InputEventHandler<HTMLParagraphElement> | undefined;
3138
+ onReset?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3139
+ onResetCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3140
+ onSubmit?: react.SubmitEventHandler<HTMLParagraphElement> | undefined;
3141
+ onSubmitCapture?: react.SubmitEventHandler<HTMLParagraphElement> | undefined;
3142
+ onInvalid?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3143
+ onInvalidCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3144
+ onLoad?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3145
+ onLoadCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3146
+ onError?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3147
+ onErrorCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3148
+ onKeyDown?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3149
+ onKeyDownCapture?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3150
+ onKeyPress?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3151
+ onKeyPressCapture?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3152
+ onKeyUp?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3153
+ onKeyUpCapture?: react.KeyboardEventHandler<HTMLParagraphElement> | undefined;
3154
+ onAbort?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3155
+ onAbortCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3156
+ onCanPlay?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3157
+ onCanPlayCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3158
+ onCanPlayThrough?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3159
+ onCanPlayThroughCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3160
+ onDurationChange?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3161
+ onDurationChangeCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3162
+ onEmptied?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3163
+ onEmptiedCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3164
+ onEncrypted?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3165
+ onEncryptedCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3166
+ onEnded?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3167
+ onEndedCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3168
+ onLoadedData?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3169
+ onLoadedDataCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3170
+ onLoadedMetadata?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3171
+ onLoadedMetadataCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3172
+ onLoadStart?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3173
+ onLoadStartCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3174
+ onPause?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3175
+ onPauseCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3176
+ onPlay?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3177
+ onPlayCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3178
+ onPlaying?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3179
+ onPlayingCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3180
+ onProgress?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3181
+ onProgressCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3182
+ onRateChange?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3183
+ onRateChangeCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3184
+ onSeeked?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3185
+ onSeekedCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3186
+ onSeeking?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3187
+ onSeekingCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3188
+ onStalled?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3189
+ onStalledCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3190
+ onSuspend?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3191
+ onSuspendCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3192
+ onTimeUpdate?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3193
+ onTimeUpdateCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3194
+ onVolumeChange?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3195
+ onVolumeChangeCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3196
+ onWaiting?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3197
+ onWaitingCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3198
+ onAuxClick?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3199
+ onAuxClickCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3200
+ onClick?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3201
+ onClickCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3202
+ onContextMenu?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3203
+ onContextMenuCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3204
+ onDoubleClick?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3205
+ onDoubleClickCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3206
+ onDrag?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3207
+ onDragCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3208
+ onDragEnd?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3209
+ onDragEndCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3210
+ onDragEnter?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3211
+ onDragEnterCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3212
+ onDragExit?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3213
+ onDragExitCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3214
+ onDragLeave?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3215
+ onDragLeaveCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3216
+ onDragOver?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3217
+ onDragOverCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3218
+ onDragStart?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3219
+ onDragStartCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3220
+ onDrop?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3221
+ onDropCapture?: react.DragEventHandler<HTMLParagraphElement> | undefined;
3222
+ onMouseDown?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3223
+ onMouseDownCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3224
+ onMouseEnter?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3225
+ onMouseLeave?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3226
+ onMouseMove?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3227
+ onMouseMoveCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3228
+ onMouseOut?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3229
+ onMouseOutCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3230
+ onMouseOver?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3231
+ onMouseOverCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3232
+ onMouseUp?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3233
+ onMouseUpCapture?: react.MouseEventHandler<HTMLParagraphElement> | undefined;
3234
+ onSelect?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3235
+ onSelectCapture?: react.ReactEventHandler<HTMLParagraphElement> | undefined;
3236
+ onTouchCancel?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3237
+ onTouchCancelCapture?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3238
+ onTouchEnd?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3239
+ onTouchEndCapture?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3240
+ onTouchMove?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3241
+ onTouchMoveCapture?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3242
+ onTouchStart?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3243
+ onTouchStartCapture?: react.TouchEventHandler<HTMLParagraphElement> | undefined;
3244
+ onPointerDown?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3245
+ onPointerDownCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3246
+ onPointerMove?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3247
+ onPointerMoveCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3248
+ onPointerUp?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3249
+ onPointerUpCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3250
+ onPointerCancel?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3251
+ onPointerCancelCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3252
+ onPointerEnter?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3253
+ onPointerLeave?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3254
+ onPointerOver?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3255
+ onPointerOverCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3256
+ onPointerOut?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3257
+ onPointerOutCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3258
+ onGotPointerCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3259
+ onGotPointerCaptureCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3260
+ onLostPointerCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3261
+ onLostPointerCaptureCapture?: react.PointerEventHandler<HTMLParagraphElement> | undefined;
3262
+ onScroll?: react.UIEventHandler<HTMLParagraphElement> | undefined;
3263
+ onScrollCapture?: react.UIEventHandler<HTMLParagraphElement> | undefined;
3264
+ onScrollEnd?: react.UIEventHandler<HTMLParagraphElement> | undefined;
3265
+ onScrollEndCapture?: react.UIEventHandler<HTMLParagraphElement> | undefined;
3266
+ onWheel?: react.WheelEventHandler<HTMLParagraphElement> | undefined;
3267
+ onWheelCapture?: react.WheelEventHandler<HTMLParagraphElement> | undefined;
3268
+ onAnimationStart?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3269
+ onAnimationStartCapture?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3270
+ onAnimationEnd?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3271
+ onAnimationEndCapture?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3272
+ onAnimationIteration?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3273
+ onAnimationIterationCapture?: react.AnimationEventHandler<HTMLParagraphElement> | undefined;
3274
+ onToggle?: react.ToggleEventHandler<HTMLParagraphElement> | undefined;
3275
+ onBeforeToggle?: react.ToggleEventHandler<HTMLParagraphElement> | undefined;
3276
+ onTransitionCancel?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3277
+ onTransitionCancelCapture?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3278
+ onTransitionEnd?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3279
+ onTransitionEndCapture?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3280
+ onTransitionRun?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3281
+ onTransitionRunCapture?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3282
+ onTransitionStart?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3283
+ onTransitionStartCapture?: react.TransitionEventHandler<HTMLParagraphElement> | undefined;
3284
+ 'data-family'?: string;
3285
+ className: string;
3286
+ 'data-size': WordDiffSize;
3287
+ }, HTMLParagraphElement>;
3288
+
3289
+ interface QuoteProps extends ComponentPropsWithRef<'figure'> {
3290
+ /** Who said it, shown as a small overline before the words: "You". */
3291
+ label: ReactNode;
3292
+ /** The quoted words. Phrasing content: the quote renders inline after the label. */
3293
+ children: ReactNode;
3294
+ }
3295
+ /**
3296
+ * Someone's own words echoed back on the accent wash, with who said them: the instruction you gave above the
3297
+ * rewrite it produced. A `<figure>` whose `<figcaption>` is the label and whose `<blockquote>` is the text, so the
3298
+ * attribution is part of the semantics, not just the styling.
3299
+ */
3300
+ declare function Quote({ label, className, children, ...rest }: QuoteProps): react.JSX.Element;
3301
+
2000
3302
  declare const version = "0.1.1";
2001
3303
 
2002
- export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, Badge, Banner, BellIcon, BriefcaseIcon, Button, CalendarIcon, Card, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleCheckIcon, CircleXIcon, ClockIcon, CopyIcon, Dialog, DocumentIcon, DownloadIcon, EditIcon, ExternalLinkIcon, EyeIcon, FilterIcon, FlagIcon, Heading, Icon, IconButton, InboxIcon, InfoIcon, Inline, Input, Kbd, LinkIcon, MailIcon, MapPinIcon, Menu, MenuIcon, MinusIcon, MoonIcon, MoreHorizontalIcon, MoreVerticalIcon, PauseIcon, PlayIcon, PlusIcon, Progress, RefreshIcon, SearchIcon, Select, SettingsIcon, Spinner, Stack, StarIcon, Stat, SunIcon, Switch, Table, Tabs, Text, Textarea, ThumbsDownIcon, ThumbsUpIcon, Toolbar, Tooltip, TrashIcon, UndoIcon, UserIcon, WarningIcon, XIcon, iconNames, version };
2003
- export type { BadgeProps, BadgeSize, BadgeTone, BadgeVariant, BannerProps, BannerTone, ButtonProps, ButtonSize, ButtonVariant, CardElement, CardPadding, CardProps, CardVariant, CheckboxProps, ControlSize, DialogActionsProps, DialogBodyProps, DialogCloseProps, DialogContentProps, DialogDescriptionProps, DialogRootProps, DialogSize, DialogTitleProps, FieldProps, HeadingElement, HeadingLevel, HeadingProps, HeadingSize, IconButtonProps, IconGlyphProps, IconName, IconProps, IconSize, InlineAlign, InlineElement, InlineJustify, InlineProps, InputProps, KbdGroupProps, KbdProps, MenuAlign, MenuCheckboxItemProps, MenuContentProps, MenuGroupProps, MenuItemProps, MenuItemTone, MenuLinkItemProps, MenuRadioGroupProps, MenuRadioItemProps, MenuRootProps, MenuSeparatorProps, MenuSide, MenuTriggerProps, ProgressProps, ProgressSize, ProgressTone, ProgressVariant, SelectGroup, SelectOption, SelectProps, SpacingSize, SpinnerProps, StackAlign, StackElement, StackJustify, StackProps, StatDeltaTone, StatElement, StatProps, StatSize, StatTrend, StatVariant, SwitchProps, TableAlign, TableBodyProps, TableCaptionProps, TableCellProps, TableDensity, TableFootProps, TableHeadProps, TableHeaderProps, TableRootProps, TableRowProps, TabsListProps, TabsPanelProps, TabsRootProps, TabsTabProps, TextAlign, TextElement, TextProps, TextSize, TextTone, TextWeight, TextareaProps, ToolbarButtonProps, ToolbarGroupProps, ToolbarRootProps, ToolbarSeparatorProps, ToolbarSpacerProps, TooltipAlign, TooltipProps, TooltipSide };
3304
+ export { ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpIcon, Badge, Banner, BellIcon, BriefcaseIcon, BroomIcon, Button, CalendarIcon, Card, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, Chip, CircleCheckIcon, CircleXIcon, ClockIcon, CopyIcon, Dialog, Disclosure, DocumentIcon, DownloadIcon, EditIcon, EmptyState, ExternalLinkIcon, EyeIcon, FileInput, FilePreviewDialog, FilterIcon, FlagIcon, FullScreenFlow, Heading, Icon, IconButton, InboxIcon, InfoIcon, Inline, Input, Kbd, LinkIcon, MailIcon, MapPinIcon, Menu, MenuIcon, MinusIcon, MoonIcon, MoreHorizontalIcon, MoreVerticalIcon, PauseIcon, PlayIcon, PlusIcon, Popover, PriorityNav, Progress$1 as Progress, Quote, ReasonList, RefreshIcon, Score, SearchIcon, Select, SelectionBar, SettingsIcon, Skeleton, Spinner, Stack, StarIcon, Stat, SunIcon, Switch, Table, Tabs, Text, Textarea, ThumbsDownIcon, ThumbsUpIcon, Toast, Toolbar, Tooltip, TrashIcon, UndoIcon, UserIcon, WarningIcon, WordDiff, XIcon, iconNames, useRowSelection, useToast, version };
3305
+ export type { BadgeProps, BadgeSize, BadgeTone, BadgeVariant, BannerProps, BannerTone, BroomIconProps, ButtonProps, ButtonSize, ButtonVariant, CardElement, CardPadding, CardProps, CardVariant, CheckboxProps, ChipProps, ChipSize, ChipTone, ControlSize, DialogActionsProps, DialogBodyProps, DialogCloseProps, DialogCloseRequestReason, DialogContentProps, DialogDescriptionProps, DialogRootProps, DialogSize, DialogTitleProps, DialogVariant, DisclosureProps, EmptyStateElement, EmptyStateProps, EmptyStateSize, FieldProps, FileInputProps, FilePreviewDialogProps, FlowChapter, FlowCloseRequestReason, FlowDirection, FullScreenFlowBodyProps, FullScreenFlowFooterProps, FullScreenFlowHeaderProps, FullScreenFlowProgressProps, FullScreenFlowRailGroupProps, FullScreenFlowRailItemProps, FullScreenFlowRailProps, FullScreenFlowRootProps, FullScreenFlowStepProps, FullScreenFlowViewportProps, HeadingElement, HeadingLevel, HeadingProps, HeadingSize, IconButtonDotTone, IconButtonProps, IconGlyphProps, IconName, IconProps, IconSize, InlineAlign, InlineElement, InlineJustify, InlineProps, InputProps, KbdGroupProps, KbdProps, MenuAlign, MenuCheckboxItemProps, MenuContentProps, MenuGroupProps, MenuItemProps, MenuItemTone, MenuLinkItemProps, MenuRadioGroupProps, MenuRadioItemProps, MenuRootProps, MenuSeparatorProps, MenuSide, MenuTriggerProps, PopoverAlign, PopoverCloseProps, PopoverContentProps, PopoverDescriptionProps, PopoverRootProps, PopoverSide, PopoverTitleProps, PopoverTriggerProps, PriorityNavItem, PriorityNavLinkProps, PriorityNavProps, ProgressProps, ProgressSize, ProgressTone, ProgressVariant, QuoteProps, ReasonListItemProps, ReasonListProps, ReasonListSize, ReasonTone, RowSelection, RowSelectionHeaderState, ScoreProps, ScoreSize, ScoreTone, ScoreVariant, SelectGroup, SelectOption, SelectProps, SelectionBarProps, SkeletonProps, SkeletonVariant, SpacingSize, SpinnerProps, StackAlign, StackElement, StackJustify, StackProps, StatDeltaTone, StatElement, StatProps, StatSize, StatTrend, StatVariant, SwitchProps, TableAlign, TableBodyProps, TableCaptionProps, TableCellProps, TableDensity, TableFootProps, TableHeadProps, TableHeaderProps, TableRootProps, TableRowProps, TableSelectionCellProps, TableSelectionHeaderProps, TableSortDirection, TabsListProps, TabsListVariant, TabsPanelProps, TabsRootProps, TabsTabProps, TextAlign, TextElement, TextFamily, TextProps, TextSize, TextTone, TextWeight, TextareaProps, TextareaVariant, ToastApi, ToastOptions, ToastProviderProps, ToastTone, ToolbarButtonProps, ToolbarGroupProps, ToolbarLinkProps, ToolbarRootProps, ToolbarSeparatorProps, ToolbarSpacerProps, TooltipAlign, TooltipProps, TooltipSide, WordDiffElement, WordDiffKind, WordDiffPart, WordDiffProps, WordDiffSize };