@crewlethq/ui 0.41.1 → 0.43.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 (136) hide show
  1. package/README.md +22 -2
  2. package/dist/AgentHandoffPanel/index.js +5 -5
  3. package/dist/AppShell/index.js +3 -3
  4. package/dist/{AppShell-3R4ZU4ND.css → AppShell-TSACKAU7.css} +28 -10
  5. package/dist/ArrangeFrame/index.js +2 -2
  6. package/dist/ArrangeList/index.js +5 -5
  7. package/dist/ArtifactBar/index.js +5 -5
  8. package/dist/ArtifactPanel/index.js +2 -2
  9. package/dist/AvatarPicker/index.js +8 -8
  10. package/dist/Canvas/index.js +2 -2
  11. package/dist/CanvasBoard/index.js +4 -4
  12. package/dist/CanvasToolbar/index.js +3 -3
  13. package/dist/CharacterPicker/index.js +2 -2
  14. package/dist/Checkbox/index.js +3 -3
  15. package/dist/CodeBlock/index.js +3 -3
  16. package/dist/Combobox/index.js +3 -3
  17. package/dist/CommandPalette/index.js +4 -4
  18. package/dist/CommentThread/index.js +4 -4
  19. package/dist/Composer/index.js +3 -3
  20. package/dist/ConfirmField/index.js +3 -3
  21. package/dist/Copyable/index.js +2 -2
  22. package/dist/DataTable/index.js +6 -6
  23. package/dist/DataView/index.js +9 -9
  24. package/dist/DatasetSource/index.js +1 -1
  25. package/dist/DateTimePicker/index.js +3 -3
  26. package/dist/DirectoryList/DirectoryList.d.ts +55 -0
  27. package/dist/DirectoryList/index.d.ts +3 -0
  28. package/dist/DirectoryList/index.js +3 -0
  29. package/dist/DirectoryList-EESYMH2U.css +126 -0
  30. package/dist/DocTabsEditor/index.js +5 -5
  31. package/dist/{Editor-IRDQ3JDZ.js → Editor-AMO2B54T.js} +4 -4
  32. package/dist/HuePicker/index.js +5 -5
  33. package/dist/IconButton/IconButton.d.ts +25 -1
  34. package/dist/IconButton/index.d.ts +2 -2
  35. package/dist/IconButton/index.js +1 -1
  36. package/dist/{IconButton-VYWP6SGW.css → IconButton-K24JQHLF.css} +21 -0
  37. package/dist/Input/index.js +2 -2
  38. package/dist/LinkInterstitial/index.js +3 -3
  39. package/dist/ListDetail/ListDetail.d.ts +27 -0
  40. package/dist/ListDetail/index.d.ts +3 -0
  41. package/dist/ListDetail/index.js +2 -0
  42. package/dist/ListDetail-ALKU5VJW.css +53 -0
  43. package/dist/ListInput/index.js +4 -4
  44. package/dist/MarkdownEditor/index.js +5 -5
  45. package/dist/Menu/index.js +2 -2
  46. package/dist/MergeConflicts/index.js +5 -5
  47. package/dist/Modal/index.js +2 -2
  48. package/dist/ObjectHeader/ObjectHeader.d.ts +7 -1
  49. package/dist/ObjectHeader/index.js +1 -1
  50. package/dist/{ObjectHeader-ZOS22FKX.css → ObjectHeader-DNQWRGUK.css} +50 -0
  51. package/dist/OrgTable/index.js +3 -3
  52. package/dist/PeopleRail/index.js +2 -2
  53. package/dist/PinTile/index.js +2 -2
  54. package/dist/PresenterView/index.js +3 -3
  55. package/dist/PrincipalPicker/index.js +4 -4
  56. package/dist/PropertyList/index.js +2 -2
  57. package/dist/RichEditor/index.js +1 -1
  58. package/dist/SegmentedControl/index.js +4 -4
  59. package/dist/ShareDialog/index.js +4 -4
  60. package/dist/SheetColumnEditor/index.js +8 -8
  61. package/dist/SheetGrid/index.js +7 -7
  62. package/dist/SlideFilmstrip/index.js +4 -4
  63. package/dist/SlideNav/index.js +2 -2
  64. package/dist/Switcher/index.js +6 -6
  65. package/dist/TableCells/index.js +1 -1
  66. package/dist/Tabs/index.js +3 -3
  67. package/dist/TagsInput/index.js +3 -3
  68. package/dist/ThemeSwitcher/index.js +5 -5
  69. package/dist/ThemeToggle/index.js +2 -2
  70. package/dist/TimeWindowPicker/index.js +4 -4
  71. package/dist/TreeCanvas/index.js +3 -3
  72. package/dist/TreeGrid/index.js +2 -2
  73. package/dist/VersionCompare/index.js +5 -5
  74. package/dist/{chunk-GPWJCP3U.js → chunk-3RCHEFIL.js} +1 -1
  75. package/dist/{chunk-5BUOMF6N.js → chunk-3YTNYF2E.js} +1 -1
  76. package/dist/{chunk-D2OL3ZSS.js → chunk-4DIKLY53.js} +1 -1
  77. package/dist/{chunk-UVBHK6IU.js → chunk-524GGA67.js} +4 -4
  78. package/dist/{chunk-NURXCBCW.js → chunk-5AHDGYKN.js} +3 -3
  79. package/dist/{chunk-C7OKDYBH.js → chunk-626CB5X6.js} +3 -3
  80. package/dist/{chunk-XGBUUQDU.js → chunk-6MAQ2SVP.js} +2 -2
  81. package/dist/{chunk-ISA2O2BK.js → chunk-7CXGSS7D.js} +1 -1
  82. package/dist/{chunk-W46LPU4R.js → chunk-7SHAFLEX.js} +1 -1
  83. package/dist/{chunk-B5UHX5UC.js → chunk-7WNJLNFD.js} +2 -2
  84. package/dist/{chunk-SEC2GR2V.js → chunk-A4GFEMVI.js} +1 -1
  85. package/dist/{chunk-MMPKN7WV.js → chunk-AGNZIT3Z.js} +2 -2
  86. package/dist/{chunk-4OK4DX3V.js → chunk-BF5WV7NM.js} +1 -1
  87. package/dist/{chunk-3TXY3PJZ.js → chunk-BO7Q6JP6.js} +2 -2
  88. package/dist/{chunk-KNHUBHFX.js → chunk-BVFMLSE3.js} +3 -3
  89. package/dist/{chunk-EX22Q5SH.js → chunk-DL5ERIFF.js} +3 -3
  90. package/dist/{chunk-UXYEOWG5.js → chunk-E6HXFFWO.js} +1 -1
  91. package/dist/{chunk-2PEXZ7L4.js → chunk-ENHLVF6Q.js} +1 -1
  92. package/dist/{chunk-AXS6MBNH.js → chunk-EY7LACIR.js} +1 -1
  93. package/dist/{chunk-PEUGPAKH.js → chunk-FG243QHY.js} +1 -1
  94. package/dist/{chunk-GFYQKMQZ.js → chunk-FV6H7H5I.js} +5 -5
  95. package/dist/{chunk-IAGYPTEJ.js → chunk-FYINAYAJ.js} +1 -1
  96. package/dist/{chunk-FXBGEANQ.js → chunk-GI3S6RMM.js} +4 -4
  97. package/dist/{chunk-ZMWXE4GT.js → chunk-GPIRKHGS.js} +2 -2
  98. package/dist/{chunk-ODOJJGXH.js → chunk-HFQBMEEH.js} +18 -2
  99. package/dist/{chunk-JSWOXRRE.js → chunk-IUQQGIHL.js} +1 -1
  100. package/dist/{chunk-BH52LIY6.js → chunk-IVAR7NRW.js} +2 -2
  101. package/dist/{chunk-PFZOFAQ6.js → chunk-JF3TJUBU.js} +1 -1
  102. package/dist/{chunk-T6MXORP5.js → chunk-JGCDFMXN.js} +1 -1
  103. package/dist/{chunk-X4IXXLWM.js → chunk-KA75QPFM.js} +1 -1
  104. package/dist/{chunk-4FQT6ZAY.js → chunk-LACA4JGC.js} +23 -2
  105. package/dist/{chunk-WMXAX6VA.js → chunk-LKBZV5IT.js} +1 -1
  106. package/dist/{chunk-KWWP3D7M.js → chunk-LSRQJDGR.js} +1 -1
  107. package/dist/{chunk-FBW3Q2OY.js → chunk-MCOC3KQA.js} +1 -1
  108. package/dist/{chunk-EAEJ7CDM.js → chunk-MVGCZ655.js} +1 -1
  109. package/dist/{chunk-Y5BD4MTE.js → chunk-NBDN5JZV.js} +1 -1
  110. package/dist/{chunk-H6CEFQTR.js → chunk-NCM73C34.js} +5 -5
  111. package/dist/{chunk-6MIXD6IW.js → chunk-OJCVVCAZ.js} +1 -1
  112. package/dist/{chunk-3KYVFG47.js → chunk-ON2E46DX.js} +1 -1
  113. package/dist/{chunk-3PR65I3H.js → chunk-OVHJTOKW.js} +4 -4
  114. package/dist/{chunk-D6FEHY5G.js → chunk-PCI7ZJ6Z.js} +1 -1
  115. package/dist/{chunk-A44YHLCQ.js → chunk-PLLYOPS4.js} +2 -2
  116. package/dist/{chunk-NP2C4Y4E.js → chunk-PM3JVNRY.js} +1 -1
  117. package/dist/{chunk-BA32AVKS.js → chunk-QOP7QYUW.js} +1 -1
  118. package/dist/chunk-R5RCGD7N.js +12 -0
  119. package/dist/{chunk-6VOS2GMB.js → chunk-RRO7UEYU.js} +1 -1
  120. package/dist/chunk-SJ6DMG4R.js +39 -0
  121. package/dist/{chunk-DAERKOOG.js → chunk-TVV7XSO5.js} +1 -1
  122. package/dist/{chunk-N3TFYBN3.js → chunk-UAGDFEBG.js} +1 -1
  123. package/dist/{chunk-RFFXB3PR.js → chunk-UFXLNC2N.js} +2 -2
  124. package/dist/{chunk-2VOHUGUA.js → chunk-UO5VJHWP.js} +3 -3
  125. package/dist/{chunk-SYBYFQTY.js → chunk-W53CWWX3.js} +3 -3
  126. package/dist/{chunk-HQAGGQWJ.js → chunk-X6IJ7DAX.js} +3 -3
  127. package/dist/{chunk-CFGGE3HO.js → chunk-XP7EXNKF.js} +2 -2
  128. package/dist/{chunk-WYYCPV46.js → chunk-Z5WMCBHR.js} +3 -3
  129. package/dist/{chunk-TYONQSOK.js → chunk-ZI5G5RS7.js} +1 -1
  130. package/dist/generated/index.d.ts +2 -0
  131. package/dist/generated/index.js +93 -91
  132. package/dist/index.js +93 -91
  133. package/dist/styles.css +287 -13
  134. package/package.json +3 -3
  135. package/dist/{chunk-S3QTFUJX.js → chunk-VXCT6L3F.js} +0 -0
  136. package/dist/{chunk-SNQRGH4A.js → chunk-VZICPYGR.js} +1 -1
package/README.md CHANGED
@@ -50,9 +50,9 @@ 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`, `Tabs`, `Accordion`, `Disclosure`, `Outline` (with `useActiveHeading` and `scrollToHeading`), `TreeGrid` |
53
+ | Layout | `Container`, `Section`, `Card`, `TileGrid`, `ListDetail`, `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
- | Application shell | `AppShell` with `AppShell.Rail`, `SectionFrame` (with `SectionFrame.Nav` and `SectionFrame.Body`), `LockedLabel`, `AppShell.Topbar`, `AppShell.AccountRow` and `useAppShell`, `AuthLayout`, `SidebarNav` and `NavItem`, `BrandLockup`, `SearchTrigger`, `PageHeader`, `Toolbar`, `Stack`, `Inline`, `Spacer`, `AutoGrid`, `ErrorBoundary`, `useShortcut`, `useFullscreen`, `useIdle`, `useMediaMatch` |
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 |
57
57
  | Artifacts | `SandboxedFrame` (with `SandboxedFramePlaceholder` and `SandboxedFrameNotice`), `LinkInterstitial` and `openExternal`, `VersionTimeline`, `ShareDialog` with the role ladder (`ARTIFACT_ROLES`, `SHAREABLE_ROLES`, `roleAtLeast`), `PrincipalPicker`, `Principal` and `PrincipalAvatar`, `ArtifactCard`, `ArtifactKindGlyph` and `ArtifactPreviewGlyph` (the preview a card draws with no cover, for a cover with nothing to draw), `ArtifactBar` and `ArtifactVersionChip` (an open artifact's one slim bar), `ArtifactPanel` and `ArtifactWorkspace` (the panels it opens beside or over the artifact), `CanvasBoard` (a design's artboards and notes on a `Canvas`, with the visibility budget `liveBoards`), `CanvasToolbar` (a canvas's tool palette, with `toolForKey`), `LayersList` (the list of a canvas's items beside it, marked by the canvas's selection), `CanvasSchematic` (a design's cover, drawn from its boards' frames), `AccessDeniedCard`, `ArtifactIcon` (with `artifactIconGlyph` and `ARTIFACT_ICON_WORDS`), the native gallery covers (`DocCover`, `SheetCover`, `DashboardCover`), `MergeConflicts`, the dashboard pieces (`WidgetFrame`, `DatasetSource` and `DatasetSourceList`), and `FrameProtocol` (the wire between a host page and an embedded artifact, with no React in it), `ArtifactNameCell` and `ArtifactAccessLabel` (with `ArtifactAccessGlyph`) for a list of artifacts |
58
58
  | Sheets | `SheetGrid`, the cells on their own (`CheckboxCell`, `TextCell`, `LongTextCell`, `NumberCell`, `SelectCell`, `MultiSelectCell`, `PersonCell`, `StatusCell`, `DateCell`, `UrlCell`, `RatingCell`, and `SheetCell` for any type), `ChangeMark`, and `SheetModel` (every rule a sheet is drawn from, with no React in it: values, parsing, the keyboard model, TSV, the pending edits of D23) |
@@ -204,6 +204,26 @@ 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.43.0
208
+
209
+ The parts of the engine's Company › Integrations page, a directory of everything a company works in beside the detail of the one chosen.
210
+
211
+ **`DirectoryList` is a directory in named groups**: each line a link to the item's own page with its mark, its label, a quieter hint under it (`hint`, the app a product belongs to) and its state where it has one (`status`, a status dot or a pill), the chosen line `aria-current="page"` on the selected ground. It is a navigation landmark of lists under headings (`headingLevel`), and it fills the height it is given: the groups scroll on their own and the `foot` holds the bottom of the column, one small step under them with one hairline above it, for one fact about the whole list such as an address.
212
+
213
+ **`ListDetail` lays a list beside the detail of what is chosen in it**, each scrolling on its own in the height it is given (an application shell's `fill`), the list column `--crewlet-list-detail-list` wide (17rem by default) with a hairline between the two. Below 640px it is one pane, the one `showing` names (`list` or `detail`), on a page that scrolls as any other.
214
+
215
+ **`ObjectHeader` takes a `mark`**: the object's own mark, drawn on a plate the catalogue tile's well at one and a half rows, beside the column the rest of the header keeps (a row at `size="peek"` and on a phone). A header without one is unchanged.
216
+
217
+ **`@crewlethq/icons` adds `ProductMark`**, the marks of the services built into Crewlet (`works`, `knowledge`, `chat`) beside `VendorMark`, with `soon` for a product that has not shipped, drawn hollow rather than grey. See the icons README.
218
+
219
+ ## Changes in 0.42.0
220
+
221
+ **`IconButtonLink` is an icon-only link** drawn as an `IconButton`: a place reached by its glyph, such as Settings beside the reader's own row in a rail's foot. It is a real anchor (`href`), named and titled by its `label`, and `current` marks the page the reader is on with `aria-current="page"` and a nav row's selected treatment, the lifted ground inside the default hairline, drawn on the square's own transparent boundary so nothing moves; its ring then covers that edge.
222
+
223
+ **The rail's search field is a row's width.** Its edges are a nav row's highlight edges (the gutter in from each side), and its glyph and shortcut stay on the rows' content columns through its pad (`--crewlet-rail-field-pad` is the row's pad less the field's edge). It keeps the compact step and the one-step gap to the nav.
224
+
225
+ **The account row's words take the room in a rail's foot.** The avatar keeps the nav's glyph-to-word gap, so the name starts on the nav's word line, and every gap after the name is smaller: the menu's chevron stands one step off the words, the link ends half a step after it, and the controls beside the link are half a step apart and half a step off it. With two controls beside it (Settings and Preferences), the name and the detail keep 110px where the same row with the earlier gaps kept 98px.
226
+
207
227
  ## Changes in 0.41.1
208
228
 
209
229
  **The rail's search field is compact and stands on the nav's content columns** (`SearchTrigger variant="rail"` in the `AppShell.Rail` search slot). It is 26px tall (the small control step, never under the 24px target) where it was 34px, with 6px inside each end where it had 10px. Its glyph stays on the nav's glyph column, and its shortcut now ends where a row's words end, so the field is 210px wide in a 236px rail where it ran 219px from gutter to gutter. The slot names the pad (`--crewlet-rail-field-pad`), so its inset and the field's pad are one measure; outside the slot the field keeps the trigger's own pad. The slot no longer adds its own 12px under the field, so the nav's top inset (8px) is the one gap between the field and the first row, where it was 20px. The rail's rows start 20px higher. A label longer than the field still truncates before the shortcut does.
@@ -1,16 +1,16 @@
1
- export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-3TXY3PJZ.js';
1
+ export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-BO7Q6JP6.js';
2
2
  import '../chunk-AUQPBL4O.js';
3
3
  import '../chunk-3TFDQLW3.js';
4
4
  import '../chunk-OGXHZHRX.js';
5
- import '../chunk-ISA2O2BK.js';
6
- import '../chunk-Y5BD4MTE.js';
7
- import '../chunk-TYONQSOK.js';
5
+ import '../chunk-7CXGSS7D.js';
6
+ import '../chunk-NBDN5JZV.js';
7
+ import '../chunk-ZI5G5RS7.js';
8
8
  import '../chunk-SMBKXWML.js';
9
9
  import '../chunk-FZVJDJFN.js';
10
10
  import '../chunk-BHHIIK3M.js';
11
11
  import '../chunk-PQADV6P6.js';
12
12
  import '../chunk-OG6CL3EB.js';
13
- import '../chunk-4FQT6ZAY.js';
13
+ import '../chunk-LACA4JGC.js';
14
14
  import '../chunk-NUZHC6MM.js';
15
15
  import '../chunk-BZFWDIV6.js';
16
16
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-NURXCBCW.js';
1
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-5AHDGYKN.js';
2
2
  import '../chunk-RTPQDNW3.js';
3
- import '../chunk-D6FEHY5G.js';
3
+ import '../chunk-PCI7ZJ6Z.js';
4
4
  import '../chunk-OMV5W53A.js';
5
5
  import '../chunk-H5XTJ7GJ.js';
6
6
  import '../chunk-2YTOOH3A.js';
7
7
  import '../chunk-OG6CL3EB.js';
8
- import '../chunk-4FQT6ZAY.js';
8
+ import '../chunk-LACA4JGC.js';
9
9
  import '../chunk-NUZHC6MM.js';
10
10
  import '../chunk-BZFWDIV6.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -218,20 +218,20 @@
218
218
  }
219
219
 
220
220
  /*
221
- * THE RAIL'S FIELD ON THE NAV'S CONTENT COLUMNS, compact. Its glyph stands on
222
- * the nav's glyph column and its shortcut ends where a row's words can end:
223
- * a row's content is the gutter and the row's pad in from each edge, the
224
- * field's is the slot's inset, its own 1px edge and its pad
221
+ * THE RAIL'S FIELD IS A ROW'S WIDTH, compact: its edges are a nav row's
222
+ * highlight edges, the nav's gutter in from each side of the rail, and its
223
+ * content stands on a row's content columns through its pad
225
224
  * (`--crewlet-rail-field-pad`, which the rail variant of `SearchTrigger`
226
- * takes), so the inset at each end makes up the difference. Standing on the
227
- * rows' content rather than on their backgrounds' edges, the field is
228
- * narrower than a row, a field in the rail rather than a bar across it.
225
+ * takes): the glyph on the nav's glyph column and the shortcut ending where a
226
+ * row's words end. A row's content is the gutter and the row's pad in; the
227
+ * field's is the slot's inset, its own 1px edge and its pad, so the inset at
228
+ * each end makes up the difference, which is the gutter.
229
229
  *
230
230
  * And it is held off the nav by the nav's own top inset alone, one step, so
231
231
  * the field and the rows read as one group with the field first.
232
232
  */
233
233
  .crewlet-app-shell__rail-search {
234
- --crewlet-rail-field-pad: calc(var(--spacing-1) + var(--spacing-1) / 2);
234
+ --crewlet-rail-field-pad: calc(var(--size-nav-row-pad) - 1px);
235
235
  padding: 0 calc(var(--size-nav-gutter) + var(--size-nav-row-pad) - var(--crewlet-rail-field-pad) - 1px);
236
236
  }
237
237
 
@@ -813,22 +813,40 @@
813
813
  * whatever size of badge a caller hands the row, it is centred where a glyph
814
814
  * is, and the row takes the nav row's pad and its glyph-to-word gap.
815
815
  */
816
+ /*
817
+ * AND THE WORDS TAKE THE ROOM: the name and the detail are what the row is
818
+ * for, so every gap after the name is the half step and the menu's chevron
819
+ * stands one step off the words at least, at the link's end. The controls
820
+ * beside the link (Settings, Preferences) are half a step apart and half a
821
+ * step off the link, so a reader's name keeps the width two controls leave.
822
+ */
816
823
  .crewlet-app-shell__rail-foot .crewlet-account-row {
817
824
  --crewlet-account-row-pad: var(--spacing-0);
825
+ gap: calc(var(--spacing-1) / 2);
818
826
  }
819
827
 
820
828
  .crewlet-app-shell__rail-foot .crewlet-account-row__who {
821
829
  --crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
822
- gap: calc(var(--spacing-2) + var(--spacing-1) / 2);
830
+ gap: 0;
823
831
  /* On the foot's compact step: the two lines of name and detail with half a
824
832
  step above and below them, which still clears the avatar. */
825
833
  padding-block: calc(var(--spacing-1) / 2);
826
- padding-inline-start: var(--size-nav-row-pad);
834
+ padding-inline: var(--size-nav-row-pad) calc(var(--spacing-1) / 2);
827
835
  }
828
836
 
829
837
  .crewlet-app-shell__rail-foot .crewlet-account-row__avatar {
830
838
  justify-content: center;
831
839
  width: 14px;
840
+ /* The nav's glyph-to-word gap, so the name starts on the nav's word line. */
841
+ margin-inline-end: calc(var(--spacing-2) + var(--spacing-1) / 2);
842
+ }
843
+
844
+ .crewlet-app-shell__rail-foot .crewlet-account-row__text {
845
+ margin-inline-end: var(--spacing-1);
846
+ }
847
+
848
+ .crewlet-app-shell__rail-foot .crewlet-account-row__actions {
849
+ gap: calc(var(--spacing-1) / 2);
832
850
  }
833
851
 
834
852
  /* The row as the reader's menu button: a button drawn as the link is. */
@@ -1,5 +1,5 @@
1
- export { ArrangeFrame, useGridResize } from '../chunk-WMXAX6VA.js';
1
+ export { ArrangeFrame, useGridResize } from '../chunk-LKBZV5IT.js';
2
+ import '../chunk-LACA4JGC.js';
2
3
  import '../chunk-RSAQOKH3.js';
3
- import '../chunk-4FQT6ZAY.js';
4
4
  import '../chunk-BZFWDIV6.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
- export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-ZMWXE4GT.js';
1
+ export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-GPIRKHGS.js';
2
2
  import '../chunk-A722MUNR.js';
3
3
  import '../chunk-XJ2QEBMM.js';
4
- import '../chunk-AXS6MBNH.js';
5
- import '../chunk-TYONQSOK.js';
4
+ import '../chunk-EY7LACIR.js';
5
+ import '../chunk-ZI5G5RS7.js';
6
6
  import '../chunk-PQADV6P6.js';
7
- import '../chunk-RSAQOKH3.js';
8
- import '../chunk-4FQT6ZAY.js';
7
+ import '../chunk-LACA4JGC.js';
9
8
  import '../chunk-NUZHC6MM.js';
9
+ import '../chunk-RSAQOKH3.js';
10
10
  import '../chunk-BZFWDIV6.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-2VOHUGUA.js';
1
+ export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-UO5VJHWP.js';
2
2
  import '../chunk-OOC7Q67K.js';
3
- import '../chunk-4OK4DX3V.js';
4
- import '../chunk-X4IXXLWM.js';
3
+ import '../chunk-BF5WV7NM.js';
4
+ import '../chunk-KA75QPFM.js';
5
5
  import '../chunk-WIATRXEJ.js';
6
6
  import '../chunk-EGMQURBR.js';
7
7
  import '../chunk-I33UIUZD.js';
@@ -9,12 +9,12 @@ 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-D6FEHY5G.js';
12
+ import '../chunk-PCI7ZJ6Z.js';
13
13
  import '../chunk-OMV5W53A.js';
14
14
  import '../chunk-H5XTJ7GJ.js';
15
15
  import '../chunk-2YTOOH3A.js';
16
16
  import '../chunk-OG6CL3EB.js';
17
- import '../chunk-4FQT6ZAY.js';
17
+ import '../chunk-LACA4JGC.js';
18
18
  import '../chunk-NUZHC6MM.js';
19
19
  import '../chunk-BZFWDIV6.js';
20
20
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- export { ARTIFACT_PANEL_LABELS, ArtifactPanel, ArtifactWorkspace } from '../chunk-Y5BD4MTE.js';
1
+ export { ARTIFACT_PANEL_LABELS, ArtifactPanel, ArtifactWorkspace } from '../chunk-NBDN5JZV.js';
2
2
  import '../chunk-PQADV6P6.js';
3
- import '../chunk-4FQT6ZAY.js';
3
+ import '../chunk-LACA4JGC.js';
4
4
  import '../chunk-BZFWDIV6.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,20 +1,20 @@
1
- export { AvatarPicker } from '../chunk-A44YHLCQ.js';
2
- import '../chunk-BA32AVKS.js';
1
+ export { AvatarPicker } from '../chunk-PLLYOPS4.js';
2
+ import '../chunk-QOP7QYUW.js';
3
3
  import '../chunk-KHJIEPZV.js';
4
4
  import '../chunk-AYKXMIOR.js';
5
- import '../chunk-SNQRGH4A.js';
6
- import '../chunk-4OK4DX3V.js';
7
- import '../chunk-X4IXXLWM.js';
5
+ import '../chunk-VZICPYGR.js';
6
+ import '../chunk-PZKHBB7D.js';
7
+ import '../chunk-BF5WV7NM.js';
8
+ import '../chunk-KA75QPFM.js';
8
9
  import '../chunk-WIATRXEJ.js';
9
10
  import '../chunk-EGMQURBR.js';
10
- import '../chunk-PZKHBB7D.js';
11
11
  import '../chunk-BHHIIK3M.js';
12
- import '../chunk-D6FEHY5G.js';
12
+ import '../chunk-PCI7ZJ6Z.js';
13
13
  import '../chunk-OMV5W53A.js';
14
14
  import '../chunk-H5XTJ7GJ.js';
15
15
  import '../chunk-2YTOOH3A.js';
16
16
  import '../chunk-OG6CL3EB.js';
17
- import '../chunk-4FQT6ZAY.js';
17
+ import '../chunk-LACA4JGC.js';
18
18
  import '../chunk-NUZHC6MM.js';
19
19
  import '../chunk-BZFWDIV6.js';
20
20
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
- export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-DAERKOOG.js';
1
+ export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-TVV7XSO5.js';
2
2
  import '../chunk-LM3ISVJA.js';
3
3
  import '../chunk-I33UIUZD.js';
4
4
  import '../chunk-SMBKXWML.js';
5
5
  import '../chunk-OMV5W53A.js';
6
6
  import '../chunk-H5XTJ7GJ.js';
7
7
  import '../chunk-OG6CL3EB.js';
8
- import '../chunk-4FQT6ZAY.js';
8
+ import '../chunk-LACA4JGC.js';
9
9
  import '../chunk-NUZHC6MM.js';
10
10
  import '../chunk-BZFWDIV6.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,15 +1,15 @@
1
- export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-C7OKDYBH.js';
1
+ export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-626CB5X6.js';
2
2
  import '../chunk-5SZGKSGL.js';
3
- import '../chunk-B5UHX5UC.js';
3
+ import '../chunk-7WNJLNFD.js';
4
4
  import '../chunk-NR4CPM4T.js';
5
- import '../chunk-DAERKOOG.js';
5
+ import '../chunk-TVV7XSO5.js';
6
6
  import '../chunk-LM3ISVJA.js';
7
7
  import '../chunk-I33UIUZD.js';
8
8
  import '../chunk-SMBKXWML.js';
9
9
  import '../chunk-OMV5W53A.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
11
  import '../chunk-OG6CL3EB.js';
12
- import '../chunk-4FQT6ZAY.js';
12
+ import '../chunk-LACA4JGC.js';
13
13
  import '../chunk-NUZHC6MM.js';
14
14
  import '../chunk-BZFWDIV6.js';
15
15
  import '../chunk-ODEQTPFM.js';
@@ -1,13 +1,13 @@
1
- export { CanvasToolbar, toolForKey } from '../chunk-B5UHX5UC.js';
1
+ export { CanvasToolbar, toolForKey } from '../chunk-7WNJLNFD.js';
2
2
  import '../chunk-NR4CPM4T.js';
3
- import '../chunk-DAERKOOG.js';
3
+ import '../chunk-TVV7XSO5.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
5
  import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-SMBKXWML.js';
7
7
  import '../chunk-OMV5W53A.js';
8
8
  import '../chunk-H5XTJ7GJ.js';
9
9
  import '../chunk-OG6CL3EB.js';
10
- import '../chunk-4FQT6ZAY.js';
10
+ import '../chunk-LACA4JGC.js';
11
11
  import '../chunk-NUZHC6MM.js';
12
12
  import '../chunk-BZFWDIV6.js';
13
13
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import '../chunk-3L5NHASN.js';
2
- export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-SNQRGH4A.js';
3
- import '../chunk-EGMQURBR.js';
2
+ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-VZICPYGR.js';
4
3
  import '../chunk-PZKHBB7D.js';
4
+ import '../chunk-EGMQURBR.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { Checkbox, CheckboxGroup } from '../chunk-AXS6MBNH.js';
2
- import '../chunk-TYONQSOK.js';
1
+ export { Checkbox, CheckboxGroup } from '../chunk-EY7LACIR.js';
2
+ import '../chunk-ZI5G5RS7.js';
3
3
  import '../chunk-PQADV6P6.js';
4
- import '../chunk-4FQT6ZAY.js';
4
+ import '../chunk-LACA4JGC.js';
5
5
  import '../chunk-NUZHC6MM.js';
6
6
  import '../chunk-BZFWDIV6.js';
7
7
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { CodeBlock } from '../chunk-SEC2GR2V.js';
2
- import '../chunk-W46LPU4R.js';
1
+ export { CodeBlock } from '../chunk-A4GFEMVI.js';
2
+ import '../chunk-7SHAFLEX.js';
3
3
  import '../chunk-STJ7QBC3.js';
4
4
  import '../chunk-DTIW4CHZ.js';
5
5
  import '../chunk-OG6CL3EB.js';
6
- import '../chunk-4FQT6ZAY.js';
6
+ import '../chunk-LACA4JGC.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { Combobox } from '../chunk-EAEJ7CDM.js';
1
+ export { Combobox } from '../chunk-MVGCZ655.js';
2
2
  import '../chunk-7KHM2FZH.js';
3
- import '../chunk-TYONQSOK.js';
3
+ import '../chunk-ZI5G5RS7.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-H5XTJ7GJ.js';
6
6
  import '../chunk-2YTOOH3A.js';
7
- import '../chunk-4FQT6ZAY.js';
7
+ import '../chunk-LACA4JGC.js';
8
8
  import '../chunk-NUZHC6MM.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { CommandPalette } from '../chunk-XGBUUQDU.js';
2
- import '../chunk-IAGYPTEJ.js';
1
+ export { CommandPalette } from '../chunk-6MAQ2SVP.js';
2
+ import '../chunk-FYINAYAJ.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
- import '../chunk-TYONQSOK.js';
4
+ import '../chunk-ZI5G5RS7.js';
5
5
  import '../chunk-SMBKXWML.js';
6
6
  import '../chunk-BHHIIK3M.js';
7
7
  import '../chunk-PQADV6P6.js';
@@ -9,7 +9,7 @@ import '../chunk-OMV5W53A.js';
9
9
  import '../chunk-H5XTJ7GJ.js';
10
10
  import '../chunk-2YTOOH3A.js';
11
11
  import '../chunk-OG6CL3EB.js';
12
- import '../chunk-4FQT6ZAY.js';
12
+ import '../chunk-LACA4JGC.js';
13
13
  import '../chunk-NUZHC6MM.js';
14
14
  import '../chunk-BZFWDIV6.js';
15
15
  import '../chunk-ODEQTPFM.js';
@@ -1,17 +1,17 @@
1
- export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-MMPKN7WV.js';
1
+ export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-AGNZIT3Z.js';
2
2
  import '../chunk-CI3VPIJN.js';
3
3
  import '../chunk-3CZ7XAVY.js';
4
4
  import '../chunk-EUCC37WY.js';
5
5
  import '../chunk-5AQBPHZD.js';
6
6
  import '../chunk-PZKHBB7D.js';
7
7
  import '../chunk-PWG3VHRQ.js';
8
- import '../chunk-ISA2O2BK.js';
9
- import '../chunk-TYONQSOK.js';
8
+ import '../chunk-7CXGSS7D.js';
9
+ import '../chunk-ZI5G5RS7.js';
10
10
  import '../chunk-SMBKXWML.js';
11
11
  import '../chunk-BHHIIK3M.js';
12
12
  import '../chunk-PQADV6P6.js';
13
13
  import '../chunk-OG6CL3EB.js';
14
- import '../chunk-4FQT6ZAY.js';
14
+ import '../chunk-LACA4JGC.js';
15
15
  import '../chunk-NUZHC6MM.js';
16
16
  import '../chunk-BZFWDIV6.js';
17
17
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { COMPOSER_COUNTER_AT, Composer } from '../chunk-ISA2O2BK.js';
2
- import '../chunk-TYONQSOK.js';
1
+ export { COMPOSER_COUNTER_AT, Composer } from '../chunk-7CXGSS7D.js';
2
+ import '../chunk-ZI5G5RS7.js';
3
3
  import '../chunk-SMBKXWML.js';
4
4
  import '../chunk-PQADV6P6.js';
5
- import '../chunk-4FQT6ZAY.js';
5
+ import '../chunk-LACA4JGC.js';
6
6
  import '../chunk-NUZHC6MM.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { ConfirmField, confirmMatches } from '../chunk-PEUGPAKH.js';
1
+ export { ConfirmField, confirmMatches } from '../chunk-FG243QHY.js';
2
2
  import '../chunk-5CLW2CXT.js';
3
- import '../chunk-TYONQSOK.js';
3
+ import '../chunk-ZI5G5RS7.js';
4
4
  import '../chunk-PQADV6P6.js';
5
- import '../chunk-4FQT6ZAY.js';
5
+ import '../chunk-LACA4JGC.js';
6
6
  import '../chunk-NUZHC6MM.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { CopyButton, Copyable } from '../chunk-W46LPU4R.js';
1
+ export { CopyButton, Copyable } from '../chunk-7SHAFLEX.js';
2
2
  import '../chunk-STJ7QBC3.js';
3
3
  import '../chunk-DTIW4CHZ.js';
4
4
  import '../chunk-OG6CL3EB.js';
5
- import '../chunk-4FQT6ZAY.js';
5
+ import '../chunk-LACA4JGC.js';
6
6
  import '../chunk-BZFWDIV6.js';
7
7
  import '../chunk-ODEQTPFM.js';
@@ -1,17 +1,17 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-FXBGEANQ.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-GI3S6RMM.js';
2
2
  import '../chunk-STJ7QBC3.js';
3
3
  import '../chunk-DTIW4CHZ.js';
4
- import '../chunk-IAGYPTEJ.js';
5
- import '../chunk-AXS6MBNH.js';
4
+ import '../chunk-FYINAYAJ.js';
5
+ import '../chunk-EY7LACIR.js';
6
6
  import '../chunk-EUCC37WY.js';
7
7
  import '../chunk-AV2DXAEL.js';
8
- import '../chunk-TYONQSOK.js';
8
+ import '../chunk-ZI5G5RS7.js';
9
9
  import '../chunk-PQADV6P6.js';
10
- import '../chunk-D6FEHY5G.js';
10
+ import '../chunk-PCI7ZJ6Z.js';
11
11
  import '../chunk-OMV5W53A.js';
12
12
  import '../chunk-H5XTJ7GJ.js';
13
13
  import '../chunk-OG6CL3EB.js';
14
- import '../chunk-4FQT6ZAY.js';
14
+ import '../chunk-LACA4JGC.js';
15
15
  import '../chunk-NUZHC6MM.js';
16
16
  import '../chunk-BZFWDIV6.js';
17
17
  import '../chunk-ODEQTPFM.js';
@@ -1,27 +1,27 @@
1
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-H6CEFQTR.js';
1
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-NCM73C34.js';
2
2
  import '../chunk-HOXGBLEY.js';
3
- import '../chunk-RFFXB3PR.js';
4
- import '../chunk-FXBGEANQ.js';
3
+ import '../chunk-GI3S6RMM.js';
4
+ import '../chunk-UFXLNC2N.js';
5
5
  import '../chunk-STJ7QBC3.js';
6
6
  import '../chunk-DTIW4CHZ.js';
7
- import '../chunk-IAGYPTEJ.js';
7
+ import '../chunk-FYINAYAJ.js';
8
8
  import '../chunk-7KHM2FZH.js';
9
- import '../chunk-GXQ3B46I.js';
10
9
  import '../chunk-KHJIEPZV.js';
10
+ import '../chunk-GXQ3B46I.js';
11
11
  import '../chunk-NR4CPM4T.js';
12
- import '../chunk-AXS6MBNH.js';
12
+ import '../chunk-EY7LACIR.js';
13
13
  import '../chunk-3CZ7XAVY.js';
14
14
  import '../chunk-EUCC37WY.js';
15
15
  import '../chunk-AV2DXAEL.js';
16
- import '../chunk-TYONQSOK.js';
16
+ import '../chunk-ZI5G5RS7.js';
17
17
  import '../chunk-SMBKXWML.js';
18
18
  import '../chunk-BHHIIK3M.js';
19
19
  import '../chunk-PQADV6P6.js';
20
- import '../chunk-D6FEHY5G.js';
20
+ import '../chunk-PCI7ZJ6Z.js';
21
21
  import '../chunk-OMV5W53A.js';
22
22
  import '../chunk-H5XTJ7GJ.js';
23
23
  import '../chunk-OG6CL3EB.js';
24
- import '../chunk-4FQT6ZAY.js';
24
+ import '../chunk-LACA4JGC.js';
25
25
  import '../chunk-NUZHC6MM.js';
26
26
  import '../chunk-BZFWDIV6.js';
27
27
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
1
  export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-HQJ24WPM.js';
2
2
  import '../chunk-KYIAFNU7.js';
3
- import '../chunk-WIATRXEJ.js';
4
3
  import '../chunk-3CZ7XAVY.js';
5
4
  import '../chunk-EUCC37WY.js';
5
+ import '../chunk-WIATRXEJ.js';
6
6
  import '../chunk-2YTOOH3A.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,10 +1,10 @@
1
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-RFFXB3PR.js';
2
- import '../chunk-GXQ3B46I.js';
1
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-UFXLNC2N.js';
3
2
  import '../chunk-KHJIEPZV.js';
3
+ import '../chunk-GXQ3B46I.js';
4
4
  import '../chunk-OMV5W53A.js';
5
5
  import '../chunk-H5XTJ7GJ.js';
6
6
  import '../chunk-OG6CL3EB.js';
7
- import '../chunk-4FQT6ZAY.js';
7
+ import '../chunk-LACA4JGC.js';
8
8
  import '../chunk-NUZHC6MM.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,55 @@
1
+ import { type MouseEventHandler, type ReactNode } from 'react';
2
+ import { type HeadingLevel } from '../utils/headingLevel.js';
3
+ export interface DirectoryItem {
4
+ /** Unique within the list. */
5
+ key: string;
6
+ /** Where the line goes: the item's own page. */
7
+ href: string;
8
+ /** The item's mark: a vendor's, a product's. Decorative, since the label names it. */
9
+ mark?: ReactNode;
10
+ label: ReactNode;
11
+ /** A quieter line under the label: the app a product belongs to. */
12
+ hint?: ReactNode;
13
+ /** The item's state where it has one: a status dot and word, or a pill. */
14
+ status?: ReactNode;
15
+ /** The item the page is showing. */
16
+ selected?: boolean | undefined;
17
+ /** For an application that routes in place of the browser. */
18
+ onClick?: MouseEventHandler<HTMLAnchorElement> | undefined;
19
+ }
20
+ export interface DirectoryGroup {
21
+ /** Unique within the list. */
22
+ key: string;
23
+ label: ReactNode;
24
+ items: readonly DirectoryItem[];
25
+ }
26
+ export interface DirectoryListProps {
27
+ /** What the list is, for a screen reader's landmark: "Integrations". */
28
+ label: string;
29
+ groups: readonly DirectoryGroup[];
30
+ /**
31
+ * One quiet fact that belongs to the whole list, held at its foot: it stays
32
+ * at the bottom of the column while the groups scroll above it.
33
+ */
34
+ foot?: ReactNode;
35
+ /** The level of each group's heading; the level the list stands at by default. */
36
+ headingLevel?: HeadingLevel | undefined;
37
+ className?: string | undefined;
38
+ }
39
+ /**
40
+ * A directory: everything of one kind, in named groups, each line a link to
41
+ * the item's own page, beside which a page shows the one chosen.
42
+ *
43
+ * A NAVIGATION LANDMARK of lists under headings, so a screen reader can jump
44
+ * group to group and is told how many lines each holds. The chosen line is
45
+ * `aria-current="page"` and drawn on the selected ground. A line carries its
46
+ * mark, its label (and a quieter hint under it) and its state where it has
47
+ * one; a line with no state says nothing rather than "none".
48
+ *
49
+ * IT FILLS THE HEIGHT IT IS GIVEN. The groups take the room and scroll on
50
+ * their own when they outgrow it, and the foot holds the bottom, one small
51
+ * step under them, so a fact about the whole list (an address, a count) is in
52
+ * the same place however long the list is. Placed in a column of a page that
53
+ * scrolls as a whole, it is as tall as its lines and the foot ends it.
54
+ */
55
+ export declare function DirectoryList({ label, groups, foot, headingLevel, className }: DirectoryListProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './DirectoryList.css';
2
+ export { DirectoryList } from './DirectoryList.js';
3
+ export type { DirectoryGroup, DirectoryItem, DirectoryListProps } from './DirectoryList.js';
@@ -0,0 +1,3 @@
1
+ export { DirectoryList } from '../chunk-SJ6DMG4R.js';
2
+ import '../chunk-PQADV6P6.js';
3
+ import '../chunk-ODEQTPFM.js';