@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
@@ -20,30 +20,9 @@ export declare const MERMAID_CDN_MODULE_URL = "https://esm.sh/mermaid@11.15.0";
20
20
  /**
21
21
  * Build the inline init script with a caller-supplied module URL.
22
22
  *
23
- * Why a builder (vs. just exporting `MERMAID_INIT_SCRIPT`): the
24
- * constant interpolates `MERMAID_CDN_MODULE_URL` at module-load time,
25
- * so reassigning the exported binding has no runtime effect — ESM
26
- * exports are read-only and the script string is already frozen by
27
- * the time consumers see it. Hosts that need a self-hosted /
23
+ * Hosts that need a self-hosted /
28
24
  * version-pinned / CSP-allowlisted mermaid URL call this builder
29
25
  * with their URL and pass the result to `<MermaidInit script={…}/>`
30
26
  * (or to their own `<script dangerouslySetInnerHTML>` site).
31
- *
32
- * The default-URL flow stays available via `MERMAID_INIT_SCRIPT`
33
- * (built once below by calling this builder with
34
- * `MERMAID_CDN_MODULE_URL`) so existing callers keep working
35
- * unchanged.
36
27
  */
37
28
  export declare function buildMermaidInitScript(cdnUrl: string): string;
38
- /**
39
- * Default-URL init script. Built once at module load by passing
40
- * `MERMAID_CDN_MODULE_URL` to `buildMermaidInitScript`. Kept as the
41
- * primary export for backward compatibility — `<MermaidInit/>` (no
42
- * props) and any direct consumer that grabs this string both end up
43
- * importing mermaid from `https://esm.sh/mermaid@11`.
44
- *
45
- * For a custom URL (self-hosted mirror, version-pinned package,
46
- * CSP-allowlisted host) call `buildMermaidInitScript(yourUrl)` and
47
- * pass the result to `<MermaidInit script={…}/>`.
48
- */
49
- export declare const MERMAID_INIT_SCRIPT: string;
@@ -396,9 +396,7 @@ function buildMermaidInitScript(cdnUrl) {
396
396
  });
397
397
  })();`;
398
398
  }
399
- const MERMAID_INIT_SCRIPT = buildMermaidInitScript(MERMAID_CDN_MODULE_URL);
400
399
  export {
401
400
  MERMAID_CDN_MODULE_URL,
402
- MERMAID_INIT_SCRIPT,
403
401
  buildMermaidInitScript
404
402
  };
@@ -42,4 +42,3 @@ export interface MermaidInitProps {
42
42
  * changes the color scheme via the color-tweak panel.
43
43
  */
44
44
  export declare function MermaidInit(props?: MermaidInitProps): JSX.Element;
45
- export default MermaidInit;
@@ -1,14 +1,13 @@
1
1
  import { jsx } from "preact/jsx-runtime";
2
2
  import {
3
- MERMAID_INIT_SCRIPT,
3
+ MERMAID_CDN_MODULE_URL,
4
4
  buildMermaidInitScript
5
5
  } from "./mermaid-init-script.js";
6
+ const MERMAID_INIT_SCRIPT = buildMermaidInitScript(MERMAID_CDN_MODULE_URL);
6
7
  function MermaidInit(props = {}) {
7
8
  const script = props.script ?? (props.cdnUrl ? buildMermaidInitScript(props.cdnUrl) : MERMAID_INIT_SCRIPT);
8
9
  return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: script } });
9
10
  }
10
- var mermaid_init_default = MermaidInit;
11
11
  export {
12
- MermaidInit,
13
- mermaid_init_default as default
12
+ MermaidInit
14
13
  };
@@ -18,4 +18,3 @@ import type { JSX } from "preact";
18
18
  * Requires `<Tabs>` to have server-rendered the tab buttons in the DOM.
19
19
  */
20
20
  export declare function TabsInit(): JSX.Element;
21
- export default TabsInit;
@@ -3,8 +3,6 @@ import { TABS_INIT_SCRIPT } from "./tabs-init-script.js";
3
3
  function TabsInit() {
4
4
  return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: TABS_INIT_SCRIPT } });
5
5
  }
6
- var tabs_init_default = TabsInit;
7
6
  export {
8
- TabsInit,
9
- tabs_init_default as default
7
+ TabsInit
10
8
  };
@@ -30,4 +30,3 @@ export interface TabsProps {
30
30
  * ```
31
31
  */
32
32
  export declare function Tabs({ groupId, children }: TabsProps): JSX.Element;
33
- export default Tabs;
@@ -55,8 +55,6 @@ function Tabs({ groupId, children }) {
55
55
  }
56
56
  );
57
57
  }
58
- var tabs_default = Tabs;
59
58
  export {
60
- Tabs,
61
- tabs_default as default
59
+ Tabs
62
60
  };
@@ -55,6 +55,16 @@ export interface Ramps {
55
55
  export type SemanticKey = "surface" | "muted" | "accent" | "accentHover" | "codeBg" | "codeFg" | "success" | "danger" | "warning" | "info" | "mermaidNodeBg" | "mermaidText" | "mermaidLine" | "mermaidLabelBg" | "mermaidNoteBg" | "chatUserBg" | "chatUserText" | "chatAssistantBg" | "chatAssistantText" | "imageOverlayBg" | "imageOverlayFg" | "matchedKeywordBg" | "matchedKeywordFg";
56
56
  /** Canonical order of the 23 semantic roles — used for `--zd-*` emit. */
57
57
  export declare const SEMANTIC_KEYS: readonly SemanticKey[];
58
+ /**
59
+ * Compact Tier-2 syntax vocabulary. zfb's fixed 18-role renderer taxonomy is
60
+ * intentionally collapsed onto these nine public design decisions; see
61
+ * `ZFB_HIGHLIGHT_ROLE_TO_ZUDO_TOKEN` below.
62
+ */
63
+ export declare const SYNTAX_SEMANTIC_KEYS: readonly ["syntaxComment", "syntaxString", "syntaxNumber", "syntaxKeyword", "syntaxCallable", "syntaxType", "syntaxName", "syntaxInserted", "syntaxDeleted"];
64
+ export type SyntaxSemanticKey = (typeof SYNTAX_SEMANTIC_KEYS)[number];
65
+ /** Existing semantic role inherited when a syntax role has no explicit map. */
66
+ export declare const SYNTAX_SEMANTIC_ALIASES: Readonly<Record<SyntaxSemanticKey, SemanticKey>>;
67
+ export declare const SYNTAX_CSS_NAMES: Readonly<Record<SyntaxSemanticKey, string>>;
58
68
  /** The per-mode wiring: each UI role points at a ramp stop (or literal OKLCH)
59
69
  * via a `RampRef`. Two `ColorScheme`s (light + dark) share `ramps` but carry
60
70
  * their own `ModeMap`. */
@@ -64,6 +74,9 @@ export interface ModeMap {
64
74
  selectionBg: RampRef;
65
75
  selectionFg: RampRef;
66
76
  semantic: Record<SemanticKey, RampRef>;
77
+ /** Syntax-specific overrides. The map is required, while omitted roles
78
+ * inherit the aliases in `SYNTAX_SEMANTIC_ALIASES`. */
79
+ syntax: Partial<Record<SyntaxSemanticKey, RampRef>>;
67
80
  }
68
81
  /** A complete color scheme — shared Tier-1 ramps + per-mode Tier-2 wiring. */
69
82
  export interface ColorScheme {
@@ -75,6 +88,45 @@ export interface ColorScheme {
75
88
  * where a mode needs a different stop (or a per-mode AA-tuned literal). */
76
89
  export declare const SEMANTIC_RAMP_DEFAULTS: Record<SemanticKey, RampRef>;
77
90
  export declare const SEMANTIC_CSS_NAMES: Record<SemanticKey, string>;
91
+ /**
92
+ * Canonical renderer-role contraction shared by native zfb fenced code and
93
+ * `@takazudo/zfb-md-wasm` HTML Preview output. Values name zudo-doc semantic
94
+ * tokens, never palette stops, so renderer/component CSS stays downstream of
95
+ * the theme tier.
96
+ */
97
+ export declare const ZFB_HIGHLIGHT_ROLE_TO_ZUDO_TOKEN: {
98
+ readonly foreground: "codeFg";
99
+ readonly background: "codeBg";
100
+ readonly escape: "syntaxString";
101
+ readonly operator: "codeFg";
102
+ readonly comment: "syntaxComment";
103
+ readonly string: "syntaxString";
104
+ readonly number: "syntaxNumber";
105
+ readonly constant: "syntaxNumber";
106
+ readonly keyword: "syntaxKeyword";
107
+ readonly function: "syntaxCallable";
108
+ readonly type: "syntaxType";
109
+ readonly namespace: "syntaxType";
110
+ readonly property: "syntaxName";
111
+ readonly variable: "syntaxName";
112
+ readonly tag: "syntaxName";
113
+ readonly attribute: "syntaxName";
114
+ readonly punctuation: "codeFg";
115
+ readonly inserted: "syntaxInserted";
116
+ readonly deleted: "syntaxDeleted";
117
+ readonly heading: "syntaxKeyword";
118
+ };
119
+ export type ZfbHighlightRole = keyof typeof ZFB_HIGHLIGHT_ROLE_TO_ZUDO_TOKEN;
120
+ /** Percentage of the inserted/deleted foreground mixed into `codeBg`. */
121
+ export declare const SYNTAX_DIFF_BACKGROUND_MIX_PERCENT = 15;
122
+ /**
123
+ * Component-token values for zfb's inserted/deleted background variables.
124
+ * They deliberately do not create public `--zd-syntax-*-bg` roles.
125
+ */
126
+ export declare const SYNTAX_DIFF_BACKGROUND_CSS: {
127
+ readonly inserted: `color-mix(in srgb, var(${string}) 15%, var(${string}))`;
128
+ readonly deleted: `color-mix(in srgb, var(${string}) 15%, var(${string}))`;
129
+ };
78
130
  /**
79
131
  * Resolve a `RampRef` to a concrete color string against the given `ramps`.
80
132
  * - `{ base: n }` → `ramps.base[n]`
@@ -90,6 +142,21 @@ export declare function resolveRampRef(ref: RampRef, ramps: Ramps): string;
90
142
  /** Resolve every semantic role to a concrete color string via the scheme's
91
143
  * per-mode `map.semantic` wiring. Returns all 23 keys. */
92
144
  export declare function resolveSemanticColors(scheme: ColorScheme): Record<SemanticKey, string>;
145
+ export interface ResolvedSyntaxPalette {
146
+ /** Effective refs retain ramp identity for design-token-panel rows. */
147
+ refs: Record<SyntaxSemanticKey, RampRef>;
148
+ /** Concrete colors used by generated CSS and contrast validation. */
149
+ colors: Record<SyntaxSemanticKey, string>;
150
+ }
151
+ /**
152
+ * Canonical complete syntax resolver. Explicit partial overrides win; missing
153
+ * or invalid overrides inherit the scheme's semantic alias. A defensive
154
+ * `codeFg` / `fg` / first-ramp chain keeps runtime-authored data non-throwing
155
+ * even when it bypasses TypeScript or serde validation.
156
+ */
157
+ export declare function resolveSyntaxPalette(scheme: ColorScheme): ResolvedSyntaxPalette;
158
+ /** Convenience view of the canonical syntax palette's concrete colors. */
159
+ export declare function resolveSyntaxColors(scheme: ColorScheme): Record<SyntaxSemanticKey, string>;
93
160
  export interface TierItem {
94
161
  /** Stable id used as the Record key in persisted state (e.g. `surface`). */
95
162
  id: string;
@@ -115,15 +182,15 @@ export interface TierItem {
115
182
  *
116
183
  * Always the explicit form (independent of `referencesRamps` declaration
117
184
  * order) — see item-id contract in `buildRampTiers`
118
- * (`src/config/design-token-panel-config.ts`): tier ids `base`/`accent`/`state`,
185
+ * (`./design-token-panel-config/index.ts`): tier ids `base`/`accent`/`state`,
119
186
  * item ids `base-0..4`/`accent-0..2`/`state-{danger,success,warning,info}`.
120
187
  */
121
188
  export declare function rampRefToPanelDefault(ref: RampRef): string;
122
189
  /**
123
- * Build the 27-row mode-scoped semantic tier's `items` for the design-token
190
+ * Build the 36-row mode-scoped semantic tier's `items` for the design-token
124
191
  * panel, from a single (already mode-resolved) `ColorScheme`: 4 base roles
125
192
  * (`bg`, `fg`, `selection-bg`, `selection-fg`) followed by the 23
126
- * `SEMANTIC_KEYS` rows, in that order. Every row's `default` is
193
+ * `SEMANTIC_KEYS` rows and 9 syntax rows, in that order. Every row's `default` is
127
194
  * `rampRefToPanelDefault` of the scheme's `map` entry for that role — never a
128
195
  * resolved literal color — so the panel's grouped ramp dropdown can decode it
129
196
  * back to a ramp reference (the no-snapping guarantee: a scheme with no
@@ -134,7 +201,7 @@ export declare function buildSemanticTierItems(scheme: ColorScheme): TierItem[];
134
201
  /** Which tiers a `schemeToCssPairs` call emits:
135
202
  * - `"all"` (default) — base roles + `--palette-*` + `--zd-*` semantic
136
203
  * - `"palette"` — only the bare Tier-1 `--palette-*` pairs
137
- * - `"roles"` — base roles + the 23 `--zd-*` semantic pairs
204
+ * - `"roles"` — base roles + the 23 UI and 9 syntax semantic pairs
138
205
  *
139
206
  * The split lets `generateLightDarkCssProperties` emit the shared `--palette-*`
140
207
  * once (bare) while wrapping the per-mode `--zd-*` roles in `light-dark(…)`.
@@ -150,6 +217,7 @@ export type CssEmitScope = "all" | "palette" | "roles";
150
217
  * - Tier-1 ramps: `--palette-base-0..4`, `--palette-accent-0..2`,
151
218
  * `--palette-state-{danger,success,warning,info}`
152
219
  * - the 23 Tier-2 `--zd-{role}` semantic tokens
220
+ * - the 9 Tier-2 `--zd-syntax-*` semantic tokens
153
221
  *
154
222
  * It intentionally does NOT emit the retired `--zd-0..15` slots or `--zd-cursor`.
155
223
  */
@@ -24,6 +24,39 @@ const SEMANTIC_KEYS = [
24
24
  "matchedKeywordBg",
25
25
  "matchedKeywordFg"
26
26
  ];
27
+ const SYNTAX_SEMANTIC_KEYS = [
28
+ "syntaxComment",
29
+ "syntaxString",
30
+ "syntaxNumber",
31
+ "syntaxKeyword",
32
+ "syntaxCallable",
33
+ "syntaxType",
34
+ "syntaxName",
35
+ "syntaxInserted",
36
+ "syntaxDeleted"
37
+ ];
38
+ const SYNTAX_SEMANTIC_ALIASES = {
39
+ syntaxComment: "muted",
40
+ syntaxString: "success",
41
+ syntaxNumber: "warning",
42
+ syntaxKeyword: "accent",
43
+ syntaxCallable: "info",
44
+ syntaxType: "warning",
45
+ syntaxName: "codeFg",
46
+ syntaxInserted: "success",
47
+ syntaxDeleted: "danger"
48
+ };
49
+ const SYNTAX_CSS_NAMES = {
50
+ syntaxComment: "--zd-syntax-comment",
51
+ syntaxString: "--zd-syntax-string",
52
+ syntaxNumber: "--zd-syntax-number",
53
+ syntaxKeyword: "--zd-syntax-keyword",
54
+ syntaxCallable: "--zd-syntax-callable",
55
+ syntaxType: "--zd-syntax-type",
56
+ syntaxName: "--zd-syntax-name",
57
+ syntaxInserted: "--zd-syntax-inserted",
58
+ syntaxDeleted: "--zd-syntax-deleted"
59
+ };
27
60
  const SEMANTIC_RAMP_DEFAULTS = {
28
61
  // Re-pointed for the 5-base / 3-accent minimized ramp (#2602); mirrors the
29
62
  // Default Dark reference wiring (surface/chatAssistantBg/imageOverlayBg merged
@@ -79,6 +112,33 @@ const SEMANTIC_CSS_NAMES = {
79
112
  matchedKeywordBg: "--zd-matched-keyword-bg",
80
113
  matchedKeywordFg: "--zd-matched-keyword-fg"
81
114
  };
115
+ const ZFB_HIGHLIGHT_ROLE_TO_ZUDO_TOKEN = {
116
+ foreground: "codeFg",
117
+ background: "codeBg",
118
+ escape: "syntaxString",
119
+ operator: "codeFg",
120
+ comment: "syntaxComment",
121
+ string: "syntaxString",
122
+ number: "syntaxNumber",
123
+ constant: "syntaxNumber",
124
+ keyword: "syntaxKeyword",
125
+ function: "syntaxCallable",
126
+ type: "syntaxType",
127
+ namespace: "syntaxType",
128
+ property: "syntaxName",
129
+ variable: "syntaxName",
130
+ tag: "syntaxName",
131
+ attribute: "syntaxName",
132
+ punctuation: "codeFg",
133
+ inserted: "syntaxInserted",
134
+ deleted: "syntaxDeleted",
135
+ heading: "syntaxKeyword"
136
+ };
137
+ const SYNTAX_DIFF_BACKGROUND_MIX_PERCENT = 15;
138
+ const SYNTAX_DIFF_BACKGROUND_CSS = {
139
+ inserted: `color-mix(in srgb, var(${SYNTAX_CSS_NAMES.syntaxInserted}) ${SYNTAX_DIFF_BACKGROUND_MIX_PERCENT}%, var(${SEMANTIC_CSS_NAMES.codeBg}))`,
140
+ deleted: `color-mix(in srgb, var(${SYNTAX_CSS_NAMES.syntaxDeleted}) ${SYNTAX_DIFF_BACKGROUND_MIX_PERCENT}%, var(${SEMANTIC_CSS_NAMES.codeBg}))`
141
+ };
82
142
  function resolveRampRef(ref, ramps) {
83
143
  if (typeof ref === "string") return ref;
84
144
  if ("base" in ref) {
@@ -105,6 +165,61 @@ function resolveSemanticColors(scheme) {
105
165
  }
106
166
  return out;
107
167
  }
168
+ function tryResolveRampRef(ref, ramps) {
169
+ if (typeof ref === "string") return ref.trim().length > 0 ? ref : void 0;
170
+ if (!ref || typeof ref !== "object") return void 0;
171
+ const candidate = ref;
172
+ if ("base" in candidate) {
173
+ const index = candidate.base;
174
+ if (typeof index !== "number" || !Number.isInteger(index) || index < 0) return void 0;
175
+ const value = ramps.base[index];
176
+ return typeof value === "string" && value.trim().length > 0 ? value : void 0;
177
+ }
178
+ if ("accent" in candidate) {
179
+ const index = candidate.accent;
180
+ if (typeof index !== "number" || !Number.isInteger(index) || index < 0) return void 0;
181
+ const value = ramps.accent[index];
182
+ return typeof value === "string" && value.trim().length > 0 ? value : void 0;
183
+ }
184
+ if ("state" in candidate) {
185
+ const state = candidate.state;
186
+ if (typeof state !== "string" || !STATE_ROLES.includes(state)) return void 0;
187
+ const value = ramps.state[state];
188
+ return typeof value === "string" && value.trim().length > 0 ? value : void 0;
189
+ }
190
+ return void 0;
191
+ }
192
+ function copyRampRef(ref) {
193
+ return typeof ref === "string" ? ref : { ...ref };
194
+ }
195
+ function resolveSyntaxPalette(scheme) {
196
+ const { ramps, map } = scheme;
197
+ const refs = {};
198
+ const colors = {};
199
+ const emergencyCandidates = [
200
+ map.semantic.codeFg,
201
+ map.fg,
202
+ ramps.base.find((value) => typeof value === "string" && value.trim().length > 0),
203
+ "currentColor"
204
+ ];
205
+ const emergencyRef = emergencyCandidates.find(
206
+ (candidate) => tryResolveRampRef(candidate, ramps) !== void 0
207
+ );
208
+ const emergencyColor = tryResolveRampRef(emergencyRef, ramps) ?? "currentColor";
209
+ for (const key of SYNTAX_SEMANTIC_KEYS) {
210
+ const explicitRef = map.syntax[key];
211
+ const explicitColor = tryResolveRampRef(explicitRef, ramps);
212
+ const inheritedRef = map.semantic[SYNTAX_SEMANTIC_ALIASES[key]];
213
+ const inheritedColor = tryResolveRampRef(inheritedRef, ramps);
214
+ const effectiveRef = explicitColor !== void 0 ? explicitRef : inheritedColor !== void 0 ? inheritedRef : emergencyRef;
215
+ refs[key] = copyRampRef(effectiveRef);
216
+ colors[key] = explicitColor ?? inheritedColor ?? emergencyColor;
217
+ }
218
+ return { refs, colors };
219
+ }
220
+ function resolveSyntaxColors(scheme) {
221
+ return resolveSyntaxPalette(scheme).colors;
222
+ }
108
223
  function rampRefToPanelDefault(ref) {
109
224
  if (typeof ref === "string") return ref;
110
225
  if ("base" in ref) return `base:base-${ref.base}`;
@@ -113,6 +228,7 @@ function rampRefToPanelDefault(ref) {
113
228
  }
114
229
  function buildSemanticTierItems(scheme) {
115
230
  const { map } = scheme;
231
+ const syntax = resolveSyntaxPalette(scheme);
116
232
  const items = [
117
233
  {
118
234
  id: "bg",
@@ -152,6 +268,15 @@ function buildSemanticTierItems(scheme) {
152
268
  type: { kind: "color", format: "oklch" }
153
269
  });
154
270
  }
271
+ for (const key of SYNTAX_SEMANTIC_KEYS) {
272
+ items.push({
273
+ id: key,
274
+ cssVar: SYNTAX_CSS_NAMES[key],
275
+ label: key,
276
+ default: rampRefToPanelDefault(syntax.refs[key]),
277
+ type: { kind: "color", format: "oklch" }
278
+ });
279
+ }
155
280
  return items;
156
281
  }
157
282
  function schemeToCssPairs(scheme, scope = "all") {
@@ -177,6 +302,10 @@ function schemeToCssPairs(scheme, scope = "all") {
177
302
  for (const key of SEMANTIC_KEYS) {
178
303
  pairs.push([SEMANTIC_CSS_NAMES[key], sem[key]]);
179
304
  }
305
+ const syntax = resolveSyntaxColors(scheme);
306
+ for (const key of SYNTAX_SEMANTIC_KEYS) {
307
+ pairs.push([SYNTAX_CSS_NAMES[key], syntax[key]]);
308
+ }
180
309
  }
181
310
  return pairs;
182
311
  }
@@ -212,11 +341,19 @@ export {
212
341
  SEMANTIC_KEYS,
213
342
  SEMANTIC_RAMP_DEFAULTS,
214
343
  STATE_ROLES,
344
+ SYNTAX_CSS_NAMES,
345
+ SYNTAX_DIFF_BACKGROUND_CSS,
346
+ SYNTAX_DIFF_BACKGROUND_MIX_PERCENT,
347
+ SYNTAX_SEMANTIC_ALIASES,
348
+ SYNTAX_SEMANTIC_KEYS,
349
+ ZFB_HIGHLIGHT_ROLE_TO_ZUDO_TOKEN,
215
350
  buildSemanticTierItems,
216
351
  generateCssCustomProperties,
217
352
  generateLightDarkCssProperties,
218
353
  rampRefToPanelDefault,
219
354
  resolveRampRef,
220
355
  resolveSemanticColors,
356
+ resolveSyntaxColors,
357
+ resolveSyntaxPalette,
221
358
  schemeToCssPairs
222
359
  };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Default color schemes — Default Light + Default Dark.
3
+ *
4
+ * Ported verbatim from the `create-zudo-doc` base template's
5
+ * `src/config/color-schemes.ts` `colorSchemes` export (epic
6
+ * zudolab/zudo-doc#2651, S4 #2654), so a generated project needs no
7
+ * color-schemes config file of its own.
8
+ *
9
+ * Ramp-native model (Color Ramp Restructure — zudolab/zudo-doc#2584;
10
+ * minimized to 5/3 in #2602). A `ColorScheme` is `{ ramps, map }` — the
11
+ * MECHANISM type is owned by `@takazudo/zudo-doc/color-scheme-utils` and is
12
+ * reused here, not re-declared:
13
+ * - `ramps` — the shared Tier-1 source of truth: a warm-neutral `base` ramp
14
+ * (5 stops, index 0 = lightest), an `accent` ramp (3 stops), and 4 `state`
15
+ * colors. Light and dark modes SHARE these values.
16
+ * - `map` — the per-mode Tier-2 wiring: which ramp stop (or literal OKLCH)
17
+ * each UI role points at.
18
+ *
19
+ * A project's `ZudoDocConfig.colorSchemes` override is merged over this
20
+ * default by `zudoDoc()` (#2657).
21
+ */
22
+ import type { ColorScheme } from "../color-scheme-utils.js";
23
+ export declare const defaultColorSchemes: Record<string, ColorScheme>;
@@ -0,0 +1,134 @@
1
+ const ramps = {
2
+ base: [
3
+ "oklch(.965 .004 65)",
4
+ // 0 — lightest (light bg / dark fg)
5
+ "oklch(.705 .008 65)",
6
+ // 1 — dark muted / light selection & mermaid fill
7
+ "oklch(.480 .008 65)",
8
+ // 2 — light muted / dark selection & mermaid note
9
+ "oklch(.300 .006 65)",
10
+ // 3 — dark codeBg / mermaid fill
11
+ "oklch(.185 .005 65)"
12
+ // 4 — darkest (dark bg / light fg)
13
+ ],
14
+ accent: [
15
+ "oklch(.755 .130 64)",
16
+ // 0 — dark hover (was accent2)
17
+ "oklch(.700 .158 62)",
18
+ // 1 — dark accent (was accent3)
19
+ "oklch(.470 .120 56)"
20
+ // 2 — light accent (was accent6)
21
+ ],
22
+ state: {
23
+ danger: "oklch(.640 .170 25)",
24
+ success: "oklch(.680 .145 145)",
25
+ warning: "oklch(.760 .135 82)",
26
+ info: "oklch(.680 .130 245)"
27
+ }
28
+ };
29
+ const darkMap = {
30
+ bg: { base: 4 },
31
+ fg: { base: 0 },
32
+ selectionBg: { base: 2 },
33
+ selectionFg: { base: 0 },
34
+ semantic: {
35
+ // Merged onto bg (b4) — elevated panels read as page-bg + border, no gray fill.
36
+ surface: { base: 4 },
37
+ muted: { base: 1 },
38
+ accent: { accent: 1 },
39
+ accentHover: { accent: 0 },
40
+ codeBg: { base: 3 },
41
+ codeFg: { base: 0 },
42
+ success: { state: "success" },
43
+ // Per-mode AA-tuned literal — shared state.danger oklch(.640 .170 25) is too
44
+ // dark for the danger-admonition title on its 12%-tint dark bg. L .640→.655
45
+ // (H/C fixed) — admonition-danger at threshold+0.1; carried from #2593.
46
+ danger: "oklch(.655 .170 25)",
47
+ warning: { state: "warning" },
48
+ info: { state: "info" },
49
+ mermaidNodeBg: { base: 3 },
50
+ mermaidText: { base: 0 },
51
+ mermaidLine: { base: 1 },
52
+ mermaidLabelBg: { base: 3 },
53
+ mermaidNoteBg: { base: 2 },
54
+ chatUserBg: { accent: 1 },
55
+ chatUserText: { base: 4 },
56
+ // Merged onto bg (b4) — the chat assistant bubble reads as page-bg + border.
57
+ chatAssistantBg: { base: 4 },
58
+ chatAssistantText: { base: 0 },
59
+ imageOverlayBg: { base: 4 },
60
+ imageOverlayFg: { base: 0 },
61
+ // Search-result <mark> highlight: an amber (accent-hue) fill with dark text —
62
+ // the classic highlighter look, identical in both modes. Kept as literals so
63
+ // the amber fill is scheme-stable; matchedKeywordFg dark so text clears AA on
64
+ // the amber bg — matched-keyword at threshold+0.1; carried from #2593.
65
+ matchedKeywordBg: "oklch(.700 .158 62)",
66
+ matchedKeywordFg: "oklch(.300 .003 65)"
67
+ },
68
+ // Diff foregrounds are checked against their actual 15% foreground tint on
69
+ // codeBg. The ordinary success/danger aliases are not light enough on that
70
+ // derived dark background, so only these two syntax roles need overrides.
71
+ syntax: {
72
+ syntaxInserted: "oklch(.750 .145 145)",
73
+ syntaxDeleted: "oklch(.820 .100 25)"
74
+ }
75
+ };
76
+ const lightMap = {
77
+ bg: { base: 0 },
78
+ fg: { base: 4 },
79
+ selectionBg: { base: 1 },
80
+ selectionFg: { base: 4 },
81
+ semantic: {
82
+ // Merged onto bg (b0) — elevated panels read as page-bg + border, no gray fill.
83
+ surface: { base: 0 },
84
+ muted: { base: 2 },
85
+ accent: { accent: 2 },
86
+ // Light: per-mode literal — the accent ramp has no stop darker than accent2,
87
+ // so the link-hover state darkens further (hover-darkens-on-light
88
+ // convention). L .400, C fitted to the sRGB gamut edge at that L; carried
89
+ // from #2595. accent-hover-vs-bg clears threshold+0.1.
90
+ accentHover: "oklch(.400 .096 56)",
91
+ // Merged onto bg (b0) — inline/code-block fill reads as page-bg + border.
92
+ codeBg: { base: 0 },
93
+ codeFg: { base: 4 },
94
+ // Light: per-mode literals — the shared state colors are authored for a dark
95
+ // bg and are too light on the 12%-tint admonition backgrounds over a light
96
+ // page bg. Each darkened (H fixed; C at gamut max, clipped where noted) to
97
+ // clear its admonition pair at threshold+0.1; carried from #2595.
98
+ success: "oklch(.470 .140 145)",
99
+ danger: "oklch(.505 .170 25)",
100
+ warning: "oklch(.490 .100 82)",
101
+ // C .135→.100 (gamut-clips at this L)
102
+ info: "oklch(.485 .122 245)",
103
+ mermaidNodeBg: { base: 1 },
104
+ mermaidText: { base: 4 },
105
+ mermaidLine: { base: 2 },
106
+ mermaidLabelBg: { base: 1 },
107
+ mermaidNoteBg: { base: 1 },
108
+ chatUserBg: { accent: 1 },
109
+ // Dark text on the amber user bubble (matches Default Dark).
110
+ chatUserText: { base: 4 },
111
+ // Merged onto bg (b0) — the chat assistant bubble reads as page-bg + border.
112
+ chatAssistantBg: { base: 0 },
113
+ chatAssistantText: { base: 4 },
114
+ imageOverlayBg: { base: 4 },
115
+ imageOverlayFg: { base: 0 },
116
+ // Search-result <mark>: amber highlighter fill with dark text — same look as
117
+ // Default Dark (an amber-on-white highlight reads identically in both modes).
118
+ matchedKeywordBg: "oklch(.700 .158 62)",
119
+ matchedKeywordFg: "oklch(.300 .003 65)"
120
+ },
121
+ // Slightly darker than the shared success/danger aliases so the foregrounds
122
+ // retain >= 4.6:1 on their own 15% tints over the light code background.
123
+ syntax: {
124
+ syntaxInserted: "oklch(.460 .140 145)",
125
+ syntaxDeleted: "oklch(.490 .170 25)"
126
+ }
127
+ };
128
+ const defaultColorSchemes = {
129
+ "Default Light": { ramps, map: lightMap },
130
+ "Default Dark": { ramps, map: darkMap }
131
+ };
132
+ export {
133
+ defaultColorSchemes
134
+ };