@cardstack/boxel-cli 0.11.0-unstable.2 → 0.11.0-unstable.3

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 (106) hide show
  1. package/bundled-realms/pretui/components/agent-mark.gts +98 -0
  2. package/bundled-realms/pretui/components/agent-question.gts +340 -37
  3. package/bundled-realms/pretui/components/answer-footer.gts +249 -0
  4. package/bundled-realms/pretui/components/card-embed.gts +523 -0
  5. package/bundled-realms/pretui/components/card-pills.gts +725 -0
  6. package/bundled-realms/pretui/components/code-block.gts +87 -45
  7. package/bundled-realms/pretui/components/collapsed-turn.gts +133 -12
  8. package/bundled-realms/pretui/components/compaction-chip.gts +81 -67
  9. package/bundled-realms/pretui/components/composer-cap.gts +516 -0
  10. package/bundled-realms/pretui/components/context-ring.gts +108 -0
  11. package/bundled-realms/pretui/components/diff-block.gts +1002 -31
  12. package/bundled-realms/pretui/components/diff-stat.gts +102 -0
  13. package/bundled-realms/pretui/components/jump-chip.gts +86 -53
  14. package/bundled-realms/pretui/components/markdown-stream.gts +799 -0
  15. package/bundled-realms/pretui/components/markdown-surface.gts +71 -0
  16. package/bundled-realms/pretui/components/plan-mark.gts +147 -0
  17. package/bundled-realms/pretui/components/prose.gts +185 -8
  18. package/bundled-realms/pretui/components/prose.md +6 -8
  19. package/bundled-realms/pretui/components/quick-look.gts +377 -0
  20. package/bundled-realms/pretui/components/reactions.gts +136 -0
  21. package/bundled-realms/pretui/components/recommendation.gts +67 -36
  22. package/bundled-realms/pretui/components/result-card.gts +58 -22
  23. package/bundled-realms/pretui/components/segmented-control.gts +13 -8
  24. package/bundled-realms/pretui/components/session-prep.gts +12 -11
  25. package/bundled-realms/pretui/components/sliding-highlight.gts +8 -3
  26. package/bundled-realms/pretui/components/speaker-label.gts +132 -0
  27. package/bundled-realms/pretui/components/state-glyph.gts +121 -0
  28. package/bundled-realms/pretui/components/step-list.gts +62 -60
  29. package/bundled-realms/pretui/components/stick-to-bottom.gts +1150 -0
  30. package/bundled-realms/pretui/components/system-line.gts +143 -0
  31. package/bundled-realms/pretui/components/task-checklist.gts +184 -0
  32. package/bundled-realms/pretui/components/thinking.gts +63 -94
  33. package/bundled-realms/pretui/components/tool-change-table.gts +285 -0
  34. package/bundled-realms/pretui/components/tool-gate.gts +462 -0
  35. package/bundled-realms/pretui/components/tool-group.gts +920 -0
  36. package/bundled-realms/pretui/components/tool-icon.ts +64 -0
  37. package/bundled-realms/pretui/components/tool-meta.gts +82 -0
  38. package/bundled-realms/pretui/components/tool-plan.gts +197 -0
  39. package/bundled-realms/pretui/components/tool-row.gts +2087 -0
  40. package/bundled-realms/pretui/components/turn-changes.gts +227 -0
  41. package/bundled-realms/pretui/components/user-bubble.gts +575 -0
  42. package/bundled-realms/pretui/components/work-item.gts +185 -48
  43. package/bundled-realms/pretui/docs/scroll-anchoring-protocol.md +136 -0
  44. package/bundled-realms/pretui/internal/markdown-projection.ts +438 -0
  45. package/bundled-realms/pretui/internal/mount-queue.ts +79 -0
  46. package/bundled-realms/pretui/internal/tool-phrases.ts +168 -0
  47. package/bundled-realms/pretui/package.json +2 -1
  48. package/bundled-test-harness/assets/{ai-module-creation-test-beRNwH-e.js → ai-module-creation-test-B6FQKqIl.js} +1 -1
  49. package/bundled-test-harness/assets/{app-CtezUCip.js → app-KpPqdyX3.js} +4 -4
  50. package/bundled-test-harness/assets/{binary-upload-dedupe-test-bI8T0QLl.js → binary-upload-dedupe-test-DN00y1tM.js} +1 -1
  51. package/bundled-test-harness/assets/{can-invoke-test-DVaU_yRT.js → can-invoke-test-Bl-EUFM3.js} +1 -1
  52. package/bundled-test-harness/assets/{card-chooser-paging-test-DnxMnXKR.js → card-chooser-paging-test-BNuZRHX3.js} +1 -1
  53. package/bundled-test-harness/assets/{card-chooser-test-DUSnLr-u.js → card-chooser-test-wKfPOOT4.js} +1 -1
  54. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-GBUr3tFK.js → card-def-field-def-relationships-test-CduQ6zan.js} +1 -1
  55. package/bundled-test-harness/assets/{card-delete-test-CQveO1VC.js → card-delete-test-DKxolj5o.js} +1 -1
  56. package/bundled-test-harness/assets/{check-correctness-test-D2M2p66N.js → check-correctness-test-B-kgHztp.js} +1 -1
  57. package/bundled-test-harness/assets/{codeblocks-test-AdolhdCA.js → codeblocks-test-BDD7qK_V.js} +1 -1
  58. package/bundled-test-harness/assets/{compaction-test-DvyAQq56.js → compaction-test-BweolkhG.js} +1 -1
  59. package/bundled-test-harness/assets/{container-DIF_9lZ9.css → container-B5B6u-xm.css} +29 -22
  60. package/bundled-test-harness/assets/{container-DvvqmNpg.js → container-BnJjIM6J.js} +9 -6
  61. package/bundled-test-harness/assets/{create-listing-modal-test-D95JfQab.js → create-listing-modal-test-FvcAKpIa.js} +1 -1
  62. package/bundled-test-harness/assets/{debug-message-test-BcNtj7Wr.js → debug-message-test-CJ18Evt7.js} +1 -1
  63. package/bundled-test-harness/assets/{externals-DCnB4XSS.js → externals-BWjhmCD4.js} +1 -1
  64. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-5lnN1pv2.js → fallback-banner-live-delete-test-C2H3BrT-.js} +1 -1
  65. package/bundled-test-harness/assets/{fallback-banner-test-DFb_m_Kq.js → fallback-banner-test-C10aYjkj.js} +1 -1
  66. package/bundled-test-harness/assets/{fallback-models-test-p3YIwj1L.js → fallback-models-test-BxoPiaGF.js} +1 -1
  67. package/bundled-test-harness/assets/{file-attachment-test-CmyjNWRR.js → file-attachment-test-DeKyzYaz.js} +1 -1
  68. package/bundled-test-harness/assets/{general-test-CX-TFDuX.js → general-test-BewzrpoB.js} +1 -1
  69. package/bundled-test-harness/assets/{index-query-engine-test-CY2tAkot.js → index-query-engine-test-BtI8Y2LR.js} +1 -1
  70. package/bundled-test-harness/assets/{instance-filter-matcher-test-CMBTh8xn.js → instance-filter-matcher-test-BHXHGHjE.js} +1 -1
  71. package/bundled-test-harness/assets/{main-BOZbZVem.js → main-CqAHZ2kK.js} +1 -1
  72. package/bundled-test-harness/assets/{message-tool-test-CfjRSJvt.js → message-tool-test-NMaPJFsd.js} +1 -1
  73. package/bundled-test-harness/assets/{model-cost-tier-test-mZG84Uso.js → model-cost-tier-test-BgbfN2LH.js} +1 -1
  74. package/bundled-test-harness/assets/{operation-lowering-test-CHnjKSJb.js → operation-lowering-test-C4IaOjsA.js} +1 -1
  75. package/bundled-test-harness/assets/{operator-mode-card-chooser-test-KWS8lq16.js → operator-mode-card-chooser-test-Bwe47Rn7.js} +1 -1
  76. package/bundled-test-harness/assets/{operator-mode-links-test-CViFt0Ws.js → operator-mode-links-test-BU4jkC-B.js} +1 -1
  77. package/bundled-test-harness/assets/{operator-mode-test-D0gZM2yw.js → operator-mode-test-Bh0rGM9z.js} +1 -1
  78. package/bundled-test-harness/assets/{operator-mode-ui-test-CEvHJ9DS.js → operator-mode-ui-test-whgUw0ju.js} +1 -1
  79. package/bundled-test-harness/assets/{overlay-menu-items-test-Pw80RXsr.js → overlay-menu-items-test-Cwn1vr8q.js} +1 -1
  80. package/bundled-test-harness/assets/{past-sessions-test-CW0-Bjav.js → past-sessions-test-Bh24N-Kz.js} +1 -1
  81. package/bundled-test-harness/assets/{permission-checking-realm-test-D5uXQypS.js → permission-checking-realm-test-DKnnAy0f.js} +1 -1
  82. package/bundled-test-harness/assets/{realm-config-policy-standing-test-Btatheni.js → realm-config-policy-standing-test-DngdYypq.js} +1 -1
  83. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-Dh5zW13o.js → realm-config-routing-rule-edit-test-_rkFU8SN.js} +1 -1
  84. package/bundled-test-harness/assets/{realm-config-settings-test-BJa8gv_C.js → realm-config-settings-test-CR9NH0Zn.js} +1 -1
  85. package/bundled-test-harness/assets/{reasoning-test-2Zp37cQB.js → reasoning-test-0lH10kRl.js} +1 -1
  86. package/bundled-test-harness/assets/{room-message-test-BsrON13e.js → room-message-test-C-PddE4Y.js} +1 -1
  87. package/bundled-test-harness/assets/{run-realm-code-BxktQf6R.js → run-realm-code-C8N7DtN-.js} +1 -1
  88. package/bundled-test-harness/assets/{run-realm-code-test-7grpTos-.js → run-realm-code-test-DBdp147q.js} +1 -1
  89. package/bundled-test-harness/assets/{schema-generation-test-CM9ggQji.js → schema-generation-test-CB1Hb7GQ.js} +1 -1
  90. package/bundled-test-harness/assets/{scrolling-test-BER00htB.js → scrolling-test-3PhVin8h.js} +1 -1
  91. package/bundled-test-harness/assets/{searchable-option-test-Ctf8r3HZ.js → searchable-option-test-BAdOiL4U.js} +1 -1
  92. package/bundled-test-harness/assets/{sending-test-BJGobs2E.js → sending-test-KSmu1tSJ.js} +1 -1
  93. package/bundled-test-harness/assets/{skills-test-GPOsHRN6.js → skills-test-D-dlcFpd.js} +1 -1
  94. package/bundled-test-harness/assets/{store-test-QvvHimzH.js → store-test-CEW7xQjZ.js} +1 -1
  95. package/bundled-test-harness/assets/{tests-DoTEpvcF.js → tests-QYqqa6nv.js} +47 -47
  96. package/bundled-test-harness/assets/{text-input-validator-test-CYYH2N0L.js → text-input-validator-test-D8iNOWep.js} +1 -1
  97. package/bundled-test-harness/assets/{to-device-streaming-test-Ctqa0bVp.js → to-device-streaming-test-trCX-505.js} +1 -1
  98. package/bundled-test-harness/assets/{token-usage-test-BQVbK3X0.js → token-usage-test-C6sULooH.js} +1 -1
  99. package/bundled-test-harness/assets/{tools-DU8Rc15s.js → tools-UJfD-_al.js} +1 -1
  100. package/bundled-test-harness/assets/{tools-test-B13yvEKE.js → tools-test-Brav31AV.js} +1 -1
  101. package/bundled-test-harness/assets/{worker-DHBEBihX.js → worker-9ph9_Lpv.js} +31 -26
  102. package/bundled-test-harness/index.html +8 -8
  103. package/bundled-test-harness/tests/index.html +8 -8
  104. package/bundled-types/host-app/lib/realm-runner/worker.ts +8 -51
  105. package/bundled-types/runtime-common/realm-runner-script.d.ts +3 -0
  106. package/package.json +1 -1
@@ -0,0 +1,121 @@
1
+ // Pretui — StateGlyph: the transcript's state marks, drawn from boxel-icons.
2
+ import Component from '@glimmer/component';
3
+ import type { ComponentLike } from '@glint/template';
4
+ import AlertCircle from '@cardstack/boxel-icons/alert-circle';
5
+ import ArrowRight from '@cardstack/boxel-icons/arrow-right';
6
+ import ArrowUpRight from '@cardstack/boxel-icons/arrow-up-right';
7
+ import Check from '@cardstack/boxel-icons/check';
8
+ import Circle from '@cardstack/boxel-icons/circle';
9
+ import CircleDot from '@cardstack/boxel-icons/circle-dot';
10
+ import CircleHalf from '@cardstack/boxel-icons/circle-half-2';
11
+ import CornerDownRight from '@cardstack/boxel-icons/corner-down-right';
12
+ import Diamond from '@cardstack/boxel-icons/diamond';
13
+ import HelpCircle from '@cardstack/boxel-icons/help-circle';
14
+ import Minus from '@cardstack/boxel-icons/minus';
15
+ import Plus from '@cardstack/boxel-icons/plus';
16
+ import Point from '@cardstack/boxel-icons/point';
17
+ import RefreshCw from '@cardstack/boxel-icons/refresh-cw';
18
+ import Stop from '@cardstack/boxel-icons/player-stop';
19
+ import X from '@cardstack/boxel-icons/x';
20
+
21
+ type Icon = ComponentLike<{ Element: SVGSVGElement }>;
22
+
23
+ /** the marks, by name and by the character the parts have always used,
24
+ * so `@glyph='✓'` and `@glyph='done'` draw the same icon */
25
+ const MARKS: Record<string, Icon> = {
26
+ done: Check as Icon,
27
+ '✓': Check as Icon,
28
+ failed: X as Icon,
29
+ '✕': X as Icon,
30
+ '×': X as Icon,
31
+ current: CircleHalf as Icon,
32
+ '◐': CircleHalf as Icon,
33
+ next: Circle as Icon,
34
+ '○': Circle as Icon,
35
+ needs: CircleDot as Icon,
36
+ '●': CircleDot as Icon,
37
+ retry: RefreshCw as Icon,
38
+ '↻': RefreshCw as Icon,
39
+ skipped: Minus as Icon,
40
+ '–': Minus as Icon,
41
+ '−': Minus as Icon,
42
+ '-': Minus as Icon,
43
+ warning: AlertCircle as Icon,
44
+ '!': AlertCircle as Icon,
45
+ note: Point as Icon,
46
+ '·': Point as Icon,
47
+ ask: HelpCircle as Icon,
48
+ '?': HelpCircle as Icon,
49
+ resolve: Diamond as Icon,
50
+ '◇': Diamond as Icon,
51
+ open: ArrowUpRight as Icon,
52
+ '↗': ArrowUpRight as Icon,
53
+ action: ArrowRight as Icon,
54
+ '→': ArrowRight as Icon,
55
+ steer: CornerDownRight as Icon,
56
+ '↳': CornerDownRight as Icon,
57
+ stop: Stop as Icon,
58
+ '■': Stop as Icon,
59
+ add: Plus as Icon,
60
+ '+': Plus as Icon,
61
+ };
62
+
63
+ /** the icon a mark draws, or undefined for a character with none */
64
+ export function glyphIcon(glyph: string | undefined): Icon | undefined {
65
+ return glyph ? MARKS[glyph] : undefined;
66
+ }
67
+
68
+ export interface StateGlyphSignature {
69
+ Args: {
70
+ /** a mark's name ('done', 'failed', 'current', 'next', 'retry',
71
+ * 'skipped', 'warning', 'note', 'ask', 'resolve', 'open', 'action',
72
+ * 'steer', 'stop', 'add', 'needs') or the character it replaces
73
+ * ('✓', '✕', '◐', '○', '↻', '–', '!', '·', '?', '◇', '↗', '→', '↳', '■',
74
+ * '+', '●'). Any other character is drawn as text */
75
+ glyph?: string;
76
+ /** px. Default 12 */
77
+ size?: number;
78
+ };
79
+ Element: HTMLSpanElement;
80
+ }
81
+
82
+ /**
83
+ * One state mark, as an icon from boxel-icons in the current colour, so
84
+ * every part draws ✓ ✕ ◐ ○ ↻ the same way and a theme recolours them all.
85
+ * Decorative: the state is always said in words beside it.
86
+ */
87
+ export class StateGlyph extends Component<StateGlyphSignature> {
88
+ get icon(): Icon | undefined {
89
+ return glyphIcon(this.args.glyph);
90
+ }
91
+ get size(): string {
92
+ return String(this.args.size ?? 12);
93
+ }
94
+ <template>
95
+ <span
96
+ class='pretui-glyph'
97
+ aria-hidden='true'
98
+ data-glyph={{@glyph}}
99
+ data-test-pretui-state-glyph={{@glyph}}
100
+ ...attributes
101
+ >{{#if this.icon}}<this.icon
102
+ width={{this.size}}
103
+ height={{this.size}}
104
+ class='pretui-glyph-icon'
105
+ />{{else}}{{@glyph}}{{/if}}</span>
106
+ <style scoped>
107
+ @layer PretComponent {
108
+ .pretui-glyph {
109
+ display: inline-grid;
110
+ place-items: center;
111
+ line-height: 1;
112
+ vertical-align: -0.125em;
113
+ }
114
+ .pretui-glyph-icon {
115
+ display: block;
116
+ stroke-width: 2.25;
117
+ }
118
+ }
119
+ </style>
120
+ </template>
121
+ }
@@ -242,7 +242,9 @@ export class StepList extends Component<StepListSignature> {
242
242
  aria-describedby={{if this.showSummary this.summaryId}}
243
243
  data-test-pretui-step-list-items
244
244
  >
245
- {{#each this.views as |step|}}
245
+ {{! keyed by position: views are rebuilt on every render, and a
246
+ step that keeps its state must keep its element }}
247
+ {{#each this.views key='number' as |step|}}
246
248
  <li
247
249
  class='pretui-step'
248
250
  data-state={{step.state}}
@@ -307,15 +309,16 @@ export class StepList extends Component<StepListSignature> {
307
309
  .pretui-steplist-wrap {
308
310
  container-type: inline-size;
309
311
  display: grid;
310
- gap: var(--pretui-step-summary-gap, var(--boxel-sp-2xs));
312
+ gap: var(--pretui-step-summary-gap, var(--boxel-sp-xs));
311
313
  min-width: 0;
312
314
  }
313
315
  .pretui-steplist-summary {
314
316
  justify-self: end;
315
317
  margin: 0;
316
- font-size: var(--boxel-font-size-xs);
318
+ font-size: var(--boxel-caption-font-size);
319
+ line-height: var(--boxel-caption-line-height);
317
320
  font-variant-numeric: tabular-nums;
318
- color: var(--pretui-step-summary-color, var(--muted-foreground));
321
+ color: var(--pretui-step-summary-color, var(--subtle-foreground));
319
322
  }
320
323
  .pretui-steplist {
321
324
  display: flex;
@@ -329,11 +332,11 @@ export class StepList extends Component<StepListSignature> {
329
332
  .pretui-step {
330
333
  display: flex;
331
334
  align-items: center;
332
- gap: var(--boxel-sp-2xs);
335
+ gap: var(--boxel-sp-xs);
333
336
  min-width: 0;
334
- font-size: var(--boxel-font-size-xs);
335
- font-weight: 500;
336
- letter-spacing: var(--boxel-ui-label-letter-spacing);
337
+ font-size: var(--boxel-ui-label-font-size);
338
+ line-height: var(--boxel-ui-label-line-height);
339
+ font-weight: 400;
337
340
  }
338
341
  .pretui-step:not(:last-child) {
339
342
  flex: 1;
@@ -342,6 +345,9 @@ export class StepList extends Component<StepListSignature> {
342
345
  each of those reads a per-state consumer knob first — set
343
346
  --pretui-step-error-marker-bg (etc.) on any ancestor to re-tone one
344
347
  state without touching the rest */
348
+ /* the assistant visual system's rule: a state colours the mark (the
349
+ marker, its ring, its bar) and never the label, done is ink with
350
+ its check, and the primary hue is kept for the one action */
345
351
  .pretui-step[data-state='upcoming'] {
346
352
  --pretui-step-tone: var(
347
353
  --pretui-step-upcoming-tone,
@@ -353,7 +359,7 @@ export class StepList extends Component<StepListSignature> {
353
359
  );
354
360
  --pretui-step-marker-fg: var(
355
361
  --pretui-step-upcoming-marker-fg,
356
- var(--muted-foreground)
362
+ var(--subtle-foreground)
357
363
  );
358
364
  --pretui-step-ring: var(--pretui-step-upcoming-ring, var(--border));
359
365
  --pretui-step-bar-fill: var(
@@ -368,19 +374,19 @@ export class StepList extends Component<StepListSignature> {
368
374
  );
369
375
  --pretui-step-marker-bg: var(
370
376
  --pretui-step-current-marker-bg,
371
- var(--primary)
377
+ var(--foreground)
372
378
  );
373
379
  --pretui-step-marker-fg: var(
374
380
  --pretui-step-current-marker-fg,
375
- var(--primary-foreground)
381
+ var(--card)
376
382
  );
377
383
  --pretui-step-ring: var(
378
384
  --pretui-step-current-ring,
379
- color-mix(in oklch, var(--primary) 70%, var(--border))
385
+ var(--foreground)
380
386
  );
381
387
  --pretui-step-bar-fill: var(
382
388
  --pretui-step-current-bar,
383
- var(--primary)
389
+ var(--foreground)
384
390
  );
385
391
  }
386
392
  .pretui-step[data-state='complete'] {
@@ -390,46 +396,37 @@ export class StepList extends Component<StepListSignature> {
390
396
  );
391
397
  --pretui-step-marker-bg: var(
392
398
  --pretui-step-complete-marker-bg,
393
- color-mix(in oklch, var(--success) 15%, var(--card))
399
+ var(--inset)
394
400
  );
395
401
  --pretui-step-marker-fg: var(
396
402
  --pretui-step-complete-marker-fg,
397
- var(--success-ink)
398
- );
399
- --pretui-step-ring: var(
400
- --pretui-step-complete-ring,
401
- color-mix(in oklch, var(--success) 40%, var(--border))
403
+ var(--foreground)
402
404
  );
405
+ --pretui-step-ring: var(--pretui-step-complete-ring, var(--border));
403
406
  --pretui-step-bar-fill: var(
404
407
  --pretui-step-complete-bar,
405
- var(--success)
408
+ var(--muted-foreground)
406
409
  );
407
410
  }
408
411
  .pretui-step[data-state='error'] {
409
- --pretui-step-tone: var(
410
- --pretui-step-error-tone,
411
- var(--destructive-ink)
412
- );
412
+ --pretui-step-tone: var(--pretui-step-error-tone, var(--foreground));
413
413
  --pretui-step-marker-bg: var(
414
414
  --pretui-step-error-marker-bg,
415
- color-mix(in oklch, var(--destructive) 12%, var(--card))
415
+ var(--inset)
416
416
  );
417
417
  --pretui-step-marker-fg: var(
418
418
  --pretui-step-error-marker-fg,
419
419
  var(--destructive-ink)
420
420
  );
421
- --pretui-step-ring: var(
422
- --pretui-step-error-ring,
423
- color-mix(in oklch, var(--destructive) 45%, var(--border))
424
- );
421
+ --pretui-step-ring: var(--pretui-step-error-ring, var(--destructive));
425
422
  --pretui-step-bar-fill: var(
426
423
  --pretui-step-error-bar,
427
424
  var(--destructive)
428
425
  );
429
426
  }
430
- /* running now: a light info tint with an info-ink play triangle, so it
431
- never reads like 'current' (the primary hue filled solid, with a
432
- number) at a glance */
427
+ /* running now: the live hue on the mark's play triangle and ring, so
428
+ it never reads like 'current' (ink filled solid, with a number) at
429
+ a glance */
433
430
  .pretui-step[data-state='in-progress'] {
434
431
  --pretui-step-tone: var(
435
432
  --pretui-step-in-progress-tone,
@@ -437,22 +434,22 @@ export class StepList extends Component<StepListSignature> {
437
434
  );
438
435
  --pretui-step-marker-bg: var(
439
436
  --pretui-step-in-progress-marker-bg,
440
- color-mix(in oklch, var(--info) 16%, var(--card))
437
+ var(--inset)
441
438
  );
442
439
  --pretui-step-marker-fg: var(
443
440
  --pretui-step-in-progress-marker-fg,
444
- var(--info-ink)
441
+ var(--primary-ink)
445
442
  );
446
443
  --pretui-step-ring: var(
447
444
  --pretui-step-in-progress-ring,
448
- color-mix(in oklch, var(--info) 55%, var(--border))
445
+ var(--primary)
449
446
  );
450
447
  --pretui-step-bar-fill: var(
451
448
  --pretui-step-in-progress-bar,
452
- var(--info)
449
+ var(--primary)
453
450
  );
454
451
  }
455
- /* cannot proceed: warning tone, not destructive — nothing has failed */
452
+ /* cannot proceed: the attention hue, not failed — nothing has failed */
456
453
  .pretui-step[data-state='blocked'] {
457
454
  --pretui-step-tone: var(
458
455
  --pretui-step-blocked-tone,
@@ -460,19 +457,16 @@ export class StepList extends Component<StepListSignature> {
460
457
  );
461
458
  --pretui-step-marker-bg: var(
462
459
  --pretui-step-blocked-marker-bg,
463
- color-mix(in oklch, var(--warning) 14%, var(--card))
460
+ var(--inset)
464
461
  );
465
462
  --pretui-step-marker-fg: var(
466
463
  --pretui-step-blocked-marker-fg,
467
- var(--warning-ink)
468
- );
469
- --pretui-step-ring: var(
470
- --pretui-step-blocked-ring,
471
- color-mix(in oklch, var(--warning) 50%, var(--border))
464
+ var(--attention-ink)
472
465
  );
466
+ --pretui-step-ring: var(--pretui-step-blocked-ring, var(--attention));
473
467
  --pretui-step-bar-fill: var(
474
468
  --pretui-step-blocked-bar,
475
- var(--warning)
469
+ var(--attention)
476
470
  );
477
471
  }
478
472
  .pretui-step-marker {
@@ -482,7 +476,8 @@ export class StepList extends Component<StepListSignature> {
482
476
  height: 1.125rem;
483
477
  border-radius: 50%;
484
478
  flex: none;
485
- font-size: var(--boxel-font-size-2xs);
479
+ font-size: var(--boxel-caption-font-size);
480
+ line-height: var(--boxel-caption-line-height);
486
481
  font-variant-numeric: tabular-nums;
487
482
  background-color: var(--pretui-step-marker-bg);
488
483
  color: var(--pretui-step-marker-fg);
@@ -503,16 +498,19 @@ export class StepList extends Component<StepListSignature> {
503
498
  declares a detail, and reserves a line's height, so a message
504
499
  arriving mid-run does not shove the whole rail down. */
505
500
  .pretui-step-detail {
506
- min-height: 1.35em;
507
- font-size: var(--boxel-font-size-2xs);
501
+ min-height: var(--boxel-caption-line-height);
502
+ font-size: var(--boxel-caption-font-size);
503
+ line-height: var(--boxel-caption-line-height);
508
504
  font-weight: 400;
509
505
  white-space: normal;
510
506
  overflow-wrap: break-word;
511
- color: var(--pretui-step-detail-color, var(--muted-foreground));
507
+ color: var(--pretui-step-detail-color, var(--subtle-foreground));
512
508
  }
509
+ /* a blocked or failed step's reason steps up to ink-2; the mark
510
+ carries the state's hue */
513
511
  .pretui-step[data-state='blocked'] .pretui-step-detail,
514
512
  .pretui-step[data-state='error'] .pretui-step-detail {
515
- color: var(--pretui-step-marker-fg);
513
+ color: var(--muted-foreground);
516
514
  }
517
515
  .pretui-step-connector {
518
516
  flex: 1;
@@ -521,11 +519,7 @@ export class StepList extends Component<StepListSignature> {
521
519
  background-color: var(--border);
522
520
  }
523
521
  .pretui-step[data-state='complete'] .pretui-step-connector {
524
- background-color: color-mix(
525
- in oklch,
526
- var(--success) 45%,
527
- var(--border)
528
- );
522
+ background-color: var(--subtle-foreground);
529
523
  }
530
524
  /* ── track variant ── equal-width bars, caption beneath each. The
531
525
  caption keeps the marker glyph, so 'complete' is carried by shape
@@ -536,7 +530,7 @@ export class StepList extends Component<StepListSignature> {
536
530
  grid-auto-flow: column;
537
531
  grid-auto-columns: minmax(0, 1fr);
538
532
  align-items: start;
539
- gap: var(--pretui-step-track-gap, var(--boxel-sp-3xs));
533
+ gap: var(--pretui-step-track-gap, var(--boxel-sp-4xs));
540
534
  }
541
535
  .pretui-steplist[data-variant='track'] .pretui-step {
542
536
  display: grid;
@@ -545,7 +539,7 @@ export class StepList extends Component<StepListSignature> {
545
539
  'bar bar'
546
540
  'marker label';
547
541
  align-items: center;
548
- gap: var(--boxel-sp-2xs) var(--boxel-sp-3xs);
542
+ gap: var(--boxel-sp-xs) var(--boxel-sp-4xs);
549
543
  }
550
544
  .pretui-steplist[data-variant='track'] .pretui-step-bar {
551
545
  grid-area: bar;
@@ -561,7 +555,15 @@ export class StepList extends Component<StepListSignature> {
561
555
  border-radius: 0;
562
556
  background-color: transparent;
563
557
  box-shadow: none;
564
- font-size: var(--boxel-font-size-2xs);
558
+ }
559
+ /* the track's marker has no fill, so the current step's number,
560
+ which the steps rail writes in --card on its solid disc, takes
561
+ the step's tone instead; a caller's marker-fg knob still wins */
562
+ .pretui-steplist[data-variant='track'] .pretui-step[data-state='current'] {
563
+ --pretui-step-marker-fg: var(
564
+ --pretui-step-current-marker-fg,
565
+ var(--pretui-step-tone)
566
+ );
565
567
  }
566
568
  .pretui-steplist[data-variant='track'] .pretui-step-label {
567
569
  grid-area: label;
@@ -578,7 +580,7 @@ export class StepList extends Component<StepListSignature> {
578
580
  .pretui-steplist[data-variant='steps'] {
579
581
  flex-direction: column;
580
582
  align-items: stretch;
581
- gap: var(--boxel-sp-2xs);
583
+ gap: var(--boxel-sp-xs);
582
584
  }
583
585
  .pretui-steplist[data-variant='steps'] .pretui-step {
584
586
  flex: none;
@@ -598,12 +600,12 @@ export class StepList extends Component<StepListSignature> {
598
600
  .pretui-steplist[data-variant='track'] {
599
601
  grid-auto-flow: row;
600
602
  grid-auto-columns: auto;
601
- gap: var(--boxel-sp-2xs);
603
+ gap: var(--boxel-sp-xs);
602
604
  }
603
605
  .pretui-steplist[data-variant='track'] .pretui-step {
604
606
  grid-template-columns: 2rem auto minmax(0, 1fr);
605
607
  grid-template-areas: 'bar marker label';
606
- gap: var(--boxel-sp-2xs);
608
+ gap: var(--boxel-sp-xs);
607
609
  }
608
610
  }
609
611
  .pretui-vh {