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,98 @@
1
+ /**
2
+ * Image — inline content image with a lightbox popup.
3
+ *
4
+ * Renders a styled <figure> inline; clicking it opens a full-screen overlay
5
+ * via a React portal mounted on document.body. The portal approach avoids
6
+ * z-index stacking context fights with the fixed header and sidebar.
7
+ *
8
+ * SSR safety: the portal is only rendered when `isOpen` is true, which starts
9
+ * as false — so document.body is never accessed during server-side rendering.
10
+ *
11
+ * Wired via the `image` node override in markdoc-config.ts, registered in
12
+ * Content.tsx's components map.
13
+ */
14
+
15
+ import { useState, useEffect, useCallback } from 'react';
16
+ import { createPortal } from 'react-dom';
17
+ import styles from './Image.module.css';
18
+
19
+ interface ImageProps {
20
+ src: string;
21
+ alt?: string;
22
+ title?: string;
23
+ }
24
+
25
+ export function Image({ src, alt = '', title }: ImageProps) {
26
+ const [isOpen, setIsOpen] = useState(false);
27
+
28
+ const open = () => setIsOpen(true);
29
+
30
+ const close = useCallback(() => setIsOpen(false), []);
31
+
32
+ // Escape key closes the lightbox; body scroll is locked while open
33
+ useEffect(() => {
34
+ if (!isOpen) return;
35
+
36
+ const handleKey = (e: KeyboardEvent) => {
37
+ if (e.key === 'Escape') close();
38
+ };
39
+
40
+ document.body.style.overflow = 'hidden';
41
+ window.addEventListener('keydown', handleKey);
42
+
43
+ return () => {
44
+ document.body.style.overflow = '';
45
+ window.removeEventListener('keydown', handleKey);
46
+ };
47
+ }, [isOpen, close]);
48
+
49
+ const lightbox = (
50
+ <div
51
+ className={styles.overlay}
52
+ onClick={close}
53
+ role="dialog"
54
+ aria-modal="true"
55
+ aria-label={alt || 'Image preview'}
56
+ >
57
+ <button
58
+ className={styles.closeButton}
59
+ onClick={close}
60
+ aria-label="Close image preview"
61
+ type="button"
62
+ >
63
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
64
+ <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
65
+ </svg>
66
+ </button>
67
+
68
+ <div
69
+ className={styles.lightboxImageWrap}
70
+ onClick={(e) => e.stopPropagation()}
71
+ >
72
+ <img
73
+ src={src}
74
+ alt={alt}
75
+ className={styles.lightboxImage}
76
+ />
77
+ {title && <p className={styles.lightboxCaption}>{title}</p>}
78
+ </div>
79
+ </div>
80
+ );
81
+
82
+ return (
83
+ <>
84
+ <figure className={styles.figure} onClick={open}>
85
+ <img
86
+ src={src}
87
+ alt={alt}
88
+ className={styles.image}
89
+ />
90
+ {title && <figcaption className={styles.caption}>{title}</figcaption>}
91
+ </figure>
92
+
93
+ {isOpen && createPortal(lightbox, document.body)}
94
+ </>
95
+ );
96
+ }
97
+
98
+ export default Image;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ContentLink — SPA-aware link component for Markdoc-rendered prose.
3
+ *
4
+ * Replaces Markdoc's default `<a>` output so that internal route links use
5
+ * React Router's <Link> (client-side navigation, no page reload) while
6
+ * external URLs open in a new tab. Anchor-only links (#heading) are left as
7
+ * plain <a> elements — they are in-page scrolls and do not involve routing.
8
+ *
9
+ * Registered as a custom Markdoc `link` node in markdoc-config.ts and wired
10
+ * into the components map in Content.tsx and LandingPage.tsx.
11
+ */
12
+
13
+ import { Link } from 'react-router';
14
+ import React from 'react';
15
+
16
+ interface ContentLinkProps {
17
+ href: string;
18
+ title?: string;
19
+ children?: React.ReactNode;
20
+ }
21
+
22
+ function isExternal(href: string) {
23
+ return href.startsWith('http://') || href.startsWith('https://') || href.startsWith('//');
24
+ }
25
+
26
+ export function ContentLink({ href, title, children }: ContentLinkProps) {
27
+ if (href.startsWith('#')) {
28
+ return <a href={href} title={title}>{children}</a>;
29
+ }
30
+
31
+ if (isExternal(href)) {
32
+ return (
33
+ <a href={href} title={title} target="_blank" rel="noopener noreferrer">
34
+ {children}
35
+ </a>
36
+ );
37
+ }
38
+
39
+ return (
40
+ <Link to={href} title={title}>
41
+ {children}
42
+ </Link>
43
+ );
44
+ }
45
+
46
+ export default ContentLink;
@@ -0,0 +1,39 @@
1
+ import { createContext, useContext } from 'react';
2
+ import type { ShellData } from '../types/pipeline.js';
3
+
4
+ /**
5
+ * React context carrying the site-wide `ShellData` projection.
6
+ *
7
+ * This context is the single channel by which shell components read the
8
+ * configs, navigation, and route index. The browser entry (`main.tsx`)
9
+ * assembles the value from the eager `virtual:mordoc/*` modules; the
10
+ * server entry (`entry-server.tsx`) receives it as the `data` parameter
11
+ * of `render()`. Both then wrap the React tree in this provider, which
12
+ * is what makes the same component code (`App`, `Page`, future theme
13
+ * components) work identically under CSR and SSR.
14
+ *
15
+ * The default value is `null` so that any component reading the context
16
+ * outside a provider trips a clear runtime error in `useMordocData()`,
17
+ * rather than silently rendering against an empty object.
18
+ */
19
+ export const MordocDataContext = createContext<ShellData | null>(null);
20
+
21
+ /**
22
+ * Hook for shell components to read the current `ShellData`.
23
+ *
24
+ * Throws if called outside a `<MordocDataContext.Provider>`. Both
25
+ * entry points (`main.tsx`, `entry-server.tsx`) wrap their entire tree
26
+ * in the provider, so a missing-provider error means a regression in
27
+ * the entry wiring — surface it loudly rather than letting components
28
+ * read `null` and crash deeper.
29
+ */
30
+ export function useMordocData(): ShellData {
31
+ const value = useContext(MordocDataContext);
32
+ if (value === null) {
33
+ throw new Error(
34
+ 'mordoc: useMordocData() called outside <MordocDataContext.Provider>. ' +
35
+ 'Both main.tsx and entry-server.tsx must wrap the React tree in the provider.',
36
+ );
37
+ }
38
+ return value;
39
+ }
@@ -0,0 +1,58 @@
1
+ import { StrictMode } from 'react';
2
+ import { renderToString } from 'react-dom/server';
3
+ import {
4
+ createStaticHandler,
5
+ createStaticRouter,
6
+ StaticRouterProvider,
7
+ } from 'react-router';
8
+ import type { ShellData } from '../types/pipeline.js';
9
+ import { MordocDataContext } from './data-context.js';
10
+ import { buildRoutes } from './routes.js';
11
+
12
+ /**
13
+ * Renders a single route to an HTML string for SSG.
14
+ *
15
+ * Called once per route by the SSG runner at build time. Pure function —
16
+ * no Vite, no I/O. The SSG runner synthesises a `Request` for each route
17
+ * path, loads this module from the bundled SSR output, and calls `render()`.
18
+ *
19
+ * The flow:
20
+ * 1. Build the route list (shared with the browser entry via `buildRoutes`).
21
+ * 2. `createStaticHandler.query(request)` runs the matched route's loader,
22
+ * which imports the lazy `virtual:mordoc/page/...` module — resolved by
23
+ * the Vite plugin and bundled into the SSR output.
24
+ * 3. `createStaticRouter` + `<StaticRouterProvider>` render the matched
25
+ * component tree to a string.
26
+ * 4. The tree is wrapped in `MordocDataContext.Provider` and `StrictMode`
27
+ * to mirror `main.tsx` — divergence here causes hydration mismatches.
28
+ *
29
+ * If the static handler returns a `Response` (e.g. a redirect from a loader),
30
+ * this function throws — redirect handling is not yet supported.
31
+ */
32
+ export async function render(
33
+ request: Request,
34
+ data: ShellData,
35
+ ): Promise<{ html: string }> {
36
+ const routes = buildRoutes();
37
+ const handler = createStaticHandler(routes);
38
+ const context = await handler.query(request);
39
+
40
+ if (context instanceof Response) {
41
+ throw new Error(
42
+ `mordoc render: static handler returned Response (status ${context.status}). ` +
43
+ 'Redirects/responses from loaders are not yet supported in the SSR path.',
44
+ );
45
+ }
46
+
47
+ const router = createStaticRouter(routes, context);
48
+
49
+ const html = renderToString(
50
+ <StrictMode>
51
+ <MordocDataContext.Provider value={data}>
52
+ <StaticRouterProvider router={router} context={context} />
53
+ </MordocDataContext.Provider>
54
+ </StrictMode>,
55
+ );
56
+
57
+ return { html };
58
+ }
@@ -0,0 +1,36 @@
1
+ .footer {
2
+ max-width: var(--content-max-width);
3
+ width: 100%;
4
+ margin: 0 auto;
5
+ padding: 0 1.5rem 2rem;
6
+ background: var(--color-bg);
7
+ font-size: 0.875rem;
8
+ color: var(--color-fg-muted);
9
+ }
10
+
11
+ @media (min-width: 768px) {
12
+ .footer {
13
+ padding-left: 2rem;
14
+ padding-right: 2rem;
15
+ }
16
+ }
17
+
18
+ .inner {
19
+ border-top: 1px solid var(--color-border);
20
+ padding-top: 2rem;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ }
25
+
26
+ .link {
27
+ color: var(--accent-emphasis);
28
+ text-decoration: underline;
29
+ text-underline-offset: 2px;
30
+ text-decoration-color: transparent;
31
+ transition: text-decoration-color 0.15s;
32
+ }
33
+
34
+ .link:hover {
35
+ text-decoration-color: var(--accent-emphasis);
36
+ }
@@ -0,0 +1,28 @@
1
+ import { useMordocData } from '../data-context.js';
2
+ import styles from './Footer.module.css';
3
+
4
+ export function Footer() {
5
+ const { site } = useMordocData();
6
+ const year = new Date().getFullYear();
7
+
8
+ return (
9
+ <footer className={styles.footer} data-pagefind-ignore>
10
+ <div className={styles.inner}>
11
+ <span className={styles.copy}>
12
+ © {year} {site.name}
13
+ </span>
14
+ <span className={styles.built}>
15
+ Built with{' '}
16
+ <a
17
+ href="https://mordoc.dev"
18
+ target="_blank"
19
+ rel="noopener noreferrer"
20
+ className={styles.link}
21
+ >
22
+ Mordoc
23
+ </a>
24
+ </span>
25
+ </div>
26
+ </footer>
27
+ );
28
+ }
@@ -0,0 +1,40 @@
1
+ // Ambient declarations for browser-side globals. This file must remain a
2
+ // script (no top-level import/export) so that wildcard declare module
3
+ // statements are picked up by the TS language server.
4
+
5
+ // Dynamic import types are allowed in ambient script files since TS 2.9,
6
+ // so no export {} needed to use import('...') syntax below.
7
+
8
+ interface Window {
9
+ __staticRouterHydrationData?: import('react-router').HydrationState;
10
+ }
11
+
12
+ /** Shape of a single result returned by pagefind.search(). */
13
+ interface PagefindSearchResult {
14
+ id: string;
15
+ data: () => Promise<PagefindSearchResultData>;
16
+ }
17
+
18
+ interface PagefindSearchResultData {
19
+ url: string;
20
+ excerpt: string;
21
+ meta: { title?: string; [key: string]: string | undefined };
22
+ }
23
+
24
+ /** Shape of the dynamically-imported Pagefind browser bundle (/pagefind[-lang]/pagefind.js). */
25
+ interface PagefindAPI {
26
+ init?: () => Promise<void>;
27
+ search: (query: string) => Promise<{ results: PagefindSearchResult[] }>;
28
+ /** Releases index memory. Call before switching to a different language index. */
29
+ destroy?: () => Promise<void>;
30
+ }
31
+
32
+ declare module '*.css' {
33
+ const styles: Record<string, string>;
34
+ export default styles;
35
+ }
36
+
37
+ declare module '*.module.css' {
38
+ const styles: Record<string, string>;
39
+ export default styles;
40
+ }
@@ -0,0 +1,205 @@
1
+ /* ============================================================
2
+ HEADER TOKENS
3
+ ============================================================ */
4
+ :root {
5
+ --header-px: 16px;
6
+ --header-gap: 12px;
7
+ --actions-gap: 4px;
8
+ --brand-gap: 8px;
9
+ --brand-logo-size: 28px;
10
+ --brand-logo-radius: 6px;
11
+ --menu-btn-size: 36px;
12
+ --menu-btn-radius: 6px;
13
+ --menu-btn-icon: 20px;
14
+ --toggle-size: 40px;
15
+ --toggle-radius: 8px;
16
+ --toggle-icon-size: 20px;
17
+ --toggle-bg: #ffffff;
18
+ --toggle-bg-hover: #f5f5f5;
19
+ --toggle-border: #e5e5e5;
20
+ --toggle-fg: #1c1c1c;
21
+ }
22
+
23
+ :global(.dark) {
24
+ --toggle-bg: #1a1a1a;
25
+ --toggle-bg-hover: #242424;
26
+ --toggle-border: #2e2e2e;
27
+ --toggle-fg: #ebebeb;
28
+ }
29
+
30
+ @media (max-width: 479px) {
31
+ :root {
32
+ --header-gap: 8px;
33
+ --actions-gap: 2px;
34
+ --toggle-size: 36px;
35
+ --toggle-icon-size: 18px;
36
+ }
37
+ }
38
+
39
+ @media (min-width: 768px) {
40
+ :root {
41
+ --header-gap: 16px;
42
+ }
43
+ }
44
+
45
+ @media (min-width: 1024px) {
46
+ :root {
47
+ --header-gap: 20px;
48
+ }
49
+ }
50
+
51
+ @media (min-width: 1280px) {
52
+ :root {
53
+ --header-gap: 24px;
54
+ }
55
+ }
56
+
57
+ /* Aesthetic + internal layout only.
58
+ Structural placement (position: sticky, z-index, height) lives in App.module.css .headerArea */
59
+ .header {
60
+ display: flex;
61
+ flex-direction: column;
62
+ width: 100%;
63
+ background: var(--color-header-bg);
64
+ backdrop-filter: blur(20px);
65
+ -webkit-backdrop-filter: blur(20px);
66
+ border-bottom: 1px solid var(--color-border);
67
+ }
68
+
69
+ /* ── Top bar ────────────────────────────────────────────── */
70
+ .inner {
71
+ width: 100%;
72
+ height: var(--header-height);
73
+ padding: 0 var(--header-px);
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: space-between;
77
+ gap: var(--header-gap);
78
+ }
79
+
80
+ /* Three regions */
81
+ .brand {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: var(--brand-gap);
85
+ flex-shrink: 0;
86
+ }
87
+
88
+ .search {
89
+ flex: 1;
90
+ display: flex;
91
+ justify-content: center;
92
+ min-width: 0;
93
+ }
94
+
95
+ .actions {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: var(--actions-gap);
99
+ flex-shrink: 0;
100
+ }
101
+
102
+ /* ── Logo / brand link ──────────────────────────────────── */
103
+ .logo {
104
+ display: flex;
105
+ align-items: center;
106
+ text-decoration: none;
107
+ color: inherit;
108
+ flex-shrink: 0;
109
+ border-radius: var(--brand-logo-radius);
110
+ }
111
+
112
+ .logoImage {
113
+ height: var(--brand-logo-size);
114
+ width: auto;
115
+ }
116
+
117
+ .logoText {
118
+ font-weight: 700;
119
+ font-size: 1.25rem;
120
+ white-space: nowrap;
121
+ letter-spacing: -0.01em;
122
+ }
123
+
124
+ /* ── Hamburger ──────────────────────────────────────────── */
125
+ .menuBtn {
126
+ display: none;
127
+ align-items: center;
128
+ justify-content: center;
129
+ width: var(--menu-btn-size);
130
+ height: var(--menu-btn-size);
131
+ border: 0;
132
+ background: transparent;
133
+ border-radius: var(--menu-btn-radius);
134
+ color: inherit;
135
+ cursor: pointer;
136
+ flex-shrink: 0;
137
+ transition: background 0.15s;
138
+ }
139
+
140
+ .menuBtn:hover {
141
+ background: var(--lang-bg-hover);
142
+ }
143
+
144
+ .menuBtn:focus-visible {
145
+ outline: 2px solid var(--accent-emphasis);
146
+ outline-offset: 2px;
147
+ }
148
+
149
+ /* ── Theme toggle ───────────────────────────────────────── */
150
+ .themeToggle {
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ width: var(--toggle-size);
155
+ height: var(--toggle-size);
156
+ background: var(--toggle-bg);
157
+ color: var(--toggle-fg);
158
+ border: 1px solid var(--toggle-border);
159
+ border-radius: var(--toggle-radius);
160
+ cursor: pointer;
161
+ transition: background 0.2s, border-color 0.2s;
162
+ }
163
+
164
+ .themeToggle:hover {
165
+ background: var(--toggle-bg-hover);
166
+ }
167
+
168
+ .themeToggle:focus-visible {
169
+ outline: 2px solid var(--accent-emphasis);
170
+ outline-offset: 2px;
171
+ }
172
+
173
+ /* ── Topnav second row ──────────────────────────────────── */
174
+ .topnavRow {
175
+ width: 100%;
176
+ height: 2.75rem;
177
+ padding: 0 var(--header-px);
178
+ display: flex;
179
+ align-items: stretch;
180
+ }
181
+
182
+ /* ── Focus ring on logo ─────────────────────────────────── */
183
+ .logo:focus-visible {
184
+ outline: 2px solid var(--accent-emphasis);
185
+ outline-offset: 2px;
186
+ }
187
+
188
+ /* ════════════════════════════════════════════════════════════
189
+ Responsive
190
+ ════════════════════════════════════════════════════════════ */
191
+
192
+ /* < 768px: hamburger visible, search + topnav row hidden */
193
+ @media (max-width: 767.98px) {
194
+ .menuBtn {
195
+ display: inline-flex;
196
+ }
197
+
198
+ .search {
199
+ display: none;
200
+ }
201
+
202
+ .topnavRow {
203
+ display: none;
204
+ }
205
+ }