@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.
- package/README.md +25 -1
- package/dist/Canvas/Canvas.d.ts +48 -2
- package/dist/Canvas/ShortcutTip.d.ts +22 -0
- package/dist/Canvas/geometry.d.ts +13 -3
- package/dist/Canvas/index.d.ts +3 -1
- package/dist/Canvas/index.js +3 -1
- package/dist/{Canvas-YVXHMWLN.css → Canvas-LRVNW7XN.css} +39 -3
- package/dist/CanvasBoard/CanvasBoard.d.ts +75 -12
- package/dist/CanvasBoard/index.d.ts +2 -2
- package/dist/CanvasBoard/index.js +6 -2
- package/dist/{CanvasBoard-ZLPDINSM.css → CanvasBoard-MBZVBWDO.css} +135 -30
- package/dist/CanvasToolbar/CanvasToolbar.d.ts +48 -0
- package/dist/CanvasToolbar/index.d.ts +3 -0
- package/dist/CanvasToolbar/index.js +12 -0
- package/dist/CanvasToolbar-AE5MXH7T.css +32 -0
- package/dist/DataView/index.js +3 -3
- package/dist/EditingStatus/index.js +1 -1
- package/dist/{EditingStatus-NFADEPSX.css → EditingStatus-L6THUAN7.css} +21 -0
- package/dist/PresenterView/index.js +2 -2
- package/dist/RichEditor/index.js +1 -1
- package/dist/SheetGrid/index.js +3 -3
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +2 -2
- package/dist/SlideGrid/index.js +2 -2
- package/dist/SlideStage/SlideStage.d.ts +6 -1
- package/dist/SlideStage/index.js +1 -1
- package/dist/TreeCanvas/index.js +4 -2
- package/dist/{chunk-ALMSY7RL.js → chunk-CRKFL423.js} +1 -1
- package/dist/{chunk-O63MWA4G.js → chunk-E6CR5PEV.js} +2 -1
- package/dist/chunk-E6EWK5YY.js +33 -0
- package/dist/{chunk-3DPIU2Q7.js → chunk-FPS3JIPQ.js} +1 -1
- package/dist/{chunk-OGAAHVF6.js → chunk-MBNFJSZS.js} +1 -1
- package/dist/{chunk-OJ45PPCV.js → chunk-OTN35CI4.js} +113 -30
- package/dist/{chunk-JODJS7MR.js → chunk-PJD2KFHX.js} +243 -39
- package/dist/{chunk-LR5QTFOE.js → chunk-RV7SZAHR.js} +1 -1
- package/dist/{chunk-VOX3YRFO.js → chunk-V5IGUXMZ.js} +1 -1
- package/dist/{chunk-3C3BRIMY.js → chunk-VS3KOOOL.js} +1 -1
- package/dist/{chunk-S6VG5ZFZ.js → chunk-WTNUVQVI.js} +1 -1
- package/dist/generated/index.d.ts +1 -0
- package/dist/generated/index.js +49 -48
- package/dist/index.js +49 -48
- package/dist/styles.css +233 -36
- package/package.json +3 -3
- package/dist/{Editor-YZ7KG2RD.js → Editor-YWBUJAQU.js} +1 -1
- package/dist/{chunk-UVJ5FF5V.js → chunk-3ZAFJ4GK.js} +2 -2
- package/dist/{chunk-CT4EZF62.js → chunk-LWXRD6L6.js} +2 -2
- /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-
|
|
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
|
-
|
|
4205
|
-
|
|
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-
|
|
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
|
-
|
|
4509
|
-
|
|
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-
|
|
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:
|
|
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
|
-
|
|
4622
|
-
|
|
4623
|
-
width: var(--spacing-
|
|
4624
|
-
height: var(--spacing-
|
|
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:
|
|
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
|
-
|
|
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-
|
|
4636
|
-
|
|
4637
|
-
|
|
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
|
-
|
|
4640
|
-
|
|
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
|
|
4657
|
-
*
|
|
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
|
-
|
|
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-
|
|
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.
|
|
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.
|
|
46
|
-
"@crewlethq/tokens": "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
|