@takazudo/zudo-doc 5.28.2 → 6.0.1

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 (511) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +49 -16
  3. package/bin/gen-z-index.mjs +18 -18
  4. package/dist/agent-docs/identity.d.ts +4 -0
  5. package/dist/agent-docs/identity.js +24 -0
  6. package/dist/agent-docs/index.d.ts +5 -0
  7. package/dist/agent-docs/index.js +5 -0
  8. package/dist/agent-docs/limits.d.ts +11 -0
  9. package/dist/agent-docs/limits.js +24 -0
  10. package/dist/agent-docs/search.d.ts +14 -0
  11. package/dist/agent-docs/search.js +82 -0
  12. package/dist/agent-docs/tokenize.d.ts +2 -0
  13. package/dist/agent-docs/tokenize.js +22 -0
  14. package/dist/agent-docs/types.d.ts +68 -0
  15. package/dist/agent-docs/types.js +0 -0
  16. package/dist/ai-chat-modal/index.d.ts +1 -4
  17. package/dist/ai-chat-modal/index.js +183 -123
  18. package/dist/asset-components/asset-card.d.ts +1 -2
  19. package/dist/asset-components/asset-card.js +12 -12
  20. package/dist/asset-components/asset-code.d.ts +1 -2
  21. package/dist/asset-components/asset-code.js +10 -10
  22. package/dist/asset-components/shared.d.ts +3 -4
  23. package/dist/asset-components/shared.js +4 -4
  24. package/dist/asset-index-page/body.d.ts +5 -6
  25. package/dist/asset-index-page/body.js +6 -6
  26. package/dist/asset-index-page/index.d.ts +1 -2
  27. package/dist/asset-index-page/index.js +1 -1
  28. package/dist/asset-page/body.d.ts +5 -9
  29. package/dist/asset-page/body.js +3 -3
  30. package/dist/asset-page/components.d.ts +16 -17
  31. package/dist/asset-page/components.js +10 -9
  32. package/dist/asset-page/index.d.ts +1 -2
  33. package/dist/asset-page/index.js +1 -1
  34. package/dist/auto-logo/index.d.ts +1 -2
  35. package/dist/auto-logo/index.js +2 -2
  36. package/dist/body-foot-util/body-foot-util-area.d.ts +3 -4
  37. package/dist/body-foot-util/body-foot-util-area.js +1 -2
  38. package/dist/body-foot-util/edit-link.d.ts +2 -3
  39. package/dist/body-foot-util/edit-link.js +1 -2
  40. package/dist/breadcrumb/breadcrumb.d.ts +6 -6
  41. package/dist/breadcrumb/breadcrumb.js +3 -4
  42. package/dist/catalog.js +1 -1
  43. package/dist/category-nav/index.d.ts +1 -2
  44. package/dist/category-nav/index.js +11 -5
  45. package/dist/category-tree-nav/index.d.ts +1 -2
  46. package/dist/category-tree-nav/index.js +3 -3
  47. package/dist/chrome/derive.d.ts +18 -27
  48. package/dist/chrome/derive.js +47 -29
  49. package/dist/chrome/index.d.ts +5 -5
  50. package/dist/chrome/index.js +1 -1
  51. package/dist/chrome/island-data.d.ts +4 -0
  52. package/dist/chrome/island-data.js +52 -0
  53. package/dist/chrome/primary-slots.d.ts +2 -3
  54. package/dist/chrome-bindings.d.ts +30 -22
  55. package/dist/code-group/index.d.ts +3 -4
  56. package/dist/code-group/index.js +3 -7
  57. package/dist/code-syntax/code-block-enhancer.d.ts +1 -2
  58. package/dist/code-syntax/code-block-enhancer.js +2 -2
  59. package/dist/code-syntax/mermaid-init.d.ts +1 -2
  60. package/dist/code-syntax/mermaid-init.js +5 -2
  61. package/dist/code-syntax/tabs-init-script.js +1 -1
  62. package/dist/code-syntax/tabs-init.d.ts +1 -2
  63. package/dist/code-syntax/tabs-init.js +2 -2
  64. package/dist/code-syntax/tabs.d.ts +6 -6
  65. package/dist/code-syntax/tabs.js +8 -8
  66. package/dist/compiled.css +2937 -2942
  67. package/dist/config/component-tokens.d.ts +1 -1
  68. package/dist/config/component-tokens.js +22 -0
  69. package/dist/config-assertions/index.d.ts +13 -0
  70. package/dist/config-assertions/index.js +14 -0
  71. package/dist/config.d.ts +36 -17
  72. package/dist/config.js +23 -95
  73. package/dist/content/content-blockquote.d.ts +2 -3
  74. package/dist/content/content-blockquote.js +3 -3
  75. package/dist/content/content-code.d.ts +3 -4
  76. package/dist/content/content-code.js +5 -5
  77. package/dist/content/content-link.d.ts +3 -4
  78. package/dist/content/content-link.js +10 -10
  79. package/dist/content/content-ol.d.ts +2 -3
  80. package/dist/content/content-ol.js +5 -4
  81. package/dist/content/content-paragraph.d.ts +2 -3
  82. package/dist/content/content-paragraph.js +1 -1
  83. package/dist/content/content-strong.d.ts +2 -3
  84. package/dist/content/content-strong.js +3 -3
  85. package/dist/content/content-table.d.ts +2 -3
  86. package/dist/content/content-table.js +4 -4
  87. package/dist/content/content-ul.d.ts +2 -3
  88. package/dist/content/content-ul.js +4 -4
  89. package/dist/content/heading-h2.d.ts +2 -3
  90. package/dist/content/heading-h2.js +4 -4
  91. package/dist/content/heading-h3.d.ts +2 -3
  92. package/dist/content/heading-h3.js +4 -4
  93. package/dist/content/heading-h4.d.ts +2 -3
  94. package/dist/content/heading-h4.js +4 -4
  95. package/dist/content-admonition/index.d.ts +3 -4
  96. package/dist/content-admonition/index.js +2 -2
  97. package/dist/content.css +35 -33
  98. package/dist/design-token-panel-bootstrap-controller.d.ts +178 -0
  99. package/dist/design-token-panel-bootstrap-controller.js +359 -0
  100. package/dist/design-token-panel-bootstrap-island.d.ts +5 -0
  101. package/dist/design-token-panel-bootstrap-island.js +19 -0
  102. package/dist/design-token-panel-bootstrap.d.ts +5 -195
  103. package/dist/design-token-panel-bootstrap.js +3 -288
  104. package/dist/desktop-sidebar-toggle-island/index.d.ts +2 -7
  105. package/dist/desktop-sidebar-toggle-island/index.js +2 -58
  106. package/dist/desktop-sidebar-toggle-island/island.d.ts +4 -0
  107. package/dist/desktop-sidebar-toggle-island/island.js +43 -0
  108. package/dist/desktop-sidebar-toggle-island/storage.d.ts +4 -0
  109. package/dist/desktop-sidebar-toggle-island/storage.js +29 -0
  110. package/dist/desktop-toc-toggle-island/index.d.ts +2 -7
  111. package/dist/desktop-toc-toggle-island/index.js +2 -58
  112. package/dist/desktop-toc-toggle-island/island.d.ts +4 -0
  113. package/dist/desktop-toc-toggle-island/island.js +43 -0
  114. package/dist/desktop-toc-toggle-island/storage.d.ts +4 -0
  115. package/dist/desktop-toc-toggle-island/storage.js +29 -0
  116. package/dist/details/details.d.ts +3 -4
  117. package/dist/details/details.js +1 -1
  118. package/dist/doc-body-end/index.d.ts +1 -2
  119. package/dist/doc-body-end/index.js +1 -1
  120. package/dist/doc-body-end-islands/design-token-panel-island.d.ts +2 -2
  121. package/dist/doc-body-end-islands/design-token-panel-island.js +3 -7
  122. package/dist/doc-body-end-islands/index.d.ts +4 -21
  123. package/dist/doc-body-end-islands/index.js +5 -3
  124. package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +3 -13
  125. package/dist/doc-body-end-islands/theme-pack-switcher-island.js +11 -13
  126. package/dist/doc-content-header/index.d.ts +1 -2
  127. package/dist/doc-content-header/index.js +1 -1
  128. package/dist/doc-history/index.d.ts +1 -1
  129. package/dist/doc-history/index.js +166 -141
  130. package/dist/doc-history-area/index.d.ts +6 -4
  131. package/dist/doc-history-area/index.js +17 -16
  132. package/dist/doc-metainfo-area/index.d.ts +2 -3
  133. package/dist/doc-metainfo-area/index.js +1 -1
  134. package/dist/doc-page-renderer/index.d.ts +13 -7
  135. package/dist/doc-page-renderer/index.js +10 -1
  136. package/dist/doc-page-shell/index.d.ts +20 -7
  137. package/dist/doc-page-shell/index.js +17 -6
  138. package/dist/doc-pager/index.d.ts +1 -2
  139. package/dist/doc-pager/index.js +3 -3
  140. package/dist/doc-tags-area/index.d.ts +2 -3
  141. package/dist/doc-tags-area/index.js +1 -1
  142. package/dist/doclayout/doc-layout-with-defaults.d.ts +9 -9
  143. package/dist/doclayout/doc-layout-with-defaults.js +5 -15
  144. package/dist/doclayout/doc-layout.d.ts +26 -27
  145. package/dist/doclayout/doc-layout.js +23 -14
  146. package/dist/docs-schema/index.d.ts +4 -0
  147. package/dist/docs-schema/index.js +1 -0
  148. package/dist/extract-headings/index.js +43 -12
  149. package/dist/factory-context/index.d.ts +22 -19
  150. package/dist/features.css +75 -8
  151. package/dist/find-in-page/find-bar.d.ts +4 -2
  152. package/dist/find-in-page/find-bar.js +58 -69
  153. package/dist/find-in-page/index.d.ts +2 -8
  154. package/dist/find-in-page/index.js +33 -30
  155. package/dist/footer/footer.d.ts +3 -4
  156. package/dist/footer/footer.js +3 -3
  157. package/dist/footer-with-defaults/index.d.ts +2 -3
  158. package/dist/footer-with-defaults/index.js +1 -1
  159. package/dist/frontmatter-preview-defaults/index.js +1 -0
  160. package/dist/head/doc-head.d.ts +1 -1
  161. package/dist/head/doc-head.js +24 -32
  162. package/dist/head/og-tags.d.ts +1 -1
  163. package/dist/head/og-tags.js +8 -7
  164. package/dist/head/twitter-card.d.ts +1 -1
  165. package/dist/head/twitter-card.js +1 -1
  166. package/dist/head-with-defaults/index.d.ts +7 -2
  167. package/dist/head-with-defaults/index.js +46 -32
  168. package/dist/header/header.d.ts +8 -8
  169. package/dist/header/header.js +9 -11
  170. package/dist/header/types.d.ts +7 -7
  171. package/dist/header-with-defaults/index.d.ts +3 -4
  172. package/dist/header-with-defaults/index.js +27 -14
  173. package/dist/home-intro/index.d.ts +2 -5
  174. package/dist/home-intro/index.js +7 -5
  175. package/dist/home-intro/prepare.js +4 -3
  176. package/dist/home-page/index.d.ts +3 -3
  177. package/dist/home-page/index.js +19 -17
  178. package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -4
  179. package/dist/html-preview-wrapper/highlighted-code.js +19 -17
  180. package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +4 -25
  181. package/dist/html-preview-wrapper/html-preview-wrapper.js +2 -87
  182. package/dist/html-preview-wrapper/html-preview.d.ts +3 -10
  183. package/dist/html-preview-wrapper/html-preview.js +13 -37
  184. package/dist/html-preview-wrapper/index.d.ts +2 -1
  185. package/dist/html-preview-wrapper/index.js +1 -1
  186. package/dist/html-preview-wrapper/preview-base.d.ts +3 -5
  187. package/dist/html-preview-wrapper/preview-base.js +56 -59
  188. package/dist/html-preview-wrapper/wrapper.d.ts +20 -0
  189. package/dist/html-preview-wrapper/wrapper.js +37 -0
  190. package/dist/hydration-pending.d.ts +3 -5
  191. package/dist/hydration-pending.js +7 -5
  192. package/dist/i18n-version/language-switcher.d.ts +5 -32
  193. package/dist/i18n-version/language-switcher.js +5 -106
  194. package/dist/i18n-version/switcher-generated-scripts.d.ts +2 -0
  195. package/dist/i18n-version/switcher-generated-scripts.js +107 -0
  196. package/dist/i18n-version/switcher-url-state.d.ts +76 -0
  197. package/dist/i18n-version/switcher-url-state.js +103 -0
  198. package/dist/i18n-version/version-banner.d.ts +2 -3
  199. package/dist/i18n-version/version-banner.js +1 -1
  200. package/dist/i18n-version/version-switcher.d.ts +5 -50
  201. package/dist/i18n-version/version-switcher.js +5 -157
  202. package/dist/icons/index.d.ts +18 -19
  203. package/dist/icons/index.js +17 -33
  204. package/dist/image-enlarge/index.d.ts +1 -10
  205. package/dist/image-enlarge/index.js +80 -55
  206. package/dist/image-enlarge/public.d.ts +2 -0
  207. package/dist/image-enlarge/public.js +6 -0
  208. package/dist/image-enlarge/ssr-fallback.d.ts +2 -0
  209. package/dist/image-enlarge/ssr-fallback.js +8 -0
  210. package/dist/index.d.ts +11 -4
  211. package/dist/inline-version-switcher/index.d.ts +1 -2
  212. package/dist/inline-version-switcher/index.js +1 -1
  213. package/dist/island-types/index.d.ts +2 -2
  214. package/dist/island-types/index.js +1 -5
  215. package/dist/math-block/index.d.ts +4 -7
  216. package/dist/math-block/index.js +5 -5
  217. package/dist/mcp/handler.d.ts +8 -0
  218. package/dist/mcp/handler.js +129 -0
  219. package/dist/mcp/index.d.ts +4 -0
  220. package/dist/mcp/index.js +7 -0
  221. package/dist/mcp/loader.d.ts +19 -0
  222. package/dist/mcp/loader.js +202 -0
  223. package/dist/mdx-components/index.js +40 -108
  224. package/dist/mermaid-enlarge/index.d.ts +1 -8
  225. package/dist/mermaid-enlarge/index.js +174 -158
  226. package/dist/mermaid-enlarge/public.d.ts +2 -0
  227. package/dist/mermaid-enlarge/public.js +6 -0
  228. package/dist/mermaid-enlarge/ssr-fallback.d.ts +2 -0
  229. package/dist/mermaid-enlarge/ssr-fallback.js +8 -0
  230. package/dist/metainfo/doc-metainfo.d.ts +2 -3
  231. package/dist/metainfo/doc-metainfo.js +1 -4
  232. package/dist/metainfo/doc-tags.d.ts +2 -3
  233. package/dist/metainfo/doc-tags.js +1 -1
  234. package/dist/metainfo/frontmatter-preview.d.ts +3 -4
  235. package/dist/metainfo/frontmatter-preview.js +1 -1
  236. package/dist/nav-data-prep/index.js +6 -4
  237. package/dist/nav-indexing/category-nav.d.ts +2 -3
  238. package/dist/nav-indexing/category-nav.js +1 -2
  239. package/dist/nav-indexing/category-tree-nav.d.ts +2 -3
  240. package/dist/nav-indexing/category-tree-nav.js +1 -1
  241. package/dist/nav-indexing/doc-card-grid.d.ts +2 -3
  242. package/dist/nav-indexing/doc-card-grid.js +1 -2
  243. package/dist/nav-indexing/docs-sitemap.d.ts +2 -3
  244. package/dist/nav-indexing/docs-sitemap.js +2 -2
  245. package/dist/nav-indexing/index.d.ts +1 -1
  246. package/dist/nav-indexing/nav-card-grid.d.ts +2 -3
  247. package/dist/nav-indexing/nav-card-grid.js +1 -2
  248. package/dist/nav-indexing/note-tray-index-parts/card-list.d.ts +1 -2
  249. package/dist/nav-indexing/note-tray-index-parts/card-list.js +4 -4
  250. package/dist/nav-indexing/note-tray-index-parts/date-line.d.ts +2 -3
  251. package/dist/nav-indexing/note-tray-index-parts/date-line.js +1 -1
  252. package/dist/nav-indexing/note-tray-index-parts/index-list.d.ts +1 -2
  253. package/dist/nav-indexing/note-tray-index-parts/index-list.js +2 -2
  254. package/dist/nav-indexing/note-tray-index-parts/timeline.d.ts +1 -2
  255. package/dist/nav-indexing/note-tray-index-parts/timeline.js +2 -2
  256. package/dist/nav-indexing/note-tray-index.d.ts +1 -2
  257. package/dist/nav-indexing/note-tray-index.js +1 -1
  258. package/dist/nav-indexing/site-tree-nav-demo.d.ts +2 -3
  259. package/dist/nav-indexing/site-tree-nav-demo.js +2 -2
  260. package/dist/nav-indexing/tag-nav.d.ts +1 -2
  261. package/dist/nav-indexing/tag-nav.js +1 -1
  262. package/dist/nav-indexing/types.d.ts +2 -2
  263. package/dist/nav-indexing/versions-page-content.d.ts +2 -3
  264. package/dist/nav-indexing/versions-page-content.js +8 -8
  265. package/dist/note-tray-index/index.d.ts +1 -2
  266. package/dist/note-tray-index/index.js +1 -1
  267. package/dist/page-loading/page-loading-overlay.d.ts +1 -2
  268. package/dist/page-loading/page-loading-overlay.js +3 -5
  269. package/dist/plugins/agent-export.d.ts +3 -0
  270. package/dist/plugins/agent-export.js +34 -0
  271. package/dist/plugins/internal/agent-export/chunk.d.ts +5 -0
  272. package/dist/plugins/internal/agent-export/chunk.js +90 -0
  273. package/dist/plugins/internal/agent-export/index.d.ts +24 -0
  274. package/dist/plugins/internal/agent-export/index.js +123 -0
  275. package/dist/plugins/internal/agent-export/normalize.d.ts +5 -0
  276. package/dist/plugins/internal/agent-export/normalize.js +73 -0
  277. package/dist/plugins/internal/llms-txt/dev-middleware.d.ts +6 -0
  278. package/dist/plugins/internal/llms-txt/dev-middleware.js +8 -3
  279. package/dist/plugins/internal/llms-txt/emit.js +23 -6
  280. package/dist/plugins/internal/llms-txt/generate.d.ts +7 -1
  281. package/dist/plugins/internal/llms-txt/generate.js +9 -2
  282. package/dist/plugins/internal/llms-txt/load.d.ts +2 -0
  283. package/dist/plugins/internal/llms-txt/load.js +20 -4
  284. package/dist/plugins/internal/llms-txt/types.d.ts +10 -0
  285. package/dist/plugins/routes.js +4 -0
  286. package/dist/preset.d.ts +19 -9
  287. package/dist/preset.js +20 -1
  288. package/dist/route-context-payload/index.js +1 -1
  289. package/dist/routes/404.d.ts +2 -3
  290. package/dist/routes/404.js +1 -1
  291. package/dist/routes/_chrome.d.ts +5 -5
  292. package/dist/routes/_chrome.js +7 -2
  293. package/dist/routes/_context.d.ts +4 -4
  294. package/dist/routes/_design-token-panel-bootstrap.d.ts +1 -4
  295. package/dist/routes/_design-token-panel-bootstrap.js +9 -1
  296. package/dist/routes/docs-slug.d.ts +2 -3
  297. package/dist/routes/docs-tags-index.d.ts +2 -3
  298. package/dist/routes/docs-tags-index.js +1 -1
  299. package/dist/routes/docs-tags-tag.d.ts +2 -3
  300. package/dist/routes/docs-tags-tag.js +1 -1
  301. package/dist/routes/docs-versions.d.ts +2 -3
  302. package/dist/routes/docs-versions.js +1 -1
  303. package/dist/routes/files-path.d.ts +2 -3
  304. package/dist/routes/files-path.js +1 -1
  305. package/dist/routes/index.d.ts +2 -3
  306. package/dist/routes/index.js +1 -1
  307. package/dist/routes/locale-docs-slug.d.ts +2 -3
  308. package/dist/routes/locale-docs-tags-index.d.ts +2 -3
  309. package/dist/routes/locale-docs-tags-index.js +1 -1
  310. package/dist/routes/locale-docs-tags-tag.d.ts +2 -3
  311. package/dist/routes/locale-docs-tags-tag.js +1 -1
  312. package/dist/routes/locale-docs-versions.d.ts +2 -3
  313. package/dist/routes/locale-docs-versions.js +1 -1
  314. package/dist/routes/locale-files-path.d.ts +2 -3
  315. package/dist/routes/locale-files-path.js +1 -1
  316. package/dist/routes/locale-index.d.ts +2 -3
  317. package/dist/routes/locale-index.js +1 -1
  318. package/dist/routes/mcp.d.ts +5 -0
  319. package/dist/routes/mcp.js +25 -0
  320. package/dist/routes/v-docs-slug.d.ts +2 -3
  321. package/dist/routes/v-locale-docs-slug.d.ts +2 -3
  322. package/dist/search-widget/index.d.ts +1 -2
  323. package/dist/search-widget/index.js +4 -7
  324. package/dist/search-widget-script/generated-script.js +12 -5
  325. package/dist/settings-defaults.d.ts +2 -0
  326. package/dist/settings-defaults.js +93 -0
  327. package/dist/settings.d.ts +8 -2
  328. package/dist/sidebar/client-data.d.ts +18 -0
  329. package/dist/sidebar/client-data.js +47 -0
  330. package/dist/sidebar/index.d.ts +3 -1
  331. package/dist/sidebar/index.js +3 -1
  332. package/dist/sidebar/sidebar.d.ts +12 -44
  333. package/dist/sidebar/sidebar.js +4 -3
  334. package/dist/sidebar/types.d.ts +14 -0
  335. package/dist/sidebar-prepaint/index.d.ts +1 -2
  336. package/dist/sidebar-prepaint/index.js +4 -6
  337. package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +2 -3
  338. package/dist/sidebar-resizer/sidebar-resizer-init.js +3 -3
  339. package/dist/sidebar-toggle-island/index.d.ts +8 -11
  340. package/dist/sidebar-toggle-island/index.js +75 -62
  341. package/dist/sidebar-tree/build-tree.js +5 -6
  342. package/dist/sidebar-tree/types.d.ts +2 -0
  343. package/dist/sidebar-tree-island/index.d.ts +4 -19
  344. package/dist/sidebar-tree-island/index.js +782 -436
  345. package/dist/sidebar-tree-island/scope-state.d.ts +38 -0
  346. package/dist/sidebar-tree-island/scope-state.js +151 -0
  347. package/dist/sidebar-tree-island/sidebar-scroll-preserve.js +6 -2
  348. package/dist/sidebar-utils/index.d.ts +17 -19
  349. package/dist/sidebar-utils/index.js +100 -3
  350. package/dist/sidebar-utils/scope.d.ts +11 -0
  351. package/dist/sidebar-utils/scope.js +67 -0
  352. package/dist/sidebar-with-defaults/index.d.ts +1 -2
  353. package/dist/sidebar-with-defaults/index.js +19 -18
  354. package/dist/site-schema/nav-tree.js +15 -15
  355. package/dist/site-schema/types.d.ts +1 -0
  356. package/dist/site-tree-nav/index.d.ts +2 -3
  357. package/dist/site-tree-nav/index.js +11 -12
  358. package/dist/site-tree-nav/normalize-island-props.d.ts +16 -0
  359. package/dist/site-tree-nav/normalize-island-props.js +122 -0
  360. package/dist/site-tree-nav-island/index.d.ts +3 -3
  361. package/dist/site-tree-nav-island/index.js +243 -144
  362. package/dist/smart-break/index.d.ts +3 -4
  363. package/dist/smart-break/index.js +1 -1
  364. package/dist/tab-item/tab-item.d.ts +3 -4
  365. package/dist/tab-item/tab-item.js +1 -1
  366. package/dist/tag-pages/index.d.ts +3 -3
  367. package/dist/tag-pages/index.js +10 -10
  368. package/dist/theme/color-scheme-provider.d.ts +3 -3
  369. package/dist/theme/color-scheme-provider.js +3 -3
  370. package/dist/theme/theme-pack-provider.d.ts +1 -1
  371. package/dist/theme/theme-pack-provider.js +3 -3
  372. package/dist/theme/theme-toggle.d.ts +2 -3
  373. package/dist/theme/theme-toggle.js +1 -1
  374. package/dist/theme-pack-dialog/index.d.ts +1 -1
  375. package/dist/theme-pack-dialog/index.js +69 -75
  376. package/dist/theme-pack-dialog/theme-pack-card.d.ts +3 -4
  377. package/dist/theme-pack-dialog/theme-pack-card.js +19 -17
  378. package/dist/theme-pack-switcher/index.d.ts +4 -5
  379. package/dist/theme-pack-switcher/index.js +52 -49
  380. package/dist/theme-packs/academia/meta.json +1 -1
  381. package/dist/theme-packs/academia/pack.css +1 -1
  382. package/dist/theme-packs/bauhaus/meta.json +1 -1
  383. package/dist/theme-packs/bauhaus/pack.css +2 -2
  384. package/dist/theme-packs/blueprint/meta.json +1 -1
  385. package/dist/theme-packs/blueprint/pack.css +2 -2
  386. package/dist/theme-packs/botanica/meta.json +1 -1
  387. package/dist/theme-packs/botanica/pack.css +2 -2
  388. package/dist/theme-packs/broadsheet/meta.json +1 -1
  389. package/dist/theme-packs/broadsheet/pack.css +2 -2
  390. package/dist/theme-packs/brutalist/meta.json +1 -1
  391. package/dist/theme-packs/brutalist/pack.css +2 -2
  392. package/dist/theme-packs/eink/meta.json +1 -1
  393. package/dist/theme-packs/eink/pack.css +1 -1
  394. package/dist/theme-packs/futura-editorial/meta.json +1 -1
  395. package/dist/theme-packs/futura-editorial/pack.css +2 -2
  396. package/dist/theme-packs/hearth/meta.json +1 -1
  397. package/dist/theme-packs/hearth/pack.css +2 -2
  398. package/dist/theme-packs/ledger/meta.json +1 -1
  399. package/dist/theme-packs/ledger/pack.css +1 -1
  400. package/dist/theme-packs/manuscript/meta.json +1 -1
  401. package/dist/theme-packs/manuscript/pack.css +1 -1
  402. package/dist/theme-packs/matcha/meta.json +1 -1
  403. package/dist/theme-packs/matcha/pack.css +2 -2
  404. package/dist/theme-packs/nocturne/meta.json +1 -1
  405. package/dist/theme-packs/nocturne/pack.css +2 -2
  406. package/dist/theme-packs/observatory/meta.json +1 -1
  407. package/dist/theme-packs/observatory/pack.css +2 -2
  408. package/dist/theme-packs/onyx/meta.json +1 -1
  409. package/dist/theme-packs/onyx/pack.css +2 -2
  410. package/dist/theme-packs/phosphor/meta.json +1 -1
  411. package/dist/theme-packs/phosphor/pack.css +2 -2
  412. package/dist/theme-packs/riso/meta.json +1 -1
  413. package/dist/theme-packs/riso/pack.css +2 -2
  414. package/dist/theme-packs/sakura/meta.json +1 -1
  415. package/dist/theme-packs/sakura/pack.css +2 -2
  416. package/dist/theme-packs/scandi/meta.json +1 -1
  417. package/dist/theme-packs/scandi/pack.css +1 -1
  418. package/dist/theme-packs/solar/meta.json +1 -1
  419. package/dist/theme-packs/solar/pack.css +1 -1
  420. package/dist/theme-packs/sumi/meta.json +1 -1
  421. package/dist/theme-packs/sumi/pack.css +2 -2
  422. package/dist/theme-packs/swissgrid/meta.json +1 -1
  423. package/dist/theme-packs/swissgrid/pack.css +1 -1
  424. package/dist/theme-packs/timberline/meta.json +1 -1
  425. package/dist/theme-packs/timberline/pack.css +2 -2
  426. package/dist/theme-packs/washi/meta.json +1 -1
  427. package/dist/theme-packs/washi/pack.css +2 -2
  428. package/dist/theme-toggle/index.d.ts +1 -1
  429. package/dist/theme-toggle/index.js +154 -167
  430. package/dist/theme.css +47 -121
  431. package/dist/toc/mobile-toc.d.ts +3 -5
  432. package/dist/toc/mobile-toc.js +29 -27
  433. package/dist/toc/toc.d.ts +3 -4
  434. package/dist/toc/toc.js +18 -18
  435. package/dist/toc/use-active-heading.d.ts +5 -4
  436. package/dist/toc/use-active-heading.js +36 -30
  437. package/dist/toc-prepaint/index.d.ts +1 -2
  438. package/dist/toc-prepaint/index.js +4 -6
  439. package/dist/transitions/nested-island-props-refresh.d.ts +3 -16
  440. package/dist/transitions/nested-island-props-refresh.js +133 -151
  441. package/dist/transitions/page-events.d.ts +8 -13
  442. package/dist/tree-nav-shared/index.d.ts +4 -5
  443. package/dist/tree-nav-shared/index.js +6 -7
  444. package/dist/use-modal-dialog/index.d.ts +9 -63
  445. package/dist/use-modal-dialog/index.js +41 -59
  446. package/dist/versions-page/index.d.ts +3 -3
  447. package/dist/versions-page/index.js +5 -5
  448. package/dist/wind/index.d.ts +5 -0
  449. package/dist/wind/index.js +169 -0
  450. package/dist/wind.json +498 -0
  451. package/dist/z-index-defaults/index.d.ts +4 -4
  452. package/dist/zdtp-loader.d.ts +7 -0
  453. package/dist/zdtp-loader.js +8 -0
  454. package/eject/asset-components/asset-card.tsx +14 -16
  455. package/eject/asset-components/asset-code.tsx +10 -12
  456. package/eject/asset-components/shared.tsx +5 -7
  457. package/eject/breadcrumb/breadcrumb.tsx +15 -16
  458. package/eject/code-group/index.tsx +4 -10
  459. package/eject/content-admonition/index.tsx +5 -6
  460. package/eject/desktop-sidebar-toggle-island/index.ts +4 -0
  461. package/eject/desktop-sidebar-toggle-island/island.tsx +50 -0
  462. package/eject/desktop-sidebar-toggle-island/storage.ts +27 -0
  463. package/eject/details/details.tsx +3 -5
  464. package/eject/doc-history/index.tsx +193 -179
  465. package/eject/doc-pager/index.tsx +3 -4
  466. package/eject/footer/footer.tsx +7 -9
  467. package/eject/header/header.tsx +42 -54
  468. package/eject/header/nav-overflow-script.ts +1 -1
  469. package/eject/header/types.ts +12 -13
  470. package/eject/image-enlarge/index.tsx +84 -69
  471. package/eject/image-enlarge/public.ts +2 -0
  472. package/eject/image-enlarge/ssr-fallback.tsx +7 -0
  473. package/eject/page-loading/page-loading-overlay.tsx +8 -15
  474. package/eject/sidebar/client-data.ts +68 -0
  475. package/eject/sidebar/index.ts +3 -0
  476. package/eject/sidebar/sidebar.tsx +16 -97
  477. package/eject/sidebar/types.ts +15 -0
  478. package/eject/sidebar-toggle-island/index.tsx +103 -102
  479. package/eject/sidebar-tree-island/index.tsx +827 -615
  480. package/eject/sidebar-tree-island/scope-state.ts +154 -0
  481. package/eject/sidebar-tree-island/sidebar-scroll-preserve.ts +8 -2
  482. package/eject/site-tree-nav-island/index.tsx +349 -222
  483. package/eject/tab-item/tab-item.tsx +2 -4
  484. package/eject/theme-toggle/hydration-pending.ts +6 -10
  485. package/eject/theme-toggle/index.tsx +133 -173
  486. package/eject/toc/mobile-toc.tsx +27 -31
  487. package/eject/toc/toc.tsx +21 -24
  488. package/eject/toc/use-active-heading.ts +43 -38
  489. package/package.json +40 -22
  490. package/routes-src/404.tsx +2 -3
  491. package/routes-src/_chrome.tsx +7 -2
  492. package/routes-src/_design-token-panel-bootstrap.tsx +1 -63
  493. package/routes-src/docs-slug.tsx +2 -3
  494. package/routes-src/docs-tags-index.tsx +2 -3
  495. package/routes-src/docs-tags-tag.tsx +2 -3
  496. package/routes-src/docs-versions.tsx +2 -3
  497. package/routes-src/files-path.tsx +2 -4
  498. package/routes-src/index.tsx +2 -3
  499. package/routes-src/locale-docs-slug.tsx +2 -3
  500. package/routes-src/locale-docs-tags-index.tsx +2 -3
  501. package/routes-src/locale-docs-tags-tag.tsx +2 -3
  502. package/routes-src/locale-docs-versions.tsx +2 -3
  503. package/routes-src/locale-files-path.tsx +2 -4
  504. package/routes-src/locale-index.tsx +2 -3
  505. package/routes-src/mcp.tsx +25 -0
  506. package/routes-src/v-docs-slug.tsx +2 -3
  507. package/routes-src/v-locale-docs-slug.tsx +2 -3
  508. package/tsconfig.base.json +1 -1
  509. package/dist/safelist.css +0 -2
  510. package/dist/theme-no-reset.css +0 -379
  511. package/eject/desktop-sidebar-toggle-island/index.tsx +0 -110
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "preact/jsx-runtime";
3
- import { useEffect, useRef, useState } from "preact/hooks";
2
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
+ import { computed, getScope, signal, Show } from "@takazudo/zfb/zudo-react";
4
4
  import { ChevronLeft, ChevronRight, Close } from "../icons/index.js";
5
- import { useHydrationPending } from "../hydration-pending.js";
5
+ import { hydrationPending } from "../hydration-pending.js";
6
6
  import { ThemePackDialog } from "../theme-pack-dialog/index.js";
7
7
  import { applyThemePack } from "./theme-pack-sync.js";
8
8
  import {
@@ -17,7 +17,6 @@ function GridIcon({ className }) {
17
17
  return /* @__PURE__ */ jsxs(
18
18
  "svg",
19
19
  {
20
- xmlns: "http://www.w3.org/2000/svg",
21
20
  class: className || void 0,
22
21
  fill: "none",
23
22
  viewBox: "0 0 24 24",
@@ -37,7 +36,6 @@ function PaletteIcon({ className }) {
37
36
  return /* @__PURE__ */ jsxs(
38
37
  "svg",
39
38
  {
40
- xmlns: "http://www.w3.org/2000/svg",
41
39
  class: className || void 0,
42
40
  fill: "none",
43
41
  viewBox: "0 0 24 24",
@@ -60,43 +58,46 @@ function PaletteIcon({ className }) {
60
58
  }
61
59
  );
62
60
  }
63
- const CONTROL_BUTTON_CLASS = "flex items-center gap-hsp-xs rounded border border-muted bg-bg px-hsp-md py-hsp-2xs text-caption text-fg transition-colors hover:border-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:opacity-50 disabled:pointer-events-none";
64
- const ICON_BUTTON_CLASS = "flex items-center justify-center rounded p-hsp-2xs text-muted transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:opacity-50 disabled:pointer-events-none";
61
+ const CONTROL_BUTTON_CLASS = "flex items-center gap-hsp-xs rounded border border-muted bg-bg px-hsp-md py-hsp-2xs text-caption text-fg transition-colors duration-0 hover:border-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:opacity-50 disabled:pointer-events-none";
62
+ const ICON_BUTTON_CLASS = "flex items-center justify-center rounded p-hsp-2xs text-muted transition-colors duration-0 hover:text-fg focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:opacity-50 disabled:pointer-events-none";
65
63
  function ThemePackSwitcher({
66
64
  active,
67
65
  order,
68
66
  base,
69
67
  pendingUntilHydrated = true
70
68
  }) {
71
- const pending = useHydrationPending(pendingUntilHydrated);
72
- const [open, setOpen] = useState(false);
73
- const [dialogOpen, setDialogOpen] = useState(false);
74
- const [activeSlug, setActiveSlug] = useState(active);
75
- const launcherRef = useRef(null);
76
- const cardRef = useRef(null);
77
- useEffect(() => connectActivePackSync(setActiveSlug), []);
78
- useEffect(() => {
79
- if (!open || dialogOpen) return void 0;
69
+ const scope = getScope();
70
+ const pending = hydrationPending(scope, pendingUntilHydrated);
71
+ const open = signal(false);
72
+ const dialogOpen = signal(false);
73
+ const activeSlug = signal(active);
74
+ const launcherRef = { current: null };
75
+ const cardRef = { current: null };
76
+ scope.onActivate(() => connectActivePackSync((slug) => {
77
+ activeSlug.value = slug;
78
+ }));
79
+ scope.effect(() => {
80
+ if (!open.value || dialogOpen.value) return;
80
81
  return connectEscapeToClose(() => {
81
- setOpen(false);
82
+ open.value = false;
82
83
  launcherRef.current?.focus();
83
84
  });
84
- }, [open, dialogOpen]);
85
- useEffect(() => {
86
- if (open) cardRef.current?.focus();
87
- }, [open]);
88
- const entry = resolveActiveEntry(order, activeSlug);
85
+ });
86
+ scope.effect(() => {
87
+ if (open.value) cardRef.current?.focus();
88
+ });
89
+ const entry = computed(() => resolveActiveEntry(order, activeSlug.value));
89
90
  function cycle(step) {
90
- const target = step === 1 ? nextPackSlug(order, activeSlug) : prevPackSlug(order, activeSlug);
91
- if (target !== null && target !== activeSlug) void applyThemePack(target);
91
+ const target = step === 1 ? nextPackSlug(order, activeSlug.value) : prevPackSlug(order, activeSlug.value);
92
+ if (target !== null && target !== activeSlug.value) void applyThemePack(target);
92
93
  }
93
94
  function closeCard() {
94
- setOpen(false);
95
+ open.value = false;
95
96
  launcherRef.current?.focus();
96
97
  }
97
98
  function openDialog() {
98
- setOpen(false);
99
- setDialogOpen(true);
99
+ open.value = false;
100
+ dialogOpen.value = true;
100
101
  }
101
102
  return /* @__PURE__ */ jsxs(
102
103
  "div",
@@ -104,18 +105,18 @@ function ThemePackSwitcher({
104
105
  class: "fixed right-hsp-lg bottom-hsp-lg z-popover flex flex-col items-end gap-vsp-2xs",
105
106
  "data-theme-pack-switcher": true,
106
107
  children: [
107
- open ? /* @__PURE__ */ jsxs(
108
+ /* @__PURE__ */ jsx(Show, { when: open, children: () => /* @__PURE__ */ jsxs(
108
109
  "div",
109
110
  {
110
111
  ref: cardRef,
111
- tabIndex: -1,
112
+ tabindex: -1,
112
113
  role: "dialog",
113
114
  "aria-label": "Theme pack switcher",
114
115
  "data-switcher-card": true,
115
- class: "flex w-[360px] max-w-[calc(100vw-2rem)] flex-col gap-vsp-2xs rounded-lg border border-muted bg-surface p-hsp-lg shadow-lg focus-visible:outline-2 focus-visible:outline-accent",
116
+ class: "flex w-[360px] max-w-[calc(100vw_-_2rem)] flex-col gap-vsp-2xs rounded-lg border border-muted bg-surface p-hsp-lg shadow-lg focus-visible:outline-2 focus-visible:outline-accent",
116
117
  children: [
117
118
  /* @__PURE__ */ jsxs("div", { class: "flex items-start justify-between gap-hsp-sm", children: [
118
- /* @__PURE__ */ jsx("p", { class: "min-w-0 break-words text-body font-bold text-fg", "aria-live": "polite", children: entry?.name ?? activeSlug }),
119
+ /* @__PURE__ */ jsx("p", { class: "min-w-0 break-words text-body font-bold text-fg", "aria-live": "polite", children: computed(() => entry.value?.name ?? activeSlug.value) }),
119
120
  /* @__PURE__ */ jsxs("div", { class: "flex shrink-0 items-center gap-hsp-2xs", children: [
120
121
  /* @__PURE__ */ jsx(
121
122
  "button",
@@ -124,7 +125,7 @@ function ThemePackSwitcher({
124
125
  "aria-label": "Browse all theme packs",
125
126
  title: "Browse all theme packs",
126
127
  disabled: ThemePackDialogSlot === null,
127
- onClick: openDialog,
128
+ "on:click": openDialog,
128
129
  class: ICON_BUTTON_CLASS,
129
130
  children: /* @__PURE__ */ jsx(GridIcon, { className: "h-icon-sm w-icon-sm" })
130
131
  }
@@ -135,15 +136,15 @@ function ThemePackSwitcher({
135
136
  type: "button",
136
137
  "aria-label": "Close theme pack switcher",
137
138
  title: "Close",
138
- onClick: closeCard,
139
+ "on:click": closeCard,
139
140
  class: ICON_BUTTON_CLASS,
140
- children: /* @__PURE__ */ jsx(Close, { className: "h-icon-sm w-icon-sm" })
141
+ children: /* @__PURE__ */ jsx(Close, { class: "h-icon-sm w-icon-sm" })
141
142
  }
142
143
  )
143
144
  ] })
144
145
  ] }),
145
- entry !== null && /* @__PURE__ */ jsx("span", { class: "self-start rounded-full border border-muted px-hsp-sm text-micro tracking-wide text-muted uppercase", children: entry.mode === "dark" ? "Dark" : "Light" }),
146
- entry !== null && entry.description !== "" && /* @__PURE__ */ jsx("p", { class: "break-words text-caption text-muted", children: entry.description }),
146
+ /* @__PURE__ */ jsx(Show, { when: computed(() => entry.value !== null), children: () => /* @__PURE__ */ jsx("span", { class: "self-start rounded-full border border-muted px-hsp-sm text-micro tracking-wide text-muted uppercase", children: computed(() => entry.value?.mode === "dark" ? "Dark" : "Light") }) }),
147
+ /* @__PURE__ */ jsx(Show, { when: computed(() => entry.value !== null && entry.value.description !== ""), children: () => /* @__PURE__ */ jsx("p", { class: "break-words text-caption text-muted", children: computed(() => entry.value?.description) }) }),
147
148
  /* @__PURE__ */ jsxs("div", { class: "flex items-center justify-between gap-hsp-sm", children: [
148
149
  /* @__PURE__ */ jsxs(
149
150
  "button",
@@ -151,10 +152,10 @@ function ThemePackSwitcher({
151
152
  type: "button",
152
153
  "aria-label": "Previous theme pack",
153
154
  disabled: order.length < 2,
154
- onClick: () => cycle(-1),
155
+ "on:click": () => cycle(-1),
155
156
  class: CONTROL_BUTTON_CLASS,
156
157
  children: [
157
- /* @__PURE__ */ jsx(ChevronLeft, { className: "h-icon-xs w-icon-xs" }),
158
+ /* @__PURE__ */ jsx(ChevronLeft, { class: "h-icon-xs w-icon-xs" }),
158
159
  "Prev"
159
160
  ]
160
161
  }
@@ -165,18 +166,18 @@ function ThemePackSwitcher({
165
166
  type: "button",
166
167
  "aria-label": "Next theme pack",
167
168
  disabled: order.length < 2,
168
- onClick: () => cycle(1),
169
+ "on:click": () => cycle(1),
169
170
  class: CONTROL_BUTTON_CLASS,
170
171
  children: [
171
172
  "Next",
172
- /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-xs w-icon-xs" })
173
+ /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-xs w-icon-xs" })
173
174
  ]
174
175
  }
175
176
  )
176
177
  ] })
177
178
  ]
178
179
  }
179
- ) : null,
180
+ ) }),
180
181
  /* @__PURE__ */ jsx(
181
182
  "button",
182
183
  {
@@ -185,15 +186,15 @@ function ThemePackSwitcher({
185
186
  "aria-haspopup": "dialog",
186
187
  "aria-expanded": open,
187
188
  "aria-label": "Theme pack switcher",
188
- "aria-disabled": pending ? "true" : void 0,
189
+ "aria-disabled": computed(() => pending.value ? "true" : void 0),
189
190
  title: "Theme packs",
190
191
  "data-switcher-launcher": true,
191
- "data-zd-pending": pending ? "" : void 0,
192
- onClick: () => {
193
- if (pending) return;
194
- setOpen(!open);
192
+ "data-zd-pending": computed(() => pending.value ? "" : void 0),
193
+ "on:click": () => {
194
+ if (pending.value) return;
195
+ open.value = !open.value;
195
196
  },
196
- class: "flex h-[2.5rem] w-[2.5rem] items-center justify-center rounded-full border border-muted bg-surface text-fg shadow-lg transition-colors hover:text-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2",
197
+ class: "flex h-[2.5rem] w-[2.5rem] items-center justify-center rounded-full border border-muted bg-surface text-fg shadow-lg transition-colors duration-0 hover:text-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2",
197
198
  children: /* @__PURE__ */ jsx(PaletteIcon, { className: "h-icon-md w-icon-md" })
198
199
  }
199
200
  ),
@@ -201,9 +202,11 @@ function ThemePackSwitcher({
201
202
  ThemePackDialogSlot,
202
203
  {
203
204
  open: dialogOpen,
204
- onClose: () => setDialogOpen(false),
205
+ onClose: () => {
206
+ dialogOpen.value = false;
207
+ },
205
208
  order,
206
- active: activeSlug,
209
+ active: activeSlug.value,
207
210
  base
208
211
  }
209
212
  ) : null
@@ -4,7 +4,7 @@
4
4
  "name": "Academia",
5
5
  "description": "A LaTeX paper for the web — white page, Computer-Modern-black ink, hyperref navy links, numbered theorem admonitions, booktabs tables. Dark mode is a scholarly slate.",
6
6
  "mode": "light",
7
- "version": "1.0.2",
7
+ "version": "1.0.3",
8
8
  "fonts": {
9
9
  "sans": "Source Serif 4",
10
10
  "mono": "Courier Prime",
@@ -397,7 +397,7 @@ html[data-theme-pack="academia"] header[data-header] {
397
397
  }
398
398
  html[data-theme-pack="academia"] [data-header-logo] {
399
399
  font-variant-caps: small-caps;
400
- font-weight: 600;
400
+ font-weight: var(--zdc-header-logo-weight, 600);
401
401
  letter-spacing: 0.03em;
402
402
  font-size: 1.3rem;
403
403
  }
@@ -4,7 +4,7 @@
4
4
  "name": "Bauhaus",
5
5
  "description": "Primary triad as structure — gallery white, near-black ink, and red, yellow, blue doing structural work: circle, triangle, square markers, thick geometric rules, zero radius.",
6
6
  "mode": "light",
7
- "version": "1.0.0",
7
+ "version": "1.0.1",
8
8
  "fonts": {
9
9
  "sans": "Jost",
10
10
  "mono": "Space Mono",
@@ -207,8 +207,8 @@ html[data-theme-pack="bauhaus"] header[data-header] {
207
207
  background-repeat: no-repeat;
208
208
  }
209
209
  html[data-theme-pack="bauhaus"] [data-header-logo] {
210
- font-family: var(--font-display);
211
- font-weight: 400;
210
+ font-family: var(--zdc-header-logo-font, var(--font-display));
211
+ font-weight: var(--zdc-header-logo-weight, 400);
212
212
  letter-spacing: 0.01em;
213
213
  }
214
214
  html[data-theme-pack="bauhaus"] [data-header-logo]::before {
@@ -4,7 +4,7 @@
4
4
  "name": "Blueprint",
5
5
  "description": "Cyanotype drafting sheet — pale-cyan linework on prussian grid paper, title-block caps, dashed rules, mono-caps labels. Light mode is the vellum original.",
6
6
  "mode": "dark",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "Inter",
10
10
  "mono": "IBM Plex Mono",
@@ -274,9 +274,9 @@ html[data-theme-pack="blueprint"] header[data-header]::after {
274
274
  /* the logo is the title-block cell: Josefin caps, bordered, with a
275
275
  drafting center-mark stamp */
276
276
  html[data-theme-pack="blueprint"] [data-header-logo] {
277
- font-family: var(--font-display);
277
+ font-family: var(--zdc-header-logo-font, var(--font-display));
278
278
  font-size: 1rem;
279
- font-weight: 600;
279
+ font-weight: var(--zdc-header-logo-weight, 600);
280
280
  text-transform: uppercase;
281
281
  letter-spacing: 0.14em;
282
282
  border: 1px solid color-mix(in oklch, var(--zd-fg) 55%, transparent);
@@ -4,7 +4,7 @@
4
4
  "name": "Botanica",
5
5
  "description": "A vintage botanical plate — herbarium cream, deep green ink, engraved double rules, Latin small-caps plate labels.",
6
6
  "mode": "light",
7
- "version": "1.0.0",
7
+ "version": "1.0.1",
8
8
  "fonts": {
9
9
  "sans": "Crimson Pro",
10
10
  "mono": "Courier Prime",
@@ -208,9 +208,9 @@ html[data-theme-pack="botanica"] header[data-header] {
208
208
  border-bottom: 3px double color-mix(in oklch, var(--zd-fg) 50%, transparent);
209
209
  }
210
210
  html[data-theme-pack="botanica"] [data-header-logo] {
211
- font-family: var(--font-display);
211
+ font-family: var(--zdc-header-logo-font, var(--font-display));
212
212
  font-size: 1.45rem;
213
- font-weight: 600;
213
+ font-weight: var(--zdc-header-logo-weight, 600);
214
214
  letter-spacing: 0.02em;
215
215
  }
216
216
  html[data-theme-pack="botanica"] [data-header-logo]::before {
@@ -4,7 +4,7 @@
4
4
  "name": "Broadsheet",
5
5
  "description": "Newspaper editorial — Playfair masthead, Oxford ink rules, a red drop cap, and a night-edition dark mode.",
6
6
  "mode": "light",
7
- "version": "1.0.2",
7
+ "version": "1.0.3",
8
8
  "fonts": {
9
9
  "sans": "Source Serif 4",
10
10
  "mono": "Courier Prime",
@@ -202,8 +202,8 @@ html[data-theme-pack="broadsheet"] header[data-header] {
202
202
  box-shadow: 0 6px 0 -5px var(--zd-fg);
203
203
  }
204
204
  html[data-theme-pack="broadsheet"] [data-header-logo] {
205
- font-family: var(--font-display);
206
- font-weight: 900;
205
+ font-family: var(--zdc-header-logo-font, var(--font-display));
206
+ font-weight: var(--zdc-header-logo-weight, 900);
207
207
  letter-spacing: 0.01em;
208
208
  }
209
209
  html[data-theme-pack="broadsheet"] [data-nav-item] {
@@ -4,7 +4,7 @@
4
4
  "name": "Brutalist",
5
5
  "description": "Raw concrete web — stark black on white, 4px slab borders, zero radius, hazard-orange tape. Structure you can see.",
6
6
  "mode": "light",
7
- "version": "1.0.3",
7
+ "version": "1.0.4",
8
8
  "fonts": {
9
9
  "sans": "Space Grotesk",
10
10
  "mono": "IBM Plex Mono",
@@ -255,8 +255,8 @@ html[data-theme-pack="brutalist"] header[data-header] button:focus-visible {
255
255
 
256
256
  html[data-theme-pack="brutalist"] [data-header-logo] {
257
257
  color: var(--zd-bg);
258
- font-family: var(--font-display);
259
- font-weight: 400;
258
+ font-family: var(--zdc-header-logo-font, var(--font-display));
259
+ font-weight: var(--zdc-header-logo-weight, 400);
260
260
  font-size: 1.02rem;
261
261
  text-transform: uppercase;
262
262
  letter-spacing: 0.04em;
@@ -4,7 +4,7 @@
4
4
  "name": "E-Ink",
5
5
  "description": "E-reader grayscale — warm paper, near-black ink, shadowless hairline chrome, zero radius. Code is told by weight, slant, and gray value; only diffs keep a trace of ink-blue and ink-red.",
6
6
  "mode": "light",
7
- "version": "1.0.0",
7
+ "version": "1.0.1",
8
8
  "fonts": {
9
9
  "sans": "EB Garamond",
10
10
  "mono": "Courier Prime",
@@ -255,7 +255,7 @@ html[data-theme-pack="eink"] .zd-content hr {
255
255
 
256
256
  /* device-menu chrome labels: small, letterspaced, even in Garamond */
257
257
  html[data-theme-pack="eink"] [data-header-logo] {
258
- font-weight: 600;
258
+ font-weight: var(--zdc-header-logo-weight, 600);
259
259
  font-size: 1.3rem;
260
260
  letter-spacing: 0.01em;
261
261
  }
@@ -4,7 +4,7 @@
4
4
  "name": "Futura Editorial",
5
5
  "description": "Normal-weight geometric Futura headings over Noto Sans body — clean white, near-black ink, one restrained red accent.",
6
6
  "mode": "light",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "Noto Sans",
10
10
  "mono": "Space Mono",
@@ -175,8 +175,8 @@ html[data-theme-pack="futura-editorial"] header[data-header] {
175
175
  border-bottom: 1px solid var(--zd-fg);
176
176
  }
177
177
  html[data-theme-pack="futura-editorial"] [data-header-logo] {
178
- font-family: var(--font-display);
179
- font-weight: 400;
178
+ font-family: var(--zdc-header-logo-font, var(--font-display));
179
+ font-weight: var(--zdc-header-logo-weight, 400);
180
180
  font-size: 1.05rem;
181
181
  text-transform: uppercase;
182
182
  letter-spacing: 0.16em;
@@ -4,7 +4,7 @@
4
4
  "name": "Hearth",
5
5
  "description": "Warm cream & brick-red fireside docs — Fraunces headings, amber code blocks, ember-glow dark mode.",
6
6
  "mode": "light",
7
- "version": "1.0.3",
7
+ "version": "1.0.4",
8
8
  "fonts": {
9
9
  "sans": "Nunito",
10
10
  "mono": "Spline Sans Mono",
@@ -193,8 +193,8 @@ html[data-theme-pack="hearth"] header[data-header] {
193
193
  );
194
194
  }
195
195
  html[data-theme-pack="hearth"] [data-header-logo] {
196
- font-family: var(--font-display);
197
- font-weight: 620;
196
+ font-family: var(--zdc-header-logo-font, var(--font-display));
197
+ font-weight: var(--zdc-header-logo-weight, 620);
198
198
  color: var(--zd-accent);
199
199
  }
200
200
  /* Exclude the current page: it carries the base `bg-fg text-bg` inverted
@@ -4,7 +4,7 @@
4
4
  "name": "Ledger",
5
5
  "description": "Cream academic serif in the Tufte tradition — warm paper, ink prose, oxblood links, hairline rules, quiet code.",
6
6
  "mode": "light",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "Crimson Pro",
10
10
  "mono": "IBM Plex Mono",
@@ -203,7 +203,7 @@ html[data-theme-pack="ledger"] header[data-header] {
203
203
  border-bottom-color: color-mix(in srgb, var(--zd-fg) 30%, transparent);
204
204
  }
205
205
  html[data-theme-pack="ledger"] [data-header-logo] {
206
- font-weight: 500;
206
+ font-weight: var(--zdc-header-logo-weight, 500);
207
207
  font-style: italic;
208
208
  font-size: 1.4rem;
209
209
  letter-spacing: 0.01em;
@@ -4,7 +4,7 @@
4
4
  "name": "Manuscript",
5
5
  "description": "A quiet Garamond book page — warm paper, soft ink, sepia rubrication, small-caps subheads, fleuron section marks.",
6
6
  "mode": "light",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "EB Garamond",
10
10
  "mono": "Courier Prime",
@@ -183,7 +183,7 @@ html[data-theme-pack="manuscript"] header[data-header] {
183
183
  html[data-theme-pack="manuscript"] [data-header-logo] {
184
184
  font-variant-caps: small-caps;
185
185
  letter-spacing: 0.06em;
186
- font-weight: 600;
186
+ font-weight: var(--zdc-header-logo-weight, 600);
187
187
  font-size: 1.35rem;
188
188
  }
189
189
  html[data-theme-pack="manuscript"] [data-nav-item] {
@@ -4,7 +4,7 @@
4
4
  "name": "Matcha",
5
5
  "description": "Green tea ceremony — deep matcha on warm cream, mincho headings, zen whitespace, tea-foam surfaces in both modes.",
6
6
  "mode": "light",
7
- "version": "1.0.2",
7
+ "version": "1.0.3",
8
8
  "fonts": {
9
9
  "sans": "Zen Kaku Gothic New",
10
10
  "mono": "M PLUS 1 Code",
@@ -251,8 +251,8 @@ html[data-theme-pack="matcha"] header[data-header] {
251
251
  );
252
252
  }
253
253
  html[data-theme-pack="matcha"] [data-header-logo] {
254
- font-family: var(--font-display);
255
- font-weight: 600;
254
+ font-family: var(--zdc-header-logo-font, var(--font-display));
255
+ font-weight: var(--zdc-header-logo-weight, 600);
256
256
  letter-spacing: 0.05em;
257
257
  }
258
258
 
@@ -4,7 +4,7 @@
4
4
  "name": "Nocturne",
5
5
  "description": "Purple midnight — velvet aubergine depths, lavender links, and muted gold hairlines. Elegant, never neon.",
6
6
  "mode": "dark",
7
- "version": "1.0.2",
7
+ "version": "1.0.3",
8
8
  "fonts": {
9
9
  "sans": "Manrope",
10
10
  "mono": "IBM Plex Mono",
@@ -235,8 +235,8 @@ html[data-theme-pack="nocturne"] header[data-header] {
235
235
  );
236
236
  }
237
237
  html[data-theme-pack="nocturne"] [data-header-logo] {
238
- font-family: var(--font-display);
239
- font-weight: 600;
238
+ font-family: var(--zdc-header-logo-font, var(--font-display));
239
+ font-weight: var(--zdc-header-logo-weight, 600);
240
240
  font-size: 1.45rem;
241
241
  letter-spacing: 0.02em;
242
242
  }
@@ -4,7 +4,7 @@
4
4
  "name": "Observatory",
5
5
  "description": "Night-sky atlas: star-field depth, constellation-line rules, nebula violet and comet gold over astronomer's navy.",
6
6
  "mode": "dark",
7
- "version": "1.0.3",
7
+ "version": "1.0.4",
8
8
  "fonts": {
9
9
  "sans": "Jost",
10
10
  "mono": "Space Mono",
@@ -288,8 +288,8 @@ html[data-theme-pack="observatory"] header[data-header] {
288
288
  );
289
289
  }
290
290
  html[data-theme-pack="observatory"] [data-header-logo] {
291
- font-family: var(--font-display);
292
- font-weight: 300;
291
+ font-family: var(--zdc-header-logo-font, var(--font-display));
292
+ font-weight: var(--zdc-header-logo-weight, 300);
293
293
  font-size: 1.05rem;
294
294
  letter-spacing: 0.16em;
295
295
  text-transform: uppercase;
@@ -4,7 +4,7 @@
4
4
  "name": "Onyx",
5
5
  "description": "Luxury noir — jet black, champagne serif headings, and a single gold hairline accent. Watch-brand restraint.",
6
6
  "mode": "dark",
7
- "version": "1.0.3",
7
+ "version": "1.0.4",
8
8
  "fonts": {
9
9
  "sans": "Jost",
10
10
  "mono": "IBM Plex Mono",
@@ -229,8 +229,8 @@ html[data-theme-pack="onyx"] header[data-header] {
229
229
  border-bottom: 1px solid color-mix(in oklch, var(--zd-accent) 38%, transparent);
230
230
  }
231
231
  html[data-theme-pack="onyx"] [data-header-logo] {
232
- font-family: var(--font-display);
233
- font-weight: 600;
232
+ font-family: var(--zdc-header-logo-font, var(--font-display));
233
+ font-weight: var(--zdc-header-logo-weight, 600);
234
234
  font-size: 1.35rem;
235
235
  letter-spacing: 0.04em;
236
236
  }
@@ -4,7 +4,7 @@
4
4
  "name": "Phosphor",
5
5
  "description": "Green CRT terminal — phosphor glow, scanlines, inverse-video nav, monospace everything.",
6
6
  "mode": "dark",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "JetBrains Mono",
10
10
  "mono": "JetBrains Mono",
@@ -225,8 +225,8 @@ html[data-theme-pack="phosphor"] header[data-header] {
225
225
  border-bottom-color: color-mix(in oklch, var(--zd-accent) 40%, transparent);
226
226
  }
227
227
  html[data-theme-pack="phosphor"] [data-header-logo] {
228
- font-family: var(--font-display);
229
- font-weight: 400;
228
+ font-family: var(--zdc-header-logo-font, var(--font-display));
229
+ font-weight: var(--zdc-header-logo-weight, 400);
230
230
  font-size: 1.55rem;
231
231
  color: var(--zd-accent);
232
232
  }
@@ -4,7 +4,7 @@
4
4
  "name": "Riso",
5
5
  "description": "Risograph duotone print — warm paper, two inks (riso blue + fluorescent coral), misregistered offset shadows, and a soft linear paper grain.",
6
6
  "mode": "light",
7
- "version": "1.0.0",
7
+ "version": "1.0.1",
8
8
  "fonts": {
9
9
  "sans": "Space Grotesk",
10
10
  "mono": "Space Mono",
@@ -235,8 +235,8 @@ html[data-theme-pack="riso"] header[data-header] {
235
235
  border-bottom: 3px solid var(--zd-accent);
236
236
  }
237
237
  html[data-theme-pack="riso"] [data-header-logo] {
238
- font-family: var(--font-display);
239
- font-weight: 400;
238
+ font-family: var(--zdc-header-logo-font, var(--font-display));
239
+ font-weight: var(--zdc-header-logo-weight, 400);
240
240
  letter-spacing: 0.01em;
241
241
  }
242
242
  html[data-theme-pack="riso"] [data-header-logo]::before {
@@ -4,7 +4,7 @@
4
4
  "name": "Sakura",
5
5
  "description": "Cherry-blossom pastels — blush-white paper, plum ink, and rose accents on petal-soft corners; dark mode is yozakura, night blossoms under lantern-pink light.",
6
6
  "mode": "light",
7
- "version": "1.0.1",
7
+ "version": "1.0.2",
8
8
  "fonts": {
9
9
  "sans": "Nunito",
10
10
  "mono": "M PLUS 1 Code",
@@ -215,8 +215,8 @@ html[data-theme-pack="sakura"] header[data-header] {
215
215
 
216
216
  /* wordmark — mincho voice with a single blossom */
217
217
  html[data-theme-pack="sakura"] [data-header-logo] {
218
- font-family: var(--font-display);
219
- font-weight: 700;
218
+ font-family: var(--zdc-header-logo-font, var(--font-display));
219
+ font-weight: var(--zdc-header-logo-weight, 700);
220
220
  letter-spacing: 0.015em;
221
221
  }
222
222
  html[data-theme-pack="sakura"] [data-header-logo]::after {
@@ -4,7 +4,7 @@
4
4
  "name": "Scandi",
5
5
  "description": "Hygge minimalism — oat linen, sage & clay, pill nav actives and 8px corners; night mode is warm charcoal lit by candle amber.",
6
6
  "mode": "light",
7
- "version": "1.0.0",
7
+ "version": "1.0.1",
8
8
  "fonts": {
9
9
  "sans": "Manrope",
10
10
  "mono": "Spline Sans Mono",