@pagesmith/docs 0.1.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 (655) hide show
  1. package/README.md +374 -0
  2. package/dist/abap-DriO5VG6.mjs +5 -0
  3. package/dist/abap-DriO5VG6.mjs.map +1 -0
  4. package/dist/actionscript-3-G6toewHp.mjs +5 -0
  5. package/dist/actionscript-3-G6toewHp.mjs.map +1 -0
  6. package/dist/ada-C_QiJ0Pq.mjs +5 -0
  7. package/dist/ada-C_QiJ0Pq.mjs.map +1 -0
  8. package/dist/andromeeda-CoIEPgYR.mjs +6 -0
  9. package/dist/andromeeda-CoIEPgYR.mjs.map +1 -0
  10. package/dist/angular-html-D9wIlok7.mjs +35 -0
  11. package/dist/angular-html-D9wIlok7.mjs.map +1 -0
  12. package/dist/angular-ts-Dxk7hl9Z.mjs +29 -0
  13. package/dist/angular-ts-Dxk7hl9Z.mjs.map +1 -0
  14. package/dist/apache-B1aRGcgY.mjs +5 -0
  15. package/dist/apache-B1aRGcgY.mjs.map +1 -0
  16. package/dist/apex-FoK4UgwA.mjs +5 -0
  17. package/dist/apex-FoK4UgwA.mjs.map +1 -0
  18. package/dist/apl-DwmTqCJs.mjs +19 -0
  19. package/dist/apl-DwmTqCJs.mjs.map +1 -0
  20. package/dist/applescript-eBeY0Hp4.mjs +5 -0
  21. package/dist/applescript-eBeY0Hp4.mjs.map +1 -0
  22. package/dist/ara-CkIucGv1.mjs +5 -0
  23. package/dist/ara-CkIucGv1.mjs.map +1 -0
  24. package/dist/asciidoc-AIdrECCR.mjs +5 -0
  25. package/dist/asciidoc-AIdrECCR.mjs.map +1 -0
  26. package/dist/asm-CflFLM6a.mjs +5 -0
  27. package/dist/asm-CflFLM6a.mjs.map +1 -0
  28. package/dist/astro-DLt5gl0n.mjs +21 -0
  29. package/dist/astro-DLt5gl0n.mjs.map +1 -0
  30. package/dist/aurora-x-DbqEqkUT.mjs +6 -0
  31. package/dist/aurora-x-DbqEqkUT.mjs.map +1 -0
  32. package/dist/awk-Br_61sCS.mjs +5 -0
  33. package/dist/awk-Br_61sCS.mjs.map +1 -0
  34. package/dist/ayu-dark-DdJXJf7U.mjs +6 -0
  35. package/dist/ayu-dark-DdJXJf7U.mjs.map +1 -0
  36. package/dist/ayu-light-Bg-9Hujp.mjs +6 -0
  37. package/dist/ayu-light-Bg-9Hujp.mjs.map +1 -0
  38. package/dist/ayu-mirage-7v6-qMvl.mjs +6 -0
  39. package/dist/ayu-mirage-7v6-qMvl.mjs.map +1 -0
  40. package/dist/ballerina-D-8GYl8R.mjs +5 -0
  41. package/dist/ballerina-D-8GYl8R.mjs.map +1 -0
  42. package/dist/bat-CJ4nIaxw.mjs +5 -0
  43. package/dist/bat-CJ4nIaxw.mjs.map +1 -0
  44. package/dist/beancount-DFPOglwN.mjs +5 -0
  45. package/dist/beancount-DFPOglwN.mjs.map +1 -0
  46. package/dist/berry-DiM_rwEt.mjs +5 -0
  47. package/dist/berry-DiM_rwEt.mjs.map +1 -0
  48. package/dist/bibtex-ryU9pJLB.mjs +5 -0
  49. package/dist/bibtex-ryU9pJLB.mjs.map +1 -0
  50. package/dist/bicep-DFoNCrG3.mjs +5 -0
  51. package/dist/bicep-DFoNCrG3.mjs.map +1 -0
  52. package/dist/bird2-C3EaFiUY.mjs +5 -0
  53. package/dist/bird2-C3EaFiUY.mjs.map +1 -0
  54. package/dist/blade-Cwq7FVfH.mjs +23 -0
  55. package/dist/blade-Cwq7FVfH.mjs.map +1 -0
  56. package/dist/bsl-Ci4vkNj8.mjs +8 -0
  57. package/dist/bsl-Ci4vkNj8.mjs.map +1 -0
  58. package/dist/c-D7oHDxxD.mjs +8 -0
  59. package/dist/c-D7oHDxxD.mjs.map +1 -0
  60. package/dist/c3-D5hU-x2t.mjs +5 -0
  61. package/dist/c3-D5hU-x2t.mjs.map +1 -0
  62. package/dist/cadence-B-Z42oTz.mjs +5 -0
  63. package/dist/cadence-B-Z42oTz.mjs.map +1 -0
  64. package/dist/cairo-BpET0YK1.mjs +8 -0
  65. package/dist/cairo-BpET0YK1.mjs.map +1 -0
  66. package/dist/catppuccin-frappe-0BRWFMtJ.mjs +6 -0
  67. package/dist/catppuccin-frappe-0BRWFMtJ.mjs.map +1 -0
  68. package/dist/catppuccin-latte-VaqpfzxV.mjs +6 -0
  69. package/dist/catppuccin-latte-VaqpfzxV.mjs.map +1 -0
  70. package/dist/catppuccin-macchiato-qrypRbXk.mjs +6 -0
  71. package/dist/catppuccin-macchiato-qrypRbXk.mjs.map +1 -0
  72. package/dist/catppuccin-mocha-Dvb6gv4O.mjs +6 -0
  73. package/dist/catppuccin-mocha-Dvb6gv4O.mjs.map +1 -0
  74. package/dist/clarity-egx-5RLz.mjs +5 -0
  75. package/dist/clarity-egx-5RLz.mjs.map +1 -0
  76. package/dist/cli/bin.d.mts +1 -0
  77. package/dist/cli/bin.mjs +115 -0
  78. package/dist/cli/bin.mjs.map +1 -0
  79. package/dist/clojure-N5xIuTbG.mjs +5 -0
  80. package/dist/clojure-N5xIuTbG.mjs.map +1 -0
  81. package/dist/cmake-CYzXNVI_.mjs +5 -0
  82. package/dist/cmake-CYzXNVI_.mjs.map +1 -0
  83. package/dist/cobol-DuznKErk.mjs +13 -0
  84. package/dist/cobol-DuznKErk.mjs.map +1 -0
  85. package/dist/codeowners-BaallJaj.mjs +5 -0
  86. package/dist/codeowners-BaallJaj.mjs.map +1 -0
  87. package/dist/codeql-BIahF8Ga.mjs +5 -0
  88. package/dist/codeql-BIahF8Ga.mjs.map +1 -0
  89. package/dist/coffee-t6lXzaXy.mjs +8 -0
  90. package/dist/coffee-t6lXzaXy.mjs.map +1 -0
  91. package/dist/common-lisp-bLMBDFt9.mjs +5 -0
  92. package/dist/common-lisp-bLMBDFt9.mjs.map +1 -0
  93. package/dist/coq-h9z5p2Ui.mjs +5 -0
  94. package/dist/coq-h9z5p2Ui.mjs.map +1 -0
  95. package/dist/cpp-D6_V2gI1.mjs +27 -0
  96. package/dist/cpp-D6_V2gI1.mjs.map +1 -0
  97. package/dist/crystal-BH-Qv6Rl.mjs +21 -0
  98. package/dist/crystal-BH-Qv6Rl.mjs.map +1 -0
  99. package/dist/csharp-BbHR3YVQ.mjs +5 -0
  100. package/dist/csharp-BbHR3YVQ.mjs.map +1 -0
  101. package/dist/css-Wu--EEs5.mjs +8 -0
  102. package/dist/css-Wu--EEs5.mjs.map +1 -0
  103. package/dist/csv-CRvIpAc5.mjs +5 -0
  104. package/dist/csv-CRvIpAc5.mjs.map +1 -0
  105. package/dist/cue-B8A_h-kS.mjs +5 -0
  106. package/dist/cue-B8A_h-kS.mjs.map +1 -0
  107. package/dist/cypher-B8mmimml.mjs +5 -0
  108. package/dist/cypher-B8mmimml.mjs.map +1 -0
  109. package/dist/d-Ddz3GmKc.mjs +5 -0
  110. package/dist/d-Ddz3GmKc.mjs.map +1 -0
  111. package/dist/dark-plus-BjClkp3W.mjs +6 -0
  112. package/dist/dark-plus-BjClkp3W.mjs.map +1 -0
  113. package/dist/dart-BOQAkR91.mjs +5 -0
  114. package/dist/dart-BOQAkR91.mjs.map +1 -0
  115. package/dist/dax-D3YKmfop.mjs +5 -0
  116. package/dist/dax-D3YKmfop.mjs.map +1 -0
  117. package/dist/desktop-wo52vLHj.mjs +5 -0
  118. package/dist/desktop-wo52vLHj.mjs.map +1 -0
  119. package/dist/diff-nA9OrLiI.mjs +5 -0
  120. package/dist/diff-nA9OrLiI.mjs.map +1 -0
  121. package/dist/docker-BgWkJ5L9.mjs +5 -0
  122. package/dist/docker-BgWkJ5L9.mjs.map +1 -0
  123. package/dist/dotenv-90bAk1yC.mjs +5 -0
  124. package/dist/dotenv-90bAk1yC.mjs.map +1 -0
  125. package/dist/dracula-EYPvHKFq.mjs +6 -0
  126. package/dist/dracula-EYPvHKFq.mjs.map +1 -0
  127. package/dist/dracula-soft-Bb4JppaT.mjs +6 -0
  128. package/dist/dracula-soft-Bb4JppaT.mjs.map +1 -0
  129. package/dist/dream-maker-DbEH6ABX.mjs +5 -0
  130. package/dist/dream-maker-DbEH6ABX.mjs.map +1 -0
  131. package/dist/edge-CiNxTnJq.mjs +15 -0
  132. package/dist/edge-CiNxTnJq.mjs.map +1 -0
  133. package/dist/elixir-M-tyUuPQ.mjs +8 -0
  134. package/dist/elixir-M-tyUuPQ.mjs.map +1 -0
  135. package/dist/elm-CPy7ntV_.mjs +8 -0
  136. package/dist/elm-CPy7ntV_.mjs.map +1 -0
  137. package/dist/emacs-lisp-Brxx0Sbt.mjs +5 -0
  138. package/dist/emacs-lisp-Brxx0Sbt.mjs.map +1 -0
  139. package/dist/engine-javascript-CjxD84Z_.mjs +3058 -0
  140. package/dist/engine-javascript-CjxD84Z_.mjs.map +1 -0
  141. package/dist/engine-oniguruma-B2buYh9y.mjs +389 -0
  142. package/dist/engine-oniguruma-B2buYh9y.mjs.map +1 -0
  143. package/dist/erb-CP0kP8S1.mjs +13 -0
  144. package/dist/erb-CP0kP8S1.mjs.map +1 -0
  145. package/dist/erlang-Ji96SB8L.mjs +8 -0
  146. package/dist/erlang-Ji96SB8L.mjs.map +1 -0
  147. package/dist/everforest-dark-mXu75VmU.mjs +6 -0
  148. package/dist/everforest-dark-mXu75VmU.mjs.map +1 -0
  149. package/dist/everforest-light-B0xAPlUp.mjs +6 -0
  150. package/dist/everforest-light-B0xAPlUp.mjs.map +1 -0
  151. package/dist/fennel-DZeZiT-Z.mjs +5 -0
  152. package/dist/fennel-DZeZiT-Z.mjs.map +1 -0
  153. package/dist/fish-BW_XyVWl.mjs +5 -0
  154. package/dist/fish-BW_XyVWl.mjs.map +1 -0
  155. package/dist/fluent-D5wjIx4S.mjs +5 -0
  156. package/dist/fluent-D5wjIx4S.mjs.map +1 -0
  157. package/dist/fortran-fixed-form-pFDq8aul.mjs +8 -0
  158. package/dist/fortran-fixed-form-pFDq8aul.mjs.map +1 -0
  159. package/dist/fortran-free-form-B6T0euh-.mjs +5 -0
  160. package/dist/fortran-free-form-B6T0euh-.mjs.map +1 -0
  161. package/dist/fsharp-DFzfL_uZ.mjs +8 -0
  162. package/dist/fsharp-DFzfL_uZ.mjs.map +1 -0
  163. package/dist/gdresource-DZkMKM9Q.mjs +13 -0
  164. package/dist/gdresource-DZkMKM9Q.mjs.map +1 -0
  165. package/dist/gdscript-DwtQqEcX.mjs +5 -0
  166. package/dist/gdscript-DwtQqEcX.mjs.map +1 -0
  167. package/dist/gdshader-rDwkUCaa.mjs +5 -0
  168. package/dist/gdshader-rDwkUCaa.mjs.map +1 -0
  169. package/dist/genie-BfhM6kGv.mjs +5 -0
  170. package/dist/genie-BfhM6kGv.mjs.map +1 -0
  171. package/dist/gherkin-G-JA03FJ.mjs +5 -0
  172. package/dist/gherkin-G-JA03FJ.mjs.map +1 -0
  173. package/dist/git-commit-drj2jjWh.mjs +8 -0
  174. package/dist/git-commit-drj2jjWh.mjs.map +1 -0
  175. package/dist/git-rebase-CaohyQnS.mjs +8 -0
  176. package/dist/git-rebase-CaohyQnS.mjs.map +1 -0
  177. package/dist/github-dark-CTenoRQ8.mjs +6 -0
  178. package/dist/github-dark-CTenoRQ8.mjs.map +1 -0
  179. package/dist/github-dark-default-Con6b1h-.mjs +6 -0
  180. package/dist/github-dark-default-Con6b1h-.mjs.map +1 -0
  181. package/dist/github-dark-dimmed-CaAnvWw3.mjs +6 -0
  182. package/dist/github-dark-dimmed-CaAnvWw3.mjs.map +1 -0
  183. package/dist/github-dark-high-contrast-COm7y1Rv.mjs +6 -0
  184. package/dist/github-dark-high-contrast-COm7y1Rv.mjs.map +1 -0
  185. package/dist/github-light-D74aa4dO.mjs +6 -0
  186. package/dist/github-light-D74aa4dO.mjs.map +1 -0
  187. package/dist/github-light-default-BBVzuVUz.mjs +6 -0
  188. package/dist/github-light-default-BBVzuVUz.mjs.map +1 -0
  189. package/dist/github-light-high-contrast-CqxSzsLD.mjs +6 -0
  190. package/dist/github-light-high-contrast-CqxSzsLD.mjs.map +1 -0
  191. package/dist/gleam-DzWkrReo.mjs +5 -0
  192. package/dist/gleam-DzWkrReo.mjs.map +1 -0
  193. package/dist/glimmer-js-BNQY0kPX.mjs +17 -0
  194. package/dist/glimmer-js-BNQY0kPX.mjs.map +1 -0
  195. package/dist/glimmer-ts-DO-qafJY.mjs +17 -0
  196. package/dist/glimmer-ts-DO-qafJY.mjs.map +1 -0
  197. package/dist/glsl-wU4MxvvQ.mjs +10 -0
  198. package/dist/glsl-wU4MxvvQ.mjs.map +1 -0
  199. package/dist/gn-DVz3m6tN.mjs +5 -0
  200. package/dist/gn-DVz3m6tN.mjs.map +1 -0
  201. package/dist/gnuplot-D4teOAbn.mjs +5 -0
  202. package/dist/gnuplot-D4teOAbn.mjs.map +1 -0
  203. package/dist/go-DcqYXZDE.mjs +5 -0
  204. package/dist/go-DcqYXZDE.mjs.map +1 -0
  205. package/dist/graphql-CAmmtGyG.mjs +19 -0
  206. package/dist/graphql-CAmmtGyG.mjs.map +1 -0
  207. package/dist/groovy-BdsJaZey.mjs +5 -0
  208. package/dist/groovy-BdsJaZey.mjs.map +1 -0
  209. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs +6 -0
  210. package/dist/gruvbox-dark-hard-CGsJkBU-.mjs.map +1 -0
  211. package/dist/gruvbox-dark-medium-uVadnpDA.mjs +6 -0
  212. package/dist/gruvbox-dark-medium-uVadnpDA.mjs.map +1 -0
  213. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs +6 -0
  214. package/dist/gruvbox-dark-soft-CGpZgcKq.mjs.map +1 -0
  215. package/dist/gruvbox-light-hard-BXZeSfoD.mjs +6 -0
  216. package/dist/gruvbox-light-hard-BXZeSfoD.mjs.map +1 -0
  217. package/dist/gruvbox-light-medium-D7mAxe90.mjs +6 -0
  218. package/dist/gruvbox-light-medium-D7mAxe90.mjs.map +1 -0
  219. package/dist/gruvbox-light-soft-enFNSJ1V.mjs +6 -0
  220. package/dist/gruvbox-light-soft-enFNSJ1V.mjs.map +1 -0
  221. package/dist/hack-DgaC5QUw.mjs +13 -0
  222. package/dist/hack-DgaC5QUw.mjs.map +1 -0
  223. package/dist/haml-1vrxYPQe.mjs +15 -0
  224. package/dist/haml-1vrxYPQe.mjs.map +1 -0
  225. package/dist/handlebars-BOf036w9.mjs +17 -0
  226. package/dist/handlebars-BOf036w9.mjs.map +1 -0
  227. package/dist/haskell-BgXObw3Z.mjs +5 -0
  228. package/dist/haskell-BgXObw3Z.mjs.map +1 -0
  229. package/dist/haxe-SN6gQnv7.mjs +5 -0
  230. package/dist/haxe-SN6gQnv7.mjs.map +1 -0
  231. package/dist/hcl-DfQ78ybU.mjs +5 -0
  232. package/dist/hcl-DfQ78ybU.mjs.map +1 -0
  233. package/dist/hjson-DsbHj1Vu.mjs +5 -0
  234. package/dist/hjson-DsbHj1Vu.mjs.map +1 -0
  235. package/dist/hlsl-DErhWTj4.mjs +5 -0
  236. package/dist/hlsl-DErhWTj4.mjs.map +1 -0
  237. package/dist/horizon-bright-BLpSmqnO.mjs +6 -0
  238. package/dist/horizon-bright-BLpSmqnO.mjs.map +1 -0
  239. package/dist/horizon-mHk0xSKw.mjs +6 -0
  240. package/dist/horizon-mHk0xSKw.mjs.map +1 -0
  241. package/dist/houston-CJWIjsF-.mjs +6 -0
  242. package/dist/houston-CJWIjsF-.mjs.map +1 -0
  243. package/dist/html-derivative-CoKpUZPA.mjs +8 -0
  244. package/dist/html-derivative-CoKpUZPA.mjs.map +1 -0
  245. package/dist/html-hLCdjm8s.mjs +15 -0
  246. package/dist/html-hLCdjm8s.mjs.map +1 -0
  247. package/dist/http-Cu2vb2m1.mjs +17 -0
  248. package/dist/http-Cu2vb2m1.mjs.map +1 -0
  249. package/dist/hurl-DXLUiPe9.mjs +15 -0
  250. package/dist/hurl-DXLUiPe9.mjs.map +1 -0
  251. package/dist/hxml-D53ff3CT.mjs +8 -0
  252. package/dist/hxml-D53ff3CT.mjs.map +1 -0
  253. package/dist/hy-V5YDnsp0.mjs +5 -0
  254. package/dist/hy-V5YDnsp0.mjs.map +1 -0
  255. package/dist/imba-Dj8CXVx-.mjs +5 -0
  256. package/dist/imba-Dj8CXVx-.mjs.map +1 -0
  257. package/dist/index.d.mts +102 -0
  258. package/dist/index.d.mts.map +1 -0
  259. package/dist/index.mjs +3 -0
  260. package/dist/ini-BBJUwrOG.mjs +5 -0
  261. package/dist/ini-BBJUwrOG.mjs.map +1 -0
  262. package/dist/java-YvKbK6tX.mjs +8 -0
  263. package/dist/java-YvKbK6tX.mjs.map +1 -0
  264. package/dist/javascript-YIAaXWRu.mjs +8 -0
  265. package/dist/javascript-YIAaXWRu.mjs.map +1 -0
  266. package/dist/jinja-ENyZ39OR.mjs +12 -0
  267. package/dist/jinja-ENyZ39OR.mjs.map +1 -0
  268. package/dist/jison-a-QW5GR4.mjs +8 -0
  269. package/dist/jison-a-QW5GR4.mjs.map +1 -0
  270. package/dist/json-D_p_sVuw.mjs +8 -0
  271. package/dist/json-D_p_sVuw.mjs.map +1 -0
  272. package/dist/json5-DC6Kkd4p.mjs +5 -0
  273. package/dist/json5-DC6Kkd4p.mjs.map +1 -0
  274. package/dist/jsonc-CXqrxP7Z.mjs +5 -0
  275. package/dist/jsonc-CXqrxP7Z.mjs.map +1 -0
  276. package/dist/jsonl-CzqgMhZd.mjs +5 -0
  277. package/dist/jsonl-CzqgMhZd.mjs.map +1 -0
  278. package/dist/jsonnet-Hvy31yDW.mjs +5 -0
  279. package/dist/jsonnet-Hvy31yDW.mjs.map +1 -0
  280. package/dist/jssm-CKXXM0Nd.mjs +5 -0
  281. package/dist/jssm-CKXXM0Nd.mjs.map +1 -0
  282. package/dist/jsx-Cmr67-nO.mjs +8 -0
  283. package/dist/jsx-Cmr67-nO.mjs.map +1 -0
  284. package/dist/julia-apY6-EoT.mjs +19 -0
  285. package/dist/julia-apY6-EoT.mjs.map +1 -0
  286. package/dist/just-DPxowZX-.mjs +21 -0
  287. package/dist/just-DPxowZX-.mjs.map +1 -0
  288. package/dist/kanagawa-dragon-bgbtpXkX.mjs +6 -0
  289. package/dist/kanagawa-dragon-bgbtpXkX.mjs.map +1 -0
  290. package/dist/kanagawa-lotus-CAjM2aBD.mjs +6 -0
  291. package/dist/kanagawa-lotus-CAjM2aBD.mjs.map +1 -0
  292. package/dist/kanagawa-wave-gUF-XydY.mjs +6 -0
  293. package/dist/kanagawa-wave-gUF-XydY.mjs.map +1 -0
  294. package/dist/kdl-DakeRkny.mjs +5 -0
  295. package/dist/kdl-DakeRkny.mjs.map +1 -0
  296. package/dist/kotlin-Cy2z7uIJ.mjs +5 -0
  297. package/dist/kotlin-Cy2z7uIJ.mjs.map +1 -0
  298. package/dist/kusto-8vFexomq.mjs +5 -0
  299. package/dist/kusto-8vFexomq.mjs.map +1 -0
  300. package/dist/laserwave-afq0Xxwk.mjs +6 -0
  301. package/dist/laserwave-afq0Xxwk.mjs.map +1 -0
  302. package/dist/latex-D_F2h8-H.mjs +8 -0
  303. package/dist/latex-D_F2h8-H.mjs.map +1 -0
  304. package/dist/lean-IHm98qhW.mjs +5 -0
  305. package/dist/lean-IHm98qhW.mjs.map +1 -0
  306. package/dist/less-D6RfQ6-S.mjs +5 -0
  307. package/dist/less-D6RfQ6-S.mjs.map +1 -0
  308. package/dist/light-plus-Dwa6Dmsm.mjs +6 -0
  309. package/dist/light-plus-Dwa6Dmsm.mjs.map +1 -0
  310. package/dist/liquid-DK7BdQ-d.mjs +17 -0
  311. package/dist/liquid-DK7BdQ-d.mjs.map +1 -0
  312. package/dist/llvm-CbsqsAF1.mjs +5 -0
  313. package/dist/llvm-CbsqsAF1.mjs.map +1 -0
  314. package/dist/log-CutLVNLV.mjs +5 -0
  315. package/dist/log-CutLVNLV.mjs.map +1 -0
  316. package/dist/logo-DNTC5lxi.mjs +5 -0
  317. package/dist/logo-DNTC5lxi.mjs.map +1 -0
  318. package/dist/lua-NCVDi2Y_.mjs +10 -0
  319. package/dist/lua-NCVDi2Y_.mjs.map +1 -0
  320. package/dist/luau-Z-b9t2YR.mjs +5 -0
  321. package/dist/luau-Z-b9t2YR.mjs.map +1 -0
  322. package/dist/make-D7o-TjTO.mjs +5 -0
  323. package/dist/make-D7o-TjTO.mjs.map +1 -0
  324. package/dist/markdown-CEvLuIE_.mjs +5 -0
  325. package/dist/markdown-CEvLuIE_.mjs.map +1 -0
  326. package/dist/markdown-config-BGDiDMhB.d.mts +2094 -0
  327. package/dist/markdown-config-BGDiDMhB.d.mts.map +1 -0
  328. package/dist/marko-DyPWMVoi.mjs +17 -0
  329. package/dist/marko-DyPWMVoi.mjs.map +1 -0
  330. package/dist/material-theme-BMSwLkhz.mjs +6 -0
  331. package/dist/material-theme-BMSwLkhz.mjs.map +1 -0
  332. package/dist/material-theme-darker-DREhSOvw.mjs +6 -0
  333. package/dist/material-theme-darker-DREhSOvw.mjs.map +1 -0
  334. package/dist/material-theme-lighter-egkNOF68.mjs +6 -0
  335. package/dist/material-theme-lighter-egkNOF68.mjs.map +1 -0
  336. package/dist/material-theme-ocean-CNqBAXQm.mjs +6 -0
  337. package/dist/material-theme-ocean-CNqBAXQm.mjs.map +1 -0
  338. package/dist/material-theme-palenight-DtcONgpr.mjs +6 -0
  339. package/dist/material-theme-palenight-DtcONgpr.mjs.map +1 -0
  340. package/dist/matlab-DHZHeFXY.mjs +5 -0
  341. package/dist/matlab-DHZHeFXY.mjs.map +1 -0
  342. package/dist/mdc-MKPEEsGA.mjs +15 -0
  343. package/dist/mdc-MKPEEsGA.mjs.map +1 -0
  344. package/dist/mdx-ClLOyMcG.mjs +5 -0
  345. package/dist/mdx-ClLOyMcG.mjs.map +1 -0
  346. package/dist/mermaid-CfX58h2h.mjs +5 -0
  347. package/dist/mermaid-CfX58h2h.mjs.map +1 -0
  348. package/dist/min-dark-CvIB8xOx.mjs +6 -0
  349. package/dist/min-dark-CvIB8xOx.mjs.map +1 -0
  350. package/dist/min-light-DnoFQoeu.mjs +6 -0
  351. package/dist/min-light-DnoFQoeu.mjs.map +1 -0
  352. package/dist/mipsasm-BPlrYcYb.mjs +5 -0
  353. package/dist/mipsasm-BPlrYcYb.mjs.map +1 -0
  354. package/dist/mojo-C5Qzk_lA.mjs +5 -0
  355. package/dist/mojo-C5Qzk_lA.mjs.map +1 -0
  356. package/dist/monokai-CmoRmG4x.mjs +6 -0
  357. package/dist/monokai-CmoRmG4x.mjs.map +1 -0
  358. package/dist/moonbit-BzaO7bLo.mjs +5 -0
  359. package/dist/moonbit-BzaO7bLo.mjs.map +1 -0
  360. package/dist/move-CAZmkwHx.mjs +5 -0
  361. package/dist/move-CAZmkwHx.mjs.map +1 -0
  362. package/dist/narrat-DN2gLj7A.mjs +5 -0
  363. package/dist/narrat-DN2gLj7A.mjs.map +1 -0
  364. package/dist/nextflow-DhVPPjdW.mjs +8 -0
  365. package/dist/nextflow-DhVPPjdW.mjs.map +1 -0
  366. package/dist/nextflow-groovy-DJq82mRo.mjs +5 -0
  367. package/dist/nextflow-groovy-DJq82mRo.mjs.map +1 -0
  368. package/dist/nginx-CU-DGOv1.mjs +8 -0
  369. package/dist/nginx-CU-DGOv1.mjs.map +1 -0
  370. package/dist/night-owl-Cs13ScSs.mjs +6 -0
  371. package/dist/night-owl-Cs13ScSs.mjs.map +1 -0
  372. package/dist/night-owl-light--HbEFF7Y.mjs +6 -0
  373. package/dist/night-owl-light--HbEFF7Y.mjs.map +1 -0
  374. package/dist/nim-3UbGj8cc.mjs +23 -0
  375. package/dist/nim-3UbGj8cc.mjs.map +1 -0
  376. package/dist/nix-CjXcUl9k.mjs +9 -0
  377. package/dist/nix-CjXcUl9k.mjs.map +1 -0
  378. package/dist/nord-C9GqXk2p.mjs +6 -0
  379. package/dist/nord-C9GqXk2p.mjs.map +1 -0
  380. package/dist/nushell-C4iFdrTc.mjs +5 -0
  381. package/dist/nushell-C4iFdrTc.mjs.map +1 -0
  382. package/dist/objective-c-CXuDGuMm.mjs +5 -0
  383. package/dist/objective-c-CXuDGuMm.mjs.map +1 -0
  384. package/dist/objective-cpp-V9yvCIRm.mjs +5 -0
  385. package/dist/objective-cpp-V9yvCIRm.mjs.map +1 -0
  386. package/dist/ocaml-D9fCj6sT.mjs +5 -0
  387. package/dist/ocaml-D9fCj6sT.mjs.map +1 -0
  388. package/dist/odin-CAKGLqrj.mjs +5 -0
  389. package/dist/odin-CAKGLqrj.mjs.map +1 -0
  390. package/dist/one-dark-pro-DW7BmY6Q.mjs +6 -0
  391. package/dist/one-dark-pro-DW7BmY6Q.mjs.map +1 -0
  392. package/dist/one-light-DCu0Wv9N.mjs +6 -0
  393. package/dist/one-light-DCu0Wv9N.mjs.map +1 -0
  394. package/dist/openscad-BdLZBBab.mjs +5 -0
  395. package/dist/openscad-BdLZBBab.mjs.map +1 -0
  396. package/dist/pascal-nsk9MKFb.mjs +5 -0
  397. package/dist/pascal-nsk9MKFb.mjs.map +1 -0
  398. package/dist/perl-DI9oLKmv.mjs +19 -0
  399. package/dist/perl-DI9oLKmv.mjs.map +1 -0
  400. package/dist/php-DJjzFdsM.mjs +21 -0
  401. package/dist/php-DJjzFdsM.mjs.map +1 -0
  402. package/dist/pkl-BVtC2QFe.mjs +5 -0
  403. package/dist/pkl-BVtC2QFe.mjs.map +1 -0
  404. package/dist/plastic-qUgYNoeW.mjs +6 -0
  405. package/dist/plastic-qUgYNoeW.mjs.map +1 -0
  406. package/dist/plsql-BwM0DOLE.mjs +5 -0
  407. package/dist/plsql-BwM0DOLE.mjs.map +1 -0
  408. package/dist/po-D39EqRsl.mjs +5 -0
  409. package/dist/po-D39EqRsl.mjs.map +1 -0
  410. package/dist/poimandres-DPRzGPvx.mjs +6 -0
  411. package/dist/poimandres-DPRzGPvx.mjs.map +1 -0
  412. package/dist/polar-DCBzWT3J.mjs +5 -0
  413. package/dist/polar-DCBzWT3J.mjs.map +1 -0
  414. package/dist/postcss-L6y-bzEw.mjs +5 -0
  415. package/dist/postcss-L6y-bzEw.mjs.map +1 -0
  416. package/dist/powerquery-BHkUTyux.mjs +5 -0
  417. package/dist/powerquery-BHkUTyux.mjs.map +1 -0
  418. package/dist/powershell-C80dlfD8.mjs +5 -0
  419. package/dist/powershell-C80dlfD8.mjs.map +1 -0
  420. package/dist/preset.d.mts +15 -0
  421. package/dist/preset.d.mts.map +1 -0
  422. package/dist/preset.mjs +19 -0
  423. package/dist/preset.mjs.map +1 -0
  424. package/dist/prisma-D407qtUw.mjs +5 -0
  425. package/dist/prisma-D407qtUw.mjs.map +1 -0
  426. package/dist/prolog-CSrn8-6K.mjs +5 -0
  427. package/dist/prolog-CSrn8-6K.mjs.map +1 -0
  428. package/dist/proto-ClvDy0H0.mjs +5 -0
  429. package/dist/proto-ClvDy0H0.mjs.map +1 -0
  430. package/dist/pug-Cyyu0V2y.mjs +15 -0
  431. package/dist/pug-Cyyu0V2y.mjs.map +1 -0
  432. package/dist/puppet-D5ZQtSNi.mjs +5 -0
  433. package/dist/puppet-D5ZQtSNi.mjs.map +1 -0
  434. package/dist/purescript-30PxZSjT.mjs +5 -0
  435. package/dist/purescript-30PxZSjT.mjs.map +1 -0
  436. package/dist/python-CpiNX4Ip.mjs +5 -0
  437. package/dist/python-CpiNX4Ip.mjs.map +1 -0
  438. package/dist/qml-PuKhTmY-.mjs +8 -0
  439. package/dist/qml-PuKhTmY-.mjs.map +1 -0
  440. package/dist/qmldir-BTwcIF6g.mjs +5 -0
  441. package/dist/qmldir-BTwcIF6g.mjs.map +1 -0
  442. package/dist/qss-DcpQyHuk.mjs +5 -0
  443. package/dist/qss-DcpQyHuk.mjs.map +1 -0
  444. package/dist/r-DcW8EcF5.mjs +8 -0
  445. package/dist/r-DcW8EcF5.mjs.map +1 -0
  446. package/dist/racket-D-BwrG5z.mjs +5 -0
  447. package/dist/racket-D-BwrG5z.mjs.map +1 -0
  448. package/dist/raku-CM1N1WTp.mjs +5 -0
  449. package/dist/raku-CM1N1WTp.mjs.map +1 -0
  450. package/dist/razor-C912Hs6M.mjs +13 -0
  451. package/dist/razor-C912Hs6M.mjs.map +1 -0
  452. package/dist/red-DhGHw_i_.mjs +6 -0
  453. package/dist/red-DhGHw_i_.mjs.map +1 -0
  454. package/dist/reg-MlBfIgTN.mjs +5 -0
  455. package/dist/reg-MlBfIgTN.mjs.map +1 -0
  456. package/dist/regexp-CEVpExph.mjs +8 -0
  457. package/dist/regexp-CEVpExph.mjs.map +1 -0
  458. package/dist/rel-Dg_W2E_N.mjs +5 -0
  459. package/dist/rel-Dg_W2E_N.mjs.map +1 -0
  460. package/dist/riscv-BoH7mqNI.mjs +5 -0
  461. package/dist/riscv-BoH7mqNI.mjs.map +1 -0
  462. package/dist/ron-DbOWX1T7.mjs +5 -0
  463. package/dist/ron-DbOWX1T7.mjs.map +1 -0
  464. package/dist/rose-pine-78rugKGO.mjs +6 -0
  465. package/dist/rose-pine-78rugKGO.mjs.map +1 -0
  466. package/dist/rose-pine-dawn-C_mYSEtu.mjs +6 -0
  467. package/dist/rose-pine-dawn-C_mYSEtu.mjs.map +1 -0
  468. package/dist/rose-pine-moon-Cz7-JQvG.mjs +6 -0
  469. package/dist/rose-pine-moon-Cz7-JQvG.mjs.map +1 -0
  470. package/dist/rosmsg-Ca1BpyBh.mjs +5 -0
  471. package/dist/rosmsg-Ca1BpyBh.mjs.map +1 -0
  472. package/dist/rst-DbIJV67W.mjs +25 -0
  473. package/dist/rst-DbIJV67W.mjs.map +1 -0
  474. package/dist/ruby-D-Lps7Dp.mjs +33 -0
  475. package/dist/ruby-D-Lps7Dp.mjs.map +1 -0
  476. package/dist/rust-Dk6HN1uF.mjs +5 -0
  477. package/dist/rust-Dk6HN1uF.mjs.map +1 -0
  478. package/dist/sas-QckC_qvJ.mjs +8 -0
  479. package/dist/sas-QckC_qvJ.mjs.map +1 -0
  480. package/dist/sass-BWOQVuIy.mjs +5 -0
  481. package/dist/sass-BWOQVuIy.mjs.map +1 -0
  482. package/dist/scala-BoffQEnY.mjs +5 -0
  483. package/dist/scala-BoffQEnY.mjs.map +1 -0
  484. package/dist/schemas/index.d.mts +1615 -0
  485. package/dist/schemas/index.d.mts.map +1 -0
  486. package/dist/schemas/index.mjs +263 -0
  487. package/dist/schemas/index.mjs.map +1 -0
  488. package/dist/schemas-By1qE0sQ.mjs +3881 -0
  489. package/dist/schemas-By1qE0sQ.mjs.map +1 -0
  490. package/dist/scheme-C2D8wvUe.mjs +5 -0
  491. package/dist/scheme-C2D8wvUe.mjs.map +1 -0
  492. package/dist/scss-D1vWunvk.mjs +10 -0
  493. package/dist/scss-D1vWunvk.mjs.map +1 -0
  494. package/dist/sdbl-DkThjfrg.mjs +5 -0
  495. package/dist/sdbl-DkThjfrg.mjs.map +1 -0
  496. package/dist/shaderlab-D0NLokaw.mjs +8 -0
  497. package/dist/shaderlab-D0NLokaw.mjs.map +1 -0
  498. package/dist/shellscript-BHpEag8P.mjs +8 -0
  499. package/dist/shellscript-BHpEag8P.mjs.map +1 -0
  500. package/dist/shellsession-CSdmCfg4.mjs +8 -0
  501. package/dist/shellsession-CSdmCfg4.mjs.map +1 -0
  502. package/dist/site-D8l4ghX0.mjs +71441 -0
  503. package/dist/site-D8l4ghX0.mjs.map +1 -0
  504. package/dist/slack-dark-Cj8kL6BM.mjs +6 -0
  505. package/dist/slack-dark-Cj8kL6BM.mjs.map +1 -0
  506. package/dist/slack-ochin-B4Rna-gD.mjs +6 -0
  507. package/dist/slack-ochin-B4Rna-gD.mjs.map +1 -0
  508. package/dist/smalltalk-ZNQAnLNC.mjs +5 -0
  509. package/dist/smalltalk-ZNQAnLNC.mjs.map +1 -0
  510. package/dist/snazzy-light-CF7MTUt6.mjs +6 -0
  511. package/dist/snazzy-light-CF7MTUt6.mjs.map +1 -0
  512. package/dist/solarized-dark-DBFHIE1d.mjs +6 -0
  513. package/dist/solarized-dark-DBFHIE1d.mjs.map +1 -0
  514. package/dist/solarized-light-Del516-O.mjs +6 -0
  515. package/dist/solarized-light-Del516-O.mjs.map +1 -0
  516. package/dist/solidity-Ddf3MOD2.mjs +5 -0
  517. package/dist/solidity-Ddf3MOD2.mjs.map +1 -0
  518. package/dist/soy-PW0jpJKW.mjs +8 -0
  519. package/dist/soy-PW0jpJKW.mjs.map +1 -0
  520. package/dist/sparql-rX-q1CB9.mjs +8 -0
  521. package/dist/sparql-rX-q1CB9.mjs.map +1 -0
  522. package/dist/splunk-DcREbx5k.mjs +5 -0
  523. package/dist/splunk-DcREbx5k.mjs.map +1 -0
  524. package/dist/sql-Cq_hpY16.mjs +8 -0
  525. package/dist/sql-Cq_hpY16.mjs.map +1 -0
  526. package/dist/ssh-config-DIv0Kb8E.mjs +5 -0
  527. package/dist/ssh-config-DIv0Kb8E.mjs.map +1 -0
  528. package/dist/stata-rEmfzZT7.mjs +8 -0
  529. package/dist/stata-rEmfzZT7.mjs.map +1 -0
  530. package/dist/stylus-DHanz1Kd.mjs +5 -0
  531. package/dist/stylus-DHanz1Kd.mjs.map +1 -0
  532. package/dist/surrealql-BdfgI90j.mjs +8 -0
  533. package/dist/surrealql-BdfgI90j.mjs.map +1 -0
  534. package/dist/svelte-DFFWgqCr.mjs +17 -0
  535. package/dist/svelte-DFFWgqCr.mjs.map +1 -0
  536. package/dist/swift-Ci7klDIa.mjs +5 -0
  537. package/dist/swift-Ci7klDIa.mjs.map +1 -0
  538. package/dist/synthwave-84-T5fF9-Op.mjs +6 -0
  539. package/dist/synthwave-84-T5fF9-Op.mjs.map +1 -0
  540. package/dist/system-verilog-tLSd9PYh.mjs +5 -0
  541. package/dist/system-verilog-tLSd9PYh.mjs.map +1 -0
  542. package/dist/systemd-C_LIvN4y.mjs +5 -0
  543. package/dist/systemd-C_LIvN4y.mjs.map +1 -0
  544. package/dist/talonscript-2cIfb9F4.mjs +5 -0
  545. package/dist/talonscript-2cIfb9F4.mjs.map +1 -0
  546. package/dist/tasl-iwLzpKVu.mjs +5 -0
  547. package/dist/tasl-iwLzpKVu.mjs.map +1 -0
  548. package/dist/tcl-DR2zhegR.mjs +5 -0
  549. package/dist/tcl-DR2zhegR.mjs.map +1 -0
  550. package/dist/templ-BDCp727o.mjs +15 -0
  551. package/dist/templ-BDCp727o.mjs.map +1 -0
  552. package/dist/terraform-BH4YC6Zk.mjs +5 -0
  553. package/dist/terraform-BH4YC6Zk.mjs.map +1 -0
  554. package/dist/tex-DGRDr7pd.mjs +8 -0
  555. package/dist/tex-DGRDr7pd.mjs.map +1 -0
  556. package/dist/tokyo-night-YpyXNs_N.mjs +6 -0
  557. package/dist/tokyo-night-YpyXNs_N.mjs.map +1 -0
  558. package/dist/toml-CECsyL8x.mjs +5 -0
  559. package/dist/toml-CECsyL8x.mjs.map +1 -0
  560. package/dist/ts-tags-BsG9I5cd.mjs +61 -0
  561. package/dist/ts-tags-BsG9I5cd.mjs.map +1 -0
  562. package/dist/tsv-BwwAUdIn.mjs +5 -0
  563. package/dist/tsv-BwwAUdIn.mjs.map +1 -0
  564. package/dist/tsx-qx39NaGS.mjs +8 -0
  565. package/dist/tsx-qx39NaGS.mjs.map +1 -0
  566. package/dist/turtle-D8n7HFvE.mjs +5 -0
  567. package/dist/turtle-D8n7HFvE.mjs.map +1 -0
  568. package/dist/twig-DsMUiWk8.mjs +21 -0
  569. package/dist/twig-DsMUiWk8.mjs.map +1 -0
  570. package/dist/typescript-BZXFn-rd.mjs +8 -0
  571. package/dist/typescript-BZXFn-rd.mjs.map +1 -0
  572. package/dist/typespec-ClgDzShT.mjs +5 -0
  573. package/dist/typespec-ClgDzShT.mjs.map +1 -0
  574. package/dist/typst-CMN2lhh3.mjs +5 -0
  575. package/dist/typst-CMN2lhh3.mjs.map +1 -0
  576. package/dist/v-CA1cYsER.mjs +5 -0
  577. package/dist/v-CA1cYsER.mjs.map +1 -0
  578. package/dist/vala-DuBY1WKl.mjs +5 -0
  579. package/dist/vala-DuBY1WKl.mjs.map +1 -0
  580. package/dist/vb-XQBHWfW8.mjs +5 -0
  581. package/dist/vb-XQBHWfW8.mjs.map +1 -0
  582. package/dist/verilog-CWqhvrSz.mjs +5 -0
  583. package/dist/verilog-CWqhvrSz.mjs.map +1 -0
  584. package/dist/vesper-CigfTEKg.mjs +6 -0
  585. package/dist/vesper-CigfTEKg.mjs.map +1 -0
  586. package/dist/vhdl-C67Bhzjr.mjs +5 -0
  587. package/dist/vhdl-C67Bhzjr.mjs.map +1 -0
  588. package/dist/viml-C26cD_wa.mjs +5 -0
  589. package/dist/viml-C26cD_wa.mjs.map +1 -0
  590. package/dist/vitesse-black-DYCj3nJd.mjs +6 -0
  591. package/dist/vitesse-black-DYCj3nJd.mjs.map +1 -0
  592. package/dist/vitesse-dark-BMGIMsRz.mjs +6 -0
  593. package/dist/vitesse-dark-BMGIMsRz.mjs.map +1 -0
  594. package/dist/vitesse-light-SKJOp9ZR.mjs +6 -0
  595. package/dist/vitesse-light-SKJOp9ZR.mjs.map +1 -0
  596. package/dist/vue-bb5YUHg6.mjs +33 -0
  597. package/dist/vue-bb5YUHg6.mjs.map +1 -0
  598. package/dist/vue-html-ypB-H6rb.mjs +8 -0
  599. package/dist/vue-html-ypB-H6rb.mjs.map +1 -0
  600. package/dist/vue-vine-Cl_j-Bb5.mjs +21 -0
  601. package/dist/vue-vine-Cl_j-Bb5.mjs.map +1 -0
  602. package/dist/vyper-gBkdcGC5.mjs +5 -0
  603. package/dist/vyper-gBkdcGC5.mjs.map +1 -0
  604. package/dist/wasm-B1KmdQo5.mjs +9 -0
  605. package/dist/wasm-B1KmdQo5.mjs.map +1 -0
  606. package/dist/wasm-D4mFcPzE.mjs +5 -0
  607. package/dist/wasm-D4mFcPzE.mjs.map +1 -0
  608. package/dist/wenyan-D1TI9OZw.mjs +5 -0
  609. package/dist/wenyan-D1TI9OZw.mjs.map +1 -0
  610. package/dist/wgsl-DzVADIua.mjs +5 -0
  611. package/dist/wgsl-DzVADIua.mjs.map +1 -0
  612. package/dist/wikitext-DPnM1XoL.mjs +5 -0
  613. package/dist/wikitext-DPnM1XoL.mjs.map +1 -0
  614. package/dist/wit-Bewokpy8.mjs +5 -0
  615. package/dist/wit-Bewokpy8.mjs.map +1 -0
  616. package/dist/wolfram-DVQXO29Z.mjs +5 -0
  617. package/dist/wolfram-DVQXO29Z.mjs.map +1 -0
  618. package/dist/xml-TYYGqgP3.mjs +10 -0
  619. package/dist/xml-TYYGqgP3.mjs.map +1 -0
  620. package/dist/xsl-BOev1i40.mjs +8 -0
  621. package/dist/xsl-BOev1i40.mjs.map +1 -0
  622. package/dist/yaml-Xue9e-YO.mjs +8 -0
  623. package/dist/yaml-Xue9e-YO.mjs.map +1 -0
  624. package/dist/zenscript-CwrU69w6.mjs +5 -0
  625. package/dist/zenscript-CwrU69w6.mjs.map +1 -0
  626. package/dist/zig-NT9tMYQ2.mjs +5 -0
  627. package/dist/zig-NT9tMYQ2.mjs.map +1 -0
  628. package/package.json +78 -0
  629. package/theme/components/DocFooter.tsx +59 -0
  630. package/theme/components/DocHeader.tsx +72 -0
  631. package/theme/components/DocSidebar.tsx +90 -0
  632. package/theme/components/DocTOC.tsx +25 -0
  633. package/theme/components/Html.tsx +107 -0
  634. package/theme/layouts/DocHome.tsx +212 -0
  635. package/theme/layouts/DocNotFound.tsx +55 -0
  636. package/theme/layouts/DocPage.tsx +74 -0
  637. package/theme/runtime/main.ts +16 -0
  638. package/theme/runtime/search.ts +65 -0
  639. package/theme/runtime/sidebar.ts +135 -0
  640. package/theme/runtime/toc-highlight.ts +73 -0
  641. package/theme/styles/code/inline.css +26 -0
  642. package/theme/styles/components/not-found.css +85 -0
  643. package/theme/styles/components/search.css +300 -0
  644. package/theme/styles/content/alerts.css +87 -0
  645. package/theme/styles/content/prose.css +225 -0
  646. package/theme/styles/content/toc.css +90 -0
  647. package/theme/styles/foundations/fonts.css +37 -0
  648. package/theme/styles/foundations/reset.css +49 -0
  649. package/theme/styles/foundations/tokens.css +66 -0
  650. package/theme/styles/layout/footer.css +119 -0
  651. package/theme/styles/layout/grid.css +98 -0
  652. package/theme/styles/layout/header.css +153 -0
  653. package/theme/styles/layout/home.css +449 -0
  654. package/theme/styles/layout/sidebar.css +239 -0
  655. package/theme/styles/main.css +19 -0
@@ -0,0 +1,107 @@
1
+ import { Fragment, h } from '@pagesmith/core/jsx-runtime'
2
+
3
+ type Props = {
4
+ title: string
5
+ description?: string
6
+ url?: string
7
+ site: {
8
+ origin: string
9
+ basePath?: string
10
+ name: string
11
+ language?: string
12
+ seo?: { locale?: string; twitterHandle?: string; defaultOgType?: string }
13
+ theme?: { lightColor?: string; darkColor?: string }
14
+ analytics?: { googleAnalytics?: string }
15
+ footerLinks?: Array<{ label: string; path: string }>
16
+ search?: { enabled?: boolean; showImages?: boolean; showSubResults?: boolean }
17
+ }
18
+ children?: any
19
+ }
20
+
21
+ export function Html({ title, description, url, site, children }: Props) {
22
+ const origin = site.origin.replace(/\/$/, '')
23
+ const base = site.basePath || ''
24
+ const canonicalUrl = url ? `${origin}${url}` : undefined
25
+ const locale = site.seo?.locale || 'en_US'
26
+ const lightColor = site.theme?.lightColor || '#f8fafc'
27
+ const darkColor = site.theme?.darkColor || '#020617'
28
+ const gaId = site.analytics?.googleAnalytics
29
+ const searchEnabled = site.search?.enabled !== false
30
+
31
+ return (
32
+ <html lang={site.language || 'en'} class="no-js">
33
+ <head>
34
+ <meta charset="utf-8" />
35
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
36
+ <meta name="color-scheme" content="light dark" />
37
+ <title>{title}</title>
38
+ {description ? <meta name="description" content={description} /> : null}
39
+
40
+ {/* Canonical URL */}
41
+ {canonicalUrl ? <link rel="canonical" href={canonicalUrl} /> : null}
42
+
43
+ {/* OpenGraph */}
44
+ <meta property="og:type" content="website" />
45
+ {canonicalUrl ? <meta property="og:url" content={canonicalUrl} /> : null}
46
+ <meta property="og:title" content={title} />
47
+ {description ? <meta property="og:description" content={description} /> : null}
48
+ <meta property="og:locale" content={locale} />
49
+ <meta property="og:site_name" content={site.name} />
50
+
51
+ {/* Theme color */}
52
+ <meta name="theme-color" content={lightColor} media="(prefers-color-scheme: light)" />
53
+ <meta name="theme-color" content={darkColor} media="(prefers-color-scheme: dark)" />
54
+
55
+ {/* CSS */}
56
+ <link rel="stylesheet" href={`${base}/assets/style.css`} />
57
+ {searchEnabled ? <link rel="stylesheet" href={`${base}/pagefind/pagefind-ui.css`} /> : null}
58
+
59
+ {/* Remove no-js class */}
60
+ <script innerHTML="document.documentElement.classList.remove('no-js')" />
61
+ {searchEnabled ? <script src={`${base}/pagefind/pagefind-ui.js`} defer /> : null}
62
+ {searchEnabled ? (
63
+ <noscript>
64
+ <style innerHTML=".doc-search-trigger{display:none!important}" />
65
+ </noscript>
66
+ ) : null}
67
+
68
+ {/* Google Analytics */}
69
+ {gaId ? (
70
+ <Fragment>
71
+ <script async src={`https://www.googletagmanager.com/gtag/js?id=${gaId}`} />
72
+ <script
73
+ innerHTML={`window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','${gaId}');`}
74
+ />
75
+ </Fragment>
76
+ ) : null}
77
+ </head>
78
+ <body>
79
+ {children}
80
+ {searchEnabled ? (
81
+ <dialog
82
+ class="doc-search-modal"
83
+ id="search-modal"
84
+ aria-label="Search documentation"
85
+ data-search-show-images={site.search?.showImages ? 'true' : 'false'}
86
+ data-search-show-sub-results={site.search?.showSubResults !== false ? 'true' : 'false'}
87
+ >
88
+ <div class="doc-search-modal-inner">
89
+ <div class="doc-search-modal-header">
90
+ <span class="doc-search-modal-title">Search</span>
91
+ <button
92
+ type="button"
93
+ class="doc-search-modal-close"
94
+ aria-label="Close search"
95
+ data-search-close=""
96
+ innerHTML='<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="m5 5 10 10M15 5 5 15"/></svg>'
97
+ />
98
+ </div>
99
+ <div class="doc-search-modal-body" data-pagefind-search="" />
100
+ </div>
101
+ </dialog>
102
+ ) : null}
103
+ <script src={`${base}/assets/main.js`} defer />
104
+ </body>
105
+ </html>
106
+ )
107
+ }
@@ -0,0 +1,212 @@
1
+ /**
2
+ * DocHome layout.
3
+ *
4
+ * Documentation landing page with hero, install snippet, features grid,
5
+ * packages grid, code example, and optional markdown content.
6
+ *
7
+ * All sections are optional — omit the frontmatter key and the section
8
+ * is not rendered. Supports both single-package and monorepo projects.
9
+ */
10
+
11
+ import { h } from '@pagesmith/core/jsx-runtime'
12
+ import { DocFooter } from '../components/DocFooter'
13
+ import { DocHeader } from '../components/DocHeader'
14
+ import { DocSidebar } from '../components/DocSidebar'
15
+ import { Html } from '../components/Html'
16
+
17
+ type Props = {
18
+ content: string
19
+ frontmatter: Record<string, any>
20
+ headings: Array<{ depth: number; text: string; slug: string }>
21
+ slug: string
22
+ site: any
23
+ [key: string]: any
24
+ }
25
+
26
+ export default function DocHome(props: Props) {
27
+ const { content, frontmatter, slug, site } = props
28
+
29
+ const hero =
30
+ frontmatter.hero ??
31
+ (frontmatter.title || frontmatter.tagline || frontmatter.actions
32
+ ? {
33
+ name: frontmatter.title || site.name,
34
+ text: frontmatter.tagline || frontmatter.title,
35
+ tagline: frontmatter.description,
36
+ badge: frontmatter.badge,
37
+ actions: frontmatter.actions,
38
+ }
39
+ : undefined)
40
+ const features = frontmatter.features
41
+ const install = frontmatter.install
42
+ const packages = frontmatter.packages
43
+ const codeExample = frontmatter.codeExample
44
+
45
+ // Build sidebar sections from navItems for mobile hamburger menu
46
+ const navItems = site.navItems as Array<{ path: string; label: string }> | undefined
47
+ const sidebarSections =
48
+ navItems && navItems.length > 0
49
+ ? [
50
+ {
51
+ title: 'Navigation',
52
+ items: navItems.map((item: { path: string; label: string }) => ({
53
+ title: item.label,
54
+ slug: item.path,
55
+ path: item.path,
56
+ })),
57
+ },
58
+ ]
59
+ : undefined
60
+
61
+ return (
62
+ <Html
63
+ title={hero?.name || frontmatter.title || site.title}
64
+ description={hero?.tagline || frontmatter.description || site.description}
65
+ url="/"
66
+ site={site}
67
+ >
68
+ <DocHeader
69
+ siteName={site.name}
70
+ basePath={site.basePath}
71
+ homeLink={site.homeLink}
72
+ navItems={site.navItems}
73
+ slug={slug}
74
+ searchEnabled={site.search?.enabled}
75
+ />
76
+ <main class="doc-home" data-pagefind-body="">
77
+ {/* Mobile sidebar (visible on small screens via hamburger toggle) */}
78
+ <DocSidebar sections={sidebarSections} currentSlug={slug} />
79
+
80
+ {/* Hero section */}
81
+ {hero ? (
82
+ <section class="doc-home-section doc-hero">
83
+ {hero.badge ? (
84
+ <div class="doc-hero-badge">
85
+ <span class="doc-hero-badge-dot" />
86
+ {hero.badge}
87
+ </div>
88
+ ) : null}
89
+ {hero.name ? <p class="doc-hero-name">{hero.name}</p> : null}
90
+ {hero.text ? <h1 class="doc-hero-text">{hero.text}</h1> : null}
91
+ {hero.tagline ? <p class="doc-hero-tagline">{hero.tagline}</p> : null}
92
+ {hero.actions && hero.actions.length > 0 ? (
93
+ <div class="doc-hero-actions">
94
+ {hero.actions.map((action: any) => (
95
+ <a
96
+ href={action.link}
97
+ class={`doc-hero-action doc-hero-action-${action.theme || 'brand'}`}
98
+ >
99
+ {action.icon ? (
100
+ <span class="doc-hero-action-icon" innerHTML={action.icon} />
101
+ ) : null}
102
+ {action.text}
103
+ </a>
104
+ ))}
105
+ </div>
106
+ ) : null}
107
+ </section>
108
+ ) : null}
109
+
110
+ {/* Install snippet */}
111
+ {install ? (
112
+ <div class="doc-home-section doc-home-install">
113
+ <div class="doc-install-bar">
114
+ <div class="doc-install-header">
115
+ <span class="doc-install-dot doc-install-dot-r" />
116
+ <span class="doc-install-dot doc-install-dot-y" />
117
+ <span class="doc-install-dot doc-install-dot-g" />
118
+ <span class="doc-install-title">Terminal</span>
119
+ <span style="width:36px" />
120
+ </div>
121
+ <div class="doc-install-body">
122
+ <code>
123
+ <span class="doc-install-prompt">$ </span>
124
+ {install}
125
+ </code>
126
+ <button
127
+ type="button"
128
+ class="doc-install-copy"
129
+ data-copy-text={install}
130
+ onclick={`navigator.clipboard.writeText(this.dataset.copyText);this.textContent='Copied!';setTimeout(()=>this.textContent='Copy',1500)`}
131
+ >
132
+ Copy
133
+ </button>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ ) : null}
138
+
139
+ {/* Features grid */}
140
+ {features && features.length > 0 ? (
141
+ <section class="doc-home-section">
142
+ <p class="doc-home-section-label">Features</p>
143
+ <div class="doc-features">
144
+ {features.map((feature: any) => (
145
+ <div class="doc-feature-card">
146
+ {feature.icon ? <span class="doc-feature-icon" innerHTML={feature.icon} /> : null}
147
+ <h3 class="doc-feature-title">{feature.title}</h3>
148
+ <p class="doc-feature-details">{feature.details}</p>
149
+ </div>
150
+ ))}
151
+ </div>
152
+ </section>
153
+ ) : null}
154
+
155
+ {/* Packages grid (monorepo) */}
156
+ {packages && packages.length > 0 ? (
157
+ <section class="doc-home-section">
158
+ <p class="doc-home-section-label">Packages</p>
159
+ <div class="doc-packages">
160
+ {packages.map((pkg: any) => {
161
+ const Tag = pkg.href ? 'a' : 'div'
162
+ return (
163
+ <Tag class="doc-package-card" href={pkg.href || undefined}>
164
+ <div class="doc-package-name">{pkg.name}</div>
165
+ <p class="doc-package-desc">{pkg.description}</p>
166
+ {pkg.version || pkg.tag ? (
167
+ <div class="doc-package-meta">
168
+ {pkg.version ? (
169
+ <span class="doc-package-version">{pkg.version}</span>
170
+ ) : null}
171
+ {pkg.tag ? <span class="doc-package-tag">{pkg.tag}</span> : null}
172
+ </div>
173
+ ) : null}
174
+ </Tag>
175
+ )
176
+ })}
177
+ </div>
178
+ </section>
179
+ ) : null}
180
+
181
+ {/* Code example */}
182
+ {codeExample ? (
183
+ <section class="doc-home-section">
184
+ <p class="doc-home-section-label">{codeExample.label || 'Quick Start'}</p>
185
+ <div class="doc-home-code">
186
+ <div class="doc-home-code-header">
187
+ <span class="doc-install-dot doc-install-dot-r" />
188
+ <span class="doc-install-dot doc-install-dot-y" />
189
+ <span class="doc-install-dot doc-install-dot-g" />
190
+ <span class="doc-home-code-title">{codeExample.title || ''}</span>
191
+ <span style="width:36px" />
192
+ </div>
193
+ <pre innerHTML={codeExample.code} />
194
+ </div>
195
+ </section>
196
+ ) : null}
197
+
198
+ {/* Content (if any markdown content is provided) */}
199
+ {content ? (
200
+ <section class="doc-home-content">
201
+ <div class="prose" innerHTML={content} />
202
+ </section>
203
+ ) : null}
204
+
205
+ {/* Footer */}
206
+ <div class="doc-home-footer">
207
+ <DocFooter links={site.footerLinks} copyright={site.copyright} />
208
+ </div>
209
+ </main>
210
+ </Html>
211
+ )
212
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * DocNotFound layout.
3
+ *
4
+ * 404 page for documentation sites.
5
+ */
6
+
7
+ import { h } from '@pagesmith/core/jsx-runtime'
8
+ import { DocHeader } from '../components/DocHeader'
9
+ import { Html } from '../components/Html'
10
+
11
+ type Props = {
12
+ content: string
13
+ frontmatter: Record<string, any>
14
+ headings: Array<{ depth: number; text: string; slug: string }>
15
+ slug: string
16
+ site: any
17
+ [key: string]: any
18
+ }
19
+
20
+ export default function DocNotFound(props: Props) {
21
+ const { site, slug } = props
22
+ const homePath = site.homeLink || (site.basePath ? `${site.basePath}/` : '/')
23
+
24
+ return (
25
+ <Html
26
+ title={`Page Not Found — ${site.title}`}
27
+ description="The requested page could not be found."
28
+ url={`${slug}/`}
29
+ site={site}
30
+ >
31
+ <DocHeader
32
+ siteName={site.name}
33
+ basePath={site.basePath}
34
+ homeLink={site.homeLink}
35
+ navItems={site.navItems}
36
+ slug={slug}
37
+ searchEnabled={site.search?.enabled}
38
+ />
39
+ <main class="doc-not-found">
40
+ <div class="doc-not-found-container">
41
+ <p class="doc-not-found-code">404</p>
42
+ <h1 class="doc-not-found-title">Page Not Found</h1>
43
+ <p class="doc-not-found-text">
44
+ The page you are looking for might have been moved or no longer exists.
45
+ </p>
46
+ <div class="doc-not-found-actions">
47
+ <a href={homePath} class="doc-not-found-btn doc-not-found-btn-primary">
48
+ Go Home
49
+ </a>
50
+ </div>
51
+ </div>
52
+ </main>
53
+ </Html>
54
+ )
55
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * DocPage layout.
3
+ *
4
+ * Standard documentation page with 3-column grid:
5
+ * left sidebar (navigation) | content | right TOC
6
+ */
7
+
8
+ import { h } from '@pagesmith/core/jsx-runtime'
9
+ import { DocFooter } from '../components/DocFooter'
10
+ import { DocHeader } from '../components/DocHeader'
11
+ import { DocSidebar } from '../components/DocSidebar'
12
+ import { DocTOC } from '../components/DocTOC'
13
+ import { Html } from '../components/Html'
14
+
15
+ type Props = {
16
+ content: string
17
+ frontmatter: Record<string, any>
18
+ headings: Array<{ depth: number; text: string; slug: string }>
19
+ slug: string
20
+ site: any
21
+ pages?: any[]
22
+ sidebarSections?: any[]
23
+ prev?: { title: string; path: string }
24
+ next?: { title: string; path: string }
25
+ [key: string]: any
26
+ }
27
+
28
+ export default function DocPage(props: Props) {
29
+ const { content, frontmatter, headings, slug, site, next, prev, sidebarSections } = props
30
+
31
+ const pageTitle = frontmatter.title ? `${frontmatter.title} — ${site.title}` : site.title
32
+
33
+ return (
34
+ <Html
35
+ title={pageTitle}
36
+ description={frontmatter.description || site.description}
37
+ url={`${slug}/`}
38
+ site={site}
39
+ >
40
+ <DocHeader
41
+ siteName={site.name}
42
+ basePath={site.basePath}
43
+ homeLink={site.homeLink}
44
+ navItems={site.navItems}
45
+ slug={slug}
46
+ searchEnabled={site.search?.enabled}
47
+ />
48
+ <div class="doc-layout">
49
+ <DocSidebar
50
+ sections={sidebarSections}
51
+ currentSlug={slug}
52
+ collapsible={site.sidebar?.collapsible}
53
+ />
54
+ <main class="doc-main" data-pagefind-body="">
55
+ {/* Mobile TOC — always at top of content area */}
56
+ {headings.length > 0 ? (
57
+ <details class="doc-toc-mobile">
58
+ <summary>On this page</summary>
59
+ <DocTOC headings={headings} />
60
+ </details>
61
+ ) : null}
62
+
63
+ <article>
64
+ <div class="prose" innerHTML={content} />
65
+ </article>
66
+ <DocFooter prev={prev} next={next} links={site.footerLinks} copyright={site.copyright} />
67
+ </main>
68
+ <aside class="doc-aside">
69
+ <DocTOC headings={headings} />
70
+ </aside>
71
+ </div>
72
+ </Html>
73
+ )
74
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Runtime entry point — browser only.
3
+ *
4
+ * All features are progressive enhancements on top of CSS-only behavior.
5
+ * The site works without JS — this adds TOC highlighting,
6
+ * sidebar toggle behavior, and search. Code block interactivity
7
+ * (copy button, etc.) is handled by Expressive Code inline scripts.
8
+ */
9
+
10
+ import { initSearch } from './search'
11
+ import { initSidebar } from './sidebar'
12
+ import { initTocHighlight } from './toc-highlight'
13
+
14
+ initSidebar()
15
+ initTocHighlight()
16
+ initSearch()
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Search modal toggle and keyboard shortcut.
3
+ *
4
+ * Opens a <dialog> containing Pagefind UI. PagefindUI is lazily
5
+ * initialized on first open so the main bundle stays small.
6
+ */
7
+
8
+ declare const PagefindUI: any
9
+
10
+ export function initSearch(): void {
11
+ const trigger = document.querySelector('[data-search-trigger]') as HTMLElement | null
12
+ const modal = document.getElementById('search-modal') as HTMLDialogElement | null
13
+ const closeBtn = document.querySelector('[data-search-close]') as HTMLElement | null
14
+ if (!trigger || !modal) return
15
+
16
+ let initialized = false
17
+
18
+ const showImages = modal.dataset.searchShowImages === 'true'
19
+ const showSubResults = modal.dataset.searchShowSubResults !== 'false'
20
+
21
+ function openSearch() {
22
+ modal!.showModal()
23
+
24
+ if (!initialized && typeof PagefindUI !== 'undefined') {
25
+ const container = modal!.querySelector('[data-pagefind-search]')
26
+ if (container) {
27
+ new PagefindUI({
28
+ element: container,
29
+ showSubResults,
30
+ showImages,
31
+ resetStyles: false,
32
+ })
33
+ initialized = true
34
+ }
35
+ }
36
+
37
+ // Focus the search input after Pagefind renders
38
+ requestAnimationFrame(() => {
39
+ const input = modal!.querySelector<HTMLInputElement>('.pagefind-ui__search-input')
40
+ input?.focus()
41
+ })
42
+ }
43
+
44
+ trigger.addEventListener('click', openSearch)
45
+ closeBtn?.addEventListener('click', () => modal.close())
46
+
47
+ // Ctrl+K / Cmd+K shortcut
48
+ document.addEventListener('keydown', (e) => {
49
+ if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
50
+ e.preventDefault()
51
+ if (modal.open) {
52
+ modal.close()
53
+ } else {
54
+ openSearch()
55
+ }
56
+ }
57
+ })
58
+
59
+ // Close on backdrop click (clicking outside the dialog content)
60
+ modal.addEventListener('click', (e) => {
61
+ if (e.target === modal) {
62
+ modal.close()
63
+ }
64
+ })
65
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Sidebar modal — JS-powered overlay for mobile/tablet.
3
+ *
4
+ * Clones the .doc-sidebar nav content into a slide-in modal panel,
5
+ * and prepends top-level nav links (Guide, Reference, etc.) as a
6
+ * "Navigation" section so mobile users can reach all sections.
7
+ */
8
+
9
+ const closeIcon =
10
+ '<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="m5 5 10 10M15 5 5 15"/></svg>'
11
+
12
+ function buildNavSection(): HTMLElement | null {
13
+ const docNav = document.querySelector('.doc-nav')
14
+ if (!docNav) return null
15
+
16
+ const links = docNav.querySelectorAll('a')
17
+ if (links.length === 0) return null
18
+
19
+ const section = document.createElement('div')
20
+ section.className = 'doc-sidebar-section'
21
+
22
+ const heading = document.createElement('p')
23
+ heading.className = 'doc-sidebar-heading'
24
+ heading.textContent = 'Navigation'
25
+ section.appendChild(heading)
26
+
27
+ const list = document.createElement('ul')
28
+ list.className = 'doc-sidebar-list'
29
+
30
+ links.forEach((link) => {
31
+ const li = document.createElement('li')
32
+ li.className = 'doc-sidebar-item'
33
+ if (link.classList.contains('active')) li.classList.add('active')
34
+
35
+ const a = document.createElement('a')
36
+ a.href = link.href
37
+ a.className = 'doc-sidebar-link'
38
+ a.textContent = link.textContent
39
+ li.appendChild(a)
40
+ list.appendChild(li)
41
+ })
42
+
43
+ section.appendChild(list)
44
+ return section
45
+ }
46
+
47
+ function createModal(sidebarNav: Element | null): HTMLElement {
48
+ const modal = document.createElement('div')
49
+ modal.className = 'doc-sidebar-modal'
50
+ modal.setAttribute('role', 'dialog')
51
+ modal.setAttribute('aria-label', 'Navigation')
52
+
53
+ const backdrop = document.createElement('div')
54
+ backdrop.className = 'doc-sidebar-modal-backdrop'
55
+
56
+ const panel = document.createElement('div')
57
+ panel.className = 'doc-sidebar-modal-panel'
58
+
59
+ const closeBtn = document.createElement('button')
60
+ closeBtn.type = 'button'
61
+ closeBtn.className = 'doc-sidebar-modal-close'
62
+ closeBtn.setAttribute('aria-label', 'Close navigation')
63
+ closeBtn.innerHTML = closeIcon
64
+
65
+ panel.appendChild(closeBtn)
66
+
67
+ // Build the modal nav container
68
+ const nav = document.createElement('nav')
69
+ nav.className = 'doc-sidebar-nav'
70
+ nav.setAttribute('aria-label', 'Navigation')
71
+
72
+ // Clone the sidebar nav sections (skip the outer <nav>, just grab sections)
73
+ const hasExistingNav =
74
+ sidebarNav?.querySelector('.doc-sidebar-heading')?.textContent === 'Navigation'
75
+ if (sidebarNav) {
76
+ for (const child of Array.from(sidebarNav.children)) {
77
+ nav.appendChild(child.cloneNode(true))
78
+ }
79
+ }
80
+
81
+ // Add top-level nav links as "Navigation" section (skip if sidebar already has one)
82
+ if (!hasExistingNav) {
83
+ const navSection = buildNavSection()
84
+ if (navSection) nav.prepend(navSection)
85
+ }
86
+
87
+ panel.appendChild(nav)
88
+ modal.appendChild(backdrop)
89
+ modal.appendChild(panel)
90
+ document.body.appendChild(modal)
91
+
92
+ return modal
93
+ }
94
+
95
+ export function initSidebar(): void {
96
+ const toggle = document.querySelector('[data-sidebar-toggle]') as HTMLElement | null
97
+ if (!toggle) return
98
+
99
+ const sidebarNav = document.querySelector('.doc-sidebar-nav')
100
+
101
+ const modal = createModal(sidebarNav)
102
+ const closeBtn = modal.querySelector<HTMLButtonElement>('.doc-sidebar-modal-close')
103
+ const backdrop = modal.querySelector<HTMLElement>('.doc-sidebar-modal-backdrop')
104
+ if (!closeBtn || !backdrop) return
105
+
106
+ function open() {
107
+ modal.setAttribute('open', '')
108
+ document.body.style.overflow = 'hidden'
109
+ closeBtn?.focus()
110
+ }
111
+
112
+ function close() {
113
+ modal.removeAttribute('open')
114
+ document.body.style.overflow = ''
115
+ toggle?.focus()
116
+ }
117
+
118
+ toggle.addEventListener('click', open)
119
+ closeBtn.addEventListener('click', close)
120
+ backdrop.addEventListener('click', close)
121
+
122
+ // Close on link click
123
+ modal.addEventListener('click', (e) => {
124
+ if ((e.target as HTMLElement).closest('a')) {
125
+ close()
126
+ }
127
+ })
128
+
129
+ // Close on Escape
130
+ document.addEventListener('keydown', (e) => {
131
+ if (e.key === 'Escape' && modal.hasAttribute('open')) {
132
+ close()
133
+ }
134
+ })
135
+ }