sparkdesign 0.4.4 → 0.4.6

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 (136) hide show
  1. package/README.md +74 -22
  2. package/cli/dist/commands/add.js +22 -12
  3. package/cli/dist/commands/diff.js +8 -4
  4. package/cli/dist/commands/init.js +84 -9
  5. package/cli/dist/commands/list.js +8 -4
  6. package/cli/dist/index.js +9 -6
  7. package/cli/dist/utils/config.js +16 -8
  8. package/cli/dist/utils/package-manager.js +75 -0
  9. package/cli/dist/utils/registry.js +8 -4
  10. package/cli/dist/utils/tokens.js +33 -25
  11. package/cli/dist/utils/transform.js +9 -5
  12. package/cli/dist/utils/tsconfig.js +182 -0
  13. package/cli/registry/AGENTS.md +18 -0
  14. package/cli/registry/__tests__/chat/thinking-indicator.test.tsx +2 -2
  15. package/cli/registry/chat/chat-input/chat-input-folder-selector.tsx +1 -1
  16. package/cli/registry/chat/chat-input/folder-permission-dialog.tsx +2 -2
  17. package/cli/registry/chat/image-generating.tsx +1 -1
  18. package/cli/registry/chat/response/context.tsx +1 -1
  19. package/cli/registry/chat/thinking-indicator.tsx +1 -1
  20. package/cli/registry/tokens/index.css +8 -5
  21. package/cli/registry/tokens/theme-base.css +235 -0
  22. package/{dist/tokens/themes/dark-qoder.css → cli/registry/tokens/themes/dark-mint.css} +1 -1
  23. package/cli/registry/tokens/themes/dark-parchment.css +104 -103
  24. package/{dist/tokens/themes/light-qoder.css → cli/registry/tokens/themes/light-mint.css} +1 -1
  25. package/cli/registry/tokens/themes/light-parchment.css +103 -102
  26. package/dist/registry/basic/alert-dialog.d.ts +7 -5
  27. package/dist/registry/basic/avatar.d.ts +7 -5
  28. package/dist/registry/basic/collapse.d.ts +7 -5
  29. package/dist/registry/basic/collapsible-card.d.ts +7 -6
  30. package/dist/registry/basic/collapsible.d.ts +7 -5
  31. package/dist/registry/basic/dropdown-menu.d.ts +7 -5
  32. package/dist/registry/basic/icons-inline.d.ts +7 -5
  33. package/dist/registry/basic/kbd.d.ts +7 -5
  34. package/dist/registry/basic/pagination.d.ts +7 -5
  35. package/dist/registry/basic/progress.d.ts +7 -5
  36. package/dist/registry/basic/radio-group.d.ts +7 -5
  37. package/dist/registry/basic/resizable.d.ts +7 -5
  38. package/dist/registry/basic/select.d.ts +7 -5
  39. package/dist/registry/basic/slider.d.ts +7 -5
  40. package/dist/registry/basic/sonner.d.ts +7 -5
  41. package/dist/registry/basic/switch.d.ts +7 -5
  42. package/dist/registry/basic/tabs.d.ts +7 -5
  43. package/dist/registry/basic/tag.d.ts +7 -5
  44. package/dist/registry/basic/theme-from-document.d.ts +7 -5
  45. package/dist/registry/basic/tooltip.d.ts +7 -5
  46. package/dist/registry/basic/typography.d.ts +7 -5
  47. package/dist/registry/chat/ask-user-part.d.ts +9 -3
  48. package/dist/registry/chat/browser-action-part.d.ts +9 -3
  49. package/dist/registry/chat/chat-input/compound.d.ts +7 -5
  50. package/dist/registry/chat/chat-input/context.d.ts +7 -5
  51. package/dist/registry/chat/chat-input/index.d.ts +7 -5
  52. package/dist/registry/chat/chat-input/types.d.ts +9 -3
  53. package/dist/registry/chat/chat-input/useAutoResizeTextarea.d.ts +9 -3
  54. package/dist/registry/chat/code-block-part.d.ts +9 -3
  55. package/dist/registry/chat/file-attachment.d.ts +7 -5
  56. package/dist/registry/chat/file-review-part.d.ts +9 -4
  57. package/dist/registry/chat/generated-images-grid.d.ts +9 -3
  58. package/dist/registry/chat/generation-status-bar.d.ts +8 -4
  59. package/dist/registry/chat/hint-banner.d.ts +9 -3
  60. package/dist/registry/chat/mermaid-part.d.ts +9 -3
  61. package/dist/registry/chat/plan-part.d.ts +9 -3
  62. package/dist/registry/chat/reasoning-step/index.d.ts +8 -6
  63. package/dist/registry/chat/reasoning-step/types.d.ts +9 -3
  64. package/dist/registry/chat/related-prompts.d.ts +9 -3
  65. package/dist/registry/chat/response/index.d.ts +8 -6
  66. package/dist/registry/chat/response/types.d.ts +9 -3
  67. package/dist/registry/chat/task-part.d.ts +9 -3
  68. package/dist/registry/chat/terminal-code-block-part.d.ts +9 -3
  69. package/dist/registry/chat/user-question/UserQuestionCard.d.ts +9 -3
  70. package/dist/registry/chat/user-question/UserQuestionFooter.d.ts +9 -3
  71. package/dist/registry/chat/user-question/UserQuestionHeader.d.ts +9 -3
  72. package/dist/registry/chat/user-question/types.d.ts +8 -5
  73. package/dist/registry/lib/file-icon-maps.d.ts +7 -7
  74. package/dist/registry/lib/utils.d.ts +8 -6
  75. package/dist/spark-design.cjs.js +6 -6
  76. package/dist/spark-design.es.js +10 -10
  77. package/dist/sparkdesign.css +2 -0
  78. package/dist/src/components/basic/AlertDialog/index.d.ts +7 -5
  79. package/dist/src/components/basic/Avatar/index.d.ts +9 -3
  80. package/dist/src/components/basic/Button/index.d.ts +9 -3
  81. package/dist/src/components/basic/Collapse/index.d.ts +7 -4
  82. package/dist/src/components/basic/Collapsible/index.d.ts +9 -4
  83. package/dist/src/components/basic/CollapsibleCard/index.d.ts +9 -3
  84. package/dist/src/components/basic/CollapsibleSection/index.d.ts +7 -7
  85. package/dist/src/components/basic/DropdownMenu/index.d.ts +7 -5
  86. package/dist/src/components/basic/EllipsisText/index.d.ts +7 -15
  87. package/dist/src/components/basic/IconButton/index.d.ts +9 -3
  88. package/dist/src/components/basic/Kbd/index.d.ts +9 -3
  89. package/dist/src/components/basic/OptionList/index.d.ts +9 -3
  90. package/dist/src/components/basic/Pagination/index.d.ts +9 -3
  91. package/dist/src/components/basic/Progress/index.d.ts +9 -3
  92. package/dist/src/components/basic/RadioGroup/index.d.ts +9 -3
  93. package/dist/src/components/basic/Resizable/index.d.ts +9 -3
  94. package/dist/src/components/basic/Scrollbar/index.d.ts +9 -3
  95. package/dist/src/components/basic/Select/index.d.ts +7 -4
  96. package/dist/src/components/basic/ShimmeringText/index.d.ts +9 -3
  97. package/dist/src/components/basic/Skeleton/index.d.ts +9 -3
  98. package/dist/src/components/basic/Slider/index.d.ts +9 -3
  99. package/dist/src/components/basic/Spinner/index.d.ts +9 -3
  100. package/dist/src/components/basic/Switch/index.d.ts +8 -5
  101. package/dist/src/components/basic/Table/index.d.ts +9 -3
  102. package/dist/src/components/basic/Tabs/index.d.ts +9 -3
  103. package/dist/src/components/basic/Tag/index.d.ts +7 -4
  104. package/dist/src/components/basic/Toggle/index.d.ts +9 -3
  105. package/dist/src/components/basic/Tooltip/index.d.ts +7 -4
  106. package/dist/src/components/basic/Typography/index.d.ts +9 -3
  107. package/dist/src/components/chat/GeneratedImagesGrid/index.d.ts +9 -3
  108. package/dist/src/components/chat/GenerationStatusBar/index.d.ts +9 -3
  109. package/dist/src/components/chat/Markdown/demo-content.d.ts +1 -1
  110. package/dist/src/components/chat/Markdown/index.d.ts +9 -3
  111. package/dist/src/components/chat/Response/StreamingMarkdownBlock.d.ts +9 -3
  112. package/dist/src/components/chat/Response/index.d.ts +8 -6
  113. package/dist/src/components/chat/UserMessage/index.d.ts +9 -3
  114. package/dist/src/components/index.d.ts +7 -9
  115. package/dist/src/icons/context.d.ts +7 -6
  116. package/dist/src/icons/types.d.ts +7 -5
  117. package/dist/src/lib/ThemeStyleContext.d.ts +9 -9
  118. package/dist/src/lib/file-icon.d.ts +7 -6
  119. package/dist/src/lib/i18n.d.ts +7 -6
  120. package/dist/src/lib/index.d.ts +9 -3
  121. package/dist/src/lib/utils.d.ts +7 -5
  122. package/dist/theme-base.css +7 -8
  123. package/dist/theme.css +2 -2
  124. package/dist/themes/{dark-qoder.css → dark-mint.css} +1 -1
  125. package/dist/themes/{light-qoder.css → light-mint.css} +1 -1
  126. package/dist/tokens/AGENTS.md +47 -0
  127. package/dist/tokens/index.css +10 -19
  128. package/dist/tokens/theme-base.css +7 -8
  129. package/dist/tokens/theme.css +2 -2
  130. package/dist/tokens/themes/dark-mint.css +133 -0
  131. package/dist/tokens/themes/light-mint.css +132 -0
  132. package/package.json +11 -5
  133. package/cli/registry/tokens/themes/dark-qoder.css +0 -132
  134. package/cli/registry/tokens/themes/light-qoder.css +0 -131
  135. package/dist/qoder-design.css +0 -2
  136. package/dist/tokens/CLAUDE.md +0 -305
@@ -1,13 +1,12 @@
1
1
  /* ============================================
2
- * [POS]: src/tokens/theme-base.css - Tailwind v4 @theme 映射 + 动画 + 公共样式
3
- * [OUTPUT]: CSS 变量映射到 Tailwind 工具类
2
+ * [WHO]: Tailwind v4 `@theme` bridge, motion presets, scrollbar helpers — no palette hex here.
3
+ * [FROM]: Runtime vars from scale (`--font-size-*`, `--spacing-*`, `--radius-*`) and themes (`--token-color-*`).
4
+ * [TO]: Any bundle that imports tokens and needs Tailwind utilities resolved from CSS variables.
5
+ * [HERE]: src/tokens/theme-base.css — mapping contract only; literal colors live in `themes/*.css`.
4
6
  *
5
- * 此文件定义了 Token → Tailwind 的映射契约,不包含具体颜色值。
6
- * 颜色值由 themes/*.css 中的 [data-theme="xxx"] 块定义。
7
- *
8
- * 用户自定义主题时只需:
9
- * 1. 引入此文件(定义映射)
10
- * 2. 引入自己的主题 CSS(覆盖 --token-color-* 变量)
7
+ * [PROTOCOL]:
8
+ * 1. Do not embed theme colors in this file; define `--token-color-*` under `[data-theme]` in theme files.
9
+ * 2. Custom themes: import this for mappings, then add/override `--token-color-*` in your theme layer.
11
10
  * ============================================ */
12
11
 
13
12
  /* ============================================
package/dist/theme.css CHANGED
@@ -11,7 +11,7 @@
11
11
  * ============================================ */
12
12
 
13
13
  @import "./theme-base.css";
14
- @import "./themes/light-qoder.css";
15
- @import "./themes/dark-qoder.css";
14
+ @import "./themes/light-mint.css";
15
+ @import "./themes/dark-mint.css";
16
16
  @import "./themes/light-parchment.css";
17
17
  @import "./themes/dark-parchment.css";
@@ -1,5 +1,5 @@
1
1
  /* ============================================
2
- * Theme: Dark (暗色模式)
2
+ * Theme: Dark Mint (暗色模式)
3
3
  * 用户可复制此文件作为自定义主题模板
4
4
  * ============================================ */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /* ============================================
2
- * Theme: Light (亮色模式)
2
+ * Theme: Light Mint (亮色模式)
3
3
  * 用户可复制此文件作为自定义主题模板
4
4
  * ============================================ */
5
5
 
@@ -0,0 +1,47 @@
1
+ # src/tokens/
2
+
3
+ > **P2** | Parent: [Root AGENTS.md](../../AGENTS.md)
4
+
5
+ ## Member list (CSS entrypoints)
6
+
7
+ | Area | Files | Purpose |
8
+ | ---- | ----- | ------- |
9
+ | Bundle | `index.css` | Recommended full import |
10
+ | Scale | `scale/`, `scale.css` (legacy) | Layout tokens (`data-style`) via config + computed + presets |
11
+ | Theme bridge | `theme-base.css`, `theme.css` (legacy) | Tailwind `@theme` mappings, shared motion, scrollbar helpers |
12
+ | Color packs | `themes/*.css` | Palette definitions (`--token-color-*`) |
13
+ | Utilities | `scrollbar-utility.css` | Scrollbar styling helpers |
14
+
15
+ ---
16
+
17
+ **Covenant:** whenever you add presets, themes, or rename token files, update this table and the root `AGENTS.md` if publishing behavior changes.
18
+
19
+ ---
20
+
21
+ ## Narrative
22
+
23
+ ### Two axes
24
+
25
+ 1. **`data-style`** — spacing, radii, typography presets (`scale/`).
26
+ 2. **`data-theme`** — color palettes independent from layout. Define **`--token-color-*`** in `:root` / `[data-theme]`, map to **`--color-*`** inside `@theme` without self-referential loops (critical for CLI consumers).
27
+
28
+ ### Authoring rules
29
+
30
+ - Never create `@theme` entries such as `--color-primary: var(--color-primary)` — use `--token-color-*` as the source of truth.
31
+ - Components consume **`var(--color-*)`** only; token files own the mapping.
32
+ - When adding a preset or theme, cover spacing, radius, and font scales consistently.
33
+
34
+ ### Consumption modes
35
+
36
+ | Mode | What happens | Consumer needs Tailwind? |
37
+ | ---- | ------------- | ------------------------- |
38
+ | npm package | `@tailwindcss/cli` emits `dist/sparkdesign.css` | No |
39
+ | CLI copy | User `@import`s token CSS in their app | Tailwind v4 recommended |
40
+
41
+ ### Checklist
42
+
43
+ - [ ] New `data-style` preset updates `scale/presets/`
44
+ - [ ] New configurable knobs land in `scale/config.css` + `computed.css`
45
+ - [ ] New theme file added under `themes/` and wired through `index.css`
46
+ - [ ] Contrast checked for accessibility
47
+ - [ ] This P2 file reflects the change
@@ -1,22 +1,13 @@
1
1
  /* ============================================
2
- * [POS]: src/tokens/index.css - Token 系统统一入口
2
+ * [WHO]: Default token stack entry — wires scale, theme bridge, scrollbar helper, and built-in themes.
3
+ * [FROM]: `./scale.css`, `theme-base.css`, `themes/*.css`, `scrollbar-utility.css`.
4
+ * [TO]: Apps that want one import for layout + color tokens; CLI `init` / docs full-import path.
5
+ * [HERE]: src/tokens/index.css — bundle root; see `src/tokens/AGENTS.md` for cherry-pick imports.
3
6
  *
4
- * 引入方式:
5
- * 1. 全量引入(默认): @import "./tokens/index.css";
6
- * 2. 按需引入:
7
- * @import "./tokens/scale/config.css"; // 可配置基础变量
8
- * @import "./tokens/scale/computed.css"; // 映射到实际变量
9
- * @import "./tokens/theme-base.css";
10
- * @import "./tokens/themes/light-qoder.css";
11
- *
12
- * 自定义布局配置:
13
- * @import "./tokens/scale/config.css";
14
- * @import "./tokens/scale/computed.css";
15
- * :root { --config-radius-default: 10px; } // 覆盖配置
16
- *
17
- * 自定义颜色主题:
18
- * @import "./tokens/theme-base.css";
19
- * @import "./my-custom-theme.css"; // 定义 [data-theme="xxx"] { --token-color-*: ... }
7
+ * [PROTOCOL]:
8
+ * 1. When adding a new theme file, import it here and document in P2 `src/tokens/AGENTS.md`.
9
+ * 2. Custom layout: import `scale/config.css` + `scale/computed.css`, override `--config-*`, then theme layers.
10
+ * 3. Custom color only: `theme-base.css` + your `[data-theme]` file setting `--token-color-*`.
20
11
  * ============================================ */
21
12
 
22
13
  /* 布局风格 Token (data-style: neutral | compact | soft | sharp | dense) */
@@ -26,8 +17,8 @@
26
17
  @import "./theme-base.css";
27
18
 
28
19
  /* 内置主题 (data-theme) */
29
- @import "./themes/light-qoder.css";
30
- @import "./themes/dark-qoder.css";
20
+ @import "./themes/light-mint.css";
21
+ @import "./themes/dark-mint.css";
31
22
  @import "./themes/light-parchment.css";
32
23
  @import "./themes/dark-parchment.css";
33
24
 
@@ -1,13 +1,12 @@
1
1
  /* ============================================
2
- * [POS]: src/tokens/theme-base.css - Tailwind v4 @theme 映射 + 动画 + 公共样式
3
- * [OUTPUT]: CSS 变量映射到 Tailwind 工具类
2
+ * [WHO]: Tailwind v4 `@theme` bridge, motion presets, scrollbar helpers — no palette hex here.
3
+ * [FROM]: Runtime vars from scale (`--font-size-*`, `--spacing-*`, `--radius-*`) and themes (`--token-color-*`).
4
+ * [TO]: Any bundle that imports tokens and needs Tailwind utilities resolved from CSS variables.
5
+ * [HERE]: src/tokens/theme-base.css — mapping contract only; literal colors live in `themes/*.css`.
4
6
  *
5
- * 此文件定义了 Token → Tailwind 的映射契约,不包含具体颜色值。
6
- * 颜色值由 themes/*.css 中的 [data-theme="xxx"] 块定义。
7
- *
8
- * 用户自定义主题时只需:
9
- * 1. 引入此文件(定义映射)
10
- * 2. 引入自己的主题 CSS(覆盖 --token-color-* 变量)
7
+ * [PROTOCOL]:
8
+ * 1. Do not embed theme colors in this file; define `--token-color-*` under `[data-theme]` in theme files.
9
+ * 2. Custom themes: import this for mappings, then add/override `--token-color-*` in your theme layer.
11
10
  * ============================================ */
12
11
 
13
12
  /* ============================================
@@ -11,7 +11,7 @@
11
11
  * ============================================ */
12
12
 
13
13
  @import "./theme-base.css";
14
- @import "./themes/light-qoder.css";
15
- @import "./themes/dark-qoder.css";
14
+ @import "./themes/light-mint.css";
15
+ @import "./themes/dark-mint.css";
16
16
  @import "./themes/light-parchment.css";
17
17
  @import "./themes/dark-parchment.css";
@@ -0,0 +1,133 @@
1
+ /* ============================================
2
+ * Theme: Dark Mint (暗色模式)
3
+ * 用户可复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ [data-theme="dark"] {
7
+ color-scheme: dark;
8
+ /* --- Primary --- */
9
+ --token-color-primary: #8EE5A1;
10
+ --token-color-primary-hover: #9BE6B3;
11
+ --token-color-primary-active: #73CD94;
12
+ --token-color-primary-bg: #14261C;
13
+ --token-color-primary-bg-hover: #1A2E21;
14
+ --token-color-primary-border: #335942;
15
+ --token-color-primary-border-hover: #407354;
16
+ --token-color-primary-text: #8EE5A1;
17
+ --token-color-primary-text-hover: #9BE6B3;
18
+ --token-color-primary-text-active: #73CD94;
19
+ --token-color-text-on-primary: #0D0D0D;
20
+
21
+ /* --- Text --- */
22
+ --token-color-text: #FAF9F5;
23
+ --token-color-text-secondary: #9C9D9E;
24
+ --token-color-text-tertiary: #7C7D7F;
25
+ --token-color-text-quaternary: #717374;
26
+ --token-color-text-base: #F0F2F3;
27
+
28
+ /* --- Border --- */
29
+ --token-color-border: #404040;
30
+ --token-color-border-secondary: #2A2A2A;
31
+ --token-color-border-tertiary: #262626;
32
+
33
+ /* --- Fill --- */
34
+ --token-color-fill: #454545;
35
+ --token-color-fill-secondary: #363636;
36
+ --token-color-fill-tertiary: #1A1A1A;
37
+ --token-color-fill-quaternary: #1A1A1A;
38
+ --token-color-fill-disable: #525252;
39
+
40
+ /* --- Background --- */
41
+ --token-color-bg-container: #0D0D0D;
42
+ --token-color-bg-elevated: #080808;
43
+ --token-color-bg-layout: #050505;
44
+ --token-color-bg-spotlight: #080808;
45
+ --token-color-bg-mask: rgba(0, 0, 0, 0.7);
46
+ /* PlanPart 点阵高亮遮罩渐变(随主题) */
47
+ --token-color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
48
+ --token-color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
49
+ --token-color-mask-shimmer-full: rgba(0, 0, 0, 1);
50
+ --token-color-bg-base: #000000;
51
+ --token-color-bg-highlight: #d0d0d0;
52
+ --token-color-bg-highlight-hover: #e0e0e0;
53
+
54
+ /* --- Semantic Colors --- */
55
+ --token-color-link: #8EE5A1;
56
+ --token-color-error: #FF4D4F;
57
+ --token-color-error-hover: #FF7875;
58
+ --token-color-error-bg: #4A1A1B;
59
+ --token-color-error-bg-hover: #5C2224;
60
+ --token-color-error-border: #663338;
61
+ --token-color-info: #0B83F1;
62
+ --token-color-info-hover: #5EBCFF;
63
+ --token-color-info-bg: #19080E;
64
+ --token-color-info-bg-hover: #220A12;
65
+ --token-color-info-border: #4F1C0E;
66
+ --token-color-success: #73CD94;
67
+ --token-color-success-hover: #8EE5A1;
68
+ --token-color-success-bg: #14261C;
69
+ --token-color-success-bg-hover: #1A2E21;
70
+ --token-color-success-border: #335942;
71
+ --token-color-warning: #FAAD14;
72
+ --token-color-warning-hover: #FFD666;
73
+ --token-color-warning-bg: #4A4019;
74
+ --token-color-warning-bg-hover: #5C4E1F;
75
+ --token-color-warning-border: #664D19;
76
+
77
+ /* --- Accent Colors --- */
78
+ --token-color-pink: #EC4899;
79
+ --token-color-pink-bg: #4A1C31;
80
+ --token-color-pink-bg-hover: #5C2440;
81
+ --token-color-purple: #615CED;
82
+ --token-color-purple-bg: #14160E;
83
+ --token-color-purple-bg-hover: #1C1E14;
84
+ --token-color-yellow: #FAC414;
85
+ --token-color-yellow-bg: #4A4030;
86
+ --token-color-yellow-bg-hover: #5C5040;
87
+ --token-color-orange: #FA8125;
88
+ --token-color-orange-bg: #4A1021;
89
+ --token-color-orange-bg-hover: #5C1429;
90
+ --token-color-teal: #14B8A6;
91
+ --token-color-teal-bg: #21080E;
92
+ --token-color-teal-bg-hover: #2E0E14;
93
+ --token-color-blue: #0090FF;
94
+ --token-color-blue-bg: #21120E;
95
+ --token-color-blue-bg-hover: #2E1A14;
96
+ --token-color-mauve: #8E8C99;
97
+ --token-color-mauve-bg: #0E0D0C;
98
+ --token-color-mauve-bg-hover: #1A1818;
99
+ --token-color-slate: #363636;
100
+ --token-color-slate-bg: #1a1a1a;
101
+ --token-color-slate-bg-hover: #262626;
102
+ --token-color-lavender: #B99DFF;
103
+ --token-color-lavender-bg: #131B0E;
104
+ --token-color-lavender-bg-hover: #1C2614;
105
+ --token-color-sage: #6BB394;
106
+ --token-color-sage-bg: #100C0D;
107
+ --token-color-sage-bg-hover: #1A1418;
108
+
109
+ /* --- Select 等组件 (input/ring/popover 等) --- */
110
+ --token-color-input: var(--token-color-border-tertiary);
111
+ --token-color-ring: var(--token-color-primary-border);
112
+ --token-color-popover: var(--token-color-bg-container);
113
+ --token-color-popover-foreground: var(--token-color-text);
114
+ --token-color-accent: var(--token-color-fill-secondary);
115
+ --token-color-accent-foreground: var(--token-color-text);
116
+ --token-color-muted: var(--token-color-fill-tertiary);
117
+ --token-color-muted-foreground: var(--token-color-text-secondary);
118
+ --token-color-background: var(--token-color-bg-base);
119
+
120
+ /* --- Diff --- */
121
+ --token-color-diff-insert: #73CD94;
122
+ --token-color-diff-insert-bg: #14261C;
123
+ --token-color-diff-remove: #FC6B83;
124
+ --token-color-diff-remove-bg: #1C2E2A;
125
+ }
126
+
127
+ /* SendButton: dark 模式下 normal 状态使用 success 色(与 light 下 bg-bg-highlight 区分) */
128
+ [data-theme="dark"] .SendButton-send {
129
+ background-color: var(--token-color-success);
130
+ }
131
+ [data-theme="dark"] .SendButton-send:hover:not(:disabled) {
132
+ background-color: var(--token-color-success-hover);
133
+ }
@@ -0,0 +1,132 @@
1
+ /* ============================================
2
+ * Theme: Light Mint (亮色模式)
3
+ * 用户可复制此文件作为自定义主题模板
4
+ * ============================================ */
5
+
6
+ :root,
7
+ [data-theme="light"] {
8
+ color-scheme: light;
9
+ /* --- Primary --- */
10
+ --token-color-primary: #8EE5A1;
11
+ --token-color-primary-hover: #73CD94;
12
+ --token-color-primary-active: #5CB870;
13
+ --token-color-primary-bg: #F1FAF3;
14
+ --token-color-primary-bg-hover: #E6F7EC;
15
+ --token-color-primary-border: #CDEFD9;
16
+ --token-color-primary-border-hover: #B3E6C7;
17
+ --token-color-primary-text: #141414;
18
+ --token-color-primary-text-hover: #73CD94;
19
+ --token-color-primary-text-active: #5CB870;
20
+ --token-color-text-on-primary: #FDFDFD;
21
+
22
+ /* --- Text --- */
23
+ --token-color-text: #141414;
24
+ --token-color-text-secondary: #636261;
25
+ --token-color-text-tertiary: #838280;
26
+ --token-color-text-quaternary: #8E8C8B;
27
+ --token-color-text-base: #0F0D0C;
28
+
29
+ /* --- Border --- */
30
+ --token-color-border: #BCBBBA;
31
+ --token-color-border-secondary: #DDDDDD;
32
+ --token-color-border-tertiary: #E6E6E6;
33
+
34
+ /* --- Fill --- */
35
+ --token-color-fill: #DFDFDF;
36
+ --token-color-fill-secondary: #EFEFEF;
37
+ --token-color-fill-tertiary: #F9F9F9;
38
+ --token-color-fill-quaternary: #FCFCFC;
39
+ --token-color-fill-disable: #DAD9D8;
40
+
41
+ /* --- Background --- */
42
+ --token-color-bg-container: #FFFFFF;
43
+ --token-color-bg-elevated: #F9F9F9;
44
+ --token-color-bg-layout: #FDFDFD;
45
+ --token-color-bg-spotlight: #FAFAFA;
46
+ --token-color-bg-mask: rgba(0, 0, 0, 0.5);
47
+ /* PlanPart 点阵高亮遮罩渐变(随主题) */
48
+ --token-color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
49
+ --token-color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
50
+ --token-color-mask-shimmer-full: rgba(0, 0, 0, 1);
51
+ --token-color-bg-base: #FFFFFF;
52
+ --token-color-bg-highlight: #080807;
53
+ --token-color-bg-highlight-hover: #1a1a1a;
54
+
55
+ /* --- Shadow (输入框等浮层,1~4 级与 primary/secondary/tertiary/quaternary 一致,与 data-theme 无关) --- */
56
+ --token-color-shadow-primary: rgba(0, 0, 0, 0.02);
57
+ --token-color-shadow-secondary: rgba(0, 0, 0, 0.035);
58
+ --token-color-shadow-tertiary: rgba(0, 0, 0, 0.055);
59
+ --token-color-shadow-quaternary: rgba(0, 0, 0, 0.075);
60
+
61
+ /* --- Semantic Colors --- */
62
+ --token-color-link: #5CB870;
63
+ --token-color-error: #FF4D4F;
64
+ --token-color-error-hover: #FF7875;
65
+ --token-color-error-bg: #FFF2F0;
66
+ --token-color-error-bg-hover: #FFE4E0;
67
+ --token-color-error-border: #FFCCC7;
68
+ --token-color-info: #0B83F1;
69
+ --token-color-info-hover: #5EBCFF;
70
+ --token-color-info-bg: #E6F7FF;
71
+ --token-color-info-bg-hover: #D0EFFF;
72
+ --token-color-info-border: #B0E3FF;
73
+ --token-color-success: #73CD94;
74
+ --token-color-success-hover: #8EE5A1;
75
+ --token-color-success-bg: #F1FAF3;
76
+ --token-color-success-bg-hover: #E6F7EC;
77
+ --token-color-success-border: #CDEFD9;
78
+ --token-color-warning: #FAAD14;
79
+ --token-color-warning-hover: #FFD666;
80
+ --token-color-warning-bg: #FFFBE6;
81
+ --token-color-warning-bg-hover: #FFF3CF;
82
+ --token-color-warning-border: #FFE5BF;
83
+
84
+ /* --- Accent Colors --- */
85
+ --token-color-pink: #EC4899;
86
+ --token-color-pink-bg: #F9E3F3;
87
+ --token-color-pink-bg-hover: #F5D4EB;
88
+ --token-color-purple: #615CED;
89
+ --token-color-purple-bg: #EBE9FF;
90
+ --token-color-purple-bg-hover: #DDDAFF;
91
+ --token-color-yellow: #FAC414;
92
+ --token-color-yellow-bg: #FFF3CF;
93
+ --token-color-yellow-bg-hover: #FFE9A8;
94
+ --token-color-orange: #FA8125;
95
+ --token-color-orange-bg: #FFEFDE;
96
+ --token-color-orange-bg-hover: #FFE3C7;
97
+ --token-color-teal: #14B8A6;
98
+ --token-color-teal-bg: #DEF7F1;
99
+ --token-color-teal-bg-hover: #CAF0E8;
100
+ --token-color-blue: #0090FF;
101
+ --token-color-blue-bg: #DEEDFF;
102
+ --token-color-blue-bg-hover: #C8E3FF;
103
+ --token-color-mauve: #8E8C99;
104
+ --token-color-mauve-bg: #F1F2F3;
105
+ --token-color-mauve-bg-hover: #E4E5E7;
106
+ --token-color-slate: #404040;
107
+ --token-color-slate-bg: #FAFAFA;
108
+ --token-color-slate-bg-hover: #EFEFEF;
109
+ --token-color-lavender: #B99DFF;
110
+ --token-color-lavender-bg: #ECE4FF;
111
+ --token-color-lavender-bg-hover: #E0D4FF;
112
+ --token-color-sage: #6BB394;
113
+ --token-color-sage-bg: #EFF3F2;
114
+ --token-color-sage-bg-hover: #E2EAE8;
115
+
116
+ /* --- Select 等组件 (input/ring/popover 等) --- */
117
+ --token-color-input: var(--token-color-border-tertiary);
118
+ --token-color-ring: var(--token-color-primary-border);
119
+ --token-color-popover: var(--token-color-bg-container);
120
+ --token-color-popover-foreground: var(--token-color-text);
121
+ --token-color-accent: var(--token-color-fill-secondary);
122
+ --token-color-accent-foreground: var(--token-color-text);
123
+ --token-color-muted: var(--token-color-fill-tertiary);
124
+ --token-color-muted-foreground: var(--token-color-text-secondary);
125
+ --token-color-background: var(--token-color-bg-base);
126
+
127
+ /* --- Diff --- */
128
+ --token-color-diff-insert: #A6DCBA;
129
+ --token-color-diff-insert-bg: #D9EBE0;
130
+ --token-color-diff-remove: #FC6B83;
131
+ --token-color-diff-remove-bg: #E3D1D5;
132
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sparkdesign",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "type": "module",
5
5
  "description": "Modern React Design System with dual-dimension theme system",
6
6
  "keywords": [
@@ -21,11 +21,11 @@
21
21
  },
22
22
  "exports": {
23
23
  ".": {
24
- "types": "./dist/components/index.d.ts",
24
+ "types": "./dist/src/components/index.d.ts",
25
25
  "import": "./dist/spark-design.es.js",
26
26
  "require": "./dist/spark-design.cjs.js"
27
27
  },
28
- "./style": "./dist/qoder-design.css",
28
+ "./style": "./dist/sparkdesign.css",
29
29
  "./theme.css": "./dist/theme.css",
30
30
  "./scale.css": "./dist/scale.css",
31
31
  "./katex.css": "./dist/katex.css",
@@ -45,14 +45,16 @@
45
45
  ],
46
46
  "scripts": {
47
47
  "dev": "vite",
48
+ "codemod:p3-headers": "node scripts/codemod-p3-dip-headers.mjs",
49
+ "i18n:p3-en": "node scripts/translate-p3-headers-en.mjs",
48
50
  "gen:registry-meta": "node scripts/generate-registry-meta.mjs",
49
51
  "check:registry-meta": "node scripts/generate-registry-meta.mjs --check && node scripts/validate-registry-meta.mjs registry && node scripts/validate-registry-meta.mjs cli",
50
52
  "check:registry": "node scripts/check-registry-sync.mjs",
51
53
  "check:showcase": "node scripts/check-showcase-sync.mjs",
52
54
  "gen:demo": "node scripts/gen-demo.mjs",
53
- "build": "vite build && npx @tailwindcss/cli -i src/lib.css -o dist/qoder-design.css --minify && tsc -p tsconfig.lib.json && npm run build:cli",
55
+ "build": "vite build && npx @tailwindcss/cli -i src/lib.css -o dist/sparkdesign.css --minify && tsc -p tsconfig.lib.json && npm run build:cli",
54
56
  "build:cli": "cd cli && npm run build",
55
- "build:css": "npx @tailwindcss/cli -i src/lib.css -o dist/qoder-design.css --minify",
57
+ "build:css": "npx @tailwindcss/cli -i src/lib.css -o dist/sparkdesign.css --minify",
56
58
  "build:watch": "vite build --watch",
57
59
  "preview": "vite preview",
58
60
  "lint": "eslint .",
@@ -64,6 +66,10 @@
64
66
  "test:e2e:ui": "playwright test --ui",
65
67
  "size": "size-limit",
66
68
  "size:why": "size-limit --why",
69
+ "test:smoke": "node scripts/smoke-test-cli.mjs",
70
+ "test:smoke:vite": "node scripts/smoke-test-cli.mjs vite",
71
+ "test:smoke:next": "node scripts/smoke-test-cli.mjs nextjs",
72
+ "test:smoke:add": "node scripts/smoke-test-cli.mjs pure-add",
67
73
  "prepublishOnly": "node scripts/generate-registry-meta.mjs && npm run build && node scripts/sync-registry-to-cli.mjs && npm run check:registry-meta"
68
74
  },
69
75
  "peerDependencies": {
@@ -1,132 +0,0 @@
1
- /* ============================================
2
- * Theme: Dark (暗色模式)
3
- * 复制此文件作为自定义主题模板
4
- * ============================================ */
5
-
6
- [data-theme="dark"] {
7
- color-scheme: dark;
8
- /* --- Primary --- */
9
- --color-primary: #8EE5A1;
10
- --color-primary-hover: #9BE6B3;
11
- --color-primary-active: #73CD94;
12
- --color-primary-bg: #14261C;
13
- --color-primary-bg-hover: #1A2E21;
14
- --color-primary-border: #335942;
15
- --color-primary-border-hover: #407354;
16
- --color-primary-text: #8EE5A1;
17
- --color-primary-text-hover: #9BE6B3;
18
- --color-primary-text-active: #73CD94;
19
- --color-text-on-primary: #0D0D0D;
20
-
21
- /* --- Text --- */
22
- --color-text: #FAF9F5;
23
- --color-text-secondary: #9C9D9E;
24
- --color-text-tertiary: #7C7D7F;
25
- --color-text-quaternary: #717374;
26
- --color-text-base: #F0F2F3;
27
-
28
- /* --- Border --- */
29
- --color-border: #404040;
30
- --color-border-secondary: #2A2A2A;
31
- --color-border-tertiary: #262626;
32
-
33
- /* --- Fill --- */
34
- --color-fill: #454545;
35
- --color-fill-secondary: #363636;
36
- --color-fill-tertiary: #1A1A1A;
37
- --color-fill-quaternary: #1A1A1A;
38
- --color-fill-disable: #525252;
39
-
40
- /* --- Background --- */
41
- --color-bg-container: #0D0D0D;
42
- --color-bg-elevated: #080808;
43
- --color-bg-layout: #050505;
44
- --color-bg-spotlight: #080808;
45
- --color-bg-mask: rgba(0, 0, 0, 0.7);
46
- --color-mask-shimmer-weak: rgba(0, 0, 0, 0.3);
47
- --color-mask-shimmer-strong: rgba(0, 0, 0, 0.8);
48
- --color-mask-shimmer-full: rgba(0, 0, 0, 1);
49
- --color-bg-base: #000000;
50
- --color-bg-highlight: #d0d0d0;
51
- --color-bg-highlight-hover: #e0e0e0;
52
-
53
- /* --- Semantic Colors --- */
54
- --color-link: #8EE5A1;
55
- --color-error: #FF4D4F;
56
- --color-error-hover: #FF7875;
57
- --color-error-bg: #4A1A1B;
58
- --color-error-bg-hover: #5C2224;
59
- --color-error-border: #663338;
60
- --color-info: #0B83F1;
61
- --color-info-hover: #5EBCFF;
62
- --color-info-bg: #19080E;
63
- --color-info-bg-hover: #220A12;
64
- --color-info-border: #4F1C0E;
65
- --color-success: #73CD94;
66
- --color-success-hover: #8EE5A1;
67
- --color-success-bg: #14261C;
68
- --color-success-bg-hover: #1A2E21;
69
- --color-success-border: #335942;
70
- --color-warning: #FAAD14;
71
- --color-warning-hover: #FFD666;
72
- --color-warning-bg: #4A4019;
73
- --color-warning-bg-hover: #5C4E1F;
74
- --color-warning-border: #664D19;
75
-
76
- /* --- Accent Colors --- */
77
- --color-pink: #EC4899;
78
- --color-pink-bg: #4A1C31;
79
- --color-pink-bg-hover: #5C2440;
80
- --color-purple: #615CED;
81
- --color-purple-bg: #14160E;
82
- --color-purple-bg-hover: #1C1E14;
83
- --color-yellow: #FAC414;
84
- --color-yellow-bg: #4A4030;
85
- --color-yellow-bg-hover: #5C5040;
86
- --color-orange: #FA8125;
87
- --color-orange-bg: #4A1021;
88
- --color-orange-bg-hover: #5C1429;
89
- --color-teal: #14B8A6;
90
- --color-teal-bg: #21080E;
91
- --color-teal-bg-hover: #2E0E14;
92
- --color-blue: #0090FF;
93
- --color-blue-bg: #21120E;
94
- --color-blue-bg-hover: #2E1A14;
95
- --color-mauve: #8E8C99;
96
- --color-mauve-bg: #0E0D0C;
97
- --color-mauve-bg-hover: #1A1818;
98
- --color-slate: #363636;
99
- --color-slate-bg: #1a1a1a;
100
- --color-slate-bg-hover: #262626;
101
- --color-lavender: #B99DFF;
102
- --color-lavender-bg: #131B0E;
103
- --color-lavender-bg-hover: #1C2614;
104
- --color-sage: #6BB394;
105
- --color-sage-bg: #100C0D;
106
- --color-sage-bg-hover: #1A1418;
107
-
108
- /* --- Component aliases --- */
109
- --color-input: var(--color-border-tertiary);
110
- --color-ring: var(--color-primary-border);
111
- --color-popover: var(--color-bg-container);
112
- --color-popover-foreground: var(--color-text);
113
- --color-accent: var(--color-fill-secondary);
114
- --color-accent-foreground: var(--color-text);
115
- --color-muted: var(--color-fill-tertiary);
116
- --color-muted-foreground: var(--color-text-secondary);
117
- --color-background: var(--color-bg-base);
118
-
119
- /* --- Diff --- */
120
- --color-diff-insert: #73CD94;
121
- --color-diff-insert-bg: #14261C;
122
- --color-diff-remove: #FC6B83;
123
- --color-diff-remove-bg: #1C2E2A;
124
- }
125
-
126
- /* SendButton: dark 模式下 normal 状态使用 success 色 */
127
- [data-theme="dark"] .SendButton-send {
128
- background-color: var(--color-success);
129
- }
130
- [data-theme="dark"] .SendButton-send:hover:not(:disabled) {
131
- background-color: var(--color-success-hover);
132
- }