@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
@@ -1,183 +0,0 @@
1
- /**
2
- * Design-token SerDe — unified JSON export / import for the design-token panel.
3
- *
4
- * Supersedes the legacy TypeScript-object export in `export-code.ts`. The JSON
5
- * format is a single document covering all four token categories (color,
6
- * spacing, font, size) so an AI assistant can consume or emit a whole
7
- * design-token tweak in one round-trip.
8
- *
9
- * Format: `$schema = "zudo-doc-design-tokens/v3"`.
10
- *
11
- * v3 color slice — ramp-native, minimized (Color Ramp Restructure,
12
- * zudolab/zudo-doc#2584 / #2591; minimized to 5/3 in #2602)
13
- * -----------------------------------------------------------------------------------
14
- * The color block is the ramp-native `ColorScheme` from `color-scheme-utils.ts`:
15
- * - `ramps` — the shared Tier-1 source of truth (`base[5]`, `accent[3]`,
16
- * `state{danger,success,warning,info}`), emitted verbatim as OKLCH strings.
17
- * - `map` — the per-mode Tier-2 wiring (`bg`/`fg`/`selectionBg`/`selectionFg`
18
- * + 23 `semantic` roles), each a `RampRef` (`{base:n}` / `{accent:n}` /
19
- * `{state:role}` / a literal OKLCH string).
20
- *
21
- * The legacy v1 color slice (`palette: string[16]`, numeric `base`, `cursor`,
22
- * `semanticMappings`) is gone. Both `ramps` and `map` are plain JSON data, so
23
- * the color block is essentially a serialized `ColorScheme`.
24
- *
25
- * v1 → v3 migration (RESET, not remap)
26
- * ------------------------------------
27
- * A persisted v1 payload (detected by `$schema === "…/v1"`, a `palette` array,
28
- * or a numeric `base` block) has NO faithful mapping to the new model: the old
29
- * 16-slot ghostty palette + numeric semantic indices do not correspond to the
30
- * 5-base / 3-accent / 4-state ramps + `RampRef` wiring. Any remap would invent
31
- * colors and mislead the user, so `deserialize` RESETS the color slice to the
32
- * caller-supplied baseline (the current default scheme) and emits a
33
- * `console.warn` + a `warnings[]` entry — no throw, no blank screen. The
34
- * spacing/font/size slices are format-compatible across v1/v3 and are preserved.
35
- *
36
- * v2 → v3 migration (RESET, schema-label-only — zudolab/zudo-doc#2599)
37
- * ---------------------------------------------------------------------
38
- * `v2` was the ramp-native label BEFORE the base-12/accent-7 → base-5/accent-3
39
- * minimize (#2602); the shape (`ramps` + `map` of `RampRef`s) never changed, only
40
- * the ramp lengths did. That means a `v2`-labeled payload is ambiguous in a way
41
- * `v1` never was: `parseRamps` catches a wrong-length `ramps.base`/`ramps.accent`
42
- * array and falls back to baseline, but `parseMap`'s `RampRef` parser only
43
- * shape-checks a numeric index (`{base:11}`) — it does NOT range-check it against
44
- * the ramp length, because that tolerance is also relied on by legitimate
45
- * already-5/3 round-trip exports (see the `{accent:5}`-style fixtures in the test
46
- * file). So an out-of-range ref alone can't tell a genuinely-stale pre-5/3 export
47
- * apart from an intentionally-tolerated current-shape ref — both look identical
48
- * once parsed. Rather than guess from ref values, `v2` is retired as a whole:
49
- * ANY payload still carrying the `v2` label (regardless of whether its arrays
50
- * happen to already be 5/3-shaped) is treated as legacy and RESET to baseline,
51
- * exactly like v1. Only payloads relabeled `v3` are trusted to resolve cleanly
52
- * against the current ramp lengths.
53
- *
54
- * Diff-only by default
55
- * --------------------
56
- * `serialize()` only emits tokens the user has actually changed relative to
57
- * the provided `colorDefaults` (for the color block) and the manifest defaults
58
- * (for spacing / font / size). Pass `includeDefaults: true` to dump the full
59
- * state instead. The whole-category keys (`color`, `spacing`, `font`, `size`)
60
- * are omitted entirely when nothing in them differs. For the color block the
61
- * `ramps` and `map` sub-blocks are each emitted whole (not per-stop / per-role
62
- * diffed) when they differ from the baseline — the ramp-native shape has no
63
- * stable per-slot index to diff against, and a whole-block emit round-trips
64
- * cleanly against the same baseline.
65
- *
66
- * Spacing / font / size keys use CSS variable names (`"--spacing-hsp-md"`) —
67
- * the external schema — rather than the internal token id (`"hsp-md"`). This
68
- * keeps the file human-readable and agnostic of our internal manifest.
69
- * `deserialize()` maps them back; unknown CSS vars are reported via
70
- * `unknownTokens` so the UI can surface them.
71
- *
72
- * Read-only manifest tokens (e.g. `--spacing-0`, `--zd-sidebar-w` with
73
- * `clamp()`) are skipped in both directions.
74
- *
75
- * W3B (#1730 — Generator Pages Migration): moved from
76
- * `src/utils/design-token-serde.ts` into v2. The manifest tokens
77
- * (`SPACING_TOKENS` / `FONT_TOKENS` / `SIZE_TOKENS`) are no longer
78
- * imported from the host's `@/config/design-tokens-manifest` — the
79
- * caller now passes them through `SerializeOptions.manifest` /
80
- * `DeserializeOptions.manifest`, preserving consumer override hooks.
81
- */
82
- interface TokenDef {
83
- /** Stable id used as the Record key in persisted state (e.g. `hsp-2xs`). */
84
- id: string;
85
- /** CSS custom property name written to `:root` (e.g. `--zd-spacing-hgap-2xs`). */
86
- cssVar: string;
87
- /** Default value as a CSS length string (e.g. `0.125rem`). */
88
- default: string;
89
- /** Read-only tokens are displayed but not editable. */
90
- readonly?: true;
91
- }
92
- import { type TweakState } from "./design-token-types.js";
93
- import { type ColorScheme, type ModeMap, type Ramps } from "../color-scheme-utils.js";
94
- export declare const DESIGN_TOKEN_SCHEMA: "zudo-doc-design-tokens/v3";
95
- /** External JSON color block — a (possibly diff-only) serialized `ColorScheme`.
96
- * Both sub-blocks are optional: in diff-only output an unchanged `ramps` or
97
- * `map` is omitted and filled from the baseline on deserialize. */
98
- export interface DesignTokenJsonColor {
99
- ramps?: Ramps;
100
- map?: ModeMap;
101
- }
102
- /** External token map keyed by CSS var name. */
103
- export type DesignTokenJsonOverrides = Record<string, string>;
104
- export interface DesignTokenJson {
105
- $schema: typeof DESIGN_TOKEN_SCHEMA;
106
- exportedAt: string;
107
- color?: DesignTokenJsonColor;
108
- spacing?: DesignTokenJsonOverrides;
109
- font?: DesignTokenJsonOverrides;
110
- size?: DesignTokenJsonOverrides;
111
- }
112
- /**
113
- * Token manifest the caller hands in — the consumer's
114
- * `src/config/design-tokens-manifest.ts` (or generator override). v2
115
- * doesn't ship its own manifest; this is intentionally a caller concern
116
- * so each consumer keeps full control over the editable token set.
117
- */
118
- export interface DesignTokenManifest {
119
- spacing: readonly TokenDef[];
120
- font: readonly TokenDef[];
121
- size: readonly TokenDef[];
122
- }
123
- export interface SerializeOptions {
124
- /** Token manifest (spacing / font / size arrays) used to compute
125
- * diff-only output and resolve CSS-var names. Required. */
126
- manifest: DesignTokenManifest;
127
- /** When true, dump full state (whole `ramps` + `map`, all token manifest
128
- * defaults merged in). Default: diff-only. */
129
- includeDefaults?: boolean;
130
- /** Color baseline to diff against — typically the active scheme's initial
131
- * `ColorScheme`. Required for meaningful color-diff output; callers that
132
- * don't have it available (e.g. tests without DOM) can omit it and we'll
133
- * treat the whole color block as changed. */
134
- colorDefaults?: ColorScheme;
135
- /** Override the `exportedAt` stamp (test-only). */
136
- now?: () => Date;
137
- }
138
- export interface DeserializeResult {
139
- /** The reconstructed tweak state, with unknown-token values dropped. */
140
- state: TweakState;
141
- /** CSS var names present in the payload that don't match any known token. */
142
- unknownTokens: string[];
143
- /** Human-readable errors that did not prevent a state from being produced
144
- * (e.g. "v1 payload detected; color reset to default"). */
145
- warnings: string[];
146
- }
147
- export interface DeserializeOptions {
148
- /** Token manifest (spacing / font / size arrays) used to resolve CSS-var
149
- * names back to internal token ids. Required. */
150
- manifest: DesignTokenManifest;
151
- /** Color baseline used to fill in fields absent from the payload (diff-only
152
- * exports are missing most fields by design) and as the reset target for a
153
- * v1 migration. Typically the active scheme's initial `ColorScheme`. */
154
- colorDefaults?: ColorScheme;
155
- }
156
- /** Thrown when the payload is not a recognized schema object. The error
157
- * `.reason` helps the UI render a precise inline message. A v1 payload is NOT
158
- * thrown for — it is migrated (see `deserialize`). */
159
- export declare class DesignTokenSchemaError extends Error {
160
- readonly reason: "not-object" | "schema-missing" | "schema-mismatch";
161
- readonly actualSchema?: unknown;
162
- constructor(reason: "not-object" | "schema-missing" | "schema-mismatch", message: string, actualSchema?: unknown);
163
- }
164
- /**
165
- * Produce the external JSON document for a given tweak state.
166
- *
167
- * By default this is diff-only against `opts.colorDefaults` + manifest
168
- * defaults; set `opts.includeDefaults = true` to dump everything.
169
- */
170
- export declare function serialize(state: TweakState, opts: SerializeOptions): DesignTokenJson;
171
- /**
172
- * Parse a design-token JSON document and lift it back into a tweak state.
173
- *
174
- * Throws `DesignTokenSchemaError` on schema mismatch / non-object input. A v1
175
- * (palette-based) payload is NOT thrown for — its color slice is reset to the
176
- * baseline default (see the v1→v2 migration note at the top). Any CSS var name
177
- * that doesn't match a known manifest entry is collected into `unknownTokens`.
178
- *
179
- * Missing fields fall back to `opts.colorDefaults` (or, absent that, a
180
- * minimal neutral default) so the result is always a valid `TweakState`.
181
- */
182
- export declare function deserialize(input: unknown, opts: DeserializeOptions): DeserializeResult;
183
- export {};
@@ -1,346 +0,0 @@
1
- import {
2
- emptyOverrides
3
- } from "./design-token-types.js";
4
- import {
5
- SEMANTIC_KEYS,
6
- SEMANTIC_RAMP_DEFAULTS,
7
- STATE_ROLES
8
- } from "../color-scheme-utils.js";
9
- const DESIGN_TOKEN_SCHEMA = "zudo-doc-design-tokens/v3";
10
- const LEGACY_SCHEMA_V1 = "zudo-doc-design-tokens/v1";
11
- const LEGACY_SCHEMA_V2 = "zudo-doc-design-tokens/v2";
12
- const BASE_RAMP_LENGTH = 5;
13
- const ACCENT_RAMP_LENGTH = 3;
14
- class DesignTokenSchemaError extends Error {
15
- reason;
16
- actualSchema;
17
- constructor(reason, message, actualSchema) {
18
- super(message);
19
- this.name = "DesignTokenSchemaError";
20
- this.reason = reason;
21
- this.actualSchema = actualSchema;
22
- }
23
- }
24
- function serialize(state, opts) {
25
- const now = opts.now ? opts.now() : /* @__PURE__ */ new Date();
26
- const out = {
27
- $schema: DESIGN_TOKEN_SCHEMA,
28
- exportedAt: now.toISOString()
29
- };
30
- const color = serializeColor(state.color, opts);
31
- if (color) out.color = color;
32
- const spacing = serializeOverrides(opts.manifest.spacing, state.spacing, opts);
33
- if (spacing) out.spacing = spacing;
34
- const font = serializeOverrides(opts.manifest.font, state.font, opts);
35
- if (font) out.font = font;
36
- const size = serializeOverrides(opts.manifest.size, state.size, opts);
37
- if (size) out.size = size;
38
- return out;
39
- }
40
- function serializeColor(color, opts) {
41
- const baseline = opts.colorDefaults;
42
- const full = opts.includeDefaults === true;
43
- const out = {};
44
- let changed = false;
45
- if (full || !baseline || !deepEqual(color.ramps, baseline.ramps)) {
46
- out.ramps = cloneRamps(color.ramps);
47
- changed = true;
48
- }
49
- if (full || !baseline || !deepEqual(color.map, baseline.map)) {
50
- out.map = cloneMap(color.map);
51
- changed = true;
52
- }
53
- return changed ? out : void 0;
54
- }
55
- function serializeOverrides(manifest, overrides, opts) {
56
- const full = opts.includeDefaults === true;
57
- const out = {};
58
- let wrote = false;
59
- if (full) {
60
- for (const t of manifest) {
61
- if (t.readonly) continue;
62
- const v = overrides[t.id];
63
- out[t.cssVar] = typeof v === "string" && v.length > 0 ? v : t.default;
64
- wrote = true;
65
- }
66
- } else {
67
- for (const t of manifest) {
68
- if (t.readonly) continue;
69
- const v = overrides[t.id];
70
- if (typeof v === "string" && v.length > 0 && v !== t.default) {
71
- out[t.cssVar] = v;
72
- wrote = true;
73
- }
74
- }
75
- }
76
- return wrote ? out : void 0;
77
- }
78
- function deserialize(input, opts) {
79
- if (input === null || typeof input !== "object") {
80
- throw new DesignTokenSchemaError(
81
- "not-object",
82
- "Input is not a JSON object."
83
- );
84
- }
85
- const obj = input;
86
- const schema = obj.$schema;
87
- if (schema === void 0) {
88
- throw new DesignTokenSchemaError(
89
- "schema-missing",
90
- `Missing "$schema" key. Expected "${DESIGN_TOKEN_SCHEMA}".`
91
- );
92
- }
93
- const legacyV1 = schema === LEGACY_SCHEMA_V1;
94
- const legacyV2 = schema === LEGACY_SCHEMA_V2;
95
- if (schema !== DESIGN_TOKEN_SCHEMA && !legacyV1 && !legacyV2) {
96
- throw new DesignTokenSchemaError(
97
- "schema-mismatch",
98
- `Unsupported "$schema" value: ${JSON.stringify(schema)}. Expected "${DESIGN_TOKEN_SCHEMA}".`,
99
- schema
100
- );
101
- }
102
- const warnings = [];
103
- const unknownTokens = [];
104
- const baseline = opts.colorDefaults ?? neutralColorDefaults();
105
- const color = deserializeColor(obj.color, baseline, warnings, legacyV1, legacyV2);
106
- const spacing = deserializeOverrides(
107
- obj.spacing,
108
- opts.manifest.spacing,
109
- "spacing",
110
- unknownTokens,
111
- warnings
112
- );
113
- const font = deserializeOverrides(
114
- obj.font,
115
- opts.manifest.font,
116
- "font",
117
- unknownTokens,
118
- warnings
119
- );
120
- const size = deserializeOverrides(
121
- obj.size,
122
- opts.manifest.size,
123
- "size",
124
- unknownTokens,
125
- warnings
126
- );
127
- return {
128
- state: { color, spacing, font, size },
129
- unknownTokens,
130
- warnings
131
- };
132
- }
133
- function isLegacyColorPayload(raw) {
134
- if (!raw || typeof raw !== "object") return false;
135
- const c = raw;
136
- return Array.isArray(c.palette) || c.base !== void 0;
137
- }
138
- function deserializeColor(raw, baseline, warnings, legacyV1, legacyV2) {
139
- if (legacyV1 || isLegacyColorPayload(raw)) {
140
- const msg = "Legacy v1 design-token color state detected; color was reset to the default scheme (the old 16-slot palette has no faithful ramp mapping).";
141
- warnings.push(msg);
142
- console.warn(`[zudo-doc] ${msg}`);
143
- return cloneScheme(baseline);
144
- }
145
- if (legacyV2) {
146
- const msg = "Legacy v2 design-token color state detected (pre-5/3-minimize ramps); color was reset to the default scheme.";
147
- warnings.push(msg);
148
- console.warn(`[zudo-doc] ${msg}`);
149
- return cloneScheme(baseline);
150
- }
151
- if (!raw || typeof raw !== "object") {
152
- return cloneScheme(baseline);
153
- }
154
- const c = raw;
155
- const ramps = parseRamps(c.ramps, baseline.ramps, warnings);
156
- const map = parseMap(c.map, baseline.map, warnings);
157
- return { ramps, map };
158
- }
159
- function parseRamps(raw, baseline, warnings) {
160
- if (raw === void 0) return cloneRamps(baseline);
161
- if (!raw || typeof raw !== "object") {
162
- warnings.push("color.ramps is not an object; kept baseline ramps.");
163
- return cloneRamps(baseline);
164
- }
165
- const r = raw;
166
- const base = parseOklchArray(r.base, BASE_RAMP_LENGTH, "color.ramps.base", warnings) ?? [...baseline.base];
167
- const accent = parseOklchArray(r.accent, ACCENT_RAMP_LENGTH, "color.ramps.accent", warnings) ?? [...baseline.accent];
168
- const state = parseState(r.state, baseline.state, warnings);
169
- return { base, accent, state };
170
- }
171
- function parseOklchArray(raw, expectedLength, label, warnings) {
172
- if (!Array.isArray(raw)) {
173
- warnings.push(`${label}: expected an array of ${expectedLength} strings; kept baseline.`);
174
- return null;
175
- }
176
- const strings = raw.filter((v) => typeof v === "string" && v.length > 0);
177
- if (strings.length !== expectedLength || strings.length !== raw.length) {
178
- warnings.push(
179
- `${label}: expected ${expectedLength} non-empty string entries; got ${raw.length} (${strings.length} valid). Kept baseline.`
180
- );
181
- return null;
182
- }
183
- return strings;
184
- }
185
- function parseState(raw, baseline, warnings) {
186
- const src = raw && typeof raw === "object" ? raw : {};
187
- const out = {};
188
- for (const role of STATE_ROLES) {
189
- const v = src[role];
190
- if (typeof v === "string" && v.length > 0) {
191
- out[role] = v;
192
- } else {
193
- if (v !== void 0) {
194
- warnings.push(`color.ramps.state.${role} is not a non-empty string; kept baseline.`);
195
- }
196
- out[role] = baseline[role];
197
- }
198
- }
199
- return out;
200
- }
201
- function parseMap(raw, baseline, warnings) {
202
- if (raw === void 0) return cloneMap(baseline);
203
- if (!raw || typeof raw !== "object") {
204
- warnings.push("color.map is not an object; kept baseline map.");
205
- return cloneMap(baseline);
206
- }
207
- const m = raw;
208
- const semRaw = m.semantic && typeof m.semantic === "object" ? m.semantic : {};
209
- const semantic = {};
210
- for (const key of SEMANTIC_KEYS) {
211
- semantic[key] = parseRef(semRaw[key], baseline.semantic[key], `color.map.semantic.${key}`, warnings);
212
- }
213
- return {
214
- bg: parseRef(m.bg, baseline.bg, "color.map.bg", warnings),
215
- fg: parseRef(m.fg, baseline.fg, "color.map.fg", warnings),
216
- selectionBg: parseRef(m.selectionBg, baseline.selectionBg, "color.map.selectionBg", warnings),
217
- selectionFg: parseRef(m.selectionFg, baseline.selectionFg, "color.map.selectionFg", warnings),
218
- semantic
219
- };
220
- }
221
- function parseRef(raw, fallback, label, warnings) {
222
- if (raw === void 0) return cloneRef(fallback);
223
- if (isValidRampRef(raw)) return cloneRef(raw);
224
- warnings.push(`${label} is not a valid RampRef (${JSON.stringify(raw)}); kept baseline.`);
225
- return cloneRef(fallback);
226
- }
227
- function isValidRampRef(v) {
228
- if (typeof v === "string") return v.length > 0;
229
- if (!v || typeof v !== "object") return false;
230
- const o = v;
231
- if ("base" in o) return isRampIndex(o.base);
232
- if ("accent" in o) return isRampIndex(o.accent);
233
- if ("state" in o) {
234
- return typeof o.state === "string" && STATE_ROLES.includes(o.state);
235
- }
236
- return false;
237
- }
238
- function isRampIndex(v) {
239
- return typeof v === "number" && Number.isInteger(v) && v >= 0;
240
- }
241
- function deserializeOverrides(raw, manifest, label, unknownTokens, warnings) {
242
- if (!raw || typeof raw !== "object") return emptyOverrides();
243
- const byVar = /* @__PURE__ */ new Map();
244
- for (const t of manifest) {
245
- if (t.readonly) continue;
246
- byVar.set(t.cssVar, t);
247
- }
248
- const out = {};
249
- for (const [cssVar, value] of Object.entries(raw)) {
250
- const t = byVar.get(cssVar);
251
- if (!t) {
252
- unknownTokens.push(cssVar);
253
- continue;
254
- }
255
- if (typeof value !== "string" || value.length === 0) {
256
- warnings.push(
257
- `${label}.${cssVar} is not a non-empty string; ignored.`
258
- );
259
- continue;
260
- }
261
- out[t.id] = value;
262
- }
263
- return out;
264
- }
265
- function cloneRef(ref) {
266
- return typeof ref === "string" ? ref : { ...ref };
267
- }
268
- function cloneRamps(ramps) {
269
- return {
270
- base: [...ramps.base],
271
- accent: [...ramps.accent],
272
- state: { ...ramps.state }
273
- };
274
- }
275
- function cloneMap(map) {
276
- const semantic = {};
277
- for (const key of SEMANTIC_KEYS) {
278
- semantic[key] = cloneRef(map.semantic[key]);
279
- }
280
- return {
281
- bg: cloneRef(map.bg),
282
- fg: cloneRef(map.fg),
283
- selectionBg: cloneRef(map.selectionBg),
284
- selectionFg: cloneRef(map.selectionFg),
285
- semantic
286
- };
287
- }
288
- function cloneScheme(scheme) {
289
- return { ramps: cloneRamps(scheme.ramps), map: cloneMap(scheme.map) };
290
- }
291
- function deepEqual(a, b) {
292
- if (a === b) return true;
293
- if (typeof a !== typeof b) return false;
294
- if (Array.isArray(a) || Array.isArray(b)) {
295
- if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
296
- return a.every((v, i) => deepEqual(v, b[i]));
297
- }
298
- if (a && b && typeof a === "object" && typeof b === "object") {
299
- const ao = a;
300
- const bo = b;
301
- const aKeys = Object.keys(ao);
302
- const bKeys = Object.keys(bo);
303
- if (aKeys.length !== bKeys.length) return false;
304
- return aKeys.every((k) => Object.prototype.hasOwnProperty.call(bo, k) && deepEqual(ao[k], bo[k]));
305
- }
306
- return false;
307
- }
308
- function neutralColorDefaults() {
309
- const base = [
310
- "oklch(0.965 0 0)",
311
- "oklch(0.705 0 0)",
312
- "oklch(0.480 0 0)",
313
- "oklch(0.300 0 0)",
314
- "oklch(0.185 0 0)"
315
- ];
316
- const accent = [
317
- "oklch(0.755 0 0)",
318
- "oklch(0.700 0 0)",
319
- "oklch(0.470 0 0)"
320
- ];
321
- return {
322
- ramps: {
323
- base,
324
- accent,
325
- state: {
326
- danger: "oklch(0.640 0.170 25)",
327
- success: "oklch(0.680 0.145 145)",
328
- warning: "oklch(0.760 0.135 82)",
329
- info: "oklch(0.680 0.130 245)"
330
- }
331
- },
332
- map: {
333
- bg: { base: 4 },
334
- fg: { base: 0 },
335
- selectionBg: { base: 2 },
336
- selectionFg: { base: 0 },
337
- semantic: { ...SEMANTIC_RAMP_DEFAULTS }
338
- }
339
- };
340
- }
341
- export {
342
- DESIGN_TOKEN_SCHEMA,
343
- DesignTokenSchemaError,
344
- deserialize,
345
- serialize
346
- };
@@ -1,13 +0,0 @@
1
- import type { ColorScheme } from "../color-scheme-utils.js";
2
- /** The per-scheme color state the design-token panel edits — a ramp-native
3
- * `ColorScheme`. Retained as a named alias so call sites reading
4
- * `ColorTweakState` keep compiling after the ramp restructure. */
5
- export type ColorTweakState = ColorScheme;
6
- export type TokenOverrides = Record<string, string>;
7
- export interface TweakState {
8
- color: ColorScheme;
9
- spacing: TokenOverrides;
10
- font: TokenOverrides;
11
- size: TokenOverrides;
12
- }
13
- export declare function emptyOverrides(): TokenOverrides;
@@ -1,6 +0,0 @@
1
- function emptyOverrides() {
2
- return {};
3
- }
4
- export {
5
- emptyOverrides
6
- };
@@ -1,42 +0,0 @@
1
- export declare const BRIDGE_SOURCE: "zudo-doc-theme-bridge";
2
- export type CssVarPair = readonly [name: string, value: string];
3
- export interface ApplyCssVarsMessage {
4
- source: typeof BRIDGE_SOURCE;
5
- type: "apply-css-vars";
6
- vars: ReadonlyArray<CssVarPair>;
7
- }
8
- export interface ClearCssVarsMessage {
9
- source: typeof BRIDGE_SOURCE;
10
- type: "clear-css-vars";
11
- names: ReadonlyArray<string>;
12
- }
13
- export interface ReadyMessage {
14
- source: typeof BRIDGE_SOURCE;
15
- type: "ready";
16
- }
17
- export interface ErrorMessage {
18
- source: typeof BRIDGE_SOURCE;
19
- type: "error";
20
- reason: string;
21
- }
22
- export type BridgeMessage = ApplyCssVarsMessage | ClearCssVarsMessage | ReadyMessage | ErrorMessage;
23
- /**
24
- * Type guard. Accepts any postMessage payload and confirms it is a bridge
25
- * envelope. Foreign messages are ignored silently.
26
- */
27
- export declare function isBridgeMessage(value: unknown): value is BridgeMessage;
28
- /** Send `apply-css-vars` to the iframe. No-op when the iframe has not loaded. */
29
- export declare function sendApplyCssVars(iframe: HTMLIFrameElement | null, vars: ReadonlyArray<CssVarPair>): void;
30
- /** Send `clear-css-vars` to the iframe so it removes inline overrides. */
31
- export declare function sendClearCssVars(iframe: HTMLIFrameElement | null, names: ReadonlyArray<string>): void;
32
- /**
33
- * Install a message listener inside the preview iframe document that applies
34
- * any incoming CSS-var batches onto `documentElement.style`. Returns a
35
- * teardown function. Intended to be called once at iframe boot.
36
- */
37
- export declare function installIframeReceiver(target?: Window): () => void;
38
- /**
39
- * Install a `ready` listener on the panel side so callers can defer the
40
- * initial CSS-var sync until the iframe document has booted.
41
- */
42
- export declare function onIframeReady(expectedSource: Window | null, callback: () => void): () => void;
@@ -1,72 +0,0 @@
1
- const BRIDGE_SOURCE = "zudo-doc-theme-bridge";
2
- function isBridgeMessage(value) {
3
- if (!value || typeof value !== "object") return false;
4
- const v = value;
5
- return v.source === BRIDGE_SOURCE && typeof v.type === "string";
6
- }
7
- function sendApplyCssVars(iframe, vars) {
8
- const win = iframe?.contentWindow;
9
- if (!win) return;
10
- const message = {
11
- source: BRIDGE_SOURCE,
12
- type: "apply-css-vars",
13
- vars
14
- };
15
- win.postMessage(message, window.location.origin);
16
- }
17
- function sendClearCssVars(iframe, names) {
18
- const win = iframe?.contentWindow;
19
- if (!win) return;
20
- const message = {
21
- source: BRIDGE_SOURCE,
22
- type: "clear-css-vars",
23
- names
24
- };
25
- win.postMessage(message, window.location.origin);
26
- }
27
- function installIframeReceiver(target = window) {
28
- function handler(event) {
29
- if (event.origin !== target.location.origin) return;
30
- const data = event.data;
31
- if (!isBridgeMessage(data)) return;
32
- if (data.type === "apply-css-vars") {
33
- const root = target.document.documentElement;
34
- for (const [name, value] of data.vars) {
35
- root.style.setProperty(name, value);
36
- }
37
- return;
38
- }
39
- if (data.type === "clear-css-vars") {
40
- const root = target.document.documentElement;
41
- for (const name of data.names) {
42
- root.style.removeProperty(name);
43
- }
44
- return;
45
- }
46
- }
47
- target.addEventListener("message", handler);
48
- const parent = target.parent;
49
- if (parent && parent !== target) {
50
- const ready = { source: BRIDGE_SOURCE, type: "ready" };
51
- parent.postMessage(ready, target.location.origin);
52
- }
53
- return () => target.removeEventListener("message", handler);
54
- }
55
- function onIframeReady(expectedSource, callback) {
56
- function handler(event) {
57
- if (event.origin !== window.location.origin) return;
58
- if (expectedSource && event.source !== expectedSource) return;
59
- if (!isBridgeMessage(event.data)) return;
60
- if (event.data.type === "ready") callback();
61
- }
62
- window.addEventListener("message", handler);
63
- return () => window.removeEventListener("message", handler);
64
- }
65
- export {
66
- BRIDGE_SOURCE,
67
- installIframeReceiver,
68
- isBridgeMessage,
69
- onIframeReady,
70
- sendApplyCssVars,
71
- sendClearCssVars
72
- };