@crewlethq/ui 0.47.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.
package/README.md CHANGED
@@ -204,6 +204,17 @@ 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
+
207
218
  ## Changes in 0.47.0
208
219
 
209
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.
@@ -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 { 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,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,6 +1,6 @@
1
- export { TreeCanvas } from '../chunk-3YTNYF2E.js';
1
+ export { TreeCanvas } from '../chunk-CXVQMUEN.js';
2
2
  import '../chunk-MY374UUD.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';
@@ -6,7 +6,7 @@ import { IconButton } from './chunk-LACA4JGC.js';
6
6
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
8
8
  import './HitArea-QUOS6ZDJ.css';
9
- import './AppShell-TSACKAU7.css';
9
+ import './AppShell-ZRTGPLAF.css';
10
10
  import { createContext, forwardRef, useContext, useId, useState, useRef, useCallback, useEffect, useLayoutEffect } from 'react';
11
11
  import { breakpoint } from '@crewlethq/tokens';
12
12
  import { ChevronUpGlyph, ChevronsUpDownGlyph, ChevronRightGlyph, MenuGlyph } from '@crewlethq/icons/glyphs';
@@ -1,5 +1,5 @@
1
1
  import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-MY374UUD.js';
2
- import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-TVV7XSO5.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-D7Q5MQRF.js';
3
3
  import { focusables } from './chunk-H5XTJ7GJ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-L2XYONWL.css';
@@ -7,9 +7,9 @@ import { IconButton } from './chunk-LACA4JGC.js';
7
7
  import { returnFocus } from './chunk-NUZHC6MM.js';
8
8
  import { VisuallyHidden } from './chunk-BZFWDIV6.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
- import './Canvas-VUG2HLZK.css';
10
+ import './Canvas-4QJHVLJ4.css';
11
11
  import { useId, useRef, useState, useCallback, useLayoutEffect, useImperativeHandle, useEffect } from 'react';
12
- import { CURSORS, ZoomOutGlyph, ZoomInGlyph, FullscreenGlyph } from '@crewlethq/icons/glyphs';
12
+ import { ZoomOutGlyph, ZoomInGlyph, FullscreenGlyph } from '@crewlethq/icons/glyphs';
13
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
14
14
 
15
15
  function ShortcutTip({ label, keys, placement = "top", children }) {
@@ -516,7 +516,7 @@ function Canvas({
516
516
  {
517
517
  className: cx("crewlet-canvas", className),
518
518
  ref: root,
519
- style: ground === "grid" ? { ...CURSOR_PROPERTIES, ...gridProperties(view) } : CURSOR_PROPERTIES,
519
+ style: ground === "grid" ? gridProperties(view) : void 0,
520
520
  "data-cursor": cursor,
521
521
  "data-dimmed": dimmed,
522
522
  "data-ground": ground,
@@ -633,13 +633,6 @@ function gridOf(view) {
633
633
  const k = view.k > 0 && Number.isFinite(view.k) ? view.k : 1;
634
634
  return { scale: k * 2 ** -Math.floor(Math.log2(k)), x: view.x, y: view.y };
635
635
  }
636
- var CURSOR_PROPERTIES = {
637
- "--crewlet-canvas-cursor-pointer": CURSORS.pointer,
638
- "--crewlet-canvas-cursor-hand": CURSORS.hand,
639
- "--crewlet-canvas-cursor-grabbing": CURSORS.grabbing,
640
- "--crewlet-canvas-cursor-crosshair": CURSORS.crosshair,
641
- "--crewlet-canvas-cursor-text": CURSORS.text
642
- };
643
636
  function gridProperties(view) {
644
637
  const grid = gridOf(view);
645
638
  return {
@@ -1,9 +1,9 @@
1
1
  import { Note } from './chunk-5SZGKSGL.js';
2
- import { CanvasToolbar, toolForKey } from './chunk-7WNJLNFD.js';
3
- import { IDENTITY_VIEW, Canvas } from './chunk-TVV7XSO5.js';
2
+ import { CanvasToolbar, toolForKey } from './chunk-X4NIE7CI.js';
3
+ import { IDENTITY_VIEW, Canvas } from './chunk-D7Q5MQRF.js';
4
4
  import { IconButton } from './chunk-LACA4JGC.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
- import './CanvasBoard-TS4P356F.css';
6
+ import './CanvasBoard-JMYNIAHK.css';
7
7
  import { useState, useRef, useImperativeHandle, useCallback, useMemo, useEffect } from 'react';
8
8
  import { MaximizeGlyph, PencilGlyph, TrashGlyph, MousePointer2Glyph, HandGlyph, FrameGlyph, TypeGlyph, StickyNoteGlyph } from '@crewlethq/icons/glyphs';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { Toolbar } from './chunk-NR4CPM4T.js';
2
- import { ShortcutTip } from './chunk-TVV7XSO5.js';
2
+ import { ShortcutTip } from './chunk-D7Q5MQRF.js';
3
3
  import { IconButton } from './chunk-LACA4JGC.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './CanvasToolbar-EM5EVZED.css';
@@ -1,7 +1,7 @@
1
1
  import '../chunk-245IXG5P.js';
2
2
  export { WidgetFrame } from '../chunk-DFK5EQTU.js';
3
3
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from '../chunk-FEJANUZK.js';
4
- export { TreeCanvas } from '../chunk-3YTNYF2E.js';
4
+ export { TreeCanvas } from '../chunk-CXVQMUEN.js';
5
5
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-RFPCHMSX.js';
6
6
  export { VersionTimeline } from '../chunk-NQCY44B3.js';
7
7
  export { ThemeGallery } from '../chunk-E4BOVKNJ.js';
@@ -9,12 +9,12 @@ export { ThemeSwatch } from '../chunk-MNFU2RNT.js';
9
9
  export { DensitySwitcher, ThemeSwitcher } from '../chunk-SEPSXOGJ.js';
10
10
  export { ThemeToggle } from '../chunk-PM3JVNRY.js';
11
11
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
12
- export { TileGrid } from '../chunk-Q6CQMS6R.js';
13
12
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-VKFG4FLE.js';
13
+ export { TileGrid } from '../chunk-Q6CQMS6R.js';
14
14
  export { ToastProvider, Toaster, useToast } from '../chunk-AC22RZKC.js';
15
15
  export { Switcher } from '../chunk-7JED2NYP.js';
16
- export { Table } from '../chunk-V2N3BMOT.js';
17
16
  export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-4BJK7FE5.js';
17
+ export { Table } from '../chunk-V2N3BMOT.js';
18
18
  export { TagsInput } from '../chunk-SXBJMBSV.js';
19
19
  export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D3EJSLCL.js';
20
20
  export { StatCard } from '../chunk-YPTTSJPM.js';
@@ -25,34 +25,35 @@ export { matchesShortcut, useShortcut } from '../chunk-AYHIF6DH.js';
25
25
  export { SLIDE_COMPARE_LABELS, SlideCompare } from '../chunk-7CGPPAYR.js';
26
26
  export { SlideFilmstrip } from '../chunk-SQ4JFHO7.js';
27
27
  export { SlideGrid } from '../chunk-3V5T5K5H.js';
28
- export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-INVSUFJK.js';
29
- export { NavGroup, NavItem, SidebarNav } from '../chunk-E7QLG3PG.js';
30
28
  export { SegmentedMeter, segmentedMeterLabel } from '../chunk-4AK52VHB.js';
31
29
  export { SettingsTable, SettingsTableRow } from '../chunk-4RKTZSEW.js';
32
30
  export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-5EBDOE3C.js';
33
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-MUQJCH2Y.js';
34
- export { Select } from '../chunk-XQZ6EWOE.js';
35
31
  export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-OO7QJCJQ.js';
36
32
  export { TagGroup } from '../chunk-O2EGEONV.js';
33
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-MUQJCH2Y.js';
34
+ export { Select } from '../chunk-XQZ6EWOE.js';
37
35
  export { RelatedRow } from '../chunk-N4GBDK4L.js';
38
36
  export { Text } from '../chunk-QP2P6GDQ.js';
39
37
  export { RichEditor, preloadRichEditor } from '../chunk-JWNYI7UD.js';
40
38
  export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
41
39
  export { canonicalMarkdown, roundTripMarkdown } from '../chunk-SWD4QBL6.js';
42
40
  import '../chunk-QH6VYJ3X.js';
43
- export { SearchTrigger } from '../chunk-YZR57QGE.js';
44
41
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-356JNSER.js';
45
- export { PresenterView, formatStopwatch } from '../chunk-ISDEXIXH.js';
46
- export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from '../chunk-RMEBFYL7.js';
42
+ export { SearchTrigger } from '../chunk-YZR57QGE.js';
43
+ export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-INVSUFJK.js';
44
+ export { NavGroup, NavItem, SidebarNav } from '../chunk-E7QLG3PG.js';
45
+ export { PresenterView, formatStopwatch } from '../chunk-E6HXFFWO.js';
47
46
  export { SLIDE_NAV_LABELS, SlideNav } from '../chunk-RRO7UEYU.js';
47
+ export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from '../chunk-RMEBFYL7.js';
48
48
  export { PricingCard } from '../chunk-U3ILLCR2.js';
49
49
  export { PrincipalPicker } from '../chunk-32TGEMQQ.js';
50
50
  export { PropertyList } from '../chunk-JGCDFMXN.js';
51
51
  export { Prose } from '../chunk-JCSA3XVH.js';
52
52
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
53
53
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-ZAJHGDAW.js';
54
- export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-3RCHEFIL.js';
54
+ export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
55
55
  export { PageNote } from '../chunk-CV4NES3P.js';
56
+ export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-3RCHEFIL.js';
56
57
  export { PinTile } from '../chunk-OJCVVCAZ.js';
57
58
  export { PresenceStack } from '../chunk-3LYWD3BO.js';
58
59
  import '../chunk-CENOOTAV.js';
@@ -63,15 +64,14 @@ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-X
63
64
  export { TreeGrid } from '../chunk-ON2E46DX.js';
64
65
  export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, layoutConnectors, layoutForest, placeGroups, treeAllExpandable, treeAncestors, treeCollapseOrAscend, treeExpandOrDescend, treeExpandTo, treeExpandable, treeFirst, treeFirstChild, treeItemAction, treeLast, treeLevel, treeNext, treeParent, treePosInSet, treePrevious, treeSetSize, treeStep, treeTypeAhead, treeVisible, typeAheadBuffer, useLayoutAnchor, useMeasuredSizes, useTreeState } from '../chunk-MY374UUD.js';
65
66
  export { OrgLabel } from '../chunk-ONQKKHON.js';
66
- export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
67
67
  export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PREVIEW_FILL_MAX_CUT, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview } from '../chunk-CQFQGAZI.js';
68
68
  export { LockedLabel } from '../chunk-OHGH7O6T.js';
69
69
  export { MARKDOWN_CALLOUT_NAMES, MARKDOWN_CALLOUT_TONES, markdownBreaks, markdownClosesFence, markdownCodeText, markdownFenceOf, markdownHeadingOf, markdownInline, markdownLines, parseMarkdown, parseMarkdownSpans, safeHref } from '../chunk-BAKPMH3S.js';
70
70
  export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-SS4XCUUJ.js';
71
- export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-XS2FJVMT.js';
72
71
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from '../chunk-UGNUUVRI.js';
73
- export { Link } from '../chunk-FBSEJO2C.js';
72
+ export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-XS2FJVMT.js';
74
73
  export { AutoGrid, Inline, Spacer, Stack } from '../chunk-ZAC7SKUN.js';
74
+ export { Link } from '../chunk-FBSEJO2C.js';
75
75
  export { LinkInterstitial, openExternal } from '../chunk-DY4DQ7EB.js';
76
76
  export { List, ListItem } from '../chunk-TDQ262TB.js';
77
77
  export { ListDetail } from '../chunk-R5RCGD7N.js';
@@ -88,19 +88,19 @@ import '../chunk-MICRGE3J.js';
88
88
  import '../chunk-FFMCMSJB.js';
89
89
  export { IconTile } from '../chunk-IXJHTFXG.js';
90
90
  export { ImageUpload } from '../chunk-FWYHRU7M.js';
91
+ export { EntityChip } from '../chunk-OSKJZNBT.js';
91
92
  export { ErrorBoundary } from '../chunk-XX2VQE55.js';
92
93
  export { Eyebrow } from '../chunk-RK4XPHVG.js';
93
94
  export { FactList } from '../chunk-RLJXVFEH.js';
94
- export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-UYZZV4DZ.js';
95
95
  export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-THDGBD6Y.js';
96
+ export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-UYZZV4DZ.js';
96
97
  export { FindingList } from '../chunk-NTB5LRRD.js';
97
98
  export { FollowBanner } from '../chunk-4A4QG6UC.js';
98
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-627KFRON.js';
99
99
  export { Divider } from '../chunk-6KWNXIDE.js';
100
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-627KFRON.js';
100
101
  export { DownloadButton } from '../chunk-BEHFTRMZ.js';
101
102
  export { downloadBlob, downloadText, safeFilename, useDownload } from '../chunk-IW55G7XG.js';
102
103
  export { EditingStatus } from '../chunk-MULOZYHL.js';
103
- export { EntityChip } from '../chunk-OSKJZNBT.js';
104
104
  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';
105
105
  export { PageHeader } from '../chunk-HOXGBLEY.js';
106
106
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-AS2BMY3E.js';
@@ -118,38 +118,38 @@ export { Container } from '../chunk-HJO4WCH6.js';
118
118
  export { CursorFlag } from '../chunk-3BYIWOTV.js';
119
119
  export { PresenceRing, presenceHueClass } from '../chunk-I6POAB4V.js';
120
120
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-2MYSESZF.js';
121
- export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from '../chunk-HMVQQEHW.js';
121
+ import '../chunk-3L5NHASN.js';
122
122
  export { ChoiceButtons } from '../chunk-BWOIUOO3.js';
123
- export { ChoiceList } from '../chunk-EAQLI2SO.js';
124
123
  export { CodeBlock } from '../chunk-A4GFEMVI.js';
125
124
  export { CopyButton, Copyable } from '../chunk-7SHAFLEX.js';
126
125
  export { useClipboard, writeClipboard } from '../chunk-STJ7QBC3.js';
127
126
  export { useOutcome } from '../chunk-DTIW4CHZ.js';
127
+ export { ChoiceList } from '../chunk-EAQLI2SO.js';
128
128
  export { Combobox } from '../chunk-OOJTPR7N.js';
129
129
  export { CommandPalette } from '../chunk-TWZEWXNW.js';
130
130
  export { ConfirmModal, Modal } from '../chunk-6AKG2VLR.js';
131
131
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from '../chunk-7KHM2FZH.js';
132
132
  export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-6EBGPCAW.js';
133
- 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';
133
+ 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';
134
134
  export { Note } from '../chunk-5SZGKSGL.js';
135
- export { CanvasToolbar, toolForKey } from '../chunk-7WNJLNFD.js';
136
- export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
137
135
  export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
136
+ export { CanvasToolbar, toolForKey } from '../chunk-X4NIE7CI.js';
137
+ export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
138
138
  export { CatalogTile } from '../chunk-TGSIVB6H.js';
139
139
  export { ChangeMark } from '../chunk-66X5WDKE.js';
140
140
  export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COLUMN_BOUNDS, SHEET_COLUMN_TYPES, SHEET_COLUMN_WIDTHS, SHEET_FIT_SAMPLES, SHEET_LABELS, SHEET_ROW_HEIGHT, SHEET_ROW_NUMBER_WIDTH, SheetPendingEdits, TEXT_MAX_DEFAULT, URL_MAX, cellDescription, cellKey, cellSpeech, changeText, changeTime, checkValue, columnOffsets, columnWidth, compareValues, displayText, drawnColumns, editText, editorSide, findOption, findPerson, fitSamples, fittedWidth, flagText, hasPrevious, inRange, isEmptyValue, isMod, isMultiCell, isSheetColumnType, isTypingKey, liveOptions, moveFrom, nextSort, normalizeValue, optionHue, parseOptionList, parseTSV, parseText, planClear, planPaste, presenceByCell, presenceByColumn, presenceByRow, rangeOf, ratingMax, refusalText, retypeColumn, rowName, sameValue, scrollToRow, sheetLabels, sortRows, spokenText, statusTone, textMax, toTSV, visibleRows } from '../chunk-LFSIKGRQ.js';
141
141
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from '../chunk-Z7JYG5TF.js';
142
- import '../chunk-3L5NHASN.js';
143
- export { AvatarPicker } from '../chunk-3QSKDZR5.js';
142
+ export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from '../chunk-HMVQQEHW.js';
143
+ export { AvatarPicker } from '../chunk-EW2N4FOD.js';
144
144
  export { HuePicker, HueSwatch } from '../chunk-34RMTXDZ.js';
145
145
  export { Popover } from '../chunk-KHJIEPZV.js';
146
- export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
147
146
  export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-SNQRGH4A.js';
147
+ export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from '../chunk-AYKXMIOR.js';
148
148
  export { Breadcrumb } from '../chunk-VWNC2L6W.js';
149
149
  export { KeyChip } from '../chunk-FYTIJM2T.js';
150
150
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from '../chunk-GXQ3B46I.js';
151
151
  export { Callout } from '../chunk-SZZRIHGT.js';
152
- 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';
152
+ 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';
153
153
  import '../chunk-LM3ISVJA.js';
154
154
  export { ArtifactMakeRow } from '../chunk-R2IBCEU6.js';
155
155
  export { ArtifactNameCell } from '../chunk-P5VGSVWG.js';
@@ -202,7 +202,7 @@ export { DisclosureAnatomy } from '../chunk-FZVJDJFN.js';
202
202
  export { Count } from '../chunk-BHHIIK3M.js';
203
203
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
204
204
  export { Announcer, announce, useAnnouncer } from '../chunk-RSAQOKH3.js';
205
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-2KQR6JKE.js';
205
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-3Q7LWLHY.js';
206
206
  export { useMediaMatch } from '../chunk-RTPQDNW3.js';
207
207
  export { Menu } from '../chunk-TMM32U7D.js';
208
208
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-OMV5W53A.js';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import './chunk-245IXG5P.js';
2
2
  export { WidgetFrame } from './chunk-DFK5EQTU.js';
3
3
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from './chunk-FEJANUZK.js';
4
- export { TreeCanvas } from './chunk-3YTNYF2E.js';
4
+ export { TreeCanvas } from './chunk-CXVQMUEN.js';
5
5
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from './chunk-RFPCHMSX.js';
6
6
  export { VersionTimeline } from './chunk-NQCY44B3.js';
7
7
  export { ThemeGallery } from './chunk-E4BOVKNJ.js';
@@ -9,12 +9,12 @@ export { ThemeSwatch } from './chunk-MNFU2RNT.js';
9
9
  export { DensitySwitcher, ThemeSwitcher } from './chunk-SEPSXOGJ.js';
10
10
  export { ThemeToggle } from './chunk-PM3JVNRY.js';
11
11
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from './chunk-Z24ZUSTX.js';
12
- export { TileGrid } from './chunk-Q6CQMS6R.js';
13
12
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from './chunk-VKFG4FLE.js';
13
+ export { TileGrid } from './chunk-Q6CQMS6R.js';
14
14
  export { ToastProvider, Toaster, useToast } from './chunk-AC22RZKC.js';
15
15
  export { Switcher } from './chunk-7JED2NYP.js';
16
- export { Table } from './chunk-V2N3BMOT.js';
17
16
  export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-4BJK7FE5.js';
17
+ export { Table } from './chunk-V2N3BMOT.js';
18
18
  export { TagsInput } from './chunk-SXBJMBSV.js';
19
19
  export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from './chunk-D3EJSLCL.js';
20
20
  export { StatCard } from './chunk-YPTTSJPM.js';
@@ -25,34 +25,35 @@ export { matchesShortcut, useShortcut } from './chunk-AYHIF6DH.js';
25
25
  export { SLIDE_COMPARE_LABELS, SlideCompare } from './chunk-7CGPPAYR.js';
26
26
  export { SlideFilmstrip } from './chunk-SQ4JFHO7.js';
27
27
  export { SlideGrid } from './chunk-3V5T5K5H.js';
28
- export { SectionFrame, SectionFrameBody, SectionFrameNav } from './chunk-INVSUFJK.js';
29
- export { NavGroup, NavItem, SidebarNav } from './chunk-E7QLG3PG.js';
30
28
  export { SegmentedMeter, segmentedMeterLabel } from './chunk-4AK52VHB.js';
31
29
  export { SettingsTable, SettingsTableRow } from './chunk-4RKTZSEW.js';
32
30
  export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from './chunk-5EBDOE3C.js';
33
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from './chunk-MUQJCH2Y.js';
34
- export { Select } from './chunk-XQZ6EWOE.js';
35
31
  export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from './chunk-OO7QJCJQ.js';
36
32
  export { TagGroup } from './chunk-O2EGEONV.js';
33
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from './chunk-MUQJCH2Y.js';
34
+ export { Select } from './chunk-XQZ6EWOE.js';
37
35
  export { RelatedRow } from './chunk-N4GBDK4L.js';
38
36
  export { Text } from './chunk-QP2P6GDQ.js';
39
37
  export { RichEditor, preloadRichEditor } from './chunk-JWNYI7UD.js';
40
38
  export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
41
39
  export { canonicalMarkdown, roundTripMarkdown } from './chunk-SWD4QBL6.js';
42
40
  import './chunk-QH6VYJ3X.js';
43
- export { SearchTrigger } from './chunk-YZR57QGE.js';
44
41
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-356JNSER.js';
45
- export { PresenterView, formatStopwatch } from './chunk-ISDEXIXH.js';
46
- export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from './chunk-RMEBFYL7.js';
42
+ export { SearchTrigger } from './chunk-YZR57QGE.js';
43
+ export { SectionFrame, SectionFrameBody, SectionFrameNav } from './chunk-INVSUFJK.js';
44
+ export { NavGroup, NavItem, SidebarNav } from './chunk-E7QLG3PG.js';
45
+ export { PresenterView, formatStopwatch } from './chunk-E6HXFFWO.js';
47
46
  export { SLIDE_NAV_LABELS, SlideNav } from './chunk-RRO7UEYU.js';
47
+ export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from './chunk-RMEBFYL7.js';
48
48
  export { PricingCard } from './chunk-U3ILLCR2.js';
49
49
  export { PrincipalPicker } from './chunk-32TGEMQQ.js';
50
50
  export { PropertyList } from './chunk-JGCDFMXN.js';
51
51
  export { Prose } from './chunk-JCSA3XVH.js';
52
52
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from './chunk-Y56FM3K4.js';
53
53
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from './chunk-ZAJHGDAW.js';
54
- export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from './chunk-3RCHEFIL.js';
54
+ export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
55
55
  export { PageNote } from './chunk-CV4NES3P.js';
56
+ export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from './chunk-3RCHEFIL.js';
56
57
  export { PinTile } from './chunk-OJCVVCAZ.js';
57
58
  export { PresenceStack } from './chunk-3LYWD3BO.js';
58
59
  import './chunk-CENOOTAV.js';
@@ -63,15 +64,14 @@ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from './chunk-XP
63
64
  export { TreeGrid } from './chunk-ON2E46DX.js';
64
65
  export { SIZE_EPSILON, TYPE_AHEAD_RESET_MS, createTreeModel, isTypeAheadKey, layoutConnectors, layoutForest, placeGroups, treeAllExpandable, treeAncestors, treeCollapseOrAscend, treeExpandOrDescend, treeExpandTo, treeExpandable, treeFirst, treeFirstChild, treeItemAction, treeLast, treeLevel, treeNext, treeParent, treePosInSet, treePrevious, treeSetSize, treeStep, treeTypeAhead, treeVisible, typeAheadBuffer, useLayoutAnchor, useMeasuredSizes, useTreeState } from './chunk-MY374UUD.js';
65
66
  export { OrgLabel } from './chunk-ONQKKHON.js';
66
- export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
67
67
  export { LIVE_PREVIEW_DWELL_MS, LIVE_PREVIEW_MARGIN, LIVE_PREVIEW_MAX, LIVE_PREVIEW_MAX_FRAMES, LIVE_PREVIEW_RENDER_MS, LIVE_PREVIEW_STILLS_KEPT, LivePreview, LivePreviewBudgetProvider, PREVIEW_FILL_MAX_CUT, PreviewScale, createLivePreviewBudget, createLivePreviewStills, immediately, perFrame, useLivePreview } from './chunk-CQFQGAZI.js';
68
68
  export { LockedLabel } from './chunk-OHGH7O6T.js';
69
69
  export { MARKDOWN_CALLOUT_NAMES, MARKDOWN_CALLOUT_TONES, markdownBreaks, markdownClosesFence, markdownCodeText, markdownFenceOf, markdownHeadingOf, markdownInline, markdownLines, parseMarkdown, parseMarkdownSpans, safeHref } from './chunk-BAKPMH3S.js';
70
70
  export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from './chunk-SS4XCUUJ.js';
71
- export { MERGE_CONFLICTS_LABELS, MergeConflicts } from './chunk-XS2FJVMT.js';
72
71
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from './chunk-UGNUUVRI.js';
73
- export { Link } from './chunk-FBSEJO2C.js';
72
+ export { MERGE_CONFLICTS_LABELS, MergeConflicts } from './chunk-XS2FJVMT.js';
74
73
  export { AutoGrid, Inline, Spacer, Stack } from './chunk-ZAC7SKUN.js';
74
+ export { Link } from './chunk-FBSEJO2C.js';
75
75
  export { LinkInterstitial, openExternal } from './chunk-DY4DQ7EB.js';
76
76
  export { List, ListItem } from './chunk-TDQ262TB.js';
77
77
  export { ListDetail } from './chunk-R5RCGD7N.js';
@@ -88,19 +88,19 @@ import './chunk-MICRGE3J.js';
88
88
  import './chunk-FFMCMSJB.js';
89
89
  export { IconTile } from './chunk-IXJHTFXG.js';
90
90
  export { ImageUpload } from './chunk-FWYHRU7M.js';
91
+ export { EntityChip } from './chunk-OSKJZNBT.js';
91
92
  export { ErrorBoundary } from './chunk-XX2VQE55.js';
92
93
  export { Eyebrow } from './chunk-RK4XPHVG.js';
93
94
  export { FactList } from './chunk-RLJXVFEH.js';
94
- export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-UYZZV4DZ.js';
95
95
  export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-THDGBD6Y.js';
96
+ export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-UYZZV4DZ.js';
96
97
  export { FindingList } from './chunk-NTB5LRRD.js';
97
98
  export { FollowBanner } from './chunk-4A4QG6UC.js';
98
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-627KFRON.js';
99
99
  export { Divider } from './chunk-6KWNXIDE.js';
100
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-627KFRON.js';
100
101
  export { DownloadButton } from './chunk-BEHFTRMZ.js';
101
102
  export { downloadBlob, downloadText, safeFilename, useDownload } from './chunk-IW55G7XG.js';
102
103
  export { EditingStatus } from './chunk-MULOZYHL.js';
103
- export { EntityChip } from './chunk-OSKJZNBT.js';
104
104
  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';
105
105
  export { PageHeader } from './chunk-HOXGBLEY.js';
106
106
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-AS2BMY3E.js';
@@ -118,38 +118,38 @@ export { Container } from './chunk-HJO4WCH6.js';
118
118
  export { CursorFlag } from './chunk-3BYIWOTV.js';
119
119
  export { PresenceRing, presenceHueClass } from './chunk-I6POAB4V.js';
120
120
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from './chunk-2MYSESZF.js';
121
- export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from './chunk-HMVQQEHW.js';
121
+ import './chunk-3L5NHASN.js';
122
122
  export { ChoiceButtons } from './chunk-BWOIUOO3.js';
123
- export { ChoiceList } from './chunk-EAQLI2SO.js';
124
123
  export { CodeBlock } from './chunk-A4GFEMVI.js';
125
124
  export { CopyButton, Copyable } from './chunk-7SHAFLEX.js';
126
125
  export { useClipboard, writeClipboard } from './chunk-STJ7QBC3.js';
127
126
  export { useOutcome } from './chunk-DTIW4CHZ.js';
127
+ export { ChoiceList } from './chunk-EAQLI2SO.js';
128
128
  export { Combobox } from './chunk-OOJTPR7N.js';
129
129
  export { CommandPalette } from './chunk-TWZEWXNW.js';
130
130
  export { ConfirmModal, Modal } from './chunk-6AKG2VLR.js';
131
131
  export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
132
132
  export { COMMENT_THREAD_LABELS, CommentThread } from './chunk-6EBGPCAW.js';
133
- 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';
133
+ 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';
134
134
  export { Note } from './chunk-5SZGKSGL.js';
135
- export { CanvasToolbar, toolForKey } from './chunk-7WNJLNFD.js';
136
- export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
137
135
  export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
136
+ export { CanvasToolbar, toolForKey } from './chunk-X4NIE7CI.js';
137
+ export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
138
138
  export { CatalogTile } from './chunk-TGSIVB6H.js';
139
139
  export { ChangeMark } from './chunk-66X5WDKE.js';
140
140
  export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COLUMN_BOUNDS, SHEET_COLUMN_TYPES, SHEET_COLUMN_WIDTHS, SHEET_FIT_SAMPLES, SHEET_LABELS, SHEET_ROW_HEIGHT, SHEET_ROW_NUMBER_WIDTH, SheetPendingEdits, TEXT_MAX_DEFAULT, URL_MAX, cellDescription, cellKey, cellSpeech, changeText, changeTime, checkValue, columnOffsets, columnWidth, compareValues, displayText, drawnColumns, editText, editorSide, findOption, findPerson, fitSamples, fittedWidth, flagText, hasPrevious, inRange, isEmptyValue, isMod, isMultiCell, isSheetColumnType, isTypingKey, liveOptions, moveFrom, nextSort, normalizeValue, optionHue, parseOptionList, parseTSV, parseText, planClear, planPaste, presenceByCell, presenceByColumn, presenceByRow, rangeOf, ratingMax, refusalText, retypeColumn, rowName, sameValue, scrollToRow, sheetLabels, sortRows, spokenText, statusTone, textMax, toTSV, visibleRows } from './chunk-LFSIKGRQ.js';
141
141
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from './chunk-Z7JYG5TF.js';
142
- import './chunk-3L5NHASN.js';
143
- export { AvatarPicker } from './chunk-3QSKDZR5.js';
142
+ export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from './chunk-HMVQQEHW.js';
143
+ export { AvatarPicker } from './chunk-EW2N4FOD.js';
144
144
  export { HuePicker, HueSwatch } from './chunk-34RMTXDZ.js';
145
145
  export { Popover } from './chunk-KHJIEPZV.js';
146
- export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from './chunk-AYKXMIOR.js';
147
146
  export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from './chunk-SNQRGH4A.js';
147
+ export { NODE_HUES, NODE_HUE_NAMES, isNodeHue } from './chunk-AYKXMIOR.js';
148
148
  export { Breadcrumb } from './chunk-VWNC2L6W.js';
149
149
  export { KeyChip } from './chunk-FYTIJM2T.js';
150
150
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from './chunk-GXQ3B46I.js';
151
151
  export { Callout } from './chunk-SZZRIHGT.js';
152
- 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';
152
+ 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';
153
153
  import './chunk-LM3ISVJA.js';
154
154
  export { ArtifactMakeRow } from './chunk-R2IBCEU6.js';
155
155
  export { ArtifactNameCell } from './chunk-P5VGSVWG.js';
@@ -202,7 +202,7 @@ export { DisclosureAnatomy } from './chunk-FZVJDJFN.js';
202
202
  export { Count } from './chunk-BHHIIK3M.js';
203
203
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
204
204
  export { Announcer, announce, useAnnouncer } from './chunk-RSAQOKH3.js';
205
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-2KQR6JKE.js';
205
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-3Q7LWLHY.js';
206
206
  export { useMediaMatch } from './chunk-RTPQDNW3.js';
207
207
  export { Menu } from './chunk-TMM32U7D.js';
208
208
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from './chunk-OMV5W53A.js';
package/dist/styles.css CHANGED
@@ -702,7 +702,7 @@
702
702
  }
703
703
 
704
704
 
705
- /* AppShell-TSACKAU7.css */
705
+ /* AppShell-ZRTGPLAF.css */
706
706
  /*
707
707
  * The application frame: a rail on the FRAME, and the screen on a SHEET that
708
708
  * floats beside it.
@@ -944,11 +944,11 @@
944
944
  above it rather than sitting further out.
945
945
 
946
946
  THE FOOT IS THE COMPACT STEP. It holds what a reader reaches for rarely (a
947
- settings link, the engine's state, who they are), so its rows stand on the
948
- small control step (`--crewlet-rail-foot-row`, 26px, never under the 24px
949
- target) on a half-step gap and a one-step inset, where the nav above keeps
950
- its 30px rows. Only heights change: every row keeps its order, columns,
951
- glyphs and words. */
947
+ settings link, the engine's state), so its rows stand on the small control
948
+ step (`--crewlet-rail-foot-row`, 26px, never under the 24px target) on a
949
+ half-step gap and a one-step inset, where the nav above keeps its 30px
950
+ rows. The account row is the one exception (see below). Only heights
951
+ change: every row keeps its order, columns, glyphs and words. */
952
952
  .crewlet-app-shell__rail-foot {
953
953
  --crewlet-rail-foot-gap: calc(var(--spacing-1) / 2);
954
954
  --crewlet-rail-foot-row: var(--size-control-sm);
@@ -1510,13 +1510,18 @@
1510
1510
  * In the rail's foot, the account row reaches up across its own padding to
1511
1511
  * half the foot's gap, to meet the row above (HitArea.css).
1512
1512
  *
1513
- * AND IT STANDS ON THE NAV'S COLUMNS: the avatar centred on the column every
1514
- * nav glyph is centred on, and the name starting on the line every nav word
1515
- * starts on. On a 4px inset with an 8px gap a 26px avatar stood 2px left of
1516
- * the glyphs above it and the name 2px right of their words. The avatar's box
1517
- * takes a nav glyph's width (`sm`, 14px) and the badge is centred over it, so
1518
- * whatever size of badge a caller hands the row, it is centred where a glyph
1519
- * is, and the row takes the nav row's pad and its glyph-to-word gap.
1513
+ * IT IS THE ONE TALL ROW IN THE FOOT. Who is signed in is the row a reader
1514
+ * looks for, so it stands on the large control step (`--size-control-lg`,
1515
+ * 44px) around a medium badge (`size="md"`, 32px), where the rows above it
1516
+ * keep the compact step. The badge stands in a column of its own width
1517
+ * (`--crewlet-account-row-badge`), centred in it, so a smaller badge a caller
1518
+ * hands the row lands where a medium one would, and the column is inset from
1519
+ * the row's edge by the 6px the badge has above and below it in the 44px row.
1520
+ * A 32px badge cannot stand on the nav's 14px glyph column: centred there, its
1521
+ * ring (1.5px, 2px out) would cross the row's own edge.
1522
+ *
1523
+ * The name takes the body's size (`--font-size-compact`, the nav's words) and
1524
+ * both lines take the body's leading, a step a 36px row had no room for.
1520
1525
  */
1521
1526
  /*
1522
1527
  * AND THE WORDS TAKE THE ROOM: the name and the detail are what the row is
@@ -1527,27 +1532,31 @@
1527
1532
  */
1528
1533
  .crewlet-app-shell__rail-foot .crewlet-account-row {
1529
1534
  --crewlet-account-row-pad: var(--spacing-0);
1535
+ --crewlet-account-row-badge: 32px;
1530
1536
  gap: calc(var(--spacing-1) / 2);
1531
1537
  }
1532
1538
 
1533
1539
  .crewlet-app-shell__rail-foot .crewlet-account-row__who {
1534
1540
  --crewlet-hit-area-block-start: calc(var(--crewlet-rail-foot-gap) / 2 + var(--crewlet-account-row-pad));
1535
1541
  gap: 0;
1536
- /* On the foot's compact step: the two lines of name and detail with half a
1537
- step above and below them, which still clears the avatar. */
1538
- padding-block: calc(var(--spacing-1) / 2);
1539
- padding-inline: var(--size-nav-row-pad) calc(var(--spacing-1) / 2);
1542
+ min-height: var(--size-control-lg);
1543
+ padding-block: var(--spacing-1);
1544
+ padding-inline: calc(var(--spacing-1) + var(--spacing-1) / 2) calc(var(--spacing-1) / 2);
1540
1545
  }
1541
1546
 
1542
1547
  .crewlet-app-shell__rail-foot .crewlet-account-row__avatar {
1543
1548
  justify-content: center;
1544
- width: 14px;
1545
- /* The nav's glyph-to-word gap, so the name starts on the nav's word line. */
1546
- margin-inline-end: calc(var(--spacing-2) + var(--spacing-1) / 2);
1549
+ width: var(--crewlet-account-row-badge);
1550
+ margin-inline-end: var(--spacing-2);
1547
1551
  }
1548
1552
 
1549
1553
  .crewlet-app-shell__rail-foot .crewlet-account-row__text {
1550
1554
  margin-inline-end: var(--spacing-1);
1555
+ line-height: var(--font-line-height-body);
1556
+ }
1557
+
1558
+ .crewlet-app-shell__rail-foot .crewlet-account-row__name {
1559
+ font-size: var(--font-size-compact);
1551
1560
  }
1552
1561
 
1553
1562
  .crewlet-app-shell__rail-foot .crewlet-account-row__actions {
@@ -5536,7 +5545,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5536
5545
  }
5537
5546
 
5538
5547
 
5539
- /* Canvas-VUG2HLZK.css */
5548
+ /* Canvas-4QJHVLJ4.css */
5540
5549
  /*
5541
5550
  * A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
5542
5551
  * page's own scroller is never involved.
@@ -5589,7 +5598,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5589
5598
  position: absolute;
5590
5599
  inset: 0;
5591
5600
  overflow: hidden;
5592
- cursor: var(--crewlet-canvas-cursor-hand, grab);
5601
+ cursor: grab;
5593
5602
  /* Until it is tapped, one finger belongs to the page's vertical scroll. */
5594
5603
  touch-action: pan-y;
5595
5604
  }
@@ -5608,27 +5617,29 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5608
5617
  }
5609
5618
 
5610
5619
  /*
5611
- * THE POINTER SAYS WHAT A PRESS WILL DO. The drawings are the component's
5612
- * (`CURSORS`, written on the root), each falling back to its keyword. A pan in
5613
- * progress shows the closed hand whatever the tool, and it is set on the whole
5614
- * canvas rather than the field, so a drag that crosses a board or a note keeps
5615
- * the hand it started with.
5620
+ * THE POINTER SAYS WHAT A PRESS WILL DO, in the operating system's own
5621
+ * pointers: the open hand a reader knows from every map and design tool, the
5622
+ * arrow, the crosshair and the text beam. A drawing of the kit's own beside
5623
+ * them would be the one pointer on the screen that looks unlike the rest. A
5624
+ * pan in progress shows the closed hand whatever the tool, and it is set on
5625
+ * the whole canvas rather than the field, so a drag that crosses a board or a
5626
+ * note keeps the hand it started with.
5616
5627
  */
5617
5628
  .crewlet-canvas[data-cursor='pointer'] .crewlet-canvas__viewport {
5618
- cursor: var(--crewlet-canvas-cursor-pointer, default);
5629
+ cursor: default;
5619
5630
  }
5620
5631
 
5621
5632
  .crewlet-canvas[data-cursor='crosshair'] .crewlet-canvas__viewport {
5622
- cursor: var(--crewlet-canvas-cursor-crosshair, crosshair);
5633
+ cursor: crosshair;
5623
5634
  }
5624
5635
 
5625
5636
  .crewlet-canvas[data-cursor='text'] .crewlet-canvas__viewport {
5626
- cursor: var(--crewlet-canvas-cursor-text, text);
5637
+ cursor: text;
5627
5638
  }
5628
5639
 
5629
5640
  .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport,
5630
5641
  .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport * {
5631
- cursor: var(--crewlet-canvas-cursor-grabbing, grabbing);
5642
+ cursor: grabbing;
5632
5643
  user-select: none;
5633
5644
  }
5634
5645
 
@@ -5926,7 +5937,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5926
5937
  }
5927
5938
 
5928
5939
 
5929
- /* CanvasBoard-TS4P356F.css */
5940
+ /* CanvasBoard-JMYNIAHK.css */
5930
5941
  /*
5931
5942
  * A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
5932
5943
  * out in canvas pixels inside the canvas's world and scale with it; their
@@ -6053,7 +6064,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6053
6064
  .crewlet-canvas-board__shield {
6054
6065
  position: absolute;
6055
6066
  inset: 0;
6056
- cursor: var(--crewlet-canvas-cursor-pointer, default);
6067
+ cursor: default;
6057
6068
  }
6058
6069
 
6059
6070
  /* A board that is not running draws its size, and why, at screen size. */
@@ -6178,7 +6189,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6178
6189
  line-height: var(--font-line-height-normal);
6179
6190
  text-overflow: ellipsis;
6180
6191
  white-space: nowrap;
6181
- cursor: var(--crewlet-canvas-cursor-pointer, default);
6192
+ cursor: default;
6182
6193
  }
6183
6194
 
6184
6195
  .crewlet-canvas-board__board:hover .crewlet-canvas-board__title,
@@ -6194,7 +6205,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6194
6205
  border-radius: var(--radius-md);
6195
6206
  background: transparent;
6196
6207
  font: inherit;
6197
- cursor: var(--crewlet-canvas-cursor-pointer, default);
6208
+ cursor: default;
6198
6209
  touch-action: none;
6199
6210
  }
6200
6211
 
@@ -6297,7 +6308,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6297
6308
  .crewlet-canvas-board__note {
6298
6309
  position: absolute;
6299
6310
  box-sizing: border-box;
6300
- cursor: var(--crewlet-canvas-cursor-pointer, default);
6311
+ cursor: default;
6301
6312
  }
6302
6313
 
6303
6314
  /*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.47.0",
46
- "@crewlethq/tokens": "0.47.0",
45
+ "@crewlethq/icons": "0.48.0",
46
+ "@crewlethq/tokens": "0.48.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,5 +1,5 @@
1
- import { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './chunk-RMEBFYL7.js';
2
1
  import { SlideNav } from './chunk-RRO7UEYU.js';
2
+ import { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './chunk-RMEBFYL7.js';
3
3
  import { Eyebrow } from './chunk-RK4XPHVG.js';
4
4
  import { Button } from './chunk-OG6CL3EB.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
1
  import { HuePicker } from './chunk-34RMTXDZ.js';
2
2
  import { Popover } from './chunk-KHJIEPZV.js';
3
- import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
4
3
  import { CharacterPicker } from './chunk-SNQRGH4A.js';
4
+ import { NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
5
  import { Avatar } from './chunk-PZKHBB7D.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './AvatarPicker-PREY36MG.css';