@takazudo/zudo-doc 5.28.2 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +49 -16
  3. package/bin/gen-z-index.mjs +18 -18
  4. package/dist/agent-docs/identity.d.ts +4 -0
  5. package/dist/agent-docs/identity.js +24 -0
  6. package/dist/agent-docs/index.d.ts +5 -0
  7. package/dist/agent-docs/index.js +5 -0
  8. package/dist/agent-docs/limits.d.ts +11 -0
  9. package/dist/agent-docs/limits.js +24 -0
  10. package/dist/agent-docs/search.d.ts +14 -0
  11. package/dist/agent-docs/search.js +82 -0
  12. package/dist/agent-docs/tokenize.d.ts +2 -0
  13. package/dist/agent-docs/tokenize.js +22 -0
  14. package/dist/agent-docs/types.d.ts +68 -0
  15. package/dist/agent-docs/types.js +0 -0
  16. package/dist/ai-chat-modal/index.d.ts +1 -4
  17. package/dist/ai-chat-modal/index.js +183 -123
  18. package/dist/asset-components/asset-card.d.ts +1 -2
  19. package/dist/asset-components/asset-card.js +12 -12
  20. package/dist/asset-components/asset-code.d.ts +1 -2
  21. package/dist/asset-components/asset-code.js +10 -10
  22. package/dist/asset-components/shared.d.ts +3 -4
  23. package/dist/asset-components/shared.js +4 -4
  24. package/dist/asset-index-page/body.d.ts +5 -6
  25. package/dist/asset-index-page/body.js +6 -6
  26. package/dist/asset-index-page/index.d.ts +1 -2
  27. package/dist/asset-index-page/index.js +1 -1
  28. package/dist/asset-page/body.d.ts +5 -9
  29. package/dist/asset-page/body.js +3 -3
  30. package/dist/asset-page/components.d.ts +16 -17
  31. package/dist/asset-page/components.js +10 -9
  32. package/dist/asset-page/index.d.ts +1 -2
  33. package/dist/asset-page/index.js +1 -1
  34. package/dist/auto-logo/index.d.ts +1 -2
  35. package/dist/auto-logo/index.js +2 -2
  36. package/dist/body-foot-util/body-foot-util-area.d.ts +3 -4
  37. package/dist/body-foot-util/body-foot-util-area.js +1 -2
  38. package/dist/body-foot-util/edit-link.d.ts +2 -3
  39. package/dist/body-foot-util/edit-link.js +1 -2
  40. package/dist/breadcrumb/breadcrumb.d.ts +6 -6
  41. package/dist/breadcrumb/breadcrumb.js +3 -4
  42. package/dist/catalog.js +1 -1
  43. package/dist/category-nav/index.d.ts +1 -2
  44. package/dist/category-nav/index.js +11 -5
  45. package/dist/category-tree-nav/index.d.ts +1 -2
  46. package/dist/category-tree-nav/index.js +3 -3
  47. package/dist/chrome/derive.d.ts +18 -27
  48. package/dist/chrome/derive.js +47 -29
  49. package/dist/chrome/index.d.ts +5 -5
  50. package/dist/chrome/index.js +1 -1
  51. package/dist/chrome/island-data.d.ts +4 -0
  52. package/dist/chrome/island-data.js +52 -0
  53. package/dist/chrome/primary-slots.d.ts +2 -3
  54. package/dist/chrome-bindings.d.ts +30 -22
  55. package/dist/code-group/index.d.ts +3 -4
  56. package/dist/code-group/index.js +3 -7
  57. package/dist/code-syntax/code-block-enhancer.d.ts +1 -2
  58. package/dist/code-syntax/code-block-enhancer.js +2 -2
  59. package/dist/code-syntax/mermaid-init.d.ts +1 -2
  60. package/dist/code-syntax/mermaid-init.js +5 -2
  61. package/dist/code-syntax/tabs-init-script.js +1 -1
  62. package/dist/code-syntax/tabs-init.d.ts +1 -2
  63. package/dist/code-syntax/tabs-init.js +2 -2
  64. package/dist/code-syntax/tabs.d.ts +6 -6
  65. package/dist/code-syntax/tabs.js +8 -8
  66. package/dist/compiled.css +2937 -2942
  67. package/dist/config/component-tokens.d.ts +1 -1
  68. package/dist/config/component-tokens.js +22 -0
  69. package/dist/config-assertions/index.d.ts +13 -0
  70. package/dist/config-assertions/index.js +14 -0
  71. package/dist/config.d.ts +36 -17
  72. package/dist/config.js +23 -95
  73. package/dist/content/content-blockquote.d.ts +2 -3
  74. package/dist/content/content-blockquote.js +3 -3
  75. package/dist/content/content-code.d.ts +3 -4
  76. package/dist/content/content-code.js +5 -5
  77. package/dist/content/content-link.d.ts +3 -4
  78. package/dist/content/content-link.js +10 -10
  79. package/dist/content/content-ol.d.ts +2 -3
  80. package/dist/content/content-ol.js +5 -4
  81. package/dist/content/content-paragraph.d.ts +2 -3
  82. package/dist/content/content-paragraph.js +1 -1
  83. package/dist/content/content-strong.d.ts +2 -3
  84. package/dist/content/content-strong.js +3 -3
  85. package/dist/content/content-table.d.ts +2 -3
  86. package/dist/content/content-table.js +4 -4
  87. package/dist/content/content-ul.d.ts +2 -3
  88. package/dist/content/content-ul.js +4 -4
  89. package/dist/content/heading-h2.d.ts +2 -3
  90. package/dist/content/heading-h2.js +4 -4
  91. package/dist/content/heading-h3.d.ts +2 -3
  92. package/dist/content/heading-h3.js +4 -4
  93. package/dist/content/heading-h4.d.ts +2 -3
  94. package/dist/content/heading-h4.js +4 -4
  95. package/dist/content-admonition/index.d.ts +3 -4
  96. package/dist/content-admonition/index.js +2 -2
  97. package/dist/content.css +35 -33
  98. package/dist/design-token-panel-bootstrap-controller.d.ts +178 -0
  99. package/dist/design-token-panel-bootstrap-controller.js +359 -0
  100. package/dist/design-token-panel-bootstrap-island.d.ts +5 -0
  101. package/dist/design-token-panel-bootstrap-island.js +19 -0
  102. package/dist/design-token-panel-bootstrap.d.ts +5 -195
  103. package/dist/design-token-panel-bootstrap.js +3 -288
  104. package/dist/desktop-sidebar-toggle-island/index.d.ts +2 -7
  105. package/dist/desktop-sidebar-toggle-island/index.js +2 -58
  106. package/dist/desktop-sidebar-toggle-island/island.d.ts +4 -0
  107. package/dist/desktop-sidebar-toggle-island/island.js +43 -0
  108. package/dist/desktop-sidebar-toggle-island/storage.d.ts +4 -0
  109. package/dist/desktop-sidebar-toggle-island/storage.js +29 -0
  110. package/dist/desktop-toc-toggle-island/index.d.ts +2 -7
  111. package/dist/desktop-toc-toggle-island/index.js +2 -58
  112. package/dist/desktop-toc-toggle-island/island.d.ts +4 -0
  113. package/dist/desktop-toc-toggle-island/island.js +43 -0
  114. package/dist/desktop-toc-toggle-island/storage.d.ts +4 -0
  115. package/dist/desktop-toc-toggle-island/storage.js +29 -0
  116. package/dist/details/details.d.ts +3 -4
  117. package/dist/details/details.js +1 -1
  118. package/dist/doc-body-end/index.d.ts +1 -2
  119. package/dist/doc-body-end/index.js +1 -1
  120. package/dist/doc-body-end-islands/design-token-panel-island.d.ts +2 -2
  121. package/dist/doc-body-end-islands/design-token-panel-island.js +3 -7
  122. package/dist/doc-body-end-islands/index.d.ts +4 -21
  123. package/dist/doc-body-end-islands/index.js +5 -3
  124. package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +3 -13
  125. package/dist/doc-body-end-islands/theme-pack-switcher-island.js +11 -13
  126. package/dist/doc-content-header/index.d.ts +1 -2
  127. package/dist/doc-content-header/index.js +1 -1
  128. package/dist/doc-history/index.d.ts +1 -1
  129. package/dist/doc-history/index.js +166 -141
  130. package/dist/doc-history-area/index.d.ts +6 -4
  131. package/dist/doc-history-area/index.js +17 -16
  132. package/dist/doc-metainfo-area/index.d.ts +2 -3
  133. package/dist/doc-metainfo-area/index.js +1 -1
  134. package/dist/doc-page-renderer/index.d.ts +13 -7
  135. package/dist/doc-page-renderer/index.js +10 -1
  136. package/dist/doc-page-shell/index.d.ts +20 -7
  137. package/dist/doc-page-shell/index.js +17 -6
  138. package/dist/doc-pager/index.d.ts +1 -2
  139. package/dist/doc-pager/index.js +3 -3
  140. package/dist/doc-tags-area/index.d.ts +2 -3
  141. package/dist/doc-tags-area/index.js +1 -1
  142. package/dist/doclayout/doc-layout-with-defaults.d.ts +9 -9
  143. package/dist/doclayout/doc-layout-with-defaults.js +5 -15
  144. package/dist/doclayout/doc-layout.d.ts +26 -27
  145. package/dist/doclayout/doc-layout.js +23 -14
  146. package/dist/docs-schema/index.d.ts +4 -0
  147. package/dist/docs-schema/index.js +1 -0
  148. package/dist/extract-headings/index.js +43 -12
  149. package/dist/factory-context/index.d.ts +22 -19
  150. package/dist/features.css +75 -8
  151. package/dist/find-in-page/find-bar.d.ts +4 -2
  152. package/dist/find-in-page/find-bar.js +58 -69
  153. package/dist/find-in-page/index.d.ts +2 -8
  154. package/dist/find-in-page/index.js +33 -30
  155. package/dist/footer/footer.d.ts +3 -4
  156. package/dist/footer/footer.js +3 -3
  157. package/dist/footer-with-defaults/index.d.ts +2 -3
  158. package/dist/footer-with-defaults/index.js +1 -1
  159. package/dist/frontmatter-preview-defaults/index.js +1 -0
  160. package/dist/head/doc-head.d.ts +1 -1
  161. package/dist/head/doc-head.js +24 -32
  162. package/dist/head/og-tags.d.ts +1 -1
  163. package/dist/head/og-tags.js +8 -7
  164. package/dist/head/twitter-card.d.ts +1 -1
  165. package/dist/head/twitter-card.js +1 -1
  166. package/dist/head-with-defaults/index.d.ts +7 -2
  167. package/dist/head-with-defaults/index.js +46 -32
  168. package/dist/header/header.d.ts +8 -8
  169. package/dist/header/header.js +9 -11
  170. package/dist/header/types.d.ts +7 -7
  171. package/dist/header-with-defaults/index.d.ts +3 -4
  172. package/dist/header-with-defaults/index.js +27 -14
  173. package/dist/home-intro/index.d.ts +2 -5
  174. package/dist/home-intro/index.js +7 -5
  175. package/dist/home-intro/prepare.js +4 -3
  176. package/dist/home-page/index.d.ts +3 -3
  177. package/dist/home-page/index.js +19 -17
  178. package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -4
  179. package/dist/html-preview-wrapper/highlighted-code.js +19 -17
  180. package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +4 -25
  181. package/dist/html-preview-wrapper/html-preview-wrapper.js +2 -87
  182. package/dist/html-preview-wrapper/html-preview.d.ts +3 -10
  183. package/dist/html-preview-wrapper/html-preview.js +13 -37
  184. package/dist/html-preview-wrapper/index.d.ts +2 -1
  185. package/dist/html-preview-wrapper/index.js +1 -1
  186. package/dist/html-preview-wrapper/preview-base.d.ts +3 -5
  187. package/dist/html-preview-wrapper/preview-base.js +56 -59
  188. package/dist/html-preview-wrapper/wrapper.d.ts +20 -0
  189. package/dist/html-preview-wrapper/wrapper.js +37 -0
  190. package/dist/hydration-pending.d.ts +3 -5
  191. package/dist/hydration-pending.js +7 -5
  192. package/dist/i18n-version/language-switcher.d.ts +5 -32
  193. package/dist/i18n-version/language-switcher.js +5 -106
  194. package/dist/i18n-version/switcher-generated-scripts.d.ts +2 -0
  195. package/dist/i18n-version/switcher-generated-scripts.js +107 -0
  196. package/dist/i18n-version/switcher-url-state.d.ts +76 -0
  197. package/dist/i18n-version/switcher-url-state.js +103 -0
  198. package/dist/i18n-version/version-banner.d.ts +2 -3
  199. package/dist/i18n-version/version-banner.js +1 -1
  200. package/dist/i18n-version/version-switcher.d.ts +5 -50
  201. package/dist/i18n-version/version-switcher.js +5 -157
  202. package/dist/icons/index.d.ts +18 -19
  203. package/dist/icons/index.js +17 -33
  204. package/dist/image-enlarge/index.d.ts +1 -10
  205. package/dist/image-enlarge/index.js +80 -55
  206. package/dist/image-enlarge/public.d.ts +2 -0
  207. package/dist/image-enlarge/public.js +6 -0
  208. package/dist/image-enlarge/ssr-fallback.d.ts +2 -0
  209. package/dist/image-enlarge/ssr-fallback.js +8 -0
  210. package/dist/index.d.ts +11 -4
  211. package/dist/inline-version-switcher/index.d.ts +1 -2
  212. package/dist/inline-version-switcher/index.js +1 -1
  213. package/dist/island-types/index.d.ts +2 -2
  214. package/dist/island-types/index.js +1 -5
  215. package/dist/math-block/index.d.ts +4 -7
  216. package/dist/math-block/index.js +5 -5
  217. package/dist/mcp/handler.d.ts +8 -0
  218. package/dist/mcp/handler.js +129 -0
  219. package/dist/mcp/index.d.ts +4 -0
  220. package/dist/mcp/index.js +7 -0
  221. package/dist/mcp/loader.d.ts +19 -0
  222. package/dist/mcp/loader.js +202 -0
  223. package/dist/mdx-components/index.js +40 -108
  224. package/dist/mermaid-enlarge/index.d.ts +1 -8
  225. package/dist/mermaid-enlarge/index.js +174 -158
  226. package/dist/mermaid-enlarge/public.d.ts +2 -0
  227. package/dist/mermaid-enlarge/public.js +6 -0
  228. package/dist/mermaid-enlarge/ssr-fallback.d.ts +2 -0
  229. package/dist/mermaid-enlarge/ssr-fallback.js +8 -0
  230. package/dist/metainfo/doc-metainfo.d.ts +2 -3
  231. package/dist/metainfo/doc-metainfo.js +1 -4
  232. package/dist/metainfo/doc-tags.d.ts +2 -3
  233. package/dist/metainfo/doc-tags.js +1 -1
  234. package/dist/metainfo/frontmatter-preview.d.ts +3 -4
  235. package/dist/metainfo/frontmatter-preview.js +1 -1
  236. package/dist/nav-data-prep/index.js +6 -4
  237. package/dist/nav-indexing/category-nav.d.ts +2 -3
  238. package/dist/nav-indexing/category-nav.js +1 -2
  239. package/dist/nav-indexing/category-tree-nav.d.ts +2 -3
  240. package/dist/nav-indexing/category-tree-nav.js +1 -1
  241. package/dist/nav-indexing/doc-card-grid.d.ts +2 -3
  242. package/dist/nav-indexing/doc-card-grid.js +1 -2
  243. package/dist/nav-indexing/docs-sitemap.d.ts +2 -3
  244. package/dist/nav-indexing/docs-sitemap.js +2 -2
  245. package/dist/nav-indexing/index.d.ts +1 -1
  246. package/dist/nav-indexing/nav-card-grid.d.ts +2 -3
  247. package/dist/nav-indexing/nav-card-grid.js +1 -2
  248. package/dist/nav-indexing/note-tray-index-parts/card-list.d.ts +1 -2
  249. package/dist/nav-indexing/note-tray-index-parts/card-list.js +4 -4
  250. package/dist/nav-indexing/note-tray-index-parts/date-line.d.ts +2 -3
  251. package/dist/nav-indexing/note-tray-index-parts/date-line.js +1 -1
  252. package/dist/nav-indexing/note-tray-index-parts/index-list.d.ts +1 -2
  253. package/dist/nav-indexing/note-tray-index-parts/index-list.js +2 -2
  254. package/dist/nav-indexing/note-tray-index-parts/timeline.d.ts +1 -2
  255. package/dist/nav-indexing/note-tray-index-parts/timeline.js +2 -2
  256. package/dist/nav-indexing/note-tray-index.d.ts +1 -2
  257. package/dist/nav-indexing/note-tray-index.js +1 -1
  258. package/dist/nav-indexing/site-tree-nav-demo.d.ts +2 -3
  259. package/dist/nav-indexing/site-tree-nav-demo.js +2 -2
  260. package/dist/nav-indexing/tag-nav.d.ts +1 -2
  261. package/dist/nav-indexing/tag-nav.js +1 -1
  262. package/dist/nav-indexing/types.d.ts +2 -2
  263. package/dist/nav-indexing/versions-page-content.d.ts +2 -3
  264. package/dist/nav-indexing/versions-page-content.js +8 -8
  265. package/dist/note-tray-index/index.d.ts +1 -2
  266. package/dist/note-tray-index/index.js +1 -1
  267. package/dist/page-loading/page-loading-overlay.d.ts +1 -2
  268. package/dist/page-loading/page-loading-overlay.js +3 -5
  269. package/dist/plugins/agent-export.d.ts +3 -0
  270. package/dist/plugins/agent-export.js +34 -0
  271. package/dist/plugins/internal/agent-export/chunk.d.ts +5 -0
  272. package/dist/plugins/internal/agent-export/chunk.js +90 -0
  273. package/dist/plugins/internal/agent-export/index.d.ts +24 -0
  274. package/dist/plugins/internal/agent-export/index.js +123 -0
  275. package/dist/plugins/internal/agent-export/normalize.d.ts +5 -0
  276. package/dist/plugins/internal/agent-export/normalize.js +73 -0
  277. package/dist/plugins/internal/llms-txt/dev-middleware.d.ts +6 -0
  278. package/dist/plugins/internal/llms-txt/dev-middleware.js +8 -3
  279. package/dist/plugins/internal/llms-txt/emit.js +23 -6
  280. package/dist/plugins/internal/llms-txt/generate.d.ts +7 -1
  281. package/dist/plugins/internal/llms-txt/generate.js +9 -2
  282. package/dist/plugins/internal/llms-txt/load.d.ts +2 -0
  283. package/dist/plugins/internal/llms-txt/load.js +20 -4
  284. package/dist/plugins/internal/llms-txt/types.d.ts +10 -0
  285. package/dist/plugins/routes.js +4 -0
  286. package/dist/preset.d.ts +19 -9
  287. package/dist/preset.js +20 -1
  288. package/dist/route-context-payload/index.js +1 -1
  289. package/dist/routes/404.d.ts +2 -3
  290. package/dist/routes/404.js +1 -1
  291. package/dist/routes/_chrome.d.ts +5 -5
  292. package/dist/routes/_chrome.js +7 -2
  293. package/dist/routes/_context.d.ts +4 -4
  294. package/dist/routes/_design-token-panel-bootstrap.d.ts +1 -4
  295. package/dist/routes/_design-token-panel-bootstrap.js +9 -1
  296. package/dist/routes/docs-slug.d.ts +2 -3
  297. package/dist/routes/docs-tags-index.d.ts +2 -3
  298. package/dist/routes/docs-tags-index.js +1 -1
  299. package/dist/routes/docs-tags-tag.d.ts +2 -3
  300. package/dist/routes/docs-tags-tag.js +1 -1
  301. package/dist/routes/docs-versions.d.ts +2 -3
  302. package/dist/routes/docs-versions.js +1 -1
  303. package/dist/routes/files-path.d.ts +2 -3
  304. package/dist/routes/files-path.js +1 -1
  305. package/dist/routes/index.d.ts +2 -3
  306. package/dist/routes/index.js +1 -1
  307. package/dist/routes/locale-docs-slug.d.ts +2 -3
  308. package/dist/routes/locale-docs-tags-index.d.ts +2 -3
  309. package/dist/routes/locale-docs-tags-index.js +1 -1
  310. package/dist/routes/locale-docs-tags-tag.d.ts +2 -3
  311. package/dist/routes/locale-docs-tags-tag.js +1 -1
  312. package/dist/routes/locale-docs-versions.d.ts +2 -3
  313. package/dist/routes/locale-docs-versions.js +1 -1
  314. package/dist/routes/locale-files-path.d.ts +2 -3
  315. package/dist/routes/locale-files-path.js +1 -1
  316. package/dist/routes/locale-index.d.ts +2 -3
  317. package/dist/routes/locale-index.js +1 -1
  318. package/dist/routes/mcp.d.ts +5 -0
  319. package/dist/routes/mcp.js +25 -0
  320. package/dist/routes/v-docs-slug.d.ts +2 -3
  321. package/dist/routes/v-locale-docs-slug.d.ts +2 -3
  322. package/dist/search-widget/index.d.ts +1 -2
  323. package/dist/search-widget/index.js +4 -7
  324. package/dist/search-widget-script/generated-script.js +12 -5
  325. package/dist/settings-defaults.d.ts +2 -0
  326. package/dist/settings-defaults.js +93 -0
  327. package/dist/settings.d.ts +8 -2
  328. package/dist/sidebar/client-data.d.ts +18 -0
  329. package/dist/sidebar/client-data.js +47 -0
  330. package/dist/sidebar/index.d.ts +3 -1
  331. package/dist/sidebar/index.js +3 -1
  332. package/dist/sidebar/sidebar.d.ts +12 -44
  333. package/dist/sidebar/sidebar.js +4 -3
  334. package/dist/sidebar/types.d.ts +14 -0
  335. package/dist/sidebar-prepaint/index.d.ts +1 -2
  336. package/dist/sidebar-prepaint/index.js +4 -6
  337. package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +2 -3
  338. package/dist/sidebar-resizer/sidebar-resizer-init.js +3 -3
  339. package/dist/sidebar-toggle-island/index.d.ts +8 -11
  340. package/dist/sidebar-toggle-island/index.js +75 -62
  341. package/dist/sidebar-tree/build-tree.js +5 -6
  342. package/dist/sidebar-tree/types.d.ts +2 -0
  343. package/dist/sidebar-tree-island/index.d.ts +4 -19
  344. package/dist/sidebar-tree-island/index.js +782 -436
  345. package/dist/sidebar-tree-island/scope-state.d.ts +38 -0
  346. package/dist/sidebar-tree-island/scope-state.js +151 -0
  347. package/dist/sidebar-tree-island/sidebar-scroll-preserve.js +6 -2
  348. package/dist/sidebar-utils/index.d.ts +17 -19
  349. package/dist/sidebar-utils/index.js +100 -3
  350. package/dist/sidebar-utils/scope.d.ts +11 -0
  351. package/dist/sidebar-utils/scope.js +67 -0
  352. package/dist/sidebar-with-defaults/index.d.ts +1 -2
  353. package/dist/sidebar-with-defaults/index.js +19 -18
  354. package/dist/site-schema/nav-tree.js +15 -15
  355. package/dist/site-schema/types.d.ts +1 -0
  356. package/dist/site-tree-nav/index.d.ts +2 -3
  357. package/dist/site-tree-nav/index.js +11 -12
  358. package/dist/site-tree-nav/normalize-island-props.d.ts +16 -0
  359. package/dist/site-tree-nav/normalize-island-props.js +122 -0
  360. package/dist/site-tree-nav-island/index.d.ts +3 -3
  361. package/dist/site-tree-nav-island/index.js +243 -144
  362. package/dist/smart-break/index.d.ts +3 -4
  363. package/dist/smart-break/index.js +1 -1
  364. package/dist/tab-item/tab-item.d.ts +3 -4
  365. package/dist/tab-item/tab-item.js +1 -1
  366. package/dist/tag-pages/index.d.ts +3 -3
  367. package/dist/tag-pages/index.js +10 -10
  368. package/dist/theme/color-scheme-provider.d.ts +3 -3
  369. package/dist/theme/color-scheme-provider.js +3 -3
  370. package/dist/theme/theme-pack-provider.d.ts +1 -1
  371. package/dist/theme/theme-pack-provider.js +3 -3
  372. package/dist/theme/theme-toggle.d.ts +2 -3
  373. package/dist/theme/theme-toggle.js +1 -1
  374. package/dist/theme-pack-dialog/index.d.ts +1 -1
  375. package/dist/theme-pack-dialog/index.js +69 -75
  376. package/dist/theme-pack-dialog/theme-pack-card.d.ts +3 -4
  377. package/dist/theme-pack-dialog/theme-pack-card.js +19 -17
  378. package/dist/theme-pack-switcher/index.d.ts +4 -5
  379. package/dist/theme-pack-switcher/index.js +52 -49
  380. package/dist/theme-packs/academia/meta.json +1 -1
  381. package/dist/theme-packs/academia/pack.css +1 -1
  382. package/dist/theme-packs/bauhaus/meta.json +1 -1
  383. package/dist/theme-packs/bauhaus/pack.css +2 -2
  384. package/dist/theme-packs/blueprint/meta.json +1 -1
  385. package/dist/theme-packs/blueprint/pack.css +2 -2
  386. package/dist/theme-packs/botanica/meta.json +1 -1
  387. package/dist/theme-packs/botanica/pack.css +2 -2
  388. package/dist/theme-packs/broadsheet/meta.json +1 -1
  389. package/dist/theme-packs/broadsheet/pack.css +2 -2
  390. package/dist/theme-packs/brutalist/meta.json +1 -1
  391. package/dist/theme-packs/brutalist/pack.css +2 -2
  392. package/dist/theme-packs/eink/meta.json +1 -1
  393. package/dist/theme-packs/eink/pack.css +1 -1
  394. package/dist/theme-packs/futura-editorial/meta.json +1 -1
  395. package/dist/theme-packs/futura-editorial/pack.css +2 -2
  396. package/dist/theme-packs/hearth/meta.json +1 -1
  397. package/dist/theme-packs/hearth/pack.css +2 -2
  398. package/dist/theme-packs/ledger/meta.json +1 -1
  399. package/dist/theme-packs/ledger/pack.css +1 -1
  400. package/dist/theme-packs/manuscript/meta.json +1 -1
  401. package/dist/theme-packs/manuscript/pack.css +1 -1
  402. package/dist/theme-packs/matcha/meta.json +1 -1
  403. package/dist/theme-packs/matcha/pack.css +2 -2
  404. package/dist/theme-packs/nocturne/meta.json +1 -1
  405. package/dist/theme-packs/nocturne/pack.css +2 -2
  406. package/dist/theme-packs/observatory/meta.json +1 -1
  407. package/dist/theme-packs/observatory/pack.css +2 -2
  408. package/dist/theme-packs/onyx/meta.json +1 -1
  409. package/dist/theme-packs/onyx/pack.css +2 -2
  410. package/dist/theme-packs/phosphor/meta.json +1 -1
  411. package/dist/theme-packs/phosphor/pack.css +2 -2
  412. package/dist/theme-packs/riso/meta.json +1 -1
  413. package/dist/theme-packs/riso/pack.css +2 -2
  414. package/dist/theme-packs/sakura/meta.json +1 -1
  415. package/dist/theme-packs/sakura/pack.css +2 -2
  416. package/dist/theme-packs/scandi/meta.json +1 -1
  417. package/dist/theme-packs/scandi/pack.css +1 -1
  418. package/dist/theme-packs/solar/meta.json +1 -1
  419. package/dist/theme-packs/solar/pack.css +1 -1
  420. package/dist/theme-packs/sumi/meta.json +1 -1
  421. package/dist/theme-packs/sumi/pack.css +2 -2
  422. package/dist/theme-packs/swissgrid/meta.json +1 -1
  423. package/dist/theme-packs/swissgrid/pack.css +1 -1
  424. package/dist/theme-packs/timberline/meta.json +1 -1
  425. package/dist/theme-packs/timberline/pack.css +2 -2
  426. package/dist/theme-packs/washi/meta.json +1 -1
  427. package/dist/theme-packs/washi/pack.css +2 -2
  428. package/dist/theme-toggle/index.d.ts +1 -1
  429. package/dist/theme-toggle/index.js +154 -167
  430. package/dist/theme.css +47 -121
  431. package/dist/toc/mobile-toc.d.ts +3 -5
  432. package/dist/toc/mobile-toc.js +29 -27
  433. package/dist/toc/toc.d.ts +3 -4
  434. package/dist/toc/toc.js +18 -18
  435. package/dist/toc/use-active-heading.d.ts +5 -4
  436. package/dist/toc/use-active-heading.js +36 -30
  437. package/dist/toc-prepaint/index.d.ts +1 -2
  438. package/dist/toc-prepaint/index.js +4 -6
  439. package/dist/transitions/nested-island-props-refresh.d.ts +3 -16
  440. package/dist/transitions/nested-island-props-refresh.js +133 -151
  441. package/dist/transitions/page-events.d.ts +8 -13
  442. package/dist/tree-nav-shared/index.d.ts +4 -5
  443. package/dist/tree-nav-shared/index.js +6 -7
  444. package/dist/use-modal-dialog/index.d.ts +9 -63
  445. package/dist/use-modal-dialog/index.js +41 -59
  446. package/dist/versions-page/index.d.ts +3 -3
  447. package/dist/versions-page/index.js +5 -5
  448. package/dist/wind/index.d.ts +5 -0
  449. package/dist/wind/index.js +169 -0
  450. package/dist/wind.json +498 -0
  451. package/dist/z-index-defaults/index.d.ts +4 -4
  452. package/dist/zdtp-loader.d.ts +7 -0
  453. package/dist/zdtp-loader.js +8 -0
  454. package/eject/asset-components/asset-card.tsx +14 -16
  455. package/eject/asset-components/asset-code.tsx +10 -12
  456. package/eject/asset-components/shared.tsx +5 -7
  457. package/eject/breadcrumb/breadcrumb.tsx +15 -16
  458. package/eject/code-group/index.tsx +4 -10
  459. package/eject/content-admonition/index.tsx +5 -6
  460. package/eject/desktop-sidebar-toggle-island/index.ts +4 -0
  461. package/eject/desktop-sidebar-toggle-island/island.tsx +50 -0
  462. package/eject/desktop-sidebar-toggle-island/storage.ts +27 -0
  463. package/eject/details/details.tsx +3 -5
  464. package/eject/doc-history/index.tsx +193 -179
  465. package/eject/doc-pager/index.tsx +3 -4
  466. package/eject/footer/footer.tsx +7 -9
  467. package/eject/header/header.tsx +42 -54
  468. package/eject/header/nav-overflow-script.ts +1 -1
  469. package/eject/header/types.ts +12 -13
  470. package/eject/image-enlarge/index.tsx +84 -69
  471. package/eject/image-enlarge/public.ts +2 -0
  472. package/eject/image-enlarge/ssr-fallback.tsx +7 -0
  473. package/eject/page-loading/page-loading-overlay.tsx +8 -15
  474. package/eject/sidebar/client-data.ts +68 -0
  475. package/eject/sidebar/index.ts +3 -0
  476. package/eject/sidebar/sidebar.tsx +16 -97
  477. package/eject/sidebar/types.ts +15 -0
  478. package/eject/sidebar-toggle-island/index.tsx +103 -102
  479. package/eject/sidebar-tree-island/index.tsx +827 -615
  480. package/eject/sidebar-tree-island/scope-state.ts +154 -0
  481. package/eject/sidebar-tree-island/sidebar-scroll-preserve.ts +8 -2
  482. package/eject/site-tree-nav-island/index.tsx +349 -222
  483. package/eject/tab-item/tab-item.tsx +2 -4
  484. package/eject/theme-toggle/hydration-pending.ts +6 -10
  485. package/eject/theme-toggle/index.tsx +133 -173
  486. package/eject/toc/mobile-toc.tsx +27 -31
  487. package/eject/toc/toc.tsx +21 -24
  488. package/eject/toc/use-active-heading.ts +43 -38
  489. package/package.json +40 -22
  490. package/routes-src/404.tsx +2 -3
  491. package/routes-src/_chrome.tsx +7 -2
  492. package/routes-src/_design-token-panel-bootstrap.tsx +1 -63
  493. package/routes-src/docs-slug.tsx +2 -3
  494. package/routes-src/docs-tags-index.tsx +2 -3
  495. package/routes-src/docs-tags-tag.tsx +2 -3
  496. package/routes-src/docs-versions.tsx +2 -3
  497. package/routes-src/files-path.tsx +2 -4
  498. package/routes-src/index.tsx +2 -3
  499. package/routes-src/locale-docs-slug.tsx +2 -3
  500. package/routes-src/locale-docs-tags-index.tsx +2 -3
  501. package/routes-src/locale-docs-tags-tag.tsx +2 -3
  502. package/routes-src/locale-docs-versions.tsx +2 -3
  503. package/routes-src/locale-files-path.tsx +2 -4
  504. package/routes-src/locale-index.tsx +2 -3
  505. package/routes-src/mcp.tsx +25 -0
  506. package/routes-src/v-docs-slug.tsx +2 -3
  507. package/routes-src/v-locale-docs-slug.tsx +2 -3
  508. package/tsconfig.base.json +1 -1
  509. package/dist/safelist.css +0 -2
  510. package/dist/theme-no-reset.css +0 -379
  511. package/eject/desktop-sidebar-toggle-island/index.tsx +0 -110
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
3
- import { useState, useEffect, useRef, useCallback } from "preact/compat";
2
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
+ import { batch, computed, getScope, Show, signal } from "@takazudo/zfb/zudo-react";
4
4
  import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
5
- import { useModalDialog } from "../use-modal-dialog/index.js";
5
+ import { modalDialog } from "../use-modal-dialog/index.js";
6
6
  import {
7
7
  MERMAID_ENLARGE_DIALOG_CLASS,
8
8
  ENLARGE_DIALOG_STYLE
@@ -16,16 +16,16 @@ const MIN_SCALE = 1;
16
16
  const MAX_SCALE = 4;
17
17
  const ARROW_PAN_STEP = 40;
18
18
  function PlusIcon() {
19
- return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", "aria-hidden": "true", focusable: "false", children: [
19
+ return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "aria-hidden": "true", children: [
20
20
  /* @__PURE__ */ jsx("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
21
21
  /* @__PURE__ */ jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
22
22
  ] });
23
23
  }
24
24
  function MinusIcon() {
25
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }) });
25
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" }) });
26
26
  }
27
27
  function PanIcon() {
28
- return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinejoin: "round", strokeLinecap: "round", "aria-hidden": "true", focusable: "false", children: [
28
+ return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.6", "stroke-linejoin": "round", "stroke-linecap": "round", "aria-hidden": "true", children: [
29
29
  /* @__PURE__ */ jsx("path", { d: "M9 11V5.5a1.5 1.5 0 0 1 3 0V11" }),
30
30
  /* @__PURE__ */ jsx("path", { d: "M12 11V4.5a1.5 1.5 0 0 1 3 0V11" }),
31
31
  /* @__PURE__ */ jsx("path", { d: "M15 11V6a1.5 1.5 0 0 1 3 0v6.5a6.5 6.5 0 0 1-6.5 6.5h-1a6 6 0 0 1-4.6-2.16l-2.2-2.86a1.5 1.5 0 0 1 2.3-1.92L9 13" }),
@@ -33,16 +33,33 @@ function PanIcon() {
33
33
  ] });
34
34
  }
35
35
  function MermaidEnlarge() {
36
- const [open, setOpen] = useState(null);
37
- const [scale, setScale] = useState(1);
38
- const [translate, setTranslate] = useState({ x: 0, y: 0 });
39
- const [panActive, setPanActive] = useState(false);
40
- const innerRef = useRef(null);
41
- const dragState = useRef({ dragging: false, startX: 0, startY: 0, originX: 0, originY: 0 });
42
- useEffect(() => {
36
+ const scope = getScope();
37
+ const open = signal(null);
38
+ const scale = signal(MIN_SCALE);
39
+ const translate = signal({ x: 0, y: 0 });
40
+ const panActive = signal(false);
41
+ const innerRef = { current: null };
42
+ const dragState = {
43
+ dragging: false,
44
+ startX: 0,
45
+ startY: 0,
46
+ originX: 0,
47
+ originY: 0
48
+ };
49
+ const isOpen = computed(() => open.value !== null);
50
+ const zoomed = computed(() => scale.value > MIN_SCALE);
51
+ const atMax = computed(() => scale.value >= MAX_SCALE);
52
+ const transformStyle = computed(() => ({
53
+ transform: `translate(${translate.value.x}px, ${translate.value.y}px) scale(${scale.value})`,
54
+ "transform-origin": "center"
55
+ }));
56
+ const svgHtml = computed(() => open.value?.svgHtml ?? "");
57
+ const panActiveAttr = computed(() => panActive.value && zoomed.value ? "" : void 0);
58
+ scope.onActivate(() => {
59
+ let active = true;
43
60
  let mutationObserver = null;
44
61
  function injectButton(container) {
45
- if (container.querySelector(INJECTED_BTN_SELECTOR) !== null) return;
62
+ if (!active || container.querySelector(INJECTED_BTN_SELECTOR) !== null) return;
46
63
  const rendered = container.hasAttribute("data-mermaid-rendered") || container.querySelector(DIAGRAM_SVG_SELECTOR) !== null;
47
64
  if (!rendered) return;
48
65
  container.setAttribute(BTN_INJECTED_ATTR, "");
@@ -51,19 +68,19 @@ function MermaidEnlarge() {
51
68
  btn.type = "button";
52
69
  btn.className = "zd-enlarge-btn";
53
70
  btn.setAttribute("aria-label", "Enlarge diagram");
54
- btn.innerHTML = '<svg viewBox="0 0 38.99 38.99" fill="currentColor" focusable="false" aria-hidden="true"><polygon points="16.2 13.74 5.92 3.47 11.2 3.47 11.2 0 3.47 0 0 0 0 3.47 0 11.2 3.47 11.2 3.47 5.92 13.74 16.2 16.2 13.74" /><polygon points="25.24 16.2 35.52 5.92 35.52 11.2 38.99 11.2 38.99 3.47 38.99 0 35.52 0 27.79 0 27.79 3.47 33.07 3.47 22.79 13.74 25.24 16.2" /><polygon points="22.79 25.24 33.07 35.52 27.79 35.52 27.79 38.99 35.52 38.99 38.99 38.99 38.99 35.52 38.99 27.79 35.52 27.79 35.52 33.07 25.24 22.79 22.79 25.24" /><polygon points="13.74 22.79 3.47 33.07 3.47 27.79 0 27.79 0 35.52 0 38.99 3.47 38.99 11.2 38.99 11.2 35.52 5.92 35.52 16.2 25.24 13.74 22.79" /></svg>';
71
+ btn.innerHTML = '<svg viewBox="0 0 38.99 38.99" fill="currentColor" aria-hidden="true"><polygon points="16.2 13.74 5.92 3.47 11.2 3.47 11.2 0 3.47 0 0 0 0 3.47 0 11.2 3.47 11.2 3.47 5.92 13.74 16.2 16.2 13.74" /><polygon points="25.24 16.2 35.52 5.92 35.52 11.2 38.99 11.2 38.99 3.47 38.99 0 35.52 0 27.79 0 27.79 3.47 33.07 3.47 22.79 13.74 25.24 16.2" /><polygon points="22.79 25.24 33.07 35.52 27.79 35.52 27.79 38.99 35.52 38.99 38.99 38.99 38.99 35.52 38.99 27.79 35.52 27.79 35.52 33.07 25.24 22.79 22.79 25.24" /><polygon points="13.74 22.79 3.47 33.07 3.47 27.79 0 27.79 0 35.52 0 38.99 3.47 38.99 11.2 38.99 11.2 35.52 5.92 35.52 16.2 25.24 13.74 22.79" /></svg>';
55
72
  container.appendChild(btn);
56
73
  }
57
74
  function scan() {
58
- const scope = document.querySelector(CONTENT_SCOPE_SELECTOR);
59
- if (!scope) return;
60
- scope.querySelectorAll(".mermaid").forEach((el) => injectButton(el));
75
+ if (!active) return;
76
+ const content = document.querySelector(CONTENT_SCOPE_SELECTOR);
77
+ content?.querySelectorAll(".mermaid").forEach(injectButton);
61
78
  }
62
79
  function startObserving() {
63
- const scope = document.querySelector(CONTENT_SCOPE_SELECTOR);
64
- if (scope) {
80
+ const content = document.querySelector(CONTENT_SCOPE_SELECTOR);
81
+ if (content) {
65
82
  mutationObserver = new MutationObserver(() => scan());
66
- mutationObserver.observe(scope, {
83
+ mutationObserver.observe(content, {
67
84
  childList: true,
68
85
  subtree: true,
69
86
  attributes: true,
@@ -80,165 +97,168 @@ function MermaidEnlarge() {
80
97
  startObserving();
81
98
  document.addEventListener(AFTER_NAVIGATE_EVENT, handleAfterNavigate);
82
99
  return () => {
100
+ active = false;
83
101
  mutationObserver?.disconnect();
84
102
  document.removeEventListener(AFTER_NAVIGATE_EVENT, handleAfterNavigate);
85
103
  };
86
- }, []);
87
- useEffect(() => {
88
- function handleDocumentClick(e) {
89
- const target = e.target;
104
+ });
105
+ scope.onActivate(() => {
106
+ let active = true;
107
+ function handleDocumentClick(event) {
108
+ if (!active || !(event.target instanceof Element)) return;
109
+ const target = event.target;
90
110
  const container = target.closest(".zd-mermaid-enlargeable");
91
- if (!container) return;
92
- if (!target.closest(".zd-enlarge-btn")) return;
111
+ if (!container || !target.closest(".zd-enlarge-btn")) return;
93
112
  const svg = container.querySelector(DIAGRAM_SVG_SELECTOR);
94
113
  if (!svg) return;
95
- setScale(1);
96
- setTranslate({ x: 0, y: 0 });
97
- setPanActive(false);
98
- setOpen({ container, svgHtml: svg.outerHTML });
114
+ batch(() => {
115
+ scale.value = MIN_SCALE;
116
+ translate.value = { x: 0, y: 0 };
117
+ panActive.value = false;
118
+ open.value = { container, svgHtml: svg.outerHTML };
119
+ });
99
120
  }
100
121
  document.addEventListener("click", handleDocumentClick);
101
- return () => document.removeEventListener("click", handleDocumentClick);
102
- }, []);
103
- useEffect(() => {
104
- if (!open) return;
105
- const { container } = open;
122
+ return () => {
123
+ active = false;
124
+ document.removeEventListener("click", handleDocumentClick);
125
+ };
126
+ });
127
+ scope.effect(() => {
128
+ const current = open.value;
129
+ if (!current) return;
130
+ let active = true;
106
131
  const observer = new MutationObserver(() => {
107
- const svg = container.querySelector(DIAGRAM_SVG_SELECTOR);
108
- if (svg && svg.outerHTML !== open.svgHtml) {
109
- setOpen({ container, svgHtml: svg.outerHTML });
132
+ const latest = open.value;
133
+ if (!active || scope.abortSignal.aborted || !latest || latest.container !== current.container) return;
134
+ const svg = current.container.querySelector(DIAGRAM_SVG_SELECTOR);
135
+ if (svg && svg.outerHTML !== latest.svgHtml) {
136
+ open.value = { container: current.container, svgHtml: svg.outerHTML };
110
137
  }
111
138
  });
112
- observer.observe(container, { childList: true, subtree: true });
113
- return () => observer.disconnect();
114
- }, [open]);
115
- const handleClose = useCallback(() => setOpen(null), []);
116
- const { dialogRef, handleBackdropClick } = useModalDialog({
117
- isOpen: open !== null,
118
- onClose: handleClose,
119
- navigateEvent: AFTER_NAVIGATE_EVENT,
120
- backdropClickClose: true
139
+ observer.observe(current.container, { childList: true, subtree: true });
140
+ return () => {
141
+ active = false;
142
+ observer.disconnect();
143
+ };
121
144
  });
122
- const zoomIn = useCallback(() => {
123
- setScale((s) => Math.min(MAX_SCALE, s * ZOOM_STEP));
124
- }, []);
125
- const zoomOut = useCallback(() => {
126
- setScale((s) => {
127
- const next = Math.max(MIN_SCALE, s / ZOOM_STEP);
145
+ function handleClose() {
146
+ open.value = null;
147
+ }
148
+ function zoomIn() {
149
+ scale.value = Math.min(MAX_SCALE, scale.value * ZOOM_STEP);
150
+ }
151
+ function zoomOut() {
152
+ const next = Math.max(MIN_SCALE, scale.value / ZOOM_STEP);
153
+ batch(() => {
154
+ scale.value = next;
128
155
  if (next <= MIN_SCALE) {
129
- setTranslate({ x: 0, y: 0 });
130
- setPanActive(false);
156
+ translate.value = { x: 0, y: 0 };
157
+ panActive.value = false;
131
158
  }
132
- return next;
133
159
  });
134
- }, []);
135
- const togglePan = useCallback(() => {
136
- setPanActive((p) => !p);
137
- }, []);
138
- const clampTranslate = useCallback(
139
- (x, y, s) => {
140
- const inner = innerRef.current;
141
- if (!inner) return { x, y };
142
- const rect = inner.getBoundingClientRect();
143
- const baseW = rect.width / s;
144
- const baseH = rect.height / s;
145
- const maxX = Math.max(0, (baseW * s - baseW) / 2);
146
- const maxY = Math.max(0, (baseH * s - baseH) / 2);
147
- return {
148
- x: Math.max(-maxX, Math.min(maxX, x)),
149
- y: Math.max(-maxY, Math.min(maxY, y))
150
- };
151
- },
152
- []
153
- );
154
- const onPointerDown = useCallback(
155
- (e) => {
156
- if (!panActive || scale <= MIN_SCALE) return;
157
- const d = dragState.current;
158
- d.dragging = true;
159
- d.startX = e.clientX;
160
- d.startY = e.clientY;
161
- d.originX = translate.x;
162
- d.originY = translate.y;
163
- e.currentTarget.setPointerCapture?.(e.pointerId);
164
- },
165
- [panActive, scale, translate]
166
- );
167
- const onPointerMove = useCallback(
168
- (e) => {
169
- const d = dragState.current;
170
- if (!d.dragging) return;
171
- const nextX = d.originX + (e.clientX - d.startX);
172
- const nextY = d.originY + (e.clientY - d.startY);
173
- setTranslate(clampTranslate(nextX, nextY, scale));
174
- },
175
- [scale, clampTranslate]
176
- );
177
- const onPointerUp = useCallback((e) => {
178
- const d = dragState.current;
179
- if (!d.dragging) return;
180
- d.dragging = false;
181
- e.currentTarget.releasePointerCapture?.(e.pointerId);
182
- }, []);
183
- const onViewportKeyDown = useCallback(
184
- (e) => {
185
- if (scale <= MIN_SCALE) return;
186
- let dx = 0;
187
- let dy = 0;
188
- if (e.key === "ArrowLeft") dx = ARROW_PAN_STEP;
189
- else if (e.key === "ArrowRight") dx = -ARROW_PAN_STEP;
190
- else if (e.key === "ArrowUp") dy = ARROW_PAN_STEP;
191
- else if (e.key === "ArrowDown") dy = -ARROW_PAN_STEP;
192
- else return;
193
- e.preventDefault();
194
- setTranslate((t) => clampTranslate(t.x + dx, t.y + dy, scale));
195
- },
196
- [scale, clampTranslate]
197
- );
198
- const zoomed = scale > MIN_SCALE;
199
- const atMax = scale >= MAX_SCALE;
160
+ }
161
+ function togglePan() {
162
+ panActive.value = !panActive.value;
163
+ }
164
+ function clampTranslate(x, y, currentScale) {
165
+ const inner = innerRef.current;
166
+ if (!inner) return { x, y };
167
+ const rect = inner.getBoundingClientRect();
168
+ const baseW = rect.width / currentScale;
169
+ const baseH = rect.height / currentScale;
170
+ const maxX = Math.max(0, (baseW * currentScale - baseW) / 2);
171
+ const maxY = Math.max(0, (baseH * currentScale - baseH) / 2);
172
+ return {
173
+ x: Math.max(-maxX, Math.min(maxX, x)),
174
+ y: Math.max(-maxY, Math.min(maxY, y))
175
+ };
176
+ }
177
+ function onPointerDown(event) {
178
+ const pointer = event;
179
+ if (!panActive.value || scale.value <= MIN_SCALE) return;
180
+ dragState.dragging = true;
181
+ dragState.startX = pointer.clientX;
182
+ dragState.startY = pointer.clientY;
183
+ dragState.originX = translate.value.x;
184
+ dragState.originY = translate.value.y;
185
+ pointer.currentTarget.setPointerCapture?.(pointer.pointerId);
186
+ }
187
+ function onPointerMove(event) {
188
+ const pointer = event;
189
+ if (!dragState.dragging) return;
190
+ const nextX = dragState.originX + (pointer.clientX - dragState.startX);
191
+ const nextY = dragState.originY + (pointer.clientY - dragState.startY);
192
+ translate.value = clampTranslate(nextX, nextY, scale.value);
193
+ }
194
+ function onPointerUp(event) {
195
+ const pointer = event;
196
+ if (!dragState.dragging) return;
197
+ dragState.dragging = false;
198
+ pointer.currentTarget.releasePointerCapture?.(pointer.pointerId);
199
+ }
200
+ function onViewportKeyDown(event) {
201
+ const keyboard = event;
202
+ if (scale.value <= MIN_SCALE) return;
203
+ let dx = 0;
204
+ let dy = 0;
205
+ if (keyboard.key === "ArrowLeft") dx = ARROW_PAN_STEP;
206
+ else if (keyboard.key === "ArrowRight") dx = -ARROW_PAN_STEP;
207
+ else if (keyboard.key === "ArrowUp") dy = ARROW_PAN_STEP;
208
+ else if (keyboard.key === "ArrowDown") dy = -ARROW_PAN_STEP;
209
+ else return;
210
+ keyboard.preventDefault();
211
+ translate.value = clampTranslate(
212
+ translate.value.x + dx,
213
+ translate.value.y + dy,
214
+ scale.value
215
+ );
216
+ }
217
+ const { dialogRef, handleBackdropClick } = modalDialog(scope, {
218
+ isOpen,
219
+ onClose: handleClose,
220
+ navigateEvent: AFTER_NAVIGATE_EVENT,
221
+ backdropClickClose: true
222
+ });
200
223
  return /* @__PURE__ */ jsx(
201
224
  "dialog",
202
225
  {
203
226
  ref: dialogRef,
204
- onClick: handleBackdropClick,
227
+ "on:click": handleBackdropClick,
205
228
  "aria-label": "Enlarged diagram",
206
- className: MERMAID_ENLARGE_DIALOG_CLASS,
229
+ class: MERMAID_ENLARGE_DIALOG_CLASS,
207
230
  style: ENLARGE_DIALOG_STYLE,
208
- children: open && /* @__PURE__ */ jsxs(Fragment, { children: [
231
+ children: /* @__PURE__ */ jsx(Show, { when: isOpen, children: () => /* @__PURE__ */ jsxs(Fragment, { children: [
209
232
  /* @__PURE__ */ jsx(
210
233
  "div",
211
234
  {
212
- className: "zd-mermaid-viewport",
213
- tabIndex: 0,
214
- onPointerDown,
215
- onPointerMove,
216
- onPointerUp,
217
- onPointerCancel: onPointerUp,
218
- onKeyDown: onViewportKeyDown,
219
- "data-pan-active": panActive && zoomed ? "" : void 0,
235
+ class: "zd-mermaid-viewport",
236
+ tabindex: 0,
237
+ "on:pointerdown": onPointerDown,
238
+ "on:pointermove": onPointerMove,
239
+ "on:pointerup": onPointerUp,
240
+ "on:pointercancel": onPointerUp,
241
+ "on:keydown": onViewportKeyDown,
242
+ "data-pan-active": panActiveAttr,
220
243
  children: /* @__PURE__ */ jsx(
221
244
  "div",
222
245
  {
223
246
  ref: innerRef,
224
- className: "zd-mermaid-transform",
225
- style: {
226
- transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})`,
227
- transformOrigin: "center"
228
- },
229
- dangerouslySetInnerHTML: { __html: open.svgHtml }
247
+ class: "zd-mermaid-transform",
248
+ style: transformStyle,
249
+ rawHtml: svgHtml
230
250
  }
231
251
  )
232
252
  }
233
253
  ),
234
- /* @__PURE__ */ jsxs("div", { className: "zd-mermaid-toolbar", role: "toolbar", "aria-label": "Diagram zoom controls", children: [
254
+ /* @__PURE__ */ jsxs("div", { class: "zd-mermaid-toolbar", role: "toolbar", "aria-label": "Diagram zoom controls", children: [
235
255
  /* @__PURE__ */ jsx(
236
256
  "button",
237
257
  {
238
258
  type: "button",
239
- className: "zd-mermaid-tool-btn",
259
+ class: "zd-mermaid-tool-btn",
240
260
  "aria-label": "Zoom in",
241
- onClick: zoomIn,
261
+ "on:click": zoomIn,
242
262
  disabled: atMax,
243
263
  children: /* @__PURE__ */ jsx(PlusIcon, {})
244
264
  }
@@ -247,10 +267,10 @@ function MermaidEnlarge() {
247
267
  "button",
248
268
  {
249
269
  type: "button",
250
- className: "zd-mermaid-tool-btn",
270
+ class: "zd-mermaid-tool-btn",
251
271
  "aria-label": "Zoom out",
252
- onClick: zoomOut,
253
- disabled: !zoomed,
272
+ "on:click": zoomOut,
273
+ disabled: computed(() => !zoomed.value),
254
274
  children: /* @__PURE__ */ jsx(MinusIcon, {})
255
275
  }
256
276
  ),
@@ -258,11 +278,11 @@ function MermaidEnlarge() {
258
278
  "button",
259
279
  {
260
280
  type: "button",
261
- className: "zd-mermaid-tool-btn",
281
+ class: "zd-mermaid-tool-btn",
262
282
  "aria-label": "Toggle pan mode",
263
283
  "aria-pressed": panActive,
264
- onClick: togglePan,
265
- disabled: !zoomed,
284
+ "on:click": togglePan,
285
+ disabled: computed(() => !zoomed.value),
266
286
  children: /* @__PURE__ */ jsx(PanIcon, {})
267
287
  }
268
288
  )
@@ -271,21 +291,17 @@ function MermaidEnlarge() {
271
291
  "button",
272
292
  {
273
293
  type: "button",
274
- onClick: () => dialogRef.current?.close(),
275
- className: "zd-enlarge-dialog-close",
294
+ "on:click": () => dialogRef.current?.close(),
295
+ class: "zd-enlarge-dialog-close",
276
296
  "aria-label": "Close enlarged diagram",
277
- children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 161.03 161.03", fill: "currentColor", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx("polygon", { points: "161.03 10.27 150.76 0 80.51 70.24 10.27 0 0 10.27 70.24 80.51 0 150.76 10.27 161.03 80.51 90.78 150.76 161.03 161.03 150.76 90.78 80.51 161.03 10.27" }) })
297
+ children: /* @__PURE__ */ jsx("svg", { viewBox: "0 0 161.03 161.03", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("polygon", { points: "161.03 10.27 150.76 0 80.51 70.24 10.27 0 0 10.27 70.24 80.51 0 150.76 10.27 161.03 80.51 90.78 150.76 161.03 161.03 150.76 90.78 80.51 161.03 10.27" }) })
278
298
  }
279
299
  )
280
- ] })
300
+ ] }) })
281
301
  }
282
302
  );
283
303
  }
284
304
  MermaidEnlarge.displayName = "MermaidEnlarge";
285
- function MermaidEnlargeSsrFallback() {
286
- return /* @__PURE__ */ jsx("dialog", { "aria-label": "Enlarged diagram", className: MERMAID_ENLARGE_DIALOG_CLASS, style: ENLARGE_DIALOG_STYLE });
287
- }
288
305
  export {
289
- MermaidEnlarge,
290
- MermaidEnlargeSsrFallback
306
+ MermaidEnlarge
291
307
  };
@@ -0,0 +1,2 @@
1
+ export { MermaidEnlarge } from "./index.js";
2
+ export { MermaidEnlargeSsrFallback } from "./ssr-fallback.js";
@@ -0,0 +1,6 @@
1
+ import { MermaidEnlarge } from "./index.js";
2
+ import { MermaidEnlargeSsrFallback } from "./ssr-fallback.js";
3
+ export {
4
+ MermaidEnlarge,
5
+ MermaidEnlargeSsrFallback
6
+ };
@@ -0,0 +1,2 @@
1
+ /** Closed dialog shell rendered before island activation. */
2
+ export declare function MermaidEnlargeSsrFallback(): import("@takazudo/zfb").Description;
@@ -0,0 +1,8 @@
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
+ import { MERMAID_ENLARGE_DIALOG_CLASS, ENLARGE_DIALOG_STYLE } from "../island-types/index.js";
3
+ function MermaidEnlargeSsrFallback() {
4
+ return /* @__PURE__ */ jsx("dialog", { "aria-label": "Enlarged diagram", class: MERMAID_ENLARGE_DIALOG_CLASS, style: ENLARGE_DIALOG_STYLE });
5
+ }
6
+ export {
7
+ MermaidEnlargeSsrFallback
8
+ };
@@ -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
  export interface DocMetainfoProps {
5
4
  /**
6
5
  * Pre-formatted creation date string (e.g. `"Jan 1, 2024"`).
@@ -43,4 +42,4 @@ export declare const DEFAULT_UPDATED_LABEL = "Updated";
43
42
  * Returns `null` when no displayable field is provided, mirroring the
44
43
  * original `hasInfo && (...)` guard.
45
44
  */
46
- export declare function DocMetainfo(props: DocMetainfoProps): VNode | null;
45
+ export declare function DocMetainfo(props: DocMetainfoProps): Child;
@@ -1,11 +1,10 @@
1
- import { jsx, jsxs } from "preact/jsx-runtime";
1
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  const DEFAULT_CREATED_LABEL = "Created";
3
3
  const DEFAULT_UPDATED_LABEL = "Updated";
4
4
  function ClockIcon() {
5
5
  return /* @__PURE__ */ jsx(
6
6
  "svg",
7
7
  {
8
- xmlns: "http://www.w3.org/2000/svg",
9
8
  class: "h-icon-xs w-icon-xs",
10
9
  fill: "none",
11
10
  viewBox: "0 0 24 24",
@@ -27,7 +26,6 @@ function RefreshIcon() {
27
26
  return /* @__PURE__ */ jsx(
28
27
  "svg",
29
28
  {
30
- xmlns: "http://www.w3.org/2000/svg",
31
29
  class: "h-icon-xs w-icon-xs",
32
30
  fill: "none",
33
31
  viewBox: "0 0 24 24",
@@ -49,7 +47,6 @@ function UserIcon() {
49
47
  return /* @__PURE__ */ jsx(
50
48
  "svg",
51
49
  {
52
- xmlns: "http://www.w3.org/2000/svg",
53
50
  class: "h-icon-xs w-icon-xs",
54
51
  fill: "none",
55
52
  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
  * A single resolved tag with its navigation href. The legacy
6
5
  * `doc-tags` called `resolvePageTags(tags)` and used `TagNav`
@@ -59,4 +58,4 @@ export declare const DEFAULT_TAGGED_WITH_LABEL = "Tagged with";
59
58
  * The pointed-chip shape is reproduced verbatim from the page-variant
60
59
  * branch of `tag-nav` using the same `clip-path` values.
61
60
  */
62
- export declare function DocTags(props: DocTagsProps): VNode | null;
61
+ export declare function DocTags(props: DocTagsProps): 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_TAGS_LABEL = "Tags";
3
3
  const DEFAULT_TAGGED_WITH_LABEL = "Tagged with";
4
4
  function DocTags(props) {
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { ComponentChildren, VNode } from "preact";
2
+ import type { Child, Component } from "@takazudo/zfb/zudo-react";
4
3
  /**
5
4
  * Props passed to a per-key custom renderer component.
6
5
  *
@@ -24,7 +23,7 @@ export interface FrontmatterCellRendererProps {
24
23
  * Return `null` or `undefined` to fall through to the built-in
25
24
  * `renderValue()` plain-text path.
26
25
  */
27
- export type FrontmatterCellRenderer = (props: FrontmatterCellRendererProps) => ComponentChildren;
26
+ export type FrontmatterCellRenderer = Component<FrontmatterCellRendererProps>;
28
27
  export interface FrontmatterPreviewProps {
29
28
  /**
30
29
  * Pre-filtered `[key, value]` pairs to display. The legacy component
@@ -88,4 +87,4 @@ export declare const DEFAULT_VALUE_COL_LABEL = "Value";
88
87
  * the matching renderer. A renderer that returns `null` or `undefined` falls
89
88
  * through to the built-in `renderValue()` plain-text path.
90
89
  */
91
- export declare function FrontmatterPreview(props: FrontmatterPreviewProps): VNode | null;
90
+ export declare function FrontmatterPreview(props: FrontmatterPreviewProps): 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_FRONTMATTER_PREVIEW_TITLE = "Frontmatter";
3
3
  const DEFAULT_KEY_COL_LABEL = "Key";
4
4
  const DEFAULT_VALUE_COL_LABEL = "Value";
@@ -12,10 +12,12 @@ function buildRootMenuItems(lang, currentVersion, headerNav, t, navHref) {
12
12
  return headerNav.map((item) => ({
13
13
  label: item.labelKey ? t(item.labelKey, lang) : item.label,
14
14
  href: navHref(item.path, lang, currentVersion, item.versioned),
15
- children: item.children?.map((child) => ({
16
- label: child.labelKey ? t(child.labelKey, lang) : child.label,
17
- href: navHref(child.path, lang, currentVersion, child.versioned)
18
- }))
15
+ ...item.children !== void 0 ? {
16
+ children: item.children.map((child) => ({
17
+ label: child.labelKey ? t(child.labelKey, lang) : child.label,
18
+ href: navHref(child.path, lang, currentVersion, child.versioned)
19
+ }))
20
+ } : {}
19
21
  }));
20
22
  }
21
23
  function buildLocaleLinksForNav(currentPath, lang, localeCount, buildLocaleLinks) {
@@ -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 CategoryNavProps {
6
5
  /**
@@ -13,7 +12,7 @@ export interface CategoryNavProps {
13
12
  class?: string;
14
13
  }
15
14
  /**
16
- * CategoryNav — JSX port of `src/components/category-nav`.
15
+ * CategoryNav — server renderer for the category card list.
17
16
  *
18
17
  * Renders direct children of a category as a two-column grid of card links.
19
18
  * Each card shows the node's label (with an arrow icon) 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 CategoryTreeNavProps {
6
5
  /**
@@ -12,7 +11,7 @@ export interface CategoryTreeNavProps {
12
11
  maxDepth?: number;
13
12
  }
14
13
  /**
15
- * CategoryTreeNav — JSX port of `src/components/category-tree-nav`.
14
+ * CategoryTreeNav — server renderer for the category tree list.
16
15
  *
17
16
  * Renders the children of a category as a recursive disc-bulleted list. Links
18
17
  * are rendered for nodes that have a page; plain text for structural nodes.