react-os-shell 4.31.0 → 4.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/{Browser-63NYU74S.js → Browser-5NHZNED2.js} +6 -6
  2. package/dist/{Browser-63NYU74S.js.map → Browser-5NHZNED2.js.map} +1 -1
  3. package/dist/{Calculator-XERXEV35.js → Calculator-PHKNMRLX.js} +5 -5
  4. package/dist/{Calculator-XERXEV35.js.map → Calculator-PHKNMRLX.js.map} +1 -1
  5. package/dist/{CurrencyConverter-OSZISLHT.js → CurrencyConverter-MEG7RHEK.js} +5 -5
  6. package/dist/{CurrencyConverter-OSZISLHT.js.map → CurrencyConverter-MEG7RHEK.js.map} +1 -1
  7. package/dist/{Documents-YP4GBBRF.js → Documents-YOUMLERR.js} +7 -7
  8. package/dist/{Documents-YP4GBBRF.js.map → Documents-YOUMLERR.js.map} +1 -1
  9. package/dist/{Files-6JWIE3VH.js → Files-4NQ5IFUE.js} +8 -8
  10. package/dist/{Files-6JWIE3VH.js.map → Files-4NQ5IFUE.js.map} +1 -1
  11. package/dist/{Notepad-EHO56UNK.js → Notepad-UHTEKEEM.js} +7 -7
  12. package/dist/{Notepad-EHO56UNK.js.map → Notepad-UHTEKEEM.js.map} +1 -1
  13. package/dist/{PomodoroTimer-5ZSIG7SQ.js → PomodoroTimer-5B5AFXQH.js} +7 -7
  14. package/dist/{PomodoroTimer-5ZSIG7SQ.js.map → PomodoroTimer-5B5AFXQH.js.map} +1 -1
  15. package/dist/{Preview-67IPCMSN.js → Preview-2CCBN25S.js} +8 -8
  16. package/dist/{Preview-67IPCMSN.js.map → Preview-2CCBN25S.js.map} +1 -1
  17. package/dist/{Spreadsheet-HVXBAFR7.js → Spreadsheet-2N6TMVQU.js} +6 -6
  18. package/dist/{Spreadsheet-HVXBAFR7.js.map → Spreadsheet-2N6TMVQU.js.map} +1 -1
  19. package/dist/{Stock-4BORXILI.js → Stock-KTWRNBI6.js} +5 -5
  20. package/dist/{Stock-4BORXILI.js.map → Stock-KTWRNBI6.js.map} +1 -1
  21. package/dist/{Weather-ZPPSEUIY.js → Weather-B7MO7N4N.js} +5 -5
  22. package/dist/{Weather-ZPPSEUIY.js.map → Weather-B7MO7N4N.js.map} +1 -1
  23. package/dist/{WorldClock-LBKYWDWE.js → WorldClock-M5MEV74F.js} +5 -5
  24. package/dist/{WorldClock-LBKYWDWE.js.map → WorldClock-M5MEV74F.js.map} +1 -1
  25. package/dist/apps/index.js +16 -16
  26. package/dist/{chunk-22BNPLM4.js → chunk-3OCL3DB4.js} +3 -3
  27. package/dist/{chunk-22BNPLM4.js.map → chunk-3OCL3DB4.js.map} +1 -1
  28. package/dist/{chunk-7NIFBQUX.js → chunk-3SUSQHOW.js} +492 -118
  29. package/dist/chunk-3SUSQHOW.js.map +1 -0
  30. package/dist/{chunk-GUWAKATU.js → chunk-5S65ZC5W.js} +3 -3
  31. package/dist/{chunk-GUWAKATU.js.map → chunk-5S65ZC5W.js.map} +1 -1
  32. package/dist/{chunk-BT3EQNH3.js → chunk-BIZJ7RLC.js} +4 -4
  33. package/dist/{chunk-BT3EQNH3.js.map → chunk-BIZJ7RLC.js.map} +1 -1
  34. package/dist/{chunk-X5PZYTAK.js → chunk-ECE3B3FZ.js} +3 -3
  35. package/dist/{chunk-X5PZYTAK.js.map → chunk-ECE3B3FZ.js.map} +1 -1
  36. package/dist/{chunk-X6DOWIY2.js → chunk-FHPPPDHL.js} +3 -3
  37. package/dist/{chunk-X6DOWIY2.js.map → chunk-FHPPPDHL.js.map} +1 -1
  38. package/dist/{chunk-OI253GOA.js → chunk-IOCOH2QQ.js} +4 -4
  39. package/dist/{chunk-OI253GOA.js.map → chunk-IOCOH2QQ.js.map} +1 -1
  40. package/dist/{chunk-4AKVHY4B.js → chunk-TK6HI2U4.js} +23 -3
  41. package/dist/chunk-TK6HI2U4.js.map +1 -0
  42. package/dist/chunk-XVXEYKMT.js +7 -0
  43. package/dist/{chunk-SGS3IQEL.js.map → chunk-XVXEYKMT.js.map} +1 -1
  44. package/dist/{chunk-C22EFSND.js → chunk-ZCDFNZQS.js} +21 -6
  45. package/dist/chunk-ZCDFNZQS.js.map +1 -0
  46. package/dist/{index-CdxMm6Dk.d.ts → index-B6QGa8SJ.d.ts} +293 -38
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index.js +14 -14
  49. package/dist/ui/index.d.ts +1 -1
  50. package/dist/ui/index.js +4 -4
  51. package/dist/ui.css +117 -43
  52. package/package.json +1 -1
  53. package/dist/chunk-4AKVHY4B.js.map +0 -1
  54. package/dist/chunk-7NIFBQUX.js.map +0 -1
  55. package/dist/chunk-C22EFSND.js.map +0 -1
  56. package/dist/chunk-SGS3IQEL.js +0 -7
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, LabelHTMLAttributes, ElementType, MouseEvent, CSSProperties, RefObject } from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, LabelHTMLAttributes, CSSProperties, ElementType, MouseEvent, RefObject } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  /**
@@ -10,9 +10,9 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
10
10
  * it lets someone tell what the button costs WITHOUT reading it, which under
11
11
  * time pressure is what actually happens.
12
12
  */
13
- type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'ghost-danger' | 'danger';
13
+ type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'ghost-danger' | 'danger' | 'link';
14
14
  /**
15
- * `sm`/`md` are the desktop scale. The `touch-*` rungs are for a finger on
15
+ * `sm`/`md`/`lg` are the desktop scale. The `touch-*` rungs are for a finger on
16
16
  * glass — a till, a warehouse tablet — and are a SEPARATE ladder on purpose:
17
17
  * a till's idea of "medium" is 56px, and naming it `md` would have made the
18
18
  * same word mean two sizes depending on which app you were reading.
@@ -20,7 +20,7 @@ type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'ghost-danger' | 'dange
20
20
  * Nothing picks a touch size automatically. An app that wants them asks for
21
21
  * them, so a desktop portal cannot grow finger-sized buttons by accident.
22
22
  */
23
- type ButtonSize = 'sm' | 'md' | 'touch-sm' | 'touch' | 'touch-lg' | 'touch-xl';
23
+ type ButtonSize = 'sm' | 'md' | 'lg' | 'touch-sm' | 'touch' | 'touch-lg' | 'touch-xl';
24
24
  interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className'> {
25
25
  variant?: ButtonVariant;
26
26
  size?: ButtonSize;
@@ -59,7 +59,12 @@ interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>,
59
59
  * affordance, a close — and a grid of solid blue squares is not what any of
60
60
  * those want. Ask for `primary` on the rare icon-only main action.
61
61
  */
62
- variant?: ButtonVariant;
62
+ /**
63
+ * `link` is excluded: it exists to shed the box, and a square icon button is
64
+ * nothing but the box. Asking for it would produce a bare coloured glyph
65
+ * with a 40px hit area it no longer draws.
66
+ */
67
+ variant?: Exclude<ButtonVariant, 'link'>;
63
68
  size?: ButtonSize;
64
69
  className?: string;
65
70
  }
@@ -75,15 +80,17 @@ declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & reac
75
80
  * so the classes survive both the dark-mode allow-list and the design-sync
76
81
  * compiled stylesheet.
77
82
  */
78
- /** `md` is the desktop control; `touch` is a finger on glass. See ButtonSize
79
- * for why the touch scale is a separate ladder rather than a bigger `lg`. */
80
- type InputSize = 'md' | 'touch';
83
+ /** `sm`/`md`/`lg` are the desktop ladder; `touch` is a finger on glass. See
84
+ * ButtonSize for why touch is a separate rung rather than the top of this
85
+ * ladder a till's idea of "large" is 56px, and one word cannot mean both. */
86
+ type InputSize = 'sm' | 'md' | 'lg' | 'touch';
81
87
  declare const INPUT_SIZES: Record<InputSize, string>;
82
88
  /** Base look for a text-bearing form control. Native <input>/<select>/<textarea>
83
89
  * also receive dark styling for free via the global rule in styles.css. */
84
90
  declare const INPUT_BASE: string;
85
- /** Compose the input classes for a control. Omitting `size` yields exactly
86
- * `INPUT_BASE`, so every existing caller is unaffected. */
91
+ /** Compose the input classes for a control. Omitting `size` or passing the
92
+ * default `md` — yields exactly `INPUT_BASE`, so every existing caller is
93
+ * unaffected. */
87
94
  declare function inputClasses(opts?: {
88
95
  invalid?: boolean;
89
96
  size?: InputSize;
@@ -115,6 +122,8 @@ interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>
115
122
  invalid?: boolean;
116
123
  /** Grow the field to fit its content instead of scrolling. */
117
124
  autoGrow?: boolean;
125
+ /** Desktop rung, or `touch`. Defaults to `md`. */
126
+ size?: InputSize;
118
127
  className?: string;
119
128
  }
120
129
  declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
@@ -124,9 +133,18 @@ interface SelectOption {
124
133
  label: string;
125
134
  disabled?: boolean;
126
135
  }
127
- interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'value' | 'className'> {
136
+ interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'value' | 'className' | 'size'> {
128
137
  value: string;
129
138
  onChange: (value: string) => void;
139
+ /**
140
+ * Desktop rung, or `touch`. Defaults to `md`.
141
+ *
142
+ * This shadows the native `size` attribute (the number of rows a select
143
+ * shows when it is rendered as a list box), which is omitted above rather
144
+ * than left to collide. Nothing here has ever rendered as a list box — the
145
+ * kit's Select is a dropdown — so no capability is lost.
146
+ */
147
+ size?: InputSize;
130
148
  options: SelectOption[];
131
149
  /** Shown as a disabled first option when no value is selected. */
132
150
  placeholder?: string;
@@ -577,6 +595,41 @@ interface CardProps {
577
595
  /** Row below the body, divided by a hairline. */
578
596
  footer?: ReactNode;
579
597
  /** Apply default padding to the body. Default true; set false to fill edge-to-edge. */
598
+ /**
599
+ * Render the header as a real heading at this level, and the card as a
600
+ * region named by it.
601
+ *
602
+ * A card with a title IS a region of the page — the thing a screen-reader
603
+ * user jumps between, and the thing a heading list is for. Without this the
604
+ * title is a bold `<div>`: it looks like a heading to everyone who can see
605
+ * it and is invisible to everyone navigating by structure.
606
+ *
607
+ * The level is the caller's because only the caller knows the page's
608
+ * outline; a card inside a section that already has an `h2` needs an `h3`,
609
+ * and guessing produces a jumbled outline rather than no outline.
610
+ *
611
+ * Omitted, nothing changes — the header stays a styled `div` and the card a
612
+ * plain `div`, which is what every card shipping today is.
613
+ */
614
+ headingLevel?: 2 | 3 | 4 | 5 | 6;
615
+ /**
616
+ * Rendered at the far end of the header row, opposite the title — a count, a
617
+ * filter, a "View all" link.
618
+ *
619
+ * It is a separate slot because it must stay OUT of the heading. Folded into
620
+ * `header`, a card titled "Team Members" with a "Team active" chip beside it
621
+ * announces itself as "Team Members Team active", and that is the string a
622
+ * heading list shows and a voice command has to match.
623
+ */
624
+ headerActions?: ReactNode;
625
+ /**
626
+ * Names the card as a region when there is no header to name it — a card
627
+ * whose title lives outside it, or which has none.
628
+ *
629
+ * Ignored when `headingLevel` is set: the heading is the better name, and
630
+ * two names on one element is a contradiction rather than a belt and braces.
631
+ */
632
+ 'aria-label'?: string;
580
633
  padded?: boolean;
581
634
  /**
582
635
  * Padding scale. Takes precedence over `padded`, which remains supported and
@@ -584,8 +637,21 @@ interface CardProps {
584
637
  */
585
638
  padding?: CardPadding;
586
639
  className?: string;
640
+ /**
641
+ * Classes for the body, beside the padding this component supplies.
642
+ *
643
+ * The body is a wrapper this component owns, so `className` cannot reach it
644
+ * — and a card whose contents are a column with a gap otherwise has to nest
645
+ * a div inside the one already there just to say so.
646
+ */
647
+ bodyClassName?: string;
648
+ /**
649
+ * Inline style for the surface. For values that cannot be a class: an
650
+ * animation delay computed per item, a measured height.
651
+ */
652
+ style?: CSSProperties;
587
653
  }
588
- declare function Card({ children, header, footer, padded, padding, className }: CardProps): react_jsx_runtime.JSX.Element;
654
+ declare function Card({ children, header, footer, padded, padding, headingLevel, headerActions, 'aria-label': ariaLabel, className, bodyClassName, style, }: CardProps): react_jsx_runtime.JSX.Element;
589
655
  interface StatCardProps {
590
656
  label: ReactNode;
591
657
  value: ReactNode;
@@ -710,10 +776,19 @@ interface DescriptionListProps {
710
776
  /** Hairline-separated rows in a bordered panel. */
711
777
  bordered?: boolean;
712
778
  size?: 'sm' | 'md';
779
+ /**
780
+ * Shown in place of a value that is `null`, `undefined` or `''`. Defaults to
781
+ * an em dash.
782
+ *
783
+ * A blank cell answers nothing — and inside `bordered`, where the cell has
784
+ * an outline of its own, it reads as a rendering fault rather than as "there
785
+ * is no tracking number". Pass `emptyText={null}` for the old behaviour.
786
+ */
787
+ emptyText?: ReactNode;
713
788
  title?: ReactNode;
714
789
  className?: string;
715
790
  }
716
- declare function DescriptionList({ items, columns, bordered, size, title, className, }: DescriptionListProps): react_jsx_runtime.JSX.Element;
791
+ declare function DescriptionList({ items, columns, bordered, size, title, className, emptyText: empty, }: DescriptionListProps): react_jsx_runtime.JSX.Element;
717
792
 
718
793
  type ResultStatus = 'success' | 'error' | 'warning' | 'info' | '404' | '403' | '500';
719
794
  interface ResultProps {
@@ -823,6 +898,16 @@ interface BannerProps {
823
898
  }
824
899
  declare function Banner({ tone, emphasis, title, children, icon, onDismiss, sticky, className, }: BannerProps): react_jsx_runtime.JSX.Element;
825
900
 
901
+ /**
902
+ * The DOM id of a tab and of the panel it controls, derived from the same
903
+ * prefix so a consumer rendering the panel cannot mismatch them.
904
+ *
905
+ * Exported rather than inlined: the panel is rendered by the CONSUMER, so both
906
+ * sides have to agree on the string, and agreeing by convention in a comment
907
+ * is how these drift.
908
+ */
909
+ declare const tabButtonId: (prefix: string, id: string) => string;
910
+ declare const tabPanelId: (prefix: string, id: string) => string;
826
911
  interface TabItem {
827
912
  id: string;
828
913
  label: ReactNode;
@@ -834,9 +919,27 @@ interface TabsProps {
834
919
  value: string;
835
920
  onChange: (id: string) => void;
836
921
  variant?: 'underline' | 'pill';
922
+ /**
923
+ * Enables the tab/panel association. With it each tab gains a stable id and
924
+ * an `aria-controls` pointing at `tabPanelId(idPrefix, item.id)`; the
925
+ * consumer gives its panel that id and names it with
926
+ * `aria-labelledby={tabButtonId(idPrefix, item.id)}`.
927
+ *
928
+ * Omitted, nothing is emitted. A tab strip used purely as a filter — no
929
+ * panel to point at — should not claim to control an element that does not
930
+ * exist, which is a dangling reference rather than a helpful one.
931
+ */
932
+ idPrefix?: string;
933
+ /**
934
+ * Names the strip. A page with more than one — order sections above, media
935
+ * types below — gives a screen-reader user two "tab list"s with nothing to
936
+ * tell them apart, and there was no way to pass a name at all.
937
+ */
938
+ 'aria-label'?: string;
939
+ 'aria-labelledby'?: string;
837
940
  className?: string;
838
941
  }
839
- declare function Tabs({ items, value, onChange, variant, className }: TabsProps): react_jsx_runtime.JSX.Element;
942
+ declare function Tabs({ items, value, onChange, variant, idPrefix, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: TabsProps): react_jsx_runtime.JSX.Element;
840
943
 
841
944
  interface AccordionItem {
842
945
  id: string;
@@ -864,10 +967,37 @@ interface TooltipProps {
864
967
  }
865
968
  declare function Tooltip({ content, side, delay, children }: TooltipProps): react_jsx_runtime.JSX.Element;
866
969
 
970
+ type SemanticGroup = 'success' | 'active' | 'queued' | 'info' | 'pending' | 'warning' | 'danger' | 'draft' | 'neutral';
971
+ /**
972
+ * The one table. `ColoredBadge` reads it too, through its `tone` prop, so a
973
+ * badge given a tone directly and a badge given a status string that maps to
974
+ * that tone are the same colour — which is the promise this component's
975
+ * docblock makes and could not keep for anything that was not a status.
976
+ */
977
+ declare const GROUP_COLORS: Record<SemanticGroup, string>;
978
+ declare function StatusBadgeProvider({ groups, children, }: {
979
+ groups: Record<string, SemanticGroup>;
980
+ children: ReactNode;
981
+ }): react_jsx_runtime.JSX.Element;
982
+ interface StatusBadgeProps {
983
+ status: string;
984
+ }
985
+ declare function StatusBadge({ status }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
986
+
867
987
  interface ColoredBadgeProps {
988
+ /**
989
+ * A semantic tone, resolved through the same table `StatusBadge` uses — so a
990
+ * badge given `tone="success"` and one given a status string that maps to
991
+ * success are the same green.
992
+ *
993
+ * Prefer this to `colorClass`. Raw classes are the escape hatch for a colour
994
+ * the system has no name for, and every consumer reaching for them is a
995
+ * place the theme system cannot follow.
996
+ */
997
+ tone?: SemanticGroup;
868
998
  /** Tailwind classes for the badge color, e.g. `bg-green-100 text-green-800`.
869
- * Keep a per-app palette map rather than hardcoding colors at call sites. */
870
- colorClass: string;
999
+ * Wins over `tone` when both are given. */
1000
+ colorClass?: string;
871
1001
  children: ReactNode;
872
1002
  /** `xs` = 10px (dense list cells), `sm` = 12px / px-2 (default), `md` =
873
1003
  * 12px / px-2.5 (matches StatusBadge). */
@@ -875,23 +1005,29 @@ interface ColoredBadgeProps {
875
1005
  /** Capitalize each word — useful for raw status strings like `in_progress`
876
1006
  * (rendered as `In Progress`). Default false. */
877
1007
  capitalize?: boolean;
1008
+ /**
1009
+ * Render a close control — a filter chip the user can drop.
1010
+ *
1011
+ * Its accessible name is derived from the badge's own text: "Remove Winter
1012
+ * tyres", not "Remove". A row of filter chips otherwise gives a screen-reader
1013
+ * user five identical buttons and no way to tell which one drops which
1014
+ * filter. `closeLabel` overrides it, and is required in practice whenever
1015
+ * the children are not plain text — there is nothing to derive from.
1016
+ */
1017
+ closable?: boolean;
1018
+ onClose?: () => void;
1019
+ closeLabel?: string;
1020
+ className?: string;
878
1021
  }
879
1022
  /**
880
- * ColoredBadge — a small rounded-full pill whose colors are supplied as a
881
- * Tailwind class string. Generic counterpart to StatusBadge (which maps status
882
- * strings to semantic groups); use this when the caller already knows the color.
1023
+ * ColoredBadge — a small rounded-full pill. Give it a `tone` from the shell's
1024
+ * semantic vocabulary, or raw Tailwind classes when the colour has no name.
1025
+ *
1026
+ * Counterpart to StatusBadge, which takes a domain status STRING and maps it
1027
+ * through a provider. Both read the same colour table, so the two never
1028
+ * disagree about what success looks like.
883
1029
  */
884
- declare function ColoredBadge({ colorClass, children, size, capitalize }: ColoredBadgeProps): react_jsx_runtime.JSX.Element;
885
-
886
- type SemanticGroup = 'success' | 'active' | 'queued' | 'info' | 'pending' | 'warning' | 'danger' | 'draft' | 'neutral';
887
- declare function StatusBadgeProvider({ groups, children, }: {
888
- groups: Record<string, SemanticGroup>;
889
- children: ReactNode;
890
- }): react_jsx_runtime.JSX.Element;
891
- interface StatusBadgeProps {
892
- status: string;
893
- }
894
- declare function StatusBadge({ status }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
1030
+ declare function ColoredBadge({ colorClass, tone, children, size, capitalize, closable, onClose, closeLabel, className, }: ColoredBadgeProps): react_jsx_runtime.JSX.Element;
895
1031
 
896
1032
  interface EmptyStateProps {
897
1033
  /** Bold heading, e.g. "No invoices yet". */
@@ -908,8 +1044,16 @@ interface EmptyStateProps {
908
1044
  variant?: 'dashed' | 'card' | 'none';
909
1045
  /** @deprecated set `variant="none"` instead. */
910
1046
  frameless?: boolean;
911
- /** Show the placeholder icon. Defaults to true (false for `variant="card"`). */
912
- icon?: boolean;
1047
+ /**
1048
+ * `true`/omitted shows the placeholder inbox, `false` shows nothing, and an
1049
+ * element shows that instead.
1050
+ *
1051
+ * The boolean alone meant every empty state in every app was an inbox — an
1052
+ * empty catalogue, an empty invoice list and an empty inbox drawn
1053
+ * identically, when the icon is the fastest thing on the screen to read.
1054
+ * Defaults to the placeholder (to nothing for `variant="card"`).
1055
+ */
1056
+ icon?: boolean | ReactNode;
913
1057
  /** Action(s) rendered under the text. */
914
1058
  children?: ReactNode;
915
1059
  }
@@ -1410,6 +1554,30 @@ interface TopNavProps {
1410
1554
  }
1411
1555
  declare function TopNav({ items, activeKey, onSelect, brand, actions, className }: TopNavProps): react_jsx_runtime.JSX.Element;
1412
1556
 
1557
+ type DropdownMenuAlign = 'start' | 'end';
1558
+ interface DropdownMenuItem {
1559
+ key: string;
1560
+ label: ReactNode;
1561
+ icon?: ReactNode;
1562
+ /** A destructive choice — delete, revoke. Drawn in the danger tone. */
1563
+ danger?: boolean;
1564
+ disabled?: boolean;
1565
+ onSelect: () => void;
1566
+ }
1567
+ interface DropdownMenuProps {
1568
+ /** What opens the menu. Rendered inside the trigger button. */
1569
+ trigger: ReactNode;
1570
+ items: DropdownMenuItem[];
1571
+ /** Which edge the menu lines up with. `end` (the default) suits a menu at
1572
+ * the right of a row, where a left-aligned one would run off the card. */
1573
+ align?: DropdownMenuAlign;
1574
+ /** Names the trigger. Required in practice — the trigger is usually an icon. */
1575
+ 'aria-label'?: string;
1576
+ className?: string;
1577
+ disabled?: boolean;
1578
+ }
1579
+ declare function DropdownMenu({ trigger, items, align, 'aria-label': ariaLabel, className, disabled, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
1580
+
1413
1581
  /**
1414
1582
  * Unified popup menu component — used for all context menus, dropdowns, and flyouts.
1415
1583
  * Reads --menu-density CSS variable: 'tight', 'normal' (default), or 'large'.
@@ -1431,13 +1599,35 @@ interface PopupMenuProps {
1431
1599
  /** Container for a popup menu — auto-clamps to stay within viewport */
1432
1600
  declare function PopupMenu({ children, style, className, onClose, minWidth, portal }: PopupMenuProps): react_jsx_runtime.JSX.Element;
1433
1601
  /** A clickable menu item */
1434
- declare function PopupMenuItem({ onClick, children, className, danger, disabled }: {
1602
+ interface PopupMenuItemProps {
1435
1603
  onClick?: () => void;
1436
1604
  children: ReactNode;
1437
1605
  className?: string;
1438
1606
  danger?: boolean;
1439
1607
  disabled?: boolean;
1440
- }): react_jsx_runtime.JSX.Element;
1608
+ /**
1609
+ * The menu semantics, when this item is part of one.
1610
+ *
1611
+ * A context menu on the desktop is a list of buttons and needs none of this;
1612
+ * a dropdown attached to a trigger is a `menu` whose items are `menuitem`s
1613
+ * with one tab stop between them. Both draw the same item, so the styling
1614
+ * lives here rather than being copied into whichever one is newer.
1615
+ */
1616
+ role?: 'menuitem';
1617
+ tabIndex?: number;
1618
+ id?: string;
1619
+ onMouseEnter?: () => void;
1620
+ }
1621
+ /**
1622
+ * `forwardRef`, not a `ref` prop.
1623
+ *
1624
+ * Taking `ref` as an ordinary prop is React 19 only. This package's peer range
1625
+ * is `react: ">=18"`, and React 18 strips `ref` from a function component's
1626
+ * props and warns — so on an 18 consumer the ref would silently never attach,
1627
+ * `DropdownMenu`'s `itemRefs` would all be null, and its arrow keys would move
1628
+ * `tabIndex` while DOM focus stayed put. A keyboard-dead menu with no error.
1629
+ */
1630
+ declare const PopupMenuItem: react.ForwardRefExoticComponent<PopupMenuItemProps & react.RefAttributes<HTMLButtonElement>>;
1441
1631
  /** A divider line between menu items */
1442
1632
  declare function PopupMenuDivider(): react_jsx_runtime.JSX.Element;
1443
1633
  /** A section header label */
@@ -1483,6 +1673,12 @@ interface ToastOptions {
1483
1673
  declare const toast: {
1484
1674
  success: (message: string, opts?: ToastOptions) => void;
1485
1675
  error: (message: string, opts?: ToastOptions) => void;
1676
+ /**
1677
+ * Something the user should read before continuing — a partial success, a
1678
+ * setting that will not apply until they do something else. Distinct from
1679
+ * `error`, which is "this did not happen".
1680
+ */
1681
+ warning: (message: string, opts?: ToastOptions) => void;
1486
1682
  info: (message: string, opts?: ToastOptions) => void;
1487
1683
  notify: (message: string, opts?: {
1488
1684
  duration?: number;
@@ -1815,6 +2011,17 @@ interface DataTableColumn<T> {
1815
2011
  dataIndex?: keyof T & string;
1816
2012
  render?: (row: T, index: number) => ReactNode;
1817
2013
  align?: 'left' | 'right' | 'center';
2014
+ /**
2015
+ * The column holds a figure or a code — money, a quantity, a part or order
2016
+ * number.
2017
+ *
2018
+ * Renders it monospaced and right-aligns it by default. The table already
2019
+ * sets `tabular-nums`, so the digits line up down the column either way;
2020
+ * what this adds is a fixed advance for EVERY character, which is what lets
2021
+ * `00620L6N25KMFCBTDTM2QND` be compared against its neighbour by shape, and
2022
+ * a decimal point be found at the right edge without reading the number.
2023
+ */
2024
+ numeric?: boolean;
1818
2025
  /** Px. Also feeds the table's minimum width — see `minWidth`. */
1819
2026
  width?: number;
1820
2027
  /** Single-line with an ellipsis. */
@@ -1831,11 +2038,38 @@ interface DataTableColumn<T> {
1831
2038
  * caller mapping names at the call site.
1832
2039
  */
1833
2040
  sortable?: boolean;
2041
+ /**
2042
+ * Which way the FIRST click sorts. Defaults to ascending.
2043
+ *
2044
+ * `desc` is right wherever the interesting end is the top: a price column,
2045
+ * a quantity, a date where the newest matters. Making those start ascending
2046
+ * costs every user two clicks to see the thing they opened the column for.
2047
+ *
2048
+ * The cycle is unchanged either way — first click, second click, then back
2049
+ * to the server's own ordering.
2050
+ */
2051
+ sortFirst?: 'asc' | 'desc';
1834
2052
  sortField?: string;
1835
2053
  headerClassName?: string;
1836
2054
  }
1837
- interface DataTableProps<T> {
2055
+ /**
2056
+ * A header spanning several columns — "Debit" over an amount and a balance.
2057
+ *
2058
+ * The group is not decoration: where two children are both called "Amount",
2059
+ * it is the only thing telling them apart, and a screen reader reads it as
2060
+ * part of each cell's column context.
2061
+ */
2062
+ interface DataTableColumnGroup<T> {
2063
+ title: ReactNode;
1838
2064
  columns: DataTableColumn<T>[];
2065
+ /** Distinct among its siblings. Defaults to the group's index. */
2066
+ key?: string;
2067
+ headerClassName?: string;
2068
+ }
2069
+ /** A leaf column, or a group of them. */
2070
+ type DataTableHeader<T> = DataTableColumn<T> | DataTableColumnGroup<T>;
2071
+ interface DataTableProps<T> {
2072
+ columns: DataTableHeader<T>[];
1839
2073
  data: T[];
1840
2074
  /** Stable identity per row. A string names a field; a function computes it. */
1841
2075
  rowKey: (keyof T & string) | ((row: T, index: number) => string);
@@ -1848,6 +2082,17 @@ interface DataTableProps<T> {
1848
2082
  pageCount: number;
1849
2083
  onPageChange: (page: number) => void;
1850
2084
  };
2085
+ /**
2086
+ * Names the table for assistive technology, rendered as a visually hidden
2087
+ * `<caption>`.
2088
+ *
2089
+ * A table with no name is announced as "table" and nothing else, so a page
2090
+ * with two of them — the invoice lines and the payments against it — gives a
2091
+ * screen-reader user two identical landmarks and no way to tell which is
2092
+ * which. The heading above it is not enough: table navigation jumps between
2093
+ * tables, not through the prose around them.
2094
+ */
2095
+ caption?: string;
1851
2096
  loading?: boolean;
1852
2097
  bordered?: boolean;
1853
2098
  size?: 'sm' | 'md';
@@ -1866,7 +2111,7 @@ interface DataTableProps<T> {
1866
2111
  footer?: ReactNode;
1867
2112
  className?: string;
1868
2113
  }
1869
- declare function DataTable<T>({ columns, data, rowKey, sort, onSortChange, pagination, loading, bordered, size, minWidth, rowClassName, onRow, emptyText, footer, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
2114
+ declare function DataTable<T>({ columns, data, rowKey, sort, onSortChange, pagination, caption, loading, bordered, size, minWidth, rowClassName, onRow, emptyText, footer, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
1870
2115
 
1871
2116
  interface ListFooterProps {
1872
2117
  selectedCount: number;
@@ -1982,8 +2227,18 @@ declare function AuthScreen({ mode }: AuthScreenProps): react_jsx_runtime.JSX.El
1982
2227
 
1983
2228
  interface ErrorPageProps {
1984
2229
  code?: 403 | 404 | 500;
2230
+ /**
2231
+ * What the user can do about it — typically a link home.
2232
+ *
2233
+ * There is no default, and that is the fix: this page used to render "Go
2234
+ * back" and "Take me home" as buttons with no handlers on them. They looked
2235
+ * like the way out of a dead end and did nothing, which is worse than
2236
+ * offering nothing at all. The kit has no router, so the destination has to
2237
+ * come from the consumer.
2238
+ */
2239
+ actions?: ReactNode;
1985
2240
  }
1986
- declare function ErrorPage({ code }: ErrorPageProps): react_jsx_runtime.JSX.Element;
2241
+ declare function ErrorPage({ code, actions }: ErrorPageProps): react_jsx_runtime.JSX.Element;
1987
2242
 
1988
2243
  type Theme = 'system' | 'light' | 'dark' | 'pink' | 'green' | 'grey' | 'blue';
1989
2244
  /** Resolve a stored theme to the attribute value <html> actually carries
@@ -2076,4 +2331,4 @@ declare const ALT_SHIFT_N: string;
2076
2331
  * string when the source is consumed without a build (e.g. tests). */
2077
2332
  declare const VERSION: string;
2078
2333
 
2079
- export { type CountBadgeProps as $, ALT as A, Banner as B, type ColumnDef as C, type ButtonSize as D, type ButtonVariant as E, CMD_A as F, CMD_DOT as G, CMD_ENTER as H, CMD_K as I, CMD_S as J, Card as K, type CardPadding as L, type CardProps as M, type CellStyle as N, ChatTemplate as O, type PaginatedResponse as P, Checkbox as Q, type CheckboxProps as R, type SearchConfig as S, CheckoutTemplate as T, ColoredBadge as U, type ColoredBadgeProps as V, ConfirmProvider as W, ContainerFillChart as X, type ContainerFillChartProps as Y, type ContainerFillItem as Z, CountBadge as _, type SortState as a, type InputSize as a$, type CountBadgeTone as a0, DashboardTemplate as a1, DataTable as a2, type DataTableColumn as a3, DataTablePage as a4, type DataTableProps as a5, DatePicker as a6, type DatePickerProps as a7, DateRangePicker as a8, type DateRangePickerProps as a9, type FilePickerProps as aA, FormField as aB, type FormFieldProps as aC, FormLayoutPage as aD, GLASS_DIVIDER as aE, GLASS_INPUT_BG as aF, GalleryTemplate as aG, type Gap as aH, GlobalSearch as aI, type GlobalSearchProps as aJ, Grid as aK, type GridCols as aL, type GridColumn as aM, type GridProps as aN, HelpCenter as aO, type HelpCenterDoc as aP, type HelpCenterProps as aQ, INPUT_BASE as aR, INPUT_SIZES as aS, IconButton as aT, type IconButtonProps as aU, Inline as aV, type InlineProps as aW, Input as aX, InputNumber as aY, type InputNumberProps as aZ, type InputProps as a_, type DescriptionColumns as aa, type DescriptionItem as ab, DescriptionList as ac, type DescriptionListProps as ad, Dialog as ae, type DialogProps as af, type DialogSize as ag, Divider as ah, type DividerProps as ai, type DividerSpacing as aj, DonutChart as ak, type DonutChartProps as al, type DonutSegment as am, Drawer as an, type DrawerProps as ao, type DrawerSide as ap, type DrawerSize as aq, ENTER as ar, EditableGrid as as, type EditableGridProps as at, EmailTemplate as au, EmptyState as av, type EmptyStateProps as aw, ErrorPage as ax, type ErrorPageProps as ay, FilePicker as az, ALT_SHIFT_D as b, SidebarGroupLabel as b$, type Justify as b0, Kanban as b1, type KanbanColumn as b2, type KanbanProps as b3, Label as b4, type LabelProps as b5, ListFooter as b6, ListLoadError as b7, type ListLoadErrorProps as b8, LoadingSpinner as b9, PopupMenuDivider as bA, PopupMenuItem as bB, PopupMenuLabel as bC, Radio as bD, type RadioProps as bE, Result as bF, type ResultProps as bG, type ResultStatus as bH, SHIFT as bI, type SearchProvider as bJ, type SearchResult as bK, type SearchableOption as bL, SearchableSelect as bM, type SearchableSelectProps as bN, Segmented as bO, type SegmentedOption as bP, type SegmentedProps as bQ, type SegmentedSize as bR, Select as bS, type SelectOption as bT, type SelectProps as bU, type SemanticGroup as bV, type SeverityTone as bW, type ShellPrefsAdapter as bX, ShellPrefsProvider as bY, SidebarActionButton as bZ, type SidebarActionButtonProps as b_, type LoadingSpinnerProps as ba, MAX_FRACTION_DIGITS as bb, MOD as bc, Markdown as bd, type MarkdownProps as be, MediaUploadField as bf, type MediaUploadFieldProps as bg, MediaUploadGrid as bh, type MediaUploadGridItem as bi, type MediaUploadGridProps as bj, MetricBar as bk, type MetricBarProps as bl, type Milestone as bm, type MilestoneKind as bn, MilestoneTimeline as bo, type MilestoneTimelineProps as bp, NativeSelect as bq, NumericKeypad as br, type NumericKeypadProps as bs, PageHeader as bt, type PageHeaderProps as bu, Pagination as bv, type PaginationProps as bw, Paragraph as bx, type ParagraphProps as by, PopupMenu as bz, ALT_SHIFT_E as c, useConfirm as c$, SidebarLayout as c0, type SidebarLayoutProps as c1, SidebarNavItem as c2, Skeleton as c3, type SkeletonProps as c4, type SkeletonVariant as c5, Sparkline as c6, type SparklineProps as c7, Stack as c8, type StackProps as c9, type TitleLevel as cA, type TitleProps as cB, type ToastOptions as cC, type ToastPlacement as cD, Tooltip as cE, type TooltipProps as cF, TopNav as cG, type TopNavItem as cH, type TopNavProps as cI, VERSION as cJ, appendKey as cK, applyThemePrefs as cL, backspace as cM, confirm as cN, confirmDestructive as cO, formatDate as cP, glassStyle as cQ, inputClasses as cR, isMac as cS, isSeverityTone as cT, mediaFileName as cU, prompt as cV, resolveTheme as cW, severityOf as cX, toISODate as cY, toast as cZ, useClickOutside as c_, StatCard as ca, type StatCardProps as cb, Statistic as cc, type StatisticProps as cd, type StatisticSize as ce, type StatisticTone as cf, StatusBadge as cg, StatusBadgeProvider as ch, Switch as ci, type SwitchProps as cj, type SwitchSize as ck, type TabItem as cl, Tabs as cm, type TabsProps as cn, Text as co, type TextProps as cp, type TextSize as cq, type TextTone as cr, type TextWeight as cs, Textarea as ct, type TextareaProps as cu, type Theme as cv, TileButton as cw, type TileButtonProps as cx, type TileSize as cy, Title as cz, ALT_SHIFT_N as d, useFocusTrap as d0, useIsMobile as d1, useLocalStoragePrefs as d2, useScrollLock as d3, useShellPrefs as d4, useTheme as d5, Accordion as e, type AccordionItem as f, type AccordionProps as g, type Align as h, AuthScreen as i, type AuthScreenProps as j, Avatar as k, AvatarGroup as l, type AvatarGroupProps as m, type AvatarProps as n, type AvatarSize as o, type AvatarStatus as p, type BannerEmphasis as q, type BannerProps as r, type BannerTone as s, BarChart as t, type BarChartProps as u, type BreadcrumbItem as v, Breadcrumbs as w, type BreadcrumbsProps as x, Button as y, type ButtonProps as z };
2334
+ export { type CountBadgeProps as $, ALT as A, Banner as B, type ColumnDef as C, type ButtonSize as D, type ButtonVariant as E, CMD_A as F, CMD_DOT as G, CMD_ENTER as H, CMD_K as I, CMD_S as J, Card as K, type CardPadding as L, type CardProps as M, type CellStyle as N, ChatTemplate as O, type PaginatedResponse as P, Checkbox as Q, type CheckboxProps as R, type SearchConfig as S, CheckoutTemplate as T, ColoredBadge as U, type ColoredBadgeProps as V, ConfirmProvider as W, ContainerFillChart as X, type ContainerFillChartProps as Y, type ContainerFillItem as Z, CountBadge as _, type SortState as a, type IconButtonProps as a$, type CountBadgeTone as a0, DashboardTemplate as a1, DataTable as a2, type DataTableColumn as a3, type DataTableColumnGroup as a4, type DataTableHeader as a5, DataTablePage as a6, type DataTableProps as a7, DatePicker as a8, type DatePickerProps as a9, EmailTemplate as aA, EmptyState as aB, type EmptyStateProps as aC, ErrorPage as aD, type ErrorPageProps as aE, FilePicker as aF, type FilePickerProps as aG, FormField as aH, type FormFieldProps as aI, FormLayoutPage as aJ, GLASS_DIVIDER as aK, GLASS_INPUT_BG as aL, GROUP_COLORS as aM, GalleryTemplate as aN, type Gap as aO, GlobalSearch as aP, type GlobalSearchProps as aQ, Grid as aR, type GridCols as aS, type GridColumn as aT, type GridProps as aU, HelpCenter as aV, type HelpCenterDoc as aW, type HelpCenterProps as aX, INPUT_BASE as aY, INPUT_SIZES as aZ, IconButton as a_, DateRangePicker as aa, type DateRangePickerProps as ab, type DescriptionColumns as ac, type DescriptionItem as ad, DescriptionList as ae, type DescriptionListProps as af, Dialog as ag, type DialogProps as ah, type DialogSize as ai, Divider as aj, type DividerProps as ak, type DividerSpacing as al, DonutChart as am, type DonutChartProps as an, type DonutSegment as ao, Drawer as ap, type DrawerProps as aq, type DrawerSide as ar, type DrawerSize as as, DropdownMenu as at, type DropdownMenuAlign as au, type DropdownMenuItem as av, type DropdownMenuProps as aw, ENTER as ax, EditableGrid as ay, type EditableGridProps as az, ALT_SHIFT_D as b, type SelectProps as b$, Inline as b0, type InlineProps as b1, Input as b2, InputNumber as b3, type InputNumberProps as b4, type InputProps as b5, type InputSize as b6, type Justify as b7, Kanban as b8, type KanbanColumn as b9, PageHeader as bA, type PageHeaderProps as bB, Pagination as bC, type PaginationProps as bD, Paragraph as bE, type ParagraphProps as bF, PopupMenu as bG, PopupMenuDivider as bH, PopupMenuItem as bI, PopupMenuLabel as bJ, Radio as bK, type RadioProps as bL, Result as bM, type ResultProps as bN, type ResultStatus as bO, SHIFT as bP, type SearchProvider as bQ, type SearchResult as bR, type SearchableOption as bS, SearchableSelect as bT, type SearchableSelectProps as bU, Segmented as bV, type SegmentedOption as bW, type SegmentedProps as bX, type SegmentedSize as bY, Select as bZ, type SelectOption as b_, type KanbanProps as ba, Label as bb, type LabelProps as bc, ListFooter as bd, ListLoadError as be, type ListLoadErrorProps as bf, LoadingSpinner as bg, type LoadingSpinnerProps as bh, MAX_FRACTION_DIGITS as bi, MOD as bj, Markdown as bk, type MarkdownProps as bl, MediaUploadField as bm, type MediaUploadFieldProps as bn, MediaUploadGrid as bo, type MediaUploadGridItem as bp, type MediaUploadGridProps as bq, MetricBar as br, type MetricBarProps as bs, type Milestone as bt, type MilestoneKind as bu, MilestoneTimeline as bv, type MilestoneTimelineProps as bw, NativeSelect as bx, NumericKeypad as by, type NumericKeypadProps as bz, ALT_SHIFT_E as c, mediaFileName as c$, type SemanticGroup as c0, type SeverityTone as c1, type ShellPrefsAdapter as c2, ShellPrefsProvider as c3, SidebarActionButton as c4, type SidebarActionButtonProps as c5, SidebarGroupLabel as c6, SidebarLayout as c7, type SidebarLayoutProps as c8, SidebarNavItem as c9, Textarea as cA, type TextareaProps as cB, type Theme as cC, TileButton as cD, type TileButtonProps as cE, type TileSize as cF, Title as cG, type TitleLevel as cH, type TitleProps as cI, type ToastOptions as cJ, type ToastPlacement as cK, Tooltip as cL, type TooltipProps as cM, TopNav as cN, type TopNavItem as cO, type TopNavProps as cP, VERSION as cQ, appendKey as cR, applyThemePrefs as cS, backspace as cT, confirm as cU, confirmDestructive as cV, formatDate as cW, glassStyle as cX, inputClasses as cY, isMac as cZ, isSeverityTone as c_, Skeleton as ca, type SkeletonProps as cb, type SkeletonVariant as cc, Sparkline as cd, type SparklineProps as ce, Stack as cf, type StackProps as cg, StatCard as ch, type StatCardProps as ci, Statistic as cj, type StatisticProps as ck, type StatisticSize as cl, type StatisticTone as cm, StatusBadge as cn, StatusBadgeProvider as co, Switch as cp, type SwitchProps as cq, type SwitchSize as cr, type TabItem as cs, Tabs as ct, type TabsProps as cu, Text as cv, type TextProps as cw, type TextSize as cx, type TextTone as cy, type TextWeight as cz, ALT_SHIFT_N as d, prompt as d0, resolveTheme as d1, severityOf as d2, tabButtonId as d3, tabPanelId as d4, toISODate as d5, toast as d6, useClickOutside as d7, useConfirm as d8, useFocusTrap as d9, useIsMobile as da, useLocalStoragePrefs as db, useScrollLock as dc, useShellPrefs as dd, useTheme as de, Accordion as e, type AccordionItem as f, type AccordionProps as g, type Align as h, AuthScreen as i, type AuthScreenProps as j, Avatar as k, AvatarGroup as l, type AvatarGroupProps as m, type AvatarProps as n, type AvatarSize as o, type AvatarStatus as p, type BannerEmphasis as q, type BannerProps as r, type BannerTone as s, BarChart as t, type BarChartProps as u, type BreadcrumbItem as v, Breadcrumbs as w, type BreadcrumbsProps as x, Button as y, type ButtonProps as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as SearchConfig, C as ColumnDef, a as SortState, P as PaginatedResponse } from './index-CdxMm6Dk.js';
2
- export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as Accordion, f as AccordionItem, g as AccordionProps, h as Align, i as AuthScreen, j as AuthScreenProps, k as Avatar, l as AvatarGroup, m as AvatarGroupProps, n as AvatarProps, o as AvatarSize, p as AvatarStatus, B as Banner, q as BannerEmphasis, r as BannerProps, s as BannerTone, t as BarChart, u as BarChartProps, v as BreadcrumbItem, w as Breadcrumbs, x as BreadcrumbsProps, y as Button, z as ButtonProps, D as ButtonSize, E as ButtonVariant, F as CMD_A, G as CMD_DOT, H as CMD_ENTER, I as CMD_K, J as CMD_S, K as Card, L as CardPadding, M as CardProps, N as CellStyle, O as ChatTemplate, Q as Checkbox, R as CheckboxProps, T as CheckoutTemplate, U as ColoredBadge, V as ColoredBadgeProps, W as ConfirmProvider, X as ContainerFillChart, Y as ContainerFillChartProps, Z as ContainerFillItem, _ as CountBadge, $ as CountBadgeProps, a0 as CountBadgeTone, a1 as DashboardTemplate, a2 as DataTable, a3 as DataTableColumn, a4 as DataTablePage, a5 as DataTableProps, a6 as DatePicker, a7 as DatePickerProps, a8 as DateRangePicker, a9 as DateRangePickerProps, aa as DescriptionColumns, ab as DescriptionItem, ac as DescriptionList, ad as DescriptionListProps, ae as Dialog, af as DialogProps, ag as DialogSize, ah as Divider, ai as DividerProps, aj as DividerSpacing, ak as DonutChart, al as DonutChartProps, am as DonutSegment, an as Drawer, ao as DrawerProps, ap as DrawerSide, aq as DrawerSize, ar as ENTER, as as EditableGrid, at as EditableGridProps, au as EmailTemplate, av as EmptyState, aw as EmptyStateProps, ax as ErrorPage, ay as ErrorPageProps, az as FilePicker, aA as FilePickerProps, aB as FormField, aC as FormFieldProps, aD as FormLayoutPage, aE as GLASS_DIVIDER, aF as GLASS_INPUT_BG, aG as GalleryTemplate, aH as Gap, aI as GlobalSearch, aJ as GlobalSearchProps, aK as Grid, aL as GridCols, aM as GridColumn, aN as GridProps, aO as HelpCenter, aP as HelpCenterDoc, aQ as HelpCenterProps, aR as INPUT_BASE, aS as INPUT_SIZES, aT as IconButton, aU as IconButtonProps, aV as Inline, aW as InlineProps, aX as Input, aY as InputNumber, aZ as InputNumberProps, a_ as InputProps, a$ as InputSize, b0 as Justify, b1 as Kanban, b2 as KanbanColumn, b3 as KanbanProps, b4 as Label, b5 as LabelProps, b6 as ListFooter, b7 as ListLoadError, b8 as ListLoadErrorProps, b9 as LoadingSpinner, ba as LoadingSpinnerProps, bb as MAX_FRACTION_DIGITS, bc as MOD, bd as Markdown, be as MarkdownProps, bf as MediaUploadField, bg as MediaUploadFieldProps, bh as MediaUploadGrid, bi as MediaUploadGridItem, bj as MediaUploadGridProps, bk as MetricBar, bl as MetricBarProps, bm as Milestone, bn as MilestoneKind, bo as MilestoneTimeline, bp as MilestoneTimelineProps, bq as NativeSelect, br as NumericKeypad, bs as NumericKeypadProps, bt as PageHeader, bu as PageHeaderProps, bv as Pagination, bw as PaginationProps, bx as Paragraph, by as ParagraphProps, bz as PopupMenu, bA as PopupMenuDivider, bB as PopupMenuItem, bC as PopupMenuLabel, bD as Radio, bE as RadioProps, bF as Result, bG as ResultProps, bH as ResultStatus, bI as SHIFT, bJ as SearchProvider, bK as SearchResult, bL as SearchableOption, bM as SearchableSelect, bN as SearchableSelectProps, bO as Segmented, bP as SegmentedOption, bQ as SegmentedProps, bR as SegmentedSize, bS as Select, bT as SelectOption, bU as SelectProps, bV as SemanticGroup, bW as SeverityTone, bX as ShellPrefsAdapter, bY as ShellPrefsProvider, bZ as SidebarActionButton, b_ as SidebarActionButtonProps, b$ as SidebarGroupLabel, c0 as SidebarLayout, c1 as SidebarLayoutProps, c2 as SidebarNavItem, c3 as Skeleton, c4 as SkeletonProps, c5 as SkeletonVariant, c6 as Sparkline, c7 as SparklineProps, c8 as Stack, c9 as StackProps, ca as StatCard, cb as StatCardProps, cc as Statistic, cd as StatisticProps, ce as StatisticSize, cf as StatisticTone, cg as StatusBadge, ch as StatusBadgeProvider, ci as Switch, cj as SwitchProps, ck as SwitchSize, cl as TabItem, cm as Tabs, cn as TabsProps, co as Text, cp as TextProps, cq as TextSize, cr as TextTone, cs as TextWeight, ct as Textarea, cu as TextareaProps, cv as Theme, cw as TileButton, cx as TileButtonProps, cy as TileSize, cz as Title, cA as TitleLevel, cB as TitleProps, cC as ToastOptions, cD as ToastPlacement, cE as Tooltip, cF as TooltipProps, cG as TopNav, cH as TopNavItem, cI as TopNavProps, cJ as VERSION, cK as appendKey, cL as applyThemePrefs, cM as backspace, cN as confirm, cO as confirmDestructive, cP as formatDate, cQ as glassStyle, cR as inputClasses, cS as isMac, cT as isSeverityTone, cU as mediaFileName, cV as prompt, cW as resolveTheme, cX as severityOf, cY as toISODate, cZ as toast, c_ as useClickOutside, c$ as useConfirm, d0 as useFocusTrap, d1 as useIsMobile, d2 as useLocalStoragePrefs, d3 as useScrollLock, d4 as useShellPrefs, d5 as useTheme } from './index-CdxMm6Dk.js';
1
+ import { S as SearchConfig, C as ColumnDef, a as SortState, P as PaginatedResponse } from './index-B6QGa8SJ.js';
2
+ export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as Accordion, f as AccordionItem, g as AccordionProps, h as Align, i as AuthScreen, j as AuthScreenProps, k as Avatar, l as AvatarGroup, m as AvatarGroupProps, n as AvatarProps, o as AvatarSize, p as AvatarStatus, B as Banner, q as BannerEmphasis, r as BannerProps, s as BannerTone, t as BarChart, u as BarChartProps, v as BreadcrumbItem, w as Breadcrumbs, x as BreadcrumbsProps, y as Button, z as ButtonProps, D as ButtonSize, E as ButtonVariant, F as CMD_A, G as CMD_DOT, H as CMD_ENTER, I as CMD_K, J as CMD_S, K as Card, L as CardPadding, M as CardProps, N as CellStyle, O as ChatTemplate, Q as Checkbox, R as CheckboxProps, T as CheckoutTemplate, U as ColoredBadge, V as ColoredBadgeProps, W as ConfirmProvider, X as ContainerFillChart, Y as ContainerFillChartProps, Z as ContainerFillItem, _ as CountBadge, $ as CountBadgeProps, a0 as CountBadgeTone, a1 as DashboardTemplate, a2 as DataTable, a3 as DataTableColumn, a4 as DataTableColumnGroup, a5 as DataTableHeader, a6 as DataTablePage, a7 as DataTableProps, a8 as DatePicker, a9 as DatePickerProps, aa as DateRangePicker, ab as DateRangePickerProps, ac as DescriptionColumns, ad as DescriptionItem, ae as DescriptionList, af as DescriptionListProps, ag as Dialog, ah as DialogProps, ai as DialogSize, aj as Divider, ak as DividerProps, al as DividerSpacing, am as DonutChart, an as DonutChartProps, ao as DonutSegment, ap as Drawer, aq as DrawerProps, ar as DrawerSide, as as DrawerSize, at as DropdownMenu, au as DropdownMenuAlign, av as DropdownMenuItem, aw as DropdownMenuProps, ax as ENTER, ay as EditableGrid, az as EditableGridProps, aA as EmailTemplate, aB as EmptyState, aC as EmptyStateProps, aD as ErrorPage, aE as ErrorPageProps, aF as FilePicker, aG as FilePickerProps, aH as FormField, aI as FormFieldProps, aJ as FormLayoutPage, aK as GLASS_DIVIDER, aL as GLASS_INPUT_BG, aM as GROUP_COLORS, aN as GalleryTemplate, aO as Gap, aP as GlobalSearch, aQ as GlobalSearchProps, aR as Grid, aS as GridCols, aT as GridColumn, aU as GridProps, aV as HelpCenter, aW as HelpCenterDoc, aX as HelpCenterProps, aY as INPUT_BASE, aZ as INPUT_SIZES, a_ as IconButton, a$ as IconButtonProps, b0 as Inline, b1 as InlineProps, b2 as Input, b3 as InputNumber, b4 as InputNumberProps, b5 as InputProps, b6 as InputSize, b7 as Justify, b8 as Kanban, b9 as KanbanColumn, ba as KanbanProps, bb as Label, bc as LabelProps, bd as ListFooter, be as ListLoadError, bf as ListLoadErrorProps, bg as LoadingSpinner, bh as LoadingSpinnerProps, bi as MAX_FRACTION_DIGITS, bj as MOD, bk as Markdown, bl as MarkdownProps, bm as MediaUploadField, bn as MediaUploadFieldProps, bo as MediaUploadGrid, bp as MediaUploadGridItem, bq as MediaUploadGridProps, br as MetricBar, bs as MetricBarProps, bt as Milestone, bu as MilestoneKind, bv as MilestoneTimeline, bw as MilestoneTimelineProps, bx as NativeSelect, by as NumericKeypad, bz as NumericKeypadProps, bA as PageHeader, bB as PageHeaderProps, bC as Pagination, bD as PaginationProps, bE as Paragraph, bF as ParagraphProps, bG as PopupMenu, bH as PopupMenuDivider, bI as PopupMenuItem, bJ as PopupMenuLabel, bK as Radio, bL as RadioProps, bM as Result, bN as ResultProps, bO as ResultStatus, bP as SHIFT, bQ as SearchProvider, bR as SearchResult, bS as SearchableOption, bT as SearchableSelect, bU as SearchableSelectProps, bV as Segmented, bW as SegmentedOption, bX as SegmentedProps, bY as SegmentedSize, bZ as Select, b_ as SelectOption, b$ as SelectProps, c0 as SemanticGroup, c1 as SeverityTone, c2 as ShellPrefsAdapter, c3 as ShellPrefsProvider, c4 as SidebarActionButton, c5 as SidebarActionButtonProps, c6 as SidebarGroupLabel, c7 as SidebarLayout, c8 as SidebarLayoutProps, c9 as SidebarNavItem, ca as Skeleton, cb as SkeletonProps, cc as SkeletonVariant, cd as Sparkline, ce as SparklineProps, cf as Stack, cg as StackProps, ch as StatCard, ci as StatCardProps, cj as Statistic, ck as StatisticProps, cl as StatisticSize, cm as StatisticTone, cn as StatusBadge, co as StatusBadgeProvider, cp as Switch, cq as SwitchProps, cr as SwitchSize, cs as TabItem, ct as Tabs, cu as TabsProps, cv as Text, cw as TextProps, cx as TextSize, cy as TextTone, cz as TextWeight, cA as Textarea, cB as TextareaProps, cC as Theme, cD as TileButton, cE as TileButtonProps, cF as TileSize, cG as Title, cH as TitleLevel, cI as TitleProps, cJ as ToastOptions, cK as ToastPlacement, cL as Tooltip, cM as TooltipProps, cN as TopNav, cO as TopNavItem, cP as TopNavProps, cQ as VERSION, cR as appendKey, cS as applyThemePrefs, cT as backspace, cU as confirm, cV as confirmDestructive, cW as formatDate, cX as glassStyle, cY as inputClasses, cZ as isMac, c_ as isSeverityTone, c$ as mediaFileName, d0 as prompt, d1 as resolveTheme, d2 as severityOf, d3 as tabButtonId, d4 as tabPanelId, d5 as toISODate, d6 as toast, d7 as useClickOutside, d8 as useConfirm, d9 as useFocusTrap, da as useIsMobile, db as useLocalStoragePrefs, dc as useScrollLock, dd as useShellPrefs, de as useTheme } from './index-B6QGa8SJ.js';
3
3
  import { W as WindowRegistry } from './types-BHVq95fp.js';
4
4
  export { M as ModalRegistryEntry, P as PageRegistryEntry, a as WindowRegistryEntry, i as isEntityEntry, b as isPageEntry, s as setShellWindowRegistry } from './types-BHVq95fp.js';
5
5
  import * as react from 'react';
package/dist/index.js CHANGED
@@ -1,28 +1,28 @@
1
- import { PREVIEW_OPENED_EVENT, openPreviewFile } from './chunk-22BNPLM4.js';
2
- import { subscribePomo, getPomoSnapshot } from './chunk-OI253GOA.js';
3
- export { setShellTodoProvider } from './chunk-OI253GOA.js';
4
- export { ImageAnnotator_default as ImageAnnotator } from './chunk-X5PZYTAK.js';
1
+ import { PREVIEW_OPENED_EVENT, openPreviewFile } from './chunk-3OCL3DB4.js';
2
+ import { subscribePomo, getPomoSnapshot } from './chunk-IOCOH2QQ.js';
3
+ export { setShellTodoProvider } from './chunk-IOCOH2QQ.js';
4
+ export { ImageAnnotator_default as ImageAnnotator } from './chunk-ECE3B3FZ.js';
5
5
  import { publishDesktopFolders, requestFilesTrashView, FolderGlyph, requestFilesDesktopFolderView, FileIconTile } from './chunk-OQ7GRU7G.js';
6
6
  import './chunk-4SQU5YV6.js';
7
7
  import { setPdfPreview } from './chunk-BV6SQ46N.js';
8
- import { CMD_K, CMD_DOT, CMD_A, ALT_SHIFT_N, ALT_SHIFT_E, CMD_ENTER, CMD_S, ALT_SHIFT_D, CMD_Z, CMD_SHIFT_Z, formatDate, useTheme, GlobalSearch, resolveTheme, useClickOutside, ListLoadError, ListFooter, firstEnabledIndex, Button_default, FormField, Input_default, applyThemePrefs, lastEnabledIndex, nextEnabledIndex, matchTypeahead } from './chunk-7NIFBQUX.js';
9
- export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, CountBadge, DashboardTemplate, DataTable, DataTablePage, DatePicker_default as DatePicker, DateRangePicker, DescriptionList, Divider, DonutChart, Drawer, ENTER, EmailTemplate, EmptyState, ErrorPage, FilePicker, FormField, FormLayoutPage, GalleryTemplate, GlobalSearch, Grid, HelpCenter, INPUT_BASE, INPUT_SIZES, IconButton_default as IconButton, Inline, Input_default as Input, InputNumber_default as InputNumber, Kanban, Label, ListFooter, ListLoadError, LoadingSpinner, MAX_FRACTION_DIGITS, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NumericKeypad, PageHeader, Pagination, Paragraph, Radio_default as Radio, Result, SHIFT, SearchableSelect, Segmented, Select_default as Select, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, Skeleton, Sparkline, Stack, StatCard, Statistic, StatusBadge, StatusBadgeProvider, Switch_default as Switch, Tabs, Text, Textarea_default as Textarea, TileButton_default as TileButton, Title, Tooltip, TopNav, appendKey, applyThemePrefs, backspace, formatDate, inputClasses, isMac, isSeverityTone, mediaFileName, resolveTheme, severityOf, toISODate, useClickOutside, useTheme } from './chunk-7NIFBQUX.js';
8
+ import { CMD_K, CMD_DOT, CMD_A, ALT_SHIFT_N, ALT_SHIFT_E, CMD_ENTER, CMD_S, ALT_SHIFT_D, CMD_Z, CMD_SHIFT_Z, formatDate, useTheme, GlobalSearch, resolveTheme, useClickOutside, ListLoadError, ListFooter, firstEnabledIndex, Button_default, FormField, Input_default, applyThemePrefs, lastEnabledIndex, nextEnabledIndex, matchTypeahead } from './chunk-3SUSQHOW.js';
9
+ export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, CountBadge, DashboardTemplate, DataTable, DataTablePage, DatePicker_default as DatePicker, DateRangePicker, DescriptionList, Divider, DonutChart, Drawer, DropdownMenu, ENTER, EmailTemplate, EmptyState, ErrorPage, FilePicker, FormField, FormLayoutPage, GROUP_COLORS, GalleryTemplate, GlobalSearch, Grid, HelpCenter, INPUT_BASE, INPUT_SIZES, IconButton_default as IconButton, Inline, Input_default as Input, InputNumber_default as InputNumber, Kanban, Label, ListFooter, ListLoadError, LoadingSpinner, MAX_FRACTION_DIGITS, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NumericKeypad, PageHeader, Pagination, Paragraph, Radio_default as Radio, Result, SHIFT, SearchableSelect, Segmented, Select_default as Select, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, Skeleton, Sparkline, Stack, StatCard, Statistic, StatusBadge, StatusBadgeProvider, Switch_default as Switch, Tabs, Text, Textarea_default as Textarea, TileButton_default as TileButton, Title, Tooltip, TopNav, appendKey, applyThemePrefs, backspace, formatDate, inputClasses, isMac, isSeverityTone, mediaFileName, resolveTheme, severityOf, tabButtonId, tabPanelId, toISODate, useClickOutside, useTheme } from './chunk-3SUSQHOW.js';
10
10
  export { Breadcrumbs } from './chunk-HNH7FOYB.js';
11
11
  import { withSpareRow, EditableGrid } from './chunk-DC6BYGZ6.js';
12
12
  export { EditableGrid } from './chunk-DC6BYGZ6.js';
13
13
  import { SidebarLayout } from './chunk-YG45DAUT.js';
14
14
  export { SidebarLayout } from './chunk-YG45DAUT.js';
15
- import { toast_default } from './chunk-4AKVHY4B.js';
16
- export { toast_default as toast } from './chunk-4AKVHY4B.js';
17
- import { APP_VERSION, VERSION } from './chunk-SGS3IQEL.js';
18
- export { VERSION } from './chunk-SGS3IQEL.js';
15
+ import { toast_default } from './chunk-TK6HI2U4.js';
16
+ export { toast_default as toast } from './chunk-TK6HI2U4.js';
17
+ import { APP_VERSION, VERSION } from './chunk-XVXEYKMT.js';
18
+ export { VERSION } from './chunk-XVXEYKMT.js';
19
19
  import { playNotification, playStartup, soundsEnabled, getSoundConfig, SOUND_PACK_KEYS, SOUND_PACKS, SOUND_TYPES, SOUND_TYPE_LABELS, setSoundForType, previewSound, setAllSounds, playLogout } from './chunk-D7PYW2QS.js';
20
20
  import { useAuth } from './chunk-EWDYCO65.js';
21
21
  export { setShellAuthBridge } from './chunk-EWDYCO65.js';
22
- import { cancelWindowFront, requestWindowFront, useWindowManager, WINDOW_REGISTRY, isPageEntry, Modal, setPerfCollecting, drainPerfEvents, markMenuOpen, SIDEBAR_STRIP_W, forgetMaximizedWindowBoxes, ModalActions, useModalActive, client_default, LoadingSpinner, isShellApiClientConfigured, useUndo, useEnclosingModalId, CancelButton, setWindowPosition } from './chunk-GUWAKATU.js';
23
- export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, UndoProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, beginWindowGesture, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, markMenuOpen, requestWindowFront, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useEnclosingModalId, useIsActiveWindow, useModalActive, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-GUWAKATU.js';
24
- import { PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, useShellPrefs, useIsMobile } from './chunk-C22EFSND.js';
25
- export { PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, useIsMobile, useLocalStoragePrefs, useShellPrefs } from './chunk-C22EFSND.js';
22
+ import { cancelWindowFront, requestWindowFront, useWindowManager, WINDOW_REGISTRY, isPageEntry, Modal, setPerfCollecting, drainPerfEvents, markMenuOpen, SIDEBAR_STRIP_W, forgetMaximizedWindowBoxes, ModalActions, useModalActive, client_default, LoadingSpinner, isShellApiClientConfigured, useUndo, useEnclosingModalId, CancelButton, setWindowPosition } from './chunk-5S65ZC5W.js';
23
+ export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, UndoProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, beginWindowGesture, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, markMenuOpen, requestWindowFront, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useEnclosingModalId, useIsActiveWindow, useModalActive, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-5S65ZC5W.js';
24
+ import { PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, useShellPrefs, useIsMobile } from './chunk-ZCDFNZQS.js';
25
+ export { PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, useIsMobile, useLocalStoragePrefs, useShellPrefs } from './chunk-ZCDFNZQS.js';
26
26
  import { registerModalEscapeInterceptor } from './chunk-OXLLRKBC.js';
27
27
  export { ConfirmProvider, Dialog, confirm, confirmDestructive, prompt, registerModalEscapeInterceptor, useConfirm, useFocusTrap, useScrollLock } from './chunk-OXLLRKBC.js';
28
28
  import { startMenuCategories, navVisible, navSections, isSection, navIcons, isReachable, sectionIcons, useShellAuth, visibleChildren } from './chunk-WNLPTLT6.js';