@crewlethq/ui 0.40.1 → 0.41.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,10 @@ 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.41.0
208
+
209
+ **The rail's head carries a status** (`AppShell.Rail` `status`, drawn with `AppShell.RailStatus`). An application's own state, such as its engine's, stands compact at the end of the head's line, beside the name: a status dot and, when something stands against it, a count in the foot row's inks (the warning ink with its mark for alarms). The state's words are the status's name and title rather than a line of the rail ("Engine serving, 1 alarm"), so the count is read once, in words. A status that opens a panel is the panel's trigger, as a foot row is (`aria-haspopup`, `aria-expanded` and `aria-controls` reach its button, and a `Popover` anchors to it), and `label` names it where a press does something the state does not say ("Engine signed out. Sign in"). A status nothing presses is a statement with no place in the tab order. It reserves the width of a dot and a two-figure count, and a `BrandLockup` beside it gives up its end inset to the head's gap, so the name truncates at one place whatever the count says, it is a 24px target each way with its focus ring inside its box, and it ends on the nav's gutter, where every row's background ends. It stands in the drawer's head the same way. The foot's doc now names it the place for what a reader reaches for rarely.
210
+
207
211
  ## Changes in 0.40.1
208
212
 
209
213
  **The rail's foot stands on the compact step.** What a reader reaches for rarely (a settings link, a status row, who they are) takes less of the rail's height: the foot's rows are 26px (`--size-control-sm`, through `--crewlet-rail-foot-row`) where they were the nav's 30px, the foot's gap is 2px and its inset 4px where they were 4px and 8px, and the account row spends 2px around its name and detail where it spent 8px. A foot of Settings, an engine row and the account row is 101px tall where it was 133px. Only heights change: every row keeps its order, its columns, its glyphs and its words, the rows above the foot keep their 30px step, and every target still clears 24px, with the targets of neighbouring rows meeting across the gap.
@@ -103,6 +103,7 @@ export declare function AppShell({ sidebar, topbar, banner, footer, mainId, main
103
103
  export declare namespace AppShell {
104
104
  var Rail: typeof AppShellRail;
105
105
  var RailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
106
+ var RailStatus: import("react").ForwardRefExoticComponent<AppShellRailStatusProps & import("react").RefAttributes<HTMLElement>>;
106
107
  var Topbar: typeof AppShellTopbar;
107
108
  var Toggle: typeof AppShellToggle;
108
109
  var AccountRow: typeof import("./AccountRow.js").AccountRow;
@@ -122,16 +123,24 @@ export interface AppShellRailProps {
122
123
  */
123
124
  search?: ReactNode;
124
125
  /**
125
- * The foot: what the engine is doing, the theme and density controls. An
126
- * `<AppShell.RailRow>` puts a line there on the rail's own insets, so its
127
- * mark lands on the line every nav glyph above it sits on.
126
+ * A compact status at the end of the head's line, beside the name the head
127
+ * carries: an `<AppShell.RailStatus>`, the application's own state in a
128
+ * dot and a count. It takes its own width, so the name keeps the rest and
129
+ * truncates there, and it stands in the drawer's head the same way.
130
+ */
131
+ status?: ReactNode;
132
+ /**
133
+ * The foot: what a reader reaches for rarely, such as a settings link and
134
+ * their own account row. An `<AppShell.RailRow>` puts a line there on the
135
+ * rail's own insets, so its mark lands on the line every nav glyph above it
136
+ * sits on. A state the application reports belongs in `status`, compact.
128
137
  */
129
138
  footer?: ReactNode;
130
139
  className?: string | undefined;
131
140
  children?: ReactNode;
132
141
  }
133
142
  /** The rail's three regions: a head, a scrolling middle, and a foot. */
134
- export declare function AppShellRail({ header, search, footer, className, children }: AppShellRailProps): import("react").JSX.Element;
143
+ export declare function AppShellRail({ header, search, status, footer, className, children }: AppShellRailProps): import("react").JSX.Element;
135
144
  /**
136
145
  * A figure at the end of a row in the foot, and what it counts.
137
146
  *
@@ -262,6 +271,65 @@ export type AppShellRailRowProps = StaticRailRowProps | ActionRailRowProps;
262
271
  * says whether it is open.
263
272
  */
264
273
  export declare const AppShellRailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
274
+ /** What the head's status says, whether or not it is a control. */
275
+ interface RailStatusContent {
276
+ /** The state's mark: a status dot. The status draws no words, so the mark and the count are what is seen. */
277
+ icon: ReactNode;
278
+ /**
279
+ * The state in words, "Engine serving". Not drawn: it is the status's name,
280
+ * read by assistive technology and shown as its title, with the count's
281
+ * words after it ("Engine serving, 1 alarm").
282
+ */
283
+ children: string;
284
+ /** How many of something stands against the state, drawn as a row's count is. */
285
+ count?: RailRowCount | undefined;
286
+ /** A mark after the count, for a state a press resolves: the key beside "sign in". */
287
+ trailing?: ReactNode;
288
+ className?: string | undefined;
289
+ }
290
+ /** A status the head states and nothing presses. */
291
+ export interface StaticRailStatusProps extends RailStatusContent {
292
+ onClick?: undefined;
293
+ label?: undefined;
294
+ 'aria-expanded'?: undefined;
295
+ 'aria-haspopup'?: undefined;
296
+ 'aria-controls'?: undefined;
297
+ }
298
+ /** A status that opens something: the engine's panel. */
299
+ export interface ActionRailStatusProps extends RailStatusContent {
300
+ onClick: MouseEventHandler<HTMLButtonElement>;
301
+ /**
302
+ * Names the control where the state and its count are not what pressing it
303
+ * does ("Engine signed out. Sign in"). It replaces that name, and the title.
304
+ */
305
+ label?: string | undefined;
306
+ /** Whether the panel it opens is open, as a `Popover` or a `Menu` trigger passes it. */
307
+ 'aria-expanded'?: boolean | undefined;
308
+ /** What it opens. */
309
+ 'aria-haspopup'?: AriaAttributes['aria-haspopup'];
310
+ /** The panel it opens, while it is open. */
311
+ 'aria-controls'?: string | undefined;
312
+ }
313
+ export type AppShellRailStatusProps = StaticRailStatusProps | ActionRailStatusProps;
314
+ /**
315
+ * The application's state, compact, at the end of the rail head's line.
316
+ *
317
+ * A FOOT ROW'S MEANING IN A DOT AND A COUNT. The state's words are its name
318
+ * and its title rather than a line of the rail ("Engine serving, 1 alarm"),
319
+ * so a sighted reader reads the dot and the count, and hovers for the words,
320
+ * and a screen reader is told what a foot row would have told it. The count
321
+ * is the row's own (`RailRowCount`), in the same inks.
322
+ *
323
+ * IT TAKES A FIXED FLOOR OF WIDTH, a dot and a two-figure count, so the
324
+ * name beside it truncates at one place whatever the count says: the name
325
+ * does not lose a character when an alarm is raised. A count wider than the
326
+ * floor still grows the status rather than being cut.
327
+ *
328
+ * A STATUS THAT OPENS A PANEL IS ITS TRIGGER, as the foot's row is: the
329
+ * element goes to `ref` and the popup attributes reach the button, so a
330
+ * `Popover` anchors to it and it says whether the panel is open.
331
+ */
332
+ export declare const AppShellRailStatus: import("react").ForwardRefExoticComponent<AppShellRailStatusProps & import("react").RefAttributes<HTMLElement>>;
265
333
  export interface AppShellToggleProps {
266
334
  className?: string | undefined;
267
335
  }
@@ -1,6 +1,6 @@
1
1
  import '../HitArea/HitArea.css';
2
2
  import './AppShell.css';
3
- export { AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
3
+ export { AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './AppShell.js';
4
4
  export { AccountRow } from './AccountRow.js';
5
5
  export type { AccountRowMenu, AccountRowProps } from './AccountRow.js';
6
- export type { ActionRailRowProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, } from './AppShell.js';
6
+ export type { ActionRailRowProps, ActionRailStatusProps, AppShellContextValue, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellRailStatusProps, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, StaticRailStatusProps, } from './AppShell.js';
@@ -1,4 +1,4 @@
1
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-GR4YM7HT.js';
1
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-SCPEMLLY.js';
2
2
  import '../chunk-RTPQDNW3.js';
3
3
  import '../chunk-D6FEHY5G.js';
4
4
  import '../chunk-OMV5W53A.js';
@@ -155,6 +155,68 @@
155
155
  min-width: 0;
156
156
  }
157
157
 
158
+ /*
159
+ * THE HEAD'S STATUS, at the end of the name's line (`AppShell.RailStatus`):
160
+ * the application's state as a dot and a count, its words in its name and
161
+ * title. It ends on the nav's gutter, where every row's background ends, and
162
+ * it reserves the width of a dot and a two-figure count, so the name beside
163
+ * it truncates at one place whether the engine is healthy or has alarms.
164
+ */
165
+ .crewlet-app-shell__rail-status {
166
+ display: flex;
167
+ flex: none;
168
+ align-items: center;
169
+ justify-content: flex-end;
170
+ min-width: calc(var(--size-target-min) * 2 + var(--spacing-1));
171
+ margin-inline-end: var(--size-nav-gutter);
172
+ }
173
+
174
+ /* A lockup beside a status gives up its end inset: the head's gap parts the
175
+ two, and the inset is what kept a lockup alone on its line off the edge. */
176
+ .crewlet-app-shell__rail-head:has(> .crewlet-app-shell__rail-status) > .crewlet-brand {
177
+ padding-inline-end: 0;
178
+ }
179
+
180
+ /* The dot and the count on one compact target: the 24px floor each way. */
181
+ .crewlet-app-shell__rail-status-mark {
182
+ display: inline-flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ gap: calc(var(--spacing-1) + var(--spacing-1) / 2);
186
+ min-width: var(--size-target-min);
187
+ min-height: var(--size-target-min);
188
+ margin: 0;
189
+ padding: 0 var(--spacing-1);
190
+ border: 0;
191
+ border-radius: var(--radius-md);
192
+ background: transparent;
193
+ color: var(--color-text-secondary);
194
+ font: inherit;
195
+ }
196
+
197
+ .crewlet-app-shell__rail-status-icon,
198
+ .crewlet-app-shell__rail-status-trailing {
199
+ display: inline-flex;
200
+ align-items: center;
201
+ }
202
+
203
+ .crewlet-app-shell__rail-status-mark--action {
204
+ cursor: pointer;
205
+ transition: background var(--motion-duration-fast) var(--motion-easing-default);
206
+ }
207
+
208
+ /* Open is pointed at, as the foot's row draws it: the lift stays while the panel is open. */
209
+ .crewlet-app-shell__rail-status-mark--action:hover,
210
+ .crewlet-app-shell__rail-status-mark--action[aria-expanded='true'] {
211
+ background: var(--color-surface-hover);
212
+ }
213
+
214
+ /* Inside its own box, so the ring is never cut by the head or the drawer's edge. */
215
+ .crewlet-app-shell__rail-status-mark--action:focus-visible {
216
+ outline: 2px solid var(--color-focus);
217
+ outline-offset: var(--size-focus-ring-inset-offset);
218
+ }
219
+
158
220
  /*
159
221
  * THE RAIL'S FIELD ON THE NAV'S COLUMNS. It stands on the nav's gutter, so
160
222
  * its right edge is where every row's background ends; and its glyph stands
@@ -700,7 +762,8 @@
700
762
  .crewlet-app-shell__rail,
701
763
  .crewlet-app-shell__rail[data-open='true'],
702
764
  .crewlet-app-shell__rail-row--action,
703
- .crewlet-app-shell__rail-foot > .crewlet-btn {
765
+ .crewlet-app-shell__rail-foot > .crewlet-btn,
766
+ .crewlet-app-shell__rail-status-mark--action {
704
767
  transition: none;
705
768
  }
706
769
  }
@@ -1,4 +1,4 @@
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-QRKT4XTT.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-6QNN3WIT.js';
2
2
  import '../chunk-HOXGBLEY.js';
3
3
  import '../chunk-UB6MLXUL.js';
4
4
  import '../chunk-FXBGEANQ.js';
@@ -6,9 +6,9 @@ import '../chunk-STJ7QBC3.js';
6
6
  import '../chunk-DTIW4CHZ.js';
7
7
  import '../chunk-IAGYPTEJ.js';
8
8
  import '../chunk-7KHM2FZH.js';
9
+ import '../chunk-NR4CPM4T.js';
9
10
  import '../chunk-KHJIEPZV.js';
10
11
  import '../chunk-GXQ3B46I.js';
11
- import '../chunk-NR4CPM4T.js';
12
12
  import '../chunk-AXS6MBNH.js';
13
13
  import '../chunk-3CZ7XAVY.js';
14
14
  import '../chunk-EUCC37WY.js';
@@ -1,4 +1,4 @@
1
- export { RichEditor, preloadRichEditor } from '../chunk-X3UYTAOG.js';
1
+ export { RichEditor, preloadRichEditor } from '../chunk-PFZOFAQ6.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,9 +1,9 @@
1
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-DKNBGL26.js';
1
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-3PR65I3H.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';
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-QV4JP242.js').then(
12
+ loading ??= import('./Editor-IRDQ3JDZ.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -6,7 +6,7 @@ import { IconButton } from './chunk-4FQT6ZAY.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-VE2MAV42.css';
9
+ import './AppShell-V3TAAYL3.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';
@@ -231,9 +231,12 @@ function ShellDrawer({
231
231
  }
232
232
  );
233
233
  }
234
- function AppShellRail({ header, search, footer, className, children }) {
234
+ function AppShellRail({ header, search, status, footer, className, children }) {
235
235
  return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-app-shell__rail-inner", className), children: [
236
- header ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-head", children: header }) : null,
236
+ header || status ? /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-head", children: [
237
+ header,
238
+ status ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-status", children: status }) : null
239
+ ] }) : null,
237
240
  /* @__PURE__ */ jsxs("div", { className: "crewlet-app-shell__rail-body", children: [
238
241
  search ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-search", children: search }) : null,
239
242
  children
@@ -241,6 +244,25 @@ function AppShellRail({ header, search, footer, className, children }) {
241
244
  footer ? /* @__PURE__ */ jsx("div", { className: "crewlet-app-shell__rail-foot", children: footer }) : null
242
245
  ] });
243
246
  }
247
+ function countWords(count) {
248
+ return `, ${String(count.value)} ${count.label}`;
249
+ }
250
+ function RailCountFigure({ count }) {
251
+ return /* @__PURE__ */ jsxs(
252
+ "span",
253
+ {
254
+ className: cx(
255
+ "crewlet-app-shell__rail-row-count",
256
+ count.tone === "warning" && "crewlet-app-shell__rail-row-count--warning"
257
+ ),
258
+ "aria-hidden": true,
259
+ children: [
260
+ count.mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-count-mark", children: count.mark }) : null,
261
+ count.value
262
+ ]
263
+ }
264
+ );
265
+ }
244
266
  function opensSomething(haspopup) {
245
267
  return haspopup !== void 0 && haspopup !== false && haspopup !== "false";
246
268
  }
@@ -265,7 +287,7 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
265
287
  /* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-text", children: [
266
288
  /* @__PURE__ */ jsxs("span", { className: "crewlet-app-shell__rail-row-label", children: [
267
289
  children,
268
- count ? /* @__PURE__ */ jsx(VisuallyHidden, { children: `, ${String(count.value)} ${count.label}` }) : null
290
+ count ? /* @__PURE__ */ jsx(VisuallyHidden, { children: countWords(count) }) : null
269
291
  ] }),
270
292
  block ? /* @__PURE__ */ jsxs(Fragment, { children: [
271
293
  " ",
@@ -274,20 +296,7 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
274
296
  ] }),
275
297
  count ? /* @__PURE__ */ jsxs(Fragment, { children: [
276
298
  " ",
277
- /* @__PURE__ */ jsxs(
278
- "span",
279
- {
280
- className: cx(
281
- "crewlet-app-shell__rail-row-count",
282
- count.tone === "warning" && "crewlet-app-shell__rail-row-count--warning"
283
- ),
284
- "aria-hidden": true,
285
- children: [
286
- count.mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-row-count-mark", children: count.mark }) : null,
287
- count.value
288
- ]
289
- }
290
- )
299
+ /* @__PURE__ */ jsx(RailCountFigure, { count })
291
300
  ] }) : null,
292
301
  trailing ? /* @__PURE__ */ jsxs(Fragment, { children: [
293
302
  " ",
@@ -315,6 +324,47 @@ var AppShellRailRow = forwardRef(function AppShellRailRow2({
315
324
  }
316
325
  );
317
326
  });
327
+ var AppShellRailStatus = forwardRef(function AppShellRailStatus2({
328
+ icon,
329
+ children,
330
+ count,
331
+ trailing,
332
+ onClick,
333
+ label,
334
+ className,
335
+ "aria-expanded": expanded,
336
+ "aria-haspopup": haspopup,
337
+ "aria-controls": controls
338
+ }, ref) {
339
+ const name = label ?? `${children}${count ? countWords(count) : ""}`;
340
+ const marks = /* @__PURE__ */ jsxs(Fragment, { children: [
341
+ /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-status-icon", "aria-hidden": true, children: icon }),
342
+ count ? /* @__PURE__ */ jsx(RailCountFigure, { count }) : null,
343
+ trailing ? /* @__PURE__ */ jsx("span", { className: "crewlet-app-shell__rail-status-trailing", "aria-hidden": true, children: trailing }) : null
344
+ ] });
345
+ const shape = cx("crewlet-app-shell__rail-status-mark", className);
346
+ if (onClick === void 0) {
347
+ return /* @__PURE__ */ jsxs("span", { ref, className: shape, title: name, children: [
348
+ marks,
349
+ /* @__PURE__ */ jsx(VisuallyHidden, { children: name })
350
+ ] });
351
+ }
352
+ return /* @__PURE__ */ jsx(
353
+ "button",
354
+ {
355
+ ref,
356
+ type: "button",
357
+ className: cx(shape, "crewlet-app-shell__rail-status-mark--action", HIT_AREA_CLASS),
358
+ "aria-label": name,
359
+ title: name,
360
+ "aria-expanded": expanded,
361
+ "aria-haspopup": haspopup,
362
+ "aria-controls": controls,
363
+ onClick,
364
+ children: marks
365
+ }
366
+ );
367
+ });
318
368
  function AppShellToggle({ className }) {
319
369
  const { drawerOpen, toggleDrawer, railId, toggleLabel, hasRail } = useAppShell();
320
370
  if (!hasRail) return null;
@@ -341,8 +391,9 @@ function AppShellTopbar({ title, titleId, actions, className, children, ...rest
341
391
  }
342
392
  AppShell.Rail = AppShellRail;
343
393
  AppShell.RailRow = AppShellRailRow;
394
+ AppShell.RailStatus = AppShellRailStatus;
344
395
  AppShell.Topbar = AppShellTopbar;
345
396
  AppShell.Toggle = AppShellToggle;
346
397
  AppShell.AccountRow = AccountRow;
347
398
 
348
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell };
399
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell };
@@ -1,117 +1,117 @@
1
1
  import '../chunk-S3QTFUJX.js';
2
+ export { VersionTimeline } from '../chunk-NQCY44B3.js';
2
3
  export { WidgetFrame } from '../chunk-DFK5EQTU.js';
3
- export { Prose } from '../chunk-JCSA3XVH.js';
4
4
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from '../chunk-FEJANUZK.js';
5
5
  export { ToastProvider, Toaster, useToast } from '../chunk-AC22RZKC.js';
6
6
  export { TreeCanvas } from '../chunk-5BUOMF6N.js';
7
7
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-JSWOXRRE.js';
8
- export { VersionTimeline } from '../chunk-NQCY44B3.js';
8
+ export { TagsInput } from '../chunk-BH52LIY6.js';
9
9
  export { ThemeGallery } from '../chunk-E4BOVKNJ.js';
10
10
  export { ThemeSwatch } from '../chunk-MNFU2RNT.js';
11
- export { ThemeToggle } from '../chunk-NP2C4Y4E.js';
12
11
  export { DensitySwitcher, ThemeSwitcher } from '../chunk-KWWP3D7M.js';
12
+ export { ThemeToggle } from '../chunk-NP2C4Y4E.js';
13
13
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
14
14
  export { TileGrid } from '../chunk-NNTO3TNC.js';
15
15
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-YPMGP2X4.js';
16
+ export { Stepper } from '../chunk-5QWIJSQM.js';
16
17
  export { Switcher } from '../chunk-JKAGN4V4.js';
17
18
  export { Table } from '../chunk-V2N3BMOT.js';
18
19
  export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-4BJK7FE5.js';
19
- export { TagsInput } from '../chunk-BH52LIY6.js';
20
+ export { SlideFilmstrip } from '../chunk-FBW3Q2OY.js';
20
21
  export { SlideGrid } from '../chunk-3V5T5K5H.js';
21
22
  export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from '../chunk-D3EJSLCL.js';
22
23
  export { StatCard } from '../chunk-YPTTSJPM.js';
23
24
  export { StatGroup } from '../chunk-OUD75UB2.js';
24
- export { Stepper } from '../chunk-5QWIJSQM.js';
25
+ export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-KNHUBHFX.js';
25
26
  export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-GFYQKMQZ.js';
26
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-DKNBGL26.js';
27
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-3PR65I3H.js';
27
28
  export { TagGroup } from '../chunk-O2EGEONV.js';
28
29
  export { matchesShortcut, useShortcut } from '../chunk-AYHIF6DH.js';
29
30
  export { SLIDE_COMPARE_LABELS, SlideCompare } from '../chunk-7CGPPAYR.js';
30
- export { SlideFilmstrip } from '../chunk-FBW3Q2OY.js';
31
+ export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-356JNSER.js';
31
32
  export { SearchTrigger } from '../chunk-6DRDCT22.js';
32
33
  export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-INVSUFJK.js';
33
34
  export { NavGroup, NavItem, SidebarNav } from '../chunk-E7QLG3PG.js';
34
35
  export { SegmentedMeter, segmentedMeterLabel } from '../chunk-4AK52VHB.js';
35
- export { SettingsTable, SettingsTableRow } from '../chunk-4RKTZSEW.js';
36
- export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-KNHUBHFX.js';
37
36
  export { Select } from '../chunk-XQZ6EWOE.js';
37
+ export { SettingsTable, SettingsTableRow } from '../chunk-4RKTZSEW.js';
38
+ export { Prose } from '../chunk-JCSA3XVH.js';
38
39
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
39
40
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-ZAJHGDAW.js';
40
41
  export { RelatedRow } from '../chunk-ZUTUI27P.js';
41
42
  export { Text } from '../chunk-IKBK4A5O.js';
43
+ export { RichEditor, preloadRichEditor } from '../chunk-PFZOFAQ6.js';
44
+ export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
42
45
  export { canonicalMarkdown, roundTripMarkdown } from '../chunk-SWD4QBL6.js';
43
46
  import '../chunk-QH6VYJ3X.js';
44
- export { RichEditor, preloadRichEditor } from '../chunk-X3UYTAOG.js';
45
- export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
46
- export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-356JNSER.js';
47
+ export { PresenceStack } from '../chunk-3LYWD3BO.js';
47
48
  export { PresenterView, formatStopwatch } from '../chunk-UXYEOWG5.js';
48
49
  export { SLIDE_NAV_LABELS, SlideNav } from '../chunk-6VOS2GMB.js';
49
50
  export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from '../chunk-RMEBFYL7.js';
50
- export { PresenceStack } from '../chunk-3LYWD3BO.js';
51
51
  export { PricingCard } from '../chunk-U3ILLCR2.js';
52
52
  export { PrincipalPicker } from '../chunk-D2OL3ZSS.js';
53
53
  export { PropertyList } from '../chunk-T6MXORP5.js';
54
54
  export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-YA3AWELW.js';
55
- export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
56
55
  export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-CFGGE3HO.js';
57
56
  export { TreeGrid } from '../chunk-3KYVFG47.js';
58
57
  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';
58
+ export { Outline, scrollToHeading, useActiveHeading } from '../chunk-A5YKNRG6.js';
59
59
  export { PageNote } from '../chunk-CV4NES3P.js';
60
60
  export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-GPWJCP3U.js';
61
- import '../chunk-CENOOTAV.js';
62
61
  export { PinTile } from '../chunk-6MIXD6IW.js';
62
+ import '../chunk-CENOOTAV.js';
63
63
  export { MERGE_CONFLICTS_LABELS, MergeConflicts } from '../chunk-2PEXZ7L4.js';
64
64
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from '../chunk-UGNUUVRI.js';
65
65
  export { NewItemsNotice } from '../chunk-PXU6HOZB.js';
66
- export { OrgLabel } from '../chunk-ONQKKHON.js';
67
66
  export { FactLine, ObjectHeader, SetByLine } from '../chunk-ODOJJGXH.js';
68
- export { List, ListItem } from '../chunk-NZWX27J7.js';
67
+ export { OrgLabel } from '../chunk-ONQKKHON.js';
68
+ export { ListInput } from '../chunk-WYYCPV46.js';
69
69
  export { LIVE_CURSOR_HIDE_MS, LIVE_CURSOR_REST_MS, LiveCursor } from '../chunk-5XACKNYR.js';
70
70
  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';
71
71
  export { LockedLabel } from '../chunk-OHGH7O6T.js';
72
72
  export { MARKDOWN_CALLOUT_NAMES, MARKDOWN_CALLOUT_TONES, markdownBreaks, markdownClosesFence, markdownCodeText, markdownFenceOf, markdownHeadingOf, markdownInline, markdownLines, parseMarkdown, parseMarkdownSpans, safeHref } from '../chunk-BAKPMH3S.js';
73
73
  export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-EX22Q5SH.js';
74
+ export { LAYERS_LIST_LABELS, LayersList } from '../chunk-M6NQ4XGK.js';
74
75
  export { AutoGrid, Inline, Spacer, Stack } from '../chunk-ZAC7SKUN.js';
75
76
  export { Link } from '../chunk-FBSEJO2C.js';
76
77
  export { LinkInterstitial, openExternal } from '../chunk-N3TFYBN3.js';
77
- export { LAYERS_LIST_LABELS, LayersList } from '../chunk-M6NQ4XGK.js';
78
- export { ListInput } from '../chunk-WYYCPV46.js';
79
- import '../chunk-MICRGE3J.js';
78
+ export { List, ListItem } from '../chunk-NZWX27J7.js';
79
+ export { Highlight, highlightRanges, highlightTerms } from '../chunk-H6VKCIWV.js';
80
80
  import '../chunk-FFMCMSJB.js';
81
81
  export { IconTile } from '../chunk-IXJHTFXG.js';
82
82
  export { ImageUpload } from '../chunk-FWYHRU7M.js';
83
83
  export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from '../chunk-XYCADWZN.js';
84
84
  export { FactList } from '../chunk-RLJXVFEH.js';
85
- export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-THDGBD6Y.js';
86
85
  export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-UYZZV4DZ.js';
86
+ export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-THDGBD6Y.js';
87
87
  export { FindingList } from '../chunk-NTB5LRRD.js';
88
88
  export { FollowBanner } from '../chunk-OED6LUWE.js';
89
89
  export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRAME_ORIGIN_MODES, FRAME_SANDBOX_TOKENS, applyFrameTheme, checkFrameSandbox, externalUrl, frameFragment, frameOriginMatches, frameThemeMessage, httpOrigin, isFocusExit, isFrameNonce, negotiateBridge, parseFrameFragment, portTargetOrigin, readFrameHello, readFramePortMessage, readFrameTheme, readOpenLink } from '../chunk-F6V2PTN6.js';
90
90
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
91
91
  export { IDLE_AFTER_MS, useFullscreen, useIdle } from '../chunk-W5XCNEZC.js';
92
- export { Highlight, highlightRanges, highlightTerms } from '../chunk-H6VKCIWV.js';
92
+ import '../chunk-MICRGE3J.js';
93
93
  export { DownloadButton } from '../chunk-BEHFTRMZ.js';
94
94
  export { downloadBlob, downloadText, safeFilename, useDownload } from '../chunk-IW55G7XG.js';
95
95
  export { EditingStatus } from '../chunk-TC7DJTXI.js';
96
96
  export { EntityChip } from '../chunk-OSKJZNBT.js';
97
97
  export { ErrorBoundary } from '../chunk-XX2VQE55.js';
98
98
  export { Eyebrow } from '../chunk-RK4XPHVG.js';
99
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-QRKT4XTT.js';
100
- export { PageHeader } from '../chunk-HOXGBLEY.js';
101
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-UB6MLXUL.js';
99
+ export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-HQJ24WPM.js';
100
+ export { Tag } from '../chunk-KYIAFNU7.js';
102
101
  export { DescriptionList, DescriptionListItem } from '../chunk-MFS6F2P7.js';
103
102
  export { DIFF_LIST_LABELS, DiffList } from '../chunk-LFHCXZO5.js';
104
103
  export { DIFF_SUMMARY_LABELS, DIFF_VIEW_LABELS, DiffSummary, DiffView, MAX_DIFF_LINES, collapseDiff, diffLines, diffStat, firstChangedLines, splitLines } from '../chunk-BVWSLXTY.js';
105
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-SYBYFQTY.js';
106
104
  export { Divider } from '../chunk-6KWNXIDE.js';
105
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-SYBYFQTY.js';
107
106
  export { CONFLICT_NOTE_LABELS, ConflictNote } from '../chunk-UO7JZVCO.js';
108
107
  export { Container } from '../chunk-HJO4WCH6.js';
109
108
  export { CursorFlag } from '../chunk-3BYIWOTV.js';
110
109
  export { PresenceRing, presenceHueClass } from '../chunk-I6POAB4V.js';
111
110
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from '../chunk-XIDD7PJO.js';
111
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-6QNN3WIT.js';
112
+ export { PageHeader } from '../chunk-HOXGBLEY.js';
113
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-UB6MLXUL.js';
112
114
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-FXBGEANQ.js';
113
- export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-HQJ24WPM.js';
114
- export { Tag } from '../chunk-KYIAFNU7.js';
115
115
  export { ChoiceButtons } from '../chunk-BWOIUOO3.js';
116
116
  export { ChoiceList } from '../chunk-EAQLI2SO.js';
117
117
  export { CodeBlock } from '../chunk-SEC2GR2V.js';
@@ -125,7 +125,10 @@ export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, use
125
125
  export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-MMPKN7WV.js';
126
126
  export { ConfirmField, confirmMatches } from '../chunk-PEUGPAKH.js';
127
127
  export { InlineCode } from '../chunk-5CLW2CXT.js';
128
- export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
128
+ export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-C7OKDYBH.js';
129
+ export { Note } from '../chunk-5SZGKSGL.js';
130
+ export { CanvasToolbar, toolForKey } from '../chunk-B5UHX5UC.js';
131
+ export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
129
132
  export { CatalogTile } from '../chunk-PCT47E7O.js';
130
133
  export { ChangeMark } from '../chunk-66X5WDKE.js';
131
134
  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,12 +144,9 @@ export { Breadcrumb } from '../chunk-VWNC2L6W.js';
141
144
  export { KeyChip } from '../chunk-FYTIJM2T.js';
142
145
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from '../chunk-GXQ3B46I.js';
143
146
  export { Callout } from '../chunk-SZZRIHGT.js';
144
- export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-C7OKDYBH.js';
145
- export { Note } from '../chunk-5SZGKSGL.js';
146
- export { CanvasToolbar, toolForKey } from '../chunk-B5UHX5UC.js';
147
- export { Toolbar, ToolbarOverflow, ToolbarWide } from '../chunk-NR4CPM4T.js';
148
147
  export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-DAERKOOG.js';
149
148
  import '../chunk-LM3ISVJA.js';
149
+ export { CanvasSchematic } from '../chunk-NBWNLYWZ.js';
150
150
  export { ArtifactMakeRow } from '../chunk-R2IBCEU6.js';
151
151
  export { ArtifactNameCell } from '../chunk-P5VGSVWG.js';
152
152
  export { AuthLayout } from '../chunk-S4DREXGM.js';
@@ -183,7 +183,6 @@ export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-CE2THTQR.js';
183
183
  export { ACCESS_DENIED_REASONS, AccessDeniedCard } from '../chunk-KV3ODJXH.js';
184
184
  export { EmptyState } from '../chunk-RA2ULG6H.js';
185
185
  export { Accordion, AccordionItem } from '../chunk-ZNOXQACX.js';
186
- export { ADD_PILL_MS, AddPill } from '../chunk-TROLVEZY.js';
187
186
  export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-3TXY3PJZ.js';
188
187
  export { Timeline, TimelineItem } from '../chunk-AUQPBL4O.js';
189
188
  export { Section } from '../chunk-3TFDQLW3.js';
@@ -195,9 +194,9 @@ export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SMBKXWML.js';
195
194
  export { DisclosureAnatomy } from '../chunk-FZVJDJFN.js';
196
195
  export { Count } from '../chunk-BHHIIK3M.js';
197
196
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
197
+ export { ADD_PILL_MS, AddPill } from '../chunk-TROLVEZY.js';
198
198
  export { Announcer, announce, useAnnouncer } from '../chunk-RSAQOKH3.js';
199
- export { ArrangeBoard } from '../chunk-QO7QEQKV.js';
200
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-GR4YM7HT.js';
199
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-SCPEMLLY.js';
201
200
  export { useMediaMatch } from '../chunk-RTPQDNW3.js';
202
201
  export { Menu } from '../chunk-D6FEHY5G.js';
203
202
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-OMV5W53A.js';
@@ -207,4 +206,5 @@ export { Button, ButtonLink } from '../chunk-OG6CL3EB.js';
207
206
  export { IconButton } from '../chunk-4FQT6ZAY.js';
208
207
  export { FOCUS_MODALITY_ATTRIBUTE, FOCUS_RETURNED_ATTRIBUTE, returnFocus, trackFocusModality, useFocusModality } from '../chunk-NUZHC6MM.js';
209
208
  export { VisuallyHidden } from '../chunk-BZFWDIV6.js';
209
+ export { ArrangeBoard } from '../chunk-QO7QEQKV.js';
210
210
  export { cx } from '../chunk-ODEQTPFM.js';
package/dist/index.js CHANGED
@@ -1,117 +1,117 @@
1
1
  import './chunk-S3QTFUJX.js';
2
+ export { VersionTimeline } from './chunk-NQCY44B3.js';
2
3
  export { WidgetFrame } from './chunk-DFK5EQTU.js';
3
- export { Prose } from './chunk-JCSA3XVH.js';
4
4
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from './chunk-FEJANUZK.js';
5
5
  export { ToastProvider, Toaster, useToast } from './chunk-AC22RZKC.js';
6
6
  export { TreeCanvas } from './chunk-5BUOMF6N.js';
7
7
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from './chunk-JSWOXRRE.js';
8
- export { VersionTimeline } from './chunk-NQCY44B3.js';
8
+ export { TagsInput } from './chunk-BH52LIY6.js';
9
9
  export { ThemeGallery } from './chunk-E4BOVKNJ.js';
10
10
  export { ThemeSwatch } from './chunk-MNFU2RNT.js';
11
- export { ThemeToggle } from './chunk-NP2C4Y4E.js';
12
11
  export { DensitySwitcher, ThemeSwitcher } from './chunk-KWWP3D7M.js';
12
+ export { ThemeToggle } from './chunk-NP2C4Y4E.js';
13
13
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from './chunk-Z24ZUSTX.js';
14
14
  export { TileGrid } from './chunk-NNTO3TNC.js';
15
15
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from './chunk-YPMGP2X4.js';
16
+ export { Stepper } from './chunk-5QWIJSQM.js';
16
17
  export { Switcher } from './chunk-JKAGN4V4.js';
17
18
  export { Table } from './chunk-V2N3BMOT.js';
18
19
  export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from './chunk-4BJK7FE5.js';
19
- export { TagsInput } from './chunk-BH52LIY6.js';
20
+ export { SlideFilmstrip } from './chunk-FBW3Q2OY.js';
20
21
  export { SlideGrid } from './chunk-3V5T5K5H.js';
21
22
  export { SOURCE_EDITOR_KEYS, SourceEditor, lineStart } from './chunk-D3EJSLCL.js';
22
23
  export { StatCard } from './chunk-YPTTSJPM.js';
23
24
  export { StatGroup } from './chunk-OUD75UB2.js';
24
- export { Stepper } from './chunk-5QWIJSQM.js';
25
+ export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from './chunk-KNHUBHFX.js';
25
26
  export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from './chunk-GFYQKMQZ.js';
26
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from './chunk-DKNBGL26.js';
27
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from './chunk-3PR65I3H.js';
27
28
  export { TagGroup } from './chunk-O2EGEONV.js';
28
29
  export { matchesShortcut, useShortcut } from './chunk-AYHIF6DH.js';
29
30
  export { SLIDE_COMPARE_LABELS, SlideCompare } from './chunk-7CGPPAYR.js';
30
- export { SlideFilmstrip } from './chunk-FBW3Q2OY.js';
31
+ export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-356JNSER.js';
31
32
  export { SearchTrigger } from './chunk-6DRDCT22.js';
32
33
  export { SectionFrame, SectionFrameBody, SectionFrameNav } from './chunk-INVSUFJK.js';
33
34
  export { NavGroup, NavItem, SidebarNav } from './chunk-E7QLG3PG.js';
34
35
  export { SegmentedMeter, segmentedMeterLabel } from './chunk-4AK52VHB.js';
35
- export { SettingsTable, SettingsTableRow } from './chunk-4RKTZSEW.js';
36
- export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from './chunk-KNHUBHFX.js';
37
36
  export { Select } from './chunk-XQZ6EWOE.js';
37
+ export { SettingsTable, SettingsTableRow } from './chunk-4RKTZSEW.js';
38
+ export { Prose } from './chunk-JCSA3XVH.js';
38
39
  export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from './chunk-Y56FM3K4.js';
39
40
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from './chunk-ZAJHGDAW.js';
40
41
  export { RelatedRow } from './chunk-ZUTUI27P.js';
41
42
  export { Text } from './chunk-IKBK4A5O.js';
43
+ export { RichEditor, preloadRichEditor } from './chunk-PFZOFAQ6.js';
44
+ export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
42
45
  export { canonicalMarkdown, roundTripMarkdown } from './chunk-SWD4QBL6.js';
43
46
  import './chunk-QH6VYJ3X.js';
44
- export { RichEditor, preloadRichEditor } from './chunk-X3UYTAOG.js';
45
- export { RICH_EDITOR_LABELS, richEditorLabels } from './chunk-CSQTDGTS.js';
46
- export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from './chunk-356JNSER.js';
47
+ export { PresenceStack } from './chunk-3LYWD3BO.js';
47
48
  export { PresenterView, formatStopwatch } from './chunk-UXYEOWG5.js';
48
49
  export { SLIDE_NAV_LABELS, SlideNav } from './chunk-6VOS2GMB.js';
49
50
  export { SLIDE_HEIGHT, SLIDE_WIDTH, SlideStage, useSlideKeys } from './chunk-RMEBFYL7.js';
50
- export { PresenceStack } from './chunk-3LYWD3BO.js';
51
51
  export { PricingCard } from './chunk-U3ILLCR2.js';
52
52
  export { PrincipalPicker } from './chunk-D2OL3ZSS.js';
53
53
  export { PropertyList } from './chunk-T6MXORP5.js';
54
54
  export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from './chunk-YA3AWELW.js';
55
- export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
56
55
  export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from './chunk-CFGGE3HO.js';
57
56
  export { TreeGrid } from './chunk-3KYVFG47.js';
58
57
  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';
58
+ export { Outline, scrollToHeading, useActiveHeading } from './chunk-A5YKNRG6.js';
59
59
  export { PageNote } from './chunk-CV4NES3P.js';
60
60
  export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from './chunk-GPWJCP3U.js';
61
- import './chunk-CENOOTAV.js';
62
61
  export { PinTile } from './chunk-6MIXD6IW.js';
62
+ import './chunk-CENOOTAV.js';
63
63
  export { MERGE_CONFLICTS_LABELS, MergeConflicts } from './chunk-2PEXZ7L4.js';
64
64
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from './chunk-UGNUUVRI.js';
65
65
  export { NewItemsNotice } from './chunk-PXU6HOZB.js';
66
- export { OrgLabel } from './chunk-ONQKKHON.js';
67
66
  export { FactLine, ObjectHeader, SetByLine } from './chunk-ODOJJGXH.js';
68
- export { List, ListItem } from './chunk-NZWX27J7.js';
67
+ export { OrgLabel } from './chunk-ONQKKHON.js';
68
+ export { ListInput } from './chunk-WYYCPV46.js';
69
69
  export { LIVE_CURSOR_HIDE_MS, LIVE_CURSOR_REST_MS, LiveCursor } from './chunk-5XACKNYR.js';
70
70
  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';
71
71
  export { LockedLabel } from './chunk-OHGH7O6T.js';
72
72
  export { MARKDOWN_CALLOUT_NAMES, MARKDOWN_CALLOUT_TONES, markdownBreaks, markdownClosesFence, markdownCodeText, markdownFenceOf, markdownHeadingOf, markdownInline, markdownLines, parseMarkdown, parseMarkdownSpans, safeHref } from './chunk-BAKPMH3S.js';
73
73
  export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from './chunk-EX22Q5SH.js';
74
+ export { LAYERS_LIST_LABELS, LayersList } from './chunk-M6NQ4XGK.js';
74
75
  export { AutoGrid, Inline, Spacer, Stack } from './chunk-ZAC7SKUN.js';
75
76
  export { Link } from './chunk-FBSEJO2C.js';
76
77
  export { LinkInterstitial, openExternal } from './chunk-N3TFYBN3.js';
77
- export { LAYERS_LIST_LABELS, LayersList } from './chunk-M6NQ4XGK.js';
78
- export { ListInput } from './chunk-WYYCPV46.js';
79
- import './chunk-MICRGE3J.js';
78
+ export { List, ListItem } from './chunk-NZWX27J7.js';
79
+ export { Highlight, highlightRanges, highlightTerms } from './chunk-H6VKCIWV.js';
80
80
  import './chunk-FFMCMSJB.js';
81
81
  export { IconTile } from './chunk-IXJHTFXG.js';
82
82
  export { ImageUpload } from './chunk-FWYHRU7M.js';
83
83
  export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from './chunk-XYCADWZN.js';
84
84
  export { FactList } from './chunk-RLJXVFEH.js';
85
- export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-THDGBD6Y.js';
86
85
  export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from './chunk-UYZZV4DZ.js';
86
+ export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from './chunk-THDGBD6Y.js';
87
87
  export { FindingList } from './chunk-NTB5LRRD.js';
88
88
  export { FollowBanner } from './chunk-OED6LUWE.js';
89
89
  export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRAME_ORIGIN_MODES, FRAME_SANDBOX_TOKENS, applyFrameTheme, checkFrameSandbox, externalUrl, frameFragment, frameOriginMatches, frameThemeMessage, httpOrigin, isFocusExit, isFrameNonce, negotiateBridge, parseFrameFragment, portTargetOrigin, readFrameHello, readFramePortMessage, readFrameTheme, readOpenLink } from './chunk-F6V2PTN6.js';
90
90
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from './chunk-ZXXDZJQN.js';
91
91
  export { IDLE_AFTER_MS, useFullscreen, useIdle } from './chunk-W5XCNEZC.js';
92
- export { Highlight, highlightRanges, highlightTerms } from './chunk-H6VKCIWV.js';
92
+ import './chunk-MICRGE3J.js';
93
93
  export { DownloadButton } from './chunk-BEHFTRMZ.js';
94
94
  export { downloadBlob, downloadText, safeFilename, useDownload } from './chunk-IW55G7XG.js';
95
95
  export { EditingStatus } from './chunk-TC7DJTXI.js';
96
96
  export { EntityChip } from './chunk-OSKJZNBT.js';
97
97
  export { ErrorBoundary } from './chunk-XX2VQE55.js';
98
98
  export { Eyebrow } from './chunk-RK4XPHVG.js';
99
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-QRKT4XTT.js';
100
- export { PageHeader } from './chunk-HOXGBLEY.js';
101
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from './chunk-UB6MLXUL.js';
99
+ export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from './chunk-HQJ24WPM.js';
100
+ export { Tag } from './chunk-KYIAFNU7.js';
102
101
  export { DescriptionList, DescriptionListItem } from './chunk-MFS6F2P7.js';
103
102
  export { DIFF_LIST_LABELS, DiffList } from './chunk-LFHCXZO5.js';
104
103
  export { DIFF_SUMMARY_LABELS, DIFF_VIEW_LABELS, DiffSummary, DiffView, MAX_DIFF_LINES, collapseDiff, diffLines, diffStat, firstChangedLines, splitLines } from './chunk-BVWSLXTY.js';
105
- export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-SYBYFQTY.js';
106
104
  export { Divider } from './chunk-6KWNXIDE.js';
105
+ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from './chunk-SYBYFQTY.js';
107
106
  export { CONFLICT_NOTE_LABELS, ConflictNote } from './chunk-UO7JZVCO.js';
108
107
  export { Container } from './chunk-HJO4WCH6.js';
109
108
  export { CursorFlag } from './chunk-3BYIWOTV.js';
110
109
  export { PresenceRing, presenceHueClass } from './chunk-I6POAB4V.js';
111
110
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, fitGridColumns, parseGridSort } from './chunk-XIDD7PJO.js';
111
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from './chunk-6QNN3WIT.js';
112
+ export { PageHeader } from './chunk-HOXGBLEY.js';
113
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from './chunk-UB6MLXUL.js';
112
114
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from './chunk-FXBGEANQ.js';
113
- export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from './chunk-HQJ24WPM.js';
114
- export { Tag } from './chunk-KYIAFNU7.js';
115
115
  export { ChoiceButtons } from './chunk-BWOIUOO3.js';
116
116
  export { ChoiceList } from './chunk-EAQLI2SO.js';
117
117
  export { CodeBlock } from './chunk-SEC2GR2V.js';
@@ -125,7 +125,10 @@ export { HIGHLIGHT_REST_MS, TYPE_AHEAD_WINDOW, useHighlightRest, useListbox, use
125
125
  export { COMMENT_THREAD_LABELS, CommentThread } from './chunk-MMPKN7WV.js';
126
126
  export { ConfirmField, confirmMatches } from './chunk-PEUGPAKH.js';
127
127
  export { InlineCode } from './chunk-5CLW2CXT.js';
128
- export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
128
+ export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from './chunk-C7OKDYBH.js';
129
+ export { Note } from './chunk-5SZGKSGL.js';
130
+ export { CanvasToolbar, toolForKey } from './chunk-B5UHX5UC.js';
131
+ export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
129
132
  export { CatalogTile } from './chunk-PCT47E7O.js';
130
133
  export { ChangeMark } from './chunk-66X5WDKE.js';
131
134
  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,12 +144,9 @@ export { Breadcrumb } from './chunk-VWNC2L6W.js';
141
144
  export { KeyChip } from './chunk-FYTIJM2T.js';
142
145
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from './chunk-GXQ3B46I.js';
143
146
  export { Callout } from './chunk-SZZRIHGT.js';
144
- export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from './chunk-C7OKDYBH.js';
145
- export { Note } from './chunk-5SZGKSGL.js';
146
- export { CanvasToolbar, toolForKey } from './chunk-B5UHX5UC.js';
147
- export { Toolbar, ToolbarOverflow, ToolbarWide } from './chunk-NR4CPM4T.js';
148
147
  export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from './chunk-DAERKOOG.js';
149
148
  import './chunk-LM3ISVJA.js';
149
+ export { CanvasSchematic } from './chunk-NBWNLYWZ.js';
150
150
  export { ArtifactMakeRow } from './chunk-R2IBCEU6.js';
151
151
  export { ArtifactNameCell } from './chunk-P5VGSVWG.js';
152
152
  export { AuthLayout } from './chunk-S4DREXGM.js';
@@ -183,7 +183,6 @@ export { ARTIFACT_KINDS, ArtifactKindGlyph } from './chunk-CE2THTQR.js';
183
183
  export { ACCESS_DENIED_REASONS, AccessDeniedCard } from './chunk-KV3ODJXH.js';
184
184
  export { EmptyState } from './chunk-RA2ULG6H.js';
185
185
  export { Accordion, AccordionItem } from './chunk-ZNOXQACX.js';
186
- export { ADD_PILL_MS, AddPill } from './chunk-TROLVEZY.js';
187
186
  export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from './chunk-3TXY3PJZ.js';
188
187
  export { Timeline, TimelineItem } from './chunk-AUQPBL4O.js';
189
188
  export { Section } from './chunk-3TFDQLW3.js';
@@ -195,9 +194,9 @@ export { Kbd, isApplePlatform, keyGlyph } from './chunk-SMBKXWML.js';
195
194
  export { DisclosureAnatomy } from './chunk-FZVJDJFN.js';
196
195
  export { Count } from './chunk-BHHIIK3M.js';
197
196
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from './chunk-PQADV6P6.js';
197
+ export { ADD_PILL_MS, AddPill } from './chunk-TROLVEZY.js';
198
198
  export { Announcer, announce, useAnnouncer } from './chunk-RSAQOKH3.js';
199
- export { ArrangeBoard } from './chunk-QO7QEQKV.js';
200
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-GR4YM7HT.js';
199
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, useAppShell } from './chunk-SCPEMLLY.js';
201
200
  export { useMediaMatch } from './chunk-RTPQDNW3.js';
202
201
  export { Menu } from './chunk-D6FEHY5G.js';
203
202
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, anchorGone, outsideBounds, placePopup, useLayerContainer, viewportBounds } from './chunk-OMV5W53A.js';
@@ -207,4 +206,5 @@ export { Button, ButtonLink } from './chunk-OG6CL3EB.js';
207
206
  export { IconButton } from './chunk-4FQT6ZAY.js';
208
207
  export { FOCUS_MODALITY_ATTRIBUTE, FOCUS_RETURNED_ATTRIBUTE, returnFocus, trackFocusModality, useFocusModality } from './chunk-NUZHC6MM.js';
209
208
  export { VisuallyHidden } from './chunk-BZFWDIV6.js';
209
+ export { ArrangeBoard } from './chunk-QO7QEQKV.js';
210
210
  export { cx } from './chunk-ODEQTPFM.js';
package/dist/styles.css CHANGED
@@ -702,7 +702,7 @@
702
702
  }
703
703
 
704
704
 
705
- /* AppShell-VE2MAV42.css */
705
+ /* AppShell-V3TAAYL3.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.
@@ -860,6 +860,68 @@
860
860
  min-width: 0;
861
861
  }
862
862
 
863
+ /*
864
+ * THE HEAD'S STATUS, at the end of the name's line (`AppShell.RailStatus`):
865
+ * the application's state as a dot and a count, its words in its name and
866
+ * title. It ends on the nav's gutter, where every row's background ends, and
867
+ * it reserves the width of a dot and a two-figure count, so the name beside
868
+ * it truncates at one place whether the engine is healthy or has alarms.
869
+ */
870
+ .crewlet-app-shell__rail-status {
871
+ display: flex;
872
+ flex: none;
873
+ align-items: center;
874
+ justify-content: flex-end;
875
+ min-width: calc(var(--size-target-min) * 2 + var(--spacing-1));
876
+ margin-inline-end: var(--size-nav-gutter);
877
+ }
878
+
879
+ /* A lockup beside a status gives up its end inset: the head's gap parts the
880
+ two, and the inset is what kept a lockup alone on its line off the edge. */
881
+ .crewlet-app-shell__rail-head:has(> .crewlet-app-shell__rail-status) > .crewlet-brand {
882
+ padding-inline-end: 0;
883
+ }
884
+
885
+ /* The dot and the count on one compact target: the 24px floor each way. */
886
+ .crewlet-app-shell__rail-status-mark {
887
+ display: inline-flex;
888
+ align-items: center;
889
+ justify-content: center;
890
+ gap: calc(var(--spacing-1) + var(--spacing-1) / 2);
891
+ min-width: var(--size-target-min);
892
+ min-height: var(--size-target-min);
893
+ margin: 0;
894
+ padding: 0 var(--spacing-1);
895
+ border: 0;
896
+ border-radius: var(--radius-md);
897
+ background: transparent;
898
+ color: var(--color-text-secondary);
899
+ font: inherit;
900
+ }
901
+
902
+ .crewlet-app-shell__rail-status-icon,
903
+ .crewlet-app-shell__rail-status-trailing {
904
+ display: inline-flex;
905
+ align-items: center;
906
+ }
907
+
908
+ .crewlet-app-shell__rail-status-mark--action {
909
+ cursor: pointer;
910
+ transition: background var(--motion-duration-fast) var(--motion-easing-default);
911
+ }
912
+
913
+ /* Open is pointed at, as the foot's row draws it: the lift stays while the panel is open. */
914
+ .crewlet-app-shell__rail-status-mark--action:hover,
915
+ .crewlet-app-shell__rail-status-mark--action[aria-expanded='true'] {
916
+ background: var(--color-surface-hover);
917
+ }
918
+
919
+ /* Inside its own box, so the ring is never cut by the head or the drawer's edge. */
920
+ .crewlet-app-shell__rail-status-mark--action:focus-visible {
921
+ outline: 2px solid var(--color-focus);
922
+ outline-offset: var(--size-focus-ring-inset-offset);
923
+ }
924
+
863
925
  /*
864
926
  * THE RAIL'S FIELD ON THE NAV'S COLUMNS. It stands on the nav's gutter, so
865
927
  * its right edge is where every row's background ends; and its glyph stands
@@ -1405,7 +1467,8 @@
1405
1467
  .crewlet-app-shell__rail,
1406
1468
  .crewlet-app-shell__rail[data-open='true'],
1407
1469
  .crewlet-app-shell__rail-row--action,
1408
- .crewlet-app-shell__rail-foot > .crewlet-btn {
1470
+ .crewlet-app-shell__rail-foot > .crewlet-btn,
1471
+ .crewlet-app-shell__rail-status-mark--action {
1409
1472
  transition: none;
1410
1473
  }
1411
1474
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.40.1",
3
+ "version": "0.41.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.40.1",
46
- "@crewlethq/tokens": "0.40.1",
45
+ "@crewlethq/icons": "0.41.0",
46
+ "@crewlethq/tokens": "0.41.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 { schema, readMarkdown, writeMarkdown } from './chunk-QH6VYJ3X.js';
2
1
  import { richEditorLabels } from './chunk-CSQTDGTS.js';
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
5
  import { FormField, Input } from './chunk-TYONQSOK.js';
@@ -1,7 +1,7 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
+ import { Tag } from './chunk-KYIAFNU7.js';
2
3
  import { CursorFlag } from './chunk-3BYIWOTV.js';
3
4
  import { presenceHueClass } from './chunk-I6POAB4V.js';
4
- import { Tag } from './chunk-KYIAFNU7.js';
5
5
  import { ChangeMark } from './chunk-66X5WDKE.js';
6
6
  import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, fitSamples, fittedWidth, columnWidth, SHEET_COLUMN_BOUNDS, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, rangeOf, presenceByCell, presenceByRow, presenceByColumn, scrollToRow, planClear, visibleRows, cellDescription, nextSort, rowName, inRange, hasPrevious, flagText, toTSV, planPaste, parseTSV, isMod, moveFrom, isTypingKey, editorSide, optionHue, parseText, liveOptions, checkValue } from './chunk-LFSIKGRQ.js';
7
7
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
@@ -2,8 +2,8 @@ import { PageHeader } from './chunk-HOXGBLEY.js';
2
2
  import { DateTimePicker } from './chunk-UB6MLXUL.js';
3
3
  import { DataTable } from './chunk-FXBGEANQ.js';
4
4
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
5
- import { Popover } from './chunk-KHJIEPZV.js';
6
5
  import { Toolbar } from './chunk-NR4CPM4T.js';
6
+ import { Popover } from './chunk-KHJIEPZV.js';
7
7
  import { RelativeTime } from './chunk-3CZ7XAVY.js';
8
8
  import { Input } from './chunk-TYONQSOK.js';
9
9
  import { Kbd } from './chunk-SMBKXWML.js';