@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,442 @@
1
+ /* ============================================================
2
+ Beacon — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ WCAG-AAA high contrast: 7:1+ ink everywhere, 3px focus rings,
5
+ always-underlined links — clarity as beauty. Pure white/black
6
+ ground; the palette is locked to two AAA-checked accents —
7
+ blue (#0044cc light / #6db3ff dark) and dark red (#a50000 /
8
+ #ff8f8f) — and admits nothing else (success collapses to ink;
9
+ the palette has no green). Atkinson Hyperlegible reading face,
10
+ Atkinson Hyperlegible Mono code. Shape language: square —
11
+ every radius forced to 0. Oversized 112.5% rem grid, 1.7 body
12
+ line-height, thick honest chrome rules (3px header/footer,
13
+ 2px sidebar), fully boxed admonitions with monochrome text
14
+ glyphs in place of the stock emoji icons.
15
+
16
+ Every ink below is verified at >= 7:1 (WCAG AAA) against its
17
+ background in BOTH modes:
18
+ light — muted #595959 7.0:1, accent #0044cc 7.8:1, hover
19
+ #002e8a 12.0:1, red #a50000 8.1:1, deep red #6e0000 12.6:1,
20
+ deep blue #00287a 13.3:1, body ink 21:1
21
+ dark — muted #b3b3b3 10.0:1, accent #6db3ff 9.5:1, hover
22
+ #9cccff 12.5:1, red #ff8f8f 9.6:1, salmon #ffb3ab 12.3:1,
23
+ ice blue #a8d1ff 13.2:1, body ink 21:1
24
+ Admonition backgrounds are pinned to the page ground (not the
25
+ stock 12% variant tint) so every variant title ink keeps its
26
+ full 7:1+ ratio; the 6px signal edge does the color-coding.
27
+
28
+ RADIUS DECISION: 0 across the board — square, uncompromising.
29
+ Clarity comes from thick rules and focus rings, not corners.
30
+
31
+ Every rule below is scoped under html[data-theme-pack="beacon"]
32
+ — this is what makes the runtime pack swap atomic (Decision 3)
33
+ and lets the validator prove a pack can never leak styles while
34
+ inactive (Decision 6.7). The @font-face blocks are the sole
35
+ exception (at-rules can't be selector-scoped).
36
+
37
+ Prototype-selector adaptations against the REAL DOM (tokens-dump
38
+ §6 + component sources), noted inline where they matter:
39
+ - `:where(a, button, …):focus-visible` → expanded into a
40
+ comma list of fully-prefixed branches (the validator checks
41
+ every comma-separated branch for the scope prefix, so the
42
+ comma-bearing :where() argument list can't be used)
43
+ - `.lead` → `.zd-content > p[data-doc-description]`
44
+ (the description paragraph DocContentHeader
45
+ renders now carries a stable data-doc-description
46
+ hook; fails soft on pages without one, #2876)
47
+ - `.doc-pager` → `.zd-content > nav[data-doc-pager] > a`
48
+ (the DocPager nav now carries a stable
49
+ data-doc-pager hook, #2876)
50
+ - `.pager-title` → the pager card's <p> (its only <p>)
51
+ - `footer[data-footer]` → ships literally now — the real footer
52
+ carries the stable data-footer hook (#2876)
53
+ - `.tp-flyout` → `div[data-switcher-card]` (the flyout card
54
+ now carries a stable data-switcher-card
55
+ hook, #2876). The launcher button and
56
+ `.tp-btn` controls carry a data-switcher-launcher
57
+ hook too, but their styling is intentionally
58
+ NOT ported.
59
+ - `.hdr-search` / `.hdr-icon-btn` / `.toc-title` / `.sb-group > p`
60
+ — prototype-mock markup with no stable
61
+ hook; NOT ported.
62
+ - the prototype's `--radius` / `--radius-lg` overrides are not
63
+ part of the token manifest; squareness is carried by the
64
+ `--zdc-*-radius` seams plus explicit border-radius: 0 on the
65
+ stable hooks below.
66
+ ============================================================ */
67
+
68
+ /* ---- Atkinson Hyperlegible — the reading face, designed by the
69
+ Braille Institute for maximum legibility. Static 400/700 +
70
+ true italics. Latin subsets only (both families): a stray
71
+ latin-ext or CJK glyph falls through to the stack's system
72
+ face. ---- */
73
+
74
+ @font-face {
75
+ font-family: "Atkinson Hyperlegible";
76
+ font-style: normal;
77
+ font-weight: 400;
78
+ font-display: swap;
79
+ src: url("./fonts/AtkinsonHyperlegible-400-latin.woff2") format("woff2");
80
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
81
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
82
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
83
+ }
84
+
85
+ @font-face {
86
+ font-family: "Atkinson Hyperlegible";
87
+ font-style: normal;
88
+ font-weight: 700;
89
+ font-display: swap;
90
+ src: url("./fonts/AtkinsonHyperlegible-700-latin.woff2") format("woff2");
91
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
92
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
93
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
94
+ }
95
+
96
+ @font-face {
97
+ font-family: "Atkinson Hyperlegible";
98
+ font-style: italic;
99
+ font-weight: 400;
100
+ font-display: swap;
101
+ src: url("./fonts/AtkinsonHyperlegible-italic-400-latin.woff2") format("woff2");
102
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
103
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
104
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
105
+ }
106
+
107
+ @font-face {
108
+ font-family: "Atkinson Hyperlegible";
109
+ font-style: italic;
110
+ font-weight: 700;
111
+ font-display: swap;
112
+ src: url("./fonts/AtkinsonHyperlegible-italic-700-latin.woff2") format("woff2");
113
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
114
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
115
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
116
+ }
117
+
118
+ /* ---- Atkinson Hyperlegible Mono — code. Variable 200–800 (bold
119
+ code emphasis rides the same file) + a true italic for
120
+ comments. ---- */
121
+
122
+ @font-face {
123
+ font-family: "Atkinson Hyperlegible Mono";
124
+ font-style: normal;
125
+ font-weight: 200 800;
126
+ font-display: swap;
127
+ src: url("./fonts/AtkinsonHyperlegibleMono-latin.woff2") format("woff2");
128
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
129
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
130
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
131
+ }
132
+
133
+ @font-face {
134
+ font-family: "Atkinson Hyperlegible Mono";
135
+ font-style: italic;
136
+ font-weight: 200 800;
137
+ font-display: swap;
138
+ src: url("./fonts/AtkinsonHyperlegibleMono-italic-latin.woff2") format("woff2");
139
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
140
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
141
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
142
+ }
143
+
144
+ html[data-theme-pack="beacon"] {
145
+ /* the oversized readable grid: scale the whole rem system up */
146
+ font-size: 112.5%;
147
+
148
+ /* Tier-2 semantic roles — pure white / pure black ground,
149
+ 21:1 body text in both modes. Both modes always via
150
+ light-dark(). */
151
+ --zd-bg: light-dark(#ffffff, #000000);
152
+ --zd-fg: light-dark(#000000, #ffffff);
153
+ --zd-surface: light-dark(#ffffff, #000000);
154
+ --zd-selection-bg: light-dark(#0044cc, #6db3ff);
155
+ --zd-selection-fg: light-dark(#ffffff, #000000);
156
+ --zd-muted: light-dark(#595959, #b3b3b3);
157
+ --zd-accent: light-dark(#0044cc, #6db3ff);
158
+ --zd-accent-hover: light-dark(#002e8a, #9cccff);
159
+ --zd-code-bg: light-dark(#ffffff, #000000);
160
+ --zd-code-fg: light-dark(#000000, #ffffff);
161
+ /* success collapses to ink — the palette does not admit green */
162
+ --zd-success: light-dark(#000000, #ffffff);
163
+ --zd-danger: light-dark(#a50000, #ff8f8f);
164
+ --zd-warning: light-dark(#a50000, #ff8f8f);
165
+ --zd-info: light-dark(#0044cc, #6db3ff);
166
+
167
+ /* search + chat roles — left to the bundled color scheme these
168
+ resolve to sub-AAA values (search mark 4.9:1, user bubble
169
+ 6.7:1). Matched keywords invert into the accent like the
170
+ selection (7.8:1 light / 9.5:1 dark); chat bubbles stay on
171
+ AAA pairs (user 7.8/9.5, assistant 17.9/16.5). */
172
+ --zd-matched-keyword-bg: light-dark(#0044cc, #6db3ff);
173
+ --zd-matched-keyword-fg: light-dark(#ffffff, #000000);
174
+ --zd-chat-user-bg: light-dark(#0044cc, #6db3ff);
175
+ --zd-chat-user-text: light-dark(#ffffff, #000000);
176
+ --zd-chat-assistant-bg: light-dark(#ededed, #1f1f1f);
177
+ --zd-chat-assistant-text: light-dark(#000000, #ffffff);
178
+
179
+ /* syntax — two blues, two reds, one grey, one ink; all 9 roles
180
+ in both modes, every value >= 7:1 on the page ground. */
181
+ --zd-syntax-comment: light-dark(#595959, #b3b3b3);
182
+ --zd-syntax-string: light-dark(#a50000, #ff8f8f);
183
+ --zd-syntax-number: light-dark(#6e0000, #ffb3ab);
184
+ --zd-syntax-keyword: light-dark(#0044cc, #6db3ff);
185
+ --zd-syntax-callable: light-dark(#00287a, #a8d1ff);
186
+ --zd-syntax-type: light-dark(#6e0000, #ffb3ab);
187
+ --zd-syntax-name: light-dark(#000000, #ffffff);
188
+ --zd-syntax-inserted: light-dark(#000000, #ffffff);
189
+ --zd-syntax-deleted: light-dark(#a50000, #ff8f8f);
190
+ /* features.css derives the deleted-line background as a 15% mix
191
+ of the deleted ink itself, which drops #a50000 to 6.0:1 there —
192
+ a 6% mix keeps the red cue and clears AAA (7.2:1 light /
193
+ 9.0:1 dark; inserted stays 14.9/15.1 even at the stock 15%). */
194
+ --zfb-hi-del-bg: color-mix(in srgb, var(--zd-syntax-deleted) 6%, var(--zd-code-bg));
195
+
196
+ /* fonts — Atkinson Hyperlegible everywhere; headings share the
197
+ reading face (hierarchy comes from size + weight + rules). */
198
+ --font-sans: "Atkinson Hyperlegible", system-ui, sans-serif;
199
+ --font-mono: "Atkinson Hyperlegible Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
200
+
201
+ /* Tier-3 component seams — square, uncompromising */
202
+ --zdc-doc-title-font: var(--font-sans);
203
+ --zdc-doc-title-weight: 700;
204
+ --zdc-doc-title-tracking: -0.01em;
205
+ --zdc-doc-h2-font: var(--font-sans);
206
+ --zdc-doc-h2-weight: 700;
207
+ --zdc-doc-h2-tracking: 0;
208
+ --zdc-doc-link-decoration: underline;
209
+ --zdc-admonition-radius: 0;
210
+ --zdc-admonition-border-width: 6px;
211
+ --zdc-card-radius: 0;
212
+ --zdc-nav-active-indicator-color: var(--zd-fg);
213
+ --zdc-nav-active-weight: 700;
214
+ }
215
+
216
+ /* ---- Beacon extras ---- */
217
+
218
+ html[data-theme-pack="beacon"] body {
219
+ line-height: 1.7;
220
+ }
221
+
222
+ /* the signature: 3px focus rings on every interactive element.
223
+ Written as fully-prefixed branches (not :where(a, button, …))
224
+ so the validator's per-branch scope check passes. */
225
+ html[data-theme-pack="beacon"] a:focus-visible,
226
+ html[data-theme-pack="beacon"] button:focus-visible,
227
+ html[data-theme-pack="beacon"] input:focus-visible,
228
+ html[data-theme-pack="beacon"] select:focus-visible,
229
+ html[data-theme-pack="beacon"] textarea:focus-visible,
230
+ html[data-theme-pack="beacon"] summary:focus-visible,
231
+ html[data-theme-pack="beacon"] [tabindex]:focus-visible {
232
+ outline: 3px solid var(--zd-accent);
233
+ outline-offset: 2px;
234
+ border-radius: 0;
235
+ }
236
+
237
+ /* links are underlined, always — everywhere. `aside a` (not
238
+ `#desktop-sidebar a`) so the rule also reaches the mobile sidebar
239
+ panel, which is a separate hook-less <aside> rendered by the
240
+ SidebarToggle island — the package's only two <aside>s are the
241
+ two sidebars. */
242
+ html[data-theme-pack="beacon"] [data-nav-item],
243
+ html[data-theme-pack="beacon"] aside a,
244
+ html[data-theme-pack="beacon"] main nav[aria-label="Breadcrumb"] a,
245
+ html[data-theme-pack="beacon"] nav[data-zd-toc] a,
246
+ html[data-theme-pack="beacon"] footer[data-footer] a {
247
+ text-decoration: underline;
248
+ text-underline-offset: 0.2em;
249
+ }
250
+
251
+ /* chrome framing: thick, black, honest rules */
252
+ html[data-theme-pack="beacon"] header[data-header] {
253
+ border-bottom: 3px solid var(--zd-fg);
254
+ }
255
+ /* the header logo carries the beacon mark */
256
+ html[data-theme-pack="beacon"] [data-header-logo]::before {
257
+ content: "◉";
258
+ color: var(--zd-accent);
259
+ margin-right: 0.45rem;
260
+ }
261
+ html[data-theme-pack="beacon"] #desktop-sidebar {
262
+ border-right: 2px solid var(--zd-fg);
263
+ }
264
+ html[data-theme-pack="beacon"] aside a,
265
+ html[data-theme-pack="beacon"] a[data-nav-active] {
266
+ border-radius: 0;
267
+ }
268
+ html[data-theme-pack="beacon"] footer[data-footer] {
269
+ border-top: 3px solid var(--zd-fg);
270
+ }
271
+
272
+ /* strong hierarchy in the prose */
273
+ html[data-theme-pack="beacon"] .zd-content h1 {
274
+ font-size: 3rem;
275
+ }
276
+ html[data-theme-pack="beacon"] .zd-content > p[data-doc-description] {
277
+ font-size: 1.3rem;
278
+ }
279
+ /* h2: a 4px ink rule. The SSR-inlined
280
+ `style="border-image:linear-gradient(...)"` bar is defeated with
281
+ border-image none !important (Decision 6.6's sole allowlisted
282
+ carve-out); a solid full-strength top border replaces it. */
283
+ html[data-theme-pack="beacon"] .zd-content h2 {
284
+ border-image: none !important;
285
+ border-top: 4px solid var(--zd-fg);
286
+ font-size: 1.55rem;
287
+ }
288
+ html[data-theme-pack="beacon"] .zd-content h3 {
289
+ font-size: 1.25rem;
290
+ }
291
+ html[data-theme-pack="beacon"] .zd-content blockquote {
292
+ border-left: 6px solid var(--zd-fg);
293
+ color: var(--zd-fg);
294
+ font-style: italic;
295
+ }
296
+ html[data-theme-pack="beacon"] .zd-content hr {
297
+ border-top: 3px solid var(--zd-fg);
298
+ }
299
+
300
+ /* prose links: 2px underlines, 3px on hover — the ring language */
301
+ html[data-theme-pack="beacon"] .zd-content a {
302
+ text-decoration-thickness: 2px;
303
+ text-underline-offset: 0.2em;
304
+ }
305
+ html[data-theme-pack="beacon"] .zd-content a:hover {
306
+ text-decoration-thickness: 3px;
307
+ }
308
+
309
+ /* inline code: crisp square chip behind a hairline ink rule */
310
+ html[data-theme-pack="beacon"] .zd-content code:not(pre code) {
311
+ background: color-mix(in srgb, var(--zd-fg) 7%, var(--zd-bg));
312
+ border: 1px solid color-mix(in srgb, var(--zd-fg) 35%, transparent);
313
+ border-radius: 0;
314
+ }
315
+
316
+ /* code block: page-ground panel behind a 2px ink frame */
317
+ html[data-theme-pack="beacon"] pre.hi-root {
318
+ border: 2px solid var(--zd-fg);
319
+ border-radius: 0;
320
+ }
321
+ html[data-theme-pack="beacon"] .hi-kw,
322
+ html[data-theme-pack="beacon"] .hi-fn {
323
+ font-weight: 700;
324
+ }
325
+ /* comments ride the shipped mono italic face */
326
+ html[data-theme-pack="beacon"] .hi-com {
327
+ font-style: italic;
328
+ }
329
+
330
+ /* find-in-page: the stock warning-tinted washes drop body ink below
331
+ AA on beacon's red warning role — repaint them in the accent.
332
+ Ink stays 12.3:1+ on the 30% wash; the active match inverts like
333
+ the selection (7.8:1 light / 9.5:1 dark). */
334
+ html[data-theme-pack="beacon"] .find-match {
335
+ background-color: color-mix(in srgb, var(--zd-accent) 30%, transparent);
336
+ border-radius: 0;
337
+ }
338
+ html[data-theme-pack="beacon"] .find-match-active {
339
+ background-color: var(--zd-accent);
340
+ color: var(--zd-selection-fg);
341
+ border-radius: 0;
342
+ outline: 2px solid var(--zd-accent);
343
+ }
344
+
345
+ /* admonitions: fully boxed, square, 6px signal edge. Backgrounds
346
+ pin to the page ground (not the stock 12% tint) so every variant
347
+ title ink keeps its full AAA ratio — the border does the
348
+ color-coding. Emoji icons swap for monochrome text glyphs that
349
+ inherit each title's AAA ink. */
350
+ html[data-theme-pack="beacon"] [data-admonition] {
351
+ border-style: solid;
352
+ border-width: 2px 2px 2px var(--zdc-admonition-border-width);
353
+ border-color: var(--zd-muted);
354
+ background-color: var(--zd-bg);
355
+ }
356
+ html[data-theme-pack="beacon"] [data-admonition="note"],
357
+ html[data-theme-pack="beacon"] [data-admonition="important"] {
358
+ border-color: var(--zd-accent);
359
+ }
360
+ html[data-theme-pack="beacon"] [data-admonition="tip"] {
361
+ border-color: var(--zd-success);
362
+ }
363
+ html[data-theme-pack="beacon"] [data-admonition="info"] {
364
+ border-color: var(--zd-info);
365
+ }
366
+ html[data-theme-pack="beacon"] [data-admonition="warning"] {
367
+ border-color: var(--zd-warning);
368
+ }
369
+ html[data-theme-pack="beacon"] [data-admonition="danger"],
370
+ html[data-theme-pack="beacon"] [data-admonition="caution"] {
371
+ border-color: var(--zd-danger);
372
+ }
373
+ html[data-theme-pack="beacon"] [data-admonition="note"] .admonition-title::before {
374
+ content: "◆ ";
375
+ }
376
+ html[data-theme-pack="beacon"] [data-admonition="tip"] .admonition-title::before {
377
+ content: "✓ ";
378
+ }
379
+ html[data-theme-pack="beacon"] [data-admonition="info"] .admonition-title::before {
380
+ content: "● ";
381
+ }
382
+ html[data-theme-pack="beacon"] [data-admonition="warning"] .admonition-title::before {
383
+ content: "▲ ";
384
+ }
385
+ html[data-theme-pack="beacon"] [data-admonition="danger"] .admonition-title::before {
386
+ content: "■ ";
387
+ }
388
+ html[data-theme-pack="beacon"] [data-admonition="important"] .admonition-title::before {
389
+ content: "! ";
390
+ }
391
+ html[data-theme-pack="beacon"] [data-admonition="caution"] .admonition-title::before {
392
+ content: "✕ ";
393
+ }
394
+
395
+ /* table: 3px header rule, honest row rules */
396
+ html[data-theme-pack="beacon"] .zd-content th {
397
+ border-bottom: 3px solid var(--zd-fg);
398
+ font-weight: 700;
399
+ }
400
+ html[data-theme-pack="beacon"] .zd-content td {
401
+ border-bottom: 1px solid color-mix(in srgb, var(--zd-fg) 30%, transparent);
402
+ }
403
+
404
+ /* TOC: 2px spine; the inverted active pill (bg-fg text-bg, 21:1)
405
+ stays stock */
406
+ html[data-theme-pack="beacon"] nav[data-zd-toc] ul {
407
+ border-left: 2px solid color-mix(in srgb, var(--zd-fg) 30%, transparent);
408
+ }
409
+
410
+ /* pager cards: 2px ink frames whose hover echoes the focus-ring
411
+ language. The DocPager is the article's LAST unlabelled
412
+ direct-child nav (breadcrumb and NavCardGrid navs carry
413
+ aria-labels). */
414
+ html[data-theme-pack="beacon"] .zd-content > nav[data-doc-pager] > a {
415
+ border: 2px solid var(--zd-fg);
416
+ border-radius: 0;
417
+ }
418
+ html[data-theme-pack="beacon"] .zd-content > nav[data-doc-pager] > a:hover {
419
+ border-color: var(--zd-accent);
420
+ outline: 3px solid var(--zd-accent);
421
+ outline-offset: 0;
422
+ }
423
+ html[data-theme-pack="beacon"] .zd-content > nav[data-doc-pager] > a p {
424
+ font-weight: 700;
425
+ text-decoration: underline;
426
+ text-decoration-thickness: 2px;
427
+ text-underline-offset: 0.2em;
428
+ }
429
+
430
+ /* theme-pack flyout: square, 3px-framed, hard offset shadow (the
431
+ launcher button's styling is intentionally not ported) */
432
+ html[data-theme-pack="beacon"] div[data-switcher-card] {
433
+ border: 3px solid var(--zd-fg);
434
+ border-radius: 0;
435
+ box-shadow: 6px 6px 0 0 color-mix(in srgb, var(--zd-fg) 18%, transparent);
436
+ }
437
+ html[data-theme-pack="beacon"]
438
+ div[data-switcher-card]
439
+ p[aria-live="polite"]::before {
440
+ content: "◉ ";
441
+ color: var(--zd-accent);
442
+ }
@@ -0,0 +1,95 @@
1
+ Copyright 2017 The Playfair Display Project Authors (https://github.com/clauseggers/Playfair)
2
+ Copyright 2014, 2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. Source Serif 4 is a trademark of Adobe in the United States and/or other countries. (https://github.com/adobe-fonts/source-serif)
3
+ Copyright 2015 The Courier Prime Project Authors (https://github.com/quoteunquoteapps/CourierPrime)
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": "broadsheet",
4
+ "name": "Broadsheet",
5
+ "description": "Newspaper editorial — Playfair masthead, Oxford ink rules, a red drop cap, and a night-edition dark mode.",
6
+ "mode": "light",
7
+ "version": "1.0.1",
8
+ "fonts": {
9
+ "sans": "Source Serif 4",
10
+ "mono": "Courier Prime",
11
+ "display": "Playfair Display",
12
+ "loaded": ["Playfair Display", "Source Serif 4", "Courier Prime"]
13
+ },
14
+ "preview": {
15
+ "light": {
16
+ "bg": "oklch(0.955 0.012 92)",
17
+ "fg": "oklch(0.205 0.012 80)",
18
+ "accent": "oklch(0.455 0.155 27)",
19
+ "syntax": {
20
+ "keyword": "oklch(0.445 0.155 27)",
21
+ "string": "oklch(0.45 0.075 60)",
22
+ "comment": "oklch(0.5 0.016 78)",
23
+ "callable": "oklch(0.42 0.09 252)"
24
+ }
25
+ },
26
+ "dark": {
27
+ "bg": "oklch(0.185 0.012 75)",
28
+ "fg": "oklch(0.935 0.015 90)",
29
+ "accent": "oklch(0.7 0.145 27)",
30
+ "syntax": {
31
+ "keyword": "oklch(0.72 0.14 27)",
32
+ "string": "oklch(0.79 0.07 70)",
33
+ "comment": "oklch(0.7 0.02 85)",
34
+ "callable": "oklch(0.74 0.08 248)"
35
+ }
36
+ }
37
+ }
38
+ }