@lokvis/ui-react 0.2.1 → 0.4.1

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.
Files changed (165) hide show
  1. package/dist/components/AssetPanel.d.ts.map +1 -1
  2. package/dist/components/AssetPanel.js +18 -62
  3. package/dist/components/AssetPanel.js.map +1 -1
  4. package/dist/components/Canvas.d.ts +4 -4
  5. package/dist/components/Canvas.d.ts.map +1 -1
  6. package/dist/components/Canvas.js +9 -9
  7. package/dist/components/Canvas.js.map +1 -1
  8. package/dist/components/CommandPalette.d.ts +7 -7
  9. package/dist/components/CommandPalette.d.ts.map +1 -1
  10. package/dist/components/CommandPalette.js +10 -10
  11. package/dist/components/CommandPalette.js.map +1 -1
  12. package/dist/components/CompareSlider.d.ts +9 -8
  13. package/dist/components/CompareSlider.d.ts.map +1 -1
  14. package/dist/components/CompareSlider.js +10 -9
  15. package/dist/components/CompareSlider.js.map +1 -1
  16. package/dist/components/DownloadPanel.d.ts +3 -3
  17. package/dist/components/DownloadPanel.d.ts.map +1 -1
  18. package/dist/components/DownloadPanel.js +10 -17
  19. package/dist/components/DownloadPanel.js.map +1 -1
  20. package/dist/components/ErrorBanner.d.ts +2 -2
  21. package/dist/components/ErrorBanner.d.ts.map +1 -1
  22. package/dist/components/ErrorBanner.js +3 -3
  23. package/dist/components/ErrorBanner.js.map +1 -1
  24. package/dist/components/ErrorBoundary.d.ts +40 -0
  25. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  26. package/dist/components/ErrorBoundary.js +52 -0
  27. package/dist/components/ErrorBoundary.js.map +1 -0
  28. package/dist/components/ExifPanel.d.ts +1 -1
  29. package/dist/components/ExifPanel.d.ts.map +1 -1
  30. package/dist/components/ExifPanel.js +2 -2
  31. package/dist/components/ExifPanel.js.map +1 -1
  32. package/dist/components/GlobalDropzone.d.ts +5 -5
  33. package/dist/components/GlobalDropzone.d.ts.map +1 -1
  34. package/dist/components/GlobalDropzone.js +15 -8
  35. package/dist/components/GlobalDropzone.js.map +1 -1
  36. package/dist/components/HistoryPanel.d.ts +2 -2
  37. package/dist/components/HistoryPanel.d.ts.map +1 -1
  38. package/dist/components/HistoryPanel.js +23 -23
  39. package/dist/components/HistoryPanel.js.map +1 -1
  40. package/dist/components/Inspector.d.ts.map +1 -1
  41. package/dist/components/Inspector.js +13 -10
  42. package/dist/components/Inspector.js.map +1 -1
  43. package/dist/components/ParamForm.d.ts.map +1 -1
  44. package/dist/components/ParamForm.js +10 -7
  45. package/dist/components/ParamForm.js.map +1 -1
  46. package/dist/components/PipelineBar.d.ts.map +1 -1
  47. package/dist/components/PipelineBar.js +19 -28
  48. package/dist/components/PipelineBar.js.map +1 -1
  49. package/dist/components/ProgressBar.d.ts +4 -4
  50. package/dist/components/ProgressBar.d.ts.map +1 -1
  51. package/dist/components/ProgressBar.js +8 -8
  52. package/dist/components/ProgressBar.js.map +1 -1
  53. package/dist/components/StatusBar.d.ts +3 -3
  54. package/dist/components/StatusBar.d.ts.map +1 -1
  55. package/dist/components/StatusBar.js +12 -21
  56. package/dist/components/StatusBar.js.map +1 -1
  57. package/dist/components/StatusDot.d.ts +12 -0
  58. package/dist/components/StatusDot.d.ts.map +1 -0
  59. package/dist/components/StatusDot.js +15 -0
  60. package/dist/components/StatusDot.js.map +1 -0
  61. package/dist/components/ThemeToggle.d.ts +4 -4
  62. package/dist/components/ThemeToggle.d.ts.map +1 -1
  63. package/dist/components/ThemeToggle.js +7 -7
  64. package/dist/components/ThemeToggle.js.map +1 -1
  65. package/dist/components/ToolRunner.d.ts +53 -0
  66. package/dist/components/ToolRunner.d.ts.map +1 -0
  67. package/dist/components/ToolRunner.js +142 -0
  68. package/dist/components/ToolRunner.js.map +1 -0
  69. package/dist/components/Toolbar.d.ts.map +1 -1
  70. package/dist/components/Toolbar.js +3 -3
  71. package/dist/components/Toolbar.js.map +1 -1
  72. package/dist/components/WorkflowEditor.d.ts +6 -6
  73. package/dist/components/WorkflowEditor.d.ts.map +1 -1
  74. package/dist/components/WorkflowEditor.js +40 -49
  75. package/dist/components/WorkflowEditor.js.map +1 -1
  76. package/dist/components/WorkflowTemplates.d.ts +2 -2
  77. package/dist/components/WorkflowTemplates.d.ts.map +1 -1
  78. package/dist/components/WorkflowTemplates.js +17 -7
  79. package/dist/components/WorkflowTemplates.js.map +1 -1
  80. package/dist/components/Workspace.d.ts +45 -23
  81. package/dist/components/Workspace.d.ts.map +1 -1
  82. package/dist/components/Workspace.js +87 -40
  83. package/dist/components/Workspace.js.map +1 -1
  84. package/dist/hooks/useCustomPresets.d.ts +98 -0
  85. package/dist/hooks/useCustomPresets.d.ts.map +1 -0
  86. package/dist/hooks/useCustomPresets.js +210 -0
  87. package/dist/hooks/useCustomPresets.js.map +1 -0
  88. package/dist/hooks/useLokvis.d.ts +19 -1
  89. package/dist/hooks/useLokvis.d.ts.map +1 -1
  90. package/dist/hooks/useLokvis.js +30 -9
  91. package/dist/hooks/useLokvis.js.map +1 -1
  92. package/dist/index.d.ts +4 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +6 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/store/assets-slice.d.ts +8 -1
  97. package/dist/store/assets-slice.d.ts.map +1 -1
  98. package/dist/store/assets-slice.js +101 -54
  99. package/dist/store/assets-slice.js.map +1 -1
  100. package/dist/store/capabilities-slice.d.ts +1 -1
  101. package/dist/store/capabilities-slice.d.ts.map +1 -1
  102. package/dist/store/capabilities-slice.js +8 -1
  103. package/dist/store/capabilities-slice.js.map +1 -1
  104. package/dist/store/index.d.ts +1 -1
  105. package/dist/store/index.d.ts.map +1 -1
  106. package/dist/store/index.js +1 -1
  107. package/dist/store/index.js.map +1 -1
  108. package/dist/store/runtime-slice.d.ts.map +1 -1
  109. package/dist/store/runtime-slice.js +22 -16
  110. package/dist/store/runtime-slice.js.map +1 -1
  111. package/dist/store/subscribe-utils.d.ts +45 -0
  112. package/dist/store/subscribe-utils.d.ts.map +1 -0
  113. package/dist/store/subscribe-utils.js +69 -0
  114. package/dist/store/subscribe-utils.js.map +1 -0
  115. package/dist/store/types.d.ts +19 -11
  116. package/dist/store/types.d.ts.map +1 -1
  117. package/dist/store/types.js +0 -10
  118. package/dist/store/types.js.map +1 -1
  119. package/dist/store/workflow-slice.d.ts +1 -1
  120. package/dist/store/workflow-slice.d.ts.map +1 -1
  121. package/dist/store/workflow-slice.js +19 -51
  122. package/dist/store/workflow-slice.js.map +1 -1
  123. package/dist/utils.d.ts +24 -0
  124. package/dist/utils.d.ts.map +1 -0
  125. package/dist/utils.js +31 -0
  126. package/dist/utils.js.map +1 -0
  127. package/package.json +7 -6
  128. package/src/components/AssetPanel.tsx +224 -264
  129. package/src/components/Canvas.tsx +178 -174
  130. package/src/components/CommandPalette.tsx +242 -242
  131. package/src/components/CompareSlider.tsx +168 -165
  132. package/src/components/DownloadPanel.tsx +201 -207
  133. package/src/components/ErrorBanner.tsx +64 -64
  134. package/src/components/ErrorBoundary.tsx +101 -0
  135. package/src/components/ExifPanel.tsx +154 -154
  136. package/src/components/GlobalDropzone.tsx +175 -170
  137. package/src/components/HistoryPanel.tsx +219 -219
  138. package/src/components/Inspector.tsx +145 -137
  139. package/src/components/ParamForm.tsx +140 -137
  140. package/src/components/PipelineBar.tsx +97 -104
  141. package/src/components/ProgressBar.tsx +78 -78
  142. package/src/components/StatusBar.tsx +145 -152
  143. package/src/components/StatusDot.tsx +27 -0
  144. package/src/components/ThemeToggle.tsx +98 -98
  145. package/src/components/ToolRunner.tsx +352 -0
  146. package/src/components/Toolbar.tsx +65 -65
  147. package/src/components/WorkflowEditor.tsx +333 -326
  148. package/src/components/WorkflowTemplates.tsx +101 -78
  149. package/src/components/Workspace.tsx +310 -223
  150. package/src/css-modules.d.ts +3 -0
  151. package/src/hooks/useCustomPresets.ts +284 -0
  152. package/src/hooks/useLokvis.ts +43 -10
  153. package/src/index.ts +7 -0
  154. package/src/store/assets-slice.ts +106 -52
  155. package/src/store/capabilities-slice.ts +10 -2
  156. package/src/store/index.ts +1 -1
  157. package/src/store/runtime-slice.ts +20 -15
  158. package/src/store/subscribe-utils.ts +82 -0
  159. package/src/store/types.ts +19 -12
  160. package/src/store/workflow-slice.ts +19 -53
  161. package/src/utils.ts +41 -0
  162. package/dist/store.d.ts +0 -76
  163. package/dist/store.d.ts.map +0 -1
  164. package/dist/store.js +0 -217
  165. package/dist/store.js.map +0 -1
@@ -3,9 +3,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  * DownloadPanel - 工作流输出下载面板(W9.5)
4
4
  *
5
5
  * 展示上次工作流执行的输出资产,提供:
6
- * - 单项下载(从 runtime.exportAsset 取 blob,触发浏览器下载)
7
- * - 全部下载(逐项触发,BATCH_DOWNLOAD_DELAY_MS 间隔,避免浏览器拦截;长期方案见该常量注释)
8
- * - 清空输出列表
6
+ * - 单项下载(从 runtime.exportAsset 取 blob,触发浏览器下载)
7
+ * - 全部下载(逐项触发,BATCH_DOWNLOAD_DELAY_MS 间隔,避免浏览器拦截;长期方案见该常量注释)
8
+ * - 清空输出列表
9
9
  *
10
10
  * 与 apps/playground 的 DownloadManager(独立工具页)不同:本组件是 Workspace
11
11
  * 内嵌的轻量面板,数据来自 store.lastOutputIds(由 workflow-slice.run 写入)。
@@ -16,14 +16,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
16
  import * as React from 'react';
17
17
  import { Icon } from '@lokvis/ui-core';
18
18
  import { useWorkspaceStore } from '../store/index.js';
19
- /** 格式化字节数 */
20
- function formatBytes(bytes) {
21
- if (bytes < 1024)
22
- return `${bytes} B`;
23
- if (bytes < 1024 * 1024)
24
- return `${(bytes / 1024).toFixed(1)} KB`;
25
- return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
26
- }
19
+ import { formatBytes } from '../utils.js';
27
20
  /**
28
21
  * 批量下载时每项之间的延迟毫秒数。
29
22
  *
@@ -115,7 +108,7 @@ export function DownloadPanel({ className = '' }) {
115
108
  setStatus('Downloading outputs...');
116
109
  // 用本地 Set 跟踪本次循环已下载 id,避免 downloaded 闭包快照与 state 不同步
117
110
  // (review 反馈:循环中 setDownloaded 更新 state 但闭包 downloaded 不变,
118
- // 虽有 batchDownloading guard 阻止并发,逻辑上仍应读取最新已下载集合)
111
+ // 虽有 batchDownloading guard 阻止并发,逻辑上仍应读取最新已下载集合)
119
112
  const localDownloaded = new Set(downloaded);
120
113
  try {
121
114
  for (const asset of outputAssets) {
@@ -158,12 +151,12 @@ export function DownloadPanel({ className = '' }) {
158
151
  }
159
152
  if (outputAssets.length === 0)
160
153
  return null;
161
- return (_jsxs("div", { className: `flex flex-col border-t border-zinc-200 bg-white dark:border-zinc-800 dark:bg-zinc-900 ${className}`, "aria-label": "Outputs panel", children: [_jsxs("div", { className: "flex items-center justify-between px-3 h-9 shrink-0 border-b border-zinc-200 dark:border-zinc-800", children: [_jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-zinc-400", children: "Outputs" }), _jsxs("span", { className: "text-[11px] tabular-nums text-zinc-400", children: [downloadedCount, "/", outputAssets.length, " \u00B7 ", formatBytes(totalSize)] })] }), _jsxs("div", { className: "flex items-center gap-2 px-3 py-2 overflow-x-auto", children: [outputAssets.map((asset) => {
154
+ return (_jsxs("div", { className: `flex flex-col border-t border-[var(--lokvis-border)] bg-[var(--lokvis-surface)] ${className}`, "aria-label": "Outputs panel", children: [_jsxs("div", { className: "flex items-center justify-between px-3 h-9 shrink-0 border-b border-[var(--lokvis-border)]", children: [_jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "Outputs" }), _jsxs("span", { className: "text-[11px] tabular-nums text-[var(--lokvis-fg-subtle)]", children: [downloadedCount, "/", outputAssets.length, " \u00B7 ", formatBytes(totalSize)] })] }), _jsxs("div", { className: "flex items-center gap-2 px-3 py-2 overflow-x-auto", children: [outputAssets.map((asset) => {
162
155
  const isDownloaded = downloaded.has(asset.id);
163
156
  const dims = asset.metadata.dimensions;
164
- return (_jsxs("div", { className: "flex shrink-0 flex-col gap-1 rounded-md border border-zinc-200 p-2 dark:border-zinc-700", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "rounded bg-zinc-100 px-1 py-0.5 text-[9px] font-medium text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400", children: asset.metadata.format.toUpperCase() }), dims && (_jsxs("span", { className: "text-[10px] text-zinc-500 dark:text-zinc-400 tabular-nums", children: [dims.width, "\u00D7", dims.height] })), _jsx("span", { className: "text-[10px] text-zinc-400 tabular-nums", children: formatBytes(asset.metadata.size) })] }), _jsx("div", { className: "flex items-center gap-1", children: _jsxs("button", { type: "button", onClick: () => void handleDownloadOne(asset.id), className: `flex items-center gap-1 rounded px-2 py-0.5 text-[10px] font-medium transition-colors ${isDownloaded
165
- ? 'bg-emerald-100 text-emerald-700 dark:bg-emerald-950/30 dark:text-emerald-400'
166
- : 'bg-indigo-100 text-indigo-700 hover:bg-indigo-200 dark:bg-indigo-950/30 dark:text-indigo-300 dark:hover:bg-indigo-900/40'}`, children: [_jsx(Icon, { size: 10, strokeWidth: 2, children: _jsx("path", { d: "M12 3v12m0 0l-4-4m4 4l4-4M3 17v2a2 2 0 002 2h14a2 2 0 002-2v-2" }) }), isDownloaded ? 'Downloaded' : 'Download'] }) })] }, asset.id));
167
- }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => void handleDownloadAll(), disabled: batchDownloading || allDownloaded, className: "rounded-md bg-indigo-600 px-2.5 py-1 text-[10px] font-medium text-white hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50", children: batchDownloading ? 'Downloading...' : 'Download All' }), _jsx("button", { type: "button", onClick: handleClear, className: "rounded-md px-2 py-1 text-[10px] text-zinc-500 hover:bg-zinc-100 hover:text-zinc-700 dark:hover:bg-zinc-800 dark:hover:text-zinc-300", children: "Clear" })] })] }), error && (_jsx("p", { className: "px-3 pb-2 text-[10px] text-red-500", role: "alert", children: error }))] }));
157
+ return (_jsxs("div", { className: "flex shrink-0 flex-col gap-1 rounded-md border border-[var(--lokvis-border)] p-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "rounded bg-[var(--lokvis-surface-muted)] px-1 py-0.5 text-[9px] font-medium text-[var(--lokvis-fg-muted)]", children: asset.metadata.format.toUpperCase() }), dims && (_jsxs("span", { className: "text-[10px] text-[var(--lokvis-fg-muted)] tabular-nums", children: [dims.width, "\u00D7", dims.height] })), _jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)] tabular-nums", children: formatBytes(asset.metadata.size) })] }), _jsx("div", { className: "flex items-center gap-1", children: _jsxs("button", { type: "button", onClick: () => void handleDownloadOne(asset.id), className: `flex items-center gap-1 rounded px-2 py-0.5 text-[10px] font-medium transition-colors ${isDownloaded
158
+ ? 'bg-[var(--lokvis-success)]/15 text-[var(--lokvis-success)]'
159
+ : 'bg-[var(--lokvis-primary)]/15 text-[var(--lokvis-primary)] hover:bg-[var(--lokvis-primary)]/25'}`, children: [_jsx(Icon, { size: 10, strokeWidth: 2, children: _jsx("path", { d: "M12 3v12m0 0l-4-4m4 4l4-4M3 17v2a2 2 0 002 2h14a2 2 0 002-2v-2" }) }), isDownloaded ? 'Downloaded' : 'Download'] }) })] }, asset.id));
160
+ }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx("button", { type: "button", onClick: () => void handleDownloadAll(), disabled: batchDownloading || allDownloaded, className: "rounded-md bg-[var(--lokvis-primary-hover)] px-2.5 py-1 text-[10px] font-medium text-[var(--lokvis-primary-fg)] hover:bg-[var(--lokvis-primary)] disabled:cursor-not-allowed disabled:opacity-50", children: batchDownloading ? 'Downloading...' : 'Download All' }), _jsx("button", { type: "button", onClick: handleClear, className: "rounded-md px-2 py-1 text-[10px] text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface-muted)] hover:text-[var(--lokvis-fg-muted)]", children: "Clear" })] })] }), error && (_jsx("p", { className: "px-3 pb-2 text-[10px] text-[var(--lokvis-danger)]", role: "alert", children: error }))] }));
168
161
  }
169
162
  //# sourceMappingURL=DownloadPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadPanel.js","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DownloadPanel.js","sourceRoot":"","sources":["../../src/components/DownloadPanel.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * ErrorBanner - 错误信息横幅(W11.3)
3
3
  *
4
4
  * 当 store.error 非空时显示,展示错误信息并提供:
5
- * - 关闭按钮(清除 error)
6
- * - 重试按钮(重新执行工作流)
5
+ * - 关闭按钮(清除 error)
6
+ * - 重试按钮(重新执行工作流)
7
7
  *
8
8
  * 节点失败高亮由 WorkflowEditor 的节点状态颜色处理(已实现);
9
9
  * 本组件负责全局错误信息的可见性。
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBanner.d.ts","sourceRoot":"","sources":["../../src/components/ErrorBanner.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,4BAqE/D"}
1
+ {"version":3,"file":"ErrorBanner.d.ts","sourceRoot":"","sources":["../../src/components/ErrorBanner.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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,4BAqE/D"}
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  * ErrorBanner - 错误信息横幅(W11.3)
4
4
  *
5
5
  * 当 store.error 非空时显示,展示错误信息并提供:
6
- * - 关闭按钮(清除 error)
7
- * - 重试按钮(重新执行工作流)
6
+ * - 关闭按钮(清除 error)
7
+ * - 重试按钮(重新执行工作流)
8
8
  *
9
9
  * 节点失败高亮由 WorkflowEditor 的节点状态颜色处理(已实现);
10
10
  * 本组件负责全局错误信息的可见性。
@@ -42,6 +42,6 @@ export function ErrorBanner({ className = '' }) {
42
42
  if (!visible || !error)
43
43
  return null;
44
44
  const canRetry = nodes.length > 0 && !running;
45
- return (_jsxs("div", { className: `flex items-start gap-2 border-b border-red-200 bg-red-50 px-3 py-2 dark:border-red-800/50 dark:bg-red-950/20 ${className}`, role: "alert", children: [_jsxs(Icon, { size: 14, className: "mt-0.5 shrink-0 text-red-500", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })] }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "text-[11px] font-medium text-red-700 dark:text-red-400", children: "\u6267\u884C\u51FA\u9519" }), _jsx("p", { className: "mt-0.5 break-words text-[10px] text-red-600/80 dark:text-red-400/70", children: error })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [canRetry && (_jsx("button", { type: "button", onClick: handleRetry, className: "rounded bg-red-100 px-2 py-0.5 text-[10px] font-medium text-red-700 transition-colors hover:bg-red-200 dark:bg-red-900/40 dark:text-red-400 dark:hover:bg-red-900/60", children: "\u91CD\u8BD5" })), _jsx("button", { type: "button", onClick: handleDismiss, "aria-label": "\u5173\u95ED\u9519\u8BEF\u4FE1\u606F", className: "rounded p-0.5 text-red-400 transition-colors hover:bg-red-100 hover:text-red-600 dark:hover:bg-red-900/40", children: _jsx(Icon, { size: 12, strokeWidth: 3, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] })] }));
45
+ return (_jsxs("div", { className: `flex items-start gap-2 border-b border-[var(--lokvis-danger)]/30 bg-[var(--lokvis-danger)]/10 px-3 py-2 ${className}`, role: "alert", children: [_jsxs(Icon, { size: 14, className: "mt-0.5 shrink-0 text-[var(--lokvis-danger)]", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })] }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "text-[11px] font-medium text-[var(--lokvis-danger)]", children: "\u6267\u884C\u51FA\u9519" }), _jsx("p", { className: "mt-0.5 break-words text-[10px] text-[var(--lokvis-danger)]/80", children: error })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [canRetry && (_jsx("button", { type: "button", onClick: handleRetry, className: "rounded bg-[var(--lokvis-danger)]/15 px-2 py-0.5 text-[10px] font-medium text-[var(--lokvis-danger)] transition-colors hover:bg-[var(--lokvis-danger)]/30", children: "\u91CD\u8BD5" })), _jsx("button", { type: "button", onClick: handleDismiss, "aria-label": "\u5173\u95ED\u9519\u8BEF\u4FE1\u606F", className: "rounded p-0.5 text-[var(--lokvis-danger)] transition-colors hover:bg-[var(--lokvis-danger)]/15 hover:text-[var(--lokvis-danger)]", children: _jsx(Icon, { size: 12, strokeWidth: 3, children: _jsx("path", { d: "M6 18L18 6M6 6l12 12" }) }) })] })] }));
46
46
  }
47
47
  //# sourceMappingURL=ErrorBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBanner.js","sourceRoot":"","sources":["../../src/components/ErrorBanner.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorBanner.js","sourceRoot":"","sources":["../../src/components/ErrorBanner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * ErrorBoundary - React 错误边界(D6)
3
+ *
4
+ * 捕获子组件树渲染期间的运行时异常,避免整个 Workspace 白屏。
5
+ * 必须是 class 组件(React 错误边界 API 仅支持 class)。
6
+ *
7
+ * 设计:
8
+ * - 默认 fallback 使用 lokvis token,与 Workspace 错误态视觉一致
9
+ * - 可选 fallback 渲染 prop(消费方自定义 UI)
10
+ * - 可选 onError 回调(上报等);默认 console.error,不引入 sentry 等
11
+ * app 层依赖,保持 ui-react 包架构纯净(不反向依赖消费方)
12
+ * - reset() 清空 error 状态,尝试重新渲染子树
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <ErrorBoundary>
17
+ * <Workspace plugins={[...]} />
18
+ * </ErrorBoundary>
19
+ * ```
20
+ */
21
+ import * as React from 'react';
22
+ export interface ErrorBoundaryProps {
23
+ children: React.ReactNode;
24
+ /** 自定义 fallback;不传则用默认 UI */
25
+ fallback?: (error: Error, reset: () => void) => React.ReactNode;
26
+ /** 错误回调(上报等),不传则 console.error */
27
+ onError?: (error: Error, info: React.ErrorInfo) => void;
28
+ }
29
+ interface State {
30
+ error: Error | null;
31
+ }
32
+ export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, State> {
33
+ state: State;
34
+ static getDerivedStateFromError(error: Error): State;
35
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
36
+ reset: () => void;
37
+ render(): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAChE,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;CACxD;AAED,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACpB;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC5E,KAAK,EAAE,KAAK,CAAmB;IAE/B,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS;IAQrD,KAAK,aAEH;IAEF,MAAM;CASN"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * ErrorBoundary - React 错误边界(D6)
4
+ *
5
+ * 捕获子组件树渲染期间的运行时异常,避免整个 Workspace 白屏。
6
+ * 必须是 class 组件(React 错误边界 API 仅支持 class)。
7
+ *
8
+ * 设计:
9
+ * - 默认 fallback 使用 lokvis token,与 Workspace 错误态视觉一致
10
+ * - 可选 fallback 渲染 prop(消费方自定义 UI)
11
+ * - 可选 onError 回调(上报等);默认 console.error,不引入 sentry 等
12
+ * app 层依赖,保持 ui-react 包架构纯净(不反向依赖消费方)
13
+ * - reset() 清空 error 状态,尝试重新渲染子树
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <ErrorBoundary>
18
+ * <Workspace plugins={[...]} />
19
+ * </ErrorBoundary>
20
+ * ```
21
+ */
22
+ import * as React from 'react';
23
+ export class ErrorBoundary extends React.Component {
24
+ state = { error: null };
25
+ static getDerivedStateFromError(error) {
26
+ return { error };
27
+ }
28
+ componentDidCatch(error, info) {
29
+ if (this.props.onError) {
30
+ this.props.onError(error, info);
31
+ }
32
+ else {
33
+ console.error('[lokvis ErrorBoundary]', error, info.componentStack);
34
+ }
35
+ }
36
+ reset = () => {
37
+ this.setState({ error: null });
38
+ };
39
+ render() {
40
+ if (this.state.error) {
41
+ if (this.props.fallback) {
42
+ return this.props.fallback(this.state.error, this.reset);
43
+ }
44
+ return _jsx(DefaultFallback, { error: this.state.error, onReset: this.reset });
45
+ }
46
+ return this.props.children;
47
+ }
48
+ }
49
+ function DefaultFallback({ error, onReset }) {
50
+ return (_jsx("div", { className: "flex h-full w-full items-center justify-center p-6", role: "alert", children: _jsxs("div", { className: "max-w-md rounded-xl border border-[var(--lokvis-danger)]/30 bg-[var(--lokvis-surface)] p-6 text-center shadow-[var(--lokvis-elevation-2)]", children: [_jsx("div", { className: "mx-auto mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-[var(--lokvis-danger)]/15", children: _jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "text-[var(--lokvis-danger)]", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), _jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })] }) }), _jsx("p", { className: "font-semibold text-[var(--lokvis-fg)]", children: "Something went wrong" }), _jsx("p", { className: "mt-1.5 break-words text-sm text-[var(--lokvis-fg-muted)]", children: error.message || 'An unexpected error occurred while rendering this panel.' }), _jsx("button", { type: "button", onClick: onReset, className: "mt-4 inline-flex items-center justify-center rounded-lg bg-[var(--lokvis-primary)] px-4 py-2 text-sm font-medium text-[var(--lokvis-primary-fg)] transition-colors hover:bg-[var(--lokvis-primary-hover)]", children: "Try again" })] }) }));
51
+ }
52
+ //# sourceMappingURL=ErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAoC;IAC5E,KAAK,GAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAE/B,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC5C,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,IAAqB;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;IACD,CAAC;IAED,KAAK,GAAG,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,KAAC,eAAe,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,GAAI,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC3B,CAAC;CACD;AAED,SAAS,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,EAAyC;IACjF,OAAO,CACP,cAAK,SAAS,EAAC,oDAAoD,EAAC,IAAI,EAAC,OAAO,YAChF,eAAK,SAAS,EAAC,2IAA2I,aAC1J,cAAK,SAAS,EAAC,mGAAmG,YAClH,eACA,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,6BAA6B,aAEvC,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,GAAG,EACjC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EACvC,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,GAAG,IACrC,GACA,EACN,YAAG,SAAS,EAAC,uCAAuC,qCAAyB,EAC7E,YAAG,SAAS,EAAC,0DAA0D,YACtE,KAAK,CAAC,OAAO,IAAI,0DAA0D,GACxE,EACJ,iBACA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,2MAA2M,0BAG5M,IACH,GACA,CACL,CAAC;AACH,CAAC"}
@@ -14,7 +14,7 @@
14
14
  * - 仅 image 类型 asset 显示;非 image 隐藏整个面板
15
15
  * - 缓存:按 assetId 缓存(LRU 上限 16),切换 asset 不重复解析
16
16
  * - effect 依赖 selectedAssetId(而非 asset 对象引用),避免 assets 数组
17
- * 重渲染时触发重复 effect
17
+ * 重渲染时触发重复 effect
18
18
  * - 取消:effect 重跑/卸载时不更新 state(避免 stale update)
19
19
  * - 加载/空态/错误三态明确
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ExifPanel.d.ts","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAgB,SAAS,CAAC,EAAE,SAAc,EAAE,EAAE,cAAc,4BAyJ3D"}
1
+ {"version":3,"file":"ExifPanel.d.ts","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,cAAc;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,SAAS,CAAC,EAAE,SAAc,EAAE,EAAE,cAAc,4BAyJ3D"}
@@ -15,7 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  * - 仅 image 类型 asset 显示;非 image 隐藏整个面板
16
16
  * - 缓存:按 assetId 缓存(LRU 上限 16),切换 asset 不重复解析
17
17
  * - effect 依赖 selectedAssetId(而非 asset 对象引用),避免 assets 数组
18
- * 重渲染时触发重复 effect
18
+ * 重渲染时触发重复 effect
19
19
  * - 取消:effect 重跑/卸载时不更新 state(避免 stale update)
20
20
  * - 加载/空态/错误三态明确
21
21
  */
@@ -99,6 +99,6 @@ export function ExifPanel({ className = '' }) {
99
99
  if (!isImage || !selectedAsset)
100
100
  return null;
101
101
  const rows = exif ? formatExifRows(exif) : [];
102
- return (_jsxs("div", { className: `shrink-0 border-b border-zinc-200 dark:border-zinc-800 ${className}`, children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), className: "flex w-full items-center justify-between px-3 h-10 text-left transition-colors hover:bg-zinc-50 dark:hover:bg-zinc-800/50", "aria-expanded": open, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 12, className: `text-zinc-400 transition-transform ${open ? 'rotate-90' : ''}`, children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-zinc-400", children: "EXIF" })] }), loading ? (_jsx("span", { className: "text-[10px] text-zinc-400", children: "loading\u2026" })) : exif ? (_jsxs("span", { className: "font-mono text-[10px] text-emerald-600 bg-emerald-50 dark:bg-emerald-950/30 dark:text-emerald-400 px-1.5 py-0.5 rounded", children: [rows.length, " fields"] })) : error ? (_jsx("span", { className: "text-[10px] text-red-500", children: "error" })) : (_jsx("span", { className: "text-[10px] text-zinc-400", children: "none" }))] }), open && (_jsx("div", { className: "px-3 pb-3 max-h-60 overflow-y-auto", children: loading ? (_jsx("div", { className: "py-4 text-center text-[11px] text-zinc-400", children: "Reading EXIF\u2026" })) : error ? (_jsx("div", { className: "py-3 text-center", children: _jsx("p", { className: "text-[11px] text-red-500", children: error }) })) : rows.length === 0 ? (_jsxs("div", { className: "py-4 text-center", children: [_jsx("p", { className: "text-[11px] text-zinc-400", children: "No EXIF data" }), _jsx("p", { className: "mt-1 text-[10px] text-zinc-500", children: "This image has no embedded metadata" })] })) : (_jsx("dl", { className: "space-y-1", children: rows.map((row) => (_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-[11px]", children: [_jsx("dt", { className: "shrink-0 text-zinc-400", children: row.label }), _jsx("dd", { className: "truncate text-right font-mono text-zinc-700 dark:text-zinc-300", children: row.value })] }, row.label))) })) }))] }));
102
+ return (_jsxs("div", { className: `shrink-0 border-b border-[var(--lokvis-border)] ${className}`, children: [_jsxs("button", { type: "button", onClick: () => setOpen(!open), className: "flex w-full items-center justify-between px-3 h-[var(--lokvis-panel-header-h)] text-left transition-colors hover:bg-[var(--lokvis-surface)]", "aria-expanded": open, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Icon, { size: 12, className: `text-[var(--lokvis-fg-subtle)] transition-transform ${open ? 'rotate-90' : ''}`, children: _jsx("path", { d: "m9 5 7 7-7 7" }) }), _jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "EXIF" })] }), loading ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "loading\u2026" })) : exif ? (_jsxs("span", { className: "font-mono text-[10px] text-[var(--lokvis-success)] bg-[var(--lokvis-success)]/10 px-1.5 py-0.5 rounded", children: [rows.length, " fields"] })) : error ? (_jsx("span", { className: "text-[10px] text-[var(--lokvis-danger)]", children: "error" })) : (_jsx("span", { className: "text-[10px] text-[var(--lokvis-fg-subtle)]", children: "none" }))] }), open && (_jsx("div", { className: "px-3 pb-3 max-h-60 overflow-y-auto", children: loading ? (_jsx("div", { className: "py-4 text-center text-[11px] text-[var(--lokvis-fg-subtle)]", children: "Reading EXIF\u2026" })) : error ? (_jsx("div", { className: "py-3 text-center", children: _jsx("p", { className: "text-[11px] text-[var(--lokvis-danger)]", children: error }) })) : rows.length === 0 ? (_jsxs("div", { className: "py-4 text-center", children: [_jsx("p", { className: "text-[11px] text-[var(--lokvis-fg-subtle)]", children: "No EXIF data" }), _jsx("p", { className: "mt-1 text-[10px] text-[var(--lokvis-fg-muted)]", children: "This image has no embedded metadata" })] })) : (_jsx("dl", { className: "space-y-1", children: rows.map((row) => (_jsxs("div", { className: "flex items-baseline justify-between gap-3 text-[11px]", children: [_jsx("dt", { className: "shrink-0 text-[var(--lokvis-fg-subtle)]", children: row.label }), _jsx("dd", { className: "truncate text-right font-mono text-[var(--lokvis-fg-muted)]", children: row.value })] }, row.label))) })) }))] }));
103
103
  }
104
104
  //# sourceMappingURL=ExifPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExifPanel.js","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExifPanel.js","sourceRoot":"","sources":["../../src/components/ExifPanel.tsx"],"names":[],"mappings":"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"}
@@ -5,13 +5,13 @@
5
5
  * 通过 `accept` 白名单做 MIME 类型校验,拒绝类型时给出视觉反馈 + 警告。
6
6
  *
7
7
  * 工作机制:
8
- * 1. 监听 window dragenter / dragover / dragleave / drop 事件
9
- * 2. dragenter 显示遮罩,dragleave(离开 window)隐藏
10
- * 3. drop 时校验文件类型 → 合法则 importFiles,非法则提示拒绝原因
8
+ * 1. 监听 window dragenter / dragover / dragleave / drop 事件
9
+ * 2. dragenter 显示遮罩,dragleave(离开 window)隐藏
10
+ * 3. drop 时校验文件类型 → 合法则 importFiles,非法则提示拒绝原因
11
11
  *
12
12
  * MIME 校验:
13
- * - 默认接受所有 image/* 类型(以及 video/audio/pdf 等,与 workspace 多媒体定位对齐)
14
- * - 拒绝类型在遮罩中央显示红色提示,并阻止导入
13
+ * - 默认接受所有 image/* 类型(以及 video/audio/pdf 等,与 workspace 多媒体定位对齐)
14
+ * - 拒绝类型在遮罩中央显示红色提示,并阻止导入
15
15
  *
16
16
  * 与 AssetPanel / Canvas 内置的局部 dropzone 互不冲突:它们各自处理自己的
17
17
  * drop 事件并 `stopPropagation()`,本组件的 window drop 监听不会触发。
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalDropzone.d.ts","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6BD,wBAAgB,cAAc,CAAC,EAC7B,MAAuB,EACvB,SAAc,GACf,EAAE,mBAAmB,4BAqJrB"}
1
+ {"version":3,"file":"GlobalDropzone.d.ts","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,mBAAmB;IACnC,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,cAAc,CAAC,EAC9B,MAAuB,EACvB,SAAc,GACd,EAAE,mBAAmB,4BA0JrB"}
@@ -6,13 +6,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
6
6
  * 通过 `accept` 白名单做 MIME 类型校验,拒绝类型时给出视觉反馈 + 警告。
7
7
  *
8
8
  * 工作机制:
9
- * 1. 监听 window dragenter / dragover / dragleave / drop 事件
10
- * 2. dragenter 显示遮罩,dragleave(离开 window)隐藏
11
- * 3. drop 时校验文件类型 → 合法则 importFiles,非法则提示拒绝原因
9
+ * 1. 监听 window dragenter / dragover / dragleave / drop 事件
10
+ * 2. dragenter 显示遮罩,dragleave(离开 window)隐藏
11
+ * 3. drop 时校验文件类型 → 合法则 importFiles,非法则提示拒绝原因
12
12
  *
13
13
  * MIME 校验:
14
- * - 默认接受所有 image/* 类型(以及 video/audio/pdf 等,与 workspace 多媒体定位对齐)
15
- * - 拒绝类型在遮罩中央显示红色提示,并阻止导入
14
+ * - 默认接受所有 image/* 类型(以及 video/audio/pdf 等,与 workspace 多媒体定位对齐)
15
+ * - 拒绝类型在遮罩中央显示红色提示,并阻止导入
16
16
  *
17
17
  * 与 AssetPanel / Canvas 内置的局部 dropzone 互不冲突:它们各自处理自己的
18
18
  * drop 事件并 `stopPropagation()`,本组件的 window drop 监听不会触发。
@@ -65,6 +65,8 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
65
65
  // dragCounter:用计数器而非布尔,避免子元素 dragenter/dragleave 触发抖动
66
66
  const [dragCounter, setDragCounter] = React.useState(0);
67
67
  const [rejectedFiles, setRejectedFiles] = React.useState([]);
68
+ // W21.6: 持有 rejectedFiles 自动清除定时器,unmount 时 cleanup
69
+ const rejectTimerRef = React.useRef(null);
68
70
  React.useEffect(() => {
69
71
  // 阻止浏览器默认行为(打开文件 / 下载),否则 drop 不会触发
70
72
  const preventDefault = (e) => {
@@ -123,8 +125,10 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
123
125
  }
124
126
  if (rejected.length > 0) {
125
127
  setRejectedFiles(rejected);
126
- // 5 秒后自动清空拒绝提示
127
- setTimeout(() => setRejectedFiles([]), 5000);
128
+ // W21.6: 5 秒后自动清空拒绝提示,clear 旧 timer 避免重叠
129
+ if (rejectTimerRef.current)
130
+ clearTimeout(rejectTimerRef.current);
131
+ rejectTimerRef.current = setTimeout(() => setRejectedFiles([]), 5000);
128
132
  }
129
133
  if (accepted.length > 0) {
130
134
  void importFiles(accepted);
@@ -143,12 +147,15 @@ export function GlobalDropzone({ accept = DEFAULT_ACCEPT, className = '', }) {
143
147
  window.removeEventListener('dragover', onDragOver);
144
148
  window.removeEventListener('dragleave', onDragLeave);
145
149
  window.removeEventListener('drop', onDrop);
150
+ // W21.6: 清理 rejectedFiles 自动清除定时器
151
+ if (rejectTimerRef.current)
152
+ clearTimeout(rejectTimerRef.current);
146
153
  };
147
154
  }, [accept, importFiles, setStatus, setError]);
148
155
  const isDragging = dragCounter > 0;
149
156
  const hasRejections = rejectedFiles.length > 0;
150
157
  if (!isDragging && !hasRejections)
151
158
  return null;
152
- return (_jsxs("div", { className: `pointer-events-none fixed inset-0 z-40 flex items-center justify-center p-8 ${className}`, role: "alertdialog", "aria-live": "polite", children: [_jsx("div", { className: "absolute inset-0 bg-indigo-50/80 backdrop-blur-sm dark:bg-indigo-950/60" }), _jsx("div", { className: `relative w-full max-w-md rounded-2xl border-2 border-dashed p-8 text-center bg-white shadow-2xl dark:bg-zinc-900 ${hasRejections ? 'border-red-400 dark:border-red-600' : 'border-indigo-500 dark:border-indigo-400'}`, children: hasRejections ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/40", children: _jsxs(Icon, { size: 24, className: "text-red-500", strokeWidth: 2, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-red-700 dark:text-red-400", children: "Unsupported file type" }), _jsx("p", { className: "mt-1.5 text-xs text-red-600/80 dark:text-red-400/70", children: rejectedFiles.join(', ') }), _jsxs("p", { className: "mt-2 text-[10px] text-zinc-500", children: ["Accepted: ", accept || 'all files'] })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-indigo-100 dark:bg-indigo-900/40", children: _jsx(Icon, { size: 24, className: "text-indigo-500", strokeWidth: 1.5, 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.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5" }) }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-indigo-700 dark:text-indigo-300", children: "Drop files to import" }), _jsx("p", { className: "mt-1 text-xs text-zinc-500 dark:text-zinc-400", children: "Files are processed locally in your browser" }), _jsxs("p", { className: "mt-2 text-[10px] text-zinc-400", children: ["Accepted: ", accept || 'all files'] })] })) })] }));
159
+ return (_jsxs("div", { className: `pointer-events-none fixed inset-0 z-40 flex items-center justify-center p-8 ${className}`, role: "alertdialog", "aria-live": "polite", children: [_jsx("div", { className: "absolute inset-0 bg-[var(--lokvis-primary)]/10/80 backdrop-blur-sm" }), _jsx("div", { className: `relative w-full max-w-md rounded-2xl border-2 border-dashed p-8 text-center bg-[var(--lokvis-surface)] shadow-[var(--lokvis-elevation-overlay)] ${hasRejections ? 'border-[var(--lokvis-danger)]' : 'border-[var(--lokvis-primary)]'}`, children: hasRejections ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-danger)]/15", children: _jsxs(Icon, { size: 24, className: "text-[var(--lokvis-danger)]", strokeWidth: 2, children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }), _jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })] }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-[var(--lokvis-danger)]", children: "Unsupported file type" }), _jsx("p", { className: "mt-1.5 text-xs text-[var(--lokvis-danger)]/80", children: rejectedFiles.join(', ') }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-muted)]", children: ["Accepted: ", accept || 'all files'] })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-[var(--lokvis-primary)]/15", children: _jsx(Icon, { size: 24, className: "text-[var(--lokvis-primary)]", strokeWidth: 1.5, 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.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5" }) }) }), _jsx("p", { className: "mt-3 text-sm font-semibold text-[var(--lokvis-primary)]", children: "Drop files to import" }), _jsx("p", { className: "mt-1 text-xs text-[var(--lokvis-fg-muted)]", children: "Files are processed locally in your browser" }), _jsxs("p", { className: "mt-2 text-[10px] text-[var(--lokvis-fg-subtle)]", children: ["Accepted: ", accept || 'all files'] })] })) })] }));
153
160
  }
154
161
  //# sourceMappingURL=GlobalDropzone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalDropzone.js","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalDropzone.js","sourceRoot":"","sources":["../../src/components/GlobalDropzone.tsx"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  * - cursor 当前位置高亮,cursor 之后的条目标灰(redo 分支)
8
8
  *
9
9
  * W9.1: 支持 `variant` 切换布局方向
10
- * - `vertical`(默认):侧栏垂直布局,适合嵌入左/右栏
11
- * - `horizontal`:底部横条布局,作为底部 history bar 使用
10
+ * - `vertical`(默认):侧栏垂直布局,适合嵌入左/右栏
11
+ * - `horizontal`:底部横条布局,作为底部 history bar 使用
12
12
  *
13
13
  * 数据来自 history-slice(store 单一来源),由 runtime-slice 的
14
14
  * history:changed 订阅自动更新,组件无需自行订阅事件。
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryPanel.d.ts","sourceRoot":"","sources":["../../src/components/HistoryPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAc,EAAE,OAAoB,EAAE,EAAE,iBAAiB,+BA0MvF"}
1
+ {"version":3,"file":"HistoryPanel.d.ts","sourceRoot":"","sources":["../../src/components/HistoryPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,WAAW,iBAAiB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACpC;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAc,EAAE,OAAoB,EAAE,EAAE,iBAAiB,+BA0MvF"}
@@ -11,48 +11,48 @@ export function HistoryPanel({ className = '', variant = 'vertical' }) {
11
11
  const canUndo = cursor >= 0;
12
12
  const canRedo = cursor < entries.length - 1;
13
13
  const horizontal = variant === 'horizontal';
14
- const undoBtn = (_jsx("button", { type: "button", onClick: () => void undo(), disabled: !canUndo, "aria-label": "Undo", className: "rounded p-1 text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-700 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-zinc-800 dark:hover:text-zinc-300", children: _jsxs(Icon, { size: 13, children: [_jsx("path", { d: "M9 14L4 9l5-5" }), _jsx("path", { d: "M4 9h11a4 4 0 0 1 0 8h-3" })] }) }));
15
- const redoBtn = (_jsx("button", { type: "button", onClick: () => void redo(), disabled: !canRedo, "aria-label": "Redo", className: "rounded p-1 text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-700 disabled:cursor-not-allowed disabled:opacity-30 dark:hover:bg-zinc-800 dark:hover:text-zinc-300", children: _jsxs(Icon, { size: 13, children: [_jsx("path", { d: "M15 14l5-5-5-5" }), _jsx("path", { d: "M20 9H9a4 4 0 0 0 0 8h3" })] }) }));
16
- const headerEl = (_jsxs("div", { className: `flex shrink-0 items-center justify-between px-3 ${horizontal ? 'h-full border-r border-zinc-200 dark:border-zinc-800' : 'h-10 border-b border-zinc-200 dark:border-zinc-800'}`, children: [_jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-zinc-400", children: "History" }), _jsxs("div", { className: "flex items-center gap-0.5", children: [undoBtn, redoBtn] })] }));
14
+ const undoBtn = (_jsx("button", { type: "button", onClick: () => void undo(), disabled: !canUndo, "aria-label": "Undo", className: "rounded p-1 text-[var(--lokvis-fg-muted)] transition-colors hover:bg-[var(--lokvis-surface-muted)] hover:text-[var(--lokvis-fg-muted)] disabled:cursor-not-allowed disabled:opacity-30", children: _jsxs(Icon, { size: 13, children: [_jsx("path", { d: "M9 14L4 9l5-5" }), _jsx("path", { d: "M4 9h11a4 4 0 0 1 0 8h-3" })] }) }));
15
+ const redoBtn = (_jsx("button", { type: "button", onClick: () => void redo(), disabled: !canRedo, "aria-label": "Redo", className: "rounded p-1 text-[var(--lokvis-fg-muted)] transition-colors hover:bg-[var(--lokvis-surface-muted)] hover:text-[var(--lokvis-fg-muted)] disabled:cursor-not-allowed disabled:opacity-30", children: _jsxs(Icon, { size: 13, children: [_jsx("path", { d: "M15 14l5-5-5-5" }), _jsx("path", { d: "M20 9H9a4 4 0 0 0 0 8h3" })] }) }));
16
+ const headerEl = (_jsxs("div", { className: `flex shrink-0 items-center justify-between px-3 ${horizontal ? 'h-full border-r border-[var(--lokvis-border)]' : 'h-10 border-b border-[var(--lokvis-border)]'}`, children: [_jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-[var(--lokvis-fg-subtle)]", children: "History" }), _jsxs("div", { className: "flex items-center gap-0.5", children: [undoBtn, redoBtn] })] }));
17
17
  // 空状态
18
18
  if (!workflowId || entries.length === 0) {
19
19
  return (_jsxs("aside", { className: `flex shrink-0 ${horizontal
20
- ? 'h-12 flex-row items-center border-t border-zinc-200 dark:border-zinc-800'
21
- : 'w-48 flex-col border-r border-zinc-200 dark:border-zinc-800'} ${className}`, "aria-label": "History panel", children: [headerEl, _jsx("p", { className: "px-3 text-[10px] text-zinc-400", children: "No history yet" })] }));
20
+ ? 'h-12 flex-row items-center border-t border-[var(--lokvis-border)]'
21
+ : 'w-48 flex-col border-r border-[var(--lokvis-border)]'} ${className}`, "aria-label": "History panel", children: [headerEl, _jsx("p", { className: "px-3 text-[10px] text-[var(--lokvis-fg-subtle)]", children: "No history yet" })] }));
22
22
  }
23
23
  if (horizontal) {
24
24
  // 横向布局:header | entries(横向滚动)
25
- return (_jsxs("aside", { className: `flex h-12 shrink-0 items-stretch border-t border-zinc-200 dark:border-zinc-800 ${className}`, "aria-label": "History panel", children: [headerEl, _jsxs("ol", { className: "flex flex-1 items-center gap-1 overflow-x-auto px-2", children: [_jsx("li", { className: "shrink-0", children: _jsxs("button", { type: "button", onClick: () => void jumpTo(-1), className: `flex items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors ${cursor === -1
26
- ? 'bg-indigo-50 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-950/30 dark:text-indigo-300 dark:ring-indigo-800'
27
- : 'text-zinc-500 hover:bg-zinc-50 dark:hover:bg-zinc-800'}`, children: [_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-300 dark:bg-zinc-600", "aria-hidden": "true" }), _jsx("span", { className: "truncate", children: "Initial" })] }) }), entries.map((entry, i) => {
25
+ return (_jsxs("aside", { className: `flex h-12 shrink-0 items-stretch border-t border-[var(--lokvis-border)] ${className}`, "aria-label": "History panel", children: [headerEl, _jsxs("ol", { className: "flex flex-1 items-center gap-1 overflow-x-auto px-2", children: [_jsx("li", { className: "shrink-0", children: _jsxs("button", { type: "button", onClick: () => void jumpTo(-1), className: `flex items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors ${cursor === -1
26
+ ? 'bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/40'
27
+ : 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-[var(--lokvis-fg-subtle)]", "aria-hidden": "true" }), _jsx("span", { className: "truncate", children: "Initial" })] }) }), entries.map((entry, i) => {
28
28
  const isCurrent = i === cursor;
29
29
  const isRedoBranch = i > cursor;
30
30
  return (_jsx("li", { className: "shrink-0", children: _jsxs("button", { type: "button", onClick: () => void jumpTo(i), "aria-current": isCurrent ? 'step' : undefined, className: `flex items-center gap-1.5 rounded px-2 py-1 text-[10px] transition-colors ${isCurrent
31
- ? 'bg-indigo-50 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-950/30 dark:text-indigo-300 dark:ring-indigo-800'
31
+ ? 'bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/40'
32
32
  : isRedoBranch
33
- ? 'text-zinc-300 hover:bg-zinc-50 dark:text-zinc-600 dark:hover:bg-zinc-800/50'
34
- : 'text-zinc-600 hover:bg-zinc-50 dark:text-zinc-300 dark:hover:bg-zinc-800'}`, children: [_jsx("span", { className: `h-1.5 w-1.5 shrink-0 rounded-full ${isCurrent
35
- ? 'bg-indigo-500'
33
+ ? 'text-[var(--lokvis-fg-subtle)] hover:bg-[var(--lokvis-surface)]'
34
+ : 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("span", { className: `h-1.5 w-1.5 shrink-0 rounded-full ${isCurrent
35
+ ? 'bg-[var(--lokvis-primary)]'
36
36
  : isRedoBranch
37
- ? 'bg-zinc-200 dark:bg-zinc-700'
38
- : 'bg-zinc-400 dark:bg-zinc-500'}`, "aria-hidden": "true" }), _jsx("span", { className: "truncate font-medium", children: describeHistoryEntry(entry) })] }) }, entry.id));
37
+ ? 'bg-[var(--lokvis-border)]'
38
+ : 'bg-[var(--lokvis-fg-subtle)]'}`, "aria-hidden": "true" }), _jsx("span", { className: "truncate font-medium", children: describeHistoryEntry(entry) })] }) }, entry.id));
39
39
  })] })] }));
40
40
  }
41
41
  // 垂直布局(原实现)
42
- return (_jsxs("aside", { className: `flex w-48 shrink-0 flex-col border-r border-zinc-200 dark:border-zinc-800 ${className}`, "aria-label": "History panel", children: [headerEl, _jsx("div", { className: "flex-1 overflow-y-auto px-2 py-2", children: _jsxs("ol", { className: "space-y-0.5", children: [_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => void jumpTo(-1), className: `flex w-full items-center gap-1.5 rounded px-2 py-1 text-left text-[10px] transition-colors ${cursor === -1
43
- ? 'bg-indigo-50 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-950/30 dark:text-indigo-300 dark:ring-indigo-800'
44
- : 'text-zinc-500 hover:bg-zinc-50 dark:hover:bg-zinc-800'}`, children: [_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-zinc-300 dark:bg-zinc-600", "aria-hidden": "true" }), _jsx("span", { className: "truncate", children: "Initial" })] }) }), entries.map((entry, i) => {
42
+ return (_jsxs("aside", { className: `flex w-48 shrink-0 flex-col border-r border-[var(--lokvis-border)] ${className}`, "aria-label": "History panel", children: [headerEl, _jsx("div", { className: "flex-1 overflow-y-auto px-2 py-2", children: _jsxs("ol", { className: "space-y-0.5", children: [_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => void jumpTo(-1), className: `flex w-full items-center gap-1.5 rounded px-2 py-1 text-left text-[10px] transition-colors ${cursor === -1
43
+ ? 'bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/40'
44
+ : 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-[var(--lokvis-fg-subtle)]", "aria-hidden": "true" }), _jsx("span", { className: "truncate", children: "Initial" })] }) }), entries.map((entry, i) => {
45
45
  const isCurrent = i === cursor;
46
46
  const isRedoBranch = i > cursor;
47
47
  return (_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => void jumpTo(i), "aria-current": isCurrent ? 'step' : undefined, className: `flex w-full items-start gap-1.5 rounded px-2 py-1 text-left text-[10px] transition-colors ${isCurrent
48
- ? 'bg-indigo-50 text-indigo-700 ring-1 ring-indigo-200 dark:bg-indigo-950/30 dark:text-indigo-300 dark:ring-indigo-800'
48
+ ? 'bg-[var(--lokvis-primary)]/10 text-[var(--lokvis-primary)] ring-1 ring-[var(--lokvis-primary)]/40'
49
49
  : isRedoBranch
50
- ? 'text-zinc-300 hover:bg-zinc-50 dark:text-zinc-600 dark:hover:bg-zinc-800/50'
51
- : 'text-zinc-600 hover:bg-zinc-50 dark:text-zinc-300 dark:hover:bg-zinc-800'}`, children: [_jsx("span", { className: `mt-0.5 h-1.5 w-1.5 shrink-0 rounded-full ${isCurrent
52
- ? 'bg-indigo-500'
50
+ ? 'text-[var(--lokvis-fg-subtle)] hover:bg-[var(--lokvis-surface)]'
51
+ : 'text-[var(--lokvis-fg-muted)] hover:bg-[var(--lokvis-surface)]'}`, children: [_jsx("span", { className: `mt-0.5 h-1.5 w-1.5 shrink-0 rounded-full ${isCurrent
52
+ ? 'bg-[var(--lokvis-primary)]'
53
53
  : isRedoBranch
54
- ? 'bg-zinc-200 dark:bg-zinc-700'
55
- : 'bg-zinc-400 dark:bg-zinc-500'}`, "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-medium", children: describeHistoryEntry(entry) }), _jsx("div", { className: "text-[9px] text-zinc-400", children: new Date(entry.timestamp).toLocaleTimeString() })] })] }) }, entry.id));
54
+ ? 'bg-[var(--lokvis-border)]'
55
+ : 'bg-[var(--lokvis-fg-subtle)]'}`, "aria-hidden": "true" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate font-medium", children: describeHistoryEntry(entry) }), _jsx("div", { className: "text-[9px] text-[var(--lokvis-fg-subtle)]", children: new Date(entry.timestamp).toLocaleTimeString() })] })] }) }, entry.id));
56
56
  })] }) })] }));
57
57
  }
58
58
  /** 把 HistoryEntry 摘要为可读标签(capability 简称 + 关键参数) */