@takazudo/zudo-doc 3.2.0 → 4.0.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 (439) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +2 -2
  3. package/bin/tag-cli-config.ts +126 -0
  4. package/bin/tags-audit-runner.ts +60 -76
  5. package/bin/tags-audit.mjs +17 -36
  6. package/bin/tags-suggest-runner.ts +429 -0
  7. package/bin/tags-suggest.mjs +30 -0
  8. package/bin/zudo-doc.mjs +78 -25
  9. package/dist/breadcrumb/breadcrumb.d.ts +4 -4
  10. package/dist/breadcrumb/find-path.d.ts +2 -2
  11. package/dist/breadcrumb/index.d.ts +1 -1
  12. package/dist/breadcrumb/types.d.ts +0 -5
  13. package/dist/chrome/derive.d.ts +16 -4
  14. package/dist/chrome/derive.js +64 -4
  15. package/dist/chrome/index.d.ts +13 -10
  16. package/dist/chrome/index.js +12 -6
  17. package/dist/chrome/primary-slots.d.ts +21 -0
  18. package/dist/chrome/primary-slots.js +59 -0
  19. package/dist/chrome-bindings.d.ts +227 -0
  20. package/dist/chrome-bindings.js +6 -0
  21. package/dist/code-syntax/code-block-enhancer-script.d.ts +4 -0
  22. package/dist/code-syntax/code-block-enhancer-script.js +7 -4
  23. package/dist/code-syntax/code-block-enhancer.d.ts +2 -2
  24. package/dist/code-syntax/code-block-enhancer.js +1 -3
  25. package/dist/code-syntax/index.d.ts +5 -5
  26. package/dist/code-syntax/index.js +4 -13
  27. package/dist/code-syntax/mermaid-init-script.d.ts +1 -22
  28. package/dist/code-syntax/mermaid-init-script.js +0 -2
  29. package/dist/code-syntax/mermaid-init.d.ts +0 -1
  30. package/dist/code-syntax/mermaid-init.js +3 -4
  31. package/dist/code-syntax/tabs-init.d.ts +0 -1
  32. package/dist/code-syntax/tabs-init.js +1 -3
  33. package/dist/code-syntax/tabs.d.ts +0 -1
  34. package/dist/code-syntax/tabs.js +1 -3
  35. package/dist/color-scheme-utils.d.ts +72 -4
  36. package/dist/color-scheme-utils.js +137 -0
  37. package/dist/color-schemes-defaults/index.d.ts +23 -0
  38. package/dist/color-schemes-defaults/index.js +134 -0
  39. package/dist/config.d.ts +459 -0
  40. package/dist/config.js +125 -0
  41. package/dist/content/component-map.d.ts +0 -16
  42. package/dist/content/component-map.js +2 -4
  43. package/dist/content/index.d.ts +1 -1
  44. package/dist/content/index.js +2 -3
  45. package/dist/content.css +1 -1
  46. package/dist/design-token-panel-bootstrap.d.ts +82 -27
  47. package/dist/design-token-panel-bootstrap.js +110 -21
  48. package/dist/design-token-panel-config/index.d.ts +49 -0
  49. package/dist/design-token-panel-config/index.js +211 -0
  50. package/dist/design-token-panel-config/manifest.d.ts +46 -0
  51. package/dist/design-token-panel-config/manifest.js +105 -0
  52. package/dist/directive-vocabulary-defaults/index.d.ts +16 -0
  53. package/dist/directive-vocabulary-defaults/index.js +12 -0
  54. package/dist/doc-body-end-islands/design-token-panel-island.d.ts +15 -0
  55. package/dist/doc-body-end-islands/design-token-panel-island.js +31 -0
  56. package/dist/doc-body-end-islands/index.d.ts +52 -7
  57. package/dist/doc-body-end-islands/index.js +19 -0
  58. package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +37 -0
  59. package/dist/doc-body-end-islands/theme-pack-switcher-island.js +18 -0
  60. package/dist/doc-content-header/index.js +1 -1
  61. package/dist/doc-history-area/index.d.ts +10 -4
  62. package/dist/doc-history-area/index.js +3 -2
  63. package/dist/doc-metainfo-area/index.d.ts +1 -0
  64. package/dist/doc-page-props/index.d.ts +7 -23
  65. package/dist/doc-page-renderer/index.d.ts +1 -0
  66. package/dist/doc-page-renderer/index.js +1 -0
  67. package/dist/doc-page-shell/index.js +19 -12
  68. package/dist/doc-pager/index.js +1 -1
  69. package/dist/doc-route-entries/index.d.ts +2 -2
  70. package/dist/doclayout/doc-layout-with-defaults.js +4 -4
  71. package/dist/doclayout/doc-layout.d.ts +8 -0
  72. package/dist/doclayout/doc-layout.js +10 -1
  73. package/dist/docs-schema/index.d.ts +67 -0
  74. package/dist/docs-schema/index.js +43 -0
  75. package/dist/eject/index.d.ts +16 -0
  76. package/dist/eject/index.js +122 -28
  77. package/dist/extract-headings/index.d.ts +5 -8
  78. package/dist/extract-headings/index.js +2 -9
  79. package/dist/factory-context/index.d.ts +56 -4
  80. package/dist/features.css +65 -43
  81. package/dist/find-in-page/find-bar.d.ts +9 -0
  82. package/dist/find-in-page/find-bar.js +114 -0
  83. package/dist/find-in-page/find-in-page.d.ts +17 -0
  84. package/dist/find-in-page/find-in-page.js +131 -0
  85. package/dist/find-in-page/index.d.ts +11 -0
  86. package/dist/find-in-page/index.js +49 -0
  87. package/dist/footer/footer.js +1 -0
  88. package/dist/frontmatter-preview-defaults/index.d.ts +16 -0
  89. package/dist/frontmatter-preview-defaults/index.js +25 -0
  90. package/dist/head-with-defaults/index.d.ts +2 -0
  91. package/dist/head-with-defaults/index.js +16 -0
  92. package/dist/header/header.d.ts +10 -5
  93. package/dist/header/header.js +45 -5
  94. package/dist/header/index.d.ts +1 -1
  95. package/dist/header/types.d.ts +30 -1
  96. package/dist/header-with-defaults/index.js +1 -0
  97. package/dist/home-page/index.d.ts +2 -0
  98. package/dist/home-page/index.js +11 -5
  99. package/dist/home-page/prepare-home-data.js +1 -1
  100. package/dist/i18n-defaults/index.d.ts +22 -0
  101. package/dist/i18n-defaults/index.js +167 -0
  102. package/dist/locale-merge/index.d.ts +9 -14
  103. package/dist/locale-merge/index.js +6 -4
  104. package/dist/mdx-components/index.js +4 -4
  105. package/dist/plugins/claude-resources.d.ts +1 -0
  106. package/dist/plugins/claude-resources.js +4 -2
  107. package/dist/plugins/doc-history.js +1 -1
  108. package/dist/{integrations → plugins/internal}/claude-resources/index.d.ts +1 -16
  109. package/dist/{integrations → plugins/internal}/claude-resources/index.js +0 -9
  110. package/dist/{integrations → plugins/internal}/doc-history/index.d.ts +0 -17
  111. package/dist/{integrations → plugins/internal}/doc-history/index.js +0 -4
  112. package/dist/{integrations → plugins/internal}/doc-history/pre-build.d.ts +2 -4
  113. package/dist/plugins/internal/llms-txt/index.d.ts +7 -0
  114. package/dist/{integrations → plugins/internal}/llms-txt/load.d.ts +1 -1
  115. package/dist/{integrations → plugins/internal}/llms-txt/load.js +2 -2
  116. package/dist/{integrations → plugins/internal}/llms-txt/strip.d.ts +2 -3
  117. package/dist/{integrations → plugins/internal}/llms-txt/strip.js +1 -1
  118. package/dist/{integrations → plugins/internal}/llms-txt/types.d.ts +13 -22
  119. package/dist/{integrations → plugins/internal}/search-index/collect.js +1 -1
  120. package/dist/plugins/internal/theme-packs/copy.d.ts +32 -0
  121. package/dist/plugins/internal/theme-packs/copy.js +45 -0
  122. package/dist/plugins/internal/theme-packs/dev-middleware.d.ts +22 -0
  123. package/dist/plugins/internal/theme-packs/dev-middleware.js +80 -0
  124. package/dist/plugins/internal/theme-packs/index.d.ts +6 -0
  125. package/dist/plugins/internal/theme-packs/index.js +9 -0
  126. package/dist/plugins/internal/theme-packs/resolve.d.ts +17 -0
  127. package/dist/plugins/internal/theme-packs/resolve.js +17 -0
  128. package/dist/plugins/internal/theme-packs/types.d.ts +22 -0
  129. package/dist/plugins/internal/theme-packs/types.js +0 -0
  130. package/dist/plugins/llms-txt.js +1 -1
  131. package/dist/plugins/routes.js +55 -21
  132. package/dist/plugins/search-index.js +1 -1
  133. package/dist/plugins/theme-packs.d.ts +3 -0
  134. package/dist/plugins/theme-packs.js +40 -0
  135. package/dist/preset.d.ts +28 -14
  136. package/dist/preset.js +24 -9
  137. package/dist/route-context/index.js +4 -6
  138. package/dist/route-enumerators/index.d.ts +6 -18
  139. package/dist/route-enumerators/index.js +8 -6
  140. package/dist/routes/404.js +3 -1
  141. package/dist/routes/_chrome.js +3 -2
  142. package/dist/routes/_context.d.ts +7 -3
  143. package/dist/routes/_context.js +2 -0
  144. package/dist/routes/_docs-helpers.js +9 -21
  145. package/dist/safelist.css +1 -1
  146. package/dist/settings.d.ts +64 -12
  147. package/dist/sidebar-tree/build-tree.d.ts +3 -4
  148. package/dist/sidebar-tree/build-tree.js +4 -3
  149. package/dist/sidebar-tree/index.d.ts +2 -2
  150. package/dist/sidebar-tree/types.d.ts +6 -17
  151. package/dist/site-tree-nav-island/index.d.ts +3 -1
  152. package/dist/site-tree-nav-island/index.js +17 -5
  153. package/dist/site-tree-nav-island/state.d.ts +4 -0
  154. package/dist/site-tree-nav-island/state.js +10 -0
  155. package/dist/tag-helpers/index.d.ts +6 -13
  156. package/dist/tag-helpers/index.js +5 -23
  157. package/dist/tag-pages/index.d.ts +8 -21
  158. package/dist/tag-pages/index.js +14 -10
  159. package/dist/tags-audit.d.ts +16 -44
  160. package/dist/tags-audit.js +9 -172
  161. package/dist/theme/color-scheme-provider.d.ts +2 -3
  162. package/dist/theme/color-scheme-provider.js +2 -10
  163. package/dist/theme/index.d.ts +1 -4
  164. package/dist/theme/index.js +2 -30
  165. package/dist/theme/theme-pack-provider.d.ts +42 -0
  166. package/dist/theme/theme-pack-provider.js +75 -0
  167. package/dist/theme-cli/apply.d.ts +16 -0
  168. package/dist/theme-cli/apply.js +61 -0
  169. package/dist/theme-cli/config-io.d.ts +15 -0
  170. package/dist/theme-cli/config-io.js +51 -0
  171. package/dist/theme-cli/config-rewriter.d.ts +21 -0
  172. package/dist/theme-cli/config-rewriter.js +141 -0
  173. package/dist/theme-cli/config-scanner.d.ts +63 -0
  174. package/dist/theme-cli/config-scanner.js +288 -0
  175. package/dist/theme-cli/index.d.ts +7 -0
  176. package/dist/theme-cli/index.js +38 -0
  177. package/dist/theme-cli/list.d.ts +27 -0
  178. package/dist/theme-cli/list.js +64 -0
  179. package/dist/theme-cli/provenance.d.ts +17 -0
  180. package/dist/theme-cli/provenance.js +35 -0
  181. package/dist/theme-cli/registry.d.ts +14 -0
  182. package/dist/theme-cli/registry.js +13 -0
  183. package/dist/theme-pack-dialog/dialog-state.d.ts +25 -0
  184. package/dist/theme-pack-dialog/dialog-state.js +40 -0
  185. package/dist/theme-pack-dialog/index.d.ts +5 -0
  186. package/dist/theme-pack-dialog/index.js +152 -0
  187. package/dist/theme-pack-dialog/theme-pack-card.d.ts +25 -0
  188. package/dist/theme-pack-dialog/theme-pack-card.js +72 -0
  189. package/dist/theme-pack-switcher/index.d.ts +49 -0
  190. package/dist/theme-pack-switcher/index.js +205 -0
  191. package/dist/theme-pack-switcher/switcher-state.d.ts +56 -0
  192. package/dist/theme-pack-switcher/switcher-state.js +43 -0
  193. package/dist/theme-pack-switcher/theme-pack-sync.d.ts +85 -0
  194. package/dist/theme-pack-switcher/theme-pack-sync.js +121 -0
  195. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-400-latin.woff2 +0 -0
  196. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-700-latin.woff2 +0 -0
  197. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-italic-400-latin.woff2 +0 -0
  198. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-italic-700-latin.woff2 +0 -0
  199. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegibleMono-italic-latin.woff2 +0 -0
  200. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegibleMono-latin.woff2 +0 -0
  201. package/dist/theme-packs/beacon/fonts/OFL.txt +94 -0
  202. package/dist/theme-packs/beacon/meta.json +37 -0
  203. package/dist/theme-packs/beacon/pack.css +442 -0
  204. package/dist/theme-packs/broadsheet/fonts/CourierPrime-400-latin.woff2 +0 -0
  205. package/dist/theme-packs/broadsheet/fonts/CourierPrime-700-latin.woff2 +0 -0
  206. package/dist/theme-packs/broadsheet/fonts/OFL.txt +95 -0
  207. package/dist/theme-packs/broadsheet/fonts/PlayfairDisplay-italic-latin.woff2 +0 -0
  208. package/dist/theme-packs/broadsheet/fonts/PlayfairDisplay-latin.woff2 +0 -0
  209. package/dist/theme-packs/broadsheet/fonts/SourceSerif4-italic-latin.woff2 +0 -0
  210. package/dist/theme-packs/broadsheet/fonts/SourceSerif4-latin.woff2 +0 -0
  211. package/dist/theme-packs/broadsheet/meta.json +38 -0
  212. package/dist/theme-packs/broadsheet/pack.css +448 -0
  213. package/dist/theme-packs/brutalist/fonts/ArchivoBlack-latin.woff2 +0 -0
  214. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  215. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  216. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-700-latin.woff2 +0 -0
  217. package/dist/theme-packs/brutalist/fonts/OFL.txt +95 -0
  218. package/dist/theme-packs/brutalist/fonts/SpaceGrotesk-latin.woff2 +0 -0
  219. package/dist/theme-packs/brutalist/meta.json +38 -0
  220. package/dist/theme-packs/brutalist/pack.css +546 -0
  221. package/dist/theme-packs/default/meta.json +37 -0
  222. package/dist/theme-packs/drift/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  223. package/dist/theme-packs/drift/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  224. package/dist/theme-packs/drift/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  225. package/dist/theme-packs/drift/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  226. package/dist/theme-packs/drift/fonts/IBMPlexSans-italic-latin.woff2 +0 -0
  227. package/dist/theme-packs/drift/fonts/IBMPlexSans-latin-ext.woff2 +0 -0
  228. package/dist/theme-packs/drift/fonts/IBMPlexSans-latin.woff2 +0 -0
  229. package/dist/theme-packs/drift/fonts/OFL.txt +93 -0
  230. package/dist/theme-packs/drift/meta.json +37 -0
  231. package/dist/theme-packs/drift/pack.css +478 -0
  232. package/dist/theme-packs/fjord/fonts/Inter-latin-ext.woff2 +0 -0
  233. package/dist/theme-packs/fjord/fonts/Inter-latin.woff2 +0 -0
  234. package/dist/theme-packs/fjord/fonts/JetBrainsMono-latin-ext.woff2 +0 -0
  235. package/dist/theme-packs/fjord/fonts/JetBrainsMono-latin.woff2 +0 -0
  236. package/dist/theme-packs/fjord/fonts/OFL.txt +94 -0
  237. package/dist/theme-packs/fjord/meta.json +37 -0
  238. package/dist/theme-packs/fjord/pack.css +375 -0
  239. package/dist/theme-packs/foundry/fonts/Inter-latin-ext.woff2 +0 -0
  240. package/dist/theme-packs/foundry/fonts/Inter-latin.woff2 +0 -0
  241. package/dist/theme-packs/foundry/fonts/OFL.txt +93 -0
  242. package/dist/theme-packs/foundry/meta.json +37 -0
  243. package/dist/theme-packs/foundry/pack.css +202 -0
  244. package/dist/theme-packs/futura-editorial/fonts/Jost-latin.woff2 +0 -0
  245. package/dist/theme-packs/futura-editorial/fonts/NotoSans-italic-latin.woff2 +0 -0
  246. package/dist/theme-packs/futura-editorial/fonts/NotoSans-latin.woff2 +0 -0
  247. package/dist/theme-packs/futura-editorial/fonts/OFL.txt +95 -0
  248. package/dist/theme-packs/futura-editorial/fonts/SpaceMono-400-latin.woff2 +0 -0
  249. package/dist/theme-packs/futura-editorial/fonts/SpaceMono-700-latin.woff2 +0 -0
  250. package/dist/theme-packs/futura-editorial/meta.json +38 -0
  251. package/dist/theme-packs/futura-editorial/pack.css +313 -0
  252. package/dist/theme-packs/hearth/fonts/Fraunces-italic-latin.woff2 +0 -0
  253. package/dist/theme-packs/hearth/fonts/Fraunces-latin.woff2 +0 -0
  254. package/dist/theme-packs/hearth/fonts/Nunito-latin.woff2 +0 -0
  255. package/dist/theme-packs/hearth/fonts/OFL.txt +95 -0
  256. package/dist/theme-packs/hearth/fonts/SplineSansMono-latin.woff2 +0 -0
  257. package/dist/theme-packs/hearth/meta.json +38 -0
  258. package/dist/theme-packs/hearth/pack.css +385 -0
  259. package/dist/theme-packs/hollow/fonts/OFL.txt +94 -0
  260. package/dist/theme-packs/hollow/fonts/SpaceGrotesk-latin.woff2 +0 -0
  261. package/dist/theme-packs/hollow/fonts/SpaceMono-400-italic-latin.woff2 +0 -0
  262. package/dist/theme-packs/hollow/fonts/SpaceMono-400-latin.woff2 +0 -0
  263. package/dist/theme-packs/hollow/fonts/SpaceMono-700-latin.woff2 +0 -0
  264. package/dist/theme-packs/hollow/meta.json +37 -0
  265. package/dist/theme-packs/hollow/pack.css +428 -0
  266. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-ext-italic.woff2 +0 -0
  267. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-ext.woff2 +0 -0
  268. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-italic.woff2 +0 -0
  269. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin.woff2 +0 -0
  270. package/dist/theme-packs/ledger/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  271. package/dist/theme-packs/ledger/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  272. package/dist/theme-packs/ledger/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  273. package/dist/theme-packs/ledger/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  274. package/dist/theme-packs/ledger/fonts/OFL.txt +94 -0
  275. package/dist/theme-packs/ledger/meta.json +37 -0
  276. package/dist/theme-packs/ledger/pack.css +463 -0
  277. package/dist/theme-packs/manuscript/fonts/CourierPrime-400-latin-ext.woff2 +0 -0
  278. package/dist/theme-packs/manuscript/fonts/CourierPrime-400-latin.woff2 +0 -0
  279. package/dist/theme-packs/manuscript/fonts/CourierPrime-700-latin-ext.woff2 +0 -0
  280. package/dist/theme-packs/manuscript/fonts/CourierPrime-700-latin.woff2 +0 -0
  281. package/dist/theme-packs/manuscript/fonts/EBGaramond-latin-italic.woff2 +0 -0
  282. package/dist/theme-packs/manuscript/fonts/EBGaramond-latin.woff2 +0 -0
  283. package/dist/theme-packs/manuscript/fonts/OFL.txt +94 -0
  284. package/dist/theme-packs/manuscript/meta.json +37 -0
  285. package/dist/theme-packs/manuscript/pack.css +376 -0
  286. package/dist/theme-packs/matcha/fonts/MPLUS1Code-latin.woff2 +0 -0
  287. package/dist/theme-packs/matcha/fonts/OFL.txt +95 -0
  288. package/dist/theme-packs/matcha/fonts/ShipporiMincho-500-latin.woff2 +0 -0
  289. package/dist/theme-packs/matcha/fonts/ShipporiMincho-700-latin.woff2 +0 -0
  290. package/dist/theme-packs/matcha/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  291. package/dist/theme-packs/matcha/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  292. package/dist/theme-packs/matcha/meta.json +38 -0
  293. package/dist/theme-packs/matcha/pack.css +409 -0
  294. package/dist/theme-packs/nocturne/fonts/CormorantGaramond-italic-latin.woff2 +0 -0
  295. package/dist/theme-packs/nocturne/fonts/CormorantGaramond-latin.woff2 +0 -0
  296. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  297. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  298. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-italic-latin.woff2 +0 -0
  299. package/dist/theme-packs/nocturne/fonts/Manrope-latin.woff2 +0 -0
  300. package/dist/theme-packs/nocturne/fonts/OFL.txt +95 -0
  301. package/dist/theme-packs/nocturne/meta.json +38 -0
  302. package/dist/theme-packs/nocturne/pack.css +502 -0
  303. package/dist/theme-packs/observatory/fonts/JosefinSans-latin.woff2 +0 -0
  304. package/dist/theme-packs/observatory/fonts/Jost-italic-latin.woff2 +0 -0
  305. package/dist/theme-packs/observatory/fonts/Jost-latin.woff2 +0 -0
  306. package/dist/theme-packs/observatory/fonts/OFL.txt +95 -0
  307. package/dist/theme-packs/observatory/fonts/SpaceMono-400-latin.woff2 +0 -0
  308. package/dist/theme-packs/observatory/fonts/SpaceMono-700-latin.woff2 +0 -0
  309. package/dist/theme-packs/observatory/fonts/SpaceMono-italic-latin.woff2 +0 -0
  310. package/dist/theme-packs/observatory/meta.json +38 -0
  311. package/dist/theme-packs/observatory/pack.css +728 -0
  312. package/dist/theme-packs/onyx/fonts/CormorantGaramond-italic-latin.woff2 +0 -0
  313. package/dist/theme-packs/onyx/fonts/CormorantGaramond-latin.woff2 +0 -0
  314. package/dist/theme-packs/onyx/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  315. package/dist/theme-packs/onyx/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  316. package/dist/theme-packs/onyx/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  317. package/dist/theme-packs/onyx/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  318. package/dist/theme-packs/onyx/fonts/Jost-latin.woff2 +0 -0
  319. package/dist/theme-packs/onyx/fonts/OFL.txt +95 -0
  320. package/dist/theme-packs/onyx/meta.json +38 -0
  321. package/dist/theme-packs/onyx/pack.css +497 -0
  322. package/dist/theme-packs/phosphor/fonts/JetBrainsMono-latin-ext.woff2 +0 -0
  323. package/dist/theme-packs/phosphor/fonts/JetBrainsMono-latin.woff2 +0 -0
  324. package/dist/theme-packs/phosphor/fonts/OFL.txt +94 -0
  325. package/dist/theme-packs/phosphor/fonts/VT323-latin-ext.woff2 +0 -0
  326. package/dist/theme-packs/phosphor/fonts/VT323-latin.woff2 +0 -0
  327. package/dist/theme-packs/phosphor/meta.json +38 -0
  328. package/dist/theme-packs/phosphor/pack.css +493 -0
  329. package/dist/theme-packs/solar/fonts/OFL.txt +94 -0
  330. package/dist/theme-packs/solar/fonts/SourceCodePro-italic-latin.woff2 +0 -0
  331. package/dist/theme-packs/solar/fonts/SourceCodePro-latin.woff2 +0 -0
  332. package/dist/theme-packs/solar/fonts/SourceSans3-italic-latin.woff2 +0 -0
  333. package/dist/theme-packs/solar/fonts/SourceSans3-latin.woff2 +0 -0
  334. package/dist/theme-packs/solar/meta.json +37 -0
  335. package/dist/theme-packs/solar/pack.css +380 -0
  336. package/dist/theme-packs/sumi/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  337. package/dist/theme-packs/sumi/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  338. package/dist/theme-packs/sumi/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  339. package/dist/theme-packs/sumi/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  340. package/dist/theme-packs/sumi/fonts/OFL.txt +95 -0
  341. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-600-latin.woff2 +0 -0
  342. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-700-latin.woff2 +0 -0
  343. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-800-latin.woff2 +0 -0
  344. package/dist/theme-packs/sumi/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  345. package/dist/theme-packs/sumi/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  346. package/dist/theme-packs/sumi/meta.json +38 -0
  347. package/dist/theme-packs/sumi/pack.css +502 -0
  348. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  349. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  350. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-600-latin.woff2 +0 -0
  351. package/dist/theme-packs/swissgrid/fonts/Inter-latin-ext.woff2 +0 -0
  352. package/dist/theme-packs/swissgrid/fonts/Inter-latin.woff2 +0 -0
  353. package/dist/theme-packs/swissgrid/fonts/InterTight-latin.woff2 +0 -0
  354. package/dist/theme-packs/swissgrid/fonts/OFL.txt +95 -0
  355. package/dist/theme-packs/swissgrid/meta.json +38 -0
  356. package/dist/theme-packs/swissgrid/pack.css +518 -0
  357. package/dist/theme-packs/washi/fonts/MPlus1Code-400-latin.woff2 +0 -0
  358. package/dist/theme-packs/washi/fonts/MPlus1Code-500-latin.woff2 +0 -0
  359. package/dist/theme-packs/washi/fonts/OFL.txt +95 -0
  360. package/dist/theme-packs/washi/fonts/ShipporiMincho-500-latin.woff2 +0 -0
  361. package/dist/theme-packs/washi/fonts/ShipporiMincho-600-latin.woff2 +0 -0
  362. package/dist/theme-packs/washi/fonts/ShipporiMincho-700-latin.woff2 +0 -0
  363. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  364. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  365. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-700-latin.woff2 +0 -0
  366. package/dist/theme-packs/washi/meta.json +38 -0
  367. package/dist/theme-packs/washi/pack.css +479 -0
  368. package/dist/theme-packs-registry/index.d.ts +5 -0
  369. package/dist/theme-packs-registry/index.js +30 -0
  370. package/dist/theme-packs-registry/load-registry.d.ts +23 -0
  371. package/dist/theme-packs-registry/load-registry.js +64 -0
  372. package/dist/theme-packs-registry/meta-schema.d.ts +70 -0
  373. package/dist/theme-packs-registry/meta-schema.js +38 -0
  374. package/dist/theme-packs-registry/resolve-enabled-packs.d.ts +25 -0
  375. package/dist/theme-packs-registry/resolve-enabled-packs.js +43 -0
  376. package/dist/theme-packs-registry/token-manifest.d.ts +19 -0
  377. package/dist/theme-packs-registry/token-manifest.js +57 -0
  378. package/dist/theme-packs-registry/validator.d.ts +35 -0
  379. package/dist/theme-packs-registry/validator.js +284 -0
  380. package/dist/theme-toggle/color-scheme-sync.d.ts +2 -4
  381. package/dist/theme.css +319 -0
  382. package/dist/versions-page/index.d.ts +2 -2
  383. package/dist/versions-page/index.js +8 -8
  384. package/dist/z-index-defaults/index.d.ts +45 -0
  385. package/dist/z-index-defaults/index.js +34 -0
  386. package/eject/breadcrumb/breadcrumb.tsx +4 -4
  387. package/eject/breadcrumb/find-path.ts +2 -2
  388. package/eject/breadcrumb/index.ts +1 -1
  389. package/eject/breadcrumb/types.ts +0 -6
  390. package/eject/code-group/index.tsx +2 -2
  391. package/eject/doc-history/index.tsx +1 -1
  392. package/eject/doc-pager/index.tsx +1 -1
  393. package/eject/footer/footer.tsx +1 -0
  394. package/eject/header/header.tsx +86 -21
  395. package/eject/header/index.ts +3 -0
  396. package/eject/header/types.ts +39 -1
  397. package/eject/site-tree-nav-island/index.tsx +15 -3
  398. package/eject/site-tree-nav-island/state.ts +9 -0
  399. package/eject/theme-toggle/color-scheme-sync.ts +2 -4
  400. package/package.json +82 -29
  401. package/routes-src/404.tsx +4 -1
  402. package/routes-src/_chrome.tsx +31 -8
  403. package/routes-src/_context.ts +4 -0
  404. package/routes-src/_docs-helpers.ts +9 -29
  405. package/routes-src/_virtual.d.ts +38 -2
  406. package/tsconfig.base.json +29 -0
  407. package/virtual-modules.d.ts +83 -0
  408. package/zfb-config-shim.d.ts +210 -0
  409. package/dist/integrations/llms-txt/index.d.ts +0 -33
  410. package/dist/theme/color-tweak-export-modal.d.ts +0 -16
  411. package/dist/theme/color-tweak-export-modal.js +0 -138
  412. package/dist/theme/design-token-serde.d.ts +0 -183
  413. package/dist/theme/design-token-serde.js +0 -346
  414. package/dist/theme/design-token-types.d.ts +0 -13
  415. package/dist/theme/design-token-types.js +0 -6
  416. package/dist/theme/iframe-bridge.d.ts +0 -42
  417. package/dist/theme/iframe-bridge.js +0 -72
  418. /package/dist/{integrations → plugins/internal}/claude-resources/escape-for-mdx.d.ts +0 -0
  419. /package/dist/{integrations → plugins/internal}/claude-resources/escape-for-mdx.js +0 -0
  420. /package/dist/{integrations → plugins/internal}/claude-resources/generate.d.ts +0 -0
  421. /package/dist/{integrations → plugins/internal}/claude-resources/generate.js +0 -0
  422. /package/dist/{integrations → plugins/internal}/doc-history/pre-build.js +0 -0
  423. /package/dist/{integrations → plugins/internal}/llms-txt/dev-middleware.d.ts +0 -0
  424. /package/dist/{integrations → plugins/internal}/llms-txt/dev-middleware.js +0 -0
  425. /package/dist/{integrations → plugins/internal}/llms-txt/emit.d.ts +0 -0
  426. /package/dist/{integrations → plugins/internal}/llms-txt/emit.js +0 -0
  427. /package/dist/{integrations → plugins/internal}/llms-txt/generate.d.ts +0 -0
  428. /package/dist/{integrations → plugins/internal}/llms-txt/generate.js +0 -0
  429. /package/dist/{integrations → plugins/internal}/llms-txt/index.js +0 -0
  430. /package/dist/{integrations → plugins/internal}/llms-txt/types.js +0 -0
  431. /package/dist/{integrations → plugins/internal}/search-index/build-emitter.d.ts +0 -0
  432. /package/dist/{integrations → plugins/internal}/search-index/build-emitter.js +0 -0
  433. /package/dist/{integrations → plugins/internal}/search-index/collect.d.ts +0 -0
  434. /package/dist/{integrations → plugins/internal}/search-index/dev-middleware.d.ts +0 -0
  435. /package/dist/{integrations → plugins/internal}/search-index/dev-middleware.js +0 -0
  436. /package/dist/{integrations → plugins/internal}/search-index/index.d.ts +0 -0
  437. /package/dist/{integrations → plugins/internal}/search-index/index.js +0 -0
  438. /package/dist/{integrations → plugins/internal}/search-index/types.d.ts +0 -0
  439. /package/dist/{integrations → plugins/internal}/search-index/types.js +0 -0
package/dist/theme.css ADDED
@@ -0,0 +1,319 @@
1
+ /* ============================================================================
2
+ * @takazudo/zudo-doc — default design tokens + project-agnostic base rules
3
+ *
4
+ * Shipped to consumers as `@takazudo/zudo-doc/theme.css` (copied to
5
+ * `dist/theme.css` by scripts/copy-theme-css.mjs on build). Single source of
6
+ * truth for the default `@theme` token block (colors, spacing, icon sizes,
7
+ * elevation, typography, radius, breakpoints, z-index) plus the small set of
8
+ * project-agnostic base rules (scroll-margin, selection color, focus ring,
9
+ * search / find-in-page highlight, version-switcher visibility) every
10
+ * zudo-doc project needs. See zudolab/zudo-doc#2655.
11
+ *
12
+ * ── @import order (load-bearing) ────────────────────────────────────────────
13
+ * The consumer's global.css MUST import this file:
14
+ * 1. AFTER `@layer zd-preflight, zd-flow;` and the two Tailwind imports
15
+ * (`tailwindcss/preflight` layer(zd-preflight), `tailwindcss/utilities`).
16
+ * Those three lines stay project-side — path-relative `@source`/`@layer`
17
+ * resolution requires them to live in the consumer's own CSS file (see
18
+ * packages/create-zudo-doc/templates/base/src/styles/global.css).
19
+ * 2. BEFORE `@takazudo/zudo-doc/safelist.css`, `content.css`,
20
+ * `page-loading.css`, and `features.css` — all four consume the
21
+ * `@theme` tokens defined here (colors, spacing, typography, z-index),
22
+ * and `content.css`'s `@layer zd-flow` rule depends on the cascade
23
+ * layer order already being established by the time it loads.
24
+ * 3. BEFORE the project's own token-override `@theme { … }` block — Tailwind
25
+ * v4 `@theme` resolution is last-declaration-wins per custom property,
26
+ * so a later project block can redefine any default declared here.
27
+ *
28
+ * ── Consumer contract ────────────────────────────────────────────────────────
29
+ * The consumer must inject the `--zd-*` ramp/role custom properties this file
30
+ * aliases into `--color-*` tokens (`ColorSchemeProvider`, see
31
+ * `@takazudo/zudo-doc/theme`). Without them every `--color-*` token below
32
+ * resolves to nothing (the tight-token guardrail below wipes Tailwind's
33
+ * default palette; only `--zd-*`-backed aliases repopulate it).
34
+ *
35
+ * Deliberately NOT shipped here: `--color-page-loading-overlay`. That scrim
36
+ * token stays feature-injected by a project's `dynamicPageTransition` wiring
37
+ * (its default depends on `--color-overlay`, which IS defined below) — do
38
+ * not add it to this base block.
39
+ *
40
+ * ── Z-index defaults ─────────────────────────────────────────────────────────
41
+ * The 13 `--z-index-*` entries below are the package DEFAULT tiers (mirrors
42
+ * `defaultZIndexTiers` from `@takazudo/zudo-doc/z-index-defaults`, #2654).
43
+ * A project only needs its own `src/config/z-index-tokens.ts` +
44
+ * `gen:z-index`/`check:z-index` codegen wiring if it OVERRIDES a tier — its
45
+ * own `@theme` block (declared after this file's import) simply redefines
46
+ * the specific `--z-index-<name>` it wants to change.
47
+ * ============================================================================ */
48
+
49
+ @theme {
50
+ /* ========================================
51
+ * Tight-token color reset
52
+ *
53
+ * Wipes all Tailwind default color tokens (`--color-*`) so only
54
+ * project-defined palette and semantic tokens remain. This enforces
55
+ * zudo-doc's tight-token policy: "NEVER use Tailwind default colors"
56
+ * (documented per-project in src/CLAUDE.md's Color Rules). Semantic color
57
+ * tokens (defined below) are added back after this reset.
58
+ *
59
+ * The upstream split-import fix (zfb#159 / 9e37551, shipped in f68a9ba)
60
+ * eliminated the original leak cause (zfb no longer prepends the full
61
+ * @import "tailwindcss" bundle). The reset is retained as an explicit
62
+ * design guardrail — it prevents accidental default palette bleed from any
63
+ * future upstream change and keeps the color surface intentional.
64
+ *
65
+ * NOT reset: `--spacing` (the base spacing scale, default 0.25rem).
66
+ * Tailwind spacing utilities compute as calc(var(--spacing) * N); wiping
67
+ * `--spacing` collapses them to zero (observed in Wave 4 Sub-7 #1403).
68
+ * This guardrail resets ONLY the color namespace — never widen it.
69
+ * ======================================== */
70
+ --color-*: initial;
71
+
72
+ /* ========================================
73
+ * Colors — Three-tier token system
74
+ * ======================================== */
75
+
76
+ /* ── Base ── */
77
+ --color-bg: var(--zd-bg);
78
+ --color-fg: var(--zd-fg);
79
+ --color-sel-bg: var(--zd-selection-bg);
80
+ --color-sel-fg: var(--zd-selection-fg);
81
+
82
+ /* ── Semantic aliases ── */
83
+ --color-surface: var(--zd-surface);
84
+ --color-muted: var(--zd-muted);
85
+ --color-accent: var(--zd-accent);
86
+ --color-accent-hover: var(--zd-accent-hover);
87
+ --color-code-bg: var(--zd-code-bg);
88
+ --color-code-fg: var(--zd-code-fg);
89
+ --color-success: var(--zd-success);
90
+ --color-danger: var(--zd-danger);
91
+ --color-warning: var(--zd-warning);
92
+ --color-info: var(--zd-info);
93
+ /* Overlay is intentionally theme-independent (always dark, not scheme-driven) */
94
+ --color-overlay: #000;
95
+ --color-image-overlay-bg: var(--zd-image-overlay-bg);
96
+ --color-image-overlay-fg: var(--zd-image-overlay-fg);
97
+ --color-chat-user-bg: var(--zd-chat-user-bg);
98
+ --color-chat-user-text: var(--zd-chat-user-text);
99
+ --color-chat-assistant-bg: var(--zd-chat-assistant-bg);
100
+ --color-chat-assistant-text: var(--zd-chat-assistant-text);
101
+ --color-matched-keyword-bg: var(--zd-matched-keyword-bg);
102
+ --color-matched-keyword-fg: var(--zd-matched-keyword-fg);
103
+
104
+ /* ========================================
105
+ * Spacing — hsp (horizontal) + vsp (vertical)
106
+ * ======================================== */
107
+ --spacing-0: 0;
108
+ --spacing-px: 1px;
109
+
110
+ /* Horizontal spacing (7 steps) */
111
+ --spacing-hsp-2xs: 0.125rem; /* 2px — tight inline */
112
+ --spacing-hsp-xs: 0.375rem; /* 6px — compact inline */
113
+ --spacing-hsp-sm: 0.5rem; /* 8px — small padding */
114
+ --spacing-hsp-md: 0.75rem; /* 12px — default gaps */
115
+ --spacing-hsp-lg: 1rem; /* 16px — standard padding */
116
+ --spacing-hsp-xl: 1.5rem; /* 24px — generous padding */
117
+ --spacing-hsp-2xl: 2rem; /* 32px — large padding */
118
+
119
+ /* Vertical spacing (8 steps) */
120
+ --spacing-vsp-3xs: 0.25rem; /* 4px — hairline gap */
121
+ --spacing-vsp-2xs: 0.4375rem; /* 7px — tight gap */
122
+ --spacing-vsp-xs: 0.875rem; /* 14px — small gap */
123
+ --spacing-vsp-sm: 1.25rem; /* 20px — compact gap */
124
+ --spacing-vsp-md: 1.5rem; /* 24px — standard gap */
125
+ --spacing-vsp-lg: 1.75rem; /* 28px — section gap */
126
+ --spacing-vsp-xl: 2.5rem; /* 40px — large section gap */
127
+ --spacing-vsp-2xl: 3.5rem; /* 56px — page-level gap */
128
+
129
+ /* ========================================
130
+ * Element sizes — semantic icon dimensions
131
+ * ======================================== */
132
+ --spacing-icon-xs: 0.75rem; /* 12px — inline meta icons, chevrons */
133
+ --spacing-icon-sm: 1rem; /* 16px — standard UI icons */
134
+ --spacing-icon-md: 1.25rem; /* 20px — medium emphasis icons */
135
+ --spacing-icon-lg: 1.5rem; /* 24px — large / mobile icons */
136
+
137
+ /* Image overlay button chrome */
138
+ --spacing-image-overlay-inset: 0.5rem; /* 8px — overlay button corner inset + internal padding */
139
+
140
+ /* ========================================
141
+ * Elevation — the tight `@import "tailwindcss/utilities"` (no default
142
+ * @theme) drops Tailwind's default shadow scale, so `shadow-*` utilities
143
+ * generate nothing. Re-add the one elevation the components use: header
144
+ * and version-switcher dropdown panels apply `shadow-lg`. Value is
145
+ * Tailwind v4's default shadow-lg; the black is intentionally
146
+ * theme-independent (a drop shadow is absence of light, not a themed color).
147
+ * ======================================== */
148
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
149
+
150
+ /* ========================================
151
+ * Typography
152
+ * ======================================== */
153
+
154
+ /* ── Tier 2: Semantic font-size tokens (reference Tier 1 scale only) ── */
155
+ --text-micro: var(--text-scale-2xs); /* 12px — compact panel labels, color swatch annotations */
156
+ --text-caption: var(--text-scale-xs); /* labels, timestamps */
157
+ --text-small: var(--text-scale-sm); /* secondary text, nav items */
158
+ --text-body: var(--text-scale-md); /* paragraphs, default */
159
+ --text-title: var(--text-scale-lg); /* card titles, section labels */
160
+ --text-heading: var(--text-scale-xl); /* page headings */
161
+ --text-display: var(--text-scale-2xl); /* hero text */
162
+
163
+ /* Font families */
164
+ --font-sans: system-ui, sans-serif;
165
+ --font-mono: ui-monospace, monospace;
166
+
167
+ /* Font weights (4 steps) */
168
+ --font-weight-normal: 400;
169
+ --font-weight-medium: 500;
170
+ --font-weight-semibold: 600;
171
+ --font-weight-bold: 700;
172
+
173
+ /* Line heights (4 steps) */
174
+ --leading-tight: 1.25;
175
+ --leading-snug: 1.375;
176
+ --leading-normal: 1.5;
177
+ --leading-relaxed: 1.625;
178
+
179
+ /* Letter spacing / tracking (4 steps) */
180
+ --tracking-tight: -0.025em; /* headings, display text */
181
+ --tracking-normal: normal; /* browser default — resets any inherited tracking */
182
+ --tracking-wide: 0.05em; /* labels, UI text */
183
+ --tracking-wider: 0.1em; /* small caps, decorative */
184
+
185
+ /* ========================================
186
+ * Border radius (3 steps)
187
+ * ======================================== */
188
+ --radius-DEFAULT: 0.25rem; /* 4px — rounded */
189
+ --radius-lg: 0.5rem; /* 8px — rounded-lg */
190
+ --radius-full: 9999px; /* rounded-full */
191
+
192
+ /* ========================================
193
+ * Breakpoints (3 steps)
194
+ * ======================================== */
195
+ --breakpoint-sm: 640px;
196
+ --breakpoint-lg: 1024px;
197
+ --breakpoint-xl: 1280px;
198
+ }
199
+
200
+ /* ========================================
201
+ * Z-index tiers — semantic, single-namespace default scale.
202
+ *
203
+ * The 13 tokens below are the package DEFAULTS (mirrors defaultZIndexTiers
204
+ * from @takazudo/zudo-doc/z-index-defaults, #2654). Tailwind v4 reads each
205
+ * --z-index-<name> theme key and generates a `z-<name>` utility, so e.g.
206
+ * --z-index-toolbar: 20 produces `.z-toolbar { z-index: 20 }`; raw CSS can
207
+ * also reference `z-index: var(--z-index-<name>)`.
208
+ *
209
+ * A project only needs its own src/config/z-index-tokens.ts +
210
+ * gen:z-index/check:z-index codegen if it OVERRIDES a tier — the
211
+ * GENERATED:Z_INDEX block that used to live in every project's global.css is
212
+ * now opt-in customization only, not a mandatory per-project artifact.
213
+ * ======================================== */
214
+ @theme {
215
+ --z-index-content: 0;
216
+ --z-index-local-1: 1;
217
+ --z-index-local-2: 2;
218
+ --z-index-local-3: 3;
219
+ --z-index-sidebar: 10;
220
+ --z-index-toolbar: 20;
221
+ --z-index-dropdown: 30;
222
+ --z-index-popover: 40;
223
+ --z-index-modal-backdrop: 50;
224
+ --z-index-modal: 60;
225
+ --z-index-toast: 70;
226
+ --z-index-tooltip: 80;
227
+ --z-index-drag: 90;
228
+ }
229
+
230
+ :root {
231
+ /* Default responsive range; sidebar-resizer.ts allows 192–448px for explicit resizing. */
232
+ --zd-sidebar-w: clamp(14rem, 20vw, 22rem);
233
+
234
+ /* ── Tier 1: Abstract font-size scale (raw values — NOT for direct component use) ── */
235
+ /* Used only as a source of truth for Tier 2 semantic tokens above. */
236
+ --text-scale-2xs: 0.75rem; /* 12px */
237
+ --text-scale-xs: 0.875rem; /* 14px */
238
+ --text-scale-sm: 1rem; /* 16px */
239
+ --text-scale-md: 1.2rem; /* 19.2px */
240
+ --text-scale-lg: 1.4rem; /* 22.4px */
241
+ --text-scale-xl: 3rem; /* 48px */
242
+ --text-scale-2xl: 3.75rem; /* 60px */
243
+
244
+ --default-transition-duration: 150ms; /* consumed by image-enlarge and hash-link opacity fade */
245
+ --zd-transition-slow: 200ms; /* sidebar transform/visibility and content-band max-width */
246
+ --zd-transition-slower: 300ms; /* view-transition fade-in (contentFadeIn animation) */
247
+ --zd-header-h: 80px; /* sticky header height; consumed by scroll-margin-top on [id] anchors */
248
+ }
249
+
250
+ /* ========================================
251
+ * Base styles
252
+ * ======================================== */
253
+
254
+ [id] {
255
+ scroll-margin-top: var(--zd-header-h);
256
+ }
257
+
258
+ body {
259
+ background-color: var(--color-bg);
260
+ color: var(--color-fg);
261
+ }
262
+
263
+ ::selection {
264
+ background-color: var(--color-sel-bg);
265
+ color: var(--color-sel-fg);
266
+ }
267
+
268
+ @layer base {
269
+ a {
270
+ text-underline-offset: 4px;
271
+ }
272
+ button {
273
+ cursor: pointer;
274
+ }
275
+ :focus-visible {
276
+ outline: 2px solid var(--color-accent);
277
+ outline-offset: 2px;
278
+ }
279
+ }
280
+
281
+ /* ── Search highlight ── */
282
+ [data-search-results] mark {
283
+ background-color: var(--color-matched-keyword-bg);
284
+ color: var(--color-matched-keyword-fg);
285
+ padding: 0;
286
+ border-radius: 2px;
287
+ }
288
+
289
+ /* Version-switcher responsive visibility (was an inline <style> child of
290
+ * the data-version-switcher <div>; moved to global.css to avoid the
291
+ * <style>-inside-<div> HTML5 content-model violation flagged by
292
+ * html-validate — see zudolab/zudo-doc#1505).
293
+ *
294
+ * Pins onto the `.hidden` baseline that Tailwind always generates so
295
+ * consumers wrapping <VersionSwitcher> in `<div class="hidden lg:block">`
296
+ * still get the desktop override even when the content scanner did not
297
+ * generate `.lg:block`. Mobile (<64rem) falls through to `.hidden`'s
298
+ * `display: none`. Inert when no version-switcher is on the page. */
299
+ @media (min-width: 64rem) {
300
+ .hidden:has(> [data-version-switcher]) {
301
+ display: block;
302
+ }
303
+ }
304
+
305
+ /* ── Find-in-page highlight ── */
306
+ /* Deliberate ephemeral-vs-persistent split: find-in-page uses color-mix(warning)
307
+ * because it is a transient browser-controlled overlay that appears and disappears
308
+ * without page navigation. Search results use --color-matched-keyword-bg/fg because
309
+ * they are persistent semantic highlights tied to the current query state.
310
+ * Do NOT unify these two highlight strategies — the visual distinction is intentional. */
311
+ .find-match {
312
+ background-color: color-mix(in oklch, var(--color-warning) 40%, transparent);
313
+ border-radius: 2px;
314
+ }
315
+ .find-match-active {
316
+ background-color: color-mix(in oklch, var(--color-warning) 70%, transparent);
317
+ border-radius: 2px;
318
+ outline: 2px solid color-mix(in oklch, var(--color-warning) 90%, transparent);
319
+ }
@@ -22,11 +22,11 @@ export interface VersionsPageComponents {
22
22
  title: string;
23
23
  }) => JSX.Element;
24
24
  HeaderWithDefaults: (props: {
25
- lang?: string;
25
+ lang: string;
26
26
  currentPath?: string;
27
27
  }) => JSX.Element;
28
28
  FooterWithDefaults: (props: {
29
- lang?: string;
29
+ lang: string;
30
30
  }) => JSX.Element;
31
31
  BodyEndIslands: (props: {
32
32
  basePath: string;
@@ -2,9 +2,9 @@ import { Fragment, jsx } from "preact/jsx-runtime";
2
2
  import { DocLayoutWithDefaults } from "../doclayout/index.js";
3
3
  import { VersionsPageContent } from "../nav-indexing/index.js";
4
4
  import { createHeadWithDefaults } from "../head-with-defaults/index.js";
5
- import { createHeaderWithDefaults } from "../header-with-defaults/index.js";
6
- import { createFooterWithDefaults } from "../footer-with-defaults/index.js";
5
+ import { resolveThemePackSsrSlug } from "../theme/theme-pack-provider.js";
7
6
  import { deriveComposeMetaTitle, deriveBodyEndIslands } from "../chrome/derive.js";
7
+ import { derivePrimaryChromeSlots } from "../chrome/primary-slots.js";
8
8
  import { assertChromeContext } from "../chrome/assert-chrome-context.js";
9
9
  function createVersionsPageView(ctx) {
10
10
  assertChromeContext(ctx, "createVersionsPageView");
@@ -14,13 +14,12 @@ function createVersionsPageView(ctx) {
14
14
  const withBase = ctx.withBase;
15
15
  const composeMetaTitle = deriveComposeMetaTitle(ctx);
16
16
  const HeadWithDefaults = createHeadWithDefaults(ctx);
17
- const HeaderWithDefaults = createHeaderWithDefaults(
18
- ctx
19
- );
20
- const FooterWithDefaults = createFooterWithDefaults(
21
- ctx
22
- );
17
+ const { Header: HeaderWithDefaults, Footer: FooterWithDefaults } = derivePrimaryChromeSlots(ctx);
23
18
  const BodyEndIslands = deriveBodyEndIslands(ctx);
19
+ const dataThemePack = resolveThemePackSsrSlug(
20
+ ctx.themePackRegistry,
21
+ ctx.settings
22
+ );
24
23
  function VersionsPageView({ locale }) {
25
24
  const isDefault = locale === defaultLocale;
26
25
  const prefix = isDefault ? "" : `/${locale}`;
@@ -53,6 +52,7 @@ function createVersionsPageView(ctx) {
53
52
  title: composeMetaTitle(pageTitle),
54
53
  head: /* @__PURE__ */ jsx(HeadWithDefaults, { title: pageTitle }),
55
54
  lang: locale,
55
+ dataThemePack,
56
56
  noindex: settings.noindex,
57
57
  hideSidebar: true,
58
58
  hideToc: true,
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Default z-index tiers — 13 tiers, `content` (0) through `drag` (90).
3
+ *
4
+ * Ported from the `create-zudo-doc` base template's
5
+ * `src/config/z-index-tokens.ts` `Z_INDEX_TIERS` export (epic
6
+ * zudolab/zudo-doc#2651, S4 #2654). Consumed by the theme-CSS default
7
+ * (#2655) for the shipped `@theme` z-index block; a project's own
8
+ * `gen-z-index` codegen (from `@takazudo/zudo-doc`'s `gen-z-index` bin)
9
+ * becomes opt-in customization on top of this default rather than the only
10
+ * source.
11
+ *
12
+ * Only `name`/`value` are carried in the exported shape — `purpose`/`kind`
13
+ * were documentation-only in the template and are preserved below as source
14
+ * comments instead.
15
+ *
16
+ * Strategy (from zudolab/zudo-css-wisdom z-index-strategy): semantic single-
17
+ * namespace tokens — names describe ROLES, never magnitudes. One flat ordered
18
+ * list. Values are deliberately gapped but otherwise arbitrary: renaming and
19
+ * reordering is cheap, which is the whole point. Tailwind v4 reads the
20
+ * `--z-index-<name>` theme key and generates a `z-<name>` utility, so e.g.
21
+ * `@theme { --z-index-toolbar: 20 }` produces `.z-toolbar { z-index: 20 }`.
22
+ *
23
+ * `local-1`/`local-2`/`local-3` ("local" kind in the template) are anonymous
24
+ * reusable helpers for promoting a child WITHIN a parent stacking context
25
+ * (`isolation: isolate` / `position: relative`), not a position on the
26
+ * global stacking scale. Every other tier is "global".
27
+ *
28
+ * Rationale for the two zudo-doc-specific additions (NOT in the generic
29
+ * overlay-centric strategy scale):
30
+ * - `sidebar` — persistent layout chrome (desktop sidebar, TOC, sidebar-toggle
31
+ * handle, resizer handle). The strategy's scale has no persistent-sidebar/TOC
32
+ * tier. `toolbar` (the sticky header) is deliberately placed ABOVE `sidebar`
33
+ * to preserve the existing header-wins ordering; they do not overlap
34
+ * spatially, but the historical relationship is kept explicit.
35
+ * - `drag` — transient drag affordance (sidebar-resizer ghost line). Replaces
36
+ * the old `z-9999` anti-pattern with a named top-of-steady-UI tier.
37
+ *
38
+ * `popover`, `toast`, and `tooltip` are reserved canonical tiers from the
39
+ * strategy's scale — kept for completeness (and so downstream `create-zudo-doc`
40
+ * users inherit the full scale) even though zudo-doc does not use them yet.
41
+ */
42
+ export declare const defaultZIndexTiers: ReadonlyArray<{
43
+ name: string;
44
+ value: number;
45
+ }>;
@@ -0,0 +1,34 @@
1
+ const defaultZIndexTiers = [
2
+ // global — default in-flow content (implicit baseline)
3
+ { name: "content", value: 0 },
4
+ // local — child promotion inside an isolated parent stacking context
5
+ { name: "local-1", value: 1 },
6
+ // local — child promotion inside an isolated parent stacking context
7
+ { name: "local-2", value: 2 },
8
+ // local — child promotion inside an isolated parent stacking context
9
+ { name: "local-3", value: 3 },
10
+ // global — persistent layout chrome: desktop sidebar, TOC, sidebar-toggle
11
+ // handle, resizer handle
12
+ { name: "sidebar", value: 10 },
13
+ // global — sticky top header (sits above sidebar chrome)
14
+ { name: "toolbar", value: 20 },
15
+ // global — header menus, version/language switchers
16
+ { name: "dropdown", value: 30 },
17
+ // global — reserved: inline popovers (canonical scale; not yet used)
18
+ { name: "popover", value: 40 },
19
+ // global — mobile drawer backdrop, <dialog> ::backdrop
20
+ { name: "modal-backdrop", value: 50 },
21
+ // global — mobile sidebar drawer panel, search <dialog>
22
+ { name: "modal", value: 60 },
23
+ // global — reserved: transient notifications (canonical scale; not yet used)
24
+ { name: "toast", value: 70 },
25
+ // global — reserved: highest steady UI layer, below only the transient drag
26
+ // tier (canonical scale; not yet used)
27
+ { name: "tooltip", value: 80 },
28
+ // global — transient drag affordance: sidebar-resizer ghost line (replaces
29
+ // the z-9999 anti-pattern)
30
+ { name: "drag", value: 90 }
31
+ ];
32
+ export {
33
+ defaultZIndexTiers
34
+ };
@@ -3,7 +3,7 @@
3
3
 
4
4
  import type { ComponentChildren, VNode } from "preact";
5
5
  import { findPath } from "./find-path.js";
6
- import type { BreadcrumbItem, SidebarNode } from "./types.js";
6
+ import type { BreadcrumbItem, BreadcrumbNode } from "./types.js";
7
7
  import { ChevronRight } from "../icons/index.js";
8
8
 
9
9
  /**
@@ -18,7 +18,7 @@ import { ChevronRight } from "../icons/index.js";
18
18
  * with the original Astro breadcrumb component.
19
19
  */
20
20
  export function buildBreadcrumbItems(
21
- tree: SidebarNode[],
21
+ tree: BreadcrumbNode[],
22
22
  currentId: string,
23
23
  homeHref: string,
24
24
  ): BreadcrumbItem[] {
@@ -111,8 +111,8 @@ export interface BreadcrumbProps {
111
111
  /** Pre-built items, or omit and pass `tree` + `currentId` instead. */
112
112
  items?: BreadcrumbItem[];
113
113
  /** Sidebar tree to derive the trail from. Required when `items` is omitted. */
114
- tree?: SidebarNode[];
115
- /** Id of the current page (matches SidebarNode.id). Required when `items` is omitted. */
114
+ tree?: BreadcrumbNode[];
115
+ /** Id of the current page (matches BreadcrumbNode.id). Required when `items` is omitted. */
116
116
  currentId?: string;
117
117
  /** Href for the leading home rung. Defaults to "/". */
118
118
  homeHref?: string;
@@ -1,4 +1,4 @@
1
- import type { BreadcrumbNode, SidebarNode } from "./types.js";
1
+ import type { BreadcrumbNode } from "./types.js";
2
2
 
3
3
  /**
4
4
  * Walk the sidebar tree and return the chain of nodes from the root
@@ -11,7 +11,7 @@ import type { BreadcrumbNode, SidebarNode } from "./types.js";
11
11
  * ancestry. The home/root crumb is the renderer's responsibility — this
12
12
  * helper deals strictly with the tree itself.
13
13
  */
14
- export function findPath<T extends BreadcrumbNode = SidebarNode>(
14
+ export function findPath<T extends BreadcrumbNode = BreadcrumbNode>(
15
15
  nodes: readonly T[],
16
16
  targetId: string,
17
17
  ): T[] {
@@ -1,4 +1,4 @@
1
1
  export { Breadcrumb, buildBreadcrumbItems } from "./breadcrumb.js";
2
2
  export type { BreadcrumbProps } from "./breadcrumb.js";
3
3
  export { findPath } from "./find-path.js";
4
- export type { BreadcrumbItem, SidebarNode } from "./types.js";
4
+ export type { BreadcrumbItem, BreadcrumbNode } from "./types.js";
@@ -16,12 +16,6 @@ export interface BreadcrumbNode {
16
16
  children?: readonly BreadcrumbNode[];
17
17
  }
18
18
 
19
- /**
20
- * Backward-compatible alias retained for callers that previously imported
21
- * `SidebarNode` from this subpath.
22
- */
23
- export type SidebarNode = BreadcrumbNode;
24
-
25
19
  /**
26
20
  * One rung of the breadcrumb trail. `href` is omitted on the final
27
21
  * (current-page) item so the renderer can present it as plain text.
@@ -14,8 +14,8 @@
14
14
  // component zips the `tabs` label array with the `<pre data-lang>` children
15
15
  // by index, wrapping each in a <TabItem> with the matching label.
16
16
  //
17
- // Code inside each <pre> is raw text (NOT syntect-highlighted — the Rust
18
- // pipeline does not run highlight inside code-group fences). We render
17
+ // Code inside each <pre> is raw text (the class-mode highlighting pipeline
18
+ // does not run inside code-group fences). We render
19
19
  // the <pre> inside a <TabItem> with explicit styling via Tailwind tokens
20
20
  // so it looks like a code block visually.
21
21
  //
@@ -460,7 +460,7 @@ export function DocHistory({ slug, locale, basePath = "/" }: DocHistoryProps) {
460
460
  // under "index" (an empty path segment is unroutable — the server regex
461
461
  // /^\/doc-history\/(.+)\.json$/ rejects ""). The host wrapper already passes
462
462
  // the sentineled slug, but defend the boundary so the component is correct
463
- // for any caller. Mirrors `toHistorySlug` in @/utils/slug (inlined here
463
+ // for any caller. Mirrors `toHistorySlug` in @takazudo/zudo-doc/slug (inlined here
464
464
  // rather than imported to keep this bundled island free of host-util
465
465
  // coupling — see .template-drift-allowlist). (#1891)
466
466
  const historySlug = slug === "" ? "index" : slug;
@@ -50,7 +50,7 @@ export function createDocPager<S extends Settings = Settings>(
50
50
  */
51
51
  function DocPager({ prev, next, locale }: DocPagerProps): JSX.Element {
52
52
  return (
53
- <nav class="mt-vsp-2xl grid grid-cols-2 gap-hsp-xl">
53
+ <nav class="mt-vsp-2xl grid grid-cols-2 gap-hsp-xl" data-doc-pager>
54
54
  {prev ? (
55
55
  <a
56
56
  href={prev.href}
@@ -87,6 +87,7 @@ export function Footer(props: FooterProps): VNode {
87
87
  return (
88
88
  <footer
89
89
  class="border-t border-muted bg-surface"
90
+ data-footer
90
91
  // Strategy B: locale-keyed persist (zudolab/zudo-doc#1546).
91
92
  // The footer's locale-aware bits (link labels, copyright) are SSR'd
92
93
  // per locale; a locale-keyed persist key (`footer-en`, `footer-ja`)