@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
@@ -0,0 +1,202 @@
1
+ /* ============================================================
2
+ Foundry — reference zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ GitHub-neutral baseline: white paper, near-black ink, Primer-blue
5
+ links, quiet gray rules. Restraint, perfected. Self-hosted Inter
6
+ (variable, weights 400-700, latin + latin-ext), system mono stack.
7
+
8
+ Every rule below is scoped under html[data-theme-pack="foundry"] —
9
+ this is what makes the runtime pack swap atomic (Decision 3) and lets
10
+ the validator prove a pack can never leak styles while inactive
11
+ (Decision 6.7). The two @font-face blocks are the sole exception
12
+ (at-rules can't be selector-scoped).
13
+
14
+ Prototype-selector adaptation against the REAL DOM:
15
+ - `.doc-pager a` → `.zd-content > nav[data-doc-pager] > a` (the
16
+ DocPager nav carries a stable data-doc-pager
17
+ hook, #2873; hover wash restored in #2880)
18
+ ============================================================ */
19
+
20
+ @font-face {
21
+ font-family: "Inter";
22
+ font-style: normal;
23
+ font-weight: 400 700;
24
+ font-display: swap;
25
+ src: url("./fonts/Inter-latin.woff2") format("woff2");
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
27
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
28
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
29
+ }
30
+
31
+ @font-face {
32
+ font-family: "Inter";
33
+ font-style: normal;
34
+ font-weight: 400 700;
35
+ font-display: swap;
36
+ src: url("./fonts/Inter-latin-ext.woff2") format("woff2");
37
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
38
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
39
+ U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
40
+ U+A720-A7FF;
41
+ }
42
+
43
+ html[data-theme-pack="foundry"] {
44
+ /* Tier-2 semantic roles — GitHub Primer palette, both modes always via
45
+ light-dark(). Radius decision: Primer's 6px — modest rounding. */
46
+ --zd-bg: light-dark(#ffffff, #0d1117);
47
+ --zd-fg: light-dark(#1f2328, #e6edf3);
48
+ --zd-selection-bg: light-dark(#b6d9ff, #1b4b91);
49
+ --zd-selection-fg: light-dark(#1f2328, #ffffff);
50
+ --zd-surface: light-dark(#ffffff, #161b22);
51
+ --zd-muted: light-dark(#59636e, #9198a1);
52
+ --zd-accent: light-dark(#0969da, #4493f8);
53
+ --zd-accent-hover: light-dark(#0550ae, #79c0ff);
54
+ --zd-code-bg: light-dark(#f6f8fa, #161b22);
55
+ --zd-code-fg: light-dark(#1f2328, #e6edf3);
56
+ --zd-success: light-dark(#1a7f37, #3fb950);
57
+ --zd-danger: light-dark(#d1242f, #f85149);
58
+ --zd-warning: light-dark(#9a6700, #d29922);
59
+ --zd-info: light-dark(#0969da, #4493f8);
60
+
61
+ /* syntax — all 9 roles restyled, both modes (the foundry syntax-theming
62
+ proof). Primer's classic highlighting palette; inserted/deleted reuse
63
+ the success/danger hues (Primer's diff colors). */
64
+ --zd-syntax-comment: light-dark(#6e7781, #8b949e);
65
+ --zd-syntax-string: light-dark(#0a3069, #a5d6ff);
66
+ --zd-syntax-number: light-dark(#0550ae, #79c0ff);
67
+ --zd-syntax-keyword: light-dark(#cf222e, #ff7b72);
68
+ --zd-syntax-callable: light-dark(#8250df, #d2a8ff);
69
+ --zd-syntax-type: light-dark(#953800, #ffa657);
70
+ --zd-syntax-name: light-dark(#1f2328, #e6edf3);
71
+ --zd-syntax-inserted: light-dark(#1a7f37, #3fb950);
72
+ --zd-syntax-deleted: light-dark(#d1242f, #f85149);
73
+
74
+ /* fonts — self-hosted Inter (variable, 400-700) for body/prose; system
75
+ mono stack (no webfont fetched for code). */
76
+ --font-sans: "Inter", -apple-system, "Segoe UI", system-ui, sans-serif;
77
+ --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas,
78
+ "Liberation Mono", monospace;
79
+
80
+ /* Tier-3 component seams — semibold, gently tightened Inter headings (the
81
+ Inter signature); bare links until hover, GitHub-style. */
82
+ --zdc-doc-title-weight: 600;
83
+ --zdc-doc-title-tracking: -0.02em;
84
+ --zdc-doc-h2-weight: 600;
85
+ --zdc-doc-h2-tracking: -0.011em;
86
+ --zdc-doc-link-decoration: none;
87
+ --zdc-admonition-radius: 0 6px 6px 0;
88
+ --zdc-admonition-border-width: 4px;
89
+ --zdc-card-radius: 6px;
90
+ }
91
+
92
+ /* ---- Foundry extras: every move is a subtraction ---- */
93
+
94
+ html[data-theme-pack="foundry"] .zd-content a:hover {
95
+ text-decoration: underline;
96
+ }
97
+ /* footer: quiet links, underline only on intent. footer[data-footer] is the
98
+ stable hook (footer/footer.tsx) — the sole <footer> inside
99
+ .zd-sidebar-content-wrapper (doclayout/doc-layout.tsx). */
100
+ html[data-theme-pack="foundry"] footer[data-footer] a {
101
+ text-decoration: none;
102
+ }
103
+ html[data-theme-pack="foundry"] footer[data-footer] a:hover {
104
+ text-decoration: underline;
105
+ }
106
+
107
+ /* headings: flat GitHub hairline rules instead of the default gradient bar.
108
+ The h2 rule needs !important to defeat the SSR-inlined
109
+ `style="border-image:linear-gradient(...)"` (Decision 6.6's sole
110
+ allowlisted carve-out). */
111
+ html[data-theme-pack="foundry"] .zd-content h1 {
112
+ padding-bottom: 0.55rem;
113
+ border-bottom: 1px solid color-mix(in srgb, var(--zd-muted) 42%, transparent);
114
+ }
115
+ html[data-theme-pack="foundry"] .zd-content h2 {
116
+ border-image: none !important;
117
+ border-top-width: 1px;
118
+ border-top-color: color-mix(in srgb, var(--zd-muted) 42%, transparent);
119
+ }
120
+
121
+ /* inline code: neutral wash that holds up in both modes */
122
+ html[data-theme-pack="foundry"] .zd-content code:not(pre code) {
123
+ background-color: color-mix(in srgb, var(--zd-muted) 18%, transparent);
124
+ }
125
+
126
+ /* header nav: pill wash on hover, never an underline */
127
+ html[data-theme-pack="foundry"] [data-nav-item] {
128
+ border-radius: 6px;
129
+ }
130
+ html[data-theme-pack="foundry"] [data-nav-item]:hover {
131
+ text-decoration: none;
132
+ background: color-mix(in srgb, var(--zd-muted) 14%, transparent);
133
+ }
134
+
135
+ /* sidebar: gray hover wash; active item = subtle fill + Primer-blue bar */
136
+ html[data-theme-pack="foundry"] #desktop-sidebar a:hover {
137
+ text-decoration: none;
138
+ background: color-mix(in srgb, var(--zd-muted) 14%, transparent);
139
+ }
140
+ html[data-theme-pack="foundry"] a[data-nav-active] {
141
+ background: color-mix(in srgb, var(--zd-muted) 16%, transparent);
142
+ color: var(--zd-fg);
143
+ font-weight: 600;
144
+ box-shadow: inset 3px 0 0 var(--zd-accent);
145
+ border-radius: 0 6px 6px 0;
146
+ }
147
+
148
+ /* TOC: active entry = 2px Primer-blue bar laid over the rail, ink text — no
149
+ pill. The real DOM marks the active entry with aria-current="true"
150
+ (toc/toc.tsx), not the prototype's .toc-active mock class. */
151
+ html[data-theme-pack="foundry"] nav[data-zd-toc] a:hover {
152
+ text-decoration: none;
153
+ color: var(--zd-fg);
154
+ }
155
+ html[data-theme-pack="foundry"] nav[data-zd-toc] a[aria-current="true"] {
156
+ background: none;
157
+ color: var(--zd-fg);
158
+ font-weight: 600;
159
+ /* The toc <ul> carries the 1px rail + var(--spacing-hsp-lg) left padding.
160
+ Its overflow-y-auto makes overflow-x compute to auto too, clipping
161
+ descendants at the padding edge — so the bar can't paint OVER the rail;
162
+ pull back exactly to the padding edge instead, so the 2px blue bar sits
163
+ snug against the rail and stays fully visible. Text position is
164
+ preserved (-pad + 2px border + pad - 2px = 0). Depth-3/4 items
165
+ (indented via their <li>) show the bar at their own indent, same as
166
+ the prototype. */
167
+ margin-left: calc(-1 * var(--spacing-hsp-lg, 1rem));
168
+ padding-left: calc(var(--spacing-hsp-lg, 1rem) - 2px);
169
+ border-left: 2px solid var(--zd-accent);
170
+ }
171
+
172
+ /* admonitions: GitHub alert style — colored bar and title, no tinted fill.
173
+ With the fill gone, the default generous vertical padding reads as dead
174
+ air — tighten to the prototype's GitHub-alert hug. */
175
+ html[data-theme-pack="foundry"] [data-admonition] {
176
+ background-color: transparent;
177
+ padding: 0.35rem 1rem 0.35rem;
178
+ }
179
+ html[data-theme-pack="foundry"] [data-admonition="note"] .admonition-title::before {
180
+ content: "ⓘ ";
181
+ }
182
+ html[data-theme-pack="foundry"] [data-admonition="tip"] .admonition-title::before {
183
+ content: "✦ ";
184
+ }
185
+ html[data-theme-pack="foundry"] [data-admonition="warning"] .admonition-title::before {
186
+ content: "⚠︎ ";
187
+ }
188
+
189
+ /* tables: Primer zebra striping */
190
+ html[data-theme-pack="foundry"] .zd-content tbody tr:nth-child(even) {
191
+ background-color: var(--zd-code-bg);
192
+ }
193
+
194
+ /* pager cards: quiet gray hover wash under the default blue-border cue —
195
+ the prototype's `.doc-pager a:hover` treatment, dropped in the #2828
196
+ parity pass because `.zd-content > nav` over-matched NavCardGrid, and
197
+ restored (#2880) against the stable data-doc-pager hook (#2873). 8% muted
198
+ — one notch softer than the 14% nav/sidebar washes, since the pager card
199
+ is a much larger surface. */
200
+ html[data-theme-pack="foundry"] .zd-content > nav[data-doc-pager] > a:hover {
201
+ background: color-mix(in srgb, var(--zd-muted) 8%, transparent);
202
+ }
@@ -0,0 +1,95 @@
1
+ Copyright 2020 The Jost Project Authors (https://github.com/indestructible-type)
2
+ Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)
3
+ Copyright 2016 The Space Mono Project Authors (https://github.com/googlefonts/spacemono)
4
+
5
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
6
+ This license is copied below, and is also available with a FAQ at:
7
+ https://scripts.sil.org/OFL
8
+
9
+
10
+ -----------------------------------------------------------
11
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
12
+ -----------------------------------------------------------
13
+
14
+ PREAMBLE
15
+ The goals of the Open Font License (OFL) are to stimulate worldwide
16
+ development of collaborative font projects, to support the font creation
17
+ efforts of academic and linguistic communities, and to provide a free and
18
+ open framework in which fonts may be shared and improved in partnership
19
+ with others.
20
+
21
+ The OFL allows the licensed fonts to be used, studied, modified and
22
+ redistributed freely as long as they are not sold by themselves. The
23
+ fonts, including any derivative works, can be bundled, embedded,
24
+ redistributed and/or sold with any software provided that any reserved
25
+ names are not used by derivative works. The fonts and derivatives,
26
+ however, cannot be released under any other type of license. The
27
+ requirement for fonts to remain under this license does not apply
28
+ to any document created using the fonts or their derivatives.
29
+
30
+ DEFINITIONS
31
+ "Font Software" refers to the set of files released by the Copyright
32
+ Holder(s) under this license and clearly marked as such. This may
33
+ include source files, build scripts and documentation.
34
+
35
+ "Reserved Font Name" refers to any names specified as such after the
36
+ copyright statement(s).
37
+
38
+ "Original Version" refers to the collection of Font Software components as
39
+ distributed by the Copyright Holder(s).
40
+
41
+ "Modified Version" refers to any derivative made by adding to, deleting,
42
+ or substituting -- in part or in whole -- any of the components of the
43
+ Original Version, by changing formats or by porting the Font Software to a
44
+ new environment.
45
+
46
+ "Author" refers to any designer, engineer, programmer, technical
47
+ writer or other person who contributed to the Font Software.
48
+
49
+ PERMISSION & CONDITIONS
50
+ Permission is hereby granted, free of charge, to any person obtaining
51
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
52
+ redistribute, and sell modified and unmodified copies of the Font
53
+ Software, subject to the following conditions:
54
+
55
+ 1) Neither the Font Software nor any of its individual components,
56
+ in Original or Modified Versions, may be sold by itself.
57
+
58
+ 2) Original or Modified Versions of the Font Software may be bundled,
59
+ redistributed and/or sold with any software, provided that each copy
60
+ contains the above copyright notice and this license. These can be
61
+ included either as stand-alone text files, human-readable headers or
62
+ in the appropriate machine-readable metadata fields within text or
63
+ binary files as long as those fields can be easily viewed by the user.
64
+
65
+ 3) No Modified Version of the Font Software may use the Reserved Font
66
+ Name(s) unless explicit written permission is granted by the corresponding
67
+ Copyright Holder. This restriction only applies to the primary font name as
68
+ presented to the users.
69
+
70
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
71
+ Software shall not be used to promote, endorse or advertise any
72
+ Modified Version, except to acknowledge the contribution(s) of the
73
+ Copyright Holder(s) and the Author(s) or with their explicit written
74
+ permission.
75
+
76
+ 5) The Font Software, modified or unmodified, in part or in whole,
77
+ must be distributed entirely under this license, and must not be
78
+ distributed under any other license. The requirement for fonts to
79
+ remain under this license does not apply to any document created
80
+ using the Font Software.
81
+
82
+ TERMINATION
83
+ This license becomes null and void if any of the above conditions are
84
+ not met.
85
+
86
+ DISCLAIMER
87
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
88
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
89
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
90
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
91
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
92
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
93
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
94
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
95
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,38 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "slug": "futura-editorial",
4
+ "name": "Futura Editorial",
5
+ "description": "Normal-weight geometric Futura headings over Noto Sans body — clean white, near-black ink, one restrained red accent.",
6
+ "mode": "light",
7
+ "version": "1.0.1",
8
+ "fonts": {
9
+ "sans": "Noto Sans",
10
+ "mono": "Space Mono",
11
+ "display": "Jost",
12
+ "loaded": ["Jost", "Noto Sans", "Space Mono"]
13
+ },
14
+ "preview": {
15
+ "light": {
16
+ "bg": "oklch(1 0 0)",
17
+ "fg": "oklch(0.17 0 0)",
18
+ "accent": "oklch(0.505 0.18 28)",
19
+ "syntax": {
20
+ "keyword": "oklch(0.505 0.18 28)",
21
+ "string": "oklch(0.47 0.09 160)",
22
+ "comment": "oklch(0.52 0 0)",
23
+ "callable": "oklch(0.45 0.1 250)"
24
+ }
25
+ },
26
+ "dark": {
27
+ "bg": "oklch(0.165 0 0)",
28
+ "fg": "oklch(0.935 0 0)",
29
+ "accent": "oklch(0.72 0.15 29)",
30
+ "syntax": {
31
+ "keyword": "oklch(0.72 0.15 29)",
32
+ "string": "oklch(0.76 0.1 160)",
33
+ "comment": "oklch(0.63 0 0)",
34
+ "callable": "oklch(0.73 0.095 250)"
35
+ }
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,313 @@
1
+ /* ============================================================
2
+ Geometric editorial — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ Normal-weight Jost headings over a Noto Sans reading face — clean
5
+ white paper, near-black ink, ONE restrained editorial red. Jost is
6
+ the mandated OFL homage for the classic commercial geometric sans
7
+ this pack is named after (ADR Decision 5); the commercial name is
8
+ never load-bearing and never appears in this stylesheet. Signature
9
+ moves: weight-400 display headings with tight tracking and a red
10
+ tick above the h1; all radii zeroed with solid ink hairline rules
11
+ on masthead, h2, thead, and footer; a near-monochrome Space Mono
12
+ syntax palette reserving the single red for keywords; emoji
13
+ admonition icons swapped for uppercase typographic labels.
14
+
15
+ Every rule below is scoped under the pack's own
16
+ html[data-theme-pack="…"] attribute selector — this is what makes
17
+ the runtime pack swap atomic (Decision 3) and lets the validator
18
+ prove a pack can never leak styles while inactive (Decision 6.7).
19
+ The @font-face blocks are the sole exception (at-rules can't be
20
+ selector-scoped).
21
+
22
+ Prototype-selector adaptations against the REAL DOM (tokens-dump
23
+ §6 + component sources), noted inline where they matter:
24
+ - `.lead` → `p[data-doc-description]` (the description
25
+ paragraph DocContentHeader/DocPageShell emit —
26
+ stable hook, kept anchored under the structural
27
+ `.zd-content >` chain)
28
+ - `.sb-group > p` → the static group heads don't exist in the real
29
+ SidebarTree island; not ported. The active link
30
+ already renders the prototype's ink fill (the
31
+ stock a[data-nav-active] ink indicator).
32
+ - `.toc-title` → no desktop TOC heading exists (#1655), and the
33
+ prototype's `.toc-active` ink fill IS the stock
34
+ active style — the TOC needs no extras at all.
35
+ - `.doc-pager` → `.zd-content > nav[data-doc-pager]` (stable hook
36
+ on the DocPager <nav>, kept anchored under the
37
+ structural `.zd-content >` chain).
38
+ - `footer[data-footer]` → `footer[data-footer]` (stable hook on the
39
+ sole <footer> inside .zd-sidebar-content-wrapper).
40
+ The prototype's uppercase colophon line has no
41
+ stable hook and is intentionally not ported.
42
+ - the theme-switcher flyout has stable hooks now ([data-switcher-card]
43
+ / [data-switcher-launcher]), but this pack styles neither — its
44
+ square-card print-offset shadow is intentionally NOT ported.
45
+
46
+ Fonts: latin subsets only (all three families) to stay well inside
47
+ the ~250 KB payload budget — a stray latin-ext glyph falls back to
48
+ the stack's system face.
49
+ ============================================================ */
50
+
51
+ /* ---- Jost — display/heading face. Variable file covering 400–600:
52
+ weight 400 carries the headings (the signature), 500 the small
53
+ uppercase labels. ---- */
54
+
55
+ @font-face {
56
+ font-family: "Jost";
57
+ font-style: normal;
58
+ font-weight: 400 600;
59
+ font-display: swap;
60
+ src: url("./fonts/Jost-latin.woff2") format("woff2");
61
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
62
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
63
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
64
+ }
65
+
66
+ /* ---- Noto Sans — reading text. Weight-range variable file (400–700),
67
+ both styles — prose emphasis wants TRUE italics. ---- */
68
+
69
+ @font-face {
70
+ font-family: "Noto Sans";
71
+ font-style: normal;
72
+ font-weight: 400 700;
73
+ font-display: swap;
74
+ src: url("./fonts/NotoSans-latin.woff2") format("woff2");
75
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
76
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
77
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
78
+ }
79
+
80
+ @font-face {
81
+ font-family: "Noto Sans";
82
+ font-style: italic;
83
+ font-weight: 400 700;
84
+ font-display: swap;
85
+ src: url("./fonts/NotoSans-italic-latin.woff2") format("woff2");
86
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
87
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
88
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
89
+ }
90
+
91
+ /* ---- Space Mono — code face (static 400 + 700; the 700 keeps
92
+ keywords genuinely bold, not smeared). ---- */
93
+
94
+ @font-face {
95
+ font-family: "Space Mono";
96
+ font-style: normal;
97
+ font-weight: 400;
98
+ font-display: swap;
99
+ src: url("./fonts/SpaceMono-400-latin.woff2") format("woff2");
100
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
101
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
102
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
103
+ }
104
+
105
+ @font-face {
106
+ font-family: "Space Mono";
107
+ font-style: normal;
108
+ font-weight: 700;
109
+ font-display: swap;
110
+ src: url("./fonts/SpaceMono-700-latin.woff2") format("woff2");
111
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
112
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
113
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
114
+ }
115
+
116
+ html[data-theme-pack="futura-editorial"] {
117
+ /* Tier-2 semantic roles — ink on paper both ways: a pure-white /
118
+ near-black flip, the same restrained editorial red in both modes.
119
+ Both modes always via light-dark(). */
120
+ --zd-bg: light-dark(oklch(1 0 0), oklch(0.165 0 0));
121
+ --zd-fg: light-dark(oklch(0.17 0 0), oklch(0.935 0 0));
122
+ --zd-selection-bg: light-dark(oklch(0.17 0 0), oklch(0.935 0 0));
123
+ --zd-selection-fg: light-dark(oklch(1 0 0), oklch(0.165 0 0));
124
+ --zd-surface: light-dark(oklch(1 0 0), oklch(0.145 0 0));
125
+ --zd-muted: light-dark(oklch(0.44 0 0), oklch(0.71 0 0));
126
+ --zd-accent: light-dark(oklch(0.505 0.18 28), oklch(0.72 0.15 29));
127
+ --zd-accent-hover: light-dark(oklch(0.42 0.16 28), oklch(0.78 0.12 29));
128
+ --zd-code-bg: light-dark(oklch(0.965 0 0), oklch(0.215 0 0));
129
+ --zd-code-fg: light-dark(oklch(0.22 0 0), oklch(0.93 0 0));
130
+ --zd-success: light-dark(oklch(0.46 0.11 155), oklch(0.72 0.12 155));
131
+ --zd-danger: light-dark(oklch(0.505 0.18 28), oklch(0.7 0.16 28));
132
+ --zd-warning: light-dark(oklch(0.5 0.11 75), oklch(0.78 0.12 80));
133
+ --zd-info: light-dark(oklch(0.46 0.1 250), oklch(0.72 0.1 250));
134
+
135
+ /* syntax — all 9 roles, both modes: near-monochrome editorial ink
136
+ with the red reserved for keywords; strings/numbers/callables stay
137
+ low-chroma. inserted/deleted reuse the success/danger hues. The
138
+ light comment is nudged from the prototype's 0.55 gray to 0.52 to
139
+ clear WCAG 4.5:1 on the code background. */
140
+ --zd-syntax-comment: light-dark(oklch(0.52 0 0), oklch(0.63 0 0));
141
+ --zd-syntax-string: light-dark(oklch(0.47 0.09 160), oklch(0.76 0.1 160));
142
+ --zd-syntax-number: light-dark(oklch(0.5 0.1 60), oklch(0.78 0.11 75));
143
+ --zd-syntax-keyword: light-dark(oklch(0.505 0.18 28), oklch(0.72 0.15 29));
144
+ --zd-syntax-callable: light-dark(oklch(0.45 0.1 250), oklch(0.73 0.095 250));
145
+ --zd-syntax-type: light-dark(oklch(0.42 0.06 250), oklch(0.79 0.06 250));
146
+ --zd-syntax-name: light-dark(oklch(0.2 0 0), oklch(0.93 0 0));
147
+ --zd-syntax-inserted: light-dark(oklch(0.46 0.11 155), oklch(0.72 0.12 155));
148
+ --zd-syntax-deleted: light-dark(oklch(0.505 0.18 28), oklch(0.7 0.16 28));
149
+
150
+ /* fonts — Noto Sans carries the reading text, Space Mono the code,
151
+ Jost the display face for headings and labels. */
152
+ --font-sans: "Noto Sans", system-ui, sans-serif;
153
+ --font-mono: "Space Mono", ui-monospace, monospace;
154
+ --font-display: "Jost", system-ui, sans-serif;
155
+
156
+ /* Tier-3 component seams — NORMAL-weight display headings with tight
157
+ tracking (the signature move); square print geometry: zero radii,
158
+ hairline 2px admonition spines. */
159
+ --zdc-doc-title-font: var(--font-display);
160
+ --zdc-doc-title-weight: 400;
161
+ --zdc-doc-title-tracking: -0.02em;
162
+ --zdc-doc-h2-font: var(--font-display);
163
+ --zdc-doc-h2-weight: 400;
164
+ --zdc-doc-h2-tracking: -0.01em;
165
+ --zdc-doc-h3-weight: 500;
166
+ --zdc-admonition-radius: 0;
167
+ --zdc-admonition-border-width: 2px;
168
+ --zdc-card-radius: 0;
169
+ }
170
+
171
+ /* ---- extras ---- */
172
+
173
+ /* masthead: geometric logotype over a solid ink rule */
174
+ html[data-theme-pack="futura-editorial"] header[data-header] {
175
+ border-bottom: 1px solid var(--zd-fg);
176
+ }
177
+ html[data-theme-pack="futura-editorial"] [data-header-logo] {
178
+ font-family: var(--font-display);
179
+ font-weight: 400;
180
+ font-size: 1.05rem;
181
+ text-transform: uppercase;
182
+ letter-spacing: 0.16em;
183
+ }
184
+ html[data-theme-pack="futura-editorial"] [data-nav-item] {
185
+ font-family: var(--font-display);
186
+ font-weight: 500;
187
+ letter-spacing: 0.04em;
188
+ }
189
+
190
+ /* sidebar: the stock ink-fill active indicator already matches the
191
+ prototype; only its optical tracking tweak is ported */
192
+ html[data-theme-pack="futura-editorial"] a[data-nav-active] {
193
+ letter-spacing: 0.01em;
194
+ }
195
+
196
+ /* title block: red tick above the h1 (signature move #1) */
197
+ html[data-theme-pack="futura-editorial"] .zd-content h1::before {
198
+ content: "";
199
+ display: block;
200
+ width: 3.25rem;
201
+ height: 0.25rem;
202
+ background: var(--zd-accent);
203
+ margin-bottom: 1.4rem;
204
+ }
205
+
206
+ /* the deck: display-face standfirst under the headline (prototype
207
+ `.lead` — see the adaptation note in the header comment) */
208
+ html[data-theme-pack="futura-editorial"] .zd-content > p[data-doc-description] {
209
+ font-family: var(--font-display);
210
+ font-weight: 400;
211
+ font-size: 1.3rem;
212
+ line-height: 1.5;
213
+ }
214
+
215
+ /* headings: full-width solid ink hairline over h2 instead of the stock
216
+ fade (signature move #2). The h2 rule needs !important to defeat the
217
+ SSR-inlined `style="border-image:linear-gradient(...)"` (Decision
218
+ 6.6's sole allowlisted carve-out). */
219
+ html[data-theme-pack="futura-editorial"] .zd-content h2 {
220
+ border-image: none !important;
221
+ border-top-width: 1px;
222
+ border-top-color: var(--zd-fg);
223
+ }
224
+ html[data-theme-pack="futura-editorial"] .zd-content h3 {
225
+ font-family: var(--font-display);
226
+ letter-spacing: 0.01em;
227
+ font-size: 1.2rem;
228
+ }
229
+
230
+ /* prose details: hairline underlines with print offset */
231
+ html[data-theme-pack="futura-editorial"] .zd-content a {
232
+ text-decoration-thickness: 1px;
233
+ text-underline-offset: 0.2em;
234
+ }
235
+ html[data-theme-pack="futura-editorial"] .zd-content blockquote {
236
+ border-left: 2px solid var(--zd-fg);
237
+ color: var(--zd-fg);
238
+ font-family: var(--font-display);
239
+ font-weight: 400;
240
+ font-size: 1.2rem;
241
+ line-height: 1.5;
242
+ padding: 0.35rem 0 0.35rem 1.25rem;
243
+ }
244
+
245
+ /* code: Space Mono at print scale inside a quiet ink hairline frame;
246
+ square corners (print has none) */
247
+ html[data-theme-pack="futura-editorial"] pre.hi-root {
248
+ font-size: 0.85rem;
249
+ border-color: color-mix(in oklch, var(--zd-fg) 20%, transparent);
250
+ border-radius: 0;
251
+ }
252
+ html[data-theme-pack="futura-editorial"] .hi-com {
253
+ font-style: italic;
254
+ }
255
+ html[data-theme-pack="futura-editorial"] .zd-content code:not(pre code) {
256
+ font-weight: 400;
257
+ border-radius: 0;
258
+ }
259
+
260
+ /* admonitions: uppercase typographic labels, em-dash ticks instead of
261
+ emoji across all seven variants (signature move #4) */
262
+ html[data-theme-pack="futura-editorial"] [data-admonition] .admonition-title {
263
+ font-family: var(--font-display);
264
+ font-weight: 500;
265
+ text-transform: uppercase;
266
+ letter-spacing: 0.14em;
267
+ font-size: 0.8rem;
268
+ }
269
+ html[data-theme-pack="futura-editorial"] [data-admonition="note"] .admonition-title::before,
270
+ html[data-theme-pack="futura-editorial"] [data-admonition="tip"] .admonition-title::before,
271
+ html[data-theme-pack="futura-editorial"] [data-admonition="info"] .admonition-title::before,
272
+ html[data-theme-pack="futura-editorial"] [data-admonition="warning"] .admonition-title::before,
273
+ html[data-theme-pack="futura-editorial"] [data-admonition="danger"] .admonition-title::before,
274
+ html[data-theme-pack="futura-editorial"] [data-admonition="important"] .admonition-title::before,
275
+ html[data-theme-pack="futura-editorial"] [data-admonition="caution"] .admonition-title::before {
276
+ content: "\2014\2002";
277
+ }
278
+
279
+ /* tables: uppercase display column heads over a solid ink rule
280
+ (signature move #3) */
281
+ html[data-theme-pack="futura-editorial"] .zd-content th {
282
+ font-family: var(--font-display);
283
+ font-weight: 500;
284
+ text-transform: uppercase;
285
+ letter-spacing: 0.1em;
286
+ font-size: 0.78rem;
287
+ border-bottom: 2px solid var(--zd-fg);
288
+ }
289
+
290
+ /* pager: square folio cards, ink border on hover, uppercase display
291
+ labels (DocPager selector — see the header adaptation note) */
292
+ html[data-theme-pack="futura-editorial"] .zd-content > nav[data-doc-pager] a {
293
+ border-radius: 0;
294
+ }
295
+ html[data-theme-pack="futura-editorial"] .zd-content > nav[data-doc-pager] a:hover {
296
+ border-color: var(--zd-fg);
297
+ }
298
+ html[data-theme-pack="futura-editorial"] .zd-content > nav[data-doc-pager] a > div {
299
+ font-family: var(--font-display);
300
+ font-weight: 500;
301
+ text-transform: uppercase;
302
+ letter-spacing: 0.12em;
303
+ font-size: 0.68rem;
304
+ }
305
+ html[data-theme-pack="futura-editorial"] .zd-content > nav[data-doc-pager] a p {
306
+ font-family: var(--font-display);
307
+ font-weight: 500;
308
+ }
309
+
310
+ /* footer: colophon under a solid ink hairline */
311
+ html[data-theme-pack="futura-editorial"] footer[data-footer] {
312
+ border-top: 1px solid var(--zd-fg);
313
+ }