zdashboard 2.3.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +15 -0
  2. package/dist/cli.js +6 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/web/assets/FileIcon-CeMvyYN_.js +110 -0
  5. package/dist/web/assets/{FilterPills-CT9_aiMo.js → FilterPills-CkgNlhxd.js} +1 -1
  6. package/dist/web/assets/{MdViewer-C-qU08GL.js → MdViewer-BVog1Mmf.js} +1 -1
  7. package/dist/web/assets/{ProgressBar-CyYoGfrt.js → ProgressBar-Cmd6BS-8.js} +1 -1
  8. package/dist/web/assets/{Workspace-CqK1Sdtv.js → Workspace-DfmiOTyP.js} +2 -2
  9. package/dist/web/assets/badge-LEpB1yPS.js +1 -0
  10. package/dist/web/assets/{book-open-DgUv7g0V.js → book-open-C6mI7nw7.js} +1 -1
  11. package/dist/web/assets/{file-text-AM0snHQm.js → file-text-BN7zorT8.js} +1 -1
  12. package/dist/web/assets/{index-BF1XYOKG.js → index-CxJJYhye.js} +1 -1
  13. package/dist/web/assets/index-D0Ytqw4l.js +161 -0
  14. package/dist/web/assets/index-Dr1HVqud.css +1 -0
  15. package/dist/web/assets/vt323-latin-400-normal-Dqn9ZSPj.woff +0 -0
  16. package/dist/web/assets/vt323-latin-400-normal-wDgJuOC9.woff2 +0 -0
  17. package/dist/web/assets/web-BUcxZ3zM.js +2 -0
  18. package/dist/web/assets/{web-WH-i-efe.js → web-BtGB7yoQ.js} +1 -1
  19. package/dist/web/assets/web-D50pz6K1.js +16 -0
  20. package/dist/web/assets/web-DVlfapY3.js +21 -0
  21. package/dist/web/assets/web-DezLgOmZ.js +25 -0
  22. package/dist/web/assets/web-DwE0xwTq.js +26 -0
  23. package/dist/web/assets/web-sOdesjte.js +7 -0
  24. package/dist/web/index.html +2 -2
  25. package/package.json +4 -1
  26. package/dist/web/assets/FileIcon-CA7j6xAr.js +0 -50
  27. package/dist/web/assets/badge-CsNeQaUt.js +0 -1
  28. package/dist/web/assets/index-C9nEYrn8.css +0 -1
  29. package/dist/web/assets/index-Dcz2Myaf.js +0 -111
  30. package/dist/web/assets/web-4IVEiPQ7.js +0 -36
  31. package/dist/web/assets/web-4pvyVYqE.js +0 -31
  32. package/dist/web/assets/web-B8iKfUHX.js +0 -2
  33. package/dist/web/assets/web-BOZwX-p2.js +0 -56
  34. package/dist/web/assets/web-CPCrz28U.js +0 -25
  35. package/dist/web/assets/web-DJnenbT2.js +0 -7
package/README.md CHANGED
@@ -248,6 +248,21 @@ node dist/cli.js --dir <项目根> --port 4190 --plugins ./my-plugins
248
248
  - **构建**:tsup(CLI) + Vite(SPA)
249
249
  - **包管理**:pnpm
250
250
 
251
+ ## 主题系统
252
+
253
+ ### 添加主题 SOP
254
+
255
+ 1. 新建 `src/web/themes/<id>.css`,仅覆盖语义色变量(`--background/--foreground/--card/--popover/--primary/--secondary/--muted/--accent/--destructive/--border/--input/--ring` 等),**不覆盖圆角/阴影变量**(mode 正交性:`[data-theme="..."][data-mode="dark"]` 组合由机制层处理)
256
+ 2. 在 `src/web/lib/themes.ts` 的 `STYLES` 数组加一条:`{ id: '<id>', label: '<名>', swatch: ['#色1', '#色2', '#色3', '#色4'] }`
257
+ 3. 在 `src/web/globals.css` 顶部 `@import` 块加一行:`@import './themes/<id>.css';`
258
+
259
+ **约束清单**
260
+ - mode(dark/light)正交,不进主题定义,由 CSS 组合选择器自然派生
261
+ - 语义色必须走 CSS 变量令牌(`hsl(var(--xxx))`),不硬编码色值到组件
262
+ - 装饰色(图标、插画、背景纹理)豁免令牌,可在主题文件中直接写值
263
+ - `font-mono` 覆盖点:`--font-mono` 令牌,主题文件可覆盖,组件用 `font-mono` class
264
+ - 主题切换选择器:`data-theme`,localStorage key `zd-theme`,legacy `zdashboard-theme` 已迁移
265
+
251
266
  ## 数据约定
252
267
 
253
268
  ### .zdev/ 数据目录
package/dist/cli.js CHANGED
@@ -167,7 +167,7 @@ import { fileURLToPath } from "url";
167
167
  // package.json
168
168
  var package_default = {
169
169
  name: "zdashboard",
170
- version: "2.3.1",
170
+ version: "2.5.0",
171
171
  description: "ZCode skill dashboard platform \u2014 pluggable viewers for zdesign/zview/zreview/zgoal",
172
172
  type: "module",
173
173
  bin: {
@@ -188,6 +188,8 @@ var package_default = {
188
188
  preview: "vite preview"
189
189
  },
190
190
  dependencies: {
191
+ "@fontsource/vt323": "^5.3.0",
192
+ "@radix-ui/react-dropdown-menu": "^2.1.24",
191
193
  "@radix-ui/react-scroll-area": "^1.2.0",
192
194
  "@radix-ui/react-separator": "^1.1.0",
193
195
  "@radix-ui/react-slot": "^1.1.0",
@@ -205,6 +207,7 @@ var package_default = {
205
207
  ky: "^1.7.0",
206
208
  "lodash-es": "^4.17.21",
207
209
  "lucide-react": "^0.460.0",
210
+ pixelarticons: "^2.4.1",
208
211
  react: "^18.3.1",
209
212
  "react-dom": "^18.3.1",
210
213
  "react-error-boundary": "^5.0.0",
@@ -1530,11 +1533,11 @@ function categorize(rel, ext) {
1530
1533
  if (TOKEN_RE.test(rel) && (ext === ".css" || ext === ".json")) return "token";
1531
1534
  return null;
1532
1535
  }
1533
- return "other";
1536
+ return null;
1534
1537
  }
1535
1538
  function scanAssets(root) {
1536
1539
  const out = {};
1537
- const keys = ["page", "component", "icon", "token", "md", "video", "audio", "pdf", "font", "other"];
1540
+ const keys = ["page", "component", "icon", "token", "md", "video", "audio", "pdf", "font"];
1538
1541
  for (const k of keys) out[k] = [];
1539
1542
  const SKIP = /* @__PURE__ */ new Set(["node_modules", ".git", "dist", "build", "coverage", ".next", ".cache"]);
1540
1543
  walkDir(root, { skip: SKIP, onFile: (abs, rel) => {