@pagesmith/docs 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/README.md +34 -31
  2. package/REFERENCE.md +494 -0
  3. package/dist/cli/bin.mjs +197 -10
  4. package/dist/cli/bin.mjs.map +1 -1
  5. package/dist/index.d.mts +120 -6
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +2 -2
  8. package/dist/preset.mjs +1 -1
  9. package/dist/schemas/index.d.mts +2 -1615
  10. package/dist/schemas/index.mjs +2 -263
  11. package/dist/site-dJ3MiiW3.mjs +1756 -0
  12. package/dist/site-dJ3MiiW3.mjs.map +1 -0
  13. package/package.json +14 -23
  14. package/theme/components/Html.tsx +67 -1
  15. package/theme/layouts/DocHome.tsx +8 -1
  16. package/theme/layouts/DocPage.tsx +80 -2
  17. package/theme/styles/content/page-meta.css +65 -0
  18. package/theme/styles/main.css +1 -0
  19. package/dist/abap-DriO5VG6.mjs +0 -5
  20. package/dist/abap-DriO5VG6.mjs.map +0 -1
  21. package/dist/actionscript-3-G6toewHp.mjs +0 -5
  22. package/dist/actionscript-3-G6toewHp.mjs.map +0 -1
  23. package/dist/ada-C_QiJ0Pq.mjs +0 -5
  24. package/dist/ada-C_QiJ0Pq.mjs.map +0 -1
  25. package/dist/andromeeda-CoIEPgYR.mjs +0 -6
  26. package/dist/andromeeda-CoIEPgYR.mjs.map +0 -1
  27. package/dist/angular-html-D9wIlok7.mjs +0 -35
  28. package/dist/angular-html-D9wIlok7.mjs.map +0 -1
  29. package/dist/angular-ts-Dxk7hl9Z.mjs +0 -29
  30. package/dist/angular-ts-Dxk7hl9Z.mjs.map +0 -1
  31. package/dist/apache-B1aRGcgY.mjs +0 -5
  32. package/dist/apache-B1aRGcgY.mjs.map +0 -1
  33. package/dist/apex-FoK4UgwA.mjs +0 -5
  34. package/dist/apex-FoK4UgwA.mjs.map +0 -1
  35. package/dist/apl-DwmTqCJs.mjs +0 -19
  36. package/dist/apl-DwmTqCJs.mjs.map +0 -1
  37. package/dist/applescript-eBeY0Hp4.mjs +0 -5
  38. package/dist/applescript-eBeY0Hp4.mjs.map +0 -1
  39. package/dist/ara-CkIucGv1.mjs +0 -5
  40. package/dist/ara-CkIucGv1.mjs.map +0 -1
  41. package/dist/asciidoc-AIdrECCR.mjs +0 -5
  42. package/dist/asciidoc-AIdrECCR.mjs.map +0 -1
  43. package/dist/asm-CflFLM6a.mjs +0 -5
  44. package/dist/asm-CflFLM6a.mjs.map +0 -1
  45. package/dist/astro-DLt5gl0n.mjs +0 -21
  46. package/dist/astro-DLt5gl0n.mjs.map +0 -1
  47. package/dist/aurora-x-DbqEqkUT.mjs +0 -6
  48. package/dist/aurora-x-DbqEqkUT.mjs.map +0 -1
  49. package/dist/awk-Br_61sCS.mjs +0 -5
  50. package/dist/awk-Br_61sCS.mjs.map +0 -1
  51. package/dist/ayu-dark-DdJXJf7U.mjs +0 -6
  52. package/dist/ayu-dark-DdJXJf7U.mjs.map +0 -1
  53. package/dist/ayu-light-Bg-9Hujp.mjs +0 -6
  54. package/dist/ayu-light-Bg-9Hujp.mjs.map +0 -1
  55. package/dist/ayu-mirage-7v6-qMvl.mjs +0 -6
  56. package/dist/ayu-mirage-7v6-qMvl.mjs.map +0 -1
  57. package/dist/ballerina-D-8GYl8R.mjs +0 -5
  58. package/dist/ballerina-D-8GYl8R.mjs.map +0 -1
  59. package/dist/bat-CJ4nIaxw.mjs +0 -5
  60. package/dist/bat-CJ4nIaxw.mjs.map +0 -1
  61. package/dist/beancount-DFPOglwN.mjs +0 -5
  62. package/dist/beancount-DFPOglwN.mjs.map +0 -1
  63. package/dist/berry-DiM_rwEt.mjs +0 -5
  64. package/dist/berry-DiM_rwEt.mjs.map +0 -1
  65. package/dist/bibtex-ryU9pJLB.mjs +0 -5
  66. package/dist/bibtex-ryU9pJLB.mjs.map +0 -1
  67. package/dist/bicep-DFoNCrG3.mjs +0 -5
  68. package/dist/bicep-DFoNCrG3.mjs.map +0 -1
  69. package/dist/bird2-C3EaFiUY.mjs +0 -5
  70. package/dist/bird2-C3EaFiUY.mjs.map +0 -1
  71. package/dist/blade-Cwq7FVfH.mjs +0 -23
  72. package/dist/blade-Cwq7FVfH.mjs.map +0 -1
  73. package/dist/bsl-Ci4vkNj8.mjs +0 -8
  74. package/dist/bsl-Ci4vkNj8.mjs.map +0 -1
  75. package/dist/c-D7oHDxxD.mjs +0 -8
  76. package/dist/c-D7oHDxxD.mjs.map +0 -1
  77. package/dist/c3-D5hU-x2t.mjs +0 -5
  78. package/dist/c3-D5hU-x2t.mjs.map +0 -1
  79. package/dist/cadence-B-Z42oTz.mjs +0 -5
  80. package/dist/cadence-B-Z42oTz.mjs.map +0 -1
  81. package/dist/cairo-BpET0YK1.mjs +0 -8
  82. package/dist/cairo-BpET0YK1.mjs.map +0 -1
  83. package/dist/catppuccin-frappe-0BRWFMtJ.mjs +0 -6
  84. package/dist/catppuccin-frappe-0BRWFMtJ.mjs.map +0 -1
  85. package/dist/catppuccin-latte-VaqpfzxV.mjs +0 -6
  86. package/dist/catppuccin-latte-VaqpfzxV.mjs.map +0 -1
  87. package/dist/catppuccin-macchiato-qrypRbXk.mjs +0 -6
  88. package/dist/catppuccin-macchiato-qrypRbXk.mjs.map +0 -1
  89. package/dist/catppuccin-mocha-Dvb6gv4O.mjs +0 -6
  90. package/dist/catppuccin-mocha-Dvb6gv4O.mjs.map +0 -1
  91. package/dist/clarity-egx-5RLz.mjs +0 -5
  92. package/dist/clarity-egx-5RLz.mjs.map +0 -1
  93. package/dist/clojure-N5xIuTbG.mjs +0 -5
  94. package/dist/clojure-N5xIuTbG.mjs.map +0 -1
  95. package/dist/cmake-CYzXNVI_.mjs +0 -5
  96. package/dist/cmake-CYzXNVI_.mjs.map +0 -1
  97. package/dist/cobol-DuznKErk.mjs +0 -13
  98. package/dist/cobol-DuznKErk.mjs.map +0 -1
  99. package/dist/codeowners-BaallJaj.mjs +0 -5
  100. package/dist/codeowners-BaallJaj.mjs.map +0 -1
  101. package/dist/codeql-BIahF8Ga.mjs +0 -5
  102. package/dist/codeql-BIahF8Ga.mjs.map +0 -1
  103. package/dist/coffee-t6lXzaXy.mjs +0 -8
  104. package/dist/coffee-t6lXzaXy.mjs.map +0 -1
  105. package/dist/common-lisp-bLMBDFt9.mjs +0 -5
  106. package/dist/common-lisp-bLMBDFt9.mjs.map +0 -1
  107. package/dist/coq-h9z5p2Ui.mjs +0 -5
  108. package/dist/coq-h9z5p2Ui.mjs.map +0 -1
  109. package/dist/cpp-D6_V2gI1.mjs +0 -27
  110. package/dist/cpp-D6_V2gI1.mjs.map +0 -1
  111. package/dist/crystal-BH-Qv6Rl.mjs +0 -21
  112. package/dist/crystal-BH-Qv6Rl.mjs.map +0 -1
  113. package/dist/csharp-BbHR3YVQ.mjs +0 -5
  114. package/dist/csharp-BbHR3YVQ.mjs.map +0 -1
  115. package/dist/css-Wu--EEs5.mjs +0 -8
  116. package/dist/css-Wu--EEs5.mjs.map +0 -1
  117. package/dist/csv-CRvIpAc5.mjs +0 -5
  118. package/dist/csv-CRvIpAc5.mjs.map +0 -1
  119. package/dist/cue-B8A_h-kS.mjs +0 -5
  120. package/dist/cue-B8A_h-kS.mjs.map +0 -1
  121. package/dist/cypher-B8mmimml.mjs +0 -5
  122. package/dist/cypher-B8mmimml.mjs.map +0 -1
  123. package/dist/d-Ddz3GmKc.mjs +0 -5
  124. package/dist/d-Ddz3GmKc.mjs.map +0 -1
  125. package/dist/dark-plus-BjClkp3W.mjs +0 -6
  126. package/dist/dark-plus-BjClkp3W.mjs.map +0 -1
  127. package/dist/dart-BOQAkR91.mjs +0 -5
  128. package/dist/dart-BOQAkR91.mjs.map +0 -1
  129. package/dist/dax-D3YKmfop.mjs +0 -5
  130. package/dist/dax-D3YKmfop.mjs.map +0 -1
  131. package/dist/desktop-wo52vLHj.mjs +0 -5
  132. package/dist/desktop-wo52vLHj.mjs.map +0 -1
  133. package/dist/diff-nA9OrLiI.mjs +0 -5
  134. package/dist/diff-nA9OrLiI.mjs.map +0 -1
  135. package/dist/docker-BgWkJ5L9.mjs +0 -5
  136. package/dist/docker-BgWkJ5L9.mjs.map +0 -1
  137. package/dist/dotenv-90bAk1yC.mjs +0 -5
  138. package/dist/dotenv-90bAk1yC.mjs.map +0 -1
  139. package/dist/dracula-EYPvHKFq.mjs +0 -6
  140. package/dist/dracula-EYPvHKFq.mjs.map +0 -1
  141. package/dist/dracula-soft-Bb4JppaT.mjs +0 -6
  142. package/dist/dracula-soft-Bb4JppaT.mjs.map +0 -1
  143. package/dist/dream-maker-DbEH6ABX.mjs +0 -5
  144. package/dist/dream-maker-DbEH6ABX.mjs.map +0 -1
  145. package/dist/edge-CiNxTnJq.mjs +0 -15
  146. package/dist/edge-CiNxTnJq.mjs.map +0 -1
  147. package/dist/elixir-M-tyUuPQ.mjs +0 -8
  148. package/dist/elixir-M-tyUuPQ.mjs.map +0 -1
  149. package/dist/elm-CPy7ntV_.mjs +0 -8
  150. package/dist/elm-CPy7ntV_.mjs.map +0 -1
  151. package/dist/emacs-lisp-Brxx0Sbt.mjs +0 -5
  152. package/dist/emacs-lisp-Brxx0Sbt.mjs.map +0 -1
  153. package/dist/engine-javascript-CjxD84Z_.mjs +0 -3058
  154. package/dist/engine-javascript-CjxD84Z_.mjs.map +0 -1
  155. package/dist/engine-oniguruma-B2buYh9y.mjs +0 -389
  156. package/dist/engine-oniguruma-B2buYh9y.mjs.map +0 -1
  157. package/dist/erb-CP0kP8S1.mjs +0 -13
  158. package/dist/erb-CP0kP8S1.mjs.map +0 -1
  159. package/dist/erlang-Ji96SB8L.mjs +0 -8
  160. package/dist/erlang-Ji96SB8L.mjs.map +0 -1
  161. package/dist/everforest-dark-mXu75VmU.mjs +0 -6
  162. package/dist/everforest-dark-mXu75VmU.mjs.map +0 -1
  163. package/dist/everforest-light-B0xAPlUp.mjs +0 -6
  164. package/dist/everforest-light-B0xAPlUp.mjs.map +0 -1
  165. package/dist/fennel-DZeZiT-Z.mjs +0 -5
  166. package/dist/fennel-DZeZiT-Z.mjs.map +0 -1
  167. package/dist/fish-BW_XyVWl.mjs +0 -5
  168. package/dist/fish-BW_XyVWl.mjs.map +0 -1
  169. package/dist/fluent-D5wjIx4S.mjs +0 -5
  170. package/dist/fluent-D5wjIx4S.mjs.map +0 -1
  171. package/dist/fortran-fixed-form-pFDq8aul.mjs +0 -8
  172. package/dist/fortran-fixed-form-pFDq8aul.mjs.map +0 -1
  173. package/dist/fortran-free-form-B6T0euh-.mjs +0 -5
  174. package/dist/fortran-free-form-B6T0euh-.mjs.map +0 -1
  175. package/dist/fsharp-DFzfL_uZ.mjs +0 -8
  176. package/dist/fsharp-DFzfL_uZ.mjs.map +0 -1
  177. package/dist/gdresource-DZkMKM9Q.mjs +0 -13
  178. package/dist/gdresource-DZkMKM9Q.mjs.map +0 -1
  179. package/dist/gdscript-DwtQqEcX.mjs +0 -5
  180. package/dist/gdscript-DwtQqEcX.mjs.map +0 -1
  181. package/dist/gdshader-rDwkUCaa.mjs +0 -5
  182. package/dist/gdshader-rDwkUCaa.mjs.map +0 -1
  183. package/dist/genie-BfhM6kGv.mjs +0 -5
  184. package/dist/genie-BfhM6kGv.mjs.map +0 -1
  185. package/dist/gherkin-G-JA03FJ.mjs +0 -5
  186. package/dist/gherkin-G-JA03FJ.mjs.map +0 -1
  187. package/dist/git-commit-drj2jjWh.mjs +0 -8
  188. package/dist/git-commit-drj2jjWh.mjs.map +0 -1
  189. package/dist/git-rebase-CaohyQnS.mjs +0 -8
  190. package/dist/git-rebase-CaohyQnS.mjs.map +0 -1
  191. package/dist/github-dark-CTenoRQ8.mjs +0 -6
  192. package/dist/github-dark-CTenoRQ8.mjs.map +0 -1
  193. package/dist/github-dark-default-Con6b1h-.mjs +0 -6
  194. package/dist/github-dark-default-Con6b1h-.mjs.map +0 -1
  195. package/dist/github-dark-dimmed-CaAnvWw3.mjs +0 -6
  196. package/dist/github-dark-dimmed-CaAnvWw3.mjs.map +0 -1
  197. package/dist/github-dark-high-contrast-COm7y1Rv.mjs +0 -6
  198. package/dist/github-dark-high-contrast-COm7y1Rv.mjs.map +0 -1
  199. package/dist/github-light-D74aa4dO.mjs +0 -6
  200. package/dist/github-light-D74aa4dO.mjs.map +0 -1
  201. package/dist/github-light-default-BBVzuVUz.mjs +0 -6
  202. package/dist/github-light-default-BBVzuVUz.mjs.map +0 -1
  203. package/dist/github-light-high-contrast-CqxSzsLD.mjs +0 -6
  204. package/dist/github-light-high-contrast-CqxSzsLD.mjs.map +0 -1
  205. package/dist/gleam-DzWkrReo.mjs +0 -5
  206. package/dist/gleam-DzWkrReo.mjs.map +0 -1
  207. package/dist/glimmer-js-BNQY0kPX.mjs +0 -17
  208. package/dist/glimmer-js-BNQY0kPX.mjs.map +0 -1
  209. package/dist/glimmer-ts-DO-qafJY.mjs +0 -17
  210. package/dist/glimmer-ts-DO-qafJY.mjs.map +0 -1
  211. package/dist/glsl-wU4MxvvQ.mjs +0 -10
  212. package/dist/glsl-wU4MxvvQ.mjs.map +0 -1
  213. package/dist/gn-DVz3m6tN.mjs +0 -5
  214. package/dist/gn-DVz3m6tN.mjs.map +0 -1
  215. package/dist/gnuplot-D4teOAbn.mjs +0 -5
  216. package/dist/gnuplot-D4teOAbn.mjs.map +0 -1
  217. package/dist/go-DcqYXZDE.mjs +0 -5
  218. package/dist/go-DcqYXZDE.mjs.map +0 -1
  219. package/dist/graphql-CAmmtGyG.mjs +0 -19
  220. package/dist/graphql-CAmmtGyG.mjs.map +0 -1
  221. package/dist/groovy-BdsJaZey.mjs +0 -5
  222. package/dist/groovy-BdsJaZey.mjs.map +0 -1
  223. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs +0 -6
  224. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs.map +0 -1
  225. package/dist/gruvbox-dark-medium-uVadnpDA.mjs +0 -6
  226. package/dist/gruvbox-dark-medium-uVadnpDA.mjs.map +0 -1
  227. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs +0 -6
  228. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs.map +0 -1
  229. package/dist/gruvbox-light-hard-BXZeSfoD.mjs +0 -6
  230. package/dist/gruvbox-light-hard-BXZeSfoD.mjs.map +0 -1
  231. package/dist/gruvbox-light-medium-D7mAxe90.mjs +0 -6
  232. package/dist/gruvbox-light-medium-D7mAxe90.mjs.map +0 -1
  233. package/dist/gruvbox-light-soft-enFNSJ1V.mjs +0 -6
  234. package/dist/gruvbox-light-soft-enFNSJ1V.mjs.map +0 -1
  235. package/dist/hack-DgaC5QUw.mjs +0 -13
  236. package/dist/hack-DgaC5QUw.mjs.map +0 -1
  237. package/dist/haml-1vrxYPQe.mjs +0 -15
  238. package/dist/haml-1vrxYPQe.mjs.map +0 -1
  239. package/dist/handlebars-BOf036w9.mjs +0 -17
  240. package/dist/handlebars-BOf036w9.mjs.map +0 -1
  241. package/dist/haskell-BgXObw3Z.mjs +0 -5
  242. package/dist/haskell-BgXObw3Z.mjs.map +0 -1
  243. package/dist/haxe-SN6gQnv7.mjs +0 -5
  244. package/dist/haxe-SN6gQnv7.mjs.map +0 -1
  245. package/dist/hcl-DfQ78ybU.mjs +0 -5
  246. package/dist/hcl-DfQ78ybU.mjs.map +0 -1
  247. package/dist/hjson-DsbHj1Vu.mjs +0 -5
  248. package/dist/hjson-DsbHj1Vu.mjs.map +0 -1
  249. package/dist/hlsl-DErhWTj4.mjs +0 -5
  250. package/dist/hlsl-DErhWTj4.mjs.map +0 -1
  251. package/dist/horizon-bright-BLpSmqnO.mjs +0 -6
  252. package/dist/horizon-bright-BLpSmqnO.mjs.map +0 -1
  253. package/dist/horizon-mHk0xSKw.mjs +0 -6
  254. package/dist/horizon-mHk0xSKw.mjs.map +0 -1
  255. package/dist/houston-CJWIjsF-.mjs +0 -6
  256. package/dist/houston-CJWIjsF-.mjs.map +0 -1
  257. package/dist/html-derivative-CoKpUZPA.mjs +0 -8
  258. package/dist/html-derivative-CoKpUZPA.mjs.map +0 -1
  259. package/dist/html-hLCdjm8s.mjs +0 -15
  260. package/dist/html-hLCdjm8s.mjs.map +0 -1
  261. package/dist/http-Cu2vb2m1.mjs +0 -17
  262. package/dist/http-Cu2vb2m1.mjs.map +0 -1
  263. package/dist/hurl-DXLUiPe9.mjs +0 -15
  264. package/dist/hurl-DXLUiPe9.mjs.map +0 -1
  265. package/dist/hxml-D53ff3CT.mjs +0 -8
  266. package/dist/hxml-D53ff3CT.mjs.map +0 -1
  267. package/dist/hy-V5YDnsp0.mjs +0 -5
  268. package/dist/hy-V5YDnsp0.mjs.map +0 -1
  269. package/dist/imba-Dj8CXVx-.mjs +0 -5
  270. package/dist/imba-Dj8CXVx-.mjs.map +0 -1
  271. package/dist/ini-BBJUwrOG.mjs +0 -5
  272. package/dist/ini-BBJUwrOG.mjs.map +0 -1
  273. package/dist/java-YvKbK6tX.mjs +0 -8
  274. package/dist/java-YvKbK6tX.mjs.map +0 -1
  275. package/dist/javascript-YIAaXWRu.mjs +0 -8
  276. package/dist/javascript-YIAaXWRu.mjs.map +0 -1
  277. package/dist/jinja-ENyZ39OR.mjs +0 -12
  278. package/dist/jinja-ENyZ39OR.mjs.map +0 -1
  279. package/dist/jison-a-QW5GR4.mjs +0 -8
  280. package/dist/jison-a-QW5GR4.mjs.map +0 -1
  281. package/dist/json-D_p_sVuw.mjs +0 -8
  282. package/dist/json-D_p_sVuw.mjs.map +0 -1
  283. package/dist/json5-DC6Kkd4p.mjs +0 -5
  284. package/dist/json5-DC6Kkd4p.mjs.map +0 -1
  285. package/dist/jsonc-CXqrxP7Z.mjs +0 -5
  286. package/dist/jsonc-CXqrxP7Z.mjs.map +0 -1
  287. package/dist/jsonl-CzqgMhZd.mjs +0 -5
  288. package/dist/jsonl-CzqgMhZd.mjs.map +0 -1
  289. package/dist/jsonnet-Hvy31yDW.mjs +0 -5
  290. package/dist/jsonnet-Hvy31yDW.mjs.map +0 -1
  291. package/dist/jssm-CKXXM0Nd.mjs +0 -5
  292. package/dist/jssm-CKXXM0Nd.mjs.map +0 -1
  293. package/dist/jsx-Cmr67-nO.mjs +0 -8
  294. package/dist/jsx-Cmr67-nO.mjs.map +0 -1
  295. package/dist/julia-apY6-EoT.mjs +0 -19
  296. package/dist/julia-apY6-EoT.mjs.map +0 -1
  297. package/dist/just-DPxowZX-.mjs +0 -21
  298. package/dist/just-DPxowZX-.mjs.map +0 -1
  299. package/dist/kanagawa-dragon-bgbtpXkX.mjs +0 -6
  300. package/dist/kanagawa-dragon-bgbtpXkX.mjs.map +0 -1
  301. package/dist/kanagawa-lotus-CAjM2aBD.mjs +0 -6
  302. package/dist/kanagawa-lotus-CAjM2aBD.mjs.map +0 -1
  303. package/dist/kanagawa-wave-gUF-XydY.mjs +0 -6
  304. package/dist/kanagawa-wave-gUF-XydY.mjs.map +0 -1
  305. package/dist/kdl-DakeRkny.mjs +0 -5
  306. package/dist/kdl-DakeRkny.mjs.map +0 -1
  307. package/dist/kotlin-Cy2z7uIJ.mjs +0 -5
  308. package/dist/kotlin-Cy2z7uIJ.mjs.map +0 -1
  309. package/dist/kusto-8vFexomq.mjs +0 -5
  310. package/dist/kusto-8vFexomq.mjs.map +0 -1
  311. package/dist/laserwave-afq0Xxwk.mjs +0 -6
  312. package/dist/laserwave-afq0Xxwk.mjs.map +0 -1
  313. package/dist/latex-D_F2h8-H.mjs +0 -8
  314. package/dist/latex-D_F2h8-H.mjs.map +0 -1
  315. package/dist/lean-IHm98qhW.mjs +0 -5
  316. package/dist/lean-IHm98qhW.mjs.map +0 -1
  317. package/dist/less-D6RfQ6-S.mjs +0 -5
  318. package/dist/less-D6RfQ6-S.mjs.map +0 -1
  319. package/dist/light-plus-Dwa6Dmsm.mjs +0 -6
  320. package/dist/light-plus-Dwa6Dmsm.mjs.map +0 -1
  321. package/dist/liquid-DK7BdQ-d.mjs +0 -17
  322. package/dist/liquid-DK7BdQ-d.mjs.map +0 -1
  323. package/dist/llvm-CbsqsAF1.mjs +0 -5
  324. package/dist/llvm-CbsqsAF1.mjs.map +0 -1
  325. package/dist/log-CutLVNLV.mjs +0 -5
  326. package/dist/log-CutLVNLV.mjs.map +0 -1
  327. package/dist/logo-DNTC5lxi.mjs +0 -5
  328. package/dist/logo-DNTC5lxi.mjs.map +0 -1
  329. package/dist/lua-NCVDi2Y_.mjs +0 -10
  330. package/dist/lua-NCVDi2Y_.mjs.map +0 -1
  331. package/dist/luau-Z-b9t2YR.mjs +0 -5
  332. package/dist/luau-Z-b9t2YR.mjs.map +0 -1
  333. package/dist/make-D7o-TjTO.mjs +0 -5
  334. package/dist/make-D7o-TjTO.mjs.map +0 -1
  335. package/dist/markdown-CEvLuIE_.mjs +0 -5
  336. package/dist/markdown-CEvLuIE_.mjs.map +0 -1
  337. package/dist/markdown-config-BGDiDMhB.d.mts +0 -2094
  338. package/dist/markdown-config-BGDiDMhB.d.mts.map +0 -1
  339. package/dist/marko-DyPWMVoi.mjs +0 -17
  340. package/dist/marko-DyPWMVoi.mjs.map +0 -1
  341. package/dist/material-theme-BMSwLkhz.mjs +0 -6
  342. package/dist/material-theme-BMSwLkhz.mjs.map +0 -1
  343. package/dist/material-theme-darker-DREhSOvw.mjs +0 -6
  344. package/dist/material-theme-darker-DREhSOvw.mjs.map +0 -1
  345. package/dist/material-theme-lighter-egkNOF68.mjs +0 -6
  346. package/dist/material-theme-lighter-egkNOF68.mjs.map +0 -1
  347. package/dist/material-theme-ocean-CNqBAXQm.mjs +0 -6
  348. package/dist/material-theme-ocean-CNqBAXQm.mjs.map +0 -1
  349. package/dist/material-theme-palenight-DtcONgpr.mjs +0 -6
  350. package/dist/material-theme-palenight-DtcONgpr.mjs.map +0 -1
  351. package/dist/matlab-DHZHeFXY.mjs +0 -5
  352. package/dist/matlab-DHZHeFXY.mjs.map +0 -1
  353. package/dist/mdc-MKPEEsGA.mjs +0 -15
  354. package/dist/mdc-MKPEEsGA.mjs.map +0 -1
  355. package/dist/mdx-ClLOyMcG.mjs +0 -5
  356. package/dist/mdx-ClLOyMcG.mjs.map +0 -1
  357. package/dist/mermaid-CfX58h2h.mjs +0 -5
  358. package/dist/mermaid-CfX58h2h.mjs.map +0 -1
  359. package/dist/min-dark-CvIB8xOx.mjs +0 -6
  360. package/dist/min-dark-CvIB8xOx.mjs.map +0 -1
  361. package/dist/min-light-DnoFQoeu.mjs +0 -6
  362. package/dist/min-light-DnoFQoeu.mjs.map +0 -1
  363. package/dist/mipsasm-BPlrYcYb.mjs +0 -5
  364. package/dist/mipsasm-BPlrYcYb.mjs.map +0 -1
  365. package/dist/mojo-C5Qzk_lA.mjs +0 -5
  366. package/dist/mojo-C5Qzk_lA.mjs.map +0 -1
  367. package/dist/monokai-CmoRmG4x.mjs +0 -6
  368. package/dist/monokai-CmoRmG4x.mjs.map +0 -1
  369. package/dist/moonbit-BzaO7bLo.mjs +0 -5
  370. package/dist/moonbit-BzaO7bLo.mjs.map +0 -1
  371. package/dist/move-CAZmkwHx.mjs +0 -5
  372. package/dist/move-CAZmkwHx.mjs.map +0 -1
  373. package/dist/narrat-DN2gLj7A.mjs +0 -5
  374. package/dist/narrat-DN2gLj7A.mjs.map +0 -1
  375. package/dist/nextflow-DhVPPjdW.mjs +0 -8
  376. package/dist/nextflow-DhVPPjdW.mjs.map +0 -1
  377. package/dist/nextflow-groovy-DJq82mRo.mjs +0 -5
  378. package/dist/nextflow-groovy-DJq82mRo.mjs.map +0 -1
  379. package/dist/nginx-CU-DGOv1.mjs +0 -8
  380. package/dist/nginx-CU-DGOv1.mjs.map +0 -1
  381. package/dist/night-owl-Cs13ScSs.mjs +0 -6
  382. package/dist/night-owl-Cs13ScSs.mjs.map +0 -1
  383. package/dist/night-owl-light--HbEFF7Y.mjs +0 -6
  384. package/dist/night-owl-light--HbEFF7Y.mjs.map +0 -1
  385. package/dist/nim-3UbGj8cc.mjs +0 -23
  386. package/dist/nim-3UbGj8cc.mjs.map +0 -1
  387. package/dist/nix-CjXcUl9k.mjs +0 -9
  388. package/dist/nix-CjXcUl9k.mjs.map +0 -1
  389. package/dist/nord-C9GqXk2p.mjs +0 -6
  390. package/dist/nord-C9GqXk2p.mjs.map +0 -1
  391. package/dist/nushell-C4iFdrTc.mjs +0 -5
  392. package/dist/nushell-C4iFdrTc.mjs.map +0 -1
  393. package/dist/objective-c-CXuDGuMm.mjs +0 -5
  394. package/dist/objective-c-CXuDGuMm.mjs.map +0 -1
  395. package/dist/objective-cpp-V9yvCIRm.mjs +0 -5
  396. package/dist/objective-cpp-V9yvCIRm.mjs.map +0 -1
  397. package/dist/ocaml-D9fCj6sT.mjs +0 -5
  398. package/dist/ocaml-D9fCj6sT.mjs.map +0 -1
  399. package/dist/odin-CAKGLqrj.mjs +0 -5
  400. package/dist/odin-CAKGLqrj.mjs.map +0 -1
  401. package/dist/one-dark-pro-DW7BmY6Q.mjs +0 -6
  402. package/dist/one-dark-pro-DW7BmY6Q.mjs.map +0 -1
  403. package/dist/one-light-DCu0Wv9N.mjs +0 -6
  404. package/dist/one-light-DCu0Wv9N.mjs.map +0 -1
  405. package/dist/openscad-BdLZBBab.mjs +0 -5
  406. package/dist/openscad-BdLZBBab.mjs.map +0 -1
  407. package/dist/pascal-nsk9MKFb.mjs +0 -5
  408. package/dist/pascal-nsk9MKFb.mjs.map +0 -1
  409. package/dist/perl-DI9oLKmv.mjs +0 -19
  410. package/dist/perl-DI9oLKmv.mjs.map +0 -1
  411. package/dist/php-DJjzFdsM.mjs +0 -21
  412. package/dist/php-DJjzFdsM.mjs.map +0 -1
  413. package/dist/pkl-BVtC2QFe.mjs +0 -5
  414. package/dist/pkl-BVtC2QFe.mjs.map +0 -1
  415. package/dist/plastic-qUgYNoeW.mjs +0 -6
  416. package/dist/plastic-qUgYNoeW.mjs.map +0 -1
  417. package/dist/plsql-BwM0DOLE.mjs +0 -5
  418. package/dist/plsql-BwM0DOLE.mjs.map +0 -1
  419. package/dist/po-D39EqRsl.mjs +0 -5
  420. package/dist/po-D39EqRsl.mjs.map +0 -1
  421. package/dist/poimandres-DPRzGPvx.mjs +0 -6
  422. package/dist/poimandres-DPRzGPvx.mjs.map +0 -1
  423. package/dist/polar-DCBzWT3J.mjs +0 -5
  424. package/dist/polar-DCBzWT3J.mjs.map +0 -1
  425. package/dist/postcss-L6y-bzEw.mjs +0 -5
  426. package/dist/postcss-L6y-bzEw.mjs.map +0 -1
  427. package/dist/powerquery-BHkUTyux.mjs +0 -5
  428. package/dist/powerquery-BHkUTyux.mjs.map +0 -1
  429. package/dist/powershell-C80dlfD8.mjs +0 -5
  430. package/dist/powershell-C80dlfD8.mjs.map +0 -1
  431. package/dist/prisma-D407qtUw.mjs +0 -5
  432. package/dist/prisma-D407qtUw.mjs.map +0 -1
  433. package/dist/prolog-CSrn8-6K.mjs +0 -5
  434. package/dist/prolog-CSrn8-6K.mjs.map +0 -1
  435. package/dist/proto-ClvDy0H0.mjs +0 -5
  436. package/dist/proto-ClvDy0H0.mjs.map +0 -1
  437. package/dist/pug-Cyyu0V2y.mjs +0 -15
  438. package/dist/pug-Cyyu0V2y.mjs.map +0 -1
  439. package/dist/puppet-D5ZQtSNi.mjs +0 -5
  440. package/dist/puppet-D5ZQtSNi.mjs.map +0 -1
  441. package/dist/purescript-30PxZSjT.mjs +0 -5
  442. package/dist/purescript-30PxZSjT.mjs.map +0 -1
  443. package/dist/python-CpiNX4Ip.mjs +0 -5
  444. package/dist/python-CpiNX4Ip.mjs.map +0 -1
  445. package/dist/qml-PuKhTmY-.mjs +0 -8
  446. package/dist/qml-PuKhTmY-.mjs.map +0 -1
  447. package/dist/qmldir-BTwcIF6g.mjs +0 -5
  448. package/dist/qmldir-BTwcIF6g.mjs.map +0 -1
  449. package/dist/qss-DcpQyHuk.mjs +0 -5
  450. package/dist/qss-DcpQyHuk.mjs.map +0 -1
  451. package/dist/r-DcW8EcF5.mjs +0 -8
  452. package/dist/r-DcW8EcF5.mjs.map +0 -1
  453. package/dist/racket-D-BwrG5z.mjs +0 -5
  454. package/dist/racket-D-BwrG5z.mjs.map +0 -1
  455. package/dist/raku-CM1N1WTp.mjs +0 -5
  456. package/dist/raku-CM1N1WTp.mjs.map +0 -1
  457. package/dist/razor-C912Hs6M.mjs +0 -13
  458. package/dist/razor-C912Hs6M.mjs.map +0 -1
  459. package/dist/red-DhGHw_i_.mjs +0 -6
  460. package/dist/red-DhGHw_i_.mjs.map +0 -1
  461. package/dist/reg-MlBfIgTN.mjs +0 -5
  462. package/dist/reg-MlBfIgTN.mjs.map +0 -1
  463. package/dist/regexp-CEVpExph.mjs +0 -8
  464. package/dist/regexp-CEVpExph.mjs.map +0 -1
  465. package/dist/rel-Dg_W2E_N.mjs +0 -5
  466. package/dist/rel-Dg_W2E_N.mjs.map +0 -1
  467. package/dist/riscv-BoH7mqNI.mjs +0 -5
  468. package/dist/riscv-BoH7mqNI.mjs.map +0 -1
  469. package/dist/ron-DbOWX1T7.mjs +0 -5
  470. package/dist/ron-DbOWX1T7.mjs.map +0 -1
  471. package/dist/rose-pine-78rugKGO.mjs +0 -6
  472. package/dist/rose-pine-78rugKGO.mjs.map +0 -1
  473. package/dist/rose-pine-dawn-C_mYSEtu.mjs +0 -6
  474. package/dist/rose-pine-dawn-C_mYSEtu.mjs.map +0 -1
  475. package/dist/rose-pine-moon-Cz7-JQvG.mjs +0 -6
  476. package/dist/rose-pine-moon-Cz7-JQvG.mjs.map +0 -1
  477. package/dist/rosmsg-Ca1BpyBh.mjs +0 -5
  478. package/dist/rosmsg-Ca1BpyBh.mjs.map +0 -1
  479. package/dist/rst-DbIJV67W.mjs +0 -25
  480. package/dist/rst-DbIJV67W.mjs.map +0 -1
  481. package/dist/ruby-D-Lps7Dp.mjs +0 -33
  482. package/dist/ruby-D-Lps7Dp.mjs.map +0 -1
  483. package/dist/rust-Dk6HN1uF.mjs +0 -5
  484. package/dist/rust-Dk6HN1uF.mjs.map +0 -1
  485. package/dist/sas-QckC_qvJ.mjs +0 -8
  486. package/dist/sas-QckC_qvJ.mjs.map +0 -1
  487. package/dist/sass-BWOQVuIy.mjs +0 -5
  488. package/dist/sass-BWOQVuIy.mjs.map +0 -1
  489. package/dist/scala-BoffQEnY.mjs +0 -5
  490. package/dist/scala-BoffQEnY.mjs.map +0 -1
  491. package/dist/schemas/index.d.mts.map +0 -1
  492. package/dist/schemas/index.mjs.map +0 -1
  493. package/dist/schemas-By1qE0sQ.mjs +0 -3881
  494. package/dist/schemas-By1qE0sQ.mjs.map +0 -1
  495. package/dist/scheme-C2D8wvUe.mjs +0 -5
  496. package/dist/scheme-C2D8wvUe.mjs.map +0 -1
  497. package/dist/scss-D1vWunvk.mjs +0 -10
  498. package/dist/scss-D1vWunvk.mjs.map +0 -1
  499. package/dist/sdbl-DkThjfrg.mjs +0 -5
  500. package/dist/sdbl-DkThjfrg.mjs.map +0 -1
  501. package/dist/shaderlab-D0NLokaw.mjs +0 -8
  502. package/dist/shaderlab-D0NLokaw.mjs.map +0 -1
  503. package/dist/shellscript-BHpEag8P.mjs +0 -8
  504. package/dist/shellscript-BHpEag8P.mjs.map +0 -1
  505. package/dist/shellsession-CSdmCfg4.mjs +0 -8
  506. package/dist/shellsession-CSdmCfg4.mjs.map +0 -1
  507. package/dist/site-D8l4ghX0.mjs +0 -71441
  508. package/dist/site-D8l4ghX0.mjs.map +0 -1
  509. package/dist/slack-dark-Cj8kL6BM.mjs +0 -6
  510. package/dist/slack-dark-Cj8kL6BM.mjs.map +0 -1
  511. package/dist/slack-ochin-B4Rna-gD.mjs +0 -6
  512. package/dist/slack-ochin-B4Rna-gD.mjs.map +0 -1
  513. package/dist/smalltalk-ZNQAnLNC.mjs +0 -5
  514. package/dist/smalltalk-ZNQAnLNC.mjs.map +0 -1
  515. package/dist/snazzy-light-CF7MTUt6.mjs +0 -6
  516. package/dist/snazzy-light-CF7MTUt6.mjs.map +0 -1
  517. package/dist/solarized-dark-DBFHIE1d.mjs +0 -6
  518. package/dist/solarized-dark-DBFHIE1d.mjs.map +0 -1
  519. package/dist/solarized-light-Del516-O.mjs +0 -6
  520. package/dist/solarized-light-Del516-O.mjs.map +0 -1
  521. package/dist/solidity-Ddf3MOD2.mjs +0 -5
  522. package/dist/solidity-Ddf3MOD2.mjs.map +0 -1
  523. package/dist/soy-PW0jpJKW.mjs +0 -8
  524. package/dist/soy-PW0jpJKW.mjs.map +0 -1
  525. package/dist/sparql-rX-q1CB9.mjs +0 -8
  526. package/dist/sparql-rX-q1CB9.mjs.map +0 -1
  527. package/dist/splunk-DcREbx5k.mjs +0 -5
  528. package/dist/splunk-DcREbx5k.mjs.map +0 -1
  529. package/dist/sql-Cq_hpY16.mjs +0 -8
  530. package/dist/sql-Cq_hpY16.mjs.map +0 -1
  531. package/dist/ssh-config-DIv0Kb8E.mjs +0 -5
  532. package/dist/ssh-config-DIv0Kb8E.mjs.map +0 -1
  533. package/dist/stata-rEmfzZT7.mjs +0 -8
  534. package/dist/stata-rEmfzZT7.mjs.map +0 -1
  535. package/dist/stylus-DHanz1Kd.mjs +0 -5
  536. package/dist/stylus-DHanz1Kd.mjs.map +0 -1
  537. package/dist/surrealql-BdfgI90j.mjs +0 -8
  538. package/dist/surrealql-BdfgI90j.mjs.map +0 -1
  539. package/dist/svelte-DFFWgqCr.mjs +0 -17
  540. package/dist/svelte-DFFWgqCr.mjs.map +0 -1
  541. package/dist/swift-Ci7klDIa.mjs +0 -5
  542. package/dist/swift-Ci7klDIa.mjs.map +0 -1
  543. package/dist/synthwave-84-T5fF9-Op.mjs +0 -6
  544. package/dist/synthwave-84-T5fF9-Op.mjs.map +0 -1
  545. package/dist/system-verilog-tLSd9PYh.mjs +0 -5
  546. package/dist/system-verilog-tLSd9PYh.mjs.map +0 -1
  547. package/dist/systemd-C_LIvN4y.mjs +0 -5
  548. package/dist/systemd-C_LIvN4y.mjs.map +0 -1
  549. package/dist/talonscript-2cIfb9F4.mjs +0 -5
  550. package/dist/talonscript-2cIfb9F4.mjs.map +0 -1
  551. package/dist/tasl-iwLzpKVu.mjs +0 -5
  552. package/dist/tasl-iwLzpKVu.mjs.map +0 -1
  553. package/dist/tcl-DR2zhegR.mjs +0 -5
  554. package/dist/tcl-DR2zhegR.mjs.map +0 -1
  555. package/dist/templ-BDCp727o.mjs +0 -15
  556. package/dist/templ-BDCp727o.mjs.map +0 -1
  557. package/dist/terraform-BH4YC6Zk.mjs +0 -5
  558. package/dist/terraform-BH4YC6Zk.mjs.map +0 -1
  559. package/dist/tex-DGRDr7pd.mjs +0 -8
  560. package/dist/tex-DGRDr7pd.mjs.map +0 -1
  561. package/dist/tokyo-night-YpyXNs_N.mjs +0 -6
  562. package/dist/tokyo-night-YpyXNs_N.mjs.map +0 -1
  563. package/dist/toml-CECsyL8x.mjs +0 -5
  564. package/dist/toml-CECsyL8x.mjs.map +0 -1
  565. package/dist/ts-tags-BsG9I5cd.mjs +0 -61
  566. package/dist/ts-tags-BsG9I5cd.mjs.map +0 -1
  567. package/dist/tsv-BwwAUdIn.mjs +0 -5
  568. package/dist/tsv-BwwAUdIn.mjs.map +0 -1
  569. package/dist/tsx-qx39NaGS.mjs +0 -8
  570. package/dist/tsx-qx39NaGS.mjs.map +0 -1
  571. package/dist/turtle-D8n7HFvE.mjs +0 -5
  572. package/dist/turtle-D8n7HFvE.mjs.map +0 -1
  573. package/dist/twig-DsMUiWk8.mjs +0 -21
  574. package/dist/twig-DsMUiWk8.mjs.map +0 -1
  575. package/dist/typescript-BZXFn-rd.mjs +0 -8
  576. package/dist/typescript-BZXFn-rd.mjs.map +0 -1
  577. package/dist/typespec-ClgDzShT.mjs +0 -5
  578. package/dist/typespec-ClgDzShT.mjs.map +0 -1
  579. package/dist/typst-CMN2lhh3.mjs +0 -5
  580. package/dist/typst-CMN2lhh3.mjs.map +0 -1
  581. package/dist/v-CA1cYsER.mjs +0 -5
  582. package/dist/v-CA1cYsER.mjs.map +0 -1
  583. package/dist/vala-DuBY1WKl.mjs +0 -5
  584. package/dist/vala-DuBY1WKl.mjs.map +0 -1
  585. package/dist/vb-XQBHWfW8.mjs +0 -5
  586. package/dist/vb-XQBHWfW8.mjs.map +0 -1
  587. package/dist/verilog-CWqhvrSz.mjs +0 -5
  588. package/dist/verilog-CWqhvrSz.mjs.map +0 -1
  589. package/dist/vesper-CigfTEKg.mjs +0 -6
  590. package/dist/vesper-CigfTEKg.mjs.map +0 -1
  591. package/dist/vhdl-C67Bhzjr.mjs +0 -5
  592. package/dist/vhdl-C67Bhzjr.mjs.map +0 -1
  593. package/dist/viml-C26cD_wa.mjs +0 -5
  594. package/dist/viml-C26cD_wa.mjs.map +0 -1
  595. package/dist/vitesse-black-DYCj3nJd.mjs +0 -6
  596. package/dist/vitesse-black-DYCj3nJd.mjs.map +0 -1
  597. package/dist/vitesse-dark-BMGIMsRz.mjs +0 -6
  598. package/dist/vitesse-dark-BMGIMsRz.mjs.map +0 -1
  599. package/dist/vitesse-light-SKJOp9ZR.mjs +0 -6
  600. package/dist/vitesse-light-SKJOp9ZR.mjs.map +0 -1
  601. package/dist/vue-bb5YUHg6.mjs +0 -33
  602. package/dist/vue-bb5YUHg6.mjs.map +0 -1
  603. package/dist/vue-html-ypB-H6rb.mjs +0 -8
  604. package/dist/vue-html-ypB-H6rb.mjs.map +0 -1
  605. package/dist/vue-vine-Cl_j-Bb5.mjs +0 -21
  606. package/dist/vue-vine-Cl_j-Bb5.mjs.map +0 -1
  607. package/dist/vyper-gBkdcGC5.mjs +0 -5
  608. package/dist/vyper-gBkdcGC5.mjs.map +0 -1
  609. package/dist/wasm-B1KmdQo5.mjs +0 -9
  610. package/dist/wasm-B1KmdQo5.mjs.map +0 -1
  611. package/dist/wasm-D4mFcPzE.mjs +0 -5
  612. package/dist/wasm-D4mFcPzE.mjs.map +0 -1
  613. package/dist/wenyan-D1TI9OZw.mjs +0 -5
  614. package/dist/wenyan-D1TI9OZw.mjs.map +0 -1
  615. package/dist/wgsl-DzVADIua.mjs +0 -5
  616. package/dist/wgsl-DzVADIua.mjs.map +0 -1
  617. package/dist/wikitext-DPnM1XoL.mjs +0 -5
  618. package/dist/wikitext-DPnM1XoL.mjs.map +0 -1
  619. package/dist/wit-Bewokpy8.mjs +0 -5
  620. package/dist/wit-Bewokpy8.mjs.map +0 -1
  621. package/dist/wolfram-DVQXO29Z.mjs +0 -5
  622. package/dist/wolfram-DVQXO29Z.mjs.map +0 -1
  623. package/dist/xml-TYYGqgP3.mjs +0 -10
  624. package/dist/xml-TYYGqgP3.mjs.map +0 -1
  625. package/dist/xsl-BOev1i40.mjs +0 -8
  626. package/dist/xsl-BOev1i40.mjs.map +0 -1
  627. package/dist/yaml-Xue9e-YO.mjs +0 -8
  628. package/dist/yaml-Xue9e-YO.mjs.map +0 -1
  629. package/dist/zenscript-CwrU69w6.mjs +0 -5
  630. package/dist/zenscript-CwrU69w6.mjs.map +0 -1
  631. package/dist/zig-NT9tMYQ2.mjs +0 -5
  632. package/dist/zig-NT9tMYQ2.mjs.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @pagesmith/docs
2
2
 
3
- Convention-based documentation package built on `@pagesmith/core`. Create a full docs site from a `pagesmith.config.json5` file and a `content/` directory — with built-in Pagefind search, sidebar generation, and an optional layout override system.
3
+ Convention-based documentation package built on `@pagesmith/core`. Create a full docs site from a `pagesmith.config.json5` file and a content directory — with built-in Pagefind search, sidebar generation, and an optional layout override system.
4
4
 
5
5
  ## Install
6
6
 
@@ -14,20 +14,16 @@ npm add @pagesmith/docs
14
14
 
15
15
  ```json5
16
16
  {
17
- name: 'My Docs',
18
- title: 'My Docs',
19
- description: 'Project documentation',
20
- search: { enabled: true },
17
+ // basePath: '/my-project', // uncomment if hosting under a subdirectory
21
18
  }
22
19
  ```
23
20
 
24
- 2. Add content in a `content/` directory:
21
+ 2. Add content in a `docs/` directory:
25
22
 
26
23
  ```
27
- content/
24
+ docs/
28
25
  README.md Home page
29
26
  guide/
30
- meta.json5 Section ordering
31
27
  getting-started/
32
28
  README.md A page
33
29
  configuration/
@@ -52,11 +48,13 @@ npx pagesmith build
52
48
 
53
49
  Content follows a folder convention:
54
50
 
55
- - **`content/README.md`** — home page (renders with the `DocHome` layout)
51
+ - **`docs/README.md`** (or `content/README.md`) — home page (renders with the `DocHome` layout)
56
52
  - **Top-level folders** (`content/guide/`, `content/reference/`) — become navigation sections in the sidebar
57
53
  - **Subfolders with `README.md`** (`content/guide/getting-started/README.md`) — become individual pages
58
54
  - **`meta.json5` files** — control section ordering and metadata
59
55
 
56
+ The content directory defaults to `docs/` if it exists, otherwise `content/`.
57
+
60
58
  ### Frontmatter
61
59
 
62
60
  All pages support these frontmatter fields:
@@ -69,6 +67,7 @@ All pages support these frontmatter fields:
69
67
  | `sidebarLabel` | `string` | Override the label shown in sidebar |
70
68
  | `order` | `number` | Manual sort order within a section |
71
69
  | `draft` | `boolean` | Exclude page from build when `true` |
70
+ | `socialImage` | `string` | Open Graph image path for social sharing (per-page override) |
72
71
 
73
72
  All fields are optional. Additional custom fields are passed through to layouts.
74
73
 
@@ -163,18 +162,18 @@ Pages not listed in `items` appear after listed pages. When `orderBy` is `'publi
163
162
 
164
163
  | Field | Type | Default | Description |
165
164
  |---|---|---|---|
166
- | `name` | `string` | | Site name (shown in header) |
167
- | `title` | `string` | | Browser tab title |
168
- | `description` | `string` | | Default meta description |
169
- | `origin` | `string` | | Production URL for canonical links |
165
+ | `name` | `string` | `pkg name` | Site name (header). Falls back to package.json name. |
166
+ | `title` | `string` | `pkg name` | Browser tab title |
167
+ | `description` | `string` | `pkg desc` | Default meta description |
168
+ | `origin` | `string` | `pkg homepage` | Production URL for canonical links |
170
169
  | `language` | `string` | `'en'` | HTML lang attribute |
171
- | `contentDir` | `string` | `'content'` | Path to content directory |
172
- | `outDir` | `string` | `'dist'` | Build output directory |
170
+ | `contentDir` | `string` | `'docs/' or 'content/'` | Path to content directory |
171
+ | `outDir` | `string` | `'gh-pages'` | Build output directory |
173
172
  | `publicDir` | `string` | `'public'` | Static assets directory |
174
173
  | `basePath` | `string` | `'/'` | URL base path (overridden by `BASE_URL` env) |
175
174
  | `homeLink` | `string` | `basePath` | Header logo link destination |
176
175
  | `footerLinks` | `array` | `[]` | Footer navigation links (`{ label, path }`) |
177
- | `sidebar.collapsible` | `boolean` | `false` | Enable collapsible sidebar sections |
176
+ | `sidebar.collapsible` | `boolean` | `true` | Enable collapsible sidebar sections |
178
177
  | `search.enabled` | `boolean` | `true` | Enable Pagefind search |
179
178
  | `search.showImages` | `boolean` | `false` | Show images in search results |
180
179
  | `search.showSubResults` | `boolean` | `true` | Show section-level results |
@@ -183,6 +182,10 @@ Pages not listed in `items` appear after listed pages. When `orderBy` is `'publi
183
182
  | `theme.darkColor` | `string` | — | Dark theme meta color |
184
183
  | `theme.layouts` | `Record<string, string>` | — | Layout override file paths |
185
184
  | `analytics.googleAnalytics` | `string` | — | Google Analytics tracking ID |
185
+ | `editLink` | `object` | — | Edit link config (`{ repo, branch?, label? }`) |
186
+ | `lastUpdated` | `boolean` | `false` | Show git-based last updated timestamp on pages |
187
+ | `sitemap` | `boolean` | `true` | Generate sitemap.xml (when origin is set) |
188
+ | `theme.socialImage` | `string` | — | Default OG image for social sharing |
186
189
  | `markdown` | `MarkdownConfig` | — | Markdown pipeline config (from `@pagesmith/core`) |
187
190
  | `packages` | `Record<string, { label }>` | — | Multi-package section labels |
188
191
 
@@ -190,12 +193,7 @@ Pages not listed in `items` appear after listed pages. When `orderBy` is `'publi
190
193
 
191
194
  ```json5
192
195
  {
193
- name: 'My Docs',
194
- title: 'My Docs',
195
- description: 'Documentation for My Project',
196
196
  origin: 'https://docs.example.com',
197
- contentDir: './content',
198
- outDir: './dist',
199
197
  basePath: '/docs',
200
198
  sidebar: {
201
199
  collapsible: true,
@@ -209,15 +207,10 @@ Pages not listed in `items` appear after listed pages. When `orderBy` is `'publi
209
207
  enabled: true,
210
208
  showSubResults: true,
211
209
  },
212
- theme: {
213
- layouts: {
214
- home: './theme/layouts/DocHome.tsx',
215
- page: './theme/layouts/DocPage.tsx',
216
- },
217
- },
218
- analytics: {
219
- googleAnalytics: 'G-XXXXXXXXXX',
210
+ editLink: {
211
+ repo: 'https://github.com/example/repo',
220
212
  },
213
+ lastUpdated: true,
221
214
  }
222
215
  ```
223
216
 
@@ -225,7 +218,7 @@ Pages not listed in `items` appear after listed pages. When `orderBy` is `'publi
225
218
 
226
219
  ### `pagesmith dev`
227
220
 
228
- Start a development server with hot reload.
221
+ Start a development server with live reload. Uses incremental rebuilds -- content changes trigger a fast content-only rebuild, while config or theme changes trigger a full rebuild. Shows a startup summary with page/section counts and clickable section URLs.
229
222
 
230
223
  ```bash
231
224
  pagesmith dev [--port 3001] [--open] [--config path] [--out-dir path] [--base-path path]
@@ -233,7 +226,7 @@ pagesmith dev [--port 3001] [--open] [--config path] [--out-dir path] [--base-pa
233
226
 
234
227
  ### `pagesmith build`
235
228
 
236
- Build the static site for production.
229
+ Build the static site for production. Pages are processed in parallel for faster builds. Outputs a build summary with page count, section count, and timing.
237
230
 
238
231
  ```bash
239
232
  pagesmith build [--out-dir path] [--base-path path] [--config path]
@@ -247,6 +240,15 @@ Preview the built site locally.
247
240
  pagesmith preview [--port 4173] [--config path]
248
241
  ```
249
242
 
243
+ ## Auto-generated Files
244
+
245
+ The build automatically generates:
246
+
247
+ - **`.nojekyll`** — always generated for GitHub Pages compatibility
248
+ - **`sitemap.xml`** — generated when `origin` is set (disable with `sitemap: false`)
249
+ - **`robots.txt`** — generated if not already provided via `publicDir` or `assets`
250
+ - **`llms.txt`** / **`llms-full.txt`** — auto-copied from project root if present
251
+
250
252
  ## Layout Overrides
251
253
 
252
254
  Override the default layouts by specifying file paths in `theme.layouts`:
@@ -323,6 +325,7 @@ Layouts are resolved in order: `default` export, then named export matching the
323
325
 
324
326
  - **Top nav** — auto-generated from top-level content folders. Override with `headerLinks` in `content/meta.json5`.
325
327
  - **Sidebar** — auto-generated from folder structure within each section. Ordering from `meta.json5` `items` array.
328
+ - **Breadcrumbs** — auto-generated from the slug path on non-home pages with depth > 1. No configuration needed.
326
329
  - **Prev/next** — auto-generated from flattened sidebar items.
327
330
  - **Footer** — configured via `footerLinks` in config.
328
331
 
package/REFERENCE.md ADDED
@@ -0,0 +1,494 @@
1
+ # @pagesmith/docs — AI Reference
2
+
3
+ Link this file from your project's CLAUDE.md or AGENTS.md to give AI assistants a comprehensive reference for `@pagesmith/docs`.
4
+
5
+ ```markdown
6
+ <!-- In your CLAUDE.md or AGENTS.md -->
7
+ For the full @pagesmith/docs reference, see: node_modules/@pagesmith/docs/REFERENCE.md
8
+ For the full @pagesmith/core API reference, see: node_modules/@pagesmith/core/REFERENCE.md
9
+ ```
10
+
11
+ ---
12
+
13
+ ## Overview
14
+
15
+ `@pagesmith/docs` is a convention-based documentation package built on `@pagesmith/core`. Create a full docs site from a `pagesmith.config.json5` file and a content directory — with built-in Pagefind search, sidebar generation, and an optional layout override system.
16
+
17
+ `@pagesmith/docs` includes `@pagesmith/core` — no need to install core separately.
18
+
19
+ ## Recommended Project Structure
20
+
21
+ ```
22
+ <project-root>/
23
+ docs/
24
+ pagesmith.config.json5
25
+ content/
26
+ README.md # Home page
27
+ guide/
28
+ meta.json5
29
+ getting-started/README.md
30
+ reference/
31
+ meta.json5
32
+ api/README.md
33
+ public/ # Static assets (optional)
34
+ gh-pages/ # Build output (git-ignored)
35
+ .github/workflows/gh-pages.yml
36
+ ```
37
+
38
+ ## CLI Commands
39
+
40
+ ```bash
41
+ pagesmith init [--ai] [--config path] # Initialize config + content + AI integrations
42
+ pagesmith dev [--port N] [--open] # Development server with live reload
43
+ pagesmith build [--out-dir path] # Production build with Pagefind indexing
44
+ pagesmith preview [--port N] # Preview built site locally
45
+ ```
46
+
47
+ ### pagesmith init
48
+
49
+ Creates a minimal `pagesmith.config.json5` and a starter `docs/` directory structure. Site metadata (name, description) is auto-detected from `package.json`. With `--ai`, also installs AI assistant integrations (CLAUDE.md, skills, markdown guidelines).
50
+
51
+ ### Dev Server
52
+
53
+ The dev server uses incremental rebuilds for fast iteration:
54
+ - **Content changes** (markdown files) trigger a fast content-only rebuild, skipping CSS/JS bundling and Pagefind indexing.
55
+ - **Config or theme changes** trigger a full rebuild.
56
+ - Rebuild timing is logged to the console.
57
+
58
+ ### Shared CLI Options
59
+
60
+ | Option | Type | Default | Description |
61
+ |---|---|---|---|
62
+ | `--port <number>` | number | 3000/4173 | Server port |
63
+ | `--config <path>` | string | `pagesmith.config.json5` | Config file path |
64
+ | `--open` | boolean | `false` | Open browser on start |
65
+ | `--out-dir <path>` | string | Config `outDir` | Override output directory |
66
+ | `--base-path <path>` | string | Config `basePath` | Override URL base path |
67
+
68
+ ## Configuration (pagesmith.config.json5)
69
+
70
+ | Field | Type | Default | Description |
71
+ |---|---|---|---|
72
+ | `name` | `string` | pkg name | Site name (shown in header) |
73
+ | `title` | `string` | pkg name | Browser tab title |
74
+ | `description` | `string` | pkg desc | Default meta description |
75
+ | `origin` | `string` | pkg homepage | Production URL for canonical links |
76
+ | `language` | `string` | `'en'` | HTML lang attribute |
77
+ | `contentDir` | `string` | `'docs/' or 'content/'` | Content directory path |
78
+ | `outDir` | `string` | `'gh-pages'` | Build output directory |
79
+ | `publicDir` | `string` | `'public'` | Static assets directory |
80
+ | `basePath` | `string` | `'/'` | URL base path (overridden by `BASE_URL` env) |
81
+ | `homeLink` | `string` | `basePath` | Header logo link destination |
82
+ | `footerLinks` | `array` | `[]` | Footer navigation links (`{ label, path }`) |
83
+ | `sidebar.collapsible` | `boolean` | `true` | Enable collapsible sidebar sections |
84
+ | `search.enabled` | `boolean` | `true` | Enable Pagefind search |
85
+ | `search.showImages` | `boolean` | `false` | Show images in search results |
86
+ | `search.showSubResults` | `boolean` | `true` | Show section-level results |
87
+ | `search.pagefindFlags` | `string[]` | `[]` | Extra CLI flags for pagefind |
88
+ | `theme.lightColor` | `string` | — | Light theme meta color |
89
+ | `theme.darkColor` | `string` | — | Dark theme meta color |
90
+ | `theme.layouts` | `Record<string, string>` | — | Layout override file paths |
91
+ | `theme.socialImage` | `string` | auto-detect | Default OG image for social sharing |
92
+ | `analytics.googleAnalytics` | `string` | — | Google Analytics tracking ID |
93
+ | `markdown` | `MarkdownConfig` | — | Markdown pipeline config |
94
+ | `packages` | `Record<string, { label }>` | — | Multi-package section labels |
95
+ | `editLink` | `object` | — | Edit link config (`{ repo, branch?, label? }`) |
96
+ | `editLink.repo` | `string` | — | Repository URL (e.g. `https://github.com/user/repo`) |
97
+ | `editLink.branch` | `string` | `'main'` | Branch name for edit links |
98
+ | `editLink.label` | `string` | `'Edit this page'` | Link text displayed on each page |
99
+ | `lastUpdated` | `boolean` | `false` | Show git-based last updated timestamp on pages |
100
+ | `sitemap` | `boolean` | `true` | Generate sitemap.xml (when origin is set) |
101
+ | `favicon` | `string \| false` | auto-detect | Path to favicon or `false` to disable |
102
+ | `assets` | `Record<string, string[]>` | — | Asset mapping (output path → source files/folders) |
103
+
104
+ ### Config Validation
105
+
106
+ The build validates `pagesmith.config.json5` automatically:
107
+ - **Warnings**: Missing `name`, `title`, `description`, or `origin` fields (suppressed when provided by package.json)
108
+ - **Errors**: Non-existent `contentDir`, non-existent asset sources, non-existent layout files
109
+ - Errors halt the build; warnings are logged but the build continues
110
+
111
+ ### Example Configuration
112
+
113
+ ```json5
114
+ {
115
+ name: 'My Docs',
116
+ title: 'My Docs',
117
+ description: 'Documentation for My Project',
118
+ origin: 'https://my-org.github.io',
119
+ contentDir: './content',
120
+ outDir: '../gh-pages',
121
+ basePath: '/my-project',
122
+ sidebar: { collapsible: true },
123
+ footerLinks: [
124
+ { label: 'Guide', path: '/guide' },
125
+ { label: 'API', path: '/reference/api' },
126
+ { label: 'GitHub', path: 'https://github.com/my-org/my-project' },
127
+ ],
128
+ search: { enabled: true },
129
+ editLink: {
130
+ repo: 'https://github.com/my-org/my-project',
131
+ branch: 'main',
132
+ label: 'Edit this page',
133
+ },
134
+ lastUpdated: true,
135
+ assets: {
136
+ "/": ["llms.txt"],
137
+ },
138
+ }
139
+ ```
140
+
141
+ ## Asset Mapping
142
+
143
+ Copy specific files or folders to the build output:
144
+
145
+ ```json5
146
+ {
147
+ assets: {
148
+ "/": ["llms.txt", "llms-full.txt", "robots.txt"], // copies to output root
149
+ "/api": ["openapi.json"], // copies to output/api/
150
+ "/downloads": ["releases"], // copies releases/ folder recursively
151
+ },
152
+ }
153
+ ```
154
+
155
+ Source paths are relative to the config file directory. Folders are copied recursively. All sources are validated at build time — non-existent files cause a build error.
156
+
157
+ This is useful for hosting `llms.txt` files, `robots.txt`, API specs, or any static files alongside the documentation.
158
+
159
+ ### Auto-generated Build Files
160
+
161
+ The build automatically generates these files:
162
+
163
+ - **`.nojekyll`** — always generated for GitHub Pages
164
+ - **`sitemap.xml`** — when `origin` is set and `sitemap` is not `false`
165
+ - **`robots.txt`** — when not already provided
166
+ - **`llms.txt`** / **`llms-full.txt`** — auto-copied from project root if present
167
+
168
+ ## Icons
169
+
170
+ The favicon is auto-detected from `public/favicon.svg`, then `public/favicon.ico`, then a bundled default. Set `favicon` in config to override, or `false` to disable.
171
+
172
+ Additional icon files are auto-detected from the `public/` directory:
173
+
174
+ | File | HTML Output | Purpose |
175
+ |---|---|---|
176
+ | `public/favicon.svg` | `<link rel="icon" type="image/svg+xml">` | Primary favicon (SVG) |
177
+ | `public/favicon.ico` | `<link rel="icon" sizes="32x32">` | ICO fallback (rendered when SVG is primary) |
178
+ | `public/apple-touch-icon.png` | `<link rel="apple-touch-icon">` | iOS home screen icon (180x180 recommended) |
179
+
180
+ When the primary favicon is SVG and an ICO file also exists, both are linked — modern browsers use the SVG while older browsers fall back to ICO. The apple-touch-icon is always auto-detected independently of the favicon setting.
181
+
182
+ ## Security Defaults
183
+
184
+ All generated pages include security-hardened meta tags by default:
185
+
186
+ **Content Security Policy** — `<meta http-equiv="Content-Security-Policy">` with a restrictive self-only policy:
187
+ - `default-src 'self'` — only load resources from the same origin
188
+ - `script-src 'self' 'unsafe-inline'` — same-origin scripts + inline scripts (needed for Expressive Code and theme initialization)
189
+ - `style-src 'self' 'unsafe-inline'` — same-origin styles + inline styles (needed for Expressive Code syntax highlighting)
190
+ - `img-src 'self' data:` — same-origin images + data URIs
191
+ - `font-src 'self'` — same-origin fonts only
192
+ - `connect-src 'self'` — same-origin fetch/XHR (covers Pagefind search)
193
+ - `object-src 'none'` — blocks all plugin content
194
+ - `base-uri 'self'` — prevents base tag injection
195
+ - `form-action 'self'` — restricts form submissions
196
+
197
+ When `analytics.googleAnalytics` is configured, the CSP automatically adds Google Analytics domains to `script-src` and `connect-src`.
198
+
199
+ **Referrer Policy** — `<meta name="referrer" content="strict-origin-when-cross-origin">` sends the origin (not the full URL path) on cross-origin requests and the full referrer for same-origin requests.
200
+
201
+ To customize CSP beyond these defaults, override the page layout via `theme.layouts`.
202
+
203
+ ## Performance Defaults
204
+
205
+ All generated pages include performance optimizations:
206
+
207
+ - **Font preload** — `<link rel="preload">` for Open Sans (body font) as `font/woff2` with CORS, eliminating the font discovery delay
208
+ - **Font display swap** — `font-display: swap` on all font faces for instant text rendering with fallback fonts
209
+ - **GA preconnect** — when `analytics.googleAnalytics` is configured, `<link rel="preconnect">` to `googletagmanager.com` for earlier connection establishment
210
+ - **Deferred scripts** — all JavaScript loaded with `defer` for non-blocking parsing
211
+
212
+ ## Content Structure
213
+
214
+ ```
215
+ content/
216
+ README.md # Home page (DocHome layout)
217
+ meta.json5 # Root-level header/footer overrides
218
+ guide/
219
+ meta.json5 # Section metadata and ordering
220
+ README.md # Section index page
221
+ getting-started/
222
+ README.md # Guide page
223
+ architecture.svg # Sibling asset
224
+ advanced/
225
+ README.md
226
+ reference/
227
+ meta.json5
228
+ api/
229
+ README.md
230
+ ```
231
+
232
+ - `content/README.md` — home page (renders with `DocHome` layout)
233
+ - Content directory defaults to `docs/` if it exists, otherwise `content/`.
234
+ - Top-level folders — become navigation sections in sidebar
235
+ - Subfolders with `README.md` — become individual pages
236
+ - `meta.json5` — control section ordering and metadata
237
+
238
+ ## Frontmatter
239
+
240
+ ### Page Frontmatter
241
+
242
+ | Field | Type | Description |
243
+ |---|---|---|
244
+ | `title` | `string` | Page title (sidebar + browser tab) |
245
+ | `description` | `string` | Meta description for SEO |
246
+ | `navLabel` | `string` | Override label in top navigation |
247
+ | `sidebarLabel` | `string` | Override label in sidebar |
248
+ | `order` | `number` | Manual sort order within section |
249
+ | `draft` | `boolean` | Exclude page from build when `true` |
250
+ | `socialImage` | `string` | Open Graph image for social sharing (per-page override) |
251
+
252
+ ### Home Page Frontmatter
253
+
254
+ | Field | Type | Description |
255
+ |---|---|---|
256
+ | `layout` | `string` | Set to `DocHome` for home layout |
257
+ | `tagline` | `string` | Short description below title |
258
+ | `install` | `string` | Install command snippet |
259
+ | `actions` | `array` | CTA buttons (`{ text, link, theme: 'brand' \| 'alt' }`) |
260
+ | `features` | `array` | Feature cards (`{ icon?, title, details }`) |
261
+ | `packages` | `array` | Package cards (`{ name, description, href, tag }`) |
262
+ | `codeExample` | `object` | Code example (`{ label, title, code }`) |
263
+
264
+ ## Section Meta (meta.json5)
265
+
266
+ ```json5
267
+ {
268
+ displayName: 'Guide',
269
+ description: 'Step-by-step guides.',
270
+ orderBy: 'manual',
271
+ items: ['getting-started', 'configuration', 'advanced'],
272
+ series: [
273
+ {
274
+ slug: 'basics',
275
+ displayName: 'The Basics',
276
+ articles: ['getting-started', 'configuration'],
277
+ },
278
+ ],
279
+ collapsed: true,
280
+ }
281
+ ```
282
+
283
+ | Field | Type | Description |
284
+ |---|---|---|
285
+ | `displayName` | `string` | Section label in sidebar |
286
+ | `description` | `string` | Section description |
287
+ | `layout` | `string` | Layout for section index page |
288
+ | `itemLayout` | `string` | Layout for pages in this section |
289
+ | `orderBy` | `'manual' \| 'publishedDate'` | Page sort order |
290
+ | `items` | `string[]` | Manual page order (slugs) |
291
+ | `series` | `array` | Group pages into named series |
292
+ | `collapsed` | `boolean` | Start sidebar section collapsed |
293
+
294
+ Pages not listed in `items` appear after listed pages.
295
+
296
+ ## Layout Overrides
297
+
298
+ Override default layouts via `theme.layouts`:
299
+
300
+ ```json5
301
+ {
302
+ theme: {
303
+ layouts: {
304
+ home: './theme/layouts/DocHome.tsx',
305
+ page: './theme/layouts/DocPage.tsx',
306
+ notFound: './theme/layouts/DocNotFound.tsx',
307
+ },
308
+ },
309
+ }
310
+ ```
311
+
312
+ ### Layout Props
313
+
314
+ **All layouts** receive: `content`, `frontmatter`, `headings`, `slug`, `site`.
315
+
316
+ **Page layout** additionally: `sidebarSections`, `prev`, `next`.
317
+
318
+ **Home layout** additionally: `frontmatter.hero`, `frontmatter.features`, `frontmatter.packages`, `frontmatter.install`.
319
+
320
+ Layouts use `@pagesmith/core/jsx-runtime`:
321
+
322
+ ```tsx
323
+ import { Fragment } from '@pagesmith/core/jsx-runtime'
324
+
325
+ export default function DocPage(props) {
326
+ const { content, frontmatter, headings, slug, site, sidebarSections, prev, next } = props
327
+ return (
328
+ <html lang={site.language}>
329
+ <head><title>{frontmatter.title} — {site.title}</title></head>
330
+ <body>
331
+ <main data-pagefind-body="">
332
+ <div class="prose" innerHTML={content} />
333
+ </main>
334
+ </body>
335
+ </html>
336
+ )
337
+ }
338
+ ```
339
+
340
+ ## Navigation
341
+
342
+ - **Top nav** — auto-generated from top-level content folders; override with `headerLinks` in `content/meta.json5`
343
+ - **Sidebar** — auto-generated from section structure; order from `meta.json5` `items`
344
+ - **Breadcrumbs** — auto-generated from the content slug path on every non-home page with depth > 1 (e.g. `guide/getting-started/intro` shows "Guide / Getting Started / Intro"). No configuration needed.
345
+ - **Prev/next** — auto-generated from flattened sidebar items
346
+ - **Footer** — configured via `footerLinks` in config
347
+
348
+ ## Search
349
+
350
+ Pagefind full-text search is bundled. Enable with `search.enabled: true` (default). Trigger with `Cmd+K` / `Ctrl+K`.
351
+
352
+ ## Programmatic API
353
+
354
+ ```ts
355
+ import { build, startDev, preview, defineDocsConfig, validateConfig, resolveDocsConfig } from '@pagesmith/docs'
356
+
357
+ await build({ configPath: './pagesmith.config.json5' })
358
+ await startDev({ port: 3000 })
359
+ await preview({ port: 4173 })
360
+
361
+ // Config validation
362
+ const config = resolveDocsConfig('./pagesmith.config.json5')
363
+ const issues = validateConfig(config)
364
+ ```
365
+
366
+ ## Export Map
367
+
368
+ | Import Path | Purpose |
369
+ |---|---|
370
+ | `@pagesmith/docs` | Main API (build, startDev, preview, defineDocsConfig, validateConfig) |
371
+ | `@pagesmith/docs/schemas` | Zod schemas for config, layout props, page data |
372
+ | `@pagesmith/docs/preset` | Docs preset for integration |
373
+
374
+ ## GitHub Pages Deployment
375
+
376
+ Create `.github/workflows/gh-pages.yml`:
377
+
378
+ ```yaml
379
+ name: Deploy Docs
380
+
381
+ on:
382
+ push:
383
+ branches: [main]
384
+
385
+ permissions:
386
+ contents: read
387
+ pages: write
388
+ id-token: write
389
+
390
+ concurrency:
391
+ group: pages
392
+ cancel-in-progress: false
393
+
394
+ jobs:
395
+ build:
396
+ runs-on: ubuntu-latest
397
+ steps:
398
+ - uses: actions/checkout@v4
399
+ - uses: actions/setup-node@v4
400
+ with:
401
+ node-version: 22
402
+ - run: npm ci
403
+ - run: cd docs && npx pagesmith build
404
+ - uses: actions/upload-pages-artifact@v3
405
+ with:
406
+ path: gh-pages
407
+
408
+ deploy:
409
+ needs: build
410
+ runs-on: ubuntu-latest
411
+ environment:
412
+ name: github-pages
413
+ url: ${{ steps.deployment.outputs.page_url }}
414
+ steps:
415
+ - id: deployment
416
+ uses: actions/deploy-pages@v4
417
+ ```
418
+
419
+ ## When Adding New Pages
420
+
421
+ 1. Create `content/<section>/<slug>/README.md` with title and description frontmatter
422
+ 2. Add the slug to the section's `meta.json5` `items` array
423
+ 3. Write content following the markdown guidelines below
424
+ 4. Run `npx pagesmith dev` to verify rendering
425
+
426
+ ## Markdown Guidelines
427
+
428
+ The markdown pipeline processes content through unified with these plugins in order:
429
+
430
+ ```
431
+ remark-parse → remark-gfm → remark-math → remark-frontmatter
432
+ → remark-github-alerts → remark-smartypants → [user remark plugins]
433
+ → remark-rehype
434
+ → rehype-expressive-code (dual themes, line numbers, titles, copy, collapse, mark/ins/del)
435
+ → rehype-mathjax → rehype-slug → rehype-autolink-headings
436
+ → rehype-external-links → rehype-accessible-emojis
437
+ → heading extraction → [user rehype plugins] → rehype-stringify
438
+ ```
439
+
440
+ ### Supported features
441
+
442
+ | Feature | Syntax | Notes |
443
+ |---|---|---|
444
+ | GFM tables | `\| col \| col \|` | Alignment via `:---`, `:---:`, `---:` |
445
+ | Strikethrough | `~~text~~` | |
446
+ | Task lists | `- [x] done` / `- [ ] todo` | |
447
+ | Footnotes | `[^id]` + `[^id]: text` | |
448
+ | Alerts | `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, `> [!CAUTION]` | GitHub-compatible |
449
+ | Inline math | `$E = mc^2$` | No spaces inside delimiters |
450
+ | Block math | `$$...$$` | Rendered via MathJax |
451
+ | Smart quotes | `"text"` → curly quotes | Automatic |
452
+ | Em dash | `---` | Automatic |
453
+ | External links | `[text](https://...)` | Auto `target="_blank"` |
454
+ | Heading anchors | Auto `id` + wrapped anchor | All headings |
455
+ | Accessible emoji | Unicode emoji | Auto `role="img"` + `aria-label` |
456
+
457
+ ### Code block features (Expressive Code)
458
+
459
+ | Meta | Example | Description |
460
+ |---|---|---|
461
+ | `title="..."` | `` ```js title="app.js" `` | File title |
462
+ | `showLineNumbers` | `` ```js showLineNumbers `` | Line numbers |
463
+ | `mark={lines}` | `` ```js mark={3,5-7} `` | Highlight lines |
464
+ | `ins={lines}` | `` ```js ins={4} `` | Inserted lines (green) |
465
+ | `del={lines}` | `` ```js del={5} `` | Deleted lines (red) |
466
+ | `collapse={lines}` | `` ```js collapse={1-5} `` | Collapsible section |
467
+ | `wrap` | `` ```js wrap `` | Text wrapping |
468
+ | `frame="..."` | `` ```js frame="terminal" `` | Frame style |
469
+
470
+ ### Key rules
471
+
472
+ - Always use a language identifier on fenced code blocks
473
+ - One `# h1` per page — validators enforce this
474
+ - Sequential heading depth — no jumping from h2 to h4
475
+ - Prefer relative links for internal content
476
+ - Do NOT add manual copy-button JS — Expressive Code handles it
477
+ - Do NOT import separate code block CSS — styles are injected inline
478
+ - Code block themes default to `github-light` / `github-dark` with auto light/dark switching
479
+
480
+ ## Build Performance
481
+
482
+ Pages are processed with bounded concurrency using `os.availableParallelism() * 2` workers, taking advantage of async parallelism while preventing memory blowup at scale.
483
+
484
+ ## Key Rules
485
+
486
+ - `@pagesmith/docs` depends on `@pagesmith/core` — no need to install core separately
487
+ - No `vite.config.ts` or `content.config.ts` needed — docs uses `pagesmith.config.json5`
488
+ - Top-level folders in `content/` define the main navigation
489
+ - Pagefind search is bundled — no separate `pagefind` dependency needed
490
+ - All markdown features from `@pagesmith/core` are available
491
+ - Code block styling is inline via Expressive Code — do NOT import separate code block CSS
492
+ - Config is validated at build time — missing fields and non-existent asset references are reported
493
+ - `name`, `title`, `description`, and `origin` auto-fallback to `package.json` fields — most projects need only `basePath` in config
494
+ - Build auto-generates `.nojekyll`, `sitemap.xml`, `robots.txt`, and copies `llms.txt` if present