sparkdesign 0.4.5 → 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.
- package/README.md +74 -22
- package/cli/dist/commands/add.js +22 -12
- package/cli/dist/commands/diff.js +8 -4
- package/cli/dist/commands/init.js +84 -9
- package/cli/dist/commands/list.js +8 -4
- package/cli/dist/index.js +9 -6
- package/cli/dist/utils/config.js +16 -8
- package/cli/dist/utils/package-manager.js +75 -0
- package/cli/dist/utils/registry.js +8 -4
- package/cli/dist/utils/tokens.js +33 -25
- package/cli/dist/utils/transform.js +9 -5
- package/cli/dist/utils/tsconfig.js +182 -0
- package/cli/registry/AGENTS.md +18 -0
- package/cli/registry/__tests__/chat/thinking-indicator.test.tsx +2 -2
- package/cli/registry/chat/chat-input/chat-input-folder-selector.tsx +1 -1
- package/cli/registry/chat/chat-input/folder-permission-dialog.tsx +2 -2
- package/cli/registry/chat/image-generating.tsx +1 -1
- package/cli/registry/chat/response/context.tsx +1 -1
- package/cli/registry/chat/thinking-indicator.tsx +1 -1
- package/cli/registry/tokens/index.css +8 -5
- package/cli/registry/tokens/theme-base.css +235 -0
- package/{dist/tokens/themes/dark-qoder.css → cli/registry/tokens/themes/dark-mint.css} +1 -1
- package/cli/registry/tokens/themes/dark-parchment.css +104 -103
- package/{dist/tokens/themes/light-qoder.css → cli/registry/tokens/themes/light-mint.css} +1 -1
- package/cli/registry/tokens/themes/light-parchment.css +103 -102
- package/dist/registry/basic/alert-dialog.d.ts +7 -5
- package/dist/registry/basic/avatar.d.ts +7 -5
- package/dist/registry/basic/collapse.d.ts +7 -5
- package/dist/registry/basic/collapsible-card.d.ts +7 -6
- package/dist/registry/basic/collapsible.d.ts +7 -5
- package/dist/registry/basic/dropdown-menu.d.ts +7 -5
- package/dist/registry/basic/icons-inline.d.ts +7 -5
- package/dist/registry/basic/kbd.d.ts +7 -5
- package/dist/registry/basic/pagination.d.ts +7 -5
- package/dist/registry/basic/progress.d.ts +7 -5
- package/dist/registry/basic/radio-group.d.ts +7 -5
- package/dist/registry/basic/resizable.d.ts +7 -5
- package/dist/registry/basic/select.d.ts +7 -5
- package/dist/registry/basic/slider.d.ts +7 -5
- package/dist/registry/basic/sonner.d.ts +7 -5
- package/dist/registry/basic/switch.d.ts +7 -5
- package/dist/registry/basic/tabs.d.ts +7 -5
- package/dist/registry/basic/tag.d.ts +7 -5
- package/dist/registry/basic/theme-from-document.d.ts +7 -5
- package/dist/registry/basic/tooltip.d.ts +7 -5
- package/dist/registry/basic/typography.d.ts +7 -5
- package/dist/registry/chat/ask-user-part.d.ts +9 -3
- package/dist/registry/chat/browser-action-part.d.ts +9 -3
- package/dist/registry/chat/chat-input/compound.d.ts +7 -5
- package/dist/registry/chat/chat-input/context.d.ts +7 -5
- package/dist/registry/chat/chat-input/index.d.ts +7 -5
- package/dist/registry/chat/chat-input/types.d.ts +9 -3
- package/dist/registry/chat/chat-input/useAutoResizeTextarea.d.ts +9 -3
- package/dist/registry/chat/code-block-part.d.ts +9 -3
- package/dist/registry/chat/file-attachment.d.ts +7 -5
- package/dist/registry/chat/file-review-part.d.ts +9 -4
- package/dist/registry/chat/generated-images-grid.d.ts +9 -3
- package/dist/registry/chat/generation-status-bar.d.ts +8 -4
- package/dist/registry/chat/hint-banner.d.ts +9 -3
- package/dist/registry/chat/mermaid-part.d.ts +9 -3
- package/dist/registry/chat/plan-part.d.ts +9 -3
- package/dist/registry/chat/reasoning-step/index.d.ts +8 -6
- package/dist/registry/chat/reasoning-step/types.d.ts +9 -3
- package/dist/registry/chat/related-prompts.d.ts +9 -3
- package/dist/registry/chat/response/index.d.ts +8 -6
- package/dist/registry/chat/response/types.d.ts +9 -3
- package/dist/registry/chat/task-part.d.ts +9 -3
- package/dist/registry/chat/terminal-code-block-part.d.ts +9 -3
- package/dist/registry/chat/user-question/UserQuestionCard.d.ts +9 -3
- package/dist/registry/chat/user-question/UserQuestionFooter.d.ts +9 -3
- package/dist/registry/chat/user-question/UserQuestionHeader.d.ts +9 -3
- package/dist/registry/chat/user-question/types.d.ts +8 -5
- package/dist/registry/lib/file-icon-maps.d.ts +7 -7
- package/dist/registry/lib/utils.d.ts +8 -6
- package/dist/spark-design.cjs.js +6 -6
- package/dist/spark-design.es.js +10 -10
- package/dist/sparkdesign.css +2 -0
- package/dist/src/components/basic/AlertDialog/index.d.ts +7 -5
- package/dist/src/components/basic/Avatar/index.d.ts +9 -3
- package/dist/src/components/basic/Button/index.d.ts +9 -3
- package/dist/src/components/basic/Collapse/index.d.ts +7 -4
- package/dist/src/components/basic/Collapsible/index.d.ts +9 -4
- package/dist/src/components/basic/CollapsibleCard/index.d.ts +9 -3
- package/dist/src/components/basic/CollapsibleSection/index.d.ts +7 -7
- package/dist/src/components/basic/DropdownMenu/index.d.ts +7 -5
- package/dist/src/components/basic/EllipsisText/index.d.ts +7 -15
- package/dist/src/components/basic/IconButton/index.d.ts +9 -3
- package/dist/src/components/basic/Kbd/index.d.ts +9 -3
- package/dist/src/components/basic/OptionList/index.d.ts +9 -3
- package/dist/src/components/basic/Pagination/index.d.ts +9 -3
- package/dist/src/components/basic/Progress/index.d.ts +9 -3
- package/dist/src/components/basic/RadioGroup/index.d.ts +9 -3
- package/dist/src/components/basic/Resizable/index.d.ts +9 -3
- package/dist/src/components/basic/Scrollbar/index.d.ts +9 -3
- package/dist/src/components/basic/Select/index.d.ts +7 -4
- package/dist/src/components/basic/ShimmeringText/index.d.ts +9 -3
- package/dist/src/components/basic/Skeleton/index.d.ts +9 -3
- package/dist/src/components/basic/Slider/index.d.ts +9 -3
- package/dist/src/components/basic/Spinner/index.d.ts +9 -3
- package/dist/src/components/basic/Switch/index.d.ts +8 -5
- package/dist/src/components/basic/Table/index.d.ts +9 -3
- package/dist/src/components/basic/Tabs/index.d.ts +9 -3
- package/dist/src/components/basic/Tag/index.d.ts +7 -4
- package/dist/src/components/basic/Toggle/index.d.ts +9 -3
- package/dist/src/components/basic/Tooltip/index.d.ts +7 -4
- package/dist/src/components/basic/Typography/index.d.ts +9 -3
- package/dist/src/components/chat/GeneratedImagesGrid/index.d.ts +9 -3
- package/dist/src/components/chat/GenerationStatusBar/index.d.ts +9 -3
- package/dist/src/components/chat/Markdown/demo-content.d.ts +1 -1
- package/dist/src/components/chat/Markdown/index.d.ts +9 -3
- package/dist/src/components/chat/Response/StreamingMarkdownBlock.d.ts +9 -3
- package/dist/src/components/chat/Response/index.d.ts +8 -6
- package/dist/src/components/chat/UserMessage/index.d.ts +9 -3
- package/dist/src/components/index.d.ts +7 -9
- package/dist/src/icons/context.d.ts +7 -6
- package/dist/src/icons/types.d.ts +7 -5
- package/dist/src/lib/ThemeStyleContext.d.ts +9 -9
- package/dist/src/lib/file-icon.d.ts +7 -6
- package/dist/src/lib/i18n.d.ts +7 -6
- package/dist/src/lib/index.d.ts +9 -3
- package/dist/src/lib/utils.d.ts +7 -5
- package/dist/theme-base.css +7 -8
- package/dist/theme.css +2 -2
- package/dist/themes/{dark-qoder.css → dark-mint.css} +1 -1
- package/dist/themes/{light-qoder.css → light-mint.css} +1 -1
- package/dist/tokens/AGENTS.md +47 -0
- package/dist/tokens/index.css +10 -19
- package/dist/tokens/theme-base.css +7 -8
- package/dist/tokens/theme.css +2 -2
- package/dist/tokens/themes/dark-mint.css +133 -0
- package/dist/tokens/themes/light-mint.css +132 -0
- package/package.json +11 -5
- package/cli/registry/tokens/themes/dark-qoder.css +0 -132
- package/cli/registry/tokens/themes/light-qoder.css +0 -131
- package/dist/qoder-design.css +0 -2
- package/dist/tokens/CLAUDE.md +0 -305
package/dist/theme-base.css
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/* ============================================
|
|
2
|
-
* [
|
|
3
|
-
* [
|
|
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
|
-
*
|
|
6
|
-
*
|
|
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-
|
|
15
|
-
@import "./themes/dark-
|
|
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,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
|
package/dist/tokens/index.css
CHANGED
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
/* ============================================
|
|
2
|
-
* [
|
|
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.
|
|
6
|
-
* 2.
|
|
7
|
-
*
|
|
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-
|
|
30
|
-
@import "./themes/dark-
|
|
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
|
-
* [
|
|
3
|
-
* [
|
|
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
|
-
*
|
|
6
|
-
*
|
|
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/tokens/theme.css
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* ============================================ */
|
|
12
12
|
|
|
13
13
|
@import "./theme-base.css";
|
|
14
|
-
@import "./themes/light-
|
|
15
|
-
@import "./themes/dark-
|
|
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.
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
-
}
|