@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,93 @@
1
+ Copyright 2017 IBM Corp. with Reserved Font Name "Plex" (https://github.com/IBM/plex)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,37 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "slug": "drift",
4
+ "name": "Drift",
5
+ "description": "Floaty slate-blue comfort dark for long reading — soft glows in place of borders, gentle elevation, relaxed Plex type.",
6
+ "mode": "dark",
7
+ "version": "1.0.1",
8
+ "fonts": {
9
+ "sans": "IBM Plex Sans",
10
+ "mono": "IBM Plex Mono",
11
+ "loaded": ["IBM Plex Sans", "IBM Plex Mono"]
12
+ },
13
+ "preview": {
14
+ "light": {
15
+ "bg": "#edf2f6",
16
+ "fg": "#24303d",
17
+ "accent": "#236799",
18
+ "syntax": {
19
+ "keyword": "#49539c",
20
+ "string": "#2b754f",
21
+ "comment": "#596673",
22
+ "callable": "#00688d"
23
+ }
24
+ },
25
+ "dark": {
26
+ "bg": "#181f26",
27
+ "fg": "#d6dee4",
28
+ "accent": "#6cafd9",
29
+ "syntax": {
30
+ "keyword": "#9caeee",
31
+ "string": "#88cba4",
32
+ "comment": "#8494a4",
33
+ "callable": "#75c6e1"
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,478 @@
1
+ /* ============================================================
2
+ Drift — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ Floaty slate-blue comfort dark for long reading — soft glows in
5
+ place of borders, gentle elevation, relaxed IBM Plex type. Dark
6
+ (hero): blue-gray field, desaturated blue accents, soft
7
+ blue-tinted white text — a low-glare comfort dark. Light
8
+ (companion): misty-morning slate — pale blue-gray paper with the
9
+ same desaturated blue accent family, never harsh white. Chrome is
10
+ ringed by glow rather than drawn by border: hairline rings +
11
+ layered soft shadows on code, cards, and admonitions; fixed
12
+ radial light pools drift at opposite page corners; nav/TOC
13
+ actives are pill-shaped and glowing. Syntax is a hushed pastel
14
+ palette around the blue axis.
15
+
16
+ Every rule below is scoped under html[data-theme-pack="drift"]
17
+ — this is what makes the runtime pack swap atomic (Decision 3)
18
+ and lets the validator prove a pack can never leak styles while
19
+ inactive (Decision 6.7). The @font-face blocks are the sole
20
+ exception (at-rules can't be selector-scoped).
21
+
22
+ Prototype-selector adaptations against the REAL DOM (tokens-dump
23
+ §6 + component sources), noted inline where they matter:
24
+ - `.sb-group a` → `#desktop-sidebar a` (hover wash) +
25
+ `a[data-nav-active]` (active pill)
26
+ - `.toc-active` → `nav[data-zd-toc] a[aria-current="true"]`
27
+ (toc/toc.tsx marks the active entry with
28
+ aria-current, not a mock class)
29
+ - `.doc-pager` → `.zd-content > nav[data-doc-pager] > a`
30
+ (the DocPager nav now carries a stable
31
+ data-doc-pager hook, #2876)
32
+ - `footer[data-footer]` → ships literally now — the real footer
33
+ carries the stable data-footer hook (#2876)
34
+ - `.hdr-search` / `.hdr-icon-btn` — prototype-mock markup with no
35
+ stable hook; their pill/glow styling is NOT ported.
36
+ - the theme-switcher flyout + launcher carry stable hooks now
37
+ ([data-switcher-card] / [data-switcher-launcher]) but their
38
+ styling is intentionally NOT ported — no visual intent to
39
+ preserve there.
40
+ - the prototype's `--drift-hairline` / `--drift-shadow` /
41
+ `--drift-halo` helper properties are not part of the token
42
+ manifest, so their light-dark() values are inlined at each use
43
+ site below:
44
+ hairline: light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13))
45
+ shadow: light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6))
46
+ halo: light-dark(oklch(0.55 0.1 240 / 0.1), oklch(0.725 0.092 238 / 0.1))
47
+ - the prototype's `--radius` / `--radius-lg` are likewise not in
48
+ the manifest; the 14–16px "generously soft" radii are applied
49
+ directly at each component site.
50
+ ============================================================ */
51
+
52
+ /* ---- IBM Plex Sans — the reading AND heading face (variable
53
+ 100–700 upright, latin + latin-ext; true italic 400–700,
54
+ latin only — em/blockquote want a real italic, latin-ext
55
+ italic was dropped for payload). ---- */
56
+
57
+ @font-face {
58
+ font-family: "IBM Plex Sans";
59
+ font-style: normal;
60
+ font-weight: 100 700;
61
+ font-display: swap;
62
+ src: url("./fonts/IBMPlexSans-latin.woff2") format("woff2");
63
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
64
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
65
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
66
+ }
67
+
68
+ @font-face {
69
+ font-family: "IBM Plex Sans";
70
+ font-style: normal;
71
+ font-weight: 100 700;
72
+ font-display: swap;
73
+ src: url("./fonts/IBMPlexSans-latin-ext.woff2") format("woff2");
74
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
75
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
76
+ U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
77
+ U+A720-A7FF;
78
+ }
79
+
80
+ @font-face {
81
+ font-family: "IBM Plex Sans";
82
+ font-style: italic;
83
+ font-weight: 100 700;
84
+ font-display: swap;
85
+ src: url("./fonts/IBMPlexSans-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
+ /* ---- IBM Plex Mono — the code face (400/500, latin + latin-ext) ---- */
92
+
93
+ @font-face {
94
+ font-family: "IBM Plex Mono";
95
+ font-style: normal;
96
+ font-weight: 400;
97
+ font-display: swap;
98
+ src: url("./fonts/IBMPlexMono-400-latin.woff2") format("woff2");
99
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
100
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
101
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
102
+ }
103
+
104
+ @font-face {
105
+ font-family: "IBM Plex Mono";
106
+ font-style: normal;
107
+ font-weight: 400;
108
+ font-display: swap;
109
+ src: url("./fonts/IBMPlexMono-400-latin-ext.woff2") format("woff2");
110
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
111
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
112
+ U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
113
+ U+A720-A7FF;
114
+ }
115
+
116
+ @font-face {
117
+ font-family: "IBM Plex Mono";
118
+ font-style: normal;
119
+ font-weight: 500;
120
+ font-display: swap;
121
+ src: url("./fonts/IBMPlexMono-500-latin.woff2") format("woff2");
122
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
123
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
124
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
125
+ }
126
+
127
+ @font-face {
128
+ font-family: "IBM Plex Mono";
129
+ font-style: normal;
130
+ font-weight: 500;
131
+ font-display: swap;
132
+ src: url("./fonts/IBMPlexMono-500-latin-ext.woff2") format("woff2");
133
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
134
+ U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
135
+ U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
136
+ U+A720-A7FF;
137
+ }
138
+
139
+ html[data-theme-pack="drift"] {
140
+ /* Tier-2 semantic roles — misty slate morning / blue-gray comfort
141
+ dark. Both modes always via light-dark(). */
142
+ --zd-bg: light-dark(oklch(0.958 0.008 245), oklch(0.235 0.018 252));
143
+ --zd-fg: light-dark(oklch(0.305 0.028 250), oklch(0.895 0.012 242));
144
+ --zd-selection-bg: light-dark(oklch(0.85 0.05 240), oklch(0.43 0.065 246));
145
+ --zd-selection-fg: light-dark(oklch(0.24 0.03 250), oklch(0.965 0.008 240));
146
+ --zd-surface: light-dark(oklch(0.974 0.006 243), oklch(0.263 0.02 250));
147
+ --zd-muted: light-dark(oklch(0.495 0.032 248), oklch(0.68 0.028 244));
148
+ --zd-accent: light-dark(oklch(0.495 0.105 245), oklch(0.725 0.092 238));
149
+ --zd-accent-hover: light-dark(oklch(0.415 0.11 248), oklch(0.79 0.08 232));
150
+ --zd-code-bg: light-dark(oklch(0.928 0.013 243), oklch(0.278 0.022 251));
151
+ --zd-code-fg: light-dark(oklch(0.3 0.028 250), oklch(0.9 0.012 242));
152
+ --zd-success: light-dark(oklch(0.485 0.095 160), oklch(0.745 0.095 158));
153
+ --zd-danger: light-dark(oklch(0.51 0.14 22), oklch(0.705 0.115 22));
154
+ --zd-warning: light-dark(oklch(0.5 0.1 80), oklch(0.795 0.095 84));
155
+ --zd-info: light-dark(oklch(0.49 0.1 240), oklch(0.735 0.095 234));
156
+
157
+ /* syntax — all 9 roles, both modes: hushed pastels drifting around
158
+ the blue axis — periwinkle keywords, cyan callables, sea-green
159
+ strings, teal types, one warm amber float for numbers. Comments
160
+ and light-mode numbers run a step darker than the prototype's ink
161
+ (comment light L .545 → .505, dark L .600 → .660; number light
162
+ L .545 → .515) to clear WCAG AA (≥4.5:1) on the code panel.
163
+ inserted/deleted reuse the success/danger hues. */
164
+ --zd-syntax-comment: light-dark(oklch(0.505 0.026 248), oklch(0.66 0.03 246));
165
+ --zd-syntax-string: light-dark(oklch(0.505 0.095 158), oklch(0.785 0.088 158));
166
+ --zd-syntax-number: light-dark(oklch(0.515 0.105 72), oklch(0.805 0.09 84));
167
+ --zd-syntax-keyword: light-dark(oklch(0.47 0.118 275), oklch(0.76 0.095 272));
168
+ --zd-syntax-callable: light-dark(oklch(0.485 0.1 232), oklch(0.785 0.088 222));
169
+ --zd-syntax-type: light-dark(oklch(0.5 0.085 195), oklch(0.785 0.078 192));
170
+ --zd-syntax-name: light-dark(oklch(0.305 0.028 250), oklch(0.885 0.014 242));
171
+ --zd-syntax-inserted: light-dark(oklch(0.49 0.095 160), oklch(0.745 0.095 158));
172
+ --zd-syntax-deleted: light-dark(oklch(0.52 0.14 22), oklch(0.705 0.115 22));
173
+
174
+ /* fonts — relaxed Plex everywhere: one quiet family for prose and
175
+ headings, Plex Mono for code. */
176
+ --font-sans: "IBM Plex Sans", system-ui, sans-serif;
177
+ --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
178
+
179
+ /* Tier-3 component seams — semibold Plex headings with gentle
180
+ negative tracking, generously soft 12–14px pillows. */
181
+ --zdc-doc-title-font: var(--font-sans);
182
+ --zdc-doc-title-weight: 600;
183
+ --zdc-doc-title-tracking: -0.015em;
184
+ --zdc-doc-h2-font: var(--font-sans);
185
+ --zdc-doc-h2-weight: 600;
186
+ --zdc-doc-h2-tracking: -0.005em;
187
+ --zdc-doc-link-decoration: underline;
188
+ --zdc-admonition-radius: 12px;
189
+ --zdc-admonition-border-width: 3px;
190
+ --zdc-card-radius: 14px;
191
+ --zdc-nav-active-indicator-color: light-dark(oklch(0.495 0.105 245), oklch(0.725 0.092 238));
192
+ }
193
+
194
+ /* ---- Drift extras ---- */
195
+
196
+ /* relaxed long-read rhythm + floating atmosphere: two faint blue
197
+ pools of light drift at opposite page corners */
198
+ html[data-theme-pack="drift"] body {
199
+ line-height: 1.75;
200
+ background-image:
201
+ radial-gradient(
202
+ 56rem 38rem at 88% -12%,
203
+ light-dark(oklch(0.55 0.1 240 / 0.1), oklch(0.725 0.092 238 / 0.1)),
204
+ transparent 65%
205
+ ),
206
+ radial-gradient(
207
+ 48rem 34rem at -12% 104%,
208
+ light-dark(oklch(0.58 0.08 205 / 0.07), oklch(0.6 0.08 205 / 0.07)),
209
+ transparent 62%
210
+ );
211
+ background-attachment: fixed;
212
+ }
213
+ /* the base stylesheet sets `.zd-content { line-height: var(--leading-relaxed) }`
214
+ (1.625), which beats the inherited body value — restate the relaxed
215
+ 1.75 rhythm on the prose container itself */
216
+ html[data-theme-pack="drift"] .zd-content {
217
+ line-height: 1.75;
218
+ }
219
+
220
+ /* soft focus halo everywhere instead of hard outlines. The light
221
+ ring runs less transparent than the prototype's 65% (composited
222
+ ~2.75:1 on the pale page) to clear the 3:1 focus-indicator
223
+ minimum; dark keeps the softer halo (3.7:1 there). */
224
+ html[data-theme-pack="drift"] :focus-visible {
225
+ outline: 2px solid light-dark(oklch(0.495 0.105 245 / 0.8), oklch(0.725 0.092 238 / 0.65));
226
+ outline-offset: 2px;
227
+ border-radius: 6px;
228
+ }
229
+
230
+ /* slim, quiet scrollbars */
231
+ html[data-theme-pack="drift"],
232
+ html[data-theme-pack="drift"] * {
233
+ scrollbar-width: thin;
234
+ scrollbar-color: color-mix(in oklch, var(--zd-muted) 38%, transparent) transparent;
235
+ }
236
+
237
+ /* header floats: hairline + falling glow replaces the border */
238
+ html[data-theme-pack="drift"] header[data-header] {
239
+ border-bottom-color: transparent;
240
+ background-color: color-mix(in oklch, var(--zd-surface) 88%, transparent);
241
+ -webkit-backdrop-filter: blur(10px);
242
+ backdrop-filter: blur(10px);
243
+ box-shadow:
244
+ 0 1px 0 light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)),
245
+ 0 14px 34px -20px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6));
246
+ }
247
+ html[data-theme-pack="drift"] [data-nav-item] {
248
+ border-radius: 999px;
249
+ transition:
250
+ color 0.2s,
251
+ background-color 0.2s;
252
+ }
253
+ html[data-theme-pack="drift"] [data-nav-item]:hover {
254
+ text-decoration: none;
255
+ color: var(--zd-fg);
256
+ background: color-mix(in oklch, var(--zd-accent) 11%, transparent);
257
+ }
258
+
259
+ /* sidebar: borderless, dissolving into the page with an inset
260
+ hairline; links become soft pills */
261
+ html[data-theme-pack="drift"] #desktop-sidebar {
262
+ border-right-color: transparent;
263
+ background: linear-gradient(
264
+ to right,
265
+ color-mix(in oklch, var(--zd-surface) 55%, var(--zd-bg)),
266
+ var(--zd-bg)
267
+ );
268
+ box-shadow: inset -1px 0 0 light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13));
269
+ }
270
+ html[data-theme-pack="drift"] #desktop-sidebar a {
271
+ border-radius: 999px;
272
+ transition:
273
+ color 0.2s,
274
+ background-color 0.2s,
275
+ box-shadow 0.25s;
276
+ }
277
+ html[data-theme-pack="drift"] #desktop-sidebar a:hover {
278
+ text-decoration: none;
279
+ background: color-mix(in oklch, var(--zd-accent) 10%, transparent);
280
+ }
281
+ /* active item: glowing accent-wash pill — ring + soft halo instead
282
+ of the stock ink fill */
283
+ html[data-theme-pack="drift"] a[data-nav-active] {
284
+ background: color-mix(in oklch, var(--zd-accent) 16%, transparent);
285
+ color: light-dark(oklch(0.36 0.1 246), oklch(0.84 0.07 235));
286
+ border-radius: 999px;
287
+ box-shadow:
288
+ 0 0 0 1px color-mix(in oklch, var(--zd-accent) 30%, transparent),
289
+ 0 0 18px -4px color-mix(in oklch, var(--zd-accent) 45%, transparent);
290
+ }
291
+
292
+ /* headings: quiet luminance instead of heavy rules. The h2 keeps a
293
+ gradient bar but fades it into the accent glow — !important
294
+ defeats the SSR-inlined `style="border-image:linear-gradient(...)"`
295
+ (Decision 6.6's sole allowlisted carve-out). */
296
+ html[data-theme-pack="drift"] .zd-content h1 {
297
+ text-shadow: 0 0 34px color-mix(in oklch, var(--zd-accent) 32%, transparent);
298
+ }
299
+ html[data-theme-pack="drift"] .zd-content h2 {
300
+ border-top-width: 1px;
301
+ border-image: linear-gradient(
302
+ to right,
303
+ color-mix(in oklch, var(--zd-accent) 55%, transparent),
304
+ transparent 72%
305
+ )
306
+ 1 !important;
307
+ }
308
+
309
+ /* links: airy underline that brightens on approach */
310
+ html[data-theme-pack="drift"] .zd-content a {
311
+ text-decoration-color: color-mix(in oklch, var(--zd-accent) 42%, transparent);
312
+ text-decoration-thickness: 1px;
313
+ text-underline-offset: 3px;
314
+ transition:
315
+ color 0.2s,
316
+ text-decoration-color 0.2s;
317
+ }
318
+ html[data-theme-pack="drift"] .zd-content a:hover {
319
+ text-decoration-color: currentColor;
320
+ }
321
+
322
+ /* blockquote: a floating whisper card, no rule */
323
+ html[data-theme-pack="drift"] .zd-content blockquote {
324
+ border-left: none;
325
+ padding: 0.85rem 1.2rem;
326
+ border-radius: 12px;
327
+ background: color-mix(in oklch, var(--zd-accent) 7%, transparent);
328
+ box-shadow: inset 0 0 0 1px light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13));
329
+ font-style: italic;
330
+ }
331
+
332
+ /* inline code: ringed by hairline glow, not border */
333
+ html[data-theme-pack="drift"] .zd-content code:not(pre code) {
334
+ border-color: transparent;
335
+ border-radius: 7px;
336
+ box-shadow: inset 0 0 0 1px light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13));
337
+ }
338
+
339
+ /* code block centerpiece: borderless slab held up by layered glow */
340
+ html[data-theme-pack="drift"] pre.hi-root {
341
+ border-color: transparent;
342
+ border-radius: 14px;
343
+ padding: 1.15rem 1.3rem;
344
+ box-shadow:
345
+ 0 0 0 1px light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)),
346
+ 0 20px 48px -26px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6)),
347
+ 0 0 40px -12px light-dark(oklch(0.55 0.1 240 / 0.1), oklch(0.725 0.092 238 / 0.1));
348
+ background-image: linear-gradient(
349
+ 170deg,
350
+ color-mix(in oklch, var(--zd-accent) 4%, transparent),
351
+ transparent 45%
352
+ );
353
+ }
354
+
355
+ /* admonitions: soft pillows with a tinted glow matching their voice */
356
+ html[data-theme-pack="drift"] [data-admonition] {
357
+ box-shadow: 0 14px 34px -24px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6));
358
+ }
359
+ html[data-theme-pack="drift"] [data-admonition="note"] {
360
+ box-shadow:
361
+ 0 14px 34px -24px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6)),
362
+ 0 0 28px -12px color-mix(in oklch, var(--zd-accent) 50%, transparent);
363
+ }
364
+ html[data-theme-pack="drift"] [data-admonition="tip"] {
365
+ box-shadow:
366
+ 0 14px 34px -24px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6)),
367
+ 0 0 28px -12px color-mix(in oklch, var(--zd-success) 50%, transparent);
368
+ }
369
+ html[data-theme-pack="drift"] [data-admonition="warning"] {
370
+ box-shadow:
371
+ 0 14px 34px -24px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6)),
372
+ 0 0 28px -12px color-mix(in oklch, var(--zd-warning) 50%, transparent);
373
+ }
374
+ html[data-theme-pack="drift"] [data-admonition="note"] .admonition-title::before {
375
+ content: "✦ ";
376
+ }
377
+ html[data-theme-pack="drift"] [data-admonition="tip"] .admonition-title::before {
378
+ content: "❋ ";
379
+ }
380
+ html[data-theme-pack="drift"] [data-admonition="warning"] .admonition-title::before {
381
+ content: "△ ";
382
+ }
383
+
384
+ /* tables: hairline rules, breath on hover */
385
+ html[data-theme-pack="drift"] .zd-content td {
386
+ border-bottom-color: light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13));
387
+ }
388
+ html[data-theme-pack="drift"] .zd-content th {
389
+ border-bottom-color: color-mix(in oklch, var(--zd-muted) 42%, transparent);
390
+ }
391
+ html[data-theme-pack="drift"] .zd-content tbody tr {
392
+ transition: background-color 0.2s;
393
+ }
394
+ html[data-theme-pack="drift"] .zd-content tbody tr:hover {
395
+ background: color-mix(in oklch, var(--zd-accent) 5%, transparent);
396
+ }
397
+
398
+ /* hr: fading mist line */
399
+ html[data-theme-pack="drift"] .zd-content hr {
400
+ border: none;
401
+ height: 1px;
402
+ background: linear-gradient(
403
+ to right,
404
+ transparent,
405
+ light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)) 20%,
406
+ light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)) 80%,
407
+ transparent
408
+ );
409
+ }
410
+
411
+ /* pager cards: levitating panels — glow ring, lift on hover. The
412
+ DocPager nav now carries a stable data-doc-pager hook (#2876). */
413
+ html[data-theme-pack="drift"] .zd-content > nav[data-doc-pager] > a {
414
+ border-color: transparent;
415
+ border-radius: 14px;
416
+ background: color-mix(in oklch, var(--zd-surface) 72%, var(--zd-bg));
417
+ box-shadow:
418
+ 0 0 0 1px light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)),
419
+ 0 16px 38px -24px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6));
420
+ transition:
421
+ box-shadow 0.25s,
422
+ transform 0.25s;
423
+ }
424
+ html[data-theme-pack="drift"] .zd-content > nav[data-doc-pager] > a:hover {
425
+ border-color: transparent;
426
+ transform: translateY(-2px);
427
+ box-shadow:
428
+ 0 0 0 1px color-mix(in oklch, var(--zd-accent) 35%, transparent),
429
+ 0 22px 46px -22px light-dark(oklch(0.38 0.05 250 / 0.17), oklch(0.08 0.02 255 / 0.6)),
430
+ 0 0 30px -8px color-mix(in oklch, var(--zd-accent) 40%, transparent);
431
+ }
432
+
433
+ /* TOC: fading spine, glowing pill for the active line. The real DOM
434
+ marks the active entry with aria-current="true" (toc/toc.tsx). The
435
+ pill pulls left within the ul's padding (the rail-side overflow
436
+ clips at the padding edge — see the foundry note). */
437
+ html[data-theme-pack="drift"] nav[data-zd-toc] ul {
438
+ border-left-color: transparent;
439
+ border-image: linear-gradient(
440
+ to bottom,
441
+ light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13)),
442
+ transparent
443
+ )
444
+ 1;
445
+ }
446
+ html[data-theme-pack="drift"] nav[data-zd-toc] a {
447
+ transition: color 0.2s;
448
+ }
449
+ html[data-theme-pack="drift"] nav[data-zd-toc] a:hover {
450
+ text-decoration: none;
451
+ color: var(--zd-fg);
452
+ }
453
+ html[data-theme-pack="drift"] nav[data-zd-toc] a[aria-current="true"] {
454
+ background: color-mix(in oklch, var(--zd-accent) 15%, transparent);
455
+ color: light-dark(oklch(0.36 0.1 246), oklch(0.845 0.07 235));
456
+ border-radius: 999px;
457
+ padding-left: 0.5rem;
458
+ padding-right: 0.5rem;
459
+ margin-left: -0.5rem;
460
+ box-shadow: 0 0 16px -4px color-mix(in oklch, var(--zd-accent) 42%, transparent);
461
+ }
462
+
463
+ /* breadcrumb: accent on approach, matching the airy content links */
464
+ html[data-theme-pack="drift"] main nav[aria-label="Breadcrumb"] a:hover {
465
+ color: var(--zd-accent);
466
+ }
467
+
468
+ /* footer: dissolves upward, hairline + settling gradient (the real
469
+ footer now carries the stable data-footer hook, #2876) */
470
+ html[data-theme-pack="drift"] footer[data-footer] {
471
+ border-top-color: transparent;
472
+ box-shadow: 0 -1px 0 light-dark(oklch(0.45 0.04 248 / 0.17), oklch(0.78 0.04 240 / 0.13));
473
+ background: linear-gradient(
474
+ to bottom,
475
+ var(--zd-bg),
476
+ color-mix(in oklch, var(--zd-surface) 75%, var(--zd-bg))
477
+ );
478
+ }