@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
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
2
|
import { Collapsible } from "../foundations/Collapsible.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as CopyButton } from "../../copy-button-
|
|
5
|
-
import { Badge } from "../foundations/Badge.js";
|
|
3
|
+
import { S as FileIcon, p as ChevronRightIcon } from "../../icons-CVFSeTJn.js";
|
|
4
|
+
import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
|
|
6
5
|
import { Avatar } from "../foundations/Avatar.js";
|
|
7
6
|
import "react";
|
|
8
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
8
|
//#region src/components/general-purpose/Commit.tsx
|
|
10
|
-
const FILE_STATUS_COLOR = {
|
|
11
|
-
added: "success",
|
|
12
|
-
modified: "warning",
|
|
13
|
-
deleted: "destructive",
|
|
14
|
-
renamed: "primary"
|
|
15
|
-
};
|
|
16
9
|
const FILE_STATUS_LABEL = {
|
|
17
10
|
added: "A",
|
|
18
11
|
modified: "M",
|
|
@@ -27,7 +20,7 @@ const FILE_STATUS_LABEL = {
|
|
|
27
20
|
* summaries with expandable file details. Do not use it as a generic
|
|
28
21
|
* accordion; use Collapsible or Accordion directly.
|
|
29
22
|
*
|
|
30
|
-
* Styling consumes Sigvelo surface, border, spacing, radius,
|
|
23
|
+
* Styling consumes Sigvelo surface, border, spacing, radius, status, and focus
|
|
31
24
|
* tokens. Add shared metadata/file affordances here instead of forking commit
|
|
32
25
|
* cards in apps.
|
|
33
26
|
*
|
|
@@ -197,12 +190,11 @@ function CommitFile({ className, children, ref, ...props }) {
|
|
|
197
190
|
});
|
|
198
191
|
}
|
|
199
192
|
function CommitFileStatus({ className, status, ref, ...props }) {
|
|
200
|
-
return /* @__PURE__ */ jsx(
|
|
193
|
+
return /* @__PURE__ */ jsx("span", {
|
|
201
194
|
...props,
|
|
202
195
|
ref,
|
|
203
|
-
color: FILE_STATUS_COLOR[status],
|
|
204
|
-
size: "sm",
|
|
205
196
|
className: cx("commit__file-status", className),
|
|
197
|
+
"data-status": status,
|
|
206
198
|
"aria-label": status,
|
|
207
199
|
children: FILE_STATUS_LABEL[status]
|
|
208
200
|
});
|
|
@@ -22,7 +22,7 @@ interface EnvironmentVariablesProps extends React.HTMLAttributes<HTMLDivElement>
|
|
|
22
22
|
* environment keys and copyable values. Do not treat masking as a security
|
|
23
23
|
* boundary; do not render secrets for users who are not allowed to see them.
|
|
24
24
|
*
|
|
25
|
-
* Sigvelo changes: composes
|
|
25
|
+
* Sigvelo changes: composes Button, Switch, and Tooltip; maps copy and
|
|
26
26
|
* reveal controls to Sigvelo CSS tokens; keeps masking local to the component.
|
|
27
27
|
*
|
|
28
28
|
* Values need visible labels and copy buttons need accessible labels. Styling
|
|
@@ -156,7 +156,7 @@ declare function EnvironmentVariableCopyButton({
|
|
|
156
156
|
timeout,
|
|
157
157
|
...props
|
|
158
158
|
}: EnvironmentVariableCopyButtonProps): React.JSX.Element;
|
|
159
|
-
interface EnvironmentVariableRequiredProps extends
|
|
159
|
+
interface EnvironmentVariableRequiredProps extends React.HTMLAttributes<HTMLSpanElement> {}
|
|
160
160
|
declare function EnvironmentVariableRequired({
|
|
161
161
|
className,
|
|
162
162
|
children,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as CopyButton } from "../../copy-button-
|
|
4
|
-
import { Badge } from "../foundations/Badge.js";
|
|
2
|
+
import { b as EyeIcon, x as EyeOffIcon } from "../../icons-CVFSeTJn.js";
|
|
3
|
+
import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
|
|
5
4
|
import { Switch } from "../foundations/Switch.js";
|
|
6
5
|
import * as React from "react";
|
|
7
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -26,7 +25,7 @@ function useVariableContext() {
|
|
|
26
25
|
* environment keys and copyable values. Do not treat masking as a security
|
|
27
26
|
* boundary; do not render secrets for users who are not allowed to see them.
|
|
28
27
|
*
|
|
29
|
-
* Sigvelo changes: composes
|
|
28
|
+
* Sigvelo changes: composes Button, Switch, and Tooltip; maps copy and
|
|
30
29
|
* reveal controls to Sigvelo CSS tokens; keeps masking local to the component.
|
|
31
30
|
*
|
|
32
31
|
* Values need visible labels and copy buttons need accessible labels. Styling
|
|
@@ -185,11 +184,9 @@ function EnvironmentVariableCopyButton({ className, format = "value", label, onC
|
|
|
185
184
|
});
|
|
186
185
|
}
|
|
187
186
|
function EnvironmentVariableRequired({ className, children, ref, ...props }) {
|
|
188
|
-
return /* @__PURE__ */ jsx(
|
|
187
|
+
return /* @__PURE__ */ jsx("span", {
|
|
189
188
|
...props,
|
|
190
189
|
ref,
|
|
191
|
-
color: "warning",
|
|
192
|
-
size: "sm",
|
|
193
190
|
className: cx("environment-variables__required", className),
|
|
194
191
|
children: children ?? "Required"
|
|
195
192
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../../FileTree-
|
|
1
|
+
import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../../FileTree-DMYRdT6R.js";
|
|
2
2
|
export { FileTree, FileTreeActions, FileTreeFile, FileTreeFolder, FileTreeIcon, FileTreeName };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import { Badge } from "../foundations/Badge.js";
|
|
3
2
|
import { Switch } from "../foundations/Switch.js";
|
|
4
3
|
import { ToggleGroup } from "../foundations/ToggleGroup.js";
|
|
5
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -26,10 +25,8 @@ function PricingBillingToggle({ value, onValueChange, yearlySavingsPercent, vari
|
|
|
26
25
|
/* @__PURE__ */ jsxs("span", {
|
|
27
26
|
className: "pricing-page__period-label",
|
|
28
27
|
"data-active": isYearly || void 0,
|
|
29
|
-
children: ["Yearly", /* @__PURE__ */ jsxs(
|
|
30
|
-
|
|
31
|
-
size: "sm",
|
|
32
|
-
className: "pricing-page__billing-badge",
|
|
28
|
+
children: ["Yearly", /* @__PURE__ */ jsxs("span", {
|
|
29
|
+
className: "pricing-page__billing-savings",
|
|
33
30
|
children: [
|
|
34
31
|
"Save ",
|
|
35
32
|
yearlySavingsPercent,
|
|
@@ -51,10 +48,8 @@ function PricingBillingToggle({ value, onValueChange, yearlySavingsPercent, vari
|
|
|
51
48
|
children: "Monthly"
|
|
52
49
|
}), /* @__PURE__ */ jsxs(ToggleGroup.Item, {
|
|
53
50
|
value: "yearly",
|
|
54
|
-
children: ["Yearly", /* @__PURE__ */ jsxs(
|
|
55
|
-
|
|
56
|
-
size: "sm",
|
|
57
|
-
className: "pricing-page__billing-badge",
|
|
51
|
+
children: ["Yearly", /* @__PURE__ */ jsxs("span", {
|
|
52
|
+
className: "pricing-page__billing-savings",
|
|
58
53
|
children: [
|
|
59
54
|
"-",
|
|
60
55
|
yearlySavingsPercent,
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { M as MinusIcon, T as InfoIcon, d as CheckIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { Button } from "../foundations/Button.js";
|
|
4
4
|
import { IconButton } from "../foundations/IconButton.js";
|
|
5
5
|
import { Separator } from "../foundations/Separator.js";
|
|
6
6
|
import { Card } from "../foundations/Card.js";
|
|
7
|
-
import { Badge } from "../foundations/Badge.js";
|
|
8
7
|
import { getPlanPrice, getPlanYearlySavings } from "./Pricing.js";
|
|
9
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
9
|
//#region src/components/general-purpose/PricingPlanCard.tsx
|
|
@@ -24,20 +23,22 @@ function PricingPlanCard({ plan, billingPeriod, action = "select", onSelect, cla
|
|
|
24
23
|
className: cx("pricing-page__plan", className),
|
|
25
24
|
"data-popular": plan.popular || void 0,
|
|
26
25
|
children: [
|
|
27
|
-
plan.popular ? /* @__PURE__ */ jsx(Badge, {
|
|
28
|
-
color: "success",
|
|
29
|
-
className: "pricing-page__popular-badge",
|
|
30
|
-
children: "Most Popular"
|
|
31
|
-
}) : null,
|
|
32
26
|
/* @__PURE__ */ jsxs("div", {
|
|
33
27
|
className: "pricing-page__plan-header",
|
|
34
|
-
children: [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
children: [
|
|
29
|
+
plan.popular ? /* @__PURE__ */ jsx("span", {
|
|
30
|
+
className: "pricing-page__popular-label",
|
|
31
|
+
children: "Most popular"
|
|
32
|
+
}) : null,
|
|
33
|
+
/* @__PURE__ */ jsx("h2", {
|
|
34
|
+
className: "pricing-page__plan-name",
|
|
35
|
+
children: plan.name
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ jsx("p", {
|
|
38
|
+
className: "pricing-page__plan-description",
|
|
39
|
+
children: plan.description
|
|
40
|
+
})
|
|
41
|
+
]
|
|
41
42
|
}),
|
|
42
43
|
/* @__PURE__ */ jsxs("div", {
|
|
43
44
|
className: "pricing-page__plan-price",
|
|
@@ -22,6 +22,13 @@ interface ResizableSidePanelRootProps extends React.HTMLAttributes<HTMLDivElemen
|
|
|
22
22
|
collapseThreshold?: number;
|
|
23
23
|
/** Called once pointer resizing crosses `collapseThreshold`. */
|
|
24
24
|
onCollapse?: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Consumer-owned custom property mirroring the panel size, e.g.
|
|
27
|
+
* `--my-app-conversation-size`. Nested roots each write the shared
|
|
28
|
+
* `--resizable-side-panel-size` too, where the nearest writer wins; a named
|
|
29
|
+
* variable frees consumer stylesheets from that proximity rule.
|
|
30
|
+
*/
|
|
31
|
+
sizeVariable?: `--${string}`;
|
|
25
32
|
}
|
|
26
33
|
interface ResizableSidePanelHandleProps extends Omit<SeparatorProps, "aria-label" | "aria-orientation" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "decorative" | "orientation"> {}
|
|
27
34
|
/**
|
|
@@ -41,6 +48,7 @@ declare function ResizableSidePanelRoot({
|
|
|
41
48
|
onCollapse,
|
|
42
49
|
ref,
|
|
43
50
|
side,
|
|
51
|
+
sizeVariable,
|
|
44
52
|
style,
|
|
45
53
|
...props
|
|
46
54
|
}: ResizableSidePanelRootProps & {
|
|
@@ -14,7 +14,7 @@ function panelSizeDelta(physicalDelta, side, direction) {
|
|
|
14
14
|
* Shared sizing seam for a logical start- or end-side panel. Consumers retain
|
|
15
15
|
* ownership of panel placement, visibility, compact behavior, and top bars.
|
|
16
16
|
*/
|
|
17
|
-
function ResizableSidePanelRoot({ children, className, collapseThreshold, defaultSize, keyboardStep = 24, label, maxSize, minSize, onSizeChange, onCollapse, ref, side = "start", style, ...props }) {
|
|
17
|
+
function ResizableSidePanelRoot({ children, className, collapseThreshold, defaultSize, keyboardStep = 24, label, maxSize, minSize, onSizeChange, onCollapse, ref, side = "start", sizeVariable, style, ...props }) {
|
|
18
18
|
const [size, setInnerSize] = React.useState(() => clamp(defaultSize, minSize, maxSize));
|
|
19
19
|
const cleanupResizeRef = React.useRef(null);
|
|
20
20
|
const setSize = React.useCallback((nextSize) => {
|
|
@@ -92,7 +92,8 @@ function ResizableSidePanelRoot({ children, className, collapseThreshold, defaul
|
|
|
92
92
|
]);
|
|
93
93
|
const rootStyle = {
|
|
94
94
|
...style,
|
|
95
|
-
"--resizable-side-panel-size": `${size}px
|
|
95
|
+
"--resizable-side-panel-size": `${size}px`,
|
|
96
|
+
...sizeVariable ? { [sizeVariable]: `${size}px` } : {}
|
|
96
97
|
};
|
|
97
98
|
return /* @__PURE__ */ jsx(ResizableSidePanelContext.Provider, {
|
|
98
99
|
value: context,
|
|
@@ -1,2 +1,105 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/general-purpose/ResponsiveSidebarShell.d.ts
|
|
4
|
+
interface ResponsiveSidebarShellControls {
|
|
5
|
+
/** Close the sidebar and move focus to the main content. */
|
|
6
|
+
closeSidebar: () => void;
|
|
7
|
+
/** Close only when the shell is currently using its compact drawer layout. */
|
|
8
|
+
closeSidebarOnCompact: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Bar slot content shared by every shell-owning surface's `bar` prop, so an
|
|
12
|
+
* app writes one shape whether it is configuring ThinkFullApp, the routine
|
|
13
|
+
* library, or the shell directly.
|
|
14
|
+
*/
|
|
15
|
+
interface AppBarSlots {
|
|
16
|
+
/**
|
|
17
|
+
* App-owned route element rendered as a labelled back control. Back owns
|
|
18
|
+
* the leading slot the same way `leading` does: the shell's own sidebar
|
|
19
|
+
* toggle stands down and compact sidebars stay reachable through
|
|
20
|
+
* `compactTitleTrigger`.
|
|
21
|
+
*/
|
|
22
|
+
back?: {
|
|
23
|
+
label: string;
|
|
24
|
+
link: React.ReactElement;
|
|
25
|
+
};
|
|
26
|
+
/** App-owned leading navigation that owns the leading slot at every width. */
|
|
27
|
+
leading?: React.ReactNode;
|
|
28
|
+
/** Compact-only navigation that replaces the drawer trigger without hiding the wide rail toggle. */
|
|
29
|
+
compactLeading?: React.ReactNode;
|
|
30
|
+
/** Bar title content. Hidden at compact widths when `compactTitleTrigger` stands in. */
|
|
31
|
+
title?: React.ReactNode;
|
|
32
|
+
/** Content placed in the bar's trailing group. */
|
|
33
|
+
actions?: React.ReactNode;
|
|
34
|
+
}
|
|
35
|
+
interface ResponsiveSidebarShellBar extends AppBarSlots {
|
|
36
|
+
/** Element the bar title renders into, e.g. `<h1 id={…}/>` for a labelled page. */
|
|
37
|
+
titleRender?: React.ReactElement<Record<string, unknown>>;
|
|
38
|
+
/**
|
|
39
|
+
* Label content for a compact-width drawer trigger that replaces the plain
|
|
40
|
+
* title and the icon toggle: the title itself becomes the control that opens
|
|
41
|
+
* the sidebar. The shell renders the button and the disclosure chevron.
|
|
42
|
+
*/
|
|
43
|
+
compactTitleTrigger?: React.ReactNode;
|
|
44
|
+
/** Accessible name for the bar toolbar. Defaults to "Application controls". */
|
|
45
|
+
label?: string;
|
|
46
|
+
/** Class for the bar root, the owning surface's styling hook. */
|
|
47
|
+
className?: string;
|
|
48
|
+
/**
|
|
49
|
+
* No bar row at all — for content that brings its own application bar.
|
|
50
|
+
* Distinct from passing no slots: an empty shell with a sidebar still shows
|
|
51
|
+
* a bar carrying the toggle.
|
|
52
|
+
*/
|
|
53
|
+
hidden?: boolean;
|
|
54
|
+
}
|
|
55
|
+
interface ResponsiveSidebarShellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "title"> {
|
|
56
|
+
/**
|
|
57
|
+
* Navigation or other secondary surface shown beside the selected content.
|
|
58
|
+
* Omit for a shell that is only a bar row over content — the app bar then
|
|
59
|
+
* has one mount point whether or not a sidebar exists.
|
|
60
|
+
*
|
|
61
|
+
* Open/closed is shell-internal: it is ephemeral presentation state, not a
|
|
62
|
+
* route, so no host controls it and no resize ever writes into a router.
|
|
63
|
+
*/
|
|
64
|
+
sidebar?: React.ReactNode | ((controls: ResponsiveSidebarShellControls) => React.ReactNode);
|
|
65
|
+
/** Main content. */
|
|
66
|
+
children?: React.ReactNode;
|
|
67
|
+
/** Short noun used by the toggle and resize control, such as “threads” or “schedules”. */
|
|
68
|
+
sidebarLabel?: string;
|
|
69
|
+
/** Initial desktop sidebar width in CSS pixels. */
|
|
70
|
+
defaultSidebarWidth?: number;
|
|
71
|
+
/** Shell-owned application bar composed from slots. */
|
|
72
|
+
bar?: ResponsiveSidebarShellBar;
|
|
73
|
+
/**
|
|
74
|
+
* Host-owned error shown in the main column above the content, without
|
|
75
|
+
* replacing it. The shell renders the alert anatomy; pass the message.
|
|
76
|
+
*/
|
|
77
|
+
error?: React.ReactNode;
|
|
78
|
+
/** Accessible name for the mobile peek target that returns to the main content. */
|
|
79
|
+
showMainLabel?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The one application shell: responsive master-detail with a resizable desktop
|
|
83
|
+
* sidebar, a compact floating drawer that leaves the main content in place as
|
|
84
|
+
* a dismiss target, and a shell-owned application bar composed from slots.
|
|
85
|
+
* The root exposes `data-sidebar-open="true" | "false"` as its public styling
|
|
86
|
+
* hook, and its container name `responsive-sidebar-shell` is public contract:
|
|
87
|
+
* surfaces that compose the shell size themselves against it.
|
|
88
|
+
*/
|
|
89
|
+
declare function ResponsiveSidebarShell({
|
|
90
|
+
sidebar,
|
|
91
|
+
sidebarLabel,
|
|
92
|
+
defaultSidebarWidth,
|
|
93
|
+
bar,
|
|
94
|
+
error,
|
|
95
|
+
showMainLabel,
|
|
96
|
+
className,
|
|
97
|
+
children,
|
|
98
|
+
ref,
|
|
99
|
+
style,
|
|
100
|
+
...props
|
|
101
|
+
}: ResponsiveSidebarShellProps & {
|
|
102
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
103
|
+
}): React.JSX.Element;
|
|
104
|
+
//#endregion
|
|
105
|
+
export { AppBarSlots, ResponsiveSidebarShell, ResponsiveSidebarShellBar, ResponsiveSidebarShellControls, ResponsiveSidebarShellProps };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { $ as WarningIcon, W as SidebarIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { Button } from "../foundations/Button.js";
|
|
4
4
|
import { t as capitalize } from "../../format-DB2mX9DA.js";
|
|
5
5
|
import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
|
|
@@ -8,37 +8,57 @@ import { ResizableSidePanel } from "./ResizableSidePanel.js";
|
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
//#region src/components/general-purpose/ResponsiveSidebarShell.tsx
|
|
11
|
+
/** Matches --sigvelo-layout-sidebar (16rem). */
|
|
11
12
|
const sidebarDefaultWidth = 256;
|
|
12
13
|
const sidebarMinWidth = 224;
|
|
13
14
|
const sidebarMaxWidth = 384;
|
|
14
15
|
const sidebarKeyboardStep = 24;
|
|
16
|
+
/** Matches --sigvelo-layout-break-compact. */
|
|
15
17
|
const compactSidebarWidthRem = 56;
|
|
16
|
-
function useControllableSidebar({ sidebarOpen, defaultSidebarOpen, onSidebarOpenChange }) {
|
|
17
|
-
const [innerOpen, setInnerOpen] = React.useState(defaultSidebarOpen ?? true);
|
|
18
|
-
return [sidebarOpen ?? innerOpen, React.useCallback((next) => {
|
|
19
|
-
if (sidebarOpen === void 0) setInnerOpen(next);
|
|
20
|
-
onSidebarOpenChange?.(next);
|
|
21
|
-
}, [sidebarOpen, onSidebarOpenChange])];
|
|
22
|
-
}
|
|
23
18
|
function isCompactSidebar(root) {
|
|
24
19
|
const rootFontSize = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
|
|
25
|
-
return root.
|
|
20
|
+
return root.offsetWidth <= compactSidebarWidthRem * rootFontSize;
|
|
26
21
|
}
|
|
27
22
|
/**
|
|
28
|
-
*
|
|
29
|
-
* floating
|
|
30
|
-
*
|
|
23
|
+
* The one application shell: responsive master-detail with a resizable desktop
|
|
24
|
+
* sidebar, a compact floating drawer that leaves the main content in place as
|
|
25
|
+
* a dismiss target, and a shell-owned application bar composed from slots.
|
|
26
|
+
* The root exposes `data-sidebar-open="true" | "false"` as its public styling
|
|
27
|
+
* hook, and its container name `responsive-sidebar-shell` is public contract:
|
|
28
|
+
* surfaces that compose the shell size themselves against it.
|
|
31
29
|
*/
|
|
32
|
-
function ResponsiveSidebarShell({ sidebar,
|
|
30
|
+
function ResponsiveSidebarShell({ sidebar, sidebarLabel = "sidebar", defaultSidebarWidth = sidebarDefaultWidth, bar, error, showMainLabel = "Show main content", className, children, ref, style, ...props }) {
|
|
33
31
|
const sidebarId = React.useId();
|
|
34
32
|
const rootRef = React.useRef(null);
|
|
35
33
|
const mainRef = React.useRef(null);
|
|
36
34
|
const openerRef = React.useRef(null);
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
const compactRef = React.useRef(null);
|
|
36
|
+
const restoreSidebarOnWideRef = React.useRef(true);
|
|
37
|
+
const [isSidebarOpen, setSidebarOpen] = React.useState(true);
|
|
38
|
+
React.useLayoutEffect(() => {
|
|
39
|
+
const root = rootRef.current;
|
|
40
|
+
if (!root) return;
|
|
41
|
+
const syncLayout = () => {
|
|
42
|
+
if (root.offsetWidth <= 0) return;
|
|
43
|
+
const compact = isCompactSidebar(root);
|
|
44
|
+
const wasCompact = compactRef.current;
|
|
45
|
+
compactRef.current = compact;
|
|
46
|
+
if (wasCompact === null) {
|
|
47
|
+
if (compact) setSidebarOpen(false);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (!wasCompact && compact) {
|
|
51
|
+
restoreSidebarOnWideRef.current = isSidebarOpen;
|
|
52
|
+
if (isSidebarOpen) setSidebarOpen(false);
|
|
53
|
+
} else if (wasCompact && !compact && restoreSidebarOnWideRef.current) setSidebarOpen(true);
|
|
54
|
+
};
|
|
55
|
+
syncLayout();
|
|
56
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
57
|
+
const observer = new ResizeObserver(syncLayout);
|
|
58
|
+
observer.observe(root);
|
|
59
|
+
return () => observer.disconnect();
|
|
60
|
+
}, [isSidebarOpen]);
|
|
61
|
+
const hasSidebar = sidebar != null;
|
|
42
62
|
const toggleLabel = capitalize(sidebarLabel);
|
|
43
63
|
const toggleTooltip = `${isSidebarOpen ? "Hide" : "Show"} ${sidebarLabel}`;
|
|
44
64
|
const updateSidebar = React.useCallback((update, restoreFocus) => {
|
|
@@ -47,82 +67,118 @@ function ResponsiveSidebarShell({ sidebar, topBar, sidebarLabel, sidebarOpen, de
|
|
|
47
67
|
}, []);
|
|
48
68
|
const closeSidebar = React.useCallback(() => {
|
|
49
69
|
updateSidebar(() => setSidebarOpen(false), () => mainRef.current?.focus({ preventScroll: true }));
|
|
50
|
-
}, [
|
|
70
|
+
}, [updateSidebar]);
|
|
51
71
|
const closeSidebarOnCompact = React.useCallback(() => {
|
|
52
72
|
if (rootRef.current && isCompactSidebar(rootRef.current)) closeSidebar();
|
|
53
73
|
}, [closeSidebar]);
|
|
54
74
|
const toggleSidebar = React.useCallback((trigger) => {
|
|
55
75
|
if (trigger) openerRef.current = trigger;
|
|
56
76
|
updateSidebar(() => setSidebarOpen(!isSidebarOpen));
|
|
57
|
-
}, [
|
|
58
|
-
isSidebarOpen,
|
|
59
|
-
setSidebarOpen,
|
|
60
|
-
updateSidebar
|
|
61
|
-
]);
|
|
77
|
+
}, [isSidebarOpen, updateSidebar]);
|
|
62
78
|
const dismissSidebar = React.useCallback(() => {
|
|
63
79
|
updateSidebar(() => setSidebarOpen(false), () => openerRef.current?.focus({ preventScroll: true }));
|
|
64
|
-
}, [
|
|
80
|
+
}, [updateSidebar]);
|
|
65
81
|
const sidebarContent = typeof sidebar === "function" ? sidebar({
|
|
66
82
|
closeSidebar,
|
|
67
83
|
closeSidebarOnCompact
|
|
68
84
|
}) : sidebar;
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"aria-controls": sidebarId,
|
|
75
|
-
"aria-expanded": isSidebarOpen,
|
|
76
|
-
onClick: (event) => toggleSidebar(event.currentTarget),
|
|
77
|
-
children: /* @__PURE__ */ jsx(SidebarIcon, {})
|
|
78
|
-
});
|
|
79
|
-
const topBarContent = typeof topBar === "function" ? topBar({
|
|
80
|
-
sidebarId,
|
|
81
|
-
sidebarOpen: isSidebarOpen,
|
|
82
|
-
sidebarToggle,
|
|
83
|
-
toggleSidebar
|
|
84
|
-
}) : topBar;
|
|
85
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
85
|
+
const hasAppLeading = bar?.back != null || bar?.leading != null;
|
|
86
|
+
const hasTitleTrigger = hasSidebar && bar?.compactTitleTrigger != null && bar?.compactLeading == null;
|
|
87
|
+
const hasTopBar = !bar?.hidden && (hasSidebar || bar?.back != null || bar?.leading != null || bar?.compactLeading != null || bar?.title != null || bar?.actions != null);
|
|
88
|
+
const compactLeadingMode = hasTitleTrigger ? "trigger" : !hasAppLeading && bar?.compactLeading != null ? "custom" : void 0;
|
|
89
|
+
return /* @__PURE__ */ jsx("div", {
|
|
86
90
|
ref: mergeRefs(rootRef, ref),
|
|
87
91
|
className: cx("responsive-sidebar-shell", className),
|
|
92
|
+
"data-recipe": "fill-host",
|
|
88
93
|
style,
|
|
89
94
|
...props,
|
|
90
|
-
"data-sidebar-open": isSidebarOpen ? "true" : "false",
|
|
95
|
+
"data-sidebar-open": hasSidebar && isSidebarOpen ? "true" : "false",
|
|
91
96
|
onKeyDown: (event) => {
|
|
92
97
|
props.onKeyDown?.(event);
|
|
93
|
-
if (!event.defaultPrevented && event.key === "Escape" && isSidebarOpen && rootRef.current && isCompactSidebar(rootRef.current)) {
|
|
98
|
+
if (!event.defaultPrevented && event.key === "Escape" && hasSidebar && isSidebarOpen && rootRef.current && isCompactSidebar(rootRef.current)) {
|
|
94
99
|
event.preventDefault();
|
|
95
100
|
dismissSidebar();
|
|
96
101
|
}
|
|
97
102
|
},
|
|
98
|
-
children:
|
|
99
|
-
"aria-label": toolbarLabel,
|
|
100
|
-
children: /* @__PURE__ */ jsx(AppTopBar.Leading, { children: sidebarToggle })
|
|
101
|
-
}), /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
|
|
103
|
+
children: /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
|
|
102
104
|
className: "responsive-sidebar-shell__frame",
|
|
103
105
|
label: sidebarLabel,
|
|
104
106
|
side: "start",
|
|
107
|
+
sizeVariable: "--responsive-sidebar-shell-sidebar-size",
|
|
105
108
|
defaultSize: defaultSidebarWidth,
|
|
106
109
|
minSize: sidebarMinWidth,
|
|
107
110
|
maxSize: sidebarMaxWidth,
|
|
108
111
|
keyboardStep: sidebarKeyboardStep,
|
|
109
112
|
children: [
|
|
110
|
-
isSidebarOpen ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "responsive-sidebar-shell__resizer" }) : null,
|
|
111
|
-
/* @__PURE__ */ jsx("div", {
|
|
113
|
+
hasSidebar && isSidebarOpen ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "responsive-sidebar-shell__resizer" }) : null,
|
|
114
|
+
hasSidebar ? /* @__PURE__ */ jsx("div", {
|
|
112
115
|
id: sidebarId,
|
|
113
116
|
className: "responsive-sidebar-shell__sidebar",
|
|
114
117
|
"aria-hidden": isSidebarOpen ? void 0 : true,
|
|
115
118
|
inert: isSidebarOpen ? void 0 : true,
|
|
116
119
|
children: sidebarContent
|
|
117
|
-
}),
|
|
118
|
-
/* @__PURE__ */
|
|
120
|
+
}) : null,
|
|
121
|
+
/* @__PURE__ */ jsxs("div", {
|
|
119
122
|
ref: mainRef,
|
|
120
123
|
className: "responsive-sidebar-shell__main",
|
|
121
|
-
"data-recipe": "application-plane",
|
|
122
124
|
tabIndex: -1,
|
|
123
|
-
children
|
|
125
|
+
children: [
|
|
126
|
+
hasTopBar ? /* @__PURE__ */ jsxs(AppTopBar.Root, {
|
|
127
|
+
"aria-label": bar?.label ?? "Application controls",
|
|
128
|
+
className: bar?.className,
|
|
129
|
+
"data-compact-leading": compactLeadingMode,
|
|
130
|
+
children: [
|
|
131
|
+
hasSidebar || hasAppLeading || bar?.compactLeading != null ? /* @__PURE__ */ jsxs(AppTopBar.Leading, { children: [
|
|
132
|
+
bar?.back ? /* @__PURE__ */ jsx(AppTopBar.Link, {
|
|
133
|
+
label: bar.back.label,
|
|
134
|
+
render: bar.back.link,
|
|
135
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
|
|
136
|
+
}) : null,
|
|
137
|
+
bar?.leading,
|
|
138
|
+
!hasAppLeading && hasSidebar ? /* @__PURE__ */ jsx(AppTopBar.Button, {
|
|
139
|
+
className: "responsive-sidebar-shell__toggle",
|
|
140
|
+
label: toggleLabel,
|
|
141
|
+
tooltip: toggleTooltip,
|
|
142
|
+
type: "button",
|
|
143
|
+
"aria-controls": sidebarId,
|
|
144
|
+
"aria-expanded": isSidebarOpen,
|
|
145
|
+
onClick: (event) => toggleSidebar(event.currentTarget),
|
|
146
|
+
children: /* @__PURE__ */ jsx(SidebarIcon, {})
|
|
147
|
+
}) : null,
|
|
148
|
+
compactLeadingMode === "custom" ? /* @__PURE__ */ jsx("span", {
|
|
149
|
+
className: "responsive-sidebar-shell__compact-leading",
|
|
150
|
+
children: bar?.compactLeading
|
|
151
|
+
}) : null
|
|
152
|
+
] }) : null,
|
|
153
|
+
bar?.title != null || hasTitleTrigger ? /* @__PURE__ */ jsxs(AppTopBar.Title, {
|
|
154
|
+
render: bar?.titleRender,
|
|
155
|
+
children: [bar?.title != null ? /* @__PURE__ */ jsx("span", {
|
|
156
|
+
className: "responsive-sidebar-shell__title-text",
|
|
157
|
+
children: bar.title
|
|
158
|
+
}) : null, hasTitleTrigger ? /* @__PURE__ */ jsxs(Button, {
|
|
159
|
+
type: "button",
|
|
160
|
+
variant: "ghost",
|
|
161
|
+
color: "neutral",
|
|
162
|
+
size: "sm",
|
|
163
|
+
className: "responsive-sidebar-shell__title-trigger",
|
|
164
|
+
"aria-controls": sidebarId,
|
|
165
|
+
"aria-expanded": isSidebarOpen,
|
|
166
|
+
onClick: (event) => toggleSidebar(event.currentTarget),
|
|
167
|
+
children: [bar?.compactTitleTrigger, /* @__PURE__ */ jsx(ChevronDownIcon, { "aria-hidden": "true" })]
|
|
168
|
+
}) : null]
|
|
169
|
+
}) : null,
|
|
170
|
+
bar?.actions != null ? /* @__PURE__ */ jsx(AppTopBar.Trailing, { children: bar.actions }) : null
|
|
171
|
+
]
|
|
172
|
+
}) : null,
|
|
173
|
+
error != null ? /* @__PURE__ */ jsxs("div", {
|
|
174
|
+
className: "responsive-sidebar-shell__error",
|
|
175
|
+
role: "alert",
|
|
176
|
+
children: [/* @__PURE__ */ jsx(WarningIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: error })]
|
|
177
|
+
}) : null,
|
|
178
|
+
children
|
|
179
|
+
]
|
|
124
180
|
}),
|
|
125
|
-
isSidebarOpen ? /* @__PURE__ */ jsx(Button, {
|
|
181
|
+
hasSidebar && isSidebarOpen ? /* @__PURE__ */ jsx(Button, {
|
|
126
182
|
type: "button",
|
|
127
183
|
variant: "ghost",
|
|
128
184
|
color: "neutral",
|
|
@@ -131,7 +187,7 @@ function ResponsiveSidebarShell({ sidebar, topBar, sidebarLabel, sidebarOpen, de
|
|
|
131
187
|
onClick: closeSidebar
|
|
132
188
|
}) : null
|
|
133
189
|
]
|
|
134
|
-
})
|
|
190
|
+
})
|
|
135
191
|
});
|
|
136
192
|
}
|
|
137
193
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { $ as WarningIcon, B as PlusIcon, d as CheckIcon, f as ChevronDownIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { Button } from "../foundations/Button.js";
|
|
4
4
|
import { Menu } from "../foundations/Menu.js";
|
|
5
5
|
import * as React from "react";
|
|
@@ -63,7 +63,7 @@ declare function TerminalTitle({
|
|
|
63
63
|
ref?: React.Ref<HTMLSpanElement>;
|
|
64
64
|
}): React.JSX.Element;
|
|
65
65
|
type TerminalStatusValue = "idle" | "running" | "success" | "error";
|
|
66
|
-
interface TerminalStatusProps extends
|
|
66
|
+
interface TerminalStatusProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
67
67
|
status: TerminalStatusValue;
|
|
68
68
|
}
|
|
69
69
|
declare function TerminalStatus({
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Z as TerminalIcon, tt as XIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { IconButton } from "../foundations/IconButton.js";
|
|
4
|
-
import { t as CopyButton } from "../../copy-button-
|
|
5
|
-
import { Badge } from "../foundations/Badge.js";
|
|
4
|
+
import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
|
|
6
5
|
import { ScrollArea } from "../foundations/ScrollArea.js";
|
|
7
6
|
import * as React from "react";
|
|
8
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -123,19 +122,12 @@ function TerminalTitle({ className, children, ref, ...props }) {
|
|
|
123
122
|
children: [/* @__PURE__ */ jsx(TerminalIcon, { "aria-hidden": "true" }), children ?? "Terminal"]
|
|
124
123
|
});
|
|
125
124
|
}
|
|
126
|
-
const STATUS_COLOR = {
|
|
127
|
-
idle: "neutral",
|
|
128
|
-
running: "primary",
|
|
129
|
-
success: "success",
|
|
130
|
-
error: "destructive"
|
|
131
|
-
};
|
|
132
125
|
function TerminalStatus({ className, status, ref, ...props }) {
|
|
133
|
-
return /* @__PURE__ */ jsx(
|
|
126
|
+
return /* @__PURE__ */ jsx("span", {
|
|
134
127
|
...props,
|
|
135
128
|
ref,
|
|
136
|
-
color: STATUS_COLOR[status],
|
|
137
|
-
size: "sm",
|
|
138
129
|
className: cx("terminal__status", className),
|
|
130
|
+
"data-status": status,
|
|
139
131
|
children: status
|
|
140
132
|
});
|
|
141
133
|
}
|
|
@@ -30,7 +30,7 @@ interface TestResultsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
30
30
|
* Built internally for CI/test output in agent and developer workflows. Use it
|
|
31
31
|
* for structured test reports. Do not use it for generic status dashboards.
|
|
32
32
|
*
|
|
33
|
-
* Sigvelo changes: composes Collapsible
|
|
33
|
+
* Sigvelo changes: composes Collapsible and Progress; maps status
|
|
34
34
|
* color and spacing to Sigvelo CSS tokens; opens failed suites by default.
|
|
35
35
|
*
|
|
36
36
|
* Suite triggers inherit Collapsible keyboard behavior. Error stacks should be
|