@kamod-ch/preactpress 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) 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 +55 -42
  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 +2 -1
  18. package/dist/client/loadPage.d.ts.map +1 -1
  19. package/dist/client/loadPage.js +15 -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/scrollRestoration.d.ts +10 -0
  232. package/dist/shared/scrollRestoration.d.ts.map +1 -0
  233. package/dist/shared/scrollRestoration.js +66 -0
  234. package/dist/shared/scrollRestoration.js.map +1 -0
  235. package/dist/shared/search.d.ts +3 -3
  236. package/dist/shared/search.d.ts.map +1 -1
  237. package/dist/shared/search.js +18 -15
  238. package/dist/shared/search.js.map +1 -1
  239. package/dist/shared/sidebar.d.ts +1 -1
  240. package/dist/shared/sidebar.d.ts.map +1 -1
  241. package/dist/shared/sidebar.js +4 -4
  242. package/dist/shared/sidebar.js.map +1 -1
  243. package/dist/shared/slug.d.ts +1 -1
  244. package/dist/shared/slug.d.ts.map +1 -1
  245. package/dist/shared/slug.js +5 -5
  246. package/dist/shared/slug.js.map +1 -1
  247. package/dist/shared/socialIcons.d.ts.map +1 -1
  248. package/dist/shared/socialIcons.js +4 -4
  249. package/dist/shared/socialIcons.js.map +1 -1
  250. package/dist/shared/tags.js +8 -8
  251. package/dist/shared/tags.js.map +1 -1
  252. package/dist/shared/theme.d.ts +1 -1
  253. package/dist/shared/theme.d.ts.map +1 -1
  254. package/dist/shared/theme.js +16 -10
  255. package/dist/shared/theme.js.map +1 -1
  256. package/dist/shared/themeLabels.d.ts +1 -1
  257. package/dist/shared/themeLabels.d.ts.map +1 -1
  258. package/dist/shared/themeLabels.js +26 -26
  259. package/dist/shared/themeLabels.js.map +1 -1
  260. package/dist/shared/url.d.ts.map +1 -1
  261. package/dist/shared/url.js +3 -3
  262. package/dist/shared/url.js.map +1 -1
  263. package/package.json +33 -9
  264. package/src/client/app.tsx +111 -92
  265. package/src/client/entry-client.tsx +17 -19
  266. package/src/client/entry-ssr.tsx +33 -33
  267. package/src/client/index.ts +16 -2
  268. package/src/client/loadPage.ts +41 -38
  269. package/src/client/prefetchLinks.ts +30 -30
  270. package/src/client/theme-default/AlgoliaSearch.tsx +46 -46
  271. package/src/client/theme-default/Features.tsx +27 -21
  272. package/src/client/theme-default/Hero.tsx +22 -18
  273. package/src/client/theme-default/Layout.tsx +189 -244
  274. package/src/client/theme-default/Logo.tsx +30 -40
  275. package/src/client/theme-default/NavLinks.tsx +21 -21
  276. package/src/client/theme-default/SidebarNav.tsx +29 -29
  277. package/src/client/theme-default/SocialLinks.tsx +11 -11
  278. package/src/client/theme-default/ThemeToggle.tsx +2 -78
  279. package/src/client/theme-default/index.ts +1 -1
  280. package/src/client/theme-default/styles.css +30 -21
  281. package/src/client/theme-utils.tsx +184 -0
  282. package/src/client/types.ts +30 -24
  283. package/src/client/usePageHead.ts +128 -128
  284. package/src/client/useSiteSearch.ts +34 -34
  285. package/src/client/virtual.d.ts +76 -76
  286. package/src/shared/contentChunk.ts +6 -6
  287. package/src/shared/contentSchema.ts +52 -49
  288. package/src/shared/deadLinks.ts +16 -16
  289. package/src/shared/escapeHtml.ts +5 -5
  290. package/src/shared/index.ts +21 -25
  291. package/src/shared/locale.ts +46 -46
  292. package/src/shared/pageChrome.ts +123 -123
  293. package/src/shared/pageHead.ts +16 -16
  294. package/src/shared/pageMeta.ts +79 -79
  295. package/src/shared/rewrites.ts +14 -16
  296. package/src/shared/route.ts +7 -7
  297. package/src/shared/scrollRestoration.ts +70 -0
  298. package/src/shared/search.ts +56 -52
  299. package/src/shared/sidebar.ts +28 -28
  300. package/src/shared/slug.ts +13 -13
  301. package/src/shared/socialIcons.ts +12 -14
  302. package/src/shared/tags.ts +20 -20
  303. package/src/shared/theme.ts +22 -13
  304. package/src/shared/themeLabels.ts +45 -45
  305. package/src/shared/url.ts +6 -10
  306. package/templates/default/.preactpress/config.ts +17 -17
  307. package/templates/default/README.md +16 -16
  308. package/templates/default/guide/first-five-minutes.md +21 -21
  309. package/templates/default/index.html +1 -1
  310. package/templates/default/index.md +9 -9
  311. package/templates/default/package.json +1 -1
  312. package/templates/default/pnpm-lock.yaml +5 -5
  313. package/templates/docs/.preactpress/config.ts +76 -56
  314. package/templates/docs/README.md +6 -6
  315. package/templates/docs/components/BenefitsGrid.tsx +45 -0
  316. package/templates/docs/components/CliBlock.tsx +38 -0
  317. package/templates/docs/components/ComparisonTable.tsx +60 -0
  318. package/templates/docs/components/CopyableCommand.tsx +86 -0
  319. package/templates/docs/components/Counter.tsx +7 -5
  320. package/templates/docs/components/MarketingHero.tsx +63 -0
  321. package/templates/docs/components/MdxDemo.tsx +96 -0
  322. package/templates/docs/components/References.tsx +62 -0
  323. package/templates/docs/components/TemplateGallery.tsx +46 -0
  324. package/templates/docs/components/marketing.css +992 -0
  325. package/templates/docs/examples/algolia-docsearch.md +33 -0
  326. package/templates/docs/examples/content-loader.data.ts +11 -0
  327. package/templates/docs/examples/content-loader.md +29 -0
  328. package/templates/docs/examples/dynamic-routes.md +16 -0
  329. package/templates/docs/examples/static-assets.md +13 -0
  330. package/templates/docs/guide/advanced.md +4 -4
  331. package/templates/docs/guide/commands.md +10 -10
  332. package/templates/docs/guide/configuration.md +43 -43
  333. package/templates/docs/guide/creating-pages.md +60 -39
  334. package/templates/docs/guide/custom-themes.md +9 -9
  335. package/templates/docs/guide/deploy.md +29 -29
  336. package/templates/docs/guide/first-five-minutes.md +22 -22
  337. package/templates/docs/guide/getting-started.md +29 -31
  338. package/templates/docs/guide/markdown-and-mdx.md +1 -1
  339. package/templates/docs/guide/routing.md +40 -40
  340. package/templates/docs/guide/what-is-preactpress.md +18 -18
  341. package/templates/docs/index.html +1 -1
  342. package/templates/docs/index.mdx +25 -0
  343. package/templates/docs/interactive.mdx +1 -1
  344. package/templates/docs/markdown-examples.md +73 -21
  345. package/templates/docs/package.json +1 -1
  346. package/templates/docs/packages/[pkg].md +15 -0
  347. package/templates/docs/packages/[pkg].paths.ts +20 -0
  348. package/templates/docs/parts/include-body.md +1 -0
  349. package/templates/docs/pnpm-lock.yaml +5 -5
  350. package/templates/docs/public/preactpress-example.txt +1 -0
  351. package/templates/docs/snippets/greet.ts +1 -1
  352. package/templates/hono/.preactpress/config.ts +65 -65
  353. package/templates/hono/.preactpress/theme/CodeSnippet.tsx +15 -15
  354. package/templates/hono/.preactpress/theme/FeatureGrid.tsx +7 -7
  355. package/templates/hono/.preactpress/theme/Hero.tsx +13 -13
  356. package/templates/hono/.preactpress/theme/Layout.tsx +122 -164
  357. package/templates/hono/.preactpress/theme/Logo.tsx +6 -6
  358. package/templates/hono/.preactpress/theme/ThemeToggle.tsx +3 -70
  359. package/templates/hono/.preactpress/theme/hono.css +31 -14
  360. package/templates/hono/README.md +17 -15
  361. package/templates/hono/components/Counter.tsx +7 -5
  362. package/templates/hono/de/guide/configuration.md +18 -20
  363. package/templates/hono/de/guide/deploy.md +29 -29
  364. package/templates/hono/de/guide/first-five-minutes.md +21 -21
  365. package/templates/hono/de/guide/getting-started.md +29 -29
  366. package/templates/hono/de/guide/routing.md +26 -25
  367. package/templates/hono/de/guide/seiten-erstellen.md +39 -39
  368. package/templates/hono/de/guide/what-is-preactpress.md +18 -18
  369. package/templates/hono/de/index.mdx +20 -17
  370. package/templates/hono/de/interactive.mdx +1 -1
  371. package/templates/hono/de/markdown-examples.md +6 -6
  372. package/templates/hono/de/parts/include-body.md +1 -0
  373. package/templates/hono/de/snippets/greet.ts +1 -1
  374. package/templates/hono/guide/configuration.md +25 -25
  375. package/templates/hono/guide/creating-pages.md +39 -39
  376. package/templates/hono/guide/deploy.md +29 -29
  377. package/templates/hono/guide/first-five-minutes.md +21 -21
  378. package/templates/hono/guide/getting-started.md +29 -29
  379. package/templates/hono/guide/routing.md +40 -40
  380. package/templates/hono/guide/what-is-preactpress.md +18 -18
  381. package/templates/hono/index.html +1 -1
  382. package/templates/hono/index.mdx +21 -17
  383. package/templates/hono/interactive.mdx +1 -1
  384. package/templates/hono/markdown-examples.md +6 -6
  385. package/templates/hono/package.json +1 -1
  386. package/templates/hono/parts/include-body.md +1 -0
  387. package/templates/hono/pnpm-lock.yaml +5 -5
  388. package/templates/hono/snippets/greet.ts +1 -1
  389. package/templates/magazine/.preactpress/config.ts +19 -19
  390. package/templates/magazine/.preactpress/theme/Layout.tsx +69 -172
  391. package/templates/magazine/.preactpress/theme/TeaserGrid.tsx +14 -14
  392. package/templates/magazine/.preactpress/theme/ThemeToggle.tsx +4 -70
  393. package/templates/magazine/.preactpress/theme/magazine.css +13 -8
  394. package/templates/magazine/README.md +30 -0
  395. package/templates/magazine/article-markets.md +2 -2
  396. package/templates/magazine/article-tech.mdx +10 -10
  397. package/templates/magazine/index.data.ts +9 -9
  398. package/templates/magazine/index.html +5 -1
  399. package/templates/magazine/index.mdx +1 -1
  400. package/templates/magazine/package.json +1 -1
  401. package/templates/magazine/pnpm-lock.yaml +2917 -0
  402. package/templates/docs/about.md +0 -10
  403. package/templates/docs/dist/404.html +0 -29
  404. package/templates/docs/dist/about/index.html +0 -32
  405. package/templates/docs/dist/assets/esm-DzlBxN5p.js +0 -110
  406. package/templates/docs/dist/assets/interactive-64o6YwrR.js +0 -9
  407. package/templates/docs/dist/assets/interactive-BedCloEw.js +0 -9
  408. package/templates/docs/dist/assets/main-BVLeh8GO.js +0 -1
  409. package/templates/docs/dist/assets/main-CreUBb3N.js +0 -1
  410. package/templates/docs/dist/assets/main-oodK-zZy.css +0 -2
  411. package/templates/docs/dist/de/guide/getting-started/index.html +0 -36
  412. package/templates/docs/dist/de/guide/what-is-preactpress/index.html +0 -38
  413. package/templates/docs/dist/de/index.html +0 -29
  414. package/templates/docs/dist/favicon-32.png +0 -0
  415. package/templates/docs/dist/favicon.png +0 -0
  416. package/templates/docs/dist/favicon.svg +0 -28
  417. package/templates/docs/dist/guide/advanced/index.html +0 -53
  418. package/templates/docs/dist/guide/commands/index.html +0 -89
  419. package/templates/docs/dist/guide/configuration/index.html +0 -196
  420. package/templates/docs/dist/guide/creating-pages/index.html +0 -234
  421. package/templates/docs/dist/guide/custom-themes/index.html +0 -52
  422. package/templates/docs/dist/guide/default-theme/index.html +0 -53
  423. package/templates/docs/dist/guide/deploy/index.html +0 -195
  424. package/templates/docs/dist/guide/first-five-minutes/index.html +0 -99
  425. package/templates/docs/dist/guide/getting-started/index.html +0 -173
  426. package/templates/docs/dist/guide/markdown-and-mdx/index.html +0 -59
  427. package/templates/docs/dist/guide/routing/index.html +0 -192
  428. package/templates/docs/dist/guide/what-is-preactpress/index.html +0 -141
  429. package/templates/docs/dist/index.html +0 -30
  430. package/templates/docs/dist/interactive/index.html +0 -37
  431. package/templates/docs/dist/markdown-examples/index.html +0 -231
  432. package/templates/docs/dist/preactpress-content/404.json +0 -8
  433. package/templates/docs/dist/preactpress-content/_index.json +0 -50
  434. package/templates/docs/dist/preactpress-content/about.json +0 -15
  435. package/templates/docs/dist/preactpress-content/de.json +0 -45
  436. package/templates/docs/dist/preactpress-content/de__guide__getting-started.json +0 -26
  437. package/templates/docs/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -21
  438. package/templates/docs/dist/preactpress-content/guide__advanced.json +0 -46
  439. package/templates/docs/dist/preactpress-content/guide__commands.json +0 -26
  440. package/templates/docs/dist/preactpress-content/guide__configuration.json +0 -51
  441. package/templates/docs/dist/preactpress-content/guide__creating-pages.json +0 -71
  442. package/templates/docs/dist/preactpress-content/guide__custom-themes.json +0 -15
  443. package/templates/docs/dist/preactpress-content/guide__default-theme.json +0 -36
  444. package/templates/docs/dist/preactpress-content/guide__deploy.json +0 -56
  445. package/templates/docs/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  446. package/templates/docs/dist/preactpress-content/guide__getting-started.json +0 -51
  447. package/templates/docs/dist/preactpress-content/guide__markdown-and-mdx.json +0 -31
  448. package/templates/docs/dist/preactpress-content/guide__routing.json +0 -71
  449. package/templates/docs/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  450. package/templates/docs/dist/preactpress-content/markdown-examples.json +0 -71
  451. package/templates/docs/dist/preactpress-content/tags__markdown.json +0 -16
  452. package/templates/docs/dist/preactpress-search.json +0 -166
  453. package/templates/docs/dist/preactpress-theme.js +0 -1
  454. package/templates/docs/dist/tags/markdown/index.html +0 -32
  455. package/templates/docs/index.md +0 -28
  456. package/templates/hono/dist/404.html +0 -29
  457. package/templates/hono/dist/README/index.html +0 -104
  458. package/templates/hono/dist/about/index.html +0 -32
  459. package/templates/hono/dist/assets/Counter-CCEByS-J.js +0 -1
  460. package/templates/hono/dist/assets/Hero--o6WMNvm.js +0 -2
  461. package/templates/hono/dist/assets/de-D5r6Ye70.js +0 -10
  462. package/templates/hono/dist/assets/hono-BXWYYdyv.js +0 -10
  463. package/templates/hono/dist/assets/interactive-Bxo-WBpC.js +0 -9
  464. package/templates/hono/dist/assets/interactive-BznI4IQ3.js +0 -9
  465. package/templates/hono/dist/assets/main-Bqi-VFEk.js +0 -2
  466. package/templates/hono/dist/assets/main-DIIN7FO0.css +0 -1
  467. package/templates/hono/dist/de/about/index.html +0 -32
  468. package/templates/hono/dist/de/guide/commands/index.html +0 -41
  469. package/templates/hono/dist/de/guide/configuration/index.html +0 -105
  470. package/templates/hono/dist/de/guide/deploy/index.html +0 -195
  471. package/templates/hono/dist/de/guide/first-five-minutes/index.html +0 -99
  472. package/templates/hono/dist/de/guide/getting-started/index.html +0 -173
  473. package/templates/hono/dist/de/guide/routing/index.html +0 -165
  474. package/templates/hono/dist/de/guide/seiten-erstellen/index.html +0 -234
  475. package/templates/hono/dist/de/guide/what-is-preactpress/index.html +0 -141
  476. package/templates/hono/dist/de/index.html +0 -30
  477. package/templates/hono/dist/de/interactive/index.html +0 -37
  478. package/templates/hono/dist/de/markdown-examples/index.html +0 -97
  479. package/templates/hono/dist/de/parts/include-body/index.html +0 -36
  480. package/templates/hono/dist/de/tags/markdown/index.html +0 -32
  481. package/templates/hono/dist/favicon-32.png +0 -0
  482. package/templates/hono/dist/favicon.png +0 -0
  483. package/templates/hono/dist/favicon.svg +0 -28
  484. package/templates/hono/dist/guide/commands/index.html +0 -41
  485. package/templates/hono/dist/guide/configuration/index.html +0 -158
  486. package/templates/hono/dist/guide/creating-pages/index.html +0 -234
  487. package/templates/hono/dist/guide/deploy/index.html +0 -195
  488. package/templates/hono/dist/guide/first-five-minutes/index.html +0 -99
  489. package/templates/hono/dist/guide/getting-started/index.html +0 -173
  490. package/templates/hono/dist/guide/routing/index.html +0 -165
  491. package/templates/hono/dist/guide/what-is-preactpress/index.html +0 -141
  492. package/templates/hono/dist/index.html +0 -30
  493. package/templates/hono/dist/interactive/index.html +0 -37
  494. package/templates/hono/dist/markdown-examples/index.html +0 -105
  495. package/templates/hono/dist/partials/shared-note/index.html +0 -30
  496. package/templates/hono/dist/parts/include-body/index.html +0 -36
  497. package/templates/hono/dist/preactpress-content/404.json +0 -8
  498. package/templates/hono/dist/preactpress-content/README.json +0 -26
  499. package/templates/hono/dist/preactpress-content/about.json +0 -15
  500. package/templates/hono/dist/preactpress-content/de__about.json +0 -15
  501. package/templates/hono/dist/preactpress-content/de__guide__commands.json +0 -36
  502. package/templates/hono/dist/preactpress-content/de__guide__configuration.json +0 -41
  503. package/templates/hono/dist/preactpress-content/de__guide__deploy.json +0 -56
  504. package/templates/hono/dist/preactpress-content/de__guide__first-five-minutes.json +0 -36
  505. package/templates/hono/dist/preactpress-content/de__guide__getting-started.json +0 -51
  506. package/templates/hono/dist/preactpress-content/de__guide__routing.json +0 -61
  507. package/templates/hono/dist/preactpress-content/de__guide__seiten-erstellen.json +0 -71
  508. package/templates/hono/dist/preactpress-content/de__guide__what-is-preactpress.json +0 -51
  509. package/templates/hono/dist/preactpress-content/de__markdown-examples.json +0 -131
  510. package/templates/hono/dist/preactpress-content/de__parts__include-body.json +0 -16
  511. package/templates/hono/dist/preactpress-content/de__tags__markdown.json +0 -16
  512. package/templates/hono/dist/preactpress-content/guide__commands.json +0 -36
  513. package/templates/hono/dist/preactpress-content/guide__configuration.json +0 -51
  514. package/templates/hono/dist/preactpress-content/guide__creating-pages.json +0 -71
  515. package/templates/hono/dist/preactpress-content/guide__deploy.json +0 -56
  516. package/templates/hono/dist/preactpress-content/guide__first-five-minutes.json +0 -36
  517. package/templates/hono/dist/preactpress-content/guide__getting-started.json +0 -51
  518. package/templates/hono/dist/preactpress-content/guide__routing.json +0 -61
  519. package/templates/hono/dist/preactpress-content/guide__what-is-preactpress.json +0 -51
  520. package/templates/hono/dist/preactpress-content/markdown-examples.json +0 -141
  521. package/templates/hono/dist/preactpress-content/partials__shared-note.json +0 -10
  522. package/templates/hono/dist/preactpress-content/parts__include-body.json +0 -16
  523. package/templates/hono/dist/preactpress-content/tags__markdown.json +0 -16
  524. package/templates/hono/dist/preactpress-search.json +0 -242
  525. package/templates/hono/dist/preactpress-theme.js +0 -1
  526. package/templates/hono/dist/tags/markdown/index.html +0 -32
@@ -1,94 +1,114 @@
1
- import { defineConfig } from '@kamod-ch/preactpress/config'
1
+ import { defineConfig } from "@kamod-ch/preactpress/config";
2
+
3
+ const matomoImageTracker =
4
+ '<!-- Matomo Image Tracker--><img referrerpolicy="no-referrer-when-downgrade" src="https://matomo.kamod.ch/matomo.php?idsite=6&amp;rec=1" style="border:0" alt="" /><!-- End Matomo -->';
5
+
6
+ const includeMatomoImageTracker = process.env.PREACTPRESS_INCLUDE_MATOMO === "true";
2
7
 
3
8
  export default defineConfig({
4
- srcExclude: ['README.md', 'partials/**', 'parts/**'],
9
+ srcExclude: ["README.md", "partials/**", "parts/**"],
5
10
  site: {
6
- title: 'PreactPress',
7
- description: 'Vite + Preact static site generator for Markdown and MDX'
11
+ title: "PreactPress",
12
+ description: "The documentation framework for Preact",
8
13
  },
9
14
  markdown: {
10
15
  html: false,
11
16
  emoji: true,
12
- math: true
17
+ math: true,
18
+ },
19
+ transformHtml(html) {
20
+ if (!includeMatomoImageTracker) return html;
21
+ return html.replace("</body>", ` ${matomoImageTracker}\n </body>`);
13
22
  },
14
23
  themeConfig: {
15
24
  outline: true,
16
25
  search: true,
17
26
  lastUpdated: true,
18
- footer: 'Built with PreactPress.'
27
+ footer: "Built with PreactPress.",
28
+ socialLinks: [
29
+ {
30
+ icon: "github",
31
+ link: "https://github.com/kamod-ch/preactpress",
32
+ ariaLabel: "PreactPress on GitHub",
33
+ },
34
+ ],
19
35
  },
20
36
  locales: {
21
37
  root: {
22
- label: 'English',
23
- lang: 'en',
38
+ label: "English",
39
+ lang: "en",
24
40
  themeConfig: {
25
41
  nav: [
26
- { text: 'Guide', link: '/guide/getting-started' },
27
- { text: 'Reference', link: '/guide/configuration' },
28
- { text: 'Examples', link: '/markdown-examples' }
42
+ { text: "Guide", link: "/guide/getting-started" },
43
+ { text: "Reference", link: "/guide/configuration" },
44
+ { text: "Examples", link: "/markdown-examples" },
29
45
  ],
30
46
  sidebar: [
31
47
  {
32
- text: 'Introduction',
48
+ text: "Introduction",
33
49
  items: [
34
- { text: 'Overview', link: '/' },
35
- { text: 'What is PreactPress?', link: '/guide/what-is-preactpress' },
36
- { text: 'Getting started', link: '/guide/getting-started' },
37
- { text: 'First five minutes', link: '/guide/first-five-minutes' }
38
- ]
50
+ { text: "Overview", link: "/" },
51
+ { text: "What is PreactPress?", link: "/guide/what-is-preactpress" },
52
+ { text: "Getting started", link: "/guide/getting-started" },
53
+ { text: "First five minutes", link: "/guide/first-five-minutes" },
54
+ ],
39
55
  },
40
56
  {
41
- text: 'Authoring',
57
+ text: "Authoring",
42
58
  items: [
43
- { text: 'Creating pages', link: '/guide/creating-pages' },
44
- { text: 'Markdown and MDX', link: '/guide/markdown-and-mdx' },
45
- { text: 'Routing and i18n', link: '/guide/routing' },
46
- { text: 'Default theme', link: '/guide/default-theme' }
47
- ]
59
+ { text: "Creating pages", link: "/guide/creating-pages" },
60
+ { text: "Markdown and MDX", link: "/guide/markdown-and-mdx" },
61
+ { text: "Routing and i18n", link: "/guide/routing" },
62
+ { text: "Default theme", link: "/guide/default-theme" },
63
+ ],
48
64
  },
49
65
  {
50
- text: 'Reference',
66
+ text: "Reference",
51
67
  items: [
52
- { text: 'Configuration', link: '/guide/configuration' },
53
- { text: 'CLI and validation', link: '/guide/commands' },
54
- { text: 'Advanced APIs', link: '/guide/advanced' },
55
- { text: 'Custom themes', link: '/guide/custom-themes' },
56
- { text: 'Deploy', link: '/guide/deploy' }
57
- ]
68
+ { text: "Configuration", link: "/guide/configuration" },
69
+ { text: "CLI and validation", link: "/guide/commands" },
70
+ { text: "Advanced APIs", link: "/guide/advanced" },
71
+ { text: "Custom themes", link: "/guide/custom-themes" },
72
+ { text: "Deploy", link: "/guide/deploy" },
73
+ ],
58
74
  },
59
75
  {
60
- text: 'Examples',
76
+ text: "Examples",
61
77
  items: [
62
- { text: 'Markdown examples', link: '/markdown-examples' },
63
- { text: 'Interactive MDX', link: '/interactive' }
64
- ]
65
- }
66
- ]
67
- }
78
+ { text: "Markdown examples", link: "/markdown-examples" },
79
+ { text: "Interactive MDX", link: "/interactive" },
80
+ { text: "Algolia DocSearch", link: "/examples/algolia-docsearch" },
81
+ { text: "Content loader", link: "/examples/content-loader" },
82
+ { text: "Dynamic routes", link: "/examples/dynamic-routes" },
83
+ { text: "Static assets", link: "/examples/static-assets" },
84
+ ],
85
+ },
86
+ ],
87
+ },
68
88
  },
69
89
  de: {
70
- label: 'Deutsch',
71
- lang: 'de',
72
- link: '/de/',
73
- description: 'Kleine deutschsprachige i18n-Demo für PreactPress',
90
+ label: "Deutsch",
91
+ lang: "de",
92
+ link: "/de/",
93
+ description: "Kleine deutschsprachige i18n-Demo für PreactPress",
74
94
  themeConfig: {
75
- footer: 'Erstellt mit PreactPress.',
95
+ footer: "Erstellt mit PreactPress.",
76
96
  nav: [
77
- { text: 'Start', link: '/de' },
78
- { text: 'Einführung', link: '/de/guide/what-is-preactpress' },
79
- { text: 'English docs', link: '/guide/getting-started' }
97
+ { text: "Start", link: "/de" },
98
+ { text: "Einführung", link: "/de/guide/what-is-preactpress" },
99
+ { text: "English docs", link: "/guide/getting-started" },
80
100
  ],
81
101
  sidebar: [
82
102
  {
83
- text: 'i18n-Demo',
103
+ text: "i18n-Demo",
84
104
  items: [
85
- { text: 'Willkommen', link: '/de' },
86
- { text: 'Was ist PreactPress?', link: '/de/guide/what-is-preactpress' },
87
- { text: 'Erste Schritte', link: '/de/guide/getting-started' }
88
- ]
89
- }
90
- ]
91
- }
92
- }
93
- }
94
- })
105
+ { text: "Willkommen", link: "/de" },
106
+ { text: "Was ist PreactPress?", link: "/de/guide/what-is-preactpress" },
107
+ { text: "Erste Schritte", link: "/de/guide/getting-started" },
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ },
113
+ },
114
+ });
@@ -4,12 +4,12 @@ This is the canonical PreactPress documentation and the site created by `preactp
4
4
 
5
5
  ## Commands
6
6
 
7
- | Script | Purpose |
8
- | --- | --- |
9
- | `pnpm run dev` | Start the docs at http://localhost:5173 |
10
- | `pnpm run check` | Validate routes, config, and links |
11
- | `pnpm run build` | Generate static output in `dist/` |
12
- | `pnpm run preview` | Preview the production output locally |
7
+ | Script | Purpose |
8
+ | ------------------ | --------------------------------------- |
9
+ | `pnpm run dev` | Start the docs at http://localhost:5173 |
10
+ | `pnpm run check` | Validate routes, config, and links |
11
+ | `pnpm run build` | Generate static output in `dist/` |
12
+ | `pnpm run preview` | Preview the production output locally |
13
13
 
14
14
  ## Structure
15
15
 
@@ -0,0 +1,45 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+
4
+ const benefits = [
5
+ {
6
+ title: "Preact components in MDX",
7
+ details:
8
+ "Bring interactive examples, demos and product-specific widgets into otherwise simple content.",
9
+ href: "/guide/markdown-and-mdx",
10
+ },
11
+ {
12
+ title: "Documentation features included",
13
+ details:
14
+ "Navigation, sidebars, local search, outlines, tags, i18n and validation are ready in the docs template.",
15
+ href: "/guide/configuration",
16
+ },
17
+ {
18
+ title: "Static deployment anywhere",
19
+ details:
20
+ "Build once and publish the generated files to GitHub Pages, Netlify, Vercel, Cloudflare Pages or any static host.",
21
+ href: "/guide/deploy",
22
+ },
23
+ ];
24
+
25
+ export default function BenefitsGrid() {
26
+ return (
27
+ <section class="pp-mkt-section" aria-labelledby="benefits-title">
28
+ <div class="pp-mkt-section-heading">
29
+ <p class="pp-mkt-eyebrow">Three main benefits</p>
30
+ <h2 id="benefits-title">Focused on Preact documentation</h2>
31
+ </div>
32
+ <div class="pp-mkt-card-grid pp-mkt-card-grid-three">
33
+ {benefits.map((benefit, index) => (
34
+ <a class="pp-mkt-card" href={benefit.href} key={benefit.title}>
35
+ <span class="pp-mkt-card-index" aria-hidden="true">
36
+ 0{index + 1}
37
+ </span>
38
+ <h3>{benefit.title}</h3>
39
+ <p>{benefit.details}</p>
40
+ </a>
41
+ ))}
42
+ </div>
43
+ </section>
44
+ );
45
+ }
@@ -0,0 +1,38 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+
4
+ const commands = [
5
+ { cwd: "~", cmd: "pnpm dlx @kamod-ch/preactpress init my-docs --template docs" },
6
+ { cwd: "~", cmd: "cd my-docs" },
7
+ { cwd: "my-docs", cmd: "pnpm install" },
8
+ { cwd: "my-docs", cmd: "pnpm dev", active: true },
9
+ ];
10
+
11
+ export default function CliBlock() {
12
+ return (
13
+ <section class="pp-mkt-cli" aria-label="Start a PreactPress documentation site">
14
+ <div class="pp-mkt-code-card pp-mkt-code-card-terminal">
15
+ <div class="pp-mkt-code-topbar" aria-hidden="true">
16
+ <span />
17
+ <span />
18
+ <span />
19
+ <span class="pp-mkt-terminal-title">Terminal — zsh</span>
20
+ </div>
21
+ <pre>
22
+ <code>
23
+ {commands.map((command) => (
24
+ <span class="pp-mkt-terminal-line" key={command.cmd}>
25
+ <span class="pp-mkt-terminal-prompt" aria-hidden="true">
26
+ <span class="pp-mkt-terminal-path">{command.cwd}</span>
27
+ <span class="pp-mkt-terminal-caret">%</span>
28
+ </span>
29
+ <span class="pp-mkt-terminal-cmd">{command.cmd}</span>
30
+ {command.active ? <span class="pp-mkt-terminal-cursor" aria-hidden="true" /> : null}
31
+ </span>
32
+ ))}
33
+ </code>
34
+ </pre>
35
+ </div>
36
+ </section>
37
+ );
38
+ }
@@ -0,0 +1,60 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+
4
+ const products = [
5
+ {
6
+ product: "PreactPress",
7
+ components: "Preact + MDX",
8
+ focus: "Preact documentation",
9
+ },
10
+ {
11
+ product: "VitePress",
12
+ components: "Vue",
13
+ focus: "Vue documentation",
14
+ },
15
+ {
16
+ product: "Docusaurus",
17
+ components: "React",
18
+ focus: "Large documentation portals",
19
+ },
20
+ {
21
+ product: "Starlight",
22
+ components: "Astro",
23
+ focus: "Cross-framework content sites",
24
+ },
25
+ ];
26
+
27
+ export default function ComparisonTable() {
28
+ return (
29
+ <section class="pp-mkt-section" aria-labelledby="comparison-title">
30
+ <div class="pp-mkt-section-heading">
31
+ <p class="pp-mkt-eyebrow">Comparison</p>
32
+ <h2 id="comparison-title">Pick the documentation tool that matches your stack</h2>
33
+ <p>
34
+ Each tool has a clear audience. PreactPress is for teams that want documentation built
35
+ around Preact and MDX.
36
+ </p>
37
+ </div>
38
+ <div class="pp-mkt-table-wrap">
39
+ <table class="pp-mkt-table">
40
+ <thead>
41
+ <tr>
42
+ <th scope="col">Product</th>
43
+ <th scope="col">Components</th>
44
+ <th scope="col">Best for</th>
45
+ </tr>
46
+ </thead>
47
+ <tbody>
48
+ {products.map((product) => (
49
+ <tr key={product.product}>
50
+ <th scope="row">{product.product}</th>
51
+ <td>{product.components}</td>
52
+ <td>{product.focus}</td>
53
+ </tr>
54
+ ))}
55
+ </tbody>
56
+ </table>
57
+ </div>
58
+ </section>
59
+ );
60
+ }
@@ -0,0 +1,86 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+ import { useCallback, useEffect, useRef, useState } from "preact/hooks";
4
+
5
+ async function copyText(text: string): Promise<void> {
6
+ if (navigator.clipboard?.writeText) {
7
+ await navigator.clipboard.writeText(text);
8
+ return;
9
+ }
10
+
11
+ const textarea = document.createElement("textarea");
12
+ textarea.value = text;
13
+ textarea.setAttribute("readonly", "");
14
+ textarea.style.position = "fixed";
15
+ textarea.style.left = "-9999px";
16
+ document.body.appendChild(textarea);
17
+ textarea.select();
18
+ document.execCommand("copy");
19
+ document.body.removeChild(textarea);
20
+ }
21
+
22
+ export default function CopyableCommand({ command }: { command: string }) {
23
+ const [copied, setCopied] = useState(false);
24
+ const resetTimer = useRef<number | undefined>(undefined);
25
+
26
+ const copy = useCallback(async () => {
27
+ try {
28
+ await copyText(command);
29
+ setCopied(true);
30
+ window.clearTimeout(resetTimer.current);
31
+ resetTimer.current = window.setTimeout(() => setCopied(false), 2000);
32
+ } catch {
33
+ setCopied(false);
34
+ }
35
+ }, [command]);
36
+
37
+ useEffect(() => () => window.clearTimeout(resetTimer.current), []);
38
+
39
+ return (
40
+ <div class="pp-mkt-copyable">
41
+ <code class="pp-mkt-copyable-code">{command}</code>
42
+ <button
43
+ type="button"
44
+ class={`pp-mkt-copy-btn${copied ? " pp-mkt-copy-btn-copied" : ""}`}
45
+ onClick={copy}
46
+ aria-label={copied ? "Command copied" : "Copy command"}
47
+ title={copied ? "Copied" : "Copy command"}
48
+ >
49
+ {copied ? (
50
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
51
+ <path
52
+ d="M20 6 9 17l-5-5"
53
+ fill="none"
54
+ stroke="currentColor"
55
+ stroke-linecap="round"
56
+ stroke-linejoin="round"
57
+ stroke-width="2"
58
+ />
59
+ </svg>
60
+ ) : (
61
+ <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">
62
+ <rect
63
+ x="9"
64
+ y="9"
65
+ width="11"
66
+ height="11"
67
+ rx="2"
68
+ fill="none"
69
+ stroke="currentColor"
70
+ stroke-width="2"
71
+ />
72
+ <path
73
+ d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
74
+ fill="none"
75
+ stroke="currentColor"
76
+ stroke-linecap="round"
77
+ stroke-linejoin="round"
78
+ stroke-width="2"
79
+ />
80
+ </svg>
81
+ )}
82
+ <span class="pp-mkt-copy-btn-label">{copied ? "Copied" : "Copy"}</span>
83
+ </button>
84
+ </div>
85
+ );
86
+ }
@@ -1,10 +1,10 @@
1
- import { useState } from 'preact/hooks'
1
+ import { useState } from "preact/hooks";
2
2
 
3
- export default function Counter({ initial = 0 }: { initial?: number }) {
4
- const [count, setCount] = useState(initial)
3
+ export function Counter({ initial = 0 }: { initial?: number }) {
4
+ const [count, setCount] = useState(initial);
5
5
 
6
6
  return (
7
- <div style={{ display: 'inline-flex', alignItems: 'center', gap: '0.5rem' }}>
7
+ <div style={{ display: "inline-flex", alignItems: "center", gap: "0.5rem" }}>
8
8
  <button
9
9
  type="button"
10
10
  onClick={() => setCount((value) => value - 1)}
@@ -21,5 +21,7 @@ export default function Counter({ initial = 0 }: { initial?: number }) {
21
21
  +
22
22
  </button>
23
23
  </div>
24
- )
24
+ );
25
25
  }
26
+
27
+ export default Counter;
@@ -0,0 +1,63 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+
4
+ const actions = [
5
+ { text: "Get started", href: "/guide/getting-started", theme: "brand" },
6
+ { text: "View demo", href: "#interactive-demo", theme: "alt" },
7
+ {
8
+ text: "GitHub",
9
+ href: "https://github.com/kamod-ch/preactpress",
10
+ theme: "ghost",
11
+ external: true,
12
+ },
13
+ ];
14
+
15
+ export default function MarketingHero() {
16
+ return (
17
+ <section class="pp-mkt-hero" aria-labelledby="preactpress-hero-title">
18
+ <div class="pp-mkt-hero-copy">
19
+ <p class="pp-mkt-eyebrow">PreactPress</p>
20
+ <h1 id="preactpress-hero-title">The documentation framework for Preact</h1>
21
+ <p class="pp-mkt-hero-lead">
22
+ Build fast documentation, blogs and product sites with Markdown, MDX, Preact and Vite.
23
+ </p>
24
+ <div class="pp-mkt-actions">
25
+ {actions.map((action) => (
26
+ <a
27
+ class={`pp-mkt-button pp-mkt-button-${action.theme}`}
28
+ href={action.href}
29
+ key={action.text}
30
+ rel={action.external ? "noopener noreferrer" : undefined}
31
+ target={action.external ? "_blank" : undefined}
32
+ >
33
+ {action.text}
34
+ </a>
35
+ ))}
36
+ </div>
37
+ </div>
38
+ <div class="pp-mkt-hero-panel" aria-label="PreactPress workflow">
39
+ <span class="pp-mkt-panel-label">Markdown</span>
40
+ <span class="pp-mkt-panel-label">MDX</span>
41
+ <span class="pp-mkt-panel-label">Preact</span>
42
+ <span class="pp-mkt-panel-arrow" aria-hidden="true">
43
+ <svg
44
+ class="pp-mkt-panel-arrow-icon"
45
+ viewBox="0 0 24 24"
46
+ aria-hidden="true"
47
+ focusable="false"
48
+ >
49
+ <path
50
+ d="M12 5v10M8 11l4 4 4-4"
51
+ fill="none"
52
+ stroke="currentColor"
53
+ stroke-linecap="round"
54
+ stroke-linejoin="round"
55
+ stroke-width="2"
56
+ />
57
+ </svg>
58
+ </span>
59
+ <strong>Static docs</strong>
60
+ </div>
61
+ </section>
62
+ );
63
+ }
@@ -0,0 +1,96 @@
1
+ /** @jsx h */
2
+ import { h } from "preact";
3
+ import { Counter } from "./Counter.tsx";
4
+
5
+ const sourceLines = [
6
+ {
7
+ line: 1,
8
+ parts: [
9
+ { kind: "keyword", text: "import" },
10
+ { kind: "plain", text: " { Counter } " },
11
+ { kind: "keyword", text: "from" },
12
+ { kind: "string", text: "'./components/Counter'" },
13
+ ],
14
+ },
15
+ { line: 2, parts: [] },
16
+ {
17
+ line: 3,
18
+ parts: [{ kind: "heading", text: "# Interactive documentation" }],
19
+ },
20
+ { line: 4, parts: [] },
21
+ {
22
+ line: 5,
23
+ parts: [{ kind: "component", text: "<Counter />" }],
24
+ active: true,
25
+ },
26
+ ];
27
+
28
+ function EditorToken({ kind, text }: { kind: string; text: string }) {
29
+ return <span class={`pp-mkt-editor-token pp-mkt-editor-token-${kind}`}>{text}</span>;
30
+ }
31
+
32
+ export default function MdxDemo() {
33
+ return (
34
+ <section
35
+ class="pp-mkt-section pp-mkt-demo"
36
+ id="interactive-demo"
37
+ aria-labelledby="interactive-demo-title"
38
+ >
39
+ <div class="pp-mkt-section-heading">
40
+ <p class="pp-mkt-eyebrow">Interactive demo</p>
41
+ <h2 id="interactive-demo-title">A small MDX example</h2>
42
+ <p>
43
+ Author mostly in Markdown, then drop in Preact components exactly where the page needs
44
+ interactivity.
45
+ </p>
46
+ </div>
47
+ <div class="pp-mkt-demo-grid">
48
+ <div class="pp-mkt-demo-code">
49
+ <div class="pp-mkt-code-card pp-mkt-code-card-editor">
50
+ <div class="pp-mkt-code-topbar" aria-hidden="true">
51
+ <span />
52
+ <span />
53
+ <span />
54
+ <span class="pp-mkt-editor-title">
55
+ <span class="pp-mkt-editor-tab">pages/interactive.mdx</span>
56
+ </span>
57
+ </div>
58
+ <pre>
59
+ <code>
60
+ {sourceLines.map((sourceLine) => (
61
+ <span
62
+ class={`pp-mkt-editor-line${sourceLine.active ? " pp-mkt-editor-line-active" : ""}`}
63
+ key={sourceLine.line}
64
+ >
65
+ <span class="pp-mkt-editor-gutter" aria-hidden="true">
66
+ {sourceLine.line}
67
+ </span>
68
+ <span class="pp-mkt-editor-content">
69
+ {sourceLine.parts.map((part) => (
70
+ <EditorToken
71
+ kind={part.kind}
72
+ key={`${sourceLine.line}-${part.text}`}
73
+ text={part.text}
74
+ />
75
+ ))}
76
+ {sourceLine.active ? (
77
+ <span class="pp-mkt-editor-cursor" aria-hidden="true" />
78
+ ) : null}
79
+ </span>
80
+ </span>
81
+ ))}
82
+ </code>
83
+ </pre>
84
+ </div>
85
+ </div>
86
+ <div class="pp-mkt-demo-result" aria-label="Rendered MDX result">
87
+ <article>
88
+ <p class="pp-mkt-demo-label">Rendered result</p>
89
+ <h3>Interactive documentation</h3>
90
+ <Counter />
91
+ </article>
92
+ </div>
93
+ </div>
94
+ </section>
95
+ );
96
+ }