@mcp-b/react-components 0.44.1 → 0.46.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-Bibfj7u1.d.ts → AgentChat-BLmQghkt.d.ts} +2 -2
- package/dist/{AgentToolRunsContext-daY67hFM.d.ts → AgentToolRunsContext-jtmveaRE.d.ts} +8 -7
- package/dist/{CodeBlock-Dl7a3Wqo.js → CodeBlock-BpooTofO.js} +1 -1
- package/dist/{FileTree-Uu3ZnW1u.js → FileTree-CAXWXH63.js} +1 -1
- package/dist/{McpConnectorForm-MRm1r59e.d.ts → McpConnectorForm-BETdVBRk.d.ts} +1 -1
- package/dist/{McpPluginCatalog-mbGw8FTu.d.ts → McpPluginCatalog-C6ip9IvL.d.ts} +2 -2
- package/dist/{PromptInput-BRX7FhjH.d.ts → PromptInput-DtJHyp0S.d.ts} +27 -22
- package/dist/{ResponsiveSidebarShell-DOXd5T-d.d.ts → ResponsiveSidebarShell-BTVPxLJK.d.ts} +12 -0
- package/dist/{SetupChecklist-DOp-zqjh.js → SetupChecklist-DyPZWzK2.js} +2 -2
- package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-qztQ6Clo.js} +7 -22
- package/dist/{ThinkChatActivity-CgvmTXXB.d.ts → ThinkChatActivity-B3lGVS-6.d.ts} +1 -1
- package/dist/{WorkspaceFileView-BublZXky.js → WorkspaceFileView-BvDbKM2c.js} +3 -3
- 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 +44 -40
- package/dist/components/agents-sdk/AgentEvent.d.ts +42 -0
- package/dist/components/agents-sdk/AgentEvent.js +96 -0
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/AgentToolRunsContext.js +11 -7
- package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
- package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
- package/dist/components/agents-sdk/BrowserReplay.js +2 -2
- package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
- package/dist/components/agents-sdk/ManagerOffice.d.ts +106 -11
- package/dist/components/agents-sdk/ManagerOffice.js +1193 -151
- package/dist/components/agents-sdk/McpConnectionRequest.d.ts +1 -1
- package/dist/components/agents-sdk/McpConnectionRequest.js +11 -5
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -1
- package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.js +11 -7
- package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
- package/dist/components/agents-sdk/McpServerPicker.js +4 -4
- package/dist/components/agents-sdk/ModelSelector.js +5 -5
- package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
- package/dist/components/agents-sdk/PromptInputCommands.d.ts +5 -2
- package/dist/components/agents-sdk/PromptInputCommands.js +81 -3
- package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
- package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +21 -3
- package/dist/components/agents-sdk/SubagentRunIndicator.js +56 -6
- package/dist/components/agents-sdk/SubagentRunSelector.js +5 -12
- package/dist/components/agents-sdk/ThinkChat.d.ts +4 -5
- package/dist/components/agents-sdk/ThinkChat.js +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
- package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -3
- package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +14 -4
- package/dist/components/agents-sdk/ThinkFullApp.js +51 -5
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
- package/dist/components/agents-sdk/ThinkPendingApproval.js +1 -1
- package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +3 -3
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
- package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
- package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
- package/dist/components/agents-sdk/ThinkSidepanel.d.ts +22 -4
- package/dist/components/agents-sdk/ThinkSidepanel.js +87 -35
- package/dist/components/agents-sdk/ThinkThreadPicker.js +5 -5
- package/dist/components/agents-sdk/Workspace.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 +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +4 -21
- package/dist/components/ai-sdk/Activity.js +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
- package/dist/components/ai-sdk/Approval.js +2 -2
- 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/ComposerLink.d.ts +27 -0
- package/dist/components/ai-sdk/ComposerLink.js +111 -0
- package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
- package/dist/components/ai-sdk/Context.js +1 -1
- package/dist/components/ai-sdk/Conversation.js +1 -1
- package/dist/components/ai-sdk/Goal.js +2 -2
- package/dist/components/ai-sdk/InlineCitation.js +1 -1
- package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
- package/dist/components/ai-sdk/Message.js +19 -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 +2 -2
- package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
- package/dist/components/ai-sdk/PromptInput.js +67 -61
- package/dist/components/ai-sdk/PromptInputComposerEditor.d.ts +31 -0
- package/dist/components/ai-sdk/PromptInputComposerEditor.js +198 -0
- package/dist/components/ai-sdk/Queue.js +2 -2
- package/dist/components/ai-sdk/Reasoning.js +2 -2
- package/dist/components/ai-sdk/Sources.js +1 -1
- package/dist/components/ai-sdk/Task.js +1 -1
- package/dist/components/ai-sdk/ToolInvocation.js +1 -1
- package/dist/components/extension/ChatGptSignInScreen.js +2 -2
- package/dist/components/extension/CodexModelSelector.js +2 -2
- package/dist/components/extension/ConversationTabPicker.js +2 -2
- package/dist/components/foundations/AppIcon.js +1 -1
- package/dist/components/foundations/Checkbox.js +1 -1
- package/dist/components/foundations/Collapsible.js +1 -1
- package/dist/components/foundations/ContextMenu.js +1 -1
- 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 +1 -1
- package/dist/components/foundations/ToggleGroup.js +1 -1
- package/dist/components/foundations/icons.d.ts +1 -1
- package/dist/components/foundations/icons.js +1 -1
- package/dist/components/general-purpose/Commit.js +2 -2
- package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
- package/dist/components/general-purpose/FileTree.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
- package/dist/components/general-purpose/PricingPlanCard.js +2 -2
- package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
- package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +72 -22
- package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/Terminal.js +2 -2
- package/dist/components/general-purpose/TestResults.js +1 -1
- package/dist/components/general-purpose/ThemeModeControl.js +2 -2
- package/dist/components/general-purpose/WebPreview.js +3 -3
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.js +4 -4
- package/dist/{copy-button-DHhf-J1d.js → copy-button-D7ySsRRo.js} +1 -1
- package/dist/{format-DB2mX9DA.js → format-COCyV98Z.js} +23 -1
- package/dist/{icons-Dw-im7lg.js → icons-BNEY4gO5.js} +44 -4
- package/dist/{icons-6ZnyZJiR.d.ts → icons-D0Pd2P9v.d.ts} +9 -4
- package/dist/{mcp-server-SD_S-IpB.js → mcp-server-7NR24ASj.js} +31 -4
- package/dist/{mcp-server-catalog-CCj2ItkV.d.ts → mcp-server-catalog-Cbu483Zb.d.ts} +9 -9
- package/dist/{progress-ring-BEocM1e3.js → progress-ring-Cgii90dC.js} +1 -1
- package/dist/{provider-logos-zjZycgV6.js → provider-logos-DWYY8wNz.js} +31 -6
- package/dist/styles/action-guide.css +4 -0
- package/dist/styles/agent-attention.css +5 -1
- package/dist/styles/agent-chat.css +21 -18
- package/dist/styles/agent-event.css +14 -0
- package/dist/styles/app-icon.css +21 -0
- package/dist/styles/avatar.css +2 -1
- package/dist/styles/base.css +4 -0
- package/dist/styles/brand-marks.css +22 -0
- package/dist/styles/button.css +10 -0
- package/dist/styles/composer-link.css +99 -0
- package/dist/styles/connected-app-card.css +9 -0
- package/dist/styles/github-motion-mark.css +8 -1
- package/dist/styles/index.css +3 -0
- package/dist/styles/manager-office.css +1313 -73
- package/dist/styles/mcp-plugin-catalog.css +4 -0
- package/dist/styles/mcp-server-picker.css +2 -0
- package/dist/styles/message-scroller.css +5 -0
- package/dist/styles/prompt-input.css +14 -53
- package/dist/styles/responsive-sidebar-shell.css +47 -0
- package/dist/styles/subagent-run.css +29 -19
- package/dist/styles/think-full-app.css +139 -4
- package/dist/styles/think-sidepanel.css +9 -5
- package/dist/styles/think-thread-picker.css +13 -12
- package/dist/styles/workspace-mount-manager.css +0 -22
- package/dist/utils/composer-link.d.ts +59 -0
- package/dist/utils/composer-link.js +203 -0
- package/dist/utils/mcp-server-catalog.d.ts +1 -1
- package/dist/utils/mcp-server-catalog.js +9 -9
- package/package.json +8 -8
|
@@ -225,6 +225,10 @@
|
|
|
225
225
|
gap: var(--sigvelo-spacing-3-5);
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
+
.mcp-plugin-details__identity :is(img, .app-icon__image) {
|
|
229
|
+
color: unset;
|
|
230
|
+
}
|
|
231
|
+
|
|
228
232
|
.mcp-plugin-details__identity > .separator {
|
|
229
233
|
block-size: var(--sigvelo-spacing-8);
|
|
230
234
|
background-color: color-mix(in oklab, currentcolor, transparent 30%);
|
|
@@ -55,6 +55,8 @@
|
|
|
55
55
|
justify-content: center;
|
|
56
56
|
inline-size: var(--sigvelo-control-icon-size-lg);
|
|
57
57
|
block-size: var(--sigvelo-control-icon-size-lg);
|
|
58
|
+
/* Lucide and monochrome protocol marks tint from this. Hardcoded brand
|
|
59
|
+
fills ignore it; Discord sets its own color on the mark. */
|
|
58
60
|
color: var(--sigvelo-color-text-muted);
|
|
59
61
|
}
|
|
60
62
|
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
contain: content;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
.message-scroller__viewport:focus-visible {
|
|
25
|
+
outline: none;
|
|
26
|
+
box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
|
|
27
|
+
}
|
|
28
|
+
|
|
24
29
|
.message-scroller__viewport[data-scrollable~="end"] {
|
|
25
30
|
--sigvelo-scroll-fade-end: var(--message-scroller-fade-size);
|
|
26
31
|
}
|
|
@@ -212,14 +212,22 @@
|
|
|
212
212
|
font-family: inherit;
|
|
213
213
|
font-size: var(--sigvelo-density-compact-control-font-size);
|
|
214
214
|
line-height: var(--sigvelo-leading-normal);
|
|
215
|
+
white-space: pre-wrap;
|
|
216
|
+
overflow-wrap: anywhere;
|
|
215
217
|
resize: none;
|
|
216
218
|
overflow-block: hidden;
|
|
217
219
|
}
|
|
218
220
|
|
|
219
|
-
.prompt-input__textarea::placeholder
|
|
221
|
+
.prompt-input__textarea::placeholder,
|
|
222
|
+
.prompt-input__textarea[data-empty]::before {
|
|
220
223
|
color: var(--sigvelo-control-placeholder-color);
|
|
221
224
|
}
|
|
222
225
|
|
|
226
|
+
.prompt-input__textarea[data-empty]::before {
|
|
227
|
+
content: attr(data-placeholder);
|
|
228
|
+
pointer-events: none;
|
|
229
|
+
}
|
|
230
|
+
|
|
223
231
|
.prompt-input__textarea:focus,
|
|
224
232
|
.prompt-input__textarea:focus-visible {
|
|
225
233
|
border: none;
|
|
@@ -553,11 +561,15 @@
|
|
|
553
561
|
flex: 0 0 auto;
|
|
554
562
|
}
|
|
555
563
|
|
|
556
|
-
.prompt-input__command-icon > svg {
|
|
564
|
+
.prompt-input__command-icon > :is(svg, img, .app-icon) {
|
|
557
565
|
inline-size: var(--sigvelo-density-compact-control-icon-size);
|
|
558
566
|
block-size: var(--sigvelo-density-compact-control-icon-size);
|
|
559
567
|
}
|
|
560
568
|
|
|
569
|
+
.prompt-input__command-icon :is(img, .app-icon__image) {
|
|
570
|
+
color: unset;
|
|
571
|
+
}
|
|
572
|
+
|
|
561
573
|
.prompt-input__command-copy {
|
|
562
574
|
display: grid;
|
|
563
575
|
grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
|
|
@@ -584,51 +596,6 @@
|
|
|
584
596
|
overflow-wrap: anywhere;
|
|
585
597
|
}
|
|
586
598
|
|
|
587
|
-
.prompt-input__references {
|
|
588
|
-
display: flex;
|
|
589
|
-
flex-wrap: wrap;
|
|
590
|
-
gap: var(--sigvelo-spacing-1);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.prompt-input__reference {
|
|
594
|
-
position: relative;
|
|
595
|
-
gap: var(--sigvelo-spacing-1);
|
|
596
|
-
padding-inline: var(--sigvelo-spacing-1);
|
|
597
|
-
color: var(--sigvelo-color-primary-text);
|
|
598
|
-
font-weight: inherit;
|
|
599
|
-
font-size: var(--sigvelo-density-compact-control-font-size);
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
.prompt-input__reference-icon,
|
|
603
|
-
.prompt-input__reference-remove {
|
|
604
|
-
display: inline-flex;
|
|
605
|
-
flex: 0 0 auto;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
.prompt-input__reference-label {
|
|
609
|
-
max-inline-size: 18rem;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
.prompt-input__reference-remove {
|
|
613
|
-
position: absolute;
|
|
614
|
-
inset-inline-end: calc(-1 * var(--sigvelo-spacing-3));
|
|
615
|
-
color: var(--sigvelo-color-text-muted);
|
|
616
|
-
opacity: 0;
|
|
617
|
-
pointer-events: none;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
.prompt-input__reference:hover .prompt-input__reference-remove,
|
|
621
|
-
.prompt-input__reference:focus-visible .prompt-input__reference-remove {
|
|
622
|
-
opacity: 1;
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
/* Local wrap. Not --sigvelo-layout-break-compact. */
|
|
626
|
-
@container prompt-input (inline-size < 28rem) {
|
|
627
|
-
.prompt-input__reference-label {
|
|
628
|
-
max-inline-size: 12rem;
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
|
|
632
599
|
.prompt-input__command-description,
|
|
633
600
|
.prompt-input__context-description {
|
|
634
601
|
color: var(--sigvelo-color-text-muted);
|
|
@@ -674,7 +641,6 @@
|
|
|
674
641
|
.prompt-input__button,
|
|
675
642
|
.prompt-input__attachment-remove,
|
|
676
643
|
.prompt-input__recording-button,
|
|
677
|
-
.prompt-input__reference,
|
|
678
644
|
.prompt-input__submit {
|
|
679
645
|
--sigvelo-recipe-button-height: var(--sigvelo-control-height-xl);
|
|
680
646
|
}
|
|
@@ -690,11 +656,6 @@
|
|
|
690
656
|
min-block-size: var(--sigvelo-control-height-xl);
|
|
691
657
|
}
|
|
692
658
|
|
|
693
|
-
.prompt-input__reference-remove {
|
|
694
|
-
position: static;
|
|
695
|
-
opacity: 1;
|
|
696
|
-
}
|
|
697
|
-
|
|
698
659
|
.prompt-input__attachment[data-image] .prompt-input__attachment-remove {
|
|
699
660
|
position: static;
|
|
700
661
|
}
|
|
@@ -40,6 +40,26 @@
|
|
|
40
40
|
overflow: hidden;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
.responsive-sidebar-shell__sidebar-content {
|
|
44
|
+
min-inline-size: 0;
|
|
45
|
+
min-block-size: 0;
|
|
46
|
+
overflow: hidden;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"]
|
|
50
|
+
.responsive-sidebar-shell__sidebar {
|
|
51
|
+
display: grid;
|
|
52
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.responsive-sidebar-shell__sidebar-leading {
|
|
56
|
+
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
padding-block: var(--sigvelo-spacing-1);
|
|
60
|
+
padding-inline: var(--sigvelo-spacing-2);
|
|
61
|
+
}
|
|
62
|
+
|
|
43
63
|
.responsive-sidebar-shell__sidebar {
|
|
44
64
|
grid-column: 1;
|
|
45
65
|
grid-row: 1;
|
|
@@ -101,6 +121,15 @@
|
|
|
101
121
|
display: none;
|
|
102
122
|
}
|
|
103
123
|
|
|
124
|
+
.responsive-sidebar-shell__toggle--sidebar-fallback {
|
|
125
|
+
display: none;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"][data-sidebar-open="false"]
|
|
129
|
+
.responsive-sidebar-shell__toggle--sidebar-fallback {
|
|
130
|
+
display: inline-flex;
|
|
131
|
+
}
|
|
132
|
+
|
|
104
133
|
@media (forced-colors: active) {
|
|
105
134
|
.responsive-sidebar-shell,
|
|
106
135
|
.responsive-sidebar-shell__frame {
|
|
@@ -193,6 +222,20 @@
|
|
|
193
222
|
display: none;
|
|
194
223
|
}
|
|
195
224
|
|
|
225
|
+
/* The closed-sidebar fallback has a deliberately specific wide-layout
|
|
226
|
+
selector above. When the compact title owns drawer disclosure, beat that
|
|
227
|
+
selector explicitly so the bar never presents two controls for one action. */
|
|
228
|
+
.responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"][data-sidebar-open="false"]
|
|
229
|
+
[data-compact-leading]
|
|
230
|
+
.responsive-sidebar-shell__toggle--sidebar-fallback {
|
|
231
|
+
display: none;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.responsive-sidebar-shell[data-sidebar-toggle-placement="sidebar"]
|
|
235
|
+
.responsive-sidebar-shell__sidebar-leading {
|
|
236
|
+
display: none;
|
|
237
|
+
}
|
|
238
|
+
|
|
196
239
|
.responsive-sidebar-shell__compact-leading {
|
|
197
240
|
display: contents;
|
|
198
241
|
}
|
|
@@ -211,6 +254,10 @@
|
|
|
211
254
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
212
255
|
}
|
|
213
256
|
|
|
257
|
+
.responsive-sidebar-shell__title-trigger:focus-visible {
|
|
258
|
+
box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
|
|
259
|
+
}
|
|
260
|
+
|
|
214
261
|
.responsive-sidebar-shell__title-trigger span {
|
|
215
262
|
min-inline-size: 0;
|
|
216
263
|
overflow: hidden;
|
|
@@ -2,14 +2,39 @@
|
|
|
2
2
|
--sigvelo-elevation-floating, not a border. Forced colors restores a real
|
|
3
3
|
border at the end of this file. */
|
|
4
4
|
.subagent-run__selector {
|
|
5
|
-
max-inline-size:
|
|
5
|
+
max-inline-size: 18rem;
|
|
6
|
+
/* Two text lines (name over live status) inside a pill: the control's fixed
|
|
7
|
+
small height would clip the second, so let the content size it. */
|
|
8
|
+
block-size: auto;
|
|
9
|
+
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
10
|
+
padding-block: var(--sigvelo-spacing-1);
|
|
6
11
|
justify-content: flex-start;
|
|
7
|
-
border-radius: var(--sigvelo-radius-
|
|
12
|
+
border-radius: var(--sigvelo-radius-lg);
|
|
8
13
|
background-color: var(--sigvelo-color-surface-raised);
|
|
9
14
|
box-shadow: var(--sigvelo-elevation-floating);
|
|
10
15
|
text-align: start;
|
|
11
16
|
}
|
|
12
17
|
|
|
18
|
+
/* The run's name over its live status line. Shared by the selector chip and
|
|
19
|
+
the drill-in's top bar so one run reads the same in both. */
|
|
20
|
+
.subagent-run__text {
|
|
21
|
+
display: grid;
|
|
22
|
+
flex: 1 1 auto;
|
|
23
|
+
min-inline-size: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.subagent-run__status {
|
|
27
|
+
color: var(--sigvelo-color-text-muted);
|
|
28
|
+
font-size: var(--sigvelo-text-xs);
|
|
29
|
+
font-weight: var(--sigvelo-font-weight-normal);
|
|
30
|
+
line-height: var(--sigvelo-leading-snug);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Scoped to the label, not the chip, so the drill-in bar tints the same. */
|
|
34
|
+
.subagent-run__text[data-status="error"] .subagent-run__status {
|
|
35
|
+
color: var(--sigvelo-color-danger-text);
|
|
36
|
+
}
|
|
37
|
+
|
|
13
38
|
/* The ghost hover would swap the raised surface for a near-transparent tint;
|
|
14
39
|
keep the surface and tint over it instead. */
|
|
15
40
|
.subagent-run__selector:hover:not([data-disabled]) {
|
|
@@ -42,29 +67,14 @@
|
|
|
42
67
|
margin-block-start: var(--sigvelo-spacing-2);
|
|
43
68
|
}
|
|
44
69
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
gap: var(--sigvelo-spacing-1-5);
|
|
48
|
-
min-inline-size: 0;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.subagent-run__tray-label {
|
|
52
|
-
color: var(--sigvelo-color-text-muted);
|
|
53
|
-
font-size: var(--sigvelo-text-xs);
|
|
54
|
-
line-height: var(--sigvelo-leading-snug);
|
|
55
|
-
}
|
|
56
|
-
|
|
70
|
+
/* Size comes from the surrounding control — the selector's button recipe, the
|
|
71
|
+
top bar's title — so one label keeps each surface's own type scale. */
|
|
57
72
|
.subagent-run__title {
|
|
58
73
|
min-inline-size: 0;
|
|
59
74
|
color: var(--sigvelo-color-text);
|
|
60
|
-
font-size: var(--sigvelo-text-sm);
|
|
61
75
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
62
76
|
}
|
|
63
77
|
|
|
64
|
-
.subagent-run__selector .subagent-run__title {
|
|
65
|
-
font-size: var(--sigvelo-text-compact);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
78
|
.subagent-run__indicator {
|
|
69
79
|
display: inline-flex;
|
|
70
80
|
flex: 0 0 auto;
|
|
@@ -1,9 +1,68 @@
|
|
|
1
|
+
.think-full-app-shell {
|
|
2
|
+
--think-full-app-panel-outline: color-mix(in srgb, var(--sigvelo-color-text) 14%, transparent);
|
|
3
|
+
--sigvelo-color-surface: light-dark(
|
|
4
|
+
var(--sigvelo-color-surface-light),
|
|
5
|
+
var(--sigvelo-color-surface-under-dark)
|
|
6
|
+
);
|
|
7
|
+
--sigvelo-color-surface-raised: light-dark(
|
|
8
|
+
var(--sigvelo-color-surface-raised-light),
|
|
9
|
+
var(--sigvelo-color-surface-under-dark)
|
|
10
|
+
);
|
|
11
|
+
--sigvelo-color-neutral-bg-subtle: light-dark(
|
|
12
|
+
var(--sigvelo-color-neutral-bg-subtle-light),
|
|
13
|
+
rgb(255 255 255 / 4%)
|
|
14
|
+
);
|
|
15
|
+
--responsive-sidebar-shell-sidebar-surface: light-dark(
|
|
16
|
+
var(--sigvelo-color-surface-raised),
|
|
17
|
+
var(--sigvelo-color-surface-under)
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
background: var(--sigvelo-color-surface-under);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.think-full-app-shell > .responsive-sidebar-shell__frame > .responsive-sidebar-shell__sidebar {
|
|
24
|
+
border-inline-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
25
|
+
var(--sigvelo-color-neutral-border-subtle);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.think-full-app-shell .responsive-sidebar-shell__main {
|
|
29
|
+
background: var(--sigvelo-color-surface);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* The thread rail owns its wide-layout toggle. Seat it in the picker's header
|
|
33
|
+
instead of reserving a second row above the sidebar content. */
|
|
34
|
+
.think-full-app-shell[data-sidebar-toggle-placement="sidebar"] .responsive-sidebar-shell__sidebar {
|
|
35
|
+
position: relative;
|
|
36
|
+
display: block;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.think-full-app-shell[data-sidebar-toggle-placement="sidebar"]
|
|
40
|
+
.responsive-sidebar-shell__sidebar-content {
|
|
41
|
+
block-size: 100%;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.think-full-app-shell[data-sidebar-toggle-placement="sidebar"]
|
|
45
|
+
.responsive-sidebar-shell__sidebar-leading {
|
|
46
|
+
position: absolute;
|
|
47
|
+
inset-block-start: var(--sigvelo-spacing-1);
|
|
48
|
+
inset-inline-end: var(--sigvelo-spacing-2);
|
|
49
|
+
z-index: var(--sigvelo-z-chrome);
|
|
50
|
+
min-block-size: var(--sigvelo-density-compact-control-height);
|
|
51
|
+
padding: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.think-full-app-shell[data-sidebar-toggle-placement="sidebar"] .think-thread-picker__header {
|
|
55
|
+
padding-inline-end: calc(
|
|
56
|
+
var(--sigvelo-layout-gutter) + var(--sigvelo-density-compact-control-height)
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
1
60
|
.think-full-app {
|
|
2
61
|
position: relative;
|
|
3
62
|
container: think-full-app / inline-size;
|
|
4
63
|
display: grid;
|
|
5
64
|
grid-template-rows: var(--sigvelo-layout-track-fill);
|
|
6
|
-
background:
|
|
65
|
+
background: transparent;
|
|
7
66
|
color: var(--sigvelo-color-text);
|
|
8
67
|
font-family: inherit;
|
|
9
68
|
}
|
|
@@ -18,6 +77,7 @@
|
|
|
18
77
|
grid-template-columns: auto var(--sigvelo-layout-track-fill);
|
|
19
78
|
grid-template-rows: var(--sigvelo-layout-track-fill);
|
|
20
79
|
margin: var(--sigvelo-layout-gutter);
|
|
80
|
+
overflow: visible;
|
|
21
81
|
}
|
|
22
82
|
|
|
23
83
|
.think-full-app__view-switch {
|
|
@@ -26,6 +86,10 @@
|
|
|
26
86
|
background: transparent;
|
|
27
87
|
}
|
|
28
88
|
|
|
89
|
+
.think-full-app__compact-view-menu {
|
|
90
|
+
display: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
29
93
|
.think-full-app__chat-surface {
|
|
30
94
|
grid-column: 1;
|
|
31
95
|
grid-row: 1;
|
|
@@ -66,6 +130,21 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
66
130
|
grid-template-rows: var(--sigvelo-layout-track-fill) auto;
|
|
67
131
|
}
|
|
68
132
|
|
|
133
|
+
/* The raised workbench establishes the desktop bottom gutter. Keep the
|
|
134
|
+
floating composer on that same baseline and give it the same quiet edge. */
|
|
135
|
+
.think-full-app-shell .agent-chat__composer {
|
|
136
|
+
padding-block-end: max(var(--sigvelo-spacing-1), env(safe-area-inset-bottom, 0px));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.think-full-app-shell .agent-chat__composer > .prompt-input {
|
|
140
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
141
|
+
var(--think-full-app-panel-outline);
|
|
142
|
+
background: light-dark(
|
|
143
|
+
var(--sigvelo-color-surface-raised-light),
|
|
144
|
+
var(--sigvelo-color-surface-raised-dark)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
69
148
|
/* Transparent column: the aside positions the plane, it is not a material of
|
|
70
149
|
its own. */
|
|
71
150
|
.think-full-app__aside {
|
|
@@ -87,6 +166,16 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
87
166
|
translate: calc(var(--sigvelo-layout-gap) * 1.5) 0;
|
|
88
167
|
}
|
|
89
168
|
|
|
169
|
+
/* Keep the resize target generous without painting a full-height rule beside
|
|
170
|
+
the rounded panel. A short grip appears only on hover, focus, or drag. */
|
|
171
|
+
.think-full-app__resizer::before {
|
|
172
|
+
inset-block: 50% auto;
|
|
173
|
+
block-size: calc(var(--sigvelo-spacing-6) * 2);
|
|
174
|
+
inline-size: 2px;
|
|
175
|
+
border-radius: var(--sigvelo-radius-full);
|
|
176
|
+
translate: -50% -50%;
|
|
177
|
+
}
|
|
178
|
+
|
|
90
179
|
.think-full-app__workbench-slot,
|
|
91
180
|
.think-full-app__workbench,
|
|
92
181
|
.think-full-app__workbench-panel {
|
|
@@ -100,9 +189,11 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
100
189
|
|
|
101
190
|
/* The app's one raised plane. Panels fill it and never draw a second edge. */
|
|
102
191
|
.think-full-app__workbench-slot {
|
|
103
|
-
border
|
|
104
|
-
|
|
105
|
-
|
|
192
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
193
|
+
var(--think-full-app-panel-outline);
|
|
194
|
+
border-radius: var(--sigvelo-radius-xl);
|
|
195
|
+
background: light-dark(var(--sigvelo-color-surface-raised), var(--sigvelo-color-surface-under));
|
|
196
|
+
box-shadow: var(--sigvelo-elevation-bar);
|
|
106
197
|
}
|
|
107
198
|
|
|
108
199
|
/* The panel stands in for itself while its first read is in flight, so the
|
|
@@ -136,6 +227,7 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
136
227
|
grid-template-columns: var(--sigvelo-layout-track-fill);
|
|
137
228
|
margin: 0;
|
|
138
229
|
overflow: hidden;
|
|
230
|
+
background: var(--sigvelo-color-surface);
|
|
139
231
|
}
|
|
140
232
|
|
|
141
233
|
.think-full-app__aside {
|
|
@@ -155,6 +247,7 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
155
247
|
themselves raised are defined after this stylesheet. */
|
|
156
248
|
.think-full-app__workbench-slot,
|
|
157
249
|
.think-full-app .think-full-app__workbench {
|
|
250
|
+
border: 0;
|
|
158
251
|
border-radius: 0;
|
|
159
252
|
background: var(--sigvelo-color-surface);
|
|
160
253
|
box-shadow: none;
|
|
@@ -197,6 +290,48 @@ body.is-resizing-side-panel .think-full-app__chat-surface {
|
|
|
197
290
|
}
|
|
198
291
|
}
|
|
199
292
|
|
|
293
|
+
@container responsive-sidebar-shell (inline-size <= 56rem) {
|
|
294
|
+
.think-full-app-shell[data-sidebar-toggle-placement="sidebar"]
|
|
295
|
+
.responsive-sidebar-shell__sidebar {
|
|
296
|
+
display: grid;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.think-full-app-shell > .responsive-sidebar-shell__frame > .responsive-sidebar-shell__sidebar {
|
|
300
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
301
|
+
color-mix(in srgb, var(--sigvelo-color-text) 24%, transparent);
|
|
302
|
+
box-shadow:
|
|
303
|
+
0 0 0 1px color-mix(in srgb, var(--sigvelo-color-surface) 36%, transparent),
|
|
304
|
+
var(--sigvelo-elevation-overlay);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.think-full-app__app-bar {
|
|
308
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.think-full-app__app-bar .app-top-bar__title {
|
|
312
|
+
inline-size: auto;
|
|
313
|
+
max-inline-size: min(20rem, 60vw);
|
|
314
|
+
justify-self: center;
|
|
315
|
+
text-align: center;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.think-full-app__view-switch {
|
|
319
|
+
display: none;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.think-full-app__compact-view-menu {
|
|
323
|
+
display: flex;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.think-full-app-shell .agent-chat__composer {
|
|
327
|
+
padding-block-end: max(var(--sigvelo-spacing-3), env(safe-area-inset-bottom, 0px));
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.think-full-app-shell :is(.think-full-app__chat, .think-full-app__chat-inner) {
|
|
331
|
+
--agent-chat-column-inset: var(--sigvelo-spacing-4);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
200
335
|
@media (forced-colors: active) {
|
|
201
336
|
.think-full-app,
|
|
202
337
|
.think-full-app__chat-surface,
|
|
@@ -44,11 +44,6 @@
|
|
|
44
44
|
font: inherit;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.think-sidepanel__run-title > svg,
|
|
48
|
-
.think-sidepanel__run-title > .nanite-mark {
|
|
49
|
-
flex: none;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
47
|
.think-sidepanel__menu-switch-item {
|
|
53
48
|
justify-content: space-between;
|
|
54
49
|
gap: var(--sigvelo-spacing-3);
|
|
@@ -65,6 +60,15 @@
|
|
|
65
60
|
color: var(--sigvelo-color-text-muted);
|
|
66
61
|
}
|
|
67
62
|
|
|
63
|
+
.think-sidepanel .app-icon-stack .app-icon :is(img, .app-icon__image) {
|
|
64
|
+
color: unset;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.think-sidepanel .button .app-icon-stack .app-icon :is(svg, img) {
|
|
68
|
+
inline-size: 100%;
|
|
69
|
+
block-size: 100%;
|
|
70
|
+
}
|
|
71
|
+
|
|
68
72
|
@media (forced-colors: active) {
|
|
69
73
|
.think-sidepanel,
|
|
70
74
|
.think-sidepanel__gate {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
.think-thread-picker {
|
|
2
|
+
box-sizing: border-box;
|
|
2
3
|
inline-size: 100%;
|
|
3
4
|
block-size: 100%;
|
|
4
5
|
min-block-size: 0;
|
|
@@ -6,6 +7,7 @@
|
|
|
6
7
|
grid-template-rows: auto auto var(--sigvelo-layout-track-fill) auto;
|
|
7
8
|
overflow: hidden;
|
|
8
9
|
border-inline-end: 0;
|
|
10
|
+
padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2) var(--sigvelo-spacing-2);
|
|
9
11
|
/* No material of its own: it fills whatever holds it — the shell's rail, the
|
|
10
12
|
compact drawer, a host's own panel — and painting a colour here would
|
|
11
13
|
cover the one that surface chose. */
|
|
@@ -28,17 +30,17 @@
|
|
|
28
30
|
min-inline-size: 0;
|
|
29
31
|
margin: 0;
|
|
30
32
|
flex: 1 1 auto;
|
|
31
|
-
color: var(--sigvelo-color-text
|
|
32
|
-
font-size: var(--sigvelo-
|
|
33
|
+
color: var(--sigvelo-color-text);
|
|
34
|
+
font-size: var(--sigvelo-text-compact);
|
|
33
35
|
font-weight: var(--sigvelo-font-weight-semibold);
|
|
34
|
-
line-height: var(--sigvelo-leading
|
|
36
|
+
line-height: var(--sigvelo-text-compact-leading);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
.think-thread-picker__search {
|
|
38
40
|
--sigvelo-recipe-control-height: var(--sigvelo-density-compact-control-height);
|
|
39
41
|
--sigvelo-recipe-control-radius: var(--sigvelo-radius-sm);
|
|
40
42
|
|
|
41
|
-
padding: 0
|
|
43
|
+
padding: 0 0 var(--sigvelo-spacing-2);
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
.think-thread-status-indicators {
|
|
@@ -92,7 +94,8 @@
|
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
.think-thread-picker__viewport {
|
|
95
|
-
padding: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter)
|
|
97
|
+
padding-block: var(--sigvelo-layout-cluster) var(--sigvelo-layout-gutter);
|
|
98
|
+
padding-inline: 0;
|
|
96
99
|
overscroll-behavior: contain;
|
|
97
100
|
scrollbar-gutter: stable;
|
|
98
101
|
}
|
|
@@ -305,6 +308,7 @@
|
|
|
305
308
|
block-size: auto;
|
|
306
309
|
max-block-size: inherit;
|
|
307
310
|
grid-template-rows: auto auto auto;
|
|
311
|
+
padding: var(--sigvelo-spacing-1) var(--sigvelo-spacing-2) var(--sigvelo-spacing-2);
|
|
308
312
|
}
|
|
309
313
|
|
|
310
314
|
.think-thread-picker__header {
|
|
@@ -316,14 +320,11 @@
|
|
|
316
320
|
--sigvelo-recipe-control-font-size: var(--sigvelo-density-compact-control-font-size);
|
|
317
321
|
--sigvelo-recipe-control-icon-size: var(--sigvelo-density-compact-control-icon-size);
|
|
318
322
|
|
|
319
|
-
padding: 0 var(--sigvelo-spacing-
|
|
320
|
-
border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
321
|
-
var(--sigvelo-color-neutral-border-subtle);
|
|
323
|
+
padding: 0 0 var(--sigvelo-spacing-2);
|
|
322
324
|
}
|
|
323
325
|
|
|
324
|
-
.think-thread-picker__search .field__control {
|
|
325
|
-
|
|
326
|
-
background: transparent;
|
|
326
|
+
.think-thread-picker__search .field__control:focus-visible {
|
|
327
|
+
box-shadow: var(--sigvelo-recipe-focus-shadow-inset);
|
|
327
328
|
}
|
|
328
329
|
|
|
329
330
|
.think-thread-picker__nav,
|
|
@@ -335,7 +336,7 @@
|
|
|
335
336
|
}
|
|
336
337
|
|
|
337
338
|
.think-thread-picker__viewport {
|
|
338
|
-
padding: var(--sigvelo-spacing-1);
|
|
339
|
+
padding: var(--sigvelo-spacing-1) 0;
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
|
|
@@ -22,25 +22,3 @@
|
|
|
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
|
-
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//#region src/utils/composer-link.d.ts
|
|
2
|
+
declare const COMPOSER_LINK_ORIGIN = "https://composer.invalid";
|
|
3
|
+
declare const COMPOSER_LINK_KINDS: readonly ["command", "mcp", "skill", "tab", "file"];
|
|
4
|
+
type ComposerLinkKind = (typeof COMPOSER_LINK_KINDS)[number];
|
|
5
|
+
declare const COMPOSER_CHROME_ICONS: readonly ["box"];
|
|
6
|
+
type ComposerChromeIcon = (typeof COMPOSER_CHROME_ICONS)[number];
|
|
7
|
+
interface ComposerLinkParts {
|
|
8
|
+
kind: ComposerLinkKind;
|
|
9
|
+
value: string;
|
|
10
|
+
label?: string;
|
|
11
|
+
iconSrc?: string;
|
|
12
|
+
chromeIcon?: ComposerChromeIcon;
|
|
13
|
+
}
|
|
14
|
+
interface ParsedComposerLink extends ComposerLinkParts {
|
|
15
|
+
href: string;
|
|
16
|
+
label: string;
|
|
17
|
+
}
|
|
18
|
+
type ComposerDraftSegment = {
|
|
19
|
+
type: "text";
|
|
20
|
+
value: string;
|
|
21
|
+
} | {
|
|
22
|
+
type: "link";
|
|
23
|
+
href: string;
|
|
24
|
+
label: string;
|
|
25
|
+
parts: ParsedComposerLink;
|
|
26
|
+
};
|
|
27
|
+
declare function isComposerLinkKind(value: string): value is ComposerLinkKind;
|
|
28
|
+
declare function isComposerChromeIcon(value: string): value is ComposerChromeIcon;
|
|
29
|
+
declare function composerLinkHref(parts: ComposerLinkParts): string;
|
|
30
|
+
declare function parseComposerHref(href: string | undefined): ParsedComposerLink | undefined;
|
|
31
|
+
declare function escapeComposerLinkLabel(label: string): string;
|
|
32
|
+
/** Brand hex from a Simple Icons URL, skipped when it would vanish as text. */
|
|
33
|
+
declare function brandHexFromIconSrc(src: string | undefined): string | undefined;
|
|
34
|
+
/** Most chromatic opaque pixel, skipped when the mark is charcoal, white, or gray. */
|
|
35
|
+
declare function chromaticHexFromPixels(data: Uint8ClampedArray): string | undefined;
|
|
36
|
+
declare function sampleImageAccent(image: HTMLImageElement): string | undefined;
|
|
37
|
+
declare function serializeComposerLink(parts: ComposerLinkParts & {
|
|
38
|
+
label: string;
|
|
39
|
+
}): string;
|
|
40
|
+
declare function splitComposerDraft(text: string): ComposerDraftSegment[];
|
|
41
|
+
declare function parseComposerLinks(text: string): ParsedComposerLink[];
|
|
42
|
+
declare function composerTriggerMatch(text: string): {
|
|
43
|
+
trigger: "/" | "@";
|
|
44
|
+
query: string;
|
|
45
|
+
triggerIndex: number;
|
|
46
|
+
} | undefined;
|
|
47
|
+
declare function inferComposerLinkKind(command: {
|
|
48
|
+
id?: string;
|
|
49
|
+
}, trigger: "/" | "@"): ComposerLinkKind;
|
|
50
|
+
declare function replaceComposerTrigger(draft: string, command: {
|
|
51
|
+
id?: string;
|
|
52
|
+
value: string;
|
|
53
|
+
label: string;
|
|
54
|
+
href?: string;
|
|
55
|
+
iconSrc?: string;
|
|
56
|
+
}, trigger: "/" | "@"): string;
|
|
57
|
+
declare function composerDraftToPrompt(text: string): string;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { COMPOSER_CHROME_ICONS, COMPOSER_LINK_KINDS, COMPOSER_LINK_ORIGIN, ComposerChromeIcon, ComposerDraftSegment, ComposerLinkKind, ComposerLinkParts, ParsedComposerLink, brandHexFromIconSrc, chromaticHexFromPixels, composerDraftToPrompt, composerLinkHref, composerTriggerMatch, escapeComposerLinkLabel, inferComposerLinkKind, isComposerChromeIcon, isComposerLinkKind, parseComposerHref, parseComposerLinks, replaceComposerTrigger, sampleImageAccent, serializeComposerLink, splitComposerDraft };
|