@mcp-b/react-components 0.20.4 → 0.21.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 (134) hide show
  1. package/dist/{AgentActivity-D2SHSGFX.d.ts → AgentActivity-D3OvrC02.d.ts} +14 -1
  2. package/dist/{AgentChat-C-ZyXbJz.d.ts → AgentChat-Dvkn8lce.d.ts} +23 -0
  3. package/dist/AgentChatStartScreen-CvXJBr4y.d.ts +57 -0
  4. package/dist/{ModelSelector-pecWyOFI.js → ModelSelector-CEd8M9eK.js} +14 -7
  5. package/dist/{ThinkChatActivity-CdbL0aoA.d.ts → ThinkChatActivity-FY1VWXgh.d.ts} +8 -7
  6. package/dist/{ThinkChatActivitySummary-D1xOrNrq.d.ts → ThinkChatActivitySummary-kr5fE0wg.d.ts} +14 -5
  7. package/dist/{ToggleGroup-DNd6cDJZ.d.ts → ToggleGroup-BW1jrhAF.d.ts} +10 -0
  8. package/dist/components/Activity.d.ts +33 -17
  9. package/dist/components/Activity.js +39 -27
  10. package/dist/components/AgentActivity.d.ts +1 -1
  11. package/dist/components/AgentActivityPreview.d.ts +1 -1
  12. package/dist/components/AgentActivityPreview.js +2 -2
  13. package/dist/components/AgentChat.d.ts +1 -1
  14. package/dist/components/AgentChat.js +142 -129
  15. package/dist/components/AgentChatStartScreen.d.ts +2 -0
  16. package/dist/components/AgentChatStartScreen.js +82 -0
  17. package/dist/components/Approval.js +2 -4
  18. package/dist/components/BrowserLiveView.js +5 -7
  19. package/dist/components/BrowserReplay.js +5 -4
  20. package/dist/components/BrowserRunPanel.js +1 -1
  21. package/dist/components/ChatGptSignInScreen.js +1 -1
  22. package/dist/components/Conversation.d.ts +1 -22
  23. package/dist/components/Conversation.js +2 -29
  24. package/dist/components/EmptyState.d.ts +46 -0
  25. package/dist/components/EmptyState.js +50 -0
  26. package/dist/components/Kbd.d.ts +32 -0
  27. package/dist/components/Kbd.js +34 -0
  28. package/dist/components/MessageScroller.js +1 -0
  29. package/dist/components/ModelSelector.d.ts +10 -4
  30. package/dist/components/ModelSelector.js +2 -2
  31. package/dist/components/PricingBillingToggle.js +1 -0
  32. package/dist/components/PromptInput.js +3 -2
  33. package/dist/components/Reasoning.js +1 -1
  34. package/dist/components/StatusPill.d.ts +43 -0
  35. package/dist/components/StatusPill.js +35 -0
  36. package/dist/components/Stepper.js +1 -5
  37. package/dist/components/TestResults.js +15 -15
  38. package/dist/components/ThinkChat.d.ts +9 -3
  39. package/dist/components/ThinkChatActivity.d.ts +2 -2
  40. package/dist/components/ThinkChatActivity.js +27 -15
  41. package/dist/components/ThinkChatActivitySummary.d.ts +2 -2
  42. package/dist/components/ThinkChatActivitySummary.js +69 -66
  43. package/dist/components/ThinkExecutionDetail.js +4 -4
  44. package/dist/components/ThinkExecutionRun.js +2 -2
  45. package/dist/components/ThinkExecutionWorkbench.js +5 -4
  46. package/dist/components/ThinkFullAppViewSwitch.d.ts +1 -1
  47. package/dist/components/ThinkRoutine.js +2 -10
  48. package/dist/components/ThinkRoutineBrowser.js +1 -0
  49. package/dist/components/ThinkRoutineRuns.js +3 -2
  50. package/dist/components/ThinkThreadPicker.js +4 -2
  51. package/dist/components/ToggleGroup.d.ts +1 -1
  52. package/dist/components/ToggleGroup.js +54 -7
  53. package/dist/components/ToolInvocation.js +1 -1
  54. package/dist/styles/accordion.css +2 -1
  55. package/dist/styles/activity-header.css +45 -25
  56. package/dist/styles/activity.css +26 -4
  57. package/dist/styles/agent-activity-preview-overlay.css +51 -12
  58. package/dist/styles/agent-activity-preview.css +34 -33
  59. package/dist/styles/agent-attention.css +9 -16
  60. package/dist/styles/agent-chat.css +199 -0
  61. package/dist/styles/agent-connection.css +10 -10
  62. package/dist/styles/alert-dialog.css +5 -2
  63. package/dist/styles/app-top-bar.css +4 -4
  64. package/dist/styles/approval.css +1 -7
  65. package/dist/styles/artifact.css +5 -5
  66. package/dist/styles/attachment-preview.css +1 -1
  67. package/dist/styles/badge.css +1 -1
  68. package/dist/styles/base-ui-motion.css +1 -1
  69. package/dist/styles/base.css +110 -3
  70. package/dist/styles/browser-control-overlay.css +16 -6
  71. package/dist/styles/browser-live-view.css +5 -38
  72. package/dist/styles/browser-replay.css +4 -8
  73. package/dist/styles/browser-run-panel.css +5 -19
  74. package/dist/styles/button.css +4 -2
  75. package/dist/styles/card.css +4 -4
  76. package/dist/styles/chain-of-thought.css +1 -2
  77. package/dist/styles/chatgpt-sign-in-screen.css +9 -7
  78. package/dist/styles/checkbox-group.css +4 -4
  79. package/dist/styles/code-block.css +9 -9
  80. package/dist/styles/commit.css +1 -1
  81. package/dist/styles/context-menu.css +1 -1
  82. package/dist/styles/conversation.css +7 -42
  83. package/dist/styles/description-list.css +2 -2
  84. package/dist/styles/dialog.css +17 -2
  85. package/dist/styles/empty-state.css +48 -0
  86. package/dist/styles/environment-variables.css +8 -8
  87. package/dist/styles/field.css +2 -2
  88. package/dist/styles/fieldset.css +1 -1
  89. package/dist/styles/file-tree.css +1 -1
  90. package/dist/styles/github-motion-mark.css +1 -1
  91. package/dist/styles/index.css +3 -0
  92. package/dist/styles/inline-citation.css +1 -1
  93. package/dist/styles/kbd.css +40 -0
  94. package/dist/styles/label.css +1 -1
  95. package/dist/styles/mcp-server-picker.css +1 -1
  96. package/dist/styles/media-preview-card.css +5 -3
  97. package/dist/styles/menu.css +1 -1
  98. package/dist/styles/message-scroller.css +7 -25
  99. package/dist/styles/message.css +5 -7
  100. package/dist/styles/model-selector.css +5 -8
  101. package/dist/styles/plan.css +1 -1
  102. package/dist/styles/popover.css +1 -1
  103. package/dist/styles/preview-card.css +1 -1
  104. package/dist/styles/pricing-page.css +37 -35
  105. package/dist/styles/prompt-input.css +19 -41
  106. package/dist/styles/queue.css +3 -3
  107. package/dist/styles/recipes.css +92 -9
  108. package/dist/styles/resizable-side-panel.css +1 -1
  109. package/dist/styles/responsive-sidebar-shell.css +5 -6
  110. package/dist/styles/scrollbars.css +32 -3
  111. package/dist/styles/sources.css +2 -2
  112. package/dist/styles/status-pill.css +39 -0
  113. package/dist/styles/stepper.css +2 -2
  114. package/dist/styles/streamdown.css +39 -35
  115. package/dist/styles/subagent-run.css +3 -3
  116. package/dist/styles/switch.css +1 -3
  117. package/dist/styles/tabs.css +1 -1
  118. package/dist/styles/task.css +2 -2
  119. package/dist/styles/terminal.css +6 -6
  120. package/dist/styles/test-results.css +2 -3
  121. package/dist/styles/textarea.css +1 -1
  122. package/dist/styles/theme-mode-control.css +3 -4
  123. package/dist/styles/think-execution-status.css +4 -23
  124. package/dist/styles/think-execution-workbench.css +3 -4
  125. package/dist/styles/think-full-app.css +3 -3
  126. package/dist/styles/think-routine-library.css +22 -24
  127. package/dist/styles/think-thread-picker.css +20 -47
  128. package/dist/styles/toast.css +2 -2
  129. package/dist/styles/toggle-group.css +76 -3
  130. package/dist/styles/tooltip.css +1 -2
  131. package/dist/styles/utilities.css +73 -0
  132. package/dist/styles/web-preview.css +4 -4
  133. package/dist/styles/workspace-explorer.css +6 -8
  134. package/package.json +2 -2
@@ -27,7 +27,7 @@
27
27
 
28
28
  .agent-connect__title-group {
29
29
  display: grid;
30
- gap: 0.2rem;
30
+ gap: var(--sigvelo-spacing-1);
31
31
  min-inline-size: 0;
32
32
  }
33
33
 
@@ -45,17 +45,17 @@
45
45
  margin: 0;
46
46
  color: var(--sigvelo-color-text-muted);
47
47
  font-size: var(--sigvelo-text-compact);
48
- line-height: 1.35;
48
+ line-height: var(--sigvelo-leading-snug);
49
49
  text-wrap: pretty;
50
50
  }
51
51
 
52
52
  .agent-connect__targets {
53
53
  display: grid;
54
54
  grid-template-columns: repeat(4, minmax(0, 1fr));
55
- gap: 0.25rem;
55
+ gap: var(--sigvelo-spacing-1);
56
56
  min-inline-size: 0;
57
57
  margin: 0;
58
- padding: 0.25rem;
58
+ padding: var(--sigvelo-spacing-1);
59
59
  border: var(--sigvelo-border-style) var(--sigvelo-border-width)
60
60
  var(--sigvelo-color-neutral-border-subtle);
61
61
  border-radius: var(--sigvelo-radius-md);
@@ -66,9 +66,9 @@
66
66
  display: inline-flex;
67
67
  align-items: center;
68
68
  justify-content: center;
69
- min-block-size: 1.75rem;
69
+ min-block-size: var(--sigvelo-spacing-7);
70
70
  min-inline-size: 0;
71
- padding: 0 0.45rem;
71
+ padding: 0 var(--sigvelo-spacing-2);
72
72
  border: 0;
73
73
  border-radius: var(--sigvelo-radius-sm);
74
74
  background: transparent;
@@ -77,7 +77,7 @@
77
77
  font: inherit;
78
78
  font-size: var(--sigvelo-text-xs);
79
79
  font-weight: var(--sigvelo-font-weight-semibold);
80
- line-height: 1.15;
80
+ line-height: var(--sigvelo-leading-tight);
81
81
  overflow-wrap: anywhere;
82
82
  text-align: center;
83
83
  }
@@ -93,7 +93,7 @@
93
93
 
94
94
  @media (pointer: coarse) {
95
95
  .agent-connect__target {
96
- min-block-size: 2.5rem;
96
+ min-block-size: var(--sigvelo-spacing-10);
97
97
  padding-inline: var(--sigvelo-spacing-3);
98
98
  }
99
99
  }
@@ -113,8 +113,8 @@
113
113
  background: var(--sigvelo-color-surface);
114
114
  color: var(--sigvelo-color-text);
115
115
  box-shadow:
116
- var(--sigvelo-shadow-xs),
117
- inset 0 0 0 1px var(--sigvelo-color-primary-border-subtle);
116
+ var(--sigvelo-elevation-raised),
117
+ inset 0 0 0 var(--sigvelo-border-width) var(--sigvelo-color-primary-border-subtle);
118
118
  }
119
119
 
120
120
  .agent-connect .code-block__container {
@@ -16,9 +16,12 @@
16
16
  box-shadow: var(--sigvelo-recipe-focus-shadow);
17
17
  }
18
18
 
19
+ /* Matches .dialog__backdrop, including why one 8px radius is the affordable
20
+ version of this effect. */
19
21
  .alert-dialog__backdrop {
20
22
  background-color: var(--sigvelo-color-backdrop);
21
- z-index: 50;
23
+ backdrop-filter: var(--sigvelo-glass-filter);
24
+ z-index: var(--sigvelo-z-overlay);
22
25
  }
23
26
 
24
27
  .alert-dialog__popup {
@@ -28,7 +31,7 @@
28
31
  inset-block-start: 50%;
29
32
  inset-inline-start: 50%;
30
33
  translate: -50% -50%;
31
- z-index: 50;
34
+ z-index: var(--sigvelo-z-overlay);
32
35
  inline-size: calc(100% - var(--sigvelo-control-height-sm));
33
36
  max-inline-size: 28rem;
34
37
  max-block-size: calc(100dvb - var(--sigvelo-control-height-sm));
@@ -81,10 +81,10 @@
81
81
 
82
82
  @media (any-pointer: coarse) {
83
83
  .app-top-bar__button {
84
- inline-size: 2.75rem;
85
- min-inline-size: 2.75rem;
86
- block-size: 2.75rem;
87
- min-block-size: 2.75rem;
84
+ inline-size: var(--sigvelo-spacing-11);
85
+ min-inline-size: var(--sigvelo-spacing-11);
86
+ block-size: var(--sigvelo-spacing-11);
87
+ min-block-size: var(--sigvelo-spacing-11);
88
88
  }
89
89
  }
90
90
 
@@ -12,7 +12,7 @@
12
12
  display: flex;
13
13
  align-items: baseline;
14
14
  gap: var(--sigvelo-spacing-2);
15
- line-height: 1.4;
15
+ line-height: var(--sigvelo-leading-snug);
16
16
  }
17
17
 
18
18
  .approval__question {
@@ -159,12 +159,6 @@
159
159
  gap: var(--sigvelo-spacing-1-5);
160
160
  }
161
161
 
162
- .approval__kbd {
163
- font-family: inherit;
164
- font-size: 0.75em;
165
- opacity: 0.75;
166
- }
167
-
168
162
  .approval__status:not(.sigvelo-visually-hidden) {
169
163
  color: var(--sigvelo-color-danger-text);
170
164
  font-size: var(--sigvelo-text-xs);
@@ -5,9 +5,9 @@
5
5
  font-family: inherit;
6
6
  color: var(--sigvelo-color-text);
7
7
  /* Shadow-led elevation: no perimeter border */
8
- background-color: var(--sigvelo-color-surface);
9
- border-radius: var(--sigvelo-radius-lg, var(--sigvelo-radius-md));
10
- box-shadow: var(--sigvelo-shadow-sm);
8
+ background-color: var(--sigvelo-color-surface-raised);
9
+ border-radius: var(--sigvelo-radius-lg);
10
+ box-shadow: var(--sigvelo-elevation-raised);
11
11
  overflow: hidden;
12
12
  }
13
13
 
@@ -41,7 +41,7 @@
41
41
  margin-block-start: var(--sigvelo-spacing-0-5);
42
42
  font-size: var(--sigvelo-text-compact);
43
43
  color: var(--sigvelo-color-text-muted);
44
- line-height: 1.4;
44
+ line-height: var(--sigvelo-leading-snug);
45
45
  overflow-wrap: anywhere;
46
46
  text-wrap: pretty;
47
47
  }
@@ -63,6 +63,6 @@
63
63
 
64
64
  @media (forced-colors: active) {
65
65
  .artifact {
66
- border: 1px solid CanvasText;
66
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
67
67
  }
68
68
  }
@@ -14,7 +14,7 @@
14
14
  }
15
15
 
16
16
  .attachment-preview__name {
17
- margin-block-start: 0.5rem;
17
+ margin-block-start: var(--sigvelo-spacing-2);
18
18
  font-size: var(--sigvelo-text-xs);
19
19
  color: var(--sigvelo-color-text-muted);
20
20
  text-align: center;
@@ -110,7 +110,7 @@
110
110
 
111
111
  @media (forced-colors: active) {
112
112
  .badge {
113
- border: 1px solid ButtonText;
113
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) ButtonText;
114
114
  }
115
115
 
116
116
  .badge--ghost,
@@ -3,7 +3,7 @@
3
3
  * CSS so all anchored surfaces enter, exit, and respect reduced motion alike.
4
4
  */
5
5
  .base-ui-positioner {
6
- z-index: 50;
6
+ z-index: var(--sigvelo-z-overlay);
7
7
  }
8
8
 
9
9
  .base-ui-backdrop {
@@ -13,11 +13,96 @@
13
13
  margin: 0;
14
14
  }
15
15
 
16
+ /*
17
+ * Corner shape, system-wide.
18
+ *
19
+ * corner-shape has no effect on a square corner, so applying it everywhere
20
+ * costs nothing and means a component gets the shape by having a radius rather
21
+ * than by remembering to opt in. In browsers without corner-shape the token
22
+ * resolves to `round` and nothing changes.
23
+ *
24
+ * The exception is a pill or a circle: a superellipse turns a stadium into a
25
+ * lozenge and a circle into a squircle. Anything using --sigvelo-radius-full or
26
+ * --sigvelo-radius-circle therefore overrides the custom property back to
27
+ * `round` in the block below. audit:css-recipes fails if that list falls out of
28
+ * sync with the stylesheets.
29
+ */
30
+ :where(*) {
31
+ corner-shape: var(--sigvelo-corner-shape);
32
+ }
33
+
34
+ /* sigvelo-pill-shapes:start */
35
+ :where(
36
+ .agent-activity-preview__badge,
37
+ .agent-activity-preview__dismiss,
38
+ .agent-activity-preview__favicons img,
39
+ .agent-activity-preview__unviewed-dot,
40
+ .approval__key,
41
+ .avatar,
42
+ .avatar-group__count,
43
+ .avatar__badge,
44
+ .avatar__fallback,
45
+ .badge,
46
+ .browser-run-panel__tab-glyph,
47
+ .chain-of-thought__search-result,
48
+ .chain-of-thought__step-indicator,
49
+ .codex-model-selector__trigger,
50
+ .codex-model-selector__trigger::before,
51
+ .empty-state__icon,
52
+ .inline-citation__trigger,
53
+ .media-preview-card__play,
54
+ .menu__radio-indicator::before,
55
+ .message-scroller__button,
56
+ .plan__step-indicator,
57
+ .prompt-input__button[data-responsive-label],
58
+ .prompt-input__context-trigger,
59
+ .prompt-input__dictation[data-listening] .prompt-input__dictation-icon::before,
60
+ .prompt-input__permissions-trigger,
61
+ .prompt-input__recording-button,
62
+ .prompt-input__stop,
63
+ .prompt-input__submit,
64
+ .queue__item-indicator,
65
+ .radio,
66
+ .radio__indicator,
67
+ .scroll-area__thumb,
68
+ .slider__indicator,
69
+ .slider__thumb,
70
+ .slider__track,
71
+ .status-pill__dot,
72
+ .stepper__indicator,
73
+ .stepper__separator,
74
+ .stepper__trigger,
75
+ .subagent-run__milestone::before,
76
+ .subagent-run__selector,
77
+ .switch,
78
+ .switch__thumb,
79
+ .task__item::before,
80
+ .test-results__test-status,
81
+ .think-routine-library__routine-status,
82
+ [data-slot="meter-indicator"],
83
+ [data-slot="meter-track"],
84
+ [data-slot="progress-indicator"],
85
+ [data-slot="progress-track"]
86
+ ) {
87
+ --sigvelo-corner-shape: round;
88
+ }
89
+ /* sigvelo-pill-shapes:end */
90
+
91
+ /*
92
+ * Interface text reads at 14px, not at the 16px root.
93
+ *
94
+ * The root stays 16px so 1rem is still 16px and the 4px spacing grid is
95
+ * untouched — the same split the reference bundles use, where the type scale
96
+ * is re-pointed but the spacing base stays at 0.25rem. Components that name a
97
+ * step explicitly are unaffected; this only moves what inherited text lands on,
98
+ * which is where a 16px default reads oversized against 32px rows and 13px
99
+ * control labels.
100
+ */
16
101
  body {
17
102
  position: relative;
18
103
  font-family: var(--sigvelo-font-sans);
19
- font-size: var(--sigvelo-text-base);
20
- line-height: var(--sigvelo-leading-normal);
104
+ font-size: var(--sigvelo-text-sm);
105
+ line-height: var(--sigvelo-text-sm-leading);
21
106
  color: var(--sigvelo-color-text);
22
107
  background-color: var(--sigvelo-color-canvas);
23
108
  -webkit-font-smoothing: antialiased;
@@ -25,7 +110,7 @@ body {
25
110
  }
26
111
 
27
112
  .sigvelo-icon--spinner {
28
- animation: sigvelo-icon-spin var(--sigvelo-duration-slow) linear infinite;
113
+ animation: sigvelo-icon-spin var(--sigvelo-motion-duration-spin) linear infinite;
29
114
  transform-origin: center;
30
115
  }
31
116
 
@@ -35,12 +120,34 @@ body {
35
120
  }
36
121
  }
37
122
 
123
+ /*
124
+ * Canonical "busy/streaming" text-shimmer sweep. Components own the gradient
125
+ * treatment and state gating; they share this keyframe and
126
+ * --sigvelo-motion-duration-shimmer. Shadow-isolated bundles keep a local copy
127
+ * (keyframes do not cross shadow roots), the same as sigvelo-icon-spin.
128
+ */
129
+ @keyframes sigvelo-text-shimmer {
130
+ from {
131
+ background-position: 100% 0;
132
+ }
133
+ to {
134
+ background-position: -100% 0;
135
+ }
136
+ }
137
+
38
138
  @media (prefers-reduced-motion: reduce) {
39
139
  .sigvelo-icon--spinner {
40
140
  animation: none;
41
141
  }
42
142
  }
43
143
 
144
+ /* Headings are short enough for the browser to balance the rag for free;
145
+ balance gives up past a handful of lines, so this costs nothing on the
146
+ occasional long one. */
147
+ :where(h1, h2, h3, h4, h5, h6) {
148
+ text-wrap: balance;
149
+ }
150
+
44
151
  code,
45
152
  kbd,
46
153
  samp,
@@ -2,6 +2,12 @@
2
2
  * Standalone stylesheet for browser-control chrome mounted in a closed shadow
3
3
  * root. It intentionally uses system colors so it remains legible on arbitrary
4
4
  * pages without leaking the full document-level token sheet into the host.
5
+ *
6
+ * Every length here is a literal on purpose. The token layer does not exist
7
+ * inside this shadow root, so a --sigvelo-* reference resolves to nothing and
8
+ * takes its whole declaration with it — silently, and only on a real host page,
9
+ * which is the one place this is hard to notice. Keep the values on the 4px
10
+ * grid by hand; audit:css-recipes checks both halves of that.
5
11
  */
6
12
 
7
13
  :host {
@@ -18,6 +24,10 @@
18
24
  padding: 0;
19
25
  pointer-events: none;
20
26
  position: fixed;
27
+ /* Mirrors --sigvelo-z-host-overlay, deliberately as a literal. This sheet is
28
+ mounted in a closed shadow root on someone else's page, where the token
29
+ layer does not exist; var() would resolve to nothing, z-index would fall
30
+ back to auto, and the overlay would quietly stop being on top. */
21
31
  z-index: 2147483647;
22
32
  }
23
33
 
@@ -69,7 +79,7 @@
69
79
  font:
70
80
  600 12px/1.2 system-ui,
71
81
  sans-serif;
72
- padding: 7px 12px;
82
+ padding: 8px 12px;
73
83
  }
74
84
 
75
85
  :host button:focus-visible {
@@ -85,7 +95,7 @@
85
95
  :host .takeover,
86
96
  :host .owner {
87
97
  background: var(--browser-control-accent);
88
- border: 1px solid var(--browser-control-accent-text);
98
+ border: solid 1px var(--browser-control-accent-text);
89
99
  box-shadow: 0 2px 10px var(--browser-control-shadow);
90
100
  color: var(--browser-control-accent-text);
91
101
  }
@@ -109,7 +119,7 @@
109
119
  left: 10px;
110
120
  max-width: min(360px, 60vw);
111
121
  overflow: hidden;
112
- padding: 7px 12px;
122
+ padding: 8px 12px;
113
123
  pointer-events: none;
114
124
  position: fixed;
115
125
  text-overflow: ellipsis;
@@ -120,7 +130,7 @@
120
130
  :host .banner {
121
131
  align-items: center;
122
132
  background: var(--browser-control-warning);
123
- border: 1px solid var(--browser-control-warning-text);
133
+ border: solid 1px var(--browser-control-warning-text);
124
134
  border-radius: 14px;
125
135
  box-shadow: 0 4px 18px var(--browser-control-shadow);
126
136
  color: var(--browser-control-warning-text);
@@ -131,7 +141,7 @@
131
141
  gap: 10px;
132
142
  left: 50%;
133
143
  max-width: min(720px, calc(100vw - 32px));
134
- padding: 9px 10px 9px 16px;
144
+ padding: 8px 10px 8px 16px;
135
145
  pointer-events: auto;
136
146
  position: fixed;
137
147
  top: 12px;
@@ -147,7 +157,7 @@
147
157
 
148
158
  :host .banner .done,
149
159
  :host .banner .cannot {
150
- border: 1px solid currentcolor;
160
+ border: solid 1px currentcolor;
151
161
  color: inherit;
152
162
  flex-shrink: 0;
153
163
  }
@@ -27,25 +27,17 @@
27
27
  opacity: 1;
28
28
  }
29
29
 
30
- /* The chip itself is the library Badge (sm/destructive) — only the overlay
31
- placement lives here. */
30
+ /* The chip itself is the library StatusPill (sm/destructive/busy) — only the
31
+ overlay placement lives here. */
32
32
  .browser-live-view__badge {
33
33
  position: absolute;
34
34
  inset-block-start: var(--sigvelo-spacing-2);
35
35
  inset-inline-end: var(--sigvelo-spacing-2);
36
36
  z-index: 1;
37
- box-shadow: var(--sigvelo-shadow-sm);
37
+ box-shadow: var(--sigvelo-elevation-raised);
38
38
  pointer-events: none;
39
39
  }
40
40
 
41
- .browser-live-view__badge-dot {
42
- inline-size: var(--sigvelo-spacing-1-5);
43
- block-size: var(--sigvelo-spacing-1-5);
44
- border-radius: 50%;
45
- background-color: currentColor;
46
- animation: browser-live-view-pulse 1.4s ease-in-out infinite;
47
- }
48
-
49
41
  /* Ended state: quiet fill, same footprint so the layout never jumps */
50
42
  .browser-live-view__ended {
51
43
  display: flex;
@@ -91,10 +83,6 @@
91
83
  z-index: 1;
92
84
  }
93
85
 
94
- .browser-live-view__state-spinner {
95
- animation: sigvelo-icon-spin 900ms linear infinite;
96
- }
97
-
98
86
  /* Expand affordance, video-player style: quiet until the box is hovered or
99
87
  the button is focused */
100
88
  .browser-live-view__expand {
@@ -102,8 +90,8 @@
102
90
  inset-block-end: var(--sigvelo-spacing-2);
103
91
  inset-inline-end: var(--sigvelo-spacing-2);
104
92
  z-index: 1;
105
- background-color: var(--sigvelo-color-surface);
106
- box-shadow: var(--sigvelo-shadow-sm);
93
+ background-color: var(--sigvelo-color-surface-raised);
94
+ box-shadow: var(--sigvelo-elevation-floating);
107
95
  opacity: 0;
108
96
  transition:
109
97
  opacity var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
@@ -144,27 +132,6 @@
144
132
  object-fit: contain;
145
133
  }
146
134
 
147
- @keyframes browser-live-view-pulse {
148
- 0%,
149
- 100% {
150
- opacity: 1;
151
- }
152
- 50% {
153
- opacity: 0.4;
154
- }
155
- }
156
-
157
- @media (prefers-reduced-motion: reduce) {
158
- .browser-live-view__badge-dot,
159
- .browser-live-view__state-spinner {
160
- animation: none;
161
- }
162
- }
163
-
164
- :root[data-motion="reduce"] :is(.browser-live-view__badge-dot, .browser-live-view__state-spinner) {
165
- animation: none;
166
- }
167
-
168
135
  @media (hover: none) {
169
136
  .browser-live-view__expand {
170
137
  opacity: 1;
@@ -34,22 +34,18 @@
34
34
  pointer-events: none;
35
35
  }
36
36
 
37
+ /* Positioning only: this overlays the replay stage. The typography is
38
+ .empty-state. */
37
39
  .browser-replay__empty {
38
40
  position: absolute;
39
41
  inset: 0;
40
- display: grid;
41
- place-content: center;
42
- padding: 1rem;
43
- color: var(--sigvelo-color-text-muted);
44
- font-size: var(--sigvelo-text-compact);
45
- text-align: center;
46
42
  }
47
43
 
48
44
  .browser-replay__controls {
49
45
  display: flex;
50
46
  align-items: center;
51
47
  gap: var(--sigvelo-spacing-2-5);
52
- padding-block: 0.5rem;
48
+ padding-block: var(--sigvelo-spacing-2);
53
49
  padding-inline: var(--sigvelo-spacing-3);
54
50
  border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
55
51
  var(--sigvelo-color-neutral-border-subtle);
@@ -184,6 +180,6 @@
184
180
 
185
181
  @media (forced-colors: active) {
186
182
  .browser-replay {
187
- border: 1px solid CanvasText;
183
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
188
184
  }
189
185
  }
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .browser-run-panel .web-preview__nav:has(.browser-run-panel__tabs) {
8
- min-block-size: 3rem;
8
+ min-block-size: var(--sigvelo-spacing-12);
9
9
  gap: 0;
10
10
  padding-block: 0;
11
11
  padding-inline: var(--sigvelo-spacing-1-5);
@@ -49,10 +49,10 @@
49
49
  .browser-run-panel__tab-glyph {
50
50
  display: grid;
51
51
  flex: none;
52
- inline-size: 1.125rem;
53
- block-size: 1.125rem;
52
+ inline-size: var(--sigvelo-control-icon-size-lg);
53
+ block-size: var(--sigvelo-control-icon-size-lg);
54
54
  place-items: center;
55
- border-radius: 50%;
55
+ border-radius: var(--sigvelo-radius-circle);
56
56
  background: var(--sigvelo-color-primary-bg-subtle);
57
57
  color: var(--sigvelo-color-primary-text);
58
58
  font-size: var(--sigvelo-text-3xs);
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  .browser-run-panel__address-bar {
70
- min-block-size: 3rem;
70
+ min-block-size: var(--sigvelo-spacing-12);
71
71
  background: var(--sigvelo-color-surface);
72
72
  }
73
73
 
@@ -101,20 +101,6 @@
101
101
  color: var(--sigvelo-color-danger-text);
102
102
  }
103
103
 
104
- .browser-run-panel__spinner {
105
- animation: sigvelo-icon-spin 900ms linear infinite;
106
- }
107
-
108
- @media (prefers-reduced-motion: reduce) {
109
- .browser-run-panel__spinner {
110
- animation: none;
111
- }
112
- }
113
-
114
- :root[data-motion="reduce"] .browser-run-panel__spinner {
115
- animation: none;
116
- }
117
-
118
104
  @media (forced-colors: active) {
119
105
  .browser-run-panel__tab[data-active] {
120
106
  outline: var(--sigvelo-focus-ring-forced);
@@ -27,7 +27,9 @@
27
27
  color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
28
28
  border-color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
29
29
  box-shadow var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change),
30
- translate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
30
+ /* Release settles with a damped spring; the color transitions above stay on
31
+ the standard curve, where a bounce would just read as a slow fade. */
32
+ translate var(--sigvelo-motion-duration-presence) var(--sigvelo-ease-press);
31
33
  }
32
34
 
33
35
  .button svg {
@@ -185,7 +187,7 @@
185
187
 
186
188
  @media (forced-colors: active) {
187
189
  .button {
188
- border: 1px solid ButtonText;
190
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) ButtonText;
189
191
  }
190
192
 
191
193
  .button--ghost,
@@ -1,10 +1,10 @@
1
1
  .card {
2
- background-color: var(--sigvelo-color-surface);
2
+ background-color: var(--sigvelo-color-surface-raised);
3
3
  color: var(--sigvelo-color-text);
4
- /* Shadow-led elevation: no perimeter border */
4
+ /* Shadow-led elevation: the hairline ring in the stack is the perimeter. */
5
5
  border-radius: var(--sigvelo-radius-lg);
6
6
  padding: var(--sigvelo-spacing-4);
7
- box-shadow: var(--sigvelo-shadow-sm);
7
+ box-shadow: var(--sigvelo-elevation-raised);
8
8
  transition: box-shadow var(--sigvelo-motion-duration-interaction)
9
9
  var(--sigvelo-motion-ease-change);
10
10
  }
@@ -83,7 +83,7 @@
83
83
  }
84
84
 
85
85
  .card--hover:hover {
86
- box-shadow: var(--sigvelo-shadow-md);
86
+ box-shadow: var(--sigvelo-elevation-floating);
87
87
  }
88
88
 
89
89
  .card--hover:focus-visible {
@@ -44,7 +44,6 @@
44
44
  background-color: var(--sigvelo-color-primary-bg-subtle);
45
45
  border-color: var(--sigvelo-color-primary-border-muted);
46
46
  color: var(--sigvelo-color-primary-text);
47
- animation: sigvelo-icon-spin 1.6s linear infinite;
48
47
  }
49
48
 
50
49
  .chain-of-thought__step-body {
@@ -167,7 +166,7 @@
167
166
  @media (forced-colors: active) {
168
167
  .chain-of-thought__step-indicator,
169
168
  .chain-of-thought__search-result {
170
- border: 1px solid CanvasText;
169
+ border: var(--sigvelo-border-style) var(--sigvelo-border-width) CanvasText;
171
170
  }
172
171
 
173
172
  .chain-of-thought__header:focus-visible,
@@ -9,7 +9,7 @@
9
9
  min-inline-size: 17.5rem;
10
10
  display: grid;
11
11
  place-items: center;
12
- padding: clamp(1.25rem, 5vw, 3rem);
12
+ padding: clamp(var(--sigvelo-spacing-5), 5vw, var(--sigvelo-spacing-12));
13
13
  background-color: var(--sigvelo-color-canvas);
14
14
  background-image:
15
15
  linear-gradient(
@@ -56,7 +56,7 @@
56
56
  z-index: 1;
57
57
  isolation: isolate;
58
58
  display: grid;
59
- gap: 1.25rem;
59
+ gap: var(--sigvelo-spacing-5);
60
60
  justify-items: center;
61
61
  text-align: center;
62
62
  }
@@ -73,7 +73,7 @@
73
73
  font-size: var(--sigvelo-text-2xl);
74
74
  font-weight: var(--sigvelo-font-weight-bold);
75
75
  letter-spacing: 0;
76
- line-height: 1.1;
76
+ line-height: var(--sigvelo-leading-tight);
77
77
  }
78
78
 
79
79
  .chatgpt-sign-in__brand p {
@@ -93,8 +93,8 @@
93
93
  }
94
94
 
95
95
  .chatgpt-sign-in__brand-mark :where(img, svg) {
96
- inline-size: 1.35rem;
97
- block-size: 1.35rem;
96
+ inline-size: var(--sigvelo-control-icon-size-xl);
97
+ block-size: var(--sigvelo-control-icon-size-xl);
98
98
  filter: drop-shadow(
99
99
  0 0.25rem 0.5rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 72%)
100
100
  );
@@ -109,7 +109,8 @@
109
109
  overflow: hidden;
110
110
  min-inline-size: min(100%, 16.75rem);
111
111
  box-shadow:
112
- inset 0 0 0 1px color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 84%),
112
+ inset 0 0 0 var(--sigvelo-border-width)
113
+ color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 84%),
113
114
  0 0.75rem 1.5rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 78%);
114
115
  translate: 0;
115
116
  scale: 1;
@@ -153,7 +154,8 @@
153
154
 
154
155
  .chatgpt-sign-in__button:hover:not([data-disabled]) {
155
156
  box-shadow:
156
- inset 0 0 0 1px color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 76%),
157
+ inset 0 0 0 var(--sigvelo-border-width)
158
+ color-mix(in oklab, var(--sigvelo-color-primary-text-on-bg), transparent 76%),
157
159
  0 0.9rem 1.9rem color-mix(in oklab, var(--sigvelo-color-primary-bg), transparent 72%);
158
160
  translate: 0 -0.0625rem;
159
161
  }