@crewlethq/ui 0.31.0 → 0.32.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 (47) hide show
  1. package/README.md +25 -1
  2. package/dist/Canvas/Canvas.d.ts +48 -2
  3. package/dist/Canvas/ShortcutTip.d.ts +22 -0
  4. package/dist/Canvas/geometry.d.ts +13 -3
  5. package/dist/Canvas/index.d.ts +3 -1
  6. package/dist/Canvas/index.js +3 -1
  7. package/dist/{Canvas-YVXHMWLN.css → Canvas-LRVNW7XN.css} +39 -3
  8. package/dist/CanvasBoard/CanvasBoard.d.ts +75 -12
  9. package/dist/CanvasBoard/index.d.ts +2 -2
  10. package/dist/CanvasBoard/index.js +6 -2
  11. package/dist/{CanvasBoard-ZLPDINSM.css → CanvasBoard-MBZVBWDO.css} +135 -30
  12. package/dist/CanvasToolbar/CanvasToolbar.d.ts +48 -0
  13. package/dist/CanvasToolbar/index.d.ts +3 -0
  14. package/dist/CanvasToolbar/index.js +12 -0
  15. package/dist/CanvasToolbar-AE5MXH7T.css +32 -0
  16. package/dist/DataView/index.js +3 -3
  17. package/dist/EditingStatus/index.js +1 -1
  18. package/dist/{EditingStatus-NFADEPSX.css → EditingStatus-L6THUAN7.css} +21 -0
  19. package/dist/PresenterView/index.js +2 -2
  20. package/dist/RichEditor/index.js +1 -1
  21. package/dist/SheetGrid/index.js +3 -3
  22. package/dist/SlideCompare/index.js +2 -2
  23. package/dist/SlideFilmstrip/index.js +2 -2
  24. package/dist/SlideGrid/index.js +2 -2
  25. package/dist/SlideStage/SlideStage.d.ts +6 -1
  26. package/dist/SlideStage/index.js +1 -1
  27. package/dist/TreeCanvas/index.js +4 -2
  28. package/dist/{chunk-ALMSY7RL.js → chunk-CRKFL423.js} +1 -1
  29. package/dist/{chunk-O63MWA4G.js → chunk-E6CR5PEV.js} +2 -1
  30. package/dist/chunk-E6EWK5YY.js +33 -0
  31. package/dist/{chunk-3DPIU2Q7.js → chunk-FPS3JIPQ.js} +1 -1
  32. package/dist/{chunk-OGAAHVF6.js → chunk-MBNFJSZS.js} +1 -1
  33. package/dist/{chunk-OJ45PPCV.js → chunk-OTN35CI4.js} +113 -30
  34. package/dist/{chunk-JODJS7MR.js → chunk-PJD2KFHX.js} +243 -39
  35. package/dist/{chunk-LR5QTFOE.js → chunk-RV7SZAHR.js} +1 -1
  36. package/dist/{chunk-VOX3YRFO.js → chunk-V5IGUXMZ.js} +1 -1
  37. package/dist/{chunk-3C3BRIMY.js → chunk-VS3KOOOL.js} +1 -1
  38. package/dist/{chunk-S6VG5ZFZ.js → chunk-WTNUVQVI.js} +1 -1
  39. package/dist/generated/index.d.ts +1 -0
  40. package/dist/generated/index.js +49 -48
  41. package/dist/index.js +49 -48
  42. package/dist/styles.css +233 -36
  43. package/package.json +3 -3
  44. package/dist/{Editor-YZ7KG2RD.js → Editor-YWBUJAQU.js} +1 -1
  45. package/dist/{chunk-UVJ5FF5V.js → chunk-3ZAFJ4GK.js} +2 -2
  46. package/dist/{chunk-CT4EZF62.js → chunk-LWXRD6L6.js} +2 -2
  47. /package/dist/{chunk-OC46246T.js → chunk-TF2P3OPS.js} +0 -0
package/dist/styles.css CHANGED
@@ -4143,7 +4143,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4143
4143
  }
4144
4144
 
4145
4145
 
4146
- /* Canvas-YVXHMWLN.css */
4146
+ /* Canvas-LRVNW7XN.css */
4147
4147
  /*
4148
4148
  * A bounded viewport (Canvas.tsx). It fills the box it is given and clips; the
4149
4149
  * page's own scroller is never involved.
@@ -4183,7 +4183,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4183
4183
  position: absolute;
4184
4184
  inset: 0;
4185
4185
  overflow: hidden;
4186
- cursor: grab;
4186
+ cursor: var(--crewlet-canvas-cursor-hand, grab);
4187
4187
  /* Until it is tapped, one finger belongs to the page's vertical scroll. */
4188
4188
  touch-action: pan-y;
4189
4189
  }
@@ -4201,8 +4201,28 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4201
4201
  touch-action: none;
4202
4202
  }
4203
4203
 
4204
- .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport {
4205
- cursor: grabbing;
4204
+ /*
4205
+ * THE POINTER SAYS WHAT A PRESS WILL DO. The drawings are the component's
4206
+ * (`CURSORS`, written on the root), each falling back to its keyword. A pan in
4207
+ * progress shows the closed hand whatever the tool, and it is set on the whole
4208
+ * canvas rather than the field, so a drag that crosses a board or a note keeps
4209
+ * the hand it started with.
4210
+ */
4211
+ .crewlet-canvas[data-cursor='pointer'] .crewlet-canvas__viewport {
4212
+ cursor: var(--crewlet-canvas-cursor-pointer, default);
4213
+ }
4214
+
4215
+ .crewlet-canvas[data-cursor='crosshair'] .crewlet-canvas__viewport {
4216
+ cursor: var(--crewlet-canvas-cursor-crosshair, crosshair);
4217
+ }
4218
+
4219
+ .crewlet-canvas[data-cursor='text'] .crewlet-canvas__viewport {
4220
+ cursor: var(--crewlet-canvas-cursor-text, text);
4221
+ }
4222
+
4223
+ .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport,
4224
+ .crewlet-canvas[data-panning='true'] .crewlet-canvas__viewport * {
4225
+ cursor: var(--crewlet-canvas-cursor-grabbing, grabbing);
4206
4226
  user-select: none;
4207
4227
  }
4208
4228
 
@@ -4407,6 +4427,22 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4407
4427
  border-radius: var(--radius-chip);
4408
4428
  }
4409
4429
 
4430
+ /* Actual size, as a ratio: the readout's own control, at the button step. */
4431
+ .crewlet-canvas__actual {
4432
+ width: var(--size-control-sm);
4433
+ }
4434
+
4435
+ /*
4436
+ * A control's tip with its shortcut (ShortcutTip.tsx): the words, then the
4437
+ * keycaps, on one line.
4438
+ */
4439
+ .crewlet-shortcut-tip {
4440
+ display: inline-flex;
4441
+ align-items: center;
4442
+ gap: var(--spacing-2);
4443
+ white-space: nowrap;
4444
+ }
4445
+
4410
4446
  .crewlet-canvas__zoom:hover:not(:disabled) {
4411
4447
  color: var(--color-text-primary);
4412
4448
  background: var(--color-surface-hover);
@@ -4474,7 +4510,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4474
4510
  }
4475
4511
 
4476
4512
 
4477
- /* CanvasBoard-ZLPDINSM.css */
4513
+ /* CanvasBoard-MBZVBWDO.css */
4478
4514
  /*
4479
4515
  * A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
4480
4516
  * out in canvas pixels inside the canvas's world and scale with it; their
@@ -4493,6 +4529,25 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4493
4529
  position: relative;
4494
4530
  }
4495
4531
 
4532
+ /*
4533
+ * UNDER HAND, TEXT AND STICKY NOTHING ON THE CANVAS TAKES A PRESS: every press
4534
+ * reaches the field, which pans it (Hand) or places a note on it (Text and
4535
+ * Sticky), and nothing is outlined under a pointer that cannot select it.
4536
+ */
4537
+ .crewlet-canvas-board:not([data-tool='move']) .crewlet-canvas-board__layer {
4538
+ pointer-events: none;
4539
+ }
4540
+
4541
+ /* ---- the tool palette, floating at the foot of the field ----------------- */
4542
+
4543
+ .crewlet-canvas-board__tools {
4544
+ position: absolute;
4545
+ bottom: var(--spacing-3);
4546
+ left: 50%;
4547
+ z-index: var(--z-index-raised);
4548
+ transform: translateX(-50%);
4549
+ }
4550
+
4496
4551
  /* ---- a board ------------------------------------------------------------ */
4497
4552
 
4498
4553
  .crewlet-canvas-board__board {
@@ -4500,13 +4555,37 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4500
4555
  box-sizing: border-box;
4501
4556
  }
4502
4557
 
4558
+ /*
4559
+ * A BOARD'S EDGE IS A HAIRLINE, one screen pixel at every zoom, drawn as a
4560
+ * ring outside the box rather than a border inside it: a border would take
4561
+ * its width out of the page the board runs, and counter-scaled to stay one
4562
+ * pixel it would take more the further out the canvas is zoomed. The strong
4563
+ * hairline's ink, so a white page still has an edge on a light field and a
4564
+ * dark one on a dark field.
4565
+ */
4503
4566
  .crewlet-canvas-board__body {
4504
4567
  position: absolute;
4505
4568
  inset: 0;
4506
4569
  overflow: hidden;
4507
4570
  background: var(--color-surface-elevated);
4508
- border: 1px solid var(--color-border-default);
4509
- box-shadow: var(--shadow-xs);
4571
+ box-shadow: 0 0 0 calc(1px * var(--crewlet-canvas-board-unzoom)) var(--color-border-strong);
4572
+ }
4573
+
4574
+ /*
4575
+ * HOVER, then SELECTION, in the accent: one screen pixel and then two, over
4576
+ * the hairline. Hovering a board's name is hovering its board, which is how a
4577
+ * reader finds the board a name belongs to on a crowded canvas.
4578
+ */
4579
+ .crewlet-canvas-board__board:hover .crewlet-canvas-board__body,
4580
+ .crewlet-canvas-board__note:hover {
4581
+ outline: calc(1px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
4582
+ outline-offset: 0;
4583
+ }
4584
+
4585
+ .crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__body,
4586
+ .crewlet-canvas-board__note[data-selected] {
4587
+ outline: calc(2px * var(--crewlet-canvas-board-unzoom)) solid var(--color-brand-accent);
4588
+ outline-offset: 0;
4510
4589
  }
4511
4590
 
4512
4591
  /* The page a live board runs fills its frame exactly. */
@@ -4528,11 +4607,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4528
4607
  .crewlet-canvas-board__shield {
4529
4608
  position: absolute;
4530
4609
  inset: 0;
4531
- cursor: pointer;
4532
- }
4533
-
4534
- .crewlet-canvas-board[data-editable] .crewlet-canvas-board__shield {
4535
- cursor: inherit;
4610
+ cursor: var(--crewlet-canvas-cursor-pointer, default);
4536
4611
  }
4537
4612
 
4538
4613
  /* A board that is not running draws its title and size at screen size. */
@@ -4582,14 +4657,21 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4582
4657
  transform-origin: bottom left;
4583
4658
  }
4584
4659
 
4660
+ /* The board's name: small, quiet, and the accent once its board is picked out. */
4585
4661
  .crewlet-canvas-board__title {
4586
4662
  min-width: 0;
4587
4663
  overflow: hidden;
4588
- color: var(--color-text-secondary);
4664
+ color: var(--color-text-tertiary);
4589
4665
  font-size: var(--font-size-xs);
4590
4666
  font-weight: var(--font-weight-medium);
4591
4667
  text-overflow: ellipsis;
4592
4668
  white-space: nowrap;
4669
+ cursor: var(--crewlet-canvas-cursor-pointer, default);
4670
+ }
4671
+
4672
+ .crewlet-canvas-board__board:hover .crewlet-canvas-board__title,
4673
+ .crewlet-canvas-board__board[data-selected] .crewlet-canvas-board__title {
4674
+ color: var(--color-brand-accent-ink);
4593
4675
  }
4594
4676
 
4595
4677
  .crewlet-canvas-board__handle {
@@ -4600,7 +4682,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4600
4682
  border-radius: var(--radius-sm);
4601
4683
  background: transparent;
4602
4684
  font: inherit;
4603
- cursor: move;
4685
+ cursor: var(--crewlet-canvas-cursor-pointer, default);
4604
4686
  touch-action: none;
4605
4687
  }
4606
4688
 
@@ -4616,55 +4698,114 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4616
4698
  outline-offset: var(--size-focus-ring-inset-offset);
4617
4699
  }
4618
4700
 
4701
+ /*
4702
+ * A RESIZE CORNER: a full pointer target, drawn as the small square a design
4703
+ * tool draws, centred on its corner and counter-scaled so it is one size on
4704
+ * screen. Drawn on a selected item, and on the keyboard's corner while it has
4705
+ * focus; otherwise it is neither seen nor pressed.
4706
+ */
4619
4707
  .crewlet-canvas-board__resize {
4620
4708
  position: absolute;
4621
- right: 0;
4622
- bottom: 0;
4623
- width: var(--spacing-4);
4624
- height: var(--spacing-4);
4709
+ display: grid;
4710
+ place-items: center;
4711
+ width: var(--spacing-6);
4712
+ height: var(--spacing-6);
4625
4713
  margin: 0;
4626
4714
  padding: 0;
4627
- border: 2px solid var(--color-brand-accent);
4715
+ border: none;
4716
+ background: transparent;
4717
+ opacity: 0;
4718
+ pointer-events: none;
4719
+ touch-action: none;
4720
+ }
4721
+
4722
+ .crewlet-canvas-board__resize::before {
4723
+ content: '';
4724
+ width: var(--spacing-2);
4725
+ height: var(--spacing-2);
4726
+ box-sizing: border-box;
4727
+ border: 1px solid var(--color-brand-accent);
4628
4728
  border-radius: var(--radius-xs);
4629
4729
  background: var(--color-surface-elevated);
4730
+ }
4731
+
4732
+ .crewlet-canvas-board__board[data-selected] > .crewlet-canvas-board__resize,
4733
+ .crewlet-canvas-board__note[data-selected] .crewlet-canvas-board__resize,
4734
+ .crewlet-canvas-board__resize:focus-visible {
4735
+ opacity: 1;
4736
+ pointer-events: auto;
4737
+ }
4738
+
4739
+ .crewlet-canvas-board__resize[data-corner='resize-nw'] {
4740
+ top: 0;
4741
+ left: 0;
4630
4742
  cursor: nwse-resize;
4631
- touch-action: none;
4632
- transform: translate(50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
4743
+ transform: translate(-50%, -50%) scale(var(--crewlet-canvas-board-unzoom));
4633
4744
  }
4634
4745
 
4635
- .crewlet-canvas-board__hint {
4636
- position: absolute;
4637
- top: 100%;
4746
+ .crewlet-canvas-board__resize[data-corner='resize-ne'] {
4747
+ top: 0;
4748
+ right: 0;
4749
+ cursor: nesw-resize;
4750
+ transform: translate(50%, -50%) scale(var(--crewlet-canvas-board-unzoom));
4751
+ }
4752
+
4753
+ .crewlet-canvas-board__resize[data-corner='resize-sw'] {
4754
+ bottom: 0;
4638
4755
  left: 0;
4639
- margin: 0;
4640
- padding-top: var(--spacing-1);
4641
- color: var(--color-text-tertiary);
4642
- font-size: var(--font-size-xs);
4643
- white-space: nowrap;
4644
- transform: scale(var(--crewlet-canvas-board-unzoom));
4645
- transform-origin: top left;
4756
+ cursor: nesw-resize;
4757
+ transform: translate(-50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
4646
4758
  }
4647
4759
 
4760
+ .crewlet-canvas-board__resize[data-corner='resize-se'] {
4761
+ right: 0;
4762
+ bottom: 0;
4763
+ cursor: nwse-resize;
4764
+ transform: translate(50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
4765
+ }
4766
+
4767
+
4648
4768
  /* ---- a note ------------------------------------------------------------- */
4649
4769
 
4650
4770
  .crewlet-canvas-board__note {
4651
4771
  position: absolute;
4652
4772
  box-sizing: border-box;
4773
+ cursor: var(--crewlet-canvas-cursor-pointer, default);
4774
+ }
4775
+
4776
+ /*
4777
+ * A sticky's tools and corners sit outside its paper, so the paper does not
4778
+ * clip; its words are held to the paper instead.
4779
+ */
4780
+ .crewlet-canvas-board__note[data-kind='sticky'] {
4781
+ overflow: visible;
4782
+ }
4783
+
4784
+ .crewlet-canvas-board__note[data-kind='sticky'] .crewlet-canvas-board__note-text {
4785
+ max-height: 100%;
4786
+ overflow: hidden;
4653
4787
  }
4654
4788
 
4655
4789
  /*
4656
- * A TITLE IS SET IN ITS BOX'S OWN HEIGHT, so the author's frame is the type
4657
- * size: a heading over a group of boards is as large as the box drawn for it.
4790
+ * A TITLE IS SET TO FILL ITS BOX, so the author's frame is the type size: a
4791
+ * heading over a group of boards is as large as the box drawn for it, and a
4792
+ * long one is set smaller rather than run over the boards beside it.
4658
4793
  */
4659
4794
  .crewlet-canvas-board__note[data-kind='title'] {
4660
- container-type: size;
4661
4795
  display: flex;
4662
4796
  align-items: center;
4663
4797
  color: var(--color-text-primary);
4664
4798
  }
4665
4799
 
4800
+ /*
4801
+ * The size is the component's (`titleSize`), fitted to the box both ways. The
4802
+ * TEXT clips at the box, not the box itself: the box's tools and corners sit
4803
+ * outside it, and a box that clipped would cut them away.
4804
+ */
4666
4805
  .crewlet-canvas-board__note[data-kind='title'] .crewlet-canvas-board__note-text {
4667
- font-size: 60cqh;
4806
+ min-width: 0;
4807
+ max-width: 100%;
4808
+ overflow: hidden;
4668
4809
  font-weight: var(--font-weight-semibold);
4669
4810
  letter-spacing: var(--font-letter-spacing-tight);
4670
4811
  line-height: var(--font-line-height-tight);
@@ -4752,6 +4893,41 @@ a.crewlet-breadcrumb__crumb:focus-visible {
4752
4893
  }
4753
4894
 
4754
4895
 
4896
+ /* CanvasToolbar-AE5MXH7T.css */
4897
+ /*
4898
+ * A canvas's tool palette (CanvasToolbar.tsx): the zoom bar's glass surface,
4899
+ * with the tool in hand drawn SOLID in the accent rather than the soft tint a
4900
+ * toggle takes elsewhere, because it is the one fact about the palette a
4901
+ * reader checks from across the field before every press.
4902
+ */
4903
+
4904
+ .crewlet-canvas-toolbar.crewlet-toolbar {
4905
+ display: inline-flex;
4906
+ align-items: center;
4907
+ gap: var(--spacing-1);
4908
+ padding: var(--spacing-1);
4909
+ background: var(--color-surface-glass);
4910
+ backdrop-filter: blur(var(--blur-sm));
4911
+ border: 1px solid var(--color-border-default);
4912
+ border-radius: var(--radius-md);
4913
+ box-shadow: var(--shadow-sm);
4914
+ }
4915
+
4916
+ .crewlet-canvas-toolbar .crewlet-icon-btn {
4917
+ border-radius: var(--radius-chip);
4918
+ }
4919
+
4920
+ .crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true'] {
4921
+ color: var(--color-text-on-accent);
4922
+ background: var(--color-brand-accent);
4923
+ }
4924
+
4925
+ .crewlet-canvas-toolbar .crewlet-icon-btn[aria-pressed='true']:hover:not(:disabled) {
4926
+ color: var(--color-text-on-accent);
4927
+ background: var(--color-brand-accent-hover);
4928
+ }
4929
+
4930
+
4755
4931
  /* Card-KJOYHDTJ.css */
4756
4932
  /*
4757
4933
  * Card, THE surface. Everything on a screen is a card, a row inside one, or a
@@ -11527,7 +11703,7 @@ svg.crewlet-datetime__chevron {
11527
11703
  }
11528
11704
 
11529
11705
 
11530
- /* EditingStatus-NFADEPSX.css */
11706
+ /* EditingStatus-L6THUAN7.css */
11531
11707
  /*
11532
11708
  * The editing status (EditingStatus.tsx): a word and a dot, in the bar's own
11533
11709
  * small step, quiet until something is unsaved.
@@ -11572,11 +11748,32 @@ svg.crewlet-datetime__chevron {
11572
11748
  margin-right: var(--spacing-2);
11573
11749
  }
11574
11750
 
11751
+ /*
11752
+ * THE WORDS FOLD AND THE DOT STAYS where room is short, hidden from the eye
11753
+ * and still read by a screen reader, so the status says the same thing to
11754
+ * everyone. On a phone the state folds. On an artifact bar's narrow
11755
+ * arrangement (below 640px, as ArtifactBar.css draws it) "Editing" folds too:
11756
+ * the title has the row's room first, and Cancel and Save beside the dot
11757
+ * already say an edit is open.
11758
+ */
11575
11759
  @media (width < 480px) {
11576
11760
  .crewlet-editing-status__state {
11577
11761
  position: absolute;
11578
11762
  width: 1px;
11579
11763
  height: 1px;
11764
+ margin: -1px;
11765
+ overflow: hidden;
11766
+ clip-path: inset(50%);
11767
+ }
11768
+ }
11769
+
11770
+ @container crewlet-artifact-bar (width < 640px) {
11771
+ .crewlet-editing-status__label,
11772
+ .crewlet-editing-status__state {
11773
+ position: absolute;
11774
+ width: 1px;
11775
+ height: 1px;
11776
+ margin: -1px;
11580
11777
  overflow: hidden;
11581
11778
  clip-path: inset(50%);
11582
11779
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.31.0",
3
+ "version": "0.32.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.31.0",
46
- "@crewlethq/tokens": "0.31.0",
45
+ "@crewlethq/icons": "0.32.0",
46
+ "@crewlethq/tokens": "0.32.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 { richEditorLabels } from './chunk-A4E5YLXO.js';
2
1
  import { schema, readMarkdown, writeMarkdown } from './chunk-YFW4MTK4.js';
2
+ import { richEditorLabels } from './chunk-A4E5YLXO.js';
3
3
  import { safeHref, MARKDOWN_CALLOUT_TONES } from './chunk-SKOYC2CF.js';
4
4
  import { Toolbar } from './chunk-PGRPNDWM.js';
5
5
  import { FormField, Input } from './chunk-6QFAK2WV.js';
@@ -1,8 +1,8 @@
1
1
  import { PageHeader } from './chunk-HOXGBLEY.js';
2
- import { Toolbar } from './chunk-PGRPNDWM.js';
3
- import { DataTable } from './chunk-EBJREOKS.js';
4
2
  import { DateTimePicker } from './chunk-Y5NQ2LMS.js';
3
+ import { DataTable } from './chunk-EBJREOKS.js';
5
4
  import { useListbox, useOptionKeys } from './chunk-F73MC7EZ.js';
5
+ import { Toolbar } from './chunk-PGRPNDWM.js';
6
6
  import { Popover } from './chunk-BWRGFKJP.js';
7
7
  import { Input } from './chunk-6QFAK2WV.js';
8
8
  import { Kbd } from './chunk-SMBKXWML.js';
@@ -1,8 +1,8 @@
1
1
  import { TagGroup } from './chunk-O2EGEONV.js';
2
- import { CursorFlag } from './chunk-3BYIWOTV.js';
3
- import { presenceHueClass } from './chunk-I6POAB4V.js';
4
2
  import { Tag } from './chunk-GFV4LJHH.js';
5
3
  import { StatusDot } from './chunk-WIATRXEJ.js';
4
+ import { CursorFlag } from './chunk-3BYIWOTV.js';
5
+ import { presenceHueClass } from './chunk-I6POAB4V.js';
6
6
  import { ChangeMark } from './chunk-YEKYVJQR.js';
7
7
  import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, columnWidth, 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-NHBP2XS5.js';
8
8
  import { presenceLabels } from './chunk-Z7JYG5TF.js';
File without changes