@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,4 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { formatAssetBytes } from "../asset-components/index.js";
3
3
  import { assetViewerHref } from "../asset-path/index.js";
4
4
  import { facetLabel, kindLabel } from "../asset-page/shared.js";
@@ -49,9 +49,9 @@ function AssetTree({ node, base, routePrefix, locale, fileCountLabel, fileCountS
49
49
  return /* @__PURE__ */ jsxs("ul", { "data-zd-asset-tree": root ? true : void 0, children: [
50
50
  node.dirs.map((dir) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("details", { open: true, children: [
51
51
  /* @__PURE__ */ jsxs("summary", { class: "flex cursor-pointer items-center gap-hsp-xs rounded px-hsp-sm py-vsp-3xs text-small hover:bg-accent/10 focus-visible:bg-accent/10", children: [
52
- /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-xs w-icon-xs shrink-0 text-muted transition-transform" }),
53
- /* @__PURE__ */ jsx(Folder, { className: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
54
- /* @__PURE__ */ jsx(FolderOpen, { className: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
52
+ /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-xs w-icon-xs shrink-0 text-muted transition-transform" }),
53
+ /* @__PURE__ */ jsx(Folder, { class: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
54
+ /* @__PURE__ */ jsx(FolderOpen, { class: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
55
55
  /* @__PURE__ */ jsxs("span", { class: "min-w-0 truncate font-mono text-fg", children: [
56
56
  dir.name,
57
57
  "/"
@@ -69,7 +69,7 @@ function AssetTree({ node, base, routePrefix, locale, fileCountLabel, fileCountS
69
69
  const facet = facetLabel(asset, asset.lines !== void 0 ? linesLabel.replace("{count}", String(asset.lines)) : void 0);
70
70
  const meta = [kindLabel(asset), facet, formatAssetBytes(asset.bytes)].filter(Boolean).join(" \xB7 ");
71
71
  return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("a", { href: assetViewerHref({ base, routePrefix, path: asset.path, locale }), title: asset.name, class: "flex min-w-0 items-center gap-hsp-xs rounded px-hsp-sm py-vsp-3xs text-small text-fg hover:bg-accent/10 hover:text-accent hover:underline focus-visible:bg-accent/10 focus-visible:text-accent focus-visible:underline", children: [
72
- /* @__PURE__ */ jsx(Icon, { className: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
72
+ /* @__PURE__ */ jsx(Icon, { class: "h-icon-sm w-icon-sm shrink-0 text-muted" }),
73
73
  /* @__PURE__ */ jsx("span", { class: "min-w-0 truncate font-mono", children: basename(asset.path) }),
74
74
  /* @__PURE__ */ jsx("span", { class: "ml-auto hidden whitespace-nowrap pl-hsp-lg text-caption text-muted sm:block", children: meta })
75
75
  ] }) });
@@ -105,7 +105,7 @@ function AssetIndexPageBody({ entries, labels, base, routePrefix, dir, locale })
105
105
  ] })
106
106
  ] }),
107
107
  entries.length > 0 ? /* @__PURE__ */ jsx(AssetTree, { root: true, node: tree, base, routePrefix, locale, fileCountLabel: labels.fileCount, fileCountSingleLabel: labels.fileCountSingle, linesLabel: labels.lines }) : /* @__PURE__ */ jsx("p", { class: "text-small text-muted", "data-zd-asset-index-empty": true, children: labels.indexEmpty }),
108
- /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: ASSET_INDEX_PAGE_SCRIPT } })
108
+ /* @__PURE__ */ jsx("script", { rawHtml: ASSET_INDEX_PAGE_SCRIPT })
109
109
  ] });
110
110
  }
111
111
  export {
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  import type { ChromeContext } from "../factory-context/index.js";
5
4
  import type { AssetIndexEntry } from "../route-context-payload/types.js";
6
5
  import type { Settings } from "../settings.js";
@@ -1,4 +1,4 @@
1
- import { jsx } from "preact/jsx-runtime";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { assertChromeContext } from "../chrome/assert-chrome-context.js";
3
3
  import { deriveBodyEndIslands, deriveComposeMetaTitle } from "../chrome/derive.js";
4
4
  import { derivePrimaryChromeSlots } from "../chrome/primary-slots.js";
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  import type { DateFormatPattern } from "../format-date/index.js";
5
4
  import type { AssetRecord } from "../plugins/internal/asset-viewer/types.js";
6
5
  /**
@@ -58,13 +57,10 @@ export declare function resolveAssetPageLabels(t: (key: string, locale?: string)
58
57
  * D3). Render this ahead of the rest of the page `head` — see
59
58
  * `createAssetPageView`'s `head` prop on `DocLayoutWithDefaults`.
60
59
  *
61
- * A function, not a shared constant VNode: Preact's diffing mutates
62
- * bookkeeping fields onto the vnode objects it renders, so one instance
63
- * reused across many independent SSR passes (e.g. every asset page in a
64
- * `zfb build` run, all sharing this module) is a latent hazard. Each call
65
- * returns a fresh vnode.
60
+ * A function so each page composition receives its own child description;
61
+ * the executable payload itself is the static literal from `script.ts`.
66
62
  */
67
- export declare function renderAssetDetailsPrepaintScript(): VNode;
63
+ export declare function renderAssetDetailsPrepaintScript(): Child;
68
64
  export interface AssetPageBodyProps {
69
65
  /** The asset record being rendered. */
70
66
  entry: AssetRecord;
@@ -95,4 +91,4 @@ export interface AssetPageBodyProps {
95
91
  * placed inline as `DocLayoutWithDefaults`'s children before the #4221
96
92
  * split. Plain props only, no `ChromeContext`.
97
93
  */
98
- export declare function AssetPageBody({ entry: asset, locale, rawUrl, labels, fullPattern, backLink, viewSourceUrl, showViewSource, }: AssetPageBodyProps): VNode;
94
+ export declare function AssetPageBody({ entry: asset, locale, rawUrl, labels, fullPattern, backLink, viewSourceUrl, showViewSource, }: AssetPageBodyProps): Child;
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { BodyFootUtilArea } from "../body-foot-util/index.js";
3
3
  import {
4
4
  AssetActions,
@@ -42,7 +42,7 @@ function resolveAssetPageLabels(t, locale) {
42
42
  };
43
43
  }
44
44
  function renderAssetDetailsPrepaintScript() {
45
- return /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: ASSET_DETAILS_PREPAINT_SCRIPT } });
45
+ return /* @__PURE__ */ jsx("script", { rawHtml: ASSET_DETAILS_PREPAINT_SCRIPT });
46
46
  }
47
47
  function AssetPageBody({
48
48
  entry: asset,
@@ -97,7 +97,7 @@ function AssetPageBody({
97
97
  body,
98
98
  /* @__PURE__ */ jsx(AssetActions, { rawUrl, downloadLabel: labels.download, openRawLabel: labels.openRaw, copyLabel: labels.copy, wrapLabel: labels.wrap, bottom: true }),
99
99
  showViewSource && /* @__PURE__ */ jsx(BodyFootUtilArea, { sourceUrl: viewSourceUrl, viewSourceLabel: labels.viewSource, docHistoryIsland: null }),
100
- /* @__PURE__ */ jsx("script", { dangerouslySetInnerHTML: { __html: ASSET_PAGE_SCRIPT } })
100
+ /* @__PURE__ */ jsx("script", { rawHtml: ASSET_PAGE_SCRIPT })
101
101
  ] });
102
102
  }
103
103
  export {
@@ -1,12 +1,11 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { ComponentChildren, VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  import type { DateFormatPattern } from "../format-date/index.js";
5
4
  import type { AssetRecord } from "../plugins/internal/asset-viewer/types.js";
6
5
  export declare function AssetEyebrow({ asset, badge }: {
7
6
  asset: AssetRecord;
8
7
  badge: string;
9
- }): VNode;
8
+ }): Child;
10
9
  export declare function AssetHeader({ asset, locale, badge, updatedLabel, linesLabel, fullPattern }: {
11
10
  asset: AssetRecord;
12
11
  locale: string;
@@ -14,7 +13,7 @@ export declare function AssetHeader({ asset, locale, badge, updatedLabel, linesL
14
13
  updatedLabel: string;
15
14
  linesLabel?: string;
16
15
  fullPattern?: DateFormatPattern;
17
- }): VNode;
16
+ }): Child;
18
17
  export declare function AssetActions({ rawUrl, downloadLabel, openRawLabel, copyLabel, wrapLabel, code, bottom }: {
19
18
  rawUrl: string;
20
19
  downloadLabel: string;
@@ -23,14 +22,14 @@ export declare function AssetActions({ rawUrl, downloadLabel, openRawLabel, copy
23
22
  wrapLabel: string;
24
23
  code?: boolean;
25
24
  bottom?: boolean;
26
- }): VNode;
25
+ }): Child;
27
26
  export declare function AssetCodeBody({ asset, copyLabel, wrapLabel, truncatedLabel, linesLabel }: {
28
27
  asset: AssetRecord;
29
28
  copyLabel: string;
30
29
  wrapLabel: string;
31
30
  truncatedLabel: string;
32
31
  linesLabel?: string;
33
- }): VNode;
32
+ }): Child;
34
33
  export interface AssetImageStageLabels {
35
34
  fit: string;
36
35
  actualSize: string;
@@ -42,27 +41,27 @@ export declare function AssetImageStage({ asset, rawUrl, labels }: {
42
41
  asset: AssetRecord;
43
42
  rawUrl: string;
44
43
  labels: AssetImageStageLabels;
45
- }): VNode;
44
+ }): Child;
46
45
  export declare function AssetVideoStage({ asset, rawUrl }: {
47
46
  asset: AssetRecord;
48
47
  rawUrl: string;
49
- }): VNode;
48
+ }): Child;
50
49
  export declare function AssetPdfStage({ asset, rawUrl, children }: {
51
50
  asset: AssetRecord;
52
51
  rawUrl: string;
53
- children: ComponentChildren;
54
- }): VNode;
52
+ children: Child;
53
+ }): Child;
55
54
  export declare function AssetDownloadPanel({ asset, rawUrl, noPreview, downloadLabel, copyLabel }: {
56
55
  asset: AssetRecord;
57
56
  rawUrl: string;
58
57
  noPreview: string;
59
58
  downloadLabel: string;
60
59
  copyLabel: string;
61
- }): VNode;
60
+ }): Child;
62
61
  export declare function AssetLinkedFrom({ asset, label }: {
63
62
  asset: AssetRecord;
64
63
  label: string;
65
- }): VNode | null;
64
+ }): Child | null;
66
65
  export interface AssetDetailsLabels {
67
66
  heading: string;
68
67
  type: string;
@@ -74,7 +73,7 @@ export interface AssetDetailsLabels {
74
73
  export declare function AssetDetails({ asset, labels }: {
75
74
  asset: AssetRecord;
76
75
  labels: AssetDetailsLabels;
77
- }): VNode;
76
+ }): Child;
78
77
  export interface AssetDetailsToggleLabels {
79
78
  collapse: string;
80
79
  expand: string;
@@ -87,8 +86,8 @@ export interface AssetDetailsToggleLabels {
87
86
  * `body.tsx#AssetPageBody` can compose it from a different module.
88
87
  */
89
88
  export declare function AssetBodyLayout({ stage, details, linked, toggleLabels }: {
90
- stage: ComponentChildren;
91
- details: ComponentChildren;
92
- linked: ComponentChildren;
89
+ stage: Child;
90
+ details: Child;
91
+ linked: Child;
93
92
  toggleLabels: AssetDetailsToggleLabels;
94
- }): VNode;
93
+ }): Child;
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { formatDate } from "../format-date/index.js";
3
3
  import { formatAssetBytes } from "../asset-components/index.js";
4
4
  import { ChevronLeft, ChevronRight } from "../icons/index.js";
@@ -30,7 +30,7 @@ function AssetHeader({ asset, locale, badge, updatedLabel, linesLabel, fullPatte
30
30
  }
31
31
  function AssetActions({ rawUrl, downloadLabel, openRawLabel, copyLabel, wrapLabel, code = false, bottom = false }) {
32
32
  return /* @__PURE__ */ jsxs("div", { class: `${bottom ? "mt-vsp-lg border-t border-muted pt-vsp-md" : "mb-vsp-md"} flex flex-wrap gap-hsp-sm`, "data-zd-asset-actions": true, children: [
33
- /* @__PURE__ */ jsx("a", { download: true, href: rawUrl, class: `${actionClass(true)} hover:underline focus-visible:underline`, children: downloadLabel }),
33
+ /* @__PURE__ */ jsx("a", { download: "", href: rawUrl, class: `${actionClass(true)} hover:underline focus-visible:underline`, children: downloadLabel }),
34
34
  /* @__PURE__ */ jsx("a", { href: rawUrl, "data-zfb-reload": true, target: "_blank", rel: "noopener", class: `${actionClass()} hover:underline focus-visible:underline`, children: openRawLabel }),
35
35
  code && /* @__PURE__ */ jsx("button", { type: "button", disabled: true, "data-zd-asset-action": "copy", class: actionClass(), children: copyLabel }),
36
36
  code && /* @__PURE__ */ jsx("button", { type: "button", disabled: true, "data-zd-asset-action": "wrap", class: actionClass(), children: wrapLabel })
@@ -54,7 +54,7 @@ function AssetCodeBody({ asset, copyLabel, wrapLabel, truncatedLabel, linesLabel
54
54
  /* @__PURE__ */ jsx("button", { type: "button", disabled: true, "data-zd-asset-action": "wrap", class: "text-fg hover:text-accent focus-visible:text-accent", children: wrapLabel })
55
55
  ] })
56
56
  ] }),
57
- /* @__PURE__ */ jsx("pre", { class: "hi-root zd-asset-code", "data-lang": asset.language ?? "text", dangerouslySetInnerHTML: { __html: highlightedCode } }),
57
+ /* @__PURE__ */ jsx("pre", { class: "hi-root zd-asset-code", "data-lang": asset.language ?? "text", rawHtml: highlightedCode }),
58
58
  asset.truncated && /* @__PURE__ */ jsx("p", { class: "mt-vsp-xs text-caption text-muted", children: truncatedLabel })
59
59
  ] });
60
60
  }
@@ -84,7 +84,7 @@ function AssetVideoStage({ asset, rawUrl }) {
84
84
  }
85
85
  function AssetPdfStage({ asset, rawUrl, children }) {
86
86
  return /* @__PURE__ */ jsxs("section", { children: [
87
- /* @__PURE__ */ jsx("iframe", { title: asset.name, src: `${rawUrl}#view=FitH`, class: "zd-asset-pdf h-[70vh] w-full rounded border border-muted" }),
87
+ /* @__PURE__ */ jsx("iframe", { title: asset.name, src: `${rawUrl}#view=FitH`, "data-zd-asset-pdf": true, class: "h-[70vh] w-full rounded border border-muted" }),
88
88
  /* @__PURE__ */ jsx("div", { class: "mt-vsp-sm", children })
89
89
  ] });
90
90
  }
@@ -99,7 +99,7 @@ function AssetDownloadPanel({ asset, rawUrl, noPreview, downloadLabel, copyLabel
99
99
  ] }),
100
100
  /* @__PURE__ */ jsx("p", { class: "mb-vsp-md text-small text-muted", children: noPreview }),
101
101
  /* @__PURE__ */ jsxs("div", { class: "flex flex-wrap justify-center gap-hsp-sm", children: [
102
- /* @__PURE__ */ jsx("a", { download: true, href: rawUrl, class: `${actionClass(true)} hover:underline focus-visible:underline`, children: downloadLabel }),
102
+ /* @__PURE__ */ jsx("a", { download: "", href: rawUrl, class: `${actionClass(true)} hover:underline focus-visible:underline`, children: downloadLabel }),
103
103
  /* @__PURE__ */ jsx("button", { type: "button", "data-zd-asset-action": "copy-url", "data-zd-copy-url": rawUrl, class: actionClass(), children: copyLabel })
104
104
  ] })
105
105
  ] });
@@ -122,7 +122,7 @@ function AssetDetails({ asset, labels }) {
122
122
  return /* @__PURE__ */ jsxs("section", { children: [
123
123
  /* @__PURE__ */ jsx("h2", { class: "mb-vsp-xs text-title font-bold", children: labels.heading }),
124
124
  /* @__PURE__ */ jsx("dl", { "data-zd-asset-details-list": true, class: "grid grid-cols-[auto_1fr] gap-x-hsp-md gap-y-vsp-2xs text-caption", children: rows.map(([term, value]) => /* @__PURE__ */ jsxs(Fragment, { children: [
125
- /* @__PURE__ */ jsx("dt", { class: "font-medium text-muted", children: term }),
125
+ /* @__PURE__ */ jsx("dt", { class: "font-semibold text-muted", children: term }),
126
126
  /* @__PURE__ */ jsx("dd", { class: "min-w-0 break-words text-fg", children: value })
127
127
  ] })) })
128
128
  ] });
@@ -140,10 +140,11 @@ function AssetDetailsToggle({ labels }) {
140
140
  "aria-controls": ASSET_DETAILS_RAIL_ID,
141
141
  "aria-expanded": "true",
142
142
  "aria-label": labels.collapse,
143
- class: "zd-asset-details-toggle hidden lg:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-r-0 rounded-l-DEFAULT text-muted cursor-pointer transition-colors duration-200 ease-in-out hover:text-fg disabled:cursor-default disabled:opacity-50",
143
+ class: "zd-asset-details-toggle hidden lg:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-r-0 text-muted cursor-pointer transition-colors duration-200 hover:text-fg disabled:cursor-default disabled:opacity-50",
144
+ style: "border-top-left-radius:var(--radius-DEFAULT);border-bottom-left-radius:var(--radius-DEFAULT)",
144
145
  children: [
145
- /* @__PURE__ */ jsx("span", { "data-zd-asset-details-chevron": "collapse", children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-sm w-icon-sm" }) }),
146
- /* @__PURE__ */ jsx("span", { "data-zd-asset-details-chevron": "expand", children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-icon-sm w-icon-sm" }) })
146
+ /* @__PURE__ */ jsx("span", { "data-zd-asset-details-chevron": "collapse", children: /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-sm w-icon-sm" }) }),
147
+ /* @__PURE__ */ jsx("span", { "data-zd-asset-details-chevron": "expand", children: /* @__PURE__ */ jsx(ChevronLeft, { class: "h-icon-sm w-icon-sm" }) })
147
148
  ]
148
149
  }
149
150
  );
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  import type { ChromeContext } from "../factory-context/index.js";
5
4
  import type { AssetRecord } from "../plugins/internal/asset-viewer/types.js";
6
5
  import type { Settings } from "../settings.js";
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { deriveBodyEndIslands, deriveDateFormats } from "../chrome/derive.js";
3
3
  import { deriveComposeMetaTitle } from "../chrome/derive.js";
4
4
  import { derivePrimaryChromeSlots } from "../chrome/primary-slots.js";
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  import { pickGlyphName } from "./shapes.js";
5
4
  export { pickGlyphName };
6
5
  export { renderAutoLogoStandaloneSvg } from "./standalone.js";
@@ -1,5 +1,5 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
2
- import { h } from "preact";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
+ import { h } from "@takazudo/zfb/zudo-react";
3
3
  import {
4
4
  W,
5
5
  H,
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import type { Child, Description } from "@takazudo/zfb/zudo-react";
4
3
  /**
5
4
  * Default label used when the consumer doesn't pass one. The legacy
6
5
  * Astro template translated `doc.viewSource` via the project's i18n
@@ -36,7 +35,7 @@ export interface BodyFootUtilAreaProps {
36
35
  *
37
36
  * Pass `null` / `undefined` to suppress the history trigger entirely.
38
37
  */
39
- docHistoryIsland?: VNode | null;
38
+ docHistoryIsland?: Description | null;
40
39
  }
41
40
  /**
42
41
  * Footer utility area shown below an article body — composes the
@@ -48,4 +47,4 @@ export interface BodyFootUtilAreaProps {
48
47
  * surrounding `<section>` (with its top border + spacing) doesn't
49
48
  * appear as an empty band.
50
49
  */
51
- export declare function BodyFootUtilArea(props: BodyFootUtilAreaProps): VNode | null;
50
+ export declare function BodyFootUtilArea(props: BodyFootUtilAreaProps): Child;
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  const DEFAULT_VIEW_SOURCE_LABEL = "View source on GitHub";
3
3
  function BodyFootUtilArea(props) {
4
4
  const {
@@ -26,7 +26,6 @@ function BodyFootUtilArea(props) {
26
26
  /* @__PURE__ */ jsxs(
27
27
  "svg",
28
28
  {
29
- xmlns: "http://www.w3.org/2000/svg",
30
29
  class: "h-[0.875rem] w-[0.875rem]",
31
30
  fill: "none",
32
31
  viewBox: "0 0 24 24",
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  /**
5
4
  * Default label used when the consumer doesn't pass one. The legacy
6
5
  * Astro template translated `doc.editPage` via the project's i18n
@@ -38,4 +37,4 @@ export interface EditLinkProps {
38
37
  * are pre-resolved by the caller. This matches the breadcrumb subpath
39
38
  * pattern of "no settings/i18n imports inside the v2 package".
40
39
  */
41
- export declare function EditLink(props: EditLinkProps): VNode | null;
40
+ export declare function EditLink(props: EditLinkProps): Child;
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  const DEFAULT_EDIT_LINK_LABEL = "Edit this page";
3
3
  function EditLink(props) {
4
4
  const { editUrl, label = DEFAULT_EDIT_LINK_LABEL } = props;
@@ -14,7 +14,6 @@ function EditLink(props) {
14
14
  /* @__PURE__ */ jsx(
15
15
  "svg",
16
16
  {
17
- xmlns: "http://www.w3.org/2000/svg",
18
17
  class: "h-[0.875rem] w-[0.875rem]",
19
18
  fill: "none",
20
19
  viewBox: "0 0 24 24",
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { ComponentChildren, VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  import type { BreadcrumbItem, BreadcrumbNode } from "./types.js";
5
4
  /**
6
5
  * Convert a sidebar tree + the current page's id into the ordered list
@@ -30,14 +29,15 @@ export interface BreadcrumbProps {
30
29
  * breadcrumb + version-switcher row:
31
30
  *
32
31
  * class="mb-vsp-sm flex flex-col items-start gap-vsp-xs
33
- * sm:flex-row sm:items-center sm:justify-between [&_nav]:mb-0"
32
+ * sm:flex-row sm:items-center sm:justify-between zd-breadcrumb-nav-no-margin"
34
33
  *
35
- * The `[&_nav]:mb-0` rule strips the nav's own `mb-vsp-md` so the
34
+ * The `zd-breadcrumb-nav-no-margin` rule strips the nav's own
35
+ * `mb-vsp-md` so the
36
36
  * wrapper margin controls spacing instead. Use this to place the
37
37
  * VersionSwitcher pill inline at the right of the breadcrumb row,
38
38
  * matching the reference site's layout on category index pages.
39
39
  */
40
- rightSlot?: ComponentChildren;
40
+ rightSlot?: Child;
41
41
  }
42
42
  /**
43
43
  * Breadcrumb trail component.
@@ -50,4 +50,4 @@ export interface BreadcrumbProps {
50
50
  * Returns null when no items resolve, matching the documented
51
51
  * `items.length > 0 &&` guard.
52
52
  */
53
- export declare function Breadcrumb(props: BreadcrumbProps): VNode | null;
53
+ export declare function Breadcrumb(props: BreadcrumbProps): Child;
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { findPath } from "./find-path.js";
3
3
  import { ChevronRight } from "../icons/index.js";
4
4
  function buildBreadcrumbItems(tree, currentId, homeHref) {
@@ -43,13 +43,12 @@ function isPathLike(text) {
43
43
  return false;
44
44
  }
45
45
  function ChevronIcon() {
46
- return /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-xs w-icon-xs text-muted shrink-0" });
46
+ return /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-xs w-icon-xs text-muted shrink-0" });
47
47
  }
48
48
  function HomeIcon() {
49
49
  return /* @__PURE__ */ jsx(
50
50
  "svg",
51
51
  {
52
- xmlns: "http://www.w3.org/2000/svg",
53
52
  class: "h-[1.575rem] w-[1.575rem] shrink-0",
54
53
  fill: "none",
55
54
  viewBox: "0 0 24 24",
@@ -92,7 +91,7 @@ function Breadcrumb(props) {
92
91
  }
93
92
  );
94
93
  if (props.rightSlot === void 0) return nav;
95
- return /* @__PURE__ */ jsxs("div", { class: "mb-vsp-sm flex flex-col items-start gap-vsp-xs sm:flex-row sm:items-center sm:justify-between [&_nav]:mb-0", children: [
94
+ return /* @__PURE__ */ jsxs("div", { class: "mb-vsp-sm flex flex-col items-start gap-vsp-xs sm:flex-row sm:items-center sm:justify-between zd-breadcrumb-nav-no-margin", children: [
96
95
  nav,
97
96
  props.rightSlot
98
97
  ] });
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  /** Minimal nav node shape required by the category-nav factory. */
5
4
  export interface CategoryNavNode {
6
5
  /**
@@ -1,5 +1,5 @@
1
- import { jsx } from "preact/jsx-runtime";
2
- import { CategoryNav as CategoryNavV2 } from "../nav-indexing/index.js";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
+ import { CategoryNav as CategoryNavView } from "../nav-indexing/index.js";
3
3
  import { remapVersionedHrefs } from "../nav-data-prep/index.js";
4
4
  function createCategoryNavWrapper(deps) {
5
5
  const { defaultLocale, resolveNavSource, buildNavTree, findNode, firstRoutedHref, versionedDocsUrl } = deps;
@@ -34,10 +34,10 @@ function createCategoryNavWrapper(deps) {
34
34
  if (!href) return null;
35
35
  return {
36
36
  label: node.label,
37
- description: node.description,
38
37
  href,
39
38
  hasPage: true,
40
- children: []
39
+ children: [],
40
+ ...node.description !== void 0 ? { description: node.description } : {}
41
41
  };
42
42
  }).filter((n) => n !== null);
43
43
  } else if (category !== void 0) {
@@ -47,7 +47,13 @@ function createCategoryNavWrapper(deps) {
47
47
  return null;
48
48
  }
49
49
  if (children.length === 0) return null;
50
- return /* @__PURE__ */ jsx(CategoryNavV2, { children, class: className });
50
+ return /* @__PURE__ */ jsx(
51
+ CategoryNavView,
52
+ {
53
+ children,
54
+ ...className !== void 0 ? { class: className } : {}
55
+ }
56
+ );
51
57
  }
52
58
  return CategoryNavWrapper;
53
59
  }
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  /** Minimal nav node shape required by the category-tree-nav factory. */
5
4
  export interface CategoryTreeNavNode {
6
5
  /**
@@ -1,5 +1,5 @@
1
- import { jsx } from "preact/jsx-runtime";
2
- import { CategoryTreeNav as CategoryTreeNavV2 } from "../nav-indexing/index.js";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
+ import { CategoryTreeNav as CategoryTreeNavView } from "../nav-indexing/index.js";
3
3
  import { remapVersionedHrefs } from "../nav-data-prep/index.js";
4
4
  function createCategoryTreeNavWrapper(deps) {
5
5
  const { defaultLocale, resolveNavSource, buildNavTree, groupSatelliteNodes, findNode, versionedDocsUrl } = deps;
@@ -27,7 +27,7 @@ function createCategoryTreeNavWrapper(deps) {
27
27
  const categoryNode = findNode(tree, category);
28
28
  const children = categoryNode?.children.filter((c) => c.hasPage || c.children.length > 0) ?? [];
29
29
  if (children.length === 0) return null;
30
- return /* @__PURE__ */ jsx(CategoryTreeNavV2, { children });
30
+ return /* @__PURE__ */ jsx(CategoryTreeNavView, { children });
31
31
  }
32
32
  return CategoryTreeNavWrapper;
33
33
  }
@@ -1,9 +1,10 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX, VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
3
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
4
  import type { ChromeContext, FactoryComponent } from "../factory-context/index.js";
5
5
  import type { ResolvedDateFormats, Settings } from "../settings.js";
6
6
  import { type ColorScheme } from "../color-scheme-utils.js";
7
+ export { normalizeIslandData } from "./island-data.js";
7
8
  /** Package-default color scheme used when `colorSchemes` is `null` or a key is
8
9
  * missing. Exported so `createChrome` keeps the identical fallback. Base roles
9
10
  * follow the epic's Default Dark defaults on the minimized 5-base ramp
@@ -18,7 +19,7 @@ declare function DocHistoryStub(_props: {
18
19
  basePath?: string;
19
20
  displayLocale?: string;
20
21
  dateFormats?: ResolvedDateFormats;
21
- }): VNode;
22
+ }): Child;
22
23
  /**
23
24
  * Derive the single settings -> resolved-roles seam for the `dateFormat`
24
25
  * setting (#4075).
@@ -53,7 +54,20 @@ export declare function deriveColorSchemeGenerators(ctx: ChromeContext): {
53
54
  export declare function deriveNavDataPrep(ctx: ChromeContext): {
54
55
  buildRootMenuItems: (lang: string, currentVersion: string | undefined) => import("../nav-data-prep/index.js").RootMenuItem[];
55
56
  buildLocaleLinksForNav: (currentPath: string, lang: string, localeCount: number) => import("../url-helpers/index.js").LocaleLink[] | undefined;
56
- buildSidebarNodes: (lang: string, navSection: string | undefined, currentVersion: string | undefined, emptyWhenUnsectioned?: boolean) => import("../sidebar-utils/index.js").SidebarNavNode[];
57
+ buildSidebarNodes: (lang: string, navSection: string | undefined, currentVersion: string | undefined, emptyWhenUnsectioned?: boolean | undefined) => import("../sidebar/types.js").SidebarNavNode[];
58
+ buildSidebarContext: (lang: string, navSection: string | undefined, currentVersion: string | undefined, emptyWhenUnsectioned?: boolean) => {
59
+ nodes: import("../sidebar/types.js").SidebarNavNode[];
60
+ navigation: {
61
+ id: string;
62
+ roots: import("../sidebar/types.js").SidebarNavNode[];
63
+ initialExpansion?: Record<string, "collapsed" | "expanded">;
64
+ parents: Record<string, string | null>;
65
+ localParentId?: string;
66
+ };
67
+ } | {
68
+ nodes: never[];
69
+ navigation: undefined;
70
+ };
57
71
  getThemeDefaultMode: () => "light" | "dark" | undefined;
58
72
  };
59
73
  /** Derive the header SearchWidget: `ctx.hostBindings.SearchWidget` when the host
@@ -105,29 +119,6 @@ export declare function deriveSearchWidgetSlot(ctx: ChromeContext): (props: {
105
119
  * and no click queue — a dead button. The two gates must stay in lockstep.
106
120
  */
107
121
  export declare function skipsPackageDefaultDesignTokenPanel(settings: Settings): boolean;
108
- /**
109
- * Derive the body-end islands. The package owns the settings-gated
110
- * DesignTokenPanelBootstrap + ThemePackSwitcher mounts even when a host
111
- * supplies a BodyEndIslands override; the override is composed with those
112
- * package islands rather than replacing them. Without an override,
113
- * `createBodyEndIslands` already contains the same package islands, so the
114
- * two paths are deliberately exclusive.
115
- *
116
- * The components default to the statically imported package islands
117
- * (#2658 gate-2 fix; #2821), preserving route → chrome → derive → component
118
- * scanner reachability for bare `createChrome(routeCtx)` callers. A host may
119
- * still replace the DTP component through
120
- * `hostBindings.DesignTokenPanelBootstrap`, but the package remains the sole
121
- * owner of the mounts and settings gates.
122
- *
123
- * Since #3396 the injected package routes use that same slot: `routes/_chrome.tsx`
124
- * supplies `ConfiguredDesignTokenPanelBootstrap`, which is identical to the
125
- * default except that its builder comes from
126
- * `virtual:zudo-doc-design-token-panel-config` (i.e. a host's
127
- * `designTokenPanelConfigModule`). The default below is what every non-routes
128
- * `createChrome` caller keeps getting — EXCEPT under the one condition
129
- * {@link skipsPackageDefaultDesignTokenPanel} describes.
130
- */
131
122
  export declare function deriveBodyEndIslands(ctx: ChromeContext): (props: import("../doc-body-end-islands/index.js").BodyEndIslandsProps) => JSX.Element;
132
123
  /** Derive the DocHistory island: `ctx.hostBindings.DocHistory` when supplied,
133
124
  * else the package no-op stub. */