@mseep/anything-analyzer 3.6.50

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 (172) hide show
  1. package/.codeartsdoer/.codebaseignore +0 -0
  2. package/.codeartsdoer/AGENTS.md +12 -0
  3. package/.github/workflows/build.yml +146 -0
  4. package/README.en.md +264 -0
  5. package/README.md +276 -0
  6. package/RELEASE_NOTES.md +16 -0
  7. package/USAGE.md +490 -0
  8. package/color-preview-r3.html +414 -0
  9. package/color-preview.html +414 -0
  10. package/dev-app-update.yml +3 -0
  11. package/electron-builder.yml +36 -0
  12. package/electron.vite.config.ts +40 -0
  13. package/package.json +53 -0
  14. package/report-2026-04-13-copilot-claude-sonnet-4.6.md +955 -0
  15. package/resources/doloffer-logo.png +0 -0
  16. package/resources/entitlements.mac.plist +12 -0
  17. package/resources/icon.ico +0 -0
  18. package/resources/icon.png +0 -0
  19. package/src/main/ai/ai-analyzer.ts +517 -0
  20. package/src/main/ai/crypto-script-extractor.ts +206 -0
  21. package/src/main/ai/data-assembler.ts +205 -0
  22. package/src/main/ai/llm-router.ts +1120 -0
  23. package/src/main/ai/prompt-builder.ts +349 -0
  24. package/src/main/ai/scene-detector.ts +302 -0
  25. package/src/main/capture/capture-engine.ts +130 -0
  26. package/src/main/capture/interaction-recorder.ts +171 -0
  27. package/src/main/capture/js-injector.ts +57 -0
  28. package/src/main/capture/replay-engine.ts +256 -0
  29. package/src/main/capture/storage-collector.ts +76 -0
  30. package/src/main/cdp/cdp-manager.ts +233 -0
  31. package/src/main/db/database.ts +41 -0
  32. package/src/main/db/migrations.ts +235 -0
  33. package/src/main/db/repositories.ts +574 -0
  34. package/src/main/fingerprint/http-spoofing.ts +48 -0
  35. package/src/main/fingerprint/presets.ts +173 -0
  36. package/src/main/fingerprint/profile-generator.ts +115 -0
  37. package/src/main/fingerprint/profile-store.ts +52 -0
  38. package/src/main/index.ts +260 -0
  39. package/src/main/ipc.ts +856 -0
  40. package/src/main/logger.ts +42 -0
  41. package/src/main/mcp/mcp-config.ts +66 -0
  42. package/src/main/mcp/mcp-manager.ts +155 -0
  43. package/src/main/mcp/mcp-server.ts +1038 -0
  44. package/src/main/prompt-templates.ts +170 -0
  45. package/src/main/proxy/ca-manager.ts +204 -0
  46. package/src/main/proxy/cert-download-page.ts +171 -0
  47. package/src/main/proxy/cert-installer.ts +242 -0
  48. package/src/main/proxy/mitm-proxy-config.ts +37 -0
  49. package/src/main/proxy/mitm-proxy-server.ts +1085 -0
  50. package/src/main/proxy/system-proxy.ts +248 -0
  51. package/src/main/session/session-manager.ts +724 -0
  52. package/src/main/tab-manager.ts +582 -0
  53. package/src/main/updater.ts +111 -0
  54. package/src/main/window.ts +235 -0
  55. package/src/preload/hook-script.ts +270 -0
  56. package/src/preload/index.ts +211 -0
  57. package/src/preload/interaction-hook.ts +286 -0
  58. package/src/preload/stealth-script.ts +302 -0
  59. package/src/preload/target-preload.ts +15 -0
  60. package/src/renderer/App.tsx +656 -0
  61. package/src/renderer/components/AiLogDetail.tsx +173 -0
  62. package/src/renderer/components/AiLogList.tsx +101 -0
  63. package/src/renderer/components/AiLogView.module.css +364 -0
  64. package/src/renderer/components/AiLogView.tsx +86 -0
  65. package/src/renderer/components/AnalyzeBar.module.css +79 -0
  66. package/src/renderer/components/AnalyzeBar.tsx +104 -0
  67. package/src/renderer/components/BrowserPanel.module.css +67 -0
  68. package/src/renderer/components/BrowserPanel.tsx +90 -0
  69. package/src/renderer/components/ControlBar.module.css +47 -0
  70. package/src/renderer/components/ControlBar.tsx +205 -0
  71. package/src/renderer/components/HookLog.tsx +132 -0
  72. package/src/renderer/components/InteractionLog.tsx +183 -0
  73. package/src/renderer/components/MCPServerModal.tsx +427 -0
  74. package/src/renderer/components/PromptTemplateModal.tsx +254 -0
  75. package/src/renderer/components/ReportView.module.css +413 -0
  76. package/src/renderer/components/ReportView.tsx +429 -0
  77. package/src/renderer/components/RequestDetail.module.css +191 -0
  78. package/src/renderer/components/RequestDetail.tsx +202 -0
  79. package/src/renderer/components/RequestLog.module.css +69 -0
  80. package/src/renderer/components/RequestLog.tsx +208 -0
  81. package/src/renderer/components/SessionList.module.css +245 -0
  82. package/src/renderer/components/SessionList.tsx +247 -0
  83. package/src/renderer/components/SettingsModal.tsx +100 -0
  84. package/src/renderer/components/StatusBar.module.css +44 -0
  85. package/src/renderer/components/StatusBar.tsx +102 -0
  86. package/src/renderer/components/StorageView.module.css +41 -0
  87. package/src/renderer/components/StorageView.tsx +178 -0
  88. package/src/renderer/components/TabBar.module.css +88 -0
  89. package/src/renderer/components/TabBar.tsx +70 -0
  90. package/src/renderer/components/Titlebar.module.css +254 -0
  91. package/src/renderer/components/Titlebar.tsx +169 -0
  92. package/src/renderer/components/settings/FingerprintSection.tsx +198 -0
  93. package/src/renderer/components/settings/GeneralSection.tsx +164 -0
  94. package/src/renderer/components/settings/LLMSection.tsx +148 -0
  95. package/src/renderer/components/settings/MCPServerSection.tsx +136 -0
  96. package/src/renderer/components/settings/MitmProxySection.tsx +320 -0
  97. package/src/renderer/components/settings/ProxySection.tsx +110 -0
  98. package/src/renderer/css-modules.d.ts +4 -0
  99. package/src/renderer/hooks/useCapture.ts +383 -0
  100. package/src/renderer/hooks/useConfirm.tsx +91 -0
  101. package/src/renderer/hooks/useSession.ts +136 -0
  102. package/src/renderer/hooks/useTabs.ts +103 -0
  103. package/src/renderer/i18n/en.ts +167 -0
  104. package/src/renderer/i18n/index.ts +47 -0
  105. package/src/renderer/i18n/zh.ts +170 -0
  106. package/src/renderer/index.html +12 -0
  107. package/src/renderer/main.tsx +15 -0
  108. package/src/renderer/styles/global.css +144 -0
  109. package/src/renderer/styles/themes/ayu-dark.css +59 -0
  110. package/src/renderer/styles/themes/catppuccin.css +59 -0
  111. package/src/renderer/styles/themes/discord.css +59 -0
  112. package/src/renderer/styles/themes/dracula.css +59 -0
  113. package/src/renderer/styles/themes/github-dark.css +59 -0
  114. package/src/renderer/styles/themes/gruvbox.css +59 -0
  115. package/src/renderer/styles/themes/index.css +11 -0
  116. package/src/renderer/styles/themes/light.css +59 -0
  117. package/src/renderer/styles/themes/nord.css +59 -0
  118. package/src/renderer/styles/themes/one-dark.css +59 -0
  119. package/src/renderer/styles/themes/tokyo-night.css +59 -0
  120. package/src/renderer/styles/tokens.css +137 -0
  121. package/src/renderer/theme.ts +31 -0
  122. package/src/renderer/ui/Badge.module.css +38 -0
  123. package/src/renderer/ui/Badge.tsx +36 -0
  124. package/src/renderer/ui/Button.module.css +142 -0
  125. package/src/renderer/ui/Button.tsx +46 -0
  126. package/src/renderer/ui/Collapse.module.css +49 -0
  127. package/src/renderer/ui/Collapse.tsx +57 -0
  128. package/src/renderer/ui/CopyableBlock.module.css +56 -0
  129. package/src/renderer/ui/CopyableBlock.tsx +42 -0
  130. package/src/renderer/ui/Empty.module.css +19 -0
  131. package/src/renderer/ui/Empty.tsx +34 -0
  132. package/src/renderer/ui/Icons.tsx +346 -0
  133. package/src/renderer/ui/Input.module.css +103 -0
  134. package/src/renderer/ui/Input.tsx +94 -0
  135. package/src/renderer/ui/InputNumber.module.css +68 -0
  136. package/src/renderer/ui/InputNumber.tsx +104 -0
  137. package/src/renderer/ui/Modal.module.css +83 -0
  138. package/src/renderer/ui/Modal.tsx +67 -0
  139. package/src/renderer/ui/Popconfirm.module.css +73 -0
  140. package/src/renderer/ui/Popconfirm.tsx +74 -0
  141. package/src/renderer/ui/Progress.module.css +35 -0
  142. package/src/renderer/ui/Progress.tsx +30 -0
  143. package/src/renderer/ui/Select.module.css +91 -0
  144. package/src/renderer/ui/Select.tsx +100 -0
  145. package/src/renderer/ui/Spinner.module.css +44 -0
  146. package/src/renderer/ui/Spinner.tsx +27 -0
  147. package/src/renderer/ui/Switch.module.css +39 -0
  148. package/src/renderer/ui/Switch.tsx +43 -0
  149. package/src/renderer/ui/Tabs.module.css +76 -0
  150. package/src/renderer/ui/Tabs.tsx +53 -0
  151. package/src/renderer/ui/Tag.module.css +66 -0
  152. package/src/renderer/ui/Tag.tsx +47 -0
  153. package/src/renderer/ui/Timeline.module.css +42 -0
  154. package/src/renderer/ui/Timeline.tsx +29 -0
  155. package/src/renderer/ui/Toast.module.css +99 -0
  156. package/src/renderer/ui/Toast.tsx +90 -0
  157. package/src/renderer/ui/Tooltip.module.css +26 -0
  158. package/src/renderer/ui/Tooltip.tsx +23 -0
  159. package/src/renderer/ui/VirtualTable.module.css +230 -0
  160. package/src/renderer/ui/VirtualTable.tsx +416 -0
  161. package/src/renderer/ui/index.ts +55 -0
  162. package/src/shared/types.ts +695 -0
  163. package/tests/main/ai/crypto-script-extractor.test.ts +281 -0
  164. package/tests/main/ai/llm-router.test.ts +1537 -0
  165. package/tests/main/ai/prompt-builder.test.ts +178 -0
  166. package/tests/main/ai/scene-detector.test.ts +212 -0
  167. package/tests/main/db/migrations.test.ts +134 -0
  168. package/tests/main/release-workflow.test.ts +59 -0
  169. package/tsconfig.json +7 -0
  170. package/tsconfig.node.json +23 -0
  171. package/tsconfig.web.json +24 -0
  172. package/vitest.config.ts +13 -0
@@ -0,0 +1,59 @@
1
+ /* Theme: Ayu Dark 深邃橙 (L) */
2
+ [data-theme="ayu-dark"] {
3
+ --color-base: #0b0e14;
4
+ --color-frame: #0a0d12;
5
+ --color-bar: #0f1219;
6
+ --color-content: #0b0e14;
7
+ --color-sidebar: #0d1017;
8
+ --color-surface: #131721;
9
+ --color-elevated: #1c2030;
10
+
11
+ --color-border: #1c2030;
12
+ --color-border-subtle: #232838;
13
+ --color-border-hover: #2d3440;
14
+
15
+ --color-hover: rgba(191, 189, 182, 0.04);
16
+ --color-active: #1c2030;
17
+ --color-selected: rgba(230, 180, 80, 0.06);
18
+ --color-focus-ring: rgba(230, 180, 80, 0.4);
19
+
20
+ --text-primary: #bfbdb6;
21
+ --text-secondary: #acb6bf;
22
+ --text-muted: #565b66;
23
+ --text-label: #454950;
24
+ --text-disabled: #2d3440;
25
+
26
+ --color-accent: #e6b450;
27
+ --color-accent-bg: rgba(230, 180, 80, 0.08);
28
+ --color-accent-border: rgba(230, 180, 80, 0.15);
29
+
30
+ --color-success: #7fd962;
31
+ --color-success-bg: rgba(127, 217, 98, 0.08);
32
+ --color-success-border: rgba(127, 217, 98, 0.15);
33
+
34
+ --color-info: #73b8ff;
35
+ --color-info-bg: rgba(115, 184, 255, 0.08);
36
+ --color-info-border: rgba(115, 184, 255, 0.15);
37
+
38
+ --color-warning: #ffb454;
39
+ --color-warning-bg: rgba(255, 180, 84, 0.08);
40
+ --color-warning-border: rgba(255, 180, 84, 0.15);
41
+
42
+ --color-error: #d95757;
43
+ --color-error-bg: rgba(217, 87, 87, 0.08);
44
+ --color-error-border: rgba(217, 87, 87, 0.15);
45
+
46
+ --color-primary: #e6b450;
47
+ --color-primary-hover: #d9a840;
48
+ --color-primary-text: #0b0e14;
49
+
50
+ --color-purple: #d2a6ff;
51
+ --color-purple-bg: rgba(210, 166, 255, 0.1);
52
+ --color-orange: #ffb454;
53
+ --color-orange-bg: rgba(255, 180, 84, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.6);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.7);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Catppuccin Mocha 奶茶色 (F) */
2
+ [data-theme="catppuccin"] {
3
+ --color-base: #1e1e2e;
4
+ --color-frame: #181825;
5
+ --color-bar: #181825;
6
+ --color-content: #1e1e2e;
7
+ --color-sidebar: #181825;
8
+ --color-surface: #313244;
9
+ --color-elevated: #45475a;
10
+
11
+ --color-border: #313244;
12
+ --color-border-subtle: #45475a;
13
+ --color-border-hover: #585b70;
14
+
15
+ --color-hover: rgba(205, 214, 244, 0.04);
16
+ --color-active: #313244;
17
+ --color-selected: rgba(137, 180, 250, 0.08);
18
+ --color-focus-ring: rgba(137, 180, 250, 0.4);
19
+
20
+ --text-primary: #cdd6f4;
21
+ --text-secondary: #bac2de;
22
+ --text-muted: #a6adc8;
23
+ --text-label: #6c7086;
24
+ --text-disabled: #585b70;
25
+
26
+ --color-accent: #89b4fa;
27
+ --color-accent-bg: rgba(137, 180, 250, 0.1);
28
+ --color-accent-border: rgba(137, 180, 250, 0.2);
29
+
30
+ --color-success: #a6e3a1;
31
+ --color-success-bg: rgba(166, 227, 161, 0.08);
32
+ --color-success-border: rgba(166, 227, 161, 0.15);
33
+
34
+ --color-info: #89b4fa;
35
+ --color-info-bg: rgba(137, 180, 250, 0.08);
36
+ --color-info-border: rgba(137, 180, 250, 0.15);
37
+
38
+ --color-warning: #f9e2af;
39
+ --color-warning-bg: rgba(249, 226, 175, 0.08);
40
+ --color-warning-border: rgba(249, 226, 175, 0.15);
41
+
42
+ --color-error: #f38ba8;
43
+ --color-error-bg: rgba(243, 139, 168, 0.08);
44
+ --color-error-border: rgba(243, 139, 168, 0.15);
45
+
46
+ --color-primary: #cba6f7;
47
+ --color-primary-hover: #b491e0;
48
+ --color-primary-text: #1e1e2e;
49
+
50
+ --color-purple: #cba6f7;
51
+ --color-purple-bg: rgba(203, 166, 247, 0.1);
52
+ --color-orange: #fab387;
53
+ --color-orange-bg: rgba(250, 179, 135, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Discord 暖灰 (D) */
2
+ [data-theme="discord"] {
3
+ --color-base: #313338;
4
+ --color-frame: #1e1f22;
5
+ --color-bar: #2b2d31;
6
+ --color-content: #313338;
7
+ --color-sidebar: #2b2d31;
8
+ --color-surface: #383a40;
9
+ --color-elevated: #404249;
10
+
11
+ --color-border: #1e1f22;
12
+ --color-border-subtle: #2b2d31;
13
+ --color-border-hover: #404249;
14
+
15
+ --color-hover: rgba(255, 255, 255, 0.04);
16
+ --color-active: #35373c;
17
+ --color-selected: rgba(255, 255, 255, 0.06);
18
+ --color-focus-ring: rgba(88, 101, 242, 0.4);
19
+
20
+ --text-primary: #f2f3f5;
21
+ --text-secondary: #b5bac1;
22
+ --text-muted: #949ba4;
23
+ --text-label: #80848e;
24
+ --text-disabled: #5c5e66;
25
+
26
+ --color-accent: #5865f2;
27
+ --color-accent-bg: rgba(88, 101, 242, 0.1);
28
+ --color-accent-border: rgba(88, 101, 242, 0.2);
29
+
30
+ --color-success: #57f287;
31
+ --color-success-bg: rgba(87, 242, 135, 0.08);
32
+ --color-success-border: rgba(87, 242, 135, 0.15);
33
+
34
+ --color-info: #5865f2;
35
+ --color-info-bg: rgba(88, 101, 242, 0.08);
36
+ --color-info-border: rgba(88, 101, 242, 0.15);
37
+
38
+ --color-warning: #fee75c;
39
+ --color-warning-bg: rgba(254, 231, 92, 0.08);
40
+ --color-warning-border: rgba(254, 231, 92, 0.15);
41
+
42
+ --color-error: #ed4245;
43
+ --color-error-bg: rgba(237, 66, 69, 0.08);
44
+ --color-error-border: rgba(237, 66, 69, 0.15);
45
+
46
+ --color-primary: #5865f2;
47
+ --color-primary-hover: #4752c4;
48
+ --color-primary-text: #ffffff;
49
+
50
+ --color-purple: #5865f2;
51
+ --color-purple-bg: rgba(88, 101, 242, 0.1);
52
+ --color-orange: #f97316;
53
+ --color-orange-bg: rgba(249, 115, 22, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Dracula 黑紫 (H) */
2
+ [data-theme="dracula"] {
3
+ --color-base: #282a36;
4
+ --color-frame: #191a21;
5
+ --color-bar: #21222c;
6
+ --color-content: #282a36;
7
+ --color-sidebar: #21222c;
8
+ --color-surface: #343746;
9
+ --color-elevated: #44475a;
10
+
11
+ --color-border: #44475a;
12
+ --color-border-subtle: #363949;
13
+ --color-border-hover: #6272a4;
14
+
15
+ --color-hover: rgba(248, 248, 242, 0.04);
16
+ --color-active: #44475a;
17
+ --color-selected: rgba(255, 121, 198, 0.08);
18
+ --color-focus-ring: rgba(189, 147, 249, 0.4);
19
+
20
+ --text-primary: #f8f8f2;
21
+ --text-secondary: #c0c0c0;
22
+ --text-muted: #6272a4;
23
+ --text-label: #565b7e;
24
+ --text-disabled: #44475a;
25
+
26
+ --color-accent: #bd93f9;
27
+ --color-accent-bg: rgba(189, 147, 249, 0.1);
28
+ --color-accent-border: rgba(189, 147, 249, 0.2);
29
+
30
+ --color-success: #50fa7b;
31
+ --color-success-bg: rgba(80, 250, 123, 0.08);
32
+ --color-success-border: rgba(80, 250, 123, 0.15);
33
+
34
+ --color-info: #8be9fd;
35
+ --color-info-bg: rgba(139, 233, 253, 0.08);
36
+ --color-info-border: rgba(139, 233, 253, 0.15);
37
+
38
+ --color-warning: #f1fa8c;
39
+ --color-warning-bg: rgba(241, 250, 140, 0.08);
40
+ --color-warning-border: rgba(241, 250, 140, 0.15);
41
+
42
+ --color-error: #ff5555;
43
+ --color-error-bg: rgba(255, 85, 85, 0.08);
44
+ --color-error-border: rgba(255, 85, 85, 0.15);
45
+
46
+ --color-primary: #ff79c6;
47
+ --color-primary-hover: #ff92d0;
48
+ --color-primary-text: #282a36;
49
+
50
+ --color-purple: #bd93f9;
51
+ --color-purple-bg: rgba(189, 147, 249, 0.1);
52
+ --color-orange: #ffb86c;
53
+ --color-orange-bg: rgba(255, 184, 108, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: GitHub Dark 高对比 (E) */
2
+ [data-theme="github-dark"] {
3
+ --color-base: #0d1117;
4
+ --color-frame: #010409;
5
+ --color-bar: #161b22;
6
+ --color-content: #0d1117;
7
+ --color-sidebar: #161b22;
8
+ --color-surface: #161b22;
9
+ --color-elevated: #21262d;
10
+
11
+ --color-border: #21262d;
12
+ --color-border-subtle: #30363d;
13
+ --color-border-hover: #484f58;
14
+
15
+ --color-hover: rgba(255, 255, 255, 0.04);
16
+ --color-active: #21262d;
17
+ --color-selected: rgba(56, 139, 253, 0.1);
18
+ --color-focus-ring: rgba(56, 139, 253, 0.4);
19
+
20
+ --text-primary: #f0f6fc;
21
+ --text-secondary: #c9d1d9;
22
+ --text-muted: #8b949e;
23
+ --text-label: #6e7681;
24
+ --text-disabled: #484f58;
25
+
26
+ --color-accent: #58a6ff;
27
+ --color-accent-bg: rgba(56, 139, 253, 0.1);
28
+ --color-accent-border: rgba(56, 139, 253, 0.2);
29
+
30
+ --color-success: #3fb950;
31
+ --color-success-bg: rgba(63, 185, 80, 0.08);
32
+ --color-success-border: rgba(63, 185, 80, 0.15);
33
+
34
+ --color-info: #58a6ff;
35
+ --color-info-bg: rgba(88, 166, 255, 0.08);
36
+ --color-info-border: rgba(88, 166, 255, 0.15);
37
+
38
+ --color-warning: #d29922;
39
+ --color-warning-bg: rgba(210, 153, 34, 0.08);
40
+ --color-warning-border: rgba(210, 153, 34, 0.15);
41
+
42
+ --color-error: #f85149;
43
+ --color-error-bg: rgba(248, 81, 73, 0.08);
44
+ --color-error-border: rgba(248, 81, 73, 0.15);
45
+
46
+ --color-primary: #238636;
47
+ --color-primary-hover: #2ea043;
48
+ --color-primary-text: #ffffff;
49
+
50
+ --color-purple: #bc8cff;
51
+ --color-purple-bg: rgba(188, 140, 255, 0.1);
52
+ --color-orange: #f0883e;
53
+ --color-orange-bg: rgba(240, 136, 62, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.6);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.7);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Gruvbox 复古暖调 (K) */
2
+ [data-theme="gruvbox"] {
3
+ --color-base: #282828;
4
+ --color-frame: #1d2021;
5
+ --color-bar: #32302f;
6
+ --color-content: #282828;
7
+ --color-sidebar: #282828;
8
+ --color-surface: #3c3836;
9
+ --color-elevated: #504945;
10
+
11
+ --color-border: #3c3836;
12
+ --color-border-subtle: #504945;
13
+ --color-border-hover: #665c54;
14
+
15
+ --color-hover: rgba(235, 219, 178, 0.04);
16
+ --color-active: #504945;
17
+ --color-selected: rgba(254, 128, 25, 0.08);
18
+ --color-focus-ring: rgba(254, 128, 25, 0.4);
19
+
20
+ --text-primary: #fbf1c7;
21
+ --text-secondary: #d5c4a1;
22
+ --text-muted: #928374;
23
+ --text-label: #7c6f64;
24
+ --text-disabled: #504945;
25
+
26
+ --color-accent: #fe8019;
27
+ --color-accent-bg: rgba(254, 128, 25, 0.1);
28
+ --color-accent-border: rgba(254, 128, 25, 0.2);
29
+
30
+ --color-success: #b8bb26;
31
+ --color-success-bg: rgba(184, 187, 38, 0.08);
32
+ --color-success-border: rgba(184, 187, 38, 0.15);
33
+
34
+ --color-info: #83a598;
35
+ --color-info-bg: rgba(131, 165, 152, 0.08);
36
+ --color-info-border: rgba(131, 165, 152, 0.15);
37
+
38
+ --color-warning: #fabd2f;
39
+ --color-warning-bg: rgba(250, 189, 47, 0.08);
40
+ --color-warning-border: rgba(250, 189, 47, 0.15);
41
+
42
+ --color-error: #fb4934;
43
+ --color-error-bg: rgba(251, 73, 52, 0.08);
44
+ --color-error-border: rgba(251, 73, 52, 0.15);
45
+
46
+ --color-primary: #fe8019;
47
+ --color-primary-hover: #e57212;
48
+ --color-primary-text: #282828;
49
+
50
+ --color-purple: #d3869b;
51
+ --color-purple-bg: rgba(211, 134, 155, 0.1);
52
+ --color-orange: #fe8019;
53
+ --color-orange-bg: rgba(254, 128, 25, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6);
59
+ }
@@ -0,0 +1,11 @@
1
+ /* Theme index — import all theme overrides */
2
+ @import './light.css';
3
+ @import './discord.css';
4
+ @import './github-dark.css';
5
+ @import './catppuccin.css';
6
+ @import './dracula.css';
7
+ @import './nord.css';
8
+ @import './tokyo-night.css';
9
+ @import './gruvbox.css';
10
+ @import './ayu-dark.css';
11
+ @import './one-dark.css';
@@ -0,0 +1,59 @@
1
+ /* Theme: Light — 亮色清爽 (G) — Tailwind Slate 色系 */
2
+ [data-theme="light"] {
3
+ --color-base: #f8fafc;
4
+ --color-frame: #ffffff;
5
+ --color-bar: #ffffff;
6
+ --color-content: #ffffff;
7
+ --color-sidebar: #f8fafc;
8
+ --color-surface: #f1f5f9;
9
+ --color-elevated: #ffffff;
10
+
11
+ --color-border: #e2e8f0;
12
+ --color-border-subtle: #e2e8f0;
13
+ --color-border-hover: #cbd5e1;
14
+
15
+ --color-hover: rgba(0, 0, 0, 0.04);
16
+ --color-active: #f1f5f9;
17
+ --color-selected: rgba(59, 130, 246, 0.08);
18
+ --color-focus-ring: rgba(59, 130, 246, 0.4);
19
+
20
+ --text-primary: #0f172a;
21
+ --text-secondary: #334155;
22
+ --text-muted: #64748b;
23
+ --text-label: #94a3b8;
24
+ --text-disabled: #cbd5e1;
25
+
26
+ --color-success: #22c55e;
27
+ --color-success-bg: rgba(34, 197, 94, 0.08);
28
+ --color-success-border: rgba(34, 197, 94, 0.2);
29
+
30
+ --color-info: #3b82f6;
31
+ --color-info-bg: rgba(59, 130, 246, 0.08);
32
+ --color-info-border: rgba(59, 130, 246, 0.2);
33
+
34
+ --color-warning: #eab308;
35
+ --color-warning-bg: rgba(234, 179, 8, 0.08);
36
+ --color-warning-border: rgba(234, 179, 8, 0.2);
37
+
38
+ --color-error: #ef4444;
39
+ --color-error-bg: rgba(239, 68, 68, 0.08);
40
+ --color-error-border: rgba(239, 68, 68, 0.2);
41
+
42
+ --color-accent: #3b82f6;
43
+ --color-accent-bg: rgba(59, 130, 246, 0.08);
44
+ --color-accent-border: rgba(59, 130, 246, 0.15);
45
+
46
+ --color-primary: #3b82f6;
47
+ --color-primary-hover: #2563eb;
48
+ --color-primary-text: #ffffff;
49
+
50
+ --color-purple: #7c3aed;
51
+ --color-purple-bg: rgba(124, 58, 237, 0.08);
52
+ --color-orange: #ea580c;
53
+ --color-orange-bg: rgba(234, 88, 12, 0.08);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.07);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.1);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.12);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Nord 极光蓝 (I) */
2
+ [data-theme="nord"] {
3
+ --color-base: #2e3440;
4
+ --color-frame: #272c36;
5
+ --color-bar: #3b4252;
6
+ --color-content: #2e3440;
7
+ --color-sidebar: #2e3440;
8
+ --color-surface: #3b4252;
9
+ --color-elevated: #434c5e;
10
+
11
+ --color-border: #3b4252;
12
+ --color-border-subtle: #434c5e;
13
+ --color-border-hover: #4c566a;
14
+
15
+ --color-hover: rgba(236, 239, 244, 0.04);
16
+ --color-active: #434c5e;
17
+ --color-selected: rgba(136, 192, 208, 0.08);
18
+ --color-focus-ring: rgba(136, 192, 208, 0.4);
19
+
20
+ --text-primary: #eceff4;
21
+ --text-secondary: #d8dee9;
22
+ --text-muted: #81a1c1;
23
+ --text-label: #616e88;
24
+ --text-disabled: #4c566a;
25
+
26
+ --color-accent: #88c0d0;
27
+ --color-accent-bg: rgba(136, 192, 208, 0.1);
28
+ --color-accent-border: rgba(136, 192, 208, 0.2);
29
+
30
+ --color-success: #a3be8c;
31
+ --color-success-bg: rgba(163, 190, 140, 0.08);
32
+ --color-success-border: rgba(163, 190, 140, 0.15);
33
+
34
+ --color-info: #81a1c1;
35
+ --color-info-bg: rgba(129, 161, 193, 0.08);
36
+ --color-info-border: rgba(129, 161, 193, 0.15);
37
+
38
+ --color-warning: #ebcb8b;
39
+ --color-warning-bg: rgba(235, 203, 139, 0.08);
40
+ --color-warning-border: rgba(235, 203, 139, 0.15);
41
+
42
+ --color-error: #bf616a;
43
+ --color-error-bg: rgba(191, 97, 106, 0.08);
44
+ --color-error-border: rgba(191, 97, 106, 0.15);
45
+
46
+ --color-primary: #88c0d0;
47
+ --color-primary-hover: #7ab3c3;
48
+ --color-primary-text: #2e3440;
49
+
50
+ --color-purple: #b48ead;
51
+ --color-purple-bg: rgba(180, 142, 173, 0.1);
52
+ --color-orange: #d08770;
53
+ --color-orange-bg: rgba(208, 135, 112, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.45);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.55);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: One Dark 经典灰蓝 (M) */
2
+ [data-theme="one-dark"] {
3
+ --color-base: #282c34;
4
+ --color-frame: #1b1e24;
5
+ --color-bar: #21252b;
6
+ --color-content: #282c34;
7
+ --color-sidebar: #21252b;
8
+ --color-surface: #2c313a;
9
+ --color-elevated: #3e4451;
10
+
11
+ --color-border: #2c313a;
12
+ --color-border-subtle: #3e4451;
13
+ --color-border-hover: #4b5263;
14
+
15
+ --color-hover: rgba(171, 178, 191, 0.04);
16
+ --color-active: #2c313a;
17
+ --color-selected: rgba(97, 175, 239, 0.08);
18
+ --color-focus-ring: rgba(97, 175, 239, 0.4);
19
+
20
+ --text-primary: #d7dae0;
21
+ --text-secondary: #abb2bf;
22
+ --text-muted: #636d83;
23
+ --text-label: #5c6370;
24
+ --text-disabled: #3e4451;
25
+
26
+ --color-accent: #61afef;
27
+ --color-accent-bg: rgba(97, 175, 239, 0.1);
28
+ --color-accent-border: rgba(97, 175, 239, 0.2);
29
+
30
+ --color-success: #98c379;
31
+ --color-success-bg: rgba(152, 195, 121, 0.08);
32
+ --color-success-border: rgba(152, 195, 121, 0.15);
33
+
34
+ --color-info: #61afef;
35
+ --color-info-bg: rgba(97, 175, 239, 0.08);
36
+ --color-info-border: rgba(97, 175, 239, 0.15);
37
+
38
+ --color-warning: #e5c07b;
39
+ --color-warning-bg: rgba(229, 192, 123, 0.08);
40
+ --color-warning-border: rgba(229, 192, 123, 0.15);
41
+
42
+ --color-error: #e06c75;
43
+ --color-error-bg: rgba(224, 108, 117, 0.08);
44
+ --color-error-border: rgba(224, 108, 117, 0.15);
45
+
46
+ --color-primary: #61afef;
47
+ --color-primary-hover: #528bcc;
48
+ --color-primary-text: #1b1e24;
49
+
50
+ --color-purple: #c678dd;
51
+ --color-purple-bg: rgba(198, 120, 221, 0.1);
52
+ --color-orange: #d19a66;
53
+ --color-orange-bg: rgba(209, 154, 102, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.6);
59
+ }
@@ -0,0 +1,59 @@
1
+ /* Theme: Tokyo Night 东京霓虹 (J) */
2
+ [data-theme="tokyo-night"] {
3
+ --color-base: #1a1b26;
4
+ --color-frame: #16161e;
5
+ --color-bar: #1f2335;
6
+ --color-content: #1a1b26;
7
+ --color-sidebar: #1a1b26;
8
+ --color-surface: #292e42;
9
+ --color-elevated: #33394e;
10
+
11
+ --color-border: #292e42;
12
+ --color-border-subtle: #33394e;
13
+ --color-border-hover: #3b4261;
14
+
15
+ --color-hover: rgba(192, 202, 245, 0.04);
16
+ --color-active: #292e42;
17
+ --color-selected: rgba(122, 162, 247, 0.08);
18
+ --color-focus-ring: rgba(122, 162, 247, 0.4);
19
+
20
+ --text-primary: #c0caf5;
21
+ --text-secondary: #a9b1d6;
22
+ --text-muted: #565f89;
23
+ --text-label: #414868;
24
+ --text-disabled: #3b4261;
25
+
26
+ --color-accent: #7aa2f7;
27
+ --color-accent-bg: rgba(122, 162, 247, 0.1);
28
+ --color-accent-border: rgba(122, 162, 247, 0.2);
29
+
30
+ --color-success: #9ece6a;
31
+ --color-success-bg: rgba(158, 206, 106, 0.08);
32
+ --color-success-border: rgba(158, 206, 106, 0.15);
33
+
34
+ --color-info: #7dcfff;
35
+ --color-info-bg: rgba(125, 207, 255, 0.08);
36
+ --color-info-border: rgba(125, 207, 255, 0.15);
37
+
38
+ --color-warning: #e0af68;
39
+ --color-warning-bg: rgba(224, 175, 104, 0.08);
40
+ --color-warning-border: rgba(224, 175, 104, 0.15);
41
+
42
+ --color-error: #f7768e;
43
+ --color-error-bg: rgba(247, 118, 142, 0.08);
44
+ --color-error-border: rgba(247, 118, 142, 0.15);
45
+
46
+ --color-primary: #7aa2f7;
47
+ --color-primary-hover: #6a92e7;
48
+ --color-primary-text: #1a1b26;
49
+
50
+ --color-purple: #bb9af7;
51
+ --color-purple-bg: rgba(187, 154, 247, 0.1);
52
+ --color-orange: #ff9e64;
53
+ --color-orange-bg: rgba(255, 158, 100, 0.1);
54
+
55
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35);
56
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.45);
57
+ --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.55);
58
+ --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.65);
59
+ }