@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,290 +1,5 @@
1
- "use client";
2
- import {
3
- DEFAULT_STORAGE_PREFIX,
4
- DEFAULT_TOGGLE_EVENT,
5
- EAGER_LOAD_GATE_KEY_SUFFIXES,
6
- EAGER_LOAD_GATE_STATE_FAMILY,
7
- resolveToggleEventName
8
- } from "./design-token-panel-constants.js";
9
- import {
10
- BEFORE_NAVIGATE_EVENT,
11
- AFTER_NAVIGATE_EVENT
12
- } from "./transitions/page-events.js";
13
- import {
14
- DEFAULT_THEME_PACK_SLUG,
15
- THEME_PACK_CHANGED_EVENT,
16
- readThemePackFromDom
17
- } from "./theme-pack-switcher/theme-pack-sync.js";
18
- import { buildDesignTokenPanelConfig } from "./design-token-panel-config/index.js";
19
- const COLOR_SCHEME_CHANGED_EVENT = "color-scheme-changed";
20
- function openStateKey(instancePrefix) {
21
- return `${instancePrefix}-open`;
22
- }
23
- function readOpenState(instancePrefix) {
24
- try {
25
- return localStorage.getItem(openStateKey(instancePrefix)) === "1";
26
- } catch {
27
- return false;
28
- }
29
- }
30
- function isEmptyEnvelope(raw) {
31
- if (raw === null || raw === "") return true;
32
- let parsed;
33
- try {
34
- parsed = JSON.parse(raw);
35
- } catch {
36
- return false;
37
- }
38
- if (parsed === null) return true;
39
- if (Array.isArray(parsed)) return parsed.length === 0;
40
- if (typeof parsed === "object") return Object.keys(parsed).length === 0;
41
- return false;
42
- }
43
- function hasPersistedPanelState(config) {
44
- const instancePrefix = config.storagePrefix ?? DEFAULT_STORAGE_PREFIX;
45
- try {
46
- for (const [suffix, gate] of Object.entries(EAGER_LOAD_GATE_KEY_SUFFIXES)) {
47
- if (gate.requiredConfig !== null && config[gate.requiredConfig] === void 0) {
48
- continue;
49
- }
50
- const value = localStorage.getItem(`${instancePrefix}${suffix}`);
51
- if (suffix === ":autoload" && value !== "1") continue;
52
- if (gate.acceptedValues.some((accepted) => accepted === value)) return true;
53
- }
54
- for (let i = 0; i < localStorage.length; i++) {
55
- const key = localStorage.key(i);
56
- if (key === null || !EAGER_LOAD_GATE_STATE_FAMILY.matchesKey(instancePrefix, key)) {
57
- continue;
58
- }
59
- if (!isEmptyEnvelope(localStorage.getItem(key))) return true;
60
- }
61
- } catch {
62
- }
63
- return false;
64
- }
65
- function readMode() {
66
- return document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light";
67
- }
68
- function withPackScopedStoragePrefix(config, activePack) {
69
- if (activePack === DEFAULT_THEME_PACK_SLUG) return config;
70
- return { ...config, storagePrefix: `${config.storagePrefix}--${activePack}` };
71
- }
72
- function collectDeclaredTokenNames(config) {
73
- const names = [];
74
- for (const tab of config.tabs ?? []) {
75
- for (const tier of tab.tiers ?? []) {
76
- for (const item of tier.items ?? []) {
77
- names.push(item.cssVar);
78
- }
79
- }
80
- const baseRoles = tab.colorExtras?.baseRoles;
81
- if (baseRoles) {
82
- for (const cssVar of Object.values(baseRoles)) {
83
- if (typeof cssVar === "string" && cssVar.length > 0) {
84
- names.push(cssVar);
85
- }
86
- }
87
- }
88
- }
89
- return names;
90
- }
91
- function clearAppliedTokenOverrides(config) {
92
- const names = collectDeclaredTokenNames(config);
93
- if (config.applySink) {
94
- try {
95
- config.applySink.clear(names);
96
- } catch (err) {
97
- console.warn(
98
- "[zudo-doc] applySink.clear threw during theme-pack switch; outgoing overrides may linger.",
99
- err
100
- );
101
- }
102
- return;
103
- }
104
- const style = document.documentElement.style;
105
- for (const name of names) {
106
- style.removeProperty(name);
107
- }
108
- }
109
- function bootstrapDesignTokenPanel(buildConfig) {
110
- if (typeof window === "undefined" || typeof document === "undefined") {
111
- return;
112
- }
113
- let zdtpImport = null;
114
- let activationInFlight = false;
115
- let configurePhase = "pending";
116
- let pendingToggles = 0;
117
- function loadZdtp() {
118
- if (zdtpImport === null) {
119
- zdtpImport = import("@takazudo/zudo-doc/zdtp-loader").catch((err) => {
120
- zdtpImport = null;
121
- throw err;
122
- });
123
- }
124
- return zdtpImport;
125
- }
126
- function configureAndWire(zdtp) {
127
- const {
128
- configurePanel,
129
- reapplyPersistedOverrides,
130
- setLifecycleAdapter,
131
- showDesignTokenPanel
132
- } = zdtp;
133
- let currentConfig = withPackScopedStoragePrefix(
134
- buildConfig(readMode()),
135
- readThemePackFromDom()
136
- );
137
- let handle = configurePanel(currentConfig);
138
- let pendingMode = readMode();
139
- let timer = null;
140
- window.addEventListener(COLOR_SCHEME_CHANGED_EVENT, () => {
141
- pendingMode = readMode();
142
- if (timer !== null) return;
143
- timer = setTimeout(() => {
144
- timer = null;
145
- const mode = pendingMode;
146
- const wasOpen = readOpenState(handle.instanceId);
147
- handle.destroy();
148
- currentConfig = withPackScopedStoragePrefix(
149
- buildConfig(mode),
150
- readThemePackFromDom()
151
- );
152
- handle = configurePanel(currentConfig);
153
- if (wasOpen) showDesignTokenPanel();
154
- }, 0);
155
- });
156
- let pendingPack = readThemePackFromDom();
157
- let packTimer = null;
158
- window.addEventListener(THEME_PACK_CHANGED_EVENT, () => {
159
- pendingPack = readThemePackFromDom();
160
- if (packTimer !== null) return;
161
- packTimer = setTimeout(() => {
162
- packTimer = null;
163
- const pack = pendingPack;
164
- const wasOpen = readOpenState(handle.instanceId);
165
- const outgoingConfig = currentConfig;
166
- handle.destroy();
167
- clearAppliedTokenOverrides(outgoingConfig);
168
- currentConfig = withPackScopedStoragePrefix(buildConfig(readMode()), pack);
169
- handle = configurePanel(currentConfig);
170
- reapplyPersistedOverrides();
171
- if (wasOpen) showDesignTokenPanel();
172
- }, 0);
173
- });
174
- reapplyPersistedOverrides();
175
- const adapter = {
176
- onBeforeSwap(cb) {
177
- const handler = () => cb();
178
- document.addEventListener(BEFORE_NAVIGATE_EVENT, handler);
179
- return () => document.removeEventListener(BEFORE_NAVIGATE_EVENT, handler);
180
- },
181
- onPageLoad(cb) {
182
- const handler = () => cb();
183
- document.addEventListener(AFTER_NAVIGATE_EVENT, handler);
184
- return () => document.removeEventListener(AFTER_NAVIGATE_EVENT, handler);
185
- }
186
- };
187
- setLifecycleAdapter(adapter);
188
- }
189
- async function activate() {
190
- if (activationInFlight || configurePhase !== "pending") return;
191
- activationInFlight = true;
192
- let zdtp;
193
- try {
194
- zdtp = await loadZdtp();
195
- } catch (err) {
196
- activationInFlight = false;
197
- pendingToggles = 0;
198
- console.error(
199
- "[zudo-doc] design-token-panel: loading @takazudo/zdtp failed; the next toggle retries.",
200
- err
201
- );
202
- return;
203
- }
204
- try {
205
- configureAndWire(zdtp);
206
- configurePhase = "configured";
207
- } catch (err) {
208
- configurePhase = "failed";
209
- console.error(
210
- "[zudo-doc] design-token-panel: configure failed; the panel is disabled until the next full page load.",
211
- err
212
- );
213
- return;
214
- } finally {
215
- activationInFlight = false;
216
- }
217
- if (pendingToggles % 2 === 1) zdtp.showDesignTokenPanel();
218
- pendingToggles = 0;
219
- }
220
- function readActiveConfig() {
221
- return withPackScopedStoragePrefix(
222
- buildConfig(readMode()),
223
- readThemePackFromDom()
224
- );
225
- }
226
- const onInterimToggle = () => {
227
- if (configurePhase !== "pending") return;
228
- pendingToggles += 1;
229
- void activate();
230
- };
231
- const boundToggleChannels = /* @__PURE__ */ new Set();
232
- let instanceToggleChannel = null;
233
- function bindToggleChannel(name) {
234
- if (boundToggleChannels.has(name)) return;
235
- boundToggleChannels.add(name);
236
- window.addEventListener(name, onInterimToggle);
237
- }
238
- function refreshInstanceToggleChannel(config) {
239
- const resolved = resolveToggleEventName(config);
240
- if (resolved === instanceToggleChannel) return;
241
- if (instanceToggleChannel !== null && instanceToggleChannel !== DEFAULT_TOGGLE_EVENT) {
242
- window.removeEventListener(instanceToggleChannel, onInterimToggle);
243
- boundToggleChannels.delete(instanceToggleChannel);
244
- }
245
- instanceToggleChannel = resolved;
246
- bindToggleChannel(resolved);
247
- }
248
- const bootConfig = readActiveConfig();
249
- bindToggleChannel(DEFAULT_TOGGLE_EVENT);
250
- refreshInstanceToggleChannel(bootConfig);
251
- window.__zdtpReadyClicks?.();
252
- if (hasPersistedPanelState(bootConfig)) void activate();
253
- window.addEventListener(THEME_PACK_CHANGED_EVENT, () => {
254
- if (configurePhase !== "pending") return;
255
- const activeConfig = readActiveConfig();
256
- refreshInstanceToggleChannel(activeConfig);
257
- if (hasPersistedPanelState(activeConfig)) void activate();
258
- });
259
- window.addEventListener(COLOR_SCHEME_CHANGED_EVENT, () => {
260
- if (configurePhase !== "pending") return;
261
- refreshInstanceToggleChannel(readActiveConfig());
262
- });
263
- }
264
- let bootstrapWinner = null;
265
- let warnedLostRace = false;
266
- function warnLostBootstrapRace(winnerOrigin, loserOrigin) {
267
- if (typeof window === "undefined" || warnedLostRace) return;
268
- warnedLostRace = true;
269
- const detail = loserOrigin === "configured" && winnerOrigin === "default" ? "The package-default island configured the panel earlier in this browser session, so `designTokenPanelConfigModule` did not apply on this page. This happens when the session first hard-loaded a page rendered by a self-contained `pages/` stub, which reaches the package default instead of the package-injected route. Thread your builder through `chromeBindings.DesignTokenPanelBootstrap` to make it apply on every page regardless of entry point." : `The ${winnerOrigin} island configured the panel first; this ${loserOrigin} island's builder was ignored. zdtp is configured once per session \u2014 mount exactly one design-token-panel bootstrap, e.g. via \`chromeBindings.DesignTokenPanelBootstrap\`.`;
270
- console.warn(`[zudo-doc] design-token panel already configured. ${detail}`);
271
- }
272
- function runDesignTokenPanelBootstrapOnce(build, origin = "default") {
273
- if (bootstrapWinner) {
274
- if (bootstrapWinner.build !== build) warnLostBootstrapRace(bootstrapWinner.origin, origin);
275
- return;
276
- }
277
- bootstrapWinner = { origin, build };
278
- bootstrapDesignTokenPanel(build);
279
- }
280
- function DesignTokenPanelBootstrap() {
281
- runDesignTokenPanelBootstrapOnce(buildDesignTokenPanelConfig, "default");
282
- return null;
283
- }
284
- DesignTokenPanelBootstrap.displayName = "DesignTokenPanelBootstrap";
1
+ export * from "./design-token-panel-bootstrap-controller.js";
2
+ import { DesignTokenPanelBootstrap } from "./design-token-panel-bootstrap-island.js";
285
3
  export {
286
- DesignTokenPanelBootstrap,
287
- bootstrapDesignTokenPanel,
288
- runDesignTokenPanelBootstrapOnce,
289
- withPackScopedStoragePrefix
4
+ DesignTokenPanelBootstrap
290
5
  };
@@ -1,7 +1,2 @@
1
- export declare const SIDEBAR_STORAGE_KEY = "zudo-doc-sidebar-visible";
2
- export declare function readState(): boolean;
3
- export declare function setDataAttribute(isVisible: boolean): void;
4
- export declare function DesktopSidebarToggle(): import("preact").JSX.Element;
5
- export declare namespace DesktopSidebarToggle {
6
- var displayName: string;
7
- }
1
+ export { DesktopSidebarToggle } from "./island.js";
2
+ export { SIDEBAR_STORAGE_KEY, readState, setDataAttribute } from "./storage.js";
@@ -1,61 +1,5 @@
1
- "use client";
2
- import { jsx } from "preact/jsx-runtime";
3
- import { useState, useEffect, useRef } from "preact/hooks";
4
- import { ChevronRight, ChevronLeft } from "../icons/index.js";
5
- import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
6
- const SIDEBAR_STORAGE_KEY = "zudo-doc-sidebar-visible";
7
- function readState() {
8
- if (typeof window === "undefined") return true;
9
- try {
10
- return localStorage.getItem(SIDEBAR_STORAGE_KEY) !== "false";
11
- } catch {
12
- return true;
13
- }
14
- }
15
- function setDataAttribute(isVisible) {
16
- if (isVisible) {
17
- document.documentElement.removeAttribute("data-sidebar-hidden");
18
- } else {
19
- document.documentElement.setAttribute("data-sidebar-hidden", "");
20
- }
21
- }
22
- function DesktopSidebarToggle() {
23
- const [visible, setVisible] = useState(true);
24
- const hydrated = useRef(false);
25
- useEffect(() => {
26
- if (!hydrated.current) return;
27
- setDataAttribute(visible);
28
- try {
29
- localStorage.setItem(SIDEBAR_STORAGE_KEY, String(visible));
30
- } catch {
31
- }
32
- }, [visible]);
33
- useEffect(() => {
34
- hydrated.current = true;
35
- const actual = readState();
36
- if (actual !== visible) {
37
- setVisible(actual);
38
- }
39
- }, []);
40
- useEffect(() => {
41
- const handler = () => setDataAttribute(readState());
42
- document.addEventListener(AFTER_NAVIGATE_EVENT, handler);
43
- return () => document.removeEventListener(AFTER_NAVIGATE_EVENT, handler);
44
- }, []);
45
- return /* @__PURE__ */ jsx(
46
- "button",
47
- {
48
- type: "button",
49
- onClick: () => setVisible((v) => !v),
50
- className: "zd-desktop-sidebar-toggle hidden lg:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-l-0 rounded-r-DEFAULT text-muted cursor-pointer transition-[left,color] duration-200 ease-in-out hover:text-fg",
51
- "aria-label": visible ? "Hide sidebar" : "Show sidebar",
52
- "aria-pressed": visible,
53
- "data-zfb-transition-persist": "desktop-sidebar-toggle",
54
- children: visible ? /* @__PURE__ */ jsx(ChevronLeft, { className: "h-icon-sm w-icon-sm" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-sm w-icon-sm" })
55
- }
56
- );
57
- }
58
- DesktopSidebarToggle.displayName = "DesktopSidebarToggle";
1
+ import { DesktopSidebarToggle } from "./island.js";
2
+ import { SIDEBAR_STORAGE_KEY, readState, setDataAttribute } from "./storage.js";
59
3
  export {
60
4
  DesktopSidebarToggle,
61
5
  SIDEBAR_STORAGE_KEY,
@@ -0,0 +1,4 @@
1
+ export declare function DesktopSidebarToggle(): import("@takazudo/zfb").Description;
2
+ export declare namespace DesktopSidebarToggle {
3
+ var displayName: string;
4
+ }
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
+ import { computed, getScope, Show, signal } from "@takazudo/zfb/zudo-react";
4
+ import { ChevronLeft, ChevronRight } from "../icons/index.js";
5
+ import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
6
+ import { readState, setDataAttribute, writeState } from "./storage.js";
7
+ function DesktopSidebarToggle() {
8
+ const visible = signal(true);
9
+ const scope = getScope();
10
+ scope.onActivate(() => {
11
+ const initialVisibility = readState();
12
+ visible.value = initialVisibility;
13
+ setDataAttribute(initialVisibility);
14
+ const restoreDocumentAttribute = () => setDataAttribute(readState());
15
+ document.addEventListener(AFTER_NAVIGATE_EVENT, restoreDocumentAttribute);
16
+ return () => document.removeEventListener(AFTER_NAVIGATE_EVENT, restoreDocumentAttribute);
17
+ });
18
+ const toggle = () => {
19
+ const next = !visible.value;
20
+ visible.value = next;
21
+ writeState(next);
22
+ setDataAttribute(next);
23
+ };
24
+ return /* @__PURE__ */ jsxs(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ "on:click": toggle,
29
+ class: "zd-desktop-sidebar-toggle hidden lg:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-l-0 text-muted cursor-pointer transition-[left,color] duration-200 hover:text-fg",
30
+ style: "border-radius:0 var(--radius-DEFAULT) var(--radius-DEFAULT) 0",
31
+ "aria-label": computed(() => visible.value ? "Hide sidebar" : "Show sidebar"),
32
+ "aria-pressed": visible,
33
+ children: [
34
+ /* @__PURE__ */ jsx(Show, { when: computed(() => visible.value), children: () => /* @__PURE__ */ jsx(ChevronLeft, { class: "h-icon-sm w-icon-sm" }) }),
35
+ /* @__PURE__ */ jsx(Show, { when: computed(() => !visible.value), children: () => /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-sm w-icon-sm" }) })
36
+ ]
37
+ }
38
+ );
39
+ }
40
+ DesktopSidebarToggle.displayName = "DesktopSidebarToggle";
41
+ export {
42
+ DesktopSidebarToggle
43
+ };
@@ -0,0 +1,4 @@
1
+ export declare const SIDEBAR_STORAGE_KEY = "zudo-doc-sidebar-visible";
2
+ export declare function readState(): boolean;
3
+ export declare function writeState(isVisible: boolean): void;
4
+ export declare function setDataAttribute(isVisible: boolean): void;
@@ -0,0 +1,29 @@
1
+ const SIDEBAR_STORAGE_KEY = "zudo-doc-sidebar-visible";
2
+ function readState() {
3
+ if (typeof window === "undefined") return true;
4
+ try {
5
+ return localStorage.getItem(SIDEBAR_STORAGE_KEY) !== "false";
6
+ } catch {
7
+ return true;
8
+ }
9
+ }
10
+ function writeState(isVisible) {
11
+ try {
12
+ localStorage.setItem(SIDEBAR_STORAGE_KEY, String(isVisible));
13
+ } catch {
14
+ }
15
+ }
16
+ function setDataAttribute(isVisible) {
17
+ if (typeof document === "undefined") return;
18
+ if (isVisible) {
19
+ document.documentElement.removeAttribute("data-sidebar-hidden");
20
+ } else {
21
+ document.documentElement.setAttribute("data-sidebar-hidden", "");
22
+ }
23
+ }
24
+ export {
25
+ SIDEBAR_STORAGE_KEY,
26
+ readState,
27
+ setDataAttribute,
28
+ writeState
29
+ };
@@ -1,7 +1,2 @@
1
- export declare const TOC_STORAGE_KEY = "zudo-doc-toc-visible";
2
- export declare function readTocState(): boolean;
3
- export declare function setTocDataAttribute(isVisible: boolean): void;
4
- export declare function DesktopTocToggle(): import("preact").JSX.Element;
5
- export declare namespace DesktopTocToggle {
6
- var displayName: string;
7
- }
1
+ export { DesktopTocToggle } from "./island.js";
2
+ export { TOC_STORAGE_KEY, readTocState, setTocDataAttribute } from "./storage.js";
@@ -1,61 +1,5 @@
1
- "use client";
2
- import { jsx } from "preact/jsx-runtime";
3
- import { useState, useEffect, useRef } from "preact/hooks";
4
- import { ChevronRight, ChevronLeft } from "../icons/index.js";
5
- import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
6
- const TOC_STORAGE_KEY = "zudo-doc-toc-visible";
7
- function readTocState() {
8
- if (typeof window === "undefined") return true;
9
- try {
10
- return localStorage.getItem(TOC_STORAGE_KEY) !== "false";
11
- } catch {
12
- return true;
13
- }
14
- }
15
- function setTocDataAttribute(isVisible) {
16
- if (isVisible) {
17
- document.documentElement.removeAttribute("data-toc-hidden");
18
- } else {
19
- document.documentElement.setAttribute("data-toc-hidden", "");
20
- }
21
- }
22
- function DesktopTocToggle() {
23
- const [visible, setVisible] = useState(true);
24
- const hydrated = useRef(false);
25
- useEffect(() => {
26
- if (!hydrated.current) return;
27
- setTocDataAttribute(visible);
28
- try {
29
- localStorage.setItem(TOC_STORAGE_KEY, String(visible));
30
- } catch {
31
- }
32
- }, [visible]);
33
- useEffect(() => {
34
- hydrated.current = true;
35
- const actual = readTocState();
36
- if (actual !== visible) {
37
- setVisible(actual);
38
- }
39
- }, []);
40
- useEffect(() => {
41
- const handler = () => setTocDataAttribute(readTocState());
42
- document.addEventListener(AFTER_NAVIGATE_EVENT, handler);
43
- return () => document.removeEventListener(AFTER_NAVIGATE_EVENT, handler);
44
- }, []);
45
- return /* @__PURE__ */ jsx(
46
- "button",
47
- {
48
- type: "button",
49
- onClick: () => setVisible((v) => !v),
50
- className: "zd-desktop-toc-toggle hidden xl:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-r-0 rounded-l-DEFAULT text-muted cursor-pointer transition-[right,color] duration-200 ease-in-out hover:text-fg",
51
- "aria-label": visible ? "Hide table of contents" : "Show table of contents",
52
- "aria-pressed": visible,
53
- "data-zfb-transition-persist": "desktop-toc-toggle",
54
- children: visible ? /* @__PURE__ */ jsx(ChevronRight, { className: "h-icon-sm w-icon-sm" }) : /* @__PURE__ */ jsx(ChevronLeft, { className: "h-icon-sm w-icon-sm" })
55
- }
56
- );
57
- }
58
- DesktopTocToggle.displayName = "DesktopTocToggle";
1
+ import { DesktopTocToggle } from "./island.js";
2
+ import { TOC_STORAGE_KEY, readTocState, setTocDataAttribute } from "./storage.js";
59
3
  export {
60
4
  DesktopTocToggle,
61
5
  TOC_STORAGE_KEY,
@@ -0,0 +1,4 @@
1
+ export declare function DesktopTocToggle(): import("@takazudo/zfb").Description;
2
+ export declare namespace DesktopTocToggle {
3
+ var displayName: string;
4
+ }
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
3
+ import { computed, getScope, Show, signal } from "@takazudo/zfb/zudo-react";
4
+ import { ChevronLeft, ChevronRight } from "../icons/index.js";
5
+ import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
6
+ import { readTocState, setTocDataAttribute, writeTocState } from "./storage.js";
7
+ function DesktopTocToggle() {
8
+ const visible = signal(true);
9
+ const scope = getScope();
10
+ scope.onActivate(() => {
11
+ const initialVisibility = readTocState();
12
+ visible.value = initialVisibility;
13
+ setTocDataAttribute(initialVisibility);
14
+ const restoreDocumentAttribute = () => setTocDataAttribute(readTocState());
15
+ document.addEventListener(AFTER_NAVIGATE_EVENT, restoreDocumentAttribute);
16
+ return () => document.removeEventListener(AFTER_NAVIGATE_EVENT, restoreDocumentAttribute);
17
+ });
18
+ const toggle = () => {
19
+ const next = !visible.value;
20
+ visible.value = next;
21
+ writeTocState(next);
22
+ setTocDataAttribute(next);
23
+ };
24
+ return /* @__PURE__ */ jsxs(
25
+ "button",
26
+ {
27
+ type: "button",
28
+ "on:click": toggle,
29
+ class: "zd-desktop-toc-toggle hidden xl:flex fixed bottom-vsp-xl z-sidebar items-center justify-center w-[1.5rem] h-[3rem] bg-surface border border-muted border-r-0 text-muted cursor-pointer transition-[right,color] duration-200 hover:text-fg",
30
+ style: "border-radius:var(--radius-DEFAULT) 0 0 var(--radius-DEFAULT)",
31
+ "aria-label": computed(() => visible.value ? "Hide table of contents" : "Show table of contents"),
32
+ "aria-pressed": visible,
33
+ children: [
34
+ /* @__PURE__ */ jsx(Show, { when: computed(() => visible.value), children: () => /* @__PURE__ */ jsx(ChevronRight, { class: "h-icon-sm w-icon-sm" }) }),
35
+ /* @__PURE__ */ jsx(Show, { when: computed(() => !visible.value), children: () => /* @__PURE__ */ jsx(ChevronLeft, { class: "h-icon-sm w-icon-sm" }) })
36
+ ]
37
+ }
38
+ );
39
+ }
40
+ DesktopTocToggle.displayName = "DesktopTocToggle";
41
+ export {
42
+ DesktopTocToggle
43
+ };
@@ -0,0 +1,4 @@
1
+ export declare const TOC_STORAGE_KEY = "zudo-doc-toc-visible";
2
+ export declare function readTocState(): boolean;
3
+ export declare function writeTocState(isVisible: boolean): void;
4
+ export declare function setTocDataAttribute(isVisible: boolean): void;
@@ -0,0 +1,29 @@
1
+ const TOC_STORAGE_KEY = "zudo-doc-toc-visible";
2
+ function readTocState() {
3
+ if (typeof window === "undefined") return true;
4
+ try {
5
+ return localStorage.getItem(TOC_STORAGE_KEY) !== "false";
6
+ } catch {
7
+ return true;
8
+ }
9
+ }
10
+ function writeTocState(isVisible) {
11
+ try {
12
+ localStorage.setItem(TOC_STORAGE_KEY, String(isVisible));
13
+ } catch {
14
+ }
15
+ }
16
+ function setTocDataAttribute(isVisible) {
17
+ if (typeof document === "undefined") return;
18
+ if (isVisible) {
19
+ document.documentElement.removeAttribute("data-toc-hidden");
20
+ } else {
21
+ document.documentElement.setAttribute("data-toc-hidden", "");
22
+ }
23
+ }
24
+ export {
25
+ TOC_STORAGE_KEY,
26
+ readTocState,
27
+ setTocDataAttribute,
28
+ writeTocState
29
+ };
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { ComponentChildren, VNode } from "preact";
2
+ import type { Child } from "@takazudo/zfb/zudo-react";
4
3
  export interface DetailsProps {
5
4
  /**
6
5
  * Summary / toggle label shown in the `<summary>` element.
@@ -9,7 +8,7 @@ export interface DetailsProps {
9
8
  */
10
9
  title?: string;
11
10
  /** Slot content rendered inside the collapsed body. */
12
- children?: ComponentChildren;
11
+ children?: Child;
13
12
  }
14
13
  /**
15
14
  * Collapsible `<details>` / `<summary>` block — JSX port of
@@ -19,4 +18,4 @@ export interface DetailsProps {
19
18
  * The legacy component used Astro's `<slot />`; v2 accepts standard
20
19
  * Preact `children`.
21
20
  */
22
- export declare function Details({ title, children }: DetailsProps): VNode;
21
+ export declare function Details({ title, children }: DetailsProps): 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
  function Details({ title = "Details", children }) {
3
3
  return /* @__PURE__ */ jsxs("details", { class: "my-vsp-md border border-muted rounded-lg overflow-hidden", children: [
4
4
  /* @__PURE__ */ jsx("summary", { class: "cursor-pointer px-hsp-lg py-vsp-sm bg-surface font-medium text-fg select-none hover:text-accent", children: title }),
@@ -1,6 +1,5 @@
1
1
  /** @jsxRuntime automatic */
2
- /** @jsxImportSource preact */
3
- import type { JSX } from "preact";
2
+ import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
4
3
  import type { ChromeContext } from "../factory-context/index.js";
5
4
  import type { Settings } from "../settings.js";
6
5
  /** Settings subset read by the DocBodyEnd factory. */
@@ -1,4 +1,4 @@
1
- import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
1
+ import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
2
2
  import { SidebarResizerInit } from "../sidebar-resizer/index.js";
3
3
  import { deriveBodyEndIslands } from "../chrome/derive.js";
4
4
  import { assertChromeContext } from "../chrome/assert-chrome-context.js";
@@ -1,9 +1,9 @@
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 { FactoryComponent } from "../factory-context/index.js";
5
4
  export interface DesignTokenPanelIslandDeps {
6
5
  designTokenPanel: boolean;
6
+ /** Server boundary with a fixed client target, not a raw client component. */
7
7
  DesignTokenPanelBootstrap?: FactoryComponent;
8
8
  }
9
9
  /**