docmedown 0.1.1 → 0.1.3

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 (214) hide show
  1. package/README.md +38 -20
  2. package/dist/abnfDiagram-VCTEODGH-CtQBp0Qv.mjs +89 -0
  3. package/dist/abnfDiagram-VCTEODGH-mccrzlD_.js +1 -0
  4. package/dist/arc-DgPKXEdT.mjs +82 -0
  5. package/dist/arc-n7TW7Bis.js +1 -0
  6. package/dist/architecture-7GRP2DOG-B7myQ46f.js +1 -0
  7. package/dist/architecture-7GRP2DOG-Cxj1ussQ.mjs +3 -0
  8. package/dist/architectureDiagram-5GKGNRK7-BdTCu5T3.js +36 -0
  9. package/dist/architectureDiagram-5GKGNRK7-CkgZa-G1.mjs +4154 -0
  10. package/dist/array-CApNbSU9.mjs +6 -0
  11. package/dist/array-DZSRzHA_.js +1 -0
  12. package/dist/blockDiagram-I7D4REHJ-CSYvpxQw.js +129 -0
  13. package/dist/blockDiagram-I7D4REHJ-CYngfPD9.mjs +1922 -0
  14. package/dist/c4Diagram-7LVT6UL2-B-sz5MUK.js +38 -0
  15. package/dist/c4Diagram-7LVT6UL2-DEzxFf2b.mjs +3010 -0
  16. package/dist/channel-LgHproiI.mjs +5 -0
  17. package/dist/channel-yqu0m4cl.js +1 -0
  18. package/dist/chunk-2E4U76K2-BOyeRQsI.js +1 -0
  19. package/dist/chunk-2E4U76K2-CoTrgtfg.mjs +348 -0
  20. package/dist/chunk-2Q5K7J3B-D4EgYPOq.mjs +15 -0
  21. package/dist/chunk-2Q5K7J3B-DhjCNjaM.js +1 -0
  22. package/dist/chunk-4HAMMTFA-GFyfmcSO.js +62 -0
  23. package/dist/chunk-4HAMMTFA-VgWPe1ng.mjs +4188 -0
  24. package/dist/chunk-5VM5RSS4-GINalzIv.js +15 -0
  25. package/dist/chunk-5VM5RSS4-TqxtqrwE.mjs +5 -0
  26. package/dist/chunk-75Z2AOVW-DYouz5MZ.js +2 -0
  27. package/dist/chunk-75Z2AOVW-Dz0Sko9Y.mjs +1330 -0
  28. package/dist/chunk-CLGD4ZFX-C5J-e2io.js +1 -0
  29. package/dist/chunk-CLGD4ZFX-DBkwyMMv.mjs +14 -0
  30. package/dist/chunk-DU6HZSFF-BEQZSmUu.mjs +3836 -0
  31. package/dist/chunk-DU6HZSFF-CWc5ewtb.js +127 -0
  32. package/dist/chunk-F27PBJKO-8jvY_jJK.js +1 -0
  33. package/dist/chunk-F27PBJKO-DFH3sRZG.mjs +61 -0
  34. package/dist/chunk-FOHPRMQF-LRqOLsSw.mjs +21456 -0
  35. package/dist/chunk-FOHPRMQF-tmTlwTeH.js +161 -0
  36. package/dist/chunk-GMAD6QVW-BZeZ4fdb.mjs +1863 -0
  37. package/dist/chunk-GMAD6QVW-DEQiTa0c.js +72 -0
  38. package/dist/chunk-GVQU2GXP-B1D3J05J.mjs +37 -0
  39. package/dist/chunk-GVQU2GXP-CdJIWN41.js +1 -0
  40. package/dist/chunk-IMKFNOWR-BmZb9U1f.mjs +2042 -0
  41. package/dist/chunk-IMKFNOWR-CPJsszGN.js +231 -0
  42. package/dist/chunk-JWPE2WC7-DIKiF5cm.mjs +8 -0
  43. package/dist/chunk-JWPE2WC7-p1fYVdYc.js +1 -0
  44. package/dist/chunk-L3NEJ4N5-TzDiVs78.js +1 -0
  45. package/dist/chunk-L3NEJ4N5-lal8wUID.mjs +245 -0
  46. package/dist/chunk-LNGE3PJU-BQX75wkM.js +34 -0
  47. package/dist/chunk-LNGE3PJU-DJ9JuXV6.mjs +1521 -0
  48. package/dist/chunk-OSK3NFVY-9AWK88m1.mjs +672 -0
  49. package/dist/chunk-OSK3NFVY-CHzvVe8m.js +10 -0
  50. package/dist/chunk-P2QGCYS3-6q3AXPt5.mjs +67 -0
  51. package/dist/chunk-P2QGCYS3-DKZzpRQW.js +1 -0
  52. package/dist/chunk-POPQ4Y6H-Dd7J9tx3.mjs +26 -0
  53. package/dist/chunk-POPQ4Y6H-T5C7wpjf.js +1 -0
  54. package/dist/chunk-PWAF6VOD-BYG76tEe.mjs +275 -0
  55. package/dist/chunk-PWAF6VOD-DxZLuCEw.js +1 -0
  56. package/dist/chunk-SHT3W25Y-B2Wes8jn.mjs +4183 -0
  57. package/dist/chunk-SHT3W25Y-BQjHSn5K.js +168 -0
  58. package/dist/chunk-SVP7TREG-BFMd615E.js +88 -0
  59. package/dist/chunk-SVP7TREG-CynckzeF.mjs +490 -0
  60. package/dist/chunk-TICWLB2K-BfCuoR1V.mjs +3357 -0
  61. package/dist/chunk-TICWLB2K-agcyBfUp.js +206 -0
  62. package/dist/chunk-TLUHSLCS-CUrWaKDG.mjs +59 -0
  63. package/dist/chunk-TLUHSLCS-Drx_a7am.js +1 -0
  64. package/dist/chunk-XXDRQBXY-AAk1-Cyg.js +1 -0
  65. package/dist/chunk-XXDRQBXY-DpR8eYzz.mjs +9 -0
  66. package/dist/chunk-Y2CYZVJY-CnmLqFtv.js +1 -0
  67. package/dist/chunk-Y2CYZVJY-i11wjrBe.mjs +12 -0
  68. package/dist/classDiagram-ZZMXUADV-B7IN9zcX.js +1 -0
  69. package/dist/classDiagram-ZZMXUADV-tcy6gxSB.mjs +30 -0
  70. package/dist/classDiagram-v2-VYDZK3BY-B7IN9zcX.js +1 -0
  71. package/dist/classDiagram-v2-VYDZK3BY-D5wM6Acp.mjs +30 -0
  72. package/dist/cli.js +87 -58
  73. package/dist/cose-bilkent-JH36ORCC-DBUPO3qJ.js +1 -0
  74. package/dist/cose-bilkent-JH36ORCC-Slpx4WIt.mjs +2253 -0
  75. package/dist/cynefin-OW5HDTMX--QVnfGi1.mjs +3 -0
  76. package/dist/cynefin-OW5HDTMX-lNKysi7S.js +1 -0
  77. package/dist/cynefinDiagram-5FMLGOSQ-CsFONYqx.js +62 -0
  78. package/dist/cynefinDiagram-5FMLGOSQ-DsrxYBcg.mjs +355 -0
  79. package/dist/cytoscape.esm-C5TvPYYm.mjs +18148 -0
  80. package/dist/cytoscape.esm-CBmWJr5M.js +321 -0
  81. package/dist/dagre-CZ6P9L_h.js +1 -0
  82. package/dist/dagre-GXQ25YYZ-CQszk-7P.js +4 -0
  83. package/dist/dagre-GXQ25YYZ-ecYByRSn.mjs +425 -0
  84. package/dist/dagre-J_1oH0eY.mjs +1934 -0
  85. package/dist/defaultLocale-N-0uLSyg.mjs +198 -0
  86. package/dist/defaultLocale-ybN1Vtvg.js +1 -0
  87. package/dist/diagram-S7CK7UJ4-CTMvxX__.js +30 -0
  88. package/dist/diagram-S7CK7UJ4-DxCghfa-.mjs +301 -0
  89. package/dist/diagram-UQ7AKVKN-1viEkqlG.js +41 -0
  90. package/dist/diagram-UQ7AKVKN-BA7Z_oB7.mjs +214 -0
  91. package/dist/diagram-VSXAHHWV-DgVT19mq.js +3 -0
  92. package/dist/diagram-VSXAHHWV-Dtqo03M5.mjs +432 -0
  93. package/dist/diagram-VX7I27RA-CNw0pOX_.js +24 -0
  94. package/dist/diagram-VX7I27RA-GMPRt8Zh.mjs +527 -0
  95. package/dist/diagram-Z3DM3KII-C6XdQK_Q.mjs +134 -0
  96. package/dist/diagram-Z3DM3KII-CPkBr3FT.js +24 -0
  97. package/dist/dist-CXWJafG_.js +1 -0
  98. package/dist/dist-DNdLIC8h.mjs +59 -0
  99. package/dist/docmedown.cjs +65 -48
  100. package/dist/docmedown.iife.js +3418 -77
  101. package/dist/docmedown.mjs +6672 -4648
  102. package/dist/ebnfDiagram-PWID7BFC-CseVsyL3.js +1 -0
  103. package/dist/ebnfDiagram-PWID7BFC-D_dBDXWC.mjs +100 -0
  104. package/dist/erDiagram-RLTQ6QDP-DFwfQTRS.js +99 -0
  105. package/dist/erDiagram-RLTQ6QDP-DP7ddGMH.mjs +1966 -0
  106. package/dist/eventmodeling-NTZA5JFV-CzxVg0l5.js +1 -0
  107. package/dist/eventmodeling-NTZA5JFV-Djsy__5n.mjs +3 -0
  108. package/dist/flowDiagram-HODETNUW-7hSJfI3W.js +1 -0
  109. package/dist/flowDiagram-HODETNUW-Dqu5Lr19.mjs +17 -0
  110. package/dist/ganttDiagram-EL5Y4UJY-KNL3tzTD.mjs +3072 -0
  111. package/dist/ganttDiagram-EL5Y4UJY-aiLqNWgi.js +292 -0
  112. package/dist/gitGraph-4MIJSDKK-DnElfqX7.js +1 -0
  113. package/dist/gitGraph-4MIJSDKK-xuKJBT2e.mjs +3 -0
  114. package/dist/gitGraphDiagram-WWUBYQGX-D4gSo_-e.js +106 -0
  115. package/dist/gitGraphDiagram-WWUBYQGX-Dooss5fG.mjs +733 -0
  116. package/dist/graphlib-BaETKKSa.js +1 -0
  117. package/dist/graphlib-XW-Jr8pF.mjs +1267 -0
  118. package/dist/info-A6RAGUB7-ClYskpn6.mjs +3 -0
  119. package/dist/info-A6RAGUB7-DDvvt-fW.js +1 -0
  120. package/dist/infoDiagram-27XIBGKW-B2-y2mdQ.mjs +20 -0
  121. package/dist/infoDiagram-27XIBGKW-DYQ9NzfL.js +2 -0
  122. package/dist/init-BJdqMO10.js +1 -0
  123. package/dist/init-CsQUQz36.mjs +13 -0
  124. package/dist/ishikawaDiagram-5VMMS53U-ULIhoYO5.js +70 -0
  125. package/dist/ishikawaDiagram-5VMMS53U-xAArNh-1.mjs +719 -0
  126. package/dist/journeyDiagram-3NMN7TZE-BBMYNZRL.js +139 -0
  127. package/dist/journeyDiagram-3NMN7TZE-BH-uKqP7.mjs +884 -0
  128. package/dist/kanban-definition-UXKFOSKX-Be49llXr.mjs +976 -0
  129. package/dist/kanban-definition-UXKFOSKX-CDL5yJkq.js +89 -0
  130. package/dist/line-BEwhHSLl.js +1 -0
  131. package/dist/line-CiXRog8O.mjs +34 -0
  132. package/dist/linear-75tfjrny.js +1 -0
  133. package/dist/linear-Ncx_RuON.mjs +288 -0
  134. package/dist/mermaid-parser.core-BBApyu_y.js +6 -0
  135. package/dist/mermaid-parser.core-BRHibdUE.mjs +638 -0
  136. package/dist/mindmap-definition-YA3MSWOX-Chy7XP_5.mjs +1006 -0
  137. package/dist/mindmap-definition-YA3MSWOX-DOda-fkL.js +96 -0
  138. package/dist/ordinal-B1BNQwUR.mjs +65 -0
  139. package/dist/ordinal-B9aFWmF9.js +1 -0
  140. package/dist/packet-AYTQ26CC-CorIy9Ul.js +1 -0
  141. package/dist/packet-AYTQ26CC-DWH8gXJK.mjs +3 -0
  142. package/dist/path-CnWkkRiY.mjs +84 -0
  143. package/dist/path-DIS6ck99.js +1 -0
  144. package/dist/pegDiagram-XKGWAZYB-Cdw6MeON.js +1 -0
  145. package/dist/pegDiagram-XKGWAZYB-uNfxRaq1.mjs +94 -0
  146. package/dist/pie-WAS4IAKB-Cn5eK-5P.mjs +3 -0
  147. package/dist/pie-WAS4IAKB-D84xrSoY.js +1 -0
  148. package/dist/pieDiagram-E7YTZNPT-Bd6mvpJw.js +39 -0
  149. package/dist/pieDiagram-E7YTZNPT-Cczo96a2.mjs +203 -0
  150. package/dist/quadrantDiagram-AXDQQJYC-BPfgvMsS.js +7 -0
  151. package/dist/quadrantDiagram-AXDQQJYC-eqRNtVRl.mjs +2001 -0
  152. package/dist/radar-RG4KPBEZ-DvkxGdO6.mjs +3 -0
  153. package/dist/radar-RG4KPBEZ-R2sQOLL9.js +1 -0
  154. package/dist/railroad-74A4TZTK-BOZIf6ts.js +1 -0
  155. package/dist/railroad-74A4TZTK-CrQzn8Nm.mjs +3 -0
  156. package/dist/railroad-abnf-HS5TGJTU-BZYetxLz.mjs +3 -0
  157. package/dist/railroad-abnf-HS5TGJTU-CXU1aC4B.js +1 -0
  158. package/dist/railroad-ebnf-LZEXJU2U-D29kI3YW.js +1 -0
  159. package/dist/railroad-ebnf-LZEXJU2U-qgzTOmN6.mjs +3 -0
  160. package/dist/railroad-peg-WCYAUIDC-Bjs9Ws3P.mjs +3 -0
  161. package/dist/railroad-peg-WCYAUIDC-CXviP0hz.js +1 -0
  162. package/dist/railroadDiagram-O6MQD6OU-58kvwt7H.mjs +76 -0
  163. package/dist/railroadDiagram-O6MQD6OU-CKY3uzTc.js +1 -0
  164. package/dist/requirementDiagram-BXWQKSXE-0hZ04Q6h.js +84 -0
  165. package/dist/requirementDiagram-BXWQKSXE-CS673B5n.mjs +2224 -0
  166. package/dist/rough.esm-ChRLLRha.js +1 -0
  167. package/dist/rough.esm-DXYGHN3m.mjs +1361 -0
  168. package/dist/sankeyDiagram-P5KCCOFB-D1D6HfAM.mjs +972 -0
  169. package/dist/sankeyDiagram-P5KCCOFB-ciJb9Zr8.js +40 -0
  170. package/dist/sequenceDiagram-WJ2MYXX4-BXEznuI6.js +162 -0
  171. package/dist/sequenceDiagram-WJ2MYXX4-CI1VT8AG.mjs +4156 -0
  172. package/dist/sizeCapture-INFHLROL-BihkCH-7.js +1 -0
  173. package/dist/sizeCapture-INFHLROL-BmxqyOLj.mjs +46 -0
  174. package/dist/src-B4mN2BMl.js +1 -0
  175. package/dist/src-D_hsMyeP.mjs +2154 -0
  176. package/dist/stateDiagram-D77RDMKH-BQrSs72W.mjs +220 -0
  177. package/dist/stateDiagram-D77RDMKH-D2PtkW2U.js +1 -0
  178. package/dist/stateDiagram-v2-MP3YSRHH-CCbvNfk-.mjs +30 -0
  179. package/dist/stateDiagram-v2-MP3YSRHH-Dq1QuPeN.js +1 -0
  180. package/dist/swimlanes-42K2YHIH-CA316NPm.mjs +4979 -0
  181. package/dist/swimlanes-42K2YHIH-DlggBCTy.js +1 -0
  182. package/dist/swimlanesDiagram-VR7AAH4N-BV9PEIoG.js +8 -0
  183. package/dist/swimlanesDiagram-VR7AAH4N-BfrOCfdf.mjs +31 -0
  184. package/dist/timeline-definition-24CTP7MA-Bkd8rWNJ.js +120 -0
  185. package/dist/timeline-definition-24CTP7MA-BvkqNYt1.mjs +1069 -0
  186. package/dist/treeView-Q6P3EWNA-Aof3Cp1M.mjs +3 -0
  187. package/dist/treeView-Q6P3EWNA-BTzvdwbb.js +1 -0
  188. package/dist/treemap-WGGIJYW6-BNXGg99p.mjs +3 -0
  189. package/dist/treemap-WGGIJYW6-DfR4P2Hh.js +1 -0
  190. package/dist/types/runtime/components/AppearanceMenu.d.ts +2 -0
  191. package/dist/types/runtime/components/DmdRegistry.d.ts +3 -1
  192. package/dist/types/runtime/components/MermaidDiagram.d.ts +16 -0
  193. package/dist/types/runtime/components/OfflineDownloadButton.d.ts +2 -0
  194. package/dist/types/runtime/config-schema.d.ts +42 -0
  195. package/dist/types/runtime/index.d.ts +1 -0
  196. package/dist/types/runtime/markdown/mermaid.d.ts +82 -1
  197. package/dist/types/runtime/offline-export.d.ts +26 -0
  198. package/dist/types/runtime/provider/ThemeProvider.d.ts +11 -4
  199. package/dist/types/runtime/types.d.ts +4 -1
  200. package/dist/vennDiagram-4TSXK5OY-BOUFXjso.js +34 -0
  201. package/dist/vennDiagram-4TSXK5OY-CeOg3-hU.mjs +1880 -0
  202. package/dist/wardley-WFR3VGLG-BOYcSLd1.mjs +3 -0
  203. package/dist/wardley-WFR3VGLG-DWDqJSgm.js +1 -0
  204. package/dist/wardleyDiagram-VM6X3IG4-BhWgMjFr.js +78 -0
  205. package/dist/wardleyDiagram-VM6X3IG4-C31KoRmF.mjs +645 -0
  206. package/dist/xychartDiagram-S5SC5T6Z-1yU8zz6I.js +7 -0
  207. package/dist/xychartDiagram-S5SC5T6Z-BK7upFom.mjs +2210 -0
  208. package/package.json +6 -3
  209. package/schemas/docs.schema.json +10 -1
  210. package/templates/README.md +4 -4
  211. package/templates/docs.json +4 -2
  212. package/templates/getting-started.md +1 -1
  213. package/templates/guides/custom-components.md +2 -0
  214. package/templates/index.html +2 -4
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  Source code, issues, and releases live at [github.com/gabrielmsilva00/docmedown](https://github.com/gabrielmsilva00/docmedown).
12
12
 
13
- Drop a single `index.html` file into any directory of `.md` files, and you have a blazing fast, glassmorphic documentation website.
13
+ Drop a single `index.html` file into any directory of `.md` files, and you have a fast, responsive documentation website with a complete reading interface.
14
14
 
15
15
  ---
16
16
 
@@ -21,11 +21,11 @@ Drop a single `index.html` file into any directory of `.md` files, and you have
21
21
  - Run via single-line CLI: `npx docmedown ./docs`
22
22
  - Or drop `<script src="docmedown.js"></script>` into an `index.html` on any static host.
23
23
  - ⚡ **Dynamic Remote GitHub / GitLab Mode**: Document any GitHub or GitLab repository *live* without hosting markdown files statically! Changes pushed to your repo dynamically update the documentation website immediately.
24
- - 📦 **100% Offline Single-File Bundler**: Generate a self-contained `index.html` with all markdown content and scripts inlined, ready to be double-clicked (`file:///`) offline anywhere without a web server.
25
- - 🎨 **Glassmorphic Modern Design**: Dark & Light modes, customizable themes (**Indigo, Emerald, Sunset, Violet, Rose, Slate, Cyberpunk**), reading progress bar, breadcrumbs, and TOC scrollspy.
24
+ - 📦 **Compressed Offline Copies**: Generate or download a minified, self-extracting `index.html` containing the complete documentation corpus, custom components, Mermaid renderer, styles, and runtime. Double-click it under `file:///` without a web server.
25
+ - 🎨 **Four Complete Theme Families**: Atlas, Blueprint, Terminal, and Editorial each redefine surfaces, geometry, typography, spacing, and diagram palettes—not merely the accent color. Every family supports light, dark, automatic mode, and comfortable or compact density.
26
26
  - 🔍 **Instant Fuzzy Search**: Keyboard-driven command palette (`⌘K` / `Ctrl+K`) with real-time in-browser indexing.
27
27
  - ⚛️ **React Custom Components (.dmd)**: Support for custom React components inside `.dmd/` or built-in components (`<Tabs>`, `<CardGrid>`, `<Badge>`, `<Steps>`).
28
- - 📊 **Mermaid Diagrams & KaTeX Math**: Render interactive architecture diagrams and LaTeX equations natively.
28
+ - 📊 **Mermaid Diagrams & KaTeX Math**: Theme-aware diagrams with automatic Fit, zoom, 1:1 view, SVG export, expanded review, and offline parity, plus native LaTeX equations.
29
29
  - 💡 **GitHub-Style Callouts**: Full support for `[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, and `[!CAUTION]`.
30
30
 
31
31
  ---
@@ -90,7 +90,7 @@ Then mount it into a specific element. `init` resolves to an instance with a `de
90
90
  basePath: '/help',
91
91
  config: {
92
92
  name: 'Project help',
93
- theme: { preset: 'emerald', defaultMode: 'auto' }
93
+ theme: { family: 'terminal', density: 'compact', defaultMode: 'auto' }
94
94
  }
95
95
  });
96
96
 
@@ -121,7 +121,8 @@ Simply create `docs.json`:
121
121
  "docsDir": "docs"
122
122
  },
123
123
  "theme": {
124
- "preset": "indigo",
124
+ "family": "blueprint",
125
+ "density": "comfortable",
125
126
  "defaultMode": "auto"
126
127
  }
127
128
  }
@@ -139,7 +140,9 @@ Every standard build produces both your serveable documentation files and a **10
139
140
  npx docmedown build ./docs
140
141
  ```
141
142
 
142
- The serveable manifest and runtime remain in `./docs`. The offline artifact is written to `./docs/.dist/index.html`; dot-prefixed directories are excluded from document discovery. Open that file directly in a browser (`file:///.../.dist/index.html`) on air-gapped machines, send it via email, or distribute it with offline desktop applications. Use `--no-single-file` to skip the offline artifact, or `--out-dir <path>` to place it elsewhere.
143
+ The serveable manifest and runtime remain in `./docs`. The offline artifact is written to `./docs/.dist/index.html`; dot-prefixed directories are excluded from document discovery. The artifact stores compact JSON and the production runtime in a gzip-compressed, base64-encoded envelope with a minified self-extractor. Open that file directly in a browser (`file:///.../.dist/index.html`) on air-gapped machines, send it via email, or distribute it with offline desktop applications. Use `--no-single-file` to skip the offline artifact, or `--out-dir <path>` to place it elsewhere.
144
+
145
+ Serveable DocMeDown sites also include a **Download** action in the navbar. It reads the already-loaded documentation corpus and current runtime, compresses them locally with the browser's native gzip stream, and downloads the same self-contained format without requesting `.dist/index.html`. In a downloaded or CLI-built offline copy, the control is greyed out as **Offline copy** because the page is already portable.
143
146
 
144
147
  `docmedown serve ./docs` and `docmedown dev ./docs` also run this standard build at startup. While the server is running, Markdown and `docs.json` changes are debounced, then rebuild the serveable artifacts and `./docs/.dist/index.html` before the browser reloads.
145
148
 
@@ -153,6 +156,20 @@ Within this repository, the equivalent command is `npm run build:docs:watch`.
153
156
 
154
157
  ---
155
158
 
159
+ ## 🚢 GitHub Pages Hosting
160
+
161
+ The repository includes `.github/workflows/pages.yml`, which builds the production runtime and generated documentation assets before publishing `./docs/` through GitHub Pages. This is required because `_docs.js`, `_manifest.json`, and `docmedown.iife.js` are generated files and intentionally ignored by Git.
162
+
163
+ To enable it for a repository fork or project site:
164
+
165
+ 1. Push the workflow to the `main` branch.
166
+ 2. In **Settings → Pages**, set the source to **GitHub Actions**.
167
+ 3. Push documentation or runtime changes; the workflow runs `npm ci`, `npm run build`, and `npm run build:docs`, then uploads the complete `docs/` directory.
168
+
169
+ The generated entrypoint uses same-directory relative URLs (`./_docs.js` and `./docmedown.iife.js`), so it works at both a custom domain and a project URL such as `/repository-name/`. The Pages workflow verifies those generated files before upload and includes `.nojekyll` for direct static-file compatibility. Hash routing keeps document navigation client-side without requiring server rewrites.
170
+
171
+ ---
172
+
156
173
  ## ⚛️ Custom React Components (.dmd)
157
174
 
158
175
  Define global React components in a browser-loadable `.dmd/components.js` module. React is available as `window.React` in that module:
@@ -197,8 +214,8 @@ The standard build embeds `.dmd/components.js` in `docs/.dist/index.html`, so th
197
214
  badgeType="success"
198
215
  />
199
216
  <Card
200
- title="Glassmorphic Theme"
201
- description="Sleek dark and light modes."
217
+ title="Complete Theme Families"
218
+ description="Atlas, Blueprint, Terminal, and Editorial change the entire reading system."
202
219
  badge="New"
203
220
  badgeType="new"
204
221
  />
@@ -226,8 +243,10 @@ DocMeDown validates configuration from `docs.json`, `dmd.json`, inline `#dmd-con
226
243
  "version": "1.0.0",
227
244
  "rootDoc": "README.md",
228
245
  "theme": {
229
- "preset": "indigo",
230
- "defaultMode": "auto"
246
+ "family": "atlas",
247
+ "density": "comfortable",
248
+ "defaultMode": "auto",
249
+ "codeTheme": "github"
231
250
  },
232
251
  "nav": [
233
252
  { "label": "Overview", "href": "#/README" },
@@ -250,17 +269,16 @@ DocMeDown validates configuration from `docs.json`, `dmd.json`, inline `#dmd-con
250
269
 
251
270
  Unknown keys are rejected. The npm package also ships the portable schema at `schemas/docs.schema.json`; TypeScript consumers can import `docConfigSchema` and `parseDocConfig` from `docmedown`. See the full [configuration reference](./docs/configuration.md) for every field and validation rule.
252
271
 
253
- ### Color Presets Available
272
+ ### Theme Families
254
273
 
255
- | Preset | Accent Color | Vibe |
274
+ | Family | Best suited for | Visual system |
256
275
  | :--- | :--- | :--- |
257
- | `indigo` *(default)* | `#6366f1` | Clean, modern, developer-focused |
258
- | `emerald` | `#10b981` | Fresh, high-tech, eco |
259
- | `sunset` | `#f59e0b` | Warm amber and energy |
260
- | `violet` | `#8b5cf6` | Vibrant, creative |
261
- | `rose` | `#f43f5e` | Bold, stylish quartz |
262
- | `slate` | `#64748b` | Minimalist monochrome |
263
- | `cyberpunk` | `#00f0ff` | Glowing neon aesthetic |
276
+ | `atlas` *(default)* | General product and API documentation | Neutral mineral canvas, cobalt actions, balanced spacing |
277
+ | `blueprint` | Architecture and technical specifications | Squared geometry, drafting rules, coral signals |
278
+ | `terminal` | CLI, operations, and infrastructure manuals | Dark-first console character, compact rhythm, monospace utilities |
279
+ | `editorial` | Guides, handbooks, and long-form reading | Warm paper surfaces, serif display type, generous article rhythm |
280
+
281
+ Use the **Appearance** menu to switch family, color mode, and reading density at runtime. Set `accentColor` and `accentColorDark` only when a brand color must override the family default. Legacy accent-only presets remain accepted temporarily for migration but should not be used in new configurations.
264
282
 
265
283
  ---
266
284
 
@@ -0,0 +1,89 @@
1
+ import { m as e } from "./src-D_hsMyeP.mjs";
2
+ import { n as t } from "./chunk-Y2CYZVJY-i11wjrBe.mjs";
3
+ import "./chunk-DU6HZSFF-BEQZSmUu.mjs";
4
+ import "./chunk-CLGD4ZFX-DBkwyMMv.mjs";
5
+ import { m as n, t as r } from "./mermaid-parser.core-BRHibdUE.mjs";
6
+ import { n as i, r as a, t as o } from "./chunk-SVP7TREG-CynckzeF.mjs";
7
+ import { t as s } from "./chunk-JWPE2WC7-DIKiF5cm.mjs";
8
+ //#region node_modules/mermaid/dist/chunks/mermaid.core/abnfDiagram-VCTEODGH.mjs
9
+ var c = n().RailroadAbnf.parser.LangiumParser, l = /* @__PURE__ */ t((e) => {
10
+ let t = e.alternatives.map(u);
11
+ return t.length === 1 ? t[0] : {
12
+ type: "choice",
13
+ alternatives: t
14
+ };
15
+ }, "transformAlternation"), u = /* @__PURE__ */ t((e) => {
16
+ let t = e.elements.map(f);
17
+ return t.length === 1 ? t[0] : {
18
+ type: "sequence",
19
+ elements: t
20
+ };
21
+ }, "transformConcatenation"), d = /* @__PURE__ */ t((e) => {
22
+ if (e.includes("*")) {
23
+ let [t, n] = e.split("*");
24
+ return {
25
+ min: t ? parseInt(t, 10) : 0,
26
+ max: n ? parseInt(n, 10) : Infinity
27
+ };
28
+ }
29
+ let t = parseInt(e, 10);
30
+ return {
31
+ min: t,
32
+ max: t
33
+ };
34
+ }, "parseRepeat"), f = /* @__PURE__ */ t((e) => {
35
+ let t = p(e.primary);
36
+ if (!e.repeat) return t;
37
+ let { min: n, max: r } = d(e.repeat);
38
+ return n === 0 && r === 1 ? {
39
+ type: "optional",
40
+ element: t
41
+ } : {
42
+ type: "repetition",
43
+ element: t,
44
+ min: n,
45
+ max: r
46
+ };
47
+ }, "transformElement"), p = /* @__PURE__ */ t((e) => {
48
+ switch (e.$type) {
49
+ case "AbnfStringLiteral": return {
50
+ type: "terminal",
51
+ value: e.value
52
+ };
53
+ case "AbnfNumVal": return {
54
+ type: "terminal",
55
+ value: e.value
56
+ };
57
+ case "AbnfRuleName": return {
58
+ type: "nonterminal",
59
+ name: e.name
60
+ };
61
+ case "AbnfGroup": return l(e.element);
62
+ case "AbnfOptionalGroup": return {
63
+ type: "optional",
64
+ element: l(e.element)
65
+ };
66
+ default: throw Error(`Unsupported ABNF primary node: ${e.$type}`);
67
+ }
68
+ }, "transformPrimary"), m = /* @__PURE__ */ t((e) => ({
69
+ name: e.name,
70
+ definition: l(e.definition)
71
+ }), "transformRule"), h = /* @__PURE__ */ t((e) => {
72
+ s(e, o), e.title && o.setTitle(e.title), e.rules.map((e) => o.addRule(m(e)));
73
+ }, "populateDb"), g = {
74
+ parser: {
75
+ parse: /* @__PURE__ */ t((t) => {
76
+ o.clear(), e.debug("[ABNF Parser] Starting Langium parse");
77
+ let n = c.parse(t);
78
+ if (n.lexerErrors.length > 0 || n.parserErrors.length > 0) throw new r(n);
79
+ let i = n.value;
80
+ e.debug("[ABNF Parser] Parsed rules:", i.rules.length), h(i), e.debug("[ABNF Parser] Parse complete");
81
+ }, "parse"),
82
+ parser: { yy: o }
83
+ },
84
+ db: o,
85
+ renderer: a,
86
+ styles: i
87
+ };
88
+ //#endregion
89
+ export { g as diagram };
@@ -0,0 +1 @@
1
+ const e=require("./src-B4mN2BMl.js"),t=require("./chunk-Y2CYZVJY-CnmLqFtv.js");require("./chunk-DU6HZSFF-CWc5ewtb.js"),require("./chunk-CLGD4ZFX-C5J-e2io.js");const n=require("./mermaid-parser.core-BBApyu_y.js"),r=require("./chunk-SVP7TREG-BFMd615E.js"),i=require("./chunk-JWPE2WC7-p1fYVdYc.js");var a=n.m().RailroadAbnf.parser.LangiumParser,o=t.n(e=>{let t=e.alternatives.map(s);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),s=t.n(e=>{let t=e.elements.map(l);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),c=t.n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),l=t.n(e=>{let t=u(e.primary);if(!e.repeat)return t;let{min:n,max:r}=c(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),u=t.n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return o(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:o(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),d=t.n(e=>({name:e.name,definition:o(e.definition)}),`transformRule`),f=t.n(e=>{i.t(e,r.t),e.title&&r.t.setTitle(e.title),e.rules.map(e=>r.t.addRule(d(e)))},`populateDb`),p={parser:{parse:t.n(t=>{r.t.clear(),e.m.debug(`[ABNF Parser] Starting Langium parse`);let i=a.parse(t);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new n.t(i);let o=i.value;e.m.debug(`[ABNF Parser] Parsed rules:`,o.rules.length),f(o),e.m.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:r.t}},db:r.t,renderer:r.r,styles:r.n};exports.diagram=p;
@@ -0,0 +1,82 @@
1
+ import { n as e, t } from "./path-CnWkkRiY.mjs";
2
+ import { a as n, c as r, d as i, f as a, i as o, l as s, m as c, n as l, o as u, p as d, r as f, u as p } from "./dist-DNdLIC8h.mjs";
3
+ //#region node_modules/d3-shape/src/arc.js
4
+ function m(e) {
5
+ return e.innerRadius;
6
+ }
7
+ function h(e) {
8
+ return e.outerRadius;
9
+ }
10
+ function g(e) {
11
+ return e.startAngle;
12
+ }
13
+ function _(e) {
14
+ return e.endAngle;
15
+ }
16
+ function v(e) {
17
+ return e && e.padAngle;
18
+ }
19
+ function y(e, t, n, r, i, a, o, s) {
20
+ var c = n - e, l = r - t, u = o - i, d = s - a, f = d * c - u * l;
21
+ if (!(f * f < 1e-12)) return f = (u * (t - a) - d * (e - i)) / f, [e + f * c, t + f * l];
22
+ }
23
+ function b(e, t, n, r, i, a, o) {
24
+ var c = e - n, l = t - r, u = (o ? a : -a) / d(c * c + l * l), f = u * l, p = -u * c, m = e + f, h = t + p, g = n + f, _ = r + p, v = (m + g) / 2, y = (h + _) / 2, b = g - m, x = _ - h, S = b * b + x * x, C = i - a, w = m * _ - g * h, T = (x < 0 ? -1 : 1) * d(s(0, C * C * S - w * w)), E = (w * x - b * T) / S, D = (-w * b - x * T) / S, O = (w * x + b * T) / S, k = (-w * b + x * T) / S, A = E - v, j = D - y, M = O - v, N = k - y;
25
+ return A * A + j * j > M * M + N * N && (E = O, D = k), {
26
+ cx: E,
27
+ cy: D,
28
+ x01: -f,
29
+ y01: -p,
30
+ x11: E * (i / C - 1),
31
+ y11: D * (i / C - 1)
32
+ };
33
+ }
34
+ function x() {
35
+ var s = m, x = h, S = e(0), C = null, w = g, T = _, E = v, D = null, O = t(k);
36
+ function k() {
37
+ var e, t, m = +s.apply(this, arguments), h = +x.apply(this, arguments), g = w.apply(this, arguments) - r, _ = T.apply(this, arguments) - r, v = l(_ - g), k = _ > g;
38
+ if (D ||= e = O(), h < m && (t = h, h = m, m = t), !(h > 1e-12)) D.moveTo(0, 0);
39
+ else if (v > c - 1e-12) D.moveTo(h * u(g), h * a(g)), D.arc(0, 0, h, g, _, !k), m > 1e-12 && (D.moveTo(m * u(_), m * a(_)), D.arc(0, 0, m, _, g, k));
40
+ else {
41
+ var A = g, j = _, M = g, N = _, P = v, F = v, I = E.apply(this, arguments) / 2, L = I > 1e-12 && (C ? +C.apply(this, arguments) : d(m * m + h * h)), R = p(l(h - m) / 2, +S.apply(this, arguments)), z = R, B = R, V, H;
42
+ if (L > 1e-12) {
43
+ var U = o(L / m * a(I)), W = o(L / h * a(I));
44
+ (P -= U * 2) > 1e-12 ? (U *= k ? 1 : -1, M += U, N -= U) : (P = 0, M = N = (g + _) / 2), (F -= W * 2) > 1e-12 ? (W *= k ? 1 : -1, A += W, j -= W) : (F = 0, A = j = (g + _) / 2);
45
+ }
46
+ var G = h * u(A), K = h * a(A), q = m * u(N), J = m * a(N);
47
+ if (R > 1e-12) {
48
+ var Y = h * u(j), X = h * a(j), Z = m * u(M), Q = m * a(M), $;
49
+ if (v < i) {
50
+ if ($ = y(G, K, Z, Q, Y, X, q, J)) {
51
+ var ee = G - $[0], te = K - $[1], ne = Y - $[0], re = X - $[1], ie = 1 / a(f((ee * ne + te * re) / (d(ee * ee + te * te) * d(ne * ne + re * re))) / 2), ae = d($[0] * $[0] + $[1] * $[1]);
52
+ z = p(R, (m - ae) / (ie - 1)), B = p(R, (h - ae) / (ie + 1));
53
+ } else z = B = 0;
54
+ }
55
+ }
56
+ F > 1e-12 ? B > 1e-12 ? (V = b(Z, Q, G, K, h, B, k), H = b(Y, X, q, J, h, B, k), D.moveTo(V.cx + V.x01, V.cy + V.y01), B < R ? D.arc(V.cx, V.cy, B, n(V.y01, V.x01), n(H.y01, H.x01), !k) : (D.arc(V.cx, V.cy, B, n(V.y01, V.x01), n(V.y11, V.x11), !k), D.arc(0, 0, h, n(V.cy + V.y11, V.cx + V.x11), n(H.cy + H.y11, H.cx + H.x11), !k), D.arc(H.cx, H.cy, B, n(H.y11, H.x11), n(H.y01, H.x01), !k))) : (D.moveTo(G, K), D.arc(0, 0, h, A, j, !k)) : D.moveTo(G, K), !(m > 1e-12) || !(P > 1e-12) ? D.lineTo(q, J) : z > 1e-12 ? (V = b(q, J, Y, X, m, -z, k), H = b(G, K, Z, Q, m, -z, k), D.lineTo(V.cx + V.x01, V.cy + V.y01), z < R ? D.arc(V.cx, V.cy, z, n(V.y01, V.x01), n(H.y01, H.x01), !k) : (D.arc(V.cx, V.cy, z, n(V.y01, V.x01), n(V.y11, V.x11), !k), D.arc(0, 0, m, n(V.cy + V.y11, V.cx + V.x11), n(H.cy + H.y11, H.cx + H.x11), k), D.arc(H.cx, H.cy, z, n(H.y11, H.x11), n(H.y01, H.x01), !k))) : D.arc(0, 0, m, N, M, k);
57
+ }
58
+ if (D.closePath(), e) return D = null, e + "" || null;
59
+ }
60
+ return k.centroid = function() {
61
+ var e = (+s.apply(this, arguments) + +x.apply(this, arguments)) / 2, t = (+w.apply(this, arguments) + +T.apply(this, arguments)) / 2 - i / 2;
62
+ return [u(t) * e, a(t) * e];
63
+ }, k.innerRadius = function(t) {
64
+ return arguments.length ? (s = typeof t == "function" ? t : e(+t), k) : s;
65
+ }, k.outerRadius = function(t) {
66
+ return arguments.length ? (x = typeof t == "function" ? t : e(+t), k) : x;
67
+ }, k.cornerRadius = function(t) {
68
+ return arguments.length ? (S = typeof t == "function" ? t : e(+t), k) : S;
69
+ }, k.padRadius = function(t) {
70
+ return arguments.length ? (C = t == null ? null : typeof t == "function" ? t : e(+t), k) : C;
71
+ }, k.startAngle = function(t) {
72
+ return arguments.length ? (w = typeof t == "function" ? t : e(+t), k) : w;
73
+ }, k.endAngle = function(t) {
74
+ return arguments.length ? (T = typeof t == "function" ? t : e(+t), k) : T;
75
+ }, k.padAngle = function(t) {
76
+ return arguments.length ? (E = typeof t == "function" ? t : e(+t), k) : E;
77
+ }, k.context = function(e) {
78
+ return arguments.length ? (D = e ?? null, k) : D;
79
+ }, k;
80
+ }
81
+ //#endregion
82
+ export { x as t };
@@ -0,0 +1 @@
1
+ const e=require("./path-DIS6ck99.js"),t=require("./dist-CXWJafG_.js");function n(e){return e.innerRadius}function r(e){return e.outerRadius}function i(e){return e.startAngle}function a(e){return e.endAngle}function o(e){return e&&e.padAngle}function s(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function c(e,n,r,i,a,o,s){var c=e-r,l=n-i,u=(s?o:-o)/t.p(c*c+l*l),d=u*l,f=-u*c,p=e+d,m=n+f,h=r+d,g=i+f,_=(p+h)/2,v=(m+g)/2,y=h-p,b=g-m,x=y*y+b*b,S=a-o,C=p*g-h*m,w=(b<0?-1:1)*t.p(t.l(0,S*S*x-C*C)),T=(C*b-y*w)/x,E=(-C*y-b*w)/x,D=(C*b+y*w)/x,O=(-C*y+b*w)/x,k=T-_,A=E-v,j=D-_,M=O-v;return k*k+A*A>j*j+M*M&&(T=D,E=O),{cx:T,cy:E,x01:-d,y01:-f,x11:T*(a/S-1),y11:E*(a/S-1)}}function l(){var l=n,u=r,d=e.n(0),f=null,p=i,m=a,h=o,g=null,_=e.t(v);function v(){var e,n,r=+l.apply(this,arguments),i=+u.apply(this,arguments),a=p.apply(this,arguments)-t.c,o=m.apply(this,arguments)-t.c,v=t.n(o-a),y=o>a;if(g||=e=_(),i<r&&(n=i,i=r,r=n),!(i>1e-12))g.moveTo(0,0);else if(v>t.m-1e-12)g.moveTo(i*t.o(a),i*t.f(a)),g.arc(0,0,i,a,o,!y),r>1e-12&&(g.moveTo(r*t.o(o),r*t.f(o)),g.arc(0,0,r,o,a,y));else{var b=a,x=o,S=a,C=o,w=v,T=v,E=h.apply(this,arguments)/2,D=E>1e-12&&(f?+f.apply(this,arguments):t.p(r*r+i*i)),O=t.u(t.n(i-r)/2,+d.apply(this,arguments)),k=O,A=O,j,M;if(D>1e-12){var N=t.i(D/r*t.f(E)),P=t.i(D/i*t.f(E));(w-=N*2)>1e-12?(N*=y?1:-1,S+=N,C-=N):(w=0,S=C=(a+o)/2),(T-=P*2)>1e-12?(P*=y?1:-1,b+=P,x-=P):(T=0,b=x=(a+o)/2)}var F=i*t.o(b),I=i*t.f(b),L=r*t.o(C),R=r*t.f(C);if(O>1e-12){var z=i*t.o(x),B=i*t.f(x),V=r*t.o(S),H=r*t.f(S),U;if(v<t.d){if(U=s(F,I,V,H,z,B,L,R)){var W=F-U[0],G=I-U[1],K=z-U[0],q=B-U[1],J=1/t.f(t.r((W*K+G*q)/(t.p(W*W+G*G)*t.p(K*K+q*q)))/2),Y=t.p(U[0]*U[0]+U[1]*U[1]);k=t.u(O,(r-Y)/(J-1)),A=t.u(O,(i-Y)/(J+1))}else k=A=0}}T>1e-12?A>1e-12?(j=c(V,H,F,I,i,A,y),M=c(z,B,L,R,i,A,y),g.moveTo(j.cx+j.x01,j.cy+j.y01),A<O?g.arc(j.cx,j.cy,A,t.a(j.y01,j.x01),t.a(M.y01,M.x01),!y):(g.arc(j.cx,j.cy,A,t.a(j.y01,j.x01),t.a(j.y11,j.x11),!y),g.arc(0,0,i,t.a(j.cy+j.y11,j.cx+j.x11),t.a(M.cy+M.y11,M.cx+M.x11),!y),g.arc(M.cx,M.cy,A,t.a(M.y11,M.x11),t.a(M.y01,M.x01),!y))):(g.moveTo(F,I),g.arc(0,0,i,b,x,!y)):g.moveTo(F,I),!(r>1e-12)||!(w>1e-12)?g.lineTo(L,R):k>1e-12?(j=c(L,R,z,B,r,-k,y),M=c(F,I,V,H,r,-k,y),g.lineTo(j.cx+j.x01,j.cy+j.y01),k<O?g.arc(j.cx,j.cy,k,t.a(j.y01,j.x01),t.a(M.y01,M.x01),!y):(g.arc(j.cx,j.cy,k,t.a(j.y01,j.x01),t.a(j.y11,j.x11),!y),g.arc(0,0,r,t.a(j.cy+j.y11,j.cx+j.x11),t.a(M.cy+M.y11,M.cx+M.x11),y),g.arc(M.cx,M.cy,k,t.a(M.y11,M.x11),t.a(M.y01,M.x01),!y))):g.arc(0,0,r,C,S,y)}if(g.closePath(),e)return g=null,e+``||null}return v.centroid=function(){var e=(+l.apply(this,arguments)+ +u.apply(this,arguments))/2,n=(+p.apply(this,arguments)+ +m.apply(this,arguments))/2-t.d/2;return[t.o(n)*e,t.f(n)*e]},v.innerRadius=function(t){return arguments.length?(l=typeof t==`function`?t:e.n(+t),v):l},v.outerRadius=function(t){return arguments.length?(u=typeof t==`function`?t:e.n(+t),v):u},v.cornerRadius=function(t){return arguments.length?(d=typeof t==`function`?t:e.n(+t),v):d},v.padRadius=function(t){return arguments.length?(f=t==null?null:typeof t==`function`?t:e.n(+t),v):f},v.startAngle=function(t){return arguments.length?(p=typeof t==`function`?t:e.n(+t),v):p},v.endAngle=function(t){return arguments.length?(m=typeof t==`function`?t:e.n(+t),v):m},v.padAngle=function(t){return arguments.length?(h=typeof t==`function`?t:e.n(+t),v):h},v.context=function(e){return arguments.length?(g=e??null,v):g},v}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});
@@ -0,0 +1 @@
1
+ require("./chunk-FOHPRMQF-tmTlwTeH.js");const e=require("./mermaid-parser.core-BBApyu_y.js");exports.createArchitectureServices=e.M;
@@ -0,0 +1,3 @@
1
+ import "./chunk-FOHPRMQF-LRqOLsSw.mjs";
2
+ import { M as e } from "./mermaid-parser.core-BRHibdUE.mjs";
3
+ export { e as createArchitectureServices };