@hanzo/docs-base-ui 16.5.3 → 16.7.5

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 (371) hide show
  1. package/css/generated/docs.css +68 -33
  2. package/css/generated/flux.css +44 -34
  3. package/css/generated/home.css +88 -4
  4. package/css/generated/notebook.css +65 -31
  5. package/css/generated/shared.css +199 -59
  6. package/css/lib/base.css +1 -4
  7. package/css/lib/shiki.css +49 -41
  8. package/css/preset.css +3 -0
  9. package/dist/_virtual/_rolldown/runtime.js +6 -11
  10. package/dist/components/accordion.d.ts +1 -2
  11. package/dist/components/accordion.js +3 -7
  12. package/dist/components/banner.d.ts +1 -2
  13. package/dist/components/banner.js +1 -5
  14. package/dist/components/callout.d.ts +1 -2
  15. package/dist/components/callout.js +0 -3
  16. package/dist/components/card.d.ts +1 -2
  17. package/dist/components/card.js +0 -3
  18. package/dist/components/codeblock.d.ts +1 -2
  19. package/dist/components/codeblock.js +2 -6
  20. package/dist/components/codeblock.rsc.d.ts +21 -0
  21. package/dist/components/codeblock.rsc.js +22 -0
  22. package/dist/components/dialog/search-algolia.d.ts +1 -3
  23. package/dist/components/dialog/search-algolia.js +1 -5
  24. package/dist/components/dialog/search-default.d.ts +1 -3
  25. package/dist/components/dialog/search-default.js +1 -5
  26. package/dist/components/dialog/search-orama.d.ts +1 -3
  27. package/dist/components/dialog/search-orama.js +1 -5
  28. package/dist/components/dialog/search.d.ts +5 -5
  29. package/dist/components/dialog/search.js +124 -47
  30. package/dist/components/dynamic-codeblock.core.d.ts +7 -5
  31. package/dist/components/dynamic-codeblock.core.js +17 -32
  32. package/dist/components/dynamic-codeblock.d.ts +5 -3
  33. package/dist/components/dynamic-codeblock.js +8 -13
  34. package/dist/components/files.d.ts +1 -2
  35. package/dist/components/files.js +4 -8
  36. package/dist/components/github-info.d.ts +22 -9
  37. package/dist/components/github-info.js +33 -28
  38. package/dist/components/heading.d.ts +1 -2
  39. package/dist/components/heading.js +2 -5
  40. package/dist/components/image-zoom.d.ts +1 -2
  41. package/dist/components/image-zoom.js +2 -5
  42. package/dist/components/inline-toc.d.ts +1 -2
  43. package/dist/components/inline-toc.js +1 -5
  44. package/dist/components/sidebar/base.d.ts +7 -3
  45. package/dist/components/sidebar/base.js +6 -16
  46. package/dist/components/sidebar/link-item.d.ts +2 -3
  47. package/dist/components/sidebar/link-item.js +6 -3
  48. package/dist/components/sidebar/page-tree.d.ts +1 -2
  49. package/dist/components/sidebar/page-tree.js +54 -43
  50. package/dist/components/sidebar/tabs/dropdown.d.ts +4 -7
  51. package/dist/components/sidebar/tabs/dropdown.js +4 -11
  52. package/dist/components/sidebar/tabs/index.d.ts +3 -17
  53. package/dist/components/sidebar/tabs/index.js +0 -3
  54. package/dist/components/steps.d.ts +1 -2
  55. package/dist/components/steps.js +0 -3
  56. package/dist/components/tabs.d.ts +11 -7
  57. package/dist/components/tabs.js +13 -18
  58. package/dist/components/toc/clerk.d.ts +9 -2
  59. package/dist/components/toc/clerk.js +117 -62
  60. package/dist/components/toc/default.d.ts +9 -2
  61. package/dist/components/toc/default.js +28 -21
  62. package/dist/components/toc/index.d.ts +8 -5
  63. package/dist/components/toc/index.js +50 -25
  64. package/dist/components/type-table.d.ts +10 -5
  65. package/dist/components/type-table.js +22 -17
  66. package/dist/components/ui/accordion.d.ts +1 -2
  67. package/dist/components/ui/accordion.js +1 -5
  68. package/dist/components/ui/button.d.ts +2 -3
  69. package/dist/components/ui/button.js +0 -3
  70. package/dist/components/ui/collapsible.d.ts +1 -2
  71. package/dist/components/ui/collapsible.js +2 -6
  72. package/dist/components/ui/navigation-menu.d.ts +26 -12
  73. package/dist/components/ui/navigation-menu.js +52 -30
  74. package/dist/components/ui/popover.d.ts +10 -5
  75. package/dist/components/ui/popover.js +14 -18
  76. package/dist/components/ui/scroll-area.d.ts +17 -7
  77. package/dist/components/ui/scroll-area.js +26 -30
  78. package/dist/components/ui/tabs.d.ts +1 -2
  79. package/dist/components/ui/tabs.js +1 -5
  80. package/dist/contexts/i18n.d.ts +7 -5
  81. package/dist/contexts/i18n.js +3 -8
  82. package/dist/contexts/search.d.ts +2 -2
  83. package/dist/contexts/search.js +4 -6
  84. package/dist/contexts/tree.d.ts +1 -2
  85. package/dist/contexts/tree.js +1 -5
  86. package/dist/i18n.d.ts +16 -9
  87. package/dist/i18n.js +14 -14
  88. package/dist/layouts/docs/client.d.ts +30 -29
  89. package/dist/layouts/docs/client.js +72 -48
  90. package/dist/layouts/docs/index.d.ts +19 -33
  91. package/dist/layouts/docs/index.js +16 -172
  92. package/dist/layouts/docs/page/index.d.ts +67 -55
  93. package/dist/layouts/docs/page/index.js +74 -54
  94. package/dist/layouts/docs/page/slots/breadcrumb.d.ts +14 -0
  95. package/dist/layouts/docs/page/slots/breadcrumb.js +44 -0
  96. package/dist/layouts/docs/page/slots/container.d.ts +7 -0
  97. package/dist/layouts/docs/page/slots/container.js +17 -0
  98. package/dist/layouts/docs/page/slots/footer.d.ts +23 -0
  99. package/dist/layouts/docs/page/slots/footer.js +56 -0
  100. package/dist/layouts/docs/page/slots/toc.d.ts +55 -0
  101. package/dist/layouts/docs/page/slots/toc.js +166 -0
  102. package/dist/layouts/docs/slots/container.d.ts +7 -0
  103. package/dist/layouts/docs/slots/container.js +29 -0
  104. package/dist/layouts/docs/slots/header.d.ts +8 -0
  105. package/dist/layouts/docs/slots/header.js +38 -0
  106. package/dist/layouts/docs/slots/sidebar.d.ts +30 -0
  107. package/dist/layouts/docs/slots/sidebar.js +319 -0
  108. package/dist/layouts/flux/index.d.ts +34 -39
  109. package/dist/layouts/flux/index.js +77 -99
  110. package/dist/layouts/flux/page/index.d.ts +56 -49
  111. package/dist/layouts/flux/page/index.js +63 -35
  112. package/dist/layouts/flux/page/slots/breadcrumb.d.ts +14 -0
  113. package/dist/layouts/flux/page/slots/breadcrumb.js +44 -0
  114. package/dist/layouts/flux/page/slots/container.d.ts +7 -0
  115. package/dist/layouts/flux/page/slots/container.js +17 -0
  116. package/dist/layouts/flux/page/slots/footer.d.ts +23 -0
  117. package/dist/layouts/flux/page/slots/footer.js +56 -0
  118. package/dist/layouts/flux/page/slots/toc.d.ts +34 -0
  119. package/dist/layouts/flux/page/slots/toc.js +172 -0
  120. package/dist/layouts/flux/slots/container.d.ts +7 -0
  121. package/dist/layouts/flux/slots/container.js +13 -0
  122. package/dist/layouts/flux/slots/sidebar.d.ts +23 -0
  123. package/dist/layouts/flux/{sidebar.js → slots/sidebar.js} +74 -34
  124. package/dist/layouts/flux/slots/tab-dropdown.d.ts +17 -0
  125. package/dist/layouts/flux/{tab-dropdown.js → slots/tab-dropdown.js} +13 -24
  126. package/dist/layouts/home/index.d.ts +24 -7
  127. package/dist/layouts/home/index.js +39 -19
  128. package/dist/layouts/home/navbar.d.ts +5 -14
  129. package/dist/layouts/home/navbar.js +10 -12
  130. package/dist/layouts/home/not-found.d.ts +9 -0
  131. package/dist/layouts/home/not-found.js +38 -0
  132. package/dist/layouts/home/slots/container.d.ts +7 -0
  133. package/dist/layouts/home/slots/container.js +13 -0
  134. package/dist/layouts/home/slots/header.d.ts +11 -0
  135. package/dist/layouts/home/slots/header.js +242 -0
  136. package/dist/layouts/notebook/client.d.ts +32 -44
  137. package/dist/layouts/notebook/client.js +57 -147
  138. package/dist/layouts/notebook/index.d.ts +25 -24
  139. package/dist/layouts/notebook/index.js +16 -212
  140. package/dist/layouts/notebook/page/index.d.ts +67 -55
  141. package/dist/layouts/notebook/page/index.js +74 -54
  142. package/dist/layouts/notebook/page/slots/breadcrumb.d.ts +14 -0
  143. package/dist/layouts/notebook/page/slots/breadcrumb.js +44 -0
  144. package/dist/layouts/notebook/page/slots/container.d.ts +7 -0
  145. package/dist/layouts/notebook/page/slots/container.js +17 -0
  146. package/dist/layouts/notebook/page/slots/footer.d.ts +23 -0
  147. package/dist/layouts/notebook/page/slots/footer.js +56 -0
  148. package/dist/layouts/notebook/page/slots/toc.d.ts +55 -0
  149. package/dist/layouts/notebook/page/slots/toc.js +165 -0
  150. package/dist/layouts/notebook/slots/container.d.ts +7 -0
  151. package/dist/layouts/notebook/slots/container.js +31 -0
  152. package/dist/layouts/notebook/slots/header.d.ts +8 -0
  153. package/dist/layouts/notebook/slots/header.js +194 -0
  154. package/dist/layouts/notebook/slots/sidebar.d.ts +40 -0
  155. package/dist/layouts/notebook/slots/sidebar.js +297 -0
  156. package/dist/layouts/shared/client.d.ts +45 -0
  157. package/dist/layouts/shared/client.js +84 -0
  158. package/dist/layouts/shared/index.d.ts +136 -34
  159. package/dist/layouts/shared/index.js +49 -17
  160. package/dist/layouts/shared/page-actions.d.ts +36 -0
  161. package/dist/layouts/shared/page-actions.js +190 -0
  162. package/dist/layouts/shared/slots/language-select.d.ts +10 -0
  163. package/dist/layouts/shared/{language-toggle.js → slots/language-select.js} +11 -15
  164. package/dist/layouts/shared/slots/search-trigger.d.ts +23 -0
  165. package/dist/layouts/shared/{search-toggle.js → slots/search-trigger.js} +9 -13
  166. package/dist/layouts/shared/slots/theme-switch.d.ts +14 -0
  167. package/dist/layouts/shared/{theme-toggle.js → slots/theme-switch.js} +5 -9
  168. package/dist/mdx.d.ts +13 -3
  169. package/dist/mdx.js +0 -4
  170. package/dist/mdx.server.d.ts +1 -2
  171. package/dist/mdx.server.js +0 -3
  172. package/dist/og/takumi.d.ts +21 -0
  173. package/dist/og/takumi.js +70 -0
  174. package/dist/og.d.ts +1 -2
  175. package/dist/og.js +6 -6
  176. package/dist/page.d.ts +3 -4
  177. package/dist/page.js +6 -11
  178. package/dist/provider/base.d.ts +1 -2
  179. package/dist/provider/base.js +2 -6
  180. package/dist/provider/next.d.ts +1 -2
  181. package/dist/provider/next.js +1 -5
  182. package/dist/provider/react-router.d.ts +1 -2
  183. package/dist/provider/react-router.js +1 -5
  184. package/dist/provider/tanstack.d.ts +1 -2
  185. package/dist/provider/tanstack.js +1 -5
  186. package/dist/provider/waku.d.ts +1 -2
  187. package/dist/provider/waku.js +1 -5
  188. package/dist/style.css +433 -166
  189. package/dist/tailwind/typography.d.ts +2 -0
  190. package/dist/tailwind/typography.js +2 -0
  191. package/dist/utils/cn.js +1 -2
  192. package/dist/utils/merge-refs.js +0 -2
  193. package/dist/utils/urls.js +1 -3
  194. package/dist/utils/use-copy-button.d.ts +1 -2
  195. package/dist/utils/use-copy-button.js +1 -5
  196. package/dist/utils/use-footer-items.d.ts +1 -2
  197. package/dist/utils/use-footer-items.js +4 -8
  198. package/dist/utils/use-is-scroll-top.d.ts +1 -2
  199. package/dist/utils/use-is-scroll-top.js +1 -5
  200. package/package.json +139 -103
  201. package/LICENSE +0 -21
  202. package/dist/components/accordion.d.ts.map +0 -1
  203. package/dist/components/accordion.js.map +0 -1
  204. package/dist/components/banner.d.ts.map +0 -1
  205. package/dist/components/banner.js.map +0 -1
  206. package/dist/components/callout.d.ts.map +0 -1
  207. package/dist/components/callout.js.map +0 -1
  208. package/dist/components/card.d.ts.map +0 -1
  209. package/dist/components/card.js.map +0 -1
  210. package/dist/components/codeblock.d.ts.map +0 -1
  211. package/dist/components/codeblock.js.map +0 -1
  212. package/dist/components/dialog/search-algolia.d.ts.map +0 -1
  213. package/dist/components/dialog/search-algolia.js.map +0 -1
  214. package/dist/components/dialog/search-default.d.ts.map +0 -1
  215. package/dist/components/dialog/search-default.js.map +0 -1
  216. package/dist/components/dialog/search-orama.d.ts.map +0 -1
  217. package/dist/components/dialog/search-orama.js.map +0 -1
  218. package/dist/components/dialog/search.d.ts.map +0 -1
  219. package/dist/components/dialog/search.js.map +0 -1
  220. package/dist/components/dynamic-codeblock.core.d.ts.map +0 -1
  221. package/dist/components/dynamic-codeblock.core.js.map +0 -1
  222. package/dist/components/dynamic-codeblock.d.ts.map +0 -1
  223. package/dist/components/dynamic-codeblock.js.map +0 -1
  224. package/dist/components/files.d.ts.map +0 -1
  225. package/dist/components/files.js.map +0 -1
  226. package/dist/components/github-info.d.ts.map +0 -1
  227. package/dist/components/github-info.js.map +0 -1
  228. package/dist/components/heading.d.ts.map +0 -1
  229. package/dist/components/heading.js.map +0 -1
  230. package/dist/components/image-zoom-DGvp66QF.css +0 -80
  231. package/dist/components/image-zoom-DGvp66QF.css.map +0 -1
  232. package/dist/components/image-zoom.d.ts.map +0 -1
  233. package/dist/components/image-zoom.js.map +0 -1
  234. package/dist/components/image-zoom2.js +0 -1
  235. package/dist/components/inline-toc.d.ts.map +0 -1
  236. package/dist/components/inline-toc.js.map +0 -1
  237. package/dist/components/sidebar/base.d.ts.map +0 -1
  238. package/dist/components/sidebar/base.js.map +0 -1
  239. package/dist/components/sidebar/link-item.d.ts.map +0 -1
  240. package/dist/components/sidebar/link-item.js.map +0 -1
  241. package/dist/components/sidebar/page-tree.d.ts.map +0 -1
  242. package/dist/components/sidebar/page-tree.js.map +0 -1
  243. package/dist/components/sidebar/tabs/dropdown.d.ts.map +0 -1
  244. package/dist/components/sidebar/tabs/dropdown.js.map +0 -1
  245. package/dist/components/sidebar/tabs/index.d.ts.map +0 -1
  246. package/dist/components/sidebar/tabs/index.js.map +0 -1
  247. package/dist/components/steps.d.ts.map +0 -1
  248. package/dist/components/steps.js.map +0 -1
  249. package/dist/components/tabs.d.ts.map +0 -1
  250. package/dist/components/tabs.js.map +0 -1
  251. package/dist/components/toc/clerk.d.ts.map +0 -1
  252. package/dist/components/toc/clerk.js.map +0 -1
  253. package/dist/components/toc/default.d.ts.map +0 -1
  254. package/dist/components/toc/default.js.map +0 -1
  255. package/dist/components/toc/index.d.ts.map +0 -1
  256. package/dist/components/toc/index.js.map +0 -1
  257. package/dist/components/type-table.d.ts.map +0 -1
  258. package/dist/components/type-table.js.map +0 -1
  259. package/dist/components/ui/accordion.d.ts.map +0 -1
  260. package/dist/components/ui/accordion.js.map +0 -1
  261. package/dist/components/ui/button.d.ts.map +0 -1
  262. package/dist/components/ui/button.js.map +0 -1
  263. package/dist/components/ui/collapsible.d.ts.map +0 -1
  264. package/dist/components/ui/collapsible.js.map +0 -1
  265. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  266. package/dist/components/ui/navigation-menu.js.map +0 -1
  267. package/dist/components/ui/popover.d.ts.map +0 -1
  268. package/dist/components/ui/popover.js.map +0 -1
  269. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  270. package/dist/components/ui/scroll-area.js.map +0 -1
  271. package/dist/components/ui/tabs.d.ts.map +0 -1
  272. package/dist/components/ui/tabs.js.map +0 -1
  273. package/dist/contexts/i18n.d.ts.map +0 -1
  274. package/dist/contexts/i18n.js.map +0 -1
  275. package/dist/contexts/search.d.ts.map +0 -1
  276. package/dist/contexts/search.js.map +0 -1
  277. package/dist/contexts/tree.d.ts.map +0 -1
  278. package/dist/contexts/tree.js.map +0 -1
  279. package/dist/i18n.d.ts.map +0 -1
  280. package/dist/i18n.js.map +0 -1
  281. package/dist/layouts/docs/client.d.ts.map +0 -1
  282. package/dist/layouts/docs/client.js.map +0 -1
  283. package/dist/layouts/docs/index.d.ts.map +0 -1
  284. package/dist/layouts/docs/index.js.map +0 -1
  285. package/dist/layouts/docs/page/client.d.ts +0 -48
  286. package/dist/layouts/docs/page/client.d.ts.map +0 -1
  287. package/dist/layouts/docs/page/client.js +0 -227
  288. package/dist/layouts/docs/page/client.js.map +0 -1
  289. package/dist/layouts/docs/page/index.d.ts.map +0 -1
  290. package/dist/layouts/docs/page/index.js.map +0 -1
  291. package/dist/layouts/docs/sidebar.d.ts +0 -64
  292. package/dist/layouts/docs/sidebar.d.ts.map +0 -1
  293. package/dist/layouts/docs/sidebar.js +0 -162
  294. package/dist/layouts/docs/sidebar.js.map +0 -1
  295. package/dist/layouts/flux/index.d.ts.map +0 -1
  296. package/dist/layouts/flux/index.js.map +0 -1
  297. package/dist/layouts/flux/page/client.d.ts +0 -45
  298. package/dist/layouts/flux/page/client.d.ts.map +0 -1
  299. package/dist/layouts/flux/page/client.js +0 -255
  300. package/dist/layouts/flux/page/client.js.map +0 -1
  301. package/dist/layouts/flux/page/index.d.ts.map +0 -1
  302. package/dist/layouts/flux/page/index.js.map +0 -1
  303. package/dist/layouts/flux/sidebar.d.ts +0 -59
  304. package/dist/layouts/flux/sidebar.d.ts.map +0 -1
  305. package/dist/layouts/flux/sidebar.js.map +0 -1
  306. package/dist/layouts/flux/tab-dropdown.d.ts +0 -21
  307. package/dist/layouts/flux/tab-dropdown.d.ts.map +0 -1
  308. package/dist/layouts/flux/tab-dropdown.js.map +0 -1
  309. package/dist/layouts/home/client.d.ts +0 -19
  310. package/dist/layouts/home/client.d.ts.map +0 -1
  311. package/dist/layouts/home/client.js +0 -267
  312. package/dist/layouts/home/client.js.map +0 -1
  313. package/dist/layouts/home/index.d.ts.map +0 -1
  314. package/dist/layouts/home/index.js.map +0 -1
  315. package/dist/layouts/home/navbar.d.ts.map +0 -1
  316. package/dist/layouts/home/navbar.js.map +0 -1
  317. package/dist/layouts/notebook/client.d.ts.map +0 -1
  318. package/dist/layouts/notebook/client.js.map +0 -1
  319. package/dist/layouts/notebook/index.d.ts.map +0 -1
  320. package/dist/layouts/notebook/index.js.map +0 -1
  321. package/dist/layouts/notebook/page/client.d.ts +0 -48
  322. package/dist/layouts/notebook/page/client.d.ts.map +0 -1
  323. package/dist/layouts/notebook/page/client.js +0 -227
  324. package/dist/layouts/notebook/page/client.js.map +0 -1
  325. package/dist/layouts/notebook/page/index.d.ts.map +0 -1
  326. package/dist/layouts/notebook/page/index.js.map +0 -1
  327. package/dist/layouts/notebook/sidebar.d.ts +0 -60
  328. package/dist/layouts/notebook/sidebar.d.ts.map +0 -1
  329. package/dist/layouts/notebook/sidebar.js +0 -133
  330. package/dist/layouts/notebook/sidebar.js.map +0 -1
  331. package/dist/layouts/shared/index.d.ts.map +0 -1
  332. package/dist/layouts/shared/index.js.map +0 -1
  333. package/dist/layouts/shared/language-toggle.d.ts +0 -10
  334. package/dist/layouts/shared/language-toggle.d.ts.map +0 -1
  335. package/dist/layouts/shared/language-toggle.js.map +0 -1
  336. package/dist/layouts/shared/search-toggle.d.ts +0 -23
  337. package/dist/layouts/shared/search-toggle.d.ts.map +0 -1
  338. package/dist/layouts/shared/search-toggle.js.map +0 -1
  339. package/dist/layouts/shared/theme-toggle.d.ts +0 -14
  340. package/dist/layouts/shared/theme-toggle.d.ts.map +0 -1
  341. package/dist/layouts/shared/theme-toggle.js.map +0 -1
  342. package/dist/mdx.d.ts.map +0 -1
  343. package/dist/mdx.js.map +0 -1
  344. package/dist/mdx.server.d.ts.map +0 -1
  345. package/dist/mdx.server.js.map +0 -1
  346. package/dist/og.d.ts.map +0 -1
  347. package/dist/og.js.map +0 -1
  348. package/dist/page.d.ts.map +0 -1
  349. package/dist/page.js.map +0 -1
  350. package/dist/provider/base.d.ts.map +0 -1
  351. package/dist/provider/base.js.map +0 -1
  352. package/dist/provider/next.d.ts.map +0 -1
  353. package/dist/provider/next.js.map +0 -1
  354. package/dist/provider/react-router.d.ts.map +0 -1
  355. package/dist/provider/react-router.js.map +0 -1
  356. package/dist/provider/tanstack.d.ts.map +0 -1
  357. package/dist/provider/tanstack.js.map +0 -1
  358. package/dist/provider/waku.d.ts.map +0 -1
  359. package/dist/provider/waku.js.map +0 -1
  360. package/dist/utils/link-item.d.ts +0 -86
  361. package/dist/utils/link-item.d.ts.map +0 -1
  362. package/dist/utils/link-item.js +0 -25
  363. package/dist/utils/link-item.js.map +0 -1
  364. package/dist/utils/merge-refs.js.map +0 -1
  365. package/dist/utils/urls.js.map +0 -1
  366. package/dist/utils/use-copy-button.d.ts.map +0 -1
  367. package/dist/utils/use-copy-button.js.map +0 -1
  368. package/dist/utils/use-footer-items.d.ts.map +0 -1
  369. package/dist/utils/use-footer-items.js.map +0 -1
  370. package/dist/utils/use-is-scroll-top.d.ts.map +0 -1
  371. package/dist/utils/use-is-scroll-top.js.map +0 -1
@@ -1,59 +0,0 @@
1
- import { SidebarCollapseTrigger as SidebarCollapseTrigger$1, SidebarFolder as SidebarFolder$1, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarProvider, SidebarTrigger as SidebarTrigger$1, SidebarViewport as SidebarViewport$1 } from "../../components/sidebar/base.js";
2
- import { LinkItemType } from "../../utils/link-item.js";
3
- import { SidebarPageTreeComponents } from "../../components/sidebar/page-tree.js";
4
- import "../shared/index.js";
5
- import * as react from "react";
6
- import { ComponentProps } from "react";
7
- import * as react_jsx_runtime0 from "react/jsx-runtime";
8
-
9
- //#region src/layouts/flux/sidebar.d.ts
10
- declare function Sidebar(props: ComponentProps<typeof SidebarProvider>): react_jsx_runtime0.JSX.Element;
11
- declare function SidebarFolder(props: ComponentProps<typeof SidebarFolder$1>): react_jsx_runtime0.JSX.Element;
12
- declare function SidebarCollapseTrigger(props: ComponentProps<typeof SidebarCollapseTrigger$1>): react_jsx_runtime0.JSX.Element;
13
- declare function SidebarViewport(props: ComponentProps<typeof SidebarViewport$1>): react_jsx_runtime0.JSX.Element;
14
- declare function SidebarTrigger(props: ComponentProps<typeof SidebarTrigger$1>): react_jsx_runtime0.JSX.Element;
15
- declare function SidebarContent({
16
- ref: refProp,
17
- className,
18
- children,
19
- ...props
20
- }: ComponentProps<'aside'>): react_jsx_runtime0.JSX.Element;
21
- declare function SidebarSeparator({
22
- className,
23
- style,
24
- children,
25
- ...props
26
- }: ComponentProps<'p'>): react_jsx_runtime0.JSX.Element;
27
- declare function SidebarItem({
28
- className,
29
- style,
30
- children,
31
- ...props
32
- }: ComponentProps<typeof SidebarItem$1>): react_jsx_runtime0.JSX.Element;
33
- declare function SidebarFolderTrigger({
34
- className,
35
- style,
36
- ...props
37
- }: ComponentProps<typeof SidebarFolderTrigger$1>): react_jsx_runtime0.JSX.Element;
38
- declare function SidebarFolderLink({
39
- className,
40
- style,
41
- ...props
42
- }: ComponentProps<typeof SidebarFolderLink$1>): react_jsx_runtime0.JSX.Element;
43
- declare function SidebarFolderContent({
44
- className,
45
- children,
46
- ...props
47
- }: ComponentProps<typeof SidebarFolderContent$1>): react_jsx_runtime0.JSX.Element;
48
- declare const SidebarPageTree: (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime0.JSX.Element;
49
- declare const SidebarLinkItem: ({
50
- item,
51
- ...props
52
- }: react.HTMLAttributes<HTMLElement> & {
53
- item: Exclude<LinkItemType, {
54
- type: "icon";
55
- }>;
56
- }) => react_jsx_runtime0.JSX.Element;
57
- //#endregion
58
- export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
59
- //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/layouts/flux/sidebar.tsx"],"mappings":";;;;;;;;;iBAoCgB,OAAA,CAAQ,KAAA,EAAO,cAAA,QAAsB,eAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI1D,aAAA,CAAc,KAAA,EAAO,cAAA,QAAsB,eAAA,IAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI9D,sBAAA,CAAuB,KAAA,EAAO,cAAA,QAAsB,wBAAA,IAA4B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIhF,eAAA,CAAgB,KAAA,EAAO,cAAA,QAAsB,iBAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIlE,cAAA,CAAe,KAAA,EAAO,cAAA,QAAsB,gBAAA,IAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIhE,cAAA,CAAA;EACd,GAAA,EAAK,OAAA;EACL,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,YAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA0EV,gBAAA,CAAA;EAAmB,SAAA;EAAW,KAAA;EAAO,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,QAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiB9E,WAAA,CAAA;EACd,SAAA;EACA,KAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,aAAA,IAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiB1B,oBAAA,CAAA;EACd,SAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,sBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuBnC,iBAAA,CAAA;EACd,SAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,mBAAA,IAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiBhC,oBAAA,CAAA;EACd,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,sBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAoCtC,eAAA,GAAe,UAAA,EAAA,OAAA,CAO1B,yBAAA,MAP0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cASf,eAAA;EAAe,IAAA;EAAA,GAAA;AAAA,GAAA,KAAA,CAAA,cAAA,CAAA,WAAA;gBAAA,YAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.js","names":["Base.SidebarItem","Base.SidebarFolderTrigger","Base.SidebarFolderLink","Base.SidebarFolderContent","Base.SidebarProvider","Base.SidebarFolder","Base.SidebarCollapseTrigger","Base.SidebarViewport","Base.SidebarTrigger","Base.useSidebar","Base.useFolderDepth","Base.SidebarSeparator","Base.useFolder"],"sources":["../../../src/layouts/flux/sidebar.tsx"],"sourcesContent":["'use client';\nimport * as Base from '@/components/sidebar/base';\nimport { cn } from '@/utils/cn';\nimport { type ComponentProps, useEffect, useEffectEvent, useRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { createPageTreeRenderer } from '@/components/sidebar/page-tree';\nimport { createLinkItemRenderer } from '@/components/sidebar/link-item';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { motion } from 'motion/react';\nimport { RemoveScroll } from 'react-remove-scroll';\n\nconst MotionSidebarItem = motion.create(Base.SidebarItem);\nconst MotionSidebarFolderTrigger = motion.create(Base.SidebarFolderTrigger);\nconst MotionSidebarFolderLink = motion.create(Base.SidebarFolderLink);\nconst MotionSidebarFolderContent = motion.create(Base.SidebarFolderContent);\n\nconst itemVariants = cva(\n 'relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n link: 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors',\n button:\n 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',\n },\n highlight: {\n true: \"data-[active=true]:before:content-[''] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5\",\n },\n },\n },\n);\n\nfunction getItemOffset(depth: number) {\n return `calc(${2 + 3 * depth} * var(--spacing))`;\n}\n\nexport function Sidebar(props: ComponentProps<typeof Base.SidebarProvider>) {\n return <Base.SidebarProvider {...props} />;\n}\n\nexport function SidebarFolder(props: ComponentProps<typeof Base.SidebarFolder>) {\n return <Base.SidebarFolder {...props} />;\n}\n\nexport function SidebarCollapseTrigger(props: ComponentProps<typeof Base.SidebarCollapseTrigger>) {\n return <Base.SidebarCollapseTrigger {...props} />;\n}\n\nexport function SidebarViewport(props: ComponentProps<typeof Base.SidebarViewport>) {\n return <Base.SidebarViewport {...props} />;\n}\n\nexport function SidebarTrigger(props: ComponentProps<typeof Base.SidebarTrigger>) {\n return <Base.SidebarTrigger {...props} />;\n}\n\nexport function SidebarContent({\n ref: refProp,\n className,\n children,\n ...props\n}: ComponentProps<'aside'>) {\n const ref = useRef<HTMLElement>(null);\n const { open, setOpen } = Base.useSidebar();\n\n const listener = useEffectEvent((e: KeyboardEvent) => {\n if (open && e.key === 'Escape') {\n setOpen(false);\n e.preventDefault();\n }\n });\n useEffect(() => {\n window.addEventListener('keydown', listener);\n return () => {\n window.removeEventListener('keydown', listener);\n };\n }, []);\n\n return (\n <RemoveScroll enabled={open}>\n <motion.div\n className={cn(\n 'fixed inset-0 py-10 z-30 backdrop-blur-md bg-fd-background/60',\n !open && 'pointer-events-none',\n )}\n initial=\"hide\"\n variants={{\n show: {\n opacity: 1,\n },\n hide: {\n opacity: 0,\n },\n }}\n animate={open ? 'show' : 'hide'}\n exit=\"hide\"\n onClick={() => {\n setOpen(false);\n }}\n >\n <motion.div\n className=\"absolute overflow-y-auto pr-(--removed-body-scroll-bar-size,0) [scrollbar-width:none] py-16 inset-0 bottom-26 overscroll-contain mask-[linear-gradient(to_bottom,transparent,white_calc(var(--spacing)*14),white_calc(100%-var(--spacing)*14),transparent)] lg:text-sm\"\n variants={{\n show: {\n y: 0,\n opacity: 1,\n },\n hide: {\n y: '80%',\n opacity: 0,\n },\n }}\n transition={{\n duration: 0.3,\n ease: [0.16, 1, 0.3, 1],\n opacity: {\n duration: 0.1,\n },\n }}\n >\n <motion.aside\n id=\"nd-sidebar\"\n ref={mergeRefs(ref, refProp)}\n className={cn('mx-auto sm:max-w-[400px]', className)}\n onClick={(e) => e.stopPropagation()}\n {...(props as ComponentProps<typeof motion.aside>)}\n >\n {children}\n </motion.aside>\n </motion.div>\n </motion.div>\n </RemoveScroll>\n );\n}\n\nexport function SidebarSeparator({ className, style, children, ...props }: ComponentProps<'p'>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarSeparator\n className={cn('[&_svg]:size-4 [&_svg]:shrink-0', className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...props}\n >\n {children}\n </Base.SidebarSeparator>\n );\n}\n\nexport function SidebarItem({\n className,\n style,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarItem>) {\n const depth = Base.useFolderDepth();\n\n return (\n <MotionSidebarItem\n className={cn(itemVariants({ variant: 'link', highlight: depth >= 1 }), className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...(props as object)}\n >\n {children}\n </MotionSidebarItem>\n );\n}\n\nexport function SidebarFolderTrigger({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderTrigger>) {\n const { depth, collapsible } = Base.useFolder()!;\n\n return (\n <MotionSidebarFolderTrigger\n className={(s) =>\n cn(\n itemVariants({ variant: collapsible ? 'button' : null }),\n 'w-full',\n typeof className === 'function' ? className(s) : className,\n )\n }\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...(props as ComponentProps<typeof MotionSidebarFolderTrigger>)}\n >\n {props.children}\n </MotionSidebarFolderTrigger>\n );\n}\n\nexport function SidebarFolderLink({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderLink>) {\n const depth = Base.useFolderDepth();\n\n return (\n <MotionSidebarFolderLink\n className={cn(itemVariants({ variant: 'link', highlight: depth > 1 }), 'w-full', className)}\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...(props as ComponentProps<typeof MotionSidebarFolderLink>)}\n >\n {props.children}\n </MotionSidebarFolderLink>\n );\n}\n\nexport function SidebarFolderContent({\n className,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderContent>) {\n const depth = Base.useFolderDepth();\n const { open } = Base.useFolder()!;\n\n return (\n <MotionSidebarFolderContent\n className={(s) =>\n cn(\n 'relative',\n depth === 1 &&\n \"before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5\",\n\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...(props as ComponentProps<typeof MotionSidebarFolderContent>)}\n >\n <motion.div\n initial=\"hide\"\n animate={open ? 'show' : 'hide'}\n exit=\"hide\"\n variants={{\n show: {\n opacity: 1,\n },\n hide: {\n opacity: 0,\n },\n }}\n >\n {children}\n </motion.div>\n </MotionSidebarFolderContent>\n );\n}\n\nexport const SidebarPageTree = createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarSeparator,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n});\n\nexport const SidebarLinkItem = createLinkItemRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n});\n"],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { SidebarTab } from "../../components/sidebar/tabs/index.js";
2
- import { ComponentProps, ReactNode } from "react";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
4
-
5
- //#region src/layouts/flux/tab-dropdown.d.ts
6
- interface SidebarTabWithProps extends SidebarTab {
7
- props?: ComponentProps<'a'>;
8
- }
9
- declare function SidebarTabsDropdown({
10
- options,
11
- placeholder,
12
- className,
13
- ...props
14
- }: {
15
- placeholder?: ReactNode;
16
- options: SidebarTabWithProps[];
17
- } & ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
18
- declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
19
- //#endregion
20
- export { SidebarTabWithProps, SidebarTabsDropdown, isTabActive };
21
- //# sourceMappingURL=tab-dropdown.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tab-dropdown.d.ts","names":[],"sources":["../../../src/layouts/flux/tab-dropdown.tsx"],"mappings":";;;;;UAYiB,mBAAA,SAA4B,UAAA;EAC3C,KAAA,GAAQ,cAAA;AAAA;AAAA,iBAGM,mBAAA,CAAA;EACd,OAAA;EACA,WAAA;EACA,SAAA;EAAA,GACG;AAAA;EAEH,WAAA,GAAc,SAAA;EACd,OAAA,EAAS,mBAAA;AAAA,IACP,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiGZ,WAAA,CAAY,GAAA,EAAK,UAAA,EAAY,QAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tab-dropdown.js","names":[],"sources":["../../../src/layouts/flux/tab-dropdown.tsx"],"sourcesContent":["'use client';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { type ComponentProps, type ReactNode, useMemo, useState } from 'react';\nimport Link from '@hanzo/docs-core/link';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { cn } from '@/utils/cn';\nimport { isActive, normalize } from '@/utils/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '@/components/sidebar/tabs';\nimport { AnimatePresence, motion } from 'motion/react';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\n className,\n ...props\n}: {\n placeholder?: ReactNode;\n options: SidebarTabWithProps[];\n} & ComponentProps<'button'>) {\n const [open, setOpen] = useState(false);\n const { closeOnRedirect } = useSidebar();\n const pathname = usePathname();\n const selectedIdx = useMemo(() => {\n return options.findLastIndex((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n const selected = selectedIdx !== -1 ? options[selectedIdx] : undefined;\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-4.5 shrink-0 empty:hidden\">{selected.icon}</div>\n <p className=\"font-medium\">{selected.title}</p>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n className={cn(\n 'flex items-center gap-2 rounded-full p-1.5 border shadow-sm text-sm text-start transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground data-open:bg-fd-accent data-open:text-fd-accent-foreground',\n className,\n )}\n {...props}\n >\n <AnimatePresence mode=\"popLayout\">\n <motion.span\n key={selectedIdx}\n className=\"flex w-full items-center text-nowrap gap-1.5\"\n initial={{\n opacity: 0,\n y: '100%',\n }}\n animate={{\n opacity: 1,\n y: 0,\n }}\n exit={{\n opacity: 0,\n y: '-100%',\n }}\n >\n {item}\n </motion.span>\n </AnimatePresence>\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent\n align=\"start\"\n className=\"flex flex-col gap-1 max-w-svw p-1 fd-scroll-container\"\n >\n {options.map((item, i) => {\n const isActive = i === selectedIdx;\n if (!isActive && item.unlisted) return;\n\n return (\n <Link\n key={item.url}\n href={item.url}\n onClick={onClick}\n {...item.props}\n className={cn(\n 'flex items-center gap-1.5 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground',\n item.props?.className,\n )}\n >\n <div className=\"shrink-0 mb-auto size-4.5 empty:hidden\">{item.icon}</div>\n <div>\n <p className=\"text-sm font-medium leading-none\">{item.title}</p>\n <p className=\"text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden\">\n {item.description}\n </p>\n </div>\n\n <Check\n className={cn(\n 'shrink-0 ms-auto size-3.5 text-fd-primary',\n !isActive && 'invisible',\n )}\n />\n </Link>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function isTabActive(tab: SidebarTab, pathname: string) {\n if (tab.urls) return tab.urls.has(normalize(pathname));\n\n return isActive(tab.url, pathname, true);\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,SAAgB,oBAAoB,EAClC,SACA,aACA,WACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAC9B,MAAM,cAAc,cAAc;AAChC,SAAO,QAAQ,eAAe,SAAS,YAAY,MAAM,SAAS,CAAC;IAClE,CAAC,SAAS,SAAS,CAAC;CACvB,MAAM,WAAW,gBAAgB,KAAK,QAAQ,eAAe;CAE7D,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,8CACE,oBAAC;EAAI,WAAU;YAAkC,SAAS;GAAW,EACrE,oBAAC;EAAE,WAAU;YAAe,SAAS;GAAU,IAC9C,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,WAAW,GACT,kNACA,UACD;GACD,GAAI;cAEJ,oBAAC;IAAgB,MAAK;cACpB,oBAAC,OAAO;KAEN,WAAU;KACV,SAAS;MACP,SAAS;MACT,GAAG;MACJ;KACD,SAAS;MACP,SAAS;MACT,GAAG;MACJ;KACD,MAAM;MACJ,SAAS;MACT,GAAG;MACJ;eAEA;OAfI,YAgBO;KACE,EAClB,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GACC,OAAM;GACN,WAAU;aAET,QAAQ,KAAK,MAAM,MAAM;IACxB,MAAM,WAAW,MAAM;AACvB,QAAI,CAAC,YAAY,KAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAM,KAAK;KACF;KACT,GAAI,KAAK;KACT,WAAW,GACT,iGACA,KAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAA0C,KAAK;QAAW;MACzE,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoC,KAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACV,KAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAAC,YAAY,YACd,GACD;;OAtBG,KAAK,IAuBL;KAET;IACa;GACT;;AAId,SAAgB,YAAY,KAAiB,UAAkB;AAC7D,KAAI,IAAI,KAAM,QAAO,IAAI,KAAK,IAAI,UAAU,SAAS,CAAC;AAEtD,QAAO,SAAS,IAAI,KAAK,UAAU,KAAK"}
@@ -1,19 +0,0 @@
1
- import { HomeLayoutProps } from "./index.js";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
- import * as class_variance_authority_types0 from "class-variance-authority/types";
4
-
5
- //#region src/layouts/home/client.d.ts
6
- declare const navItemVariants: (props?: ({
7
- variant?: "main" | "icon" | "button" | null | undefined;
8
- } & class_variance_authority_types0.ClassProp) | undefined) => string;
9
- declare function Header({
10
- nav,
11
- i18n,
12
- links,
13
- githubUrl,
14
- themeSwitch,
15
- searchToggle
16
- }: HomeLayoutProps): react_jsx_runtime0.JSX.Element;
17
- //#endregion
18
- export { Header, navItemVariants };
19
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/layouts/home/client.tsx"],"mappings":";;;;;cAuCa,eAAA,GAAe,KAAA;;IAiB1B,+BAAA,CAAA,SAAA;AAAA,iBAEc,MAAA,CAAA;EACd,GAAA;EACA,IAAA;EACA,KAAA;EACA,SAAA;EACA,WAAA;EACA;AAAA,GACC,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,267 +0,0 @@
1
- 'use client';
2
-
3
- import { cn } from "../../utils/cn.js";
4
- import { buttonVariants } from "../../components/ui/button.js";
5
- import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../components/ui/collapsible.js";
6
- import { useIsScrollTop } from "../../utils/use-is-scroll-top.js";
7
- import { LinkItem } from "../../utils/link-item.js";
8
- import { NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuRoot, NavigationMenuTrigger } from "../../components/ui/navigation-menu.js";
9
- import { LargeSearchToggle, SearchToggle } from "../shared/search-toggle.js";
10
- import { renderTitleNav, useLinkItems } from "../shared/index.js";
11
- import { LanguageToggle, LanguageToggleText } from "../shared/language-toggle.js";
12
- import { ThemeToggle } from "../shared/theme-toggle.js";
13
- import { Fragment, createContext, use, useEffect, useEffectEvent, useMemo, useState } from "react";
14
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
15
- import Link from "@hanzo/docs-core/link";
16
- import { ChevronDown, Languages } from "lucide-react";
17
- import { cva } from "class-variance-authority";
18
- import { NavigationMenu } from "@base-ui/react";
19
-
20
- //#region src/layouts/home/client.tsx
21
- const MobileMenuContext = createContext(null);
22
- const navItemVariants = cva("[&_svg]:size-4", {
23
- variants: { variant: {
24
- main: "inline-flex items-center gap-1 p-2 text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary data-popup-open:text-fd-primary",
25
- button: buttonVariants({
26
- color: "secondary",
27
- className: "gap-1.5"
28
- }),
29
- icon: buttonVariants({
30
- color: "ghost",
31
- size: "icon"
32
- })
33
- } },
34
- defaultVariants: { variant: "main" }
35
- });
36
- function Header({ nav = {}, i18n = false, links, githubUrl, themeSwitch = {}, searchToggle = {} }) {
37
- const { menuItems, navItems } = useLinkItems({
38
- links,
39
- githubUrl
40
- });
41
- return /* @__PURE__ */ jsx(MobileMenuCollapsible, { render: (_, s) => /* @__PURE__ */ jsxs(HeaderRoot, {
42
- transparentMode: nav.transparentMode,
43
- className: cn(s.open && "shadow-lg rounded-b-2xl"),
44
- children: [
45
- /* @__PURE__ */ jsxs(NavigationMenuList, {
46
- className: "flex h-14 w-full items-center px-4",
47
- children: [
48
- renderTitleNav(nav, { className: "inline-flex items-center gap-2.5 font-semibold" }),
49
- nav.children,
50
- /* @__PURE__ */ jsx("ul", {
51
- className: "flex flex-row items-center gap-2 px-6 max-sm:hidden",
52
- children: navItems.filter((item) => !isSecondary(item)).map((item, i) => /* @__PURE__ */ jsx(NavigationMenuLinkItem, {
53
- item,
54
- className: "text-sm"
55
- }, i))
56
- }),
57
- /* @__PURE__ */ jsxs("div", {
58
- className: "flex flex-row items-center justify-end gap-1.5 flex-1 max-lg:hidden",
59
- children: [
60
- searchToggle.enabled !== false && (searchToggle.components?.lg ?? /* @__PURE__ */ jsx(LargeSearchToggle, {
61
- className: "w-full rounded-full ps-2.5 max-w-[240px]",
62
- hideIfDisabled: true
63
- })),
64
- themeSwitch.enabled !== false && (themeSwitch.component ?? /* @__PURE__ */ jsx(ThemeToggle, { mode: themeSwitch?.mode })),
65
- i18n && /* @__PURE__ */ jsx(LanguageToggle, { children: /* @__PURE__ */ jsx(Languages, { className: "size-5" }) }),
66
- /* @__PURE__ */ jsx("ul", {
67
- className: "flex flex-row gap-2 items-center empty:hidden",
68
- children: navItems.filter(isSecondary).map((item, i) => /* @__PURE__ */ jsx(NavigationMenuLinkItem, {
69
- className: cn(item.type === "icon" && "-mx-1 first:ms-0 last:me-0"),
70
- item
71
- }, i))
72
- })
73
- ]
74
- }),
75
- /* @__PURE__ */ jsxs("ul", {
76
- className: "flex flex-row items-center ms-auto -me-1.5 lg:hidden",
77
- children: [searchToggle.enabled !== false && (searchToggle.components?.sm ?? /* @__PURE__ */ jsx(SearchToggle, {
78
- className: "p-2",
79
- hideIfDisabled: true
80
- })), /* @__PURE__ */ jsx(CollapsibleTrigger, {
81
- "aria-label": "Toggle Menu",
82
- className: cn(buttonVariants({
83
- size: "icon",
84
- color: "ghost",
85
- className: "group [&_svg]:size-5.5"
86
- })),
87
- children: /* @__PURE__ */ jsx(ChevronDown, { className: "transition-transform duration-300 group-data-panel-open:rotate-180" })
88
- })]
89
- })
90
- ]
91
- }),
92
- /* @__PURE__ */ jsxs(CollapsibleContent, {
93
- className: "flex flex-col px-4",
94
- children: [menuItems.filter((item) => !isSecondary(item)).map((item, i) => /* @__PURE__ */ jsx(MobileMenuLinkItem, {
95
- item,
96
- className: "first:mt-4 sm:hidden"
97
- }, i)), /* @__PURE__ */ jsxs("div", {
98
- className: "-ms-1.5 flex flex-row pt-2 pb-4 items-center justify-end gap-2",
99
- children: [
100
- menuItems.filter(isSecondary).map((item, i) => /* @__PURE__ */ jsx(MobileMenuLinkItem, {
101
- item,
102
- className: cn(item.type === "icon" && "-mx-1 first:ms-0")
103
- }, i)),
104
- /* @__PURE__ */ jsx("div", {
105
- role: "separator",
106
- className: "flex-1 sm:hidden"
107
- }),
108
- i18n && /* @__PURE__ */ jsxs(LanguageToggle, { children: [
109
- /* @__PURE__ */ jsx(Languages, { className: "size-5" }),
110
- /* @__PURE__ */ jsx(LanguageToggleText, {}),
111
- /* @__PURE__ */ jsx(ChevronDown, { className: "size-3 text-fd-muted-foreground" })
112
- ] }),
113
- themeSwitch.enabled !== false && (themeSwitch.component ?? /* @__PURE__ */ jsx(ThemeToggle, { mode: themeSwitch?.mode }))
114
- ]
115
- })]
116
- }),
117
- /* @__PURE__ */ jsx(NavigationMenu.Portal, { children: /* @__PURE__ */ jsx(NavigationMenu.Positioner, {
118
- sideOffset: 10,
119
- className: "z-20 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[left,right] duration-(--duration) ease-(--easing) data-instant:transition-none",
120
- style: {
121
- ["--duration"]: "0.35s",
122
- ["--easing"]: "cubic-bezier(0.22, 1, 0.36, 1)"
123
- },
124
- children: /* @__PURE__ */ jsx(NavigationMenu.Popup, {
125
- className: "relative w-(--popup-width) h-(--popup-height) max-w-(--fd-layout-width,1400px) origin-(--transform-origin) rounded-xl bg-fd-background/80 border backdrop-blur-lg shadow-lg transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0",
126
- children: /* @__PURE__ */ jsx(NavigationMenu.Viewport, { className: "relative size-full overflow-hidden" })
127
- })
128
- }) })
129
- ]
130
- }) });
131
- }
132
- function MobileMenuCollapsible(props) {
133
- const [open, setOpen] = useState(false);
134
- const onClick = useEffectEvent((e) => {
135
- if (!open) return;
136
- const header = document.getElementById("nd-nav");
137
- if (header && !header.contains(e.target)) setOpen(false);
138
- });
139
- useEffect(() => {
140
- window.addEventListener("click", onClick);
141
- return () => {
142
- window.removeEventListener("click", onClick);
143
- };
144
- }, []);
145
- return /* @__PURE__ */ jsx(MobileMenuContext, {
146
- value: useMemo(() => ({
147
- open,
148
- setOpen
149
- }), [open]),
150
- children: /* @__PURE__ */ jsx(Collapsible, {
151
- open,
152
- onOpenChange: setOpen,
153
- ...props
154
- })
155
- });
156
- }
157
- function isSecondary(item) {
158
- if ("secondary" in item && item.secondary != null) return item.secondary;
159
- return item.type === "icon";
160
- }
161
- function HeaderRoot({ transparentMode = "none", children, className, ...props }) {
162
- const isTop = useIsScrollTop({ enabled: transparentMode === "top" }) ?? true;
163
- const isTransparent = transparentMode === "top" ? isTop : transparentMode === "always";
164
- return /* @__PURE__ */ jsx("header", {
165
- id: "nd-nav",
166
- className: "sticky h-14 top-0 z-40",
167
- children: /* @__PURE__ */ jsx(NavigationMenuRoot, { render: (_, s) => /* @__PURE__ */ jsx("nav", {
168
- className: cn("w-full backdrop-blur-lg border-b transition-colors mx-auto max-w-(--fd-layout-width)", (!isTransparent || s.open) && "bg-fd-background/80", className),
169
- ...props,
170
- children
171
- }) })
172
- });
173
- }
174
- function NavigationMenuLinkItem({ item, ...props }) {
175
- if (item.type === "custom") return /* @__PURE__ */ jsx("div", {
176
- ...props,
177
- children: item.children
178
- });
179
- if (item.type === "menu") {
180
- const children = item.items.map((child, j) => {
181
- if (child.type === "custom") return /* @__PURE__ */ jsx(Fragment, { children: child.children }, j);
182
- const { banner = child.icon ? /* @__PURE__ */ jsx("div", {
183
- className: "w-fit rounded-md border bg-fd-muted p-1 [&_svg]:size-4",
184
- children: child.icon
185
- }) : null, ...rest } = child.menu ?? {};
186
- return /* @__PURE__ */ jsx(NavigationMenuLink, { render: /* @__PURE__ */ jsx(Link, {
187
- href: child.url,
188
- external: child.external,
189
- ...rest,
190
- className: cn("flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground", rest.className),
191
- children: rest.children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
192
- banner,
193
- /* @__PURE__ */ jsx("p", {
194
- className: "text-base font-medium",
195
- children: child.text
196
- }),
197
- /* @__PURE__ */ jsx("p", {
198
- className: "text-sm text-fd-muted-foreground empty:hidden",
199
- children: child.description
200
- })
201
- ] })
202
- }) }, `${j}-${child.url}`);
203
- });
204
- return /* @__PURE__ */ jsxs(NavigationMenuItem, {
205
- ...props,
206
- children: [/* @__PURE__ */ jsx(NavigationMenuTrigger, {
207
- className: cn(navItemVariants(), "rounded-md"),
208
- children: item.url ? /* @__PURE__ */ jsx(Link, {
209
- href: item.url,
210
- external: item.external,
211
- children: item.text
212
- }) : item.text
213
- }), /* @__PURE__ */ jsx(NavigationMenuContent, {
214
- className: "grid grid-cols-1 gap-2 p-4 md:grid-cols-2 lg:grid-cols-3",
215
- children
216
- })]
217
- });
218
- }
219
- return /* @__PURE__ */ jsx(NavigationMenuItem, {
220
- ...props,
221
- children: /* @__PURE__ */ jsx(NavigationMenuLink, { render: /* @__PURE__ */ jsx(LinkItem, {
222
- item,
223
- "aria-label": item.type === "icon" ? item.label : void 0,
224
- className: cn(navItemVariants({ variant: item.type })),
225
- children: item.type === "icon" ? item.icon : item.text
226
- }) })
227
- });
228
- }
229
- function MobileMenuLinkItem({ item, className }) {
230
- if (item.type === "custom") return /* @__PURE__ */ jsx("div", {
231
- className: cn("grid", className),
232
- children: item.children
233
- });
234
- const { setOpen } = use(MobileMenuContext);
235
- if (item.type === "menu") {
236
- const header = /* @__PURE__ */ jsxs(Fragment$1, { children: [item.icon, item.text] });
237
- return /* @__PURE__ */ jsxs("div", {
238
- className: cn("mb-4 flex flex-col", className),
239
- children: [/* @__PURE__ */ jsx("p", {
240
- className: "mb-1 text-sm text-fd-muted-foreground",
241
- children: item.url ? /* @__PURE__ */ jsx(Link, {
242
- href: item.url,
243
- external: item.external,
244
- onClick: () => setOpen(false),
245
- children: header
246
- }) : header
247
- }), item.items.map((child, i) => /* @__PURE__ */ jsx(MobileMenuLinkItem, { item: child }, i))]
248
- });
249
- }
250
- return /* @__PURE__ */ jsxs(LinkItem, {
251
- item,
252
- className: cn((!item.type || item.type === "main") && "inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4", item.type === "icon" && buttonVariants({
253
- size: "icon",
254
- color: "ghost"
255
- }), item.type === "button" && buttonVariants({
256
- color: "secondary",
257
- className: "gap-1.5 [&_svg]:size-4"
258
- }), className),
259
- "aria-label": item.type === "icon" ? item.label : void 0,
260
- onClick: () => setOpen(false),
261
- children: [item.icon, item.type !== "icon" && item.text]
262
- });
263
- }
264
-
265
- //#endregion
266
- export { Header, navItemVariants };
267
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/layouts/home/client.tsx"],"sourcesContent":["'use client';\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n use,\n useEffect,\n useEffectEvent,\n useMemo,\n useState,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport Link from '@hanzo/docs-core/link';\nimport { cn } from '@/utils/cn';\nimport { type LinkItemType, type NavOptions, renderTitleNav, useLinkItems } from '@/layouts/shared';\nimport { LinkItem } from '@/utils/link-item';\nimport {\n NavigationMenuRoot,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n} from '@/components/ui/navigation-menu';\nimport { buttonVariants } from '@/components/ui/button';\nimport type { HomeLayoutProps } from '.';\nimport { LargeSearchToggle, SearchToggle } from '@/layouts/shared/search-toggle';\nimport { ThemeToggle } from '@/layouts/shared/theme-toggle';\nimport { LanguageToggle, LanguageToggleText } from '@/layouts/shared/language-toggle';\nimport { ChevronDown, Languages } from 'lucide-react';\nimport { useIsScrollTop } from '@/utils/use-is-scroll-top';\nimport { NavigationMenu } from '@base-ui/react';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\n\nconst MobileMenuContext = createContext<{\n open: boolean;\n setOpen: (open: boolean) => void;\n} | null>(null);\n\nexport const navItemVariants = cva('[&_svg]:size-4', {\n variants: {\n variant: {\n main: 'inline-flex items-center gap-1 p-2 text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary data-popup-open:text-fd-primary',\n button: buttonVariants({\n color: 'secondary',\n className: 'gap-1.5',\n }),\n icon: buttonVariants({\n color: 'ghost',\n size: 'icon',\n }),\n },\n },\n defaultVariants: {\n variant: 'main',\n },\n});\n\nexport function Header({\n nav = {},\n i18n = false,\n links,\n githubUrl,\n themeSwitch = {},\n searchToggle = {},\n}: HomeLayoutProps) {\n const { menuItems, navItems } = useLinkItems({ links, githubUrl });\n\n return (\n <MobileMenuCollapsible\n render={(_, s) => (\n <HeaderRoot\n transparentMode={nav.transparentMode}\n className={cn(s.open && 'shadow-lg rounded-b-2xl')}\n >\n <NavigationMenuList className=\"flex h-14 w-full items-center px-4\">\n {renderTitleNav(nav, {\n className: 'inline-flex items-center gap-2.5 font-semibold',\n })}\n {nav.children}\n <ul className=\"flex flex-row items-center gap-2 px-6 max-sm:hidden\">\n {navItems\n .filter((item) => !isSecondary(item))\n .map((item, i) => (\n <NavigationMenuLinkItem key={i} item={item} className=\"text-sm\" />\n ))}\n </ul>\n <div className=\"flex flex-row items-center justify-end gap-1.5 flex-1 max-lg:hidden\">\n {searchToggle.enabled !== false &&\n (searchToggle.components?.lg ?? (\n <LargeSearchToggle\n className=\"w-full rounded-full ps-2.5 max-w-[240px]\"\n hideIfDisabled\n />\n ))}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? <ThemeToggle mode={themeSwitch?.mode} />)}\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-5\" />\n </LanguageToggle>\n )}\n <ul className=\"flex flex-row gap-2 items-center empty:hidden\">\n {navItems.filter(isSecondary).map((item, i) => (\n <NavigationMenuLinkItem\n key={i}\n className={cn(item.type === 'icon' && '-mx-1 first:ms-0 last:me-0')}\n item={item}\n />\n ))}\n </ul>\n </div>\n <ul className=\"flex flex-row items-center ms-auto -me-1.5 lg:hidden\">\n {searchToggle.enabled !== false &&\n (searchToggle.components?.sm ?? <SearchToggle className=\"p-2\" hideIfDisabled />)}\n <CollapsibleTrigger\n aria-label=\"Toggle Menu\"\n className={cn(\n buttonVariants({\n size: 'icon',\n color: 'ghost',\n className: 'group [&_svg]:size-5.5',\n }),\n )}\n >\n <ChevronDown className=\"transition-transform duration-300 group-data-panel-open:rotate-180\" />\n </CollapsibleTrigger>\n </ul>\n </NavigationMenuList>\n <CollapsibleContent className=\"flex flex-col px-4\">\n {menuItems\n .filter((item) => !isSecondary(item))\n .map((item, i) => (\n <MobileMenuLinkItem key={i} item={item} className=\"first:mt-4 sm:hidden\" />\n ))}\n <div className=\"-ms-1.5 flex flex-row pt-2 pb-4 items-center justify-end gap-2\">\n {menuItems.filter(isSecondary).map((item, i) => (\n <MobileMenuLinkItem\n key={i}\n item={item}\n className={cn(item.type === 'icon' && '-mx-1 first:ms-0')}\n />\n ))}\n <div role=\"separator\" className=\"flex-1 sm:hidden\" />\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-5\" />\n <LanguageToggleText />\n <ChevronDown className=\"size-3 text-fd-muted-foreground\" />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? <ThemeToggle mode={themeSwitch?.mode} />)}\n </div>\n </CollapsibleContent>\n <NavigationMenu.Portal>\n <NavigationMenu.Positioner\n sideOffset={10}\n className=\"z-20 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[left,right] duration-(--duration) ease-(--easing) data-instant:transition-none\"\n style={{\n ['--duration' as string]: '0.35s',\n ['--easing' as string]: 'cubic-bezier(0.22, 1, 0.36, 1)',\n }}\n >\n <NavigationMenu.Popup className=\"relative w-(--popup-width) h-(--popup-height) max-w-(--fd-layout-width,1400px) origin-(--transform-origin) rounded-xl bg-fd-background/80 border backdrop-blur-lg shadow-lg transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0\">\n <NavigationMenu.Viewport className=\"relative size-full overflow-hidden\" />\n </NavigationMenu.Popup>\n </NavigationMenu.Positioner>\n </NavigationMenu.Portal>\n </HeaderRoot>\n )}\n />\n );\n}\n\nfunction MobileMenuCollapsible(props: ComponentProps<typeof Collapsible>) {\n const [open, setOpen] = useState(false);\n\n const onClick = useEffectEvent((e: Event) => {\n if (!open) return;\n const header = document.getElementById('nd-nav');\n if (header && !header.contains(e.target as HTMLElement)) setOpen(false);\n });\n\n useEffect(() => {\n window.addEventListener('click', onClick);\n\n return () => {\n window.removeEventListener('click', onClick);\n };\n }, []);\n\n return (\n <MobileMenuContext\n value={useMemo(\n () => ({\n open,\n setOpen,\n }),\n [open],\n )}\n >\n <Collapsible open={open} onOpenChange={setOpen} {...props} />\n </MobileMenuContext>\n );\n}\n\nfunction isSecondary(item: LinkItemType): boolean {\n if ('secondary' in item && item.secondary != null) return item.secondary;\n\n return item.type === 'icon';\n}\n\nfunction HeaderRoot({\n transparentMode = 'none',\n children,\n className,\n ...props\n}: ComponentProps<'div'> & {\n transparentMode?: NavOptions['transparentMode'];\n}) {\n const isTop = useIsScrollTop({ enabled: transparentMode === 'top' }) ?? true;\n const isTransparent = transparentMode === 'top' ? isTop : transparentMode === 'always';\n\n return (\n <header id=\"nd-nav\" className=\"sticky h-14 top-0 z-40\">\n <NavigationMenuRoot\n render={(_, s) => (\n <nav\n className={cn(\n 'w-full backdrop-blur-lg border-b transition-colors mx-auto max-w-(--fd-layout-width)',\n (!isTransparent || s.open) && 'bg-fd-background/80',\n className,\n )}\n {...props}\n >\n {children}\n </nav>\n )}\n />\n </header>\n );\n}\n\nfunction NavigationMenuLinkItem({ item, ...props }: { item: LinkItemType; className?: string }) {\n if (item.type === 'custom') return <div {...props}>{item.children}</div>;\n\n if (item.type === 'menu') {\n const children = item.items.map((child, j) => {\n if (child.type === 'custom') {\n return <Fragment key={j}>{child.children}</Fragment>;\n }\n\n const {\n banner = child.icon ? (\n <div className=\"w-fit rounded-md border bg-fd-muted p-1 [&_svg]:size-4\">{child.icon}</div>\n ) : null,\n ...rest\n } = child.menu ?? {};\n\n return (\n <NavigationMenuLink\n key={`${j}-${child.url}`}\n render={\n <Link\n href={child.url}\n external={child.external}\n {...rest}\n className={cn(\n 'flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground',\n rest.className,\n )}\n >\n {rest.children ?? (\n <>\n {banner}\n <p className=\"text-base font-medium\">{child.text}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden\">\n {child.description}\n </p>\n </>\n )}\n </Link>\n }\n />\n );\n });\n\n return (\n <NavigationMenuItem {...props}>\n <NavigationMenuTrigger className={cn(navItemVariants(), 'rounded-md')}>\n {item.url ? (\n <Link href={item.url} external={item.external}>\n {item.text}\n </Link>\n ) : (\n item.text\n )}\n </NavigationMenuTrigger>\n <NavigationMenuContent className=\"grid grid-cols-1 gap-2 p-4 md:grid-cols-2 lg:grid-cols-3\">\n {children}\n </NavigationMenuContent>\n </NavigationMenuItem>\n );\n }\n\n return (\n <NavigationMenuItem {...props}>\n <NavigationMenuLink\n render={\n <LinkItem\n item={item}\n aria-label={item.type === 'icon' ? item.label : undefined}\n className={cn(navItemVariants({ variant: item.type }))}\n >\n {item.type === 'icon' ? item.icon : item.text}\n </LinkItem>\n }\n />\n </NavigationMenuItem>\n );\n}\n\nfunction MobileMenuLinkItem({ item, className }: { item: LinkItemType; className?: string }) {\n if (item.type === 'custom') return <div className={cn('grid', className)}>{item.children}</div>;\n const { setOpen } = use(MobileMenuContext)!;\n\n if (item.type === 'menu') {\n const header = (\n <>\n {item.icon}\n {item.text}\n </>\n );\n\n return (\n <div className={cn('mb-4 flex flex-col', className)}>\n <p className=\"mb-1 text-sm text-fd-muted-foreground\">\n {item.url ? (\n <Link href={item.url} external={item.external} onClick={() => setOpen(false)}>\n {header}\n </Link>\n ) : (\n header\n )}\n </p>\n {item.items.map((child, i) => (\n <MobileMenuLinkItem key={i} item={child} />\n ))}\n </div>\n );\n }\n\n return (\n <LinkItem\n item={item}\n className={cn(\n (!item.type || item.type === 'main') &&\n 'inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4',\n item.type === 'icon' &&\n buttonVariants({\n size: 'icon',\n color: 'ghost',\n }),\n item.type === 'button' &&\n buttonVariants({\n color: 'secondary',\n className: 'gap-1.5 [&_svg]:size-4',\n }),\n className,\n )}\n aria-label={item.type === 'icon' ? item.label : undefined}\n onClick={() => setOpen(false)}\n >\n {item.icon}\n {item.type !== 'icon' && item.text}\n </LinkItem>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/home/index.tsx"],"mappings":";;;;;UAKiB,eAAA,SAAwB,eAAA;EACvC,GAAA,GAAM,OAAA,CAAQ,UAAA;AAAA;AAAA,iBAGA,UAAA,CAAW,KAAA,EAAO,eAAA,GAAkB,cAAA,WAAsB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/layouts/home/index.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cn } from '@/utils/cn';\nimport { type BaseLayoutProps, type NavOptions } from '@/layouts/shared';\nimport { Header } from '@/layouts/home/client';\n\nexport interface HomeLayoutProps extends BaseLayoutProps {\n nav?: Partial<NavOptions>;\n}\n\nexport function HomeLayout(props: HomeLayoutProps & ComponentProps<'main'>) {\n const { nav = {}, links, githubUrl, i18n, themeSwitch = {}, searchToggle, ...rest } = props;\n\n return (\n <main\n id=\"nd-home-layout\"\n {...rest}\n className={cn('flex flex-1 flex-col [--fd-layout-width:1400px]', rest.className)}\n >\n {nav.enabled !== false &&\n (nav.component ?? (\n <Header\n links={links}\n nav={nav}\n themeSwitch={themeSwitch}\n searchToggle={searchToggle}\n i18n={i18n}\n githubUrl={githubUrl}\n />\n ))}\n {props.children}\n </main>\n );\n}\n"],"mappings":";;;;;AASA,SAAgB,WAAW,OAAiD;CAC1E,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,WAAW,MAAM,cAAc,EAAE,EAAE,cAAc,GAAG,SAAS;AAEtF,QACE,qBAAC;EACC,IAAG;EACH,GAAI;EACJ,WAAW,GAAG,mDAAmD,KAAK,UAAU;aAE/E,IAAI,YAAY,UACd,IAAI,aACH,oBAAC;GACQ;GACF;GACQ;GACC;GACR;GACK;IACX,GAEL,MAAM;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"navbar.d.ts","names":[],"sources":["../../../src/layouts/home/navbar.tsx"],"mappings":";;;;;;;cAaa,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAAqB,eAAA,CAArB,uBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA,YAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,iBAEP,iBAAA,CAAA;EAAoB,SAAA;EAAA,GAAc;AAAA,GAAS,0BAAA,GAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgBrE,iBAAA,CAAA;EAAoB,SAAA;EAAA,GAAc;AAAA,GAAS,0BAAA,GAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiBrE,cAAA,CAAe,KAAA,EAAO,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"navbar.js","names":[],"sources":["../../../src/layouts/home/navbar.tsx"],"sourcesContent":["'use client';\nimport Link, { type LinkProps } from '@hanzo/docs-core/link';\nimport { cn } from '@/utils/cn';\nimport {\n NavigationMenuContent,\n type NavigationMenuContentProps,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuTrigger,\n type NavigationMenuTriggerProps,\n} from '@/components/ui/navigation-menu';\nimport { navItemVariants } from './client';\n\nexport const NavbarMenu = NavigationMenuItem;\n\nexport function NavbarMenuContent({ className, ...props }: NavigationMenuContentProps) {\n return (\n <NavigationMenuContent\n className={(s) =>\n cn(\n 'grid grid-cols-1 gap-2 p-4 md:grid-cols-2 lg:grid-cols-3',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {props.children}\n </NavigationMenuContent>\n );\n}\n\nexport function NavbarMenuTrigger({ className, ...props }: NavigationMenuTriggerProps) {\n return (\n <NavigationMenuTrigger\n {...props}\n className={(s) =>\n cn(\n navItemVariants(),\n 'rounded-md',\n typeof className === 'function' ? className(s) : className,\n )\n }\n >\n {props.children}\n </NavigationMenuTrigger>\n );\n}\n\nexport function NavbarMenuLink(props: LinkProps) {\n return (\n <NavigationMenuLink\n render={\n <Link\n {...props}\n className={cn(\n 'flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground',\n props.className,\n )}\n >\n {props.children}\n </Link>\n }\n />\n );\n}\n"],"mappings":";;;;;;;;;AAaA,MAAa,aAAa;AAE1B,SAAgB,kBAAkB,EAAE,WAAW,GAAG,SAAqC;AACrF,QACE,oBAAC;EACC,YAAY,MACV,GACE,4DACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;YAEH,MAAM;GACe;;AAI5B,SAAgB,kBAAkB,EAAE,WAAW,GAAG,SAAqC;AACrF,QACE,oBAAC;EACC,GAAI;EACJ,YAAY,MACV,GACE,iBAAiB,EACjB,cACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;YAGF,MAAM;GACe;;AAI5B,SAAgB,eAAe,OAAkB;AAC/C,QACE,oBAAC,sBACC,QACE,oBAAC;EACC,GAAI;EACJ,WAAW,GACT,gIACA,MAAM,UACP;YAEA,MAAM;GACF,GAET"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/layouts/notebook/client.tsx"],"mappings":";;;;;;;cAuBa,aAAA,EAAa,KAAA,CAAA,OAAA,EAAA,UAAA;;;UAOT,UAAA;EACf,OAAA;EACA,OAAA;AAAA;AAAA,iBAGc,qBAAA,CAAA;EACd,kBAAA;EACA,OAAA;EACA,OAAA;EACA;AAAA,GACC,UAAA;EACD,kBAAA;EACA,QAAA,EAAU,SAAA;AAAA,IACX,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAoBe,YAAA,CAAa,KAAA,EAAO,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAW5C,UAAA,CAAA;EAAa,SAAA;EAAW,KAAA;EAAO,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAqC1E,gBAAA,CAAA;EACd,OAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,OAAA,EAAS,mBAAA;AAAA,IACV,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgCe,cAAA,CAAA;EACd,IAAA;EACA,SAAA;EAAA,GACG;AAAA;EACA,IAAA,EAAM,YAAA;AAAA,IAAiB,cAAA,CAAe,WAAA,yCAAY,kBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,QAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,YAAA,mBAAA,KAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/layouts/notebook/client.tsx"],"sourcesContent":["'use client';\nimport { cn } from '@/utils/cn';\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n type HTMLAttributes,\n type PointerEvent,\n type ReactNode,\n use,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { ChevronDown } from 'lucide-react';\nimport Link from '@hanzo/docs-core/link';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { isTabActive, type SidebarTabWithProps } from '@/components/sidebar/tabs/dropdown';\nimport { useIsScrollTop } from '@/utils/use-is-scroll-top';\nimport { LinkItem, type LinkItemType, type MenuItemType } from '@/utils/link-item';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\n\nexport const LayoutContext = createContext<\n | (LayoutInfo & {\n isNavTransparent: boolean;\n })\n | null\n>(null);\n\nexport interface LayoutInfo {\n tabMode: 'sidebar' | 'navbar';\n navMode: 'top' | 'auto';\n}\n\nexport function LayoutContextProvider({\n navTransparentMode = 'none',\n navMode,\n tabMode,\n children,\n}: LayoutInfo & {\n navTransparentMode?: 'always' | 'top' | 'none';\n children: ReactNode;\n}) {\n const isTop = useIsScrollTop({ enabled: navTransparentMode === 'top' }) ?? true;\n const isNavTransparent = navTransparentMode === 'top' ? isTop : navTransparentMode === 'always';\n\n return (\n <LayoutContext\n value={useMemo(\n () => ({\n isNavTransparent,\n navMode,\n tabMode,\n }),\n [isNavTransparent, navMode, tabMode],\n )}\n >\n {children}\n </LayoutContext>\n );\n}\n\nexport function LayoutHeader(props: ComponentProps<'header'>) {\n const { open } = useSidebar();\n const { isNavTransparent } = use(LayoutContext)!;\n\n return (\n <header data-transparent={isNavTransparent && !open} {...props}>\n {props.children}\n </header>\n );\n}\n\nexport function LayoutBody({ className, style, children, ...props }: ComponentProps<'div'>) {\n const { navMode } = use(LayoutContext)!;\n const { collapsed } = useSidebar();\n const pageCol =\n 'calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-col) - var(--fd-toc-width))';\n\n return (\n <div\n id=\"nd-notebook-layout\"\n className={cn(\n 'grid overflow-x-clip min-h-(--fd-docs-height) transition-[grid-template-columns] auto-cols-auto auto-rows-auto [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px]',\n className,\n )}\n style={\n {\n gridTemplate:\n navMode === 'top'\n ? `\". header header header .\"\n \"sidebar sidebar toc-popover toc-popover .\"\n \"sidebar sidebar main toc .\" 1fr / minmax(min-content, 1fr) var(--fd-sidebar-col) minmax(0, ${pageCol}) var(--fd-toc-width) minmax(min-content, 1fr)`\n : `\"sidebar sidebar header header .\"\n \"sidebar sidebar toc-popover toc-popover .\"\n \"sidebar sidebar main toc .\" 1fr / minmax(min-content, 1fr) var(--fd-sidebar-col) minmax(0, ${pageCol}) var(--fd-toc-width) minmax(min-content, 1fr)`,\n '--fd-docs-row-1': 'var(--fd-banner-height, 0px)',\n '--fd-docs-row-2': 'calc(var(--fd-docs-row-1) + var(--fd-header-height))',\n '--fd-docs-row-3': 'calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))',\n '--fd-sidebar-col': collapsed ? '0px' : 'var(--fd-sidebar-width)',\n ...style,\n } as object\n }\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function LayoutHeaderTabs({\n options,\n className,\n ...props\n}: ComponentProps<'div'> & {\n options: SidebarTabWithProps[];\n}) {\n const pathname = usePathname();\n const selectedIdx = useMemo(() => {\n return options.findLastIndex((option) => isTabActive(option, pathname));\n }, [options, pathname]);\n\n return (\n <div className={cn('flex flex-row items-end gap-6', className)} {...props}>\n {options.map((option, i) => {\n const { title, url, unlisted, props: { className, ...rest } = {} } = option;\n const isSelected = selectedIdx === i;\n\n return (\n <Link\n key={i}\n href={url}\n className={cn(\n 'inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground',\n unlisted && !isSelected && 'hidden',\n isSelected && 'border-fd-primary text-fd-primary',\n className,\n )}\n {...rest}\n >\n {title}\n </Link>\n );\n })}\n </div>\n );\n}\n\nexport function NavbarLinkItem({\n item,\n className,\n ...props\n}: { item: LinkItemType } & HTMLAttributes<HTMLElement>) {\n if (item.type === 'custom') return item.children;\n\n if (item.type === 'menu') {\n return <NavbarLinkItemMenu item={item} className={className} {...props} />;\n }\n\n return (\n <LinkItem\n item={item}\n className={cn(\n 'text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary',\n className,\n )}\n {...props}\n >\n {item.text}\n </LinkItem>\n );\n}\n\nfunction NavbarLinkItemMenu({\n item,\n hoverDelay = 50,\n className,\n ...props\n}: { item: MenuItemType; hoverDelay?: number } & HTMLAttributes<HTMLElement>) {\n const [open, setOpen] = useState(false);\n const timeoutRef = useRef<number>(null);\n const freezeUntil = useRef<number>(null);\n\n const delaySetOpen = (value: boolean) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n setOpen(value);\n freezeUntil.current = Date.now() + 300;\n }, hoverDelay);\n };\n const onPointerEnter = (e: PointerEvent) => {\n if (e.pointerType === 'touch') return;\n delaySetOpen(true);\n };\n const onPointerLeave = (e: PointerEvent) => {\n if (e.pointerType === 'touch') return;\n delaySetOpen(false);\n };\n function isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n }\n\n return (\n <Popover\n open={open}\n onOpenChange={(value) => {\n if (freezeUntil.current === null || Date.now() >= freezeUntil.current) setOpen(value);\n }}\n >\n <PopoverTrigger\n className={cn(\n 'inline-flex items-center gap-1.5 p-1 text-sm text-fd-muted-foreground transition-colors has-data-[active=true]:text-fd-primary data-[state=open]:text-fd-accent-foreground focus-visible:outline-none',\n className,\n )}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n {...props}\n >\n {item.url ? <LinkItem item={item as { url: string }}>{item.text}</LinkItem> : item.text}\n <ChevronDown className=\"size-3\" />\n </PopoverTrigger>\n <PopoverContent\n className=\"flex flex-col p-1 text-fd-muted-foreground text-start\"\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n >\n {item.items.map((child, i) => {\n if (child.type === 'custom') return <Fragment key={i}>{child.children}</Fragment>;\n\n return (\n <LinkItem\n key={i}\n item={child}\n className=\"inline-flex items-center gap-2 rounded-md p-2 transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground data-[active=true]:text-fd-primary [&_svg]:size-4\"\n onClick={() => {\n if (isTouchDevice()) setOpen(false);\n }}\n >\n {child.icon}\n {child.text}\n </LinkItem>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/notebook/index.tsx"],"mappings":";;;;;;;;;;UAgCiB,eAAA,SAAwB,eAAA;EACvC,IAAA,EAAM,QAAA,CAAS,IAAA;EACf,OAAA;EAEA,GAAA,GAAM,eAAA;IACJ,IAAA;EAAA;EAGF,OAAA,GAAU,cAAA;EAEV,cAAA,GAAiB,cAAA,CAAe,cAAA;AAAA;AAAA,UAGxB,cAAA,SAEN,cAAA,WACA,IAAA,CAAK,cAAA,QAAsB,OAAA;EAC7B,UAAA,GAAa,OAAA,CAAQ,yBAAA;EAjBkB;;;EAsBvC,IAAA,GAAO,mBAAA,KAAwB,qBAAA;EAE/B,MAAA,GAAS,SAAA,GAAY,EAAA,CAAG,cAAA;EACxB,MAAA,GAAS,SAAA,GAAY,EAAA,CAAG,cAAA;EAxBT;;;;;EA+Bf,WAAA;AAAA;AAAA,iBAGc,UAAA,CAAW,KAAA,EAAO,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["SidebarIcon","Sidebar"],"sources":["../../../src/layouts/notebook/index.tsx"],"sourcesContent":["import { type ComponentProps, type FC, type HTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { type BaseLayoutProps, renderTitleNav, useLinkItems } from '@/layouts/shared';\nimport {\n Sidebar,\n SidebarCollapseTrigger,\n SidebarContent,\n SidebarDrawer,\n SidebarLinkItem,\n SidebarPageTree,\n SidebarTrigger,\n SidebarViewport,\n} from './sidebar';\nimport { TreeContextProvider } from '@/contexts/tree';\nimport { cn } from '@/utils/cn';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Languages, Sidebar as SidebarIcon, X } from 'lucide-react';\nimport { LanguageToggle } from '@/layouts/shared/language-toggle';\nimport { ThemeToggle } from '@/layouts/shared/theme-toggle';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport {\n LayoutBody,\n LayoutContextProvider,\n LayoutHeader,\n LayoutHeaderTabs,\n NavbarLinkItem,\n} from '@/layouts/notebook/client';\nimport { LargeSearchToggle, SearchToggle } from '@/layouts/shared/search-toggle';\nimport { LinkItem, type LinkItemType } from '@/utils/link-item';\nimport type { SidebarPageTreeComponents } from '@/components/sidebar/page-tree';\nimport { getSidebarTabs, type GetSidebarTabsOptions } from '@/components/sidebar/tabs';\nimport { SidebarTabsDropdown, type SidebarTabWithProps } from '@/components/sidebar/tabs/dropdown';\n\nexport interface DocsLayoutProps extends BaseLayoutProps {\n tree: PageTree.Root;\n tabMode?: 'sidebar' | 'navbar';\n\n nav?: BaseLayoutProps['nav'] & {\n mode?: 'top' | 'auto';\n };\n\n sidebar?: SidebarOptions;\n\n containerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface SidebarOptions\n extends\n ComponentProps<'aside'>,\n Pick<ComponentProps<typeof Sidebar>, 'defaultOpenLevel' | 'prefetch'> {\n components?: Partial<SidebarPageTreeComponents>;\n\n /**\n * Root Toggle options\n */\n tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;\n\n banner?: ReactNode | FC<ComponentProps<'div'>>;\n footer?: ReactNode | FC<ComponentProps<'div'>>;\n\n /**\n * Support collapsing the sidebar on desktop mode\n *\n * @defaultValue true\n */\n collapsible?: boolean;\n}\n\nexport function DocsLayout(props: DocsLayoutProps) {\n const {\n tabMode = 'sidebar',\n nav = {},\n sidebar: { tabs: tabOptions, defaultOpenLevel, prefetch, ...sidebarProps } = {},\n i18n = false,\n themeSwitch = {},\n tree,\n } = props;\n\n const navMode = nav.mode ?? 'auto';\n const { menuItems, navItems } = useLinkItems(props);\n const tabs = useMemo(() => {\n if (Array.isArray(tabOptions)) {\n return tabOptions;\n }\n\n if (typeof tabOptions === 'object') {\n return getSidebarTabs(tree, tabOptions);\n }\n\n if (tabOptions !== false) {\n return getSidebarTabs(tree);\n }\n\n return [];\n }, [tabOptions, tree]);\n\n function sidebar() {\n const { banner, footer, components, collapsible = true, ...rest } = sidebarProps;\n\n const iconLinks = menuItems.filter((item) => item.type === 'icon');\n const Header =\n typeof banner === 'function'\n ? banner\n : ({ className, ...props }: ComponentProps<'div'>) => (\n <div className={cn('flex flex-col gap-3 p-4 pb-2 empty:hidden', className)} {...props}>\n {props.children}\n {banner}\n </div>\n );\n const Footer =\n typeof footer === 'function'\n ? footer\n : ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n className={cn(\n 'hidden flex-row text-fd-muted-foreground items-center border-t p-4 pt-2',\n iconLinks.length > 0 && 'max-lg:flex',\n className,\n )}\n {...props}\n >\n {props.children}\n {footer}\n </div>\n );\n const viewport = (\n <SidebarViewport>\n {menuItems\n .filter((item) => item.type !== 'icon')\n .map((item, i, arr) => (\n <SidebarLinkItem\n key={i}\n item={item}\n className={cn('lg:hidden', i === arr.length - 1 && 'mb-4')}\n />\n ))}\n\n <SidebarPageTree {...components} />\n </SidebarViewport>\n );\n\n return (\n <>\n <SidebarContent {...rest}>\n <Header>\n {navMode === 'auto' && (\n <div className=\"flex justify-between\">\n {renderTitleNav(nav, {\n className: 'inline-flex items-center gap-2.5 font-medium',\n })}\n {collapsible && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'mt-px mb-auto text-fd-muted-foreground',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n </div>\n )}\n {tabs.length > 0 && (\n <SidebarTabsDropdown\n options={tabs}\n className={cn(tabMode === 'navbar' && 'lg:hidden')}\n />\n )}\n </Header>\n {viewport}\n <Footer>\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n className: 'lg:hidden',\n }),\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n </Footer>\n </SidebarContent>\n <SidebarDrawer {...rest}>\n <Header>\n <SidebarTrigger\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n className: 'ms-auto text-fd-muted-foreground',\n }),\n )}\n >\n <X />\n </SidebarTrigger>\n {tabs.length > 0 && <SidebarTabsDropdown options={tabs} />}\n </Header>\n {viewport}\n <Footer\n className={cn(\n 'hidden flex-row items-center justify-end',\n (i18n || themeSwitch.enabled !== false) && 'flex',\n iconLinks.length > 0 && 'max-lg:flex',\n )}\n >\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n }),\n 'text-fd-muted-foreground lg:hidden',\n i === iconLinks.length - 1 && 'me-auto',\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5 text-fd-muted-foreground\" />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle mode={themeSwitch.mode ?? 'light-dark-system'} />\n ))}\n </Footer>\n </SidebarDrawer>\n </>\n );\n }\n\n return (\n <TreeContextProvider tree={tree}>\n <LayoutContextProvider\n navMode={nav.mode ?? 'auto'}\n tabMode={tabMode}\n navTransparentMode={nav.transparentMode}\n >\n <Sidebar defaultOpenLevel={defaultOpenLevel} prefetch={prefetch}>\n <LayoutBody {...props.containerProps}>\n {sidebar()}\n <DocsNavbar {...props} links={navItems} tabs={tabs} />\n {props.children}\n </LayoutBody>\n </Sidebar>\n </LayoutContextProvider>\n </TreeContextProvider>\n );\n}\n\nfunction DocsNavbar({\n links,\n tabs,\n tabMode = 'sidebar',\n sidebar: { collapsible: sidebarCollapsible = true } = {},\n searchToggle = {},\n themeSwitch = {},\n nav = {},\n i18n,\n}: DocsLayoutProps & {\n links: LinkItemType[];\n tabs: SidebarTabWithProps[];\n}) {\n const navMode = nav.mode ?? 'auto';\n const showLayoutTabs = tabMode === 'navbar' && tabs.length > 0;\n\n return (\n <LayoutHeader\n id=\"nd-subnav\"\n className={cn(\n 'sticky [grid-area:header] flex flex-col top-(--fd-docs-row-1) z-10 backdrop-blur-sm transition-colors data-[transparent=false]:bg-fd-background/80 layout:[--fd-header-height:--spacing(14)]',\n showLayoutTabs && 'lg:layout:[--fd-header-height:--spacing(24)]',\n )}\n >\n <div data-header-body=\"\" className=\"flex border-b px-4 gap-2 h-14 md:px-6\">\n <div\n className={cn(\n 'items-center',\n navMode === 'top' && 'flex flex-1',\n navMode === 'auto' && 'hidden has-data-[collapsed=true]:md:flex max-md:flex',\n )}\n >\n {sidebarCollapsible && navMode === 'auto' && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n }),\n 'text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden',\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n {renderTitleNav(nav, {\n className: cn(\n 'inline-flex items-center gap-2.5 font-semibold',\n navMode === 'auto' && 'md:hidden',\n ),\n })}\n {nav.children}\n </div>\n {searchToggle.enabled !== false &&\n (searchToggle.components?.lg ? (\n <div\n className={cn(\n 'w-full my-auto max-md:hidden',\n navMode === 'top' ? 'rounded-xl max-w-sm' : 'max-w-[240px]',\n )}\n >\n {searchToggle.components.lg}\n </div>\n ) : (\n <LargeSearchToggle\n hideIfDisabled\n className={cn(\n 'w-full my-auto max-md:hidden',\n navMode === 'top' ? 'rounded-xl max-w-sm ps-2.5' : 'max-w-[240px]',\n )}\n />\n ))}\n <div className=\"flex flex-1 items-center justify-end md:gap-2\">\n <div className=\"flex items-center gap-6 empty:hidden max-lg:hidden\">\n {links\n .filter((item) => item.type !== 'icon')\n .map((item, i) => (\n <NavbarLinkItem key={i} item={item} />\n ))}\n </div>\n {links\n .filter((item) => item.type === 'icon')\n .map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({ size: 'icon-sm', color: 'ghost' }),\n 'text-fd-muted-foreground max-lg:hidden',\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n\n <div className=\"flex items-center md:hidden\">\n {searchToggle.enabled !== false &&\n (searchToggle.components?.sm ?? <SearchToggle hideIfDisabled className=\"p-2\" />)}\n <SidebarTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'p-2 -me-1.5',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarTrigger>\n </div>\n\n <div className=\"flex items-center gap-2 max-md:hidden\">\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5 text-fd-muted-foreground\" />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle mode={themeSwitch.mode ?? 'light-dark-system'} />\n ))}\n {sidebarCollapsible && navMode === 'top' && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'secondary',\n size: 'icon-sm',\n }),\n 'text-fd-muted-foreground rounded-full -me-1.5',\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n </div>\n </div>\n </div>\n {showLayoutTabs && (\n <LayoutHeaderTabs\n data-header-tabs=\"\"\n className=\"overflow-x-auto border-b px-6 h-10 max-lg:hidden\"\n options={tabs}\n />\n )}\n </LayoutHeader>\n );\n}\n"],"mappings":"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"}