@crewlethq/ui 0.49.0 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -26349,6 +26349,206 @@ svg.crewlet-select__chevron {
26349
26349
  }
26350
26350
 
26351
26351
 
26352
+ /* SetupWizard-Y5BTXZX5.css */
26353
+ /*
26354
+ * SetupWizard: a setup walked step by step on a page of its own
26355
+ * (SetupWizard.tsx).
26356
+ *
26357
+ * THE GRID. The header across the top, the footer across the bottom, and
26358
+ * between them the rail (240px), the content (one column, at most 640px) and,
26359
+ * from 70rem of the wizard's own width, the aside (320px). Under 70rem the
26360
+ * aside takes the row under the content and the rail runs down beside both.
26361
+ * Under the phone breakpoint every part is one column, in reading order.
26362
+ */
26363
+
26364
+ .crewlet-setup-wizard {
26365
+ container-type: inline-size;
26366
+ min-width: 0;
26367
+ }
26368
+
26369
+ .crewlet-setup-wizard__frame {
26370
+ display: grid;
26371
+ grid-template-columns: 240px minmax(0, 1fr);
26372
+ grid-template-areas:
26373
+ 'head head'
26374
+ 'rail content'
26375
+ 'rail aside'
26376
+ 'foot foot';
26377
+ grid-template-rows: auto auto 1fr auto;
26378
+ column-gap: var(--spacing-8);
26379
+ row-gap: var(--spacing-6);
26380
+ min-width: 0;
26381
+ }
26382
+
26383
+ .crewlet-setup-wizard__head {
26384
+ display: flex;
26385
+ flex-direction: column;
26386
+ gap: var(--spacing-2);
26387
+ grid-area: head;
26388
+ min-width: 0;
26389
+ }
26390
+
26391
+ .crewlet-setup-wizard__status {
26392
+ display: inline-flex;
26393
+ align-items: center;
26394
+ }
26395
+
26396
+ /*
26397
+ * THE RAIL stays in view while the content scrolls past it, as a column of
26398
+ * the steps a reader can go back to.
26399
+ */
26400
+ .crewlet-setup-wizard__rail {
26401
+ position: sticky;
26402
+ top: var(--spacing-5);
26403
+ align-self: start;
26404
+ grid-area: rail;
26405
+ min-width: 0;
26406
+ }
26407
+
26408
+ .crewlet-setup-wizard__content {
26409
+ display: flex;
26410
+ flex-direction: column;
26411
+ grid-area: content;
26412
+ box-sizing: border-box;
26413
+ width: 100%;
26414
+ max-width: 640px;
26415
+ min-width: 0;
26416
+ }
26417
+
26418
+ .crewlet-setup-wizard__heading {
26419
+ margin: 0;
26420
+ color: var(--color-text-primary);
26421
+ font-family: var(--font-family-sans);
26422
+ font-size: var(--font-size-lg);
26423
+ font-weight: var(--font-weight-semibold);
26424
+ line-height: var(--font-line-height-tight);
26425
+ }
26426
+
26427
+ /*
26428
+ * The heading takes focus when the step changes. It keeps the browser's own
26429
+ * focus treatment: after a press nothing is drawn, and after a key the ring
26430
+ * shows where the reader now is.
26431
+ */
26432
+
26433
+ .crewlet-setup-wizard__lead {
26434
+ margin: var(--spacing-2) 0 0;
26435
+ max-width: var(--size-measure);
26436
+ color: var(--color-text-secondary);
26437
+ font-family: var(--font-family-sans);
26438
+ font-size: var(--font-size-sm);
26439
+ line-height: var(--font-line-height-body);
26440
+ }
26441
+
26442
+ .crewlet-setup-wizard__body {
26443
+ display: flex;
26444
+ flex-direction: column;
26445
+ gap: var(--spacing-6);
26446
+ margin-top: var(--spacing-6);
26447
+ min-width: 0;
26448
+ }
26449
+
26450
+ /* UNDER THE CONTENT, the aside is set off by one hairline, as AsideLayout's is. */
26451
+ .crewlet-setup-wizard__aside {
26452
+ display: flex;
26453
+ flex-direction: column;
26454
+ gap: var(--spacing-4);
26455
+ grid-area: aside;
26456
+ box-sizing: border-box;
26457
+ max-width: 640px;
26458
+ min-width: 0;
26459
+ padding-top: var(--spacing-6);
26460
+ border-top: 1px solid var(--color-border-default);
26461
+ }
26462
+
26463
+ /*
26464
+ * THE FOOTER holds the step's actions at the bottom of the view while the
26465
+ * content scrolls under it, on the sheet's own ground with a hairline above,
26466
+ * and clears the device's safe area where it has one.
26467
+ */
26468
+ .crewlet-setup-wizard__footer {
26469
+ position: sticky;
26470
+ bottom: 0;
26471
+ z-index: var(--z-index-sticky);
26472
+ display: flex;
26473
+ flex-wrap: wrap;
26474
+ align-items: center;
26475
+ justify-content: flex-end;
26476
+ gap: var(--spacing-2);
26477
+ grid-area: foot;
26478
+ padding: var(--spacing-3) 0 calc(var(--spacing-3) + env(safe-area-inset-bottom, var(--spacing-0)));
26479
+ border-top: 1px solid var(--color-border-default);
26480
+ background: var(--color-surface-background);
26481
+ }
26482
+
26483
+ /* BESIDE THE CONTENT, from 70rem of the wizard's own width: the aside holds in view. */
26484
+ @container (min-width: 70rem) {
26485
+ .crewlet-setup-wizard__frame {
26486
+ grid-template-columns: 240px minmax(0, 1fr) 320px;
26487
+ grid-template-areas:
26488
+ 'head head head'
26489
+ 'rail content aside'
26490
+ 'foot foot foot';
26491
+ grid-template-rows: auto 1fr auto;
26492
+ }
26493
+
26494
+ .crewlet-setup-wizard__aside {
26495
+ position: sticky;
26496
+ top: var(--spacing-5);
26497
+ align-self: start;
26498
+ padding-top: 0;
26499
+ border-top: 0;
26500
+ }
26501
+ }
26502
+
26503
+ /*
26504
+ * ON A PHONE, one column in reading order: where the reader is, the step, the
26505
+ * folded preview, and the actions. The rail is a row of steps under the
26506
+ * position line, and scrolls away with the page rather than covering it.
26507
+ */
26508
+ @media (width < 640px) {
26509
+ .crewlet-setup-wizard__frame {
26510
+ grid-template-columns: minmax(0, 1fr);
26511
+ grid-template-areas:
26512
+ 'head'
26513
+ 'rail'
26514
+ 'content'
26515
+ 'aside'
26516
+ 'foot';
26517
+ grid-template-rows: auto;
26518
+ row-gap: var(--spacing-5);
26519
+ }
26520
+
26521
+ .crewlet-setup-wizard__rail {
26522
+ position: static;
26523
+ display: flex;
26524
+ flex-direction: column;
26525
+ gap: var(--spacing-2);
26526
+ }
26527
+
26528
+ .crewlet-setup-wizard__preview {
26529
+ grid-area: aside;
26530
+ min-width: 0;
26531
+ }
26532
+
26533
+ .crewlet-setup-wizard__preview .crewlet-setup-wizard__aside {
26534
+ padding-top: 0;
26535
+ border-top: 0;
26536
+ }
26537
+ }
26538
+
26539
+ .crewlet-setup-wizard__position {
26540
+ margin: 0;
26541
+ color: var(--color-text-secondary);
26542
+ font-family: var(--font-family-sans);
26543
+ font-size: var(--font-size-xs);
26544
+ font-weight: var(--font-weight-medium);
26545
+ }
26546
+
26547
+ .crewlet-setup-wizard__position-step {
26548
+ color: var(--color-text-primary);
26549
+ }
26550
+
26551
+
26352
26552
  /* ShareDialog-4QDCBWMH.css */
26353
26553
  /*
26354
26554
  * Three blocks under the title: who to add and at what role, who has access,
@@ -29751,7 +29951,7 @@ svg.crewlet-select__chevron {
29751
29951
  }
29752
29952
 
29753
29953
 
29754
- /* Stepper-HW4JM3YH.css */
29954
+ /* Stepper-QEJI5RGX.css */
29755
29955
  /*
29756
29956
  * The stepper: where a sequence has got to (Stepper.tsx).
29757
29957
  *
@@ -29841,41 +30041,65 @@ svg.crewlet-select__chevron {
29841
30041
  }
29842
30042
 
29843
30043
  /*
29844
- * THE CURRENT STEP, in its tone. The hairline goes transparent rather than
29845
- * away, so the pill keeps its box and the row does not move by a pixel as the
29846
- * current step advances along it, and so forced-colors mode, which draws a
29847
- * transparent border in the system's own colour, still outlines it.
30044
+ * THE CURRENT STEP, in its tone: the pill in a row, the mark in a column. The
30045
+ * hairline goes transparent rather than away, so the pill keeps its box and
30046
+ * the row does not move by a pixel as the current step advances along it, and
30047
+ * so forced-colors mode, which draws a transparent border in the system's own
30048
+ * colour, still outlines it.
29848
30049
  */
29849
- .crewlet-stepper--info .crewlet-stepper__step--current > .crewlet-stepper__chip {
30050
+ .crewlet-stepper--info .crewlet-stepper__step--current > .crewlet-stepper__chip,
30051
+ .crewlet-stepper--info .crewlet-stepper__step--current .crewlet-stepper__mark {
29850
30052
  border-color: transparent;
29851
30053
  background: var(--color-feedback-info-soft);
29852
30054
  color: var(--color-feedback-info-ink);
29853
30055
  }
29854
30056
 
29855
- .crewlet-stepper--success .crewlet-stepper__step--current > .crewlet-stepper__chip {
30057
+ .crewlet-stepper--success .crewlet-stepper__step--current > .crewlet-stepper__chip,
30058
+ .crewlet-stepper--success .crewlet-stepper__step--current .crewlet-stepper__mark {
29856
30059
  border-color: transparent;
29857
30060
  background: var(--color-feedback-success-soft);
29858
30061
  color: var(--color-feedback-success-ink);
29859
30062
  }
29860
30063
 
29861
- .crewlet-stepper--warning .crewlet-stepper__step--current > .crewlet-stepper__chip {
30064
+ .crewlet-stepper--warning .crewlet-stepper__step--current > .crewlet-stepper__chip,
30065
+ .crewlet-stepper--warning .crewlet-stepper__step--current .crewlet-stepper__mark {
29862
30066
  border-color: transparent;
29863
30067
  background: var(--color-feedback-warning-soft);
29864
30068
  color: var(--color-feedback-warning-ink);
29865
30069
  }
29866
30070
 
29867
- .crewlet-stepper--danger .crewlet-stepper__step--current > .crewlet-stepper__chip {
30071
+ .crewlet-stepper--danger .crewlet-stepper__step--current > .crewlet-stepper__chip,
30072
+ .crewlet-stepper--danger .crewlet-stepper__step--current .crewlet-stepper__mark {
29868
30073
  border-color: transparent;
29869
30074
  background: var(--color-feedback-danger-soft);
29870
30075
  color: var(--color-feedback-danger-ink);
29871
30076
  }
29872
30077
 
29873
- .crewlet-stepper--brand .crewlet-stepper__step--current > .crewlet-stepper__chip {
30078
+ .crewlet-stepper--brand .crewlet-stepper__step--current > .crewlet-stepper__chip,
30079
+ .crewlet-stepper--brand .crewlet-stepper__step--current .crewlet-stepper__mark {
29874
30080
  border-color: transparent;
29875
30081
  background: var(--color-brand-accent-soft);
29876
30082
  color: var(--color-brand-accent-ink);
29877
30083
  }
29878
30084
 
30085
+ /*
30086
+ * A STEP THAT NEEDS ATTENTION is the warning tint under the warning ink, the
30087
+ * pair the palette suite holds to 4.5:1 over every rung, with the warning
30088
+ * glyph: the pill of a step that is not current, and the mark of any step in
30089
+ * a column. A CURRENT pill keeps its tone, so the row still says which step
30090
+ * the reader is on, and carries the glyph in that tone's ink.
30091
+ */
30092
+ .crewlet-stepper .crewlet-stepper__step--attention:not(.crewlet-stepper__step--current) > .crewlet-stepper__chip,
30093
+ .crewlet-stepper .crewlet-stepper__step--attention .crewlet-stepper__mark {
30094
+ border-color: transparent;
30095
+ background: var(--color-feedback-warning-soft);
30096
+ color: var(--color-feedback-warning-ink);
30097
+ }
30098
+
30099
+ .crewlet-stepper__warning {
30100
+ flex: none;
30101
+ }
30102
+
29879
30103
  /*
29880
30104
  * INSIDE THE PILL THE DOT IS THE PILL'S OWN INK, as a Tag's is, and for the
29881
30105
  * Tag's reason: StatusDot paints the fill step, measured as a mark on the
@@ -29908,8 +30132,157 @@ svg.crewlet-select__chevron {
29908
30132
  * emulated). Opting out also keeps shadows, so the pulsing dot's halo, which
29909
30133
  * is the tone's soft tint and no system colour, is held still inside it.
29910
30134
  */
30135
+ /*
30136
+ * A STEP THAT CAN BE PICKED is a button with no look of its own: the pill or
30137
+ * the row it carries draws it, and a hover lays the kit's hover overlay over
30138
+ * a step at rest. The current step keeps its tint under the pointer, since a
30139
+ * tone rule weighs more than the hover. The ring sits inside the step's own
30140
+ * box, over the pill's hairline rather than a second line beside it.
30141
+ */
30142
+ .crewlet-stepper__target {
30143
+ appearance: none;
30144
+ margin: 0;
30145
+ background: transparent;
30146
+ font: inherit;
30147
+ text-align: start;
30148
+ cursor: pointer;
30149
+ }
30150
+
30151
+ .crewlet-stepper__chip.crewlet-stepper__target {
30152
+ font-family: var(--font-family-sans);
30153
+ font-size: var(--font-size-2xs);
30154
+ font-weight: var(--font-weight-medium);
30155
+ line-height: 1;
30156
+ }
30157
+
30158
+ .crewlet-stepper__target:hover {
30159
+ background: var(--color-surface-hover);
30160
+ }
30161
+
30162
+ .crewlet-stepper__target:focus-visible {
30163
+ outline: 2px solid var(--color-focus);
30164
+ outline-offset: var(--size-focus-ring-inset-offset);
30165
+ }
30166
+
30167
+ /*
30168
+ * THE COLUMN, a setup wizard's rail. Each step is a row: a 20px mark (the
30169
+ * check, the dot, the warning glyph, or the step's number for one still to
30170
+ * come) and beside it the label, with the description and the status words
30171
+ * under it. A hairline in the strong hairline's colour joins one mark to the
30172
+ * next, 4px clear of each, drawn by the step it leaves so nothing trails the
30173
+ * last. The mark is the pills' 20px, following the density as they do, and
30174
+ * the label's line is the mark's height so the two stand level. The row's words follow the same three inks as the pills: the current
30175
+ * step primary and medium, a finished one secondary, the rest tertiary.
30176
+ */
30177
+ .crewlet-stepper--vertical {
30178
+ flex-direction: column;
30179
+ flex-wrap: nowrap;
30180
+ align-items: stretch;
30181
+ gap: 0;
30182
+ }
30183
+
30184
+ .crewlet-stepper--vertical .crewlet-stepper__step {
30185
+ position: relative;
30186
+ display: block;
30187
+ }
30188
+
30189
+ .crewlet-stepper--vertical .crewlet-stepper__step + .crewlet-stepper__step::before {
30190
+ content: none;
30191
+ }
30192
+
30193
+ .crewlet-stepper--vertical .crewlet-stepper__step:not(:last-child)::after {
30194
+ content: '';
30195
+ position: absolute;
30196
+ top: calc(var(--spacing-2) + 20px * var(--density, 1) + 4px);
30197
+ bottom: calc(4px - var(--spacing-2));
30198
+ left: calc(var(--spacing-2) + 10px * var(--density, 1));
30199
+ width: 1px;
30200
+ background: var(--color-border-strong);
30201
+ pointer-events: none;
30202
+ }
30203
+
30204
+ .crewlet-stepper__row {
30205
+ display: flex;
30206
+ align-items: flex-start;
30207
+ gap: var(--spacing-3);
30208
+ box-sizing: border-box;
30209
+ width: 100%;
30210
+ padding: var(--spacing-2);
30211
+ border: 0;
30212
+ border-radius: var(--radius-md);
30213
+ color: var(--color-text-tertiary);
30214
+ font-family: var(--font-family-sans);
30215
+ font-size: var(--font-size-sm);
30216
+ }
30217
+
30218
+ .crewlet-stepper__mark {
30219
+ display: inline-flex;
30220
+ flex: none;
30221
+ align-items: center;
30222
+ justify-content: center;
30223
+ box-sizing: border-box;
30224
+ width: calc(20px * var(--density, 1));
30225
+ height: calc(20px * var(--density, 1));
30226
+ border: 1px solid var(--color-border-default);
30227
+ border-radius: var(--radius-pill);
30228
+ font-size: var(--font-size-2xs);
30229
+ font-weight: var(--font-weight-medium);
30230
+ font-variant-numeric: tabular-nums;
30231
+ line-height: 1;
30232
+ }
30233
+
30234
+ .crewlet-stepper__text {
30235
+ display: flex;
30236
+ flex-direction: column;
30237
+ gap: var(--spacing-1);
30238
+ min-width: 0;
30239
+ }
30240
+
30241
+ .crewlet-stepper__title {
30242
+ line-height: calc(20px * var(--density, 1));
30243
+ overflow-wrap: anywhere;
30244
+ }
30245
+
30246
+ .crewlet-stepper__row .crewlet-stepper__label {
30247
+ overflow: visible;
30248
+ }
30249
+
30250
+ .crewlet-stepper__description,
30251
+ .crewlet-stepper__note {
30252
+ color: var(--color-text-tertiary);
30253
+ font-size: var(--font-size-xs);
30254
+ line-height: var(--font-line-height-snug);
30255
+ }
30256
+
30257
+ .crewlet-stepper__step--attention .crewlet-stepper__note {
30258
+ color: var(--color-text-secondary);
30259
+ }
30260
+
30261
+ .crewlet-stepper__step--done > .crewlet-stepper__row {
30262
+ color: var(--color-text-secondary);
30263
+ }
30264
+
30265
+ /*
30266
+ * THE CURRENT ROW is lifted as the rail's current row is (SidebarNav): the
30267
+ * elevated rung inside a one-pixel hairline drawn as an outline, so forced
30268
+ * colors keeps it, and it does not move the row by a pixel.
30269
+ */
30270
+ .crewlet-stepper__step--current > .crewlet-stepper__row {
30271
+ outline: 1px solid var(--color-border-default);
30272
+ outline-offset: -1px;
30273
+ background: var(--color-surface-elevated);
30274
+ color: var(--color-text-primary);
30275
+ font-weight: var(--font-weight-medium);
30276
+ }
30277
+
30278
+ .crewlet-stepper__step--current .crewlet-stepper__description,
30279
+ .crewlet-stepper__step--current .crewlet-stepper__note {
30280
+ font-weight: var(--font-weight-regular);
30281
+ }
30282
+
29911
30283
  @media (forced-colors: active) {
29912
- .crewlet-stepper .crewlet-stepper__step--current > .crewlet-stepper__chip {
30284
+ .crewlet-stepper .crewlet-stepper__step--current > .crewlet-stepper__chip,
30285
+ .crewlet-stepper .crewlet-stepper__step--current .crewlet-stepper__mark {
29913
30286
  forced-color-adjust: none;
29914
30287
  border-color: Highlight;
29915
30288
  background: Highlight;
@@ -29924,9 +30297,15 @@ svg.crewlet-select__chevron {
29924
30297
  animation: none;
29925
30298
  }
29926
30299
 
29927
- .crewlet-stepper__step + .crewlet-stepper__step::before {
30300
+ .crewlet-stepper__step + .crewlet-stepper__step::before,
30301
+ .crewlet-stepper--vertical .crewlet-stepper__step:not(:last-child)::after {
29928
30302
  background: GrayText;
29929
30303
  }
30304
+
30305
+ .crewlet-stepper__target:hover {
30306
+ outline: 1px solid Highlight;
30307
+ outline-offset: var(--size-focus-ring-inset-offset);
30308
+ }
29930
30309
  }
29931
30310
 
29932
30311
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewlethq/ui",
3
- "version": "0.49.0",
3
+ "version": "0.50.0",
4
4
  "description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -42,8 +42,8 @@
42
42
  "clean": "rm -rf dist src/generated"
43
43
  },
44
44
  "dependencies": {
45
- "@crewlethq/icons": "0.49.0",
46
- "@crewlethq/tokens": "0.49.0",
45
+ "@crewlethq/icons": "0.50.0",
46
+ "@crewlethq/tokens": "0.50.0",
47
47
  "prosemirror-commands": "1.7.2",
48
48
  "prosemirror-gapcursor": "1.4.1",
49
49
  "prosemirror-history": "1.5.1",
@@ -1,176 +0,0 @@
1
- /*
2
- * The stepper: where a sequence has got to (Stepper.tsx).
3
- *
4
- * THE APPROVED DESIGN'S STEP ROW. Each step is a 20px pill inside the default
5
- * hairline, the 11px step at the medium weight, 8px inside each end and 5px
6
- * between a mark and the word; two pills are joined by a 10px rule in the
7
- * strong hairline's colour with 6px either side of it. A finished step is the
8
- * secondary ink behind a check, the current step its tone's soft tint under
9
- * its ink behind its dot, and a step still to come the tertiary ink.
10
- *
11
- * EVERY INK IS A MEASURED PAIR. The secondary and tertiary steps are held to
12
- * 4.5:1 on every opaque rung, and each tone's ink to 4.5:1 on its own soft
13
- * tint over every rung, by the palette suite in @crewlethq/tokens; the pill
14
- * draws nothing else. The current pill is the design's `work-soft` under
15
- * `work-ink` in the default tone, and a Tag's colours in every tone, which is
16
- * what a chip naming a state is in this kit.
17
- */
18
-
19
- .crewlet-stepper {
20
- display: flex;
21
- flex-wrap: wrap;
22
- align-items: center;
23
- /* The design's 6px between a pill and the rule beside it: a step and a half. */
24
- gap: calc(var(--spacing-1) * 1.5);
25
- min-width: 0;
26
- margin: 0;
27
- padding: 0;
28
- list-style: none;
29
- }
30
-
31
- .crewlet-stepper__step {
32
- display: inline-flex;
33
- align-items: center;
34
- gap: calc(var(--spacing-1) * 1.5);
35
- min-width: 0;
36
- }
37
-
38
- /*
39
- * THE RULE BETWEEN TWO STEPS is drawn by the second of them, so a sequence of
40
- * one draws none and nothing trails the last. A pseudo-element, because it is
41
- * furniture: it carries nothing a reader has to be told, and the list already
42
- * says the steps are in order. 10px by a hairline, the measure of this one
43
- * mark, and fixed at every density as a hairline is.
44
- */
45
- .crewlet-stepper__step + .crewlet-stepper__step::before {
46
- content: '';
47
- flex: none;
48
- width: 10px;
49
- height: 1px;
50
- background: var(--color-border-strong);
51
- }
52
-
53
- .crewlet-stepper__chip {
54
- display: inline-flex;
55
- align-items: center;
56
- /* The design's 5px between the check or the dot and the word. */
57
- gap: calc(var(--spacing-1) * 1.25);
58
- box-sizing: border-box;
59
- /* The design's 20px pill, which follows the density with every other step
60
- height in the kit. It labels and takes no press, so the 24px target floor
61
- is not its to clear. */
62
- height: calc(20px * var(--density, 1));
63
- max-width: 100%;
64
- padding: 0 var(--spacing-2);
65
- border: 1px solid var(--color-border-default);
66
- border-radius: var(--radius-pill);
67
- color: var(--color-text-tertiary);
68
- font-family: var(--font-family-sans);
69
- font-size: var(--font-size-2xs);
70
- font-weight: var(--font-weight-medium);
71
- line-height: 1;
72
- white-space: nowrap;
73
- }
74
-
75
- .crewlet-stepper__label {
76
- min-width: 0;
77
- overflow: hidden;
78
- text-overflow: ellipsis;
79
- }
80
-
81
- .crewlet-stepper__check {
82
- flex: none;
83
- }
84
-
85
- .crewlet-stepper__step--done > .crewlet-stepper__chip {
86
- color: var(--color-text-secondary);
87
- }
88
-
89
- /*
90
- * THE CURRENT STEP, in its tone. The hairline goes transparent rather than
91
- * away, so the pill keeps its box and the row does not move by a pixel as the
92
- * current step advances along it, and so forced-colors mode, which draws a
93
- * transparent border in the system's own colour, still outlines it.
94
- */
95
- .crewlet-stepper--info .crewlet-stepper__step--current > .crewlet-stepper__chip {
96
- border-color: transparent;
97
- background: var(--color-feedback-info-soft);
98
- color: var(--color-feedback-info-ink);
99
- }
100
-
101
- .crewlet-stepper--success .crewlet-stepper__step--current > .crewlet-stepper__chip {
102
- border-color: transparent;
103
- background: var(--color-feedback-success-soft);
104
- color: var(--color-feedback-success-ink);
105
- }
106
-
107
- .crewlet-stepper--warning .crewlet-stepper__step--current > .crewlet-stepper__chip {
108
- border-color: transparent;
109
- background: var(--color-feedback-warning-soft);
110
- color: var(--color-feedback-warning-ink);
111
- }
112
-
113
- .crewlet-stepper--danger .crewlet-stepper__step--current > .crewlet-stepper__chip {
114
- border-color: transparent;
115
- background: var(--color-feedback-danger-soft);
116
- color: var(--color-feedback-danger-ink);
117
- }
118
-
119
- .crewlet-stepper--brand .crewlet-stepper__step--current > .crewlet-stepper__chip {
120
- border-color: transparent;
121
- background: var(--color-brand-accent-soft);
122
- color: var(--color-brand-accent-ink);
123
- }
124
-
125
- /*
126
- * INSIDE THE PILL THE DOT IS THE PILL'S OWN INK, as a Tag's is, and for the
127
- * Tag's reason: StatusDot paints the fill step, measured as a mark on the
128
- * opaque rungs, and here it stands on the tone's soft tint instead, where
129
- * nothing measures it. The ink is the step that IS measured on that tint, at
130
- * 4.5:1, and the colour of the word beside it. A pulsing dot keeps
131
- * StatusDot's halo, the same soft step drawn once more over the pill, which
132
- * stands dE 3.92 off it at the least (the light warning pill on the frame).
133
- *
134
- * Two classes deep, so it beats StatusDot's own tone rule whichever order the
135
- * bundle writes the two files in.
136
- */
137
- .crewlet-stepper .crewlet-stepper__dot {
138
- background: currentColor;
139
- }
140
-
141
- /*
142
- * FORCED COLORS repaints every background to Canvas, which takes the current
143
- * step's tint and its dot, so the one step the row is about would read like
144
- * any other. The current pill is drawn as the system draws a selection,
145
- * HighlightText on Highlight, with its dot in the same ink, and the rule
146
- * between two steps in GrayText; the chips' hairlines are borders, which the
147
- * mode keeps in its own colour.
148
- *
149
- * THE CURRENT PILL OPTS OUT OF THE ADJUSTMENT, which is safe only because
150
- * every colour it draws in that mode is a system colour. Left to it, Chromium
151
- * paints a Canvas backplate behind every run of text, and HighlightText is
152
- * written for Highlight, not for Canvas: in a dark high-contrast theme the
153
- * step's words drew black on black (measured in Chromium 153 with the mode
154
- * emulated). Opting out also keeps shadows, so the pulsing dot's halo, which
155
- * is the tone's soft tint and no system colour, is held still inside it.
156
- */
157
- @media (forced-colors: active) {
158
- .crewlet-stepper .crewlet-stepper__step--current > .crewlet-stepper__chip {
159
- forced-color-adjust: none;
160
- border-color: Highlight;
161
- background: Highlight;
162
- color: HighlightText;
163
- }
164
-
165
- .crewlet-stepper .crewlet-stepper__dot {
166
- background: HighlightText;
167
- }
168
-
169
- .crewlet-stepper .crewlet-stepper__dot.is-pulsing::after {
170
- animation: none;
171
- }
172
-
173
- .crewlet-stepper__step + .crewlet-stepper__step::before {
174
- background: GrayText;
175
- }
176
- }