@bytechain.cn/colamd 1.5.0 → 1.5.1-beta.2

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 (193) hide show
  1. package/.trae/specs/optimize-theme-loading/checklist.md +20 -0
  2. package/.trae/specs/optimize-theme-loading/spec.md +103 -0
  3. package/.trae/specs/optimize-theme-loading/tasks.md +40 -0
  4. package/CHANGELOG.md +323 -0
  5. package/CLAUDE.md +56 -0
  6. package/README.md +422 -26
  7. package/README_CN.md +480 -28
  8. package/android/app/build/.npmkeep +0 -0
  9. package/android/app/build.gradle +76 -0
  10. package/android/app/capacitor.build.gradle +24 -0
  11. package/android/app/proguard-rules.pro +21 -0
  12. package/android/app/release.keystore +0 -0
  13. package/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  14. package/android/app/src/main/AndroidManifest.xml +64 -0
  15. package/android/app/src/main/java/cn/bytechain/colamd/MainActivity.java +180 -0
  16. package/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  17. package/android/app/src/main/res/drawable/splash.png +0 -0
  18. package/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  19. package/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  20. package/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  21. package/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  22. package/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  23. package/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  24. package/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  25. package/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  26. package/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  27. package/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  28. package/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  29. package/android/app/src/main/res/layout/activity_main.xml +12 -0
  30. package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  31. package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  32. package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  33. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  34. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  35. package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  36. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  37. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  38. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  39. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  40. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  41. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  42. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  43. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  44. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  45. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  46. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  47. package/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  48. package/android/app/src/main/res/values/strings.xml +7 -0
  49. package/android/app/src/main/res/values/styles.xml +22 -0
  50. package/android/app/src/main/res/xml/file_paths.xml +5 -0
  51. package/android/app/src/main/res/xml/network_security_config.xml +8 -0
  52. package/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  53. package/android/build.gradle +29 -0
  54. package/android/capacitor.settings.gradle +21 -0
  55. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  56. package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  57. package/android/gradle.properties +22 -0
  58. package/android/gradlew +248 -0
  59. package/android/gradlew.bat +92 -0
  60. package/android/settings.gradle +5 -0
  61. package/android/variables.gradle +16 -0
  62. package/bytechain.cn-colamd-1.5.1-beta.2.tgz +0 -0
  63. package/capacitor.config.js +29 -0
  64. package/capacitor.config.ts +30 -0
  65. package/demo.md +191 -484
  66. package/dist/main/index.js +77 -46
  67. package/dist/renderer/assets/{arc-tTbbM8LO.js → arc-CPdeInCG.js} +1 -1
  68. package/dist/renderer/assets/{architectureDiagram-3BPJPVTR-CEgYow6c.js → architectureDiagram-3BPJPVTR-BAbnaR9G.js} +4 -3
  69. package/dist/renderer/assets/{blockDiagram-GPEHLZMM-LHyVtPwW.js → blockDiagram-GPEHLZMM-CYSWjnJg.js} +5 -4
  70. package/dist/renderer/assets/{c4Diagram-AAUBKEIU-C1P1eJrf.js → c4Diagram-AAUBKEIU-Rb1tstnr.js} +3 -2
  71. package/dist/renderer/assets/{channel-upve91Tq.js → channel-DpG2A6fE.js} +1 -1
  72. package/dist/renderer/assets/{chunk-2J33WTMH-lag2vhq9.js → chunk-2J33WTMH-DFc0Jxy_.js} +1 -1
  73. package/dist/renderer/assets/{chunk-4BX2VUAB-BXJ8Ggh-.js → chunk-4BX2VUAB-BhRxDTNn.js} +1 -1
  74. package/dist/renderer/assets/{chunk-55IACEB6-CiBpxRa1.js → chunk-55IACEB6-DEgMVBk8.js} +1 -1
  75. package/dist/renderer/assets/{chunk-727SXJPM-ODeKQFXC.js → chunk-727SXJPM-bjBIfiz8.js} +5 -5
  76. package/dist/renderer/assets/{chunk-AQP2D5EJ-BK7xJolB.js → chunk-AQP2D5EJ-DwQMzTzD.js} +3 -3
  77. package/dist/renderer/assets/{chunk-FMBD7UC4-BxpCZPtz.js → chunk-FMBD7UC4-CkphwJzs.js} +1 -1
  78. package/dist/renderer/assets/{chunk-ND2GUHAM-CqqaU9Ue.js → chunk-ND2GUHAM-oU09z4y4.js} +1 -1
  79. package/dist/renderer/assets/{chunk-QZHKN3VN-Biq_K124.js → chunk-QZHKN3VN-rCbVuPBn.js} +1 -1
  80. package/dist/renderer/assets/{classDiagram-v2-Q7XG4LA2-Cq95X99o.js → classDiagram-4FO5ZUOK-DGS2faoM.js} +7 -6
  81. package/dist/renderer/assets/{classDiagram-4FO5ZUOK-Cq95X99o.js → classDiagram-v2-Q7XG4LA2-DGS2faoM.js} +7 -6
  82. package/dist/renderer/assets/{cose-bilkent-S5V4N54A-XasiD0bu.js → cose-bilkent-S5V4N54A-iqY6-EwA.js} +2 -1
  83. package/dist/renderer/assets/{dagre-BM42HDAG-Nq84Gfx4.js → dagre-BM42HDAG-5t3X5sDa.js} +4 -3
  84. package/dist/renderer/assets/{diagram-2AECGRRQ-DwuB1GWt.js → diagram-2AECGRRQ-DzHiYDPh.js} +4 -3
  85. package/dist/renderer/assets/{diagram-5GNKFQAL-C2tgeI1h.js → diagram-5GNKFQAL-BiNv6Keq.js} +5 -4
  86. package/dist/renderer/assets/{diagram-KO2AKTUF-D5KzjNBc.js → diagram-KO2AKTUF-ClzeDG6f.js} +4 -3
  87. package/dist/renderer/assets/{diagram-LMA3HP47-C12xHS1c.js → diagram-LMA3HP47-CGkw7wII.js} +4 -3
  88. package/dist/renderer/assets/{diagram-OG6HWLK6-CnxI9oEa.js → diagram-OG6HWLK6-Dl-Hyk1_.js} +5 -4
  89. package/dist/renderer/assets/{erDiagram-TEJ5UH35-D_uPaKwn.js → erDiagram-TEJ5UH35-BxUN79Qb.js} +5 -4
  90. package/dist/renderer/assets/{flowDiagram-I6XJVG4X-B6q_1-tE.js → flowDiagram-I6XJVG4X-CzFk-KNI.js} +7 -6
  91. package/dist/renderer/assets/{ganttDiagram-6RSMTGT7-CFo7ifF9.js → ganttDiagram-6RSMTGT7-C2xl6Igx.js} +3 -2
  92. package/dist/renderer/assets/{gitGraphDiagram-PVQCEYII-WSexHTnq.js → gitGraphDiagram-PVQCEYII-_fn7XCa7.js} +5 -4
  93. package/dist/renderer/assets/{graph-DyX_9f6d.js → graph-CDoHYrHm.js} +1 -1
  94. package/dist/renderer/assets/index-B4uDgADr.js +530 -0
  95. package/dist/renderer/assets/index-CBcVpA3d.js +30 -0
  96. package/dist/renderer/assets/index-CGj1spkU.js +27 -0
  97. package/dist/renderer/assets/{index-dyHEFYvY.css → index-CeFpoCKV.css} +443 -400
  98. package/dist/renderer/assets/index-D4CPFkph.js +9 -0
  99. package/dist/renderer/assets/{index-DW7LS8C1.js → index-DAlXyxzt.js} +1183 -346
  100. package/dist/renderer/assets/index-DxOzbfR-.js +110 -0
  101. package/dist/renderer/assets/index-Y89U1ptl.js +9 -0
  102. package/dist/renderer/assets/{infoDiagram-5YYISTIA-DaeJdLRq.js → infoDiagram-5YYISTIA-DL6XIxLz.js} +3 -2
  103. package/dist/renderer/assets/{ishikawaDiagram-YF4QCWOH-DDCZc35f.js → ishikawaDiagram-YF4QCWOH-BUZLjRo-.js} +2 -1
  104. package/dist/renderer/assets/{journeyDiagram-JHISSGLW-BEdmpAgl.js → journeyDiagram-JHISSGLW-C4rH_mQM.js} +5 -4
  105. package/dist/renderer/assets/{kanban-definition-UN3LZRKU-BEFtQcFb.js → kanban-definition-UN3LZRKU-DRbrBcWV.js} +3 -2
  106. package/dist/renderer/assets/{layout-CAJgQHdw.js → layout-DZl4n4qu.js} +2 -2
  107. package/dist/renderer/assets/{linear-B2ggJ8Am.js → linear-B0Krxg21.js} +1 -1
  108. package/dist/renderer/assets/{mindmap-definition-RKZ34NQL-DSxVgHB5.js → mindmap-definition-RKZ34NQL-DdmPsWrn.js} +4 -3
  109. package/dist/renderer/assets/{pieDiagram-4H26LBE5-CwYoJBuL.js → pieDiagram-4H26LBE5-BPZLqwG0.js} +5 -4
  110. package/dist/renderer/assets/preload-helper-tXtZnHb0.js +88 -0
  111. package/dist/renderer/assets/{quadrantDiagram-W4KKPZXB-CST9Fvg9.js → quadrantDiagram-W4KKPZXB-Dr-oWRk9.js} +3 -2
  112. package/dist/renderer/assets/{requirementDiagram-4Y6WPE33-DtrH52jS.js → requirementDiagram-4Y6WPE33-B6QZd0lo.js} +4 -3
  113. package/dist/renderer/assets/{sankeyDiagram-5OEKKPKP-ca1tPzJ_.js → sankeyDiagram-5OEKKPKP-Cyl9ojEt.js} +2 -1
  114. package/dist/renderer/assets/{sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js → sequenceDiagram-3UESZ5HK-D48Yr9T6.js} +4 -3
  115. package/dist/renderer/assets/{stateDiagram-AJRCARHV-Bha2QoNB.js → stateDiagram-AJRCARHV-qyb8ETsa.js} +7 -6
  116. package/dist/renderer/assets/{stateDiagram-v2-BHNVJYJU-DWgFUYu1.js → stateDiagram-v2-BHNVJYJU-DmDOyyrJ.js} +5 -4
  117. package/dist/renderer/assets/{timeline-definition-PNZ67QCA-C3h_-OTj.js → timeline-definition-PNZ67QCA-C-KQxTi1.js} +3 -2
  118. package/dist/renderer/assets/{vennDiagram-CIIHVFJN-DFzjSrZi.js → vennDiagram-CIIHVFJN-BdaZlnH-.js} +2 -1
  119. package/dist/renderer/assets/{wardley-L42UT6IY-Cx-VbqoS.js → wardley-L42UT6IY-b-_GPpqL.js} +1 -1
  120. package/dist/renderer/assets/{wardleyDiagram-YWT4CUSO-S2D9XqX6.js → wardleyDiagram-YWT4CUSO-B2hBE-EE.js} +4 -3
  121. package/dist/renderer/assets/web-BKE0SH0E.js +36 -0
  122. package/dist/renderer/assets/web-CBsFp24u.js +564 -0
  123. package/dist/renderer/assets/web-Dc8YgoHP.js +24 -0
  124. package/dist/renderer/assets/web-TfDzToU7.js +58 -0
  125. package/dist/renderer/assets/{xychartDiagram-2RQKCTM6-Cfxigbts.js → xychartDiagram-2RQKCTM6-CSvswDTY.js} +3 -2
  126. package/dist/renderer/index.html +62 -3
  127. package/docs/academic-demo.md +566 -0
  128. package/docs/demo.html +748 -0
  129. package/docs/demo.md +546 -0
  130. package/docs/demo.pdf +0 -0
  131. package/docs/theme-paradigm.md +658 -0
  132. package/electron-builder.yml +7 -0
  133. package/electron.vite.config.js +31 -0
  134. package/electron.vite.config.ts +1 -1
  135. package/ios/App/App/AppDelegate.swift +49 -0
  136. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  137. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
  138. package/ios/App/App/Assets.xcassets/Contents.json +6 -0
  139. package/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
  140. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  141. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  142. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  143. package/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
  144. package/ios/App/App/Base.lproj/Main.storyboard +19 -0
  145. package/ios/App/App/Info.plist +49 -0
  146. package/ios/App/App.xcodeproj/project.pbxproj +408 -0
  147. package/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  148. package/ios/App/Podfile +28 -0
  149. package/package.json +23 -3
  150. package/resources/templates/slides/template-forest-ink.html +540 -0
  151. package/scripts/generate-icons.js +102 -0
  152. package/src/main/index.ts +87 -63
  153. package/src/preload/index.d.ts +51 -0
  154. package/src/preload/index.js +70 -0
  155. package/src/renderer/capacitor-api.ts +713 -0
  156. package/src/renderer/editor/editor.ts +87 -4
  157. package/src/renderer/editor/plugins/index.ts +24 -32
  158. package/src/renderer/editor/plugins/math-plugin.ts +1 -1
  159. package/src/renderer/editor/plugins/mermaid-plugin-custom.css +13 -398
  160. package/src/renderer/editor/plugins/mermaid-plugin.ts +62 -71
  161. package/src/renderer/editor/plugins/themes/base/dark.css +23 -0
  162. package/src/renderer/editor/plugins/themes/base/elegant.css +32 -0
  163. package/src/renderer/editor/plugins/themes/base/light.css +20 -0
  164. package/src/renderer/editor/plugins/themes/base/newsprint.css +27 -0
  165. package/src/renderer/editor/plugins/themes/components/mermaid/academic.css +43 -0
  166. package/src/renderer/editor/plugins/themes/components/mermaid/dark.css +20 -0
  167. package/src/renderer/editor/plugins/themes/components/mermaid/elegant.css +24 -0
  168. package/src/renderer/editor/plugins/themes/components/mermaid/light.css +21 -0
  169. package/src/renderer/editor/plugins/themes/components/mermaid/newsprint.css +26 -0
  170. package/src/renderer/editor/plugins/themes/components/mermaid/variables.css +592 -0
  171. package/src/renderer/editor/plugins/themes/foundation.css +143 -0
  172. package/src/renderer/editor/plugins/themes/theme-manager.ts +92 -0
  173. package/src/renderer/env.d.ts +4 -1
  174. package/src/renderer/index.html +59 -1
  175. package/src/renderer/main.ts +432 -57
  176. package/src/renderer/mobile.css +429 -0
  177. package/themes/README.md +3 -0
  178. package/themes/academic-paper.css +1321 -0
  179. package/themes/elegant.css +14 -7
  180. package/themes/forest-ink.css +664 -0
  181. package/themes/pixso-design.css +1261 -0
  182. package/themes/swiss-design.css +596 -0
  183. package/themes/template.css +498 -0
  184. package/tsconfig.main.json +1 -0
  185. package/tsconfig.main.tsbuildinfo +1 -0
  186. package/tsconfig.preload.json +1 -0
  187. package/tsconfig.preload.tsbuildinfo +1 -0
  188. package/tsconfig.renderer.json +1 -0
  189. package/tsconfig.renderer.tsbuildinfo +1 -0
  190. package/tsconfig.tsbuildinfo +1 -0
  191. package/.trae/documents/fix-mermaid-colors-and-sankey.md +0 -50
  192. package/src/renderer/themes/theme-manager.ts +0 -40
  193. /package/src/renderer/{themes → editor/plugins/themes}/base.css +0 -0
@@ -0,0 +1,592 @@
1
+ /*
2
+ * ColaMD 主题系统:Mermaid 变量映射层
3
+ * 职责:将 CSS 变量映射到 Mermaid SVG 选择器
4
+ * 本文件定义了「变量 → 视觉样式」的完整映射关系
5
+ * 修改配色只需覆盖 foundation.css 或配色方案文件中的变量
6
+ *
7
+ * 架构:foundation.css (变量定义) → 本文件 (变量映射) → 配色方案 (变量覆盖)
8
+ */
9
+
10
+ /* ================================================================
11
+ 1. 容器 (Panel / Container)
12
+ ================================================================ */
13
+ .md-diagram-panel { margin: 1.5em 0; }
14
+
15
+ .md-diagram-panel.md-mermaid,
16
+ body.theme-custom .mermaid-block,
17
+ body.theme-custom .mermaid-preview {
18
+ background: var(--mermaid-background);
19
+ border: 1px solid var(--mermaid-border-color);
20
+ border-radius: var(--mermaid-border-radius);
21
+ padding: var(--mermaid-padding);
22
+ margin: 1.5em 0;
23
+ }
24
+
25
+ .md-diagram-panel.md-mermaid svg,
26
+ body.theme-custom .mermaid-preview svg {
27
+ max-width: 100%;
28
+ height: auto;
29
+ }
30
+
31
+ /* ================================================================
32
+ 2. 字体 (Font)
33
+ ================================================================ */
34
+ .md-diagram-panel.md-mermaid svg text,
35
+ body.theme-custom .mermaid-preview svg text {
36
+ fill: var(--mermaid-text-color);
37
+ font-family: var(--mermaid-font-family);
38
+ font-size: var(--mermaid-font-size);
39
+ }
40
+
41
+ .md-diagram-panel.md-mermaid .node .label {
42
+ color: var(--mermaid-label-text) !important;
43
+ font-family: var(--mermaid-font-family) !important;
44
+ font-size: var(--mermaid-font-size) !important;
45
+ }
46
+
47
+ body.theme-custom .mermaid-preview svg .nodeLabel span,
48
+ body.theme-custom .mermaid-preview svg .edgeLabel span {
49
+ font-family: var(--mermaid-font-family);
50
+ }
51
+
52
+ body.theme-custom .mermaid-preview svg foreignObject span {
53
+ color: var(--mermaid-node-text) !important;
54
+ font-family: var(--mermaid-font-family) !important;
55
+ font-size: var(--mermaid-font-size) !important;
56
+ }
57
+
58
+ /* ================================================================
59
+ 3. 通用节点 (Node: rect, circle, ellipse, polygon, path)
60
+ ================================================================ */
61
+ body.theme-custom .mermaid-preview svg .node rect,
62
+ body.theme-custom .mermaid-preview svg .node circle,
63
+ body.theme-custom .mermaid-preview svg .node ellipse,
64
+ body.theme-custom .mermaid-preview svg .node polygon,
65
+ body.theme-custom .mermaid-preview svg .node path {
66
+ stroke: var(--mermaid-node-stroke);
67
+ stroke-width: var(--mermaid-node-stroke-width);
68
+ fill: var(--mermaid-node-fill) !important;
69
+ }
70
+
71
+ /* ── Typora 兼容 ── */
72
+ .md-diagram-panel.md-mermaid .node rect,
73
+ .md-diagram-panel.md-mermaid .node circle,
74
+ .md-diagram-panel.md-mermaid .node ellipse,
75
+ .md-diagram-panel.md-mermaid .node polygon {
76
+ fill: var(--mermaid-node-fill) !important;
77
+ stroke: var(--mermaid-node-stroke) !important;
78
+ stroke-width: var(--mermaid-node-stroke-width) !important;
79
+ }
80
+
81
+ /* ================================================================
82
+ 4. 连线 (Edge / Path)
83
+ ================================================================ */
84
+ body.theme-custom .mermaid-preview svg .edgePath .path {
85
+ stroke: var(--mermaid-edge-stroke);
86
+ stroke-width: var(--mermaid-edge-stroke-width);
87
+ }
88
+
89
+ .md-diagram-panel.md-mermaid .edgePath .path {
90
+ stroke: var(--mermaid-edge-stroke) !important;
91
+ stroke-width: var(--mermaid-edge-stroke-width) !important;
92
+ }
93
+
94
+ /* ── 箭头标记 ── */
95
+ body.theme-custom .mermaid-preview svg defs marker path {
96
+ fill: var(--mermaid-edge-stroke);
97
+ stroke: var(--mermaid-edge-stroke);
98
+ }
99
+
100
+ /* ================================================================
101
+ 5. 聚类 (Cluster / Subgraph)
102
+ ================================================================ */
103
+ body.theme-custom .mermaid-preview svg .cluster rect,
104
+ body.theme-custom .mermaid-preview svg .cluster path {
105
+ stroke: var(--mermaid-cluster-stroke);
106
+ fill: var(--mermaid-cluster-fill) !important;
107
+ }
108
+
109
+ .md-diagram-panel.md-mermaid .cluster rect {
110
+ fill: var(--mermaid-cluster-fill) !important;
111
+ stroke: var(--mermaid-cluster-stroke) !important;
112
+ }
113
+
114
+ /* ================================================================
115
+ 6. 标签 (Labels)
116
+ ================================================================ */
117
+ body.theme-custom .mermaid-preview svg .label text,
118
+ body.theme-custom .mermaid-preview svg .nodeLabel text {
119
+ fill: var(--mermaid-label-text) !important;
120
+ }
121
+
122
+ body.theme-custom .mermaid-preview svg .nodeLabel span {
123
+ color: var(--mermaid-label-text) !important;
124
+ }
125
+
126
+ body.theme-custom .mermaid-preview svg .edgeLabel text {
127
+ fill: var(--mermaid-edge-label-text) !important;
128
+ }
129
+
130
+ body.theme-custom .mermaid-preview svg .edgeLabel rect {
131
+ fill: var(--mermaid-edge-label-bg) !important;
132
+ }
133
+
134
+ body.theme-custom .mermaid-preview svg .edgeLabel span {
135
+ color: var(--mermaid-edge-label-text) !important;
136
+ }
137
+
138
+ .md-diagram-panel.md-mermaid .edgeLabel {
139
+ background-color: var(--mermaid-edge-label-bg) !important;
140
+ color: var(--mermaid-edge-label-text) !important;
141
+ }
142
+
143
+ /* ================================================================
144
+ 7. 硬编码色值覆盖 (覆盖 Mermaid 默认的 #444 / #000)
145
+ ================================================================ */
146
+ body.theme-custom .mermaid-preview svg rect[stroke="#444444"],
147
+ body.theme-custom .mermaid-preview svg path[stroke="#444444"],
148
+ body.theme-custom .mermaid-preview svg line[stroke="#444444"],
149
+ body.theme-custom .mermaid-preview svg rect[stroke="#000000"],
150
+ body.theme-custom .mermaid-preview svg path[stroke="#000000"],
151
+ body.theme-custom .mermaid-preview svg line[stroke="#000000"] {
152
+ stroke: var(--mermaid-node-stroke) !important;
153
+ }
154
+
155
+ .md-diagram-panel.md-mermaid svg rect[stroke="#444444"],
156
+ .md-diagram-panel.md-mermaid svg rect[stroke="#000000"],
157
+ .md-diagram-panel.md-mermaid svg path[stroke="#444444"],
158
+ .md-diagram-panel.md-mermaid svg path[stroke="#000000"],
159
+ .md-diagram-panel.md-mermaid svg line[stroke="#444444"],
160
+ .md-diagram-panel.md-mermaid svg line[stroke="#000000"] {
161
+ stroke: var(--mermaid-node-stroke) !important;
162
+ }
163
+
164
+ /* ================================================================
165
+ 8. 文本偏移 (跨图表类型通用)
166
+ ================================================================ */
167
+ body.theme-custom .mermaid-preview svg .label text,
168
+ body.theme-custom .mermaid-preview svg .nodeLabel text {
169
+ transform: translateY(var(--mermaid-label-offset-y)) !important;
170
+ }
171
+
172
+ body.theme-custom .mermaid-preview svg .titleText {
173
+ transform: translateY(-1px) !important;
174
+ }
175
+
176
+ body.theme-custom .mermaid-preview svg .xychart .axis text {
177
+ transform: translateY(0) !important;
178
+ }
179
+
180
+ body.theme-custom .mermaid-preview svg .nodeLabel,
181
+ body.theme-custom .mermaid-preview svg .edgeLabel {
182
+ display: inline-block !important;
183
+ position: relative !important;
184
+ top: var(--mermaid-label-offset-y) !important;
185
+ }
186
+
187
+ /* ================================================================
188
+ 9. 流程图 / ER 图 / Block 图 (基础节点)
189
+ ================================================================ */
190
+ body.theme-custom .mermaid-preview svg .node.default rect,
191
+ body.theme-custom .mermaid-preview svg .node rect[fill] {
192
+ fill: var(--mermaid-node-fill) !important;
193
+ stroke: var(--mermaid-node-stroke) !important;
194
+ }
195
+
196
+ body.theme-custom .mermaid-preview svg .node.alt rect {
197
+ fill: var(--mermaid-cluster-fill) !important;
198
+ stroke: var(--mermaid-cluster-stroke) !important;
199
+ }
200
+
201
+ /* ================================================================
202
+ 10. 饼图 (Pie)
203
+ ================================================================ */
204
+ body.theme-custom .mermaid-preview svg .pieCircle,
205
+ body.theme-custom .mermaid-preview svg .slice {
206
+ stroke: var(--mermaid-node-stroke);
207
+ }
208
+
209
+ body.theme-custom .mermaid-preview svg .pieTitleText,
210
+ body.theme-custom .mermaid-preview svg .legend text {
211
+ fill: var(--mermaid-title-text) !important;
212
+ }
213
+
214
+ /* ================================================================
215
+ 11. 时序图 (Sequence)
216
+ ================================================================ */
217
+ body.theme-custom .mermaid-preview svg .actor rect,
218
+ body.theme-custom .mermaid-preview svg .actor path {
219
+ stroke: var(--mermaid-node-stroke);
220
+ }
221
+
222
+ body.theme-custom .mermaid-preview svg text.actor {
223
+ fill: var(--mermaid-node-text) !important;
224
+ }
225
+
226
+ body.theme-custom .mermaid-preview svg .messageLine0,
227
+ body.theme-custom .mermaid-preview svg .messageLine1 {
228
+ stroke: var(--mermaid-edge-stroke) !important;
229
+ }
230
+
231
+ body.theme-custom .mermaid-preview svg .messageText {
232
+ fill: var(--mermaid-label-text) !important;
233
+ }
234
+
235
+ body.theme-custom .mermaid-preview svg .loopText,
236
+ body.theme-custom .mermaid-preview svg .altText,
237
+ body.theme-custom .mermaid-preview svg .optText {
238
+ fill: var(--mermaid-axis-text) !important;
239
+ }
240
+
241
+ body.theme-custom .mermaid-preview svg .loopLine,
242
+ body.theme-custom .mermaid-preview svg .altLine,
243
+ body.theme-custom .mermaid-preview svg .optLine {
244
+ stroke: var(--mermaid-edge-stroke) !important;
245
+ }
246
+
247
+ body.theme-custom .mermaid-preview svg .labelBox {
248
+ stroke: var(--mermaid-node-stroke);
249
+ }
250
+
251
+ body.theme-custom .mermaid-preview svg .labelText,
252
+ body.theme-custom .mermaid-preview svg .loopText tspan,
253
+ body.theme-custom .mermaid-preview svg .altText tspan,
254
+ body.theme-custom .mermaid-preview svg .optText tspan {
255
+ fill: var(--mermaid-label-text) !important;
256
+ }
257
+
258
+ /* ── Typora 兼容 ── */
259
+ .md-diagram-panel.md-mermaid .actor {
260
+ fill: var(--mermaid-node-fill) !important;
261
+ stroke: var(--mermaid-node-stroke) !important;
262
+ }
263
+
264
+ .md-diagram-panel.md-mermaid text.actor {
265
+ fill: var(--mermaid-node-text) !important;
266
+ }
267
+
268
+ .md-diagram-panel.md-mermaid .messageLine0,
269
+ .md-diagram-panel.md-mermaid .messageLine1 {
270
+ stroke: var(--mermaid-edge-stroke) !important;
271
+ }
272
+
273
+ .md-diagram-panel.md-mermaid .messageText {
274
+ fill: var(--mermaid-edge-label-text) !important;
275
+ }
276
+
277
+ /* ================================================================
278
+ 12. 状态图 (State Diagram)
279
+ ================================================================ */
280
+ body.theme-custom .mermaid-preview svg .statediagram-state rect,
281
+ body.theme-custom .mermaid-preview svg .statediagram-state circle {
282
+ stroke: var(--mermaid-node-stroke);
283
+ fill: var(--mermaid-node-fill) !important;
284
+ }
285
+
286
+ body.theme-custom .mermaid-preview svg .statediagram-cluster rect {
287
+ stroke: var(--mermaid-cluster-stroke);
288
+ fill: var(--mermaid-cluster-fill) !important;
289
+ }
290
+
291
+ body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel text,
292
+ body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel span,
293
+ body.theme-custom .mermaid-preview svg .statediagram-cluster .outer-title text {
294
+ fill: var(--mermaid-label-text) !important;
295
+ color: var(--mermaid-label-text) !important;
296
+ }
297
+
298
+ body.theme-custom .mermaid-preview svg .transition {
299
+ stroke: var(--mermaid-edge-stroke);
300
+ }
301
+
302
+ body.theme-custom .mermaid-preview svg .edgeLabel .label text {
303
+ fill: var(--mermaid-edge-label-text) !important;
304
+ }
305
+
306
+ /* ================================================================
307
+ 13. 类图 (Class Diagram)
308
+ ================================================================ */
309
+ body.theme-custom .mermaid-preview svg .classBox rect,
310
+ body.theme-custom .mermaid-preview svg .classBox path {
311
+ stroke: var(--mermaid-node-stroke);
312
+ }
313
+
314
+ body.theme-custom .mermaid-preview svg .classTitle text,
315
+ body.theme-custom .mermaid-preview svg .classTitle span {
316
+ fill: var(--mermaid-label-text) !important;
317
+ color: var(--mermaid-label-text) !important;
318
+ }
319
+
320
+ body.theme-custom .mermaid-preview svg .classText text,
321
+ body.theme-custom .mermaid-preview svg .classText span {
322
+ fill: var(--mermaid-edge-label-text) !important;
323
+ color: var(--mermaid-edge-label-text) !important;
324
+ }
325
+
326
+ body.theme-custom .mermaid-preview svg .divider {
327
+ stroke: var(--mermaid-node-stroke);
328
+ }
329
+
330
+ body.theme-custom .mermaid-preview svg .relation {
331
+ stroke: var(--mermaid-edge-stroke);
332
+ }
333
+
334
+ /* ================================================================
335
+ 14. 甘特图 (Gantt)
336
+ ================================================================ */
337
+ body.theme-custom .mermaid-preview svg .task {
338
+ stroke: var(--mermaid-node-stroke);
339
+ }
340
+
341
+ body.theme-custom .mermaid-preview svg .taskText,
342
+ body.theme-custom .mermaid-preview svg .taskTextOutsideRight,
343
+ body.theme-custom .mermaid-preview svg .taskTextOutsideLeft {
344
+ fill: var(--mermaid-label-text) !important;
345
+ }
346
+
347
+ body.theme-custom .mermaid-preview svg .section rect {
348
+ stroke: var(--mermaid-node-stroke);
349
+ }
350
+
351
+ body.theme-custom .mermaid-preview svg .sectionText,
352
+ body.theme-custom .mermaid-preview svg .sectionTitle {
353
+ fill: var(--mermaid-label-text) !important;
354
+ }
355
+
356
+ body.theme-custom .mermaid-preview svg .today {
357
+ stroke: var(--mermaid-highlight) !important;
358
+ }
359
+
360
+ body.theme-custom .mermaid-preview svg .grid .tick line {
361
+ stroke: var(--mermaid-edge-stroke);
362
+ }
363
+
364
+ body.theme-custom .mermaid-preview svg .grid .domain {
365
+ stroke: var(--mermaid-edge-stroke);
366
+ }
367
+
368
+ body.theme-custom .mermaid-preview svg .tick text {
369
+ fill: var(--mermaid-axis-text);
370
+ }
371
+
372
+ /* ── Typora 兼容 ── */
373
+ .md-diagram-panel.md-mermaid .section0,
374
+ .md-diagram-panel.md-mermaid .section1,
375
+ .md-diagram-panel.md-mermaid .section2,
376
+ .md-diagram-panel.md-mermaid .section3 {
377
+ fill: var(--mermaid-cluster-fill) !important;
378
+ }
379
+
380
+ .md-diagram-panel.md-mermaid .task0,
381
+ .md-diagram-panel.md-mermaid .task1,
382
+ .md-diagram-panel.md-mermaid .task2,
383
+ .md-diagram-panel.md-mermaid .task3 {
384
+ fill: var(--mermaid-node-fill) !important;
385
+ stroke: var(--mermaid-node-stroke) !important;
386
+ }
387
+
388
+ .md-diagram-panel.md-mermaid .today {
389
+ stroke: var(--mermaid-highlight) !important;
390
+ stroke-width: 2px !important;
391
+ }
392
+
393
+ /* ================================================================
394
+ 15. 思维导图 (Mindmap)
395
+ ================================================================ */
396
+ body.theme-custom .mermaid-preview svg .mindmap-node rect,
397
+ body.theme-custom .mermaid-preview svg .mindmap-node circle,
398
+ body.theme-custom .mermaid-preview svg .mindmap-node ellipse,
399
+ body.theme-custom .mermaid-preview svg .mindmap-node polygon,
400
+ body.theme-custom .mermaid-preview svg .mindmap-node path {
401
+ stroke: var(--mermaid-node-stroke);
402
+ }
403
+
404
+ body.theme-custom .mermaid-preview svg .mindmap-node text,
405
+ body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel text,
406
+ body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel span {
407
+ fill: var(--mermaid-label-text) !important;
408
+ color: var(--mermaid-label-text) !important;
409
+ }
410
+
411
+ body.theme-custom .mermaid-preview svg .mindmap-edge {
412
+ stroke: var(--mermaid-edge-stroke);
413
+ }
414
+
415
+ /* ================================================================
416
+ 16. Block 图
417
+ ================================================================ */
418
+ body.theme-custom .mermaid-preview svg .block rect,
419
+ body.theme-custom .mermaid-preview svg .block path {
420
+ stroke: var(--mermaid-node-stroke);
421
+ }
422
+
423
+ body.theme-custom .mermaid-preview svg .block text,
424
+ body.theme-custom .mermaid-preview svg .block .nodeLabel text,
425
+ body.theme-custom .mermaid-preview svg .block .nodeLabel span {
426
+ fill: var(--mermaid-label-text) !important;
427
+ color: var(--mermaid-label-text) !important;
428
+ }
429
+
430
+ /* ================================================================
431
+ 17. ER 图 (Entity Relationship)
432
+ ================================================================ */
433
+ body.theme-custom .mermaid-preview svg .er .entityBox rect,
434
+ body.theme-custom .mermaid-preview svg .er .entityBox path {
435
+ stroke: var(--mermaid-node-stroke);
436
+ }
437
+
438
+ body.theme-custom .mermaid-preview svg .er text,
439
+ body.theme-custom .mermaid-preview svg .er .relationshipLabel {
440
+ fill: var(--mermaid-label-text) !important;
441
+ }
442
+
443
+ body.theme-custom .mermaid-preview svg .er .relationshipLine {
444
+ stroke: var(--mermaid-edge-stroke);
445
+ }
446
+
447
+ /* ================================================================
448
+ 18. Git 图
449
+ ================================================================ */
450
+ body.theme-custom .mermaid-preview svg .git .commit rect,
451
+ body.theme-custom .mermaid-preview svg .git .commit circle {
452
+ stroke: var(--mermaid-node-stroke);
453
+ }
454
+
455
+ body.theme-custom .mermaid-preview svg .git text,
456
+ body.theme-custom .mermaid-preview svg .git .branchLabel text {
457
+ fill: var(--mermaid-label-text) !important;
458
+ }
459
+
460
+ /* ================================================================
461
+ 19. 用户旅程图 (User Journey)
462
+ ================================================================ */
463
+ body.theme-custom .mermaid-preview svg .journey .task rect {
464
+ stroke: var(--mermaid-node-stroke);
465
+ }
466
+
467
+ body.theme-custom .mermaid-preview svg .journey text {
468
+ fill: var(--mermaid-label-text) !important;
469
+ }
470
+
471
+ /* ================================================================
472
+ 20. 时间线 (Timeline)
473
+ ================================================================ */
474
+ body.theme-custom .mermaid-preview svg .timeline rect {
475
+ stroke: var(--mermaid-node-stroke);
476
+ }
477
+
478
+ body.theme-custom .mermaid-preview svg .timeline text {
479
+ fill: var(--mermaid-label-text) !important;
480
+ }
481
+
482
+ /* ================================================================
483
+ 21. C4 架构图
484
+ ================================================================ */
485
+ body.theme-custom .mermaid-preview svg .c4 .person rect,
486
+ body.theme-custom .mermaid-preview svg .c4 .person path,
487
+ body.theme-custom .mermaid-preview svg .c4 .system rect,
488
+ body.theme-custom .mermaid-preview svg .c4 .system path,
489
+ body.theme-custom .mermaid-preview svg .c4 .container rect,
490
+ body.theme-custom .mermaid-preview svg .c4 .container path,
491
+ body.theme-custom .mermaid-preview svg .c4 .boundary rect,
492
+ body.theme-custom .mermaid-preview svg .c4 .boundary path {
493
+ stroke: var(--mermaid-node-stroke);
494
+ }
495
+
496
+ body.theme-custom .mermaid-preview svg .c4 text,
497
+ body.theme-custom .mermaid-preview svg .c4 span {
498
+ fill: var(--mermaid-label-text) !important;
499
+ color: var(--mermaid-label-text) !important;
500
+ }
501
+
502
+ /* ── 人物节点 (Person) ── */
503
+ body.theme-custom .mermaid-preview svg .person rect,
504
+ body.theme-custom .mermaid-preview svg .person path {
505
+ stroke: var(--mermaid-person-stroke);
506
+ }
507
+
508
+ body.theme-custom .mermaid-preview svg .person-man text {
509
+ fill: #FFFFFF !important;
510
+ }
511
+
512
+ body.theme-custom .mermaid-preview svg .person-man span {
513
+ color: #FFFFFF !important;
514
+ }
515
+
516
+ /* ================================================================
517
+ 22. 四象限图 (Quadrant Chart)
518
+ ================================================================ */
519
+ body.theme-custom .mermaid-preview svg .quadrant rect {
520
+ stroke: var(--mermaid-node-stroke);
521
+ }
522
+
523
+ body.theme-custom .mermaid-preview svg .quadrant text,
524
+ body.theme-custom .mermaid-preview svg .quadrant .titleText {
525
+ fill: var(--mermaid-title-text) !important;
526
+ }
527
+
528
+ body.theme-custom .mermaid-preview svg .quadrant .axis text {
529
+ fill: var(--mermaid-axis-text) !important;
530
+ }
531
+
532
+ body.theme-custom .mermaid-preview svg .quadrant .axis line,
533
+ body.theme-custom .mermaid-preview svg .quadrant .axis path {
534
+ stroke: var(--mermaid-edge-stroke);
535
+ }
536
+
537
+ body.theme-custom .mermaid-preview svg .quadrant .point {
538
+ fill: var(--mermaid-highlight);
539
+ stroke: var(--mermaid-node-stroke);
540
+ }
541
+
542
+ /* ================================================================
543
+ 23. XY Chart / 柱状图
544
+ ================================================================ */
545
+ body.theme-custom .mermaid-preview svg .xychart .axis text {
546
+ fill: var(--mermaid-axis-text) !important;
547
+ }
548
+
549
+ body.theme-custom .mermaid-preview svg .xychart .axis line,
550
+ body.theme-custom .mermaid-preview svg .xychart .axis path {
551
+ stroke: var(--mermaid-edge-stroke);
552
+ }
553
+
554
+ body.theme-custom .mermaid-preview svg .xychart .plot rect {
555
+ stroke: var(--mermaid-node-stroke);
556
+ }
557
+
558
+ body.theme-custom .mermaid-preview svg .xychart .plot line {
559
+ stroke: var(--mermaid-edge-stroke);
560
+ }
561
+
562
+ body.theme-custom .mermaid-preview svg .xychart .titleText {
563
+ fill: var(--mermaid-title-text) !important;
564
+ }
565
+
566
+ /* ================================================================
567
+ 24. Sankey 图
568
+ ================================================================ */
569
+ body.theme-custom .mermaid-preview svg .sankey .link {
570
+ stroke: var(--mermaid-edge-stroke);
571
+ }
572
+
573
+ body.theme-custom .mermaid-preview svg .sankey text {
574
+ fill: var(--mermaid-label-text) !important;
575
+ }
576
+
577
+ /* ================================================================
578
+ 25. 打印样式
579
+ ================================================================ */
580
+ @media print {
581
+ body.theme-custom .mermaid-block,
582
+ body.theme-custom .mermaid-preview,
583
+ .md-diagram-panel.md-mermaid {
584
+ background: #fafafa !important;
585
+ border: 1px solid #ddd !important;
586
+ }
587
+
588
+ body.theme-custom .mermaid-preview svg * {
589
+ -webkit-print-color-adjust: exact !important;
590
+ print-color-adjust: exact !important;
591
+ }
592
+ }