@crewlethq/ui 0.44.0 → 0.46.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 (143) hide show
  1. package/README.md +34 -2
  2. package/dist/AccessDeniedCard/index.js +2 -2
  3. package/dist/AgentHandoffPanel/index.js +6 -3
  4. package/dist/AppShell/index.js +3 -3
  5. package/dist/ArrangeList/index.js +5 -3
  6. package/dist/ArtifactBar/index.js +5 -5
  7. package/dist/ArtifactCard/index.js +3 -3
  8. package/dist/AsideLayout/AsideLayout.d.ts +24 -0
  9. package/dist/AsideLayout/index.d.ts +3 -0
  10. package/dist/AsideLayout/index.js +2 -0
  11. package/dist/AsideLayout-TH5SQZNK.css +45 -0
  12. package/dist/AvatarPicker/index.js +6 -6
  13. package/dist/Canvas/index.js +1 -1
  14. package/dist/CanvasBoard/index.js +1 -1
  15. package/dist/CanvasToolbar/index.js +1 -1
  16. package/dist/CatalogTile/index.js +1 -1
  17. package/dist/{CatalogTile-VPSLCKJE.css → CatalogTile-26XN7L2A.css} +13 -7
  18. package/dist/CharacterCount/CharacterCount.d.ts +63 -0
  19. package/dist/CharacterCount/index.d.ts +3 -0
  20. package/dist/CharacterCount/index.js +4 -0
  21. package/dist/CharacterCount-S735DICR.css +29 -0
  22. package/dist/Checkbox/index.js +5 -2
  23. package/dist/Combobox/index.js +5 -3
  24. package/dist/CommandPalette/index.js +6 -4
  25. package/dist/CommentThread/index.js +7 -4
  26. package/dist/Composer/index.js +5 -2
  27. package/dist/ConfirmField/index.js +5 -2
  28. package/dist/DataGrid/index.js +2 -2
  29. package/dist/DataTable/index.js +8 -6
  30. package/dist/DataView/index.js +10 -8
  31. package/dist/DateTimePicker/index.js +1 -1
  32. package/dist/DocTabsEditor/index.js +5 -4
  33. package/dist/EditingStatus/index.js +2 -1
  34. package/dist/{Editor-FXO2JVWK.js → Editor-6FXHMW64.js} +5 -3
  35. package/dist/EmptyState/EmptyState.d.ts +9 -2
  36. package/dist/EmptyState/index.js +1 -1
  37. package/dist/{EmptyState-C6HRBGT7.css → EmptyState-7L4UAQBX.css} +34 -0
  38. package/dist/FollowBanner/index.js +2 -2
  39. package/dist/HuePicker/index.js +5 -5
  40. package/dist/InlineEditor/InlineEditor.d.ts +86 -0
  41. package/dist/InlineEditor/index.d.ts +3 -0
  42. package/dist/InlineEditor/index.js +9 -0
  43. package/dist/InlineEditor-W55DDKML.css +72 -0
  44. package/dist/Input/FormField.d.ts +18 -1
  45. package/dist/Input/Textarea.d.ts +16 -0
  46. package/dist/Input/index.d.ts +2 -2
  47. package/dist/Input/index.js +4 -1
  48. package/dist/{Input-OQZBCRX5.css → Input-VDSV7VWJ.css} +19 -0
  49. package/dist/LinkInterstitial/index.js +3 -3
  50. package/dist/List/List.d.ts +16 -1
  51. package/dist/List/index.js +1 -1
  52. package/dist/{List-YHLIZFK4.css → List-XY445TKY.css} +31 -0
  53. package/dist/ListInput/ListInput.d.ts +87 -2
  54. package/dist/ListInput/index.d.ts +2 -2
  55. package/dist/ListInput/index.js +5 -2
  56. package/dist/{ListInput-O7LJKOIG.css → ListInput-DP2CSJ22.css} +118 -2
  57. package/dist/MarkdownEditor/index.js +5 -5
  58. package/dist/Menu/index.js +2 -2
  59. package/dist/MergeConflicts/index.js +5 -5
  60. package/dist/Modal/index.js +2 -2
  61. package/dist/PresenterView/index.js +3 -3
  62. package/dist/PrincipalPicker/index.js +6 -4
  63. package/dist/RelatedRow/index.js +2 -2
  64. package/dist/RichEditor/index.js +1 -1
  65. package/dist/SegmentedControl/index.js +4 -4
  66. package/dist/Select/index.js +1 -1
  67. package/dist/ShareDialog/index.js +3 -3
  68. package/dist/SheetColumnEditor/index.js +10 -8
  69. package/dist/SheetGrid/index.js +4 -4
  70. package/dist/SlideCompare/index.js +1 -1
  71. package/dist/SlideFilmstrip/index.js +3 -3
  72. package/dist/Statement/Statement.d.ts +45 -0
  73. package/dist/Statement/index.d.ts +3 -0
  74. package/dist/Statement/index.js +4 -0
  75. package/dist/Statement-M4QDXIMO.css +53 -0
  76. package/dist/Switcher/index.js +5 -4
  77. package/dist/Tabs/index.js +3 -3
  78. package/dist/Text/Text.d.ts +8 -0
  79. package/dist/Text/index.js +1 -1
  80. package/dist/{Text-S3Q4O3IG.css → Text-XOCOU34C.css} +9 -0
  81. package/dist/ThemeSwitcher/index.js +5 -5
  82. package/dist/TileGrid/index.js +1 -1
  83. package/dist/{TileGrid-I6LNYD2H.css → TileGrid-UYMVVVJK.css} +30 -0
  84. package/dist/TimeWindowPicker/index.js +5 -3
  85. package/dist/TreeCanvas/index.js +1 -1
  86. package/dist/VersionCompare/index.js +6 -6
  87. package/dist/{chunk-5AHDGYKN.js → chunk-2KQR6JKE.js} +2 -2
  88. package/dist/{chunk-NVMZQ3Y4.js → chunk-2LPNWAN6.js} +2 -2
  89. package/dist/{chunk-XIDD7PJO.js → chunk-2MYSESZF.js} +1 -1
  90. package/dist/{chunk-MVGCZ655.js → chunk-2UVMIM2J.js} +1 -1
  91. package/dist/{chunk-NF6SWHQI.js → chunk-32MTQ6DN.js} +2 -2
  92. package/dist/{chunk-QOP7QYUW.js → chunk-34RMTXDZ.js} +1 -1
  93. package/dist/{chunk-Q7HLZH32.js → chunk-3QSKDZR5.js} +1 -1
  94. package/dist/{chunk-BVFMLSE3.js → chunk-5EBDOE3C.js} +1 -1
  95. package/dist/{chunk-BF5WV7NM.js → chunk-6FVGSWLS.js} +1 -1
  96. package/dist/chunk-7P336RA5.js +147 -0
  97. package/dist/{chunk-UAGDFEBG.js → chunk-DY4DQ7EB.js} +1 -1
  98. package/dist/{chunk-4DIKLY53.js → chunk-HBSR5DL6.js} +1 -1
  99. package/dist/{chunk-KA75QPFM.js → chunk-ILFEWRLG.js} +1 -1
  100. package/dist/{chunk-AACPFUZW.js → chunk-KOJKX3U6.js} +4 -4
  101. package/dist/chunk-KY65C4XS.js +12 -0
  102. package/dist/{chunk-FG243QHY.js → chunk-KZDMAQNJ.js} +1 -1
  103. package/dist/{chunk-TC7DJTXI.js → chunk-MULOZYHL.js} +2 -0
  104. package/dist/chunk-MZJKPTA5.js +36 -0
  105. package/dist/{chunk-ZUTUI27P.js → chunk-N4GBDK4L.js} +1 -1
  106. package/dist/{chunk-7CXGSS7D.js → chunk-O6H5XXVK.js} +1 -1
  107. package/dist/{chunk-RA2ULG6H.js → chunk-PPUR46MK.js} +10 -1
  108. package/dist/{chunk-GI3S6RMM.js → chunk-PWZT6CZY.js} +3 -3
  109. package/dist/{chunk-NNTO3TNC.js → chunk-Q6CQMS6R.js} +1 -1
  110. package/dist/{chunk-IKBK4A5O.js → chunk-QP2P6GDQ.js} +1 -1
  111. package/dist/{chunk-KV3ODJXH.js → chunk-QTMUKRTN.js} +1 -1
  112. package/dist/{chunk-W53CWWX3.js → chunk-RCKRJXFV.js} +2 -2
  113. package/dist/{chunk-IUQQGIHL.js → chunk-RFPCHMSX.js} +2 -2
  114. package/dist/{chunk-X6IJ7DAX.js → chunk-RL75QTNT.js} +2 -2
  115. package/dist/{chunk-N3SHQ3VU.js → chunk-RRPQMMCZ.js} +1 -1
  116. package/dist/{chunk-EY7LACIR.js → chunk-RWET7W22.js} +1 -1
  117. package/dist/{chunk-TVSHR35W.js → chunk-RWWLVDRE.js} +1 -1
  118. package/dist/{chunk-LSRQJDGR.js → chunk-SEPSXOGJ.js} +1 -1
  119. package/dist/{chunk-MCOC3KQA.js → chunk-SQ4JFHO7.js} +1 -1
  120. package/dist/chunk-SQZEVWVC.js +436 -0
  121. package/dist/{chunk-DL5ERIFF.js → chunk-SS4XCUUJ.js} +2 -2
  122. package/dist/{chunk-GPIRKHGS.js → chunk-T7DXSFUX.js} +1 -1
  123. package/dist/{chunk-NZWX27J7.js → chunk-TDQ262TB.js} +19 -3
  124. package/dist/{chunk-5GNA4RKP.js → chunk-TGSIVB6H.js} +1 -1
  125. package/dist/{chunk-UO5VJHWP.js → chunk-U4HOKU6P.js} +2 -2
  126. package/dist/chunk-XCUUI7E7.js +62 -0
  127. package/dist/{chunk-ENHLVF6Q.js → chunk-XS2FJVMT.js} +1 -1
  128. package/dist/{chunk-FV6H7H5I.js → chunk-YBJVIY5E.js} +4 -4
  129. package/dist/{chunk-6MAQ2SVP.js → chunk-YR3ZURBM.js} +3 -3
  130. package/dist/{chunk-ZI5G5RS7.js → chunk-Z734SV4E.js} +55 -8
  131. package/dist/{chunk-OWIGEE2Y.js → chunk-ZZCCNVF3.js} +3 -3
  132. package/dist/generated/index.d.ts +4 -0
  133. package/dist/generated/index.js +95 -91
  134. package/dist/index.js +95 -91
  135. package/dist/styles.css +472 -16
  136. package/package.json +3 -3
  137. package/dist/chunk-NMYGJJJK.js +0 -263
  138. package/dist/{chunk-VXCT6L3F.js → chunk-245IXG5P.js} +0 -0
  139. package/dist/{chunk-OED6LUWE.js → chunk-4A4QG6UC.js} +1 -1
  140. package/dist/{chunk-FYINAYAJ.js → chunk-6AKG2VLR.js} +1 -1
  141. package/dist/{chunk-E6HXFFWO.js → chunk-ISDEXIXH.js} +1 -1
  142. package/dist/{chunk-U2XAJONO.js → chunk-OKE5YSLD.js} +1 -1
  143. package/dist/{chunk-PCI7ZJ6Z.js → chunk-TMM32U7D.js} +1 -1
package/README.md CHANGED
@@ -41,7 +41,7 @@ import { Button } from '@crewlethq/ui/Button'; // 8 KB of CSS, not 182 KB
41
41
  | Area | Components |
42
42
  | ---- | ---------- |
43
43
  | Actions | `Button` and `ButtonLink` (variants `primary`, `secondary`, `outline`, `ghost`, `accent`, `danger`; sizes `small`, `medium`, `large`; shapes `square`, `pill`), `IconButton`, `Menu`, `Link`, `Copyable`, `CopyButton`, `DownloadButton`, `Kbd` |
44
- | Content and text | `Text` (the eight registers and `inherit`), `Prose`, `Document`, `DocumentTitle` and `DocumentTitleField`, the Markdown grammar (`parseMarkdown`, `parseMarkdownSpans`, `markdownInline`, `safeHref` and the line readers, with no React in it), `Highlight`, `InlineCode`, `List` and `ListItem`, `DescriptionList`, `Timeline`, `RelativeTime`, `Note`, `Divider` |
44
+ | Content and text | `Text` (the eight registers and `inherit`), `Prose`, `Statement`, `Document`, `DocumentTitle` and `DocumentTitleField`, the Markdown grammar (`parseMarkdown`, `parseMarkdownSpans`, `markdownInline`, `safeHref` and the line readers, with no React in it), `Highlight`, `InlineCode`, `List` and `ListItem`, `DescriptionList`, `Timeline`, `RelativeTime`, `Note`, `Divider` |
45
45
  | Forms | `Input`, `Textarea`, `Label`, `FormField`, `FormRow`, `Checkbox`, `CheckboxGroup`, `ConfirmField`, `Select`, `Tag`, `TagsInput`, `DateTimePicker`, `TimeWindowPicker`, `ImageUpload`, `CharacterPicker`, `HuePicker`, `AvatarPicker`, `FactList`, `ChoiceList`, `Composer`, `MarkdownEditor`, `RichEditor` (with `preloadRichEditor`, and the round trip `roundTripMarkdown` and `canonicalMarkdown` from `@crewlethq/ui/RichEditorMarkdown`) |
46
46
  | Data display | `DataTable`, `CopyableCell`, `Table`, the read-only table cells (`TableKeyCell`, `TableNumberCell`, `TableDateCell`, `TableEntityCell`, `TableStatusCell`, `TableTagsCell`, `TableTextCell`), `StatCard`, `Meter`, `SegmentedMeter`, `Stepper`, `PricingCard`, `Avatar`, `AvatarStack`, `EntityChip`, `CodeBlock`, `QrCode`, `ObjectHeader`, `FactLine`, `SetByLine`, `Skeleton`, `Eyebrow`, `StatGroup`, `PinTile`, `IconTile`, `SettingsTable` (with `SettingsTable.Row`), `CatalogTile` |
47
47
  | List screens | `DataView`, and its parts on their own: `DataViewToolbar`, `FilterAxisBar`, `FilterAxisChip`, plus the filter model (`filterDefsFromColumns`, `applyColumnFilters`, `filterPredicate`, `blankFilterValue`) |
@@ -50,7 +50,7 @@ import { Button } from '@crewlethq/ui/Button'; // 8 KB of CSS, not 182 KB
50
50
  | Charts | `Legend`, `BarList`, `StackedBar`, `StackedColumns`, `ActivityStrip`, `TimeSeries`, `Sparkline`, the reading layer they share (`ChartTooltip`, `useChartHover`), and the ramp (`DATA_COLORS`, `DATA_COLOR_OTHER`, `dataColor`) |
51
51
  | Marks | `Count`, `StatusDot`, `EmptyValue`, `VisuallyHidden` |
52
52
  | Hooks and seams | `useModalLayer`, `usePopupLayer`, `LayerHost`, `useListbox`, `useOptionKeys`, `useHighlightRest` and `HIGHLIGHT_REST_MS`, `useClipboard`, `useDownload`, `downloadText`, `downloadBlob`, `safeFilename`, `toCsv`, `elementToPng` and `ElementToPngError`, `useOutcome`, `useAnnouncer`, `useNow`, `formatRelative`, `HeadingLevelProvider`, `cx`, the node hues (`NODE_HUES`, `NODE_HUE_NAMES`, `isNodeHue`) |
53
- | Layout | `Container`, `Section`, `Card`, `TileGrid`, `ListDetail`, `Tabs`, `Accordion`, `Disclosure`, `Outline` (with `useActiveHeading` and `scrollToHeading`), `TreeGrid` |
53
+ | Layout | `Container`, `Section`, `Card`, `TileGrid`, `ListDetail`, `AsideLayout`, `Tabs`, `Accordion`, `Disclosure`, `Outline` (with `useActiveHeading` and `scrollToHeading`), `TreeGrid` |
54
54
  | Arranging a page | `ArrangeBoard`, `ArrangeGrid`, `ArrangeFrame` (with `useGridResize`), `ArrangeGroup`, `ArrangeList`, and the reorder hooks under them (`useReorder`, `useReorderLists`, `moveKey`) |
55
55
  | Application shell | `AppShell` with `AppShell.Rail`, `SectionFrame` (with `SectionFrame.Nav` and `SectionFrame.Body`), `LockedLabel`, `AppShell.Topbar`, `AppShell.AccountRow` and `useAppShell`, `AuthLayout`, `SidebarNav` and `NavItem`, `DirectoryList`, `BrandLockup`, `SearchTrigger`, `PageHeader`, `Toolbar`, `Stack`, `Inline`, `Spacer`, `AutoGrid`, `ErrorBoundary`, `useShortcut`, `useFullscreen`, `useIdle`, `useMediaMatch` |
56
56
  | Preferences | `ThemeToggle`, `ThemeSwitcher`, `DensitySwitcher`, `ThemeGallery`, `ThemeSwatch`, `useThemePreference`, `useDensityPreference`, `useSystemTheme`, `resolveTheme`, `applyStoredPreferences`, and the framework-free `applyTheme`, `applyPalette`, `applyDensity` with `THEME_PREFERENCES`, `DENSITY_PREFERENCES` and their guards |
@@ -204,6 +204,38 @@ places:
204
204
  - A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
205
205
  when the content beneath it moves, and every panel anchored inside follows.
206
206
 
207
+ ## Changes in 0.46.0
208
+
209
+ The pieces for editing a company's principles where they are read: a statement or a list of policies changed in place on its own card, with nothing to go and find in another screen.
210
+
211
+ **`InlineEditor` is new**: one record edited in place, as a form named by `label`. Its fields come first, then a bar with the `EditingStatus` at its start and Cancel and Save at its end. Mod+Enter saves from any field and Escape cancels, each only once nothing inside has claimed the key and never during an input method's composition. Enter in a one-line field does not submit the form, so saving is always the one gesture, and a `ListInput` inside it passes Mod+Enter through rather than adding an item. Escape and Cancel discard at once, so a caller holding a draft worth keeping asks first in `onCancel` while `dirty`. Save is never a dead button: while nothing has changed (`dirty`), while a field refuses its value (`invalid`) and while a save is in flight (`saving`) it stays reachable and says why it does nothing. `error` is said as an alert above the bar, and `notice` holds a `ConflictNote` once the record has moved on. The focus lands at the end of the first field as it opens (`focusOnMount`). It owns no state: the draft, the save, the conflict and the focus once it closes are the caller's.
212
+
213
+ **`CharacterCount` is new**: how much of a limit a text has used ("120 / 500"), in the warning ink from nine tenths of the way and the danger ink past it, read as one sentence and announced only as it crosses a step. Characters are code points, as Go's `utf8.RuneCountInString` counts them, so an emoji counts once; `countCharacters` counts them. **`FormField` takes `limit={{ length, max }}`**, which draws the count at the end of the help line, joins it into the field's description and marks a value past it invalid. It is a soft limit: nothing typed or pasted is cut.
214
+
215
+ **`Textarea` takes `singleLine`**: a one-line value that wraps so it can be read whole while it is edited (a one-line `Input` scrolled a 160-character mission sideways and showed only its tail). Enter and Shift+Enter write no line break, Ctrl or Command with Enter passes through to a form's save, and a line break pasted or dropped in (any of `\n`, `\r`, `\v`, `\f`, U+0085, U+2028 and U+2029, the set a server refusing a break in one line also counts) is folded into a space (`foldLineBreaks`) and said so through the `Announcer` (`foldedMessage`), never silently. It is announced as one line (`aria-multiline="false"`). **A `ListInput` without `multiline` now draws its items and its new-item box this way**, so a long policy wraps rather than being clipped to one line; Enter keeps its list rules. Under a hidden legend (`hideLabel`) the add control stands at the end of the box's row, rather than alone above it.
216
+
217
+ **`EditingStatus` is read with a pause between its words**: "Editing, Unsaved changes" rather than "EditingUnsaved changes", since the dot between them is drawn by the stylesheet and a live region does not read it.
218
+
219
+ **`ListInput`'s new-item text can be the owner's (`draft`, `onDraftChange`).** Held inside the list alone, a policy typed and not yet added was dropped by the form's Save without a word, and no unsaved-changes check could see it. A form that saves the list holds the draft and saves `withDraft(value, draft)`, which appends it trimmed. Left out, the list holds it as before.
220
+
221
+ **`ListInput` also takes these additions, each off unless asked for.** `reorderByDrag` gives each row a grip it is dragged by, through `useReorder`. The grip belongs to the pointer: it is hidden from a screen reader and out of the tab order, since Alt+Up, Alt+Down and the Move buttons already cover reordering from the keyboard. `undoRemove` leaves a row where a removed item was, with Undo (which puts it back there, focused) and Dismiss, both described by the row's sentence; the focus goes to Undo, the row says the removal in place of an announcement, and it goes with the list's next change. `maxItems` replaces the new-item box with a sentence once the list is full (`fullMessage`). `maxLength` holds each item and the new-item box to a soft limit with a `CharacterCount`, counted on the trimmed text. `itemError` says a refusal under the one item it is about and links it to that item. `hideLabel` keeps the legend for assistive technology only, for a list already titled by the card around it. A `ref` gives `focusItem(index)` and `focusNew()`. An item's control now sits in a `.crewlet-list-input__field` column with what is said under it.
222
+
223
+ **`Text` takes `variant="passage"`**: words somebody wrote to be read whole (a mission on its card, a policy, a comment), at the body's size with the relaxed leading, the author's line breaks kept and a long word broken rather than overflowing. **`List` takes `density="compact"`**: rows a small step apart, and on `numbered-divided` in the body's size at its normal leading, so a card holds eight two-line policies on one screen. **`List` takes `measure`**: `normal` (68ch) or `wide` (80ch, the new `--size-measure-wide` token, for a list of statements such as a company's policies) holds each row's words to a reading measure while the row and its rule still span the list. Unset, the words take the row's width as before. `comfortable`, the default, is unchanged.
224
+
225
+ **A compact `CatalogTile` never cuts its name**, and **a `TileGrid` holding one folds where a track would be narrower than its one-line header** (about 30rem): two tracks fold to one under 61rem, three under 92rem and four to two under 123rem. At a 1024px window two compact tiles stood on 415px tracks and cut the name to its first letter; a compact head short of room now wraps its state and its fact under the name instead.
226
+
227
+ **`@crewlethq/icons` adds `TelescopeGlyph` and `ScrollTextGlyph`**: the vision's card and the standing policies' card, beside `TargetGlyph` for the mission. `Card.Header` already draws a glyph before its title through `icon`.
228
+
229
+ ## Changes in 0.45.0
230
+
231
+ The pieces of the engine's Company › Principles page: a company's mission, vision and policies beside the facts about it.
232
+
233
+ **`Statement` is new**: a label over the words a page exists to say (a mission, a vision, a goal), set a step over the body (`--font-size-lg`, the body's own step over it on a phone) at the reading measure, with the author's line breaks kept. A block such as a numbered list is drawn as given under the same label, so every statement on a page heads the same way. An unwritten one says so through `empty` (`title`, `description` and an optional `action`) as an inline empty state, never as grey text in the words' place. It is a region named by its label.
234
+
235
+ **`AsideLayout` is new**: a page's main column with an aside beside it from 56rem of the layout's own width (a container query, not the window's), the aside `--crewlet-aside-layout-aside` wide (18rem by default). Narrower, the aside follows the main column past one hairline. Each column is a stack one step apart, and the aside is a complementary landmark named by `asideLabel`.
236
+
237
+ **`EmptyState` takes `size="inline"`**: one left-aligned row on a dashed hairline, the sentence beside its one action and no glyph, for a part of a page that is empty while the rest of it is not.
238
+
207
239
  ## Changes in 0.44.0
208
240
 
209
241
  The pieces of the engine's Company › Integrations home, a summary of what a company has in use beside the directory of everything it could.
@@ -1,4 +1,4 @@
1
- export { ACCESS_DENIED_REASONS, AccessDeniedCard } from '../chunk-KV3ODJXH.js';
2
- import '../chunk-RA2ULG6H.js';
1
+ export { ACCESS_DENIED_REASONS, AccessDeniedCard } from '../chunk-QTMUKRTN.js';
2
+ import '../chunk-PPUR46MK.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,15 +1,18 @@
1
- export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-N3SHQ3VU.js';
1
+ export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-RRPQMMCZ.js';
2
2
  import '../chunk-AUQPBL4O.js';
3
3
  import '../chunk-JQ7IFSF6.js';
4
4
  import '../chunk-OGXHZHRX.js';
5
- import '../chunk-7CXGSS7D.js';
5
+ import '../chunk-O6H5XXVK.js';
6
6
  import '../chunk-NBDN5JZV.js';
7
- import '../chunk-ZI5G5RS7.js';
7
+ import '../chunk-Z734SV4E.js';
8
+ import '../chunk-XCUUI7E7.js';
8
9
  import '../chunk-SMBKXWML.js';
9
10
  import '../chunk-FZVJDJFN.js';
10
11
  import '../chunk-BHHIIK3M.js';
11
12
  import '../chunk-PQADV6P6.js';
13
+ import '../chunk-RSAQOKH3.js';
12
14
  import '../chunk-OG6CL3EB.js';
15
+ import '../chunk-H5XTJ7GJ.js';
13
16
  import '../chunk-LACA4JGC.js';
14
17
  import '../chunk-NUZHC6MM.js';
15
18
  import '../chunk-BZFWDIV6.js';
@@ -1,10 +1,10 @@
1
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-5AHDGYKN.js';
1
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-2KQR6JKE.js';
2
2
  import '../chunk-RTPQDNW3.js';
3
- import '../chunk-PCI7ZJ6Z.js';
3
+ import '../chunk-TMM32U7D.js';
4
4
  import '../chunk-OMV5W53A.js';
5
- import '../chunk-H5XTJ7GJ.js';
6
5
  import '../chunk-2YTOOH3A.js';
7
6
  import '../chunk-OG6CL3EB.js';
7
+ import '../chunk-H5XTJ7GJ.js';
8
8
  import '../chunk-LACA4JGC.js';
9
9
  import '../chunk-NUZHC6MM.js';
10
10
  import '../chunk-BZFWDIV6.js';
@@ -1,10 +1,12 @@
1
- export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-GPIRKHGS.js';
1
+ export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-T7DXSFUX.js';
2
2
  import '../chunk-A722MUNR.js';
3
3
  import '../chunk-XJ2QEBMM.js';
4
- import '../chunk-EY7LACIR.js';
5
- import '../chunk-ZI5G5RS7.js';
4
+ import '../chunk-RWET7W22.js';
5
+ import '../chunk-Z734SV4E.js';
6
+ import '../chunk-XCUUI7E7.js';
6
7
  import '../chunk-PQADV6P6.js';
7
8
  import '../chunk-RSAQOKH3.js';
9
+ import '../chunk-H5XTJ7GJ.js';
8
10
  import '../chunk-LACA4JGC.js';
9
11
  import '../chunk-NUZHC6MM.js';
10
12
  import '../chunk-BZFWDIV6.js';
@@ -1,7 +1,7 @@
1
- export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-UO5VJHWP.js';
1
+ export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-U4HOKU6P.js';
2
2
  import '../chunk-OOC7Q67K.js';
3
- import '../chunk-BF5WV7NM.js';
4
- import '../chunk-KA75QPFM.js';
3
+ import '../chunk-6FVGSWLS.js';
4
+ import '../chunk-ILFEWRLG.js';
5
5
  import '../chunk-WIATRXEJ.js';
6
6
  import '../chunk-EGMQURBR.js';
7
7
  import '../chunk-I33UIUZD.js';
@@ -9,11 +9,11 @@ import '../chunk-ILDNJHRU.js';
9
9
  import '../chunk-CE2THTQR.js';
10
10
  import '../chunk-SMBKXWML.js';
11
11
  import '../chunk-BHHIIK3M.js';
12
- import '../chunk-PCI7ZJ6Z.js';
12
+ import '../chunk-TMM32U7D.js';
13
13
  import '../chunk-OMV5W53A.js';
14
- import '../chunk-H5XTJ7GJ.js';
15
14
  import '../chunk-2YTOOH3A.js';
16
15
  import '../chunk-OG6CL3EB.js';
16
+ import '../chunk-H5XTJ7GJ.js';
17
17
  import '../chunk-LACA4JGC.js';
18
18
  import '../chunk-NUZHC6MM.js';
19
19
  import '../chunk-BZFWDIV6.js';
@@ -1,13 +1,13 @@
1
- export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-U2XAJONO.js';
1
+ export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-OKE5YSLD.js';
2
2
  import '../chunk-TEUQWOWZ.js';
3
3
  import '../chunk-CI3VPIJN.js';
4
4
  import '../chunk-3CZ7XAVY.js';
5
5
  import '../chunk-EUCC37WY.js';
6
+ import '../chunk-5AQBPHZD.js';
7
+ import '../chunk-PZKHBB7D.js';
6
8
  import '../chunk-UBZDYOCA.js';
7
9
  import '../chunk-INHXF2CL.js';
8
10
  import '../chunk-AV2DXAEL.js';
9
- import '../chunk-5AQBPHZD.js';
10
- import '../chunk-PZKHBB7D.js';
11
11
  import '../chunk-BGLKLXL3.js';
12
12
  export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-CE2THTQR.js';
13
13
  import '../chunk-BHHIIK3M.js';
@@ -0,0 +1,24 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export interface AsideLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /** The page's main column: what the page is about. */
4
+ children: ReactNode;
5
+ /** The column beside it: facts about the subject, how it is used, related places. */
6
+ aside: ReactNode;
7
+ /** What the aside is, for a screen reader's landmark: "About the company". */
8
+ asideLabel: string;
9
+ }
10
+ /**
11
+ * A page's main column with an aside beside it, each a stack of blocks one
12
+ * page step apart.
13
+ *
14
+ * THE COLUMNS FOLLOW THE ROOM THE PAGE HAS, NOT THE WINDOW. It is a container
15
+ * query on its own width, because a page beside a navigation rail is narrow
16
+ * on a wide screen too: from 56rem the aside stands beside the main column at
17
+ * `--crewlet-aside-layout-aside` (18rem by default), and below that it
18
+ * follows the main column under one hairline, so a phone reads the subject
19
+ * first and its facts after it.
20
+ *
21
+ * THE ASIDE IS A COMPLEMENTARY LANDMARK named by `asideLabel`, so a screen
22
+ * reader can skip to it or past it.
23
+ */
24
+ export declare function AsideLayout({ children, aside, asideLabel, className, ...rest }: AsideLayoutProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './AsideLayout.css';
2
+ export { AsideLayout } from './AsideLayout.js';
3
+ export type { AsideLayoutProps } from './AsideLayout.js';
@@ -0,0 +1,2 @@
1
+ export { AsideLayout } from '../chunk-KY65C4XS.js';
2
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,45 @@
1
+ /*
2
+ * AsideLayout: a main column with an aside beside it from 56rem of its own
3
+ * width, and after it below that (AsideLayout.tsx).
4
+ */
5
+
6
+ .crewlet-aside-layout {
7
+ container-type: inline-size;
8
+ min-width: 0;
9
+ }
10
+
11
+ .crewlet-aside-layout__columns {
12
+ display: grid;
13
+ grid-template-columns: minmax(0, 1fr);
14
+ align-items: start;
15
+ gap: var(--spacing-7);
16
+ }
17
+
18
+ /* EACH COLUMN IS A STACK one step apart, so the blocks in it stand apart
19
+ evenly without each carrying a margin of its own. */
20
+ .crewlet-aside-layout__main,
21
+ .crewlet-aside-layout__aside {
22
+ display: flex;
23
+ flex-direction: column;
24
+ gap: var(--spacing-6);
25
+ min-width: 0;
26
+ }
27
+
28
+ /* FOLLOWING THE MAIN COLUMN, the aside is set off by one hairline, so its
29
+ facts read as about the page rather than as more of it. */
30
+ .crewlet-aside-layout__aside {
31
+ padding-top: var(--spacing-6);
32
+ border-top: 1px solid var(--color-border-default);
33
+ }
34
+
35
+ @container (min-width: 56rem) {
36
+ .crewlet-aside-layout__columns {
37
+ grid-template-columns: minmax(0, 1fr) var(--crewlet-aside-layout-aside, 18rem);
38
+ gap: var(--spacing-8);
39
+ }
40
+
41
+ .crewlet-aside-layout__aside {
42
+ padding-top: 0;
43
+ border-top: 0;
44
+ }
45
+ }
@@ -1,19 +1,19 @@
1
- export { AvatarPicker } from '../chunk-Q7HLZH32.js';
2
- import '../chunk-QOP7QYUW.js';
1
+ export { AvatarPicker } from '../chunk-3QSKDZR5.js';
2
+ import '../chunk-34RMTXDZ.js';
3
3
  import '../chunk-KHJIEPZV.js';
4
4
  import '../chunk-AYKXMIOR.js';
5
5
  import '../chunk-SNQRGH4A.js';
6
- import '../chunk-BF5WV7NM.js';
7
- import '../chunk-KA75QPFM.js';
6
+ import '../chunk-6FVGSWLS.js';
7
+ import '../chunk-ILFEWRLG.js';
8
8
  import '../chunk-WIATRXEJ.js';
9
9
  import '../chunk-EGMQURBR.js';
10
10
  import '../chunk-PZKHBB7D.js';
11
11
  import '../chunk-BHHIIK3M.js';
12
- import '../chunk-PCI7ZJ6Z.js';
12
+ import '../chunk-TMM32U7D.js';
13
13
  import '../chunk-OMV5W53A.js';
14
- import '../chunk-H5XTJ7GJ.js';
15
14
  import '../chunk-2YTOOH3A.js';
16
15
  import '../chunk-OG6CL3EB.js';
16
+ import '../chunk-H5XTJ7GJ.js';
17
17
  import '../chunk-LACA4JGC.js';
18
18
  import '../chunk-NUZHC6MM.js';
19
19
  import '../chunk-BZFWDIV6.js';
@@ -3,8 +3,8 @@ import '../chunk-LM3ISVJA.js';
3
3
  import '../chunk-I33UIUZD.js';
4
4
  import '../chunk-SMBKXWML.js';
5
5
  import '../chunk-OMV5W53A.js';
6
- import '../chunk-H5XTJ7GJ.js';
7
6
  import '../chunk-OG6CL3EB.js';
7
+ import '../chunk-H5XTJ7GJ.js';
8
8
  import '../chunk-LACA4JGC.js';
9
9
  import '../chunk-NUZHC6MM.js';
10
10
  import '../chunk-BZFWDIV6.js';
@@ -7,8 +7,8 @@ import '../chunk-LM3ISVJA.js';
7
7
  import '../chunk-I33UIUZD.js';
8
8
  import '../chunk-SMBKXWML.js';
9
9
  import '../chunk-OMV5W53A.js';
10
- import '../chunk-H5XTJ7GJ.js';
11
10
  import '../chunk-OG6CL3EB.js';
11
+ import '../chunk-H5XTJ7GJ.js';
12
12
  import '../chunk-LACA4JGC.js';
13
13
  import '../chunk-NUZHC6MM.js';
14
14
  import '../chunk-BZFWDIV6.js';
@@ -5,8 +5,8 @@ import '../chunk-LM3ISVJA.js';
5
5
  import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-SMBKXWML.js';
7
7
  import '../chunk-OMV5W53A.js';
8
- import '../chunk-H5XTJ7GJ.js';
9
8
  import '../chunk-OG6CL3EB.js';
9
+ import '../chunk-H5XTJ7GJ.js';
10
10
  import '../chunk-LACA4JGC.js';
11
11
  import '../chunk-NUZHC6MM.js';
12
12
  import '../chunk-BZFWDIV6.js';
@@ -1,3 +1,3 @@
1
- export { CatalogTile } from '../chunk-5GNA4RKP.js';
1
+ export { CatalogTile } from '../chunk-TGSIVB6H.js';
2
2
  import '../chunk-PQADV6P6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -156,20 +156,25 @@
156
156
  height: var(--size-row-sm);
157
157
  }
158
158
 
159
+ /*
160
+ * THE NAME IS NEVER CUT. It is what the tile is: "C…" names nothing. Where
161
+ * the line is short of room the state and the fact wrap under the name rather
162
+ * than squeezing it, and a name longer than the whole line wraps at a word.
163
+ * The grid folds a compact tile's tracks before it comes to that (see
164
+ * TileGrid.css), so the wrap is the fallback and not the layout.
165
+ */
159
166
  .crewlet-catalog-tile--compact .crewlet-catalog-tile__title {
160
167
  flex: 1 1 auto;
161
168
  flex-direction: row;
169
+ flex-wrap: wrap;
162
170
  align-items: center;
163
- gap: var(--spacing-2);
171
+ gap: 0 var(--spacing-2);
164
172
  padding-top: 0;
165
173
  }
166
174
 
167
175
  .crewlet-catalog-tile--compact .crewlet-catalog-tile__name {
168
- flex: 0 1 auto;
169
- min-width: 0;
170
- overflow: hidden;
171
- text-overflow: ellipsis;
172
- white-space: nowrap;
176
+ flex: 0 0 auto;
177
+ max-width: 100%;
173
178
  }
174
179
 
175
180
  .crewlet-catalog-tile--compact .crewlet-catalog-tile__status {
@@ -177,7 +182,8 @@
177
182
  }
178
183
 
179
184
  .crewlet-catalog-tile--compact .crewlet-catalog-tile__meta {
180
- flex: 0 1 auto;
185
+ flex: none;
186
+ max-width: 100%;
181
187
  }
182
188
 
183
189
  .crewlet-catalog-tile--compact .crewlet-catalog-tile__description {
@@ -0,0 +1,63 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ /**
3
+ * How many characters a text holds, counted the way a reader counts them.
4
+ *
5
+ * CODE POINTS, NOT UTF-16 UNITS. `'🙂'.length` is 2, so a limit counted on
6
+ * `.length` refuses an emoji-heavy sentence a character early and tells the
7
+ * writer they typed something they did not. A Go server counting with
8
+ * `utf8.RuneCountInString` counts code points too, so the number on the
9
+ * screen and the number in the refusal are the same number.
10
+ */
11
+ export declare function countCharacters(text: string): number;
12
+ /** Where a count stands against its limit. */
13
+ export type CharacterCountState = 'within' | 'near' | 'over';
14
+ /** The share of the limit past which the count is drawn as a warning. */
15
+ export declare const CHARACTER_COUNT_NEAR = 0.9;
16
+ /** Where `length` stands against `max`. */
17
+ export declare function characterCountState(length: number, max: number): CharacterCountState;
18
+ /** Every sentence the count says. */
19
+ export interface CharacterCountLabels {
20
+ /** What a screen reader hears for the count itself: "120 of 500 characters". */
21
+ count: (length: number, max: number) => string;
22
+ /** Said once as the count crosses into the warning step: "50 characters left". */
23
+ left: (left: number) => string;
24
+ /** Said, and read for the count, once it is past the limit: "12 characters over the limit of 500". */
25
+ over: (over: number, max: number) => string;
26
+ /** Said once as an over-long text comes back within the limit. */
27
+ within: string;
28
+ }
29
+ export declare const CHARACTER_COUNT_LABELS: CharacterCountLabels;
30
+ export interface CharacterCountProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
31
+ /** How many characters the text holds. `countCharacters` counts them. */
32
+ length: number;
33
+ /** The most it may hold. */
34
+ max: number;
35
+ /**
36
+ * Says the crossings through the page's `Announcer`: into the warning step,
37
+ * past the limit, and back within it. ON by default; turn it off for a count
38
+ * that is not beside the field being typed in.
39
+ */
40
+ announce?: boolean | undefined;
41
+ labels?: Partial<CharacterCountLabels> | undefined;
42
+ }
43
+ /**
44
+ * How much of a limit a text has used, beside the field it is typed in:
45
+ * "120 / 500", in the warning ink from nine tenths of the way, and in the
46
+ * danger ink past it.
47
+ *
48
+ * A SOFT LIMIT. The field keeps whatever was typed or pasted, and the count
49
+ * says by how much it is over, because a native `maxLength` cuts a pasted
50
+ * paragraph at the limit without a word, and the writer finds out which half
51
+ * was kept only after it was saved. The form refusing to save is the caller's,
52
+ * through the field's own error.
53
+ *
54
+ * READ IN ONE SENTENCE. The digits are drawn hidden and a sentence is read
55
+ * instead ("120 of 500 characters"), so a field that lists the count in its
56
+ * `aria-describedby` is described in words rather than as "120 slash 500".
57
+ *
58
+ * THE CROSSINGS ARE SAID, ONCE EACH, and nothing in between. A count read on
59
+ * every keystroke is a screen reader that cannot be heard over; one that
60
+ * says nothing is a limit a reader who cannot see the ink meets only as a
61
+ * refusal.
62
+ */
63
+ export declare function CharacterCount({ length, max, announce: says, labels: overrides, className, ...rest }: CharacterCountProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './CharacterCount.css';
2
+ export { CHARACTER_COUNT_LABELS, CHARACTER_COUNT_NEAR, CharacterCount, characterCountState, countCharacters, } from './CharacterCount.js';
3
+ export type { CharacterCountLabels, CharacterCountProps, CharacterCountState } from './CharacterCount.js';
@@ -0,0 +1,4 @@
1
+ export { CHARACTER_COUNT_LABELS, CHARACTER_COUNT_NEAR, CharacterCount, characterCountState, countCharacters } from '../chunk-XCUUI7E7.js';
2
+ import '../chunk-RSAQOKH3.js';
3
+ import '../chunk-BZFWDIV6.js';
4
+ import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,29 @@
1
+ /*
2
+ * The count of a limited field (CharacterCount.tsx): the help line's own small
3
+ * step, in its quiet ink until the limit is close.
4
+ */
5
+
6
+ .crewlet-character-count {
7
+ flex: none;
8
+ font-size: var(--font-size-xs);
9
+ line-height: var(--font-line-height-normal);
10
+ /* Figures of one width, so the count does not shift as a digit changes. */
11
+ font-variant-numeric: tabular-nums;
12
+ color: var(--color-text-tertiary);
13
+ white-space: nowrap;
14
+ }
15
+
16
+ .crewlet-character-count__of {
17
+ margin-inline: 0.15em;
18
+ }
19
+
20
+ .crewlet-character-count--near {
21
+ color: var(--color-feedback-warning-ink);
22
+ }
23
+
24
+ /* Past the limit the count is the refusal's ink and weight, so the number
25
+ that says what to fix is the loudest thing on the line. */
26
+ .crewlet-character-count--over {
27
+ color: var(--color-feedback-danger-ink);
28
+ font-weight: var(--font-weight-medium);
29
+ }
@@ -1,6 +1,9 @@
1
- export { Checkbox, CheckboxGroup } from '../chunk-EY7LACIR.js';
2
- import '../chunk-ZI5G5RS7.js';
1
+ export { Checkbox, CheckboxGroup } from '../chunk-RWET7W22.js';
2
+ import '../chunk-Z734SV4E.js';
3
+ import '../chunk-XCUUI7E7.js';
3
4
  import '../chunk-PQADV6P6.js';
5
+ import '../chunk-RSAQOKH3.js';
6
+ import '../chunk-H5XTJ7GJ.js';
4
7
  import '../chunk-LACA4JGC.js';
5
8
  import '../chunk-NUZHC6MM.js';
6
9
  import '../chunk-BZFWDIV6.js';
@@ -1,9 +1,11 @@
1
- export { Combobox } from '../chunk-MVGCZ655.js';
1
+ export { Combobox } from '../chunk-2UVMIM2J.js';
2
2
  import '../chunk-7KHM2FZH.js';
3
- import '../chunk-ZI5G5RS7.js';
3
+ import '../chunk-Z734SV4E.js';
4
+ import '../chunk-XCUUI7E7.js';
4
5
  import '../chunk-PQADV6P6.js';
5
- import '../chunk-H5XTJ7GJ.js';
6
+ import '../chunk-RSAQOKH3.js';
6
7
  import '../chunk-2YTOOH3A.js';
8
+ import '../chunk-H5XTJ7GJ.js';
7
9
  import '../chunk-LACA4JGC.js';
8
10
  import '../chunk-NUZHC6MM.js';
9
11
  import '../chunk-BZFWDIV6.js';
@@ -1,14 +1,16 @@
1
- export { CommandPalette } from '../chunk-6MAQ2SVP.js';
2
- import '../chunk-FYINAYAJ.js';
1
+ export { CommandPalette } from '../chunk-YR3ZURBM.js';
2
+ import '../chunk-6AKG2VLR.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
- import '../chunk-ZI5G5RS7.js';
4
+ import '../chunk-Z734SV4E.js';
5
+ import '../chunk-XCUUI7E7.js';
5
6
  import '../chunk-SMBKXWML.js';
6
7
  import '../chunk-BHHIIK3M.js';
7
8
  import '../chunk-PQADV6P6.js';
9
+ import '../chunk-RSAQOKH3.js';
8
10
  import '../chunk-OMV5W53A.js';
9
- import '../chunk-H5XTJ7GJ.js';
10
11
  import '../chunk-2YTOOH3A.js';
11
12
  import '../chunk-OG6CL3EB.js';
13
+ import '../chunk-H5XTJ7GJ.js';
12
14
  import '../chunk-LACA4JGC.js';
13
15
  import '../chunk-NUZHC6MM.js';
14
16
  import '../chunk-BZFWDIV6.js';
@@ -1,16 +1,19 @@
1
- export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-NVMZQ3Y4.js';
2
- import '../chunk-PWG3VHRQ.js';
1
+ export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-2LPNWAN6.js';
3
2
  import '../chunk-CI3VPIJN.js';
4
3
  import '../chunk-3CZ7XAVY.js';
5
4
  import '../chunk-EUCC37WY.js';
6
5
  import '../chunk-5AQBPHZD.js';
7
6
  import '../chunk-PZKHBB7D.js';
8
- import '../chunk-7CXGSS7D.js';
9
- import '../chunk-ZI5G5RS7.js';
7
+ import '../chunk-PWG3VHRQ.js';
8
+ import '../chunk-O6H5XXVK.js';
9
+ import '../chunk-Z734SV4E.js';
10
+ import '../chunk-XCUUI7E7.js';
10
11
  import '../chunk-SMBKXWML.js';
11
12
  import '../chunk-BHHIIK3M.js';
12
13
  import '../chunk-PQADV6P6.js';
14
+ import '../chunk-RSAQOKH3.js';
13
15
  import '../chunk-OG6CL3EB.js';
16
+ import '../chunk-H5XTJ7GJ.js';
14
17
  import '../chunk-LACA4JGC.js';
15
18
  import '../chunk-NUZHC6MM.js';
16
19
  import '../chunk-BZFWDIV6.js';
@@ -1,7 +1,10 @@
1
- export { COMPOSER_COUNTER_AT, Composer } from '../chunk-7CXGSS7D.js';
2
- import '../chunk-ZI5G5RS7.js';
1
+ export { COMPOSER_COUNTER_AT, Composer } from '../chunk-O6H5XXVK.js';
2
+ import '../chunk-Z734SV4E.js';
3
+ import '../chunk-XCUUI7E7.js';
3
4
  import '../chunk-SMBKXWML.js';
4
5
  import '../chunk-PQADV6P6.js';
6
+ import '../chunk-RSAQOKH3.js';
7
+ import '../chunk-H5XTJ7GJ.js';
5
8
  import '../chunk-LACA4JGC.js';
6
9
  import '../chunk-NUZHC6MM.js';
7
10
  import '../chunk-BZFWDIV6.js';
@@ -1,7 +1,10 @@
1
- export { ConfirmField, confirmMatches } from '../chunk-FG243QHY.js';
1
+ export { ConfirmField, confirmMatches } from '../chunk-KZDMAQNJ.js';
2
2
  import '../chunk-5CLW2CXT.js';
3
- import '../chunk-ZI5G5RS7.js';
3
+ import '../chunk-Z734SV4E.js';
4
+ import '../chunk-XCUUI7E7.js';
4
5
  import '../chunk-PQADV6P6.js';
6
+ import '../chunk-RSAQOKH3.js';
7
+ import '../chunk-H5XTJ7GJ.js';
5
8
  import '../chunk-LACA4JGC.js';
6
9
  import '../chunk-NUZHC6MM.js';
7
10
  import '../chunk-BZFWDIV6.js';
@@ -1,5 +1,5 @@
1
- export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-XIDD7PJO.js';
2
- import '../chunk-RA2ULG6H.js';
1
+ export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-2MYSESZF.js';
2
+ import '../chunk-PPUR46MK.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-RTPQDNW3.js';
5
5
  import '../chunk-OG6CL3EB.js';
@@ -1,16 +1,18 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-GI3S6RMM.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-PWZT6CZY.js';
2
2
  import '../chunk-STJ7QBC3.js';
3
3
  import '../chunk-DTIW4CHZ.js';
4
- import '../chunk-FYINAYAJ.js';
5
- import '../chunk-EY7LACIR.js';
4
+ import '../chunk-6AKG2VLR.js';
5
+ import '../chunk-RWET7W22.js';
6
6
  import '../chunk-EUCC37WY.js';
7
7
  import '../chunk-AV2DXAEL.js';
8
- import '../chunk-ZI5G5RS7.js';
8
+ import '../chunk-Z734SV4E.js';
9
+ import '../chunk-XCUUI7E7.js';
9
10
  import '../chunk-PQADV6P6.js';
10
- import '../chunk-PCI7ZJ6Z.js';
11
+ import '../chunk-RSAQOKH3.js';
12
+ import '../chunk-TMM32U7D.js';
11
13
  import '../chunk-OMV5W53A.js';
12
- import '../chunk-H5XTJ7GJ.js';
13
14
  import '../chunk-OG6CL3EB.js';
15
+ import '../chunk-H5XTJ7GJ.js';
14
16
  import '../chunk-LACA4JGC.js';
15
17
  import '../chunk-NUZHC6MM.js';
16
18
  import '../chunk-BZFWDIV6.js';