mordoc 0.1.13 → 1.0.0

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 (431) hide show
  1. package/LICENSE +7 -0
  2. package/bin/cli.js +24 -71
  3. package/dist/cli/asset-rewrite.d.ts +40 -0
  4. package/dist/cli/asset-rewrite.d.ts.map +1 -0
  5. package/dist/cli/asset-rewrite.js +67 -0
  6. package/dist/cli/asset-rewrite.js.map +1 -0
  7. package/dist/cli/build.d.ts +45 -15
  8. package/dist/cli/build.d.ts.map +1 -1
  9. package/dist/cli/build.js +186 -101
  10. package/dist/cli/build.js.map +1 -1
  11. package/dist/cli/dev.d.ts +26 -14
  12. package/dist/cli/dev.d.ts.map +1 -1
  13. package/dist/cli/dev.js +116 -159
  14. package/dist/cli/dev.js.map +1 -1
  15. package/dist/cli/pagefind-indexer.d.ts +15 -0
  16. package/dist/cli/pagefind-indexer.d.ts.map +1 -0
  17. package/dist/cli/pagefind-indexer.js +68 -0
  18. package/dist/cli/pagefind-indexer.js.map +1 -0
  19. package/dist/cli/paths.d.ts +26 -0
  20. package/dist/cli/paths.d.ts.map +1 -0
  21. package/dist/cli/paths.js +32 -0
  22. package/dist/cli/paths.js.map +1 -0
  23. package/dist/cli/ssg-runner.d.ts +58 -0
  24. package/dist/cli/ssg-runner.d.ts.map +1 -0
  25. package/dist/cli/ssg-runner.js +126 -0
  26. package/dist/cli/ssg-runner.js.map +1 -0
  27. package/dist/config/assets-loader.d.ts +11 -0
  28. package/dist/config/assets-loader.d.ts.map +1 -0
  29. package/dist/config/assets-loader.js +46 -0
  30. package/dist/config/assets-loader.js.map +1 -0
  31. package/dist/config/language-loader.d.ts +11 -0
  32. package/dist/config/language-loader.d.ts.map +1 -0
  33. package/dist/config/language-loader.js +61 -0
  34. package/dist/config/language-loader.js.map +1 -0
  35. package/dist/config/language.d.ts +11 -0
  36. package/dist/config/language.d.ts.map +1 -0
  37. package/dist/config/language.js +61 -0
  38. package/dist/config/language.js.map +1 -0
  39. package/dist/config/sidenav-loader.d.ts +14 -0
  40. package/dist/config/sidenav-loader.d.ts.map +1 -0
  41. package/dist/config/sidenav-loader.js +78 -0
  42. package/dist/config/sidenav-loader.js.map +1 -0
  43. package/dist/config/site-loader.d.ts +11 -0
  44. package/dist/config/site-loader.d.ts.map +1 -0
  45. package/dist/config/site-loader.js +72 -0
  46. package/dist/config/site-loader.js.map +1 -0
  47. package/dist/config/site.d.ts +11 -0
  48. package/dist/config/site.d.ts.map +1 -0
  49. package/dist/config/site.js +72 -0
  50. package/dist/config/site.js.map +1 -0
  51. package/dist/config/topnav-loader.d.ts +10 -0
  52. package/dist/config/topnav-loader.d.ts.map +1 -0
  53. package/dist/config/topnav-loader.js +78 -0
  54. package/dist/config/topnav-loader.js.map +1 -0
  55. package/dist/config/translations-loader.d.ts +7 -0
  56. package/dist/config/translations-loader.d.ts.map +1 -0
  57. package/dist/config/translations-loader.js +51 -0
  58. package/dist/config/translations-loader.js.map +1 -0
  59. package/dist/content/content-loader.d.ts +16 -0
  60. package/dist/content/content-loader.d.ts.map +1 -0
  61. package/dist/content/content-loader.js +126 -0
  62. package/dist/content/content-loader.js.map +1 -0
  63. package/dist/content/content-parser.d.ts +12 -0
  64. package/dist/content/content-parser.d.ts.map +1 -0
  65. package/dist/content/content-parser.js +54 -0
  66. package/dist/content/content-parser.js.map +1 -0
  67. package/dist/content/content-transformer.d.ts +17 -0
  68. package/dist/content/content-transformer.d.ts.map +1 -0
  69. package/dist/content/content-transformer.js +94 -0
  70. package/dist/content/content-transformer.js.map +1 -0
  71. package/dist/content/markdoc-config.d.ts +13 -0
  72. package/dist/content/markdoc-config.d.ts.map +1 -0
  73. package/dist/content/markdoc-config.js +210 -0
  74. package/dist/content/markdoc-config.js.map +1 -0
  75. package/dist/content/slug.d.ts +26 -0
  76. package/dist/content/slug.d.ts.map +1 -0
  77. package/dist/content/slug.js +31 -0
  78. package/dist/content/slug.js.map +1 -0
  79. package/dist/pipeline.d.ts +61 -0
  80. package/dist/pipeline.d.ts.map +1 -0
  81. package/dist/pipeline.js +123 -0
  82. package/dist/pipeline.js.map +1 -0
  83. package/dist/types/assets.d.ts +15 -0
  84. package/dist/types/assets.d.ts.map +1 -0
  85. package/dist/types/assets.js +2 -0
  86. package/dist/types/assets.js.map +1 -0
  87. package/dist/types/content.d.ts +114 -32
  88. package/dist/types/content.d.ts.map +1 -1
  89. package/dist/types/content.js +1 -6
  90. package/dist/types/content.js.map +1 -1
  91. package/dist/types/language.d.ts +9 -0
  92. package/dist/types/language.d.ts.map +1 -0
  93. package/dist/types/language.js +2 -0
  94. package/dist/types/language.js.map +1 -0
  95. package/dist/types/navigation.d.ts +24 -36
  96. package/dist/types/navigation.d.ts.map +1 -1
  97. package/dist/types/navigation.js +1 -6
  98. package/dist/types/navigation.js.map +1 -1
  99. package/dist/types/pipeline.d.ts +70 -0
  100. package/dist/types/pipeline.d.ts.map +1 -0
  101. package/dist/types/pipeline.js +2 -0
  102. package/dist/types/pipeline.js.map +1 -0
  103. package/dist/types/site.d.ts +20 -0
  104. package/dist/types/site.d.ts.map +1 -0
  105. package/dist/types/site.js +2 -0
  106. package/dist/types/site.js.map +1 -0
  107. package/dist/utils/lang-utils.d.ts +23 -0
  108. package/dist/utils/lang-utils.d.ts.map +1 -0
  109. package/dist/utils/lang-utils.js +40 -0
  110. package/dist/utils/lang-utils.js.map +1 -0
  111. package/dist/utils/paths.d.ts +25 -0
  112. package/dist/utils/paths.d.ts.map +1 -0
  113. package/dist/utils/paths.js +31 -0
  114. package/dist/utils/paths.js.map +1 -0
  115. package/dist/vite/plugin.d.ts +93 -0
  116. package/dist/vite/plugin.d.ts.map +1 -0
  117. package/dist/vite/plugin.js +435 -0
  118. package/dist/vite/plugin.js.map +1 -0
  119. package/package.json +46 -61
  120. package/src/app/App.module.css +82 -0
  121. package/src/app/App.tsx +95 -0
  122. package/src/app/content/Content.module.css +357 -0
  123. package/src/app/content/Content.tsx +212 -0
  124. package/src/app/content/callout/Callout.module.css +110 -0
  125. package/src/app/content/callout/Callout.tsx +82 -0
  126. package/src/app/content/card/Card.module.css +146 -0
  127. package/src/app/content/card/Card.tsx +110 -0
  128. package/src/app/content/card/CardGrid.module.css +22 -0
  129. package/src/app/content/card/CardGrid.tsx +34 -0
  130. package/src/app/content/code-block/CodeBlock.module.css +237 -0
  131. package/src/app/content/code-block/CodeBlock.tsx +123 -0
  132. package/src/app/content/heading/Heading.module.css +52 -0
  133. package/src/app/content/heading/Heading.tsx +75 -0
  134. package/src/app/content/image/Image.module.css +113 -0
  135. package/src/app/content/image/Image.tsx +98 -0
  136. package/src/app/content/link/ContentLink.tsx +46 -0
  137. package/src/app/data-context.tsx +39 -0
  138. package/src/app/entry-server.tsx +58 -0
  139. package/src/app/footer/Footer.module.css +36 -0
  140. package/src/app/footer/Footer.tsx +28 -0
  141. package/src/app/globals.d.ts +40 -0
  142. package/src/app/header/Header.module.css +205 -0
  143. package/src/app/header/Header.tsx +188 -0
  144. package/src/app/header/LanguagePicker.module.css +97 -0
  145. package/src/app/header/LanguagePicker.tsx +174 -0
  146. package/src/app/header/SearchBar.module.css +92 -0
  147. package/src/app/header/SearchBar.tsx +37 -0
  148. package/src/app/header/SearchModal.module.css +185 -0
  149. package/src/app/header/SearchModal.tsx +245 -0
  150. package/src/app/header/Topnav.module.css +37 -0
  151. package/src/app/header/Topnav.tsx +30 -0
  152. package/src/app/index.css +119 -0
  153. package/src/app/index.html +13 -0
  154. package/src/app/landing/LandingPage.module.css +14 -0
  155. package/src/app/landing/LandingPage.tsx +62 -0
  156. package/src/app/landing/button/Button.module.css +37 -0
  157. package/src/app/landing/button/Button.tsx +50 -0
  158. package/src/app/landing/hero/Hero.module.css +108 -0
  159. package/src/app/landing/hero/Hero.tsx +81 -0
  160. package/src/app/landing/section/Section.module.css +100 -0
  161. package/src/app/landing/section/Section.tsx +61 -0
  162. package/src/app/lang-utils.ts +11 -0
  163. package/src/app/main.tsx +67 -0
  164. package/src/app/not-found/NotFound.module.css +92 -0
  165. package/src/app/not-found/NotFound.tsx +34 -0
  166. package/src/app/routes.tsx +86 -0
  167. package/src/app/sidenav/Sidenav.module.css +239 -0
  168. package/src/app/sidenav/Sidenav.tsx +182 -0
  169. package/src/app/skeleton/Skeleton.module.css +100 -0
  170. package/src/app/skeleton/Skeleton.tsx +75 -0
  171. package/src/app/toc/Toc.module.css +59 -0
  172. package/src/app/toc/Toc.tsx +77 -0
  173. package/src/app/tsconfig.json +18 -0
  174. package/src/app/virtual-modules.d.ts +74 -0
  175. package/dist/assets/fonts/inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  176. package/dist/assets/fonts/inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  177. package/dist/assets/fonts/inter/OFL.txt +0 -93
  178. package/dist/build/Builder.d.ts +0 -92
  179. package/dist/build/Builder.d.ts.map +0 -1
  180. package/dist/build/Builder.js +0 -394
  181. package/dist/build/Builder.js.map +0 -1
  182. package/dist/build/ClientBundler.d.ts +0 -48
  183. package/dist/build/ClientBundler.d.ts.map +0 -1
  184. package/dist/build/ClientBundler.js +0 -169
  185. package/dist/build/ClientBundler.js.map +0 -1
  186. package/dist/build/HtmlGenerator.d.ts +0 -46
  187. package/dist/build/HtmlGenerator.d.ts.map +0 -1
  188. package/dist/build/HtmlGenerator.js +0 -190
  189. package/dist/build/HtmlGenerator.js.map +0 -1
  190. package/dist/build/SearchIndexer.d.ts +0 -31
  191. package/dist/build/SearchIndexer.d.ts.map +0 -1
  192. package/dist/build/SearchIndexer.js +0 -116
  193. package/dist/build/SearchIndexer.js.map +0 -1
  194. package/dist/bundles/client.js +0 -126
  195. package/dist/cli/create-app.d.ts +0 -14
  196. package/dist/cli/create-app.d.ts.map +0 -1
  197. package/dist/cli/create-app.js +0 -241
  198. package/dist/cli/create-app.js.map +0 -1
  199. package/dist/client/App.d.ts +0 -17
  200. package/dist/client/App.d.ts.map +0 -1
  201. package/dist/client/App.js +0 -91
  202. package/dist/client/App.js.map +0 -1
  203. package/dist/client/contexts/ConfigContext.d.ts +0 -22
  204. package/dist/client/contexts/ConfigContext.d.ts.map +0 -1
  205. package/dist/client/contexts/ConfigContext.js +0 -27
  206. package/dist/client/contexts/ConfigContext.js.map +0 -1
  207. package/dist/client/contexts/ContentContext.d.ts +0 -31
  208. package/dist/client/contexts/ContentContext.d.ts.map +0 -1
  209. package/dist/client/contexts/ContentContext.js +0 -46
  210. package/dist/client/contexts/ContentContext.js.map +0 -1
  211. package/dist/client/contexts/SearchContext.d.ts +0 -38
  212. package/dist/client/contexts/SearchContext.d.ts.map +0 -1
  213. package/dist/client/contexts/SearchContext.js +0 -185
  214. package/dist/client/contexts/SearchContext.js.map +0 -1
  215. package/dist/client/contexts/ThemeContext.d.ts +0 -23
  216. package/dist/client/contexts/ThemeContext.d.ts.map +0 -1
  217. package/dist/client/contexts/ThemeContext.js +0 -53
  218. package/dist/client/contexts/ThemeContext.js.map +0 -1
  219. package/dist/client/hooks/useContent.d.ts +0 -12
  220. package/dist/client/hooks/useContent.d.ts.map +0 -1
  221. package/dist/client/hooks/useContent.js +0 -74
  222. package/dist/client/hooks/useContent.js.map +0 -1
  223. package/dist/client/hooks/useNavigation.d.ts +0 -15
  224. package/dist/client/hooks/useNavigation.d.ts.map +0 -1
  225. package/dist/client/hooks/useNavigation.js +0 -101
  226. package/dist/client/hooks/useNavigation.js.map +0 -1
  227. package/dist/client/hooks/useSearch.d.ts +0 -22
  228. package/dist/client/hooks/useSearch.d.ts.map +0 -1
  229. package/dist/client/hooks/useSearch.js +0 -64
  230. package/dist/client/hooks/useSearch.js.map +0 -1
  231. package/dist/client/main.d.ts +0 -5
  232. package/dist/client/main.d.ts.map +0 -1
  233. package/dist/client/main.js +0 -66
  234. package/dist/client/main.js.map +0 -1
  235. package/dist/components/Callout.d.ts +0 -9
  236. package/dist/components/Callout.d.ts.map +0 -1
  237. package/dist/components/Callout.js +0 -24
  238. package/dist/components/Callout.js.map +0 -1
  239. package/dist/components/Card.d.ts +0 -10
  240. package/dist/components/Card.d.ts.map +0 -1
  241. package/dist/components/Card.js +0 -15
  242. package/dist/components/Card.js.map +0 -1
  243. package/dist/components/CardGrid.d.ts +0 -8
  244. package/dist/components/CardGrid.d.ts.map +0 -1
  245. package/dist/components/CardGrid.js +0 -9
  246. package/dist/components/CardGrid.js.map +0 -1
  247. package/dist/components/CodeBlock.d.ts +0 -28
  248. package/dist/components/CodeBlock.d.ts.map +0 -1
  249. package/dist/components/CodeBlock.js +0 -80
  250. package/dist/components/CodeBlock.js.map +0 -1
  251. package/dist/components/ContentPage.d.ts +0 -9
  252. package/dist/components/ContentPage.d.ts.map +0 -1
  253. package/dist/components/ContentPage.js +0 -102
  254. package/dist/components/ContentPage.js.map +0 -1
  255. package/dist/components/Header.d.ts +0 -14
  256. package/dist/components/Header.d.ts.map +0 -1
  257. package/dist/components/Header.js +0 -30
  258. package/dist/components/Header.js.map +0 -1
  259. package/dist/components/Heading.d.ts +0 -16
  260. package/dist/components/Heading.d.ts.map +0 -1
  261. package/dist/components/Heading.js +0 -31
  262. package/dist/components/Heading.js.map +0 -1
  263. package/dist/components/Image.d.ts +0 -8
  264. package/dist/components/Image.d.ts.map +0 -1
  265. package/dist/components/Image.js +0 -24
  266. package/dist/components/Image.js.map +0 -1
  267. package/dist/components/Layout.d.ts +0 -14
  268. package/dist/components/Layout.d.ts.map +0 -1
  269. package/dist/components/Layout.js +0 -32
  270. package/dist/components/Layout.js.map +0 -1
  271. package/dist/components/MarkdocRenderer.d.ts +0 -15
  272. package/dist/components/MarkdocRenderer.d.ts.map +0 -1
  273. package/dist/components/MarkdocRenderer.js +0 -73
  274. package/dist/components/MarkdocRenderer.js.map +0 -1
  275. package/dist/components/MobileMenu.d.ts +0 -14
  276. package/dist/components/MobileMenu.d.ts.map +0 -1
  277. package/dist/components/MobileMenu.js +0 -45
  278. package/dist/components/MobileMenu.js.map +0 -1
  279. package/dist/components/PageNavigation.d.ts +0 -9
  280. package/dist/components/PageNavigation.d.ts.map +0 -1
  281. package/dist/components/PageNavigation.js +0 -23
  282. package/dist/components/PageNavigation.js.map +0 -1
  283. package/dist/components/SearchModal.d.ts +0 -9
  284. package/dist/components/SearchModal.d.ts.map +0 -1
  285. package/dist/components/SearchModal.js +0 -74
  286. package/dist/components/SearchModal.js.map +0 -1
  287. package/dist/components/SideNav.d.ts +0 -9
  288. package/dist/components/SideNav.d.ts.map +0 -1
  289. package/dist/components/SideNav.js +0 -66
  290. package/dist/components/SideNav.js.map +0 -1
  291. package/dist/components/TableOfContents.d.ts +0 -10
  292. package/dist/components/TableOfContents.d.ts.map +0 -1
  293. package/dist/components/TableOfContents.js +0 -151
  294. package/dist/components/TableOfContents.js.map +0 -1
  295. package/dist/config/ConfigLoader.d.ts +0 -50
  296. package/dist/config/ConfigLoader.d.ts.map +0 -1
  297. package/dist/config/ConfigLoader.js +0 -214
  298. package/dist/config/ConfigLoader.js.map +0 -1
  299. package/dist/config/StyleCompiler.d.ts +0 -17
  300. package/dist/config/StyleCompiler.d.ts.map +0 -1
  301. package/dist/config/StyleCompiler.js +0 -116
  302. package/dist/config/StyleCompiler.js.map +0 -1
  303. package/dist/config/ThemeGenerator.d.ts +0 -14
  304. package/dist/config/ThemeGenerator.d.ts.map +0 -1
  305. package/dist/config/ThemeGenerator.js +0 -129
  306. package/dist/config/ThemeGenerator.js.map +0 -1
  307. package/dist/content/ContentLoader.d.ts +0 -70
  308. package/dist/content/ContentLoader.d.ts.map +0 -1
  309. package/dist/content/ContentLoader.js +0 -146
  310. package/dist/content/ContentLoader.js.map +0 -1
  311. package/dist/content/ContentProcessor.d.ts +0 -84
  312. package/dist/content/ContentProcessor.d.ts.map +0 -1
  313. package/dist/content/ContentProcessor.js +0 -380
  314. package/dist/content/ContentProcessor.js.map +0 -1
  315. package/dist/content/RouteManager.d.ts +0 -69
  316. package/dist/content/RouteManager.d.ts.map +0 -1
  317. package/dist/content/RouteManager.js +0 -143
  318. package/dist/content/RouteManager.js.map +0 -1
  319. package/dist/styles/components/callout.d.ts +0 -11
  320. package/dist/styles/components/callout.d.ts.map +0 -1
  321. package/dist/styles/components/callout.js +0 -87
  322. package/dist/styles/components/callout.js.map +0 -1
  323. package/dist/styles/components/card.d.ts +0 -11
  324. package/dist/styles/components/card.d.ts.map +0 -1
  325. package/dist/styles/components/card.js +0 -179
  326. package/dist/styles/components/card.js.map +0 -1
  327. package/dist/styles/components/codeblock.d.ts +0 -11
  328. package/dist/styles/components/codeblock.d.ts.map +0 -1
  329. package/dist/styles/components/codeblock.js +0 -251
  330. package/dist/styles/components/codeblock.js.map +0 -1
  331. package/dist/styles/components/content.d.ts +0 -11
  332. package/dist/styles/components/content.d.ts.map +0 -1
  333. package/dist/styles/components/content.js +0 -197
  334. package/dist/styles/components/content.js.map +0 -1
  335. package/dist/styles/components/fonts.d.ts +0 -11
  336. package/dist/styles/components/fonts.d.ts.map +0 -1
  337. package/dist/styles/components/fonts.js +0 -34
  338. package/dist/styles/components/fonts.js.map +0 -1
  339. package/dist/styles/components/header.d.ts +0 -11
  340. package/dist/styles/components/header.d.ts.map +0 -1
  341. package/dist/styles/components/header.js +0 -293
  342. package/dist/styles/components/header.js.map +0 -1
  343. package/dist/styles/components/heading.d.ts +0 -11
  344. package/dist/styles/components/heading.d.ts.map +0 -1
  345. package/dist/styles/components/heading.js +0 -115
  346. package/dist/styles/components/heading.js.map +0 -1
  347. package/dist/styles/components/layout.d.ts +0 -11
  348. package/dist/styles/components/layout.d.ts.map +0 -1
  349. package/dist/styles/components/layout.js +0 -79
  350. package/dist/styles/components/layout.js.map +0 -1
  351. package/dist/styles/components/mobilemenu.d.ts +0 -11
  352. package/dist/styles/components/mobilemenu.d.ts.map +0 -1
  353. package/dist/styles/components/mobilemenu.js +0 -112
  354. package/dist/styles/components/mobilemenu.js.map +0 -1
  355. package/dist/styles/components/reset.d.ts +0 -11
  356. package/dist/styles/components/reset.d.ts.map +0 -1
  357. package/dist/styles/components/reset.js +0 -131
  358. package/dist/styles/components/reset.js.map +0 -1
  359. package/dist/styles/components/searchmodal.d.ts +0 -11
  360. package/dist/styles/components/searchmodal.d.ts.map +0 -1
  361. package/dist/styles/components/searchmodal.js +0 -333
  362. package/dist/styles/components/searchmodal.js.map +0 -1
  363. package/dist/styles/components/sidenav.d.ts +0 -11
  364. package/dist/styles/components/sidenav.d.ts.map +0 -1
  365. package/dist/styles/components/sidenav.js +0 -212
  366. package/dist/styles/components/sidenav.js.map +0 -1
  367. package/dist/styles/components/toc.d.ts +0 -11
  368. package/dist/styles/components/toc.d.ts.map +0 -1
  369. package/dist/styles/components/toc.js +0 -120
  370. package/dist/styles/components/toc.js.map +0 -1
  371. package/dist/styles/components/typography.d.ts +0 -11
  372. package/dist/styles/components/typography.d.ts.map +0 -1
  373. package/dist/styles/components/typography.js +0 -248
  374. package/dist/styles/components/typography.js.map +0 -1
  375. package/dist/styles/components/utility.d.ts +0 -11
  376. package/dist/styles/components/utility.d.ts.map +0 -1
  377. package/dist/styles/components/utility.js +0 -231
  378. package/dist/styles/components/utility.js.map +0 -1
  379. package/dist/styles/types.d.ts +0 -79
  380. package/dist/styles/types.d.ts.map +0 -1
  381. package/dist/styles/types.js +0 -7
  382. package/dist/styles/types.js.map +0 -1
  383. package/dist/styles/utils.d.ts +0 -21
  384. package/dist/styles/utils.d.ts.map +0 -1
  385. package/dist/styles/utils.js +0 -50
  386. package/dist/styles/utils.js.map +0 -1
  387. package/dist/styles/variables/main.d.ts +0 -15
  388. package/dist/styles/variables/main.d.ts.map +0 -1
  389. package/dist/styles/variables/main.js +0 -116
  390. package/dist/styles/variables/main.js.map +0 -1
  391. package/dist/types/config.d.ts +0 -43
  392. package/dist/types/config.d.ts.map +0 -1
  393. package/dist/types/config.js +0 -7
  394. package/dist/types/config.js.map +0 -1
  395. package/dist/utils/language-utils.d.ts +0 -41
  396. package/dist/utils/language-utils.d.ts.map +0 -1
  397. package/dist/utils/language-utils.js +0 -79
  398. package/dist/utils/language-utils.js.map +0 -1
  399. package/dist/utils/slugify.d.ts +0 -20
  400. package/dist/utils/slugify.d.ts.map +0 -1
  401. package/dist/utils/slugify.js +0 -44
  402. package/dist/utils/slugify.js.map +0 -1
  403. package/templates/default/config/favicon.ico +0 -0
  404. package/templates/default/config/logo-dark.png +0 -0
  405. package/templates/default/config/logo.png +0 -0
  406. package/templates/default/config/sidenav.yaml +0 -36
  407. package/templates/default/config/site.json +0 -16
  408. package/templates/default/config/styles/main.json +0 -6
  409. package/templates/default/config/styles/typography.json +0 -6
  410. package/templates/default/content/en/changelog.md +0 -35
  411. package/templates/default/content/en/faq.md +0 -50
  412. package/templates/default/content/en/field-manual/engines.md +0 -59
  413. package/templates/default/content/en/field-manual/relativity.md +0 -46
  414. package/templates/default/content/en/field-manual/safety.md +0 -44
  415. package/templates/default/content/en/field-manual.md +0 -22
  416. package/templates/default/content/en/flight-school/navigation.md +0 -61
  417. package/templates/default/content/en/flight-school/primer.md +0 -64
  418. package/templates/default/content/en/flight-school.md +0 -48
  419. package/templates/default/content/en/index.md +0 -83
  420. package/templates/default/content/en/ship-systems/flux-sails.md +0 -33
  421. package/templates/default/content/en/ship-systems/photonic-core.md +0 -39
  422. package/templates/default/content/en/ship-systems.md +0 -25
  423. package/templates/default/package.json +0 -21
  424. package/templates/default/public/icons/academy.svg +0 -15
  425. package/templates/default/public/icons/manual.svg +0 -16
  426. package/templates/default/public/icons/relativity.svg +0 -16
  427. package/templates/default/public/icons/systems.svg +0 -14
  428. package/templates/default/public/icons/warning.svg +0 -14
  429. package/templates/default/public/images/flux-sails.svg +0 -33
  430. package/templates/default/public/images/photonic-core.svg +0 -44
  431. package/templates/default/public/images/starwake.svg +0 -49
@@ -0,0 +1,210 @@
1
+ import Markdoc from '@markdoc/markdoc';
2
+ /**
3
+ * Walks a renderable subtree and concatenates its text content.
4
+ * Used to derive the default heading text for slug generation.
5
+ *
6
+ * Note: we use `Markdoc.Tag.isTag` rather than a named `Tag` import because
7
+ * the published `@markdoc/markdoc` package is CommonJS and only exposes Tag
8
+ * as a static member of its default export. Named imports fail at runtime
9
+ * in Node's ESM loader even though the .d.ts claims they exist.
10
+ */
11
+ function extractText(children) {
12
+ let text = '';
13
+ for (const child of children) {
14
+ if (typeof child === 'string')
15
+ text += child;
16
+ else if (Markdoc.Tag.isTag(child))
17
+ text += extractText(child.children);
18
+ }
19
+ return text;
20
+ }
21
+ /**
22
+ * Custom heading node.
23
+ *
24
+ * Renders a standard `<h{level}>` tag and guarantees every heading has a
25
+ * stable `id` attribute:
26
+ * - If the author supplied `{% #explicit-id %}`, that wins.
27
+ * - Otherwise a per-page slugger (passed via config.variables.slugger)
28
+ * generates one, deduplicating within the page.
29
+ *
30
+ * The slugger instance is the same one the transformer uses to derive the
31
+ * TOC, so TOC anchor IDs are guaranteed to match rendered heading IDs.
32
+ */
33
+ const heading = {
34
+ children: ['inline'],
35
+ attributes: {
36
+ id: { type: String },
37
+ level: { type: Number, required: true, default: 1 },
38
+ },
39
+ transform(node, config) {
40
+ const attributes = node.transformAttributes(config);
41
+ const children = node.transformChildren(config);
42
+ const slugger = config.variables?.slugger;
43
+ const explicitId = typeof attributes['id'] === 'string' && attributes['id'] !== ''
44
+ ? attributes['id']
45
+ : undefined;
46
+ const text = extractText(children);
47
+ const id = explicitId ?? (slugger ? slugger(text) : text);
48
+ const { level, id: _ignored, ...rest } = attributes;
49
+ void _ignored;
50
+ return new Markdoc.Tag('Heading', { ...rest, id, level }, children);
51
+ },
52
+ };
53
+ /**
54
+ * Custom link node — routes all Markdoc inline links to the ContentLink
55
+ * React component, which uses React Router <Link> for internal paths and
56
+ * a plain <a target="_blank"> for external URLs. Anchor-only links (#id)
57
+ * pass through as plain <a> elements (in-page scroll, no routing needed).
58
+ *
59
+ * Without this override Markdoc emits a plain <a href="..."> for every
60
+ * markdown link, which triggers a full browser navigation instead of
61
+ * client-side routing.
62
+ */
63
+ const link = {
64
+ render: 'ContentLink',
65
+ children: ['strong', 'em', 'code', 's', 'html', 'text'],
66
+ attributes: {
67
+ href: { type: String, required: true },
68
+ title: { type: String },
69
+ },
70
+ };
71
+ /**
72
+ * Routes fenced code blocks to the CodeBlock React component.
73
+ * Markdoc's built-in fence node provides `language` and `content` attributes.
74
+ */
75
+ const fence = {
76
+ render: 'CodeBlock',
77
+ attributes: {
78
+ language: { type: String },
79
+ content: { type: String, render: true },
80
+ },
81
+ };
82
+ /**
83
+ * Routes inline images to the Image React component, which adds a lightbox.
84
+ * Markdoc's built-in image node provides `src`, `alt`, and `title` attributes.
85
+ */
86
+ const image = {
87
+ render: 'Image',
88
+ attributes: {
89
+ src: { type: String },
90
+ alt: { type: String },
91
+ title: { type: String },
92
+ },
93
+ };
94
+ /**
95
+ * Callout block tag — renders note, warning, danger, and tip callout boxes.
96
+ *
97
+ * Authors use: {% callout type="note" title="..." %}...{% /callout %}
98
+ * The `children` array lists the Markdoc node types allowed inside, keeping
99
+ * callout content intentionally limited (no nested headings or images).
100
+ */
101
+ const callout = {
102
+ render: 'Callout',
103
+ children: ['paragraph', 'list', 'fence', 'blockquote'],
104
+ attributes: {
105
+ type: { type: String, default: 'note', matches: ['note', 'warning', 'danger', 'tip'] },
106
+ title: { type: String },
107
+ },
108
+ };
109
+ /**
110
+ * Card tag — a single card with optional icon, image, link, and badge.
111
+ *
112
+ * Variant is inferred from attributes: `image` → image card, `icon` → icon
113
+ * card, neither → plain. Self-closing (no body) → compact mode.
114
+ * Authors use: {% card title="..." path="..." icon="..." %}Description{% /card %}
115
+ * Must be used inside {% cardGrid %}.
116
+ */
117
+ const card = {
118
+ render: 'Card',
119
+ children: ['paragraph', 'inline', 'list'],
120
+ attributes: {
121
+ title: { type: String, required: true },
122
+ path: { type: String },
123
+ icon: { type: String },
124
+ image: { type: String },
125
+ tag: { type: String },
126
+ },
127
+ };
128
+ /**
129
+ * CardGrid tag — responsive grid container for card tags.
130
+ *
131
+ * `cols` controls the number of columns (1–4, default 3). The grid
132
+ * collapses responsively: 2-col at medium viewports, 1-col at small.
133
+ * Authors use: {% cardGrid cols="3" %}...{% /cardGrid %}
134
+ */
135
+ const cardGrid = {
136
+ render: 'CardGrid',
137
+ children: ['tag'],
138
+ attributes: {
139
+ cols: { type: String, default: '3' },
140
+ },
141
+ };
142
+ /**
143
+ * Hero tag — full-width landing page hero section.
144
+ *
145
+ * Layout is inferred: `image` present → split (text + image), absent → centered.
146
+ * `background` accepts an image path or any CSS color value.
147
+ * CTA buttons are passed as children ({% button %} tags).
148
+ * Authors use: {% hero title="..." description="..." image="..." background="..." %}
149
+ * {% button path="..." %}Label{% /button %}
150
+ * {% /hero %}
151
+ */
152
+ const hero = {
153
+ render: 'Hero',
154
+ children: ['tag', 'paragraph'],
155
+ attributes: {
156
+ title: { type: String, required: true },
157
+ titleAccent: { type: String },
158
+ description: { type: String },
159
+ image: { type: String },
160
+ background: { type: String },
161
+ titleColor: { type: String },
162
+ titleAccentColor: { type: String },
163
+ descriptionColor: { type: String },
164
+ },
165
+ };
166
+ /**
167
+ * Section tag — full-width landing page content block.
168
+ *
169
+ * Optional `title` renders an <h2>. `background` accepts "subtle",
170
+ * an image path, or any CSS color value.
171
+ * Authors use: {% section title="..." background="subtle" %}...{% /section %}
172
+ */
173
+ const section = {
174
+ render: 'Section',
175
+ children: ['heading', 'paragraph', 'list', 'fence', 'blockquote', 'tag', 'hr'],
176
+ attributes: {
177
+ title: { type: String },
178
+ background: { type: String },
179
+ },
180
+ };
181
+ /**
182
+ * Button tag — styled CTA link, usable in landing pages and content pages.
183
+ *
184
+ * Internal paths use React Router Link; external URLs open in a new tab.
185
+ * Authors use: {% button path="..." %}Label{% /button %}
186
+ */
187
+ const button = {
188
+ render: 'Button',
189
+ children: ['paragraph', 'inline', 'text', 'strong', 'em'],
190
+ attributes: {
191
+ path: { type: String, required: true },
192
+ },
193
+ };
194
+ /**
195
+ * The default Markdoc config used by Mordoc's content transformer.
196
+ *
197
+ * Currently minimal:
198
+ * - Custom `heading` node (adds stable, deduplicated anchor IDs).
199
+ * - Custom `fence` node (routes to CodeBlock for syntax highlighting).
200
+ * - Custom `image` node (routes to Image for lightbox support).
201
+ * - Custom `callout` tag (routes to Callout for note/warning/danger boxes).
202
+ * - Custom `card` / `cardGrid` tags (routes to Card / CardGrid components).
203
+ */
204
+ export function createDefaultMarkdocConfig() {
205
+ return {
206
+ nodes: { heading, link, fence, image },
207
+ tags: { callout, card, cardGrid, hero, section, button },
208
+ };
209
+ }
210
+ //# sourceMappingURL=markdoc-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdoc-config.js","sourceRoot":"","sources":["../../src/content/markdoc-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Normalizes a string into a URL-safe slug.
3
+ * Lowercases, strips diacritics, collapses non-alphanumeric runs to hyphens,
4
+ * and trims leading/trailing hyphens.
5
+ *
6
+ * This is the pure form — no collision handling. For heading anchors within
7
+ * a single page, use {@link createSlugger} instead so duplicate headings
8
+ * produce distinct IDs.
9
+ */
10
+ export declare function slugify(text: string): string;
11
+ /**
12
+ * A stateful slugger that remembers IDs it has already issued and appends
13
+ * a numeric suffix to disambiguate duplicates.
14
+ *
15
+ * Each call returns a unique slug within the lifetime of this instance.
16
+ * The first occurrence of a base slug is returned as-is; subsequent
17
+ * occurrences are suffixed: `overview`, `overview-2`, `overview-3`, …
18
+ *
19
+ * Intended usage: one slugger per page. Both the TOC extractor and the
20
+ * Markdoc heading transform for a given page must share the same instance
21
+ * (or apply the same sequence in the same order) so anchor IDs in the
22
+ * rendered HTML match the IDs in the TOC.
23
+ */
24
+ export type Slugger = (text: string) => string;
25
+ export declare function createSlugger(): Slugger;
26
+ //# sourceMappingURL=slug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/content/slug.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAE/C,wBAAgB,aAAa,IAAI,OAAO,CAavC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Normalizes a string into a URL-safe slug.
3
+ * Lowercases, strips diacritics, collapses non-alphanumeric runs to hyphens,
4
+ * and trims leading/trailing hyphens.
5
+ *
6
+ * This is the pure form — no collision handling. For heading anchors within
7
+ * a single page, use {@link createSlugger} instead so duplicate headings
8
+ * produce distinct IDs.
9
+ */
10
+ export function slugify(text) {
11
+ return text
12
+ .toLowerCase()
13
+ .normalize('NFD').replace(/[\u0300-\u036f]/g, '')
14
+ .replace(/[^a-z0-9]+/g, '-')
15
+ .replace(/^-+|-+$/g, '');
16
+ }
17
+ export function createSlugger() {
18
+ const used = new Set();
19
+ return (text) => {
20
+ const base = slugify(text);
21
+ let candidate = base;
22
+ let n = 2;
23
+ while (used.has(candidate)) {
24
+ candidate = `${base}-${n}`;
25
+ n += 1;
26
+ }
27
+ used.add(candidate);
28
+ return candidate;
29
+ };
30
+ }
31
+ //# sourceMappingURL=slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.js","sourceRoot":"","sources":["../../src/content/slug.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAiBD,MAAM,UAAU,aAAa;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,IAAY,EAAU,EAAE;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YAC3B,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { loadNavTranslations } from './config/translations-loader.js';
2
+ export { loadNavTranslations };
3
+ import type { ContentEntry, TransformedPage } from './types/content.js';
4
+ import type { MordocData, NavigationConfig, ShellData } from './types/pipeline.js';
5
+ /**
6
+ * Loads the project's navigation configuration.
7
+ *
8
+ * If `config/navigation/topnav.yaml` exists, every sidenav file it
9
+ * references is loaded and the resolved tree is returned. Otherwise the
10
+ * single `config/navigation/sidenav.yaml` is loaded as a site-wide sidenav.
11
+ *
12
+ * Exported separately from `runPipeline` because the Vite plugin's HMR
13
+ * handler will need to re-resolve navigation independently when any nav
14
+ * file changes — without re-reading site.json or re-transforming content.
15
+ */
16
+ export declare function loadNavigation(projectRoot: string): Promise<NavigationConfig>;
17
+ /**
18
+ * Runs the full Mordoc data pipeline for a project.
19
+ *
20
+ * Stages, in order:
21
+ * 1. Load every config file (site, language, navigation, assets).
22
+ * 2. Discover content files and build the route manifest.
23
+ * 3. Parse each markdown file into frontmatter + Markdoc AST.
24
+ * 4. Transform each AST into a renderable tree with TOC.
25
+ *
26
+ * Returns a single, JSON-serializable `MordocData`. This is the canonical
27
+ * hand-off shape consumed by both the Vite plugin (in dev) and the SSG
28
+ * build (in prod). The pipeline itself knows nothing about either —
29
+ * keeping it framework-agnostic means new consumers (a CI checker, a
30
+ * different bundler) can be added without touching this code.
31
+ *
32
+ * @param projectRoot - Absolute path to the user's project root.
33
+ */
34
+ export declare function runPipeline(projectRoot: string): Promise<MordocData>;
35
+ /**
36
+ * Re-runs the parse + transform stages for a single content entry.
37
+ *
38
+ * This is the per-file granular update primitive the Vite plugin's
39
+ * `handleHotUpdate` will call when one markdown file changes — it returns
40
+ * a fresh `TransformedPage` for that entry alone, without touching any
41
+ * other page or any config.
42
+ *
43
+ * The wrapping `ContentMap` is synthetic; `parseContent` only iterates
44
+ * `entries`, so a one-element list is sufficient.
45
+ */
46
+ export declare function reparsePage(entry: ContentEntry): Promise<TransformedPage>;
47
+ /**
48
+ * Stable fingerprint of which routes exist — used to decide whether a
49
+ * config or content-tree edit requires a full browser reload (v1 skips
50
+ * mutating the route table client-side when pages are added or removed).
51
+ */
52
+ export declare function pagesRouteSignature(pages: TransformedPage[]): string;
53
+ /** Projects `MordocData` to the `ShellData` consumed by the React shell and SSR renderer. */
54
+ export declare function toShellData(data: MordocData): ShellData;
55
+ /**
56
+ * Replaces one page in an in-memory `MordocData` after `reparsePage`.
57
+ * Matches by normalized absolute `filePath` so Windows drives and
58
+ * separators stay consistent with the dev watcher.
59
+ */
60
+ export declare function replaceTransformedPage(data: MordocData, page: TransformedPage): void;
61
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAOnF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsB1E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAa/E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAKpE;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAYvD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAQpF"}
@@ -0,0 +1,123 @@
1
+ import { loadSiteConfig } from './config/site-loader.js';
2
+ import { loadLanguageConfig } from './config/language-loader.js';
3
+ import { loadTopnavConfig } from './config/topnav-loader.js';
4
+ import { loadSidenavConfig } from './config/sidenav-loader.js';
5
+ import { loadAssets } from './config/assets-loader.js';
6
+ import { loadContent } from './content/content-loader.js';
7
+ import { loadNavTranslations } from './config/translations-loader.js';
8
+ import { parseContent } from './content/content-parser.js';
9
+ import { transformContent } from './content/content-transformer.js';
10
+ import path from 'node:path';
11
+ export { loadNavTranslations };
12
+ /**
13
+ * Loads the project's navigation configuration.
14
+ *
15
+ * If `config/navigation/topnav.yaml` exists, every sidenav file it
16
+ * references is loaded and the resolved tree is returned. Otherwise the
17
+ * single `config/navigation/sidenav.yaml` is loaded as a site-wide sidenav.
18
+ *
19
+ * Exported separately from `runPipeline` because the Vite plugin's HMR
20
+ * handler will need to re-resolve navigation independently when any nav
21
+ * file changes — without re-reading site.json or re-transforming content.
22
+ */
23
+ export async function loadNavigation(projectRoot) {
24
+ const topnav = await loadTopnavConfig(projectRoot);
25
+ if (topnav) {
26
+ return { kind: 'topnav', topnav };
27
+ }
28
+ const sidenav = await loadSidenavConfig(projectRoot);
29
+ return { kind: 'sidenav', sidenav };
30
+ }
31
+ /**
32
+ * Runs the full Mordoc data pipeline for a project.
33
+ *
34
+ * Stages, in order:
35
+ * 1. Load every config file (site, language, navigation, assets).
36
+ * 2. Discover content files and build the route manifest.
37
+ * 3. Parse each markdown file into frontmatter + Markdoc AST.
38
+ * 4. Transform each AST into a renderable tree with TOC.
39
+ *
40
+ * Returns a single, JSON-serializable `MordocData`. This is the canonical
41
+ * hand-off shape consumed by both the Vite plugin (in dev) and the SSG
42
+ * build (in prod). The pipeline itself knows nothing about either —
43
+ * keeping it framework-agnostic means new consumers (a CI checker, a
44
+ * different bundler) can be added without touching this code.
45
+ *
46
+ * @param projectRoot - Absolute path to the user's project root.
47
+ */
48
+ export async function runPipeline(projectRoot) {
49
+ const site = await loadSiteConfig(projectRoot);
50
+ const language = await loadLanguageConfig(projectRoot, site.defaultLanguage);
51
+ const navigation = await loadNavigation(projectRoot);
52
+ const assets = await loadAssets(projectRoot);
53
+ const contentMap = await loadContent(projectRoot, site.defaultLanguage, language?.languages ?? null);
54
+ const translations = await loadNavTranslations(projectRoot, language?.languages ?? [site.defaultLanguage], site.defaultLanguage);
55
+ const parsedContent = await parseContent(contentMap);
56
+ const transformedContent = transformContent(parsedContent);
57
+ return { site, language, navigation, assets, pages: transformedContent, translations };
58
+ }
59
+ /**
60
+ * Re-runs the parse + transform stages for a single content entry.
61
+ *
62
+ * This is the per-file granular update primitive the Vite plugin's
63
+ * `handleHotUpdate` will call when one markdown file changes — it returns
64
+ * a fresh `TransformedPage` for that entry alone, without touching any
65
+ * other page or any config.
66
+ *
67
+ * The wrapping `ContentMap` is synthetic; `parseContent` only iterates
68
+ * `entries`, so a one-element list is sufficient.
69
+ */
70
+ export async function reparsePage(entry) {
71
+ const parsed = await parseContent({
72
+ entries: [entry],
73
+ languages: [entry.language],
74
+ });
75
+ const [transformed] = transformContent(parsed);
76
+ if (!transformed) {
77
+ // parseContent + transformContent both produce one output per input
78
+ // entry, so this branch should be unreachable. Guarded so a future
79
+ // refactor can't silently return undefined.
80
+ throw new Error(`reparsePage produced no result for ${entry.filePath}`);
81
+ }
82
+ return transformed;
83
+ }
84
+ /**
85
+ * Stable fingerprint of which routes exist — used to decide whether a
86
+ * config or content-tree edit requires a full browser reload (v1 skips
87
+ * mutating the route table client-side when pages are added or removed).
88
+ */
89
+ export function pagesRouteSignature(pages) {
90
+ return pages
91
+ .map((p) => `${p.entry.language}\t${p.entry.routePath}`)
92
+ .sort()
93
+ .join('|');
94
+ }
95
+ /** Projects `MordocData` to the `ShellData` consumed by the React shell and SSR renderer. */
96
+ export function toShellData(data) {
97
+ return {
98
+ site: data.site,
99
+ language: data.language,
100
+ navigation: data.navigation,
101
+ assets: data.assets,
102
+ pagesIndex: data.pages.map((p) => ({
103
+ routePath: p.entry.routePath,
104
+ language: p.entry.language,
105
+ })),
106
+ translations: data.translations,
107
+ };
108
+ }
109
+ /**
110
+ * Replaces one page in an in-memory `MordocData` after `reparsePage`.
111
+ * Matches by normalized absolute `filePath` so Windows drives and
112
+ * separators stay consistent with the dev watcher.
113
+ */
114
+ export function replaceTransformedPage(data, page) {
115
+ const target = path.normalize(page.entry.filePath);
116
+ const idx = data.pages.findIndex((p) => path.normalize(p.entry.filePath) === target);
117
+ if (idx === -1) {
118
+ throw new Error(`replaceTransformedPage: no page for ${page.entry.filePath}`);
119
+ }
120
+ data.pages[idx] = page;
121
+ data.pages.sort((a, b) => a.entry.routePath.localeCompare(b.entry.routePath));
122
+ }
123
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resolved asset references discovered from config/assets/.
3
+ * Values are absolute disk paths in the pipeline; the Vite plugin and build
4
+ * step rewrite them to `/_assets/<basename>` web URLs before they reach the
5
+ * browser. All fields are optional — the UI renders gracefully without them.
6
+ */
7
+ export interface ResolvedAssets {
8
+ /** Favicon path or URL, or null if not present. */
9
+ favicon: string | null;
10
+ /** Light-mode logo path or URL, or null if not present. */
11
+ logo: string | null;
12
+ /** Dark-mode logo path or URL. Falls back to logo if not present. */
13
+ logoDark: string | null;
14
+ }
15
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/types/assets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/types/assets.ts"],"names":[],"mappings":""}