@crewlethq/ui 0.46.0 → 0.48.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 (67) hide show
  1. package/README.md +17 -0
  2. package/dist/AgentHandoffPanel/index.js +3 -3
  3. package/dist/AppShell/AccountRow.d.ts +4 -1
  4. package/dist/AppShell/index.js +1 -1
  5. package/dist/{AppShell-TSACKAU7.css → AppShell-ZRTGPLAF.css} +28 -19
  6. package/dist/ArrangeList/index.js +3 -3
  7. package/dist/AvatarPicker/index.js +2 -2
  8. package/dist/Canvas/Canvas.d.ts +4 -7
  9. package/dist/Canvas/index.js +1 -1
  10. package/dist/{Canvas-VUG2HLZK.css → Canvas-4QJHVLJ4.css} +12 -10
  11. package/dist/CanvasBoard/CanvasBoard.d.ts +2 -2
  12. package/dist/CanvasBoard/index.js +3 -3
  13. package/dist/{CanvasBoard-TS4P356F.css → CanvasBoard-JMYNIAHK.css} +4 -4
  14. package/dist/CanvasToolbar/index.js +2 -2
  15. package/dist/Checkbox/index.js +2 -2
  16. package/dist/Combobox/index.js +2 -2
  17. package/dist/CommandPalette/index.js +2 -2
  18. package/dist/CommentThread/index.js +3 -3
  19. package/dist/Composer/index.js +2 -2
  20. package/dist/ConfirmField/index.js +2 -2
  21. package/dist/DataTable/index.js +3 -3
  22. package/dist/DataView/index.js +4 -4
  23. package/dist/DocTabsEditor/index.js +2 -2
  24. package/dist/{Editor-6FXHMW64.js → Editor-MLGK3KOG.js} +1 -1
  25. package/dist/Input/FormField.d.ts +10 -1
  26. package/dist/Input/index.d.ts +1 -0
  27. package/dist/Input/index.js +1 -1
  28. package/dist/ListInput/index.js +2 -2
  29. package/dist/{ListInput-DP2CSJ22.css → ListInput-WUP2YITQ.css} +29 -0
  30. package/dist/PresenterView/index.js +2 -2
  31. package/dist/PrincipalPicker/index.js +3 -3
  32. package/dist/RichEditor/index.js +1 -1
  33. package/dist/SheetColumnEditor/index.js +3 -3
  34. package/dist/SheetGrid/index.js +2 -2
  35. package/dist/Switcher/index.js +2 -2
  36. package/dist/TimeWindowPicker/index.js +2 -2
  37. package/dist/TreeCanvas/index.js +2 -2
  38. package/dist/{chunk-HBSR5DL6.js → chunk-32TGEMQQ.js} +1 -1
  39. package/dist/{chunk-2KQR6JKE.js → chunk-3Q7LWLHY.js} +1 -1
  40. package/dist/{chunk-RCKRJXFV.js → chunk-627KFRON.js} +1 -1
  41. package/dist/{chunk-2LPNWAN6.js → chunk-6EBGPCAW.js} +1 -1
  42. package/dist/{chunk-O6H5XXVK.js → chunk-6R5BSA36.js} +1 -1
  43. package/dist/{chunk-32MTQ6DN.js → chunk-7JED2NYP.js} +1 -1
  44. package/dist/{chunk-PWZT6CZY.js → chunk-AS2BMY3E.js} +1 -1
  45. package/dist/{chunk-RRPQMMCZ.js → chunk-CWKWMIIJ.js} +1 -1
  46. package/dist/{chunk-3YTNYF2E.js → chunk-CXVQMUEN.js} +1 -1
  47. package/dist/{chunk-TVV7XSO5.js → chunk-D7Q5MQRF.js} +3 -10
  48. package/dist/{chunk-Z734SV4E.js → chunk-EXRRTKWT.js} +4 -1
  49. package/dist/{chunk-RWET7W22.js → chunk-F57N6ZJG.js} +1 -1
  50. package/dist/{chunk-SQZEVWVC.js → chunk-ICVS3U4S.js} +4 -4
  51. package/dist/{chunk-RWWLVDRE.js → chunk-JWNYI7UD.js} +1 -1
  52. package/dist/{chunk-T7DXSFUX.js → chunk-LIJQT74Y.js} +1 -1
  53. package/dist/{chunk-YBJVIY5E.js → chunk-MUQJCH2Y.js} +2 -2
  54. package/dist/{chunk-KOJKX3U6.js → chunk-OHJ2R2X4.js} +2 -2
  55. package/dist/{chunk-2UVMIM2J.js → chunk-OOJTPR7N.js} +1 -1
  56. package/dist/{chunk-YR3ZURBM.js → chunk-TWZEWXNW.js} +1 -1
  57. package/dist/{chunk-RL75QTNT.js → chunk-VKFG4FLE.js} +1 -1
  58. package/dist/{chunk-626CB5X6.js → chunk-VP2ODUCC.js} +3 -3
  59. package/dist/{chunk-7WNJLNFD.js → chunk-X4NIE7CI.js} +1 -1
  60. package/dist/{chunk-KZDMAQNJ.js → chunk-ZCIL5IHU.js} +1 -1
  61. package/dist/generated/index.js +44 -44
  62. package/dist/index.js +44 -44
  63. package/dist/styles.css +77 -37
  64. package/package.json +3 -3
  65. package/dist/{chunk-ISDEXIXH.js → chunk-E6HXFFWO.js} +1 -1
  66. package/dist/{chunk-3QSKDZR5.js → chunk-EW2N4FOD.js} +1 -1
  67. package/dist/{chunk-ZZCCNVF3.js → chunk-OO7QJCJQ.js} +1 -1
package/README.md CHANGED
@@ -204,6 +204,23 @@ 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.48.0
208
+
209
+ **A canvas shows the operating system's own pointers.** `Canvas` paints the native `grab` hand on its field (and `grabbing` while a pan is in progress), and `default`, `crosshair` and `text` for the other values of `cursor`, so a chart pans under the hand a reader knows from every map and design tool, and no drawn pointer stands beside native ones. `cursor` and its four values are unchanged, and so is `CanvasBoard`'s pointer per tool.
210
+
211
+ | What changed | What a consumer does |
212
+ | --- | --- |
213
+ | `CURSORS` and `CursorName` are gone from `@crewlethq/icons/glyphs`. | Use the CSS keywords (`grab`, `grabbing`, `default`, `crosshair`, `text`). Every glyph stays, `HandGlyph` and `HandGrabGlyph` included. |
214
+ | `Canvas` no longer writes `--crewlet-canvas-cursor-pointer`, `-hand`, `-grabbing`, `-crosshair` or `-text` on its root, and nothing reads them. | A rule that read one inside a canvas names the keyword instead. |
215
+
216
+ **The account row is the one tall row in a rail's foot.** In `AppShell.Rail`'s foot, `AccountRow` stands on the large control step (`--size-control-lg`, 44px) where it stood 36px, around a column a medium badge wide (32px), and its name takes the nav's word size (13px, from 12px) with both lines on the body's leading. Pass the badge `size="md"` there (a smaller badge is centred in the same column). The badge is inset by the 6px it has above and below it rather than centred on the nav's 14px glyph column, where its ring would cross the row's edge, so the name now starts a step after the badge rather than on the nav's word line. Measured in a 236px rail with Settings and Preferences beside the link: the row is 44px (from 36.2px), the foot of an engine row and the account row 81px (from 73.2px), and the name and the detail keep 99px (from 109px). The rows above it keep the compact 26px step, and the Settings and Preferences controls, the truncation and the targets meeting across the gap are unchanged.
217
+
218
+ ## Changes in 0.47.0
219
+
220
+ **A hidden label takes no room.** `FormField` takes `hideLabel`, which hides the label or the legend as a whole element for everything but assistive technology, and `ListInput`'s `hideLabel` uses it: the legend had held hidden text and still stood a line tall, so a list under a card's title stood 21px lower than the fields beside it.
221
+
222
+ **A narrow `ListInput` gives its words the row.** Under 28rem of the list's own width a row wraps: its number and its field share the first line and its buttons stand at the end of a second, under the words. At a 390px phone the grip, the number and the three buttons had taken half of each row, so a policy wrapped at about twenty characters a line.
223
+
207
224
  ## Changes in 0.46.0
208
225
 
209
226
  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.
@@ -1,10 +1,10 @@
1
- export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-RRPQMMCZ.js';
1
+ export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-CWKWMIIJ.js';
2
2
  import '../chunk-AUQPBL4O.js';
3
3
  import '../chunk-JQ7IFSF6.js';
4
4
  import '../chunk-OGXHZHRX.js';
5
- import '../chunk-O6H5XXVK.js';
5
+ import '../chunk-6R5BSA36.js';
6
6
  import '../chunk-NBDN5JZV.js';
7
- import '../chunk-Z734SV4E.js';
7
+ import '../chunk-EXRRTKWT.js';
8
8
  import '../chunk-XCUUI7E7.js';
9
9
  import '../chunk-SMBKXWML.js';
10
10
  import '../chunk-FZVJDJFN.js';
@@ -10,7 +10,10 @@ export interface AccountRowMenu {
10
10
  items: readonly MenuEntry[];
11
11
  }
12
12
  export interface AccountRowProps {
13
- /** The reader's badge, drawn decorative: the name beside it says who it is. */
13
+ /**
14
+ * The reader's badge, drawn decorative: the name beside it says who it is.
15
+ * In a rail's foot the row is sized for a medium one (`size="md"`, 32px).
16
+ */
14
17
  avatar: ReactNode;
15
18
  /** Who the reader is. */
16
19
  name: ReactNode;
@@ -1,4 +1,4 @@
1
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-2KQR6JKE.js';
1
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-3Q7LWLHY.js';
2
2
  import '../chunk-RTPQDNW3.js';
3
3
  import '../chunk-TMM32U7D.js';
4
4
  import '../chunk-OMV5W53A.js';
@@ -239,11 +239,11 @@
239
239
  above it rather than sitting further out.
240
240
 
241
241
  THE FOOT IS THE COMPACT STEP. It holds what a reader reaches for rarely (a
242
- settings link, the engine's state, who they are), so its rows stand on the
243
- small control step (`--crewlet-rail-foot-row`, 26px, never under the 24px
244
- target) on a half-step gap and a one-step inset, where the nav above keeps
245
- its 30px rows. Only heights change: every row keeps its order, columns,
246
- glyphs and words. */
242
+ settings link, the engine's state), so its rows stand on the small control
243
+ step (`--crewlet-rail-foot-row`, 26px, never under the 24px target) on a
244
+ half-step gap and a one-step inset, where the nav above keeps its 30px
245
+ rows. The account row is the one exception (see below). Only heights
246
+ change: every row keeps its order, columns, glyphs and words. */
247
247
  .crewlet-app-shell__rail-foot {
248
248
  --crewlet-rail-foot-gap: calc(var(--spacing-1) / 2);
249
249
  --crewlet-rail-foot-row: var(--size-control-sm);
@@ -805,13 +805,18 @@
805
805
  * In the rail's foot, the account row reaches up across its own padding to
806
806
  * half the foot's gap, to meet the row above (HitArea.css).
807
807
  *
808
- * AND IT STANDS ON THE NAV'S COLUMNS: the avatar centred on the column every
809
- * nav glyph is centred on, and the name starting on the line every nav word
810
- * starts on. On a 4px inset with an 8px gap a 26px avatar stood 2px left of
811
- * the glyphs above it and the name 2px right of their words. The avatar's box
812
- * takes a nav glyph's width (`sm`, 14px) and the badge is centred over it, so
813
- * whatever size of badge a caller hands the row, it is centred where a glyph
814
- * is, and the row takes the nav row's pad and its glyph-to-word gap.
808
+ * IT IS THE ONE TALL ROW IN THE FOOT. Who is signed in is the row a reader
809
+ * looks for, so it stands on the large control step (`--size-control-lg`,
810
+ * 44px) around a medium badge (`size="md"`, 32px), where the rows above it
811
+ * keep the compact step. The badge stands in a column of its own width
812
+ * (`--crewlet-account-row-badge`), centred in it, so a smaller badge a caller
813
+ * hands the row lands where a medium one would, and the column is inset from
814
+ * the row's edge by the 6px the badge has above and below it in the 44px row.
815
+ * A 32px badge cannot stand on the nav's 14px glyph column: centred there, its
816
+ * ring (1.5px, 2px out) would cross the row's own edge.
817
+ *
818
+ * The name takes the body's size (`--font-size-compact`, the nav's words) and
819
+ * both lines take the body's leading, a step a 36px row had no room for.
815
820
  */
816
821
  /*
817
822
  * AND THE WORDS TAKE THE ROOM: the name and the detail are what the row is
@@ -822,27 +827,31 @@
822
827
  */
823
828
  .crewlet-app-shell__rail-foot .crewlet-account-row {
824
829
  --crewlet-account-row-pad: var(--spacing-0);
830
+ --crewlet-account-row-badge: 32px;
825
831
  gap: calc(var(--spacing-1) / 2);
826
832
  }
827
833
 
828
834
  .crewlet-app-shell__rail-foot .crewlet-account-row__who {
829
835
  --crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
830
836
  gap: 0;
831
- /* On the foot's compact step: the two lines of name and detail with half a
832
- step above and below them, which still clears the avatar. */
833
- padding-block: calc(var(--spacing-1) / 2);
834
- padding-inline: var(--size-nav-row-pad) calc(var(--spacing-1) / 2);
837
+ min-height: var(--size-control-lg);
838
+ padding-block: var(--spacing-1);
839
+ padding-inline: calc(var(--spacing-1) + var(--spacing-1) / 2) calc(var(--spacing-1) / 2);
835
840
  }
836
841
 
837
842
  .crewlet-app-shell__rail-foot .crewlet-account-row__avatar {
838
843
  justify-content: center;
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);
844
+ width: var(--crewlet-account-row-badge);
845
+ margin-inline-end: var(--spacing-2);
842
846
  }
843
847
 
844
848
  .crewlet-app-shell__rail-foot .crewlet-account-row__text {
845
849
  margin-inline-end: var(--spacing-1);
850
+ line-height: var(--font-line-height-body);
851
+ }
852
+
853
+ .crewlet-app-shell__rail-foot .crewlet-account-row__name {
854
+ font-size: var(--font-size-compact);
846
855
  }
847
856
 
848
857
  .crewlet-app-shell__rail-foot .crewlet-account-row__actions {
@@ -1,8 +1,8 @@
1
- export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-T7DXSFUX.js';
1
+ export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-LIJQT74Y.js';
2
2
  import '../chunk-A722MUNR.js';
3
3
  import '../chunk-XJ2QEBMM.js';
4
- import '../chunk-RWET7W22.js';
5
- import '../chunk-Z734SV4E.js';
4
+ import '../chunk-F57N6ZJG.js';
5
+ import '../chunk-EXRRTKWT.js';
6
6
  import '../chunk-XCUUI7E7.js';
7
7
  import '../chunk-PQADV6P6.js';
8
8
  import '../chunk-RSAQOKH3.js';
@@ -1,8 +1,8 @@
1
- export { AvatarPicker } from '../chunk-3QSKDZR5.js';
1
+ export { AvatarPicker } from '../chunk-EW2N4FOD.js';
2
2
  import '../chunk-34RMTXDZ.js';
3
3
  import '../chunk-KHJIEPZV.js';
4
- import '../chunk-AYKXMIOR.js';
5
4
  import '../chunk-SNQRGH4A.js';
5
+ import '../chunk-AYKXMIOR.js';
6
6
  import '../chunk-6FVGSWLS.js';
7
7
  import '../chunk-ILFEWRLG.js';
8
8
  import '../chunk-WIATRXEJ.js';
@@ -146,6 +146,10 @@ export interface CanvasHandle {
146
146
  * wants. A surface with tools names the one its tool means: `pointer` for
147
147
  * selecting, `crosshair` for placing a thing, `text` for placing text. A pan
148
148
  * in progress always shows the closed hand, whatever the tool.
149
+ *
150
+ * Each is the operating system's own pointer (`grab`, `default`, `crosshair`,
151
+ * `text`, and `grabbing` for a pan), the hand a reader already knows from
152
+ * every map and design tool, rather than a drawing of the kit's own.
149
153
  */
150
154
  export type CanvasCursor = 'hand' | 'pointer' | 'crosshair' | 'text';
151
155
  /** Every string the canvas renders on its own. */
@@ -312,13 +316,6 @@ export interface CanvasProps {
312
316
  className?: string | undefined;
313
317
  }
314
318
  export declare function Canvas({ label, content, children, overlay, controls, controlsPlacement, controlsExtra, controlsActualSize, controlsBelow, hint, largestItemWidth, dimmed, ground, minZoom, cursor, refitOnResize, touch, labels, onReady, onViewChange, ref, className, }: CanvasProps): import("react").JSX.Element;
315
- /**
316
- * Every pointer cursor, as custom properties on the canvas's root: the field
317
- * reads the one its [CanvasCursor] names, and content inside the canvas (a
318
- * board's shield, a resize handle's neighbours) reads the same drawings
319
- * rather than the browser's own, so one pointer family runs across the whole
320
- * surface. Each falls back to its keyword where it is read.
321
- */
322
319
  /**
323
320
  * WHERE A `grid` GROUND'S DOTS FALL for a view: their pitch on screen as a
324
321
  * multiple of the dotted step, and the screen point one of them sits on.
@@ -1,4 +1,4 @@
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';
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-D7Q5MQRF.js';
2
2
  import '../chunk-LM3ISVJA.js';
3
3
  import '../chunk-I33UIUZD.js';
4
4
  import '../chunk-SMBKXWML.js';
@@ -50,7 +50,7 @@
50
50
  position: absolute;
51
51
  inset: 0;
52
52
  overflow: hidden;
53
- cursor: var(--crewlet-canvas-cursor-hand, grab);
53
+ cursor: grab;
54
54
  /* Until it is tapped, one finger belongs to the page's vertical scroll. */
55
55
  touch-action: pan-y;
56
56
  }
@@ -69,27 +69,29 @@
69
69
  }
70
70
 
71
71
  /*
72
- * THE POINTER SAYS WHAT A PRESS WILL DO. The drawings are the component's
73
- * (`CURSORS`, written on the root), each falling back to its keyword. A pan in
74
- * progress shows the closed hand whatever the tool, and it is set on the whole
75
- * canvas rather than the field, so a drag that crosses a board or a note keeps
76
- * the hand it started with.
72
+ * THE POINTER SAYS WHAT A PRESS WILL DO, in the operating system's own
73
+ * pointers: the open hand a reader knows from every map and design tool, the
74
+ * arrow, the crosshair and the text beam. A drawing of the kit's own beside
75
+ * them would be the one pointer on the screen that looks unlike the rest. A
76
+ * pan in progress shows the closed hand whatever the tool, and it is set on
77
+ * the whole canvas rather than the field, so a drag that crosses a board or a
78
+ * note keeps the hand it started with.
77
79
  */
78
80
  .crewlet-canvas[data-cursor='pointer'] .crewlet-canvas__viewport {
79
- cursor: var(--crewlet-canvas-cursor-pointer, default);
81
+ cursor: default;
80
82
  }
81
83
 
82
84
  .crewlet-canvas[data-cursor='crosshair'] .crewlet-canvas__viewport {
83
- cursor: var(--crewlet-canvas-cursor-crosshair, crosshair);
85
+ cursor: crosshair;
84
86
  }
85
87
 
86
88
  .crewlet-canvas[data-cursor='text'] .crewlet-canvas__viewport {
87
- cursor: var(--crewlet-canvas-cursor-text, text);
89
+ cursor: text;
88
90
  }
89
91
 
90
92
  .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport,
91
93
  .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport * {
92
- cursor: var(--crewlet-canvas-cursor-grabbing, grabbing);
94
+ cursor: grabbing;
93
95
  user-select: none;
94
96
  }
95
97
 
@@ -19,8 +19,8 @@
19
19
  * there, selected, and hands back the Move tool. One that can create notes
20
20
  * adds Text (`T`) and Sticky (`S`): a click on the field places one there,
21
21
  * opens it for typing, and hands back the Move tool. The pointer is always
22
- * the tool's (the Canvas cursors), and a pan in progress is always the closed
23
- * hand.
22
+ * the tool's (the operating system's own, through the Canvas), and a pan in
23
+ * progress is always the closed hand.
24
24
  *
25
25
  * A PAGE INSIDE A BOARD NEVER TAKES THE CANVAS'S POINTER BY SURPRISE. A live
26
26
  * board is covered by a shield that pans the canvas like the field around it;
@@ -1,8 +1,8 @@
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';
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-VP2ODUCC.js';
2
2
  import '../chunk-5SZGKSGL.js';
3
- import '../chunk-7WNJLNFD.js';
3
+ import '../chunk-X4NIE7CI.js';
4
4
  import '../chunk-NR4CPM4T.js';
5
- import '../chunk-TVV7XSO5.js';
5
+ import '../chunk-D7Q5MQRF.js';
6
6
  import '../chunk-LM3ISVJA.js';
7
7
  import '../chunk-I33UIUZD.js';
8
8
  import '../chunk-SMBKXWML.js';
@@ -124,7 +124,7 @@
124
124
  .crewlet-canvas-board__shield {
125
125
  position: absolute;
126
126
  inset: 0;
127
- cursor: var(--crewlet-canvas-cursor-pointer, default);
127
+ cursor: default;
128
128
  }
129
129
 
130
130
  /* A board that is not running draws its size, and why, at screen size. */
@@ -249,7 +249,7 @@
249
249
  line-height: var(--font-line-height-normal);
250
250
  text-overflow: ellipsis;
251
251
  white-space: nowrap;
252
- cursor: var(--crewlet-canvas-cursor-pointer, default);
252
+ cursor: default;
253
253
  }
254
254
 
255
255
  .crewlet-canvas-board__board:hover .crewlet-canvas-board__title,
@@ -265,7 +265,7 @@
265
265
  border-radius: var(--radius-md);
266
266
  background: transparent;
267
267
  font: inherit;
268
- cursor: var(--crewlet-canvas-cursor-pointer, default);
268
+ cursor: default;
269
269
  touch-action: none;
270
270
  }
271
271
 
@@ -368,7 +368,7 @@
368
368
  .crewlet-canvas-board__note {
369
369
  position: absolute;
370
370
  box-sizing: border-box;
371
- cursor: var(--crewlet-canvas-cursor-pointer, default);
371
+ cursor: default;
372
372
  }
373
373
 
374
374
  /*
@@ -1,6 +1,6 @@
1
- export { CanvasToolbar, toolForKey } from '../chunk-7WNJLNFD.js';
1
+ export { CanvasToolbar, toolForKey } from '../chunk-X4NIE7CI.js';
2
2
  import '../chunk-NR4CPM4T.js';
3
- import '../chunk-TVV7XSO5.js';
3
+ import '../chunk-D7Q5MQRF.js';
4
4
  import '../chunk-LM3ISVJA.js';
5
5
  import '../chunk-I33UIUZD.js';
6
6
  import '../chunk-SMBKXWML.js';
@@ -1,5 +1,5 @@
1
- export { Checkbox, CheckboxGroup } from '../chunk-RWET7W22.js';
2
- import '../chunk-Z734SV4E.js';
1
+ export { Checkbox, CheckboxGroup } from '../chunk-F57N6ZJG.js';
2
+ import '../chunk-EXRRTKWT.js';
3
3
  import '../chunk-XCUUI7E7.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-RSAQOKH3.js';
@@ -1,6 +1,6 @@
1
- export { Combobox } from '../chunk-2UVMIM2J.js';
1
+ export { Combobox } from '../chunk-OOJTPR7N.js';
2
2
  import '../chunk-7KHM2FZH.js';
3
- import '../chunk-Z734SV4E.js';
3
+ import '../chunk-EXRRTKWT.js';
4
4
  import '../chunk-XCUUI7E7.js';
5
5
  import '../chunk-PQADV6P6.js';
6
6
  import '../chunk-RSAQOKH3.js';
@@ -1,7 +1,7 @@
1
- export { CommandPalette } from '../chunk-YR3ZURBM.js';
1
+ export { CommandPalette } from '../chunk-TWZEWXNW.js';
2
2
  import '../chunk-6AKG2VLR.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
- import '../chunk-Z734SV4E.js';
4
+ import '../chunk-EXRRTKWT.js';
5
5
  import '../chunk-XCUUI7E7.js';
6
6
  import '../chunk-SMBKXWML.js';
7
7
  import '../chunk-BHHIIK3M.js';
@@ -1,12 +1,12 @@
1
- export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-2LPNWAN6.js';
1
+ export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-6EBGPCAW.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-O6H5XXVK.js';
9
- import '../chunk-Z734SV4E.js';
8
+ import '../chunk-6R5BSA36.js';
9
+ import '../chunk-EXRRTKWT.js';
10
10
  import '../chunk-XCUUI7E7.js';
11
11
  import '../chunk-SMBKXWML.js';
12
12
  import '../chunk-BHHIIK3M.js';
@@ -1,5 +1,5 @@
1
- export { COMPOSER_COUNTER_AT, Composer } from '../chunk-O6H5XXVK.js';
2
- import '../chunk-Z734SV4E.js';
1
+ export { COMPOSER_COUNTER_AT, Composer } from '../chunk-6R5BSA36.js';
2
+ import '../chunk-EXRRTKWT.js';
3
3
  import '../chunk-XCUUI7E7.js';
4
4
  import '../chunk-SMBKXWML.js';
5
5
  import '../chunk-PQADV6P6.js';
@@ -1,6 +1,6 @@
1
- export { ConfirmField, confirmMatches } from '../chunk-KZDMAQNJ.js';
1
+ export { ConfirmField, confirmMatches } from '../chunk-ZCIL5IHU.js';
2
2
  import '../chunk-5CLW2CXT.js';
3
- import '../chunk-Z734SV4E.js';
3
+ import '../chunk-EXRRTKWT.js';
4
4
  import '../chunk-XCUUI7E7.js';
5
5
  import '../chunk-PQADV6P6.js';
6
6
  import '../chunk-RSAQOKH3.js';
@@ -1,11 +1,11 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-PWZT6CZY.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-AS2BMY3E.js';
2
2
  import '../chunk-STJ7QBC3.js';
3
3
  import '../chunk-DTIW4CHZ.js';
4
4
  import '../chunk-6AKG2VLR.js';
5
- import '../chunk-RWET7W22.js';
5
+ import '../chunk-F57N6ZJG.js';
6
6
  import '../chunk-EUCC37WY.js';
7
7
  import '../chunk-AV2DXAEL.js';
8
- import '../chunk-Z734SV4E.js';
8
+ import '../chunk-EXRRTKWT.js';
9
9
  import '../chunk-XCUUI7E7.js';
10
10
  import '../chunk-PQADV6P6.js';
11
11
  import '../chunk-RSAQOKH3.js';
@@ -1,7 +1,7 @@
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-KOJKX3U6.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-OHJ2R2X4.js';
2
2
  import '../chunk-HOXGBLEY.js';
3
+ import '../chunk-AS2BMY3E.js';
3
4
  import '../chunk-UFXLNC2N.js';
4
- import '../chunk-PWZT6CZY.js';
5
5
  import '../chunk-STJ7QBC3.js';
6
6
  import '../chunk-DTIW4CHZ.js';
7
7
  import '../chunk-6AKG2VLR.js';
@@ -9,11 +9,11 @@ import '../chunk-7KHM2FZH.js';
9
9
  import '../chunk-NR4CPM4T.js';
10
10
  import '../chunk-KHJIEPZV.js';
11
11
  import '../chunk-GXQ3B46I.js';
12
- import '../chunk-RWET7W22.js';
12
+ import '../chunk-F57N6ZJG.js';
13
13
  import '../chunk-3CZ7XAVY.js';
14
14
  import '../chunk-EUCC37WY.js';
15
15
  import '../chunk-AV2DXAEL.js';
16
- import '../chunk-Z734SV4E.js';
16
+ import '../chunk-EXRRTKWT.js';
17
17
  import '../chunk-XCUUI7E7.js';
18
18
  import '../chunk-SMBKXWML.js';
19
19
  import '../chunk-BHHIIK3M.js';
@@ -1,6 +1,6 @@
1
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-RCKRJXFV.js';
1
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-627KFRON.js';
2
2
  import '../chunk-XJ2QEBMM.js';
3
- import '../chunk-Z734SV4E.js';
3
+ import '../chunk-EXRRTKWT.js';
4
4
  import '../chunk-XCUUI7E7.js';
5
5
  import '../chunk-PQADV6P6.js';
6
6
  import '../chunk-RSAQOKH3.js';
@@ -2,7 +2,7 @@ import { richEditorLabels } from './chunk-CSQTDGTS.js';
2
2
  import { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
3
3
  import { safeHref, MARKDOWN_CALLOUT_TONES } from './chunk-BAKPMH3S.js';
4
4
  import { Toolbar } from './chunk-NR4CPM4T.js';
5
- import { FormField, Input } from './chunk-Z734SV4E.js';
5
+ import { FormField, Input } from './chunk-EXRRTKWT.js';
6
6
  import './chunk-XCUUI7E7.js';
7
7
  import './chunk-PQADV6P6.js';
8
8
  import './chunk-RSAQOKH3.js';
@@ -47,6 +47,15 @@ export interface FormFieldProps extends Omit<HTMLAttributes<HTMLElement>, 'child
47
47
  limit?: FormFieldLimit | undefined;
48
48
  /** A control rendered beside the label, such as an Add button. */
49
49
  labelAction?: ReactNode;
50
+ /**
51
+ * The label (or the legend) is kept for assistive technology and takes no
52
+ * room on the page, for a field whose name is already the heading right
53
+ * above it. Hidden as the WHOLE element, not as the text inside it: a
54
+ * label holding hidden text still stands a line tall, which is the gap a
55
+ * reader sees between a card's title and its field. A `labelAction` goes
56
+ * with it, so a field with a hidden label puts its control elsewhere.
57
+ */
58
+ hideLabel?: boolean | undefined;
50
59
  /**
51
60
  * A fieldset with a legend rather than a div with a label, for a field
52
61
  * whose control is SEVERAL controls: a list of items, a row of radios. A
@@ -82,4 +91,4 @@ export interface FormFieldProps extends Omit<HTMLAttributes<HTMLElement>, 'child
82
91
  * instant, the only line that said what right looks like disappeared. Both
83
92
  * lines are joined into `aria-describedby` in reading order, help first.
84
93
  */
85
- export declare const FormField: ({ label, required, optional, requiredNews, helper, helperOnFocus, error, limit, labelAction, as, describedBy, htmlFor, className, children, ...rest }: FormFieldProps) => import("react").JSX.Element;
94
+ export declare const FormField: ({ label, required, optional, requiredNews, helper, helperOnFocus, error, limit, labelAction, hideLabel, as, describedBy, htmlFor, className, children, ...rest }: FormFieldProps) => import("react").JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import './Input.css';
2
+ import '../VisuallyHidden/VisuallyHidden.css';
2
3
  export { Input, InputAffix } from './Input.js';
3
4
  export type { InputAffixProps, InputAppearance, InputProps, InputSize, InputWidth } from './Input.js';
4
5
  export { Textarea, foldLineBreaks } from './Textarea.js';
@@ -1,4 +1,4 @@
1
- export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea, foldLineBreaks } from '../chunk-Z734SV4E.js';
1
+ export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea, foldLineBreaks } from '../chunk-EXRRTKWT.js';
2
2
  import '../chunk-XCUUI7E7.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-RSAQOKH3.js';
@@ -1,6 +1,6 @@
1
- export { ListInput, withDraft } from '../chunk-SQZEVWVC.js';
1
+ export { ListInput, withDraft } from '../chunk-ICVS3U4S.js';
2
2
  import '../chunk-XJ2QEBMM.js';
3
- import '../chunk-Z734SV4E.js';
3
+ import '../chunk-EXRRTKWT.js';
4
4
  import '../chunk-XCUUI7E7.js';
5
5
  import '../chunk-SMBKXWML.js';
6
6
  import '../chunk-PQADV6P6.js';
@@ -22,6 +22,8 @@
22
22
  }
23
23
 
24
24
  .crewlet-list-input__items {
25
+ /* The rows lay themselves out by the list's own width (see NARROW below). */
26
+ container: crewlet-list-input / inline-size;
25
27
  list-style: none;
26
28
  margin: 0;
27
29
  padding: 0;
@@ -261,3 +263,30 @@
261
263
  flex: none;
262
264
  align-self: center;
263
265
  }
266
+
267
+ /*
268
+ * NARROW: THE WORDS GET THE ROW. Under 28rem a row's grip, number and three
269
+ * buttons took half of it, so at a 390px phone each policy wrapped at some
270
+ * twenty characters a line and eight of them stood 1500px tall. There the
271
+ * row wraps: the number and the field share the first line, and the buttons
272
+ * stand at the end of a second, under the words. By the list's own width,
273
+ * not the window's, so a narrow column on a wide screen is narrow too.
274
+ */
275
+ @container crewlet-list-input (width < 28rem) {
276
+ .crewlet-list-input__item {
277
+ flex-wrap: wrap;
278
+ row-gap: 0;
279
+ }
280
+
281
+ .crewlet-list-input__item > .crewlet-list-input__field {
282
+ flex-basis: calc(100% - var(--spacing-4) - var(--spacing-2));
283
+ }
284
+
285
+ .crewlet-list-input__item--draggable > .crewlet-list-input__field {
286
+ flex-basis: calc(100% - var(--spacing-4) * 2 - var(--spacing-2) * 2);
287
+ }
288
+
289
+ .crewlet-list-input__item > .crewlet-list-input__actions {
290
+ margin-inline-start: auto;
291
+ }
292
+ }
@@ -1,6 +1,6 @@
1
- export { PresenterView, formatStopwatch } from '../chunk-ISDEXIXH.js';
2
- import '../chunk-RMEBFYL7.js';
1
+ export { PresenterView, formatStopwatch } from '../chunk-E6HXFFWO.js';
3
2
  import '../chunk-RRO7UEYU.js';
3
+ import '../chunk-RMEBFYL7.js';
4
4
  import '../chunk-RK4XPHVG.js';
5
5
  import '../chunk-OMV5W53A.js';
6
6
  import '../chunk-OG6CL3EB.js';
@@ -1,10 +1,10 @@
1
- export { PrincipalPicker } from '../chunk-HBSR5DL6.js';
2
- import '../chunk-2UVMIM2J.js';
1
+ export { PrincipalPicker } from '../chunk-32TGEMQQ.js';
2
+ import '../chunk-OOJTPR7N.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-CI3VPIJN.js';
5
5
  import '../chunk-5AQBPHZD.js';
6
6
  import '../chunk-PZKHBB7D.js';
7
- import '../chunk-Z734SV4E.js';
7
+ import '../chunk-EXRRTKWT.js';
8
8
  import '../chunk-XCUUI7E7.js';
9
9
  import '../chunk-PQADV6P6.js';
10
10
  import '../chunk-RSAQOKH3.js';
@@ -1,4 +1,4 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-RWWLVDRE.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-JWNYI7UD.js';
2
2
  export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
3
3
  import '../chunk-BAKPMH3S.js';
4
4
  import '../chunk-SZZRIHGT.js';
@@ -1,4 +1,4 @@
1
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-YBJVIY5E.js';
1
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-MUQJCH2Y.js';
2
2
  import '../chunk-XQZ6EWOE.js';
3
3
  import '../chunk-FFMCMSJB.js';
4
4
  import '../chunk-7KHM2FZH.js';
@@ -6,12 +6,12 @@ import '../chunk-LFSIKGRQ.js';
6
6
  import '../chunk-Z7JYG5TF.js';
7
7
  import '../chunk-34RMTXDZ.js';
8
8
  import '../chunk-AYKXMIOR.js';
9
- import '../chunk-RWET7W22.js';
9
+ import '../chunk-F57N6ZJG.js';
10
10
  import '../chunk-6FVGSWLS.js';
11
11
  import '../chunk-ILFEWRLG.js';
12
12
  import '../chunk-WIATRXEJ.js';
13
13
  import '../chunk-EGMQURBR.js';
14
- import '../chunk-Z734SV4E.js';
14
+ import '../chunk-EXRRTKWT.js';
15
15
  import '../chunk-XCUUI7E7.js';
16
16
  import '../chunk-SMBKXWML.js';
17
17
  import '../chunk-BHHIIK3M.js';
@@ -1,9 +1,9 @@
1
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-ZZCCNVF3.js';
1
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-OO7QJCJQ.js';
2
2
  import '../chunk-O2EGEONV.js';
3
3
  import '../chunk-CENOOTAV.js';
4
+ import '../chunk-KYIAFNU7.js';
4
5
  import '../chunk-3BYIWOTV.js';
5
6
  import '../chunk-I6POAB4V.js';
6
- import '../chunk-KYIAFNU7.js';
7
7
  import '../chunk-66X5WDKE.js';
8
8
  import '../chunk-LFSIKGRQ.js';
9
9
  import '../chunk-Z7JYG5TF.js';
@@ -1,10 +1,10 @@
1
- export { Switcher } from '../chunk-32MTQ6DN.js';
1
+ export { Switcher } from '../chunk-7JED2NYP.js';
2
2
  import '../chunk-6AKG2VLR.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-KHJIEPZV.js';
5
5
  import '../chunk-FYTIJM2T.js';
6
6
  import '../chunk-TEUQWOWZ.js';
7
- import '../chunk-Z734SV4E.js';
7
+ import '../chunk-EXRRTKWT.js';
8
8
  import '../chunk-XCUUI7E7.js';
9
9
  import '../chunk-PQADV6P6.js';
10
10
  import '../chunk-RSAQOKH3.js';