@crewlethq/ui 0.21.0 → 0.23.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 (73) hide show
  1. package/README.md +23 -1
  2. package/dist/AppShell/index.js +2 -2
  3. package/dist/ArrangeList/index.js +3 -3
  4. package/dist/AvatarPicker/index.js +4 -4
  5. package/dist/Checkbox/index.js +2 -2
  6. package/dist/Combobox/index.js +2 -2
  7. package/dist/CommandPalette/index.js +2 -2
  8. package/dist/CommentThread/index.js +3 -3
  9. package/dist/Composer/index.js +2 -2
  10. package/dist/ConfirmField/index.js +2 -2
  11. package/dist/DataTable/index.js +4 -4
  12. package/dist/DataView/index.js +6 -6
  13. package/dist/DateTimePicker/index.js +1 -1
  14. package/dist/{DateTimePicker-NJ6XH2TE.css → DateTimePicker-HG2KQXQ6.css} +1 -1
  15. package/dist/HuePicker/index.js +3 -3
  16. package/dist/Input/index.js +1 -1
  17. package/dist/{Input-3KVSNUO5.css → Input-GBZSFXLU.css} +16 -9
  18. package/dist/ListInput/index.js +2 -2
  19. package/dist/MarkdownEditor/index.js +4 -4
  20. package/dist/{MarkdownEditor-ZLSHTOIZ.css → MarkdownEditor-WOKV7CLK.css} +3 -2
  21. package/dist/Menu/Menu.d.ts +18 -1
  22. package/dist/Menu/index.js +1 -1
  23. package/dist/{Menu-XIJ4LQUT.css → Menu-KEKAD3BZ.css} +22 -4
  24. package/dist/OrgTable/index.js +2 -2
  25. package/dist/PeopleRail/index.js +1 -1
  26. package/dist/PresenceStack/index.js +1 -1
  27. package/dist/PrincipalPicker/index.js +3 -3
  28. package/dist/SegmentedControl/index.js +3 -3
  29. package/dist/SheetGrid/index.js +1 -1
  30. package/dist/Switcher/index.js +2 -2
  31. package/dist/{Switcher-B44Q4WF4.css → Switcher-K3EPA2RB.css} +10 -4
  32. package/dist/Tabs/index.js +1 -1
  33. package/dist/{Tabs-ITJYJFMU.css → Tabs-CJGO35BH.css} +12 -5
  34. package/dist/TagsInput/index.js +1 -1
  35. package/dist/{TagsInput-P2HS5QL4.css → TagsInput-XMXTI5Q4.css} +1 -1
  36. package/dist/ThemeSwitcher/index.js +4 -4
  37. package/dist/TimeWindowPicker/index.js +2 -2
  38. package/dist/{TimeWindowPicker-BZ5HHATU.css → TimeWindowPicker-T763GLXH.css} +1 -1
  39. package/dist/TreeGrid/index.js +1 -1
  40. package/dist/{TreeGrid-FBX3MSJA.css → TreeGrid-UCPV37XB.css} +12 -0
  41. package/dist/VersionCompare/index.js +4 -4
  42. package/dist/{chunk-7ZNKEPLN.js → chunk-2CQLNML5.js} +1 -1
  43. package/dist/{chunk-LG244LY7.js → chunk-35UKQ33X.js} +2 -2
  44. package/dist/{chunk-Q55TXPA3.js → chunk-6QFAK2WV.js} +1 -1
  45. package/dist/{chunk-26PEPONN.js → chunk-7QL2OFP6.js} +1 -1
  46. package/dist/{chunk-6A7P6II6.js → chunk-AMNN4WDX.js} +1 -1
  47. package/dist/{chunk-73QBUUYX.js → chunk-APS747CR.js} +1 -1
  48. package/dist/{chunk-G5TAKMEA.js → chunk-BFQK7CYJ.js} +2 -1
  49. package/dist/{chunk-QQGWES46.js → chunk-CS65QSIJ.js} +3 -3
  50. package/dist/{chunk-YSJYWQSP.js → chunk-D5JZN3ML.js} +1 -1
  51. package/dist/{chunk-YSY6UJ4F.js → chunk-FGYET26P.js} +1 -1
  52. package/dist/{chunk-4HRB62EA.js → chunk-GTLJXJ3U.js} +1 -1
  53. package/dist/{chunk-I6NZKJGK.js → chunk-IASV5UCP.js} +1 -1
  54. package/dist/{chunk-2ONWEDQT.js → chunk-IPM2E6UI.js} +1 -1
  55. package/dist/{chunk-AV6YX4GZ.js → chunk-JCSXFAXG.js} +4 -4
  56. package/dist/{chunk-7X5WOECO.js → chunk-KG6XRG5Z.js} +2 -2
  57. package/dist/{chunk-NUZC6PJX.js → chunk-LREN6TUG.js} +2 -2
  58. package/dist/{chunk-VYY56AMX.js → chunk-M54K52ZU.js} +1 -1
  59. package/dist/{chunk-XU4ZUGLE.js → chunk-OQT7GSKJ.js} +1 -1
  60. package/dist/{chunk-IC64IWOO.js → chunk-PBNP7H2C.js} +1 -1
  61. package/dist/{chunk-LOLELDBW.js → chunk-QS4ZGTEU.js} +1 -1
  62. package/dist/{chunk-VJLYGPPE.js → chunk-RIEDQSA4.js} +1 -1
  63. package/dist/{chunk-AIVZVKYZ.js → chunk-SJCKMSQK.js} +1 -1
  64. package/dist/{chunk-T7ICFXEC.js → chunk-U63Y5OCW.js} +1 -1
  65. package/dist/{chunk-4MIM356A.js → chunk-UFKUWVMV.js} +17 -6
  66. package/dist/{chunk-T5TFZ2JB.js → chunk-VEB5ERRE.js} +1 -1
  67. package/dist/{chunk-RE6ED5TO.js → chunk-WG5WUFBX.js} +1 -1
  68. package/dist/{chunk-4LDTQWS7.js → chunk-XJFOOXCF.js} +1 -1
  69. package/dist/{chunk-JEDWC3GI.js → chunk-ZITJKF6Z.js} +1 -1
  70. package/dist/generated/index.js +39 -39
  71. package/dist/index.js +39 -39
  72. package/dist/styles.css +87 -36
  73. package/package.json +3 -3
package/README.md CHANGED
@@ -203,6 +203,28 @@ places:
203
203
  - A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
204
204
  when the content beneath it moves, and every panel anchored inside follows.
205
205
 
206
+ ## Changes in 0.23.0
207
+
208
+ **A text field's edge is quieter.** `Input`, the textarea, `TagsInput`, `MarkdownEditor` and the typed boxes inside `DateTimePicker` and `TimeWindowPicker` draw `--color-border-field` (new in `@crewlethq/tokens` 0.23.0): the secondary button's edge lifted only as far as 3:1 on the surfaces a field stands on, rather than the control boundary that was the brightest edge on the page. Under the pointer the edge steps up to `--color-border-control`; it used to step down to the hover hairline and fade. Checkboxes, switches and editors inside a row keep `--color-border-control`.
209
+
210
+ **A chosen chip draws the accent's soft pair.** The chip that is on in a `Tabs` chip row, and the current row of a `Switcher`, take `--color-brand-accent-soft` with a `--color-brand-accent-soft-strong` hairline, as a chosen `FilterChip` does, instead of a full-strength accent ring. A switcher row the arrows or the pointer are on keeps the listbox's own fill.
211
+
212
+ **Inside a flush card the `TreeGrid` draws no frame of its own.** The card is the frame, so the grid's border, corner and ground step aside and its rows run to the card's edges, its footer included.
213
+
214
+ What to change: nothing.
215
+
216
+ ## Changes in 0.22.0
217
+
218
+ **`Menu` takes `width`** (`'content'`, the default, or `'trigger'`). `'trigger'` keeps the panel no narrower than its trigger, so a trigger that spans a column opens a menu that covers it edge to edge, and still lets it grow past the trigger when a row needs the room.
219
+
220
+ **`Menu` takes `trailingIcon`**, a glyph after a text trigger's words, such as a picker's chevron. It is drawn as the button's trailing icon, a gap away from the words, where a glyph written into `trigger` sat flush against them.
221
+
222
+ **`Menu` reads more easily.** A header's name and value share one line (`Access … Admin`), and a row's description is one type step under its label rather than two.
223
+
224
+ **`AppShell.AccountRow`'s menu covers the row.** Pressing who you are opens a menu at least as wide as the row itself.
225
+
226
+ What to change: nothing.
227
+
206
228
  ## Changes in 0.21.0
207
229
 
208
230
  **`AppShell.AccountRow` takes `menu`** (`AccountRowMenu`: `label`, `header`, `items`): pressing who you are opens the reader's own menu instead of linking anywhere, which is where a reader looks for their account and for signing out. The row becomes the menu button, ending in the up-and-down chevron a menu's trigger draws, keeps the account page's current-row lift (`data-current`), and the menu's header holds the facts the row does not already say, such as the reader's access. Given, `menu` takes the place of `href`.
@@ -345,7 +367,7 @@ What to change: a screen that leaned on `max` to clear old failures now keeps th
345
367
 
346
368
  **Toasts are the first release's strip again**: a dark strip on `--color-surface-background` with the large shadow and the rim light, a 12px corner, a 20px mark, a slide in from the right, and the countdown as a wash behind the words that drains from the right. A variant spends its hue on its mark (the feedback ink step) and its wash (the feedback soft step) only, so a failure is a rose mark on a faint rose wash with a rose action, never red words on a red edge. Reduced motion keeps the strip still and draws no wash.
347
369
 
348
- **A picker's boundary is a button's.** `Select`, `DateTimePicker` and `TimeWindowPicker` draw their trigger on `--color-border-strong`, as the secondary button does, and step to `--color-border-strong-hover` under the pointer. Text boxes, checkboxes and switches keep `--color-border-control` at 3:1, as do the typed boxes inside the pickers' panels.
370
+ **A picker's boundary is a button's.** `Select`, `DateTimePicker` and `TimeWindowPicker` draw their trigger on `--color-border-strong`, as the secondary button does, and step to `--color-border-strong-hover` under the pointer. Text boxes and the typed boxes inside the pickers' panels draw `--color-border-field` (see 0.23.0); checkboxes and switches keep `--color-border-control` at 3:1.
349
371
 
350
372
  **A `Select` list that leads with marks ends its rows with the tick**, so a swatch, an avatar or a glyph starts at the panel's edge. A list of words keeps the tick's column first.
351
373
 
@@ -1,6 +1,6 @@
1
- export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-G5TAKMEA.js';
1
+ export { AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellToggle, AppShellTopbar, useAppShell } from '../chunk-BFQK7CYJ.js';
2
2
  import '../chunk-IG75YMUN.js';
3
- import '../chunk-4MIM356A.js';
3
+ import '../chunk-UFKUWVMV.js';
4
4
  import '../chunk-OG6CL3EB.js';
5
5
  import '../chunk-HMPFGIWM.js';
6
6
  import '../chunk-R25RGPUB.js';
@@ -1,8 +1,8 @@
1
- export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-AIVZVKYZ.js';
1
+ export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-SJCKMSQK.js';
2
2
  import '../chunk-A722MUNR.js';
3
3
  import '../chunk-XJ2QEBMM.js';
4
- import '../chunk-I6NZKJGK.js';
5
- import '../chunk-Q55TXPA3.js';
4
+ import '../chunk-IASV5UCP.js';
5
+ import '../chunk-6QFAK2WV.js';
6
6
  import '../chunk-PQADV6P6.js';
7
7
  import '../chunk-RSAQOKH3.js';
8
8
  import '../chunk-4FQT6ZAY.js';
@@ -1,7 +1,7 @@
1
- export { AvatarPicker } from '../chunk-T7ICFXEC.js';
2
- import '../chunk-XU4ZUGLE.js';
3
- import '../chunk-26PEPONN.js';
4
- import '../chunk-4LDTQWS7.js';
1
+ export { AvatarPicker } from '../chunk-U63Y5OCW.js';
2
+ import '../chunk-OQT7GSKJ.js';
3
+ import '../chunk-7QL2OFP6.js';
4
+ import '../chunk-XJFOOXCF.js';
5
5
  import '../chunk-BWRGFKJP.js';
6
6
  import '../chunk-AYKXMIOR.js';
7
7
  import '../chunk-5PSXBL73.js';
@@ -1,5 +1,5 @@
1
- export { Checkbox, CheckboxGroup } from '../chunk-I6NZKJGK.js';
2
- import '../chunk-Q55TXPA3.js';
1
+ export { Checkbox, CheckboxGroup } from '../chunk-IASV5UCP.js';
2
+ import '../chunk-6QFAK2WV.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-4FQT6ZAY.js';
5
5
  import '../chunk-BZFWDIV6.js';
@@ -1,6 +1,6 @@
1
- export { Combobox } from '../chunk-LOLELDBW.js';
1
+ export { Combobox } from '../chunk-QS4ZGTEU.js';
2
2
  import '../chunk-F73MC7EZ.js';
3
- import '../chunk-Q55TXPA3.js';
3
+ import '../chunk-6QFAK2WV.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-R25RGPUB.js';
6
6
  import '../chunk-4FQT6ZAY.js';
@@ -1,8 +1,8 @@
1
- export { CommandPalette } from '../chunk-4HRB62EA.js';
1
+ export { CommandPalette } from '../chunk-GTLJXJ3U.js';
2
2
  import '../chunk-F4DPAJCN.js';
3
3
  import '../chunk-F73MC7EZ.js';
4
4
  import '../chunk-SMBKXWML.js';
5
- import '../chunk-Q55TXPA3.js';
5
+ import '../chunk-6QFAK2WV.js';
6
6
  import '../chunk-PQADV6P6.js';
7
7
  import '../chunk-BHHIIK3M.js';
8
8
  import '../chunk-OG6CL3EB.js';
@@ -1,8 +1,8 @@
1
- export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-IC64IWOO.js';
1
+ export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-PBNP7H2C.js';
2
2
  import '../chunk-WI6K5M5X.js';
3
- import '../chunk-VJLYGPPE.js';
3
+ import '../chunk-RIEDQSA4.js';
4
4
  import '../chunk-SMBKXWML.js';
5
- import '../chunk-Q55TXPA3.js';
5
+ import '../chunk-6QFAK2WV.js';
6
6
  import '../chunk-4KP4RC3O.js';
7
7
  import '../chunk-3CZ7XAVY.js';
8
8
  import '../chunk-EUCC37WY.js';
@@ -1,6 +1,6 @@
1
- export { COMPOSER_COUNTER_AT, Composer } from '../chunk-VJLYGPPE.js';
1
+ export { COMPOSER_COUNTER_AT, Composer } from '../chunk-RIEDQSA4.js';
2
2
  import '../chunk-SMBKXWML.js';
3
- import '../chunk-Q55TXPA3.js';
3
+ import '../chunk-6QFAK2WV.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-4FQT6ZAY.js';
6
6
  import '../chunk-BZFWDIV6.js';
@@ -1,6 +1,6 @@
1
- export { ConfirmField, confirmMatches } from '../chunk-YSY6UJ4F.js';
1
+ export { ConfirmField, confirmMatches } from '../chunk-FGYET26P.js';
2
2
  import '../chunk-5CLW2CXT.js';
3
- import '../chunk-Q55TXPA3.js';
3
+ import '../chunk-6QFAK2WV.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-4FQT6ZAY.js';
6
6
  import '../chunk-BZFWDIV6.js';
@@ -1,13 +1,13 @@
1
- export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-LG244LY7.js';
1
+ export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-35UKQ33X.js';
2
2
  import '../chunk-STJ7QBC3.js';
3
3
  import '../chunk-DTIW4CHZ.js';
4
4
  import '../chunk-F4DPAJCN.js';
5
- import '../chunk-I6NZKJGK.js';
6
- import '../chunk-Q55TXPA3.js';
5
+ import '../chunk-IASV5UCP.js';
6
+ import '../chunk-6QFAK2WV.js';
7
7
  import '../chunk-EUCC37WY.js';
8
8
  import '../chunk-AV2DXAEL.js';
9
9
  import '../chunk-PQADV6P6.js';
10
- import '../chunk-4MIM356A.js';
10
+ import '../chunk-UFKUWVMV.js';
11
11
  import '../chunk-OG6CL3EB.js';
12
12
  import '../chunk-HMPFGIWM.js';
13
13
  import '../chunk-R25RGPUB.js';
@@ -1,23 +1,23 @@
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-AV6YX4GZ.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-JCSXFAXG.js';
2
2
  import '../chunk-HOXGBLEY.js';
3
3
  import '../chunk-PGRPNDWM.js';
4
- import '../chunk-RE6ED5TO.js';
5
- import '../chunk-LG244LY7.js';
4
+ import '../chunk-35UKQ33X.js';
5
+ import '../chunk-WG5WUFBX.js';
6
6
  import '../chunk-STJ7QBC3.js';
7
7
  import '../chunk-DTIW4CHZ.js';
8
8
  import '../chunk-F4DPAJCN.js';
9
9
  import '../chunk-F73MC7EZ.js';
10
10
  import '../chunk-SMBKXWML.js';
11
11
  import '../chunk-GXQ3B46I.js';
12
- import '../chunk-I6NZKJGK.js';
13
- import '../chunk-Q55TXPA3.js';
12
+ import '../chunk-IASV5UCP.js';
13
+ import '../chunk-6QFAK2WV.js';
14
14
  import '../chunk-3CZ7XAVY.js';
15
15
  import '../chunk-EUCC37WY.js';
16
16
  import '../chunk-BWRGFKJP.js';
17
17
  import '../chunk-AV2DXAEL.js';
18
18
  import '../chunk-PQADV6P6.js';
19
19
  import '../chunk-BHHIIK3M.js';
20
- import '../chunk-4MIM356A.js';
20
+ import '../chunk-UFKUWVMV.js';
21
21
  import '../chunk-OG6CL3EB.js';
22
22
  import '../chunk-HMPFGIWM.js';
23
23
  import '../chunk-R25RGPUB.js';
@@ -1,4 +1,4 @@
1
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-RE6ED5TO.js';
1
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-WG5WUFBX.js';
2
2
  import '../chunk-GXQ3B46I.js';
3
3
  import '../chunk-BWRGFKJP.js';
4
4
  import '../chunk-OG6CL3EB.js';
@@ -159,7 +159,7 @@ svg.crewlet-datetime__chevron {
159
159
  font-variant-numeric: tabular-nums;
160
160
  color: var(--color-text-primary);
161
161
  background: var(--color-surface-subtle);
162
- border: 1px solid var(--color-border-control);
162
+ border: 1px solid var(--color-border-field);
163
163
  /* A box is a box: the corner every field in the package wears. */
164
164
  border-radius: var(--radius-md);
165
165
  outline: none;
@@ -1,7 +1,7 @@
1
1
  import '../chunk-FFMCMSJB.js';
2
- export { HuePicker } from '../chunk-XU4ZUGLE.js';
3
- import '../chunk-26PEPONN.js';
4
- import '../chunk-4LDTQWS7.js';
2
+ export { HuePicker } from '../chunk-OQT7GSKJ.js';
3
+ import '../chunk-7QL2OFP6.js';
4
+ import '../chunk-XJFOOXCF.js';
5
5
  import '../chunk-AYKXMIOR.js';
6
6
  import '../chunk-CBOICT64.js';
7
7
  import '../chunk-BHHIIK3M.js';
@@ -1,4 +1,4 @@
1
- export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-Q55TXPA3.js';
1
+ export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-6QFAK2WV.js';
2
2
  import '../chunk-PQADV6P6.js';
3
3
  import '../chunk-4FQT6ZAY.js';
4
4
  import '../chunk-BZFWDIV6.js';
@@ -11,12 +11,14 @@
11
11
  * with padding on all four sides a 32px field drew 39px tall, so a field, the
12
12
  * button beside it and the select beside that were three heights.
13
13
  *
14
- * THE BOUNDARY IS --color-border-control, not the default border. A text
15
- * box, a checkbox and a switch are the three things on a page whose OUTLINE
16
- * is the control: with the ordinary hairline they measured 1.27:1 in light
17
- * and 1.75:1 in dark, which is a box a reader has to already know is there.
18
- * It is the one place this register does not follow the product's own
19
- * stylesheet, which draws every field on the panel hairline.
14
+ * THE BOUNDARY IS --color-border-field, not the default border. A text box
15
+ * is one of the few things on a page whose OUTLINE is the control: with the
16
+ * ordinary hairline it measured 1.27:1 in light and 1.75:1 in dark, which is
17
+ * a box a reader has to already know is there. The field step is the strong
18
+ * border lifted only as far as 3:1 on the rungs a field stands on, so it
19
+ * clears that floor without being the brightest edge on the page, which the
20
+ * control boundary was: held to every row composite a checkbox meets, it
21
+ * measured 4.9:1 on the card a search box nearly always sits on.
20
22
  *
21
23
  * AND A FOCUSED FIELD SHOWS ONE RING, drawn as an outline over that boundary.
22
24
  * Every field in this package states that rule for itself and states it the
@@ -40,7 +42,7 @@
40
42
  width: 100%;
41
43
  min-height: var(--size-control-md);
42
44
  background-color: var(--color-surface-subtle);
43
- border: 1px solid var(--color-border-control);
45
+ border: 1px solid var(--color-border-field);
44
46
  border-radius: var(--radius-md);
45
47
  /* The boundary is the only thing that moves here. The ring is an outline,
46
48
  which takes no transition, and nothing else paints a shadow. */
@@ -55,8 +57,13 @@
55
57
 
56
58
  .crewlet-input--sm { min-height: var(--size-control-sm); }
57
59
 
60
+ /*
61
+ * UNDER THE POINTER THE EDGE STEPS UP, to the control boundary. The hover
62
+ * border is a hairline step, darker than the field's own edge, so a field
63
+ * that took it faded as the pointer reached it.
64
+ */
58
65
  .crewlet-input:hover {
59
- border-color: var(--color-border-hover);
66
+ border-color: var(--color-border-control);
60
67
  }
61
68
 
62
69
  /*
@@ -344,7 +351,7 @@
344
351
  line-height: var(--font-line-height-normal);
345
352
  color: var(--color-text-primary);
346
353
  background-color: var(--color-surface-subtle);
347
- border: 1px solid var(--color-border-control);
354
+ border: 1px solid var(--color-border-field);
348
355
  border-radius: var(--radius-md);
349
356
  transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
350
357
  box-sizing: border-box;
@@ -1,6 +1,6 @@
1
- export { ListInput } from '../chunk-YSJYWQSP.js';
1
+ export { ListInput } from '../chunk-D5JZN3ML.js';
2
2
  import '../chunk-SMBKXWML.js';
3
- import '../chunk-Q55TXPA3.js';
3
+ import '../chunk-6QFAK2WV.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-HMPFGIWM.js';
6
6
  import '../chunk-R25RGPUB.js';
@@ -1,8 +1,8 @@
1
- export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-QQGWES46.js';
2
- import '../chunk-VYY56AMX.js';
1
+ export { MARKDOWN_FORMATS, MarkdownEditor, formatMarkdown, insertMarkdown, markdownWords } from '../chunk-CS65QSIJ.js';
2
+ import '../chunk-M54K52ZU.js';
3
3
  import '../chunk-PGRPNDWM.js';
4
- import '../chunk-26PEPONN.js';
5
- import '../chunk-4LDTQWS7.js';
4
+ import '../chunk-7QL2OFP6.js';
5
+ import '../chunk-XJFOOXCF.js';
6
6
  import '../chunk-CBOICT64.js';
7
7
  import '../chunk-BHHIIK3M.js';
8
8
  import '../chunk-HMPFGIWM.js';
@@ -19,14 +19,15 @@
19
19
  display: flex;
20
20
  flex-direction: column;
21
21
  min-width: 0;
22
- border: 1px solid var(--color-border-control);
22
+ border: 1px solid var(--color-border-field);
23
23
  border-radius: var(--radius-md);
24
24
  background: var(--color-surface-subtle);
25
25
  transition: border-color var(--motion-duration-fast) var(--motion-easing-default);
26
26
  }
27
27
 
28
28
  .crewlet-markdown-editor:hover {
29
- border-color: var(--color-border-hover);
29
+ /* A step up from the field's edge, as every field takes (see Input.css). */
30
+ border-color: var(--color-border-control);
30
31
  }
31
32
 
32
33
  .crewlet-markdown-editor:has(.crewlet-markdown-editor__field:focus-visible) {
@@ -58,6 +58,11 @@
58
58
  * menu itself rather than sitting beside a second button that does. The
59
59
  * caller spreads the props it is handed on its element, which keeps every
60
60
  * rule above, the focus coming back included.
61
+ * - IT CAN BE NO NARROWER THAN ITS TRIGGER (`width="trigger"`): a trigger
62
+ * that spans a column, such as the signed-in reader at the foot of the
63
+ * rail, opens a panel that covers it edge to edge, and that still grows
64
+ * past it when a row needs the room, so a description reads on one line
65
+ * rather than wrapping into a column of short lines.
61
66
  * - A HEADER SAYS WHAT THE ACTIONS ARE ABOUT (`header`): a line of facts
62
67
  * above the items, such as the access a signed-in reader carries. It is
63
68
  * not an item, so the arrows never stop on it, and the menu is described by
@@ -124,6 +129,12 @@ export interface MenuProps {
124
129
  icon?: ReactNode;
125
130
  /** Visible trigger text; without it the trigger is an icon button named by `label`. */
126
131
  trigger?: ReactNode;
132
+ /**
133
+ * A glyph after the trigger's text, such as the chevron of a picker. Drawn
134
+ * as the button's trailing icon, a gap away from the words; a glyph written
135
+ * into `trigger` instead sits flush against them. Read only with `trigger`.
136
+ */
137
+ trailingIcon?: ReactNode;
127
138
  triggerVariant?: ButtonVariant | undefined;
128
139
  /** -1 for a pointer-only trigger whose actions the keyboard reaches another way. */
129
140
  triggerTabIndex?: number | undefined;
@@ -131,6 +142,12 @@ export interface MenuProps {
131
142
  onOpenChange?: ((open: boolean) => void) | undefined;
132
143
  /** Which edge of the trigger the menu lines up with. */
133
144
  align?: 'start' | 'end' | undefined;
145
+ /**
146
+ * How wide the panel is: its longest row (`content`, the default), or its
147
+ * longest row but never narrower than its trigger (`trigger`), for a
148
+ * trigger that spans a column.
149
+ */
150
+ width?: 'content' | 'trigger' | undefined;
134
151
  /**
135
152
  * The caller's own trigger, in place of the menu's button: an element given
136
153
  * these props. `label` still names the menu; the trigger names itself.
@@ -140,5 +157,5 @@ export interface MenuProps {
140
157
  header?: ReactNode;
141
158
  className?: string | undefined;
142
159
  }
143
- export declare function Menu({ label, items, icon, trigger, triggerVariant, triggerTabIndex, open: controlled, onOpenChange, align, renderTrigger, header, className, }: MenuProps): import("react").JSX.Element;
160
+ export declare function Menu({ label, items, icon, trigger, trailingIcon, triggerVariant, triggerTabIndex, open: controlled, onOpenChange, align, width, renderTrigger, header, className, }: MenuProps): import("react").JSX.Element;
144
161
  export {};
@@ -1,4 +1,4 @@
1
- export { Menu } from '../chunk-4MIM356A.js';
1
+ export { Menu } from '../chunk-UFKUWVMV.js';
2
2
  import '../chunk-OG6CL3EB.js';
3
3
  import '../chunk-HMPFGIWM.js';
4
4
  import '../chunk-R25RGPUB.js';
@@ -34,9 +34,15 @@
34
34
  * however long that label was and the 320px was a number nothing read. A
35
35
  * width is clamped by the ceiling, and the label that no longer fits is the
36
36
  * one that truncates.
37
+ *
38
+ * A FLOOR, when the trigger sets one (`width="trigger"`, which writes
39
+ * --crewlet-menu-floor): the panel is never narrower than a trigger that
40
+ * spans a column. The ceiling is lifted to meet it, so the two never cross
41
+ * and the rule above still holds.
37
42
  */
38
43
  width: max-content;
39
- max-width: 320px;
44
+ min-width: var(--crewlet-menu-floor, 0px);
45
+ max-width: max(320px, var(--crewlet-menu-floor, 0px));
40
46
  max-height: min(360px, 60vh);
41
47
  overflow-y: auto;
42
48
  overscroll-behavior: contain;
@@ -193,6 +199,7 @@
193
199
  .crewlet-menu__text {
194
200
  display: flex;
195
201
  flex-direction: column;
202
+ gap: calc(var(--spacing-1) / 2);
196
203
  min-width: 0;
197
204
  }
198
205
 
@@ -202,9 +209,14 @@
202
209
  white-space: nowrap;
203
210
  }
204
211
 
212
+ /*
213
+ * ONE STEP UNDER THE LABEL, not two. At 11px under a 13px label the second
214
+ * line read as fine print; at 12px in the tertiary ink it is still plainly the
215
+ * lesser line, and it is legible at a glance.
216
+ */
205
217
  .crewlet-menu__description {
206
218
  color: var(--color-text-tertiary);
207
- font-size: var(--font-size-2xs);
219
+ font-size: var(--font-size-xs);
208
220
  white-space: normal;
209
221
  }
210
222
 
@@ -222,11 +234,17 @@
222
234
  /*
223
235
  * Facts above the items, across the panel's full width with a hairline under
224
236
  * them: what the actions below are about, read rather than pressed.
237
+ *
238
+ * A NAME AND ITS VALUE SHARE ONE LINE, the name at the start and the value at
239
+ * the end, as a property reads ("Access … Admin"). Stacked, the pair spent two
240
+ * lines on one fact. A value too long for the line wraps beneath its name.
225
241
  */
226
242
  .crewlet-menu__header {
227
243
  display: flex;
228
- flex-direction: column;
229
- gap: var(--spacing-1);
244
+ flex-wrap: wrap;
245
+ align-items: center;
246
+ justify-content: space-between;
247
+ gap: var(--spacing-1) var(--spacing-2);
230
248
  margin: calc(var(--spacing-1) * -1) calc(var(--spacing-1) * -1) var(--spacing-1);
231
249
  padding: var(--spacing-2) var(--spacing-3);
232
250
  border-bottom: 1px solid var(--color-border-default);
@@ -1,5 +1,5 @@
1
- export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-6A7P6II6.js';
2
- import '../chunk-T5TFZ2JB.js';
1
+ export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-AMNN4WDX.js';
2
+ import '../chunk-VEB5ERRE.js';
3
3
  import '../chunk-MY374UUD.js';
4
4
  import '../chunk-AKEZ3G5V.js';
5
5
  import '../chunk-VYOKRN2I.js';
@@ -1,8 +1,8 @@
1
1
  export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-J4OKGJQ6.js';
2
2
  import '../chunk-CENOOTAV.js';
3
3
  import '../chunk-S35G6PNC.js';
4
- import '../chunk-UAN5NE7M.js';
5
4
  import '../chunk-AYKXMIOR.js';
5
+ import '../chunk-UAN5NE7M.js';
6
6
  import '../chunk-5OM447RW.js';
7
7
  import '../chunk-PQADV6P6.js';
8
8
  import '../chunk-OG6CL3EB.js';
@@ -2,8 +2,8 @@ export { PresenceStack } from '../chunk-YM3GJHGW.js';
2
2
  import '../chunk-CENOOTAV.js';
3
3
  import '../chunk-I6POAB4V.js';
4
4
  import '../chunk-S35G6PNC.js';
5
- import '../chunk-UAN5NE7M.js';
6
5
  import '../chunk-AYKXMIOR.js';
6
+ import '../chunk-UAN5NE7M.js';
7
7
  import '../chunk-5OM447RW.js';
8
8
  import '../chunk-BZFWDIV6.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -1,7 +1,7 @@
1
- export { PrincipalPicker } from '../chunk-JEDWC3GI.js';
2
- import '../chunk-LOLELDBW.js';
1
+ export { PrincipalPicker } from '../chunk-ZITJKF6Z.js';
2
+ import '../chunk-QS4ZGTEU.js';
3
3
  import '../chunk-F73MC7EZ.js';
4
- import '../chunk-Q55TXPA3.js';
4
+ import '../chunk-6QFAK2WV.js';
5
5
  import '../chunk-4KP4RC3O.js';
6
6
  import '../chunk-UAN5NE7M.js';
7
7
  import '../chunk-5OM447RW.js';
@@ -1,6 +1,6 @@
1
- import '../chunk-VYY56AMX.js';
2
- export { SegmentedControl } from '../chunk-26PEPONN.js';
3
- import '../chunk-4LDTQWS7.js';
1
+ import '../chunk-M54K52ZU.js';
2
+ export { SegmentedControl } from '../chunk-7QL2OFP6.js';
3
+ import '../chunk-XJFOOXCF.js';
4
4
  import '../chunk-CBOICT64.js';
5
5
  import '../chunk-BHHIIK3M.js';
6
6
  import '../chunk-BZFWDIV6.js';
@@ -8,8 +8,8 @@ import '../chunk-PPAQFGS2.js';
8
8
  import '../chunk-YYZRLLLY.js';
9
9
  import '../chunk-S35G6PNC.js';
10
10
  import '../chunk-QWOPX2MN.js';
11
- import '../chunk-UAN5NE7M.js';
12
11
  import '../chunk-AYKXMIOR.js';
12
+ import '../chunk-UAN5NE7M.js';
13
13
  import '../chunk-5OM447RW.js';
14
14
  import '../chunk-OG6CL3EB.js';
15
15
  import '../chunk-HMPFGIWM.js';
@@ -1,8 +1,8 @@
1
- export { Switcher } from '../chunk-7X5WOECO.js';
1
+ export { Switcher } from '../chunk-KG6XRG5Z.js';
2
2
  import '../chunk-W5J7R5EB.js';
3
3
  import '../chunk-F4DPAJCN.js';
4
4
  import '../chunk-F73MC7EZ.js';
5
- import '../chunk-Q55TXPA3.js';
5
+ import '../chunk-6QFAK2WV.js';
6
6
  import '../chunk-BWRGFKJP.js';
7
7
  import '../chunk-FYTIJM2T.js';
8
8
  import '../chunk-PQADV6P6.js';
@@ -218,17 +218,23 @@ svg.crewlet-switcher-trigger__chevron {
218
218
  }
219
219
 
220
220
  /*
221
- * THE CURRENT SUBJECT, outlined by its own accent hairline inside the row: an
221
+ * THE CURRENT SUBJECT, in the accent's soft pair: the tint, and the line
222
+ * paired with it drawn inside the row, as a chosen chip is (see Tabs.css). An
222
223
  * outline rather than a shadow, so forced-colours mode keeps it. The row the
223
- * arrows are on takes the raised fill as every listbox row does; both can land
224
- * on one row, and it never gains a second border.
224
+ * arrows are on takes the raised fill as every listbox row does, and keeps it
225
+ * when it is the current row too, so the tint never hides where the arrows
226
+ * are; that row keeps the line, and it never gains a second border.
225
227
  */
226
228
  .crewlet-listbox__option.crewlet-switcher__option.is-current {
227
229
  color: var(--color-text-primary);
228
- outline: 1px solid var(--color-brand-accent);
230
+ outline: 1px solid var(--color-brand-accent-soft-strong);
229
231
  outline-offset: -1px;
230
232
  }
231
233
 
234
+ .crewlet-listbox__option.crewlet-switcher__option.is-current:not([aria-selected='true']):not(:hover) {
235
+ background: var(--color-brand-accent-soft);
236
+ }
237
+
232
238
  /* A HELD ROW answers no pointer: no fill under it, and the reason in the quiet
233
239
  ink at its end says why. */
234
240
  .crewlet-listbox__option.crewlet-switcher__option[aria-disabled='true'] {
@@ -1,4 +1,4 @@
1
- export { TabPanel, Tabs, tabId } from '../chunk-4LDTQWS7.js';
1
+ export { TabPanel, Tabs, tabId } from '../chunk-XJFOOXCF.js';
2
2
  import '../chunk-CBOICT64.js';
3
3
  import '../chunk-BHHIIK3M.js';
4
4
  import '../chunk-BZFWDIV6.js';
@@ -305,8 +305,9 @@
305
305
  * QUIET CHIPS WITH NO WELL: the lenses of an object or a scope, set beside its
306
306
  * name in a page's bar. A well round them was a second box beside the name the
307
307
  * lenses are about, and a raised chip inside it a second highlight. Here the
308
- * chip that is on is drawn by its own border in the accent and nothing else,
309
- * which is the kit's one way of saying "this one is chosen".
308
+ * chip that is on is drawn in the accent's soft pair, the tint and the line
309
+ * paired with it, which is how the kit says "this one is chosen" on a chip
310
+ * (FilterChip draws the same pair).
310
311
  */
311
312
  .crewlet-tabs--chip {
312
313
  display: inline-flex;
@@ -334,11 +335,17 @@
334
335
  background: none;
335
336
  }
336
337
 
337
- /* An outline rather than a border, so a chip turning on does not move its
338
- neighbours by a pixel, and forced-colors mode keeps it. */
338
+ /*
339
+ * THE SOFT PAIR, not the solid accent. A full-strength accent ring round a
340
+ * chip is the brightest edge in the bar, louder than the name the lenses are
341
+ * about; the soft tint says which chip is on and the paired line gives it an
342
+ * edge. An outline rather than a border, so a chip turning on does not move
343
+ * its neighbours by a pixel, and forced-colors mode keeps it.
344
+ */
339
345
  .crewlet-tabs--chip .crewlet-tabs__tab.is-active {
346
+ background: var(--color-brand-accent-soft);
340
347
  color: var(--color-text-primary);
341
- outline: 1px solid var(--color-brand-accent);
348
+ outline: 1px solid var(--color-brand-accent-soft-strong);
342
349
  outline-offset: -1px;
343
350
  }
344
351
 
@@ -1,4 +1,4 @@
1
- export { TagsInput } from '../chunk-7ZNKEPLN.js';
1
+ export { TagsInput } from '../chunk-2CQLNML5.js';
2
2
  import '../chunk-GFV4LJHH.js';
3
3
  import '../chunk-WIATRXEJ.js';
4
4
  import '../chunk-F73MC7EZ.js';
@@ -49,7 +49,7 @@
49
49
  line-height: var(--font-line-height-normal);
50
50
  color: var(--color-text-primary);
51
51
  background-color: var(--color-surface-subtle);
52
- border: 1px solid var(--color-border-control);
52
+ border: 1px solid var(--color-border-field);
53
53
  border-radius: var(--radius-md);
54
54
  outline: none;
55
55
  /* The boundary is the only thing that moves. The ring is an outline, which
@@ -1,9 +1,9 @@
1
- export { DensitySwitcher, ThemeSwitcher } from '../chunk-2ONWEDQT.js';
1
+ export { DensitySwitcher, ThemeSwitcher } from '../chunk-IPM2E6UI.js';
2
2
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
3
- import '../chunk-VYY56AMX.js';
3
+ import '../chunk-M54K52ZU.js';
4
4
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
5
- import '../chunk-26PEPONN.js';
6
- import '../chunk-4LDTQWS7.js';
5
+ import '../chunk-7QL2OFP6.js';
6
+ import '../chunk-XJFOOXCF.js';
7
7
  import '../chunk-CBOICT64.js';
8
8
  import '../chunk-BHHIIK3M.js';
9
9
  import '../chunk-BZFWDIV6.js';