@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,6 +1,6 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { ComponentChildren, JSX } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
3
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
4
  import type { TagItem } from "../nav-indexing/types.js";
5
5
  import type { DocNavNode } from "../doc-page-props/index.js";
6
6
  import type { ChromeContext } from "../factory-context/index.js";
@@ -25,7 +25,7 @@ export interface HomePageViewProps {
25
25
  * from it (a renderer). Resolved as `extras ?? hostBindings.homeExtras?.({
26
26
  * locale })`.
27
27
  */
28
- extras?: ComponentChildren;
28
+ extras?: Child;
29
29
  /**
30
30
  * Overrides the default first hero link, which is otherwise
31
31
  * `settings.headerNav[0]` + `t("nav.overview", locale)`. `path` is
@@ -1,5 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
2
- import { Fragment as Fragment2 } from "preact";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
2
  import { Island } from "@takazudo/zfb";
4
3
  import { AutoLogo } from "../auto-logo/index.js";
5
4
  import { DocLayoutWithDefaults } from "../doclayout/index.js";
@@ -23,7 +22,7 @@ function HomeMetaLink({ href, children }) {
23
22
  href,
24
23
  class: "group inline-flex items-center gap-hsp-xs text-small text-fg hover:text-accent hover:underline focus-visible:text-accent focus-visible:underline",
25
24
  children: [
26
- /* @__PURE__ */ jsx(CategoryLinkIcon, { className: "w-icon-sm text-muted group-hover:text-accent group-focus-visible:text-accent" }),
25
+ /* @__PURE__ */ jsx(CategoryLinkIcon, { class: "w-icon-sm text-muted group-hover:text-accent group-focus-visible:text-accent" }),
27
26
  /* @__PURE__ */ jsx("span", { children })
28
27
  ]
29
28
  }
@@ -52,6 +51,10 @@ function selectSecondaryNodes(tree, secondary, categoryIgnore) {
52
51
  function cssUrl(url) {
53
52
  return `url("${url.replace(/[\\"]/g, "\\$&")}")`;
54
53
  }
54
+ function logoMaskStyle(url) {
55
+ const mask = `${cssUrl(url)} center/contain no-repeat`;
56
+ return { "-webkit-mask": mask, mask };
57
+ }
55
58
  function createHomePageView(ctx) {
56
59
  assertChromeContext(ctx, "createHomePageView");
57
60
  const settings = ctx.settings;
@@ -131,6 +134,11 @@ function createHomePageView(ctx) {
131
134
  if (hasExtras) {
132
135
  rowItems.push(resolvedExtras);
133
136
  }
137
+ const rowContent = [];
138
+ rowItems.forEach((item, index) => {
139
+ if (index > 0) rowContent.push(/* @__PURE__ */ jsx("span", { class: "text-muted", children: "/" }));
140
+ rowContent.push(item);
141
+ });
134
142
  return /* @__PURE__ */ jsxs(
135
143
  DocLayoutWithDefaults,
136
144
  {
@@ -149,7 +157,7 @@ function createHomePageView(ctx) {
149
157
  bodyEndComponents: /* @__PURE__ */ jsx(BodyEndIslands, { basePath: settings.base ?? "/" }),
150
158
  enableClientRouter: settings.dynamicPageTransition,
151
159
  children: [
152
- /* @__PURE__ */ jsx("div", { class: "zd-home-hero mb-vsp-xl", children: /* @__PURE__ */ jsxs("div", { class: "zd-home-inner flex flex-col items-center justify-center text-center gap-hsp-md lg:flex-row lg:text-left lg:gap-hsp-xl", children: [
160
+ /* @__PURE__ */ jsx("div", { "data-zd-home-hero": true, class: "mb-vsp-xl", children: /* @__PURE__ */ jsxs("div", { class: "zd-home-inner flex flex-col items-center justify-center text-center gap-hsp-md lg:flex-row lg:text-left lg:gap-hsp-xl", children: [
153
161
  logoSetting === "auto" ? /* @__PURE__ */ jsx(
154
162
  AutoLogo,
155
163
  {
@@ -160,28 +168,22 @@ function createHomePageView(ctx) {
160
168
  "div",
161
169
  {
162
170
  class: "w-[320px] max-w-full aspect-[1200/630] bg-fg shrink-0",
163
- style: {
164
- WebkitMask: `${cssUrl(withBase(logoSetting))} center/contain no-repeat`,
165
- mask: `${cssUrl(withBase(logoSetting))} center/contain no-repeat`
166
- },
171
+ style: logoMaskStyle(withBase(logoSetting)),
167
172
  "aria-hidden": "true"
168
173
  }
169
174
  ) : null,
170
175
  /* @__PURE__ */ jsxs("div", { class: "zd-home-copy min-w-0 lg:flex-1", children: [
171
- /* @__PURE__ */ jsx("h1", { class: "text-heading font-bold mb-vsp-2xs wrap-anywhere", children: settings.siteName }),
176
+ /* @__PURE__ */ jsx("h1", { class: "text-heading font-bold mb-vsp-2xs zd-wrap-anywhere", children: settings.siteName }),
172
177
  /* @__PURE__ */ jsx("p", { class: "text-muted text-small mb-vsp-sm", children: rawDescription }),
173
- /* @__PURE__ */ jsx("div", { class: "zd-home-links flex flex-wrap items-center justify-center lg:justify-start gap-hsp-md text-small", children: rowItems.map((item, index) => /* @__PURE__ */ jsxs(Fragment2, { children: [
174
- index > 0 && /* @__PURE__ */ jsx("span", { class: "text-muted", children: "/" }),
175
- item
176
- ] }, index)) })
178
+ /* @__PURE__ */ jsx("div", { class: "zd-home-links flex flex-wrap items-center justify-center lg:justify-start gap-hsp-md text-small", children: rowContent })
177
179
  ] })
178
180
  ] }) }),
179
181
  hasIntro && /* @__PURE__ */ jsxs(Fragment, { children: [
180
182
  /* @__PURE__ */ jsx("hr", { class: "zd-home-rule", "data-home-rule": "upper" }),
181
- /* @__PURE__ */ jsx("div", { class: "zd-home-intro", children: /* @__PURE__ */ jsx("div", { class: "zd-home-inner", children: /* @__PURE__ */ jsx(CompactProse, { intro }) }) })
183
+ /* @__PURE__ */ jsx("div", { "data-zd-home-intro": true, children: /* @__PURE__ */ jsx("div", { class: "zd-home-inner", children: /* @__PURE__ */ jsx(CompactProse, { intro }) }) })
182
184
  ] }),
183
185
  /* @__PURE__ */ jsx("hr", { class: "zd-home-rule", "data-home-rule": "lower" }),
184
- /* @__PURE__ */ jsxs("section", { class: "zd-home-sitemap", children: [
186
+ /* @__PURE__ */ jsxs("section", { "data-zd-home-sitemap": true, children: [
185
187
  /* @__PURE__ */ jsx(HomeSectionHeading, { children: sitemapHeading }),
186
188
  Island({
187
189
  when: "idle",
@@ -191,7 +193,7 @@ function createHomePageView(ctx) {
191
193
  tree,
192
194
  categoryOrder,
193
195
  categoryIgnore: [...categoryIgnore, ...movedNodes.map((n) => n.slug)],
194
- initiallyCollapsedCategorySlugs,
196
+ ...initiallyCollapsedCategorySlugs !== void 0 ? { initiallyCollapsedCategorySlugs } : {},
195
197
  locale,
196
198
  updatedLabel: t("doc.updated", locale),
197
199
  dateFormats: dateFormatsFor(locale)
@@ -210,7 +212,7 @@ function createHomePageView(ctx) {
210
212
  ] }),
211
213
  settings.docTags && tagCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
212
214
  /* @__PURE__ */ jsx("hr", { class: "zd-home-rule", "data-home-rule": "tags" }),
213
- /* @__PURE__ */ jsx("section", { class: "zd-home-tags", children: tags && tags.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
215
+ /* @__PURE__ */ jsx("section", { "data-zd-home-tags": true, children: tags && tags.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
214
216
  /* @__PURE__ */ jsx(HomeSectionHeading, { children: t("doc.tags", locale) }),
215
217
  /* @__PURE__ */ jsx(
216
218
  TagNav,
@@ -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 HighlightedCodeProps {
5
4
  code: string;
6
5
  language: string;
@@ -10,6 +9,6 @@ export interface HighlightedCodeProps {
10
9
  * Falls back to a plain `<pre><code>` block while the runtime is loading or
11
10
  * when the current request cannot produce safe markup.
12
11
  *
13
- * JSX port of src/components/html-preview/highlighted-code.tsx.
12
+ * The runtime request is scoped to the current source panel mount.
14
13
  */
15
- export declare function HighlightedCode({ code, language, }: HighlightedCodeProps): VNode;
14
+ export declare function HighlightedCode({ code, language, }: HighlightedCodeProps): Child;
@@ -1,31 +1,33 @@
1
- import { jsx } from "preact/jsx-runtime";
2
- import { useEffect, useState } from "preact/hooks";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
+ import {
3
+ computed,
4
+ getScope,
5
+ signal,
6
+ Show
7
+ } from "@takazudo/zfb/zudo-react";
3
8
  import { startHighlightRequest } from "./highlight-runtime.js";
4
9
  function HighlightedCode({
5
10
  code,
6
11
  language
7
12
  }) {
8
- const [highlighted, setHighlighted] = useState(null);
9
- const html = highlighted?.code === code && highlighted.language === language ? highlighted.html : null;
10
- useEffect(() => {
11
- return startHighlightRequest({
13
+ const scope = getScope();
14
+ const highlighted = signal(null);
15
+ scope.onActivate(
16
+ () => startHighlightRequest({
12
17
  code,
13
18
  language,
14
19
  onSettled(nextHtml) {
15
- setHighlighted(
16
- nextHtml == null ? null : { code, language, html: nextHtml }
17
- );
20
+ highlighted.value = nextHtml;
18
21
  }
19
- });
20
- }, [code, language]);
21
- if (!html) {
22
- return /* @__PURE__ */ jsx("pre", { class: "m-0 p-hsp-md bg-code-bg text-caption leading-relaxed overflow-x-auto", children: /* @__PURE__ */ jsx("code", { class: "font-mono whitespace-pre", children: code }) });
23
- }
22
+ })
23
+ );
24
+ const html = computed(() => highlighted.value);
24
25
  return /* @__PURE__ */ jsx(
25
- "div",
26
+ Show,
26
27
  {
27
- class: "zd-html-preview-code",
28
- dangerouslySetInnerHTML: { __html: html }
28
+ when: computed(() => html.value != null),
29
+ fallback: () => /* @__PURE__ */ jsx("pre", { class: "m-0 p-hsp-md bg-code-bg text-caption leading-relaxed overflow-x-auto", children: /* @__PURE__ */ jsx("code", { class: "font-mono whitespace-pre", children: code }) }),
30
+ children: () => /* @__PURE__ */ jsx("div", { class: "zd-html-preview-code", rawHtml: html })
29
31
  }
30
32
  );
31
33
  }
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  import { type HtmlPreviewLabels } from "./html-preview.js";
5
4
  /**
6
5
  * Global HTML preview configuration. Mirrors the `settings.htmlPreview`
@@ -19,7 +18,7 @@ export interface HtmlPreviewWrapperProps {
19
18
  /**
20
19
  * Controls when the preview subtree is rendered.
21
20
  *
22
- * `"eager"` (and omission) preserves the server-rendered iframe and
21
+ * `"eager"` (and omission) preserves the server-rendered preview host and
23
22
  * hydrates it when visible. `"visible"` emits only an inert height
24
23
  * reservation during SSR and renders the preview on the client through
25
24
  * zfb's skip-SSR island path.
@@ -130,7 +129,7 @@ type HtmlPreviewWrapperInnerProps = Omit<HtmlPreviewWrapperProps, "loading">;
130
129
  * Merges global (`settings.htmlPreview`) config with per-usage props and
131
130
  * forwards everything to `<HtmlPreview>`. Renders the preview tree
132
131
  * **directly**: it does NOT wrap itself in `<Island>`. `HtmlPreviewWrapper`
133
- * below applies the `<Island when="visible">` wrapper around it.
132
+ * in `wrapper.tsx` applies the `<Island when="visible">` wrapper around it.
134
133
  *
135
134
  * ## Island invariant (read before touching the displayName / Island wiring)
136
135
  *
@@ -151,28 +150,8 @@ type HtmlPreviewWrapperInnerProps = Omit<HtmlPreviewWrapperProps, "loading">;
151
150
  * (`HtmlPreviewWrapperInner`) and is exported, so the marker resolves to
152
151
  * THIS bare component and the bundle hydrates it in-place.
153
152
  */
154
- export declare function HtmlPreviewWrapperInner(props: HtmlPreviewWrapperInnerProps): VNode;
153
+ export declare function HtmlPreviewWrapperInner(props: HtmlPreviewWrapperInnerProps): Child;
155
154
  export declare namespace HtmlPreviewWrapperInner {
156
155
  var displayName: string;
157
156
  }
158
- /**
159
- * HTML preview wrapper component — the public MDX-registered binding
160
- * (`HtmlPreview: HtmlPreviewWrapper`).
161
- *
162
- * Eager mode wraps the bare `HtmlPreviewWrapperInner` in
163
- * `<Island when="visible">`, mirroring the legacy `client:visible` hydration
164
- * timing while preserving the complete server-rendered preview. Visible mode
165
- * uses zfb's skip-SSR fallback path: static output contains only an inert
166
- * nonzero reservation, while the real serializable inner props remain on the
167
- * island marker for the client mount. zfb intentionally mounts skip-SSR
168
- * islands immediately, so the bare inner target keeps that reservation in
169
- * place and applies its own one-shot IntersectionObserver gate before it
170
- * instantiates the preview subtree; missing observer support fails open.
171
- *
172
- * The public export name and signature are unchanged from before the
173
- * zudolab/zudo-doc#1925 fix, so existing consumers that register
174
- * `HtmlPreview: HtmlPreviewWrapper` keep working (and now hydrate correctly)
175
- * with no call-site change.
176
- */
177
- export declare function HtmlPreviewWrapper(props: HtmlPreviewWrapperProps): VNode;
178
157
  export {};
@@ -1,63 +1,8 @@
1
1
  "use client";
2
- import { jsx } from "preact/jsx-runtime";
3
- import { useEffect, useRef, useState } from "preact/hooks";
4
- import { Island } from "@takazudo/zfb";
2
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
5
3
  import { HtmlPreview } from "./html-preview.js";
6
- const VISIBLE_MOUNT_PROP = "__zudoDocVisibleMount";
7
- function reservationHeight(height) {
8
- return height != null && height > 0 ? height : 200;
9
- }
10
- function HtmlPreviewReservation({
11
- height,
12
- reservationRef
13
- }) {
14
- return /* @__PURE__ */ jsx(
15
- "div",
16
- {
17
- ref: reservationRef,
18
- "aria-hidden": "true",
19
- "data-zd-html-preview-reservation": true,
20
- style: { height: reservationHeight(height) }
21
- }
22
- );
23
- }
24
4
  function HtmlPreviewWrapperInner(props) {
25
- const runtimeProps = props;
26
- const deferUntilVisible = runtimeProps[VISIBLE_MOUNT_PROP] === true;
27
- const reservationRef = useRef(null);
28
- const [shouldRenderPreview, setShouldRenderPreview] = useState(
29
- !deferUntilVisible || typeof globalThis.IntersectionObserver !== "function"
30
- );
31
- useEffect(() => {
32
- if (shouldRenderPreview) return;
33
- if (!deferUntilVisible) {
34
- setShouldRenderPreview(true);
35
- return;
36
- }
37
- const target = reservationRef.current;
38
- const Observer = globalThis.IntersectionObserver;
39
- if (!target || typeof Observer !== "function") {
40
- setShouldRenderPreview(true);
41
- return;
42
- }
43
- let fired = false;
44
- const observer = new Observer(
45
- (entries) => {
46
- if (fired || !entries.some((entry) => entry.isIntersecting)) return;
47
- fired = true;
48
- observer.disconnect();
49
- setShouldRenderPreview(true);
50
- },
51
- { threshold: 0 }
52
- );
53
- observer.observe(target);
54
- return () => {
55
- fired = true;
56
- observer.disconnect();
57
- };
58
- }, [deferUntilVisible, shouldRenderPreview]);
59
5
  const {
60
- [VISIBLE_MOUNT_PROP]: _visibleMount,
61
6
  globalConfig,
62
7
  html,
63
8
  css,
@@ -76,16 +21,7 @@ function HtmlPreviewWrapperInner(props) {
76
21
  externalScripts,
77
22
  preflight,
78
23
  showResources
79
- } = runtimeProps;
80
- if (!shouldRenderPreview) {
81
- return /* @__PURE__ */ jsx(
82
- HtmlPreviewReservation,
83
- {
84
- height,
85
- reservationRef
86
- }
87
- );
88
- }
24
+ } = props;
89
25
  const mergedHead = [globalConfig?.head, head].filter(Boolean).join("\n") || void 0;
90
26
  const mergedCss = [globalConfig?.css, css].filter(Boolean).join("\n") || void 0;
91
27
  const mergedJs = [globalConfig?.js, js].filter(Boolean).join("\n") || void 0;
@@ -116,27 +52,6 @@ function HtmlPreviewWrapperInner(props) {
116
52
  );
117
53
  }
118
54
  HtmlPreviewWrapperInner.displayName = "HtmlPreviewWrapperInner";
119
- function HtmlPreviewWrapper(props) {
120
- const { loading = "eager", ...innerProps } = props;
121
- if (loading === "visible") {
122
- const visibleInnerProps = {
123
- ...innerProps,
124
- [VISIBLE_MOUNT_PROP]: true
125
- };
126
- const rendered2 = Island({
127
- when: "visible",
128
- ssrFallback: /* @__PURE__ */ jsx(HtmlPreviewReservation, { height: innerProps.height }),
129
- children: /* @__PURE__ */ jsx(HtmlPreviewWrapperInner, { ...visibleInnerProps })
130
- });
131
- return rendered2;
132
- }
133
- const rendered = Island({
134
- when: "visible",
135
- children: /* @__PURE__ */ jsx(HtmlPreviewWrapperInner, { ...innerProps })
136
- });
137
- return rendered;
138
- }
139
55
  export {
140
- HtmlPreviewWrapper,
141
56
  HtmlPreviewWrapperInner
142
57
  };
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  import { type HtmlPreviewLabels } from "./preview-base.js";
5
4
  export type { HtmlPreviewLabels } from "./preview-base.js";
6
5
  export interface HtmlPreviewProps {
@@ -151,12 +150,6 @@ export declare function buildSrcdoc(html: string, css?: string, head?: string, j
151
150
  * HTML preview widget — renders an isolated iframe with viewport
152
151
  * controls and a collapsible code section.
153
152
  *
154
- * JSX port of src/components/html-preview/html-preview.tsx with
155
- * React → Preact hook imports.
156
- *
157
- * Requires client-side JS (iframe load events, height sync, code
158
- * toggle). Mount as an island via `<HtmlPreview client:visible />` in
159
- * Astro, or wire up the SSR-skip placeholder pattern for non-Astro
160
- * consumers.
153
+ * Pure setup for the preview island; iframe lifecycle belongs to PreviewBase.
161
154
  */
162
- export declare function HtmlPreview({ html, css, head, js, title, lang, height, defaultOpen, labels, showSource, showViewportControls, fullHeight, sandbox, componentCss, componentHead, componentJs, externalStyles, externalScripts, preflight, showResources, }: HtmlPreviewProps): VNode;
155
+ export declare function HtmlPreview({ html, css, head, js, title, lang, height, defaultOpen, labels, showSource, showViewportControls, fullHeight, sandbox, componentCss, componentHead, componentJs, externalStyles, externalScripts, preflight, showResources, }: HtmlPreviewProps): Child;
@@ -1,5 +1,4 @@
1
- import { jsx } from "preact/jsx-runtime";
2
- import { useMemo } from "preact/hooks";
1
+ import { jsx } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
2
  import {
4
3
  PreviewBase
5
4
  } from "./preview-base.js";
@@ -92,37 +91,22 @@ function HtmlPreview({
92
91
  preflight,
93
92
  showResources
94
93
  }) {
95
- const srcdoc = useMemo(
96
- () => buildSrcdoc(
97
- html,
98
- css,
99
- head,
100
- js,
101
- fullHeight,
102
- externalStyles,
103
- externalScripts,
104
- preflight,
105
- { lang, title, previewLabel: labels?.preview }
106
- ),
107
- [
108
- html,
109
- css,
110
- head,
111
- js,
112
- fullHeight,
113
- externalStyles,
114
- externalScripts,
115
- preflight,
116
- lang,
117
- title,
118
- labels?.preview
119
- ]
94
+ const srcdoc = buildSrcdoc(
95
+ html,
96
+ css,
97
+ head,
98
+ js,
99
+ fullHeight,
100
+ externalStyles,
101
+ externalScripts,
102
+ preflight,
103
+ { lang, title, previewLabel: labels?.preview }
120
104
  );
121
105
  const hasScripts = containsScript(head, js, externalScripts);
122
106
  const syncDelay = hasScripts ? 300 : 0;
123
107
  const sandboxValue = resolveSandbox(sandbox, hasScripts);
124
108
  const sandboxAttributeValue = sandboxValue === "" ? " " : sandboxValue;
125
- const codeBlocks = useMemo(() => {
109
+ const codeBlocks = (() => {
126
110
  const resourceLines = showResources ? [
127
111
  ...(externalStyles ?? []).map(
128
112
  (href) => `<link rel="stylesheet" href="${href}">`
@@ -146,15 +130,7 @@ ${dedent(html)}` : dedent(html);
146
130
  }
147
131
  ] : []
148
132
  ];
149
- }, [
150
- html,
151
- componentCss,
152
- componentHead,
153
- componentJs,
154
- showResources,
155
- externalStyles,
156
- externalScripts
157
- ]);
133
+ })();
158
134
  return /* @__PURE__ */ jsx(
159
135
  PreviewBase,
160
136
  {
@@ -1,4 +1,5 @@
1
- export { HtmlPreviewWrapper, HtmlPreviewWrapperInner, } from "./html-preview-wrapper.js";
1
+ export { HtmlPreviewWrapperInner, } from "./html-preview-wrapper.js";
2
+ export { HtmlPreviewWrapper } from "./wrapper.js";
2
3
  export type { HtmlPreviewWrapperProps, HtmlPreviewGlobalConfig, } from "./html-preview-wrapper.js";
3
4
  export { HtmlPreview } from "./html-preview.js";
4
5
  export type { HtmlPreviewProps } from "./html-preview.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
- HtmlPreviewWrapper,
3
2
  HtmlPreviewWrapperInner
4
3
  } from "./html-preview-wrapper.js";
4
+ import { HtmlPreviewWrapper } from "./wrapper.js";
5
5
  import { HtmlPreview } from "./html-preview.js";
6
6
  import { PreviewBase } from "./preview-base.js";
7
7
  import { HighlightedCode } from "./highlighted-code.js";
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { VNode } from "preact";
2
+ import { type Child } from "@takazudo/zfb/zudo-react";
4
3
  export interface CodeBlockData {
5
4
  language: string;
6
5
  title: string;
@@ -39,7 +38,6 @@ export interface PreviewBaseProps {
39
38
  * Interactive preview base: iframe viewport switcher + collapsible code
40
39
  * section.
41
40
  *
42
- * JSX port of src/components/html-preview/preview-base.tsx with
43
- * React → Preact hook imports and `className` → `class` attribute.
41
+ * The native iframe is rendered during SSR and hydrated by zudo-react.
44
42
  */
45
- export declare function PreviewBase({ title, height, srcdoc, sandbox, syncDelay, codeBlocks, defaultOpen, labels, showSource, showViewportControls, autoHeight, }: PreviewBaseProps): VNode;
43
+ export declare function PreviewBase({ title, height, srcdoc, sandbox, syncDelay, codeBlocks, defaultOpen, labels, showSource, showViewportControls, autoHeight, }: PreviewBaseProps): Child;