@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,429 @@
1
+ @media (max-width: 768px) {
2
+ :root {
3
+ --mobile-header-height: 48px;
4
+ }
5
+
6
+ html, body {
7
+ height: 100%;
8
+ overflow: hidden;
9
+ -webkit-text-size-adjust: 100%;
10
+ -webkit-tap-highlight-color: transparent;
11
+ touch-action: manipulation;
12
+ }
13
+
14
+ #titlebar {
15
+ position: fixed;
16
+ top: 0;
17
+ left: 0;
18
+ right: 0;
19
+ height: var(--mobile-header-height);
20
+ z-index: 1000;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ padding: 0 12px;
25
+ background: var(--bg-color, #fff);
26
+ border-bottom: 1px solid var(--border-color, #e0e0e0);
27
+ }
28
+
29
+ #menu-btn {
30
+ -webkit-app-region: no-drag;
31
+ display: flex;
32
+ width: 36px;
33
+ height: 36px;
34
+ border: none;
35
+ background: transparent;
36
+ color: var(--text-color);
37
+ border-radius: 8px;
38
+ align-items: center;
39
+ justify-content: center;
40
+ cursor: pointer;
41
+ padding: 8px;
42
+ transition: background 0.15s;
43
+ }
44
+ #menu-btn:active {
45
+ background: var(--accent-soft, rgba(241,117,45,0.12));
46
+ }
47
+
48
+ #agent-dot {
49
+ width: 10px;
50
+ height: 10px;
51
+ border-radius: 50%;
52
+ background: #ccc;
53
+ }
54
+ #agent-dot.active { background: #f97316; animation: pulse-mobile 1s infinite; }
55
+ #agent-dot.cooldown { background: #22c55e; animation: pulse-mobile 0.3s ease 2; }
56
+
57
+ @keyframes pulse-mobile {
58
+ 0%, 100% { opacity: 1; transform: scale(1); }
59
+ 50% { opacity: 0.6; transform: scale(1.2); }
60
+ }
61
+
62
+ #slides-btn {
63
+ display: none;
64
+ }
65
+
66
+ #mobile-menu {
67
+ display: block;
68
+ position: fixed;
69
+ top: 0;
70
+ left: 0;
71
+ right: 0;
72
+ bottom: 0;
73
+ z-index: 2000;
74
+ pointer-events: none;
75
+ }
76
+
77
+ #mobile-menu.open {
78
+ pointer-events: auto;
79
+ }
80
+
81
+ #menu-overlay {
82
+ position: absolute;
83
+ top: 0;
84
+ left: 0;
85
+ right: 0;
86
+ bottom: 0;
87
+ background: rgba(0, 0, 0, 0.4);
88
+ opacity: 0;
89
+ transition: opacity 0.25s ease;
90
+ }
91
+
92
+ #mobile-menu.open #menu-overlay {
93
+ opacity: 1;
94
+ }
95
+
96
+ #menu-panel {
97
+ position: absolute;
98
+ top: 0;
99
+ left: 0;
100
+ bottom: 0;
101
+ width: min(300px, 80vw);
102
+ background: var(--bg-color, #fff);
103
+ transform: translateX(-100%);
104
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
105
+ display: flex;
106
+ flex-direction: column;
107
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
108
+ overflow-y: auto;
109
+ -webkit-overflow-scrolling: touch;
110
+ }
111
+
112
+ #mobile-menu.open #menu-panel {
113
+ transform: translateX(0);
114
+ }
115
+
116
+ #menu-header {
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: space-between;
120
+ padding: 16px 20px;
121
+ border-bottom: 1px solid var(--border-color, #e0e0e0);
122
+ flex-shrink: 0;
123
+ }
124
+
125
+ #menu-title {
126
+ font-size: 17px;
127
+ font-weight: 700;
128
+ color: var(--text-color);
129
+ }
130
+
131
+ #menu-close-btn {
132
+ width: 32px;
133
+ height: 32px;
134
+ border: none;
135
+ background: transparent;
136
+ color: var(--text-muted);
137
+ border-radius: 8px;
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ cursor: pointer;
142
+ padding: 6px;
143
+ transition: background 0.15s;
144
+ }
145
+ #menu-close-btn:active {
146
+ background: var(--accent-soft, rgba(241,117,45,0.12));
147
+ }
148
+
149
+ #menu-body {
150
+ padding: 8px 0;
151
+ flex: 1;
152
+ overflow-y: auto;
153
+ }
154
+
155
+ .menu-section {
156
+ padding: 4px 0;
157
+ border-bottom: 1px solid var(--border-color, rgba(0,0,0,0.06));
158
+ }
159
+ .menu-section:last-child {
160
+ border-bottom: none;
161
+ }
162
+
163
+ .menu-section-title {
164
+ padding: 8px 20px 4px;
165
+ font-size: 11px;
166
+ font-weight: 600;
167
+ text-transform: uppercase;
168
+ letter-spacing: 0.05em;
169
+ color: var(--text-muted);
170
+ }
171
+
172
+ .menu-item {
173
+ display: block;
174
+ width: 100%;
175
+ padding: 12px 20px;
176
+ border: none;
177
+ background: transparent;
178
+ color: var(--text-color);
179
+ font-size: 15px;
180
+ text-align: left;
181
+ cursor: pointer;
182
+ -webkit-user-select: none;
183
+ user-select: none;
184
+ transition: background 0.12s;
185
+ }
186
+ .menu-item:active {
187
+ background: var(--accent-soft, rgba(241,117,45,0.08));
188
+ }
189
+
190
+ .menu-theme-item,
191
+ .menu-plugin-item {
192
+ display: flex;
193
+ align-items: center;
194
+ justify-content: space-between;
195
+ padding: 12px 20px;
196
+ font-size: 15px;
197
+ color: var(--text-color);
198
+ cursor: pointer;
199
+ -webkit-user-select: none;
200
+ user-select: none;
201
+ transition: background 0.12s;
202
+ }
203
+ .menu-theme-item:active,
204
+ .menu-plugin-item:active {
205
+ background: var(--accent-soft, rgba(241,117,45,0.08));
206
+ }
207
+
208
+ .menu-theme-item.active {
209
+ color: #F1752D;
210
+ font-weight: 600;
211
+ }
212
+
213
+ .menu-plugin-toggle {
214
+ width: 44px;
215
+ height: 26px;
216
+ border-radius: 13px;
217
+ background: var(--border-color, #d0d7de);
218
+ position: relative;
219
+ transition: background 0.2s;
220
+ flex-shrink: 0;
221
+ }
222
+ .menu-plugin-toggle::after {
223
+ content: '';
224
+ position: absolute;
225
+ top: 3px;
226
+ left: 3px;
227
+ width: 20px;
228
+ height: 20px;
229
+ border-radius: 50%;
230
+ background: #fff;
231
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2);
232
+ transition: transform 0.2s;
233
+ }
234
+ .menu-plugin-toggle.on {
235
+ background: #F1752D;
236
+ }
237
+ .menu-plugin-toggle.on::after {
238
+ transform: translateX(18px);
239
+ }
240
+
241
+ #editor {
242
+ position: fixed;
243
+ top: var(--mobile-header-height);
244
+ left: 0;
245
+ right: 0;
246
+ bottom: 0;
247
+ overflow-y: auto;
248
+ overflow-x: hidden;
249
+ -webkit-overflow-scrolling: touch;
250
+ padding: 16px !important;
251
+ padding-bottom: 80px !important;
252
+ }
253
+
254
+ .ProseMirror {
255
+ min-height: calc(100vh - var(--mobile-header-height) - 32px) !important;
256
+ font-size: 16px !important;
257
+ line-height: 1.7 !important;
258
+ padding: 4px 0 !important;
259
+ -webkit-user-select: text;
260
+ user-select: text;
261
+ touch-action: manipulation;
262
+ /* Explicitly set read-write for rich text IME (CJK composition).
263
+ Some Android WebView versions default to plaintext-only which
264
+ downgrades contenteditable and breaks IME composition. */
265
+ -webkit-user-modify: read-write;
266
+ }
267
+
268
+ /* REMOVED: .ProseMirror-focused { -webkit-user-modify: read-write-plaintext-only } */
269
+
270
+ .ProseMirror h1 { font-size: 1.5em !important; margin-top: 0.8em !important; }
271
+ .ProseMirror h2 { font-size: 1.25em !important; margin-top: 0.7em !important; }
272
+ .ProseMirror h3 { font-size: 1.1em !important; }
273
+ .ProseMirror p { margin: 0.4em 0 !important; }
274
+ .ProseMirror pre {
275
+ font-size: 13px !important;
276
+ padding: 12px !important;
277
+ overflow-x: auto !important;
278
+ -webkit-overflow-scrolling: touch;
279
+ }
280
+ .ProseMirror code { font-size: 14px !important; word-break: break-word; }
281
+ .ProseMirror table {
282
+ display: block;
283
+ overflow-x: auto;
284
+ white-space: nowrap;
285
+ }
286
+ .ProseMirror th,
287
+ .ProseMirror td {
288
+ padding: 6px 8px !important;
289
+ font-size: 14px !important;
290
+ }
291
+
292
+ .math-block {
293
+ overflow-x: auto;
294
+ -webkit-overflow-scrolling: touch;
295
+ padding: 12px !important;
296
+ }
297
+
298
+ .mermaid-block {
299
+ overflow-x: auto;
300
+ -webkit-overflow-scrolling: touch;
301
+ padding: 12px !important;
302
+ }
303
+
304
+ .mermaid-preview svg {
305
+ max-width: 100% !important;
306
+ height: auto !important;
307
+ }
308
+
309
+ #source-editor {
310
+ position: fixed;
311
+ top: var(--mobile-header-height);
312
+ left: 0;
313
+ right: 0;
314
+ bottom: 0;
315
+ width: 100% !important;
316
+ height: auto !important;
317
+ border: none !important;
318
+ resize: none !important;
319
+ font-size: 15px !important;
320
+ line-height: 1.6 !important;
321
+ padding: 16px !important;
322
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace !important;
323
+ }
324
+
325
+ .math-inline-raw {
326
+ font-size: 14px !important;
327
+ max-width: 90vw !important;
328
+ }
329
+
330
+ .math-block-raw {
331
+ font-size: 14px !important;
332
+ max-width: 90vw !important;
333
+ }
334
+
335
+ textarea.mermaid-source {
336
+ font-size: 13px !important;
337
+ max-width: 90vw !important;
338
+ }
339
+
340
+ #cola-context-menu {
341
+ position: fixed !important;
342
+ z-index: 9999;
343
+ background: #fff;
344
+ border: 1px solid #ddd;
345
+ border-radius: 8px;
346
+ box-shadow: 0 4px 20px rgba(0,0,0,0.15);
347
+ padding: 6px 0;
348
+ min-width: 160px;
349
+ max-width: 80vw;
350
+ }
351
+
352
+ .cola-menu-item {
353
+ padding: 12px 16px;
354
+ cursor: pointer;
355
+ font-size: 15px;
356
+ color: #333;
357
+ -webkit-user-select: none;
358
+ user-select: none;
359
+ }
360
+
361
+ .cola-menu-item:active {
362
+ background: #f0f0f0;
363
+ }
364
+
365
+ .hidden { display: none !important; }
366
+ .visible { display: block !important; }
367
+ }
368
+
369
+ @media (min-width: 769px) {
370
+ #menu-btn {
371
+ display: none;
372
+ }
373
+
374
+ #mobile-menu {
375
+ display: none;
376
+ }
377
+ }
378
+
379
+ @media (max-width: 480px) {
380
+ .ProseMirror { font-size: 15px !important; }
381
+ .ProseMirror pre { font-size: 12px !important; padding: 10px !important; }
382
+ #editor { padding: 12px !important; }
383
+ #source-editor { padding: 12px !important; font-size: 14px !important; }
384
+ }
385
+
386
+ .safe-area-inset {
387
+ padding-top: env(safe-area-inset-top);
388
+ padding-bottom: env(safe-area-inset-bottom);
389
+ padding-left: env(safe-area-inset-left);
390
+ padding-right: env(safe-area-inset-right);
391
+ }
392
+
393
+ @media print {
394
+ #titlebar,
395
+ #menu-btn,
396
+ #agent-dot,
397
+ #slides-btn,
398
+ #mobile-menu,
399
+ #cola-context-menu,
400
+ .mermaid-error,
401
+ .mermaid-loading,
402
+ .mermaid-source,
403
+ textarea.mermaid-source,
404
+ .math-block-raw,
405
+ .math-inline-raw,
406
+ .hidden {
407
+ display: none !important;
408
+ }
409
+
410
+ #editor {
411
+ position: static !important;
412
+ overflow: visible !important;
413
+ padding: 0 !important;
414
+ }
415
+
416
+ .ProseMirror {
417
+ min-height: auto !important;
418
+ font-size: 14px !important;
419
+ }
420
+
421
+ .mermaid-preview svg {
422
+ max-height: none !important;
423
+ }
424
+
425
+ @page {
426
+ margin: 15mm;
427
+ size: A4;
428
+ }
429
+ }
package/themes/README.md CHANGED
@@ -8,6 +8,9 @@ Download any `.css` file and place it in `~/.colamd/themes/`, or use **Theme > I
8
8
  |-------|-------------|
9
9
  | [elegant.css](elegant.css) | Warm serif theme with terracotta accents and dark code blocks |
10
10
  | [guizang.css](guizang.css) | 古雅沉稳的归藏风格,赭石强调色、松烟墨代码块、宣纸底色 |
11
+ | [forest-ink.css](forest-ink.css) | 森林墨主题,宣纸暖白底、松烟墨绿文字、森林绿强调色(灵感来自 wanhua-ppt Forest Ink 设计规范) |
12
+ | [academic-paper.css](academic-paper.css) | 📄 **学术论文主题(增强版)** — 符合 GB/T 7713 中文学术论文排版规范,黑体(SimHei)标题 + 宋体(SimSun)正文及首行缩进,三线表格式(顶线 + 表头底线 + 底线),10.5pt 字号,打印优化的 Mermaid 图表(直角容器、灰度配色),脚注与参考文献样式,Typora 兼容选择器。完整示例见 [`docs/academic-demo.md`](../docs/academic-demo.md) |
13
+ | [pixso-design.css](pixso-design.css) | 🎨 Pixso 设计主题,现代设计系统风格 |
11
14
 
12
15
  ## Creating Your Own Theme
13
16