@crewlethq/ui 0.78.0 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +6 -0
  2. package/dist/AgentHandoffPanel/index.js +5 -5
  3. package/dist/AppShell/index.js +4 -4
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactBar/index.js +7 -7
  6. package/dist/ArtifactCard/index.js +6 -6
  7. package/dist/ArtifactPanel/index.js +1 -1
  8. package/dist/AvatarPicker/index.js +7 -7
  9. package/dist/Canvas/index.js +3 -3
  10. package/dist/CanvasBoard/index.js +5 -5
  11. package/dist/CanvasToolbar/index.js +4 -4
  12. package/dist/ChangeList/ChangeList.d.ts +16 -1
  13. package/dist/ChangeList/index.d.ts +1 -1
  14. package/dist/ChangeList/index.js +1 -1
  15. package/dist/{ChangeList-MDFH5NPH.css → ChangeList-ITJMTVDF.css} +53 -0
  16. package/dist/CheckGrid/index.js +4 -4
  17. package/dist/Checkbox/index.js +3 -3
  18. package/dist/ColorField/index.js +3 -3
  19. package/dist/Combobox/index.js +3 -3
  20. package/dist/CommandPalette/index.js +4 -4
  21. package/dist/CommentThread/index.js +6 -6
  22. package/dist/Composer/index.js +3 -3
  23. package/dist/ConfirmField/index.js +3 -3
  24. package/dist/ContrastBadge/index.js +2 -2
  25. package/dist/ContrastHelp/index.js +4 -4
  26. package/dist/DataGrid/index.js +4 -4
  27. package/dist/DataTable/DataTable.d.ts +41 -1
  28. package/dist/DataTable/index.d.ts +1 -1
  29. package/dist/DataTable/index.js +6 -6
  30. package/dist/{DataTable-H43JSHOI.css → DataTable-GSLDFY5U.css} +38 -0
  31. package/dist/DataView/index.js +8 -8
  32. package/dist/DateTimePicker/index.js +3 -3
  33. package/dist/DocTabsEditor/index.js +5 -5
  34. package/dist/{Editor-QO2GRTMK.js → Editor-BXOWAV46.js} +4 -4
  35. package/dist/FollowBanner/index.js +1 -1
  36. package/dist/HuePicker/index.js +6 -6
  37. package/dist/InlineEditor/index.js +1 -1
  38. package/dist/Input/index.js +2 -2
  39. package/dist/LinkInterstitial/index.js +2 -2
  40. package/dist/ListInput/index.js +4 -4
  41. package/dist/LogoSlot/index.js +3 -3
  42. package/dist/MarkdownEditor/index.js +6 -6
  43. package/dist/Menu/index.js +3 -3
  44. package/dist/MergeConflicts/index.js +6 -6
  45. package/dist/Modal/index.js +2 -2
  46. package/dist/OrgTable/index.js +1 -1
  47. package/dist/PeekRail/index.js +1 -1
  48. package/dist/PresenterView/index.js +2 -2
  49. package/dist/PrincipalPicker/index.js +4 -4
  50. package/dist/ProposalCard/index.js +5 -5
  51. package/dist/RichEditor/index.js +1 -1
  52. package/dist/SegmentedControl/index.js +5 -5
  53. package/dist/SelectionBar/index.js +1 -1
  54. package/dist/ShareDialog/index.js +2 -2
  55. package/dist/SheetColumnEditor/index.js +9 -9
  56. package/dist/SheetGrid/index.js +5 -5
  57. package/dist/SidePanel/index.js +1 -1
  58. package/dist/SlideCompare/index.js +1 -1
  59. package/dist/SlideFilmstrip/index.js +4 -4
  60. package/dist/Switcher/index.js +4 -4
  61. package/dist/Tabs/index.js +4 -4
  62. package/dist/TagsInput/index.js +2 -2
  63. package/dist/ThemeSwitcher/index.js +6 -6
  64. package/dist/TimeRangePicker/index.js +7 -7
  65. package/dist/TimeWindowPicker/index.js +4 -4
  66. package/dist/TreeCanvas/index.js +4 -4
  67. package/dist/TreeGrid/index.js +1 -1
  68. package/dist/ValueField/index.js +4 -4
  69. package/dist/VersionCompare/index.js +6 -6
  70. package/dist/{chunk-5N3MF7O2.js → chunk-2STOSJT3.js} +2 -2
  71. package/dist/{chunk-PP5E3FGY.js → chunk-3EKXL76Z.js} +1 -1
  72. package/dist/{chunk-Y7OXW5SB.js → chunk-3G2BC4K5.js} +1 -1
  73. package/dist/{chunk-4Y7PLU4I.js → chunk-45M73G5A.js} +1 -1
  74. package/dist/{chunk-E6ETTJWX.js → chunk-4WTLT66V.js} +4 -4
  75. package/dist/{chunk-BBD7PTBG.js → chunk-4XF7ENQA.js} +78 -27
  76. package/dist/{chunk-A6NUAQFW.js → chunk-57AKYFML.js} +1 -1
  77. package/dist/{chunk-3NYVPLPW.js → chunk-5CEQ3HLH.js} +1 -1
  78. package/dist/{chunk-FRLUJAFK.js → chunk-6EWNMSS4.js} +1 -1
  79. package/dist/{chunk-U4ICCJJP.js → chunk-ADGNISEI.js} +2 -2
  80. package/dist/{chunk-DCAT5OAX.js → chunk-BLGBD2D2.js} +2 -2
  81. package/dist/{chunk-LXB4CABM.js → chunk-BRWR3QIG.js} +56 -36
  82. package/dist/{chunk-WM3U4ARK.js → chunk-CFTBESST.js} +1 -1
  83. package/dist/{chunk-CZUIPICC.js → chunk-E35HYQMK.js} +1 -1
  84. package/dist/{chunk-LE6K34SN.js → chunk-ERB7UI3P.js} +1 -1
  85. package/dist/{chunk-ODAZIKZF.js → chunk-FQI62PIZ.js} +2 -2
  86. package/dist/{chunk-BRFIUUXX.js → chunk-GHQG4VZA.js} +2 -2
  87. package/dist/{chunk-QEVYTXCY.js → chunk-HA3C53OU.js} +3 -3
  88. package/dist/{chunk-4O5XNGDC.js → chunk-HQOEAUDJ.js} +1 -1
  89. package/dist/{chunk-JIBZ5SF5.js → chunk-JBA6ZDPV.js} +2 -2
  90. package/dist/{chunk-TNU6U7C5.js → chunk-JNORDILD.js} +2 -2
  91. package/dist/{chunk-VDIKDCNE.js → chunk-JQEXAH7G.js} +1 -1
  92. package/dist/{chunk-SQ7GYC4K.js → chunk-KL6A7JGH.js} +1 -1
  93. package/dist/{chunk-MKWURHR5.js → chunk-LCZULGMB.js} +1 -1
  94. package/dist/{chunk-GKWZTTFV.js → chunk-LMQG3VPG.js} +1 -1
  95. package/dist/{chunk-HUIYSNBS.js → chunk-MGQKF7GK.js} +1 -1
  96. package/dist/{chunk-SZ75VYRX.js → chunk-MP7DGKB6.js} +1 -1
  97. package/dist/{chunk-LWKMJMVC.js → chunk-OWHETZIU.js} +1 -1
  98. package/dist/{chunk-PQDQTK64.js → chunk-OZAMLQY7.js} +1 -1
  99. package/dist/{chunk-L5PK2MXF.js → chunk-QHQGJQV7.js} +1 -1
  100. package/dist/{chunk-72Y5DBSY.js → chunk-RIAPCEB5.js} +2 -2
  101. package/dist/{chunk-TL74TBDR.js → chunk-T24HBEU6.js} +1 -1
  102. package/dist/{chunk-EVOGHRFN.js → chunk-TJIBTHWJ.js} +2 -2
  103. package/dist/{chunk-2GBG7KPK.js → chunk-TKUAGWNR.js} +1 -1
  104. package/dist/{chunk-HMOGLAXY.js → chunk-TPCBPGSB.js} +1 -1
  105. package/dist/{chunk-LJSQT5NJ.js → chunk-TPIMOGOZ.js} +1 -1
  106. package/dist/{chunk-HDLUG3MA.js → chunk-UY3FWQWG.js} +2 -2
  107. package/dist/{chunk-LPN3RHMA.js → chunk-W3VDHUJM.js} +1 -1
  108. package/dist/{chunk-62GVKZJI.js → chunk-YQDRJZ5J.js} +1 -1
  109. package/dist/{chunk-UQHTHOSZ.js → chunk-YT5SWN4Q.js} +1 -1
  110. package/dist/{chunk-KP5DDOMF.js → chunk-Z4H3NF7U.js} +4 -4
  111. package/dist/{chunk-HZHFXKVP.js → chunk-ZKLEAK7M.js} +2 -2
  112. package/dist/generated/index.js +71 -71
  113. package/dist/index.js +71 -71
  114. package/dist/styles.css +93 -2
  115. package/package.json +3 -3
  116. package/dist/{chunk-MGWFVAPN.js → chunk-7PJFUQMY.js} +1 -1
  117. package/dist/{chunk-6Q7RW2JJ.js → chunk-FB3TCNQP.js} +1 -1
  118. package/dist/{chunk-SWLVR54P.js → chunk-HPI5J6AR.js} +1 -1
  119. package/dist/{chunk-EMCVX5FY.js → chunk-OBPINJNO.js} +1 -1
  120. package/dist/{chunk-KNAHKQD4.js → chunk-OQG4P5KU.js} +1 -1
  121. package/dist/{chunk-TD6LHL7M.js → chunk-WK4FQPYW.js} +1 -1
@@ -2,13 +2,13 @@ import { Modal } from './chunk-C667GCU7.js';
2
2
  import { useClipboard } from './chunk-STJ7QBC3.js';
3
3
  import { EmptyValue } from './chunk-RE3FBGQQ.js';
4
4
  import { useCardHeaderSlot } from './chunk-AV2DXAEL.js';
5
- import { Checkbox } from './chunk-GKWZTTFV.js';
6
- import { Menu } from './chunk-KNAHKQD4.js';
5
+ import { Checkbox } from './chunk-LMQG3VPG.js';
6
+ import { Menu } from './chunk-OQG4P5KU.js';
7
7
  import { Button } from './chunk-DGXZ635L.js';
8
8
  import { IconButton } from './chunk-UAUP6XGK.js';
9
9
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
10
10
  import { cx } from './chunk-ODEQTPFM.js';
11
- import './DataTable-H43JSHOI.css';
11
+ import './DataTable-GSLDFY5U.css';
12
12
  import React, { useState, useCallback, useMemo, useRef, useLayoutEffect, useEffect, useId } from 'react';
13
13
  import { createPortal } from 'react-dom';
14
14
  import { CheckGlyph, CircleAlertGlyph, CopyGlyph, ChevronsLeftGlyph, ChevronLeftGlyph, ChevronRightGlyph, ChevronsRightGlyph, SettingsGlyph, GripVerticalGlyph, ChevronUpGlyph, ChevronDownGlyph, TrashGlyph, ArrowUpGlyph, ArrowDownGlyph, ChevronsUpDownGlyph, RotateCcwGlyph } from '@crewlethq/icons/glyphs';
@@ -224,6 +224,7 @@ var DataTable = ({
224
224
  pageCount,
225
225
  minColumnWidth = 80,
226
226
  resizable = true,
227
+ columnSizing = "fill",
227
228
  itemsPerPageOptions = [5, 10, 20, 50, 100],
228
229
  onRowAction = null,
229
230
  actionLabel = "Delete",
@@ -270,6 +271,8 @@ var DataTable = ({
270
271
  loadingMore = false,
271
272
  loadMoreLabel = "Load more",
272
273
  title,
274
+ ariaLabel,
275
+ expandLabel,
273
276
  description,
274
277
  icon,
275
278
  defaultWrapLines,
@@ -283,6 +286,7 @@ var DataTable = ({
283
286
  return cellValue(row, "id");
284
287
  };
285
288
  const isCompact = variant === "compact";
289
+ const sizedToContent = isCompact && columnSizing === "content";
286
290
  const hasActionColumn = !!rowActions || showActions && !!onRowAction;
287
291
  const expandable = !!renderExpandedRow;
288
292
  const settingsEnabled = showSettings;
@@ -464,7 +468,8 @@ var DataTable = ({
464
468
  expandable,
465
469
  hasChromeColumn,
466
470
  isCompact,
467
- minColumnWidth
471
+ minColumnWidth,
472
+ sizedToContent
468
473
  });
469
474
  fitInputs.current = {
470
475
  columns,
@@ -475,10 +480,12 @@ var DataTable = ({
475
480
  expandable,
476
481
  hasChromeColumn,
477
482
  isCompact,
478
- minColumnWidth
483
+ minColumnWidth,
484
+ sizedToContent
479
485
  };
480
486
  useLayoutEffect(() => {
481
- const { columns: columns2, columnOrder: columnOrder2, visibleColumns: visibleColumns2, columnWidths: columnWidths2, resizedColumns: resizedColumns2, expandable: expandable2, hasChromeColumn: hasChromeColumn2, isCompact: isCompact2, minColumnWidth: minColumnWidth2 } = fitInputs.current;
487
+ const { columns: columns2, columnOrder: columnOrder2, visibleColumns: visibleColumns2, columnWidths: columnWidths2, resizedColumns: resizedColumns2, expandable: expandable2, hasChromeColumn: hasChromeColumn2, isCompact: isCompact2, minColumnWidth: minColumnWidth2, sizedToContent: sizedToContent2 } = fitInputs.current;
488
+ if (sizedToContent2) return;
482
489
  const el = scrollRef.current;
483
490
  if (!el) return;
484
491
  const box = el.getBoundingClientRect();
@@ -811,6 +818,8 @@ var DataTable = ({
811
818
  const [settingsSaid, setSettingsSaid] = useState("");
812
819
  const instanceId = useId();
813
820
  const reorderHintId = `${instanceId}-reorder`;
821
+ const titleId = `${instanceId}-title`;
822
+ const panelId = (index) => `${instanceId}-panel-${index}`;
814
823
  const columnLabelId = (columnKey) => `${instanceId}${COLUMN_LABEL_INFIX}${columnLabelKey(columnKey)}`;
815
824
  const handleToggleColumn = (columnKey) => {
816
825
  if (whyFixed(columnKey, draftVisibleColumns) !== null && draftVisibleColumns[columnKey] !== false) return;
@@ -926,6 +935,11 @@ var DataTable = ({
926
935
  }
927
936
  return value !== null && value !== void 0 ? value : /* @__PURE__ */ jsx(EmptyValue, { label: labels.absent });
928
937
  };
938
+ const statedWidth = (columnKey) => {
939
+ const width = columnWidths[columnKey];
940
+ if (width == null || sizedToContent && columns[columnKey]?.width == null) return void 0;
941
+ return { width: `${width}px` };
942
+ };
929
943
  const columnClasses = (column) => cx(
930
944
  column.align === "right" && "crewlet-data-table__cell--right",
931
945
  column.align === "center" && "crewlet-data-table__cell--center",
@@ -936,9 +950,7 @@ var DataTable = ({
936
950
  if (!column) return null;
937
951
  const style = {};
938
952
  if (isCompact) {
939
- if (columnWidths[columnKey] != null) {
940
- style.width = `${columnWidths[columnKey]}px`;
941
- }
953
+ Object.assign(style, statedWidth(columnKey));
942
954
  } else {
943
955
  style.width = `${columnWidths[columnKey]}px`;
944
956
  }
@@ -972,14 +984,11 @@ var DataTable = ({
972
984
  const ariaSort = isActive ? effectiveSort.direction === "asc" ? "ascending" : "descending" : void 0;
973
985
  const isSticky = column.sticky === "right";
974
986
  if (isCompact) {
975
- const style = {};
976
- if (columnWidths[columnKey] != null) {
977
- style.width = `${columnWidths[columnKey]}px`;
978
- }
987
+ const style = { ...statedWidth(columnKey) };
979
988
  const visibleStickyExists = columnOrder.some(
980
989
  (k) => columns[k]?.sticky === "right" && isColumnVisible(k)
981
990
  );
982
- const suppressResizer = !resizable || isSticky || visibleStickyExists;
991
+ const suppressResizer = !resizable || sizedToContent || isSticky || visibleStickyExists;
983
992
  const resizer = suppressResizer ? null : /* @__PURE__ */ jsx(
984
993
  "button",
985
994
  {
@@ -1205,7 +1214,7 @@ var DataTable = ({
1205
1214
  "__expand"
1206
1215
  );
1207
1216
  };
1208
- const renderExpandCell = (rowIsOpen, canExpand, onToggle) => {
1217
+ const renderExpandCell = (row, rowIsOpen, canExpand, onToggle, controls) => {
1209
1218
  if (!expandable) return null;
1210
1219
  return /* @__PURE__ */ jsx("td", { className: "crewlet-data-table__expand-cell", style: { width: 32 }, children: canExpand && /* @__PURE__ */ jsx(
1211
1220
  "button",
@@ -1213,7 +1222,8 @@ var DataTable = ({
1213
1222
  type: "button",
1214
1223
  className: "crewlet-data-table__expand-btn",
1215
1224
  "aria-expanded": rowIsOpen,
1216
- "aria-label": rowIsOpen ? labels.collapseRow : labels.expandRow,
1225
+ "aria-controls": rowIsOpen ? controls : void 0,
1226
+ "aria-label": expandLabel ? expandLabel(row, rowIsOpen) : rowIsOpen ? labels.collapseRow : labels.expandRow,
1217
1227
  onClick: (event) => {
1218
1228
  event.stopPropagation();
1219
1229
  onToggle();
@@ -1329,7 +1339,7 @@ var DataTable = ({
1329
1339
  headerVisible && /* @__PURE__ */ jsxs("header", { className: "crewlet-data-table__header", children: [
1330
1340
  icon != null && /* @__PURE__ */ jsx("span", { className: "crewlet-data-table__header-icon", children: icon }),
1331
1341
  /* @__PURE__ */ jsxs("div", { className: "crewlet-data-table__header-text", children: [
1332
- title != null && /* @__PURE__ */ jsx("h3", { className: "crewlet-data-table__title", children: title }),
1342
+ title != null && /* @__PURE__ */ jsx("h3", { id: titleId, className: "crewlet-data-table__title", children: title }),
1333
1343
  description != null && /* @__PURE__ */ jsx("p", { className: "crewlet-data-table__description", children: description })
1334
1344
  ] }),
1335
1345
  renderTopControls
@@ -1385,9 +1395,12 @@ var DataTable = ({
1385
1395
  {
1386
1396
  className: cx(
1387
1397
  "crewlet-data-table__table",
1398
+ sizedToContent && "crewlet-data-table__table--content",
1388
1399
  !bodyHoldsRows && "crewlet-data-table__table--rowless"
1389
1400
  ),
1390
1401
  "aria-busy": loading || void 0,
1402
+ "aria-label": ariaLabel,
1403
+ "aria-labelledby": ariaLabel == null && headerVisible && title != null ? titleId : void 0,
1391
1404
  children: [
1392
1405
  /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
1393
1406
  renderExpandHeader(),
@@ -1418,23 +1431,16 @@ var DataTable = ({
1418
1431
  );
1419
1432
  return /* @__PURE__ */ jsxs("tr", { className: "crewlet-data-table__skeleton-row", "aria-hidden": true, children: [
1420
1433
  expandable && /* @__PURE__ */ jsx("td", { className: "crewlet-data-table__expand-cell", style: { width: 32 } }, "__expand"),
1421
- visibleKeys.map((columnKey, colIdx) => /* @__PURE__ */ jsx(
1422
- "td",
1434
+ visibleKeys.map((columnKey, colIdx) => /* @__PURE__ */ jsx("td", { style: statedWidth(columnKey), children: /* @__PURE__ */ jsx(
1435
+ "span",
1423
1436
  {
1424
- style: columnWidths[columnKey] != null ? { width: `${columnWidths[columnKey]}px` } : void 0,
1425
- children: /* @__PURE__ */ jsx(
1426
- "span",
1427
- {
1428
- className: "crewlet-data-table__skeleton-bar",
1429
- style: {
1430
- width: `${widths[(rowIdx + colIdx) % widths.length]}%`,
1431
- animationDelay: `${rowIdx * 0.1}s`
1432
- }
1433
- }
1434
- )
1435
- },
1436
- columnKey
1437
- )),
1437
+ className: "crewlet-data-table__skeleton-bar",
1438
+ style: {
1439
+ width: `${widths[(rowIdx + colIdx) % widths.length]}%`,
1440
+ animationDelay: `${rowIdx * 0.1}s`
1441
+ }
1442
+ }
1443
+ ) }, columnKey)),
1438
1444
  isCompact && /* @__PURE__ */ jsx("td", { className: "crewlet-data-table__td--spacer", "aria-hidden": true }, "__spacer"),
1439
1445
  columnOrder.filter((key) => columns[key]?.sticky === "right" && isColumnVisible(key)).map((columnKey) => /* @__PURE__ */ jsx("td", { className: "crewlet-data-table__td--sticky-right" }, columnKey)),
1440
1446
  hasChromeColumn && /* @__PURE__ */ jsx("td", { className: "crewlet-data-table__td--actions" }, "__actions")
@@ -1455,7 +1461,7 @@ var DataTable = ({
1455
1461
  className: "crewlet-data-table__empty",
1456
1462
  children: emptyMessage
1457
1463
  }
1458
- ) }) : displayedData.map((row) => {
1464
+ ) }) : displayedData.map((row, rowIndex) => {
1459
1465
  const trKey = resolveRowKey(row);
1460
1466
  const isArchived = archivedPredicate ? archivedPredicate(row) : false;
1461
1467
  const expanded = expandable ? expandedKeys.has(trKey) : false;
@@ -1502,7 +1508,13 @@ var DataTable = ({
1502
1508
  }
1503
1509
  } : void 0,
1504
1510
  children: [
1505
- renderExpandCell(expanded, canExpand, () => toggleExpanded(trKey)),
1511
+ renderExpandCell(
1512
+ row,
1513
+ expanded,
1514
+ canExpand,
1515
+ () => toggleExpanded(trKey),
1516
+ panelId(rowIndex)
1517
+ ),
1506
1518
  columnOrder.filter((columnKey) => columns[columnKey]?.sticky !== "right").map((columnKey) => {
1507
1519
  if (!isColumnVisible(columnKey)) return null;
1508
1520
  return renderBodyCell(row, columnKey, columnKey === firstVisibleKey ? rowLead : {});
@@ -1523,7 +1535,15 @@ var DataTable = ({
1523
1535
  "crewlet-data-table__expanded-row",
1524
1536
  isArchived ? "crewlet-data-table__row--archived" : void 0
1525
1537
  ].filter(Boolean).join(" "),
1526
- children: /* @__PURE__ */ jsx("td", { colSpan: expandColSpan, className: "crewlet-data-table__expanded-cell", children: expandedContent })
1538
+ children: /* @__PURE__ */ jsx(
1539
+ "td",
1540
+ {
1541
+ id: panelId(rowIndex),
1542
+ colSpan: expandColSpan,
1543
+ className: "crewlet-data-table__expanded-cell",
1544
+ children: expandedContent
1545
+ }
1546
+ )
1527
1547
  }
1528
1548
  ),
1529
1549
  accessory != null && /* @__PURE__ */ jsx(
@@ -1,4 +1,4 @@
1
- import { Combobox } from './chunk-FRLUJAFK.js';
1
+ import { Combobox } from './chunk-6EWNMSS4.js';
2
2
  import { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-N2BF272H.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './PrincipalPicker-P6UYHDJR.css';
@@ -1,5 +1,5 @@
1
1
  import { Kbd } from './chunk-ANTAQAR4.js';
2
- import { Textarea } from './chunk-6Q7RW2JJ.js';
2
+ import { Textarea } from './chunk-FB3TCNQP.js';
3
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
2
- import { SegmentedControl } from './chunk-PQDQTK64.js';
2
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { Note } from './chunk-5SZGKSGL.js';
2
- import { CanvasToolbar, toolForKey } from './chunk-SQ7GYC4K.js';
3
- import { IDENTITY_VIEW, Canvas } from './chunk-EMCVX5FY.js';
2
+ import { CanvasToolbar, toolForKey } from './chunk-KL6A7JGH.js';
3
+ import { IDENTITY_VIEW, Canvas } from './chunk-OBPINJNO.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './CanvasBoard-U6LR5F6H.css';
@@ -1,6 +1,6 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
- import { Combobox } from './chunk-FRLUJAFK.js';
3
- import { FormField, Textarea, InputAffix } from './chunk-6Q7RW2JJ.js';
2
+ import { Combobox } from './chunk-6EWNMSS4.js';
3
+ import { FormField, Textarea, InputAffix } from './chunk-FB3TCNQP.js';
4
4
  import './Input-WSMB7JG2.css';
5
5
  import './VisuallyHidden-AOEXU5EB.css';
6
6
  import './HitArea-QUOS6ZDJ.css';
@@ -1,11 +1,11 @@
1
1
  import { Tooltip } from './chunk-I33UIUZD.js';
2
- import { SegmentedControl } from './chunk-PQDQTK64.js';
2
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
3
3
  import { ArtifactIcon } from './chunk-AVL52EME.js';
4
4
  import { isApplePlatform, Kbd } from './chunk-ANTAQAR4.js';
5
- import { Menu } from './chunk-KNAHKQD4.js';
5
+ import { Menu } from './chunk-OQG4P5KU.js';
6
6
  import { Button } from './chunk-DGXZ635L.js';
7
- import { returnFocus } from './chunk-NUZHC6MM.js';
8
7
  import { IconButton } from './chunk-UAUP6XGK.js';
8
+ import { returnFocus } from './chunk-NUZHC6MM.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './ArtifactKinds-O3CALPVX.css';
11
11
  import './ArtifactBar-X46WJNW7.css';
@@ -1,4 +1,4 @@
1
- import { ContrastLevelTag } from './chunk-MGWFVAPN.js';
1
+ import { ContrastLevelTag } from './chunk-7PJFUQMY.js';
2
2
  import { Popover } from './chunk-KHJIEPZV.js';
3
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
1
  import { Modal } from './chunk-C667GCU7.js';
2
2
  import { Callout } from './chunk-BPCY7ZID.js';
3
- import { SegmentedControl } from './chunk-PQDQTK64.js';
4
- import { FormField, Input } from './chunk-6Q7RW2JJ.js';
3
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
4
+ import { FormField, Input } from './chunk-FB3TCNQP.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { useState } from 'react';
7
7
  import { ClockGlyph } from '@crewlethq/icons/glyphs';
@@ -1,6 +1,6 @@
1
1
  import { Toolbar } from './chunk-NR4CPM4T.js';
2
- import { SegmentedControl } from './chunk-PQDQTK64.js';
3
- import { tabId } from './chunk-LPN3RHMA.js';
2
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
3
+ import { tabId } from './chunk-W3VDHUJM.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './MarkdownEditor-BLCJRGDC.css';
@@ -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-EMCVX5FY.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-OBPINJNO.js';
3
3
  import { focusables } from './chunk-H5XTJ7GJ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-5FPK4CII.css';
@@ -1,5 +1,5 @@
1
1
  import { Toolbar } from './chunk-NR4CPM4T.js';
2
- import { ShortcutTip } from './chunk-EMCVX5FY.js';
2
+ import { ShortcutTip } from './chunk-OBPINJNO.js';
3
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './CanvasToolbar-EM5EVZED.css';
@@ -1,4 +1,4 @@
1
- import { Checkbox } from './chunk-GKWZTTFV.js';
1
+ import { Checkbox } from './chunk-LMQG3VPG.js';
2
2
  import { EmptyState } from './chunk-PPUR46MK.js';
3
3
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
@@ -1,4 +1,4 @@
1
- import { FormField } from './chunk-6Q7RW2JJ.js';
1
+ import { FormField } from './chunk-FB3TCNQP.js';
2
2
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Checkbox-GAMV2XD7.css';
@@ -1,4 +1,4 @@
1
- import { Checkbox } from './chunk-GKWZTTFV.js';
1
+ import { Checkbox } from './chunk-LMQG3VPG.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './CheckGrid-B3SRTHOJ.css';
4
4
  import { useId } from 'react';
@@ -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-QO2GRTMK.js').then(
12
+ loading ??= import('./Editor-BXOWAV46.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -1,5 +1,5 @@
1
1
  import { FileDrop, FilePickButton } from './chunk-KQWJWTED.js';
2
- import { contrastRatio } from './chunk-MGWFVAPN.js';
2
+ import { contrastRatio } from './chunk-7PJFUQMY.js';
3
3
  import { normalizeHex } from './chunk-7W3LYIOC.js';
4
4
  import { Button } from './chunk-DGXZ635L.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,4 +1,4 @@
1
- import { tabId } from './chunk-LPN3RHMA.js';
1
+ import { tabId } from './chunk-W3VDHUJM.js';
2
2
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
3
3
  import { Count } from './chunk-MLDTLZAO.js';
4
4
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-PQDQTK64.js';
2
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,11 +1,11 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { today, shiftMonth, CalendarGrid, compareDays } from './chunk-EE3DJMSQ.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
- import { Input } from './chunk-6Q7RW2JJ.js';
4
+ import { Input } from './chunk-FB3TCNQP.js';
5
5
  import { Button } from './chunk-DGXZ635L.js';
6
6
  import { isComposing } from './chunk-H5XTJ7GJ.js';
7
- import { useFocusModality } from './chunk-NUZHC6MM.js';
8
7
  import { IconButton } from './chunk-UAUP6XGK.js';
8
+ import { useFocusModality } from './chunk-NUZHC6MM.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './TimeWindowPicker-YZPKNZZI.css';
11
11
  import { useMemo, useState, useRef, useId, useEffect } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { normalizeHex, parseColourInput } from './chunk-7W3LYIOC.js';
2
- import { FormField, Input, InputAffix } from './chunk-6Q7RW2JJ.js';
2
+ import { FormField, Input, InputAffix } from './chunk-FB3TCNQP.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './ColorField-2OIOWT3Z.css';
5
5
  import { useId, useState } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { useReorder } from './chunk-MPVMB2DV.js';
2
- import { Input } from './chunk-6Q7RW2JJ.js';
3
- import { Menu } from './chunk-KNAHKQD4.js';
2
+ import { Input } from './chunk-FB3TCNQP.js';
3
+ import { Menu } from './chunk-OQG4P5KU.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
1
  import { Switch } from './chunk-3XDT5ZWL.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
- import { Checkbox } from './chunk-GKWZTTFV.js';
3
+ import { Checkbox } from './chunk-LMQG3VPG.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
1
  import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
3
  import { Kbd, isApplePlatform } from './chunk-ANTAQAR4.js';
4
- import { Menu } from './chunk-KNAHKQD4.js';
4
+ import { Menu } from './chunk-OQG4P5KU.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './SlideFilmstrip-BLGBCLEU.css';
@@ -1,5 +1,5 @@
1
1
  import { InlineCode } from './chunk-PLL7ZJHY.js';
2
- import { FormField, Input } from './chunk-6Q7RW2JJ.js';
2
+ import { FormField, Input } from './chunk-FB3TCNQP.js';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
5
5
  function confirmMatches(typed, phrase) {
@@ -1,10 +1,10 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Menu } from './chunk-KNAHKQD4.js';
2
+ import { Menu } from './chunk-OQG4P5KU.js';
3
3
  import { PeekContext, AsideContext, ResizeHandle, clampSize } from './chunk-PIYJNCN7.js';
4
4
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
5
5
  import { focusables, useModalLayer, isComposing, layerCount } from './chunk-H5XTJ7GJ.js';
6
- import { returnFocus } from './chunk-NUZHC6MM.js';
7
6
  import { IconButton } from './chunk-UAUP6XGK.js';
7
+ import { returnFocus } from './chunk-NUZHC6MM.js';
8
8
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './HitArea-QUOS6ZDJ.css';
@@ -1,7 +1,7 @@
1
1
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
2
2
  import { StatusDot } from './chunk-CYQBDZ6M.js';
3
3
  import { Count } from './chunk-MLDTLZAO.js';
4
- import { Menu } from './chunk-KNAHKQD4.js';
4
+ import { Menu } from './chunk-OQG4P5KU.js';
5
5
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
6
6
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
@@ -3,7 +3,7 @@ import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
4
  import { KeyChip, highlightMatch } from './chunk-HBDA76EZ.js';
5
5
  import { Skeleton } from './chunk-BRLZXYPA.js';
6
- import { Input } from './chunk-6Q7RW2JJ.js';
6
+ import { Input } from './chunk-FB3TCNQP.js';
7
7
  import { announce } from './chunk-2G355KDJ.js';
8
8
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
9
  import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,5 +1,5 @@
1
1
  import { diffLines, diffStat, collapseDiff, DiffSummary, DiffView } from './chunk-AOFVXE6V.js';
2
- import { SegmentedControl } from './chunk-PQDQTK64.js';
2
+ import { SegmentedControl } from './chunk-OZAMLQY7.js';
3
3
  import { EmptyState } from './chunk-PPUR46MK.js';
4
4
  import { useHeadingLevel, headingTag, nextHeadingLevel, HeadingLevelProvider } from './chunk-PQADV6P6.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chunk-LFSIKGRQ.js';
3
- import { HueSwatch } from './chunk-LE6K34SN.js';
3
+ import { HueSwatch } from './chunk-ERB7UI3P.js';
4
4
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
- import { Checkbox } from './chunk-GKWZTTFV.js';
5
+ import { Checkbox } from './chunk-LMQG3VPG.js';
6
6
  import { Kbd } from './chunk-ANTAQAR4.js';
7
- import { FormField, Input } from './chunk-6Q7RW2JJ.js';
8
- import { Menu } from './chunk-KNAHKQD4.js';
7
+ import { FormField, Input } from './chunk-FB3TCNQP.js';
8
+ import { Menu } from './chunk-OQG4P5KU.js';
9
9
  import { Button } from './chunk-DGXZ635L.js';
10
10
  import { IconButton } from './chunk-UAUP6XGK.js';
11
11
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
@@ -1,11 +1,11 @@
1
1
  import { Skeleton } from './chunk-BRLZXYPA.js';
2
2
  import { PrincipalAvatar } from './chunk-N2BF272H.js';
3
3
  import { RelativeTime } from './chunk-EJNJMHQG.js';
4
+ import { Card } from './chunk-4AUTALJA.js';
4
5
  import { AvatarStack } from './chunk-BT3GB7HC.js';
5
6
  import { ArtifactKindGround } from './chunk-NHLNHH4J.js';
6
- import { Card } from './chunk-4AUTALJA.js';
7
+ import { Checkbox } from './chunk-LMQG3VPG.js';
7
8
  import { ArtifactAccessGlyph } from './chunk-DOY3KC6I.js';
8
- import { Checkbox } from './chunk-GKWZTTFV.js';
9
9
  import { ArtifactKindGlyph } from './chunk-RSKW25Y5.js';
10
10
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
11
11
  import { cx } from './chunk-ODEQTPFM.js';