@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
  function NodeItem({ node, depth, maxDepth, index }) {
3
3
  const visibleChildren = node.children.filter(
4
4
  (c) => c.hasPage || c.children.length > 0
@@ -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
  /** A single resolved doc card item. */
5
4
  export interface DocCardItem {
6
5
  /** Pre-resolved href (base-prefixed, locale-aware). */
@@ -19,7 +18,7 @@ export interface DocCardGridProps {
19
18
  class?: string;
20
19
  }
21
20
  /**
22
- * DocCardGrid — JSX port of `src/components/doc-card-grid`.
21
+ * DocCardGrid — server renderer for a flat list of documentation cards.
23
22
  *
24
23
  * Renders a flat list of `{ href, title, description? }` items as a two-column
25
24
  * card grid. Each card shows an arrow icon, the doc title, and an optional
@@ -1,9 +1,8 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  function ArrowIcon() {
3
3
  return /* @__PURE__ */ jsx(
4
4
  "svg",
5
5
  {
6
- xmlns: "http://www.w3.org/2000/svg",
7
6
  fill: "currentColor",
8
7
  viewBox: "0 0 103.395 107.049",
9
8
  "aria-hidden": "true",
@@ -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 { NavNode } from "./types.js";
5
4
  export interface DocsSitemapProps {
6
5
  /**
@@ -10,7 +9,7 @@ export interface DocsSitemapProps {
10
9
  tree: NavNode[];
11
10
  }
12
11
  /**
13
- * DocsSitemap — JSX port of `src/components/docs-sitemap`.
12
+ * DocsSitemap — server renderer for collapsible documentation sections.
14
13
  *
15
14
  * Renders the full documentation tree as a series of collapsible
16
15
  * `<details>` sections. Each top-level node becomes one section; its
@@ -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
  function flattenTree(nodes) {
3
3
  const result = [];
4
4
  function collect(n) {
@@ -13,7 +13,7 @@ function flattenTree(nodes) {
13
13
  function SitemapSection({ node, index }) {
14
14
  const leaves = flattenTree(node.children);
15
15
  return /* @__PURE__ */ jsxs("details", { class: "group border border-muted overflow-hidden", open: true, children: [
16
- /* @__PURE__ */ jsxs("summary", { class: "flex items-center gap-x-hsp-md px-hsp-xl py-vsp-md text-title font-bold cursor-pointer select-none bg-surface list-none [&::-webkit-details-marker]:hidden", children: [
16
+ /* @__PURE__ */ jsxs("summary", { class: "flex items-center gap-x-hsp-md px-hsp-xl py-vsp-md text-title font-bold cursor-pointer select-none bg-surface list-none zd-hide-details-marker", children: [
17
17
  /* @__PURE__ */ jsx("span", { class: "inline-block text-caption text-muted transition-transform duration-200 group-open:rotate-90", children: "\u25B6" }),
18
18
  node.href ? /* @__PURE__ */ jsx("a", { href: node.href, class: "hover:text-accent hover:underline focus:underline focus-visible:text-accent", children: node.label }) : /* @__PURE__ */ jsx("span", { children: node.label })
19
19
  ] }),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Public entry for the nav-indexing v2 primitives.
2
+ * Public entry for the server-rendered navigation components.
3
3
  *
4
4
  * Consumers import from `@takazudo/zudo-doc/nav-indexing`:
5
5
  *
@@ -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 { NavNode } from "./types.js";
5
4
  export interface NavCardGridProps {
6
5
  /**
@@ -13,7 +12,7 @@ export interface NavCardGridProps {
13
12
  class?: string;
14
13
  }
15
14
  /**
16
- * NavCardGrid — JSX port of `src/components/nav-card-grid`.
15
+ * NavCardGrid — server renderer for category card links.
17
16
  *
18
17
  * Renders direct children of a category as a two-column grid of card links.
19
18
  * Unlike `CategoryNav`, the arrow icon uses `text-muted` (accent on
@@ -1,9 +1,8 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  function ArrowIcon() {
3
3
  return /* @__PURE__ */ jsx(
4
4
  "svg",
5
5
  {
6
- xmlns: "http://www.w3.org/2000/svg",
7
6
  fill: "currentColor",
8
7
  viewBox: "0 0 103.395 107.049",
9
8
  "aria-hidden": "true",
@@ -1,5 +1,4 @@
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 { NoteTrayIndexProps } from "../note-tray-index.js";
5
4
  export declare function CardList(props: NoteTrayIndexProps): JSX.Element;
@@ -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 { formatMonthDayLabel, formatYear } from "../../format-date/index.js";
3
3
  import { CategoryLinkIcon } from "../../tree-nav-shared/index.js";
4
4
  import { TagNav } from "../tag-nav.js";
@@ -14,10 +14,10 @@ function CardBody({
14
14
  return /* @__PURE__ */ jsxs("div", { class: "min-w-0", children: [
15
15
  /* @__PURE__ */ jsxs("div", { class: "flex flex-wrap items-baseline gap-x-hsp-md gap-y-vsp-3xs", children: [
16
16
  /* @__PURE__ */ jsx("h2", { class: "text-title font-medium leading-tight", children: /* @__PURE__ */ jsxs("span", { class: titleClass, children: [
17
- /* @__PURE__ */ jsx("span", { class: "flex h-[1lh] items-center", children: /* @__PURE__ */ jsx(CategoryLinkIcon, { className: "w-icon-sm" }) }),
17
+ /* @__PURE__ */ jsx("span", { class: "flex h-[1lh] items-center", children: /* @__PURE__ */ jsx(CategoryLinkIcon, { class: "w-icon-sm" }) }),
18
18
  item.label
19
19
  ] }) }),
20
- props.showDate && /* @__PURE__ */ jsx("span", { class: hasStamp ? "sm:hidden" : void 0, children: /* @__PURE__ */ jsx(
20
+ props.showDate && /* @__PURE__ */ jsx("span", { ...hasStamp ? { class: "sm:hidden" } : {}, children: /* @__PURE__ */ jsx(
21
21
  DateLine,
22
22
  {
23
23
  item,
@@ -111,7 +111,7 @@ function CardList(props) {
111
111
  }
112
112
  )
113
113
  ] }),
114
- /* @__PURE__ */ jsx("div", { class: "col-start-1 row-start-2 relative pointer-events-none [&_a]:pointer-events-auto ml-[calc(var(--spacing-hsp-xl)+1px)] mr-[calc(var(--spacing-hsp-xl)+1px)] sm:mr-0 mb-vsp-lg", children: /* @__PURE__ */ jsx(TagNav, { variant: "page", tagLinks: item.tagLinks, labels: props.tagLabels }) })
114
+ /* @__PURE__ */ jsx("div", { class: "col-start-1 row-start-2 relative pointer-events-none zd-card-links-interactive ml-[calc(var(--spacing-hsp-xl)_+_1px)] mr-[calc(var(--spacing-hsp-xl)_+_1px)] sm:mr-0 mb-vsp-lg", children: /* @__PURE__ */ jsx(TagNav, { variant: "page", tagLinks: item.tagLinks, labels: props.tagLabels }) })
115
115
  ] }) : item.href ? /* @__PURE__ */ jsxs(
116
116
  "a",
117
117
  {
@@ -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 { ResolvedDateFormats } from "../../settings.js";
5
4
  import type { NoteTrayIndexItem } from "../note-tray-index.js";
6
5
  import type { TagNavLabels } from "../types.js";
@@ -13,4 +12,4 @@ export declare function DateLine({ item, locale, updatedLabel, dateFormats, }: {
13
12
  export declare function ItemTags({ item, labels }: {
14
13
  item: NoteTrayIndexItem;
15
14
  labels?: TagNavLabels;
16
- }): JSX.Element | null;
15
+ }): import("@takazudo/zfb").Description | null;
@@ -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 { formatDate } from "../../note-tray-model/index.js";
3
3
  import { TagNav } from "../tag-nav.js";
4
4
  function DateLine({
@@ -1,5 +1,4 @@
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 { NoteTrayIndexProps } from "../note-tray-index.js";
5
4
  export declare function IndexList(props: NoteTrayIndexProps): JSX.Element;
@@ -1,9 +1,9 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { rankWidth } from "../../note-tray-model/index.js";
3
3
  import { DateLine } from "./date-line.js";
4
4
  function IndexList(props) {
5
5
  const width = rankWidth(props.items);
6
- return /* @__PURE__ */ jsx("ol", { class: "[&_li]:mb-0", children: props.items.map((item) => {
6
+ return /* @__PURE__ */ jsx("ol", { class: "zd-list-items-no-margin", children: props.items.map((item) => {
7
7
  const rowClass = item.href ? "relative -mt-px first:mt-0 border-y border-muted hover:z-local-1 hover:border-accent focus-within:z-local-1 focus-within:border-accent" : "relative -mt-px first:mt-0 border-y border-muted";
8
8
  const rankClass = item.href ? "tabular-nums text-heading leading-none text-muted group-hover:text-fg group-focus-visible:text-fg" : "tabular-nums text-heading leading-none text-muted";
9
9
  const labelClass = item.href ? "font-medium text-fg group-hover:text-accent group-hover:underline group-focus-visible:text-accent group-focus-visible:underline" : "font-medium text-fg";
@@ -1,5 +1,4 @@
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 { NoteTrayIndexProps } from "../note-tray-index.js";
5
4
  export declare function Timeline(props: NoteTrayIndexProps): JSX.Element;
@@ -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 {
3
3
  formatDate,
4
4
  formatYearMonthLabel,
@@ -10,7 +10,7 @@ function Timeline(props) {
10
10
  const groups = groupItems(props.items, "month", props.order ?? "asc");
11
11
  return /* @__PURE__ */ jsx("div", { class: "space-y-vsp-lg", children: groups.map((group) => /* @__PURE__ */ jsxs("section", { children: [
12
12
  /* @__PURE__ */ jsx("h2", { class: "mb-vsp-sm text-small font-medium text-fg", children: formatYearMonthLabel(group.key, props.locale, props.dateFormats?.yearMonth) }),
13
- /* @__PURE__ */ jsx("ol", { class: "ml-hsp-md border-l border-muted [&_li]:mb-0", children: group.items.map((item) => /* @__PURE__ */ jsxs("li", { class: "relative grid gap-vsp-2xs pl-hsp-xl pb-vsp-lg last:pb-0", children: [
13
+ /* @__PURE__ */ jsx("ol", { class: "ml-hsp-md border-l border-muted zd-list-items-no-margin", children: group.items.map((item) => /* @__PURE__ */ jsxs("li", { class: "relative grid gap-vsp-2xs pl-hsp-xl pb-vsp-lg last:pb-0", children: [
14
14
  item.href ? /* @__PURE__ */ jsx(
15
15
  "a",
16
16
  {
@@ -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 { TagLink, TagNavLabels } from "./types.js";
5
4
  import type { NoteTrayOrder } from "../note-tray-model/index.js";
6
5
  import type { ResolvedDateFormats } 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 { CardList } from "./note-tray-index-parts/card-list.js";
3
3
  import { IndexList } from "./note-tray-index-parts/index-list.js";
4
4
  import { Timeline } from "./note-tray-index-parts/timeline.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 type { NavNode } from "./types.js";
5
4
  export interface SiteTreeNavDemoProps {
6
5
  /**
@@ -21,7 +20,7 @@ export interface SiteTreeNavDemoProps {
21
20
  ariaLabel?: string;
22
21
  }
23
22
  /**
24
- * SiteTreeNavDemo — JSX port of `src/components/site-tree-nav-demo`.
23
+ * SiteTreeNavDemo — static server renderer for the site navigation tree.
25
24
  *
26
25
  * Renders the full site tree as a static collapsible section-by-section view.
27
26
  * Each top-level category becomes a `<details>` block; leaves within each
@@ -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
  function flattenTree(nodes) {
3
3
  const result = [];
4
4
  function collect(n) {
@@ -27,7 +27,7 @@ function reorder(nodes, order) {
27
27
  function Section({ node }) {
28
28
  const leaves = flattenTree(node.children);
29
29
  return /* @__PURE__ */ jsxs("details", { class: "group border border-muted overflow-hidden", open: true, children: [
30
- /* @__PURE__ */ jsxs("summary", { class: "flex items-center gap-x-hsp-md px-hsp-xl py-vsp-md text-title font-bold cursor-pointer select-none bg-surface list-none [&::-webkit-details-marker]:hidden", children: [
30
+ /* @__PURE__ */ jsxs("summary", { class: "flex items-center gap-x-hsp-md px-hsp-xl py-vsp-md text-title font-bold cursor-pointer select-none bg-surface list-none zd-hide-details-marker", children: [
31
31
  /* @__PURE__ */ jsx("span", { class: "inline-block text-caption text-muted transition-transform duration-200 group-open:rotate-90", children: "\u25B6" }),
32
32
  node.href ? /* @__PURE__ */ jsx("a", { href: node.href, class: "hover:text-accent hover:underline focus:underline focus-visible:text-accent", children: node.label }) : /* @__PURE__ */ jsx("span", { children: node.label })
33
33
  ] }),
@@ -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 { TagItem, TagLink, TagNavLabels } from "./types.js";
5
4
  export interface TagNavAllProps {
6
5
  variant: "all";
@@ -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
  function AllTagChip({
3
3
  tag,
4
4
  count,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Shared types for the nav-indexing v2 primitives.
2
+ * Shared data types for the package-owned navigation components.
3
3
  *
4
4
  * All types are presentational: every value the components need to render
5
5
  * arrives via props. No host-project imports, no Astro collection queries.
@@ -39,7 +39,7 @@ export interface TagLink {
39
39
  href: string;
40
40
  }
41
41
  /**
42
- * i18n label bag for `TagNav`. Keeps v2 decoupled from the host's `t()`
42
+ * i18n label bag for `TagNav`. Keeps the package decoupled from the host's `t()`
43
43
  * function — the consumer resolves strings for the active locale and passes
44
44
  * them in.
45
45
  */
@@ -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 { VersionPageEntry, VersionsPageLabels } from "./types.js";
5
4
  export interface VersionsPageContentProps {
6
5
  /** Pre-resolved href to the latest version's default docs page. */
@@ -11,7 +10,7 @@ export interface VersionsPageContentProps {
11
10
  labels: VersionsPageLabels;
12
11
  }
13
12
  /**
14
- * VersionsPageContent — JSX port of `src/components/versions-page-content`.
13
+ * VersionsPageContent — server renderer for the documentation versions page.
15
14
  *
16
15
  * Renders the full documentation versions page:
17
16
  * - An `<h1>` heading (from `labels.pageTitle`).
@@ -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 { ChevronRight } from "../icons/index.js";
3
3
  function VersionsPageContent(props) {
4
4
  const { latestHref, versions, labels } = props;
@@ -14,7 +14,7 @@ function VersionsPageContent(props) {
14
14
  class: "inline-flex items-center gap-hsp-xs text-small text-fg hover:text-accent hover:underline focus-visible:text-accent focus-visible:underline",
15
15
  children: [
16
16
  labels.latestLink,
17
- /* @__PURE__ */ jsx(ChevronRight, { className: "h-[0.875rem] w-[0.875rem]" })
17
+ /* @__PURE__ */ jsx(ChevronRight, { class: "h-[0.875rem] w-[0.875rem]" })
18
18
  ]
19
19
  }
20
20
  )
@@ -24,21 +24,21 @@ function VersionsPageContent(props) {
24
24
  /* @__PURE__ */ jsx("p", { class: "text-small text-muted mb-vsp-md", children: labels.pastDescription }),
25
25
  /* @__PURE__ */ jsx("div", { class: "border border-muted rounded overflow-hidden", children: /* @__PURE__ */ jsxs("table", { class: "w-full text-small", children: [
26
26
  /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { class: "border-b border-muted bg-surface", children: [
27
- /* @__PURE__ */ jsx("th", { class: "px-hsp-lg py-vsp-sm text-left font-medium text-muted", children: labels.versionCol }),
28
- /* @__PURE__ */ jsx("th", { class: "px-hsp-lg py-vsp-sm text-left font-medium text-muted", children: labels.statusCol }),
29
- /* @__PURE__ */ jsx("th", { class: "px-hsp-lg py-vsp-sm text-left font-medium text-muted", children: labels.docsCol })
27
+ /* @__PURE__ */ jsx("th", { class: "px-hsp-md py-vsp-xs text-left font-semibold text-muted", children: labels.versionCol }),
28
+ /* @__PURE__ */ jsx("th", { class: "px-hsp-md py-vsp-xs text-left font-semibold text-muted", children: labels.statusCol }),
29
+ /* @__PURE__ */ jsx("th", { class: "px-hsp-md py-vsp-xs text-left font-semibold text-muted", children: labels.docsCol })
30
30
  ] }) }),
31
31
  /* @__PURE__ */ jsx("tbody", { children: versions.map((v) => /* @__PURE__ */ jsxs(
32
32
  "tr",
33
33
  {
34
34
  class: "border-b border-muted last:border-b-0",
35
35
  children: [
36
- /* @__PURE__ */ jsx("td", { class: "px-hsp-lg py-vsp-sm font-medium text-fg", children: v.label }),
37
- /* @__PURE__ */ jsxs("td", { class: "px-hsp-lg py-vsp-sm", children: [
36
+ /* @__PURE__ */ jsx("td", { class: "px-hsp-md py-vsp-xs font-medium text-fg", children: v.label }),
37
+ /* @__PURE__ */ jsxs("td", { class: "px-hsp-md py-vsp-xs", children: [
38
38
  v.banner === "unmaintained" && /* @__PURE__ */ jsx("span", { class: "inline-block rounded px-hsp-xs py-vsp-3xs text-caption bg-warning/10 text-warning", children: labels.unmaintained }),
39
39
  v.banner === "unreleased" && /* @__PURE__ */ jsx("span", { class: "inline-block rounded px-hsp-xs py-vsp-3xs text-caption bg-info/10 text-info", children: labels.unreleased })
40
40
  ] }),
41
- /* @__PURE__ */ jsx("td", { class: "px-hsp-lg py-vsp-sm", children: /* @__PURE__ */ jsx(
41
+ /* @__PURE__ */ jsx("td", { class: "px-hsp-md py-vsp-xs", children: /* @__PURE__ */ jsx(
42
42
  "a",
43
43
  {
44
44
  href: v.docsHref,
@@ -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 NoteTrayIndexItem, type NoteTrayIndexStyle } from "../nav-indexing/index.js";
5
4
  import type { DateFormatSetting } from "../settings.js";
6
5
  export interface NoteTrayIndexNode extends NoteTrayIndexItem {
@@ -1,4 +1,4 @@
1
- import { jsx } from "preact/jsx-runtime";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { remapVersionedHrefs } from "../nav-data-prep/index.js";
3
3
  import {
4
4
  NoteTrayIndex
@@ -1,5 +1,4 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
2
  /** Default `id` for the overlay element. Stable so test rigs can target it. */
4
3
  export declare const PAGE_LOADING_OVERLAY_ID = "page-loading-overlay";
5
4
  export interface PageLoadingOverlayProps {
@@ -28,4 +27,4 @@ export declare function buildPageLoadingOverlayBootstrap(overlayId: string): str
28
27
  * element-permitted-content and fails html-validate (same fix applied to the
29
28
  * version-switcher in zudolab/zudo-doc#1505; regression caught in W2A #1543).
30
29
  */
31
- export default function PageLoadingOverlay({ id, }?: PageLoadingOverlayProps): import("preact").JSX.Element;
30
+ export default function PageLoadingOverlay({ id, }?: PageLoadingOverlayProps): import("@takazudo/zfb").Description;
@@ -1,11 +1,11 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import {
3
3
  AFTER_NAVIGATE_EVENT,
4
4
  BEFORE_NAVIGATE_EVENT
5
5
  } from "../transitions/page-events.js";
6
6
  const PAGE_LOADING_OVERLAY_ID = "page-loading-overlay";
7
7
  function buildPageLoadingOverlayBootstrap(overlayId) {
8
- const id = JSON.stringify(overlayId);
8
+ const id = JSON.stringify(overlayId).replaceAll("<", "\\u003c");
9
9
  const before = JSON.stringify(BEFORE_NAVIGATE_EVENT);
10
10
  const after = JSON.stringify(AFTER_NAVIGATE_EVENT);
11
11
  return `(function(){
@@ -36,9 +36,7 @@ function PageLoadingOverlay({
36
36
  /* @__PURE__ */ jsx(
37
37
  "script",
38
38
  {
39
- dangerouslySetInnerHTML: {
40
- __html: buildPageLoadingOverlayBootstrap(id)
41
- }
39
+ rawHtml: buildPageLoadingOverlayBootstrap(id)
42
40
  }
43
41
  )
44
42
  ] });
@@ -0,0 +1,3 @@
1
+ import type { ZfbPlugin } from "@takazudo/zfb/plugins";
2
+ declare const plugin: ZfbPlugin;
3
+ export default plugin;
@@ -0,0 +1,34 @@
1
+ import { emitAgentCorpus, projectAgentCorpus } from "./internal/agent-export/index.js";
2
+ import { getBasePrefix } from "./plugin-utils.js";
3
+ const plugin = {
4
+ name: "agent-export",
5
+ async postBuild(ctx) {
6
+ emitAgentCorpus({ ...ctx.options, outDir: ctx.outDir, copyPublicWithBase: ctx.config.copyPublicWithBase });
7
+ },
8
+ devMiddleware(ctx) {
9
+ const options = ctx.options;
10
+ const route = `${getBasePrefix(options.base)}/agent/v1/`;
11
+ const handler = async (req) => {
12
+ if (!req.url.split("?")[0]?.startsWith(route)) return void 0;
13
+ if (req.method !== "GET" && req.method !== "HEAD") return { status: 405, headers: { allow: "GET, HEAD" }, body: "Method Not Allowed" };
14
+ const path = req.url.split("?")[0].slice(route.length);
15
+ const corpus = projectAgentCorpus(options);
16
+ let body;
17
+ let type = "application/json; charset=utf-8";
18
+ if (path === "manifest.json") body = JSON.stringify(corpus.manifest);
19
+ else if (path === "search-index.json") body = JSON.stringify(corpus.index);
20
+ else if (/^items\/p-[a-f0-9]{16}-[0-9]{6}\.json$/.test(path)) body = corpus.items.get(path.slice(6, -5));
21
+ else if (/^pages\/p-[a-f0-9]{16}\.md$/.test(path)) {
22
+ body = corpus.pages.get(path.slice(6, -3));
23
+ type = "text/markdown; charset=utf-8";
24
+ }
25
+ if (body === void 0) return { status: 404, headers: { "content-type": "text/plain" }, body: "Not Found" };
26
+ return { status: 200, headers: { "content-type": type }, body: req.method === "HEAD" ? "" : body };
27
+ };
28
+ ctx.register(route.slice(0, -1), handler);
29
+ }
30
+ };
31
+ var agent_export_default = plugin;
32
+ export {
33
+ agent_export_default as default
34
+ };
@@ -0,0 +1,5 @@
1
+ import type { AgentItem } from "../../../agent-docs/types.js";
2
+ type AgentChunkMetadata = Pick<AgentItem["metadata"], "locale" | "pageId"> & Partial<Pick<AgentItem["metadata"], "description" | "section" | "unsupportedDynamicContent">>;
3
+ /** Exact, ordered slices. Boundaries prefer headings and paragraphs, then Unicode-safe cuts. */
4
+ export declare function chunkAgentText(text: string, title: string, url: string, metadata?: AgentChunkMetadata): string[];
5
+ export {};
@@ -0,0 +1,90 @@
1
+ import { AGENT_MAX_ITEM_TEXT_UNITS, AGENT_MAX_TOOL_RESPONSE_BYTES } from "../../../agent-docs/limits.js";
2
+ const RESPONSE_FRAMING_RESERVE_BYTES = 4096;
3
+ function isHighSurrogate(value) {
4
+ return value >= 55296 && value <= 56319;
5
+ }
6
+ function isLowSurrogate(value) {
7
+ return value >= 56320 && value <= 57343;
8
+ }
9
+ function firstCodePointUnits(text, start) {
10
+ return isHighSurrogate(text.charCodeAt(start)) && isLowSurrogate(text.charCodeAt(start + 1)) ? 2 : 1;
11
+ }
12
+ function safeCut(text, start, limit) {
13
+ let end = Math.min(start + limit, text.length);
14
+ if (end < text.length && end > start && isHighSurrogate(text.charCodeAt(end - 1)) && isLowSurrogate(text.charCodeAt(end))) {
15
+ end--;
16
+ }
17
+ return end;
18
+ }
19
+ function fitsResponseBudget(text, title, url, metadata) {
20
+ const item = {
21
+ // The real page IDs are 25 UTF-16 units at most; keep a larger fixed ID
22
+ // and the maximum part numbers while sizing before chunkCount is known.
23
+ id: "x".repeat(32),
24
+ title,
25
+ text,
26
+ url,
27
+ metadata: {
28
+ ...metadata,
29
+ fingerprint: "f".repeat(64),
30
+ part: 999999,
31
+ partCount: 999999
32
+ }
33
+ };
34
+ const serialized = JSON.stringify({
35
+ structuredContent: item,
36
+ content: [{ type: "text", text: JSON.stringify(item) }]
37
+ });
38
+ return Buffer.byteLength(serialized) <= AGENT_MAX_TOOL_RESPONSE_BYTES - RESPONSE_FRAMING_RESERVE_BYTES;
39
+ }
40
+ function failItemBudget() {
41
+ throw new Error(
42
+ "Agent item cannot fit within the MCP tool response byte limit, even with one Unicode code point."
43
+ );
44
+ }
45
+ function chunkAgentText(text, title, url, metadata = { locale: "x", pageId: "x".repeat(32) }) {
46
+ if (!text) {
47
+ if (!fitsResponseBudget("", title, url, metadata)) failItemBudget();
48
+ return [""];
49
+ }
50
+ const result = [];
51
+ let offset = 0;
52
+ while (offset < text.length) {
53
+ let end = safeCut(text, offset, AGENT_MAX_ITEM_TEXT_UNITS);
54
+ if (end < text.length) {
55
+ const slice = text.slice(offset, end);
56
+ const preferred = Math.max(slice.lastIndexOf("\n# "), slice.lastIndexOf("\n## "), slice.lastIndexOf("\n\n"));
57
+ if (preferred > Math.floor(slice.length / 3)) end = offset + preferred + 1;
58
+ const before = text.slice(offset, end);
59
+ const openings = [...before.matchAll(/^\s*(`{3,}|~{3,})/gm)];
60
+ if (openings.length % 2 === 1) {
61
+ const last = openings.at(-1);
62
+ const fenceStart = offset + last.index;
63
+ const close = text.indexOf(`
64
+ ${last[1]}`, end);
65
+ if (close >= 0 && close + 1 + last[1].length - offset <= AGENT_MAX_ITEM_TEXT_UNITS) {
66
+ end = close + 1 + last[1].length;
67
+ } else if (fenceStart > offset) end = fenceStart;
68
+ }
69
+ }
70
+ if (end <= offset) end = safeCut(text, offset, AGENT_MAX_ITEM_TEXT_UNITS);
71
+ let part = text.slice(offset, end);
72
+ while (!fitsResponseBudget(part, title, url, metadata)) {
73
+ const currentUnits = end - offset;
74
+ const minimumUnits = firstCodePointUnits(text, offset);
75
+ if (currentUnits <= minimumUnits) failItemBudget();
76
+ const nextUnits = Math.max(minimumUnits, Math.floor(currentUnits * 0.8));
77
+ let nextEnd = safeCut(text, offset, nextUnits);
78
+ if (nextEnd <= offset || nextEnd >= end) nextEnd = offset + minimumUnits;
79
+ if (nextEnd <= offset || nextEnd >= end) failItemBudget();
80
+ end = nextEnd;
81
+ part = text.slice(offset, end);
82
+ }
83
+ result.push(part);
84
+ offset = end;
85
+ }
86
+ return result;
87
+ }
88
+ export {
89
+ chunkAgentText
90
+ };
@@ -0,0 +1,24 @@
1
+ import type { AgentManifest, AgentSearchIndex } from "../../../agent-docs/types.js";
2
+ export interface AgentExportOptions {
3
+ outDir?: string;
4
+ base: string;
5
+ siteUrl?: string;
6
+ siteName: string;
7
+ defaultLocale: string;
8
+ defaultLocaleDir: string;
9
+ locales?: Array<{
10
+ code: string;
11
+ dir: string;
12
+ }>;
13
+ }
14
+ export declare function projectAgentCorpus(options: AgentExportOptions): {
15
+ manifest: AgentManifest;
16
+ index: AgentSearchIndex;
17
+ pages: Map<string, string>;
18
+ items: Map<string, string>;
19
+ };
20
+ /** Replace only the owned agent/v1 subtree, including on exclude/delete rebuilds. */
21
+ export declare function emitAgentCorpus(options: AgentExportOptions & {
22
+ outDir: string;
23
+ copyPublicWithBase?: boolean;
24
+ }): string[];