@scattered-light/loomiere-base-ui 0.18.0 → 0.20.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 (98) hide show
  1. package/README.md +13 -3
  2. package/dist/{chunk-M7KJASGK.js → chunk-43IJNNXK.js} +86 -3
  3. package/dist/chunk-43IJNNXK.js.map +1 -0
  4. package/dist/{chunk-2BFNETZZ.js → chunk-B5FH3RF5.js} +33 -15
  5. package/dist/chunk-B5FH3RF5.js.map +1 -0
  6. package/dist/chunk-Z6SR3KMB.js +77 -0
  7. package/dist/chunk-Z6SR3KMB.js.map +1 -0
  8. package/dist/custom/collection/index.d.ts +55 -2
  9. package/dist/custom/collection/index.js +89 -5
  10. package/dist/custom/collection/index.js.map +1 -1
  11. package/dist/custom/index.d.ts +1 -1
  12. package/dist/custom/index.js +2 -2
  13. package/dist/design-system/components/CollectionCards/README.md +58 -0
  14. package/dist/design-system/components/CollectionCards/preview.html +19 -0
  15. package/dist/design-system/components/CollectionToolbar/README.md +3 -1
  16. package/dist/design-system/components/PickerButton/README.md +1 -1
  17. package/dist/design-system/components/SplitButton/README.md +26 -0
  18. package/dist/design-system/components/SplitButton/preview.html +19 -0
  19. package/dist/design-system/components/StatCard/README.md +4 -1
  20. package/dist/design-system/components/StatCard/preview.html +1 -1
  21. package/dist/design-system/components/bundle.js +7 -7
  22. package/dist/design-system/components/index.d.ts +1 -1
  23. package/dist/design-system/components/styles.css +202 -66
  24. package/dist/{index-ywBkS0AA.d.ts → index-CB3_OECu.d.ts} +35 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +5 -18
  27. package/dist/index.js.map +1 -1
  28. package/dist/styles/components/Accordion.css +1 -1
  29. package/dist/styles/components/AlertDialog.css +1 -1
  30. package/dist/styles/components/Autocomplete.css +1 -1
  31. package/dist/styles/components/Avatar.css +1 -1
  32. package/dist/styles/components/Button.css +1 -1
  33. package/dist/styles/components/Checkbox.css +1 -1
  34. package/dist/styles/components/CheckboxGroup.css +1 -1
  35. package/dist/styles/components/Collapsible.css +1 -1
  36. package/dist/styles/components/Combobox.css +1 -1
  37. package/dist/styles/components/ContextMenu.css +1 -1
  38. package/dist/styles/components/Dialog.css +1 -1
  39. package/dist/styles/components/Drawer.css +1 -1
  40. package/dist/styles/components/Field.css +1 -1
  41. package/dist/styles/components/Fieldset.css +1 -1
  42. package/dist/styles/components/Form.css +1 -1
  43. package/dist/styles/components/Input.css +1 -1
  44. package/dist/styles/components/Menu.css +1 -1
  45. package/dist/styles/components/Menubar.css +1 -1
  46. package/dist/styles/components/Meter.css +1 -1
  47. package/dist/styles/components/NavigationMenu.css +1 -1
  48. package/dist/styles/components/NumberField.css +1 -1
  49. package/dist/styles/components/OTPField.css +1 -1
  50. package/dist/styles/components/Popover.css +1 -1
  51. package/dist/styles/components/PreviewCard.css +1 -1
  52. package/dist/styles/components/Progress.css +1 -1
  53. package/dist/styles/components/Radio.css +1 -1
  54. package/dist/styles/components/ScrollArea.css +1 -1
  55. package/dist/styles/components/Select.css +1 -1
  56. package/dist/styles/components/Separator.css +1 -1
  57. package/dist/styles/components/Slider.css +1 -1
  58. package/dist/styles/components/Switch.css +1 -1
  59. package/dist/styles/components/Tabs.css +1 -1
  60. package/dist/styles/components/Toast.css +1 -1
  61. package/dist/styles/components/Toggle.css +1 -1
  62. package/dist/styles/components/ToggleGroup.css +1 -1
  63. package/dist/styles/components/Toolbar.css +1 -1
  64. package/dist/styles/components/Tooltip.css +1 -1
  65. package/dist/styles/custom/AppBar.css +1 -1
  66. package/dist/styles/custom/Badge.css +1 -1
  67. package/dist/styles/custom/Collection.css +2 -1
  68. package/dist/styles/custom/CollectionCards.css +24 -0
  69. package/dist/styles/custom/CollectionPagination.css +1 -1
  70. package/dist/styles/custom/CollectionToolbar.css +47 -1
  71. package/dist/styles/custom/DataList.css +1 -1
  72. package/dist/styles/custom/DataTable.css +1 -1
  73. package/dist/styles/custom/DatePicker.css +1 -1
  74. package/dist/styles/custom/DescriptionList.css +1 -1
  75. package/dist/styles/custom/EditableList.css +1 -1
  76. package/dist/styles/custom/EmptyState.css +1 -1
  77. package/dist/styles/custom/ListDetail.css +1 -1
  78. package/dist/styles/custom/MoneyField.css +1 -1
  79. package/dist/styles/custom/PickerButton.css +4 -4
  80. package/dist/styles/custom/PickerSplit.css +2 -2
  81. package/dist/styles/custom/Sheet.css +1 -1
  82. package/dist/styles/custom/SideNav.css +1 -1
  83. package/dist/styles/custom/SplitButton.css +21 -0
  84. package/dist/styles/custom/Splitter.css +1 -1
  85. package/dist/styles/custom/StatCard.css +44 -1
  86. package/dist/styles/custom/StatFigure.css +1 -1
  87. package/dist/styles/custom/Table.css +1 -1
  88. package/dist/styles/index.css +2 -1
  89. package/dist/styles/reset/accessibility.css +1 -1
  90. package/dist/styles/reset/reset-accessibility.css +1 -1
  91. package/dist/styles/reset/reset-tailwind.css +1 -1
  92. package/dist/styles/reset/reset.css +1 -1
  93. package/dist/styles/tailwind.css +2 -1
  94. package/package.json +2 -2
  95. package/dist/chunk-2BFNETZZ.js.map +0 -1
  96. package/dist/chunk-M7KJASGK.js.map +0 -1
  97. package/dist/chunk-Y2CPBMFJ.js +0 -147
  98. package/dist/chunk-Y2CPBMFJ.js.map +0 -1
package/README.md CHANGED
@@ -31,7 +31,7 @@ Use Base UI as usual, with the class names the styles target, or the few wrapper
31
31
  import {
32
32
  Accordion, AlertDialog, Autocomplete, Avatar, Badge, Button, Calendar, Checkbox, CheckboxGroup, Collapsible,
33
33
  AppBar, AppBarSpacer, Combobox, ContextMenu, DatePicker, DatePresets, DescriptionItem, DescriptionList, Dialog, Drawer, EmptyState, Field, Form, Input, ListDetail, Menu, Menubar, Meter, MoneyField, NumberField, PickerButton, PickerSplit, PickerSplitMain, PickerSplitTrigger,
34
- OTPField, Popover, PreviewCard, Progress, Radio, ScrollArea, Select, Separator, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, Slider, Splitter, StatCard, StatFigure, Switch,
34
+ OTPField, Popover, PreviewCard, Progress, Radio, ScrollArea, Select, Separator, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, Slider, Splitter, SplitButton, StatCard, StatFigure, Switch,
35
35
  Tabs, Toast, Toggle, ToggleGroup, Toolbar, Tooltip, useListDetail,
36
36
  } from '@scattered-light/loomiere-base-ui';
37
37
  ```
@@ -162,7 +162,7 @@ Pieces for pages that read like an accountant's working paper. They use the them
162
162
  <StatFigure label="Book balance" value="75.00" caption="DR · Oct 29" underline="double" />
163
163
  ```
164
164
 
165
- `StatCard` is a card for one thing a page lists (an Entity, an account): a heading, a caption, and a row of figures ruled off under them. Give it `href` or `onOpen` and the whole card opens through its title, with one tab stop named by the title. `headingLevel` fits it to the page's outline. `footer` adds a line under the figures, and `tag` puts a small mark (a count of what is new, a status) at the top right.
165
+ `StatCard` is a card for one thing a page lists (an Entity, an account): a heading, a caption, and a row of figures ruled off under them. Give it `href` or `onOpen` and the whole card opens through its title, with one tab stop named by the title. `headingLevel` fits it to the page's outline. `footer` adds a line under the figures, and `tag` puts a small mark (a count of what is new, a status) at the top right. `details` adds a leader list of label and value pairs, and `status` and `actions` add a ruled bar at the foot (who it waits on, a way in).
166
166
 
167
167
  ```tsx
168
168
  <StatCard
@@ -254,10 +254,20 @@ npm install @tanstack/react-table
254
254
  ```
255
255
 
256
256
  ```tsx
257
- import { DataList, DataTable, CollectionToolbar, CollectionPagination, defineColumns, useCollection } from '@scattered-light/loomiere-base-ui/custom/collection';
257
+ import { DataList, DataTable, CollectionToolbar, CollectionPagination, CollectionCards, defineColumns, useCollection } from '@scattered-light/loomiere-base-ui/custom/collection';
258
258
  import { EditableList } from '@scattered-light/loomiere-base-ui/custom';
259
259
  ```
260
260
 
261
+ `CollectionToolbar` takes `segments` for one row of search plus toggle groups (build them with `segmentFilter` and `segmentSort`), and `ruled` for the sheet rule above it. `SplitButton` joins a main action and a Menu of other ways to do it.
262
+
263
+ `CollectionCards` shows the current page as a grid of cards, for a page that lists things such as Entities or accounts. Give it `renderCard` (a `StatCard` works well); `CollectionToolbar` and `CollectionPagination` work with it as they do with the table.
264
+
265
+ ```tsx
266
+ <CollectionToolbar collection={collection} searchLabel="Find an Entity" showSort />
267
+ <CollectionCards collection={collection} label="Entities" renderCard={(e) => <StatCard title={e.name} onOpen={() => open(e.id)} />} />
268
+ <CollectionPagination page={collection.page} pageCount={collection.pageCount} total={collection.pageTotal} onPageChange={collection.setPage} label="Entities" />
269
+ ```
270
+
261
271
  `useCollection` holds search, sort, filters, selection, grouping, paging, and column order and visibility. DataTable and DataList render that same state. Switch views by changing the component. The plain `<table class="Table">` is unchanged, for static tables and reports.
262
272
 
263
273
  Columns decide how a value sorts, searches, filters and totals. `rowHeader` names the row. One column may use a tabs filter. Money totals add in minor units. Search is deferred, not debounced.
@@ -3,6 +3,7 @@ import { Button as Button$1 } from '@base-ui/react/button';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
  import { Select as Select$1 } from '@base-ui/react/select';
5
5
  import { Combobox as Combobox$1 } from '@base-ui/react/combobox';
6
+ import { Menu as Menu$1 } from '@base-ui/react/menu';
6
7
 
7
8
  // src/utils/cn.ts
8
9
  function cn(...inputs) {
@@ -342,6 +343,88 @@ var Combobox = {
342
343
  useFilteredItems: Combobox$1.useFilteredItems,
343
344
  createItems: Combobox$1.createItems
344
345
  };
346
+ var Trigger3 = buttonPart(
347
+ Menu$1.Trigger,
348
+ "MenuTrigger",
349
+ { skipClass: "MenubarTrigger" }
350
+ );
351
+ var Positioner3 = styledPart(
352
+ Menu$1.Positioner,
353
+ "MenuPositioner",
354
+ "MenuPositioner"
355
+ );
356
+ var Popup3 = styledPart(
357
+ Menu$1.Popup,
358
+ "MenuPopup",
359
+ "MenuPopup"
360
+ );
361
+ var Item3 = styledPart(
362
+ Menu$1.Item,
363
+ "MenuItem",
364
+ "MenuItem"
365
+ );
366
+ var CheckboxItem = styledPart(
367
+ Menu$1.CheckboxItem,
368
+ "MenuCheckboxItem",
369
+ "MenuCheckboxItem"
370
+ );
371
+ var CheckboxItemIndicator = styledPart(Menu$1.CheckboxItemIndicator, "MenuCheckboxItemIndicator", "MenuCheckboxItemIndicator");
372
+ var RadioItem = styledPart(
373
+ Menu$1.RadioItem,
374
+ "MenuRadioItem",
375
+ "MenuRadioItem"
376
+ );
377
+ var RadioItemIndicator = styledPart(Menu$1.RadioItemIndicator, "MenuRadioItemIndicator", "MenuRadioItemIndicator");
378
+ var SubmenuTrigger = styledPart(
379
+ Menu$1.SubmenuTrigger,
380
+ "MenuSubmenuTrigger",
381
+ "MenuSubmenuTrigger"
382
+ );
383
+ var Group2 = styledPart(
384
+ Menu$1.Group,
385
+ "MenuGroup",
386
+ "MenuGroup"
387
+ );
388
+ var GroupLabel3 = styledPart(
389
+ Menu$1.GroupLabel,
390
+ "MenuGroupLabel",
391
+ "MenuGroupLabel"
392
+ );
393
+ var Separator3 = styledPart(
394
+ Menu$1.Separator,
395
+ "MenuSeparator",
396
+ "MenuSeparator"
397
+ );
398
+ var Menu = {
399
+ Root: Menu$1.Root,
400
+ Trigger: Trigger3,
401
+ Portal: Menu$1.Portal,
402
+ Backdrop: Menu$1.Backdrop,
403
+ Positioner: Positioner3,
404
+ Popup: Popup3,
405
+ Arrow: Menu$1.Arrow,
406
+ Item: Item3,
407
+ LinkItem: Menu$1.LinkItem,
408
+ CheckboxItem,
409
+ CheckboxItemIndicator,
410
+ RadioGroup: Menu$1.RadioGroup,
411
+ RadioItem,
412
+ RadioItemIndicator,
413
+ Group: Group2,
414
+ GroupLabel: GroupLabel3,
415
+ Separator: Separator3,
416
+ SubmenuRoot: Menu$1.SubmenuRoot,
417
+ SubmenuTrigger,
418
+ Viewport: Menu$1.Viewport,
419
+ Input: Menu$1.Input,
420
+ List: Menu$1.List,
421
+ Clear: Menu$1.Clear,
422
+ Empty: Menu$1.Empty,
423
+ FilterProvider: Menu$1.FilterProvider,
424
+ Handle: Menu$1.Handle,
425
+ createHandle: Menu$1.createHandle,
426
+ useFilter: Menu$1.useFilter
427
+ };
345
428
  var ICONS = {
346
429
  start: "inbox",
347
430
  "no-results": "search_off",
@@ -797,6 +880,6 @@ function useUnderWidth(token) {
797
880
  return { ref, under };
798
881
  }
799
882
 
800
- export { Button, Combobox, EmptyState, Select, balanceOf, buttonPart, cn, cnState, collatorFor, compareDecimal, comparePresent, countFacets, formatDate, formatMoney, formatNumber, formatPercent, fractionDigitsOf, hiddenSelectedCount, isEmptyValue, isoDate, minorToDecimal, moneySearchForms, nextSort, pageBounds, pageFlat, searchHaystack, searchMatches, selectableIds, sortRows, styledPart, styledPartUnless, sumMoney, toMinor, treeVisibleIds, useUnderWidth };
801
- //# sourceMappingURL=chunk-M7KJASGK.js.map
802
- //# sourceMappingURL=chunk-M7KJASGK.js.map
883
+ export { Button, Combobox, EmptyState, Menu, Select, balanceOf, buttonPart, cn, cnState, collatorFor, compareDecimal, comparePresent, countFacets, formatDate, formatMoney, formatNumber, formatPercent, fractionDigitsOf, hiddenSelectedCount, isEmptyValue, isoDate, minorToDecimal, moneySearchForms, nextSort, pageBounds, pageFlat, searchHaystack, searchMatches, selectableIds, sortRows, styledPart, styledPartUnless, sumMoney, toMinor, treeVisibleIds, useUnderWidth };
884
+ //# sourceMappingURL=chunk-43IJNNXK.js.map
885
+ //# sourceMappingURL=chunk-43IJNNXK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/utils/styled-part.tsx","../src/components/button.tsx","../src/components/select.tsx","../src/components/combobox.tsx","../src/components/menu.tsx","../src/custom/empty-state.tsx","../src/custom/collection/collection-utils.ts","../src/custom/use-under-width.ts"],"names":["React","React2","Button","jsx","BaseButton","BaseSelect","BaseCombobox","Trigger","React3","Icon","Positioner","Popup","List","Item","ItemIndicator","GroupLabel","Separator","BaseMenu","Group","EmptyStateRoot","EmptyStateMedia","EmptyStateTitle","EmptyStateDescription","EmptyStateActions","EmptyState","React5"],"mappings":"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","file":"chunk-43IJNNXK.js","sourcesContent":["/**\n * Merge class names (strings, arrays, conditional objects). No external deps.\n */\ntype ClassValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | Record<string, boolean | undefined>\n | ClassValue[];\n\nexport function cn(...inputs: ClassValue[]): string {\n const out: string[] = [];\n for (const input of inputs) {\n if (input == null || input === false) continue;\n if (typeof input === 'string' || typeof input === 'number') {\n out.push(String(input));\n } else if (Array.isArray(input)) {\n const inner = cn(...input);\n if (inner) out.push(inner);\n } else if (typeof input === 'object') {\n for (const [k, v] of Object.entries(input)) {\n if (v) out.push(k);\n }\n }\n }\n return out.join(' ');\n}\n\n/** Merge a static BEM block with Base UI `className` (string or state callback). */\nexport function cnState<State>(\n base: string,\n className: string | ((state: State) => string | undefined) | undefined,\n state: State,\n): string {\n return cn(base, typeof className === 'function' ? className(state) : className);\n}\n","import * as React from 'react';\nimport { cn, cnState } from './cn';\n\ntype AnyClassName = string | ((state: never) => string | undefined) | undefined;\n\n/**\n * A Base UI part that always carries its design-system class.\n * A `className` string or state callback is merged after that class.\n */\nexport function styledPart<E extends HTMLElement, P extends object>(\n Base: React.ComponentType<P & React.RefAttributes<E>>,\n displayName: string,\n baseClass: string,\n) {\n const Comp = React.forwardRef<E, P>(function StyledPart(props, ref) {\n const { className, ...rest } = props as P & { className?: AnyClassName };\n return (\n <Base\n ref={ref}\n {...(rest as P)}\n className={(state: never) => cnState(baseClass, className, state)}\n />\n );\n });\n Comp.displayName = displayName;\n return Comp;\n}\n\n/**\n * Like {@link styledPart}, but leaves the base class off when `className` already\n * includes `skipClass`. Two looks for one part (a Button trigger, a dialog action)\n * cannot both be applied.\n */\nexport function styledPartUnless<E extends HTMLElement, P extends object>(\n Base: React.ComponentType<P & React.RefAttributes<E>>,\n displayName: string,\n baseClass: string,\n skipClass: string,\n) {\n const Comp = React.forwardRef<E, P>(function StyledPart(props, ref) {\n const { className, ...rest } = props as P & { className?: AnyClassName };\n return (\n <Base\n ref={ref}\n {...(rest as P)}\n className={(state: never) => {\n const extra = typeof className === 'function' ? className(state) : className;\n const skip = extra?.split(/\\s+/).includes(skipClass);\n return cn(skip ? undefined : baseClass, extra);\n }}\n />\n );\n });\n Comp.displayName = displayName;\n return Comp;\n}\n\n/** True when the children are one element and no text: an icon on its own. */\nexport function isIconOnly(children: React.ReactNode) {\n const items = React.Children.toArray(children);\n return items.length === 1 && React.isValidElement(items[0]);\n}\n\n/** The props every button-like part takes, the same as {@link Button}'s. */\nexport type ButtonPartProps = {\n /** How loud the button is. The brand's roles decide what each level looks like. */\n emphasis?: 'bold' | 'standard' | 'subtle' | 'quiet';\n /** Paint the level in another palette instead of the level's own color (e.g. \"secondary\", \"error\"). */\n palette?: string;\n};\n\ntype ButtonPartOptions = {\n /** The part's own class, always applied (e.g. `PopoverTrigger`). */\n partClass?: string;\n /**\n * Only a Button when asked: `className` includes `Button`, or `emphasis` or `palette` is set.\n * Otherwise the part is drawn with `otherClass`.\n */\n optIn?: boolean;\n /** The class used when the part is not a Button (the corner X, a select field). */\n otherClass?: string;\n /** Not a Button when `className` includes this class (a menubar row). */\n skipClass?: string;\n};\n\n/**\n * A Base UI part drawn as a {@link Button}: it takes `emphasis` and `palette`, and a part holding\n * only an icon gets `data-icon-only`. Every trigger, close, and action that looks like a button\n * goes through here, so they all behave the same.\n */\nexport function buttonPart<E extends HTMLElement, P extends object>(\n Base: React.ComponentType<P & React.RefAttributes<E>>,\n displayName: string,\n { partClass, optIn = false, otherClass, skipClass }: ButtonPartOptions = {},\n) {\n const Comp = React.forwardRef<E, P & ButtonPartProps>(function ButtonPart(props, ref) {\n const { className, emphasis, palette, ...rest } = props as P &\n ButtonPartProps & { className?: AnyClassName; children?: React.ReactNode };\n const asked = emphasis !== undefined || palette !== undefined;\n return (\n <Base\n ref={ref}\n data-emphasis={emphasis}\n data-color={palette}\n data-icon-only={isIconOnly(rest.children) ? '' : undefined}\n {...(rest as P)}\n className={(state: never) => {\n const extra = typeof className === 'function' ? className(state) : className;\n const classes = extra?.split(/\\s+/) ?? [];\n const isButton =\n !(skipClass && classes.includes(skipClass)) &&\n (!optIn || asked || classes.includes('Button'));\n return cn(\n partClass,\n isButton && !classes.includes('Button') ? 'Button' : undefined,\n isButton ? undefined : otherClass,\n extra,\n );\n }}\n />\n );\n });\n Comp.displayName = displayName;\n return Comp;\n}\n","import * as React from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport { cnState } from '../utils/cn';\nimport { isIconOnly, type ButtonPartProps } from '../utils/styled-part';\n\nexport type ButtonProps = React.ComponentProps<typeof BaseButton> & ButtonPartProps;\n\n/**\n * Base UI [Button](https://base-ui.com/react/components/button) with design-system `Button` classes.\n * A button holding only an icon gets `data-icon-only` and is drawn square (a circle, with the pill\n * corners). Icon-only buttons must include a label for assistive tech (`aria-label` or `aria-labelledby`).\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { className, emphasis, palette, children, ...props },\n ref,\n) {\n return (\n <BaseButton\n ref={ref}\n data-emphasis={emphasis}\n data-color={palette}\n data-icon-only={isIconOnly(children) ? '' : undefined}\n {...props}\n className={(state) => cnState('Button', className, state)}\n >\n {children}\n </BaseButton>\n );\n});\n\nButton.displayName = 'Button';\n","import type * as React from 'react';\nimport { Select as BaseSelect } from '@base-ui/react/select';\nimport { buttonPart, styledPart } from '../utils/styled-part';\n\n/**\n * Base UI [Select](https://base-ui.com/react/components/select) with design-system classes.\n * The trigger is a field, or a Button (in a toolbar) when it sets `emphasis`, `palette`, or\n * `className=\"Button\"`. The list is a popup of item rows.\n * `Select.Root` renders no element, so it is the Base UI root unchanged.\n */\nconst Trigger = buttonPart<HTMLButtonElement, React.ComponentProps<typeof BaseSelect.Trigger>>(\n BaseSelect.Trigger,\n 'SelectTrigger',\n { optIn: true, otherClass: 'SelectTrigger' },\n);\nconst Value = styledPart<HTMLSpanElement, React.ComponentProps<typeof BaseSelect.Value>>(\n BaseSelect.Value,\n 'SelectValue',\n 'SelectValue',\n);\nconst Icon = styledPart<HTMLSpanElement, React.ComponentProps<typeof BaseSelect.Icon>>(\n BaseSelect.Icon,\n 'SelectIcon',\n 'SelectIcon',\n);\nconst Backdrop = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Backdrop>>(\n BaseSelect.Backdrop,\n 'SelectBackdrop',\n 'SelectBackdrop',\n);\nconst Positioner = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Positioner>>(\n BaseSelect.Positioner,\n 'SelectPositioner',\n 'SelectPositioner',\n);\nconst Popup = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Popup>>(\n BaseSelect.Popup,\n 'SelectPopup',\n 'SelectPopup',\n);\nconst List = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.List>>(\n BaseSelect.List,\n 'SelectList',\n 'SelectList',\n);\nconst Item = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Item>>(\n BaseSelect.Item,\n 'SelectItem',\n 'SelectItem',\n);\nconst ItemIndicator = styledPart<HTMLSpanElement, React.ComponentProps<typeof BaseSelect.ItemIndicator>>(\n BaseSelect.ItemIndicator,\n 'SelectItemIndicator',\n 'SelectItemIndicator',\n);\nconst ItemText = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.ItemText>>(\n BaseSelect.ItemText,\n 'SelectItemText',\n 'SelectItemText',\n);\nconst Arrow = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Arrow>>(\n BaseSelect.Arrow,\n 'SelectArrow',\n 'SelectArrow',\n);\nconst ScrollDownArrow = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.ScrollDownArrow>>(\n BaseSelect.ScrollDownArrow,\n 'SelectScrollDownArrow',\n 'SelectScrollArrow',\n);\nconst ScrollUpArrow = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.ScrollUpArrow>>(\n BaseSelect.ScrollUpArrow,\n 'SelectScrollUpArrow',\n 'SelectScrollArrow',\n);\nconst Group = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Group>>(\n BaseSelect.Group,\n 'SelectGroup',\n 'SelectGroup',\n);\nconst GroupLabel = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.GroupLabel>>(\n BaseSelect.GroupLabel,\n 'SelectGroupLabel',\n 'SelectGroupLabel',\n);\nconst Separator = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseSelect.Separator>>(\n BaseSelect.Separator,\n 'SelectSeparator',\n 'SelectSeparator',\n);\n\nexport const Select = {\n Root: BaseSelect.Root,\n Label: BaseSelect.Label,\n Trigger,\n Value,\n Icon,\n Portal: BaseSelect.Portal,\n Backdrop,\n Positioner,\n Popup,\n List,\n Item,\n ItemIndicator,\n ItemText,\n Arrow,\n ScrollDownArrow,\n ScrollUpArrow,\n Group,\n GroupLabel,\n Separator,\n};\n","import * as React from 'react';\nimport { Combobox as BaseCombobox, type ComboboxRootProps } from '@base-ui/react/combobox';\nimport { cn } from '../utils/cn';\nimport { styledPart } from '../utils/styled-part';\n\n/**\n * Base UI [Combobox](https://base-ui.com/react/components/combobox) with design-system classes.\n * The input is Input, the chips box is a field, and the clear and open buttons are icon buttons.\n * Root renders no element, so this draws the `ComboboxRoot` box around it.\n * `Combobox.Trigger` is the icon button. Pass `className=\"ComboboxSelectTrigger\"` when the\n * trigger is the field and the input lives in the popup.\n */\nfunction Root<Value, Multiple extends boolean | undefined = false, Item = Value>({\n className,\n style,\n ...props\n}: ComboboxRootProps<Value, Multiple, Item> & { className?: string; style?: React.CSSProperties }) {\n return (\n <div className={cn('ComboboxRoot', className)} style={style}>\n <BaseCombobox.Root<Value, Multiple, Item> {...props} />\n </div>\n );\n}\n\nconst Trigger = React.forwardRef<HTMLButtonElement, React.ComponentProps<typeof BaseCombobox.Trigger>>(\n function ComboboxTrigger({ className, ...props }, ref) {\n return (\n <BaseCombobox.Trigger\n ref={ref}\n {...props}\n className={(state) => {\n const extra = typeof className === 'function' ? className(state) : className;\n const selectTrigger = extra?.split(/\\s+/).includes('ComboboxSelectTrigger');\n return cn(selectTrigger ? undefined : 'ComboboxTrigger', extra);\n }}\n />\n );\n },\n);\n\nconst Label = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Label>>(\n BaseCombobox.Label,\n 'ComboboxLabel',\n 'ComboboxLabel',\n);\nconst Input = styledPart<HTMLInputElement, React.ComponentProps<typeof BaseCombobox.Input>>(\n BaseCombobox.Input,\n 'ComboboxInput',\n 'ComboboxInput',\n);\nconst Clear = styledPart<HTMLButtonElement, React.ComponentProps<typeof BaseCombobox.Clear>>(\n BaseCombobox.Clear,\n 'ComboboxClear',\n 'ComboboxClear',\n);\nconst Icon = styledPart<HTMLSpanElement, React.ComponentProps<typeof BaseCombobox.Icon>>(\n BaseCombobox.Icon,\n 'ComboboxIcon',\n 'ComboboxIcon',\n);\nconst Chips = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Chips>>(\n BaseCombobox.Chips,\n 'ComboboxChips',\n 'ComboboxChips',\n);\nconst Chip = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Chip>>(\n BaseCombobox.Chip,\n 'ComboboxChip',\n 'ComboboxChip',\n);\nconst ChipRemove = styledPart<HTMLButtonElement, React.ComponentProps<typeof BaseCombobox.ChipRemove>>(\n BaseCombobox.ChipRemove,\n 'ComboboxChipRemove',\n 'ComboboxChipRemove',\n);\nconst Positioner = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Positioner>>(\n BaseCombobox.Positioner,\n 'ComboboxPositioner',\n 'ComboboxPositioner',\n);\nconst Popup = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Popup>>(\n BaseCombobox.Popup,\n 'ComboboxPopup',\n 'ComboboxPopup',\n);\nconst List = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.List>>(\n BaseCombobox.List,\n 'ComboboxList',\n 'ComboboxList',\n);\nconst Item = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Item>>(\n BaseCombobox.Item,\n 'ComboboxItem',\n 'ComboboxItem',\n);\nconst ItemIndicator = styledPart<HTMLSpanElement, React.ComponentProps<typeof BaseCombobox.ItemIndicator>>(\n BaseCombobox.ItemIndicator,\n 'ComboboxItemIndicator',\n 'ComboboxItemIndicator',\n);\nconst GroupLabel = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.GroupLabel>>(\n BaseCombobox.GroupLabel,\n 'ComboboxGroupLabel',\n 'ComboboxGroupLabel',\n);\nconst Separator = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Separator>>(\n BaseCombobox.Separator,\n 'ComboboxSeparator',\n 'ComboboxSeparator',\n);\nconst Empty = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Empty>>(\n BaseCombobox.Empty,\n 'ComboboxEmpty',\n 'ComboboxEmpty',\n);\nconst Status = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseCombobox.Status>>(\n BaseCombobox.Status,\n 'ComboboxStatus',\n 'ComboboxStatus',\n);\n\nexport const Combobox = {\n Root,\n Label,\n Value: BaseCombobox.Value,\n Input,\n InputGroup: BaseCombobox.InputGroup,\n Trigger,\n List,\n Status,\n Portal: BaseCombobox.Portal,\n Backdrop: BaseCombobox.Backdrop,\n Positioner,\n Popup,\n Arrow: BaseCombobox.Arrow,\n Icon,\n Group: BaseCombobox.Group,\n GroupLabel,\n Item,\n ItemIndicator,\n Chips,\n Chip,\n ChipRemove,\n Row: BaseCombobox.Row,\n Collection: BaseCombobox.Collection,\n Empty,\n Clear,\n Separator,\n useFilter: BaseCombobox.useFilter,\n useFilteredItems: BaseCombobox.useFilteredItems,\n createItems: BaseCombobox.createItems,\n};\n","import * as React from 'react';\nimport { Menu as BaseMenu } from '@base-ui/react/menu';\nimport { buttonPart, styledPart } from '../utils/styled-part';\n\n/** A Button, unless `className` includes `MenubarTrigger` (a menubar row). */\nconst Trigger = buttonPart<HTMLButtonElement, React.ComponentProps<typeof BaseMenu.Trigger>>(\n BaseMenu.Trigger as React.ComponentType<\n React.ComponentProps<typeof BaseMenu.Trigger> & React.RefAttributes<HTMLButtonElement>\n >,\n 'MenuTrigger',\n { skipClass: 'MenubarTrigger' },\n);\nconst Positioner = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseMenu.Positioner>>(\n BaseMenu.Positioner,\n 'MenuPositioner',\n 'MenuPositioner',\n);\nconst Popup = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseMenu.Popup>>(\n BaseMenu.Popup,\n 'MenuPopup',\n 'MenuPopup',\n);\nconst Item = styledPart<HTMLElement, React.ComponentProps<typeof BaseMenu.Item>>(\n BaseMenu.Item,\n 'MenuItem',\n 'MenuItem',\n);\nconst CheckboxItem = styledPart<HTMLElement, React.ComponentProps<typeof BaseMenu.CheckboxItem>>(\n BaseMenu.CheckboxItem,\n 'MenuCheckboxItem',\n 'MenuCheckboxItem',\n);\nconst CheckboxItemIndicator = styledPart<\n HTMLSpanElement,\n React.ComponentProps<typeof BaseMenu.CheckboxItemIndicator>\n>(BaseMenu.CheckboxItemIndicator, 'MenuCheckboxItemIndicator', 'MenuCheckboxItemIndicator');\nconst RadioItem = styledPart<HTMLElement, React.ComponentProps<typeof BaseMenu.RadioItem>>(\n BaseMenu.RadioItem,\n 'MenuRadioItem',\n 'MenuRadioItem',\n);\nconst RadioItemIndicator = styledPart<\n HTMLSpanElement,\n React.ComponentProps<typeof BaseMenu.RadioItemIndicator>\n>(BaseMenu.RadioItemIndicator, 'MenuRadioItemIndicator', 'MenuRadioItemIndicator');\nconst SubmenuTrigger = styledPart<HTMLElement, React.ComponentProps<typeof BaseMenu.SubmenuTrigger>>(\n BaseMenu.SubmenuTrigger,\n 'MenuSubmenuTrigger',\n 'MenuSubmenuTrigger',\n);\nconst Group = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseMenu.Group>>(\n BaseMenu.Group,\n 'MenuGroup',\n 'MenuGroup',\n);\nconst GroupLabel = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseMenu.GroupLabel>>(\n BaseMenu.GroupLabel,\n 'MenuGroupLabel',\n 'MenuGroupLabel',\n);\nconst Separator = styledPart<HTMLDivElement, React.ComponentProps<typeof BaseMenu.Separator>>(\n BaseMenu.Separator,\n 'MenuSeparator',\n 'MenuSeparator',\n);\n\n// The declaration file still cannot name Menu.Separator without this export, with splitting on.\nexport type { Separator as MenuSeparator } from '@base-ui/react/separator';\n/**\n * Base UI [Menu](https://base-ui.com/react/components/menu) with design-system classes.\n * The trigger is a Button and takes `emphasis` and `palette`. Inside a menubar, pass\n * `className=\"MenubarTrigger\"` instead.\n * Check and radio marks are yours: `MenuCheckboxItemIndicatorIcon` and `MenuRadioItemIndicatorIcon`.\n */\nexport const Menu = {\n Root: BaseMenu.Root,\n Trigger,\n Portal: BaseMenu.Portal,\n Backdrop: BaseMenu.Backdrop,\n Positioner,\n Popup,\n Arrow: BaseMenu.Arrow,\n Item,\n LinkItem: BaseMenu.LinkItem,\n CheckboxItem,\n CheckboxItemIndicator,\n RadioGroup: BaseMenu.RadioGroup,\n RadioItem,\n RadioItemIndicator,\n Group,\n GroupLabel,\n Separator,\n SubmenuRoot: BaseMenu.SubmenuRoot,\n SubmenuTrigger,\n Viewport: BaseMenu.Viewport,\n Input: BaseMenu.Input,\n List: BaseMenu.List,\n Clear: BaseMenu.Clear,\n Empty: BaseMenu.Empty,\n FilterProvider: BaseMenu.FilterProvider,\n Handle: BaseMenu.Handle,\n createHandle: BaseMenu.createHandle,\n useFilter: BaseMenu.useFilter,\n};\n","import * as React from 'react';\nimport { cn } from '../utils/cn';\n\nexport type EmptyStateKind = 'start' | 'no-results' | 'error' | 'done' | 'no-access' | 'unselected';\nexport type EmptyStateSize = 'compact' | 'standard' | 'spacious';\n\nconst ICONS: Record<EmptyStateKind, string> = {\n start: 'inbox',\n 'no-results': 'search_off',\n error: 'error',\n done: 'check_circle',\n 'no-access': 'lock',\n // A pointer, not an empty inbox: the pane is waiting for a choice in the list beside it.\n unselected: 'left_click',\n};\n\nconst MEDIA_STATUS: Partial<Record<EmptyStateKind, 'error' | 'success'>> = {\n error: 'error',\n done: 'success',\n};\n\n/**\n * role=\"status\" and role=\"alert\" carry the live behavior. aria-live as well would announce twice.\n * error stays quiet unless the app asks: a failed load on arrival should not shout.\n */\nfunction announcedRole(kind: EmptyStateKind, announce: boolean | undefined): 'status' | 'alert' | undefined {\n if (announce === false) return undefined;\n if (kind === 'error') return announce ? 'alert' : undefined;\n if (announce || kind === 'no-results' || kind === 'done') return 'status';\n return undefined;\n}\n\nfunction titleTag(size: EmptyStateSize, headingLevel?: EmptyStateTitleProps['headingLevel']) {\n if (headingLevel) return `h${headingLevel}` as 'h2';\n // A table cell or a popup is not a section. A heading there would land in the page outline.\n if (size === 'compact') return 'p' as 'h2';\n return 'h2' as const;\n}\n\n/** A string child is announced. A node is visible only: the app names it if it should be read. */\nfunction textOf(node: React.ReactNode): string | null {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n return null;\n}\n\ntype EmptyStateContextValue = {\n kind: EmptyStateKind;\n size: EmptyStateSize;\n report: (part: 'title' | 'description', value: string | null) => void;\n};\n\nconst EmptyStateContext = React.createContext<EmptyStateContextValue | null>(null);\n\nexport type EmptyStateRootProps = React.ComponentProps<'div'> & {\n kind?: EmptyStateKind;\n size?: EmptyStateSize;\n /** true announces; false stays silent; omitted uses the kind's default. */\n announce?: boolean;\n};\n\n/**\n * The frame. Not a Base UI part, so there is no `render` prop.\n * Wrap it when it needs to be another element. Same reason Badge skips `render`.\n *\n * The live span starts empty and fills one frame later, so the words are a change inside a\n * region that already exists. A block that mounts already `done` stays empty: opening the\n * page on \"All caught up\" is not news, and a freshly mounted done block is the same case.\n * `done` is read when a block that was showing something else becomes done.\n */\nexport const EmptyStateRoot = React.forwardRef<HTMLDivElement, EmptyStateRootProps>(function EmptyStateRoot(\n { className, kind = 'start', size = 'standard', announce, children, ...props },\n ref,\n) {\n const role = announcedRole(kind, announce);\n const [copy, setCopy] = React.useState<{ title: string | null; description: string | null }>({ title: null, description: null });\n const [live, setLive] = React.useState('');\n // True when this instance mounted already `done`. That first showing stays silent,\n // including the copy arriving a layout later. Any other kind, or `done` after a\n // different kind, fills the region.\n const openedAsDone = React.useRef(kind === 'done');\n const report = React.useCallback((part: 'title' | 'description', value: string | null) => {\n setCopy((current) => (current[part] === value ? current : { ...current, [part]: value }));\n }, []);\n const message = [copy.title, copy.description].filter(Boolean).join(' ');\n React.useEffect(() => {\n if (kind !== 'done') openedAsDone.current = false;\n if (!role || (kind === 'done' && openedAsDone.current)) return;\n const frame = requestAnimationFrame(() => setLive(message));\n return () => cancelAnimationFrame(frame);\n }, [kind, message, role]);\n const context = React.useMemo(() => ({ kind, size, report }), [kind, report, size]);\n\n return (\n <EmptyStateContext.Provider value={context}>\n <div ref={ref} data-kind={kind} data-size={size} className={cn('EmptyState', className)} {...props}>\n {role ? (\n <span className=\"visually-hidden\" role={role}>\n {live}\n </span>\n ) : null}\n {children}\n </div>\n </EmptyStateContext.Provider>\n );\n});\n\nexport type EmptyStateMediaProps = React.ComponentProps<'div'> & {\n /** Overrides the root kind. error and done tint the circle. Other kinds stay neutral. */\n kind?: EmptyStateKind;\n /** An illustration the app owns. Not tinted. */\n custom?: boolean;\n};\n\nexport const EmptyStateMedia = React.forwardRef<HTMLDivElement, EmptyStateMediaProps>(function EmptyStateMedia(\n { className, kind, custom, ...props },\n ref,\n) {\n const state = React.useContext(EmptyStateContext);\n const tone = kind ?? state?.kind;\n return (\n <div\n ref={ref}\n data-status={tone ? MEDIA_STATUS[tone] : undefined}\n data-custom={custom ? '' : undefined}\n className={cn('EmptyStateMedia', className)}\n {...props}\n />\n );\n});\n\nexport type EmptyStateTitleProps = React.ComponentProps<'h2'> & {\n /** Overrides the root size. Compact is a paragraph unless headingLevel is set. */\n size?: EmptyStateSize;\n /** 2–6. Compact is a paragraph unless this is set. */\n headingLevel?: 2 | 3 | 4 | 5 | 6;\n};\n\nexport const EmptyStateTitle = React.forwardRef<HTMLElement, EmptyStateTitleProps>(function EmptyStateTitle(\n { className, size, headingLevel, children, ...props },\n ref,\n) {\n const state = React.useContext(EmptyStateContext);\n const Tag = titleTag(size ?? state?.size ?? 'standard', headingLevel);\n const text = textOf(children);\n React.useLayoutEffect(() => {\n state?.report('title', text);\n return () => state?.report('title', null);\n }, [state, text]);\n // Compact is a paragraph. The ref is an element either way; the tag's own ref type is narrower.\n return (\n <Tag ref={ref as React.Ref<HTMLHeadingElement>} className={cn('EmptyStateTitle', className)} {...props}>\n {children}\n </Tag>\n );\n});\n\nexport type EmptyStateDescriptionProps = React.ComponentProps<'p'>;\n\nexport const EmptyStateDescription = React.forwardRef<HTMLParagraphElement, EmptyStateDescriptionProps>(\n function EmptyStateDescription({ className, children, ...props }, ref) {\n const state = React.useContext(EmptyStateContext);\n const text = textOf(children);\n React.useLayoutEffect(() => {\n state?.report('description', text);\n return () => state?.report('description', null);\n }, [state, text]);\n return (\n <p ref={ref} className={cn('EmptyStateDescription', className)} {...props}>\n {children}\n </p>\n );\n },\n);\n\nexport type EmptyStateActionsProps = React.ComponentProps<'div'>;\n\nexport const EmptyStateActions = React.forwardRef<HTMLDivElement, EmptyStateActionsProps>(function EmptyStateActions(\n { className, ...props },\n ref,\n) {\n return <div ref={ref} className={cn('EmptyStateActions', className)} {...props} />;\n});\n\nexport type EmptyStateProps = Omit<React.ComponentProps<'div'>, 'title'> & {\n /** What is empty. Required. */\n title: React.ReactNode;\n kind?: EmptyStateKind;\n size?: EmptyStateSize;\n /**\n * A Material Symbols name, or a node. Omit it for the kind's icon.\n * null hides the media.\n */\n icon?: React.ReactNode;\n /** Replaces the media slot. Not tinted. An image or illustration the app owns. */\n media?: React.ReactNode;\n description?: React.ReactNode;\n /** First action is the main one. The app picks each button's emphasis. */\n actions?: React.ReactNode;\n headingLevel?: EmptyStateTitleProps['headingLevel'];\n announce?: boolean;\n};\n\nfunction Glyph({ name }: { name: string }) {\n return (\n <span className=\"material-symbols-outlined\" aria-hidden=\"true\">\n {name}\n </span>\n );\n}\n\n/**\n * The block a screen, pane, table, list or popup shows when it has nothing to show.\n * One component for every situation: the kind picks the icon, the media tone and whether\n * it is announced. The app writes the copy and decides when to show it.\n */\nexport const EmptyState = Object.assign(\n React.forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(\n {\n className,\n kind = 'start',\n size = 'standard',\n icon,\n media,\n title,\n description,\n actions,\n headingLevel,\n announce,\n children,\n ...props\n },\n ref,\n ) {\n const showMedia = media !== undefined || icon !== null;\n return (\n <EmptyStateRoot ref={ref} kind={kind} size={size} announce={announce} className={className} {...props}>\n {showMedia ? (\n <EmptyStateMedia custom={media !== undefined}>\n {media !== undefined ? (\n media\n ) : typeof icon === 'string' || icon === undefined ? (\n <Glyph name={typeof icon === 'string' ? icon : ICONS[kind]} />\n ) : (\n <span aria-hidden=\"true\">{icon}</span>\n )}\n </EmptyStateMedia>\n ) : null}\n <div className=\"EmptyStateText\">\n <EmptyStateTitle headingLevel={headingLevel}>{title}</EmptyStateTitle>\n {description ? <EmptyStateDescription>{description}</EmptyStateDescription> : null}\n </div>\n {actions ? <EmptyStateActions>{actions}</EmptyStateActions> : null}\n {children}\n </EmptyStateRoot>\n );\n }),\n {\n Root: EmptyStateRoot,\n Media: EmptyStateMedia,\n Title: EmptyStateTitle,\n Description: EmptyStateDescription,\n Actions: EmptyStateActions,\n },\n);\n","/**\n * Search, sort, money and paging rules for a collection. No React: the hook and the\n * tests both call these, and TanStack applies the comparators. It is not a second\n * filter engine. Faceting, selection and the row models stay in TanStack.\n */\n\nexport type SortKind = 'text' | 'number' | 'money' | 'percent' | 'date' | 'boolean';\nexport type NegativeStyle = 'minus' | 'parens';\nexport type BalanceTone = 'balanced' | 'under' | 'over';\n\nconst collators = new Map<string, Intl.Collator>();\n\nexport function collatorFor(locale: string): Intl.Collator {\n let collator = collators.get(locale);\n if (!collator) {\n collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n collators.set(locale, collator);\n }\n return collator;\n}\n\n/** Case-insensitive, accent-insensitive. NFKD splits accents into combining marks. */\nexport function normalizeSearch(value: string): string {\n return value.normalize('NFKD').replace(/\\p{M}/gu, '').toLowerCase();\n}\n\nexport function isEmptyValue(value: unknown): boolean {\n return value == null || value === '';\n}\n\nexport function fractionDigitsOf(currency: string): number {\n try {\n return new Intl.NumberFormat('en', { style: 'currency', currency }).resolvedOptions().maximumFractionDigits ?? 2;\n } catch {\n return 2;\n }\n}\n\n/**\n * Exact decimal to integer minor units. Strings never pass through a float.\n * A number is turned into its decimal text first. Multiplying by 10 ** digits rounds\n * 1.005 down to 1.00, because the float is 1.004999….\n */\nexport function toMinor(value: number | string | null | undefined, digits: number): bigint | null {\n if (isEmptyValue(value)) return null;\n const scale = 10n ** BigInt(digits);\n const text = typeof value === 'number' ? numberToDecimal(value) : String(value);\n if (text == null) return null;\n const match = text.trim().replace(/,/g, '').replace(/^\\((.*)\\)$/, '-$1').match(/^([+-])?(\\d+)(?:\\.(\\d+))?$/);\n if (!match) return null;\n const sign = match[1] === '-' ? -1n : 1n;\n const whole = BigInt(match[2] || '0');\n const fracRaw = match[3] ?? '';\n const frac = BigInt((fracRaw.padEnd(digits, '0').slice(0, digits) || '0'));\n let minor = whole * scale + frac;\n const roundDigit = fracRaw.charAt(digits);\n if (roundDigit && roundDigit >= '5') minor += 1n;\n return minor * sign;\n}\n\n/** Exponent form (`1e-7`) has no decimal point, so it is written out before the digit count. */\nfunction numberToDecimal(value: number): string | null {\n if (!Number.isFinite(value)) return null;\n const text = Object.is(value, -0) ? '-0' : String(value);\n if (!/[eE]/.test(text)) return text;\n return value.toLocaleString('en', { useGrouping: false, maximumFractionDigits: 20 });\n}\n\nexport function minorToDecimal(minor: bigint, digits: number): string {\n const sign = minor < 0n ? '-' : '';\n const abs = minor < 0n ? -minor : minor;\n const scale = 10n ** BigInt(digits);\n const whole = abs / scale;\n if (!digits) return `${sign}${whole}`;\n const frac = (abs % scale).toString().padStart(digits, '0');\n return `${sign}${whole}.${frac}`;\n}\n\nexport function compareDecimal(a: number | string, b: number | string): number {\n const places = Math.max(decimalPlaces(a), decimalPlaces(b));\n const left = toMinor(a, places);\n const right = toMinor(b, places);\n if (left == null || right == null) return 0;\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n\nfunction decimalPlaces(value: number | string): number {\n const text = (typeof value === 'number' ? numberToDecimal(value) : String(value)) ?? '';\n const plain = text.replace(/,/g, '');\n const dot = plain.indexOf('.');\n return dot === -1 ? 0 : plain.length - dot - 1;\n}\n\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\n/** `YYYY-MM-DD` is that calendar day in local time. `new Date('2026-10-03')` is UTC midnight, which is the day before in the US. */\nexport function calendarDate(value: unknown): Date | null {\n if (value instanceof Date) return Number.isNaN(value.getTime()) ? null : value;\n if (typeof value === 'string') {\n const match = DATE_ONLY.exec(value);\n if (match) return new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n }\n if (typeof value === 'string' || typeof value === 'number') {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\n\nexport interface SortItem<T> {\n value: unknown;\n index: number;\n row: T;\n}\n\n/**\n * Empty values sort last in either direction. Ties keep the incoming order.\n * `desc` flips only the real values, never the empty ones.\n */\nexport function sortRows<T>(items: SortItem<T>[], kind: SortKind, desc: boolean, locale: string): T[] {\n const collator = collatorFor(locale);\n const sorted = [...items].sort((a, b) => {\n const aEmpty = isEmptyValue(a.value);\n const bEmpty = isEmptyValue(b.value);\n if (aEmpty || bEmpty) {\n if (aEmpty && bEmpty) return a.index - b.index;\n return aEmpty ? 1 : -1;\n }\n const compared = comparePresent(a.value, b.value, kind, collator);\n if (compared === 0) return a.index - b.index;\n return desc ? -compared : compared;\n });\n return sorted.map((item) => item.row);\n}\n\nexport function comparePresent(a: unknown, b: unknown, kind: SortKind, collator: Intl.Collator): number {\n if (kind === 'number' || kind === 'money' || kind === 'percent') {\n return compareDecimal(a as number | string, b as number | string);\n }\n if (kind === 'date') {\n const at = dateStamp(a);\n const bt = dateStamp(b);\n if (at == null || bt == null) return 0;\n return at < bt ? -1 : at > bt ? 1 : 0;\n }\n if (kind === 'boolean') return Number(Boolean(a)) - Number(Boolean(b));\n return collator.compare(String(a), String(b));\n}\n\nfunction dateStamp(value: unknown): number | null {\n return calendarDate(value)?.getTime() ?? null;\n}\n\nexport function formatMoney(\n value: number | string | null | undefined,\n options: { locale: string; currency: string; fractionDigits?: number; negative?: NegativeStyle },\n): string {\n const digits = options.fractionDigits ?? fractionDigitsOf(options.currency);\n const minor = toMinor(value, digits);\n if (minor == null) return '';\n // The exact decimal string, sign included. Intl places the minus or the accounting brackets.\n return new Intl.NumberFormat(options.locale, {\n style: 'currency',\n currency: options.currency,\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n currencySign: options.negative === 'parens' ? 'accounting' : 'standard',\n }).format(minorToDecimal(minor, digits) as unknown as number);\n}\n\nexport function formatNumber(value: number | string | null | undefined, locale: string, fractionDigits?: number): string {\n if (isEmptyValue(value)) return '';\n const numeric = typeof value === 'number' ? value : Number(String(value).replace(/,/g, ''));\n if (!Number.isFinite(numeric)) return String(value);\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits ?? 20,\n }).format(numeric);\n}\n\nexport function formatPercent(value: number | string | null | undefined, locale: string): string {\n if (isEmptyValue(value)) return '';\n const numeric = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numeric)) return String(value);\n return new Intl.NumberFormat(locale, { style: 'percent', maximumFractionDigits: 2 }).format(numeric);\n}\n\nexport function formatDate(value: unknown, locale: string, dateFormat?: Intl.DateTimeFormatOptions): string {\n const date = calendarDate(value);\n if (!date) return '';\n return new Intl.DateTimeFormat(locale, dateFormat ?? { dateStyle: 'medium' }).format(date);\n}\n\nexport function isoDate(value: unknown): string {\n if (typeof value === 'string' && DATE_ONLY.test(value)) return value;\n const date = value instanceof Date ? value : calendarDate(value);\n if (!date) return '';\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${date.getFullYear()}-${month}-${day}`;\n}\n\n/** Forms a person might type for one amount: grouped, plain, and without a trailing zero. */\nexport function moneySearchForms(\n value: number | string,\n currency: string,\n locale: string,\n fractionDigits?: number,\n): string[] {\n const digits = fractionDigits ?? fractionDigitsOf(currency);\n const minor = toMinor(value, digits);\n if (minor == null) return [];\n const plain = minorToDecimal(minor, digits);\n const trimmed = plain.replace(/(\\.\\d*?)0+$/, '$1').replace(/\\.$/, '');\n const formatted = formatMoney(plain, { locale, currency, fractionDigits: digits });\n // Group separators come from the formatter, so 1.234,50 in de is a search hit. Stripping characters would keep the dot as a decimal.\n const grouped = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n }).formatToParts(plain as unknown as number).filter((part) => part.type === 'integer' || part.type === 'group' || part.type === 'decimal' || part.type === 'fraction' || part.type === 'minusSign').map((part) => part.value).join('');\n return [plain, trimmed, grouped, formatted];\n}\n\nexport function searchHaystack(parts: Array<string | null | undefined>): string {\n return parts.filter((part) => part != null && part !== '').join(' ');\n}\n\n/** Every word must match, in any order. An empty query matches everything. */\nexport function searchMatches(query: string, haystack: string): boolean {\n const normalized = normalizeSearch(query).trim();\n if (!normalized) return true;\n const words = normalized.split(/\\s+/);\n const text = normalizeSearch(haystack).replace(/,/g, '');\n return words.every((word) => text.includes(word.replace(/,/g, '')));\n}\n\nexport interface MoneySum {\n currency: string | null;\n minor: bigint | null;\n mixed: boolean;\n}\n\nexport function sumMoney(\n values: Array<{ amount: number | string | null | undefined; currency: string }>,\n fractionDigits?: number,\n): MoneySum {\n const currencies = new Set(values.map((value) => value.currency).filter(Boolean));\n if (currencies.size > 1) return { currency: null, minor: null, mixed: true };\n const currency = [...currencies][0] ?? null;\n if (!currency) return { currency: null, minor: 0n, mixed: false };\n const digits = fractionDigits ?? fractionDigitsOf(currency);\n let total = 0n;\n for (const value of values) {\n const minor = toMinor(value.amount, digits);\n if (minor != null) total += minor;\n }\n return { currency, minor: total, mixed: false };\n}\n\nexport function balanceOf(\n amounts: Array<number | string | null | undefined>,\n control: number | string | null | undefined,\n currency: string,\n): { tone: BalanceTone; allocated: bigint; control: bigint; delta: bigint; digits: number } {\n const digits = fractionDigitsOf(currency);\n const allocated = amounts.reduce<bigint>((sum, amount) => sum + (toMinor(amount, digits) ?? 0n), 0n);\n const target = toMinor(control, digits) ?? 0n;\n const delta = target - allocated;\n const tone: BalanceTone = delta === 0n ? 'balanced' : delta > 0n ? 'under' : 'over';\n return { tone, allocated, control: target, delta, digits };\n}\n\nexport interface PageBounds {\n pageIndex: number;\n pageCount: number;\n start: number;\n end: number;\n}\n\n/** `pageIndex` is zero-based. A page past the end clamps to the last page. An empty list is one blank page. */\nexport function pageBounds(pageIndex: number, pageSize: number, total: number): PageBounds {\n const size = pageSize > 0 ? pageSize : total || 1;\n const pageCount = total === 0 ? 1 : Math.ceil(total / size);\n const safe = Math.min(Math.max(0, pageIndex), pageCount - 1);\n const start = total === 0 ? 0 : safe * size;\n const end = Math.min(total, start + size);\n return { pageIndex: safe, pageCount, start, end };\n}\n\nexport interface FlatEntry<T> {\n kind: 'group' | 'leaf';\n row: T;\n groupId?: string;\n}\n\n/**\n * Page by leaf rows. A group that starts before this page repeats, marked continued.\n */\nexport function pageFlat<T>(entries: FlatEntry<T>[], pageIndex: number, pageSize: number): { entries: Array<FlatEntry<T> & { continued?: boolean }>; leafCount: number; bounds: PageBounds } {\n const leaves = entries.filter((entry) => entry.kind === 'leaf');\n const bounds = pageBounds(pageIndex, pageSize, leaves.length);\n const pageLeaves = new Set(leaves.slice(bounds.start, bounds.end));\n const out: Array<FlatEntry<T> & { continued?: boolean }> = [];\n let currentGroup: FlatEntry<T> | null = null;\n let leavesBeforeGroupOnPage = 0;\n let emittedGroup = false;\n let groupHadLeaves = false;\n const closeGroup = () => {\n // A collapsed group has a header and no leaves. Keep the header, or it vanishes.\n if (currentGroup && !emittedGroup && !groupHadLeaves) out.push(currentGroup);\n };\n for (const entry of entries) {\n if (entry.kind === 'group') {\n closeGroup();\n currentGroup = entry;\n emittedGroup = false;\n groupHadLeaves = false;\n leavesBeforeGroupOnPage = 0;\n continue;\n }\n groupHadLeaves = true;\n if (!pageLeaves.has(entry)) {\n if (!emittedGroup) leavesBeforeGroupOnPage += 1;\n continue;\n }\n if (currentGroup && !emittedGroup) {\n out.push({ ...currentGroup, continued: leavesBeforeGroupOnPage > 0 });\n emittedGroup = true;\n }\n out.push(entry);\n }\n closeGroup();\n return { entries: out, leafCount: leaves.length, bounds };\n}\n\nexport interface TreeNode<T> {\n row: T;\n children?: T[];\n}\n\n/** Ids that match, plus every ancestor, so a match is never shown without its parent. */\nexport function treeVisibleIds<T>(\n rows: readonly T[],\n getId: (row: T) => string,\n getChildren: (row: T) => readonly T[] | undefined,\n matches: (row: T) => boolean,\n): Set<string> {\n const visible = new Set<string>();\n const walk = (row: T, ancestors: string[]): boolean => {\n const id = getId(row);\n let childHit = false;\n for (const child of getChildren(row) ?? []) {\n if (walk(child, [...ancestors, id])) childHit = true;\n }\n if (matches(row) || childHit) {\n visible.add(id);\n for (const ancestor of ancestors) visible.add(ancestor);\n return true;\n }\n return false;\n };\n for (const row of rows) walk(row, []);\n return visible;\n}\n\n/** Counts of one column among rows that already satisfy the other filters. */\nexport function countFacets<T>(rows: readonly T[], valueOf: (row: T) => unknown): Map<string, number> {\n const counts = new Map<string, number>();\n for (const row of rows) {\n const key = isEmptyValue(valueOf(row)) ? '' : String(valueOf(row));\n counts.set(key, (counts.get(key) ?? 0) + 1);\n }\n return counts;\n}\n\n/** Drop ids whose row is gone, or that no longer pass canSelect. Children count too. */\nexport function selectableIds<T>(\n ids: readonly string[],\n rows: readonly T[],\n getRowId: (row: T) => string,\n canSelect?: (row: T) => boolean,\n getSubRows?: (row: T) => readonly T[] | undefined,\n): string[] {\n const known = new Map<string, T>();\n const walk = (list: readonly T[]) => {\n for (const row of list) {\n known.set(getRowId(row), row);\n const children = getSubRows?.(row);\n if (children) walk(children);\n }\n };\n walk(rows);\n return ids.filter((id) => {\n const row = known.get(id);\n return row != null && (canSelect?.(row) ?? true);\n });\n}\n\nexport function hiddenSelectedCount(selectedIds: readonly string[], filteredIds: ReadonlySet<string>): number {\n let hidden = 0;\n for (const id of selectedIds) if (!filteredIds.has(id)) hidden += 1;\n return hidden;\n}\n\nexport function sameSort(a: { id: string; desc: boolean } | null, b: { id: string; desc: boolean } | null): boolean {\n if (a == null || b == null) return a == null && b == null;\n return a.id === b.id && a.desc === b.desc;\n}\n\n/** Ascending, then descending, then the system's default. Clicking the default itself starts at ascending. */\nexport function nextSort(\n current: { id: string; desc: boolean } | null,\n columnId: string,\n initial: { id: string; desc: boolean } | null,\n): { id: string; desc: boolean } | null {\n const onColumn = current?.id === columnId;\n let next: { id: string; desc: boolean } | null;\n if (!onColumn) next = { id: columnId, desc: false };\n else if (!current?.desc) next = { id: columnId, desc: true };\n else next = initial;\n if (sameSort(next, current)) return { id: columnId, desc: false };\n return next;\n}\n","import * as React from 'react';\n\n/**\n * True when the element is no wider than a length token.\n * A container query cannot read a custom property, so the width is measured instead.\n */\nexport function useUnderWidth(token: string) {\n const ref = React.useRef<HTMLDivElement>(null);\n const [under, setUnder] = React.useState(false);\n React.useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const probe = document.createElement('div');\n probe.style.width = `var(${token})`;\n probe.style.position = 'absolute';\n probe.style.visibility = 'hidden';\n probe.style.pointerEvents = 'none';\n // On document.body, not inside the measured node. React replaces that node's children\n // when the view changes, and would remove a probe that lived there.\n document.body.appendChild(probe);\n const watch = () => {\n if (probe.offsetWidth <= 0) return;\n setUnder(node.clientWidth <= probe.offsetWidth);\n };\n const observer = new ResizeObserver(watch);\n observer.observe(node);\n observer.observe(probe);\n watch();\n return () => {\n observer.disconnect();\n probe.remove();\n };\n }, [token]);\n return { ref, under };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { cnState, styledPart, buttonPart, cn, Button, Combobox, Select, useUnderWidth, balanceOf, formatMoney, minorToDecimal } from './chunk-M7KJASGK.js';
1
+ import { cnState, styledPart, buttonPart, cn, Button, Menu, Combobox, Select, useUnderWidth, balanceOf, formatMoney, minorToDecimal } from './chunk-43IJNNXK.js';
2
2
  import * as React10 from 'react';
3
3
  import { Field as Field$1 } from '@base-ui/react/field';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -3538,15 +3538,26 @@ var StatFigure = React10.forwardRef(function StatFigure2({ className, label, val
3538
3538
  }
3539
3539
  );
3540
3540
  });
3541
- var StatCard = React10.forwardRef(function StatCard2({ className, title, caption, facts, href, onOpen, headingLevel = 3, footer, tag, ...props }, ref) {
3541
+ var DescriptionList = React10.forwardRef(function DescriptionList2({ className, variant, ...props }, ref) {
3542
+ return /* @__PURE__ */ jsx("dl", { ref, className: cn("DescriptionList", className), "data-variant": variant === "leader" ? "leader" : void 0, ...props });
3543
+ });
3544
+ var DescriptionItem = React10.forwardRef(function DescriptionItem2({ className, label, children, ...props }, ref) {
3545
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("DescriptionItem", className), ...props, children: [
3546
+ /* @__PURE__ */ jsx("dt", { className: "DescriptionTerm", children: label }),
3547
+ /* @__PURE__ */ jsx("dd", { className: "DescriptionDetails", children })
3548
+ ] });
3549
+ });
3550
+ var StatCard = React10.forwardRef(function StatCard2({ className, title, caption, facts, href, onOpen, headingLevel = 3, footer, tag, details, status, actions, ...props }, ref) {
3542
3551
  const Heading = `h${headingLevel}`;
3543
3552
  const interactive = href != null || onOpen != null;
3553
+ const detailed = details != null || status != null || actions != null;
3544
3554
  return /* @__PURE__ */ jsxs(
3545
3555
  "article",
3546
3556
  {
3547
3557
  ref,
3548
3558
  className: cn("StatCard", className),
3549
3559
  "data-interactive": interactive ? "" : void 0,
3560
+ "data-detailed": detailed ? "" : void 0,
3550
3561
  ...props,
3551
3562
  children: [
3552
3563
  /* @__PURE__ */ jsxs("header", { className: "StatCardHeader", children: [
@@ -3557,20 +3568,18 @@ var StatCard = React10.forwardRef(function StatCard2({ className, title, caption
3557
3568
  tag != null ? /* @__PURE__ */ jsx("span", { className: "StatCardTag", children: tag }) : null
3558
3569
  ] }),
3559
3570
  /* @__PURE__ */ jsx("div", { className: "StatCardFacts", style: { gridTemplateColumns: `repeat(${Math.max(facts.length, 1)}, minmax(0, 1fr))` }, children: facts.map((fact, index) => /* @__PURE__ */ jsx(StatFigure, { size: "sm", ...fact }, index)) }),
3560
- footer != null ? /* @__PURE__ */ jsx("div", { className: "StatCardFooter", children: footer }) : null
3571
+ detailed ? /* @__PURE__ */ jsxs("div", { className: "StatCardFooter", children: [
3572
+ details?.length ? /* @__PURE__ */ jsx(DescriptionList, { variant: "leader", children: details.map(([label, value], index) => /* @__PURE__ */ jsx(DescriptionItem, { label, children: value }, index)) }) : null,
3573
+ footer,
3574
+ status != null || actions != null ? /* @__PURE__ */ jsxs("div", { className: "StatCardBar", children: [
3575
+ status != null ? /* @__PURE__ */ jsx("span", { className: "StatCardStatus", children: status }) : null,
3576
+ actions
3577
+ ] }) : null
3578
+ ] }) : footer != null ? /* @__PURE__ */ jsx("div", { className: "StatCardFooter", children: footer }) : null
3561
3579
  ]
3562
3580
  }
3563
3581
  );
3564
3582
  });
3565
- var DescriptionList = React10.forwardRef(function DescriptionList2({ className, variant, ...props }, ref) {
3566
- return /* @__PURE__ */ jsx("dl", { ref, className: cn("DescriptionList", className), "data-variant": variant === "leader" ? "leader" : void 0, ...props });
3567
- });
3568
- var DescriptionItem = React10.forwardRef(function DescriptionItem2({ className, label, children, ...props }, ref) {
3569
- return /* @__PURE__ */ jsxs("div", { ref, className: cn("DescriptionItem", className), ...props, children: [
3570
- /* @__PURE__ */ jsx("dt", { className: "DescriptionTerm", children: label }),
3571
- /* @__PURE__ */ jsx("dd", { className: "DescriptionDetails", children })
3572
- ] });
3573
- });
3574
3583
  var AppBar = React10.forwardRef(function AppBar2({ className, ...props }, ref) {
3575
3584
  return /* @__PURE__ */ jsx("header", { ref, className: cn("AppBar", className), ...props });
3576
3585
  });
@@ -3586,6 +3595,15 @@ var PickerButton = React10.forwardRef(function PickerButton2({ className, label,
3586
3595
  /* @__PURE__ */ jsx("svg", { className: "PickerButtonIcon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 9l6 6 6-6" }) })
3587
3596
  ] });
3588
3597
  });
3598
+ var SplitButton = React10.forwardRef(function SplitButton2({ className, label, onClick, moreLabel, items, emphasis = "standard", disabled, ...props }, ref) {
3599
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("SplitButton", className), ...props, children: [
3600
+ /* @__PURE__ */ jsx(Button, { emphasis, onClick, disabled, children: label }),
3601
+ /* @__PURE__ */ jsxs(Menu.Root, { children: [
3602
+ /* @__PURE__ */ jsx(Menu.Trigger, { emphasis, "aria-label": moreLabel, disabled, children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 9l6 6 6-6" }) }) }),
3603
+ /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, { align: "end", children: /* @__PURE__ */ jsx(Menu.Popup, { children: items.map((item) => /* @__PURE__ */ jsx(Menu.Item, { disabled: item.disabled, onClick: item.onSelect, children: item.label }, item.label)) }) }) })
3604
+ ] })
3605
+ ] });
3606
+ });
3589
3607
  var withoutButton = (className) => className?.split(/\s+/).filter((name) => name !== "Button").join(" ");
3590
3608
  var PickerSplit = React10.forwardRef(function PickerSplit2({ className, ...props }, ref) {
3591
3609
  return /* @__PURE__ */ jsx("div", { ref, className: cn("PickerSplit", className), ...props });
@@ -3872,6 +3890,6 @@ var EditableList = {
3872
3890
  Balance: EditableListBalance
3873
3891
  };
3874
3892
 
3875
- export { AppBar, AppBarSpacer, Badge, CURRENCY_SEARCH_THRESHOLD, Calendar, CurrencySelect, DatePicker, DatePresets, DescriptionItem, DescriptionList, Drawer, EditableList, Field, ListDetail, ListDetailDetail, ListDetailList, ListDetailRoot, MAX_MINOR_UNITS, MoneyField, MoneyFieldAffix, MoneyFieldGroup, MoneyFieldInput, MoneyFieldRoot, NumberField, PickerButton, PickerSplit, PickerSplitMain, PickerSplitTrigger, Popover, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, Splitter, SplitterHandle, SplitterPanel, SplitterRoot, StatCard, StatFigure, addDays, addMonths, affixSide, applyKey, applyStored, ariaPercents, builtinPresets, clampDate, createPanels, cssSize, currencyName, currencySymbol, daysInMonth, defaultPresets, defaultWeekStartsOn, endOfWeek, formatDay, formatFull, formatMoney2 as formatMoney, fromMinorUnits, getCurrencyDigits, handleTarget, inclusiveDays, isValidCurrency, isoWeek, last30Days, last7Days, lastMonth, lastWeek, layoutOf, lengthBlockReason, measure, monthCells, moveFocusDate, nextMonth, nextWeek, normalizePaste, orderRange, parseDate, parseDecimalString, parseSize, presetInBounds, resetToDefault, resizeByDelta, resolvePreset, roundHalfExpand, roundingChangesValue, sameSelection, serializeSize, settle, sizeText, startOfWeek, syncPanels, thisMonth, thisQuarter, thisWeek, toDecimalString, toMinorUnits, today, todayDate, toggleCollapsed, tomorrow, useListDetail, valueText, yearToDate, yesterday };
3876
- //# sourceMappingURL=chunk-2BFNETZZ.js.map
3877
- //# sourceMappingURL=chunk-2BFNETZZ.js.map
3893
+ export { AppBar, AppBarSpacer, Badge, CURRENCY_SEARCH_THRESHOLD, Calendar, CurrencySelect, DatePicker, DatePresets, DescriptionItem, DescriptionList, Drawer, EditableList, Field, ListDetail, ListDetailDetail, ListDetailList, ListDetailRoot, MAX_MINOR_UNITS, MoneyField, MoneyFieldAffix, MoneyFieldGroup, MoneyFieldInput, MoneyFieldRoot, NumberField, PickerButton, PickerSplit, PickerSplitMain, PickerSplitTrigger, Popover, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, SplitButton, Splitter, SplitterHandle, SplitterPanel, SplitterRoot, StatCard, StatFigure, addDays, addMonths, affixSide, applyKey, applyStored, ariaPercents, builtinPresets, clampDate, createPanels, cssSize, currencyName, currencySymbol, daysInMonth, defaultPresets, defaultWeekStartsOn, endOfWeek, formatDay, formatFull, formatMoney2 as formatMoney, fromMinorUnits, getCurrencyDigits, handleTarget, inclusiveDays, isValidCurrency, isoWeek, last30Days, last7Days, lastMonth, lastWeek, layoutOf, lengthBlockReason, measure, monthCells, moveFocusDate, nextMonth, nextWeek, normalizePaste, orderRange, parseDate, parseDecimalString, parseSize, presetInBounds, resetToDefault, resizeByDelta, resolvePreset, roundHalfExpand, roundingChangesValue, sameSelection, serializeSize, settle, sizeText, startOfWeek, syncPanels, thisMonth, thisQuarter, thisWeek, toDecimalString, toMinorUnits, today, todayDate, toggleCollapsed, tomorrow, useListDetail, valueText, yearToDate, yesterday };
3894
+ //# sourceMappingURL=chunk-B5FH3RF5.js.map
3895
+ //# sourceMappingURL=chunk-B5FH3RF5.js.map