@takazudo/zudo-doc 5.28.2 → 6.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 (456) hide show
  1. package/CHANGELOG.md +22 -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/category-nav/index.d.ts +1 -2
  43. package/dist/category-nav/index.js +11 -5
  44. package/dist/category-tree-nav/index.d.ts +1 -2
  45. package/dist/category-tree-nav/index.js +3 -3
  46. package/dist/chrome/derive.d.ts +18 -27
  47. package/dist/chrome/derive.js +47 -29
  48. package/dist/chrome/index.d.ts +5 -5
  49. package/dist/chrome/index.js +1 -1
  50. package/dist/chrome/island-data.d.ts +4 -0
  51. package/dist/chrome/island-data.js +52 -0
  52. package/dist/chrome/primary-slots.d.ts +2 -3
  53. package/dist/chrome-bindings.d.ts +28 -22
  54. package/dist/code-group/index.d.ts +3 -4
  55. package/dist/code-group/index.js +3 -7
  56. package/dist/code-syntax/code-block-enhancer.d.ts +1 -2
  57. package/dist/code-syntax/code-block-enhancer.js +2 -2
  58. package/dist/code-syntax/mermaid-init.d.ts +1 -2
  59. package/dist/code-syntax/mermaid-init.js +5 -2
  60. package/dist/code-syntax/tabs-init-script.js +1 -1
  61. package/dist/code-syntax/tabs-init.d.ts +1 -2
  62. package/dist/code-syntax/tabs-init.js +2 -2
  63. package/dist/code-syntax/tabs.d.ts +6 -6
  64. package/dist/code-syntax/tabs.js +8 -8
  65. package/dist/compiled.css +2933 -2943
  66. package/dist/config-assertions/index.d.ts +13 -0
  67. package/dist/config-assertions/index.js +14 -0
  68. package/dist/config.d.ts +36 -17
  69. package/dist/config.js +23 -95
  70. package/dist/content/content-blockquote.d.ts +2 -3
  71. package/dist/content/content-blockquote.js +3 -3
  72. package/dist/content/content-code.d.ts +3 -4
  73. package/dist/content/content-code.js +5 -5
  74. package/dist/content/content-link.d.ts +3 -4
  75. package/dist/content/content-link.js +10 -10
  76. package/dist/content/content-ol.d.ts +2 -3
  77. package/dist/content/content-ol.js +5 -4
  78. package/dist/content/content-paragraph.d.ts +2 -3
  79. package/dist/content/content-paragraph.js +1 -1
  80. package/dist/content/content-strong.d.ts +2 -3
  81. package/dist/content/content-strong.js +3 -3
  82. package/dist/content/content-table.d.ts +2 -3
  83. package/dist/content/content-table.js +4 -4
  84. package/dist/content/content-ul.d.ts +2 -3
  85. package/dist/content/content-ul.js +4 -4
  86. package/dist/content/heading-h2.d.ts +2 -3
  87. package/dist/content/heading-h2.js +4 -4
  88. package/dist/content/heading-h3.d.ts +2 -3
  89. package/dist/content/heading-h3.js +4 -4
  90. package/dist/content/heading-h4.d.ts +2 -3
  91. package/dist/content/heading-h4.js +4 -4
  92. package/dist/content-admonition/index.d.ts +3 -4
  93. package/dist/content-admonition/index.js +2 -2
  94. package/dist/content.css +35 -33
  95. package/dist/design-token-panel-bootstrap-controller.d.ts +178 -0
  96. package/dist/design-token-panel-bootstrap-controller.js +359 -0
  97. package/dist/design-token-panel-bootstrap-island.d.ts +5 -0
  98. package/dist/design-token-panel-bootstrap-island.js +19 -0
  99. package/dist/design-token-panel-bootstrap.d.ts +5 -195
  100. package/dist/design-token-panel-bootstrap.js +3 -288
  101. package/dist/desktop-sidebar-toggle-island/index.d.ts +2 -7
  102. package/dist/desktop-sidebar-toggle-island/index.js +2 -58
  103. package/dist/desktop-sidebar-toggle-island/island.d.ts +4 -0
  104. package/dist/desktop-sidebar-toggle-island/island.js +43 -0
  105. package/dist/desktop-sidebar-toggle-island/storage.d.ts +4 -0
  106. package/dist/desktop-sidebar-toggle-island/storage.js +29 -0
  107. package/dist/desktop-toc-toggle-island/index.d.ts +2 -7
  108. package/dist/desktop-toc-toggle-island/index.js +2 -58
  109. package/dist/desktop-toc-toggle-island/island.d.ts +4 -0
  110. package/dist/desktop-toc-toggle-island/island.js +43 -0
  111. package/dist/desktop-toc-toggle-island/storage.d.ts +4 -0
  112. package/dist/desktop-toc-toggle-island/storage.js +29 -0
  113. package/dist/details/details.d.ts +3 -4
  114. package/dist/details/details.js +1 -1
  115. package/dist/doc-body-end/index.d.ts +1 -2
  116. package/dist/doc-body-end/index.js +1 -1
  117. package/dist/doc-body-end-islands/design-token-panel-island.d.ts +2 -2
  118. package/dist/doc-body-end-islands/design-token-panel-island.js +3 -7
  119. package/dist/doc-body-end-islands/index.d.ts +4 -21
  120. package/dist/doc-body-end-islands/index.js +5 -3
  121. package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +3 -13
  122. package/dist/doc-body-end-islands/theme-pack-switcher-island.js +11 -13
  123. package/dist/doc-content-header/index.d.ts +1 -2
  124. package/dist/doc-content-header/index.js +1 -1
  125. package/dist/doc-history/index.d.ts +1 -1
  126. package/dist/doc-history/index.js +166 -141
  127. package/dist/doc-history-area/index.d.ts +6 -4
  128. package/dist/doc-history-area/index.js +17 -16
  129. package/dist/doc-metainfo-area/index.d.ts +2 -3
  130. package/dist/doc-metainfo-area/index.js +1 -1
  131. package/dist/doc-page-renderer/index.d.ts +13 -7
  132. package/dist/doc-page-renderer/index.js +10 -1
  133. package/dist/doc-page-shell/index.d.ts +20 -7
  134. package/dist/doc-page-shell/index.js +17 -6
  135. package/dist/doc-pager/index.d.ts +1 -2
  136. package/dist/doc-pager/index.js +3 -3
  137. package/dist/doc-tags-area/index.d.ts +2 -3
  138. package/dist/doc-tags-area/index.js +1 -1
  139. package/dist/doclayout/doc-layout-with-defaults.d.ts +9 -9
  140. package/dist/doclayout/doc-layout-with-defaults.js +5 -15
  141. package/dist/doclayout/doc-layout.d.ts +26 -27
  142. package/dist/doclayout/doc-layout.js +23 -14
  143. package/dist/docs-schema/index.d.ts +4 -0
  144. package/dist/docs-schema/index.js +1 -0
  145. package/dist/extract-headings/index.js +43 -12
  146. package/dist/factory-context/index.d.ts +22 -19
  147. package/dist/features.css +70 -8
  148. package/dist/find-in-page/find-bar.d.ts +4 -2
  149. package/dist/find-in-page/find-bar.js +58 -69
  150. package/dist/find-in-page/index.d.ts +2 -8
  151. package/dist/find-in-page/index.js +33 -30
  152. package/dist/footer/footer.d.ts +3 -4
  153. package/dist/footer/footer.js +3 -3
  154. package/dist/footer-with-defaults/index.d.ts +2 -3
  155. package/dist/footer-with-defaults/index.js +1 -1
  156. package/dist/frontmatter-preview-defaults/index.js +1 -0
  157. package/dist/head/doc-head.d.ts +1 -1
  158. package/dist/head/doc-head.js +24 -32
  159. package/dist/head/og-tags.d.ts +1 -1
  160. package/dist/head/og-tags.js +8 -7
  161. package/dist/head/twitter-card.d.ts +1 -1
  162. package/dist/head/twitter-card.js +1 -1
  163. package/dist/head-with-defaults/index.d.ts +7 -2
  164. package/dist/head-with-defaults/index.js +46 -32
  165. package/dist/header/header.d.ts +8 -8
  166. package/dist/header/header.js +9 -11
  167. package/dist/header/types.d.ts +7 -7
  168. package/dist/header-with-defaults/index.d.ts +1 -2
  169. package/dist/header-with-defaults/index.js +18 -8
  170. package/dist/home-intro/index.d.ts +2 -5
  171. package/dist/home-intro/index.js +7 -5
  172. package/dist/home-intro/prepare.js +4 -3
  173. package/dist/home-page/index.d.ts +3 -3
  174. package/dist/home-page/index.js +19 -17
  175. package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -4
  176. package/dist/html-preview-wrapper/highlighted-code.js +19 -17
  177. package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +4 -25
  178. package/dist/html-preview-wrapper/html-preview-wrapper.js +2 -87
  179. package/dist/html-preview-wrapper/html-preview.d.ts +3 -10
  180. package/dist/html-preview-wrapper/html-preview.js +13 -37
  181. package/dist/html-preview-wrapper/index.d.ts +2 -1
  182. package/dist/html-preview-wrapper/index.js +1 -1
  183. package/dist/html-preview-wrapper/preview-base.d.ts +3 -5
  184. package/dist/html-preview-wrapper/preview-base.js +56 -59
  185. package/dist/html-preview-wrapper/wrapper.d.ts +20 -0
  186. package/dist/html-preview-wrapper/wrapper.js +37 -0
  187. package/dist/hydration-pending.d.ts +3 -5
  188. package/dist/hydration-pending.js +7 -5
  189. package/dist/i18n-version/language-switcher.d.ts +5 -32
  190. package/dist/i18n-version/language-switcher.js +5 -106
  191. package/dist/i18n-version/switcher-generated-scripts.d.ts +2 -0
  192. package/dist/i18n-version/switcher-generated-scripts.js +107 -0
  193. package/dist/i18n-version/switcher-url-state.d.ts +76 -0
  194. package/dist/i18n-version/switcher-url-state.js +103 -0
  195. package/dist/i18n-version/version-banner.d.ts +2 -3
  196. package/dist/i18n-version/version-banner.js +1 -1
  197. package/dist/i18n-version/version-switcher.d.ts +5 -50
  198. package/dist/i18n-version/version-switcher.js +5 -157
  199. package/dist/icons/index.d.ts +18 -19
  200. package/dist/icons/index.js +17 -33
  201. package/dist/image-enlarge/index.d.ts +1 -10
  202. package/dist/image-enlarge/index.js +80 -55
  203. package/dist/image-enlarge/public.d.ts +2 -0
  204. package/dist/image-enlarge/public.js +6 -0
  205. package/dist/image-enlarge/ssr-fallback.d.ts +2 -0
  206. package/dist/image-enlarge/ssr-fallback.js +8 -0
  207. package/dist/index.d.ts +11 -4
  208. package/dist/inline-version-switcher/index.d.ts +1 -2
  209. package/dist/inline-version-switcher/index.js +1 -1
  210. package/dist/island-types/index.d.ts +2 -2
  211. package/dist/island-types/index.js +1 -5
  212. package/dist/math-block/index.d.ts +4 -7
  213. package/dist/math-block/index.js +5 -5
  214. package/dist/mcp/handler.d.ts +8 -0
  215. package/dist/mcp/handler.js +129 -0
  216. package/dist/mcp/index.d.ts +4 -0
  217. package/dist/mcp/index.js +7 -0
  218. package/dist/mcp/loader.d.ts +19 -0
  219. package/dist/mcp/loader.js +202 -0
  220. package/dist/mdx-components/index.js +40 -108
  221. package/dist/mermaid-enlarge/index.d.ts +1 -8
  222. package/dist/mermaid-enlarge/index.js +174 -158
  223. package/dist/mermaid-enlarge/public.d.ts +2 -0
  224. package/dist/mermaid-enlarge/public.js +6 -0
  225. package/dist/mermaid-enlarge/ssr-fallback.d.ts +2 -0
  226. package/dist/mermaid-enlarge/ssr-fallback.js +8 -0
  227. package/dist/metainfo/doc-metainfo.d.ts +2 -3
  228. package/dist/metainfo/doc-metainfo.js +1 -4
  229. package/dist/metainfo/doc-tags.d.ts +2 -3
  230. package/dist/metainfo/doc-tags.js +1 -1
  231. package/dist/metainfo/frontmatter-preview.d.ts +3 -4
  232. package/dist/metainfo/frontmatter-preview.js +1 -1
  233. package/dist/nav-data-prep/index.js +6 -4
  234. package/dist/nav-indexing/category-nav.d.ts +2 -3
  235. package/dist/nav-indexing/category-nav.js +1 -2
  236. package/dist/nav-indexing/category-tree-nav.d.ts +2 -3
  237. package/dist/nav-indexing/category-tree-nav.js +1 -1
  238. package/dist/nav-indexing/doc-card-grid.d.ts +2 -3
  239. package/dist/nav-indexing/doc-card-grid.js +1 -2
  240. package/dist/nav-indexing/docs-sitemap.d.ts +2 -3
  241. package/dist/nav-indexing/docs-sitemap.js +2 -2
  242. package/dist/nav-indexing/index.d.ts +1 -1
  243. package/dist/nav-indexing/nav-card-grid.d.ts +2 -3
  244. package/dist/nav-indexing/nav-card-grid.js +1 -2
  245. package/dist/nav-indexing/note-tray-index-parts/card-list.d.ts +1 -2
  246. package/dist/nav-indexing/note-tray-index-parts/card-list.js +4 -4
  247. package/dist/nav-indexing/note-tray-index-parts/date-line.d.ts +2 -3
  248. package/dist/nav-indexing/note-tray-index-parts/date-line.js +1 -1
  249. package/dist/nav-indexing/note-tray-index-parts/index-list.d.ts +1 -2
  250. package/dist/nav-indexing/note-tray-index-parts/index-list.js +2 -2
  251. package/dist/nav-indexing/note-tray-index-parts/timeline.d.ts +1 -2
  252. package/dist/nav-indexing/note-tray-index-parts/timeline.js +2 -2
  253. package/dist/nav-indexing/note-tray-index.d.ts +1 -2
  254. package/dist/nav-indexing/note-tray-index.js +1 -1
  255. package/dist/nav-indexing/site-tree-nav-demo.d.ts +2 -3
  256. package/dist/nav-indexing/site-tree-nav-demo.js +2 -2
  257. package/dist/nav-indexing/tag-nav.d.ts +1 -2
  258. package/dist/nav-indexing/tag-nav.js +1 -1
  259. package/dist/nav-indexing/types.d.ts +2 -2
  260. package/dist/nav-indexing/versions-page-content.d.ts +2 -3
  261. package/dist/nav-indexing/versions-page-content.js +8 -8
  262. package/dist/note-tray-index/index.d.ts +1 -2
  263. package/dist/note-tray-index/index.js +1 -1
  264. package/dist/page-loading/page-loading-overlay.d.ts +1 -2
  265. package/dist/page-loading/page-loading-overlay.js +3 -5
  266. package/dist/plugins/agent-export.d.ts +3 -0
  267. package/dist/plugins/agent-export.js +34 -0
  268. package/dist/plugins/internal/agent-export/chunk.d.ts +5 -0
  269. package/dist/plugins/internal/agent-export/chunk.js +90 -0
  270. package/dist/plugins/internal/agent-export/index.d.ts +24 -0
  271. package/dist/plugins/internal/agent-export/index.js +123 -0
  272. package/dist/plugins/internal/agent-export/normalize.d.ts +5 -0
  273. package/dist/plugins/internal/agent-export/normalize.js +73 -0
  274. package/dist/plugins/internal/llms-txt/dev-middleware.d.ts +6 -0
  275. package/dist/plugins/internal/llms-txt/dev-middleware.js +8 -3
  276. package/dist/plugins/internal/llms-txt/emit.js +23 -6
  277. package/dist/plugins/internal/llms-txt/generate.d.ts +7 -1
  278. package/dist/plugins/internal/llms-txt/generate.js +9 -2
  279. package/dist/plugins/internal/llms-txt/load.d.ts +2 -0
  280. package/dist/plugins/internal/llms-txt/load.js +20 -4
  281. package/dist/plugins/internal/llms-txt/types.d.ts +10 -0
  282. package/dist/plugins/routes.js +4 -0
  283. package/dist/preset.d.ts +19 -9
  284. package/dist/preset.js +20 -1
  285. package/dist/route-context-payload/index.js +1 -1
  286. package/dist/routes/404.d.ts +2 -3
  287. package/dist/routes/404.js +1 -1
  288. package/dist/routes/_chrome.d.ts +5 -5
  289. package/dist/routes/_chrome.js +7 -2
  290. package/dist/routes/_context.d.ts +4 -4
  291. package/dist/routes/_design-token-panel-bootstrap.d.ts +1 -4
  292. package/dist/routes/_design-token-panel-bootstrap.js +9 -1
  293. package/dist/routes/docs-slug.d.ts +2 -3
  294. package/dist/routes/docs-tags-index.d.ts +2 -3
  295. package/dist/routes/docs-tags-index.js +1 -1
  296. package/dist/routes/docs-tags-tag.d.ts +2 -3
  297. package/dist/routes/docs-tags-tag.js +1 -1
  298. package/dist/routes/docs-versions.d.ts +2 -3
  299. package/dist/routes/docs-versions.js +1 -1
  300. package/dist/routes/files-path.d.ts +2 -3
  301. package/dist/routes/files-path.js +1 -1
  302. package/dist/routes/index.d.ts +2 -3
  303. package/dist/routes/index.js +1 -1
  304. package/dist/routes/locale-docs-slug.d.ts +2 -3
  305. package/dist/routes/locale-docs-tags-index.d.ts +2 -3
  306. package/dist/routes/locale-docs-tags-index.js +1 -1
  307. package/dist/routes/locale-docs-tags-tag.d.ts +2 -3
  308. package/dist/routes/locale-docs-tags-tag.js +1 -1
  309. package/dist/routes/locale-docs-versions.d.ts +2 -3
  310. package/dist/routes/locale-docs-versions.js +1 -1
  311. package/dist/routes/locale-files-path.d.ts +2 -3
  312. package/dist/routes/locale-files-path.js +1 -1
  313. package/dist/routes/locale-index.d.ts +2 -3
  314. package/dist/routes/locale-index.js +1 -1
  315. package/dist/routes/mcp.d.ts +5 -0
  316. package/dist/routes/mcp.js +25 -0
  317. package/dist/routes/v-docs-slug.d.ts +2 -3
  318. package/dist/routes/v-locale-docs-slug.d.ts +2 -3
  319. package/dist/search-widget/index.d.ts +1 -2
  320. package/dist/search-widget/index.js +4 -7
  321. package/dist/search-widget-script/generated-script.js +12 -5
  322. package/dist/settings-defaults.d.ts +2 -0
  323. package/dist/settings-defaults.js +93 -0
  324. package/dist/settings.d.ts +8 -2
  325. package/dist/sidebar/index.d.ts +1 -1
  326. package/dist/sidebar/sidebar.d.ts +12 -44
  327. package/dist/sidebar/sidebar.js +4 -3
  328. package/dist/sidebar/types.d.ts +14 -0
  329. package/dist/sidebar-prepaint/index.d.ts +1 -2
  330. package/dist/sidebar-prepaint/index.js +4 -6
  331. package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +2 -3
  332. package/dist/sidebar-resizer/sidebar-resizer-init.js +3 -3
  333. package/dist/sidebar-toggle-island/index.d.ts +8 -11
  334. package/dist/sidebar-toggle-island/index.js +75 -62
  335. package/dist/sidebar-tree/build-tree.js +5 -6
  336. package/dist/sidebar-tree/types.d.ts +2 -0
  337. package/dist/sidebar-tree-island/index.d.ts +4 -19
  338. package/dist/sidebar-tree-island/index.js +782 -436
  339. package/dist/sidebar-tree-island/scope-state.d.ts +38 -0
  340. package/dist/sidebar-tree-island/scope-state.js +151 -0
  341. package/dist/sidebar-tree-island/sidebar-scroll-preserve.js +6 -2
  342. package/dist/sidebar-utils/index.d.ts +17 -19
  343. package/dist/sidebar-utils/index.js +100 -3
  344. package/dist/sidebar-utils/scope.d.ts +11 -0
  345. package/dist/sidebar-utils/scope.js +67 -0
  346. package/dist/sidebar-with-defaults/index.d.ts +1 -2
  347. package/dist/sidebar-with-defaults/index.js +19 -18
  348. package/dist/site-schema/nav-tree.js +15 -15
  349. package/dist/site-schema/types.d.ts +1 -0
  350. package/dist/site-tree-nav/index.d.ts +2 -3
  351. package/dist/site-tree-nav/index.js +11 -12
  352. package/dist/site-tree-nav/normalize-island-props.d.ts +16 -0
  353. package/dist/site-tree-nav/normalize-island-props.js +122 -0
  354. package/dist/site-tree-nav-island/index.d.ts +3 -3
  355. package/dist/site-tree-nav-island/index.js +243 -144
  356. package/dist/smart-break/index.d.ts +3 -4
  357. package/dist/smart-break/index.js +1 -1
  358. package/dist/tab-item/tab-item.d.ts +3 -4
  359. package/dist/tab-item/tab-item.js +1 -1
  360. package/dist/tag-pages/index.d.ts +3 -3
  361. package/dist/tag-pages/index.js +10 -10
  362. package/dist/theme/color-scheme-provider.d.ts +3 -3
  363. package/dist/theme/color-scheme-provider.js +3 -3
  364. package/dist/theme/theme-pack-provider.d.ts +1 -1
  365. package/dist/theme/theme-pack-provider.js +3 -3
  366. package/dist/theme/theme-toggle.d.ts +2 -3
  367. package/dist/theme/theme-toggle.js +1 -1
  368. package/dist/theme-pack-dialog/index.d.ts +1 -1
  369. package/dist/theme-pack-dialog/index.js +69 -75
  370. package/dist/theme-pack-dialog/theme-pack-card.d.ts +3 -4
  371. package/dist/theme-pack-dialog/theme-pack-card.js +19 -17
  372. package/dist/theme-pack-switcher/index.d.ts +4 -5
  373. package/dist/theme-pack-switcher/index.js +52 -49
  374. package/dist/theme-toggle/index.d.ts +1 -1
  375. package/dist/theme-toggle/index.js +154 -167
  376. package/dist/theme.css +47 -121
  377. package/dist/toc/mobile-toc.d.ts +3 -5
  378. package/dist/toc/mobile-toc.js +29 -27
  379. package/dist/toc/toc.d.ts +3 -4
  380. package/dist/toc/toc.js +18 -18
  381. package/dist/toc/use-active-heading.d.ts +5 -4
  382. package/dist/toc/use-active-heading.js +36 -30
  383. package/dist/toc-prepaint/index.d.ts +1 -2
  384. package/dist/toc-prepaint/index.js +4 -6
  385. package/dist/transitions/nested-island-props-refresh.d.ts +3 -16
  386. package/dist/transitions/nested-island-props-refresh.js +133 -151
  387. package/dist/transitions/page-events.d.ts +8 -13
  388. package/dist/tree-nav-shared/index.d.ts +4 -5
  389. package/dist/tree-nav-shared/index.js +6 -7
  390. package/dist/use-modal-dialog/index.d.ts +9 -63
  391. package/dist/use-modal-dialog/index.js +41 -59
  392. package/dist/versions-page/index.d.ts +3 -3
  393. package/dist/versions-page/index.js +5 -5
  394. package/dist/wind/index.d.ts +5 -0
  395. package/dist/wind/index.js +169 -0
  396. package/dist/wind.json +498 -0
  397. package/dist/z-index-defaults/index.d.ts +4 -4
  398. package/dist/zdtp-loader.d.ts +7 -0
  399. package/dist/zdtp-loader.js +8 -0
  400. package/eject/asset-components/asset-card.tsx +14 -16
  401. package/eject/asset-components/asset-code.tsx +10 -12
  402. package/eject/asset-components/shared.tsx +5 -7
  403. package/eject/breadcrumb/breadcrumb.tsx +15 -16
  404. package/eject/code-group/index.tsx +4 -10
  405. package/eject/content-admonition/index.tsx +5 -6
  406. package/eject/desktop-sidebar-toggle-island/index.ts +4 -0
  407. package/eject/desktop-sidebar-toggle-island/island.tsx +50 -0
  408. package/eject/desktop-sidebar-toggle-island/storage.ts +27 -0
  409. package/eject/details/details.tsx +3 -5
  410. package/eject/doc-history/index.tsx +193 -179
  411. package/eject/doc-pager/index.tsx +3 -4
  412. package/eject/footer/footer.tsx +7 -9
  413. package/eject/header/header.tsx +42 -54
  414. package/eject/header/nav-overflow-script.ts +1 -1
  415. package/eject/header/types.ts +12 -13
  416. package/eject/image-enlarge/index.tsx +84 -69
  417. package/eject/image-enlarge/public.ts +2 -0
  418. package/eject/image-enlarge/ssr-fallback.tsx +7 -0
  419. package/eject/page-loading/page-loading-overlay.tsx +8 -15
  420. package/eject/sidebar/index.ts +1 -0
  421. package/eject/sidebar/sidebar.tsx +16 -97
  422. package/eject/sidebar/types.ts +15 -0
  423. package/eject/sidebar-toggle-island/index.tsx +103 -102
  424. package/eject/sidebar-tree-island/index.tsx +827 -615
  425. package/eject/sidebar-tree-island/scope-state.ts +154 -0
  426. package/eject/sidebar-tree-island/sidebar-scroll-preserve.ts +8 -2
  427. package/eject/site-tree-nav-island/index.tsx +349 -222
  428. package/eject/tab-item/tab-item.tsx +2 -4
  429. package/eject/theme-toggle/hydration-pending.ts +6 -10
  430. package/eject/theme-toggle/index.tsx +133 -173
  431. package/eject/toc/mobile-toc.tsx +27 -31
  432. package/eject/toc/toc.tsx +21 -24
  433. package/eject/toc/use-active-heading.ts +43 -38
  434. package/package.json +40 -22
  435. package/routes-src/404.tsx +2 -3
  436. package/routes-src/_chrome.tsx +7 -2
  437. package/routes-src/_design-token-panel-bootstrap.tsx +1 -63
  438. package/routes-src/docs-slug.tsx +2 -3
  439. package/routes-src/docs-tags-index.tsx +2 -3
  440. package/routes-src/docs-tags-tag.tsx +2 -3
  441. package/routes-src/docs-versions.tsx +2 -3
  442. package/routes-src/files-path.tsx +2 -4
  443. package/routes-src/index.tsx +2 -3
  444. package/routes-src/locale-docs-slug.tsx +2 -3
  445. package/routes-src/locale-docs-tags-index.tsx +2 -3
  446. package/routes-src/locale-docs-tags-tag.tsx +2 -3
  447. package/routes-src/locale-docs-versions.tsx +2 -3
  448. package/routes-src/locale-files-path.tsx +2 -4
  449. package/routes-src/locale-index.tsx +2 -3
  450. package/routes-src/mcp.tsx +25 -0
  451. package/routes-src/v-docs-slug.tsx +2 -3
  452. package/routes-src/v-locale-docs-slug.tsx +2 -3
  453. package/tsconfig.base.json +1 -1
  454. package/dist/safelist.css +0 -2
  455. package/dist/theme-no-reset.css +0 -379
  456. package/eject/desktop-sidebar-toggle-island/index.tsx +0 -110
@@ -1,4 +1,5 @@
1
- import { useCallback, useEffect, useRef, useState } from "preact/hooks";
1
+ import { signal } from "@takazudo/zfb/zudo-react";
2
+ import type { Scope, Signal } from "@takazudo/zfb/zudo-react";
2
3
  import type { HeadingItem } from "./types.js";
3
4
 
4
5
  /**
@@ -12,7 +13,7 @@ const DEBOUNCE_MS = 200;
12
13
 
13
14
  /**
14
15
  * Pure helper that picks the active heading id given the heading slug
15
- * order and a slug→element map. Extracted from the hook so it is unit-
16
+ * order and a slug→element map. Extracted from the setup helper so it is unit-
16
17
  * testable without DOM event plumbing.
17
18
  *
18
19
  * Algorithm: find the first heading whose top is at or below the
@@ -67,12 +68,12 @@ export function getActiveHeadingId(
67
68
  }
68
69
 
69
70
  export interface UseActiveHeadingResult {
70
- activeId: string | null;
71
+ activeId: Signal<string | null>;
71
72
  activate: (id: string) => void;
72
73
  }
73
74
 
74
75
  /**
75
- * Scroll-spy hook. Tracks which heading slug should be highlighted
76
+ * Scroll-spy setup helper. Tracks which heading slug should be highlighted
76
77
  * based on the current scroll position. Provides an `activate(id)`
77
78
  * imperatively-callable helper used by click handlers — sets the
78
79
  * active id immediately and suppresses the scroll-driven update until
@@ -80,50 +81,44 @@ export interface UseActiveHeadingResult {
80
81
  * for older Safari).
81
82
  */
82
83
  export function useActiveHeading(
84
+ scope: Scope,
83
85
  headings: readonly HeadingItem[],
84
86
  ): UseActiveHeadingResult {
85
- const [activeId, setActiveId] = useState<string | null>(null);
86
- const headingIdsRef = useRef<readonly string[]>([]);
87
- const elementMapRef = useRef<Map<string, HTMLElement>>(new Map());
88
- const suppressedRef = useRef(false);
89
-
90
- const activate = useCallback((id: string) => {
91
- setActiveId(id);
92
- suppressedRef.current = true;
93
- // Safety timeout: unsuppress if no scroll event fires (target already in view)
94
- setTimeout(() => {
95
- suppressedRef.current = false;
96
- }, 2000);
97
- }, []);
98
-
99
- useEffect(() => {
100
- const ids = headings.map((h) => h.slug);
101
- headingIdsRef.current = ids;
87
+ const activeId = signal<string | null>(null);
88
+ const headingIds = headings.map((heading) => heading.slug);
89
+ let activateInScope: (id: string) => void = () => {};
90
+ const activate = (id: string) => activateInScope(id);
91
+
92
+ scope.onActivate(() => {
93
+ let suppressed = false;
94
+ let timerId: ReturnType<typeof setTimeout> | null = null;
95
+ let fallbackTimerId: ReturnType<typeof setTimeout> | null = null;
96
+ let suppressionTimerId: ReturnType<typeof setTimeout> | null = null;
97
+
98
+ activateInScope = (id: string) => {
99
+ activeId.value = id;
100
+ suppressed = true;
101
+ if (suppressionTimerId !== null) clearTimeout(suppressionTimerId);
102
+ // Safety timeout: unsuppress if no scroll event fires (target already in view).
103
+ suppressionTimerId = setTimeout(() => {
104
+ suppressionTimerId = null;
105
+ suppressed = false;
106
+ }, 2000);
107
+ };
102
108
 
103
109
  const map = new Map<string, HTMLElement>();
104
- for (const id of ids) {
110
+ for (const id of headingIds) {
105
111
  const el = document.getElementById(id);
106
112
  if (el) map.set(id, el);
107
113
  }
108
- elementMapRef.current = map;
109
-
110
- let timerId: ReturnType<typeof setTimeout> | null = null;
111
114
 
112
115
  function update() {
113
116
  timerId = null;
114
- setActiveId(
115
- getActiveHeadingId(
116
- headingIdsRef.current,
117
- elementMapRef.current,
118
- window.innerHeight,
119
- ),
120
- );
117
+ activeId.value = getActiveHeadingId(headingIds, map, window.innerHeight);
121
118
  }
122
119
 
123
- let fallbackTimerId: ReturnType<typeof setTimeout> | null = null;
124
-
125
120
  function onScroll() {
126
- if (suppressedRef.current) {
121
+ if (suppressed) {
127
122
  // Fallback for browsers without scrollend (Safari < 18)
128
123
  if (fallbackTimerId !== null) clearTimeout(fallbackTimerId);
129
124
  fallbackTimerId = setTimeout(onScrollEnd, 1500);
@@ -134,7 +129,11 @@ export function useActiveHeading(
134
129
  }
135
130
 
136
131
  function onScrollEnd() {
137
- suppressedRef.current = false;
132
+ suppressed = false;
133
+ if (suppressionTimerId !== null) {
134
+ clearTimeout(suppressionTimerId);
135
+ suppressionTimerId = null;
136
+ }
138
137
  if (fallbackTimerId !== null) {
139
138
  clearTimeout(fallbackTimerId);
140
139
  fallbackTimerId = null;
@@ -143,20 +142,26 @@ export function useActiveHeading(
143
142
  update();
144
143
  }
145
144
 
145
+ // Browser position may reflect a restored scroll position or current hash.
146
+ // Read it only after hydration so the initial server/client tree agrees.
146
147
  update();
147
-
148
148
  window.addEventListener("scroll", onScroll, { passive: true });
149
149
  window.addEventListener("resize", onScroll, { passive: true });
150
150
  window.addEventListener("scrollend", onScrollEnd, { passive: true });
151
151
 
152
152
  return () => {
153
+ activateInScope = () => {};
153
154
  window.removeEventListener("scroll", onScroll);
154
155
  window.removeEventListener("resize", onScroll);
155
156
  window.removeEventListener("scrollend", onScrollEnd);
156
157
  if (timerId !== null) clearTimeout(timerId);
158
+ timerId = null;
157
159
  if (fallbackTimerId !== null) clearTimeout(fallbackTimerId);
160
+ fallbackTimerId = null;
161
+ if (suppressionTimerId !== null) clearTimeout(suppressionTimerId);
162
+ suppressionTimerId = null;
158
163
  };
159
- }, [headings]);
164
+ });
160
165
 
161
166
  return { activeId, activate };
162
167
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takazudo/zudo-doc",
3
- "version": "5.28.2",
3
+ "version": "6.0.0",
4
4
  "type": "module",
5
5
  "description": "zudo-doc framework primitives layer that sits on top of zfb's engine — sidebar, theme, TOC, breadcrumb, layouts, head injection, View Transitions, SSR-skip wrappers (per ADR-003).",
6
6
  "license": "MIT",
@@ -167,6 +167,10 @@
167
167
  "types": "./dist/plugins/llms-txt.d.ts",
168
168
  "default": "./dist/plugins/llms-txt.js"
169
169
  },
170
+ "./plugins/agent-export": {
171
+ "types": "./dist/plugins/agent-export.d.ts",
172
+ "default": "./dist/plugins/agent-export.js"
173
+ },
170
174
  "./plugins/changelog": {
171
175
  "types": "./dist/plugins/changelog.d.ts",
172
176
  "default": "./dist/plugins/changelog.js"
@@ -268,12 +272,11 @@
268
272
  "default": "./dist/home-intro/prepare.js"
269
273
  },
270
274
  "./theme.css": "./dist/theme.css",
271
- "./theme-no-reset.css": "./dist/theme-no-reset.css",
272
- "./safelist.css": "./dist/safelist.css",
273
275
  "./content.css": "./dist/content.css",
274
276
  "./page-loading.css": "./dist/page-loading.css",
275
277
  "./features.css": "./dist/features.css",
276
278
  "./compiled.css": "./dist/compiled.css",
279
+ "./wind.json": "./dist/wind.json",
277
280
  "./theme-packs/*": "./dist/theme-packs/*",
278
281
  "./routes-src/*": "./routes-src/*",
279
282
  "./tsconfig.base.json": "./tsconfig.base.json",
@@ -352,12 +355,12 @@
352
355
  "default": "./dist/site-tree-nav-island/index.js"
353
356
  },
354
357
  "./image-enlarge": {
355
- "types": "./dist/image-enlarge/index.d.ts",
356
- "default": "./dist/image-enlarge/index.js"
358
+ "types": "./dist/image-enlarge/public.d.ts",
359
+ "default": "./dist/image-enlarge/public.js"
357
360
  },
358
361
  "./mermaid-enlarge": {
359
- "types": "./dist/mermaid-enlarge/index.d.ts",
360
- "default": "./dist/mermaid-enlarge/index.js"
362
+ "types": "./dist/mermaid-enlarge/public.d.ts",
363
+ "default": "./dist/mermaid-enlarge/public.js"
361
364
  },
362
365
  "./ai-chat-modal": {
363
366
  "types": "./dist/ai-chat-modal/index.d.ts",
@@ -511,6 +514,10 @@
511
514
  "types": "./dist/site-tree-nav/index.d.ts",
512
515
  "default": "./dist/site-tree-nav/index.js"
513
516
  },
517
+ "./routes/design-token-panel-bootstrap": {
518
+ "types": "./dist/routes/_design-token-panel-bootstrap.d.ts",
519
+ "default": "./dist/routes/_design-token-panel-bootstrap.js"
520
+ },
514
521
  "./routes/index": {
515
522
  "types": "./dist/routes/index.d.ts",
516
523
  "default": "./dist/routes/index.js"
@@ -555,6 +562,14 @@
555
562
  "types": "./dist/routes/api-ai-chat.d.ts",
556
563
  "default": "./dist/routes/api-ai-chat.js"
557
564
  },
565
+ "./routes/mcp": {
566
+ "types": "./dist/routes/mcp.d.ts",
567
+ "default": "./dist/routes/mcp.js"
568
+ },
569
+ "./mcp": {
570
+ "types": "./dist/mcp/index.d.ts",
571
+ "default": "./dist/mcp/index.js"
572
+ },
558
573
  "./routes/locale-index": {
559
574
  "types": "./dist/routes/locale-index.d.ts",
560
575
  "default": "./dist/routes/locale-index.js"
@@ -716,17 +731,20 @@
716
731
  "CHANGELOG.md"
717
732
  ],
718
733
  "peerDependencies": {
734
+ "@modelcontextprotocol/sdk": "1.32.1",
719
735
  "@takazudo/zdtp": "^0.5.2 || ^0.6.0 || ^0.7.0 || ^0.8.0",
720
- "@takazudo/zfb": "^2.22.1",
721
- "@takazudo/zfb-md-wasm": "^2.22.1",
722
- "@takazudo/zfb-runtime": "^2.22.1",
723
- "@takazudo/zudo-doc-history-server": "^5.17.2",
736
+ "@takazudo/zfb": "^4.3.1",
737
+ "@takazudo/zfb-md-wasm": "^4.3.1",
738
+ "@takazudo/zfb-runtime": "^4.3.1",
739
+ "@takazudo/zudo-doc-history-server": "^6.0.0",
724
740
  "diff": "^8.0.0",
725
741
  "katex": "^0.16.0",
726
- "preact": "^10.29.1",
727
742
  "zod": "^4.3.6"
728
743
  },
729
744
  "peerDependenciesMeta": {
745
+ "@modelcontextprotocol/sdk": {
746
+ "optional": true
747
+ },
730
748
  "@takazudo/zudo-doc-history-server": {
731
749
  "optional": true
732
750
  },
@@ -756,34 +774,34 @@
756
774
  "yaml": "^2.9.0"
757
775
  },
758
776
  "devDependencies": {
777
+ "@modelcontextprotocol/sdk": "1.32.1",
759
778
  "@takazudo/mdx-formatter": "1.3.0",
760
- "@takazudo/zfb": "2.22.1",
761
- "@takazudo/zfb-md-wasm": "2.22.1",
762
- "@takazudo/zfb-runtime": "2.22.1",
779
+ "@takazudo/zfb": "4.3.1",
780
+ "@takazudo/zfb-md-wasm": "4.3.1",
781
+ "@takazudo/zfb-runtime": "4.3.1",
763
782
  "@types/fs-extra": "^11.0.4",
764
783
  "@types/minimist": "^1.2.5",
765
784
  "@types/node": "^25.3.5",
766
785
  "@types/pluralize": "^0.0.33",
767
786
  "happy-dom": "^20.10.6",
768
- "preact": "^10.29.1",
769
- "preact-render-to-string": "^6.6.6",
770
787
  "tsup": "^8.0.0",
771
788
  "typescript": "^5.0.0",
772
789
  "vitest": "^4.1.0",
773
790
  "zod": "^4.3.6",
774
- "@takazudo/zudo-doc-history-server": "5.28.2"
791
+ "@takazudo/zudo-doc-history-server": "6.0.0"
775
792
  },
776
793
  "scripts": {
777
794
  "gen:search-widget-script": "node scripts/gen-search-widget-script.mjs",
778
795
  "gen:nav-overflow-script": "node scripts/gen-nav-overflow-script.mjs",
779
- "build": "node scripts/gen-search-widget-script.mjs && node scripts/gen-nav-overflow-script.mjs && tsup && tsc -p tsconfig.build.json",
780
- "predev": "node ../../scripts/ensure-workspace-build.mjs && node scripts/gen-search-widget-script.mjs && node scripts/gen-nav-overflow-script.mjs",
796
+ "gen:switcher-scripts": "node scripts/gen-switcher-scripts.mjs",
797
+ "build": "node scripts/gen-search-widget-script.mjs && node scripts/gen-nav-overflow-script.mjs && node scripts/gen-switcher-scripts.mjs && tsup && tsc -p tsconfig.build.json",
798
+ "predev": "node ../../scripts/ensure-workspace-build.mjs && node scripts/gen-search-widget-script.mjs && node scripts/gen-nav-overflow-script.mjs && node scripts/gen-switcher-scripts.mjs",
781
799
  "// dev": "Do NOT add `--continue-on-error` here. It stops a fatal watcher exit from cascading, but the dead watcher then fails silently — a dead dev:dts leaves dist/*.d.ts frozen while the JS keeps updating, which typechecks cleanly against stale types instead of failing loudly like #3113's absent declarations did. See the #3129 section in CLAUDE.md.",
782
800
  "dev": "node bin/run-parallel.mjs dev:js dev:dts",
783
801
  "dev:js": "tsup --watch",
784
802
  "dev:dts": "tsc -p tsconfig.build.json --watch --preserveWatchOutput",
785
- "// check:prepack-contract": "check:search-widget-drift and check:nav-overflow-drift run here (not just b4push/CI) because `prepare` regenerates BOTH frozen literals unconditionally — without a prepack gate, packing from a tree where a source changed but a literal was never re-committed would silently publish new script bytes and break every consumer's pinned CSP hash (#3534/#3535 for nav-overflow; #3540 extended the same gate to search-widget, the exact failure class the freezes exist to prevent).",
786
- "check:prepack-contract": "pnpm --dir ../.. check:search-widget-drift && pnpm --dir ../.. check:nav-overflow-drift && pnpm --dir ../.. gen:changelog && node scripts/check-theme-css.mjs && node scripts/check-safelist.mjs && node scripts/check-content-css.mjs && node scripts/check-page-loading-css.mjs && node scripts/check-features-css.mjs && node scripts/check-compiled-css.mjs && node scripts/check-theme-packs.mjs && node scripts/check-catalog.mjs && node scripts/check-site-schema.mjs && node scripts/check-theme-packs-registry.mjs && node scripts/check-plugins.mjs && node scripts/check-plugin-resolution.mjs && node scripts/check-eject-sources.mjs && node scripts/check-routes-src.mjs && node scripts/check-shim-artifacts.mjs && node scripts/check-virtual-modules.mjs && node bin/gen-component-tokens.mjs --check && node scripts/check-route-context-payload.mjs && node scripts/check-asset-viewer-exports.mjs",
803
+ "// check:prepack-contract": "Switcher, search-widget and nav-overflow drift checks run here (not just b4push/CI) because `prepare` regenerates frozen literals unconditionally — without a prepack gate, packing from a tree where a source changed but a literal was never re-committed would silently publish new script bytes and break every consumer's pinned CSP hash (#3534/#3535 for nav-overflow; #3540 extended the same gate to search-widget, the exact failure class the freezes exist to prevent).",
804
+ "check:prepack-contract": "bash ../../scripts/check-switcher-scripts-drift.sh && pnpm --dir ../.. check:search-widget-drift && pnpm --dir ../.. check:nav-overflow-drift && pnpm --dir ../.. gen:changelog && node scripts/check-theme-css.mjs && node scripts/check-wind-manifest.mjs && node scripts/check-content-css.mjs && node scripts/check-page-loading-css.mjs && node scripts/check-features-css.mjs && node scripts/check-compiled-css.mjs && node scripts/check-theme-packs.mjs && node scripts/check-catalog.mjs && node scripts/check-site-schema.mjs && node scripts/check-theme-packs-registry.mjs && node scripts/check-plugins.mjs && node scripts/check-plugin-resolution.mjs && node scripts/check-eject-sources.mjs && node scripts/check-routes-src.mjs && node scripts/check-shim-artifacts.mjs && node scripts/check-virtual-modules.mjs && node bin/gen-component-tokens.mjs --check && node scripts/check-route-context-payload.mjs && node scripts/check-asset-viewer-exports.mjs",
787
805
  "test:plugin-resolution": "node scripts/check-plugin-resolution.mjs",
788
806
  "test": "vitest run --config vitest.config.ts",
789
807
  "test:slow": "vitest run --config vitest.slow.config.ts",
@@ -1,9 +1,8 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /404 — package-owned equivalent of pages/404.tsx
4
3
  // (A1 #2361). Static route; emitted as dist/404.html.
5
4
 
6
- import type { JSX } from "preact";
5
+ import type { Child } from "@takazudo/zfb/zudo-react";
7
6
  import { DocLayoutWithDefaults } from "@takazudo/zudo-doc/doclayout";
8
7
  import { resolveThemePackSsrSlug } from "@takazudo/zudo-doc/theme";
9
8
  import { settings, defaultLocale, withBase, themePackRegistry } from "./_context.js";
@@ -17,7 +16,7 @@ import {
17
16
 
18
17
  export const frontmatter = { title: "404" };
19
18
 
20
- export default function NotFoundPage(): JSX.Element {
19
+ export default function NotFoundPage(): Child {
21
20
  const locale = defaultLocale;
22
21
  const title = "Page Not Found";
23
22
 
@@ -1,3 +1,4 @@
1
+ import { Island } from "@takazudo/zfb";
1
2
  // routes/_chrome — thin chrome shim for the package-owned route entrypoints
2
3
  // (epic Package-First Finale #2356, A1 #2361).
3
4
  //
@@ -12,7 +13,7 @@
12
13
 
13
14
  import { routeCtx } from "./_context.js";
14
15
  import { createChrome } from "@takazudo/zudo-doc/chrome";
15
- import { DocHistory } from "@takazudo/zudo-doc/doc-history";
16
+ import { DocHistoryBoundary as DocHistory } from "@takazudo/zudo-doc/doc-history-area";
16
17
  import type { DocNavNode } from "@takazudo/zudo-doc/site-schema";
17
18
  // Imported via the BARE published subpath rather than a relative
18
19
  // `../chrome-bindings.js`. This file is copied into consumer projects by the
@@ -74,9 +75,13 @@ import { ConfiguredDesignTokenPanelBootstrap } from "./_design-token-panel-boots
74
75
  // It is spread BEFORE `...chromeBindings` (unlike `DocHistory`, which is spread
75
76
  // after): a host's own `DesignTokenPanelBootstrap` slot value must still win,
76
77
  // exactly as it did when the derive-level default was the only package wiring.
78
+ function ConfiguredDesignTokenPanelBoundary() {
79
+ return <><Island when="load"><ConfiguredDesignTokenPanelBootstrap /></Island></>;
80
+ }
81
+
77
82
  const chrome = createChrome(routeCtx, {
78
83
  ...defineChromeBindings({
79
- DesignTokenPanelBootstrap: ConfiguredDesignTokenPanelBootstrap,
84
+ DesignTokenPanelBootstrap: ConfiguredDesignTokenPanelBoundary,
80
85
  }),
81
86
  ...chromeBindings,
82
87
  ...defineChromeBindings({ DocHistory }),
@@ -1,63 +1 @@
1
- "use client";
2
-
3
- /** @jsxRuntime automatic */
4
- /** @jsxImportSource preact */
5
-
6
- // routes/_design-token-panel-bootstrap — the ROUTES-ONLY configured
7
- // design-token-panel island (#3396, epic #3394).
8
- //
9
- // WHY THIS FILE EXISTS: `virtual:zudo-doc-design-token-panel-config` is
10
- // registered by the routes plugin, so any module that imports it statically
11
- // drags the plugin along as a hard requirement. Until #3396 that importer was
12
- // `../design-token-panel-bootstrap.tsx`, which `chrome/derive.tsx` imports —
13
- // meaning `@takazudo/zudo-doc/chrome` could not be bundled outside a zfb build
14
- // (or by a `packageOwnedRoutes: false` host) without aliasing the specifier.
15
- // Moving the import HERE confines it to the routes graph, which zfb always
16
- // bundles with the plugin active.
17
- //
18
- // WHY A COMPONENT AND NOT A SETTER: the route/SSR module graph and the
19
- // hydrated island bundle are SEPARATE graphs. A `setPanelConfigBuilder(...)`
20
- // called while `_chrome.tsx` evaluates would configure only the server-side
21
- // copy of the bootstrap module; the client bundle re-evaluates that module
22
- // independently and would keep the package default. Passing the builder as an
23
- // argument from a component that lives INSIDE the island bundle is the only
24
- // shape that survives the boundary.
25
- //
26
- // ISLAND-SCANNER CONTRACT (#2480 lesson): `_chrome.tsx` imports this module
27
- // STATICALLY and threads the component into `hostBindings`, so the scanner
28
- // walks route → _chrome → here. The exported binding identifier and the
29
- // `displayName` must stay IDENTICAL — zfb registers islands by the
30
- // scanner-visible export name, and a marker whose name has no registry entry
31
- // silently never hydrates. The name must also stay DISTINCT from
32
- // `DesignTokenPanelBootstrap`: `chrome/derive.tsx` still statically imports
33
- // that package default (it is the slot default for bare `createChrome`
34
- // callers), so both components are in the scanned graph and a shared name
35
- // would trip zfb's "island marker name collision" warning and drop one of them.
36
-
37
- import type { JSX } from "preact";
38
- import { runDesignTokenPanelBootstrapOnce } from "@takazudo/zudo-doc/design-token-panel-bootstrap";
39
- // Host-callables channel, third virtual module (#2658, mirrors #2501's
40
- // chromeBindingsModule): absent `settings.designTokenPanelConfigModule` →
41
- // re-exports the package default (`@takazudo/zudo-doc/design-token-panel-config`);
42
- // present → re-exports the host's module. Registered unconditionally by the
43
- // routes plugin (`../plugins/routes.ts`) whenever `packageOwnedRoutes` is on.
44
- // Not present on disk; the package ships ambient typings for it
45
- // (`./_virtual.d.ts`).
46
- import { buildDesignTokenPanelConfig } from "virtual:zudo-doc-design-token-panel-config";
47
-
48
- /**
49
- * The design-token-panel island injected routes mount instead of the package
50
- * default: identical behavior, except the mode-scoped `PanelConfig` builder is
51
- * the one the routes plugin resolved — the host's
52
- * `settings.designTokenPanelConfigModule` when set, the package default
53
- * otherwise.
54
- *
55
- * Renders `null` on both SSR and client (the panel self-mounts as a side
56
- * effect of `bootstrapDesignTokenPanel`), matching the package default's
57
- * non-`ssrFallback` `Island({ when: "load" })` shape.
58
- */
59
- export function ConfiguredDesignTokenPanelBootstrap(): JSX.Element | null {
60
- runDesignTokenPanelBootstrapOnce(buildDesignTokenPanelConfig, "configured");
61
- return null;
62
- }
63
- ConfiguredDesignTokenPanelBootstrap.displayName = "ConfiguredDesignTokenPanelBootstrap";
1
+ export { ConfiguredDesignTokenPanelBootstrap } from "@takazudo/zudo-doc/routes/design-token-panel-bootstrap";
@@ -1,5 +1,4 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /docs/[[...slug]] — package-owned equivalent of
4
3
  // pages/docs/[[...slug]].tsx (epic Package-First Finale #2356, A1 #2361).
5
4
  //
@@ -11,7 +10,7 @@
11
10
  // is on; even then dropped if the user keeps a `pages/docs/[[...slug]].tsx`
12
11
  // stub (Decision 6).
13
12
 
14
- import type { JSX } from "preact";
13
+ import type { Child } from "@takazudo/zfb/zudo-react";
15
14
  import type { DocPageEntryProps, DocPageAutoIndexProps } from "@takazudo/zudo-doc/doc-page-props";
16
15
  import { settings, defaultLocale, resolveNavSource, buildDocRouteEntries } from "./_context.js";
17
16
  import { renderDocPage } from "./_chrome.js";
@@ -35,7 +34,7 @@ export function paths(): Array<{ params: { slug: string[] }; props: DocPageProps
35
34
 
36
35
  type PageArgs = DocPageProps & { params: { slug: string[] } };
37
36
 
38
- export default function DocsPage(props: PageArgs): JSX.Element {
37
+ export default function DocsPage(props: PageArgs): Child {
39
38
  return renderDocPage(props, {
40
39
  locale: defaultLocale,
41
40
  docHistoryContentDir: settings.docsDir,
@@ -1,14 +1,13 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /docs/tags — package-owned equivalent of
4
3
  // pages/docs/tags/index.tsx (A1 #2361). Default-locale "All Tags" index.
5
4
 
6
- import type { JSX } from "preact";
5
+ import type { Child } from "@takazudo/zfb/zudo-react";
7
6
  import { defaultLocale } from "./_context.js";
8
7
  import { TagsIndexPageView } from "./_chrome.js";
9
8
 
10
9
  export const frontmatter = { title: "All Tags" };
11
10
 
12
- export default function DocsTagsIndexPage(): JSX.Element {
11
+ export default function DocsTagsIndexPage(): Child {
13
12
  return <TagsIndexPageView locale={defaultLocale} />;
14
13
  }
@@ -1,10 +1,9 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /docs/tags/[tag] — package-owned equivalent of
4
3
  // pages/docs/tags/[tag].tsx (A1 #2361). One route per unique tag in the
5
4
  // default-locale collection.
6
5
 
7
- import type { JSX } from "preact";
6
+ import type { Child } from "@takazudo/zfb/zudo-react";
8
7
  import type { TagInfo } from "@takazudo/zudo-doc/tag-pages";
9
8
  import { defaultLocale } from "./_context.js";
10
9
  import { collectTagMapForLocale, TagDetailPageView } from "./_chrome.js";
@@ -24,6 +23,6 @@ interface PageProps {
24
23
  tagInfo: TagInfo;
25
24
  }
26
25
 
27
- export default function DocTagPage({ params, tagInfo }: PageProps): JSX.Element {
26
+ export default function DocTagPage({ params, tagInfo }: PageProps): Child {
28
27
  return <TagDetailPageView locale={defaultLocale} tag={params.tag} tagInfo={tagInfo} />;
29
28
  }
@@ -1,15 +1,14 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /docs/versions — package-owned equivalent of
4
3
  // pages/docs/versions.tsx (A1 #2361). Default-locale versions index; rendered
5
4
  // by the package `VersionsPageView` (`_chrome`).
6
5
 
7
- import type { JSX } from "preact";
6
+ import type { Child } from "@takazudo/zfb/zudo-react";
8
7
  import { defaultLocale } from "./_context.js";
9
8
  import { VersionsPageView } from "./_chrome.js";
10
9
 
11
10
  export const frontmatter = { title: "Versions" };
12
11
 
13
- export default function VersionsPage(): JSX.Element {
12
+ export default function VersionsPage(): Child {
14
13
  return <VersionsPageView locale={defaultLocale} />;
15
14
  }
@@ -1,7 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
-
4
- import type { JSX } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
5
3
  import recordsValue from "virtual:zudo-doc-asset-bodies";
6
4
  import type { AssetRecords } from "@takazudo/zudo-doc/plugins";
7
5
  import type { AssetIndexEntry } from "@takazudo/zudo-doc/route-context-payload";
@@ -28,7 +26,7 @@ export function paths(): Array<{
28
26
  : assetPaths;
29
27
  }
30
28
 
31
- export default function FilesPathPage(props: FilesPathProps): JSX.Element {
29
+ export default function FilesPathPage(props: FilesPathProps): Child {
32
30
  if (props.kind === "index") return <AssetIndexPageView entries={props.entries} />;
33
31
  const { entry } = props;
34
32
  const records = recordsValue as AssetRecords;
@@ -1,5 +1,4 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: / — package-owned equivalent of pages/index.tsx
4
3
  // (A1 #2361). Default-locale (EN) site index: site-map grid + optional tag
5
4
  // count, rendered through the package chrome (`_chrome`). Static route — no
@@ -10,14 +9,14 @@
10
9
  // `prepareHomeData` factory (#2519) for the data-prep sequence, then handing
11
10
  // the result to the shared home body factory.
12
11
 
13
- import type { JSX } from "preact";
12
+ import type { Child } from "@takazudo/zfb/zudo-react";
14
13
  import { defaultLocale, routeCtx, settings } from "./_context.js";
15
14
  import { prepareHomeData } from "@takazudo/zudo-doc/home-page";
16
15
  import { HomePageView } from "./_chrome.js";
17
16
 
18
17
  export const frontmatter = { title: "Home" };
19
18
 
20
- export default function IndexPage(): JSX.Element {
19
+ export default function IndexPage(): Child {
21
20
  const locale = defaultLocale;
22
21
 
23
22
  const { tree, categoryOrder, tagCount, tags } = prepareHomeData(routeCtx, locale);
@@ -1,5 +1,4 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /[locale]/docs/[[...slug]] — package-owned
4
3
  // equivalent of pages/[locale]/docs/[[...slug]].tsx (A1 #2361).
5
4
  //
@@ -7,7 +6,7 @@
7
6
  // injected ONCE; `paths()` enumerates one route per (non-default locale, slug)
8
7
  // with the locale-first + base-EN-fallback merge — reconstructed via `_context`.
9
8
 
10
- import type { JSX } from "preact";
9
+ import type { Child } from "@takazudo/zfb/zudo-react";
11
10
  import type { DocPageEntryProps, DocPageAutoIndexProps } from "@takazudo/zudo-doc/doc-page-props";
12
11
  import { settings, getLocaleConfig, resolveNavSource, buildDocRouteEntries } from "./_context.js";
13
12
  import { renderDocPage } from "./_chrome.js";
@@ -60,7 +59,7 @@ export function paths(): Array<{
60
59
 
61
60
  type PageArgs = DocPageProps & { params: { locale: string; slug: string[] } };
62
61
 
63
- export default function LocaleDocsPage(props: PageArgs): JSX.Element {
62
+ export default function LocaleDocsPage(props: PageArgs): Child {
64
63
  return renderDocPage(props, {
65
64
  locale: props.params.locale,
66
65
  isFallback: props.isFallback,
@@ -1,10 +1,9 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /[locale]/docs/tags — package-owned equivalent of
4
3
  // pages/[locale]/docs/tags/index.tsx (A1 #2361). One route per non-default
5
4
  // locale; the tag map is computed at render time (locale-first + base merge).
6
5
 
7
- import type { JSX } from "preact";
6
+ import type { Child } from "@takazudo/zfb/zudo-react";
8
7
  import { settings } from "./_context.js";
9
8
  import { TagsIndexPageView } from "./_chrome.js";
10
9
 
@@ -18,6 +17,6 @@ interface PageProps {
18
17
  params: { locale: string };
19
18
  }
20
19
 
21
- export default function LocaleTagsIndexPage({ params }: PageProps): JSX.Element {
20
+ export default function LocaleTagsIndexPage({ params }: PageProps): Child {
22
21
  return <TagsIndexPageView locale={params.locale} />;
23
22
  }
@@ -1,10 +1,9 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /[locale]/docs/tags/[tag] — package-owned
4
3
  // equivalent of pages/[locale]/docs/tags/[tag].tsx (A1 #2361). One route per
5
4
  // (non-default locale, tag) pair.
6
5
 
7
- import type { JSX } from "preact";
6
+ import type { Child } from "@takazudo/zfb/zudo-react";
8
7
  import type { TagInfo } from "@takazudo/zudo-doc/tag-pages";
9
8
  import { settings } from "./_context.js";
10
9
  import { collectTagMapForLocale, TagDetailPageView } from "./_chrome.js";
@@ -34,6 +33,6 @@ interface PageProps {
34
33
  tagInfo: TagInfo;
35
34
  }
36
35
 
37
- export default function LocaleDocTagPage({ params, tagInfo }: PageProps): JSX.Element {
36
+ export default function LocaleDocTagPage({ params, tagInfo }: PageProps): Child {
38
37
  return <TagDetailPageView locale={params.locale} tag={params.tag} tagInfo={tagInfo} />;
39
38
  }
@@ -1,10 +1,9 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  // Package route entrypoint: /[locale]/docs/versions — package-owned equivalent
4
3
  // of pages/[locale]/docs/versions.tsx (A1 #2361). One route per non-default
5
4
  // locale; rendered by the shared package `VersionsPageView`.
6
5
 
7
- import type { JSX } from "preact";
6
+ import type { Child } from "@takazudo/zfb/zudo-react";
8
7
  import { settings } from "./_context.js";
9
8
  import { VersionsPageView } from "./_chrome.js";
10
9
 
@@ -18,6 +17,6 @@ interface PageProps {
18
17
  params: { locale: string };
19
18
  }
20
19
 
21
- export default function LocaleVersionsPage({ params }: PageProps): JSX.Element {
20
+ export default function LocaleVersionsPage({ params }: PageProps): Child {
22
21
  return <VersionsPageView locale={params.locale} />;
23
22
  }
@@ -1,7 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
-
4
- import type { JSX } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
5
3
  import recordsValue from "virtual:zudo-doc-asset-bodies";
6
4
  import type { AssetRecords } from "@takazudo/zudo-doc/plugins";
7
5
  import type { AssetIndexEntry } from "@takazudo/zudo-doc/route-context-payload";
@@ -56,7 +54,7 @@ type PageArgs = LocaleFilesPathProps & {
56
54
  params: { locale: string; path: string[] };
57
55
  };
58
56
 
59
- export default function LocaleFilesPathPage(props: PageArgs): JSX.Element {
57
+ export default function LocaleFilesPathPage(props: PageArgs): Child {
60
58
  if (props.kind === "index") {
61
59
  return <AssetIndexPageView entries={props.entries} locale={props.params.locale} />;
62
60
  }