@crewlethq/ui 0.84.1 → 0.85.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 (80) hide show
  1. package/README.md +40 -2
  2. package/dist/Accordion/index.js +1 -1
  3. package/dist/AgentHandoffPanel/index.js +2 -2
  4. package/dist/ArtifactBar/index.js +1 -1
  5. package/dist/AttentionList/AttentionList.d.ts +82 -0
  6. package/dist/AttentionList/index.d.ts +3 -0
  7. package/dist/AttentionList/index.js +9 -0
  8. package/dist/AttentionList-LVX7KRET.css +212 -0
  9. package/dist/AvatarPicker/index.js +2 -2
  10. package/dist/ChangeList/index.js +2 -2
  11. package/dist/ChoiceCards/ChoiceCards.d.ts +35 -6
  12. package/dist/ChoiceCards/index.d.ts +1 -1
  13. package/dist/ChoiceCards/index.js +1 -1
  14. package/dist/{ChoiceCards-TVMBO3HZ.css → ChoiceCards-KHJW2FKO.css} +49 -0
  15. package/dist/ChoiceList/ChoiceList.d.ts +2 -2
  16. package/dist/ChoiceList/index.js +1 -1
  17. package/dist/{ChoiceList-JN4PPNFW.css → ChoiceList-ZQMZTEZX.css} +33 -17
  18. package/dist/CodeBlock/index.js +2 -2
  19. package/dist/ColorSwatch/index.js +2 -2
  20. package/dist/ContrastBadge/index.js +2 -2
  21. package/dist/ContrastHelp/index.js +3 -3
  22. package/dist/Copyable/index.js +1 -1
  23. package/dist/{Copyable-IS3MHMPL.css → Copyable-P5AMRHFX.css} +18 -4
  24. package/dist/DataGrid/index.js +1 -1
  25. package/dist/{DataGrid-Q26F2V5Q.css → DataGrid-SAHEL4SN.css} +57 -0
  26. package/dist/DeepWorkCard/index.js +4 -4
  27. package/dist/Disclosure/Disclosure.d.ts +10 -1
  28. package/dist/Disclosure/index.js +1 -1
  29. package/dist/{Disclosure-D727FN5X.css → Disclosure-RJSKKO7Z.css} +20 -0
  30. package/dist/ListDetail/index.js +1 -1
  31. package/dist/{ListDetail-JGESKTR7.css → ListDetail-Q7SFVKSO.css} +12 -0
  32. package/dist/LogoSlot/index.js +3 -3
  33. package/dist/MarkdownEditor/index.js +1 -1
  34. package/dist/MemberPicker/MemberPicker.d.ts +86 -0
  35. package/dist/MemberPicker/index.d.ts +3 -0
  36. package/dist/MemberPicker/index.js +11 -0
  37. package/dist/MemberPicker-ZD35VEK6.css +162 -0
  38. package/dist/MergeConflicts/index.js +1 -1
  39. package/dist/ProposalCard/index.js +3 -3
  40. package/dist/RunChip/index.js +3 -3
  41. package/dist/SegmentedControl/index.js +1 -1
  42. package/dist/{SegmentedControl-B7XCUOML.css → SegmentedControl-7GY2KM44.css} +11 -0
  43. package/dist/SetupWizard/index.js +3 -3
  44. package/dist/ShareDialog/index.js +2 -2
  45. package/dist/{StepList-A4YVU4JI.css → StepList-OAJ45IBX.css} +12 -1
  46. package/dist/Stepper/StepList.d.ts +7 -4
  47. package/dist/Stepper/index.js +1 -1
  48. package/dist/ThemeSwitcher/index.js +1 -1
  49. package/dist/TimeRangePicker/index.js +1 -1
  50. package/dist/VersionCompare/index.js +1 -1
  51. package/dist/{chunk-IYI6HWKN.js → chunk-35CKF77R.js} +3 -3
  52. package/dist/{chunk-K6RWEQ6P.js → chunk-3BVNNQZY.js} +2 -2
  53. package/dist/{chunk-AOJ6ZA77.js → chunk-3MFRTZH6.js} +1 -1
  54. package/dist/{chunk-QSWQJX27.js → chunk-4ME4J3YY.js} +1 -1
  55. package/dist/{chunk-6FBPFG3C.js → chunk-6EZX26BD.js} +1 -1
  56. package/dist/chunk-AELKT34H.js +121 -0
  57. package/dist/{chunk-X7VZQKIW.js → chunk-AQ7ZV3CH.js} +1 -1
  58. package/dist/{chunk-XNC3M4IN.js → chunk-E2QPZGLG.js} +1 -1
  59. package/dist/{chunk-T5GBTXNC.js → chunk-ETNQYT5O.js} +1 -1
  60. package/dist/{chunk-36WK24AI.js → chunk-EVM6GYZ2.js} +1 -1
  61. package/dist/{chunk-B7NX425Z.js → chunk-JDMJVVVQ.js} +12 -4
  62. package/dist/chunk-KA4RBKQV.js +148 -0
  63. package/dist/{chunk-ABRWL5FJ.js → chunk-L2QRKIL4.js} +3 -2
  64. package/dist/{chunk-P7HMY3BQ.js → chunk-M33DABTW.js} +2 -2
  65. package/dist/{chunk-LVJGN5II.js → chunk-NAHA62WD.js} +3 -1
  66. package/dist/{chunk-6SFDL4QH.js → chunk-P3LNA6G4.js} +1 -1
  67. package/dist/{chunk-O4VTQMEF.js → chunk-SNJM5KPV.js} +1 -1
  68. package/dist/{chunk-WMO722J2.js → chunk-TBQFZV4H.js} +1 -1
  69. package/dist/{chunk-RJWO2PC5.js → chunk-TMML7BHT.js} +14 -5
  70. package/dist/{chunk-DD7RBNT4.js → chunk-XH55NRHO.js} +1 -1
  71. package/dist/{chunk-6RW2MUTY.js → chunk-XU7RQNT6.js} +1 -1
  72. package/dist/{chunk-AQNP3KQU.js → chunk-Y7PPKQFQ.js} +1 -1
  73. package/dist/generated/index.d.ts +2 -0
  74. package/dist/generated/index.js +75 -73
  75. package/dist/index.js +75 -73
  76. package/dist/styles.css +600 -30
  77. package/package.json +3 -3
  78. package/dist/{chunk-22CU7V4J.js → chunk-K2HEYQJL.js} +1 -1
  79. package/dist/{chunk-REEZQCML.js → chunk-VIX3GZCD.js} +0 -0
  80. package/dist/{chunk-2ZSCHQOA.js → chunk-WMSXPF7T.js} +1 -1
package/dist/styles.css CHANGED
@@ -5026,6 +5026,221 @@ a.crewlet-make-row__item:active {
5026
5026
  }
5027
5027
 
5028
5028
 
5029
+ /* AttentionList-LVX7KRET.css */
5030
+ /*
5031
+ * What needs a person: a card like the page's other panels (Card supplies the
5032
+ * surface, the hairline, the corner and the header), rows a line or two high,
5033
+ * and the tone in each row's glyph alone. Nothing here tints the frame: the
5034
+ * row's action is the page's own button, and the panel sits as calmly as the
5035
+ * cards beside it.
5036
+ */
5037
+
5038
+ /* The header's counts: each tone's glyph in its ink beside a figure in the
5039
+ header's quiet type, so the summary reads as the rows' glyphs, small. */
5040
+ .crewlet-attention-list__counts {
5041
+ display: inline-flex;
5042
+ align-items: center;
5043
+ gap: var(--spacing-3);
5044
+ }
5045
+
5046
+ .crewlet-attention-list__count {
5047
+ display: inline-flex;
5048
+ align-items: center;
5049
+ gap: var(--spacing-1);
5050
+ color: var(--color-text-secondary);
5051
+ font-size: var(--font-size-xs);
5052
+ font-variant-numeric: tabular-nums;
5053
+ }
5054
+
5055
+ .crewlet-attention-list__count.is-danger svg {
5056
+ color: var(--color-feedback-danger-ink);
5057
+ }
5058
+
5059
+ .crewlet-attention-list__count.is-warning svg {
5060
+ color: var(--color-feedback-warning-ink);
5061
+ }
5062
+
5063
+ .crewlet-attention-list__count.is-info svg {
5064
+ color: var(--color-feedback-info-ink);
5065
+ }
5066
+
5067
+ /*
5068
+ * ONE SET OF COLUMNS FOR EVERY ROW. The list holds the tracks and each row is
5069
+ * a subgrid of them, so a Details and a fix stand in one column down the
5070
+ * panel whatever the width of each fix, every title starts on one line
5071
+ * whether or not its row has a mark, and the body that opens under a row
5072
+ * starts on that line too. The mark's track is there only when a row has a
5073
+ * mark (`--media`), since an empty track still takes a gap each side.
5074
+ */
5075
+ .crewlet-attention-list__rows {
5076
+ --crewlet-attention-list-line: calc(var(--font-size-sm) * var(--font-line-height-normal));
5077
+
5078
+ display: grid;
5079
+ grid-template-columns: [glyph] auto [text] minmax(0, 1fr) [details] auto [action] auto [end];
5080
+ column-gap: var(--spacing-2);
5081
+ margin: 0;
5082
+ padding: 0;
5083
+ list-style: none;
5084
+ }
5085
+
5086
+ .crewlet-attention-list__rows--media {
5087
+ grid-template-columns: [glyph] auto [media] auto [text] minmax(0, 1fr) [details] auto [action] auto [end];
5088
+ }
5089
+
5090
+ .crewlet-attention-list__item {
5091
+ display: grid;
5092
+ grid-column: 1 / -1;
5093
+ grid-template-columns: subgrid;
5094
+ }
5095
+
5096
+ .crewlet-attention-list__item + .crewlet-attention-list__item {
5097
+ border-top: 1px solid var(--color-border-default);
5098
+ }
5099
+
5100
+ /* A ghost Details takes no gutter back here: it stands in a column of its
5101
+ own, and pulled out it would reach into the words before it. */
5102
+ .crewlet-attention-list__row {
5103
+ --crewlet-btn-flush-outdent: 0px;
5104
+
5105
+ display: grid;
5106
+ grid-column: 1 / -1;
5107
+ grid-template-columns: subgrid;
5108
+ align-items: center;
5109
+ min-height: var(--size-row-lg);
5110
+ padding: var(--spacing-2) var(--spacing-4);
5111
+ }
5112
+
5113
+ /* THE GLYPH STANDS ON THE TITLE'S LINE, as a Callout's does: a box one title
5114
+ line tall at the row's top, the glyph centred in it. Centred on the row, it
5115
+ would sit beside the second line of a title that wraps (a phone's width
5116
+ wraps them). A row of one line is centred whole, since its line is the
5117
+ row's middle. */
5118
+ .crewlet-attention-list__glyph {
5119
+ display: inline-flex;
5120
+ grid-column: glyph;
5121
+ align-self: start;
5122
+ align-items: center;
5123
+ block-size: var(--crewlet-attention-list-line);
5124
+ }
5125
+
5126
+ .crewlet-attention-list__row:not(:has(.crewlet-attention-list__meta)) .crewlet-attention-list__glyph {
5127
+ align-self: center;
5128
+ }
5129
+
5130
+ .crewlet-attention-list__glyph.is-danger {
5131
+ color: var(--color-feedback-danger-ink);
5132
+ }
5133
+
5134
+ .crewlet-attention-list__glyph.is-warning {
5135
+ color: var(--color-feedback-warning-ink);
5136
+ }
5137
+
5138
+ .crewlet-attention-list__glyph.is-info {
5139
+ color: var(--color-feedback-info-ink);
5140
+ }
5141
+
5142
+ /* A MARK IS CENTRED ON THE TWO LINES, as a table row centres its mark: it is
5143
+ the height of the pair, not of a title's line. */
5144
+ .crewlet-attention-list__media {
5145
+ display: inline-flex;
5146
+ grid-column: media;
5147
+ }
5148
+
5149
+ .crewlet-attention-list__text {
5150
+ display: flex;
5151
+ grid-column: text;
5152
+ flex-direction: column;
5153
+ min-width: 0;
5154
+ }
5155
+
5156
+ .crewlet-attention-list__line {
5157
+ overflow: hidden;
5158
+ color: var(--color-text-primary);
5159
+ font-size: var(--font-size-sm);
5160
+ font-weight: var(--font-weight-medium);
5161
+ line-height: var(--font-line-height-normal);
5162
+ text-overflow: ellipsis;
5163
+ white-space: nowrap;
5164
+ }
5165
+
5166
+ .crewlet-attention-list__meta {
5167
+ overflow: hidden;
5168
+ color: var(--color-text-secondary);
5169
+ font-size: var(--font-size-xs);
5170
+ text-overflow: ellipsis;
5171
+ white-space: nowrap;
5172
+ }
5173
+
5174
+ /* Details and the fix are each a column of their own (see the rows). */
5175
+ .crewlet-attention-list__end {
5176
+ display: contents;
5177
+ }
5178
+
5179
+ .crewlet-attention-list__details {
5180
+ grid-column: details;
5181
+ }
5182
+
5183
+ .crewlet-attention-list__action {
5184
+ display: inline-flex;
5185
+ grid-column: action;
5186
+ justify-self: end;
5187
+ }
5188
+
5189
+ .crewlet-attention-list__details[aria-expanded='true'] svg {
5190
+ transform: rotate(180deg);
5191
+ }
5192
+
5193
+ /* What opens under a row starts on its title's line and keeps the card's edge. */
5194
+ .crewlet-attention-list__body {
5195
+ grid-column: text / end;
5196
+ padding: 0 var(--spacing-4) var(--spacing-3) 0;
5197
+ color: var(--color-text-secondary);
5198
+ font-size: var(--font-size-xs);
5199
+ overflow-wrap: anywhere;
5200
+ }
5201
+
5202
+ /* The fold's control on a row of its own, its words on the card's text edge,
5203
+ where every glyph stands. */
5204
+ .crewlet-attention-list__foot {
5205
+ padding: var(--spacing-1) var(--spacing-4);
5206
+ border-top: 1px solid var(--color-border-default);
5207
+ }
5208
+
5209
+ @media (width < 640px) {
5210
+ /* No mark, and Details and the fix wrap onto a line of their own under the
5211
+ words, Details first on the title's line. */
5212
+ .crewlet-attention-list__rows,
5213
+ .crewlet-attention-list__rows--media {
5214
+ grid-template-columns: [glyph] auto [text] minmax(0, 1fr) [end];
5215
+ }
5216
+
5217
+ .crewlet-attention-list__row {
5218
+ --crewlet-btn-flush-outdent: initial;
5219
+ }
5220
+
5221
+ .crewlet-attention-list__media {
5222
+ display: none;
5223
+ }
5224
+
5225
+ .crewlet-attention-list__line,
5226
+ .crewlet-attention-list__meta {
5227
+ white-space: normal;
5228
+ }
5229
+
5230
+ .crewlet-attention-list__row:not(:has(.crewlet-attention-list__meta)) .crewlet-attention-list__glyph {
5231
+ align-self: start;
5232
+ }
5233
+
5234
+ .crewlet-attention-list__end {
5235
+ display: flex;
5236
+ grid-column: text / end;
5237
+ flex-wrap: wrap;
5238
+ align-items: center;
5239
+ gap: var(--spacing-2);
5240
+ }
5241
+ }
5242
+
5243
+
5029
5244
  /* AuthLayout-ODHBUPHQ.css */
5030
5245
  /*
5031
5246
  * The sign-in page: one narrow column near the top of the window.
@@ -11939,7 +12154,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
11939
12154
  }
11940
12155
 
11941
12156
 
11942
- /* ChoiceCards-TVMBO3HZ.css */
12157
+ /* ChoiceCards-KHJW2FKO.css */
11943
12158
  /*
11944
12159
  * Choices a person compares, as cards in a grid that wraps. The chosen card
11945
12160
  * takes the selected fill and the strong boundary, as a chosen ChoiceList row
@@ -11970,10 +12185,17 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
11970
12185
  minmax(min(100%, var(--crewlet-choice-cards-min)), 1fr)
11971
12186
  );
11972
12187
  grid-auto-rows: auto;
12188
+ /* DENSE, for a chosen card's detail: it spans every column after its card,
12189
+ and the cards after it on that row pack back in before it (see below). */
12190
+ grid-auto-flow: row dense;
11973
12191
  column-gap: var(--spacing-3);
11974
12192
  row-gap: 0;
11975
12193
  }
11976
12194
 
12195
+ .crewlet-choice-cards--xs {
12196
+ --crewlet-choice-cards-min: 8rem;
12197
+ }
12198
+
11977
12199
  .crewlet-choice-cards--sm {
11978
12200
  --crewlet-choice-cards-min: 15rem;
11979
12201
  }
@@ -12136,6 +12358,32 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
12136
12358
  border-color: var(--color-border-strong);
12137
12359
  }
12138
12360
 
12361
+ /* A TAG THAT SAYS A STATE takes its feedback ink and line, in the card's own
12362
+ pill: a kit Tag handed in drew a second pill inside this one. */
12363
+ .crewlet-choice-cards__tag.is-success,
12364
+ .crewlet-choice-cards__card.is-checked .crewlet-choice-cards__tag.is-success {
12365
+ border-color: var(--color-feedback-success-line);
12366
+ color: var(--color-feedback-success-ink);
12367
+ }
12368
+
12369
+ .crewlet-choice-cards__tag.is-warning,
12370
+ .crewlet-choice-cards__card.is-checked .crewlet-choice-cards__tag.is-warning {
12371
+ border-color: var(--color-feedback-warning-line);
12372
+ color: var(--color-feedback-warning-ink);
12373
+ }
12374
+
12375
+ .crewlet-choice-cards__tag.is-danger,
12376
+ .crewlet-choice-cards__card.is-checked .crewlet-choice-cards__tag.is-danger {
12377
+ border-color: var(--color-feedback-danger-line);
12378
+ color: var(--color-feedback-danger-ink);
12379
+ }
12380
+
12381
+ .crewlet-choice-cards__tag.is-info,
12382
+ .crewlet-choice-cards__card.is-checked .crewlet-choice-cards__tag.is-info {
12383
+ border-color: var(--color-feedback-info-line);
12384
+ color: var(--color-feedback-info-ink);
12385
+ }
12386
+
12139
12387
  /*
12140
12388
  * THE NAME IS THE TITLE LINE'S STRUT: at least the title step tall, its words
12141
12389
  * centred in it. The title wraps (a tag that does not fit takes a line of its
@@ -12314,8 +12562,24 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
12314
12562
  }
12315
12563
  }
12316
12564
 
12565
+ /*
12566
+ * A CHOSEN CARD'S DETAIL: the narrower choice it opens, on a line of its own
12567
+ * straight under the chosen card's row (an item of the grid after its card,
12568
+ * across every column, packed densely), so it reads as part of that choice and
12569
+ * not as a second question. NO FRAME OF ITS OWN: what it holds is usually a
12570
+ * framed list, and a tinted, bordered panel round it was a box in a box. It
12571
+ * keeps the gap a row of cards keeps below it.
12572
+ */
12573
+ .crewlet-choice-cards__detail {
12574
+ display: grid;
12575
+ grid-column: 1 / -1;
12576
+ gap: var(--spacing-2);
12577
+ min-width: 0;
12578
+ margin-block-end: var(--spacing-3);
12579
+ }
12580
+
12317
12581
 
12318
- /* ChoiceList-JN4PPNFW.css */
12582
+ /* ChoiceList-ZQMZTEZX.css */
12319
12583
  /*
12320
12584
  * A short list of answers in one bordered box: a radio, the label with a line
12321
12585
  * of detail under it, and a tag at the row's end. The selected row takes the
@@ -12324,8 +12588,14 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
12324
12588
  * which is the focus ring's colour.
12325
12589
  */
12326
12590
  .crewlet-choice-list {
12327
- /* The platform's radio, sized here so a panel can line up with the text beside it. */
12328
- --crewlet-choice-list-radio-size: 13px;
12591
+ /*
12592
+ * THE COMPACT CONTROL STEP, the box a compact Checkbox draws beside the same
12593
+ * 13px words: a control takes the step of the text it sits beside (16px
12594
+ * beside 14px, 14px beside 13px), and at 13px this radio matched no other
12595
+ * control in the kit, so a list nested under a card's 16px radio, or beside
12596
+ * a compact checkbox, drew a third size.
12597
+ */
12598
+ --crewlet-choice-list-radio-size: 14px;
12329
12599
  /* The step between two answers. Every row's pointer target reaches half of it. */
12330
12600
  --crewlet-choice-list-gap: var(--spacing-1);
12331
12601
  /*
@@ -12451,7 +12721,8 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
12451
12721
  box-sizing: border-box;
12452
12722
  width: var(--crewlet-choice-list-radio-size);
12453
12723
  height: var(--crewlet-choice-list-radio-size);
12454
- margin: 3px 0 0;
12724
+ /* Centred on the label's first line: its 13px in the body's leading. */
12725
+ margin: calc((var(--font-size-compact) * var(--font-line-height-body) - var(--crewlet-choice-list-radio-size)) / 2) 0 0;
12455
12726
  border: 1px solid var(--color-border-control);
12456
12727
  border-radius: 50%;
12457
12728
  background: transparent;
@@ -12493,28 +12764,37 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
12493
12764
  overflow-wrap: anywhere;
12494
12765
  }
12495
12766
 
12496
- /* Why a disabled choice cannot be made, after its detail on the same line, in the warning ink. */
12767
+ /*
12768
+ * WHY A DISABLED CHOICE CANNOT BE MADE, on a line of its own under the
12769
+ * detail, in the warning ink, as a ChoiceCards card puts it on its own row.
12770
+ * Run on after the detail, it read as the detail's next clause, and in a
12771
+ * narrow column it wrapped wherever the detail happened to end.
12772
+ */
12497
12773
  .crewlet-choice-list__reason {
12774
+ display: block;
12498
12775
  color: var(--color-feedback-warning-ink);
12499
12776
  }
12500
12777
 
12501
- .crewlet-choice-list__detail > .crewlet-choice-list__reason:not(:first-child) {
12502
- margin-inline-start: var(--spacing-2);
12503
- }
12504
-
12505
- /* A tag says something ABOUT an answer ("Suggested"), so it is set in the
12506
- tertiary ink: in the accent ink it was a second accent mark on the chosen
12507
- row, beside the radio and the fill that already say which one is chosen. */
12778
+ /* A tag says something ABOUT an answer ("Recommended"), so it is set in a
12779
+ quiet ink: in the accent ink it was a second accent mark on the chosen row,
12780
+ beside the radio and the fill that already say which one is chosen. It is
12781
+ the pill a ChoiceCards card draws its tag in, so one word beside a choice's
12782
+ name reads the same in a list as on a card in the same step, where it was an
12783
+ 11px capital label here and a pill there. It stands on the label's line. */
12508
12784
  .crewlet-choice-list__tag {
12509
- padding-top: 2px;
12510
- font-size: var(--font-size-2xs);
12511
- font-weight: 500;
12512
- letter-spacing: 0.05em;
12513
- text-transform: uppercase;
12514
- color: var(--color-text-tertiary);
12785
+ padding: 0 var(--spacing-2);
12786
+ border: 1px solid var(--color-border-default);
12787
+ border-radius: var(--radius-pill);
12788
+ color: var(--color-text-secondary);
12789
+ font-size: var(--font-size-xs);
12515
12790
  white-space: nowrap;
12516
12791
  }
12517
12792
 
12793
+ /* On the selected fill the default edge all but vanishes in light, so the tag takes the strong one, as a chosen card's does. */
12794
+ .crewlet-choice-list__row.is-checked .crewlet-choice-list__tag {
12795
+ border-color: var(--color-border-strong);
12796
+ }
12797
+
12518
12798
  /* A SELECTED CHOICE'S PANEL is part of the choice: it continues the row's
12519
12799
  fill under it, and its content starts where the label does, not under the
12520
12800
  radio. */
@@ -14435,7 +14715,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
14435
14715
  }
14436
14716
 
14437
14717
 
14438
- /* Copyable-IS3MHMPL.css */
14718
+ /* Copyable-P5AMRHFX.css */
14439
14719
  /*
14440
14720
  * Copyable: a value and the one control that copies it.
14441
14721
  *
@@ -14516,11 +14796,15 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
14516
14796
 
14517
14797
  /* ---- inline ------------------------------------------------------------ */
14518
14798
 
14799
+ /* INLINE TAKES THE ROW'S OWN REGISTER: in a detail row it is one of the
14800
+ row's values, so it is their size and ink, in the mono face. At a fixed
14801
+ 12px in the secondary ink, an address was the one value in its list a step
14802
+ smaller and quieter than the values around it. */
14519
14803
  .crewlet-copyable--inline .crewlet-copyable__value {
14520
- font-size: var(--font-size-xs);
14804
+ font-size: inherit;
14521
14805
  background: transparent;
14522
14806
  padding: 0;
14523
- color: var(--color-text-secondary);
14807
+ color: inherit;
14524
14808
  }
14525
14809
 
14526
14810
  /* ---- block ------------------------------------------------------------- */
@@ -14541,13 +14825,23 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
14541
14825
  padding: var(--spacing-2) var(--spacing-3);
14542
14826
  }
14543
14827
 
14828
+ /*
14829
+ * A BLOCK SHOWS ITS VALUE WHOLE, wrapped at any character and with every
14830
+ * space kept: it is the variant for an address a reader must allowlist or a
14831
+ * command they must check before running it. Held to one line, it scrolled
14832
+ * past a phone's width behind an ellipsis, with no scrollbar to say there was
14833
+ * more, and the reader saw "https://example.com/webho…" of the address they
14834
+ * were asked to copy into a vendor's form.
14835
+ */
14544
14836
  .crewlet-copyable--block .crewlet-copyable__value {
14545
14837
  font-size: var(--font-size-compact);
14546
14838
  color: var(--color-text-primary);
14547
14839
  background: transparent;
14548
14840
  padding: 0;
14549
- white-space: nowrap;
14550
- overflow-x: auto;
14841
+ white-space: pre-wrap;
14842
+ overflow: visible;
14843
+ overflow-wrap: anywhere;
14844
+ text-overflow: clip;
14551
14845
  flex: 1;
14552
14846
  }
14553
14847
 
@@ -14859,7 +15153,7 @@ button.crewlet-histogram__bar[data-empty]:focus-visible > .crewlet-histogram__fi
14859
15153
  }
14860
15154
 
14861
15155
 
14862
- /* DataGrid-Q26F2V5Q.css */
15156
+ /* DataGrid-SAHEL4SN.css */
14863
15157
  /*
14864
15158
  * DataGrid: a list as columns, one track list on the grid.
14865
15159
  *
@@ -15527,6 +15821,63 @@ button.crewlet-data-grid__row-link {
15527
15821
  overflow-wrap: anywhere;
15528
15822
  }
15529
15823
 
15824
+ /* A VALUE THAT LEADS WITH A PICTURE IS NAMED ON ITS WORDS' LINE. The name
15825
+ stands on the value's first baseline, and a row of a mark beside two lines
15826
+ (a vendor's mark beside a name and its host) reads its baseline off its
15827
+ first item, the picture, whose baseline is its bottom edge: the name stood
15828
+ on the second line. The words after the picture take part in baseline
15829
+ alignment instead, so the row's baseline is theirs; beside a picture no
15830
+ taller than they are, they keep the place they had.
15831
+ ONLY A PICTURE WITH NO WORDS OF ITS OWN: an svg or an img, or a box that
15832
+ holds nothing but one. A monogram avatar or an avatar stack has its
15833
+ initials' baseline already, and its name stood on its line; matched by its
15834
+ role, the shorter words beside it rose to the top of the row, off the
15835
+ picture's centre. */
15836
+ :where(.crewlet-data-grid[data-stacked])
15837
+ .crewlet-data-grid__cell
15838
+ > *
15839
+ > :is(svg, img, :has(> :is(svg, img)):not(:has(> :not(svg, img)))):first-child
15840
+ + * {
15841
+ align-self: baseline;
15842
+ }
15843
+
15844
+ /* THE ROW'S ACTIONS STAND ON ITS FIRST LINE, at its end, as a card's head
15845
+ carries its menu. On a line of their own after every value they sat alone
15846
+ under the names, with nothing beside them to say whose they were. */
15847
+ :where(.crewlet-data-grid[data-stacked]:not([data-phone-rows='compact']))
15848
+ .crewlet-data-grid__row:has(> .crewlet-data-grid__cell--action) {
15849
+ display: grid;
15850
+ grid-template-columns: minmax(0, 1fr) auto;
15851
+ align-items: start;
15852
+ column-gap: var(--spacing-2);
15853
+ }
15854
+
15855
+ :where(.crewlet-data-grid[data-stacked]:not([data-phone-rows='compact']))
15856
+ .crewlet-data-grid__row:has(> .crewlet-data-grid__cell--action)
15857
+ > .crewlet-data-grid__cell:not(.crewlet-data-grid__cell--action) {
15858
+ grid-column: 1;
15859
+ }
15860
+
15861
+ /* ONLY THE FIRST LINE SHARES ITS WIDTH WITH THE ACTIONS. Their track is sized
15862
+ to them, and a line held to the other track gave that width up with nothing
15863
+ beside it: every line of a card ended a third of a phone's row short of its
15864
+ edge, and its value wrapped. Every line after the first (a value with
15865
+ nothing in it draws none) spans the row. */
15866
+ :where(.crewlet-data-grid[data-stacked]:not([data-phone-rows='compact']))
15867
+ .crewlet-data-grid__row:has(> .crewlet-data-grid__cell--action)
15868
+ > .crewlet-data-grid__cell:not(.crewlet-data-grid__cell--action):not(:empty)
15869
+ ~ .crewlet-data-grid__cell:not(.crewlet-data-grid__cell--action) {
15870
+ grid-column: 1 / -1;
15871
+ }
15872
+
15873
+ :where(.crewlet-data-grid[data-stacked]:not([data-phone-rows='compact']))
15874
+ .crewlet-data-grid__row
15875
+ > .crewlet-data-grid__cell--action {
15876
+ grid-column: 2;
15877
+ grid-row: 1;
15878
+ align-self: center;
15879
+ }
15880
+
15530
15881
  /* ---- THE COMPACT ROW (`phoneRows="compact"`) ---------------------------
15531
15882
  TWO LINES, NO LABELS: what the row is, then its marks. One flex run that
15532
15883
  breaks once: the lead cells first, a zero-height full-width `::after`
@@ -19258,7 +19609,7 @@ svg.crewlet-datetime__chevron {
19258
19609
  }
19259
19610
 
19260
19611
 
19261
- /* Disclosure-D727FN5X.css */
19612
+ /* Disclosure-RJSKKO7Z.css */
19262
19613
  /*
19263
19614
  * The disclosure anatomy, declared once for every expander in the package.
19264
19615
  *
@@ -19478,6 +19829,26 @@ svg.crewlet-datetime__chevron {
19478
19829
  padding: var(--spacing-1) var(--spacing-2);
19479
19830
  }
19480
19831
 
19832
+ /*
19833
+ * FLUSH: the chevron and the panel start on the line the words around the
19834
+ * section start on. The trigger's start inset is taken back (its hover ground
19835
+ * and its inset ring reach into the gutter instead, as a flush Button's do),
19836
+ * and the panel keeps no inset of either side. Inset, a section opened under
19837
+ * a sentence put its chevron and its content a step in from that sentence.
19838
+ */
19839
+ .crewlet-disclosure--flush .crewlet-disclosure__trigger {
19840
+ margin-inline-start: calc(-1 * var(--spacing-2));
19841
+ width: calc(100% + var(--spacing-2));
19842
+ }
19843
+
19844
+ .crewlet-disclosure--flush .crewlet-disclosure__bar > .crewlet-disclosure__trigger {
19845
+ width: auto;
19846
+ }
19847
+
19848
+ .crewlet-disclosure--flush .crewlet-disclosure__panel {
19849
+ padding-inline: 0;
19850
+ }
19851
+
19481
19852
  /*
19482
19853
  * An aside: what was considered, not what was decided. The rule down its edge
19483
19854
  * is what lets a reader skip the block by its shape.
@@ -25040,7 +25411,7 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
25040
25411
  }
25041
25412
 
25042
25413
 
25043
- /* ListDetail-JGESKTR7.css */
25414
+ /* ListDetail-Q7SFVKSO.css */
25044
25415
  /*
25045
25416
  * ListDetail: a list beside the detail of what is chosen in it, each scrolling
25046
25417
  * on its own in the height it is given, one pane where it is narrow
@@ -25117,6 +25488,18 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
25117
25488
  border-right: 1px solid var(--color-border-default);
25118
25489
  }
25119
25490
 
25491
+ /* A DIRECTORY RUNS TO THE HAIRLINE. A DirectoryList is navigation: its lines
25492
+ draw their own inset and their hover and selected grounds, as the rail's
25493
+ do, and its groups keep their own step before the scrollbar. Inside the
25494
+ list's inset as well, a line's state ended 60px before the hairline, a
25495
+ column of nothing between the word and the line it stands against. So a
25496
+ list pane holding one gives its end inset back, and the lines run to the
25497
+ hairline as the rail's run to its edge. Folded to one pane, the pane takes
25498
+ the screen's inset again (below). */
25499
+ .crewlet-list-detail__list:has(> .crewlet-directory) {
25500
+ padding-right: 0;
25501
+ }
25502
+
25120
25503
  .crewlet-list-detail__detail {
25121
25504
  display: flex;
25122
25505
  flex-direction: column;
@@ -26370,6 +26753,171 @@ a.crewlet-link-card:hover .crewlet-link-card__title {
26370
26753
  }
26371
26754
 
26372
26755
 
26756
+ /* MemberPicker-ZD35VEK6.css */
26757
+ /*
26758
+ * Who gets something, as one list: a group row with its box, its name and
26759
+ * its count, opening to its members, each a row of face, name and one quiet
26760
+ * line. Rows stand at the kit's compact list height; the only colour is the
26761
+ * box's own accent and a left-out member's quieter ink.
26762
+ *
26763
+ * A LIST'S TYPE, NOT A FORM'S: names in the 13px every list and table row
26764
+ * sets a name in, at the medium weight a group's name takes, and every box the
26765
+ * compact Checkbox's (14px beside 13px words). At the body's 14px, with a
26766
+ * 16px box over 14px ones, it read a step larger than every list around it.
26767
+ */
26768
+ .crewlet-member-picker {
26769
+ display: grid;
26770
+ gap: var(--spacing-2);
26771
+ min-width: 0;
26772
+ }
26773
+
26774
+ .crewlet-member-picker__summary {
26775
+ margin: 0;
26776
+ color: var(--color-text-secondary);
26777
+ font-size: var(--font-size-compact);
26778
+ font-variant-numeric: tabular-nums;
26779
+ }
26780
+
26781
+ .crewlet-member-picker__list,
26782
+ .crewlet-member-picker__members {
26783
+ display: grid;
26784
+ margin: 0;
26785
+ padding: 0;
26786
+ list-style: none;
26787
+ }
26788
+
26789
+ .crewlet-member-picker__list {
26790
+ border: 1px solid var(--color-border-default);
26791
+ border-radius: var(--radius-md);
26792
+ overflow: hidden;
26793
+ }
26794
+
26795
+ .crewlet-member-picker__group + .crewlet-member-picker__group {
26796
+ border-top: 1px solid var(--color-border-default);
26797
+ }
26798
+
26799
+ .crewlet-member-picker__group-row {
26800
+ display: grid;
26801
+ grid-template-columns: auto minmax(0, 1fr) auto;
26802
+ align-items: center;
26803
+ gap: var(--spacing-2);
26804
+ padding: var(--spacing-2) var(--spacing-3) var(--spacing-2) var(--spacing-1);
26805
+ }
26806
+
26807
+ /* The open control is the kit's small ghost IconButton; only its chevron
26808
+ turns here, a quarter turn once the group is open. */
26809
+ .crewlet-member-picker__toggle svg {
26810
+ transition: transform var(--motion-duration-fast) var(--motion-easing-default);
26811
+ }
26812
+
26813
+ .crewlet-member-picker__group.is-open .crewlet-member-picker__toggle svg {
26814
+ transform: rotate(90deg);
26815
+ }
26816
+
26817
+ @media (prefers-reduced-motion: reduce) {
26818
+ .crewlet-member-picker__toggle svg {
26819
+ transition: none;
26820
+ }
26821
+ }
26822
+
26823
+ .crewlet-member-picker__count {
26824
+ color: var(--color-text-tertiary);
26825
+ font-size: var(--font-size-xs);
26826
+ font-variant-numeric: tabular-nums;
26827
+ white-space: nowrap;
26828
+ }
26829
+
26830
+ .crewlet-member-picker__members {
26831
+ border-top: 1px solid var(--color-border-default);
26832
+ background: var(--color-surface-subtle);
26833
+ }
26834
+
26835
+ .crewlet-member-picker__member {
26836
+ display: grid;
26837
+ grid-template-columns: auto auto minmax(0, 1fr) auto;
26838
+ align-items: center;
26839
+ gap: var(--spacing-2);
26840
+ min-height: var(--size-control-lg);
26841
+ /* Each member's box under its group's, past the open control and its gap. */
26842
+ padding: var(--spacing-1) var(--spacing-3) var(--spacing-1) calc(var(--spacing-1) + var(--size-control-sm) + var(--spacing-2));
26843
+ }
26844
+
26845
+ /* A MEMBER'S BOX STANDS UNDER ITS GROUP'S. The bare Checkbox centres its box
26846
+ on the square the pointer floor allows, which set the box half the
26847
+ difference in from the row's edge, a few pixels right of the group's box
26848
+ above it. That inset is taken back, and the pointer square reaches into
26849
+ the row's padding instead. */
26850
+ .crewlet-member-picker__members:not(.is-ungrouped) .crewlet-checkbox--bare {
26851
+ margin-inline-start: calc((var(--crewlet-checkbox-size) - var(--size-target-min)) / 2);
26852
+ }
26853
+
26854
+ .crewlet-member-picker__members.is-ungrouped {
26855
+ border-top: 0;
26856
+ background: transparent;
26857
+ }
26858
+
26859
+ .crewlet-member-picker__members.is-ungrouped .crewlet-member-picker__member {
26860
+ padding-inline-start: var(--spacing-3);
26861
+ }
26862
+
26863
+ .crewlet-member-picker__avatar {
26864
+ display: inline-flex;
26865
+ flex: none;
26866
+ }
26867
+
26868
+ /* The name and its line label the member's box, so they take the pointer a
26869
+ Checkbox's own words take. */
26870
+ .crewlet-member-picker__text {
26871
+ display: flex;
26872
+ flex-direction: column;
26873
+ min-width: 0;
26874
+ cursor: pointer;
26875
+ }
26876
+
26877
+ .crewlet-member-picker__name {
26878
+ overflow: hidden;
26879
+ color: var(--color-text-primary);
26880
+ font-size: var(--font-size-compact);
26881
+ text-overflow: ellipsis;
26882
+ white-space: nowrap;
26883
+ }
26884
+
26885
+ .crewlet-member-picker__detail {
26886
+ overflow: hidden;
26887
+ color: var(--color-text-tertiary);
26888
+ font-size: var(--font-size-xs);
26889
+ text-overflow: ellipsis;
26890
+ white-space: nowrap;
26891
+ }
26892
+
26893
+ .crewlet-member-picker__mark {
26894
+ color: var(--color-text-secondary);
26895
+ font-size: var(--font-size-xs);
26896
+ white-space: nowrap;
26897
+ }
26898
+
26899
+ .crewlet-member-picker__member.is-left-out .crewlet-member-picker__name,
26900
+ .crewlet-member-picker__mark.is-left-out {
26901
+ color: var(--color-text-tertiary);
26902
+ }
26903
+
26904
+ @media (width < 480px) {
26905
+ .crewlet-member-picker__member {
26906
+ grid-template-columns: auto auto minmax(0, 1fr);
26907
+ padding-inline-start: var(--spacing-3);
26908
+ }
26909
+
26910
+ .crewlet-member-picker__mark {
26911
+ grid-column: 3;
26912
+ }
26913
+ }
26914
+
26915
+ /* A group's name is the row's title: the medium weight, at the list's 13px. */
26916
+ .crewlet-member-picker__group-row .crewlet-checkbox__label {
26917
+ font-weight: var(--font-weight-medium);
26918
+ }
26919
+
26920
+
26373
26921
  /* MentionChip-W7MZZVRZ.css */
26374
26922
  /*
26375
26923
  * A mention in a message's words: a chip in the line, in the info tone's
@@ -33153,7 +33701,7 @@ button.crewlet-presence-stack__member:focus-visible {
33153
33701
  }
33154
33702
 
33155
33703
 
33156
- /* SegmentedControl-B7XCUOML.css */
33704
+ /* SegmentedControl-7GY2KM44.css */
33157
33705
  /*
33158
33706
  * SegmentedControl: the pill row, drawn with the Tabs classes.
33159
33707
  *
@@ -33292,6 +33840,17 @@ button.crewlet-presence-stack__member:focus-visible {
33292
33840
  background: var(--color-brand-accent);
33293
33841
  }
33294
33842
 
33843
+ /* A COUNT IN A CHIP IS A FIGURE IN THE CHIP'S OWN INK, as on a FilterChip and
33844
+ a lens chip: no pill of its own, since a box inside a box beside its word
33845
+ says nothing more. On the chosen chip the inset pill's tertiary figure lay
33846
+ on the accent fill at 1.4:1; inheriting, it is the label's on-accent ink. */
33847
+ .crewlet-segmented--chips .crewlet-count {
33848
+ min-width: 0;
33849
+ padding: 0;
33850
+ background: none;
33851
+ color: inherit;
33852
+ }
33853
+
33295
33854
  /* What completes the last choice sits in the row, at the chips' own height
33296
33855
  and in their face: a field at its own control step stood taller than every
33297
33856
  chip beside it. */
@@ -39196,7 +39755,7 @@ svg.crewlet-select__chevron {
39196
39755
  }
39197
39756
 
39198
39757
 
39199
- /* StepList-A4YVU4JI.css */
39758
+ /* StepList-OAJ45IBX.css */
39200
39759
  /*
39201
39760
  * A request's steps: a well on the inset ground, an ordered list of steps
39202
39761
  * each on a three-track grid (the 16px state column, the words, the
@@ -39234,7 +39793,8 @@ svg.crewlet-select__chevron {
39234
39793
  }
39235
39794
 
39236
39795
  .crewlet-step-mark--refused,
39237
- .crewlet-step-mark--stopped {
39796
+ .crewlet-step-mark--stopped,
39797
+ .crewlet-step-mark--pending {
39238
39798
  color: var(--color-text-tertiary);
39239
39799
  }
39240
39800
 
@@ -39287,6 +39847,16 @@ svg.crewlet-select__chevron {
39287
39847
  overflow-wrap: anywhere;
39288
39848
  }
39289
39849
 
39850
+ /*
39851
+ * A STEP THAT HAS NOT STARTED IS QUIET THROUGH: its words take the tertiary
39852
+ * ink its mark and its detail already have, so the whole step reads as one
39853
+ * thing still to come rather than as a label in full ink beside a dimmed
39854
+ * mark.
39855
+ */
39856
+ .crewlet-step-list__step--pending .crewlet-step-list__label {
39857
+ color: var(--color-text-tertiary);
39858
+ }
39859
+
39290
39860
  /*
39291
39861
  * WHAT THE STEP ASKED FOR, in the mono face. Each piece between separators is
39292
39862
  * one inline block, so a line breaks only between pieces (at a space, or