@lokvis/ui-react 0.2.0 → 0.2.2
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/components/AssetPanel.d.ts.map +1 -1
- package/dist/components/AssetPanel.js +14 -14
- package/dist/components/AssetPanel.js.map +1 -1
- package/dist/components/Canvas.d.ts +4 -4
- package/dist/components/Canvas.d.ts.map +1 -1
- package/dist/components/Canvas.js +8 -8
- package/dist/components/Canvas.js.map +1 -1
- package/dist/components/CommandPalette.d.ts +7 -7
- package/dist/components/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette.js +10 -10
- package/dist/components/CommandPalette.js.map +1 -1
- package/dist/components/CompareSlider.d.ts +6 -6
- package/dist/components/CompareSlider.d.ts.map +1 -1
- package/dist/components/CompareSlider.js +7 -7
- package/dist/components/CompareSlider.js.map +1 -1
- package/dist/components/DownloadPanel.d.ts +3 -3
- package/dist/components/DownloadPanel.d.ts.map +1 -1
- package/dist/components/DownloadPanel.js +9 -9
- package/dist/components/DownloadPanel.js.map +1 -1
- package/dist/components/ErrorBanner.d.ts +2 -2
- package/dist/components/ErrorBanner.d.ts.map +1 -1
- package/dist/components/ErrorBanner.js +3 -3
- package/dist/components/ErrorBanner.js.map +1 -1
- package/dist/components/ExifPanel.d.ts +1 -1
- package/dist/components/ExifPanel.d.ts.map +1 -1
- package/dist/components/ExifPanel.js +2 -2
- package/dist/components/ExifPanel.js.map +1 -1
- package/dist/components/GlobalDropzone.d.ts +5 -5
- package/dist/components/GlobalDropzone.d.ts.map +1 -1
- package/dist/components/GlobalDropzone.js +6 -6
- package/dist/components/GlobalDropzone.js.map +1 -1
- package/dist/components/HistoryPanel.d.ts +2 -2
- package/dist/components/HistoryPanel.d.ts.map +1 -1
- package/dist/components/HistoryPanel.js +23 -23
- package/dist/components/HistoryPanel.js.map +1 -1
- package/dist/components/Inspector.d.ts.map +1 -1
- package/dist/components/Inspector.js +6 -6
- package/dist/components/Inspector.js.map +1 -1
- package/dist/components/ParamForm.d.ts.map +1 -1
- package/dist/components/ParamForm.js +7 -7
- package/dist/components/ParamForm.js.map +1 -1
- package/dist/components/PipelineBar.d.ts.map +1 -1
- package/dist/components/PipelineBar.js +13 -13
- package/dist/components/PipelineBar.js.map +1 -1
- package/dist/components/ProgressBar.d.ts +4 -4
- package/dist/components/ProgressBar.d.ts.map +1 -1
- package/dist/components/ProgressBar.js +8 -8
- package/dist/components/ProgressBar.js.map +1 -1
- package/dist/components/StatusBar.d.ts +3 -3
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +11 -11
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/ThemeToggle.d.ts +4 -4
- package/dist/components/ThemeToggle.d.ts.map +1 -1
- package/dist/components/ThemeToggle.js +7 -7
- package/dist/components/ThemeToggle.js.map +1 -1
- package/dist/components/Toolbar.d.ts.map +1 -1
- package/dist/components/Toolbar.js +2 -2
- package/dist/components/Toolbar.js.map +1 -1
- package/dist/components/WorkflowEditor.d.ts +6 -6
- package/dist/components/WorkflowEditor.d.ts.map +1 -1
- package/dist/components/WorkflowEditor.js +25 -25
- package/dist/components/WorkflowEditor.js.map +1 -1
- package/dist/components/WorkflowTemplates.d.ts +2 -2
- package/dist/components/WorkflowTemplates.d.ts.map +1 -1
- package/dist/components/WorkflowTemplates.js +3 -3
- package/dist/components/WorkflowTemplates.js.map +1 -1
- package/dist/components/Workspace.d.ts +22 -22
- package/dist/components/Workspace.d.ts.map +1 -1
- package/dist/components/Workspace.js +30 -30
- package/dist/components/Workspace.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/src/components/AssetPanel.tsx +263 -263
- package/src/components/Canvas.tsx +174 -174
- package/src/components/CommandPalette.tsx +242 -242
- package/src/components/CompareSlider.tsx +163 -163
- package/src/components/DownloadPanel.tsx +203 -203
- package/src/components/ErrorBanner.tsx +64 -64
- package/src/components/ExifPanel.tsx +154 -154
- package/src/components/GlobalDropzone.tsx +170 -170
- package/src/components/HistoryPanel.tsx +219 -219
- package/src/components/Inspector.tsx +136 -136
- package/src/components/ParamForm.tsx +136 -136
- package/src/components/PipelineBar.tsx +98 -98
- package/src/components/ProgressBar.tsx +78 -78
- package/src/components/StatusBar.tsx +148 -148
- package/src/components/ThemeToggle.tsx +98 -98
- package/src/components/Toolbar.tsx +65 -65
- package/src/components/WorkflowEditor.tsx +321 -321
- package/src/components/WorkflowTemplates.tsx +77 -77
- package/src/components/Workspace.tsx +223 -223
- package/src/css-modules.d.ts +3 -0
- package/src/index.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamForm.js","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":";AAeA,MAAM,UAAU,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAkB;
|
|
1
|
+
{"version":3,"file":"ParamForm.js","sourceRoot":"","sources":["../../src/components/ParamForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineBar.d.ts","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"PipelineBar.d.ts","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,qBA6F/D"}
|
|
@@ -13,32 +13,32 @@ export function PipelineBar({ className = '' }) {
|
|
|
13
13
|
const selectedNodeId = useWorkspaceStore((s) => s.selectedNodeId);
|
|
14
14
|
const selectNode = useWorkspaceStore((s) => s.selectNode);
|
|
15
15
|
const removeNode = useWorkspaceStore((s) => s.removeNode);
|
|
16
|
-
return (_jsxs("div", { className: `flex h-10 shrink-0 items-center gap-2 border-t border-
|
|
16
|
+
return (_jsxs("div", { className: `flex h-10 shrink-0 items-center gap-2 border-t border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 ${className}`, children: [_jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)] shrink-0", children: "Pipeline" }), nodes.length === 0 ? (_jsx("span", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "Empty \u2014 add capabilities from the right panel" })) : (_jsxs("div", { className: "flex flex-1 items-center gap-1 overflow-x-auto min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)] shrink-0", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" }) }), "Source"] }), _jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), nodes.map((node, i) => {
|
|
17
17
|
const selected = node.id === selectedNodeId;
|
|
18
18
|
return (_jsxs(React.Fragment, { children: [_jsxs("button", { type: "button", onClick: () => selectNode(node.id), className: `group flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1 text-[11px] font-medium transition-all ${selected
|
|
19
|
-
? 'bg-
|
|
19
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/50'
|
|
20
20
|
: node.status === 'running'
|
|
21
|
-
? 'bg-
|
|
21
|
+
? 'bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]'
|
|
22
22
|
: node.status === 'success'
|
|
23
|
-
? 'bg-
|
|
23
|
+
? 'bg-[var(--lokvis-success)]/15 text-[var(--lokvis-success)]'
|
|
24
24
|
: node.status === 'failed'
|
|
25
|
-
? 'bg-
|
|
26
|
-
: 'bg-
|
|
25
|
+
? 'bg-[var(--lokvis-danger)]/15 text-[var(--lokvis-danger)]'
|
|
26
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'}`, children: [_jsx("span", { className: "font-mono", children: node.capability }), _jsx(StatusDot, { status: node.status }), _jsx("span", { onClick: (e) => {
|
|
27
27
|
e.stopPropagation();
|
|
28
28
|
removeNode(node.id);
|
|
29
|
-
}, className: "ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-
|
|
30
|
-
}), _jsx(Icon, { size: 12, className: "shrink-0 text-
|
|
29
|
+
}, className: "ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--lokvis-danger)]/15 hover:text-[var(--lokvis-danger)]", role: "button", "aria-label": "Remove step", children: _jsx(Icon, { size: 10, strokeWidth: 3, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }), i < nodes.length - 1 && (_jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }))] }, node.id));
|
|
30
|
+
}), _jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsxs("div", { className: "flex items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)] shrink-0", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" }) }), "Output"] })] })), nodes.length > 0 && (_jsxs("span", { className: "shrink-0 text-[10px] tabular-nums text-[var(--lokvis-fg-subtle)]", children: [nodes.length, " step", nodes.length !== 1 ? 's' : ''] }))] }));
|
|
31
31
|
}
|
|
32
32
|
function StatusDot({ status }) {
|
|
33
33
|
const color = status === 'running'
|
|
34
|
-
? 'bg-
|
|
34
|
+
? 'bg-[var(--lokvis-warning)]'
|
|
35
35
|
: status === 'success'
|
|
36
|
-
? 'bg-
|
|
36
|
+
? 'bg-[var(--lokvis-success)]'
|
|
37
37
|
: status === 'failed'
|
|
38
|
-
? 'bg-
|
|
38
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
39
39
|
: status === 'pending'
|
|
40
|
-
? 'bg-
|
|
41
|
-
: 'bg-
|
|
40
|
+
? 'bg-[var(--lokvis-fg-subtle)]'
|
|
41
|
+
: 'bg-[var(--lokvis-fg-subtle)]';
|
|
42
42
|
const animate = status === 'running' ? 'animate-pulse' : '';
|
|
43
43
|
return _jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${color} ${animate}` });
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PipelineBar.js","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMtD,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAoB;
|
|
1
|
+
{"version":3,"file":"PipelineBar.js","sourceRoot":"","sources":["../../src/components/PipelineBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* ProgressBar - 工作流执行进度条 + 取消按钮(W11.6)
|
|
3
3
|
*
|
|
4
4
|
* 展示:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* - 节点完成进度(成功数 / 总数)
|
|
6
|
+
* - 横向进度条(running 时动画)
|
|
7
|
+
* - Cancel 按钮(调用 cancelRun)
|
|
8
|
+
* - 状态消息(statusMessage)
|
|
9
9
|
*
|
|
10
10
|
* 仅在 running 或最近一次执行有结果时显示。
|
|
11
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,sCAiF/D"}
|
|
@@ -3,10 +3,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
* ProgressBar - 工作流执行进度条 + 取消按钮(W11.6)
|
|
4
4
|
*
|
|
5
5
|
* 展示:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* - 节点完成进度(成功数 / 总数)
|
|
7
|
+
* - 横向进度条(running 时动画)
|
|
8
|
+
* - Cancel 按钮(调用 cancelRun)
|
|
9
|
+
* - 状态消息(statusMessage)
|
|
10
10
|
*
|
|
11
11
|
* 仅在 running 或最近一次执行有结果时显示。
|
|
12
12
|
*
|
|
@@ -26,10 +26,10 @@ export function ProgressBar({ className = '' }) {
|
|
|
26
26
|
return null;
|
|
27
27
|
if (!running && done === 0)
|
|
28
28
|
return null;
|
|
29
|
-
return (_jsxs("div", { className: `flex items-center gap-2 border-b border-
|
|
30
|
-
? 'bg-
|
|
29
|
+
return (_jsxs("div", { className: `flex items-center gap-2 border-b border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 py-1.5 ${className}`, role: "status", "aria-live": "polite", "aria-label": `工作流进度:${done} / ${total}`, children: [_jsx("div", { className: "relative h-1.5 flex-1 overflow-hidden rounded-full bg-[var(--lokvis-border)]", children: _jsx("div", { className: `absolute inset-y-0 left-0 transition-all duration-300 ${hasFailure
|
|
30
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
31
31
|
: running
|
|
32
|
-
? 'bg-
|
|
33
|
-
: 'bg-
|
|
32
|
+
? 'bg-[var(--lokvis-primary)]'
|
|
33
|
+
: 'bg-[var(--lokvis-success)]'} ${running ? 'animate-pulse' : ''}`, style: { width: `${pct}%` } }) }), _jsxs("span", { className: "shrink-0 text-[10px] font-medium tabular-nums text-[var(--lokvis-fg-muted)]", children: [done, "/", total, failedCount > 0 && (_jsxs("span", { className: "ml-1 text-[var(--lokvis-danger)]", children: ["(", failedCount, " failed)"] }))] }), running && statusMessage && (_jsx("span", { className: "hidden shrink-0 truncate text-[10px] text-[var(--lokvis-fg-subtle)] sm:inline", children: statusMessage })), running && (_jsxs("button", { type: "button", onClick: () => void cancelRun(), "aria-label": "\u53D6\u6D88\u8FD0\u884C", title: "\u53D6\u6D88\u8FD0\u884C", className: "flex shrink-0 items-center gap-1 rounded-md bg-[var(--lokvis-danger)]/10 px-2 py-0.5 text-[10px] font-medium text-[var(--lokvis-danger)] transition-colors hover:bg-[var(--lokvis-danger)]/15", children: [_jsx(Icon, { size: 10, strokeWidth: 3, children: _jsx("path", { d: "M6 6l12 12M6 18L18 6" }) }), "Cancel"] })), !running && done === total && (_jsxs("span", { className: `flex shrink-0 items-center gap-1 text-[10px] font-medium ${hasFailure ? 'text-[var(--lokvis-danger)]' : 'text-[var(--lokvis-success)]'}`, children: [_jsx(Icon, { size: 10, strokeWidth: 3, children: hasFailure ? (_jsx("path", { d: "M12 2L2 22h20L12 2zM12 9v5M12 17v.01" })) : (_jsx("path", { d: "M20 6L9 17l-5-5" })) }), hasFailure ? 'Failed' : 'Done'] }))] }));
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAoB;
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAoB;IAC/D,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAExD,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE5E,qBAAqB;IACrB,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACP,eACA,SAAS,EAAE,yGAAyG,SAAS,EAAE,EAC/H,IAAI,EAAC,QAAQ,eACH,QAAQ,gBACN,SAAS,IAAI,MAAM,KAAK,EAAE,aAGtC,cAAK,SAAS,EAAC,8EAA8E,YAC7F,cACA,SAAS,EAAE,yDACX,UAAU;wBACV,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,4BAA4B;4BAC9B,CAAC,CAAC,4BACF,IAAI,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,EACpC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GACzB,GACI,EAGN,gBAAM,SAAS,EAAC,6EAA6E,aAC5F,IAAI,OAAG,KAAK,EACZ,WAAW,GAAG,CAAC,IAAI,CACpB,gBAAM,SAAS,EAAC,kCAAkC,kBAAG,WAAW,gBAAgB,CAC/E,IACM,EAGN,OAAO,IAAI,aAAa,IAAI,CAC7B,eAAM,SAAS,EAAC,+EAA+E,YAC9F,aAAa,GACP,CACN,EAGA,OAAO,IAAI,CACZ,kBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,SAAS,EAAE,gBACpB,0BAAM,EACjB,KAAK,EAAC,0BAAM,EACZ,SAAS,EAAC,+LAA+L,aAEzM,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,YAAE,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAAO,cAE/D,CACR,EAGA,CAAC,OAAO,IAAI,IAAI,KAAK,KAAK,IAAI,CAC/B,gBACA,SAAS,EAAE,4DACX,UAAU,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,8BAC7C,EAAE,aAEF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,YAC7B,UAAU,CAAC,CAAC,CAAC,CACd,eAAM,CAAC,EAAC,sCAAsC,GAAG,CAChD,CAAC,CAAC,CAAC,CACJ,eAAM,CAAC,EAAC,iBAAiB,GAAG,CAC3B,GACM,EACN,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IACxB,CACN,IACK,CACL,CAAC;AACH,CAAC"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 紧凑单行:左侧状态指示 + 当前工具 + 进度,右侧在线状态 + 资源统计 + 存储配额。
|
|
5
5
|
*
|
|
6
6
|
* W9.6 新增:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* - 当前选中工具名(从 selectedNode 取)
|
|
8
|
+
* - 执行进度(已完成节点数 / 总节点数)
|
|
9
|
+
* - 在线状态(navigator.onLine + 事件监听)
|
|
10
10
|
*/
|
|
11
11
|
import * as React from 'react';
|
|
12
12
|
export interface StatusBarProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,cAAc;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA4BD,wBAAgB,SAAS,CAAC,EAAE,SAAc,EAAE,EAAE,cAAc,qBAwI3D"}
|
|
@@ -5,9 +5,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
5
5
|
* 紧凑单行:左侧状态指示 + 当前工具 + 进度,右侧在线状态 + 资源统计 + 存储配额。
|
|
6
6
|
*
|
|
7
7
|
* W9.6 新增:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* - 当前选中工具名(从 selectedNode 取)
|
|
9
|
+
* - 执行进度(已完成节点数 / 总节点数)
|
|
10
|
+
* - 在线状态(navigator.onLine + 事件监听)
|
|
11
11
|
*/
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import { useWorkspaceStore } from '../store/index.js';
|
|
@@ -56,15 +56,15 @@ export function StatusBar({ className = '' }) {
|
|
|
56
56
|
const ratio = storageUsage ? storageUsage.usage / storageUsage.quota : 0;
|
|
57
57
|
const storageCritical = ratio >= 0.95;
|
|
58
58
|
const storageWarning = ratio >= 0.8 && !storageCritical;
|
|
59
|
-
return (_jsxs("footer", { className: `flex h-7 shrink-0 items-center justify-between border-t border-
|
|
60
|
-
? 'bg-
|
|
59
|
+
return (_jsxs("footer", { className: `flex h-7 shrink-0 items-center justify-between border-t border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-3 ${className}`, children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", role: "status", "aria-live": "polite", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${error
|
|
60
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
61
61
|
: running
|
|
62
|
-
? 'bg-
|
|
63
|
-
: 'bg-
|
|
64
|
-
? 'text-
|
|
62
|
+
? 'bg-[var(--lokvis-warning)] animate-pulse'
|
|
63
|
+
: 'bg-[var(--lokvis-success)]'}`, "aria-hidden": "true" }), _jsx("span", { className: `truncate text-[10px] ${error ? 'text-[var(--lokvis-danger)]' : 'text-[var(--lokvis-fg-muted)]'}`, children: statusMessage })] }), selectedNode && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "\u00B7" }), _jsx("span", { className: "shrink-0 font-mono text-[10px] text-[var(--lokvis-primary)] truncate max-w-[120px]", children: selectedNode.capability })] })), running && totalNodes > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "\u00B7" }), _jsxs("span", { className: "shrink-0 tabular-nums text-[10px] text-[var(--lokvis-warning)]", children: [doneNodes, "/", totalNodes, " (", progressPct, "%)"] })] })), error && (_jsx("button", { type: "button", onClick: () => setError(null), className: "shrink-0 text-[10px] text-[var(--lokvis-danger)] underline decoration-red-300 hover:text-[var(--lokvis-danger)]", children: "dismiss" }))] }), _jsxs("div", { className: "flex items-center gap-3 shrink-0 text-[10px] text-[var(--lokvis-fg-subtle)] tabular-nums", children: [_jsxs("span", { className: `flex items-center gap-1 ${online ? 'text-[var(--lokvis-success)]' : 'text-[var(--lokvis-warning)]'}`, title: online ? 'Online' : 'Offline — running locally, no upload needed', "aria-label": online ? 'Online' : 'Offline — files still processed locally', children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full ${online ? 'bg-[var(--lokvis-success)]' : 'bg-[var(--lokvis-warning)]'}`, "aria-hidden": "true" }), online ? 'Online' : 'Offline'] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), storageUsage && (_jsxs(_Fragment, { children: [_jsxs("span", { className: `flex items-center gap-1 ${storageCritical
|
|
64
|
+
? 'text-[var(--lokvis-danger)] font-semibold'
|
|
65
65
|
: storageWarning
|
|
66
|
-
? 'text-
|
|
67
|
-
: 'text-
|
|
66
|
+
? 'text-[var(--lokvis-warning)]'
|
|
67
|
+
: 'text-[var(--lokvis-fg-subtle)]'}`, title: storageCritical
|
|
68
68
|
? `Storage almost full (${Math.round(ratio * 100)}%) — clean up to free space`
|
|
69
69
|
: storageWarning
|
|
70
70
|
? `Storage nearing limit (${Math.round(ratio * 100)}%)`
|
|
@@ -72,6 +72,6 @@ export function StatusBar({ className = '' }) {
|
|
|
72
72
|
? `Storage critical: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used, ${Math.round(ratio * 100)} percent. Clean up to free space.`
|
|
73
73
|
: storageWarning
|
|
74
74
|
? `Storage warning: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used, ${Math.round(ratio * 100)} percent.`
|
|
75
|
-
: `Storage: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used.`, "aria-live": storageCritical ? 'assertive' : 'polite', children: [(storageCritical || storageWarning) && (_jsx("span", { className: "text-[9px]", "aria-hidden": "true", children: "\u26A0" })), formatBytes(storageUsage.usage), " / ", formatBytes(storageUsage.quota)] }), _jsx("span", { className: "text-
|
|
75
|
+
: `Storage: ${formatBytes(storageUsage.usage)} of ${formatBytes(storageUsage.quota)} used.`, "aria-live": storageCritical ? 'assertive' : 'polite', children: [(storageCritical || storageWarning) && (_jsx("span", { className: "text-[9px]", "aria-hidden": "true", children: "\u26A0" })), formatBytes(storageUsage.usage), " / ", formatBytes(storageUsage.quota)] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" })] })), _jsxs("span", { children: [assets.length, " asset", assets.length !== 1 ? 's' : ''] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), _jsxs("span", { children: [capabilities.length, " cap", capabilities.length !== 1 ? 's' : ''] }), _jsx("span", { className: "text-[var(--lokvis-fg-subtle)]", "aria-hidden": "true", children: "|" }), _jsxs("span", { children: [nodes.length, " step", nodes.length !== 1 ? 's' : ''] })] })] }));
|
|
76
76
|
}
|
|
77
77
|
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAMtE,4BAA4B;AAC5B,SAAS,WAAW,CAAC,KAAa;
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../src/components/StatusBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* 与 `tokens.css` 的 `.dark` / `.light` 类双触发机制对齐。
|
|
6
6
|
*
|
|
7
7
|
* 交互:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* - 左键单击:在 light / dark 之间切换(基于当前 resolvedTheme 决定下一态)
|
|
9
|
+
* - 右键单击:弹出菜单(light / dark / system 三态)
|
|
10
|
+
* - ESC:关闭菜单
|
|
11
|
+
* - 点击菜单外部:关闭菜单
|
|
12
12
|
*/
|
|
13
13
|
import * as React from 'react';
|
|
14
14
|
export interface ThemeToggleProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,SAAiB,EAAE,EAAE,gBAAgB,qBAkGlF"}
|
|
@@ -6,10 +6,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* 与 `tokens.css` 的 `.dark` / `.light` 类双触发机制对齐。
|
|
7
7
|
*
|
|
8
8
|
* 交互:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* - 左键单击:在 light / dark 之间切换(基于当前 resolvedTheme 决定下一态)
|
|
10
|
+
* - 右键单击:弹出菜单(light / dark / system 三态)
|
|
11
|
+
* - ESC:关闭菜单
|
|
12
|
+
* - 点击菜单外部:关闭菜单
|
|
13
13
|
*/
|
|
14
14
|
import * as React from 'react';
|
|
15
15
|
import { Icon } from '@lokvis/ui-core';
|
|
@@ -46,15 +46,15 @@ export function ThemeToggle({ className = '', showLabel = false }) {
|
|
|
46
46
|
return (_jsxs("div", { className: `relative ${className}`, children: [_jsxs("button", { ref: btnRef, type: "button", "aria-haspopup": "menu", "aria-expanded": menuOpen, onClick: () => toggleTheme(), onContextMenu: (e) => {
|
|
47
47
|
e.preventDefault();
|
|
48
48
|
setMenuOpen((v) => !v);
|
|
49
|
-
}, "aria-label": `Theme: ${label}. Click to toggle, right-click for options.`, title: `Theme: ${label} (right-click for options)`, className: "flex h-8 w-8 items-center justify-center rounded-md text-
|
|
49
|
+
}, "aria-label": `Theme: ${label}. Click to toggle, right-click for options.`, title: `Theme: ${label} (right-click for options)`, className: "flex h-8 w-8 items-center justify-center rounded-md text-[var(--lokvis-fg-muted)] transition-colors hover:bg-[var(--lokvis-surface-muted)] hover:text-[var(--lokvis-fg-muted)]", children: [icon, showLabel && _jsx("span", { className: "ml-1 text-xs", children: label })] }), menuOpen && (_jsx("div", { role: "menu", className: "absolute right-0 top-full z-50 mt-1 w-32 overflow-hidden rounded-md border border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] py-1 shadow-lg", children: ['light', 'dark', null].map((mode) => {
|
|
50
50
|
const isActive = theme === mode;
|
|
51
51
|
const text = mode === null ? 'System' : mode === 'dark' ? 'Dark' : 'Light';
|
|
52
52
|
return (_jsxs("button", { type: "button", role: "menuitemradio", "aria-checked": isActive, onClick: () => {
|
|
53
53
|
setTheme(mode);
|
|
54
54
|
setMenuOpen(false);
|
|
55
55
|
}, className: `flex w-full items-center justify-between px-3 py-1.5 text-left text-xs transition-colors ${isActive
|
|
56
|
-
? 'bg-
|
|
57
|
-
: 'text-
|
|
56
|
+
? 'bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)]'
|
|
57
|
+
: 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface-muted)]'}`, children: [_jsx("span", { children: text }), isActive && (_jsx(Icon, { size: 12, strokeWidth: 3, children: _jsx("path", { d: "M5 13l4 4L19 7" }) }))] }, mode ?? 'system'));
|
|
58
58
|
}) }))] }));
|
|
59
59
|
}
|
|
60
60
|
//# sourceMappingURL=ThemeToggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAC;AAQhE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,KAAK,EAAoB;
|
|
1
|
+
{"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,wBAAgB,OAAO,CAAC,EAAE,KAA0B,EAAE,UAAU,EAAE,EAAE,YAAY,qBAqE/E"}
|
|
@@ -27,10 +27,10 @@ export function Toolbar({ title = 'Lokvis Workspace', rightExtra }) {
|
|
|
27
27
|
setError(err instanceof Error ? err.message : String(err));
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
return (_jsxs("header", { className: "flex h-12 shrink-0 items-center justify-between border-b border-
|
|
30
|
+
return (_jsxs("header", { className: "flex h-12 shrink-0 items-center justify-between border-b border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-4", children: [_jsxs("div", { className: "flex items-center gap-2.5 min-w-0", children: [_jsx("span", { className: "shrink-0 text-base font-bold leading-none", style: {
|
|
31
31
|
background: 'linear-gradient(135deg, #6366f1, #a855f7)',
|
|
32
32
|
WebkitBackgroundClip: 'text',
|
|
33
33
|
WebkitTextFillColor: 'transparent',
|
|
34
|
-
}, children: "\u25C6" }), _jsx("span", { className: "truncate text-sm font-semibold tracking-tight", children: title })] }), _jsx("div", { className: "flex flex-1 items-center justify-center px-4 min-w-0", children: _jsx("span", { className: `truncate text-xs ${error ? 'text-
|
|
34
|
+
}, children: "\u25C6" }), _jsx("span", { className: "truncate text-sm font-semibold tracking-tight", children: title })] }), _jsx("div", { className: "flex flex-1 items-center justify-center px-4 min-w-0", children: _jsx("span", { className: `truncate text-xs ${error ? 'text-[var(--lokvis-danger)]' : 'text-[var(--lokvis-fg-subtle)]'}`, children: statusMessage }) }), _jsxs("div", { className: "flex items-center gap-1.5 shrink-0", children: [rightExtra, nodes.length > 0 && (_jsx(Button, { variant: "ghost", size: "sm", onClick: clearWorkflow, disabled: running, children: "Clear" })), _jsx(Button, { variant: "primary", size: "sm", onClick: handleRun, loading: running, disabled: !canRun, children: "Run" })] })] }));
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,kBAAkB,EAAE,UAAU,EAAgB;
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../src/components/Toolbar.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAOtD,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,kBAAkB,EAAE,UAAU,EAAgB;IAC/E,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC;IAEjE,KAAK,UAAU,SAAS;QACxB,IAAI,CAAC;YACL,MAAM,GAAG,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACD,CAAC;IAED,OAAO,CACP,kBAAQ,SAAS,EAAC,wHAAwH,aAE1I,eAAK,SAAS,EAAC,mCAAmC,aAClD,eACA,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE;4BACP,UAAU,EAAE,2CAA2C;4BACvD,oBAAoB,EAAE,MAAM;4BAC5B,mBAAmB,EAAE,aAAa;yBACjC,uBAGM,EACP,eAAM,SAAS,EAAC,+CAA+C,YAAE,KAAK,GAAQ,IACxE,EAGN,cAAK,SAAS,EAAC,sDAAsD,YACrE,eAAM,SAAS,EAAE,oBAAoB,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gCAAgC,EAAE,YAC9G,aAAa,GACP,GACD,EAGN,eAAK,SAAS,EAAC,oCAAoC,aAClD,UAAU,EACV,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,KAAC,MAAM,IACP,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,sBAGR,CACR,EACD,KAAC,MAAM,IACP,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,MAAM,oBAGR,IACH,IACG,CACR,CAAC;AACH,CAAC"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* WorkflowEditor - 拖拽式工作流编辑器(W10.4)
|
|
3
3
|
*
|
|
4
4
|
* 增强 PipelineBar,提供节点拖拽重排能力:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* - 拖拽节点到任意位置重排线性链
|
|
6
|
+
* - 拖拽时显示插入指示器
|
|
7
|
+
* - 键盘支持:选中节点后 ← → 移动(无障碍)
|
|
8
|
+
* - 节点数上限 MAX_WORKFLOW_STEPS=5(M1 MVP 约束,UI 层常量)
|
|
9
9
|
*
|
|
10
10
|
* 与 PipelineBar 区别:
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* - PipelineBar:只读 + 选中/删除(快速预览)
|
|
12
|
+
* - WorkflowEditor:可编辑 + 拖拽重排(编辑模式)
|
|
13
13
|
*
|
|
14
14
|
* 使用原生 HTML5 Drag and Drop API,无额外依赖。
|
|
15
15
|
* 触摸设备降级为按钮上下移动(HTML5 DnD 在移动端支持不佳)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowEditor.d.ts","sourceRoot":"","sources":["../../src/components/WorkflowEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"WorkflowEditor.d.ts","sourceRoot":"","sources":["../../src/components/WorkflowEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAc,EAAE,EAAE,mBAAmB,qBAsNrE"}
|
|
@@ -3,14 +3,14 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
* WorkflowEditor - 拖拽式工作流编辑器(W10.4)
|
|
4
4
|
*
|
|
5
5
|
* 增强 PipelineBar,提供节点拖拽重排能力:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* - 拖拽节点到任意位置重排线性链
|
|
7
|
+
* - 拖拽时显示插入指示器
|
|
8
|
+
* - 键盘支持:选中节点后 ← → 移动(无障碍)
|
|
9
|
+
* - 节点数上限 MAX_WORKFLOW_STEPS=5(M1 MVP 约束,UI 层常量)
|
|
10
10
|
*
|
|
11
11
|
* 与 PipelineBar 区别:
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* - PipelineBar:只读 + 选中/删除(快速预览)
|
|
13
|
+
* - WorkflowEditor:可编辑 + 拖拽重排(编辑模式)
|
|
14
14
|
*
|
|
15
15
|
* 使用原生 HTML5 Drag and Drop API,无额外依赖。
|
|
16
16
|
* 触摸设备降级为按钮上下移动(HTML5 DnD 在移动端支持不佳)。
|
|
@@ -77,44 +77,44 @@ export function WorkflowEditor({ className = '' }) {
|
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
const canAddMore = nodes.length < MAX_WORKFLOW_STEPS;
|
|
80
|
-
return (_jsxs("div", { className: `flex flex-col border-b border-
|
|
81
|
-
? 'bg-
|
|
82
|
-
: 'bg-
|
|
80
|
+
return (_jsxs("div", { className: `flex flex-col border-b border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] ${className}`, role: "region", "aria-label": "\u5DE5\u4F5C\u6D41\u7F16\u8F91\u5668", children: [_jsxs("div", { className: "flex h-9 shrink-0 items-center justify-between border-b border-[var(--lokvis-border)] px-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "Workflow Editor" }), _jsxs("span", { className: `rounded px-1.5 py-0.5 text-[10px] tabular-nums ${canAddMore
|
|
81
|
+
? 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)]'
|
|
82
|
+
: 'bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]'}`, children: [nodes.length, "/", MAX_WORKFLOW_STEPS] })] }), nodes.length > 0 && (_jsx("button", { type: "button", onClick: () => {
|
|
83
83
|
if (window.confirm('清空当前工作流?所有节点将被移除。')) {
|
|
84
84
|
clearWorkflow();
|
|
85
85
|
}
|
|
86
|
-
}, className: "text-[10px] text-
|
|
86
|
+
}, className: "text-[10px] text-[var(--lokvis-fg-subtle)] transition-colors hover:text-[var(--lokvis-danger)]", "aria-label": "\u6E05\u7A7A\u5DE5\u4F5C\u6D41", children: "Clear" }))] }), _jsx("div", { className: "flex min-h-[3rem] items-center gap-1 overflow-x-auto px-3 py-2", children: nodes.length === 0 ? (_jsx("div", { className: "flex flex-1 items-center justify-center py-2 text-center", children: _jsxs("p", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: ["\u7A7A\u5DE5\u4F5C\u6D41 \u2014 \u4ECE\u53F3\u4FA7 ", _jsx("span", { className: "font-mono", children: "Capabilities" }), " \u9762\u677F\u70B9\u51FB\u6DFB\u52A0\u8282\u70B9"] }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex shrink-0 items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)]", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M12 4.5v15m7.5-7.5h-15" }) }), "Source"] }), _jsx(InsertConnector, { index: 0, capabilities: capabilities, onInsert: insertNodeAt, disabled: nodes.length >= MAX_WORKFLOW_STEPS }), nodes.map((node, i) => {
|
|
87
87
|
const selected = node.id === selectedNodeId;
|
|
88
88
|
const isDragging = dragIndex === i;
|
|
89
89
|
const isHoverTarget = hoverIndex === i && dragIndex !== null && dragIndex !== i;
|
|
90
90
|
return (_jsxs(React.Fragment, { children: [_jsxs("button", { type: "button", draggable: true, onDragStart: (e) => handleDragStart(e, i), onDragOver: (e) => handleDragOver(e, i), onDragLeave: handleDragLeave, onDrop: (e) => handleDrop(e, i), onDragEnd: handleDragEnd, onClick: () => selectNode(node.id), onKeyDown: (e) => handleKeyDown(e, node.id, i), "aria-label": `节点 ${node.capability},位置 ${i + 1},拖拽或方向键重排,Delete 删除`, className: `group relative flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1.5 text-[11px] font-medium transition-all ${isDragging
|
|
91
91
|
? 'opacity-40'
|
|
92
92
|
: isHoverTarget
|
|
93
|
-
? 'ring-2 ring-
|
|
93
|
+
? 'ring-2 ring-[var(--lokvis-primary)] ring-offset-1'
|
|
94
94
|
: selected
|
|
95
|
-
? 'bg-
|
|
95
|
+
? 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/50'
|
|
96
96
|
: node.status === 'running'
|
|
97
|
-
? 'bg-
|
|
97
|
+
? 'bg-[var(--lokvis-warning)]/15 text-[var(--lokvis-warning)]'
|
|
98
98
|
: node.status === 'success'
|
|
99
|
-
? 'bg-
|
|
99
|
+
? 'bg-[var(--lokvis-success)]/15 text-[var(--lokvis-success)]'
|
|
100
100
|
: node.status === 'failed'
|
|
101
|
-
? 'bg-
|
|
102
|
-
: 'bg-
|
|
101
|
+
? 'bg-[var(--lokvis-danger)]/15 text-[var(--lokvis-danger)]'
|
|
102
|
+
: 'bg-[var(--lokvis-surface-muted)] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-border)]'} cursor-grab active:cursor-grabbing`, children: [_jsx("span", { className: "flex h-4 w-4 items-center justify-center rounded-full bg-[var(--lokvis-fg)]/5 text-[9px] tabular-nums", children: i + 1 }), _jsx("span", { className: "font-mono", children: node.capability }), _jsx(StatusDot, { status: node.status }), _jsx("button", { type: "button", onClick: (e) => {
|
|
103
103
|
e.stopPropagation();
|
|
104
104
|
removeNode(node.id);
|
|
105
|
-
}, "aria-label": "\u5220\u9664\u8282\u70B9", tabIndex: -1, className: "absolute -right-1 -top-1 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-
|
|
106
|
-
}), nodes.length > 0 && (_jsxs("div", { className: "flex shrink-0 items-center gap-1 rounded-md bg-
|
|
105
|
+
}, "aria-label": "\u5220\u9664\u8282\u70B9", tabIndex: -1, className: "absolute -right-1 -top-1 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--lokvis-danger)]/15 hover:text-[var(--lokvis-danger)]", children: _jsx(Icon, { size: 10, strokeWidth: 3, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsx(InsertConnector, { index: i + 1, capabilities: capabilities, onInsert: insertNodeAt, disabled: nodes.length >= MAX_WORKFLOW_STEPS })] }, node.id));
|
|
106
|
+
}), nodes.length > 0 && (_jsxs("div", { className: "flex shrink-0 items-center gap-1 rounded-md bg-[var(--lokvis-surface-muted)] px-2 py-1 text-[10px] font-medium text-[var(--lokvis-fg-muted)]", children: [_jsx(Icon, { size: 12, children: _jsx("path", { d: "M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3" }) }), "Output"] }))] })) }), nodes.length > 0 && (_jsxs("div", { className: "flex shrink-0 items-center gap-2 border-t border-[var(--lokvis-border)] px-3 py-1 text-[10px] text-[var(--lokvis-fg-subtle)]", children: [_jsx(Icon, { size: 10, children: _jsx("path", { d: "M13 5.5a1 1 0 1 1 2 0 1-1 0 0 0-.5.86L16.5 9l1.5-.5a1 1 0 1 1 0 2l-1.5-.5-1 1.5a1 1 0 1 1-2 0l1-1.5-1-1.5a1 1 0 0 1 0-2z" }) }), _jsx("span", { children: "\u62D6\u62FD\u91CD\u6392 \u00B7 \u65B9\u5411\u952E\u79FB\u52A8 \u00B7 Delete \u5220\u9664 \u00B7 hover \u7BAD\u5934\u5904\u63D2\u5165\u8282\u70B9" })] }))] }));
|
|
107
107
|
}
|
|
108
108
|
function StatusDot({ status }) {
|
|
109
109
|
const color = status === 'running'
|
|
110
|
-
? 'bg-
|
|
110
|
+
? 'bg-[var(--lokvis-warning)]'
|
|
111
111
|
: status === 'success'
|
|
112
|
-
? 'bg-
|
|
112
|
+
? 'bg-[var(--lokvis-success)]'
|
|
113
113
|
: status === 'failed'
|
|
114
|
-
? 'bg-
|
|
114
|
+
? 'bg-[var(--lokvis-danger)]'
|
|
115
115
|
: status === 'pending'
|
|
116
|
-
? 'bg-
|
|
117
|
-
: 'bg-
|
|
116
|
+
? 'bg-[var(--lokvis-fg-subtle)]'
|
|
117
|
+
: 'bg-[var(--lokvis-fg-subtle)]';
|
|
118
118
|
const animate = status === 'running' ? 'animate-pulse' : '';
|
|
119
119
|
return _jsx("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${color} ${animate}` });
|
|
120
120
|
}
|
|
@@ -153,8 +153,8 @@ function InsertConnector({ index, capabilities, onInsert, disabled, }) {
|
|
|
153
153
|
};
|
|
154
154
|
if (disabled) {
|
|
155
155
|
// 5 步上限时只显示箭头,不显示 +
|
|
156
|
-
return (_jsx(Icon, { size: 12, className: "shrink-0 text-
|
|
156
|
+
return (_jsx(Icon, { size: 12, className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }));
|
|
157
157
|
}
|
|
158
|
-
return (_jsxs("div", { ref: ref, className: "relative flex shrink-0 items-center", children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), "aria-label": `在位置 ${index + 1} 插入节点`, title: "\u63D2\u5165\u8282\u70B9", className: "group flex h-5 w-5 items-center justify-center rounded text-
|
|
158
|
+
return (_jsxs("div", { ref: ref, className: "relative flex shrink-0 items-center", children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), "aria-label": `在位置 ${index + 1} 插入节点`, title: "\u63D2\u5165\u8282\u70B9", className: "group flex h-5 w-5 items-center justify-center rounded text-[var(--lokvis-fg-subtle)] transition-colors hover:bg-[var(--lokvis-primary)]/15 hover:text-[var(--lokvis-primary)]", children: [_jsx(Icon, { size: 12, className: "group-hover:hidden", children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsx(Icon, { size: 12, className: "hidden group-hover:block", strokeWidth: 2.5, children: _jsx("path", { d: "M12 5v14M5 12h14" }) })] }), open && (_jsxs("div", { className: "absolute top-full left-1/2 z-50 mt-1 w-56 -translate-x-1/2 rounded-lg border border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] shadow-lg", children: [_jsx("div", { className: "border-b border-[var(--lokvis-border)] p-1.5", children: _jsx("input", { type: "text", autoFocus: true, placeholder: "\u641C\u7D22 capability...", value: filter, onChange: (e) => setFilter(e.target.value), className: "w-full rounded border border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] px-2 py-1 text-[11px] placeholder-zinc-400 focus:border-[var(--lokvis-primary)] focus:outline-none" }) }), _jsx("div", { className: "max-h-48 overflow-y-auto p-1", children: filtered.length === 0 ? (_jsx("p", { className: "px-2 py-2 text-center text-[10px] text-[var(--lokvis-fg-subtle)]", children: "\u65E0\u5339\u914D capability" })) : (filtered.map((cap) => (_jsxs("button", { type: "button", onClick: () => handleSelect(cap.name), className: "block w-full rounded px-2 py-1 text-left transition-colors hover:bg-[var(--lokvis-primary)]/10", children: [_jsx("span", { className: "block font-mono text-[10px] font-medium text-[var(--lokvis-fg-muted)]", children: cap.name }), _jsx("span", { className: "block truncate text-[9px] text-[var(--lokvis-fg-muted)]", children: cap.description })] }, cap.name)))) })] }))] }));
|
|
159
159
|
}
|
|
160
160
|
//# sourceMappingURL=WorkflowEditor.js.map
|