@crewlethq/ui 0.6.3 → 0.8.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 (130) hide show
  1. package/README.md +109 -0
  2. package/dist/AddPill/index.js +1 -1
  3. package/dist/{AddPill-IJQYCY6C.css → AddPill-V4TQXJ53.css} +23 -22
  4. package/dist/AppShell/index.js +2 -2
  5. package/dist/{AppShell-XARELGIH.css → AppShell-CEVLW4QG.css} +3 -1
  6. package/dist/Button/index.js +1 -1
  7. package/dist/{Button-EXU36DEH.css → Button-UWKBTKYD.css} +18 -0
  8. package/dist/Canvas/Canvas.d.ts +16 -1
  9. package/dist/Canvas/index.d.ts +1 -1
  10. package/dist/Canvas/index.js +3 -3
  11. package/dist/{Canvas-Q6JETCWR.css → Canvas-YVXHMWLN.css} +13 -0
  12. package/dist/Card/index.js +1 -1
  13. package/dist/{Card-GLP7SUV6.css → Card-KJOYHDTJ.css} +5 -1
  14. package/dist/Charts/BarList.d.ts +23 -0
  15. package/dist/Charts/index.d.ts +1 -1
  16. package/dist/Charts/index.js +1 -1
  17. package/dist/{Charts-B3YEF7R4.css → Charts-THPA5BWV.css} +40 -0
  18. package/dist/Checkbox/index.js +1 -1
  19. package/dist/{Checkbox-BOXQ747I.css → Checkbox-UE7TEPAM.css} +9 -1
  20. package/dist/CodeBlock/index.js +4 -4
  21. package/dist/Combobox/index.js +3 -3
  22. package/dist/CommandPalette/index.js +6 -6
  23. package/dist/Copyable/index.js +3 -3
  24. package/dist/DataTable/index.js +6 -6
  25. package/dist/{DataTable-OLHPF7D4.css → DataTable-WZK3V62B.css} +11 -0
  26. package/dist/DataView/index.js +11 -11
  27. package/dist/DateTimePicker/index.js +4 -4
  28. package/dist/{DateTimePicker-22VNXRWC.css → DateTimePicker-4AZBTODT.css} +11 -6
  29. package/dist/ErrorBoundary/index.js +2 -2
  30. package/dist/FilterChip/index.js +1 -1
  31. package/dist/{FilterChip-GTGLLOXE.css → FilterChip-EZ4QMW4E.css} +4 -1
  32. package/dist/IconButton/index.js +1 -1
  33. package/dist/{IconButton-TVEUWK6L.css → IconButton-VYWP6SGW.css} +15 -0
  34. package/dist/ImageUpload/index.js +1 -1
  35. package/dist/{ImageUpload-YCHJMUGX.css → ImageUpload-L2GE4JUM.css} +5 -1
  36. package/dist/Input/index.js +2 -2
  37. package/dist/{Input-2PU5CPKK.css → Input-DRFNI26F.css} +40 -10
  38. package/dist/Kbd/index.js +1 -1
  39. package/dist/{Kbd-JPLDVJIP.css → Kbd-MCWJTRTT.css} +11 -0
  40. package/dist/ListInput/index.js +4 -4
  41. package/dist/Menu/index.js +3 -3
  42. package/dist/Modal/index.js +3 -3
  43. package/dist/NewItemsNotice/index.js +1 -1
  44. package/dist/{NewItemsNotice-T4DSSPVV.css → NewItemsNotice-Q5ED73BQ.css} +3 -1
  45. package/dist/OrgLabel/OrgLabel.d.ts +12 -3
  46. package/dist/OrgLabel/index.js +1 -1
  47. package/dist/{OrgLabel-CR233G34.css → OrgLabel-6WSKJQOT.css} +38 -0
  48. package/dist/OrgNode/OrgNode.d.ts +7 -4
  49. package/dist/OrgNode/index.js +2 -2
  50. package/dist/{OrgNode-BT7T2Q2X.css → OrgNode-TCHJH5FO.css} +89 -45
  51. package/dist/OrgTable/index.js +5 -5
  52. package/dist/{OrgTable-VWMFC3TB.css → OrgTable-JZSYTUIK.css} +28 -4
  53. package/dist/Popover/index.js +1 -1
  54. package/dist/{Popover-WJGCF3ZQ.css → Popover-QCINR7WG.css} +5 -2
  55. package/dist/PricingCard/index.js +2 -2
  56. package/dist/{PricingCard-7EFXRSD2.css → PricingCard-HTAHG4ST.css} +5 -1
  57. package/dist/SearchTrigger/index.js +1 -1
  58. package/dist/{SearchTrigger-Z5D4AAY7.css → SearchTrigger-KIZLWBEH.css} +4 -1
  59. package/dist/SegmentedControl/SegmentedControl.d.ts +19 -1
  60. package/dist/SegmentedControl/index.d.ts +1 -1
  61. package/dist/SegmentedControl/index.js +2 -2
  62. package/dist/SegmentedControl-76HODRBT.css +160 -0
  63. package/dist/Select/index.js +1 -1
  64. package/dist/{Select-E24U5LBC.css → Select-4ANVLHUY.css} +4 -4
  65. package/dist/Switch/index.js +1 -1
  66. package/dist/{Switch-U4OWK4CL.css → Switch-66RAQCRE.css} +8 -5
  67. package/dist/Tabs/index.js +1 -1
  68. package/dist/{Tabs-XCNPHA7B.css → Tabs-BWFQSWY3.css} +12 -0
  69. package/dist/Tag/index.js +1 -1
  70. package/dist/{Tag-4OXGO2DU.css → Tag-4BRQS6GN.css} +28 -1
  71. package/dist/TagGroup/index.js +1 -1
  72. package/dist/{TagGroup-APC2EFH4.css → TagGroup-BCQZD7ZD.css} +4 -1
  73. package/dist/TagsInput/index.js +3 -3
  74. package/dist/{TagsInput-W4P36PRJ.css → TagsInput-P2HS5QL4.css} +2 -2
  75. package/dist/ThemeSwitcher/index.js +3 -3
  76. package/dist/ThemeToggle/index.js +2 -2
  77. package/dist/TimeWindowPicker/index.js +6 -6
  78. package/dist/{TimeWindowPicker-7I7KWCMU.css → TimeWindowPicker-GBF4JDFI.css} +21 -8
  79. package/dist/Tree/layout.d.ts +3 -3
  80. package/dist/TreeCanvas/TreeCanvas.d.ts +7 -5
  81. package/dist/TreeCanvas/index.js +4 -4
  82. package/dist/{TreeCanvas-HVOV4SQN.css → TreeCanvas-L2XYONWL.css} +80 -74
  83. package/dist/TreeGrid/index.js +2 -2
  84. package/dist/{chunk-SVNXOK25.js → chunk-26SCUACK.js} +2 -2
  85. package/dist/{chunk-4UQ7SMPK.js → chunk-4FQT6ZAY.js} +1 -1
  86. package/dist/{chunk-IBYO2IJN.js → chunk-5I56UXBJ.js} +4 -4
  87. package/dist/{chunk-ZFATEERP.js → chunk-5YLON2PW.js} +1 -1
  88. package/dist/{chunk-EFYPAJT3.js → chunk-6DRDCT22.js} +1 -1
  89. package/dist/{chunk-PQNILU27.js → chunk-6HXH57BL.js} +3 -3
  90. package/dist/{chunk-BNCCEER3.js → chunk-6SIG5I72.js} +22 -11
  91. package/dist/{chunk-RJM4QCGG.js → chunk-6VL4LGWC.js} +36 -13
  92. package/dist/{chunk-OM5E3TTK.js → chunk-74WGARJE.js} +5 -2
  93. package/dist/{chunk-EV6IMYJ6.js → chunk-A722MUNR.js} +1 -1
  94. package/dist/{chunk-WOFOMTGB.js → chunk-B47YUQGM.js} +6 -2
  95. package/dist/{chunk-MV2E3QZM.js → chunk-BTHX2FS3.js} +2 -2
  96. package/dist/{chunk-2QLOH454.js → chunk-BXPLX7YU.js} +3 -3
  97. package/dist/{chunk-V34H2YCY.js → chunk-CEOXFO3E.js} +1 -1
  98. package/dist/{chunk-KKLITCMF.js → chunk-CHG7VT2M.js} +8 -8
  99. package/dist/{chunk-QY7UU5ZB.js → chunk-DRHXRGB6.js} +1 -1
  100. package/dist/{chunk-V2XMNLMS.js → chunk-E6UWRXNM.js} +1 -1
  101. package/dist/{chunk-NQ2HQ6P5.js → chunk-HVPC2GHY.js} +6 -6
  102. package/dist/{chunk-FFKYL7Z3.js → chunk-L7THQMFB.js} +4 -2
  103. package/dist/{chunk-PAWGBSHU.js → chunk-LOECRMHA.js} +1 -1
  104. package/dist/{chunk-LSJZUA5V.js → chunk-LSB3EHBW.js} +2 -2
  105. package/dist/{chunk-ERHSECG2.js → chunk-MORLKUGM.js} +1 -1
  106. package/dist/{chunk-UWQWTGQH.js → chunk-MPXI6FM6.js} +3 -3
  107. package/dist/{chunk-DHPUMOTX.js → chunk-N5KCGFWI.js} +8 -4
  108. package/dist/{chunk-ZAO4HHXI.js → chunk-OG6CL3EB.js} +1 -1
  109. package/dist/{chunk-C5WJUZVR.js → chunk-ORNOOMVY.js} +1 -1
  110. package/dist/{chunk-WUVZDFHS.js → chunk-OVLJEVQS.js} +2 -2
  111. package/dist/{chunk-AUS5FNQE.js → chunk-PDUZO35I.js} +1 -1
  112. package/dist/{chunk-YLYOWZ4V.js → chunk-PXU6HOZB.js} +1 -1
  113. package/dist/{chunk-AGQ3YLA5.js → chunk-QJZ3Y6WW.js} +6 -6
  114. package/dist/{chunk-S7KW47IQ.js → chunk-RHHGLTXJ.js} +1 -1
  115. package/dist/{chunk-SJQ546ID.js → chunk-SEFMO2EV.js} +1 -1
  116. package/dist/{chunk-KJ34ZBBI.js → chunk-SMBKXWML.js} +1 -1
  117. package/dist/{chunk-FIFNP6PL.js → chunk-SX2DFTQV.js} +1 -1
  118. package/dist/{chunk-L6XZOCP4.js → chunk-UCYIRDND.js} +2 -2
  119. package/dist/{chunk-D6EVJUGU.js → chunk-UYK72NOS.js} +1 -1
  120. package/dist/{chunk-TIWAHZZ6.js → chunk-VCOELPCT.js} +2 -2
  121. package/dist/{chunk-2HY7I3NT.js → chunk-VE6LD3KM.js} +5 -3
  122. package/dist/{chunk-CAIHUYXV.js → chunk-W4GQWFRX.js} +1 -1
  123. package/dist/{chunk-BWIPKSWA.js → chunk-XX2VQE55.js} +1 -1
  124. package/dist/{chunk-UA7O3KKJ.js → chunk-YCTMKKRA.js} +1 -1
  125. package/dist/{chunk-DSUY5F4E.js → chunk-ZGX2DP7F.js} +2 -2
  126. package/dist/generated/index.js +44 -44
  127. package/dist/index.js +44 -44
  128. package/dist/styles.css +662 -223
  129. package/package.json +3 -3
  130. package/dist/SegmentedControl-X3BI3XU4.css +0 -68
@@ -1,25 +1,25 @@
1
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-KKLITCMF.js';
1
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-CHG7VT2M.js';
2
2
  import '../chunk-PGRPNDWM.js';
3
3
  import '../chunk-HOXGBLEY.js';
4
4
  import '../chunk-3CZ7XAVY.js';
5
- import '../chunk-KJ34ZBBI.js';
6
- import '../chunk-AGQ3YLA5.js';
7
- import '../chunk-LSJZUA5V.js';
5
+ import '../chunk-5I56UXBJ.js';
6
+ import '../chunk-PDUZO35I.js';
7
+ import '../chunk-QJZ3Y6WW.js';
8
+ import '../chunk-LSB3EHBW.js';
8
9
  import '../chunk-EUCC37WY.js';
9
- import '../chunk-MV2E3QZM.js';
10
- import '../chunk-IBYO2IJN.js';
11
- import '../chunk-AUS5FNQE.js';
10
+ import '../chunk-YCTMKKRA.js';
12
11
  import '../chunk-GXQ3B46I.js';
13
12
  import '../chunk-AV2DXAEL.js';
14
- import '../chunk-UA7O3KKJ.js';
15
13
  import '../chunk-5VNUYO76.js';
14
+ import '../chunk-SMBKXWML.js';
15
+ import '../chunk-BTHX2FS3.js';
16
16
  import '../chunk-6MU7HNB4.js';
17
- import '../chunk-DSUY5F4E.js';
17
+ import '../chunk-ZGX2DP7F.js';
18
18
  import '../chunk-BHHIIK3M.js';
19
19
  import '../chunk-PQADV6P6.js';
20
20
  import '../chunk-7RPGY3JE.js';
21
21
  import '../chunk-R25RGPUB.js';
22
- import '../chunk-4UQ7SMPK.js';
23
- import '../chunk-ZAO4HHXI.js';
22
+ import '../chunk-4FQT6ZAY.js';
23
+ import '../chunk-OG6CL3EB.js';
24
24
  import '../chunk-BZFWDIV6.js';
25
25
  import '../chunk-ODEQTPFM.js';
@@ -1,9 +1,9 @@
1
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-IBYO2IJN.js';
2
- import '../chunk-AUS5FNQE.js';
1
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-5I56UXBJ.js';
2
+ import '../chunk-PDUZO35I.js';
3
3
  import '../chunk-GXQ3B46I.js';
4
4
  import '../chunk-7RPGY3JE.js';
5
5
  import '../chunk-R25RGPUB.js';
6
- import '../chunk-4UQ7SMPK.js';
7
- import '../chunk-ZAO4HHXI.js';
6
+ import '../chunk-4FQT6ZAY.js';
7
+ import '../chunk-OG6CL3EB.js';
8
8
  import '../chunk-BZFWDIV6.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -41,12 +41,17 @@
41
41
  * Focus and open are drawn alike, and the ring is an OUTLINE: forced-colors
42
42
  * mode drops every box-shadow and keeps outlines, so a ring drawn as a shadow
43
43
  * disappears for exactly the readers who most need one.
44
+ *
45
+ * ONE RING, OVER THE BOUNDARY. It stood 2px off the box with the border
46
+ * recoloured to the focus colour as well, which is an accent hairline, a gap
47
+ * and an accent band: two rings from one state. On the inset offset the ring
48
+ * covers the border, and the border keeps its own colour under it, the rule
49
+ * every field keeps (see Input.css).
44
50
  */
45
51
  .crewlet-datetime:focus-visible,
46
52
  .crewlet-datetime.is-open {
47
- outline: 2px solid var(--color-focus);
48
- outline-offset: 2px;
49
- border-color: var(--color-focus);
53
+ outline: 1px solid var(--color-focus);
54
+ outline-offset: -1px;
50
55
  }
51
56
 
52
57
  .crewlet-datetime.is-disabled,
@@ -169,10 +174,10 @@ svg.crewlet-datetime__chevron {
169
174
  margin: 0;
170
175
  }
171
176
 
177
+ /* The same one ring the trigger draws, over the box's own boundary. */
172
178
  .crewlet-datetime__time-input:focus-visible {
173
- outline: 2px solid var(--color-focus);
174
- outline-offset: 2px;
175
- border-color: var(--color-focus);
179
+ outline: 1px solid var(--color-focus);
180
+ outline-offset: -1px;
176
181
  }
177
182
 
178
183
  .crewlet-datetime__footer {
@@ -1,4 +1,4 @@
1
- export { ErrorBoundary } from '../chunk-BWIPKSWA.js';
2
- import '../chunk-ZAO4HHXI.js';
1
+ export { ErrorBoundary } from '../chunk-XX2VQE55.js';
2
+ import '../chunk-OG6CL3EB.js';
3
3
  import '../chunk-BZFWDIV6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,3 +1,3 @@
1
- export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-ZFATEERP.js';
1
+ export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-5YLON2PW.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -68,9 +68,12 @@
68
68
  color: var(--color-text-primary);
69
69
  }
70
70
 
71
+ /* One ring, over the chip's own boundary rather than 2px off it, which is two
72
+ edges with a gap between them: the rule every field keeps (see Input.css).
73
+ A chip that is on still says so under the ring, in its fill and its ink. */
71
74
  .crewlet-filter-chip:focus-visible {
72
75
  outline: 2px solid var(--color-focus);
73
- outline-offset: 2px;
76
+ outline-offset: var(--size-focus-ring-inset-offset);
74
77
  }
75
78
 
76
79
  .crewlet-filter-chip:disabled {
@@ -1,3 +1,3 @@
1
- export { IconButton } from '../chunk-4UQ7SMPK.js';
1
+ export { IconButton } from '../chunk-4FQT6ZAY.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -34,6 +34,21 @@
34
34
  outline-offset: 2px;
35
35
  }
36
36
 
37
+ /*
38
+ * ONE RING, OVER THE BOUNDARY, on every square that draws one: the secondary
39
+ * and the soft-brand at rest, and the ghost-brand, which grows one under the
40
+ * pointer. A ring standing 2px off a visible border is two edges with a gap
41
+ * between them, which reads as a second outline rather than as focus; on the
42
+ * inset offset it covers the border instead, the rule every field keeps (see
43
+ * Input.css). The other ghosts never draw an edge, so they keep the outset
44
+ * ring.
45
+ */
46
+ .crewlet-icon-btn--secondary:focus-visible,
47
+ .crewlet-icon-btn--soft-brand:focus-visible,
48
+ .crewlet-icon-btn--ghost-brand:focus-visible {
49
+ outline-offset: var(--size-focus-ring-inset-offset);
50
+ }
51
+
37
52
  .crewlet-icon-btn:disabled,
38
53
  .crewlet-icon-btn[aria-disabled='true'] {
39
54
  opacity: 0.5;
@@ -1,3 +1,3 @@
1
- export { ImageUpload } from '../chunk-CAIHUYXV.js';
1
+ export { ImageUpload } from '../chunk-W4GQWFRX.js';
2
2
  import '../chunk-IA232OTU.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -181,9 +181,13 @@
181
181
  cursor: default;
182
182
  }
183
183
 
184
+ /* One ring, drawn OVER the badge's knockout ring rather than 2px outside it:
185
+ over the image the knockout is an edge of its own, and a ring standing off
186
+ it was two rings round one small disc. On the inset offset the focus ring
187
+ takes the knockout's place, which still parts the disc from the image. */
184
188
  .crewlet-image-upload__remove:focus-visible {
185
189
  outline: 2px solid var(--color-focus);
186
- outline-offset: 2px;
190
+ outline-offset: var(--size-focus-ring-inset-offset);
187
191
  }
188
192
 
189
193
  .crewlet-image-upload__input {
@@ -1,5 +1,5 @@
1
- export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-DSUY5F4E.js';
1
+ export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-ZGX2DP7F.js';
2
2
  import '../chunk-PQADV6P6.js';
3
- import '../chunk-4UQ7SMPK.js';
3
+ import '../chunk-4FQT6ZAY.js';
4
4
  import '../chunk-BZFWDIV6.js';
5
5
  import '../chunk-ODEQTPFM.js';
@@ -74,11 +74,14 @@
74
74
  * forced-colors mode drops every box-shadow and keeps outlines: a ring drawn
75
75
  * as a shadow disappears for exactly the readers who most need one.
76
76
  *
77
- * It is drawn INSIDE the box, on the offset every focusable in a clipping
78
- * scroller takes, so it covers the boundary rather than standing outside it.
79
- * Two things follow: a scroller cannot clip it, and the field does not grow a
80
- * four-pixel halo the moment a caret lands in it, which is what a filter box
81
- * in a toolbar of them did to the row it sits in.
77
+ * It is ONE PIXEL, LAID EXACTLY ON THE BOUNDARY: the field's own hairline,
78
+ * drawn in the focus colour, which is how the console's fields say focus. At
79
+ * two pixels it was a heavy band round every box a caret landed in, and on a
80
+ * form of them the field being typed in read as the loudest thing on the page.
81
+ * Drawn on the boundary rather than outside it, a scroller cannot clip it and
82
+ * the field does not grow a halo the moment a caret lands in it, which is what
83
+ * a filter box in a toolbar of them did to the row it sits in. Every boxed
84
+ * field in the package rings this way (`Input.test.tsx` holds them to it).
82
85
  *
83
86
  * THE BORDER IS LEFT ALONE. Recolouring it under the ring says nothing the
84
87
  * ring has not already said, and it is what cost the error state its own
@@ -94,8 +97,8 @@
94
97
  * on a pointer press as well as on a tab.
95
98
  */
96
99
  .crewlet-input:has(.crewlet-input__control:focus-visible) {
97
- outline: 2px solid var(--color-focus);
98
- outline-offset: var(--size-focus-ring-inset-offset);
100
+ outline: 1px solid var(--color-focus);
101
+ outline-offset: -1px;
99
102
  }
100
103
 
101
104
  .crewlet-input.is-error {
@@ -354,8 +357,8 @@
354
357
  on the control itself: a textarea is the field, with nothing wrapped round
355
358
  it and nothing focusable inside it. */
356
359
  .crewlet-textarea:focus-visible {
357
- outline: 2px solid var(--color-focus);
358
- outline-offset: var(--size-focus-ring-inset-offset);
360
+ outline: 1px solid var(--color-focus);
361
+ outline-offset: -1px;
359
362
  }
360
363
 
361
364
  .crewlet-textarea.is-error {
@@ -371,10 +374,37 @@
371
374
  cursor: not-allowed;
372
375
  }
373
376
 
377
+ /*
378
+ * ONE LINE THAT GROWS STARTS AT THE SINGLE-LINE FIELD'S HEIGHT. A box that
379
+ * grows to fit what is typed was drawn at the large control step while it held
380
+ * one line, so the box a list item is written in stood sixteen pixels taller
381
+ * than the fields above and below it. One line now stands at the medium step,
382
+ * the height of every single-line field, with the line centred in it as an
383
+ * input's is: the block padding is what that step leaves once the two border
384
+ * pixels and one line are paid for. Each line past the first grows it from
385
+ * there.
386
+ */
374
387
  .crewlet-textarea.is-auto-resize {
375
388
  resize: none;
376
389
  overflow: hidden;
377
- min-height: var(--size-control-lg);
390
+ min-height: var(--size-control-md);
391
+ padding-block: max(
392
+ 0px,
393
+ calc((var(--size-control-md) - 2px - var(--font-line-height-normal) * var(--font-size-compact)) / 2)
394
+ );
395
+ }
396
+
397
+ /*
398
+ * AND WHAT TRAILS IT SITS ON ITS FIRST LINE, centred in the band one line
399
+ * takes, which is exactly where an input's trailing hint sits. Pinned a spacing
400
+ * step from the top, it sat above the line's middle and level with nothing;
401
+ * on the first line it stays put as the box grows under it.
402
+ */
403
+ .crewlet-textarea-shell:has(> .crewlet-textarea.is-auto-resize) > .crewlet-input__trailing {
404
+ top: 0;
405
+ display: flex;
406
+ align-items: center;
407
+ height: var(--size-control-md);
378
408
  }
379
409
 
380
410
  .crewlet-textarea::placeholder {
package/dist/Kbd/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Kbd, isApplePlatform, keyGlyph } from '../chunk-KJ34ZBBI.js';
1
+ export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SMBKXWML.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -42,9 +42,20 @@
42
42
  * platform prints a chord. It is a `kbd` of its own because that is what a key
43
43
  * inside a key combination is, and a user agent's `kbd` rule would otherwise
44
44
  * set its own face and size on it.
45
+ *
46
+ * AND IT TAKES NO BOX FROM ANYBODY ELSE. An application stylesheet that draws
47
+ * a bare `kbd` as a cap of its own (a common enough rule) reached each key in
48
+ * here and framed it, so one chord drew a frame round a run of framed keys.
49
+ * The key states every part of its box, so whatever a page says about `kbd`,
50
+ * a chord is one cap.
45
51
  */
46
52
  .crewlet-kbd__key {
47
53
  font: inherit;
54
+ color: inherit;
55
+ padding: 0;
56
+ background: none;
57
+ border: 0;
58
+ border-radius: 0;
48
59
  }
49
60
 
50
61
  /*
@@ -1,10 +1,10 @@
1
- export { ListInput } from '../chunk-PQNILU27.js';
2
- import '../chunk-KJ34ZBBI.js';
3
- import '../chunk-DSUY5F4E.js';
1
+ export { ListInput } from '../chunk-6HXH57BL.js';
2
+ import '../chunk-SMBKXWML.js';
3
+ import '../chunk-ZGX2DP7F.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-RSAQOKH3.js';
6
6
  import '../chunk-7RPGY3JE.js';
7
7
  import '../chunk-R25RGPUB.js';
8
- import '../chunk-4UQ7SMPK.js';
8
+ import '../chunk-4FQT6ZAY.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { Menu } from '../chunk-LSJZUA5V.js';
1
+ export { Menu } from '../chunk-LSB3EHBW.js';
2
2
  import '../chunk-7RPGY3JE.js';
3
3
  import '../chunk-R25RGPUB.js';
4
- import '../chunk-4UQ7SMPK.js';
5
- import '../chunk-ZAO4HHXI.js';
4
+ import '../chunk-4FQT6ZAY.js';
5
+ import '../chunk-OG6CL3EB.js';
6
6
  import '../chunk-BZFWDIV6.js';
7
7
  import '../chunk-ODEQTPFM.js';
@@ -1,8 +1,8 @@
1
- export { ConfirmModal, Modal } from '../chunk-MV2E3QZM.js';
1
+ export { ConfirmModal, Modal } from '../chunk-BTHX2FS3.js';
2
2
  import '../chunk-PQADV6P6.js';
3
3
  import '../chunk-7RPGY3JE.js';
4
4
  import '../chunk-R25RGPUB.js';
5
- import '../chunk-4UQ7SMPK.js';
6
- import '../chunk-ZAO4HHXI.js';
5
+ import '../chunk-4FQT6ZAY.js';
6
+ import '../chunk-OG6CL3EB.js';
7
7
  import '../chunk-BZFWDIV6.js';
8
8
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { NewItemsNotice } from '../chunk-YLYOWZ4V.js';
1
+ export { NewItemsNotice } from '../chunk-PXU6HOZB.js';
2
2
  import '../chunk-RSAQOKH3.js';
3
3
  import '../chunk-BZFWDIV6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -48,9 +48,11 @@
48
48
  color: var(--color-brand-accent-ink);
49
49
  }
50
50
 
51
+ /* One ring, over the pill's own boundary rather than 2px off it, which is two
52
+ edges with a gap between them: the rule every field keeps (see Input.css). */
51
53
  .crewlet-new-items:focus-visible {
52
54
  outline: 2px solid var(--color-focus);
53
- outline-offset: 2px;
55
+ outline-offset: var(--size-focus-ring-inset-offset);
54
56
  }
55
57
 
56
58
  @media (prefers-reduced-motion: reduce) {
@@ -84,13 +84,21 @@ export type OrgLabelMark = {
84
84
  * so this moves nothing: only what is drawn inside it.
85
85
  */
86
86
  iconSize?: 'md' | 'lg' | undefined;
87
+ /**
88
+ * A DASHED RING ROUND THE GLYPH, which is how the console chart draws a
89
+ * person's seat: a figure inside a boundary, because a person is the
90
+ * one seat the engine does not run. Drawn in a node only; a row draws
91
+ * the glyph alone, as the console table does.
92
+ */
93
+ iconRing?: boolean | undefined;
87
94
  avatar?: undefined;
88
95
  } | {
89
96
  /**
90
97
  * A SEAT'S BADGE, with its kind as its outline: a squircle for an agent,
91
- * a circle for a person, which is the one cue that tells them apart.
92
- * There used to be a second, a dashed ring round a glyph for a human
93
- * seat, and two cues for one fact are two things to keep agreeing.
98
+ * a circle for a person, for a surface that names seats by their
99
+ * initials. A surface drawn as the console chart draws one marks a seat
100
+ * with a glyph instead (the Crewlet figure for an agent, a person inside
101
+ * a dashed ring for a human) and takes the other branch.
94
102
  *
95
103
  * The layout sizes it and nothing here does: the approved org chart's
96
104
  * 26px badge in a node and the smallest step, 20px, in a row.
@@ -101,6 +109,7 @@ export type OrgLabelMark = {
101
109
  avatar?: OrgLabelAvatar | undefined;
102
110
  icon?: undefined;
103
111
  iconSize?: undefined;
112
+ iconRing?: undefined;
104
113
  };
105
114
  /** What both layouts say besides the mark, in the order they say it. */
106
115
  interface OrgLabelWords {
@@ -1,3 +1,3 @@
1
- export { OrgLabel } from '../chunk-WOFOMTGB.js';
1
+ export { OrgLabel } from '../chunk-B47YUQGM.js';
2
2
  import '../chunk-IA232OTU.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -86,6 +86,44 @@
86
86
  fill: currentColor;
87
87
  }
88
88
 
89
+ /*
90
+ * A PERSON IS A FIGURE INSIDE A DASHED RING, as the console chart draws one:
91
+ * the boundary says this seat is held by someone outside the system. The ring
92
+ * is the 24px target step and the figure inside it a step smaller than a
93
+ * container's glyph, which leaves the air a boundary needs to read as one: at
94
+ * the zone's own step the figure touched the ring on every side.
95
+ *
96
+ * THE RING IS DECORATION, drawn in the step kept for it, and the figure is the
97
+ * mark: the ring says how the seat is held, never what it is.
98
+ */
99
+ .crewlet-org-label__icon--ring {
100
+ position: relative;
101
+ }
102
+
103
+ .crewlet-org-label__icon--ring::before {
104
+ content: '';
105
+ position: absolute;
106
+ top: 50%;
107
+ left: 50%;
108
+ width: var(--size-target-min);
109
+ height: var(--size-target-min);
110
+ border: 1px dashed var(--color-text-muted);
111
+ border-radius: var(--radius-circle);
112
+ transform: translate(-50%, -50%);
113
+ pointer-events: none;
114
+ }
115
+
116
+ .crewlet-org-label__icon--ring > svg {
117
+ width: var(--font-size-md);
118
+ height: var(--font-size-md);
119
+ }
120
+
121
+ /* A ROW DRAWS THE FIGURE ALONE, as the console table does: a ring on a line
122
+ of text is a second boundary inside the row's own. */
123
+ .crewlet-org-label--row .crewlet-org-label__icon--ring::before {
124
+ content: none;
125
+ }
126
+
89
127
  /* ---- The name and its caption -------------------------------------------- */
90
128
 
91
129
  /*
@@ -73,8 +73,9 @@ export interface OrgNodeDisclosureProps extends HTMLAttributes<HTMLDivElement> {
73
73
  export declare function OrgNodeDisclosure({ children, className, ...rest }: OrgNodeDisclosureProps): import("react").JSX.Element;
74
74
  export interface OrgNodeLeadProps {
75
75
  /**
76
- * Nothing is set, so the pill is drawn as the outline of one: a unit with no
77
- * lead is a fact about the organization and a blank strip says nothing.
76
+ * Nothing is set, so the pill is drawn as an empty slot: no ground, a dashed
77
+ * edge and the word in the quieter ink. A unit with no lead is a fact about
78
+ * the organization and a blank strip says nothing.
78
79
  */
79
80
  empty?: boolean | undefined;
80
81
  /**
@@ -97,7 +98,9 @@ export interface OrgNodeLeadProps {
97
98
  * IT STAYS DRAWN, where the controls that edit the node do not: who leads a
98
99
  * unit is a FACT ABOUT THE ORGANIZATION rather than a tool for changing it,
99
100
  * and a chart that hid it until the pointer arrived would be a chart you could
100
- * not read the leads off. Separated from the name above by a hairline, so the
101
- * node reads as a thing with a lead rather than as two lines of text.
101
+ * not read the leads off. A pill on a ground of its own rather than a line of
102
+ * text, so the node reads as a thing with a lead rather than as two lines of
103
+ * text; never framed while a lead is set, because the node it sits in already
104
+ * is, and dashed while none is, because an empty place is what it then says.
102
105
  */
103
106
  export declare function OrgNodeLead({ empty, clear, children, className }: OrgNodeLeadProps): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-TIWAHZZ6.js';
2
- import '../chunk-WOFOMTGB.js';
1
+ export { OrgNodeDisclosure, OrgNodeLabel, OrgNodeLead } from '../chunk-VCOELPCT.js';
2
+ import '../chunk-B47YUQGM.js';
3
3
  import '../chunk-IA232OTU.js';
4
4
  import '../chunk-ODEQTPFM.js';