@kamod-ch/preactpress 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/README.md +87 -49
  2. package/bin/preactpress.mjs +5 -5
  3. package/dist/client/app.d.ts +1 -1
  4. package/dist/client/app.d.ts.map +1 -1
  5. package/dist/client/app.js +34 -38
  6. package/dist/client/app.js.map +1 -1
  7. package/dist/client/entry-client.js +11 -12
  8. package/dist/client/entry-client.js.map +1 -1
  9. package/dist/client/entry-ssr.d.ts +2 -2
  10. package/dist/client/entry-ssr.d.ts.map +1 -1
  11. package/dist/client/entry-ssr.js +16 -16
  12. package/dist/client/entry-ssr.js.map +1 -1
  13. package/dist/client/index.d.ts +3 -2
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +2 -1
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/client/loadPage.d.ts +1 -1
  18. package/dist/client/loadPage.d.ts.map +1 -1
  19. package/dist/client/loadPage.js +12 -12
  20. package/dist/client/loadPage.js.map +1 -1
  21. package/dist/client/prefetchLinks.js +4 -4
  22. package/dist/client/prefetchLinks.js.map +1 -1
  23. package/dist/client/theme-default/AlgoliaSearch.d.ts +3 -3
  24. package/dist/client/theme-default/AlgoliaSearch.d.ts.map +1 -1
  25. package/dist/client/theme-default/AlgoliaSearch.js +15 -15
  26. package/dist/client/theme-default/AlgoliaSearch.js.map +1 -1
  27. package/dist/client/theme-default/Features.d.ts +2 -2
  28. package/dist/client/theme-default/Features.d.ts.map +1 -1
  29. package/dist/client/theme-default/Features.js +10 -8
  30. package/dist/client/theme-default/Features.js.map +1 -1
  31. package/dist/client/theme-default/Hero.d.ts +2 -2
  32. package/dist/client/theme-default/Hero.d.ts.map +1 -1
  33. package/dist/client/theme-default/Hero.js +9 -7
  34. package/dist/client/theme-default/Hero.js.map +1 -1
  35. package/dist/client/theme-default/Layout.d.ts +3 -3
  36. package/dist/client/theme-default/Layout.d.ts.map +1 -1
  37. package/dist/client/theme-default/Layout.js +56 -99
  38. package/dist/client/theme-default/Layout.js.map +1 -1
  39. package/dist/client/theme-default/Logo.d.ts +2 -2
  40. package/dist/client/theme-default/Logo.d.ts.map +1 -1
  41. package/dist/client/theme-default/Logo.js +8 -8
  42. package/dist/client/theme-default/Logo.js.map +1 -1
  43. package/dist/client/theme-default/NavLinks.d.ts +2 -2
  44. package/dist/client/theme-default/NavLinks.d.ts.map +1 -1
  45. package/dist/client/theme-default/NavLinks.js +3 -3
  46. package/dist/client/theme-default/NavLinks.js.map +1 -1
  47. package/dist/client/theme-default/SidebarNav.d.ts +2 -2
  48. package/dist/client/theme-default/SidebarNav.d.ts.map +1 -1
  49. package/dist/client/theme-default/SidebarNav.js +3 -3
  50. package/dist/client/theme-default/SidebarNav.js.map +1 -1
  51. package/dist/client/theme-default/SocialLinks.d.ts +2 -2
  52. package/dist/client/theme-default/SocialLinks.d.ts.map +1 -1
  53. package/dist/client/theme-default/SocialLinks.js +1 -1
  54. package/dist/client/theme-default/SocialLinks.js.map +1 -1
  55. package/dist/client/theme-default/ThemeToggle.d.ts +2 -3
  56. package/dist/client/theme-default/ThemeToggle.d.ts.map +1 -1
  57. package/dist/client/theme-default/ThemeToggle.js +2 -30
  58. package/dist/client/theme-default/ThemeToggle.js.map +1 -1
  59. package/dist/client/theme-default/index.d.ts +1 -1
  60. package/dist/client/theme-default/index.d.ts.map +1 -1
  61. package/dist/client/theme-default/index.js +1 -1
  62. package/dist/client/theme-default/index.js.map +1 -1
  63. package/dist/client/theme-utils.d.ts +24 -0
  64. package/dist/client/theme-utils.d.ts.map +1 -0
  65. package/dist/client/theme-utils.js +107 -0
  66. package/dist/client/theme-utils.js.map +1 -0
  67. package/dist/client/types.d.ts +5 -5
  68. package/dist/client/types.d.ts.map +1 -1
  69. package/dist/client/usePageHead.d.ts +2 -2
  70. package/dist/client/usePageHead.d.ts.map +1 -1
  71. package/dist/client/usePageHead.js +61 -56
  72. package/dist/client/usePageHead.js.map +1 -1
  73. package/dist/client/useSiteSearch.d.ts.map +1 -1
  74. package/dist/client/useSiteSearch.js +8 -8
  75. package/dist/client/useSiteSearch.js.map +1 -1
  76. package/dist/node/build.d.ts +1 -1
  77. package/dist/node/build.d.ts.map +1 -1
  78. package/dist/node/build.js +105 -96
  79. package/dist/node/build.js.map +1 -1
  80. package/dist/node/buildCache.d.ts.map +1 -1
  81. package/dist/node/buildCache.js +7 -7
  82. package/dist/node/buildCache.js.map +1 -1
  83. package/dist/node/check.d.ts +1 -1
  84. package/dist/node/check.d.ts.map +1 -1
  85. package/dist/node/check.js +52 -52
  86. package/dist/node/check.js.map +1 -1
  87. package/dist/node/cli.js +61 -64
  88. package/dist/node/cli.js.map +1 -1
  89. package/dist/node/config-helpers.d.ts +4 -4
  90. package/dist/node/config-helpers.d.ts.map +1 -1
  91. package/dist/node/config-helpers.js +1 -1
  92. package/dist/node/config-helpers.js.map +1 -1
  93. package/dist/node/config.d.ts +4 -4
  94. package/dist/node/config.d.ts.map +1 -1
  95. package/dist/node/config.js +37 -40
  96. package/dist/node/config.js.map +1 -1
  97. package/dist/node/content.d.ts +4 -4
  98. package/dist/node/content.d.ts.map +1 -1
  99. package/dist/node/content.js +28 -28
  100. package/dist/node/content.js.map +1 -1
  101. package/dist/node/createContentLoader.d.ts +1 -1
  102. package/dist/node/createContentLoader.d.ts.map +1 -1
  103. package/dist/node/createContentLoader.js +3 -3
  104. package/dist/node/createContentLoader.js.map +1 -1
  105. package/dist/node/devCss.d.ts +1 -1
  106. package/dist/node/devCss.d.ts.map +1 -1
  107. package/dist/node/devCss.js +5 -6
  108. package/dist/node/devCss.js.map +1 -1
  109. package/dist/node/devSsr.d.ts +3 -3
  110. package/dist/node/devSsr.d.ts.map +1 -1
  111. package/dist/node/devSsr.js +32 -32
  112. package/dist/node/devSsr.js.map +1 -1
  113. package/dist/node/dynamicRoutes.d.ts +2 -2
  114. package/dist/node/dynamicRoutes.d.ts.map +1 -1
  115. package/dist/node/dynamicRoutes.js +24 -24
  116. package/dist/node/dynamicRoutes.js.map +1 -1
  117. package/dist/node/favicon.d.ts +2 -2
  118. package/dist/node/favicon.d.ts.map +1 -1
  119. package/dist/node/favicon.js +26 -24
  120. package/dist/node/favicon.js.map +1 -1
  121. package/dist/node/feed.d.ts +2 -2
  122. package/dist/node/feed.d.ts.map +1 -1
  123. package/dist/node/feed.js +18 -16
  124. package/dist/node/feed.js.map +1 -1
  125. package/dist/node/hooks.d.ts +2 -2
  126. package/dist/node/hooks.d.ts.map +1 -1
  127. package/dist/node/hooks.js +1 -1
  128. package/dist/node/hooks.js.map +1 -1
  129. package/dist/node/html.d.ts +8 -8
  130. package/dist/node/html.d.ts.map +1 -1
  131. package/dist/node/html.js +75 -64
  132. package/dist/node/html.js.map +1 -1
  133. package/dist/node/index.d.ts +11 -11
  134. package/dist/node/index.d.ts.map +1 -1
  135. package/dist/node/index.js +8 -8
  136. package/dist/node/index.js.map +1 -1
  137. package/dist/node/init.d.ts +2 -0
  138. package/dist/node/init.d.ts.map +1 -1
  139. package/dist/node/init.js +59 -27
  140. package/dist/node/init.js.map +1 -1
  141. package/dist/node/lastUpdated.d.ts +2 -2
  142. package/dist/node/lastUpdated.d.ts.map +1 -1
  143. package/dist/node/lastUpdated.js +7 -4
  144. package/dist/node/lastUpdated.js.map +1 -1
  145. package/dist/node/loadSiteModule.js +2 -2
  146. package/dist/node/loadSiteModule.js.map +1 -1
  147. package/dist/node/markdown.d.ts +2 -2
  148. package/dist/node/markdown.d.ts.map +1 -1
  149. package/dist/node/markdown.js +110 -110
  150. package/dist/node/markdown.js.map +1 -1
  151. package/dist/node/markdownHeadings.d.ts +1 -1
  152. package/dist/node/markdownHeadings.d.ts.map +1 -1
  153. package/dist/node/markdownHeadings.js +11 -11
  154. package/dist/node/markdownHeadings.js.map +1 -1
  155. package/dist/node/markdownInclude.d.ts.map +1 -1
  156. package/dist/node/markdownInclude.js +11 -11
  157. package/dist/node/markdownInclude.js.map +1 -1
  158. package/dist/node/markdownSnippets.d.ts.map +1 -1
  159. package/dist/node/markdownSnippets.js +34 -34
  160. package/dist/node/markdownSnippets.js.map +1 -1
  161. package/dist/node/mdx.d.ts +1 -1
  162. package/dist/node/mdx.d.ts.map +1 -1
  163. package/dist/node/mdx.js +4 -4
  164. package/dist/node/mdx.js.map +1 -1
  165. package/dist/node/packageRoot.d.ts.map +1 -1
  166. package/dist/node/packageRoot.js +4 -4
  167. package/dist/node/packageRoot.js.map +1 -1
  168. package/dist/node/pageDataLoaders.d.ts +2 -2
  169. package/dist/node/pageDataLoaders.d.ts.map +1 -1
  170. package/dist/node/pageDataLoaders.js +24 -20
  171. package/dist/node/pageDataLoaders.js.map +1 -1
  172. package/dist/node/paths.d.ts.map +1 -1
  173. package/dist/node/paths.js +4 -4
  174. package/dist/node/paths.js.map +1 -1
  175. package/dist/node/plugin.d.ts +3 -3
  176. package/dist/node/plugin.d.ts.map +1 -1
  177. package/dist/node/plugin.js +66 -66
  178. package/dist/node/plugin.js.map +1 -1
  179. package/dist/node/resolveDeps.js +10 -10
  180. package/dist/node/resolveDeps.js.map +1 -1
  181. package/dist/node/serve.d.ts.map +1 -1
  182. package/dist/node/serve.js +13 -15
  183. package/dist/node/serve.js.map +1 -1
  184. package/dist/node/server.d.ts +3 -3
  185. package/dist/node/server.d.ts.map +1 -1
  186. package/dist/node/server.js +28 -25
  187. package/dist/node/server.js.map +1 -1
  188. package/dist/node/siteConfig.d.ts +12 -12
  189. package/dist/node/siteConfig.d.ts.map +1 -1
  190. package/dist/node/tagIndex.d.ts +5 -5
  191. package/dist/node/tagIndex.d.ts.map +1 -1
  192. package/dist/node/tagIndex.js +10 -10
  193. package/dist/node/tagIndex.js.map +1 -1
  194. package/dist/shared/contentChunk.d.ts.map +1 -1
  195. package/dist/shared/contentChunk.js +6 -6
  196. package/dist/shared/contentChunk.js.map +1 -1
  197. package/dist/shared/contentSchema.d.ts.map +1 -1
  198. package/dist/shared/contentSchema.js +11 -11
  199. package/dist/shared/contentSchema.js.map +1 -1
  200. package/dist/shared/deadLinks.d.ts.map +1 -1
  201. package/dist/shared/deadLinks.js +6 -6
  202. package/dist/shared/deadLinks.js.map +1 -1
  203. package/dist/shared/escapeHtml.js +4 -4
  204. package/dist/shared/escapeHtml.js.map +1 -1
  205. package/dist/shared/index.d.ts +14 -14
  206. package/dist/shared/index.d.ts.map +1 -1
  207. package/dist/shared/index.js +14 -14
  208. package/dist/shared/index.js.map +1 -1
  209. package/dist/shared/locale.d.ts +1 -1
  210. package/dist/shared/locale.d.ts.map +1 -1
  211. package/dist/shared/locale.js +10 -10
  212. package/dist/shared/locale.js.map +1 -1
  213. package/dist/shared/pageChrome.d.ts +4 -4
  214. package/dist/shared/pageChrome.d.ts.map +1 -1
  215. package/dist/shared/pageChrome.js +21 -21
  216. package/dist/shared/pageChrome.js.map +1 -1
  217. package/dist/shared/pageHead.d.ts +1 -1
  218. package/dist/shared/pageHead.d.ts.map +1 -1
  219. package/dist/shared/pageHead.js +4 -4
  220. package/dist/shared/pageHead.js.map +1 -1
  221. package/dist/shared/pageMeta.d.ts +5 -5
  222. package/dist/shared/pageMeta.d.ts.map +1 -1
  223. package/dist/shared/pageMeta.js +15 -17
  224. package/dist/shared/pageMeta.js.map +1 -1
  225. package/dist/shared/rewrites.d.ts +1 -1
  226. package/dist/shared/rewrites.d.ts.map +1 -1
  227. package/dist/shared/rewrites.js +2 -2
  228. package/dist/shared/rewrites.js.map +1 -1
  229. package/dist/shared/route.js +5 -5
  230. package/dist/shared/route.js.map +1 -1
  231. package/dist/shared/search.d.ts +3 -3
  232. package/dist/shared/search.d.ts.map +1 -1
  233. package/dist/shared/search.js +14 -14
  234. package/dist/shared/search.js.map +1 -1
  235. package/dist/shared/sidebar.d.ts +1 -1
  236. package/dist/shared/sidebar.d.ts.map +1 -1
  237. package/dist/shared/sidebar.js +4 -4
  238. package/dist/shared/sidebar.js.map +1 -1
  239. package/dist/shared/slug.d.ts +1 -1
  240. package/dist/shared/slug.d.ts.map +1 -1
  241. package/dist/shared/slug.js +5 -5
  242. package/dist/shared/slug.js.map +1 -1
  243. package/dist/shared/socialIcons.d.ts.map +1 -1
  244. package/dist/shared/socialIcons.js +4 -4
  245. package/dist/shared/socialIcons.js.map +1 -1
  246. package/dist/shared/tags.js +8 -8
  247. package/dist/shared/tags.js.map +1 -1
  248. package/dist/shared/theme.d.ts +1 -1
  249. package/dist/shared/theme.d.ts.map +1 -1
  250. package/dist/shared/theme.js +16 -10
  251. package/dist/shared/theme.js.map +1 -1
  252. package/dist/shared/themeLabels.d.ts +1 -1
  253. package/dist/shared/themeLabels.d.ts.map +1 -1
  254. package/dist/shared/themeLabels.js +26 -26
  255. package/dist/shared/themeLabels.js.map +1 -1
  256. package/dist/shared/url.d.ts.map +1 -1
  257. package/dist/shared/url.js +3 -3
  258. package/dist/shared/url.js.map +1 -1
  259. package/package.json +33 -9
  260. package/src/client/app.tsx +89 -92
  261. package/src/client/entry-client.tsx +17 -19
  262. package/src/client/entry-ssr.tsx +33 -33
  263. package/src/client/index.ts +16 -2
  264. package/src/client/loadPage.ts +37 -38
  265. package/src/client/prefetchLinks.ts +30 -30
  266. package/src/client/theme-default/AlgoliaSearch.tsx +46 -46
  267. package/src/client/theme-default/Features.tsx +27 -21
  268. package/src/client/theme-default/Hero.tsx +22 -18
  269. package/src/client/theme-default/Layout.tsx +189 -244
  270. package/src/client/theme-default/Logo.tsx +30 -40
  271. package/src/client/theme-default/NavLinks.tsx +21 -21
  272. package/src/client/theme-default/SidebarNav.tsx +29 -29
  273. package/src/client/theme-default/SocialLinks.tsx +11 -11
  274. package/src/client/theme-default/ThemeToggle.tsx +2 -78
  275. package/src/client/theme-default/index.ts +1 -1
  276. package/src/client/theme-default/styles.css +30 -21
  277. package/src/client/theme-utils.tsx +184 -0
  278. package/src/client/types.ts +30 -24
  279. package/src/client/usePageHead.ts +128 -128
  280. package/src/client/useSiteSearch.ts +34 -34
  281. package/src/client/virtual.d.ts +76 -76
  282. package/src/shared/contentChunk.ts +6 -6
  283. package/src/shared/contentSchema.ts +52 -49
  284. package/src/shared/deadLinks.ts +16 -16
  285. package/src/shared/escapeHtml.ts +5 -5
  286. package/src/shared/index.ts +21 -25
  287. package/src/shared/locale.ts +46 -46
  288. package/src/shared/pageChrome.ts +123 -123
  289. package/src/shared/pageHead.ts +16 -16
  290. package/src/shared/pageMeta.ts +79 -79
  291. package/src/shared/rewrites.ts +14 -16
  292. package/src/shared/route.ts +7 -7
  293. package/src/shared/search.ts +52 -52
  294. package/src/shared/sidebar.ts +28 -28
  295. package/src/shared/slug.ts +13 -13
  296. package/src/shared/socialIcons.ts +12 -14
  297. package/src/shared/tags.ts +20 -20
  298. package/src/shared/theme.ts +22 -13
  299. package/src/shared/themeLabels.ts +45 -45
  300. package/src/shared/url.ts +6 -10
  301. package/templates/default/.preactpress/config.ts +17 -17
  302. package/templates/default/README.md +16 -16
  303. package/templates/default/guide/first-five-minutes.md +21 -21
  304. package/templates/default/index.html +1 -1
  305. package/templates/default/index.md +9 -9
  306. package/templates/default/package.json +1 -1
  307. package/templates/default/pnpm-lock.yaml +5 -5
  308. package/templates/docs/.preactpress/config.ts +76 -56
  309. package/templates/docs/README.md +6 -6
  310. package/templates/docs/components/BenefitsGrid.tsx +45 -0
  311. package/templates/docs/components/CliBlock.tsx +38 -0
  312. package/templates/docs/components/ComparisonTable.tsx +60 -0
  313. package/templates/docs/components/CopyableCommand.tsx +86 -0
  314. package/templates/docs/components/Counter.tsx +7 -5
  315. package/templates/docs/components/MarketingHero.tsx +63 -0
  316. package/templates/docs/components/MdxDemo.tsx +96 -0
  317. package/templates/docs/components/References.tsx +62 -0
  318. package/templates/docs/components/TemplateGallery.tsx +46 -0
  319. package/templates/docs/components/marketing.css +992 -0
  320. package/templates/docs/examples/algolia-docsearch.md +33 -0
  321. package/templates/docs/examples/content-loader.data.ts +11 -0
  322. package/templates/docs/examples/content-loader.md +29 -0
  323. package/templates/docs/examples/dynamic-routes.md +16 -0
  324. package/templates/docs/examples/static-assets.md +13 -0
  325. package/templates/docs/guide/advanced.md +4 -4
  326. package/templates/docs/guide/commands.md +10 -10
  327. package/templates/docs/guide/configuration.md +43 -43
  328. package/templates/docs/guide/creating-pages.md +60 -39
  329. package/templates/docs/guide/custom-themes.md +9 -9
  330. package/templates/docs/guide/deploy.md +29 -29
  331. package/templates/docs/guide/first-five-minutes.md +22 -22
  332. package/templates/docs/guide/getting-started.md +29 -31
  333. package/templates/docs/guide/markdown-and-mdx.md +1 -1
  334. package/templates/docs/guide/routing.md +40 -40
  335. package/templates/docs/guide/what-is-preactpress.md +18 -18
  336. package/templates/docs/index.html +1 -1
  337. package/templates/docs/index.mdx +25 -0
  338. package/templates/docs/interactive.mdx +1 -1
  339. package/templates/docs/markdown-examples.md +73 -21
  340. package/templates/docs/package.json +1 -1
  341. package/templates/docs/packages/[pkg].md +15 -0
  342. package/templates/docs/packages/[pkg].paths.ts +20 -0
  343. package/templates/docs/parts/include-body.md +1 -0
  344. package/templates/docs/pnpm-lock.yaml +5 -5
  345. package/templates/docs/public/preactpress-example.txt +1 -0
  346. package/templates/docs/snippets/greet.ts +1 -1
  347. package/templates/hono/.preactpress/config.ts +65 -65
  348. package/templates/hono/.preactpress/theme/CodeSnippet.tsx +15 -15
  349. package/templates/hono/.preactpress/theme/FeatureGrid.tsx +7 -7
  350. package/templates/hono/.preactpress/theme/Hero.tsx +13 -13
  351. package/templates/hono/.preactpress/theme/Layout.tsx +122 -164
  352. package/templates/hono/.preactpress/theme/Logo.tsx +6 -6
  353. package/templates/hono/.preactpress/theme/ThemeToggle.tsx +3 -70
  354. package/templates/hono/.preactpress/theme/hono.css +31 -14
  355. package/templates/hono/README.md +17 -15
  356. package/templates/hono/components/Counter.tsx +7 -5
  357. package/templates/hono/de/guide/configuration.md +18 -20
  358. package/templates/hono/de/guide/deploy.md +29 -29
  359. package/templates/hono/de/guide/first-five-minutes.md +21 -21
  360. package/templates/hono/de/guide/getting-started.md +29 -29
  361. package/templates/hono/de/guide/routing.md +26 -25
  362. package/templates/hono/de/guide/seiten-erstellen.md +39 -39
  363. package/templates/hono/de/guide/what-is-preactpress.md +18 -18
  364. package/templates/hono/de/index.mdx +20 -17
  365. package/templates/hono/de/interactive.mdx +1 -1
  366. package/templates/hono/de/markdown-examples.md +6 -6
  367. package/templates/hono/de/parts/include-body.md +1 -0
  368. package/templates/hono/de/snippets/greet.ts +1 -1
  369. package/templates/hono/guide/configuration.md +25 -25
  370. package/templates/hono/guide/creating-pages.md +39 -39
  371. package/templates/hono/guide/deploy.md +29 -29
  372. package/templates/hono/guide/first-five-minutes.md +21 -21
  373. package/templates/hono/guide/getting-started.md +29 -29
  374. package/templates/hono/guide/routing.md +40 -40
  375. package/templates/hono/guide/what-is-preactpress.md +18 -18
  376. package/templates/hono/index.html +1 -1
  377. package/templates/hono/index.mdx +21 -17
  378. package/templates/hono/interactive.mdx +1 -1
  379. package/templates/hono/markdown-examples.md +6 -6
  380. package/templates/hono/package.json +1 -1
  381. package/templates/hono/parts/include-body.md +1 -0
  382. package/templates/hono/pnpm-lock.yaml +5 -5
  383. package/templates/hono/snippets/greet.ts +1 -1
  384. package/templates/magazine/.preactpress/config.ts +19 -19
  385. package/templates/magazine/.preactpress/theme/Layout.tsx +69 -172
  386. package/templates/magazine/.preactpress/theme/TeaserGrid.tsx +14 -14
  387. package/templates/magazine/.preactpress/theme/ThemeToggle.tsx +4 -70
  388. package/templates/magazine/.preactpress/theme/magazine.css +13 -8
  389. package/templates/magazine/README.md +30 -0
  390. package/templates/magazine/article-markets.md +2 -2
  391. package/templates/magazine/article-tech.mdx +10 -10
  392. package/templates/magazine/index.data.ts +9 -9
  393. package/templates/magazine/index.html +5 -1
  394. package/templates/magazine/index.mdx +1 -1
  395. package/templates/magazine/package.json +1 -1
  396. package/templates/magazine/pnpm-lock.yaml +2917 -0
  397. package/templates/docs/about.md +0 -10
  398. package/templates/docs/dist/404.html +0 -29
  399. package/templates/docs/dist/about/index.html +0 -32
  400. package/templates/docs/dist/assets/esm-DzlBxN5p.js +0 -110
  401. package/templates/docs/dist/assets/interactive-64o6YwrR.js +0 -9
  402. package/templates/docs/dist/assets/interactive-BedCloEw.js +0 -9
  403. package/templates/docs/dist/assets/main-BVLeh8GO.js +0 -1
  404. package/templates/docs/dist/assets/main-CreUBb3N.js +0 -1
  405. package/templates/docs/dist/assets/main-oodK-zZy.css +0 -2
  406. package/templates/docs/dist/de/guide/getting-started/index.html +0 -36
  407. package/templates/docs/dist/de/guide/what-is-preactpress/index.html +0 -38
  408. package/templates/docs/dist/de/index.html +0 -29
  409. package/templates/docs/dist/favicon-32.png +0 -0
  410. package/templates/docs/dist/favicon.png +0 -0
  411. package/templates/docs/dist/favicon.svg +0 -28
  412. package/templates/docs/dist/guide/advanced/index.html +0 -53
  413. package/templates/docs/dist/guide/commands/index.html +0 -89
  414. package/templates/docs/dist/guide/configuration/index.html +0 -196
  415. package/templates/docs/dist/guide/creating-pages/index.html +0 -234
  416. package/templates/docs/dist/guide/custom-themes/index.html +0 -52
  417. package/templates/docs/dist/guide/default-theme/index.html +0 -53
  418. package/templates/docs/dist/guide/deploy/index.html +0 -195
  419. package/templates/docs/dist/guide/first-five-minutes/index.html +0 -99
  420. package/templates/docs/dist/guide/getting-started/index.html +0 -173
  421. package/templates/docs/dist/guide/markdown-and-mdx/index.html +0 -59
  422. package/templates/docs/dist/guide/routing/index.html +0 -192
  423. package/templates/docs/dist/guide/what-is-preactpress/index.html +0 -141
  424. package/templates/docs/dist/index.html +0 -30
  425. package/templates/docs/dist/interactive/index.html +0 -37
  426. package/templates/docs/dist/markdown-examples/index.html +0 -231
  427. package/templates/docs/dist/preactpress-content/404.json +0 -8
  428. package/templates/docs/dist/preactpress-content/_index.json +0 -50
  429. package/templates/docs/dist/preactpress-content/about.json +0 -15
  430. package/templates/docs/dist/preactpress-content/de.json +0 -45
  431. package/templates/docs/dist/preactpress-content/de__guide__getting-started.json +0 -26
  432. package/templates/docs/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -21
  433. package/templates/docs/dist/preactpress-content/guide__advanced.json +0 -46
  434. package/templates/docs/dist/preactpress-content/guide__commands.json +0 -26
  435. package/templates/docs/dist/preactpress-content/guide__configuration.json +0 -51
  436. package/templates/docs/dist/preactpress-content/guide__creating-pages.json +0 -71
  437. package/templates/docs/dist/preactpress-content/guide__custom-themes.json +0 -15
  438. package/templates/docs/dist/preactpress-content/guide__default-theme.json +0 -36
  439. package/templates/docs/dist/preactpress-content/guide__deploy.json +0 -56
  440. package/templates/docs/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  441. package/templates/docs/dist/preactpress-content/guide__getting-started.json +0 -51
  442. package/templates/docs/dist/preactpress-content/guide__markdown-and-mdx.json +0 -31
  443. package/templates/docs/dist/preactpress-content/guide__routing.json +0 -71
  444. package/templates/docs/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  445. package/templates/docs/dist/preactpress-content/markdown-examples.json +0 -71
  446. package/templates/docs/dist/preactpress-content/tags__markdown.json +0 -16
  447. package/templates/docs/dist/preactpress-search.json +0 -166
  448. package/templates/docs/dist/preactpress-theme.js +0 -1
  449. package/templates/docs/dist/tags/markdown/index.html +0 -32
  450. package/templates/docs/index.md +0 -28
  451. package/templates/hono/dist/404.html +0 -29
  452. package/templates/hono/dist/README/index.html +0 -104
  453. package/templates/hono/dist/about/index.html +0 -32
  454. package/templates/hono/dist/assets/Counter-CCEByS-J.js +0 -1
  455. package/templates/hono/dist/assets/Hero--o6WMNvm.js +0 -2
  456. package/templates/hono/dist/assets/de-D5r6Ye70.js +0 -10
  457. package/templates/hono/dist/assets/hono-BXWYYdyv.js +0 -10
  458. package/templates/hono/dist/assets/interactive-Bxo-WBpC.js +0 -9
  459. package/templates/hono/dist/assets/interactive-BznI4IQ3.js +0 -9
  460. package/templates/hono/dist/assets/main-Bqi-VFEk.js +0 -2
  461. package/templates/hono/dist/assets/main-DIIN7FO0.css +0 -1
  462. package/templates/hono/dist/de/about/index.html +0 -32
  463. package/templates/hono/dist/de/guide/commands/index.html +0 -41
  464. package/templates/hono/dist/de/guide/configuration/index.html +0 -105
  465. package/templates/hono/dist/de/guide/deploy/index.html +0 -195
  466. package/templates/hono/dist/de/guide/first-five-minutes/index.html +0 -99
  467. package/templates/hono/dist/de/guide/getting-started/index.html +0 -173
  468. package/templates/hono/dist/de/guide/routing/index.html +0 -165
  469. package/templates/hono/dist/de/guide/seiten-erstellen/index.html +0 -234
  470. package/templates/hono/dist/de/guide/what-is-preactpress/index.html +0 -141
  471. package/templates/hono/dist/de/index.html +0 -30
  472. package/templates/hono/dist/de/interactive/index.html +0 -37
  473. package/templates/hono/dist/de/markdown-examples/index.html +0 -97
  474. package/templates/hono/dist/de/parts/include-body/index.html +0 -36
  475. package/templates/hono/dist/de/tags/markdown/index.html +0 -32
  476. package/templates/hono/dist/favicon-32.png +0 -0
  477. package/templates/hono/dist/favicon.png +0 -0
  478. package/templates/hono/dist/favicon.svg +0 -28
  479. package/templates/hono/dist/guide/commands/index.html +0 -41
  480. package/templates/hono/dist/guide/configuration/index.html +0 -158
  481. package/templates/hono/dist/guide/creating-pages/index.html +0 -234
  482. package/templates/hono/dist/guide/deploy/index.html +0 -195
  483. package/templates/hono/dist/guide/first-five-minutes/index.html +0 -99
  484. package/templates/hono/dist/guide/getting-started/index.html +0 -173
  485. package/templates/hono/dist/guide/routing/index.html +0 -165
  486. package/templates/hono/dist/guide/what-is-preactpress/index.html +0 -141
  487. package/templates/hono/dist/index.html +0 -30
  488. package/templates/hono/dist/interactive/index.html +0 -37
  489. package/templates/hono/dist/markdown-examples/index.html +0 -105
  490. package/templates/hono/dist/partials/shared-note/index.html +0 -30
  491. package/templates/hono/dist/parts/include-body/index.html +0 -36
  492. package/templates/hono/dist/preactpress-content/404.json +0 -8
  493. package/templates/hono/dist/preactpress-content/README.json +0 -26
  494. package/templates/hono/dist/preactpress-content/about.json +0 -15
  495. package/templates/hono/dist/preactpress-content/de__about.json +0 -15
  496. package/templates/hono/dist/preactpress-content/de__guide__commands.json +0 -36
  497. package/templates/hono/dist/preactpress-content/de__guide__configuration.json +0 -41
  498. package/templates/hono/dist/preactpress-content/de__guide__deploy.json +0 -56
  499. package/templates/hono/dist/preactpress-content/de__guide__first-five-minutes.json +0 -36
  500. package/templates/hono/dist/preactpress-content/de__guide__getting-started.json +0 -51
  501. package/templates/hono/dist/preactpress-content/de__guide__routing.json +0 -61
  502. package/templates/hono/dist/preactpress-content/de__guide__seiten-erstellen.json +0 -71
  503. package/templates/hono/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -51
  504. package/templates/hono/dist/preactpress-content/de__markdown-examples.json +0 -131
  505. package/templates/hono/dist/preactpress-content/de__parts__include-body.json +0 -16
  506. package/templates/hono/dist/preactpress-content/de__tags__markdown.json +0 -16
  507. package/templates/hono/dist/preactpress-content/guide__commands.json +0 -36
  508. package/templates/hono/dist/preactpress-content/guide__configuration.json +0 -51
  509. package/templates/hono/dist/preactpress-content/guide__creating-pages.json +0 -71
  510. package/templates/hono/dist/preactpress-content/guide__deploy.json +0 -56
  511. package/templates/hono/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  512. package/templates/hono/dist/preactpress-content/guide__getting-started.json +0 -51
  513. package/templates/hono/dist/preactpress-content/guide__routing.json +0 -61
  514. package/templates/hono/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  515. package/templates/hono/dist/preactpress-content/markdown-examples.json +0 -141
  516. package/templates/hono/dist/preactpress-content/partials__shared-note.json +0 -10
  517. package/templates/hono/dist/preactpress-content/parts__include-body.json +0 -16
  518. package/templates/hono/dist/preactpress-content/tags__markdown.json +0 -16
  519. package/templates/hono/dist/preactpress-search.json +0 -242
  520. package/templates/hono/dist/preactpress-theme.js +0 -1
  521. package/templates/hono/dist/tags/markdown/index.html +0 -32
@@ -1,105 +1,101 @@
1
- import { useEffect, useState } from 'preact/hooks'
2
- import Layout from 'virtual:preactpress-layout'
3
- import { pagesMeta, routes } from 'virtual:preactpress-pages'
4
- import { i18n, mpa, site, themeConfig } from 'virtual:preactpress-site'
5
- import type { PageView } from './types.js'
6
- import type { ResolvedLocale } from '../node/siteConfig.js'
7
- import { usePageHead } from './usePageHead.js'
8
- import { normalizeRoute, routeFromPathname } from '../shared/route.js'
9
- import { loadPage, prefetchPage, seedPage } from './loadPage.js'
10
- import { setupViewportPrefetch } from './prefetchLinks.js'
1
+ import { useEffect, useState } from "preact/hooks";
2
+ import Layout from "virtual:preactpress-layout";
3
+ import { pagesMeta, routes } from "virtual:preactpress-pages";
4
+ import { i18n, mpa, site, themeConfig } from "virtual:preactpress-site";
5
+ import type { PageView } from "./types.js";
6
+ import type { ResolvedLocale } from "../node/siteConfig.js";
7
+ import { usePageHead } from "./usePageHead.js";
8
+ import { normalizeRoute, routeFromPathname } from "../shared/route.js";
9
+ import { loadPage, prefetchPage, seedPage } from "./loadPage.js";
10
+ import { setupViewportPrefetch } from "./prefetchLinks.js";
11
11
  import {
12
12
  localeFromRoute,
13
13
  localizedRouteForLocale,
14
14
  siteForRoute,
15
- themeConfigForRoute
16
- } from '../shared/locale.js'
15
+ themeConfigForRoute,
16
+ } from "../shared/locale.js";
17
17
 
18
18
  function routeFromLocation(): string {
19
- return routeFromPathname(window.location.pathname, site.base)
19
+ return routeFromPathname(window.location.pathname, site.base);
20
20
  }
21
21
 
22
22
  function routeFromHref(href: string): string | undefined {
23
- const url = new URL(href, window.location.href)
24
- if (url.origin !== window.location.origin) return undefined
25
- const base = site.base === '/' ? '' : site.base.replace(/\/$/, '')
23
+ const url = new URL(href, window.location.href);
24
+ if (url.origin !== window.location.origin) return undefined;
25
+ const base = site.base === "/" ? "" : site.base.replace(/\/$/, "");
26
26
  if (base && url.pathname !== base && !url.pathname.startsWith(`${base}/`)) {
27
- return undefined
27
+ return undefined;
28
28
  }
29
- const path = base ? url.pathname.slice(base.length) || '/' : url.pathname
30
- return normalizeRoute(path)
29
+ const path = base ? url.pathname.slice(base.length) || "/" : url.pathname;
30
+ return normalizeRoute(path);
31
31
  }
32
32
 
33
33
  function anchorFromEvent(event: MouseEvent): HTMLAnchorElement | null {
34
- const target = event.target
34
+ const target = event.target;
35
35
  const element =
36
- target instanceof Element
37
- ? target
38
- : target instanceof Text
39
- ? target.parentElement
40
- : null
41
- return element?.closest('a[href]') ?? null
36
+ target instanceof Element ? target : target instanceof Text ? target.parentElement : null;
37
+ return element?.closest("a[href]") ?? null;
42
38
  }
43
39
 
44
40
  function loadingPage(route: string): PageView {
45
- const meta = pagesMeta[route]
41
+ const meta = pagesMeta[route];
46
42
  return {
47
- kind: 'markdown',
48
- html: '<p>Loading...</p>',
43
+ kind: "markdown",
44
+ html: "<p>Loading...</p>",
49
45
  title: meta?.title,
50
46
  description: meta?.description,
51
47
  tags: meta?.tags,
52
48
  image: meta?.image,
53
49
  pageType: meta?.pageType,
54
50
  meta: meta?.meta ?? {},
55
- headings: meta?.headings ?? []
56
- }
51
+ headings: meta?.headings ?? [],
52
+ };
57
53
  }
58
54
 
59
55
  export function App({ routePath, initialPage }: { routePath: string; initialPage?: PageView }) {
60
- const [currentRoute, setCurrentRoute] = useState(() => normalizeRoute(routePath))
61
- const [page, setPage] = useState<PageView>(() => initialPage ?? loadingPage(routePath))
62
- const availableRoutes = new Set(routes)
63
- const activeLocale = localeFromRoute(currentRoute, i18n)
64
- const activeSite = siteForRoute(site, currentRoute, i18n)
65
- const activeThemeConfig = themeConfigForRoute(themeConfig, currentRoute, i18n)
56
+ const [currentRoute, setCurrentRoute] = useState(() => normalizeRoute(routePath));
57
+ const [page, setPage] = useState<PageView>(() => initialPage ?? loadingPage(routePath));
58
+ const availableRoutes = new Set(routes);
59
+ const activeLocale = localeFromRoute(currentRoute, i18n);
60
+ const activeSite = siteForRoute(site, currentRoute, i18n);
61
+ const activeThemeConfig = themeConfigForRoute(themeConfig, currentRoute, i18n);
66
62
 
67
63
  useEffect(() => {
68
- if (initialPage) seedPage(normalizeRoute(routePath), initialPage)
69
- }, [initialPage, routePath])
64
+ if (initialPage) seedPage(normalizeRoute(routePath), initialPage);
65
+ }, [initialPage, routePath]);
70
66
 
71
67
  useEffect(() => {
72
- let cancelled = false
73
- setPage(loadingPage(currentRoute))
68
+ let cancelled = false;
69
+ setPage(loadingPage(currentRoute));
74
70
  void loadPage(currentRoute, site.base)
75
71
  .then((loaded) => {
76
- if (!cancelled) setPage(loaded)
72
+ if (!cancelled) setPage(loaded);
77
73
  })
78
74
  .catch(() => {
79
75
  if (!cancelled) {
80
76
  setPage({
81
- kind: 'markdown',
82
- html: '<p>Page not found.</p>',
83
- title: '404',
77
+ kind: "markdown",
78
+ html: "<p>Page not found.</p>",
79
+ title: "404",
84
80
  description: activeSite.description,
85
81
  meta: {},
86
- headings: []
87
- })
82
+ headings: [],
83
+ });
88
84
  }
89
- })
85
+ });
90
86
  return () => {
91
- cancelled = true
92
- }
93
- }, [activeSite.description, currentRoute])
87
+ cancelled = true;
88
+ };
89
+ }, [activeSite.description, currentRoute]);
94
90
 
95
91
  useEffect(() => {
96
- const prefetch = (route: string) => prefetchPage(route, site.base)
97
- const stopViewportPrefetch = setupViewportPrefetch(routeFromHref, prefetch)
92
+ const prefetch = (route: string) => prefetchPage(route, site.base);
93
+ const stopViewportPrefetch = setupViewportPrefetch(routeFromHref, prefetch);
98
94
  if (mpa) {
99
- return () => stopViewportPrefetch()
95
+ return () => stopViewportPrefetch();
100
96
  }
101
97
 
102
- const onPopState = () => setCurrentRoute(routeFromLocation())
98
+ const onPopState = () => setCurrentRoute(routeFromLocation());
103
99
  const onClick = (event: MouseEvent) => {
104
100
  if (
105
101
  event.defaultPrevented ||
@@ -109,44 +105,44 @@ export function App({ routePath, initialPage }: { routePath: string; initialPage
109
105
  event.ctrlKey ||
110
106
  event.shiftKey
111
107
  ) {
112
- return
108
+ return;
113
109
  }
114
- const link = anchorFromEvent(event)
115
- if (!link || link.target || link.hasAttribute('download')) return
116
- const route = routeFromHref(link.href)
117
- if (!route) return
118
- const url = new URL(link.href)
110
+ const link = anchorFromEvent(event);
111
+ if (!link || link.target || link.hasAttribute("download")) return;
112
+ const route = routeFromHref(link.href);
113
+ if (!route) return;
114
+ const url = new URL(link.href);
119
115
  if (url.hash && route === currentRoute) {
120
- document.getElementById(url.hash.slice(1))?.scrollIntoView()
121
- return
116
+ document.getElementById(url.hash.slice(1))?.scrollIntoView();
117
+ return;
122
118
  }
123
- event.preventDefault()
124
- window.history.pushState({}, '', url)
125
- setCurrentRoute(route)
126
- window.scrollTo({ top: 0 })
127
- }
119
+ event.preventDefault();
120
+ window.history.pushState({}, "", url);
121
+ setCurrentRoute(route);
122
+ window.scrollTo({ top: 0 });
123
+ };
128
124
  const onMouseEnter = (event: MouseEvent) => {
129
- const link = anchorFromEvent(event)
130
- if (!link) return
131
- const route = routeFromHref(link.href)
132
- if (route) prefetch(route)
133
- }
134
- window.addEventListener('popstate', onPopState)
135
- document.addEventListener('click', onClick)
136
- document.addEventListener('mouseenter', onMouseEnter, true)
125
+ const link = anchorFromEvent(event);
126
+ if (!link) return;
127
+ const route = routeFromHref(link.href);
128
+ if (route) prefetch(route);
129
+ };
130
+ window.addEventListener("popstate", onPopState);
131
+ document.addEventListener("click", onClick);
132
+ document.addEventListener("mouseenter", onMouseEnter, true);
137
133
  return () => {
138
- stopViewportPrefetch()
139
- window.removeEventListener('popstate', onPopState)
140
- document.removeEventListener('click', onClick)
141
- document.removeEventListener('mouseenter', onMouseEnter, true)
142
- }
143
- }, [currentRoute, mpa])
134
+ stopViewportPrefetch();
135
+ window.removeEventListener("popstate", onPopState);
136
+ document.removeEventListener("click", onClick);
137
+ document.removeEventListener("mouseenter", onMouseEnter, true);
138
+ };
139
+ }, [currentRoute, mpa]);
144
140
 
145
141
  useEffect(() => {
146
142
  if (currentRoute !== normalizeRoute(routePath)) {
147
- document.getElementById('content')?.focus()
143
+ document.getElementById("content")?.focus();
148
144
  }
149
- }, [currentRoute, routePath])
145
+ }, [currentRoute, routePath]);
150
146
 
151
147
  usePageHead({
152
148
  site,
@@ -154,7 +150,7 @@ export function App({ routePath, initialPage }: { routePath: string; initialPage
154
150
  routes: availableRoutes,
155
151
  route: currentRoute,
156
152
  page:
157
- page?.kind === 'markdown'
153
+ page?.kind === "markdown"
158
154
  ? {
159
155
  meta: page.meta,
160
156
  title: page.title,
@@ -162,8 +158,8 @@ export function App({ routePath, initialPage }: { routePath: string; initialPage
162
158
  tags: page.tags,
163
159
  image: page.image,
164
160
  pageType: page.pageType,
165
- kind: 'markdown',
166
- html: page.html
161
+ kind: "markdown",
162
+ html: page.html,
167
163
  }
168
164
  : page
169
165
  ? {
@@ -173,10 +169,10 @@ export function App({ routePath, initialPage }: { routePath: string; initialPage
173
169
  tags: page.tags,
174
170
  image: page.image,
175
171
  pageType: page.pageType,
176
- kind: 'mdx'
172
+ kind: "mdx",
177
173
  }
178
- : undefined
179
- })
174
+ : undefined,
175
+ });
180
176
 
181
177
  return (
182
178
  <Layout
@@ -188,7 +184,8 @@ export function App({ routePath, initialPage }: { routePath: string; initialPage
188
184
  locale={activeLocale}
189
185
  locales={i18n?.locales}
190
186
  localizeRoute={(locale: ResolvedLocale) =>
191
- localizedRouteForLocale(currentRoute, locale, i18n, availableRoutes)}
187
+ localizedRouteForLocale(currentRoute, locale, i18n, availableRoutes)
188
+ }
192
189
  />
193
- )
190
+ );
194
191
  }
@@ -1,27 +1,25 @@
1
- import { hydrate } from 'preact'
2
- import { App } from './app.js'
3
- import type { PageView } from './types.js'
4
- import { loadPage, seedPage } from './loadPage.js'
1
+ import { hydrate } from "preact";
2
+ import { App } from "./app.js";
3
+ import type { PageView } from "./types.js";
4
+ import { loadPage, seedPage } from "./loadPage.js";
5
5
 
6
6
  function currentRoute(): string {
7
- const base = (import.meta.env.BASE_URL || '/').replace(/\/$/, '') || ''
8
- let p = window.location.pathname
9
- if (base && p.startsWith(base)) p = p.slice(base.length) || '/'
10
- if (!p.startsWith('/')) p = `/${p}`
11
- return (p.replace(/\/$/, '') || '/') as string
7
+ const base = (import.meta.env.BASE_URL || "/").replace(/\/$/, "") || "";
8
+ let p = window.location.pathname;
9
+ if (base && p.startsWith(base)) p = p.slice(base.length) || "/";
10
+ if (!p.startsWith("/")) p = `/${p}`;
11
+ return (p.replace(/\/$/, "") || "/") as string;
12
12
  }
13
13
 
14
- const el = document.getElementById('app')
14
+ const el = document.getElementById("app");
15
15
  if (el) {
16
16
  void (async () => {
17
- const initial =
18
- el.getAttribute('data-preactpress-route') ??
19
- currentRoute()
20
- const dataEl = document.getElementById('__PREACTPRESS_PAGE_DATA__')
17
+ const initial = el.getAttribute("data-preactpress-route") ?? currentRoute();
18
+ const dataEl = document.getElementById("__PREACTPRESS_PAGE_DATA__");
21
19
  const initialPage = dataEl?.textContent
22
- ? JSON.parse(dataEl.textContent) as PageView
23
- : await loadPage(initial, import.meta.env.BASE_URL || '/')
24
- seedPage(initial, initialPage)
25
- hydrate(<App routePath={initial} initialPage={initialPage} />, el)
26
- })()
20
+ ? (JSON.parse(dataEl.textContent) as PageView)
21
+ : await loadPage(initial, import.meta.env.BASE_URL || "/");
22
+ seedPage(initial, initialPage);
23
+ hydrate(<App routePath={initial} initialPage={initialPage} />, el);
24
+ })();
27
25
  }
@@ -1,41 +1,41 @@
1
- import { renderToString } from 'preact-render-to-string'
2
- import { App } from './app.js'
3
- import { pages } from 'virtual:preactpress-pages'
4
- import { i18n, site } from 'virtual:preactpress-site'
5
- import { resolvePageHeadMeta, titleTemplateFromMeta } from '../shared/pageMeta.js'
6
- import type { PageView } from './types.js'
7
- import { siteForRoute } from '../shared/locale.js'
1
+ import { renderToString } from "preact-render-to-string";
2
+ import { App } from "./app.js";
3
+ import { pages } from "virtual:preactpress-pages";
4
+ import { i18n, site } from "virtual:preactpress-site";
5
+ import { resolvePageHeadMeta, titleTemplateFromMeta } from "../shared/pageMeta.js";
6
+ import type { PageView } from "./types.js";
7
+ import { siteForRoute } from "../shared/locale.js";
8
8
 
9
9
  export interface RenderResult {
10
- body: string
11
- title: string
12
- description: string
13
- tags: string[]
14
- image?: string
15
- pageType: 'website' | 'article'
16
- page: PageView
10
+ body: string;
11
+ title: string;
12
+ description: string;
13
+ tags: string[];
14
+ image?: string;
15
+ pageType: "website" | "article";
16
+ page: PageView;
17
17
  }
18
18
 
19
19
  export function resolveRoutePage(routePath: string): PageView {
20
- const activeSite = siteForRoute(site, routePath, i18n)
20
+ const activeSite = siteForRoute(site, routePath, i18n);
21
21
  return (
22
22
  pages[routePath] ??
23
- pages['/404'] ?? {
24
- kind: 'markdown' as const,
25
- html: '',
26
- title: 'Not found',
23
+ pages["/404"] ?? {
24
+ kind: "markdown" as const,
25
+ html: "",
26
+ title: "Not found",
27
27
  description: activeSite.description,
28
28
  meta: {},
29
- headings: []
29
+ headings: [],
30
30
  }
31
- )
31
+ );
32
32
  }
33
33
 
34
34
  function renderResult(routePath: string, page: PageView): RenderResult {
35
- const body = renderToString(<App routePath={routePath} initialPage={page} />)
36
- const activeSite = siteForRoute(site, routePath, i18n)
35
+ const body = renderToString(<App routePath={routePath} initialPage={page} />);
36
+ const activeSite = siteForRoute(site, routePath, i18n);
37
37
  const head = resolvePageHeadMeta(
38
- page.kind === 'markdown'
38
+ page.kind === "markdown"
39
39
  ? {
40
40
  title: page.title,
41
41
  titleTemplate: titleTemplateFromMeta(page.meta),
@@ -43,8 +43,8 @@ function renderResult(routePath: string, page: PageView): RenderResult {
43
43
  tags: page.tags,
44
44
  image: page.image,
45
45
  pageType: page.pageType,
46
- kind: 'markdown',
47
- html: page.html
46
+ kind: "markdown",
47
+ html: page.html,
48
48
  }
49
49
  : {
50
50
  title: page.title,
@@ -53,10 +53,10 @@ function renderResult(routePath: string, page: PageView): RenderResult {
53
53
  tags: page.tags,
54
54
  image: page.image,
55
55
  pageType: page.pageType,
56
- kind: 'mdx'
56
+ kind: "mdx",
57
57
  },
58
- activeSite
59
- )
58
+ activeSite,
59
+ );
60
60
  return {
61
61
  body,
62
62
  title: head.title,
@@ -64,14 +64,14 @@ function renderResult(routePath: string, page: PageView): RenderResult {
64
64
  tags: head.tags,
65
65
  image: head.image,
66
66
  pageType: head.pageType,
67
- page
68
- }
67
+ page,
68
+ };
69
69
  }
70
70
 
71
71
  export function renderFromPage(routePath: string, page: PageView): RenderResult {
72
- return renderResult(routePath, page)
72
+ return renderResult(routePath, page);
73
73
  }
74
74
 
75
75
  export function render(routePath: string): RenderResult {
76
- return renderFromPage(routePath, resolveRoutePage(routePath))
76
+ return renderFromPage(routePath, resolveRoutePage(routePath));
77
77
  }
@@ -1,2 +1,16 @@
1
- export type { HtmlPageView, LayoutProps, MdxPageView, PageView } from './types.js'
2
- export { usePageHead } from './usePageHead.js'
1
+ export type { HtmlPageView, LayoutProps, MdxPageView, PageView } from "./types.js";
2
+ export {
3
+ ThemeToggle,
4
+ childText,
5
+ classNames,
6
+ createMdxHeadingComponents,
7
+ isActive,
8
+ normalizeLink,
9
+ slugifyHeading,
10
+ toggleStoredTheme,
11
+ useStoredThemeSync,
12
+ withBase,
13
+ type MdxHeadingOptions,
14
+ type ThemeToggleProps,
15
+ } from "./theme-utils.js";
16
+ export { usePageHead } from "./usePageHead.js";
@@ -1,68 +1,67 @@
1
- import { mdxLoaders, pagesMeta } from 'virtual:preactpress-pages'
2
- import type { HtmlPageView, PageView } from './types.js'
3
- import { contentChunkPath } from '../shared/contentChunk.js'
4
- import { publicUrl } from '../shared/url.js'
1
+ import { mdxLoaders, pagesMeta } from "virtual:preactpress-pages";
2
+ import type { HtmlPageView, PageView } from "./types.js";
3
+ import { contentChunkPath } from "../shared/contentChunk.js";
4
+ import { publicUrl } from "../shared/url.js";
5
5
 
6
- const cache = new Map<string, PageView>()
6
+ const cache = new Map<string, PageView>();
7
7
 
8
8
  function fallbackPage(): PageView {
9
9
  return (
10
- cache.get('/404') ??
10
+ cache.get("/404") ??
11
11
  ({
12
- kind: 'markdown',
13
- html: '<p>Page not found.</p>',
14
- title: '404',
12
+ kind: "markdown",
13
+ html: "<p>Page not found.</p>",
14
+ title: "404",
15
15
  description: undefined,
16
16
  meta: {},
17
- headings: []
17
+ headings: [],
18
18
  } satisfies HtmlPageView)
19
- )
19
+ );
20
20
  }
21
21
 
22
22
  export function seedPage(route: string, page: PageView | undefined): void {
23
- if (page) cache.set(route, page)
23
+ if (page) cache.set(route, page);
24
24
  }
25
25
 
26
26
  async function loadMarkdownPage(route: string, base: string): Promise<PageView> {
27
- const meta = pagesMeta[route]
28
- const url =
29
- import.meta.env.DEV
30
- ? publicUrl(base, `/__preactpress/page.json?route=${encodeURIComponent(route)}`)
31
- : publicUrl(base, contentChunkPath(route))
32
- const res = await fetch(url, { credentials: 'same-origin' })
33
- if (!res.ok) throw new Error(`Failed to load page ${route}`)
34
- const data = (await res.json()) as HtmlPageView
27
+ const meta = pagesMeta[route];
28
+ const url = import.meta.env.DEV
29
+ ? publicUrl(base, `/__preactpress/page.json?route=${encodeURIComponent(route)}`)
30
+ : publicUrl(base, contentChunkPath(route));
31
+ const res = await fetch(url, { credentials: "same-origin" });
32
+ if (!res.ok) throw new Error(`Failed to load page ${route}`);
33
+ const data = (await res.json()) as HtmlPageView;
35
34
  return {
36
35
  ...meta,
37
36
  ...data,
38
- kind: 'markdown'
39
- }
37
+ kind: "markdown",
38
+ };
40
39
  }
41
40
 
42
41
  export async function loadPage(route: string, base: string): Promise<PageView> {
43
- const cached = cache.get(route)
44
- if (cached) return cached
42
+ const cached = cache.get(route);
43
+ if (cached) return cached;
45
44
 
46
- const meta = pagesMeta[route]
47
- if (!meta) return fallbackPage()
45
+ const meta = pagesMeta[route];
46
+ if (!meta) return fallbackPage();
48
47
 
49
- if (meta.kind === 'mdx') {
50
- const loader = mdxLoaders[route]
51
- if (!loader) return fallbackPage()
52
- const mod = await loader()
53
- const page = { ...meta, kind: 'mdx' as const, Component: mod.default }
54
- cache.set(route, page)
55
- return page
48
+ if (meta.kind === "mdx") {
49
+ const loader = mdxLoaders[route];
50
+ if (!loader) return fallbackPage();
51
+ const mod = await loader();
52
+ const page = { ...meta, kind: "mdx" as const, Component: mod.default };
53
+ cache.set(route, page);
54
+ return page;
56
55
  }
57
56
 
58
- const page = await loadMarkdownPage(route, base)
59
- cache.set(route, page)
60
- return page
57
+ const page = await loadMarkdownPage(route, base);
58
+ cache.set(route, page);
59
+ return page;
61
60
  }
62
61
 
63
62
  export function prefetchPage(route: string, base: string): void {
64
- if (cache.has(route)) return
63
+ if (cache.has(route)) return;
65
64
  void loadPage(route, base).catch(() => {
66
65
  /* Prefetch failures should not affect navigation. */
67
- })
66
+ });
68
67
  }
@@ -1,60 +1,60 @@
1
- const PREFETCH_MARGIN = '200px'
1
+ const PREFETCH_MARGIN = "200px";
2
2
 
3
3
  function scheduleIdle(task: () => void): void {
4
- if (typeof requestIdleCallback === 'function') {
5
- requestIdleCallback(() => task(), { timeout: 2000 })
6
- return
4
+ if (typeof requestIdleCallback === "function") {
5
+ requestIdleCallback(() => task(), { timeout: 2000 });
6
+ return;
7
7
  }
8
- setTimeout(task, 1)
8
+ setTimeout(task, 1);
9
9
  }
10
10
 
11
11
  export function setupViewportPrefetch(
12
12
  routeFromHref: (href: string) => string | undefined,
13
- prefetch: (route: string) => void
13
+ prefetch: (route: string) => void,
14
14
  ): () => void {
15
- if (typeof IntersectionObserver === 'undefined') return () => {}
15
+ if (typeof IntersectionObserver === "undefined") return () => {};
16
16
 
17
- const seen = new WeakSet<HTMLAnchorElement>()
17
+ const seen = new WeakSet<HTMLAnchorElement>();
18
18
  const observer = new IntersectionObserver(
19
19
  (entries) => {
20
20
  for (const entry of entries) {
21
- if (!entry.isIntersecting) continue
22
- const link = entry.target
23
- if (!(link instanceof HTMLAnchorElement) || seen.has(link)) continue
24
- const route = routeFromHref(link.href)
25
- if (!route) continue
26
- seen.add(link)
27
- scheduleIdle(() => prefetch(route))
28
- observer.unobserve(link)
21
+ if (!entry.isIntersecting) continue;
22
+ const link = entry.target;
23
+ if (!(link instanceof HTMLAnchorElement) || seen.has(link)) continue;
24
+ const route = routeFromHref(link.href);
25
+ if (!route) continue;
26
+ seen.add(link);
27
+ scheduleIdle(() => prefetch(route));
28
+ observer.unobserve(link);
29
29
  }
30
30
  },
31
- { rootMargin: PREFETCH_MARGIN }
32
- )
31
+ { rootMargin: PREFETCH_MARGIN },
32
+ );
33
33
 
34
34
  const observe = (root: ParentNode): void => {
35
- for (const link of Array.from(root.querySelectorAll('a[href]'))) {
35
+ for (const link of Array.from(root.querySelectorAll("a[href]"))) {
36
36
  if (link instanceof HTMLAnchorElement && !seen.has(link)) {
37
- observer.observe(link)
37
+ observer.observe(link);
38
38
  }
39
39
  }
40
- }
40
+ };
41
41
 
42
- observe(document)
42
+ observe(document);
43
43
  const mutation = new MutationObserver((records) => {
44
44
  for (const record of records) {
45
45
  for (const node of Array.from(record.addedNodes)) {
46
46
  if (node instanceof HTMLAnchorElement) {
47
- if (!seen.has(node)) observer.observe(node)
48
- continue
47
+ if (!seen.has(node)) observer.observe(node);
48
+ continue;
49
49
  }
50
- if (node instanceof Element) observe(node)
50
+ if (node instanceof Element) observe(node);
51
51
  }
52
52
  }
53
- })
54
- mutation.observe(document.body, { childList: true, subtree: true })
53
+ });
54
+ mutation.observe(document.body, { childList: true, subtree: true });
55
55
 
56
56
  return () => {
57
- observer.disconnect()
58
- mutation.disconnect()
59
- }
57
+ observer.disconnect();
58
+ mutation.disconnect();
59
+ };
60
60
  }