@mcp-b/react-components 0.39.0 → 0.41.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/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
- package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
- package/dist/AppTopBar-ZdgmB_Lu.d.ts +97 -0
- package/dist/{CodeBlock-DO4Hdu1R.js → CodeBlock-BjELA-_s.js} +1 -1
- package/dist/{FileTree-DbQMpvxV.js → FileTree-DMYRdT6R.js} +1 -1
- package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
- package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
- package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-DyGHj01E.d.ts} +1 -1
- package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
- package/dist/Toolbar-CBOseBQr.d.ts +152 -0
- package/dist/{WorkspaceFileView-D0r7xnq5.js → WorkspaceFileView-D0yFwoDr.js} +3 -3
- package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
- package/dist/components/agents-sdk/AgentActivity.js +1 -1
- package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
- package/dist/components/agents-sdk/AgentChat.js +41 -18
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
- package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
- package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
- package/dist/components/agents-sdk/BrowserReplay.js +1 -1
- package/dist/components/agents-sdk/BrowserRunPanel.d.ts +72 -25
- package/dist/components/agents-sdk/BrowserRunPanel.js +111 -70
- package/dist/components/agents-sdk/ManagerOffice.d.ts +156 -0
- package/dist/components/agents-sdk/ManagerOffice.js +662 -0
- package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
- package/dist/components/agents-sdk/McpPluginCatalog.js +79 -61
- package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
- package/dist/components/agents-sdk/McpServerPicker.js +2 -2
- package/dist/components/agents-sdk/ModelSelector.js +1 -1
- package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
- package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
- package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
- package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
- package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
- package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
- package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +43 -43
- package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
- package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
- package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -38
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +18 -6
- package/dist/components/agents-sdk/ThinkFullApp.js +112 -144
- package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
- package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +69 -89
- package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
- package/dist/components/agents-sdk/ThinkThreadPicker.js +1 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
- package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
- package/dist/components/ai-sdk/Activity.js +1 -1
- package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
- package/dist/components/ai-sdk/Approval.js +1 -1
- package/dist/components/ai-sdk/Artifact.js +1 -1
- package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
- package/dist/components/ai-sdk/ChainOfThought.js +1 -1
- package/dist/components/ai-sdk/Checkpoint.js +1 -1
- package/dist/components/ai-sdk/CodeBlock.js +1 -1
- package/dist/components/ai-sdk/Conversation.js +1 -1
- package/dist/components/ai-sdk/Goal.js +1 -1
- package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
- package/dist/components/ai-sdk/Message.d.ts +2 -2
- package/dist/components/ai-sdk/Message.js +25 -3
- package/dist/components/ai-sdk/MessageScroller.js +1 -1
- package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
- package/dist/components/ai-sdk/Plan.js +1 -1
- package/dist/components/ai-sdk/PromptInput.js +1 -1
- package/dist/components/ai-sdk/Queue.d.ts +4 -4
- package/dist/components/ai-sdk/Queue.js +6 -15
- package/dist/components/ai-sdk/Reasoning.js +1 -1
- package/dist/components/ai-sdk/Sources.js +1 -1
- package/dist/components/ai-sdk/Task.d.ts +2 -2
- package/dist/components/ai-sdk/Task.js +2 -2
- package/dist/components/extension/ChatGptSignInScreen.d.ts +21 -10
- package/dist/components/extension/ChatGptSignInScreen.js +42 -34
- package/dist/components/extension/CodexModelSelector.js +1 -1
- package/dist/components/extension/ConversationTabPicker.js +1 -1
- package/dist/components/foundations/Avatar.d.ts +1 -10
- package/dist/components/foundations/Avatar.js +1 -10
- package/dist/components/foundations/Checkbox.js +1 -1
- package/dist/components/foundations/CheckboxGroup.js +1 -0
- package/dist/components/foundations/ContextMenu.js +1 -1
- package/dist/components/foundations/LinkButton.d.ts +12 -10
- package/dist/components/foundations/LinkButton.js +15 -11
- package/dist/components/foundations/Menubar.js +1 -1
- package/dist/components/foundations/SearchField.js +1 -1
- package/dist/components/foundations/Select.js +1 -1
- package/dist/components/foundations/Stepper.js +1 -1
- package/dist/components/foundations/Toast.js +1 -1
- package/dist/components/foundations/Toolbar.d.ts +1 -151
- package/dist/components/foundations/icons.d.ts +2 -2
- package/dist/components/foundations/icons.js +2 -2
- package/dist/components/general-purpose/AppTopBar.d.ts +1 -90
- package/dist/components/general-purpose/AppTopBar.js +2 -1
- package/dist/components/general-purpose/Commit.d.ts +2 -2
- package/dist/components/general-purpose/Commit.js +5 -13
- package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
- package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
- package/dist/components/general-purpose/FileTree.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
- package/dist/components/general-purpose/PricingPlanCard.js +15 -14
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +95 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +90 -34
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/Terminal.d.ts +1 -1
- package/dist/components/general-purpose/Terminal.js +4 -12
- package/dist/components/general-purpose/TestResults.d.ts +1 -1
- package/dist/components/general-purpose/TestResults.js +8 -21
- package/dist/components/general-purpose/ThemeModeControl.js +1 -1
- package/dist/components/general-purpose/WebPreview.d.ts +1 -1
- package/dist/components/general-purpose/WebPreview.js +4 -12
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
- package/dist/components/nanites/AgentToolDetail.js +7 -7
- package/dist/components/nanites/NaniteScene.js +11 -11
- package/dist/{copy-button-4YvddK4e.js → copy-button-lys9N_aI.js} +1 -1
- package/dist/{icons-BGZ916hb.d.ts → icons-0corjfxR.d.ts} +6 -16
- package/dist/{icons-B4mGvCvc.js → icons-CVFSeTJn.js} +3 -5
- package/dist/styles/agent-attention.css +5 -5
- package/dist/styles/agent-chat.css +47 -12
- package/dist/styles/agent-tool-detail.css +2 -12
- package/dist/styles/app-icon.css +12 -18
- package/dist/styles/app-top-bar.css +32 -6
- package/dist/styles/avatar.css +6 -22
- package/dist/styles/base.css +2 -8
- package/dist/styles/browser-live-screen.css +38 -0
- package/dist/styles/browser-live-view.css +12 -4
- package/dist/styles/browser-run-panel.css +20 -16
- package/dist/styles/chatgpt-sign-in-screen.css +11 -5
- package/dist/styles/commit.css +24 -1
- package/dist/styles/environment-variables.css +3 -0
- package/dist/styles/index.css +5 -4
- package/dist/styles/manager-office.css +486 -0
- package/dist/styles/mcp-plugin-catalog.css +39 -35
- package/dist/styles/mcp-server-picker.css +1 -1
- package/dist/styles/message.css +41 -18
- package/dist/styles/nanite-scene.css +9 -9
- package/dist/styles/pricing-page.css +12 -8
- package/dist/styles/prompt-input.css +8 -13
- package/dist/styles/recipes.css +1 -57
- package/dist/styles/responsive-sidebar-shell.css +70 -20
- package/dist/styles/subagent-run.css +20 -3
- package/dist/styles/terminal.css +19 -0
- package/dist/styles/test-results.css +10 -1
- package/dist/styles/think-execution-status.css +8 -24
- package/dist/styles/think-execution-workbench.css +98 -105
- package/dist/styles/think-full-app.css +81 -185
- package/dist/styles/think-routine-library.css +0 -40
- package/dist/styles/think-thread-picker.css +8 -3
- package/dist/styles/transition-surface.css +7 -8
- package/dist/styles/utilities.css +42 -0
- package/dist/styles/web-preview.css +28 -5
- package/dist/styles/workspace-explorer.css +4 -23
- package/dist/styles/workspace-mount-manager.css +22 -0
- package/package.json +37 -35
- package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
- package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
- package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
- package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
- package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
- package/dist/components/foundations/Badge.d.ts +0 -62
- package/dist/components/foundations/Badge.js +0 -55
- package/dist/components/foundations/StatusPill.d.ts +0 -43
- package/dist/components/foundations/StatusPill.js +0 -35
- package/dist/components/general-purpose/Shell.d.ts +0 -149
- package/dist/components/general-purpose/Shell.js +0 -116
- package/dist/styles/agent-activity-preview-overlay.css +0 -169
- package/dist/styles/agent-activity-preview.css +0 -209
- package/dist/styles/badge.css +0 -120
- package/dist/styles/shell.css +0 -122
- package/dist/styles/status-pill.css +0 -39
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One quiet canvas and one pane, like the workspace slot it lives in: the run
|
|
3
|
+
* list is a gap-separated roster (routine-library anatomy), and a selected
|
|
4
|
+
* run replaces it with a mini-page — eyebrow, title, hairline fact rows —
|
|
5
|
+
* the way opening a file replaces the workspace browser.
|
|
6
|
+
*/
|
|
1
7
|
.think-execution-workbench {
|
|
8
|
+
position: relative;
|
|
2
9
|
min-inline-size: 0;
|
|
3
10
|
min-block-size: 0;
|
|
4
11
|
display: flex;
|
|
5
12
|
flex: 1;
|
|
6
13
|
flex-direction: column;
|
|
14
|
+
block-size: 100%;
|
|
7
15
|
overflow: hidden;
|
|
8
16
|
container-type: inline-size;
|
|
9
|
-
|
|
10
|
-
in oklab,
|
|
11
|
-
var(--sigvelo-color-canvas),
|
|
12
|
-
var(--sigvelo-color-primary-bg-subtle) 18%
|
|
13
|
-
);
|
|
17
|
+
/* No paint: the workbench card (or whatever plane hosts it) shows through. */
|
|
14
18
|
color: var(--sigvelo-color-text);
|
|
15
19
|
}
|
|
16
20
|
|
|
@@ -23,24 +27,32 @@
|
|
|
23
27
|
font: inherit;
|
|
24
28
|
}
|
|
25
29
|
|
|
30
|
+
/* The routine library's floating error notice overlays rather than
|
|
31
|
+
reflows, so a failed action never shoves the roster around. */
|
|
26
32
|
.think-execution-workbench__error {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
position: absolute;
|
|
34
|
+
z-index: 2;
|
|
35
|
+
inset-block-start: var(--sigvelo-spacing-3);
|
|
36
|
+
inset-inline: 50% auto;
|
|
37
|
+
max-inline-size: min(32rem, calc(100% - 2rem));
|
|
38
|
+
padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
|
|
31
39
|
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
32
40
|
var(--sigvelo-color-danger-border-subtle);
|
|
33
41
|
border-radius: var(--sigvelo-radius-sm);
|
|
34
|
-
|
|
42
|
+
translate: -50% 0;
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
gap: var(--sigvelo-spacing-2);
|
|
35
46
|
color: var(--sigvelo-color-danger-text);
|
|
36
|
-
|
|
47
|
+
background: var(--sigvelo-color-danger-bg-subtle);
|
|
48
|
+
font-size: var(--sigvelo-text-compact);
|
|
37
49
|
}
|
|
38
50
|
|
|
39
51
|
.think-execution-workbench__content {
|
|
40
52
|
min-block-size: 0;
|
|
41
53
|
display: grid;
|
|
42
54
|
flex: 1;
|
|
43
|
-
grid-template-rows: minmax(
|
|
55
|
+
grid-template-rows: minmax(0, 1fr);
|
|
44
56
|
overflow: hidden;
|
|
45
57
|
}
|
|
46
58
|
|
|
@@ -51,25 +63,13 @@
|
|
|
51
63
|
overflow: auto;
|
|
52
64
|
}
|
|
53
65
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
/* Only the container concerns — the block inside is `EmptyState`, and this
|
|
62
|
-
component is documented as reusable outside the workbench, so it does not
|
|
63
|
-
reach for a workbench class to fill itself. */
|
|
64
|
-
.think-execution-detail--empty {
|
|
65
|
-
align-content: center;
|
|
66
|
-
justify-items: center;
|
|
67
|
-
min-block-size: 12rem;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.think-execution-workbench__run-list {
|
|
71
|
-
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
72
|
-
var(--sigvelo-color-neutral-border-subtle);
|
|
66
|
+
/* Roster column cap (the Ploy number) so full-page routes don't stretch rows
|
|
67
|
+
across the whole viewport; narrow hosts are unaffected. */
|
|
68
|
+
.think-execution-workbench__list-header,
|
|
69
|
+
.think-execution-workbench__list,
|
|
70
|
+
.think-execution-workbench__empty {
|
|
71
|
+
inline-size: min(100%, 50rem);
|
|
72
|
+
margin-inline: auto;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.think-execution-workbench__list-header {
|
|
@@ -88,17 +88,21 @@
|
|
|
88
88
|
line-height: var(--sigvelo-leading-tight);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
/* Same hairline-bounded band the routine library gives its empty run section. */
|
|
91
92
|
.think-execution-workbench__empty {
|
|
92
|
-
--sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-
|
|
93
|
+
--sigvelo-recipe-empty-state-padding-block: var(--sigvelo-spacing-4);
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
border-block: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
96
|
+
var(--sigvelo-color-neutral-border-subtle);
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
.think-execution-workbench__list {
|
|
98
|
-
margin
|
|
99
|
-
|
|
100
|
+
/* Block only — the roster-cap rule above owns margin-inline. */
|
|
101
|
+
margin-block: 0;
|
|
102
|
+
padding: 0 var(--sigvelo-spacing-2) var(--sigvelo-spacing-2);
|
|
100
103
|
list-style: none;
|
|
101
104
|
display: grid;
|
|
105
|
+
gap: var(--sigvelo-spacing-1);
|
|
102
106
|
}
|
|
103
107
|
|
|
104
108
|
.think-execution-workbench__list > li {
|
|
@@ -106,114 +110,103 @@
|
|
|
106
110
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
107
111
|
align-items: center;
|
|
108
112
|
min-inline-size: 0;
|
|
109
|
-
border-radius: var(--sigvelo-radius-
|
|
113
|
+
border-radius: var(--sigvelo-radius-md);
|
|
110
114
|
transition: background-color var(--sigvelo-motion-duration-interaction)
|
|
111
115
|
var(--sigvelo-motion-ease-change);
|
|
112
116
|
}
|
|
113
117
|
|
|
114
|
-
.think-execution-workbench__list > li:not(:last-child) {
|
|
115
|
-
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
116
|
-
var(--sigvelo-color-neutral-border-subtle);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.think-execution-workbench__list > li[data-selected="true"] {
|
|
120
|
-
background: color-mix(
|
|
121
|
-
in oklab,
|
|
122
|
-
var(--sigvelo-color-primary-bg-subtle),
|
|
123
|
-
var(--sigvelo-color-surface) 70%
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
118
|
.think-execution-workbench__run {
|
|
128
119
|
min-inline-size: 0;
|
|
129
|
-
min-block-size:
|
|
120
|
+
min-block-size: var(--sigvelo-spacing-14);
|
|
130
121
|
display: flex;
|
|
131
|
-
padding
|
|
132
|
-
padding-inline: var(--sigvelo-spacing-1);
|
|
122
|
+
padding: var(--sigvelo-spacing-2);
|
|
133
123
|
border-radius: inherit;
|
|
134
124
|
text-align: start;
|
|
135
125
|
}
|
|
136
126
|
|
|
137
|
-
.think-execution-workbench__detail-header code {
|
|
138
|
-
min-inline-size: 0;
|
|
139
|
-
overflow: hidden;
|
|
140
|
-
color: var(--sigvelo-color-text-muted);
|
|
141
|
-
overflow-wrap: anywhere;
|
|
142
|
-
font-family: var(--sigvelo-font-mono);
|
|
143
|
-
font-size: var(--sigvelo-text-xs);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
127
|
.think-execution-workbench__run-actions {
|
|
147
128
|
inline-size: var(--sigvelo-control-height-sm);
|
|
148
129
|
min-block-size: var(--sigvelo-control-height-sm);
|
|
149
130
|
margin-inline-end: var(--sigvelo-spacing-1);
|
|
150
131
|
}
|
|
151
132
|
|
|
152
|
-
|
|
133
|
+
/* The detail pane owns scrolling; the mini-page inside centres itself. */
|
|
134
|
+
.think-execution-detail {
|
|
153
135
|
display: grid;
|
|
154
136
|
align-content: start;
|
|
155
|
-
gap: var(--sigvelo-spacing-
|
|
156
|
-
padding
|
|
157
|
-
|
|
137
|
+
gap: var(--sigvelo-spacing-4);
|
|
138
|
+
/* The routine library's single-column measure and page padding. */
|
|
139
|
+
inline-size: min(100%, 46rem);
|
|
140
|
+
min-inline-size: 0;
|
|
141
|
+
margin-inline: auto;
|
|
142
|
+
padding: clamp(var(--sigvelo-spacing-4), 3vw, var(--sigvelo-spacing-8));
|
|
158
143
|
}
|
|
159
144
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
145
|
+
/* Only the container concerns — the block inside is `EmptyState`, and this
|
|
146
|
+
component is documented as reusable outside the workbench, so it does not
|
|
147
|
+
reach for a workbench class to fill itself. */
|
|
148
|
+
.think-execution-detail--empty {
|
|
149
|
+
align-content: center;
|
|
150
|
+
justify-items: center;
|
|
151
|
+
min-block-size: 12rem;
|
|
152
|
+
block-size: 100%;
|
|
166
153
|
}
|
|
167
154
|
|
|
168
|
-
.think-execution-
|
|
155
|
+
.think-execution-detail__header {
|
|
169
156
|
min-inline-size: 0;
|
|
157
|
+
display: grid;
|
|
158
|
+
gap: var(--sigvelo-spacing-1);
|
|
170
159
|
}
|
|
171
160
|
|
|
172
|
-
.think-execution-
|
|
173
|
-
|
|
174
|
-
display: flex;
|
|
175
|
-
align-items: center;
|
|
176
|
-
gap: var(--sigvelo-spacing-2);
|
|
161
|
+
.think-execution-detail__eyebrow {
|
|
162
|
+
margin: 0;
|
|
177
163
|
color: var(--sigvelo-color-text-muted);
|
|
178
164
|
font-size: var(--sigvelo-text-xs);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
.think-execution-workbench__detail-status > div {
|
|
183
|
-
display: grid;
|
|
184
|
-
gap: var(--sigvelo-spacing-0-5);
|
|
165
|
+
font-weight: var(--sigvelo-font-weight-semibold);
|
|
166
|
+
letter-spacing: 0.06em;
|
|
167
|
+
text-transform: uppercase;
|
|
185
168
|
}
|
|
186
169
|
|
|
187
|
-
.think-execution-
|
|
188
|
-
|
|
189
|
-
|
|
170
|
+
.think-execution-detail__heading {
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
justify-content: space-between;
|
|
174
|
+
flex-wrap: wrap;
|
|
175
|
+
gap: var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
|
|
190
176
|
}
|
|
191
177
|
|
|
192
|
-
.think-execution-
|
|
178
|
+
.think-execution-detail__heading h3 {
|
|
179
|
+
min-inline-size: 0;
|
|
193
180
|
margin: 0;
|
|
194
|
-
|
|
181
|
+
overflow-wrap: anywhere;
|
|
182
|
+
font-size: var(--sigvelo-text-lg);
|
|
195
183
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
184
|
+
letter-spacing: -0.025em;
|
|
196
185
|
line-height: var(--sigvelo-leading-tight);
|
|
197
186
|
}
|
|
198
187
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
188
|
+
.think-execution-detail__header code {
|
|
189
|
+
min-inline-size: 0;
|
|
190
|
+
overflow: hidden;
|
|
191
|
+
color: var(--sigvelo-color-text-muted);
|
|
192
|
+
overflow-wrap: anywhere;
|
|
193
|
+
font-family: var(--sigvelo-font-mono);
|
|
194
|
+
font-size: var(--sigvelo-text-xs);
|
|
195
|
+
}
|
|
204
196
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
197
|
+
.think-execution-detail__error {
|
|
198
|
+
margin: 0;
|
|
199
|
+
padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-2-5);
|
|
200
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
201
|
+
var(--sigvelo-color-danger-border-subtle);
|
|
202
|
+
border-radius: var(--sigvelo-radius-sm);
|
|
203
|
+
background: var(--sigvelo-color-danger-bg-subtle);
|
|
204
|
+
color: var(--sigvelo-color-danger-text);
|
|
205
|
+
font-size: var(--sigvelo-text-compact);
|
|
206
|
+
line-height: var(--sigvelo-leading-relaxed);
|
|
207
|
+
overflow-wrap: anywhere;
|
|
210
208
|
}
|
|
211
209
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
|
|
215
|
-
background: canvas;
|
|
216
|
-
color: canvastext;
|
|
217
|
-
box-shadow: none;
|
|
218
|
-
}
|
|
210
|
+
.think-execution-detail__facts {
|
|
211
|
+
font-size: var(--sigvelo-text-compact);
|
|
219
212
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
/* The app names the shell's own container so bar rules below can measure the
|
|
2
|
+
whole app, rail included — the bar lives in the shell's row, outside the
|
|
3
|
+
`.think-full-app` container. */
|
|
4
|
+
.think-full-app-shell {
|
|
2
5
|
container-name: responsive-sidebar-shell think-full-app;
|
|
3
6
|
}
|
|
4
7
|
|
|
5
8
|
.think-full-app {
|
|
6
|
-
--think-full-app-header-block-size: calc(
|
|
7
|
-
var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2) +
|
|
8
|
-
env(safe-area-inset-top, 0px)
|
|
9
|
-
);
|
|
10
|
-
|
|
11
9
|
position: relative;
|
|
12
10
|
container: think-full-app / inline-size;
|
|
13
11
|
block-size: 100%;
|
|
@@ -15,84 +13,67 @@
|
|
|
15
13
|
min-inline-size: 0;
|
|
16
14
|
display: grid;
|
|
17
15
|
grid-template-rows: minmax(0, 1fr);
|
|
18
|
-
background: var(--sigvelo-color-surface
|
|
16
|
+
background: var(--sigvelo-color-surface);
|
|
19
17
|
color: var(--sigvelo-color-text);
|
|
20
18
|
font-family: inherit;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
.think-full-app[data-has-workbench-topbar="true"] {
|
|
24
|
-
grid-template-rows: var(--think-full-app-header-block-size) minmax(0, 1fr);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
21
|
.think-full-app__view-scope {
|
|
28
22
|
grid-column: 1;
|
|
29
23
|
grid-row: 1;
|
|
30
24
|
min-inline-size: 0;
|
|
31
25
|
min-block-size: 0;
|
|
32
26
|
display: grid;
|
|
33
|
-
|
|
27
|
+
/* Conversation first and sized, workbench second and greedy. */
|
|
28
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
34
29
|
grid-template-rows: minmax(0, 1fr);
|
|
35
|
-
|
|
36
|
-
transition: grid-template-columns var(--sigvelo-motion-duration-layout)
|
|
37
|
-
var(--sigvelo-motion-ease-change);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.think-full-app[data-has-workbench-topbar="false"] > .think-full-app__view-scope {
|
|
41
|
-
margin-block-start: var(--sigvelo-spacing-2);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* ResponsiveSidebarShell owns the outer material when a thread sidebar is
|
|
45
|
-
present. Flatten the nested app so the hierarchy still has exactly one
|
|
46
|
-
raised primary plane. */
|
|
47
|
-
.think-full-app[data-has-thread-sidebar="true"] {
|
|
48
|
-
background: var(--sigvelo-color-surface);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.think-full-app[data-has-thread-sidebar="true"] > .think-full-app__view-scope {
|
|
52
|
-
margin: 0;
|
|
53
|
-
border-radius: 0;
|
|
54
|
-
box-shadow: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.think-full-app[data-has-workbench-topbar="true"] > .think-full-app__view-scope {
|
|
58
|
-
grid-row: 2;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.think-full-app[data-has-workbench="false"] > .think-full-app__view-scope {
|
|
62
|
-
grid-template-columns: minmax(0, 1fr);
|
|
30
|
+
margin: var(--sigvelo-spacing-3);
|
|
63
31
|
}
|
|
64
32
|
|
|
65
33
|
.think-full-app__mobile-view-switch {
|
|
66
34
|
display: none;
|
|
67
35
|
}
|
|
68
36
|
|
|
69
|
-
.think-full-app__thread-trigger {
|
|
70
|
-
display: none;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
37
|
.think-full-app__view-switch {
|
|
74
38
|
gap: var(--sigvelo-spacing-0-5);
|
|
75
39
|
padding: 0;
|
|
76
40
|
background: transparent;
|
|
77
41
|
}
|
|
78
42
|
|
|
79
|
-
.think-full-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
43
|
+
.think-full-app__app-bar {
|
|
44
|
+
/* Line the bar's controls up with the plane inset below it. */
|
|
45
|
+
padding-inline: var(--sigvelo-spacing-3);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Without host chrome the bar carries only the compact view switch, and that
|
|
49
|
+
is hidden above the breakpoint — reserve no room for it. */
|
|
50
|
+
.think-full-app__app-bar[data-app-chrome="false"] {
|
|
51
|
+
display: none;
|
|
84
52
|
}
|
|
85
53
|
|
|
86
54
|
.think-full-app__chat-surface {
|
|
87
55
|
grid-column: 1;
|
|
88
56
|
grid-row: 1;
|
|
57
|
+
/* The conversation carries the resize, so the workbench can simply take the
|
|
58
|
+
rest of the row. */
|
|
59
|
+
inline-size: var(--resizable-side-panel-size, 24.5rem);
|
|
89
60
|
min-inline-size: 0;
|
|
90
61
|
min-block-size: 0;
|
|
91
62
|
display: grid;
|
|
92
63
|
grid-template-columns: minmax(0, 1fr);
|
|
93
64
|
grid-template-rows: minmax(0, 1fr);
|
|
94
65
|
overflow: hidden;
|
|
95
|
-
|
|
66
|
+
transition: inline-size var(--sigvelo-motion-duration-layout) var(--sigvelo-motion-ease-change);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* A length rather than `auto`: closing has to interpolate from the open width,
|
|
70
|
+
and a length-to-auto transition never finishes. */
|
|
71
|
+
.think-full-app[data-has-workbench="false"] .think-full-app__chat-surface {
|
|
72
|
+
inline-size: calc(100cqi - var(--sigvelo-spacing-3) * 2);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
76
|
+
transition: none;
|
|
96
77
|
}
|
|
97
78
|
|
|
98
79
|
.think-full-app__chat,
|
|
@@ -110,6 +91,8 @@
|
|
|
110
91
|
grid-template-rows: minmax(0, 1fr) auto;
|
|
111
92
|
}
|
|
112
93
|
|
|
94
|
+
/* Transparent column: the aside positions the plane, it is not a material of
|
|
95
|
+
its own. */
|
|
113
96
|
.think-full-app__aside {
|
|
114
97
|
grid-column: 2;
|
|
115
98
|
grid-row: 1;
|
|
@@ -117,26 +100,16 @@
|
|
|
117
100
|
min-block-size: 0;
|
|
118
101
|
display: grid;
|
|
119
102
|
grid-template-rows: minmax(0, 1fr);
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
background: color-mix(
|
|
124
|
-
in oklab,
|
|
125
|
-
var(--sigvelo-color-canvas),
|
|
126
|
-
var(--sigvelo-color-primary-bg-subtle) 18%
|
|
127
|
-
);
|
|
103
|
+
/* A margin, not a column gap: with no panels at all the aside is absent and
|
|
104
|
+
a gap would still hold its track open. */
|
|
105
|
+
margin-inline-start: var(--sigvelo-spacing-3);
|
|
128
106
|
}
|
|
129
107
|
|
|
130
108
|
.think-full-app__resizer {
|
|
131
109
|
z-index: 5;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
inset-block-start: var(--think-full-app-header-block-size);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
body.is-resizing-side-panel .think-full-app__view-scope {
|
|
139
|
-
transition: none;
|
|
110
|
+
/* Centre the handle in the column gap rather than on the grid edge: the
|
|
111
|
+
conversation is inset by the gutter and the gap sits beyond its edge. */
|
|
112
|
+
translate: calc(var(--sigvelo-spacing-3) * 1.5) 0;
|
|
140
113
|
}
|
|
141
114
|
|
|
142
115
|
.think-full-app__workbench-slot,
|
|
@@ -150,12 +123,11 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
150
123
|
overflow: hidden;
|
|
151
124
|
}
|
|
152
125
|
|
|
153
|
-
.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
);
|
|
126
|
+
/* The app's one raised plane. Panels fill it and never draw a second edge. */
|
|
127
|
+
.think-full-app__workbench-slot {
|
|
128
|
+
border-radius: var(--sigvelo-radius-lg);
|
|
129
|
+
background: var(--sigvelo-color-surface-raised);
|
|
130
|
+
box-shadow: var(--sigvelo-elevation-floating);
|
|
159
131
|
}
|
|
160
132
|
|
|
161
133
|
/* The panel stands in for itself while its first read is in flight, so the
|
|
@@ -164,44 +136,59 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
164
136
|
justify-content: center;
|
|
165
137
|
}
|
|
166
138
|
|
|
167
|
-
.think-full-app__workbench.workspace-explorer {
|
|
168
|
-
border: 0;
|
|
169
|
-
border-radius: 0;
|
|
170
|
-
box-shadow: none;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.think-full-app__workbench-view-switch {
|
|
174
|
-
margin-inline-start: auto;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
139
|
.think-full-app__workbench-panel {
|
|
178
140
|
padding: 0;
|
|
179
141
|
}
|
|
180
142
|
|
|
143
|
+
/* Host panels fill the plane rather than sizing to their content. Only visible
|
|
144
|
+
once the plane became the wide side of the split. */
|
|
145
|
+
.think-full-app__workbench-panel > * {
|
|
146
|
+
flex: 1;
|
|
147
|
+
min-block-size: 0;
|
|
148
|
+
}
|
|
149
|
+
|
|
181
150
|
.think-full-app__workbench-panel:focus-visible {
|
|
182
151
|
outline: 2px solid var(--sigvelo-color-focus);
|
|
183
152
|
outline-offset: -2px;
|
|
184
153
|
}
|
|
185
154
|
|
|
186
155
|
@container think-full-app (inline-size <= 56rem) {
|
|
156
|
+
/* A side panel or phone has no desktop chrome around the app, so an inset
|
|
157
|
+
plane reads as a card in a frame. Flatten to one edge-to-edge surface,
|
|
158
|
+
app bar included — the frame never shows. */
|
|
187
159
|
.think-full-app__view-scope {
|
|
188
160
|
grid-template-columns: minmax(0, 1fr);
|
|
161
|
+
margin: 0;
|
|
162
|
+
overflow: hidden;
|
|
189
163
|
}
|
|
190
164
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
165
|
+
.think-full-app__aside {
|
|
166
|
+
margin-inline-start: 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* Compact swaps between the two rather than seating them side by side, so
|
|
170
|
+
neither carries the desktop split's width. The extra class matches the
|
|
171
|
+
closed-workbench rule this has to beat. */
|
|
172
|
+
.think-full-app .think-full-app__chat-surface {
|
|
173
|
+
inline-size: auto;
|
|
174
|
+
transition: none;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* .think-full-app__workbench needs the extra class: panels that paint
|
|
178
|
+
themselves raised are defined after this stylesheet. */
|
|
179
|
+
.think-full-app__workbench-slot,
|
|
180
|
+
.think-full-app .think-full-app__workbench {
|
|
197
181
|
border-radius: 0;
|
|
182
|
+
background: var(--sigvelo-color-surface);
|
|
198
183
|
box-shadow: none;
|
|
199
184
|
}
|
|
200
185
|
|
|
201
|
-
.think-full-
|
|
202
|
-
|
|
186
|
+
.think-full-app__app-bar[data-app-chrome="false"] {
|
|
187
|
+
display: grid;
|
|
203
188
|
}
|
|
204
189
|
|
|
190
|
+
/* One switch at a time: compact swaps the whole view rather than opening a
|
|
191
|
+
panel beside the conversation. */
|
|
205
192
|
.think-full-app__workbench-view-switch {
|
|
206
193
|
display: none;
|
|
207
194
|
}
|
|
@@ -210,40 +197,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
210
197
|
display: flex;
|
|
211
198
|
}
|
|
212
199
|
|
|
213
|
-
.think-full-app__app-title {
|
|
214
|
-
display: none;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
.think-full-app__thread-trigger {
|
|
218
|
-
inline-size: auto;
|
|
219
|
-
max-inline-size: min(22rem, 58vw);
|
|
220
|
-
min-inline-size: 0;
|
|
221
|
-
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
222
|
-
display: inline-flex;
|
|
223
|
-
gap: var(--sigvelo-density-compact-control-gap);
|
|
224
|
-
padding-inline: var(--sigvelo-density-compact-control-padding-inline);
|
|
225
|
-
border-radius: var(--sigvelo-radius-md);
|
|
226
|
-
color: var(--sigvelo-color-text);
|
|
227
|
-
font-size: var(--sigvelo-density-compact-control-font-size);
|
|
228
|
-
font-weight: var(--sigvelo-font-weight-semibold);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
.think-full-app__thread-trigger-title {
|
|
232
|
-
min-inline-size: 0;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.think-full-app__thread-trigger > svg {
|
|
236
|
-
flex: 0 0 auto;
|
|
237
|
-
inline-size: var(--sigvelo-density-compact-control-icon-size);
|
|
238
|
-
block-size: var(--sigvelo-density-compact-control-icon-size);
|
|
239
|
-
color: var(--sigvelo-color-text-muted);
|
|
240
|
-
transition: rotate var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
.think-full-app__thread-trigger[aria-expanded="true"] > svg {
|
|
244
|
-
rotate: 180deg;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
200
|
.think-full-app__chat-surface,
|
|
248
201
|
.think-full-app__workbench-slot,
|
|
249
202
|
.think-full-app__workbench {
|
|
@@ -261,7 +214,6 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
261
214
|
|
|
262
215
|
.think-full-app__aside {
|
|
263
216
|
display: contents;
|
|
264
|
-
border-inline-start: 0;
|
|
265
217
|
}
|
|
266
218
|
|
|
267
219
|
.think-full-app__resizer {
|
|
@@ -277,63 +229,8 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
277
229
|
--agent-chat-content-max-inline-size: 34rem;
|
|
278
230
|
}
|
|
279
231
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
.think-full-app .think-full-app__chat .agent-chat__transcript-content {
|
|
285
|
-
--message-scroller-virtual-block-start: calc(
|
|
286
|
-
var(--sigvelo-spacing-5) + env(safe-area-inset-top, 0px)
|
|
287
|
-
);
|
|
288
|
-
|
|
289
|
-
padding-block-start: var(--message-scroller-virtual-block-start);
|
|
290
|
-
/* Matches Codex's side-panel gutter (--padding-panel: 12px). */
|
|
291
|
-
padding-inline: var(--sigvelo-spacing-3);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/* The base composer scrim already dissolves the transcript above the box. */
|
|
295
|
-
.think-full-app .agent-chat__composer {
|
|
296
|
-
padding-block: var(--sigvelo-spacing-2)
|
|
297
|
-
max(var(--sigvelo-spacing-2), env(safe-area-inset-bottom, 0px));
|
|
298
|
-
padding-inline: max(var(--sigvelo-spacing-3), env(safe-area-inset-left, 0px))
|
|
299
|
-
max(var(--sigvelo-spacing-3), env(safe-area-inset-right, 0px));
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
.think-full-app .prompt-input {
|
|
303
|
-
gap: var(--sigvelo-spacing-1);
|
|
304
|
-
padding-block: var(--sigvelo-spacing-2);
|
|
305
|
-
padding-inline: var(--sigvelo-spacing-2-5);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
.think-full-app .message__content {
|
|
309
|
-
line-height: var(--sigvelo-leading-normal);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
.think-full-app .message[data-from="user"] .message__content {
|
|
313
|
-
padding-block: var(--sigvelo-spacing-1-5);
|
|
314
|
-
padding-inline: var(--sigvelo-spacing-2-5);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.think-full-app .workspace-explorer__header {
|
|
318
|
-
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
319
|
-
padding-block: 0;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
.think-full-app .workspace-explorer__filter {
|
|
323
|
-
margin-block: var(--sigvelo-spacing-1);
|
|
324
|
-
margin-inline: var(--sigvelo-spacing-2);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
@container responsive-sidebar-shell (inline-size <= 56rem) {
|
|
329
|
-
.think-thread-shell:has(.think-full-app) .responsive-sidebar-shell__toggle {
|
|
330
|
-
display: none;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.think-thread-shell[data-hide-app-bar-in-workbench]:has(
|
|
334
|
-
.think-full-app[data-mobile-view="workbench"]
|
|
335
|
-
)
|
|
336
|
-
> .app-top-bar {
|
|
232
|
+
/* An immersive workbench view owns the whole viewport. */
|
|
233
|
+
.think-full-app__app-bar[data-hide-in-workbench][data-mobile-view="workbench"] {
|
|
337
234
|
display: none;
|
|
338
235
|
}
|
|
339
236
|
}
|
|
@@ -341,10 +238,9 @@ body.is-resizing-side-panel .think-full-app__view-scope {
|
|
|
341
238
|
@media (forced-colors: active) {
|
|
342
239
|
.think-full-app,
|
|
343
240
|
.think-full-app__chat-surface,
|
|
344
|
-
.think-full-
|
|
241
|
+
.think-full-app__workbench-slot,
|
|
345
242
|
.think-full-app__workbench,
|
|
346
|
-
.think-full-app__app-bar
|
|
347
|
-
.think-full-app__workbench-view-switch {
|
|
243
|
+
.think-full-app__app-bar {
|
|
348
244
|
border: var(--sigvelo-border-style) var(--sigvelo-border-width) canvastext;
|
|
349
245
|
background: canvas;
|
|
350
246
|
color: canvastext;
|