@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.
- package/README.md +34 -31
- package/REFERENCE.md +494 -0
- package/dist/cli/bin.mjs +197 -10
- package/dist/cli/bin.mjs.map +1 -1
- package/dist/index.d.mts +120 -6
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/preset.mjs +1 -1
- package/dist/schemas/index.d.mts +2 -1615
- package/dist/schemas/index.mjs +2 -263
- package/dist/site-dJ3MiiW3.mjs +1756 -0
- package/dist/site-dJ3MiiW3.mjs.map +1 -0
- package/package.json +14 -23
- package/theme/components/Html.tsx +67 -1
- package/theme/layouts/DocHome.tsx +8 -1
- package/theme/layouts/DocPage.tsx +80 -2
- package/theme/styles/content/page-meta.css +65 -0
- package/theme/styles/main.css +1 -0
- package/dist/abap-DriO5VG6.mjs +0 -5
- package/dist/abap-DriO5VG6.mjs.map +0 -1
- package/dist/actionscript-3-G6toewHp.mjs +0 -5
- package/dist/actionscript-3-G6toewHp.mjs.map +0 -1
- package/dist/ada-C_QiJ0Pq.mjs +0 -5
- package/dist/ada-C_QiJ0Pq.mjs.map +0 -1
- package/dist/andromeeda-CoIEPgYR.mjs +0 -6
- package/dist/andromeeda-CoIEPgYR.mjs.map +0 -1
- package/dist/angular-html-D9wIlok7.mjs +0 -35
- package/dist/angular-html-D9wIlok7.mjs.map +0 -1
- package/dist/angular-ts-Dxk7hl9Z.mjs +0 -29
- package/dist/angular-ts-Dxk7hl9Z.mjs.map +0 -1
- package/dist/apache-B1aRGcgY.mjs +0 -5
- package/dist/apache-B1aRGcgY.mjs.map +0 -1
- package/dist/apex-FoK4UgwA.mjs +0 -5
- package/dist/apex-FoK4UgwA.mjs.map +0 -1
- package/dist/apl-DwmTqCJs.mjs +0 -19
- package/dist/apl-DwmTqCJs.mjs.map +0 -1
- package/dist/applescript-eBeY0Hp4.mjs +0 -5
- package/dist/applescript-eBeY0Hp4.mjs.map +0 -1
- package/dist/ara-CkIucGv1.mjs +0 -5
- package/dist/ara-CkIucGv1.mjs.map +0 -1
- package/dist/asciidoc-AIdrECCR.mjs +0 -5
- package/dist/asciidoc-AIdrECCR.mjs.map +0 -1
- package/dist/asm-CflFLM6a.mjs +0 -5
- package/dist/asm-CflFLM6a.mjs.map +0 -1
- package/dist/astro-DLt5gl0n.mjs +0 -21
- package/dist/astro-DLt5gl0n.mjs.map +0 -1
- package/dist/aurora-x-DbqEqkUT.mjs +0 -6
- package/dist/aurora-x-DbqEqkUT.mjs.map +0 -1
- package/dist/awk-Br_61sCS.mjs +0 -5
- package/dist/awk-Br_61sCS.mjs.map +0 -1
- package/dist/ayu-dark-DdJXJf7U.mjs +0 -6
- package/dist/ayu-dark-DdJXJf7U.mjs.map +0 -1
- package/dist/ayu-light-Bg-9Hujp.mjs +0 -6
- package/dist/ayu-light-Bg-9Hujp.mjs.map +0 -1
- package/dist/ayu-mirage-7v6-qMvl.mjs +0 -6
- package/dist/ayu-mirage-7v6-qMvl.mjs.map +0 -1
- package/dist/ballerina-D-8GYl8R.mjs +0 -5
- package/dist/ballerina-D-8GYl8R.mjs.map +0 -1
- package/dist/bat-CJ4nIaxw.mjs +0 -5
- package/dist/bat-CJ4nIaxw.mjs.map +0 -1
- package/dist/beancount-DFPOglwN.mjs +0 -5
- package/dist/beancount-DFPOglwN.mjs.map +0 -1
- package/dist/berry-DiM_rwEt.mjs +0 -5
- package/dist/berry-DiM_rwEt.mjs.map +0 -1
- package/dist/bibtex-ryU9pJLB.mjs +0 -5
- package/dist/bibtex-ryU9pJLB.mjs.map +0 -1
- package/dist/bicep-DFoNCrG3.mjs +0 -5
- package/dist/bicep-DFoNCrG3.mjs.map +0 -1
- package/dist/bird2-C3EaFiUY.mjs +0 -5
- package/dist/bird2-C3EaFiUY.mjs.map +0 -1
- package/dist/blade-Cwq7FVfH.mjs +0 -23
- package/dist/blade-Cwq7FVfH.mjs.map +0 -1
- package/dist/bsl-Ci4vkNj8.mjs +0 -8
- package/dist/bsl-Ci4vkNj8.mjs.map +0 -1
- package/dist/c-D7oHDxxD.mjs +0 -8
- package/dist/c-D7oHDxxD.mjs.map +0 -1
- package/dist/c3-D5hU-x2t.mjs +0 -5
- package/dist/c3-D5hU-x2t.mjs.map +0 -1
- package/dist/cadence-B-Z42oTz.mjs +0 -5
- package/dist/cadence-B-Z42oTz.mjs.map +0 -1
- package/dist/cairo-BpET0YK1.mjs +0 -8
- package/dist/cairo-BpET0YK1.mjs.map +0 -1
- package/dist/catppuccin-frappe-0BRWFMtJ.mjs +0 -6
- package/dist/catppuccin-frappe-0BRWFMtJ.mjs.map +0 -1
- package/dist/catppuccin-latte-VaqpfzxV.mjs +0 -6
- package/dist/catppuccin-latte-VaqpfzxV.mjs.map +0 -1
- package/dist/catppuccin-macchiato-qrypRbXk.mjs +0 -6
- package/dist/catppuccin-macchiato-qrypRbXk.mjs.map +0 -1
- package/dist/catppuccin-mocha-Dvb6gv4O.mjs +0 -6
- package/dist/catppuccin-mocha-Dvb6gv4O.mjs.map +0 -1
- package/dist/clarity-egx-5RLz.mjs +0 -5
- package/dist/clarity-egx-5RLz.mjs.map +0 -1
- package/dist/clojure-N5xIuTbG.mjs +0 -5
- package/dist/clojure-N5xIuTbG.mjs.map +0 -1
- package/dist/cmake-CYzXNVI_.mjs +0 -5
- package/dist/cmake-CYzXNVI_.mjs.map +0 -1
- package/dist/cobol-DuznKErk.mjs +0 -13
- package/dist/cobol-DuznKErk.mjs.map +0 -1
- package/dist/codeowners-BaallJaj.mjs +0 -5
- package/dist/codeowners-BaallJaj.mjs.map +0 -1
- package/dist/codeql-BIahF8Ga.mjs +0 -5
- package/dist/codeql-BIahF8Ga.mjs.map +0 -1
- package/dist/coffee-t6lXzaXy.mjs +0 -8
- package/dist/coffee-t6lXzaXy.mjs.map +0 -1
- package/dist/common-lisp-bLMBDFt9.mjs +0 -5
- package/dist/common-lisp-bLMBDFt9.mjs.map +0 -1
- package/dist/coq-h9z5p2Ui.mjs +0 -5
- package/dist/coq-h9z5p2Ui.mjs.map +0 -1
- package/dist/cpp-D6_V2gI1.mjs +0 -27
- package/dist/cpp-D6_V2gI1.mjs.map +0 -1
- package/dist/crystal-BH-Qv6Rl.mjs +0 -21
- package/dist/crystal-BH-Qv6Rl.mjs.map +0 -1
- package/dist/csharp-BbHR3YVQ.mjs +0 -5
- package/dist/csharp-BbHR3YVQ.mjs.map +0 -1
- package/dist/css-Wu--EEs5.mjs +0 -8
- package/dist/css-Wu--EEs5.mjs.map +0 -1
- package/dist/csv-CRvIpAc5.mjs +0 -5
- package/dist/csv-CRvIpAc5.mjs.map +0 -1
- package/dist/cue-B8A_h-kS.mjs +0 -5
- package/dist/cue-B8A_h-kS.mjs.map +0 -1
- package/dist/cypher-B8mmimml.mjs +0 -5
- package/dist/cypher-B8mmimml.mjs.map +0 -1
- package/dist/d-Ddz3GmKc.mjs +0 -5
- package/dist/d-Ddz3GmKc.mjs.map +0 -1
- package/dist/dark-plus-BjClkp3W.mjs +0 -6
- package/dist/dark-plus-BjClkp3W.mjs.map +0 -1
- package/dist/dart-BOQAkR91.mjs +0 -5
- package/dist/dart-BOQAkR91.mjs.map +0 -1
- package/dist/dax-D3YKmfop.mjs +0 -5
- package/dist/dax-D3YKmfop.mjs.map +0 -1
- package/dist/desktop-wo52vLHj.mjs +0 -5
- package/dist/desktop-wo52vLHj.mjs.map +0 -1
- package/dist/diff-nA9OrLiI.mjs +0 -5
- package/dist/diff-nA9OrLiI.mjs.map +0 -1
- package/dist/docker-BgWkJ5L9.mjs +0 -5
- package/dist/docker-BgWkJ5L9.mjs.map +0 -1
- package/dist/dotenv-90bAk1yC.mjs +0 -5
- package/dist/dotenv-90bAk1yC.mjs.map +0 -1
- package/dist/dracula-EYPvHKFq.mjs +0 -6
- package/dist/dracula-EYPvHKFq.mjs.map +0 -1
- package/dist/dracula-soft-Bb4JppaT.mjs +0 -6
- package/dist/dracula-soft-Bb4JppaT.mjs.map +0 -1
- package/dist/dream-maker-DbEH6ABX.mjs +0 -5
- package/dist/dream-maker-DbEH6ABX.mjs.map +0 -1
- package/dist/edge-CiNxTnJq.mjs +0 -15
- package/dist/edge-CiNxTnJq.mjs.map +0 -1
- package/dist/elixir-M-tyUuPQ.mjs +0 -8
- package/dist/elixir-M-tyUuPQ.mjs.map +0 -1
- package/dist/elm-CPy7ntV_.mjs +0 -8
- package/dist/elm-CPy7ntV_.mjs.map +0 -1
- package/dist/emacs-lisp-Brxx0Sbt.mjs +0 -5
- package/dist/emacs-lisp-Brxx0Sbt.mjs.map +0 -1
- package/dist/engine-javascript-CjxD84Z_.mjs +0 -3058
- package/dist/engine-javascript-CjxD84Z_.mjs.map +0 -1
- package/dist/engine-oniguruma-B2buYh9y.mjs +0 -389
- package/dist/engine-oniguruma-B2buYh9y.mjs.map +0 -1
- package/dist/erb-CP0kP8S1.mjs +0 -13
- package/dist/erb-CP0kP8S1.mjs.map +0 -1
- package/dist/erlang-Ji96SB8L.mjs +0 -8
- package/dist/erlang-Ji96SB8L.mjs.map +0 -1
- package/dist/everforest-dark-mXu75VmU.mjs +0 -6
- package/dist/everforest-dark-mXu75VmU.mjs.map +0 -1
- package/dist/everforest-light-B0xAPlUp.mjs +0 -6
- package/dist/everforest-light-B0xAPlUp.mjs.map +0 -1
- package/dist/fennel-DZeZiT-Z.mjs +0 -5
- package/dist/fennel-DZeZiT-Z.mjs.map +0 -1
- package/dist/fish-BW_XyVWl.mjs +0 -5
- package/dist/fish-BW_XyVWl.mjs.map +0 -1
- package/dist/fluent-D5wjIx4S.mjs +0 -5
- package/dist/fluent-D5wjIx4S.mjs.map +0 -1
- package/dist/fortran-fixed-form-pFDq8aul.mjs +0 -8
- package/dist/fortran-fixed-form-pFDq8aul.mjs.map +0 -1
- package/dist/fortran-free-form-B6T0euh-.mjs +0 -5
- package/dist/fortran-free-form-B6T0euh-.mjs.map +0 -1
- package/dist/fsharp-DFzfL_uZ.mjs +0 -8
- package/dist/fsharp-DFzfL_uZ.mjs.map +0 -1
- package/dist/gdresource-DZkMKM9Q.mjs +0 -13
- package/dist/gdresource-DZkMKM9Q.mjs.map +0 -1
- package/dist/gdscript-DwtQqEcX.mjs +0 -5
- package/dist/gdscript-DwtQqEcX.mjs.map +0 -1
- package/dist/gdshader-rDwkUCaa.mjs +0 -5
- package/dist/gdshader-rDwkUCaa.mjs.map +0 -1
- package/dist/genie-BfhM6kGv.mjs +0 -5
- package/dist/genie-BfhM6kGv.mjs.map +0 -1
- package/dist/gherkin-G-JA03FJ.mjs +0 -5
- package/dist/gherkin-G-JA03FJ.mjs.map +0 -1
- package/dist/git-commit-drj2jjWh.mjs +0 -8
- package/dist/git-commit-drj2jjWh.mjs.map +0 -1
- package/dist/git-rebase-CaohyQnS.mjs +0 -8
- package/dist/git-rebase-CaohyQnS.mjs.map +0 -1
- package/dist/github-dark-CTenoRQ8.mjs +0 -6
- package/dist/github-dark-CTenoRQ8.mjs.map +0 -1
- package/dist/github-dark-default-Con6b1h-.mjs +0 -6
- package/dist/github-dark-default-Con6b1h-.mjs.map +0 -1
- package/dist/github-dark-dimmed-CaAnvWw3.mjs +0 -6
- package/dist/github-dark-dimmed-CaAnvWw3.mjs.map +0 -1
- package/dist/github-dark-high-contrast-COm7y1Rv.mjs +0 -6
- package/dist/github-dark-high-contrast-COm7y1Rv.mjs.map +0 -1
- package/dist/github-light-D74aa4dO.mjs +0 -6
- package/dist/github-light-D74aa4dO.mjs.map +0 -1
- package/dist/github-light-default-BBVzuVUz.mjs +0 -6
- package/dist/github-light-default-BBVzuVUz.mjs.map +0 -1
- package/dist/github-light-high-contrast-CqxSzsLD.mjs +0 -6
- package/dist/github-light-high-contrast-CqxSzsLD.mjs.map +0 -1
- package/dist/gleam-DzWkrReo.mjs +0 -5
- package/dist/gleam-DzWkrReo.mjs.map +0 -1
- package/dist/glimmer-js-BNQY0kPX.mjs +0 -17
- package/dist/glimmer-js-BNQY0kPX.mjs.map +0 -1
- package/dist/glimmer-ts-DO-qafJY.mjs +0 -17
- package/dist/glimmer-ts-DO-qafJY.mjs.map +0 -1
- package/dist/glsl-wU4MxvvQ.mjs +0 -10
- package/dist/glsl-wU4MxvvQ.mjs.map +0 -1
- package/dist/gn-DVz3m6tN.mjs +0 -5
- package/dist/gn-DVz3m6tN.mjs.map +0 -1
- package/dist/gnuplot-D4teOAbn.mjs +0 -5
- package/dist/gnuplot-D4teOAbn.mjs.map +0 -1
- package/dist/go-DcqYXZDE.mjs +0 -5
- package/dist/go-DcqYXZDE.mjs.map +0 -1
- package/dist/graphql-CAmmtGyG.mjs +0 -19
- package/dist/graphql-CAmmtGyG.mjs.map +0 -1
- package/dist/groovy-BdsJaZey.mjs +0 -5
- package/dist/groovy-BdsJaZey.mjs.map +0 -1
- package/dist/gruvbox-dark-hard-CGsJkBU-.mjs +0 -6
- package/dist/gruvbox-dark-hard-CGsJkBU-.mjs.map +0 -1
- package/dist/gruvbox-dark-medium-uVadnpDA.mjs +0 -6
- package/dist/gruvbox-dark-medium-uVadnpDA.mjs.map +0 -1
- package/dist/gruvbox-dark-soft-CGpZgcKq.mjs +0 -6
- package/dist/gruvbox-dark-soft-CGpZgcKq.mjs.map +0 -1
- package/dist/gruvbox-light-hard-BXZeSfoD.mjs +0 -6
- package/dist/gruvbox-light-hard-BXZeSfoD.mjs.map +0 -1
- package/dist/gruvbox-light-medium-D7mAxe90.mjs +0 -6
- package/dist/gruvbox-light-medium-D7mAxe90.mjs.map +0 -1
- package/dist/gruvbox-light-soft-enFNSJ1V.mjs +0 -6
- package/dist/gruvbox-light-soft-enFNSJ1V.mjs.map +0 -1
- package/dist/hack-DgaC5QUw.mjs +0 -13
- package/dist/hack-DgaC5QUw.mjs.map +0 -1
- package/dist/haml-1vrxYPQe.mjs +0 -15
- package/dist/haml-1vrxYPQe.mjs.map +0 -1
- package/dist/handlebars-BOf036w9.mjs +0 -17
- package/dist/handlebars-BOf036w9.mjs.map +0 -1
- package/dist/haskell-BgXObw3Z.mjs +0 -5
- package/dist/haskell-BgXObw3Z.mjs.map +0 -1
- package/dist/haxe-SN6gQnv7.mjs +0 -5
- package/dist/haxe-SN6gQnv7.mjs.map +0 -1
- package/dist/hcl-DfQ78ybU.mjs +0 -5
- package/dist/hcl-DfQ78ybU.mjs.map +0 -1
- package/dist/hjson-DsbHj1Vu.mjs +0 -5
- package/dist/hjson-DsbHj1Vu.mjs.map +0 -1
- package/dist/hlsl-DErhWTj4.mjs +0 -5
- package/dist/hlsl-DErhWTj4.mjs.map +0 -1
- package/dist/horizon-bright-BLpSmqnO.mjs +0 -6
- package/dist/horizon-bright-BLpSmqnO.mjs.map +0 -1
- package/dist/horizon-mHk0xSKw.mjs +0 -6
- package/dist/horizon-mHk0xSKw.mjs.map +0 -1
- package/dist/houston-CJWIjsF-.mjs +0 -6
- package/dist/houston-CJWIjsF-.mjs.map +0 -1
- package/dist/html-derivative-CoKpUZPA.mjs +0 -8
- package/dist/html-derivative-CoKpUZPA.mjs.map +0 -1
- package/dist/html-hLCdjm8s.mjs +0 -15
- package/dist/html-hLCdjm8s.mjs.map +0 -1
- package/dist/http-Cu2vb2m1.mjs +0 -17
- package/dist/http-Cu2vb2m1.mjs.map +0 -1
- package/dist/hurl-DXLUiPe9.mjs +0 -15
- package/dist/hurl-DXLUiPe9.mjs.map +0 -1
- package/dist/hxml-D53ff3CT.mjs +0 -8
- package/dist/hxml-D53ff3CT.mjs.map +0 -1
- package/dist/hy-V5YDnsp0.mjs +0 -5
- package/dist/hy-V5YDnsp0.mjs.map +0 -1
- package/dist/imba-Dj8CXVx-.mjs +0 -5
- package/dist/imba-Dj8CXVx-.mjs.map +0 -1
- package/dist/ini-BBJUwrOG.mjs +0 -5
- package/dist/ini-BBJUwrOG.mjs.map +0 -1
- package/dist/java-YvKbK6tX.mjs +0 -8
- package/dist/java-YvKbK6tX.mjs.map +0 -1
- package/dist/javascript-YIAaXWRu.mjs +0 -8
- package/dist/javascript-YIAaXWRu.mjs.map +0 -1
- package/dist/jinja-ENyZ39OR.mjs +0 -12
- package/dist/jinja-ENyZ39OR.mjs.map +0 -1
- package/dist/jison-a-QW5GR4.mjs +0 -8
- package/dist/jison-a-QW5GR4.mjs.map +0 -1
- package/dist/json-D_p_sVuw.mjs +0 -8
- package/dist/json-D_p_sVuw.mjs.map +0 -1
- package/dist/json5-DC6Kkd4p.mjs +0 -5
- package/dist/json5-DC6Kkd4p.mjs.map +0 -1
- package/dist/jsonc-CXqrxP7Z.mjs +0 -5
- package/dist/jsonc-CXqrxP7Z.mjs.map +0 -1
- package/dist/jsonl-CzqgMhZd.mjs +0 -5
- package/dist/jsonl-CzqgMhZd.mjs.map +0 -1
- package/dist/jsonnet-Hvy31yDW.mjs +0 -5
- package/dist/jsonnet-Hvy31yDW.mjs.map +0 -1
- package/dist/jssm-CKXXM0Nd.mjs +0 -5
- package/dist/jssm-CKXXM0Nd.mjs.map +0 -1
- package/dist/jsx-Cmr67-nO.mjs +0 -8
- package/dist/jsx-Cmr67-nO.mjs.map +0 -1
- package/dist/julia-apY6-EoT.mjs +0 -19
- package/dist/julia-apY6-EoT.mjs.map +0 -1
- package/dist/just-DPxowZX-.mjs +0 -21
- package/dist/just-DPxowZX-.mjs.map +0 -1
- package/dist/kanagawa-dragon-bgbtpXkX.mjs +0 -6
- package/dist/kanagawa-dragon-bgbtpXkX.mjs.map +0 -1
- package/dist/kanagawa-lotus-CAjM2aBD.mjs +0 -6
- package/dist/kanagawa-lotus-CAjM2aBD.mjs.map +0 -1
- package/dist/kanagawa-wave-gUF-XydY.mjs +0 -6
- package/dist/kanagawa-wave-gUF-XydY.mjs.map +0 -1
- package/dist/kdl-DakeRkny.mjs +0 -5
- package/dist/kdl-DakeRkny.mjs.map +0 -1
- package/dist/kotlin-Cy2z7uIJ.mjs +0 -5
- package/dist/kotlin-Cy2z7uIJ.mjs.map +0 -1
- package/dist/kusto-8vFexomq.mjs +0 -5
- package/dist/kusto-8vFexomq.mjs.map +0 -1
- package/dist/laserwave-afq0Xxwk.mjs +0 -6
- package/dist/laserwave-afq0Xxwk.mjs.map +0 -1
- package/dist/latex-D_F2h8-H.mjs +0 -8
- package/dist/latex-D_F2h8-H.mjs.map +0 -1
- package/dist/lean-IHm98qhW.mjs +0 -5
- package/dist/lean-IHm98qhW.mjs.map +0 -1
- package/dist/less-D6RfQ6-S.mjs +0 -5
- package/dist/less-D6RfQ6-S.mjs.map +0 -1
- package/dist/light-plus-Dwa6Dmsm.mjs +0 -6
- package/dist/light-plus-Dwa6Dmsm.mjs.map +0 -1
- package/dist/liquid-DK7BdQ-d.mjs +0 -17
- package/dist/liquid-DK7BdQ-d.mjs.map +0 -1
- package/dist/llvm-CbsqsAF1.mjs +0 -5
- package/dist/llvm-CbsqsAF1.mjs.map +0 -1
- package/dist/log-CutLVNLV.mjs +0 -5
- package/dist/log-CutLVNLV.mjs.map +0 -1
- package/dist/logo-DNTC5lxi.mjs +0 -5
- package/dist/logo-DNTC5lxi.mjs.map +0 -1
- package/dist/lua-NCVDi2Y_.mjs +0 -10
- package/dist/lua-NCVDi2Y_.mjs.map +0 -1
- package/dist/luau-Z-b9t2YR.mjs +0 -5
- package/dist/luau-Z-b9t2YR.mjs.map +0 -1
- package/dist/make-D7o-TjTO.mjs +0 -5
- package/dist/make-D7o-TjTO.mjs.map +0 -1
- package/dist/markdown-CEvLuIE_.mjs +0 -5
- package/dist/markdown-CEvLuIE_.mjs.map +0 -1
- package/dist/markdown-config-BGDiDMhB.d.mts +0 -2094
- package/dist/markdown-config-BGDiDMhB.d.mts.map +0 -1
- package/dist/marko-DyPWMVoi.mjs +0 -17
- package/dist/marko-DyPWMVoi.mjs.map +0 -1
- package/dist/material-theme-BMSwLkhz.mjs +0 -6
- package/dist/material-theme-BMSwLkhz.mjs.map +0 -1
- package/dist/material-theme-darker-DREhSOvw.mjs +0 -6
- package/dist/material-theme-darker-DREhSOvw.mjs.map +0 -1
- package/dist/material-theme-lighter-egkNOF68.mjs +0 -6
- package/dist/material-theme-lighter-egkNOF68.mjs.map +0 -1
- package/dist/material-theme-ocean-CNqBAXQm.mjs +0 -6
- package/dist/material-theme-ocean-CNqBAXQm.mjs.map +0 -1
- package/dist/material-theme-palenight-DtcONgpr.mjs +0 -6
- package/dist/material-theme-palenight-DtcONgpr.mjs.map +0 -1
- package/dist/matlab-DHZHeFXY.mjs +0 -5
- package/dist/matlab-DHZHeFXY.mjs.map +0 -1
- package/dist/mdc-MKPEEsGA.mjs +0 -15
- package/dist/mdc-MKPEEsGA.mjs.map +0 -1
- package/dist/mdx-ClLOyMcG.mjs +0 -5
- package/dist/mdx-ClLOyMcG.mjs.map +0 -1
- package/dist/mermaid-CfX58h2h.mjs +0 -5
- package/dist/mermaid-CfX58h2h.mjs.map +0 -1
- package/dist/min-dark-CvIB8xOx.mjs +0 -6
- package/dist/min-dark-CvIB8xOx.mjs.map +0 -1
- package/dist/min-light-DnoFQoeu.mjs +0 -6
- package/dist/min-light-DnoFQoeu.mjs.map +0 -1
- package/dist/mipsasm-BPlrYcYb.mjs +0 -5
- package/dist/mipsasm-BPlrYcYb.mjs.map +0 -1
- package/dist/mojo-C5Qzk_lA.mjs +0 -5
- package/dist/mojo-C5Qzk_lA.mjs.map +0 -1
- package/dist/monokai-CmoRmG4x.mjs +0 -6
- package/dist/monokai-CmoRmG4x.mjs.map +0 -1
- package/dist/moonbit-BzaO7bLo.mjs +0 -5
- package/dist/moonbit-BzaO7bLo.mjs.map +0 -1
- package/dist/move-CAZmkwHx.mjs +0 -5
- package/dist/move-CAZmkwHx.mjs.map +0 -1
- package/dist/narrat-DN2gLj7A.mjs +0 -5
- package/dist/narrat-DN2gLj7A.mjs.map +0 -1
- package/dist/nextflow-DhVPPjdW.mjs +0 -8
- package/dist/nextflow-DhVPPjdW.mjs.map +0 -1
- package/dist/nextflow-groovy-DJq82mRo.mjs +0 -5
- package/dist/nextflow-groovy-DJq82mRo.mjs.map +0 -1
- package/dist/nginx-CU-DGOv1.mjs +0 -8
- package/dist/nginx-CU-DGOv1.mjs.map +0 -1
- package/dist/night-owl-Cs13ScSs.mjs +0 -6
- package/dist/night-owl-Cs13ScSs.mjs.map +0 -1
- package/dist/night-owl-light--HbEFF7Y.mjs +0 -6
- package/dist/night-owl-light--HbEFF7Y.mjs.map +0 -1
- package/dist/nim-3UbGj8cc.mjs +0 -23
- package/dist/nim-3UbGj8cc.mjs.map +0 -1
- package/dist/nix-CjXcUl9k.mjs +0 -9
- package/dist/nix-CjXcUl9k.mjs.map +0 -1
- package/dist/nord-C9GqXk2p.mjs +0 -6
- package/dist/nord-C9GqXk2p.mjs.map +0 -1
- package/dist/nushell-C4iFdrTc.mjs +0 -5
- package/dist/nushell-C4iFdrTc.mjs.map +0 -1
- package/dist/objective-c-CXuDGuMm.mjs +0 -5
- package/dist/objective-c-CXuDGuMm.mjs.map +0 -1
- package/dist/objective-cpp-V9yvCIRm.mjs +0 -5
- package/dist/objective-cpp-V9yvCIRm.mjs.map +0 -1
- package/dist/ocaml-D9fCj6sT.mjs +0 -5
- package/dist/ocaml-D9fCj6sT.mjs.map +0 -1
- package/dist/odin-CAKGLqrj.mjs +0 -5
- package/dist/odin-CAKGLqrj.mjs.map +0 -1
- package/dist/one-dark-pro-DW7BmY6Q.mjs +0 -6
- package/dist/one-dark-pro-DW7BmY6Q.mjs.map +0 -1
- package/dist/one-light-DCu0Wv9N.mjs +0 -6
- package/dist/one-light-DCu0Wv9N.mjs.map +0 -1
- package/dist/openscad-BdLZBBab.mjs +0 -5
- package/dist/openscad-BdLZBBab.mjs.map +0 -1
- package/dist/pascal-nsk9MKFb.mjs +0 -5
- package/dist/pascal-nsk9MKFb.mjs.map +0 -1
- package/dist/perl-DI9oLKmv.mjs +0 -19
- package/dist/perl-DI9oLKmv.mjs.map +0 -1
- package/dist/php-DJjzFdsM.mjs +0 -21
- package/dist/php-DJjzFdsM.mjs.map +0 -1
- package/dist/pkl-BVtC2QFe.mjs +0 -5
- package/dist/pkl-BVtC2QFe.mjs.map +0 -1
- package/dist/plastic-qUgYNoeW.mjs +0 -6
- package/dist/plastic-qUgYNoeW.mjs.map +0 -1
- package/dist/plsql-BwM0DOLE.mjs +0 -5
- package/dist/plsql-BwM0DOLE.mjs.map +0 -1
- package/dist/po-D39EqRsl.mjs +0 -5
- package/dist/po-D39EqRsl.mjs.map +0 -1
- package/dist/poimandres-DPRzGPvx.mjs +0 -6
- package/dist/poimandres-DPRzGPvx.mjs.map +0 -1
- package/dist/polar-DCBzWT3J.mjs +0 -5
- package/dist/polar-DCBzWT3J.mjs.map +0 -1
- package/dist/postcss-L6y-bzEw.mjs +0 -5
- package/dist/postcss-L6y-bzEw.mjs.map +0 -1
- package/dist/powerquery-BHkUTyux.mjs +0 -5
- package/dist/powerquery-BHkUTyux.mjs.map +0 -1
- package/dist/powershell-C80dlfD8.mjs +0 -5
- package/dist/powershell-C80dlfD8.mjs.map +0 -1
- package/dist/prisma-D407qtUw.mjs +0 -5
- package/dist/prisma-D407qtUw.mjs.map +0 -1
- package/dist/prolog-CSrn8-6K.mjs +0 -5
- package/dist/prolog-CSrn8-6K.mjs.map +0 -1
- package/dist/proto-ClvDy0H0.mjs +0 -5
- package/dist/proto-ClvDy0H0.mjs.map +0 -1
- package/dist/pug-Cyyu0V2y.mjs +0 -15
- package/dist/pug-Cyyu0V2y.mjs.map +0 -1
- package/dist/puppet-D5ZQtSNi.mjs +0 -5
- package/dist/puppet-D5ZQtSNi.mjs.map +0 -1
- package/dist/purescript-30PxZSjT.mjs +0 -5
- package/dist/purescript-30PxZSjT.mjs.map +0 -1
- package/dist/python-CpiNX4Ip.mjs +0 -5
- package/dist/python-CpiNX4Ip.mjs.map +0 -1
- package/dist/qml-PuKhTmY-.mjs +0 -8
- package/dist/qml-PuKhTmY-.mjs.map +0 -1
- package/dist/qmldir-BTwcIF6g.mjs +0 -5
- package/dist/qmldir-BTwcIF6g.mjs.map +0 -1
- package/dist/qss-DcpQyHuk.mjs +0 -5
- package/dist/qss-DcpQyHuk.mjs.map +0 -1
- package/dist/r-DcW8EcF5.mjs +0 -8
- package/dist/r-DcW8EcF5.mjs.map +0 -1
- package/dist/racket-D-BwrG5z.mjs +0 -5
- package/dist/racket-D-BwrG5z.mjs.map +0 -1
- package/dist/raku-CM1N1WTp.mjs +0 -5
- package/dist/raku-CM1N1WTp.mjs.map +0 -1
- package/dist/razor-C912Hs6M.mjs +0 -13
- package/dist/razor-C912Hs6M.mjs.map +0 -1
- package/dist/red-DhGHw_i_.mjs +0 -6
- package/dist/red-DhGHw_i_.mjs.map +0 -1
- package/dist/reg-MlBfIgTN.mjs +0 -5
- package/dist/reg-MlBfIgTN.mjs.map +0 -1
- package/dist/regexp-CEVpExph.mjs +0 -8
- package/dist/regexp-CEVpExph.mjs.map +0 -1
- package/dist/rel-Dg_W2E_N.mjs +0 -5
- package/dist/rel-Dg_W2E_N.mjs.map +0 -1
- package/dist/riscv-BoH7mqNI.mjs +0 -5
- package/dist/riscv-BoH7mqNI.mjs.map +0 -1
- package/dist/ron-DbOWX1T7.mjs +0 -5
- package/dist/ron-DbOWX1T7.mjs.map +0 -1
- package/dist/rose-pine-78rugKGO.mjs +0 -6
- package/dist/rose-pine-78rugKGO.mjs.map +0 -1
- package/dist/rose-pine-dawn-C_mYSEtu.mjs +0 -6
- package/dist/rose-pine-dawn-C_mYSEtu.mjs.map +0 -1
- package/dist/rose-pine-moon-Cz7-JQvG.mjs +0 -6
- package/dist/rose-pine-moon-Cz7-JQvG.mjs.map +0 -1
- package/dist/rosmsg-Ca1BpyBh.mjs +0 -5
- package/dist/rosmsg-Ca1BpyBh.mjs.map +0 -1
- package/dist/rst-DbIJV67W.mjs +0 -25
- package/dist/rst-DbIJV67W.mjs.map +0 -1
- package/dist/ruby-D-Lps7Dp.mjs +0 -33
- package/dist/ruby-D-Lps7Dp.mjs.map +0 -1
- package/dist/rust-Dk6HN1uF.mjs +0 -5
- package/dist/rust-Dk6HN1uF.mjs.map +0 -1
- package/dist/sas-QckC_qvJ.mjs +0 -8
- package/dist/sas-QckC_qvJ.mjs.map +0 -1
- package/dist/sass-BWOQVuIy.mjs +0 -5
- package/dist/sass-BWOQVuIy.mjs.map +0 -1
- package/dist/scala-BoffQEnY.mjs +0 -5
- package/dist/scala-BoffQEnY.mjs.map +0 -1
- package/dist/schemas/index.d.mts.map +0 -1
- package/dist/schemas/index.mjs.map +0 -1
- package/dist/schemas-By1qE0sQ.mjs +0 -3881
- package/dist/schemas-By1qE0sQ.mjs.map +0 -1
- package/dist/scheme-C2D8wvUe.mjs +0 -5
- package/dist/scheme-C2D8wvUe.mjs.map +0 -1
- package/dist/scss-D1vWunvk.mjs +0 -10
- package/dist/scss-D1vWunvk.mjs.map +0 -1
- package/dist/sdbl-DkThjfrg.mjs +0 -5
- package/dist/sdbl-DkThjfrg.mjs.map +0 -1
- package/dist/shaderlab-D0NLokaw.mjs +0 -8
- package/dist/shaderlab-D0NLokaw.mjs.map +0 -1
- package/dist/shellscript-BHpEag8P.mjs +0 -8
- package/dist/shellscript-BHpEag8P.mjs.map +0 -1
- package/dist/shellsession-CSdmCfg4.mjs +0 -8
- package/dist/shellsession-CSdmCfg4.mjs.map +0 -1
- package/dist/site-D8l4ghX0.mjs +0 -71441
- package/dist/site-D8l4ghX0.mjs.map +0 -1
- package/dist/slack-dark-Cj8kL6BM.mjs +0 -6
- package/dist/slack-dark-Cj8kL6BM.mjs.map +0 -1
- package/dist/slack-ochin-B4Rna-gD.mjs +0 -6
- package/dist/slack-ochin-B4Rna-gD.mjs.map +0 -1
- package/dist/smalltalk-ZNQAnLNC.mjs +0 -5
- package/dist/smalltalk-ZNQAnLNC.mjs.map +0 -1
- package/dist/snazzy-light-CF7MTUt6.mjs +0 -6
- package/dist/snazzy-light-CF7MTUt6.mjs.map +0 -1
- package/dist/solarized-dark-DBFHIE1d.mjs +0 -6
- package/dist/solarized-dark-DBFHIE1d.mjs.map +0 -1
- package/dist/solarized-light-Del516-O.mjs +0 -6
- package/dist/solarized-light-Del516-O.mjs.map +0 -1
- package/dist/solidity-Ddf3MOD2.mjs +0 -5
- package/dist/solidity-Ddf3MOD2.mjs.map +0 -1
- package/dist/soy-PW0jpJKW.mjs +0 -8
- package/dist/soy-PW0jpJKW.mjs.map +0 -1
- package/dist/sparql-rX-q1CB9.mjs +0 -8
- package/dist/sparql-rX-q1CB9.mjs.map +0 -1
- package/dist/splunk-DcREbx5k.mjs +0 -5
- package/dist/splunk-DcREbx5k.mjs.map +0 -1
- package/dist/sql-Cq_hpY16.mjs +0 -8
- package/dist/sql-Cq_hpY16.mjs.map +0 -1
- package/dist/ssh-config-DIv0Kb8E.mjs +0 -5
- package/dist/ssh-config-DIv0Kb8E.mjs.map +0 -1
- package/dist/stata-rEmfzZT7.mjs +0 -8
- package/dist/stata-rEmfzZT7.mjs.map +0 -1
- package/dist/stylus-DHanz1Kd.mjs +0 -5
- package/dist/stylus-DHanz1Kd.mjs.map +0 -1
- package/dist/surrealql-BdfgI90j.mjs +0 -8
- package/dist/surrealql-BdfgI90j.mjs.map +0 -1
- package/dist/svelte-DFFWgqCr.mjs +0 -17
- package/dist/svelte-DFFWgqCr.mjs.map +0 -1
- package/dist/swift-Ci7klDIa.mjs +0 -5
- package/dist/swift-Ci7klDIa.mjs.map +0 -1
- package/dist/synthwave-84-T5fF9-Op.mjs +0 -6
- package/dist/synthwave-84-T5fF9-Op.mjs.map +0 -1
- package/dist/system-verilog-tLSd9PYh.mjs +0 -5
- package/dist/system-verilog-tLSd9PYh.mjs.map +0 -1
- package/dist/systemd-C_LIvN4y.mjs +0 -5
- package/dist/systemd-C_LIvN4y.mjs.map +0 -1
- package/dist/talonscript-2cIfb9F4.mjs +0 -5
- package/dist/talonscript-2cIfb9F4.mjs.map +0 -1
- package/dist/tasl-iwLzpKVu.mjs +0 -5
- package/dist/tasl-iwLzpKVu.mjs.map +0 -1
- package/dist/tcl-DR2zhegR.mjs +0 -5
- package/dist/tcl-DR2zhegR.mjs.map +0 -1
- package/dist/templ-BDCp727o.mjs +0 -15
- package/dist/templ-BDCp727o.mjs.map +0 -1
- package/dist/terraform-BH4YC6Zk.mjs +0 -5
- package/dist/terraform-BH4YC6Zk.mjs.map +0 -1
- package/dist/tex-DGRDr7pd.mjs +0 -8
- package/dist/tex-DGRDr7pd.mjs.map +0 -1
- package/dist/tokyo-night-YpyXNs_N.mjs +0 -6
- package/dist/tokyo-night-YpyXNs_N.mjs.map +0 -1
- package/dist/toml-CECsyL8x.mjs +0 -5
- package/dist/toml-CECsyL8x.mjs.map +0 -1
- package/dist/ts-tags-BsG9I5cd.mjs +0 -61
- package/dist/ts-tags-BsG9I5cd.mjs.map +0 -1
- package/dist/tsv-BwwAUdIn.mjs +0 -5
- package/dist/tsv-BwwAUdIn.mjs.map +0 -1
- package/dist/tsx-qx39NaGS.mjs +0 -8
- package/dist/tsx-qx39NaGS.mjs.map +0 -1
- package/dist/turtle-D8n7HFvE.mjs +0 -5
- package/dist/turtle-D8n7HFvE.mjs.map +0 -1
- package/dist/twig-DsMUiWk8.mjs +0 -21
- package/dist/twig-DsMUiWk8.mjs.map +0 -1
- package/dist/typescript-BZXFn-rd.mjs +0 -8
- package/dist/typescript-BZXFn-rd.mjs.map +0 -1
- package/dist/typespec-ClgDzShT.mjs +0 -5
- package/dist/typespec-ClgDzShT.mjs.map +0 -1
- package/dist/typst-CMN2lhh3.mjs +0 -5
- package/dist/typst-CMN2lhh3.mjs.map +0 -1
- package/dist/v-CA1cYsER.mjs +0 -5
- package/dist/v-CA1cYsER.mjs.map +0 -1
- package/dist/vala-DuBY1WKl.mjs +0 -5
- package/dist/vala-DuBY1WKl.mjs.map +0 -1
- package/dist/vb-XQBHWfW8.mjs +0 -5
- package/dist/vb-XQBHWfW8.mjs.map +0 -1
- package/dist/verilog-CWqhvrSz.mjs +0 -5
- package/dist/verilog-CWqhvrSz.mjs.map +0 -1
- package/dist/vesper-CigfTEKg.mjs +0 -6
- package/dist/vesper-CigfTEKg.mjs.map +0 -1
- package/dist/vhdl-C67Bhzjr.mjs +0 -5
- package/dist/vhdl-C67Bhzjr.mjs.map +0 -1
- package/dist/viml-C26cD_wa.mjs +0 -5
- package/dist/viml-C26cD_wa.mjs.map +0 -1
- package/dist/vitesse-black-DYCj3nJd.mjs +0 -6
- package/dist/vitesse-black-DYCj3nJd.mjs.map +0 -1
- package/dist/vitesse-dark-BMGIMsRz.mjs +0 -6
- package/dist/vitesse-dark-BMGIMsRz.mjs.map +0 -1
- package/dist/vitesse-light-SKJOp9ZR.mjs +0 -6
- package/dist/vitesse-light-SKJOp9ZR.mjs.map +0 -1
- package/dist/vue-bb5YUHg6.mjs +0 -33
- package/dist/vue-bb5YUHg6.mjs.map +0 -1
- package/dist/vue-html-ypB-H6rb.mjs +0 -8
- package/dist/vue-html-ypB-H6rb.mjs.map +0 -1
- package/dist/vue-vine-Cl_j-Bb5.mjs +0 -21
- package/dist/vue-vine-Cl_j-Bb5.mjs.map +0 -1
- package/dist/vyper-gBkdcGC5.mjs +0 -5
- package/dist/vyper-gBkdcGC5.mjs.map +0 -1
- package/dist/wasm-B1KmdQo5.mjs +0 -9
- package/dist/wasm-B1KmdQo5.mjs.map +0 -1
- package/dist/wasm-D4mFcPzE.mjs +0 -5
- package/dist/wasm-D4mFcPzE.mjs.map +0 -1
- package/dist/wenyan-D1TI9OZw.mjs +0 -5
- package/dist/wenyan-D1TI9OZw.mjs.map +0 -1
- package/dist/wgsl-DzVADIua.mjs +0 -5
- package/dist/wgsl-DzVADIua.mjs.map +0 -1
- package/dist/wikitext-DPnM1XoL.mjs +0 -5
- package/dist/wikitext-DPnM1XoL.mjs.map +0 -1
- package/dist/wit-Bewokpy8.mjs +0 -5
- package/dist/wit-Bewokpy8.mjs.map +0 -1
- package/dist/wolfram-DVQXO29Z.mjs +0 -5
- package/dist/wolfram-DVQXO29Z.mjs.map +0 -1
- package/dist/xml-TYYGqgP3.mjs +0 -10
- package/dist/xml-TYYGqgP3.mjs.map +0 -1
- package/dist/xsl-BOev1i40.mjs +0 -8
- package/dist/xsl-BOev1i40.mjs.map +0 -1
- package/dist/yaml-Xue9e-YO.mjs +0 -8
- package/dist/yaml-Xue9e-YO.mjs.map +0 -1
- package/dist/zenscript-CwrU69w6.mjs +0 -5
- package/dist/zenscript-CwrU69w6.mjs.map +0 -1
- package/dist/zig-NT9tMYQ2.mjs +0 -5
- 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
|
|
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
|
-
|
|
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 `
|
|
21
|
+
2. Add content in a `docs/` directory:
|
|
25
22
|
|
|
26
23
|
```
|
|
27
|
-
|
|
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
|
-
- **`
|
|
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` |
|
|
167
|
-
| `title` | `string` |
|
|
168
|
-
| `description` | `string` |
|
|
169
|
-
| `origin` | `string` |
|
|
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` | `'
|
|
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` | `
|
|
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
|
-
|
|
213
|
-
|
|
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
|
|
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
|