@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.
- package/.trae/specs/optimize-theme-loading/checklist.md +20 -0
- package/.trae/specs/optimize-theme-loading/spec.md +103 -0
- package/.trae/specs/optimize-theme-loading/tasks.md +40 -0
- package/CHANGELOG.md +323 -0
- package/CLAUDE.md +56 -0
- package/README.md +422 -26
- package/README_CN.md +480 -28
- package/android/app/build/.npmkeep +0 -0
- package/android/app/build.gradle +76 -0
- package/android/app/capacitor.build.gradle +24 -0
- package/android/app/proguard-rules.pro +21 -0
- package/android/app/release.keystore +0 -0
- package/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
- package/android/app/src/main/AndroidManifest.xml +64 -0
- package/android/app/src/main/java/cn/bytechain/colamd/MainActivity.java +180 -0
- package/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
- package/android/app/src/main/res/drawable/splash.png +0 -0
- package/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
- package/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
- package/android/app/src/main/res/layout/activity_main.xml +12 -0
- package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
- package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
- package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
- package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
- package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
- package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
- package/android/app/src/main/res/values/strings.xml +7 -0
- package/android/app/src/main/res/values/styles.xml +22 -0
- package/android/app/src/main/res/xml/file_paths.xml +5 -0
- package/android/app/src/main/res/xml/network_security_config.xml +8 -0
- package/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
- package/android/build.gradle +29 -0
- package/android/capacitor.settings.gradle +21 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/gradle.properties +22 -0
- package/android/gradlew +248 -0
- package/android/gradlew.bat +92 -0
- package/android/settings.gradle +5 -0
- package/android/variables.gradle +16 -0
- package/bytechain.cn-colamd-1.5.1-beta.2.tgz +0 -0
- package/capacitor.config.js +29 -0
- package/capacitor.config.ts +30 -0
- package/demo.md +191 -484
- package/dist/main/index.js +77 -46
- package/dist/renderer/assets/{arc-tTbbM8LO.js → arc-CPdeInCG.js} +1 -1
- package/dist/renderer/assets/{architectureDiagram-3BPJPVTR-CEgYow6c.js → architectureDiagram-3BPJPVTR-BAbnaR9G.js} +4 -3
- package/dist/renderer/assets/{blockDiagram-GPEHLZMM-LHyVtPwW.js → blockDiagram-GPEHLZMM-CYSWjnJg.js} +5 -4
- package/dist/renderer/assets/{c4Diagram-AAUBKEIU-C1P1eJrf.js → c4Diagram-AAUBKEIU-Rb1tstnr.js} +3 -2
- package/dist/renderer/assets/{channel-upve91Tq.js → channel-DpG2A6fE.js} +1 -1
- package/dist/renderer/assets/{chunk-2J33WTMH-lag2vhq9.js → chunk-2J33WTMH-DFc0Jxy_.js} +1 -1
- package/dist/renderer/assets/{chunk-4BX2VUAB-BXJ8Ggh-.js → chunk-4BX2VUAB-BhRxDTNn.js} +1 -1
- package/dist/renderer/assets/{chunk-55IACEB6-CiBpxRa1.js → chunk-55IACEB6-DEgMVBk8.js} +1 -1
- package/dist/renderer/assets/{chunk-727SXJPM-ODeKQFXC.js → chunk-727SXJPM-bjBIfiz8.js} +5 -5
- package/dist/renderer/assets/{chunk-AQP2D5EJ-BK7xJolB.js → chunk-AQP2D5EJ-DwQMzTzD.js} +3 -3
- package/dist/renderer/assets/{chunk-FMBD7UC4-BxpCZPtz.js → chunk-FMBD7UC4-CkphwJzs.js} +1 -1
- package/dist/renderer/assets/{chunk-ND2GUHAM-CqqaU9Ue.js → chunk-ND2GUHAM-oU09z4y4.js} +1 -1
- package/dist/renderer/assets/{chunk-QZHKN3VN-Biq_K124.js → chunk-QZHKN3VN-rCbVuPBn.js} +1 -1
- package/dist/renderer/assets/{classDiagram-v2-Q7XG4LA2-Cq95X99o.js → classDiagram-4FO5ZUOK-DGS2faoM.js} +7 -6
- package/dist/renderer/assets/{classDiagram-4FO5ZUOK-Cq95X99o.js → classDiagram-v2-Q7XG4LA2-DGS2faoM.js} +7 -6
- package/dist/renderer/assets/{cose-bilkent-S5V4N54A-XasiD0bu.js → cose-bilkent-S5V4N54A-iqY6-EwA.js} +2 -1
- package/dist/renderer/assets/{dagre-BM42HDAG-Nq84Gfx4.js → dagre-BM42HDAG-5t3X5sDa.js} +4 -3
- package/dist/renderer/assets/{diagram-2AECGRRQ-DwuB1GWt.js → diagram-2AECGRRQ-DzHiYDPh.js} +4 -3
- package/dist/renderer/assets/{diagram-5GNKFQAL-C2tgeI1h.js → diagram-5GNKFQAL-BiNv6Keq.js} +5 -4
- package/dist/renderer/assets/{diagram-KO2AKTUF-D5KzjNBc.js → diagram-KO2AKTUF-ClzeDG6f.js} +4 -3
- package/dist/renderer/assets/{diagram-LMA3HP47-C12xHS1c.js → diagram-LMA3HP47-CGkw7wII.js} +4 -3
- package/dist/renderer/assets/{diagram-OG6HWLK6-CnxI9oEa.js → diagram-OG6HWLK6-Dl-Hyk1_.js} +5 -4
- package/dist/renderer/assets/{erDiagram-TEJ5UH35-D_uPaKwn.js → erDiagram-TEJ5UH35-BxUN79Qb.js} +5 -4
- package/dist/renderer/assets/{flowDiagram-I6XJVG4X-B6q_1-tE.js → flowDiagram-I6XJVG4X-CzFk-KNI.js} +7 -6
- package/dist/renderer/assets/{ganttDiagram-6RSMTGT7-CFo7ifF9.js → ganttDiagram-6RSMTGT7-C2xl6Igx.js} +3 -2
- package/dist/renderer/assets/{gitGraphDiagram-PVQCEYII-WSexHTnq.js → gitGraphDiagram-PVQCEYII-_fn7XCa7.js} +5 -4
- package/dist/renderer/assets/{graph-DyX_9f6d.js → graph-CDoHYrHm.js} +1 -1
- package/dist/renderer/assets/index-B4uDgADr.js +530 -0
- package/dist/renderer/assets/index-CBcVpA3d.js +30 -0
- package/dist/renderer/assets/index-CGj1spkU.js +27 -0
- package/dist/renderer/assets/{index-dyHEFYvY.css → index-CeFpoCKV.css} +443 -400
- package/dist/renderer/assets/index-D4CPFkph.js +9 -0
- package/dist/renderer/assets/{index-DW7LS8C1.js → index-DAlXyxzt.js} +1183 -346
- package/dist/renderer/assets/index-DxOzbfR-.js +110 -0
- package/dist/renderer/assets/index-Y89U1ptl.js +9 -0
- package/dist/renderer/assets/{infoDiagram-5YYISTIA-DaeJdLRq.js → infoDiagram-5YYISTIA-DL6XIxLz.js} +3 -2
- package/dist/renderer/assets/{ishikawaDiagram-YF4QCWOH-DDCZc35f.js → ishikawaDiagram-YF4QCWOH-BUZLjRo-.js} +2 -1
- package/dist/renderer/assets/{journeyDiagram-JHISSGLW-BEdmpAgl.js → journeyDiagram-JHISSGLW-C4rH_mQM.js} +5 -4
- package/dist/renderer/assets/{kanban-definition-UN3LZRKU-BEFtQcFb.js → kanban-definition-UN3LZRKU-DRbrBcWV.js} +3 -2
- package/dist/renderer/assets/{layout-CAJgQHdw.js → layout-DZl4n4qu.js} +2 -2
- package/dist/renderer/assets/{linear-B2ggJ8Am.js → linear-B0Krxg21.js} +1 -1
- package/dist/renderer/assets/{mindmap-definition-RKZ34NQL-DSxVgHB5.js → mindmap-definition-RKZ34NQL-DdmPsWrn.js} +4 -3
- package/dist/renderer/assets/{pieDiagram-4H26LBE5-CwYoJBuL.js → pieDiagram-4H26LBE5-BPZLqwG0.js} +5 -4
- package/dist/renderer/assets/preload-helper-tXtZnHb0.js +88 -0
- package/dist/renderer/assets/{quadrantDiagram-W4KKPZXB-CST9Fvg9.js → quadrantDiagram-W4KKPZXB-Dr-oWRk9.js} +3 -2
- package/dist/renderer/assets/{requirementDiagram-4Y6WPE33-DtrH52jS.js → requirementDiagram-4Y6WPE33-B6QZd0lo.js} +4 -3
- package/dist/renderer/assets/{sankeyDiagram-5OEKKPKP-ca1tPzJ_.js → sankeyDiagram-5OEKKPKP-Cyl9ojEt.js} +2 -1
- package/dist/renderer/assets/{sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js → sequenceDiagram-3UESZ5HK-D48Yr9T6.js} +4 -3
- package/dist/renderer/assets/{stateDiagram-AJRCARHV-Bha2QoNB.js → stateDiagram-AJRCARHV-qyb8ETsa.js} +7 -6
- package/dist/renderer/assets/{stateDiagram-v2-BHNVJYJU-DWgFUYu1.js → stateDiagram-v2-BHNVJYJU-DmDOyyrJ.js} +5 -4
- package/dist/renderer/assets/{timeline-definition-PNZ67QCA-C3h_-OTj.js → timeline-definition-PNZ67QCA-C-KQxTi1.js} +3 -2
- package/dist/renderer/assets/{vennDiagram-CIIHVFJN-DFzjSrZi.js → vennDiagram-CIIHVFJN-BdaZlnH-.js} +2 -1
- package/dist/renderer/assets/{wardley-L42UT6IY-Cx-VbqoS.js → wardley-L42UT6IY-b-_GPpqL.js} +1 -1
- package/dist/renderer/assets/{wardleyDiagram-YWT4CUSO-S2D9XqX6.js → wardleyDiagram-YWT4CUSO-B2hBE-EE.js} +4 -3
- package/dist/renderer/assets/web-BKE0SH0E.js +36 -0
- package/dist/renderer/assets/web-CBsFp24u.js +564 -0
- package/dist/renderer/assets/web-Dc8YgoHP.js +24 -0
- package/dist/renderer/assets/web-TfDzToU7.js +58 -0
- package/dist/renderer/assets/{xychartDiagram-2RQKCTM6-Cfxigbts.js → xychartDiagram-2RQKCTM6-CSvswDTY.js} +3 -2
- package/dist/renderer/index.html +62 -3
- package/docs/academic-demo.md +566 -0
- package/docs/demo.html +748 -0
- package/docs/demo.md +546 -0
- package/docs/demo.pdf +0 -0
- package/docs/theme-paradigm.md +658 -0
- package/electron-builder.yml +7 -0
- package/electron.vite.config.js +31 -0
- package/electron.vite.config.ts +1 -1
- package/ios/App/App/AppDelegate.swift +49 -0
- package/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
- package/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- package/ios/App/App/Assets.xcassets/Contents.json +6 -0
- package/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
- package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
- package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
- package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
- package/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
- package/ios/App/App/Base.lproj/Main.storyboard +19 -0
- package/ios/App/App/Info.plist +49 -0
- package/ios/App/App.xcodeproj/project.pbxproj +408 -0
- package/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/App/Podfile +28 -0
- package/package.json +23 -3
- package/resources/templates/slides/template-forest-ink.html +540 -0
- package/scripts/generate-icons.js +102 -0
- package/src/main/index.ts +87 -63
- package/src/preload/index.d.ts +51 -0
- package/src/preload/index.js +70 -0
- package/src/renderer/capacitor-api.ts +713 -0
- package/src/renderer/editor/editor.ts +87 -4
- package/src/renderer/editor/plugins/index.ts +24 -32
- package/src/renderer/editor/plugins/math-plugin.ts +1 -1
- package/src/renderer/editor/plugins/mermaid-plugin-custom.css +13 -398
- package/src/renderer/editor/plugins/mermaid-plugin.ts +62 -71
- package/src/renderer/editor/plugins/themes/base/dark.css +23 -0
- package/src/renderer/editor/plugins/themes/base/elegant.css +32 -0
- package/src/renderer/editor/plugins/themes/base/light.css +20 -0
- package/src/renderer/editor/plugins/themes/base/newsprint.css +27 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/academic.css +43 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/dark.css +20 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/elegant.css +24 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/light.css +21 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/newsprint.css +26 -0
- package/src/renderer/editor/plugins/themes/components/mermaid/variables.css +592 -0
- package/src/renderer/editor/plugins/themes/foundation.css +143 -0
- package/src/renderer/editor/plugins/themes/theme-manager.ts +92 -0
- package/src/renderer/env.d.ts +4 -1
- package/src/renderer/index.html +59 -1
- package/src/renderer/main.ts +432 -57
- package/src/renderer/mobile.css +429 -0
- package/themes/README.md +3 -0
- package/themes/academic-paper.css +1321 -0
- package/themes/elegant.css +14 -7
- package/themes/forest-ink.css +664 -0
- package/themes/pixso-design.css +1261 -0
- package/themes/swiss-design.css +596 -0
- package/themes/template.css +498 -0
- package/tsconfig.main.json +1 -0
- package/tsconfig.main.tsbuildinfo +1 -0
- package/tsconfig.preload.json +1 -0
- package/tsconfig.preload.tsbuildinfo +1 -0
- package/tsconfig.renderer.json +1 -0
- package/tsconfig.renderer.tsbuildinfo +1 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/.trae/documents/fix-mermaid-colors-and-sankey.md +0 -50
- package/src/renderer/themes/theme-manager.ts +0 -40
- /package/src/renderer/{themes → editor/plugins/themes}/base.css +0 -0
|
@@ -10,9 +10,22 @@ import './mermaid-plugin-dark.css'
|
|
|
10
10
|
import './mermaid-plugin-elegant.css'
|
|
11
11
|
import './mermaid-plugin-newsprint.css'
|
|
12
12
|
import './mermaid-plugin-custom.css'
|
|
13
|
+
// import './themes/components/mermaid/variables.css'
|
|
13
14
|
|
|
14
15
|
;(window as any).mermaid = mermaid
|
|
15
16
|
|
|
17
|
+
// Track pending mermaid render promises for export synchronization
|
|
18
|
+
const pendingRenders = new Set<Promise<void>>()
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Wait for all currently pending mermaid render() calls to settle.
|
|
22
|
+
* Called before PDF/HTML export to ensure all diagrams are rendered.
|
|
23
|
+
*/
|
|
24
|
+
export function awaitAllMermaidRenders(): Promise<void> {
|
|
25
|
+
const promises = Array.from(pendingRenders)
|
|
26
|
+
return Promise.allSettled(promises).then(() => {})
|
|
27
|
+
}
|
|
28
|
+
|
|
16
29
|
function getMermaidTheme(): string {
|
|
17
30
|
const cls = document.body.className
|
|
18
31
|
if (cls.includes('theme-dark')) return 'dark'
|
|
@@ -25,19 +38,23 @@ function getMermaidTheme(): string {
|
|
|
25
38
|
return 'default'
|
|
26
39
|
}
|
|
27
40
|
|
|
28
|
-
function
|
|
29
|
-
|
|
41
|
+
function getCustomMermaidCSS(): CSSStyleDeclaration {
|
|
42
|
+
return getComputedStyle(document.body)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function readCustomVar(style: CSSStyleDeclaration, name: string, fallback: string): string {
|
|
30
46
|
return style.getPropertyValue(name).trim() || fallback
|
|
31
47
|
}
|
|
32
48
|
|
|
33
49
|
function getCustomMermaidFontSize(): number {
|
|
34
|
-
const raw =
|
|
50
|
+
const raw = getCustomMermaidCSS().getPropertyValue('--mermaid-font-size').trim()
|
|
35
51
|
const n = parseInt(raw, 10)
|
|
36
52
|
return Number.isFinite(n) && n > 0 ? n : 12
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
function getCustomMermaidThemeVariables(): Record<string, string> {
|
|
40
|
-
const
|
|
56
|
+
const style = getCustomMermaidCSS()
|
|
57
|
+
const v = (name: string, fallback: string) => readCustomVar(style, name, fallback)
|
|
41
58
|
const baseFont = '-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif'
|
|
42
59
|
const font = v('--mermaid-font-family', baseFont)
|
|
43
60
|
const darkMode = v('--mermaid-dark-mode', 'false')
|
|
@@ -45,7 +62,7 @@ function getCustomMermaidThemeVariables(): Record<string, string> {
|
|
|
45
62
|
darkMode,
|
|
46
63
|
background: v('--mermaid-background', v('--bg-color', '#ffffff')),
|
|
47
64
|
primaryColor: v('--mermaid-primary-color', v('--code-block-bg', '#f6f8fa')),
|
|
48
|
-
primaryBorderColor: v('--mermaid-
|
|
65
|
+
primaryBorderColor: v('--mermaid-node-stroke', v('--border-color', '#d0d7de')),
|
|
49
66
|
primaryTextColor: v('--mermaid-primary-text-color', v('--text-color', '#24292f')),
|
|
50
67
|
secondaryColor: v('--mermaid-secondary-color', v('--code-bg', '#f6f8fa')),
|
|
51
68
|
secondaryBorderColor: v('--mermaid-secondary-border-color', v('--border-color', '#d0d7de')),
|
|
@@ -53,21 +70,21 @@ function getCustomMermaidThemeVariables(): Record<string, string> {
|
|
|
53
70
|
tertiaryColor: v('--mermaid-tertiary-color', v('--bg-color', '#ffffff')),
|
|
54
71
|
tertiaryBorderColor: v('--mermaid-tertiary-border-color', v('--border-color', '#d0d7de')),
|
|
55
72
|
tertiaryTextColor: v('--mermaid-tertiary-text-color', v('--text-color', '#24292f')),
|
|
56
|
-
lineColor: v('--mermaid-
|
|
57
|
-
textColor: v('--mermaid-text
|
|
73
|
+
lineColor: v('--mermaid-edge-stroke', v('--border-color', '#d0d7de')),
|
|
74
|
+
textColor: v('--mermaid-label-text', v('--text-color', '#24292f')),
|
|
58
75
|
mainBkg: v('--mermaid-main-bkg', v('--code-block-bg', '#f6f8fa')),
|
|
59
76
|
secondBkg: v('--mermaid-second-bkg', v('--code-bg', '#f6f8fa')),
|
|
60
77
|
mainContrastColor: v('--mermaid-primary-text-color', v('--text-color', '#24292f')),
|
|
61
78
|
labelBackground: v('--mermaid-label-background', v('--code-block-bg', '#f6f8fa')),
|
|
62
79
|
labelTextColor: v('--mermaid-label-text-color', v('--text-color', '#24292f')),
|
|
63
|
-
nodeBorder: v('--mermaid-node-
|
|
80
|
+
nodeBorder: v('--mermaid-node-stroke', v('--border-color', '#d0d7de')),
|
|
64
81
|
nodeBkg: v('--mermaid-node-bkg', v('--code-block-bg', '#f6f8fa')),
|
|
65
82
|
clusterBkg: v('--mermaid-cluster-bkg', v('--code-bg', '#f6f8fa')),
|
|
66
|
-
clusterBorder: v('--mermaid-cluster-
|
|
67
|
-
defaultLinkColor: v('--mermaid-
|
|
83
|
+
clusterBorder: v('--mermaid-cluster-stroke', v('--border-color', '#d0d7de')),
|
|
84
|
+
defaultLinkColor: v('--mermaid-edge-stroke', v('--border-color', '#d0d7de')),
|
|
68
85
|
edgeLabelBackground: v('--mermaid-edge-label-background', v('--code-block-bg', '#f6f8fa')),
|
|
69
|
-
arrowheadColor: v('--mermaid-
|
|
70
|
-
personBorder: v('--mermaid-person-
|
|
86
|
+
arrowheadColor: v('--mermaid-edge-stroke', v('--border-color', '#d0d7de')),
|
|
87
|
+
personBorder: v('--mermaid-person-stroke', v('--border-color', '#d0d7de')),
|
|
71
88
|
personBkg: v('--mermaid-person-bkg', v('--code-block-bg', '#f6f8fa')),
|
|
72
89
|
fontFamily: font,
|
|
73
90
|
cScale0: v('--mermaid-cscale0', '#2d5f8a'),
|
|
@@ -87,7 +104,8 @@ function getCustomMermaidThemeVariables(): Record<string, string> {
|
|
|
87
104
|
}
|
|
88
105
|
|
|
89
106
|
function getCustomMermaidC4Config(): Record<string, string> {
|
|
90
|
-
const
|
|
107
|
+
const style = getCustomMermaidCSS()
|
|
108
|
+
const v = (name: string, fallback: string) => readCustomVar(style, name, fallback)
|
|
91
109
|
const baseFont = '-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif'
|
|
92
110
|
const font = v('--mermaid-font-family', baseFont)
|
|
93
111
|
return {
|
|
@@ -98,45 +116,45 @@ function getCustomMermaidC4Config(): Record<string, string> {
|
|
|
98
116
|
boundaryFontFamily: font,
|
|
99
117
|
messageFontFamily: font,
|
|
100
118
|
person_bg_color: v('--mermaid-c4-person-bg', '#2d5f8a'),
|
|
101
|
-
person_border_color: v('--mermaid-c4-person-
|
|
119
|
+
person_border_color: v('--mermaid-c4-person-stroke', '#4a7aaa'),
|
|
102
120
|
external_person_bg_color: v('--mermaid-c4-ext-person-bg', '#4a5568'),
|
|
103
|
-
external_person_border_color: v('--mermaid-c4-ext-person-
|
|
121
|
+
external_person_border_color: v('--mermaid-c4-ext-person-stroke', '#6b7a8a'),
|
|
104
122
|
system_bg_color: v('--mermaid-c4-system-bg', '#3d7a5a'),
|
|
105
|
-
system_border_color: v('--mermaid-c4-system-
|
|
123
|
+
system_border_color: v('--mermaid-c4-system-stroke', '#5a9a7a'),
|
|
106
124
|
system_db_bg_color: v('--mermaid-c4-system-bg', '#3d7a5a'),
|
|
107
|
-
system_db_border_color: v('--mermaid-c4-system-
|
|
125
|
+
system_db_border_color: v('--mermaid-c4-system-stroke', '#5a9a7a'),
|
|
108
126
|
system_queue_bg_color: v('--mermaid-c4-system-bg', '#3d7a5a'),
|
|
109
|
-
system_queue_border_color: v('--mermaid-c4-system-
|
|
127
|
+
system_queue_border_color: v('--mermaid-c4-system-stroke', '#5a9a7a'),
|
|
110
128
|
external_system_bg_color: v('--mermaid-c4-ext-system-bg', '#6b4a7a'),
|
|
111
|
-
external_system_border_color: v('--mermaid-c4-ext-system-
|
|
129
|
+
external_system_border_color: v('--mermaid-c4-ext-system-stroke', '#8a6a9a'),
|
|
112
130
|
external_system_db_bg_color: v('--mermaid-c4-ext-system-bg', '#6b4a7a'),
|
|
113
|
-
external_system_db_border_color: v('--mermaid-c4-ext-system-
|
|
131
|
+
external_system_db_border_color: v('--mermaid-c4-ext-system-stroke', '#8a6a9a'),
|
|
114
132
|
external_system_queue_bg_color: v('--mermaid-c4-ext-system-bg', '#6b4a7a'),
|
|
115
|
-
external_system_queue_border_color: v('--mermaid-c4-ext-system-
|
|
133
|
+
external_system_queue_border_color: v('--mermaid-c4-ext-system-stroke', '#8a6a9a'),
|
|
116
134
|
container_bg_color: v('--mermaid-c4-container-bg', '#8a6b3c'),
|
|
117
|
-
container_border_color: v('--mermaid-c4-container-
|
|
135
|
+
container_border_color: v('--mermaid-c4-container-stroke', '#aa8a5c'),
|
|
118
136
|
container_db_bg_color: v('--mermaid-c4-container-bg', '#8a6b3c'),
|
|
119
|
-
container_db_border_color: v('--mermaid-c4-container-
|
|
137
|
+
container_db_border_color: v('--mermaid-c4-container-stroke', '#aa8a5c'),
|
|
120
138
|
container_queue_bg_color: v('--mermaid-c4-container-bg', '#8a6b3c'),
|
|
121
|
-
container_queue_border_color: v('--mermaid-c4-container-
|
|
139
|
+
container_queue_border_color: v('--mermaid-c4-container-stroke', '#aa8a5c'),
|
|
122
140
|
external_container_bg_color: v('--mermaid-c4-ext-container-bg', '#5a5a6a'),
|
|
123
|
-
external_container_border_color: v('--mermaid-c4-ext-container-
|
|
141
|
+
external_container_border_color: v('--mermaid-c4-ext-container-stroke', '#7a7a8a'),
|
|
124
142
|
external_container_db_bg_color: v('--mermaid-c4-ext-container-bg', '#5a5a6a'),
|
|
125
|
-
external_container_db_border_color: v('--mermaid-c4-ext-container-
|
|
143
|
+
external_container_db_border_color: v('--mermaid-c4-ext-container-stroke', '#7a7a8a'),
|
|
126
144
|
external_container_queue_bg_color: v('--mermaid-c4-ext-container-bg', '#5a5a6a'),
|
|
127
|
-
external_container_queue_border_color: v('--mermaid-c4-ext-container-
|
|
145
|
+
external_container_queue_border_color: v('--mermaid-c4-ext-container-stroke', '#7a7a8a'),
|
|
128
146
|
component_bg_color: v('--mermaid-c4-component-bg', '#3c7a6b'),
|
|
129
|
-
component_border_color: v('--mermaid-c4-component-
|
|
147
|
+
component_border_color: v('--mermaid-c4-component-stroke', '#5c9a8b'),
|
|
130
148
|
component_db_bg_color: v('--mermaid-c4-component-bg', '#3c7a6b'),
|
|
131
|
-
component_db_border_color: v('--mermaid-c4-component-
|
|
149
|
+
component_db_border_color: v('--mermaid-c4-component-stroke', '#5c9a8b'),
|
|
132
150
|
component_queue_bg_color: v('--mermaid-c4-component-bg', '#3c7a6b'),
|
|
133
|
-
component_queue_border_color: v('--mermaid-c4-component-
|
|
151
|
+
component_queue_border_color: v('--mermaid-c4-component-stroke', '#5c9a8b'),
|
|
134
152
|
external_component_bg_color: v('--mermaid-c4-ext-component-bg', '#6a6a6a'),
|
|
135
|
-
external_component_border_color: v('--mermaid-c4-ext-component-
|
|
153
|
+
external_component_border_color: v('--mermaid-c4-ext-component-stroke', '#8a8a8a'),
|
|
136
154
|
external_component_db_bg_color: v('--mermaid-c4-ext-component-bg', '#6a6a6a'),
|
|
137
|
-
external_component_db_border_color: v('--mermaid-c4-ext-component-
|
|
155
|
+
external_component_db_border_color: v('--mermaid-c4-ext-component-stroke', '#8a8a8a'),
|
|
138
156
|
external_component_queue_bg_color: v('--mermaid-c4-ext-component-bg', '#6a6a6a'),
|
|
139
|
-
external_component_queue_border_color: v('--mermaid-c4-ext-component-
|
|
157
|
+
external_component_queue_border_color: v('--mermaid-c4-ext-component-stroke', '#8a8a8a'),
|
|
140
158
|
}
|
|
141
159
|
}
|
|
142
160
|
|
|
@@ -432,9 +450,8 @@ const mermaidBlockSchema = $nodeSchema('mermaid_block', () => ({
|
|
|
432
450
|
toDOM: (node) => {
|
|
433
451
|
const container = document.createElement('div')
|
|
434
452
|
container.className = 'mermaid-block'
|
|
435
|
-
container.dataset.mermaid = node.attrs.text as string
|
|
436
|
-
|
|
437
453
|
const text = (node.attrs.text as string || '').trim()
|
|
454
|
+
container.dataset.mermaid = text
|
|
438
455
|
|
|
439
456
|
if (node.attrs.mode === 'raw') {
|
|
440
457
|
const el = document.createElement('pre')
|
|
@@ -444,39 +461,7 @@ const mermaidBlockSchema = $nodeSchema('mermaid_block', () => ({
|
|
|
444
461
|
return { dom: el }
|
|
445
462
|
}
|
|
446
463
|
|
|
447
|
-
if (!text) {
|
|
448
|
-
container.innerHTML = '<div class="mermaid-preview"><div class="mermaid-loading">Empty diagram</div></div>'
|
|
449
|
-
return { dom: container }
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
const mermaidLib = (window as any).mermaid
|
|
453
|
-
if (!mermaidLib || typeof mermaidLib.render !== 'function') {
|
|
454
|
-
container.innerHTML = '<div class="mermaid-preview"><div class="mermaid-error">Mermaid not loaded</div></div>'
|
|
455
|
-
return { dom: container }
|
|
456
|
-
}
|
|
457
|
-
|
|
458
464
|
container.innerHTML = '<div class="mermaid-preview"><div class="mermaid-loading">Rendering...</div></div>'
|
|
459
|
-
const id = 'mermaid-' + (++renderCounter)
|
|
460
|
-
try {
|
|
461
|
-
mermaidLib.render(id, text).then((result: { svg: string; bindFunctions?: (el: Element) => void }) => {
|
|
462
|
-
const preview = container.querySelector('.mermaid-preview')
|
|
463
|
-
if (preview) {
|
|
464
|
-
preview.innerHTML = result.svg
|
|
465
|
-
const svg = preview.querySelector('svg') as SVGSVGElement | null
|
|
466
|
-
if (svg) adjustNodeHeights(svg)
|
|
467
|
-
if (result.bindFunctions) result.bindFunctions(container)
|
|
468
|
-
}
|
|
469
|
-
}).catch((e: Error) => {
|
|
470
|
-
const preview = container.querySelector('.mermaid-preview')
|
|
471
|
-
if (preview) {
|
|
472
|
-
const msg = e.message.replace(/&/g, '&').replace(/</g, '<')
|
|
473
|
-
preview.innerHTML = '<div class="mermaid-error">Error: ' + msg + '</div>'
|
|
474
|
-
}
|
|
475
|
-
})
|
|
476
|
-
} catch (e: any) {
|
|
477
|
-
container.innerHTML = '<div class="mermaid-preview"><div class="mermaid-error">' + String(e.message || e) + '</div></div>'
|
|
478
|
-
}
|
|
479
|
-
|
|
480
465
|
return { dom: container }
|
|
481
466
|
},
|
|
482
467
|
parseMarkdown: {
|
|
@@ -532,7 +517,7 @@ function renderMermaidBlock(dom: HTMLElement, node: any, renderIdRef: { current:
|
|
|
532
517
|
dom.innerHTML = '<div class="mermaid-preview"><div class="mermaid-loading">Rendering...</div></div>'
|
|
533
518
|
const id = 'mermaid-' + (++renderCounter)
|
|
534
519
|
|
|
535
|
-
mermaidLib.render(id, text).then((result: { svg: string; bindFunctions?: (el: Element) => void }) => {
|
|
520
|
+
const renderPromise = mermaidLib.render(id, text).then((result: { svg: string; bindFunctions?: (el: Element) => void }) => {
|
|
536
521
|
if (currentRenderId !== renderIdRef.current) return
|
|
537
522
|
const preview = dom.querySelector('.mermaid-preview')
|
|
538
523
|
if (preview) {
|
|
@@ -548,7 +533,8 @@ function renderMermaidBlock(dom: HTMLElement, node: any, renderIdRef: { current:
|
|
|
548
533
|
const msg = e.message.replace(/&/g, '&').replace(/</g, '<')
|
|
549
534
|
preview.innerHTML = '<div class="mermaid-error">Error: ' + msg + '</div>'
|
|
550
535
|
}
|
|
551
|
-
})
|
|
536
|
+
}).finally(() => { pendingRenders.delete(renderPromise) })
|
|
537
|
+
pendingRenders.add(renderPromise)
|
|
552
538
|
}
|
|
553
539
|
|
|
554
540
|
const mermaidBlockView = $view(mermaidBlockSchema, (_ctx): NodeViewConstructor => {
|
|
@@ -649,10 +635,12 @@ export const mermaidPlugin: RendererPlugin = {
|
|
|
649
635
|
const fontSize = isCustom ? getCustomMermaidFontSize() : 14
|
|
650
636
|
mermaid.initialize({
|
|
651
637
|
startOnLoad: false,
|
|
652
|
-
theme: getMermaidTheme(),
|
|
638
|
+
theme: getMermaidTheme() as any,
|
|
653
639
|
themeVariables: getMermaidThemeVariables(),
|
|
654
640
|
c4: getMermaidC4Config(),
|
|
655
641
|
securityLevel: 'loose',
|
|
642
|
+
logLevel: 'error',
|
|
643
|
+
suppressErrorRendering: true,
|
|
656
644
|
fontSize,
|
|
657
645
|
})
|
|
658
646
|
},
|
|
@@ -662,13 +650,16 @@ export const mermaidPlugin: RendererPlugin = {
|
|
|
662
650
|
const fontSize = isCustom ? getCustomMermaidFontSize() : 16
|
|
663
651
|
mermaid.initialize({
|
|
664
652
|
startOnLoad: false,
|
|
665
|
-
theme: getMermaidTheme(),
|
|
653
|
+
theme: getMermaidTheme() as any,
|
|
666
654
|
themeVariables: getMermaidThemeVariables(),
|
|
667
655
|
c4: getMermaidC4Config(),
|
|
668
656
|
securityLevel: 'loose',
|
|
657
|
+
logLevel: 'error',
|
|
658
|
+
suppressErrorRendering: true,
|
|
669
659
|
fontSize,
|
|
670
660
|
})
|
|
671
661
|
},
|
|
662
|
+
ensureRendered: awaitAllMermaidRenders,
|
|
672
663
|
}
|
|
673
664
|
|
|
674
665
|
registerPluginModule({
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Dark 主题变量
|
|
3
|
+
* 依赖:foundation.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-dark {
|
|
6
|
+
--color-bg: #0d1117;
|
|
7
|
+
--color-text: #e6edf3;
|
|
8
|
+
--color-text-muted: #8b949e;
|
|
9
|
+
--color-border: #30363d;
|
|
10
|
+
--color-link: #58a6ff;
|
|
11
|
+
--color-accent: #58a6ff;
|
|
12
|
+
--color-accent-dark: #1f6feb;
|
|
13
|
+
--color-accent-light: rgba(88, 166, 255, 0.15);
|
|
14
|
+
--color-selection-bg: rgba(88, 166, 255, 0.2);
|
|
15
|
+
--code-bg: rgba(110, 118, 129, 0.3);
|
|
16
|
+
--code-block-bg: #161b22;
|
|
17
|
+
--code-block-text: #e6edf3;
|
|
18
|
+
--blockquote-border: #30363d;
|
|
19
|
+
--table-header-bg: #161b22;
|
|
20
|
+
--table-border: #30363d;
|
|
21
|
+
--scrollbar-thumb: #30363d;
|
|
22
|
+
--scrollbar-thumb-hover: #484f58;
|
|
23
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Elegant 主题变量 (典雅暖调)
|
|
3
|
+
* 依赖:foundation.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-elegant {
|
|
6
|
+
--color-bg: #f0edea;
|
|
7
|
+
--color-text: #2c2c2c;
|
|
8
|
+
--color-text-muted: #777;
|
|
9
|
+
--color-border: #d8d3ce;
|
|
10
|
+
--color-link: #c44b2b;
|
|
11
|
+
--color-accent: #c44b2b;
|
|
12
|
+
--color-accent-dark: #a33d22;
|
|
13
|
+
--color-accent-light: #d8d3ce;
|
|
14
|
+
--color-selection-bg: rgba(196, 75, 43, 0.2);
|
|
15
|
+
--code-bg: #e8e4df;
|
|
16
|
+
--code-color: #c44b2b;
|
|
17
|
+
--code-block-bg: #2c2c2c;
|
|
18
|
+
--code-block-text: #e0dcd7;
|
|
19
|
+
--blockquote-bg: #eae6e1;
|
|
20
|
+
--blockquote-border: #c44b2b;
|
|
21
|
+
--blockquote-color: #444;
|
|
22
|
+
--table-header-bg: #eae6e1;
|
|
23
|
+
--table-border: #d8d3ce;
|
|
24
|
+
--scrollbar-thumb: #ccc8c2;
|
|
25
|
+
--scrollbar-thumb-hover: #b5b0aa;
|
|
26
|
+
--hr-color: #d8d3ce;
|
|
27
|
+
|
|
28
|
+
/* Elegant 特有的字体系统 */
|
|
29
|
+
--font-family-base: "LXGW WenKai", "Noto Serif SC", "Source Han Serif SC", "Songti SC", Georgia, "Times New Roman", serif;
|
|
30
|
+
--font-family-heading: var(--font-family-base);
|
|
31
|
+
--line-height-base: 1.9;
|
|
32
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Light 主题变量
|
|
3
|
+
* 依赖:foundation.css
|
|
4
|
+
* 仅包含变量覆盖,无样式选择器
|
|
5
|
+
*/
|
|
6
|
+
body.theme-light, body:not([class*="theme-"]) {
|
|
7
|
+
--color-bg: #ffffff;
|
|
8
|
+
--color-text: #24292f;
|
|
9
|
+
--color-text-muted: #656d76;
|
|
10
|
+
--color-border: #d0d7de;
|
|
11
|
+
--color-link: #0969da;
|
|
12
|
+
--color-accent: #0969da;
|
|
13
|
+
--color-accent-dark: #0550ae;
|
|
14
|
+
--color-accent-light: #ddf4ff;
|
|
15
|
+
--color-selection-bg: rgba(9, 105, 218, 0.15);
|
|
16
|
+
--code-bg: rgba(175, 184, 193, 0.2);
|
|
17
|
+
--code-block-bg: #f6f8fa;
|
|
18
|
+
--blockquote-border: #d0d7de;
|
|
19
|
+
--table-header-bg: #f6f8fa;
|
|
20
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Newsprint 主题变量 (报纸打印风格)
|
|
3
|
+
* 依赖:foundation.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-newsprint {
|
|
6
|
+
--color-bg: #f5f2eb;
|
|
7
|
+
--color-text: #1a1a1a;
|
|
8
|
+
--color-text-muted: #666;
|
|
9
|
+
--color-border: #d4d0c8;
|
|
10
|
+
--color-link: #2c5f8a;
|
|
11
|
+
--color-accent: #2c5f8a;
|
|
12
|
+
--color-accent-dark: #1e4060;
|
|
13
|
+
--color-accent-light: rgba(44, 95, 138, 0.12);
|
|
14
|
+
--color-selection-bg: rgba(44, 95, 138, 0.15);
|
|
15
|
+
--code-bg: rgba(0, 0, 0, 0.05);
|
|
16
|
+
--code-block-bg: #eae6de;
|
|
17
|
+
--blockquote-border: #999;
|
|
18
|
+
--table-header-bg: #eae6de;
|
|
19
|
+
--table-border: #d4d0c8;
|
|
20
|
+
--hr-color: #d4d0c8;
|
|
21
|
+
--scrollbar-thumb: #ccc8c2;
|
|
22
|
+
--scrollbar-thumb-hover: #b5b0aa;
|
|
23
|
+
|
|
24
|
+
/* Newsprint 字体:衬线 */
|
|
25
|
+
--font-family-base: "PT Serif", Georgia, "Times New Roman", "Songti SC", serif;
|
|
26
|
+
--font-family-heading: var(--font-family-base);
|
|
27
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Mermaid Academic 配色方案 (莫兰迪灰系)
|
|
3
|
+
* 依赖:foundation.css → mermaid/variables.css
|
|
4
|
+
* 适用场景:学术论文打印,浅灰度色块 + 深灰边框
|
|
5
|
+
*/
|
|
6
|
+
[data-mermaid-theme="academic"],
|
|
7
|
+
body.theme-custom[data-mermaid-theme="academic"] {
|
|
8
|
+
--mermaid-font-family: "SimHei", "Heiti SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;
|
|
9
|
+
--mermaid-font-size: 9pt;
|
|
10
|
+
--mermaid-node-stroke: #333333;
|
|
11
|
+
--mermaid-node-fill: #E3E3E3;
|
|
12
|
+
--mermaid-node-text: #1a1a1a;
|
|
13
|
+
--mermaid-node-stroke-width: 1px;
|
|
14
|
+
--mermaid-edge-stroke: #333333;
|
|
15
|
+
--mermaid-edge-stroke-width: 1px;
|
|
16
|
+
--mermaid-cluster-stroke: #4a4a4a;
|
|
17
|
+
--mermaid-cluster-fill: #F0F0F0;
|
|
18
|
+
--mermaid-cluster-dasharray: none;
|
|
19
|
+
--mermaid-label-text: #1a1a1a;
|
|
20
|
+
--mermaid-edge-label-bg: #ffffff;
|
|
21
|
+
--mermaid-edge-label-text: #1a1a1a;
|
|
22
|
+
--mermaid-title-text: #1a1a1a;
|
|
23
|
+
--mermaid-axis-text: #555555;
|
|
24
|
+
--mermaid-highlight: #333333;
|
|
25
|
+
--mermaid-background: #ffffff;
|
|
26
|
+
--mermaid-border-color: #cccccc;
|
|
27
|
+
--mermaid-border-radius: 0px;
|
|
28
|
+
--mermaid-label-offset-y: 0px;
|
|
29
|
+
|
|
30
|
+
/* 色板:莫兰迪灰色阶 */
|
|
31
|
+
--mermaid-cscale0: #A8A8A8;
|
|
32
|
+
--mermaid-cscale1: #8C8E90;
|
|
33
|
+
--mermaid-cscale2: #B0B0B0;
|
|
34
|
+
--mermaid-cscale3: #787878;
|
|
35
|
+
--mermaid-cscale4: #9E9E9E;
|
|
36
|
+
--mermaid-cscale5: #949698;
|
|
37
|
+
--mermaid-cscale6: #6E6E6E;
|
|
38
|
+
--mermaid-cscale7: #A0A0A0;
|
|
39
|
+
--mermaid-cscale8: #848688;
|
|
40
|
+
--mermaid-cscale9: #AAAAAA;
|
|
41
|
+
--mermaid-cscale10: #7A7A7C;
|
|
42
|
+
--mermaid-cscale11: #929294;
|
|
43
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Mermaid Dark 配色方案
|
|
3
|
+
* 依赖:foundation.css → mermaid/variables.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-dark {
|
|
6
|
+
--mermaid-node-stroke: #8b949e;
|
|
7
|
+
--mermaid-node-fill: #21262d;
|
|
8
|
+
--mermaid-node-text: #e6edf3;
|
|
9
|
+
--mermaid-edge-stroke: #8b949e;
|
|
10
|
+
--mermaid-cluster-stroke: #30363d;
|
|
11
|
+
--mermaid-cluster-fill: rgba(110, 118, 129, 0.1);
|
|
12
|
+
--mermaid-label-text: #e6edf3;
|
|
13
|
+
--mermaid-edge-label-bg: #161b22;
|
|
14
|
+
--mermaid-edge-label-text: #8b949e;
|
|
15
|
+
--mermaid-title-text: #e6edf3;
|
|
16
|
+
--mermaid-axis-text: #8b949e;
|
|
17
|
+
--mermaid-highlight: #58a6ff;
|
|
18
|
+
--mermaid-background: #161b22;
|
|
19
|
+
--mermaid-border-color: #30363d;
|
|
20
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Mermaid Elegant 配色方案 (典雅暖调)
|
|
3
|
+
* 依赖:foundation.css → mermaid/variables.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-elegant {
|
|
6
|
+
--mermaid-font-family: "LXGW WenKai", "Noto Serif SC", "Source Han Serif SC", "Songti SC", Georgia, serif;
|
|
7
|
+
--mermaid-font-size: 14px;
|
|
8
|
+
--mermaid-node-stroke: #c44b2b;
|
|
9
|
+
--mermaid-node-fill: #eae6e1;
|
|
10
|
+
--mermaid-node-text: #2c2c2c;
|
|
11
|
+
--mermaid-edge-stroke: #999;
|
|
12
|
+
--mermaid-cluster-stroke: #c44b2b;
|
|
13
|
+
--mermaid-cluster-fill: rgba(196, 75, 43, 0.04);
|
|
14
|
+
--mermaid-cluster-dasharray: 4,4;
|
|
15
|
+
--mermaid-label-text: #2c2c2c;
|
|
16
|
+
--mermaid-edge-label-bg: #f7f5f2;
|
|
17
|
+
--mermaid-edge-label-text: #555;
|
|
18
|
+
--mermaid-title-text: #2c2c2c;
|
|
19
|
+
--mermaid-axis-text: #777;
|
|
20
|
+
--mermaid-highlight: #c44b2b;
|
|
21
|
+
--mermaid-background: #f7f5f2;
|
|
22
|
+
--mermaid-border-color: #d8d3ce;
|
|
23
|
+
--mermaid-label-offset-y: -3px;
|
|
24
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Mermaid Light 配色方案
|
|
3
|
+
* 依赖:foundation.css → mermaid/variables.css
|
|
4
|
+
* 覆盖:仅覆盖 Mermaid 相关的颜色变量
|
|
5
|
+
*/
|
|
6
|
+
body.theme-light, body:not([class*="theme-"]) {
|
|
7
|
+
--mermaid-node-stroke: #6366f1;
|
|
8
|
+
--mermaid-node-fill: #e0e7ff;
|
|
9
|
+
--mermaid-node-text: #1e1b4b;
|
|
10
|
+
--mermaid-edge-stroke: #a78bfa;
|
|
11
|
+
--mermaid-cluster-stroke: #8b5cf6;
|
|
12
|
+
--mermaid-cluster-fill: rgba(99, 102, 241, 0.06);
|
|
13
|
+
--mermaid-label-text: #1e1b4b;
|
|
14
|
+
--mermaid-edge-label-bg: #f8f9fb;
|
|
15
|
+
--mermaid-edge-label-text: #374151;
|
|
16
|
+
--mermaid-title-text: #1e1b4b;
|
|
17
|
+
--mermaid-axis-text: #6b7280;
|
|
18
|
+
--mermaid-highlight: #6366f1;
|
|
19
|
+
--mermaid-background: #f8f9fb;
|
|
20
|
+
--mermaid-border-color: #e5e7eb;
|
|
21
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ColaMD 主题系统:Mermaid Newsprint 配色方案 (报纸打印风格)
|
|
3
|
+
* 依赖:foundation.css → mermaid/variables.css
|
|
4
|
+
*/
|
|
5
|
+
body.theme-newsprint {
|
|
6
|
+
--mermaid-font-family: "PT Serif", Georgia, "Times New Roman", "Songti SC", serif;
|
|
7
|
+
--mermaid-font-size: 13px;
|
|
8
|
+
--mermaid-node-stroke: #d4d0c8;
|
|
9
|
+
--mermaid-node-fill: #f5f2eb;
|
|
10
|
+
--mermaid-node-text: #1a1a1a;
|
|
11
|
+
--mermaid-edge-stroke: #999;
|
|
12
|
+
--mermaid-cluster-stroke: #999;
|
|
13
|
+
--mermaid-cluster-fill: rgba(0, 0, 0, 0.03);
|
|
14
|
+
--mermaid-cluster-dasharray: none;
|
|
15
|
+
--mermaid-label-text: #1a1a1a;
|
|
16
|
+
--mermaid-edge-label-bg: #f5f2eb;
|
|
17
|
+
--mermaid-edge-label-text: #666;
|
|
18
|
+
--mermaid-title-text: #1a1a1a;
|
|
19
|
+
--mermaid-axis-text: #999;
|
|
20
|
+
--mermaid-highlight: #2c5f8a;
|
|
21
|
+
--mermaid-background: #ffffff;
|
|
22
|
+
--mermaid-border-color: #d4d0c8;
|
|
23
|
+
--mermaid-border-radius: 0px;
|
|
24
|
+
--mermaid-node-stroke-width: 1px;
|
|
25
|
+
--mermaid-edge-stroke-width: 1px;
|
|
26
|
+
}
|