@crewlethq/ui 0.57.2 → 0.58.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 (134) hide show
  1. package/README.md +6 -0
  2. package/dist/AgentHandoffPanel/index.js +3 -3
  3. package/dist/AppShell/index.js +4 -4
  4. package/dist/ArtifactBar/index.js +6 -6
  5. package/dist/AvatarPicker/index.js +7 -7
  6. package/dist/Button/index.js +2 -2
  7. package/dist/Canvas/index.js +3 -3
  8. package/dist/CanvasBoard/index.js +5 -5
  9. package/dist/CanvasToolbar/index.js +4 -4
  10. package/dist/ChatThread/index.js +3 -3
  11. package/dist/CodeBlock/index.js +4 -4
  12. package/dist/ColorSwatch/index.js +4 -4
  13. package/dist/CommandPalette/index.js +4 -4
  14. package/dist/CommentThread/index.js +3 -3
  15. package/dist/ConflictNote/index.js +3 -3
  16. package/dist/Copyable/index.js +3 -3
  17. package/dist/DataGrid/index.js +3 -3
  18. package/dist/DataTable/index.js +5 -5
  19. package/dist/DataView/index.js +7 -7
  20. package/dist/DateTimePicker/index.js +3 -3
  21. package/dist/DocTabsEditor/index.js +4 -4
  22. package/dist/DownloadButton/index.js +3 -3
  23. package/dist/{Editor-S4HARQ7V.js → Editor-GSBLM7NO.js} +3 -3
  24. package/dist/ErrorBoundary/index.js +3 -3
  25. package/dist/FileDrop/index.js +3 -3
  26. package/dist/FollowBanner/index.js +3 -3
  27. package/dist/HuePicker/index.js +6 -6
  28. package/dist/ImageUpload/index.js +2 -1
  29. package/dist/{ImageUpload-NVGMN7DP.css → ImageUpload-CYC3Y7M2.css} +11 -19
  30. package/dist/InlineEditor/index.js +3 -3
  31. package/dist/LinkInterstitial/index.js +4 -4
  32. package/dist/ListInput/index.js +3 -3
  33. package/dist/LogoSlot/index.js +4 -4
  34. package/dist/MarkdownEditor/index.js +6 -6
  35. package/dist/Menu/index.js +3 -3
  36. package/dist/MergeConflicts/index.js +6 -6
  37. package/dist/Modal/index.js +3 -3
  38. package/dist/OpenInAppCard/index.js +4 -4
  39. package/dist/PeekRail/index.js +3 -3
  40. package/dist/PeopleRail/index.js +3 -3
  41. package/dist/PresenterView/index.js +3 -3
  42. package/dist/ProposalCard/index.js +4 -4
  43. package/dist/ReceiptStrip/index.js +3 -3
  44. package/dist/ResultTableCard/index.js +4 -4
  45. package/dist/RichEditor/index.js +3 -3
  46. package/dist/RunChip/index.js +3 -3
  47. package/dist/SandboxedFrame/index.js +3 -3
  48. package/dist/SegmentedControl/index.js +5 -5
  49. package/dist/SelectionBar/index.js +3 -3
  50. package/dist/SetupWizard/index.js +3 -3
  51. package/dist/ShareDialog/index.js +5 -5
  52. package/dist/SheetColumnEditor/index.js +7 -7
  53. package/dist/SheetGrid/index.js +4 -4
  54. package/dist/SlideCompare/index.js +3 -3
  55. package/dist/SlideFilmstrip/index.js +4 -4
  56. package/dist/Spinner/Spinner.d.ts +6 -2
  57. package/dist/Spinner/index.js +1 -1
  58. package/dist/Spinner-PM37OCHI.css +100 -0
  59. package/dist/Stepper/index.js +2 -2
  60. package/dist/Switcher/index.js +4 -4
  61. package/dist/Tabs/index.js +4 -4
  62. package/dist/ThemeSwitcher/index.js +6 -6
  63. package/dist/TimeRangePicker/index.js +7 -7
  64. package/dist/TimeWindowPicker/index.js +3 -3
  65. package/dist/TreeCanvas/index.js +4 -4
  66. package/dist/VersionCompare/index.js +6 -6
  67. package/dist/VersionTimeline/index.js +3 -3
  68. package/dist/{chunk-LZXY6IMO.js → chunk-2K6FUMIK.js} +1 -1
  69. package/dist/{chunk-67F2AM4R.js → chunk-2XBIN5C2.js} +1 -1
  70. package/dist/{chunk-OZIBNFLO.js → chunk-32SOAYCF.js} +1 -1
  71. package/dist/{chunk-PE7XWOUS.js → chunk-36DZUEVY.js} +1 -1
  72. package/dist/{chunk-LQ6AGUDL.js → chunk-3DVOJK63.js} +1 -1
  73. package/dist/{chunk-NK3D66PB.js → chunk-3FGBMI36.js} +1 -1
  74. package/dist/{chunk-AWSFK2IK.js → chunk-3JYCCTGK.js} +1 -1
  75. package/dist/{chunk-SW4XVX7K.js → chunk-52IHWD3V.js} +3 -3
  76. package/dist/{chunk-DOPPU6TZ.js → chunk-57KC5B5M.js} +1 -1
  77. package/dist/{chunk-NQGZRMUG.js → chunk-5VFBBKZE.js} +1 -1
  78. package/dist/{chunk-QYEOGGVS.js → chunk-6LRCOXP6.js} +3 -3
  79. package/dist/{chunk-Q6R6EUQ4.js → chunk-73QP5CDO.js} +2 -2
  80. package/dist/{chunk-TKS7FTTO.js → chunk-7QE27DWU.js} +1 -1
  81. package/dist/{chunk-CGT4R7LW.js → chunk-AP7GA5AA.js} +1 -1
  82. package/dist/{chunk-EBG3V4MK.js → chunk-ARZF7KEO.js} +3 -3
  83. package/dist/{chunk-WOW5SCEK.js → chunk-BA2KFNUD.js} +1 -1
  84. package/dist/{chunk-MYX4XABB.js → chunk-BDYQTU5Q.js} +1 -1
  85. package/dist/{chunk-HVEDVKXL.js → chunk-C4BN6MZJ.js} +1 -1
  86. package/dist/{chunk-TDQZ4LB5.js → chunk-C5AKPSNY.js} +3 -3
  87. package/dist/{chunk-ICJRP6QW.js → chunk-CBR52S2C.js} +1 -1
  88. package/dist/{chunk-HNK43Z3P.js → chunk-CFHGVO5L.js} +1 -1
  89. package/dist/{chunk-CZNG3V6L.js → chunk-CSBS66PG.js} +2 -2
  90. package/dist/{chunk-OHG7762N.js → chunk-CTUHHM6H.js} +1 -1
  91. package/dist/{chunk-WBTCOFMZ.js → chunk-CVH7KBAJ.js} +2 -2
  92. package/dist/{chunk-56P72ZBE.js → chunk-DFUYHPY7.js} +1 -1
  93. package/dist/{chunk-272Y3YMV.js → chunk-DHS335W4.js} +2 -2
  94. package/dist/{chunk-EVWTLFKI.js → chunk-DIR6CSJP.js} +1 -1
  95. package/dist/{chunk-TD3UHDFY.js → chunk-DJ46CKSP.js} +2 -2
  96. package/dist/{chunk-4OINEWR4.js → chunk-DXRPB3JD.js} +1 -1
  97. package/dist/{chunk-OOZ5AGPS.js → chunk-EXP5RD3R.js} +3 -3
  98. package/dist/{chunk-Y73BQL74.js → chunk-FAKL6PXB.js} +1 -1
  99. package/dist/{chunk-EDNZHW4K.js → chunk-FVD7FSKO.js} +1 -1
  100. package/dist/{chunk-HGCDJOEF.js → chunk-H23GAACC.js} +2 -2
  101. package/dist/{chunk-I7VG6RQE.js → chunk-HYRKTVKL.js} +1 -1
  102. package/dist/{chunk-2TTFDRR3.js → chunk-IFWJNKVT.js} +2 -2
  103. package/dist/{chunk-UV4LOQ3E.js → chunk-JIG4D2IQ.js} +1 -1
  104. package/dist/{chunk-YEURM24I.js → chunk-JKZ3A4GY.js} +1 -1
  105. package/dist/{chunk-S5C64PTT.js → chunk-JSR6HSK5.js} +1 -1
  106. package/dist/{chunk-G3CUCHBA.js → chunk-KLGO4526.js} +1 -1
  107. package/dist/{chunk-JJ3NOBJ6.js → chunk-L22HQRNF.js} +3 -3
  108. package/dist/{chunk-WBRC3MNE.js → chunk-LBUQ6R66.js} +1 -1
  109. package/dist/{chunk-Z7PJF6F3.js → chunk-LFHVYGQL.js} +1 -1
  110. package/dist/{chunk-YCZ2FBKA.js → chunk-MKFL7TFU.js} +1 -1
  111. package/dist/{chunk-YGC7BFX2.js → chunk-OOBXGR5B.js} +1 -1
  112. package/dist/{chunk-AKFHMLEX.js → chunk-OTMP2AUQ.js} +1 -1
  113. package/dist/{chunk-FWYHRU7M.js → chunk-PPVWWJIB.js} +3 -2
  114. package/dist/{chunk-ZH4MJM73.js → chunk-PXDIHHJA.js} +1 -1
  115. package/dist/{chunk-D5OSP3KI.js → chunk-QFGKFCL2.js} +1 -1
  116. package/dist/{chunk-HD4QJ2SI.js → chunk-QKXQC5D6.js} +1 -1
  117. package/dist/{chunk-LXYSWQNE.js → chunk-QTB5S6JZ.js} +1 -1
  118. package/dist/{chunk-2BWBDKF6.js → chunk-QZXSEPLJ.js} +1 -1
  119. package/dist/{chunk-EGL24VY5.js → chunk-RXAODDFD.js} +1 -1
  120. package/dist/{chunk-QZ4B72FP.js → chunk-SEMZEENR.js} +1 -1
  121. package/dist/{chunk-672GLRBU.js → chunk-T22NCHGT.js} +1 -1
  122. package/dist/{chunk-6NJW5KSX.js → chunk-TUZGFMRW.js} +1 -1
  123. package/dist/{chunk-6T6V5565.js → chunk-UC3PB356.js} +1 -1
  124. package/dist/{chunk-ES4HR34Y.js → chunk-UM3EKJXF.js} +1 -1
  125. package/dist/{chunk-67MW366X.js → chunk-V326ADVR.js} +1 -1
  126. package/dist/{chunk-EA23JG6R.js → chunk-XSPCITPN.js} +1 -1
  127. package/dist/{chunk-HL4CPLEK.js → chunk-YHTIWHEF.js} +4 -4
  128. package/dist/{chunk-OYAXKHVW.js → chunk-YPGD2YWN.js} +1 -1
  129. package/dist/{chunk-5OMV75GE.js → chunk-ZHMJG3UG.js} +1 -1
  130. package/dist/generated/index.js +73 -73
  131. package/dist/index.js +73 -73
  132. package/dist/styles.css +70 -24
  133. package/package.json +3 -3
  134. package/dist/Spinner-XZ2TVYE5.css +0 -46
package/dist/styles.css CHANGED
@@ -17852,7 +17852,7 @@ a.crewlet-icon-btn {
17852
17852
  .crewlet-icon-tile--blue { --crewlet-icon-tile-fill: var(--color-node-blue-fill); --crewlet-icon-tile-ink: var(--color-node-blue-ink); }
17853
17853
 
17854
17854
 
17855
- /* ImageUpload-NVGMN7DP.css */
17855
+ /* ImageUpload-CYC3Y7M2.css */
17856
17856
  /*
17857
17857
  * ImageUpload, the click-to-upload affordance built on Avatar.
17858
17858
  *
@@ -17989,19 +17989,14 @@ a.crewlet-icon-btn {
17989
17989
  font-weight: var(--font-weight-medium);
17990
17990
  }
17991
17991
 
17992
+ /*
17993
+ * The package's one ring (Spinner), sized to the control. It takes the
17994
+ * overlay's on-scrim ink as its current colour, and its turn, its arc and its
17995
+ * reduced-motion stop are Spinner.css's: this rule sets only the em it is
17996
+ * measured in.
17997
+ */
17992
17998
  .crewlet-image-upload__spinner {
17993
- width: calc(var(--crewlet-image-upload-size) * 0.3);
17994
- height: calc(var(--crewlet-image-upload-size) * 0.3);
17995
- border-radius: var(--radius-circle);
17996
- border: 2px solid var(--color-surface-scrim);
17997
- border-top-color: var(--color-text-on-scrim);
17998
- animation: crewlet-image-upload-spin calc(var(--motion-duration-slow) * 2.5) linear infinite;
17999
- }
18000
-
18001
- @keyframes crewlet-image-upload-spin {
18002
- to {
18003
- transform: rotate(360deg);
18004
- }
17999
+ font-size: calc(var(--crewlet-image-upload-size) * 0.3);
18005
18000
  }
18006
18001
 
18007
18002
  /*
@@ -18053,19 +18048,16 @@ a.crewlet-icon-btn {
18053
18048
  }
18054
18049
 
18055
18050
  /*
18056
- * The ring holds still. The trigger already carries aria-busy, and the control
18057
- * is disabled while the upload is out, so nothing about the state is carried
18058
- * by the motion alone.
18051
+ * The overlay and the remove target hold still. The ring is Spinner's, which
18052
+ * stops itself. The trigger already carries aria-busy, and the control is
18053
+ * disabled while the upload is out, so nothing about the state is carried by
18054
+ * the motion alone.
18059
18055
  */
18060
18056
  @media (prefers-reduced-motion: reduce) {
18061
18057
  .crewlet-image-upload__overlay,
18062
18058
  .crewlet-image-upload__remove {
18063
18059
  transition: none;
18064
18060
  }
18065
-
18066
- .crewlet-image-upload__spinner {
18067
- animation: none;
18068
- }
18069
18061
  }
18070
18062
 
18071
18063
 
@@ -31288,22 +31280,64 @@ svg.crewlet-select__chevron {
31288
31280
  }
31289
31281
 
31290
31282
 
31291
- /* Spinner-XZ2TVYE5.css */
31283
+ /* Spinner-PM37OCHI.css */
31292
31284
  /*
31293
31285
  * The package's one ring. See Spinner.tsx for why it is inline-block, why it
31294
31286
  * stays open when it stops, and why its ink is the current colour.
31295
31287
  */
31288
+
31289
+ /*
31290
+ * THE ARC'S LENGTH, registered so it can be animated. An unregistered custom
31291
+ * property animates in a single step at the halfway point, which would make
31292
+ * the arc jump rather than breathe. Its initial value is the arc at rest: three
31293
+ * quarters of the ring, the right quarter open.
31294
+ */
31295
+ @property --crewlet-spinner-arc {
31296
+ syntax: '<angle>';
31297
+ inherits: false;
31298
+ initial-value: 270deg;
31299
+ }
31300
+
31301
+ /*
31302
+ * The ring is a full 2px border cut to an arc by a mask, so the stroke is the
31303
+ * same 2px at every size and the arc's length can move while the ring turns.
31304
+ * The arc is centred on the left (270deg), so it grows and shrinks at both ends
31305
+ * at once and the open quarter at rest sits on the right. Each end is feathered
31306
+ * over a few degrees, so it reads as a soft cap rather than a hard cut. A mask
31307
+ * reads only alpha, so its black is opacity rather than a colour.
31308
+ */
31296
31309
  .crewlet-spinner {
31310
+ --crewlet-spinner-from: calc(270deg - var(--crewlet-spinner-arc) / 2);
31297
31311
  display: inline-block;
31298
31312
  box-sizing: border-box;
31299
31313
  flex: none;
31300
31314
  width: 1em;
31301
31315
  height: 1em;
31302
31316
  border: 2px solid currentColor;
31303
- border-right-color: transparent;
31304
31317
  border-radius: var(--radius-circle);
31305
31318
  opacity: 0.7;
31306
- animation: crewlet-spinner-turn var(--motion-duration-slow) linear infinite;
31319
+ -webkit-mask-image: conic-gradient(
31320
+ from var(--crewlet-spinner-from),
31321
+ transparent 0deg,
31322
+ #000 6deg,
31323
+ #000 calc(var(--crewlet-spinner-arc) - 6deg),
31324
+ transparent var(--crewlet-spinner-arc)
31325
+ );
31326
+ mask-image: conic-gradient(
31327
+ from var(--crewlet-spinner-from),
31328
+ transparent 0deg,
31329
+ #000 6deg,
31330
+ #000 calc(var(--crewlet-spinner-arc) - 6deg),
31331
+ transparent var(--crewlet-spinner-arc)
31332
+ );
31333
+ /*
31334
+ * Two motions, one definition for every ring in the package: one steady turn
31335
+ * a second, and the arc breathing between a quarter and three quarters of the
31336
+ * ring on a slower cycle, so the ends ease apart and together while it turns.
31337
+ */
31338
+ animation:
31339
+ crewlet-spinner-turn var(--motion-duration-turn) linear infinite,
31340
+ crewlet-spinner-sweep var(--motion-duration-sweep) var(--motion-easing-in-out) infinite;
31307
31341
  }
31308
31342
 
31309
31343
  /* The glyph scale of @crewlethq/icons: xs 12px, sm 14px, md 16px. */
@@ -31328,8 +31362,20 @@ svg.crewlet-select__chevron {
31328
31362
  }
31329
31363
  }
31330
31364
 
31365
+ @keyframes crewlet-spinner-sweep {
31366
+ 0%,
31367
+ 100% {
31368
+ --crewlet-spinner-arc: 90deg;
31369
+ }
31370
+
31371
+ 50% {
31372
+ --crewlet-spinner-arc: 270deg;
31373
+ }
31374
+ }
31375
+
31331
31376
  /* It stops, and keeps its open quarter: a closed ring reads as an empty status
31332
- circle, the open one still reads as pending. */
31377
+ circle, the open one still reads as pending. With both motions off, the arc
31378
+ takes its registered initial value, three quarters of the ring. */
31333
31379
  @media (prefers-reduced-motion: reduce) {
31334
31380
  .crewlet-spinner {
31335
31381
  animation: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.57.2",
3
+ "version": "0.58.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.57.2",
46
- "@crewlethq/tokens": "0.57.2",
45
+ "@crewlethq/icons": "0.58.0",
46
+ "@crewlethq/tokens": "0.58.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,46 +0,0 @@
1
- /*
2
- * The package's one ring. See Spinner.tsx for why it is inline-block, why it
3
- * stays open when it stops, and why its ink is the current colour.
4
- */
5
- .crewlet-spinner {
6
- display: inline-block;
7
- box-sizing: border-box;
8
- flex: none;
9
- width: 1em;
10
- height: 1em;
11
- border: 2px solid currentColor;
12
- border-right-color: transparent;
13
- border-radius: var(--radius-circle);
14
- opacity: 0.7;
15
- animation: crewlet-spinner-turn var(--motion-duration-slow) linear infinite;
16
- }
17
-
18
- /* The glyph scale of @crewlethq/icons: xs 12px, sm 14px, md 16px. */
19
- .crewlet-spinner--xs {
20
- width: var(--font-size-xs);
21
- height: var(--font-size-xs);
22
- }
23
-
24
- .crewlet-spinner--sm {
25
- width: var(--font-size-sm);
26
- height: var(--font-size-sm);
27
- }
28
-
29
- .crewlet-spinner--md {
30
- width: var(--font-size-md);
31
- height: var(--font-size-md);
32
- }
33
-
34
- @keyframes crewlet-spinner-turn {
35
- to {
36
- transform: rotate(360deg);
37
- }
38
- }
39
-
40
- /* It stops, and keeps its open quarter: a closed ring reads as an empty status
41
- circle, the open one still reads as pending. */
42
- @media (prefers-reduced-motion: reduce) {
43
- .crewlet-spinner {
44
- animation: none;
45
- }
46
- }