@mcp-b/react-components 0.40.0 → 0.42.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/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
- package/dist/{FileTree-xqHYBw4g.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-CsDql-ER.d.ts} +4 -1
- package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
- package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-DwdXiKku.js} +17 -22
- package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
- package/dist/components/agents-sdk/AgentActivity.js +4 -3
- package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
- package/dist/components/agents-sdk/AgentChat.js +42 -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 +1 -1
- package/dist/components/agents-sdk/BrowserRunPanel.js +8 -13
- package/dist/components/agents-sdk/ManagerOffice.d.ts +168 -0
- package/dist/components/agents-sdk/ManagerOffice.js +698 -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 +82 -62
- 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/ThinkChatActivity.js +18 -4
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +7 -3
- package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +45 -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 -37
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +42 -78
- package/dist/components/agents-sdk/ThinkFullApp.js +121 -202
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
- 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.d.ts +7 -6
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +112 -140
- 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 +2 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -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 +3 -2
- package/dist/components/ai-sdk/MessageScrollerVirtual.js +2 -1
- package/dist/components/ai-sdk/Plan.js +1 -1
- package/dist/components/ai-sdk/PromptInput.js +21 -15
- 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.js +2 -1
- 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/ToggleGroup.d.ts +79 -1
- package/dist/components/foundations/icons.d.ts +2 -2
- package/dist/components/foundations/icons.js +2 -2
- package/dist/components/general-purpose/AppFrame.js +1 -0
- package/dist/components/general-purpose/AppTopBar.d.ts +6 -0
- 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/ResizableSidePanel.d.ts +8 -0
- package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +105 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +112 -56
- 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 +4 -1
- package/dist/components/general-purpose/WebPreview.js +6 -14
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
- package/dist/components/nanites/AgentToolDetail.js +6 -5
- package/dist/components/nanites/NaniteScene.js +11 -11
- package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
- package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
- package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
- package/dist/styles/accordion.css +1 -0
- package/dist/styles/action-guide.css +8 -7
- package/dist/styles/activity-header.css +13 -39
- package/dist/styles/activity.css +40 -55
- package/dist/styles/agent-attention.css +19 -19
- package/dist/styles/agent-chat.css +94 -42
- package/dist/styles/agent-connection.css +10 -4
- package/dist/styles/agent-tool-detail.css +5 -15
- package/dist/styles/alert-dialog.css +4 -4
- package/dist/styles/app-frame.css +1 -3
- package/dist/styles/app-icon.css +12 -18
- package/dist/styles/app-top-bar.css +31 -9
- package/dist/styles/approval.css +1 -0
- package/dist/styles/artifact.css +6 -6
- package/dist/styles/attachment-preview.css +5 -4
- 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-replay.css +6 -6
- package/dist/styles/browser-run-panel.css +21 -18
- package/dist/styles/button.css +15 -6
- package/dist/styles/card.css +5 -5
- package/dist/styles/chatgpt-sign-in-screen.css +6 -6
- package/dist/styles/code-block.css +14 -13
- package/dist/styles/codex-model-selector.css +2 -0
- package/dist/styles/collapsible.css +1 -0
- package/dist/styles/commit.css +30 -7
- package/dist/styles/context.css +9 -9
- package/dist/styles/conversation-tab-picker.css +1 -1
- package/dist/styles/conversation.css +6 -8
- package/dist/styles/dialog.css +4 -4
- package/dist/styles/empty-state.css +3 -3
- package/dist/styles/environment-variables.css +12 -9
- package/dist/styles/field.css +2 -1
- package/dist/styles/fieldset.css +2 -2
- package/dist/styles/index.css +8 -7
- package/dist/styles/manager-office.css +480 -0
- package/dist/styles/mcp-plugin-catalog.css +44 -39
- package/dist/styles/mcp-server-picker.css +4 -4
- package/dist/styles/message-scroller.css +9 -11
- package/dist/styles/message.css +74 -28
- package/dist/styles/nanite-scene.css +9 -9
- package/dist/styles/navigation-menu.css +1 -0
- package/dist/styles/plan.css +13 -12
- package/dist/styles/pricing-page.css +37 -30
- package/dist/styles/prompt-input.css +26 -18
- package/dist/styles/queue.css +1 -0
- package/dist/styles/reasoning.css +1 -9
- package/dist/styles/recipes.css +29 -58
- package/dist/styles/responsive-sidebar-shell.css +107 -29
- package/dist/styles/separator.css +5 -5
- package/dist/styles/sources.css +4 -4
- package/dist/styles/stepper.css +1 -0
- package/dist/styles/streamdown.css +31 -21
- package/dist/styles/subagent-run.css +20 -3
- package/dist/styles/tabs.css +1 -0
- package/dist/styles/task.css +5 -17
- package/dist/styles/terminal.css +29 -10
- package/dist/styles/test-results.css +16 -7
- package/dist/styles/think-execution-status.css +10 -26
- package/dist/styles/think-execution-workbench.css +98 -108
- package/dist/styles/think-full-app.css +75 -225
- package/dist/styles/think-routine-library.css +26 -95
- package/dist/styles/think-thread-picker.css +17 -12
- package/dist/styles/transition-surface.css +7 -8
- package/dist/styles/utilities.css +75 -0
- package/dist/styles/web-preview.css +46 -22
- package/dist/styles/workspace-explorer.css +22 -44
- package/dist/styles/workspace-mount-manager.css +24 -2
- package/dist/utils/favicon.d.ts +6 -1
- package/dist/utils/favicon.js +18 -1
- package/package.json +37 -35
- package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
- package/dist/ToggleGroup-_pQMyHGM.d.ts +0 -80
- 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
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
block-size: 100%;
|
|
4
4
|
min-block-size: 0;
|
|
5
5
|
display: grid;
|
|
6
|
-
grid-template-rows: auto auto
|
|
6
|
+
grid-template-rows: auto auto var(--sigvelo-layout-track-fill) auto;
|
|
7
7
|
overflow: hidden;
|
|
8
8
|
border-inline-end: 0;
|
|
9
|
-
|
|
9
|
+
/* No material of its own: it fills whatever holds it — the shell's rail, the
|
|
10
|
+
compact drawer, a host's own panel — and painting a colour here would
|
|
11
|
+
cover the one that surface chose. */
|
|
12
|
+
background: transparent;
|
|
10
13
|
color: var(--sigvelo-color-text);
|
|
11
14
|
}
|
|
12
15
|
|
|
@@ -17,10 +20,8 @@
|
|
|
17
20
|
align-items: center;
|
|
18
21
|
gap: var(--sigvelo-density-compact-control-gap);
|
|
19
22
|
padding-block: var(--sigvelo-spacing-1);
|
|
20
|
-
padding-inline: calc(
|
|
21
|
-
|
|
22
|
-
)
|
|
23
|
-
var(--sigvelo-density-compact-control-padding-inline);
|
|
23
|
+
padding-inline: calc(var(--sigvelo-layout-gutter) + env(safe-area-inset-left, 0px))
|
|
24
|
+
var(--sigvelo-layout-gutter);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
.think-thread-picker__title {
|
|
@@ -69,7 +70,7 @@
|
|
|
69
70
|
}
|
|
70
71
|
|
|
71
72
|
.think-thread-status-indicators__item[data-status="attention"] {
|
|
72
|
-
color: var(--sigvelo-color-
|
|
73
|
+
color: var(--sigvelo-color-danger-text);
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
.think-thread-status-indicators__item[data-status="failed"] {
|
|
@@ -91,7 +92,7 @@
|
|
|
91
92
|
}
|
|
92
93
|
|
|
93
94
|
.think-thread-picker__viewport {
|
|
94
|
-
padding: var(--sigvelo-
|
|
95
|
+
padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter) var(--sigvelo-layout-gutter);
|
|
95
96
|
overscroll-behavior: contain;
|
|
96
97
|
scrollbar-gutter: stable;
|
|
97
98
|
}
|
|
@@ -115,9 +116,9 @@
|
|
|
115
116
|
min-inline-size: 0;
|
|
116
117
|
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
117
118
|
display: grid;
|
|
118
|
-
grid-template-columns:
|
|
119
|
+
grid-template-columns: var(--sigvelo-layout-track-fill) auto;
|
|
119
120
|
padding-block: 0;
|
|
120
|
-
padding-inline: var(--sigvelo-
|
|
121
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
121
122
|
align-items: center;
|
|
122
123
|
justify-content: flex-start;
|
|
123
124
|
column-gap: var(--sigvelo-spacing-1);
|
|
@@ -129,7 +130,7 @@
|
|
|
129
130
|
|
|
130
131
|
.think-thread-picker__item:has(.think-thread-picker__delete) .think-thread-picker__thread {
|
|
131
132
|
grid-template-columns:
|
|
132
|
-
|
|
133
|
+
var(--sigvelo-layout-track-fill)
|
|
133
134
|
minmax(var(--sigvelo-density-compact-control-height), max-content);
|
|
134
135
|
}
|
|
135
136
|
|
|
@@ -266,10 +267,12 @@
|
|
|
266
267
|
color: var(--sigvelo-color-danger-text);
|
|
267
268
|
}
|
|
268
269
|
|
|
270
|
+
/* Stopped, not wrong: aborted/interrupted/skipped stay in the muted
|
|
271
|
+
monotone — colour is reserved for success, failure, and needs-a-human. */
|
|
269
272
|
.think-thread-picker__thread[data-thread-status="aborted"] .think-thread-picker__thread-status,
|
|
270
273
|
.think-thread-picker__thread[data-thread-status="interrupted"] .think-thread-picker__thread-status,
|
|
271
274
|
.think-thread-picker__thread[data-thread-status="skipped"] .think-thread-picker__thread-status {
|
|
272
|
-
color: var(--sigvelo-color-
|
|
275
|
+
color: var(--sigvelo-color-text-muted);
|
|
273
276
|
}
|
|
274
277
|
|
|
275
278
|
.think-thread-picker__empty {
|
|
@@ -296,6 +299,7 @@
|
|
|
296
299
|
flex: 0 0 auto;
|
|
297
300
|
}
|
|
298
301
|
|
|
302
|
+
/* 56rem matches --sigvelo-layout-break-compact. Container queries cannot read var(). */
|
|
299
303
|
@container responsive-sidebar-shell (inline-size <= 56rem) {
|
|
300
304
|
.think-thread-picker {
|
|
301
305
|
block-size: auto;
|
|
@@ -326,6 +330,7 @@
|
|
|
326
330
|
.think-thread-picker__scroll,
|
|
327
331
|
.think-thread-picker__viewport {
|
|
328
332
|
block-size: auto;
|
|
333
|
+
/* Compact drawer list cap. Not --sigvelo-layout-sidebar. */
|
|
329
334
|
max-block-size: min(16rem, 42dvh);
|
|
330
335
|
}
|
|
331
336
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
/* The exit transform is a hook: defaults live in the fallbacks at each use
|
|
2
|
+
site, and picking a `data-variant` declares a value on the element itself —
|
|
3
|
+
the component answering its own prop, which is meant to win. */
|
|
1
4
|
.transition-surface {
|
|
2
|
-
--transition-surface-inline: 0;
|
|
3
|
-
--transition-surface-block: 0;
|
|
4
|
-
--transition-surface-scale: 1;
|
|
5
|
-
|
|
6
5
|
opacity: 1;
|
|
7
6
|
translate: 0;
|
|
8
7
|
scale: 1;
|
|
@@ -29,16 +28,16 @@
|
|
|
29
28
|
.transition-surface[hidden] {
|
|
30
29
|
display: none;
|
|
31
30
|
opacity: 0;
|
|
32
|
-
translate: var(--transition-surface-inline) var(--transition-surface-block);
|
|
33
|
-
scale: var(--transition-surface-scale);
|
|
31
|
+
translate: var(--transition-surface-inline, 0) var(--transition-surface-block, 0);
|
|
32
|
+
scale: var(--transition-surface-scale, 1);
|
|
34
33
|
transition-timing-function: var(--sigvelo-motion-ease-exit);
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
@starting-style {
|
|
38
37
|
.transition-surface {
|
|
39
38
|
opacity: 0;
|
|
40
|
-
translate: var(--transition-surface-inline) var(--transition-surface-block);
|
|
41
|
-
scale: var(--transition-surface-scale);
|
|
39
|
+
translate: var(--transition-surface-inline, 0) var(--transition-surface-block, 0);
|
|
40
|
+
scale: var(--transition-surface-scale, 1);
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
|
|
@@ -22,6 +22,39 @@
|
|
|
22
22
|
list-style: none;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/* 1D compositions hosts assemble themselves. Components that already own
|
|
26
|
+
anatomy use the matching data-recipe; these are for app markup. */
|
|
27
|
+
.sigvelo-stack {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: var(--sigvelo-layout-stack);
|
|
31
|
+
min-inline-size: 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sigvelo-cluster {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-wrap: wrap;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: var(--sigvelo-layout-cluster);
|
|
39
|
+
min-inline-size: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.sigvelo-fill {
|
|
43
|
+
min-inline-size: 0;
|
|
44
|
+
min-block-size: 0;
|
|
45
|
+
block-size: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sigvelo-page {
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
min-inline-size: 0;
|
|
51
|
+
inline-size: 100%;
|
|
52
|
+
max-inline-size: var(--sigvelo-layout-content);
|
|
53
|
+
margin-inline: auto;
|
|
54
|
+
padding-block: var(--sigvelo-layout-stack);
|
|
55
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
56
|
+
}
|
|
57
|
+
|
|
25
58
|
.sigvelo-truncate {
|
|
26
59
|
overflow: hidden;
|
|
27
60
|
text-overflow: ellipsis;
|
|
@@ -97,6 +130,48 @@
|
|
|
97
130
|
max-inline-size: var(--sigvelo-measure-wide-block);
|
|
98
131
|
}
|
|
99
132
|
|
|
133
|
+
/*
|
|
134
|
+
* The chevron on a disclosure trigger a consumer composed itself. Components
|
|
135
|
+
* that own their own trigger anatomy (Collapsible, MenuDisclosureGroup) style
|
|
136
|
+
* their marker directly; this is for app code putting an icon inside a
|
|
137
|
+
* `Collapsible.Trigger`, which otherwise re-derives the same two rules.
|
|
138
|
+
*/
|
|
139
|
+
.sigvelo-disclosure-chevron {
|
|
140
|
+
transition: rotate var(--sigvelo-motion-duration-disclosure) var(--sigvelo-motion-ease-change);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:where([data-panel-open], [aria-expanded="true"]) .sigvelo-disclosure-chevron {
|
|
144
|
+
rotate: 180deg;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/*
|
|
148
|
+
* A prompt that has to outlive the reader's attention: a permission ask a
|
|
149
|
+
* browser will only grant from a gesture, an offer to reconnect. `Toast` is the
|
|
150
|
+
* wrong shape for these because it schedules its own dismissal, and these leave
|
|
151
|
+
* only when the reader acts. The layer is inert so the page underneath stays
|
|
152
|
+
* usable and only the control inside it takes the pointer back; the inset clears
|
|
153
|
+
* whatever the app already anchors to the bottom edge.
|
|
154
|
+
*/
|
|
155
|
+
.sigvelo-floating-prompt {
|
|
156
|
+
--sigvelo-floating-prompt-inset: var(--sigvelo-spacing-4);
|
|
157
|
+
|
|
158
|
+
position: fixed;
|
|
159
|
+
inset-inline: 0;
|
|
160
|
+
inset-block-end: calc(env(safe-area-inset-bottom, 0px) + var(--sigvelo-floating-prompt-inset));
|
|
161
|
+
z-index: var(--sigvelo-z-toast);
|
|
162
|
+
display: flex;
|
|
163
|
+
justify-content: center;
|
|
164
|
+
pointer-events: none;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Floating reads as a pill, not as a form control, so the recipe radius goes
|
|
168
|
+
fully round here rather than at each consumer's call site. */
|
|
169
|
+
.sigvelo-floating-prompt > * {
|
|
170
|
+
--sigvelo-recipe-button-radius: var(--sigvelo-radius-full);
|
|
171
|
+
|
|
172
|
+
pointer-events: auto;
|
|
173
|
+
}
|
|
174
|
+
|
|
100
175
|
/*
|
|
101
176
|
* Reader-controlled text size for prose. Scales the message body only —
|
|
102
177
|
* toolbars, labels, and controls keep resolving through the rem type ramp,
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
/* The card's chrome row (the Ploy bar): one bar height everywhere, muted
|
|
2
|
+
controls resting directly on whatever plane hosts the preview, separated
|
|
3
|
+
from the scrolling content by one hairline and a breath of shadow. */
|
|
1
4
|
.web-preview__nav {
|
|
5
|
+
position: relative;
|
|
2
6
|
display: flex;
|
|
3
7
|
align-items: center;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
padding-
|
|
7
|
-
|
|
8
|
+
min-block-size: var(--sigvelo-layout-chrome);
|
|
9
|
+
gap: var(--sigvelo-layout-cluster);
|
|
10
|
+
padding-block: var(--sigvelo-spacing-1);
|
|
11
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
8
12
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
9
13
|
var(--sigvelo-color-neutral-border-subtle);
|
|
14
|
+
box-shadow: var(--sigvelo-elevation-bar);
|
|
10
15
|
}
|
|
11
16
|
|
|
12
17
|
.web-preview__nav-button {
|
|
@@ -15,21 +20,21 @@
|
|
|
15
20
|
|
|
16
21
|
.web-preview__url-form {
|
|
17
22
|
flex: 1;
|
|
18
|
-
min-
|
|
23
|
+
min-inline-size: 0;
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
.web-preview__url {
|
|
22
|
-
|
|
27
|
+
inline-size: 100%;
|
|
23
28
|
font-family: var(--sigvelo-font-mono);
|
|
24
29
|
font-size: var(--sigvelo-text-xs);
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
.web-preview__body {
|
|
28
33
|
flex: 1;
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
/* Preview canvas floor. Not --sigvelo-layout-sidebar. */
|
|
35
|
+
min-block-size: 16rem;
|
|
36
|
+
inline-size: 100%;
|
|
31
37
|
border: none;
|
|
32
|
-
background-color: var(--sigvelo-color-canvas);
|
|
33
38
|
}
|
|
34
39
|
|
|
35
40
|
.web-preview__body--readonly {
|
|
@@ -51,22 +56,21 @@
|
|
|
51
56
|
flex-direction: column;
|
|
52
57
|
border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
53
58
|
var(--sigvelo-color-neutral-border-subtle);
|
|
54
|
-
max-
|
|
59
|
+
max-block-size: 12rem;
|
|
55
60
|
}
|
|
56
61
|
|
|
57
62
|
.web-preview__console-header {
|
|
58
63
|
display: flex;
|
|
59
64
|
align-items: center;
|
|
60
65
|
justify-content: space-between;
|
|
61
|
-
padding-block: var(--sigvelo-
|
|
62
|
-
padding-inline: var(--sigvelo-
|
|
66
|
+
padding-block: var(--sigvelo-layout-cluster);
|
|
67
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
63
68
|
border: 0;
|
|
64
69
|
font-size: var(--sigvelo-text-2xs);
|
|
65
70
|
font-weight: var(--sigvelo-font-weight-bold);
|
|
66
71
|
text-transform: uppercase;
|
|
67
72
|
letter-spacing: 0.05em;
|
|
68
73
|
color: var(--sigvelo-color-text-muted);
|
|
69
|
-
background-color: var(--sigvelo-color-neutral-bg-subtle);
|
|
70
74
|
cursor: pointer;
|
|
71
75
|
}
|
|
72
76
|
|
|
@@ -90,18 +94,18 @@
|
|
|
90
94
|
|
|
91
95
|
.web-preview__console-scroll {
|
|
92
96
|
flex: 1;
|
|
93
|
-
min-
|
|
97
|
+
min-block-size: 0;
|
|
94
98
|
}
|
|
95
99
|
|
|
96
100
|
.web-preview__console-viewport {
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
inline-size: 100%;
|
|
102
|
+
block-size: 100%;
|
|
99
103
|
overflow: auto;
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
.web-preview__console-empty {
|
|
103
|
-
padding-block: var(--sigvelo-
|
|
104
|
-
padding-inline: var(--sigvelo-
|
|
107
|
+
padding-block: var(--sigvelo-layout-gutter);
|
|
108
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
105
109
|
font-size: var(--sigvelo-text-xs);
|
|
106
110
|
color: var(--sigvelo-color-text-muted);
|
|
107
111
|
text-align: center;
|
|
@@ -109,11 +113,11 @@
|
|
|
109
113
|
|
|
110
114
|
.web-preview__console-item {
|
|
111
115
|
display: grid;
|
|
112
|
-
grid-template-columns: auto
|
|
113
|
-
gap: var(--sigvelo-
|
|
116
|
+
grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
|
|
117
|
+
gap: var(--sigvelo-layout-cluster);
|
|
114
118
|
align-items: baseline;
|
|
115
|
-
padding-block: var(--sigvelo-
|
|
116
|
-
padding-inline: var(--sigvelo-
|
|
119
|
+
padding-block: var(--sigvelo-layout-cluster);
|
|
120
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
117
121
|
font-family: var(--sigvelo-font-mono);
|
|
118
122
|
font-size: var(--sigvelo-text-xs);
|
|
119
123
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
@@ -124,6 +128,26 @@
|
|
|
124
128
|
border-block-end: none;
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
.web-preview__console-level {
|
|
132
|
+
min-inline-size: 2.5rem;
|
|
133
|
+
color: var(--sigvelo-color-text-muted);
|
|
134
|
+
font-size: var(--sigvelo-text-2xs);
|
|
135
|
+
font-weight: var(--sigvelo-font-weight-semibold);
|
|
136
|
+
text-transform: uppercase;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.web-preview__console-item--info .web-preview__console-level {
|
|
140
|
+
color: var(--sigvelo-color-primary-text);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.web-preview__console-item--warn .web-preview__console-level {
|
|
144
|
+
color: var(--sigvelo-color-warning-text);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.web-preview__console-item--error .web-preview__console-level {
|
|
148
|
+
color: var(--sigvelo-color-danger-text);
|
|
149
|
+
}
|
|
150
|
+
|
|
127
151
|
.web-preview__console-message {
|
|
128
152
|
color: var(--sigvelo-color-text);
|
|
129
153
|
word-break: break-word;
|
|
@@ -10,19 +10,12 @@
|
|
|
10
10
|
overflow: hidden;
|
|
11
11
|
font-family: inherit;
|
|
12
12
|
color: var(--sigvelo-color-text);
|
|
13
|
-
background-color: var(--sigvelo-color-surface-raised);
|
|
14
|
-
border-radius: var(--sigvelo-radius-xl);
|
|
15
|
-
box-shadow: var(--sigvelo-elevation-raised);
|
|
16
13
|
container-type: inline-size;
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
.workspace-explorer:has(> .workspace-explorer__file[data-appearance="canvas"]) {
|
|
20
17
|
block-size: auto;
|
|
21
18
|
overflow: visible;
|
|
22
|
-
background: transparent;
|
|
23
|
-
border: 0;
|
|
24
|
-
border-radius: 0;
|
|
25
|
-
box-shadow: none;
|
|
26
19
|
}
|
|
27
20
|
|
|
28
21
|
.workspace-explorer__file[data-appearance="canvas"] {
|
|
@@ -81,15 +74,11 @@
|
|
|
81
74
|
flex: 0 0 auto;
|
|
82
75
|
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
83
76
|
padding-block: var(--sigvelo-spacing-0-5);
|
|
84
|
-
padding-inline: var(--sigvelo-
|
|
77
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
85
78
|
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
86
79
|
var(--sigvelo-color-neutral-border-subtle);
|
|
87
80
|
}
|
|
88
81
|
|
|
89
|
-
.workspace-explorer__header .app-top-bar__button {
|
|
90
|
-
padding: var(--sigvelo-spacing-1-5);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
82
|
.workspace-explorer__heading {
|
|
94
83
|
display: flex;
|
|
95
84
|
align-items: baseline;
|
|
@@ -186,9 +175,9 @@
|
|
|
186
175
|
flex: 1;
|
|
187
176
|
align-items: center;
|
|
188
177
|
justify-content: center;
|
|
189
|
-
padding-block: var(--sigvelo-
|
|
190
|
-
padding-inline: var(--sigvelo-
|
|
191
|
-
font-size: var(--sigvelo-text-
|
|
178
|
+
padding-block: var(--sigvelo-layout-stack);
|
|
179
|
+
padding-inline: var(--sigvelo-layout-gutter);
|
|
180
|
+
font-size: var(--sigvelo-text-prose);
|
|
192
181
|
color: var(--sigvelo-color-text-muted);
|
|
193
182
|
text-align: center;
|
|
194
183
|
}
|
|
@@ -197,14 +186,13 @@
|
|
|
197
186
|
flex: 1;
|
|
198
187
|
min-block-size: 100%;
|
|
199
188
|
border-radius: 0;
|
|
200
|
-
background-color:
|
|
189
|
+
background-color: transparent;
|
|
201
190
|
}
|
|
202
191
|
|
|
203
192
|
.workspace-explorer__markdown-scroll {
|
|
204
193
|
flex: 1;
|
|
205
194
|
min-block-size: 0;
|
|
206
195
|
overflow: auto;
|
|
207
|
-
background-color: var(--sigvelo-color-surface);
|
|
208
196
|
}
|
|
209
197
|
|
|
210
198
|
.workspace-explorer__markdown {
|
|
@@ -213,8 +201,8 @@
|
|
|
213
201
|
margin-inline: auto;
|
|
214
202
|
padding-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-12);
|
|
215
203
|
padding-inline: var(--sigvelo-spacing-6);
|
|
216
|
-
font-size: var(--sigvelo-text-
|
|
217
|
-
line-height: var(--sigvelo-leading
|
|
204
|
+
font-size: var(--sigvelo-text-prose);
|
|
205
|
+
line-height: var(--sigvelo-text-prose-leading);
|
|
218
206
|
}
|
|
219
207
|
|
|
220
208
|
.workspace-explorer__markdown-content > :first-child {
|
|
@@ -255,26 +243,20 @@
|
|
|
255
243
|
[data-streamdown="code-block-actions"],
|
|
256
244
|
[data-streamdown="mermaid-block-actions"]
|
|
257
245
|
) {
|
|
258
|
-
background-color:
|
|
246
|
+
background-color: transparent;
|
|
259
247
|
}
|
|
260
248
|
|
|
261
249
|
.workspace-explorer__markdown-content [data-streamdown="heading-1"] {
|
|
262
250
|
margin-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-3);
|
|
263
|
-
font-size: var(--sigvelo-text-fluid-2xl);
|
|
264
|
-
font-weight: var(--sigvelo-font-weight-bold);
|
|
265
|
-
line-height: var(--sigvelo-leading-tight);
|
|
266
251
|
}
|
|
267
252
|
|
|
268
253
|
.workspace-explorer__markdown-content [data-streamdown="heading-2"] {
|
|
269
254
|
margin-block: var(--sigvelo-spacing-8) var(--sigvelo-spacing-2);
|
|
270
|
-
font-size: var(--sigvelo-text-fluid-lg);
|
|
271
|
-
font-weight: var(--sigvelo-font-weight-bold);
|
|
272
255
|
}
|
|
273
256
|
|
|
274
257
|
.workspace-explorer__markdown-content
|
|
275
258
|
:is([data-streamdown="heading-3"], [data-streamdown="heading-4"]) {
|
|
276
259
|
margin-block: var(--sigvelo-spacing-6) var(--sigvelo-spacing-2);
|
|
277
|
-
font-size: var(--sigvelo-text-lg);
|
|
278
260
|
}
|
|
279
261
|
|
|
280
262
|
.workspace-explorer__skill {
|
|
@@ -287,7 +269,7 @@
|
|
|
287
269
|
.workspace-explorer__skill-kicker {
|
|
288
270
|
margin-block-end: var(--sigvelo-spacing-2);
|
|
289
271
|
color: var(--sigvelo-color-text-muted);
|
|
290
|
-
font-size: var(--sigvelo-text-
|
|
272
|
+
font-size: var(--sigvelo-text-meta);
|
|
291
273
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
292
274
|
letter-spacing: var(--sigvelo-tracking-wider);
|
|
293
275
|
text-transform: uppercase;
|
|
@@ -307,10 +289,10 @@
|
|
|
307
289
|
|
|
308
290
|
.workspace-explorer__skill-metadata {
|
|
309
291
|
display: grid;
|
|
310
|
-
grid-template-columns: max-content
|
|
292
|
+
grid-template-columns: max-content var(--sigvelo-layout-track-fill);
|
|
311
293
|
gap: var(--sigvelo-spacing-1) var(--sigvelo-spacing-3);
|
|
312
294
|
margin-block: var(--sigvelo-spacing-4) 0;
|
|
313
|
-
font-size: var(--sigvelo-text-
|
|
295
|
+
font-size: var(--sigvelo-text-prose);
|
|
314
296
|
}
|
|
315
297
|
|
|
316
298
|
.workspace-explorer__skill-metadata dt {
|
|
@@ -331,19 +313,19 @@
|
|
|
331
313
|
gap: var(--sigvelo-spacing-1-5);
|
|
332
314
|
margin-block-start: var(--sigvelo-spacing-4);
|
|
333
315
|
color: var(--sigvelo-color-success-text);
|
|
334
|
-
font-size: var(--sigvelo-text-
|
|
316
|
+
font-size: var(--sigvelo-text-prose);
|
|
335
317
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
336
318
|
}
|
|
337
319
|
|
|
338
320
|
.workspace-explorer__skill-status[data-invalid] {
|
|
339
|
-
color: var(--sigvelo-color-
|
|
321
|
+
color: var(--sigvelo-color-danger-text);
|
|
340
322
|
}
|
|
341
323
|
|
|
342
324
|
.workspace-explorer__skill-errors {
|
|
343
325
|
margin-block: var(--sigvelo-spacing-2) 0;
|
|
344
326
|
padding-inline-start: var(--sigvelo-spacing-6);
|
|
345
|
-
color: var(--sigvelo-color-
|
|
346
|
-
font-size: var(--sigvelo-text-
|
|
327
|
+
color: var(--sigvelo-color-danger-text);
|
|
328
|
+
font-size: var(--sigvelo-text-prose);
|
|
347
329
|
}
|
|
348
330
|
|
|
349
331
|
.workspace-explorer__media-scroll {
|
|
@@ -352,7 +334,6 @@
|
|
|
352
334
|
flex: 1;
|
|
353
335
|
overflow: auto;
|
|
354
336
|
color-scheme: inherit;
|
|
355
|
-
background-color: var(--sigvelo-color-surface);
|
|
356
337
|
}
|
|
357
338
|
|
|
358
339
|
.workspace-explorer__media-scroll:focus-visible {
|
|
@@ -366,7 +347,6 @@
|
|
|
366
347
|
inline-size: 100%;
|
|
367
348
|
min-block-size: 100%;
|
|
368
349
|
margin: 0;
|
|
369
|
-
background-color: var(--sigvelo-color-surface);
|
|
370
350
|
}
|
|
371
351
|
|
|
372
352
|
.workspace-explorer__media-stage {
|
|
@@ -384,6 +364,7 @@
|
|
|
384
364
|
display: flex;
|
|
385
365
|
inline-size: 100%;
|
|
386
366
|
block-size: 100%;
|
|
367
|
+
/* Image well floor. Not --sigvelo-layout-sidebar. */
|
|
387
368
|
min-block-size: 16rem;
|
|
388
369
|
align-items: center;
|
|
389
370
|
justify-content: center;
|
|
@@ -448,7 +429,6 @@
|
|
|
448
429
|
padding-inline: var(--sigvelo-spacing-4);
|
|
449
430
|
border-block-start: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
450
431
|
var(--sigvelo-color-neutral-border-subtle);
|
|
451
|
-
background-color: var(--sigvelo-color-surface);
|
|
452
432
|
}
|
|
453
433
|
|
|
454
434
|
.workspace-explorer__media-details {
|
|
@@ -457,7 +437,7 @@
|
|
|
457
437
|
flex-wrap: wrap;
|
|
458
438
|
gap: var(--sigvelo-spacing-2) var(--sigvelo-spacing-4);
|
|
459
439
|
margin: 0;
|
|
460
|
-
font-size: var(--sigvelo-text-
|
|
440
|
+
font-size: var(--sigvelo-text-meta);
|
|
461
441
|
}
|
|
462
442
|
|
|
463
443
|
.workspace-explorer__media-details > div {
|
|
@@ -479,7 +459,7 @@
|
|
|
479
459
|
|
|
480
460
|
.workspace-explorer__media-transcript {
|
|
481
461
|
flex: 0 0 auto;
|
|
482
|
-
font-size: var(--sigvelo-text-
|
|
462
|
+
font-size: var(--sigvelo-text-prose);
|
|
483
463
|
}
|
|
484
464
|
|
|
485
465
|
.workspace-explorer__media-fallback,
|
|
@@ -487,7 +467,7 @@
|
|
|
487
467
|
max-inline-size: 42rem;
|
|
488
468
|
margin: 0;
|
|
489
469
|
color: var(--sigvelo-color-text-muted);
|
|
490
|
-
font-size: var(--sigvelo-text-
|
|
470
|
+
font-size: var(--sigvelo-text-prose);
|
|
491
471
|
text-align: center;
|
|
492
472
|
}
|
|
493
473
|
|
|
@@ -541,6 +521,7 @@
|
|
|
541
521
|
}
|
|
542
522
|
}
|
|
543
523
|
|
|
524
|
+
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
544
525
|
@container (inline-size < 30rem) {
|
|
545
526
|
.workspace-explorer__filter {
|
|
546
527
|
margin-inline: var(--sigvelo-spacing-1-5);
|
|
@@ -560,13 +541,10 @@
|
|
|
560
541
|
}
|
|
561
542
|
}
|
|
562
543
|
|
|
544
|
+
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
563
545
|
@container (inline-size < 24rem) {
|
|
564
|
-
.workspace-explorer__heading {
|
|
565
|
-
max-inline-size: 34cqi;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
546
|
.workspace-explorer__skill-metadata {
|
|
569
|
-
grid-template-columns:
|
|
547
|
+
grid-template-columns: var(--sigvelo-layout-track-fill);
|
|
570
548
|
gap: 0;
|
|
571
549
|
}
|
|
572
550
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.workspace-mount-manager__content {
|
|
2
2
|
display: grid;
|
|
3
|
-
gap: var(--sigvelo-
|
|
3
|
+
gap: var(--sigvelo-layout-gutter);
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.workspace-mount-manager__error,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.workspace-mount-manager__list {
|
|
14
|
-
gap: var(--sigvelo-
|
|
14
|
+
gap: var(--sigvelo-layout-cluster);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.workspace-mount-manager__error {
|
|
@@ -22,3 +22,25 @@
|
|
|
22
22
|
.workspace-mount-manager__path code {
|
|
23
23
|
overflow-wrap: anywhere;
|
|
24
24
|
}
|
|
25
|
+
|
|
26
|
+
.workspace-mount-manager__permission {
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: var(--sigvelo-spacing-1);
|
|
30
|
+
color: var(--sigvelo-color-text-muted);
|
|
31
|
+
font-size: var(--sigvelo-text-xs);
|
|
32
|
+
line-height: var(--sigvelo-leading-snug);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.workspace-mount-manager__permission > svg {
|
|
36
|
+
inline-size: var(--sigvelo-control-icon-size-sm);
|
|
37
|
+
block-size: var(--sigvelo-control-icon-size-sm);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.workspace-mount-manager__permission[data-permission="granted"] {
|
|
41
|
+
color: var(--sigvelo-color-success-text);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.workspace-mount-manager__permission[data-permission="denied"] {
|
|
45
|
+
color: var(--sigvelo-color-danger-text);
|
|
46
|
+
}
|
package/dist/utils/favicon.d.ts
CHANGED
|
@@ -6,5 +6,10 @@
|
|
|
6
6
|
* `<link rel="icon">` should prefer that resolved URL because it may point elsewhere.
|
|
7
7
|
*/
|
|
8
8
|
declare function inferFaviconUrl(url: string): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Browsers block public pages from fetching loopback URLs (private network
|
|
11
|
+
* access). Skip those favicons when the document is not itself on loopback.
|
|
12
|
+
*/
|
|
13
|
+
declare function canRequestFavicon(src: string, documentOrigin?: string): boolean;
|
|
9
14
|
//#endregion
|
|
10
|
-
export { inferFaviconUrl };
|
|
15
|
+
export { canRequestFavicon, inferFaviconUrl };
|
package/dist/utils/favicon.js
CHANGED
|
@@ -14,5 +14,22 @@ function inferFaviconUrl(url) {
|
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
function isLoopbackHost(hostname) {
|
|
18
|
+
return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "[::1]";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Browsers block public pages from fetching loopback URLs (private network
|
|
22
|
+
* access). Skip those favicons when the document is not itself on loopback.
|
|
23
|
+
*/
|
|
24
|
+
function canRequestFavicon(src, documentOrigin = globalThis.location?.origin) {
|
|
25
|
+
try {
|
|
26
|
+
const favicon = new URL(src);
|
|
27
|
+
if (!documentOrigin) return true;
|
|
28
|
+
const page = new URL(documentOrigin);
|
|
29
|
+
return !(isLoopbackHost(favicon.hostname) && !isLoopbackHost(page.hostname));
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
17
34
|
//#endregion
|
|
18
|
-
export { inferFaviconUrl };
|
|
35
|
+
export { canRequestFavicon, inferFaviconUrl };
|