@hanzo/docs-base-ui 16.4.8 → 16.5.3

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 (306) hide show
  1. package/README.md +1 -1
  2. package/css/aspen.css +39 -1
  3. package/css/black.css +39 -1
  4. package/css/catppuccin.css +49 -1
  5. package/css/dusk.css +47 -1
  6. package/css/emerald.css +39 -1
  7. package/css/generated/docs.css +455 -0
  8. package/css/generated/flux.css +419 -0
  9. package/css/generated/home.css +201 -0
  10. package/css/generated/notebook.css +492 -0
  11. package/css/generated/shared.css +1033 -0
  12. package/css/lib/base.css +217 -0
  13. package/css/lib/default-colors.css +51 -0
  14. package/css/lib/shiki.css +90 -0
  15. package/css/neutral.css +7 -1
  16. package/css/ocean.css +44 -1
  17. package/css/preset.css +6 -7
  18. package/css/purple.css +39 -1
  19. package/css/ruby.css +39 -1
  20. package/css/shadcn.css +36 -1
  21. package/css/solar.css +75 -1
  22. package/css/vitepress.css +65 -1
  23. package/dist/_virtual/_rolldown/runtime.js +18 -0
  24. package/dist/components/accordion.d.ts +3 -3
  25. package/dist/components/accordion.d.ts.map +1 -1
  26. package/dist/components/accordion.js +6 -6
  27. package/dist/components/accordion.js.map +1 -1
  28. package/dist/components/banner.d.ts +2 -2
  29. package/dist/components/banner.d.ts.map +1 -1
  30. package/dist/components/banner.js +4 -4
  31. package/dist/components/banner.js.map +1 -1
  32. package/dist/components/callout.d.ts +5 -5
  33. package/dist/components/callout.d.ts.map +1 -1
  34. package/dist/components/callout.js +1 -1
  35. package/dist/components/callout.js.map +1 -1
  36. package/dist/components/card.d.ts +3 -3
  37. package/dist/components/card.d.ts.map +1 -1
  38. package/dist/components/card.js +2 -2
  39. package/dist/components/card.js.map +1 -1
  40. package/dist/components/codeblock.d.ts +7 -7
  41. package/dist/components/codeblock.d.ts.map +1 -1
  42. package/dist/components/codeblock.js +7 -7
  43. package/dist/components/codeblock.js.map +1 -1
  44. package/dist/components/dialog/search-algolia.d.ts +6 -6
  45. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  46. package/dist/components/dialog/search-algolia.js +7 -7
  47. package/dist/components/dialog/search-algolia.js.map +1 -1
  48. package/dist/components/dialog/search-default.d.ts +6 -6
  49. package/dist/components/dialog/search-default.d.ts.map +1 -1
  50. package/dist/components/dialog/search-default.js +7 -7
  51. package/dist/components/dialog/search-default.js.map +1 -1
  52. package/dist/components/dialog/search-orama.d.ts +6 -6
  53. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  54. package/dist/components/dialog/search-orama.js +7 -7
  55. package/dist/components/dialog/search-orama.js.map +1 -1
  56. package/dist/components/dialog/search.d.ts +16 -16
  57. package/dist/components/dialog/search.d.ts.map +1 -1
  58. package/dist/components/dialog/search.js +19 -27
  59. package/dist/components/dialog/search.js.map +1 -1
  60. package/dist/components/dynamic-codeblock.core.d.ts +33 -0
  61. package/dist/components/dynamic-codeblock.core.d.ts.map +1 -0
  62. package/dist/components/dynamic-codeblock.core.js +66 -0
  63. package/dist/components/dynamic-codeblock.core.js.map +1 -0
  64. package/dist/components/dynamic-codeblock.d.ts +4 -28
  65. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  66. package/dist/components/dynamic-codeblock.js +9 -53
  67. package/dist/components/dynamic-codeblock.js.map +1 -1
  68. package/dist/components/files.d.ts.map +1 -1
  69. package/dist/components/files.js +2 -2
  70. package/dist/components/files.js.map +1 -1
  71. package/dist/components/github-info.d.ts +2 -2
  72. package/dist/components/github-info.d.ts.map +1 -1
  73. package/dist/components/github-info.js +1 -1
  74. package/dist/components/github-info.js.map +1 -1
  75. package/dist/components/heading.d.ts.map +1 -1
  76. package/dist/components/heading.js +1 -1
  77. package/dist/components/heading.js.map +1 -1
  78. package/dist/components/{image-zoom-CtfZieBH.css → image-zoom-DGvp66QF.css} +1 -1
  79. package/dist/components/{image-zoom-CtfZieBH.css.map → image-zoom-DGvp66QF.css.map} +1 -1
  80. package/dist/components/image-zoom.d.ts +3 -3
  81. package/dist/components/image-zoom.d.ts.map +1 -1
  82. package/dist/components/inline-toc.d.ts +2 -2
  83. package/dist/components/inline-toc.d.ts.map +1 -1
  84. package/dist/components/inline-toc.js +1 -1
  85. package/dist/components/inline-toc.js.map +1 -1
  86. package/dist/components/sidebar/base.d.ts +16 -16
  87. package/dist/components/sidebar/base.d.ts.map +1 -1
  88. package/dist/components/sidebar/base.js +5 -5
  89. package/dist/components/sidebar/base.js.map +1 -1
  90. package/dist/components/sidebar/link-item.d.ts +3 -3
  91. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  92. package/dist/components/sidebar/link-item.js.map +1 -1
  93. package/dist/components/sidebar/page-tree.d.ts +2 -2
  94. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  95. package/dist/components/sidebar/page-tree.js +5 -5
  96. package/dist/components/sidebar/page-tree.js.map +1 -1
  97. package/dist/components/sidebar/tabs/dropdown.d.ts +3 -3
  98. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  99. package/dist/components/sidebar/tabs/dropdown.js +19 -19
  100. package/dist/components/sidebar/tabs/dropdown.js.map +1 -1
  101. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  102. package/dist/components/steps.d.ts +3 -3
  103. package/dist/components/steps.d.ts.map +1 -1
  104. package/dist/components/tabs.d.ts +4 -4
  105. package/dist/components/tabs.d.ts.map +1 -1
  106. package/dist/components/tabs.js +2 -2
  107. package/dist/components/tabs.js.map +1 -1
  108. package/dist/components/toc/clerk.d.ts +12 -1
  109. package/dist/components/toc/clerk.d.ts.map +1 -0
  110. package/dist/components/toc/clerk.js +106 -6
  111. package/dist/components/toc/clerk.js.map +1 -1
  112. package/dist/components/toc/default.d.ts +12 -1
  113. package/dist/components/toc/default.d.ts.map +1 -0
  114. package/dist/components/toc/default.js +34 -6
  115. package/dist/components/toc/default.js.map +1 -1
  116. package/dist/components/toc/index.d.ts +26 -1
  117. package/dist/components/toc/index.d.ts.map +1 -0
  118. package/dist/components/toc/index.js +76 -6
  119. package/dist/components/toc/index.js.map +1 -1
  120. package/dist/components/type-table.d.ts +2 -2
  121. package/dist/components/type-table.d.ts.map +1 -1
  122. package/dist/components/type-table.js +7 -7
  123. package/dist/components/type-table.js.map +1 -1
  124. package/dist/components/ui/accordion.d.ts +6 -6
  125. package/dist/components/ui/accordion.d.ts.map +1 -1
  126. package/dist/components/ui/accordion.js +1 -1
  127. package/dist/components/ui/accordion.js.map +1 -1
  128. package/dist/components/ui/button.d.ts +1 -1
  129. package/dist/components/ui/button.d.ts.map +1 -1
  130. package/dist/components/ui/collapsible.d.ts +6 -6
  131. package/dist/components/ui/collapsible.d.ts.map +1 -1
  132. package/dist/components/ui/collapsible.js +1 -1
  133. package/dist/components/ui/collapsible.js.map +1 -1
  134. package/dist/components/ui/navigation-menu.d.ts +7 -7
  135. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  136. package/dist/components/ui/navigation-menu.js +2 -2
  137. package/dist/components/ui/navigation-menu.js.map +1 -1
  138. package/dist/components/ui/popover.d.ts +3 -3
  139. package/dist/components/ui/popover.d.ts.map +1 -1
  140. package/dist/components/ui/popover.js +2 -2
  141. package/dist/components/ui/popover.js.map +1 -1
  142. package/dist/components/ui/scroll-area.d.ts +4 -4
  143. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  144. package/dist/components/ui/scroll-area.js +2 -2
  145. package/dist/components/ui/scroll-area.js.map +1 -1
  146. package/dist/components/ui/tabs.d.ts +7 -7
  147. package/dist/components/ui/tabs.d.ts.map +1 -1
  148. package/dist/components/ui/tabs.js +5 -5
  149. package/dist/components/ui/tabs.js.map +1 -1
  150. package/dist/contexts/i18n.d.ts +60 -1
  151. package/dist/contexts/i18n.d.ts.map +1 -0
  152. package/dist/contexts/i18n.js +54 -6
  153. package/dist/contexts/i18n.js.map +1 -1
  154. package/dist/contexts/search.d.ts +70 -4
  155. package/dist/contexts/search.d.ts.map +1 -1
  156. package/dist/contexts/search.js +62 -6
  157. package/dist/contexts/search.js.map +1 -1
  158. package/dist/contexts/tree.d.ts +22 -1
  159. package/dist/contexts/tree.d.ts.map +1 -0
  160. package/dist/contexts/tree.js +36 -6
  161. package/dist/contexts/tree.js.map +1 -1
  162. package/dist/i18n.d.ts +14 -1
  163. package/dist/i18n.d.ts.map +1 -0
  164. package/dist/i18n.js +19 -2
  165. package/dist/i18n.js.map +1 -0
  166. package/dist/layouts/docs/client.d.ts +7 -7
  167. package/dist/layouts/docs/client.d.ts.map +1 -1
  168. package/dist/layouts/docs/client.js +4 -4
  169. package/dist/layouts/docs/client.js.map +1 -1
  170. package/dist/layouts/docs/index.d.ts +3 -3
  171. package/dist/layouts/docs/index.d.ts.map +1 -1
  172. package/dist/layouts/docs/index.js +11 -11
  173. package/dist/layouts/docs/index.js.map +1 -1
  174. package/dist/layouts/docs/page/client.d.ts +7 -7
  175. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  176. package/dist/layouts/docs/page/client.js +21 -21
  177. package/dist/layouts/docs/page/client.js.map +1 -1
  178. package/dist/layouts/docs/page/index.d.ts +5 -5
  179. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  180. package/dist/layouts/docs/page/index.js +13 -13
  181. package/dist/layouts/docs/page/index.js.map +1 -1
  182. package/dist/layouts/docs/sidebar.d.ts +20 -19
  183. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  184. package/dist/layouts/docs/sidebar.js +6 -6
  185. package/dist/layouts/docs/sidebar.js.map +1 -1
  186. package/dist/layouts/flux/index.d.ts +79 -0
  187. package/dist/layouts/flux/index.d.ts.map +1 -0
  188. package/dist/layouts/flux/index.js +168 -0
  189. package/dist/layouts/flux/index.js.map +1 -0
  190. package/dist/layouts/flux/page/client.d.ts +45 -0
  191. package/dist/layouts/flux/page/client.d.ts.map +1 -0
  192. package/dist/layouts/flux/page/client.js +255 -0
  193. package/dist/layouts/flux/page/client.js.map +1 -0
  194. package/dist/layouts/flux/page/index.d.ts +98 -0
  195. package/dist/layouts/flux/page/index.d.ts.map +1 -0
  196. package/dist/layouts/flux/page/index.js +76 -0
  197. package/dist/layouts/flux/page/index.js.map +1 -0
  198. package/dist/layouts/flux/sidebar.d.ts +59 -0
  199. package/dist/layouts/flux/sidebar.d.ts.map +1 -0
  200. package/dist/layouts/flux/sidebar.js +197 -0
  201. package/dist/layouts/flux/sidebar.js.map +1 -0
  202. package/dist/layouts/flux/tab-dropdown.d.ts +21 -0
  203. package/dist/layouts/flux/tab-dropdown.d.ts.map +1 -0
  204. package/dist/layouts/flux/tab-dropdown.js +96 -0
  205. package/dist/layouts/flux/tab-dropdown.js.map +1 -0
  206. package/dist/layouts/home/client.d.ts +3 -3
  207. package/dist/layouts/home/client.d.ts.map +1 -1
  208. package/dist/layouts/home/client.js +20 -38
  209. package/dist/layouts/home/client.js.map +1 -1
  210. package/dist/layouts/home/index.d.ts +2 -2
  211. package/dist/layouts/home/index.d.ts.map +1 -1
  212. package/dist/layouts/home/index.js +1 -1
  213. package/dist/layouts/home/index.js.map +1 -1
  214. package/dist/layouts/home/navbar.d.ts +6 -6
  215. package/dist/layouts/home/navbar.d.ts.map +1 -1
  216. package/dist/layouts/home/navbar.js +2 -2
  217. package/dist/layouts/home/navbar.js.map +1 -1
  218. package/dist/layouts/notebook/client.d.ts +9 -9
  219. package/dist/layouts/notebook/client.d.ts.map +1 -1
  220. package/dist/layouts/notebook/client.js +8 -8
  221. package/dist/layouts/notebook/client.js.map +1 -1
  222. package/dist/layouts/notebook/index.d.ts +2 -2
  223. package/dist/layouts/notebook/index.d.ts.map +1 -1
  224. package/dist/layouts/notebook/index.js +18 -18
  225. package/dist/layouts/notebook/index.js.map +1 -1
  226. package/dist/layouts/notebook/page/client.d.ts +7 -7
  227. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  228. package/dist/layouts/notebook/page/client.js +21 -21
  229. package/dist/layouts/notebook/page/client.js.map +1 -1
  230. package/dist/layouts/notebook/page/index.d.ts +5 -5
  231. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  232. package/dist/layouts/notebook/page/index.js +13 -13
  233. package/dist/layouts/notebook/page/index.js.map +1 -1
  234. package/dist/layouts/notebook/sidebar.d.ts +15 -14
  235. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  236. package/dist/layouts/notebook/sidebar.js +4 -4
  237. package/dist/layouts/notebook/sidebar.js.map +1 -1
  238. package/dist/layouts/shared/index.d.ts +13 -6
  239. package/dist/layouts/shared/index.d.ts.map +1 -1
  240. package/dist/layouts/shared/index.js +29 -2
  241. package/dist/layouts/shared/index.js.map +1 -1
  242. package/dist/layouts/shared/language-toggle.d.ts +2 -2
  243. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  244. package/dist/layouts/shared/language-toggle.js +4 -4
  245. package/dist/layouts/shared/language-toggle.js.map +1 -1
  246. package/dist/layouts/shared/search-toggle.d.ts +3 -3
  247. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  248. package/dist/layouts/shared/search-toggle.js +6 -6
  249. package/dist/layouts/shared/search-toggle.js.map +1 -1
  250. package/dist/layouts/shared/theme-toggle.d.ts +2 -2
  251. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  252. package/dist/layouts/shared/theme-toggle.js +7 -7
  253. package/dist/layouts/shared/theme-toggle.js.map +1 -1
  254. package/dist/mdx.d.ts +1 -1
  255. package/dist/mdx.d.ts.map +1 -1
  256. package/dist/mdx.js +2 -2
  257. package/dist/mdx.js.map +1 -1
  258. package/dist/mdx.server.d.ts +0 -1
  259. package/dist/mdx.server.d.ts.map +1 -1
  260. package/dist/og.d.ts +23 -1
  261. package/dist/og.d.ts.map +1 -0
  262. package/dist/og.js +69 -2
  263. package/dist/og.js.map +1 -0
  264. package/dist/page.d.ts +3 -3
  265. package/dist/page.d.ts.map +1 -1
  266. package/dist/page.js +5 -5
  267. package/dist/page.js.map +1 -1
  268. package/dist/provider/base.d.ts +4 -4
  269. package/dist/provider/base.d.ts.map +1 -1
  270. package/dist/provider/base.js +3 -3
  271. package/dist/provider/base.js.map +1 -1
  272. package/dist/provider/next.d.ts +3 -3
  273. package/dist/provider/next.d.ts.map +1 -1
  274. package/dist/provider/react-router.d.ts +3 -3
  275. package/dist/provider/react-router.d.ts.map +1 -1
  276. package/dist/provider/tanstack.d.ts +3 -3
  277. package/dist/provider/tanstack.d.ts.map +1 -1
  278. package/dist/provider/waku.d.ts +3 -3
  279. package/dist/provider/waku.d.ts.map +1 -1
  280. package/dist/style.css +187 -56
  281. package/dist/utils/cn.js +3 -0
  282. package/dist/utils/link-item.d.ts +86 -0
  283. package/dist/utils/link-item.d.ts.map +1 -0
  284. package/dist/utils/link-item.js +25 -0
  285. package/dist/utils/link-item.js.map +1 -0
  286. package/dist/utils/merge-refs.js +13 -0
  287. package/dist/utils/merge-refs.js.map +1 -0
  288. package/dist/utils/urls.js +17 -0
  289. package/dist/utils/urls.js.map +1 -0
  290. package/dist/utils/use-copy-button.d.ts +7 -1
  291. package/dist/utils/use-copy-button.d.ts.map +1 -0
  292. package/dist/utils/use-copy-button.js +29 -2
  293. package/dist/utils/use-copy-button.js.map +1 -0
  294. package/dist/utils/use-footer-items.d.ts +10 -1
  295. package/dist/utils/use-footer-items.d.ts.map +1 -0
  296. package/dist/utils/use-footer-items.js +27 -2
  297. package/dist/utils/use-footer-items.js.map +1 -0
  298. package/dist/utils/use-is-scroll-top.d.ts +9 -1
  299. package/dist/utils/use-is-scroll-top.d.ts.map +1 -0
  300. package/dist/utils/use-is-scroll-top.js +23 -2
  301. package/dist/utils/use-is-scroll-top.js.map +1 -0
  302. package/package.json +28 -17
  303. package/css/layouts/docs.css +0 -1
  304. package/css/layouts/home.css +0 -1
  305. package/css/layouts/notebook.css +0 -1
  306. package/dist/_virtual/rolldown_runtime.js +0 -36
@@ -1,6 +1,6 @@
1
1
  import { base_d_exports } from "./base.js";
2
- import * as react_jsx_runtime14 from "react/jsx-runtime";
3
2
  import { FC, ReactNode } from "react";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import * as PageTree from "@hanzo/docs-core/page-tree";
5
5
 
6
6
  //#region src/components/sidebar/page-tree.d.ts
@@ -24,7 +24,7 @@ declare function createPageTreeRenderer({
24
24
  SidebarFolderTrigger,
25
25
  SidebarSeparator,
26
26
  SidebarItem
27
- }: InternalComponents): (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime14.JSX.Element;
27
+ }: InternalComponents): (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime0.JSX.Element;
28
28
  //#endregion
29
29
  export { SidebarPageTreeComponents, createPageTreeRenderer };
30
30
  //# sourceMappingURL=page-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":[],"mappings":";;;;;;UAKiB,yBAAA;QACT;UAAW,QAAA,CAAS;EADX,CAAA,CAAA;EACE,MAAS,EAClB,EADkB,CAAA;IAApB,IAAA,EACa,QAAA,CAAS,MADtB;IACa,QAAS,EAAkB,SAAlB;EAAkB,CAAA,CAAA;EAAtC,SAAA,EACG,EADH,CAAA;IACc,IAAS,EAAT,QAAA,CAAS,SAAA;EAApB,CAAA,CAAA;;AACZ,KAEI,kBAAA,GAAqB,IAAH,CAAA,OACd,cAAA,EAAA,kBADqB,GAAA,eAAA,GAAA,mBAAA,GAAA,sBAAA,GAAA,sBAAA,GAAA,aAAA,CAAA;AAUd,iBAAA,sBAAA,CAAsB;EAAA,aAAA;EAAA,oBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EAOnC,kBAPmC,CAAA,EAAA,CAAA,UAAA,EAoCQ,OApCR,CAoCgB,yBApChB,CAAA,EAAA,GAoC0C,mBAAA,CAAA,GAAA,CAAA,OApC1C"}
1
+ {"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"mappings":";;;;;;UAKiB,yBAAA;EACf,IAAA,EAAM,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,IAAA;EAAA;EAC1B,MAAA,EAAQ,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,MAAA;IAAQ,QAAA,EAAU,SAAA;EAAA;EAC9C,SAAA,EAAW,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,SAAA;EAAA;AAAA;AAAA,KAG5B,kBAAA,GAAqB,IAAA,QACjB,cAAA;AAAA,iBASO,sBAAA,CAAA;EACd,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;EACA;AAAA,GACC,kBAAA,IA6B+B,UAAA,EAAY,OAAA,CAAQ,yBAAA,MAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,11 +1,11 @@
1
- import { tree_exports } from "../../contexts/tree.js";
1
+ import { useTreeContext, useTreePath } from "../../contexts/tree.js";
2
+ import { Fragment, useMemo } from "react";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Fragment as Fragment$1, useMemo } from "react";
4
4
 
5
5
  //#region src/components/sidebar/page-tree.tsx
6
6
  function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarSeparator, SidebarItem }) {
7
7
  function PageTreeFolder({ item, children }) {
8
- const path = (0, tree_exports.useTreePath)();
8
+ const path = useTreePath();
9
9
  return /* @__PURE__ */ jsxs(SidebarFolder, {
10
10
  collapsible: item.collapsible,
11
11
  active: path.includes(item),
@@ -21,7 +21,7 @@ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFo
21
21
  * Render sidebar items from page tree
22
22
  */
23
23
  return function SidebarPageTree(components) {
24
- const { root } = (0, tree_exports.useTreeContext)();
24
+ const { root } = useTreeContext();
25
25
  const { Separator, Item, Folder = PageTreeFolder } = components;
26
26
  return useMemo(() => {
27
27
  function renderSidebarList(items) {
@@ -43,7 +43,7 @@ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFo
43
43
  }, item.url);
44
44
  });
45
45
  }
46
- return /* @__PURE__ */ jsx(Fragment$1, { children: renderSidebarList(root.children) }, root.$id);
46
+ return /* @__PURE__ */ jsx(Fragment, { children: renderSidebarList(root.children) }, root.$id);
47
47
  }, [
48
48
  Folder,
49
49
  Item,
@@ -1 +1 @@
1
- {"version":3,"file":"page-tree.js","names":["Fragment"],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":["import { useTreeContext, useTreePath } from '@/contexts/tree';\nimport { type FC, type ReactNode, useMemo, Fragment } from 'react';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport type * as Base from './base';\n\nexport interface SidebarPageTreeComponents {\n Item: FC<{ item: PageTree.Item }>;\n Folder: FC<{ item: PageTree.Folder; children: ReactNode }>;\n Separator: FC<{ item: PageTree.Separator }>;\n}\n\ntype InternalComponents = Pick<\n typeof Base,\n | 'SidebarSeparator'\n | 'SidebarFolder'\n | 'SidebarFolderLink'\n | 'SidebarFolderContent'\n | 'SidebarFolderTrigger'\n | 'SidebarItem'\n>;\n\nexport function createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarSeparator,\n SidebarItem,\n}: InternalComponents) {\n function PageTreeFolder({ item, children }: { item: PageTree.Folder; children: ReactNode }) {\n const path = useTreePath();\n\n return (\n <SidebarFolder\n collapsible={item.collapsible}\n active={path.includes(item)}\n defaultOpen={item.defaultOpen}\n >\n {item.index ? (\n <SidebarFolderLink href={item.index.url} external={item.index.external}>\n {item.icon}\n {item.name}\n </SidebarFolderLink>\n ) : (\n <SidebarFolderTrigger>\n {item.icon}\n {item.name}\n </SidebarFolderTrigger>\n )}\n <SidebarFolderContent>{children}</SidebarFolderContent>\n </SidebarFolder>\n );\n }\n\n /**\n * Render sidebar items from page tree\n */\n return function SidebarPageTree(components: Partial<SidebarPageTreeComponents>) {\n const { root } = useTreeContext();\n const { Separator, Item, Folder = PageTreeFolder } = components;\n\n return useMemo(() => {\n function renderSidebarList(items: PageTree.Node[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') {\n if (Separator) return <Separator key={i} item={item} />;\n return (\n <SidebarSeparator key={i}>\n {item.icon}\n {item.name}\n </SidebarSeparator>\n );\n }\n\n if (item.type === 'folder') {\n return (\n <Folder key={i} item={item}>\n {renderSidebarList(item.children)}\n </Folder>\n );\n }\n\n if (Item) return <Item key={item.url} item={item} />;\n return (\n <SidebarItem key={item.url} href={item.url} external={item.external} icon={item.icon}>\n {item.name}\n </SidebarItem>\n );\n });\n }\n\n return <Fragment key={root.$id}>{renderSidebarList(root.children)}</Fragment>;\n }, [Folder, Item, Separator, root]);\n };\n}\n"],"mappings":";;;;;AAqBA,SAAgB,uBAAuB,EACrC,eACA,sBACA,mBACA,sBACA,kBACA,eACqB;CACrB,SAAS,eAAe,EAAE,MAAM,YAA4D;EAC1F,MAAM,sCAAoB;AAE1B,SACE,qBAAC;GACC,aAAa,KAAK;GAClB,QAAQ,KAAK,SAAS,KAAK;GAC3B,aAAa,KAAK;cAEjB,KAAK,QACJ,qBAAC;IAAkB,MAAM,KAAK,MAAM;IAAK,UAAU,KAAK,MAAM;eAC3D,KAAK,MACL,KAAK;KACY,GAEpB,qBAAC,mCACE,KAAK,MACL,KAAK,QACe,EAEzB,oBAAC,wBAAsB,WAAgC;IACzC;;;;;AAOpB,QAAO,SAAS,gBAAgB,YAAgD;EAC9E,MAAM,EAAE,2CAAyB;EACjC,MAAM,EAAE,WAAW,MAAM,SAAS,mBAAmB;AAErD,SAAO,cAAc;GACnB,SAAS,kBAAkB,OAAwB;AACjD,WAAO,MAAM,KAAK,MAAM,MAAM;AAC5B,SAAI,KAAK,SAAS,aAAa;AAC7B,UAAI,UAAW,QAAO,oBAAC,aAAwB,QAAT,EAAiB;AACvD,aACE,qBAAC,+BACE,KAAK,MACL,KAAK,SAFe,EAGJ;;AAIvB,SAAI,KAAK,SAAS,SAChB,QACE,oBAAC;MAAqB;gBACnB,kBAAkB,KAAK,SAAS;QADtB,EAEJ;AAIb,SAAI,KAAM,QAAO,oBAAC,QAA0B,QAAhB,KAAK,IAAmB;AACpD,YACE,oBAAC;MAA2B,MAAM,KAAK;MAAK,UAAU,KAAK;MAAU,MAAM,KAAK;gBAC7E,KAAK;QADU,KAAK,IAET;MAEhB;;AAGJ,UAAO,oBAACA,wBAAyB,kBAAkB,KAAK,SAAS,IAA3C,KAAK,IAAkD;KAC5E;GAAC;GAAQ;GAAM;GAAW;GAAK,CAAC"}
1
+ {"version":3,"file":"page-tree.js","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":["import { useTreeContext, useTreePath } from '@/contexts/tree';\nimport { type FC, type ReactNode, useMemo, Fragment } from 'react';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport type * as Base from './base';\n\nexport interface SidebarPageTreeComponents {\n Item: FC<{ item: PageTree.Item }>;\n Folder: FC<{ item: PageTree.Folder; children: ReactNode }>;\n Separator: FC<{ item: PageTree.Separator }>;\n}\n\ntype InternalComponents = Pick<\n typeof Base,\n | 'SidebarSeparator'\n | 'SidebarFolder'\n | 'SidebarFolderLink'\n | 'SidebarFolderContent'\n | 'SidebarFolderTrigger'\n | 'SidebarItem'\n>;\n\nexport function createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarSeparator,\n SidebarItem,\n}: InternalComponents) {\n function PageTreeFolder({ item, children }: { item: PageTree.Folder; children: ReactNode }) {\n const path = useTreePath();\n\n return (\n <SidebarFolder\n collapsible={item.collapsible}\n active={path.includes(item)}\n defaultOpen={item.defaultOpen}\n >\n {item.index ? (\n <SidebarFolderLink href={item.index.url} external={item.index.external}>\n {item.icon}\n {item.name}\n </SidebarFolderLink>\n ) : (\n <SidebarFolderTrigger>\n {item.icon}\n {item.name}\n </SidebarFolderTrigger>\n )}\n <SidebarFolderContent>{children}</SidebarFolderContent>\n </SidebarFolder>\n );\n }\n\n /**\n * Render sidebar items from page tree\n */\n return function SidebarPageTree(components: Partial<SidebarPageTreeComponents>) {\n const { root } = useTreeContext();\n const { Separator, Item, Folder = PageTreeFolder } = components;\n\n return useMemo(() => {\n function renderSidebarList(items: PageTree.Node[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') {\n if (Separator) return <Separator key={i} item={item} />;\n return (\n <SidebarSeparator key={i}>\n {item.icon}\n {item.name}\n </SidebarSeparator>\n );\n }\n\n if (item.type === 'folder') {\n return (\n <Folder key={i} item={item}>\n {renderSidebarList(item.children)}\n </Folder>\n );\n }\n\n if (Item) return <Item key={item.url} item={item} />;\n return (\n <SidebarItem key={item.url} href={item.url} external={item.external} icon={item.icon}>\n {item.name}\n </SidebarItem>\n );\n });\n }\n\n return <Fragment key={root.$id}>{renderSidebarList(root.children)}</Fragment>;\n }, [Folder, Item, Separator, root]);\n };\n}\n"],"mappings":";;;;;AAqBA,SAAgB,uBAAuB,EACrC,eACA,sBACA,mBACA,sBACA,kBACA,eACqB;CACrB,SAAS,eAAe,EAAE,MAAM,YAA4D;EAC1F,MAAM,OAAO,aAAa;AAE1B,SACE,qBAAC;GACC,aAAa,KAAK;GAClB,QAAQ,KAAK,SAAS,KAAK;GAC3B,aAAa,KAAK;cAEjB,KAAK,QACJ,qBAAC;IAAkB,MAAM,KAAK,MAAM;IAAK,UAAU,KAAK,MAAM;eAC3D,KAAK,MACL,KAAK;KACY,GAEpB,qBAAC,mCACE,KAAK,MACL,KAAK,QACe,EAEzB,oBAAC,wBAAsB,WAAgC;IACzC;;;;;AAOpB,QAAO,SAAS,gBAAgB,YAAgD;EAC9E,MAAM,EAAE,SAAS,gBAAgB;EACjC,MAAM,EAAE,WAAW,MAAM,SAAS,mBAAmB;AAErD,SAAO,cAAc;GACnB,SAAS,kBAAkB,OAAwB;AACjD,WAAO,MAAM,KAAK,MAAM,MAAM;AAC5B,SAAI,KAAK,SAAS,aAAa;AAC7B,UAAI,UAAW,QAAO,oBAAC,aAAwB,QAAT,EAAiB;AACvD,aACE,qBAAC,+BACE,KAAK,MACL,KAAK,SAFe,EAGJ;;AAIvB,SAAI,KAAK,SAAS,SAChB,QACE,oBAAC;MAAqB;gBACnB,kBAAkB,KAAK,SAAS;QADtB,EAEJ;AAIb,SAAI,KAAM,QAAO,oBAAC,QAA0B,QAAhB,KAAK,IAAmB;AACpD,YACE,oBAAC;MAA2B,MAAM,KAAK;MAAK,UAAU,KAAK;MAAU,MAAM,KAAK;gBAC7E,KAAK;QADU,KAAK,IAET;MAEhB;;AAGJ,UAAO,oBAAC,sBAAyB,kBAAkB,KAAK,SAAS,IAA3C,KAAK,IAAkD;KAC5E;GAAC;GAAQ;GAAM;GAAW;GAAK,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { SidebarTab } from "./index.js";
2
- import * as react_jsx_runtime58 from "react/jsx-runtime";
3
2
  import { ComponentProps, ReactNode } from "react";
3
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/sidebar/tabs/dropdown.d.ts
6
6
  interface SidebarTabWithProps extends SidebarTab {
@@ -13,8 +13,8 @@ declare function SidebarTabsDropdown({
13
13
  }: {
14
14
  placeholder?: ReactNode;
15
15
  options: SidebarTabWithProps[];
16
- } & ComponentProps<'button'>): react_jsx_runtime58.JSX.Element;
17
- declare function isTabActive(tab: SidebarTab, pathname: string): any;
16
+ } & ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
17
+ declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
18
18
  //#endregion
19
19
  export { SidebarTabWithProps, SidebarTabsDropdown, isTabActive };
20
20
  //# sourceMappingURL=dropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":[],"mappings":";;;;;UAWiB,mBAAA,SAA4B;UACnC;;AADO,iBAID,mBAAA,CAHN;EAAA,OAAA;EADmC,WAAU;EAAA,GAAA;AAMrD,CANqD,EAAA;EAIvC,WAAA,CAAA,EAKA,SALmB;EACjC,OAAA,EAKS,mBALT,EAAA;CACA,GAKE,cALF,CAAA,QAAA,CAAA,CAAA,EAK0B,mBAAA,CAAA,GAAA,CAAA,OAL1B;AAGc,iBAkFA,WAAA,CAlFA,GAAA,EAkFiB,UAlFjB,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,GAAA"}
1
+ {"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"mappings":";;;;;UAWiB,mBAAA,SAA4B,UAAA;EAC3C,KAAA,GAAQ,cAAA;AAAA;AAAA,iBAGM,mBAAA,CAAA;EACd,OAAA;EACA,WAAA;EAAA,GACG;AAAA;EAEH,WAAA,GAAc,SAAA;EACd,OAAA,EAAS,mBAAA;AAAA,IACP,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgFZ,WAAA,CAAY,GAAA,EAAK,UAAA,EAAY,QAAA"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
+ import { cn } from "../../../utils/cn.js";
4
+ import { isActive, normalize } from "../../../utils/urls.js";
3
5
  import { useSidebar } from "../base.js";
4
6
  import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
5
- import Link from "@hanzo/docs-core/link";
7
+ import { useMemo, useState } from "react";
6
8
  import { usePathname } from "@hanzo/docs-core/framework";
7
- import { cn } from "@hanzo/docs-ui/cn";
8
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
+ import Link from "@hanzo/docs-core/link";
9
11
  import { Check, ChevronsUpDown } from "lucide-react";
10
- import { useMemo, useState } from "react";
11
- import { isActive, normalize } from "@hanzo/docs-radix-ui/urls";
12
12
 
13
13
  //#region src/components/sidebar/tabs/dropdown.tsx
14
14
  function SidebarTabsDropdown({ options, placeholder, ...props }) {
@@ -16,13 +16,13 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
16
16
  const { closeOnRedirect } = useSidebar();
17
17
  const pathname = usePathname();
18
18
  const selected = useMemo(() => {
19
- return options.findLast((item$1) => isTabActive(item$1, pathname));
19
+ return options.findLast((item) => isTabActive(item, pathname));
20
20
  }, [options, pathname]);
21
21
  const onClick = () => {
22
22
  closeOnRedirect.current = false;
23
23
  setOpen(false);
24
24
  };
25
- const item = selected ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
25
+ const item = selected ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
26
26
  className: "size-9 shrink-0 empty:hidden md:size-5",
27
27
  children: selected.icon
28
28
  }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
@@ -37,33 +37,33 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
37
37
  onOpenChange: setOpen,
38
38
  children: [item && /* @__PURE__ */ jsxs(PopoverTrigger, {
39
39
  ...props,
40
- className: cn("flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-[open]:bg-fd-accent data-[open]:text-fd-accent-foreground", props.className),
40
+ className: cn("flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground", props.className),
41
41
  children: [item, /* @__PURE__ */ jsx(ChevronsUpDown, { className: "shrink-0 ms-auto size-4 text-fd-muted-foreground" })]
42
42
  }), /* @__PURE__ */ jsx(PopoverContent, {
43
43
  className: "flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container",
44
- children: options.map((item$1) => {
45
- const isActive$1 = selected && item$1.url === selected.url;
46
- if (!isActive$1 && item$1.unlisted) return;
44
+ children: options.map((item) => {
45
+ const isActive = selected && item.url === selected.url;
46
+ if (!isActive && item.unlisted) return;
47
47
  return /* @__PURE__ */ jsxs(Link, {
48
- href: item$1.url,
48
+ href: item.url,
49
49
  onClick,
50
- ...item$1.props,
51
- className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item$1.props?.className),
50
+ ...item.props,
51
+ className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item.props?.className),
52
52
  children: [
53
53
  /* @__PURE__ */ jsx("div", {
54
54
  className: "shrink-0 size-9 md:mb-auto md:size-5 empty:hidden",
55
- children: item$1.icon
55
+ children: item.icon
56
56
  }),
57
57
  /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
58
58
  className: "text-sm font-medium leading-none",
59
- children: item$1.title
59
+ children: item.title
60
60
  }), /* @__PURE__ */ jsx("p", {
61
61
  className: "text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden",
62
- children: item$1.description
62
+ children: item.description
63
63
  })] }),
64
- /* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive$1 && "invisible") })
64
+ /* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive && "invisible") })
65
65
  ]
66
- }, item$1.url);
66
+ }, item.url);
67
67
  })
68
68
  })]
69
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","names":["item","isActive"],"sources":["../../../../src/components/sidebar/tabs/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 '@hanzo/docs-ui/cn';\nimport { normalize, isActive } from '@hanzo/docs-radix-ui/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\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\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-[open]:bg-fd-accent data-[open]:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\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-2 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 size-9 md:mb-auto md:size-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":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,WAAS,YAAYA,QAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,4CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,gNACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,WAAS;IACrB,MAAMC,aAAW,YAAYD,OAAK,QAAQ,SAAS;AACnD,QAAI,CAACC,cAAYD,OAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAMA,OAAK;KACF;KACT,GAAIA,OAAK;KACT,WAAW,GACT,+FACAA,OAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqDA,OAAK;QAAW;MACpF,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoCA,OAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACVA,OAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAACC,cAAY,YACd,GACD;;OAtBGD,OAAK,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
+ {"version":3,"file":"dropdown.js","names":[],"sources":["../../../../src/components/sidebar/tabs/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 { normalize, isActive } from '@/utils/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\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\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\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-2 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 size-9 md:mb-auto md:size-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":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,SAAS,YAAY,MAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,8CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,4MACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,SAAS;IACrB,MAAM,WAAW,YAAY,KAAK,QAAQ,SAAS;AACnD,QAAI,CAAC,YAAY,KAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAM,KAAK;KACF;KACT,GAAI,KAAK;KACT,WAAW,GACT,+FACA,KAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqD,KAAK;QAAW;MACpF,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 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"sourcesContent":[],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAOS,GAAA,EAAA,MAAA;EACO,IAAA,CAAA,EAFP,SAEO;EAKP,KAAA,EANA,SAMA;EAAG,WAAA,CAAA,EALI,SAKJ;EAIK;;;EAC4C,IAAA,CAAA,EALpD,GAKoD,CAAA,MAAA,CAAA;EAAU,QAAA,CAAA,EAAA,OAAA;AAgBvE;AACQ,UAlBS,qBAAA,CAkBA;EACb,SAAA,CAAA,EAAA,CAAA,MAAA,EAlBmB,UAkBnB,EAAA,IAAA,EAlBqC,QAAA,CAAS,MAkB9C,EAAA,GAlByD,UAkBzD,GAAA,IAAA;;AACD,iBAHa,cAAA,CAGb,IAAA,EAFK,QAAA,CAAS,IAEd,EAAA;EAAA;AAAA,CAAA,CAAA,EADiC,qBACjC,CAAA,EAAA,UAAA,EAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAIE,GAAA;EAEA,IAAA,GAAO,SAAA;EACP,KAAA,EAAO,SAAA;EACP,WAAA,GAAc,SAAA;EAKP;;;EAAP,IAAA,GAAO,GAAA;EACP,QAAA;AAAA;AAAA,UAGe,qBAAA;EACf,SAAA,IAAa,MAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,QAAA,CAAS,MAAA,KAAW,UAAA;AAAA;AAAA,iBAgB7C,cAAA,CACd,IAAA,EAAM,QAAA,CAAS,IAAA;EACb;AAAA,IAAgC,qBAAA,GACjC,UAAA"}
@@ -1,17 +1,17 @@
1
- import * as react_jsx_runtime99 from "react/jsx-runtime";
2
1
  import { ReactNode } from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/steps.d.ts
5
5
  declare function Steps({
6
6
  children
7
7
  }: {
8
8
  children: ReactNode;
9
- }): react_jsx_runtime99.JSX.Element;
9
+ }): react_jsx_runtime0.JSX.Element;
10
10
  declare function Step({
11
11
  children
12
12
  }: {
13
13
  children: ReactNode;
14
- }): react_jsx_runtime99.JSX.Element;
14
+ }): react_jsx_runtime0.JSX.Element;
15
15
  //#endregion
16
16
  export { Step, Steps };
17
17
  //# sourceMappingURL=steps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","names":[],"sources":["../../src/components/steps.tsx"],"sourcesContent":[],"mappings":";;;;iBAEgB,KAAA;;;YAAgC;IAAW,mBAAA,CAAA,GAAA,CAAA;AAA3C,iBAIA,IAAA,CAJK;EAAA;CAAA,EAAA;EAAG,QAAA,EAIuB,SAJvB;CAAwB,CAAA,EAIU,mBAAA,CAAA,GAAA,CAAA,OAJV"}
1
+ {"version":3,"file":"steps.d.ts","names":[],"sources":["../../src/components/steps.tsx"],"mappings":";;;;iBAEgB,KAAA,CAAA;EAAQ;AAAA;EAAc,QAAA,EAAU,SAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI3C,IAAA,CAAA;EAAO;AAAA;EAAc,QAAA,EAAU,SAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,7 +1,7 @@
1
1
  import { Tabs as Tabs$1, TabsContent as TabsContent$1 } from "./ui/tabs.js";
2
- import * as react_jsx_runtime102 from "react/jsx-runtime";
3
2
  import * as React from "react";
4
3
  import { ComponentProps, ReactNode } from "react";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
  import * as _base_ui_react0 from "@base-ui/react";
6
6
 
7
7
  //#region src/components/tabs.d.ts
@@ -31,7 +31,7 @@ declare function Tabs({
31
31
  defaultIndex,
32
32
  defaultValue,
33
33
  ...props
34
- }: TabsProps): react_jsx_runtime102.JSX.Element;
34
+ }: TabsProps): react_jsx_runtime0.JSX.Element;
35
35
  interface TabProps extends Omit<ComponentProps<typeof TabsContent$1>, 'value'> {
36
36
  /**
37
37
  * Value of tab, detect from index if unspecified.
@@ -41,12 +41,12 @@ interface TabProps extends Omit<ComponentProps<typeof TabsContent$1>, 'value'> {
41
41
  declare function Tab({
42
42
  value,
43
43
  ...props
44
- }: TabProps): react_jsx_runtime102.JSX.Element;
44
+ }: TabProps): react_jsx_runtime0.JSX.Element;
45
45
  declare function TabsContent({
46
46
  value,
47
47
  className,
48
48
  ...props
49
- }: ComponentProps<typeof TabsContent$1>): react_jsx_runtime102.JSX.Element;
49
+ }: ComponentProps<typeof TabsContent$1>): react_jsx_runtime0.JSX.Element;
50
50
  //#endregion
51
51
  export { Tab, TabProps, Tabs, TabsContent, TabsList, TabsProps, TabsTrigger };
52
52
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/components/tabs.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAkBiB,SAAA,SAAkB,KACjC,sBAAsB;;;;EADP,KAAA,CAAA,EAAA,MAAU,EAAA;EACH;;;;;EAgCX,YAcX,CAAA,EAAA,MAAA;EAAA;;;EAdmB,KAAA,CAAA,EAdX,SAcW;;AAAA,cAAR,QAAQ,EAAA,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAcnB,eAAA,CAdmB,aAAA,EAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA,CAAA,CAAA;AAAA,cAiBR,WAjBQ,EAiBG,KAAA,CAAA,yBAjBH,CAiBG,IAjBH,CAiBG,IAjBH,CA+BnB,eAAA,CAdsB,YAAA,EAjBH,KAAA,CAAA,GAiBG,KAAA,CAAA,aAjBH,CAiBG,WAjBH,CAAA,EAAA,KAAA,CAAA,GAiBG,KAAA,CAAA,aAjBH,CAiBG,WAjBH,CAAA,CAAA;AAAA,iBAkCL,IAAA,CAlCK;EAAA,GAAA;EAAA,SAAA;EAAA,KAAA;EAAA,KAAA;EAAA,YAAA;EAAA,YAAA;EAAA,GAAA;AAAA,CAAA,EA0ClB,SA1CkB,CAAA,EA0CT,oBAAA,CAAA,GAAA,CAAA,OA1CS;AAAA,UA+EJ,QAAA,SAAiB,IA/Eb,CA+EkB,cA/ElB,CAAA,OA+EwC,aA/ExC,CAAA,EAAA,OAAA,CAAA,CAAA;EAiBR;;;EAAW,KAAA,CAAA,EAAA,MAAA;;AAAA,iBAqER,GAAA,CArEQ;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAqEiB,QArEjB,CAAA,EAqEyB,oBAAA,CAAA,GAAA,CAAA,OArEzB;AAAA,iBAuFR,WAAA,CAvFQ;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA2FrB,cA3FqB,CAAA,OA2FC,aA3FD,CAAA,CAAA,EA2FsB,oBAAA,CAAA,GAAA,CAAA,OA3FtB"}
1
+ {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/components/tabs.tsx"],"mappings":";;;;;;;UAkBiB,SAAA,SAAkB,IAAA,CACjC,cAAA,QAAsB,MAAA;;;;EAMtB,KAAA;EAPyB;;;;;EAczB,YAAA;EAdqC;;;EAmBrC,KAAA,GAAQ,SAAA;AAAA;AAAA,cAcG,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAcnB,eAAA,CAdmB,aAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA,YAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAiBR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CActB,eAAA,CAdsB,YAAA,WAAA,KAAA,CAAA,aAAA,CAAA,WAAA,YAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,iBAiBR,IAAA,CAAA;EACd,GAAA;EACA,SAAA;EACA,KAAA;EACA,KAAA;EACA,YAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UAqCK,QAAA,SAAiB,IAAA,CAAK,cAAA,QAAsB,aAAA;EA7FnD;;;EAiGR,KAAA;AAAA;AAAA,iBAGc,GAAA,CAAA;EAAM,KAAA;EAAA,GAAU;AAAA,GAAS,QAAA,GAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBjC,WAAA,CAAA;EACd,KAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,aAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
+ import { cn } from "../utils/cn.js";
3
4
  import { Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "./ui/tabs.js";
4
- import { cn } from "@hanzo/docs-ui/cn";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
5
  import * as React from "react";
7
6
  import { createContext, useContext, useEffect, useId, useMemo, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/tabs.tsx
10
10
  const TabsContext = createContext(null);
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":["Unstyled.TabsList","Unstyled.TabsTrigger","Unstyled.Tabs","Unstyled.TabsContent"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useState,\n} from 'react';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport * as Unstyled from './ui/tabs';\n\ntype CollectionKey = string | symbol;\n\nexport interface TabsProps extends Omit<\n ComponentProps<typeof Unstyled.Tabs>,\n 'value' | 'onValueChange'\n> {\n /**\n * Use simple mode instead of advanced usage as documented in https://radix-ui.com/primitives/docs/components/tabs.\n */\n items?: string[];\n\n /**\n * Shortcut for `defaultValue` when `items` is provided.\n *\n * @defaultValue 0\n */\n defaultIndex?: number;\n\n /**\n * Additional label in tabs list when `items` is provided.\n */\n label?: ReactNode;\n}\n\nconst TabsContext = createContext<{\n items?: string[];\n collection: CollectionKey[];\n} | null>(null);\n\nfunction useTabContext() {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error('You must wrap your component in <Tabs>');\n return ctx;\n}\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsList>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsList>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsList\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'flex gap-3.5 text-fd-secondary-foreground overflow-x-auto px-4 not-prose',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsList.displayName = 'TabsList';\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsTrigger>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsTrigger>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsTrigger\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'inline-flex items-center gap-2 whitespace-nowrap text-fd-muted-foreground border-b border-transparent py-2 text-sm font-medium transition-colors [&_svg]:size-4 hover:text-fd-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active]:border-fd-primary data-[active]:text-fd-primary',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsTrigger.displayName = 'TabsTrigger';\n\nexport function Tabs({\n ref,\n className,\n items,\n label,\n defaultIndex = 0,\n defaultValue = items ? escapeValue(items[defaultIndex]) : undefined,\n ...props\n}: TabsProps) {\n const [value, setValue] = useState(defaultValue);\n const collection = useMemo<CollectionKey[]>(() => [], []);\n\n return (\n <Unstyled.Tabs\n ref={ref}\n className={(s) =>\n cn(\n 'flex flex-col overflow-hidden rounded-xl border bg-fd-secondary my-4',\n typeof className === 'function' ? className(s) : className,\n )\n }\n value={value}\n onValueChange={(v: string) => {\n if (items && !items.some((item) => escapeValue(item) === v)) return;\n setValue(v);\n }}\n {...props}\n >\n {items && (\n <TabsList>\n {label && <span className=\"text-sm font-medium my-auto me-auto\">{label}</span>}\n {items.map((item) => (\n <TabsTrigger key={item} value={escapeValue(item)}>\n {item}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n <TabsContext.Provider value={useMemo(() => ({ items, collection }), [collection, items])}>\n {props.children}\n </TabsContext.Provider>\n </Unstyled.Tabs>\n );\n}\n\nexport interface TabProps extends Omit<ComponentProps<typeof Unstyled.TabsContent>, 'value'> {\n /**\n * Value of tab, detect from index if unspecified.\n */\n value?: string;\n}\n\nexport function Tab({ value, ...props }: TabProps) {\n const { items } = useTabContext();\n const resolved =\n value ??\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `value` is not supposed to change\n items?.at(useCollectionIndex());\n if (!resolved)\n throw new Error(\n 'Failed to resolve tab `value`, please pass a `value` prop to the Tab component.',\n );\n\n return (\n <TabsContent value={escapeValue(resolved)} {...props}>\n {props.children}\n </TabsContent>\n );\n}\n\nexport function TabsContent({\n value,\n className,\n ...props\n}: ComponentProps<typeof Unstyled.TabsContent>) {\n return (\n <Unstyled.TabsContent\n value={value}\n keepMounted\n className={(s) =>\n cn(\n 'p-4 text-[0.9375rem] bg-fd-background rounded-xl outline-none prose-no-margin data-[inactive]:hidden [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {props.children}\n </Unstyled.TabsContent>\n );\n}\n\n/**\n * Inspired by Headless UI.\n *\n * Return the index of children, this is made possible by registering the order of render from children using React context.\n * This is supposed by work with pre-rendering & pure client-side rendering.\n */\nfunction useCollectionIndex() {\n const key = useId();\n const { collection } = useTabContext();\n\n useEffect(() => {\n return () => {\n const idx = collection.indexOf(key);\n if (idx !== -1) collection.splice(idx, 1);\n };\n }, [key, collection]);\n\n if (!collection.includes(key)) collection.push(key);\n return collection.indexOf(key);\n}\n\n/**\n * only escape whitespaces in values in simple mode\n */\nfunction escapeValue(v: string): string {\n return v.toLowerCase().replace(/\\s/, '-');\n}\n"],"mappings":";;;;;;;;;AAwCA,MAAM,cAAc,cAGV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,WAAW,YAAY;AACnC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAW,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACA;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,4EACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,SAAS,cAAc;AAEvB,MAAa,cAAc,MAAM,YAG9B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACC;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,kTACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,YAAY,cAAc;AAE1B,SAAgB,KAAK,EACnB,KACA,WACA,OACA,OACA,eAAe,GACf,eAAe,QAAQ,YAAY,MAAM,cAAc,GAAG,QAC1D,GAAG,SACS;CACZ,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,aAAa,cAA+B,EAAE,EAAE,EAAE,CAAC;AAEzD,QACE,qBAACC;EACM;EACL,YAAY,MACV,GACE,wEACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEI;EACP,gBAAgB,MAAc;AAC5B,OAAI,SAAS,CAAC,MAAM,MAAM,SAAS,YAAY,KAAK,KAAK,EAAE,CAAE;AAC7D,YAAS,EAAE;;EAEb,GAAI;aAEH,SACC,qBAAC,uBACE,SAAS,oBAAC;GAAK,WAAU;aAAuC;IAAa,EAC7E,MAAM,KAAK,SACV,oBAAC;GAAuB,OAAO,YAAY,KAAK;aAC7C;KADe,KAEJ,CACd,IACO,EAEb,oBAAC,YAAY;GAAS,OAAO,eAAe;IAAE;IAAO;IAAY,GAAG,CAAC,YAAY,MAAM,CAAC;aACrF,MAAM;IACc;GACT;;AAWpB,SAAgB,IAAI,EAAE,OAAO,GAAG,SAAmB;CACjD,MAAM,EAAE,UAAU,eAAe;CACjC,MAAM,WACJ,SAEA,OAAO,GAAG,oBAAoB,CAAC;AACjC,KAAI,CAAC,SACH,OAAM,IAAI,MACR,kFACD;AAEH,QACE,oBAAC;EAAY,OAAO,YAAY,SAAS;EAAE,GAAI;YAC5C,MAAM;GACK;;AAIlB,SAAgB,YAAY,EAC1B,OACA,WACA,GAAG,SAC2C;AAC9C,QACE,oBAACC;EACQ;EACP;EACA,YAAY,MACV,GACE,qKACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;YAEH,MAAM;GACc;;;;;;;;AAU3B,SAAS,qBAAqB;CAC5B,MAAM,MAAM,OAAO;CACnB,MAAM,EAAE,eAAe,eAAe;AAEtC,iBAAgB;AACd,eAAa;GACX,MAAM,MAAM,WAAW,QAAQ,IAAI;AACnC,OAAI,QAAQ,GAAI,YAAW,OAAO,KAAK,EAAE;;IAE1C,CAAC,KAAK,WAAW,CAAC;AAErB,KAAI,CAAC,WAAW,SAAS,IAAI,CAAE,YAAW,KAAK,IAAI;AACnD,QAAO,WAAW,QAAQ,IAAI;;;;;AAMhC,SAAS,YAAY,GAAmB;AACtC,QAAO,EAAE,aAAa,CAAC,QAAQ,MAAM,IAAI"}
1
+ {"version":3,"file":"tabs.js","names":["Unstyled.TabsList","Unstyled.TabsTrigger","Unstyled.Tabs","Unstyled.TabsContent"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useState,\n} from 'react';\nimport { cn } from '@/utils/cn';\nimport * as Unstyled from './ui/tabs';\n\ntype CollectionKey = string | symbol;\n\nexport interface TabsProps extends Omit<\n ComponentProps<typeof Unstyled.Tabs>,\n 'value' | 'onValueChange'\n> {\n /**\n * Use simple mode instead of advanced usage as documented in https://radix-ui.com/primitives/docs/components/tabs.\n */\n items?: string[];\n\n /**\n * Shortcut for `defaultValue` when `items` is provided.\n *\n * @defaultValue 0\n */\n defaultIndex?: number;\n\n /**\n * Additional label in tabs list when `items` is provided.\n */\n label?: ReactNode;\n}\n\nconst TabsContext = createContext<{\n items?: string[];\n collection: CollectionKey[];\n} | null>(null);\n\nfunction useTabContext() {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error('You must wrap your component in <Tabs>');\n return ctx;\n}\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsList>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsList>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsList\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'flex gap-3.5 text-fd-secondary-foreground overflow-x-auto px-4 not-prose',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsList.displayName = 'TabsList';\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsTrigger>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsTrigger>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsTrigger\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'inline-flex items-center gap-2 whitespace-nowrap text-fd-muted-foreground border-b border-transparent py-2 text-sm font-medium transition-colors [&_svg]:size-4 hover:text-fd-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active]:border-fd-primary data-[active]:text-fd-primary',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsTrigger.displayName = 'TabsTrigger';\n\nexport function Tabs({\n ref,\n className,\n items,\n label,\n defaultIndex = 0,\n defaultValue = items ? escapeValue(items[defaultIndex]) : undefined,\n ...props\n}: TabsProps) {\n const [value, setValue] = useState(defaultValue);\n const collection = useMemo<CollectionKey[]>(() => [], []);\n\n return (\n <Unstyled.Tabs\n ref={ref}\n className={(s) =>\n cn(\n 'flex flex-col overflow-hidden rounded-xl border bg-fd-secondary my-4',\n typeof className === 'function' ? className(s) : className,\n )\n }\n value={value}\n onValueChange={(v: string) => {\n if (items && !items.some((item) => escapeValue(item) === v)) return;\n setValue(v);\n }}\n {...props}\n >\n {items && (\n <TabsList>\n {label && <span className=\"text-sm font-medium my-auto me-auto\">{label}</span>}\n {items.map((item) => (\n <TabsTrigger key={item} value={escapeValue(item)}>\n {item}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n <TabsContext.Provider value={useMemo(() => ({ items, collection }), [collection, items])}>\n {props.children}\n </TabsContext.Provider>\n </Unstyled.Tabs>\n );\n}\n\nexport interface TabProps extends Omit<ComponentProps<typeof Unstyled.TabsContent>, 'value'> {\n /**\n * Value of tab, detect from index if unspecified.\n */\n value?: string;\n}\n\nexport function Tab({ value, ...props }: TabProps) {\n const { items } = useTabContext();\n const resolved =\n value ??\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `value` is not supposed to change\n items?.at(useCollectionIndex());\n if (!resolved)\n throw new Error(\n 'Failed to resolve tab `value`, please pass a `value` prop to the Tab component.',\n );\n\n return (\n <TabsContent value={escapeValue(resolved)} {...props}>\n {props.children}\n </TabsContent>\n );\n}\n\nexport function TabsContent({\n value,\n className,\n ...props\n}: ComponentProps<typeof Unstyled.TabsContent>) {\n return (\n <Unstyled.TabsContent\n value={value}\n keepMounted\n className={(s) =>\n cn(\n 'p-4 text-[0.9375rem] bg-fd-background rounded-xl outline-none prose-no-margin data-[inactive]:hidden [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {props.children}\n </Unstyled.TabsContent>\n );\n}\n\n/**\n * Inspired by Headless UI.\n *\n * Return the index of children, this is made possible by registering the order of render from children using React context.\n * This is supposed by work with pre-rendering & pure client-side rendering.\n */\nfunction useCollectionIndex() {\n const key = useId();\n const { collection } = useTabContext();\n\n useEffect(() => {\n return () => {\n const idx = collection.indexOf(key);\n if (idx !== -1) collection.splice(idx, 1);\n };\n }, [key, collection]);\n\n if (!collection.includes(key)) collection.push(key);\n return collection.indexOf(key);\n}\n\n/**\n * only escape whitespaces in values in simple mode\n */\nfunction escapeValue(v: string): string {\n return v.toLowerCase().replace(/\\s/, '-');\n}\n"],"mappings":";;;;;;;;;AAwCA,MAAM,cAAc,cAGV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,WAAW,YAAY;AACnC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAW,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACA;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,4EACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,SAAS,cAAc;AAEvB,MAAa,cAAc,MAAM,YAG9B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACC;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,kTACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,YAAY,cAAc;AAE1B,SAAgB,KAAK,EACnB,KACA,WACA,OACA,OACA,eAAe,GACf,eAAe,QAAQ,YAAY,MAAM,cAAc,GAAG,QAC1D,GAAG,SACS;CACZ,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,aAAa,cAA+B,EAAE,EAAE,EAAE,CAAC;AAEzD,QACE,qBAACC;EACM;EACL,YAAY,MACV,GACE,wEACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEI;EACP,gBAAgB,MAAc;AAC5B,OAAI,SAAS,CAAC,MAAM,MAAM,SAAS,YAAY,KAAK,KAAK,EAAE,CAAE;AAC7D,YAAS,EAAE;;EAEb,GAAI;aAEH,SACC,qBAAC,uBACE,SAAS,oBAAC;GAAK,WAAU;aAAuC;IAAa,EAC7E,MAAM,KAAK,SACV,oBAAC;GAAuB,OAAO,YAAY,KAAK;aAC7C;KADe,KAEJ,CACd,IACO,EAEb,oBAAC,YAAY;GAAS,OAAO,eAAe;IAAE;IAAO;IAAY,GAAG,CAAC,YAAY,MAAM,CAAC;aACrF,MAAM;IACc;GACT;;AAWpB,SAAgB,IAAI,EAAE,OAAO,GAAG,SAAmB;CACjD,MAAM,EAAE,UAAU,eAAe;CACjC,MAAM,WACJ,SAEA,OAAO,GAAG,oBAAoB,CAAC;AACjC,KAAI,CAAC,SACH,OAAM,IAAI,MACR,kFACD;AAEH,QACE,oBAAC;EAAY,OAAO,YAAY,SAAS;EAAE,GAAI;YAC5C,MAAM;GACK;;AAIlB,SAAgB,YAAY,EAC1B,OACA,WACA,GAAG,SAC2C;AAC9C,QACE,oBAACC;EACQ;EACP;EACA,YAAY,MACV,GACE,qKACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;YAEH,MAAM;GACc;;;;;;;;AAU3B,SAAS,qBAAqB;CAC5B,MAAM,MAAM,OAAO;CACnB,MAAM,EAAE,eAAe,eAAe;AAEtC,iBAAgB;AACd,eAAa;GACX,MAAM,MAAM,WAAW,QAAQ,IAAI;AACnC,OAAI,QAAQ,GAAI,YAAW,OAAO,KAAK,EAAE;;IAE1C,CAAC,KAAK,WAAW,CAAC;AAErB,KAAI,CAAC,WAAW,SAAS,IAAI,CAAE,YAAW,KAAK,IAAI;AACnD,QAAO,WAAW,QAAQ,IAAI;;;;;AAMhC,SAAS,YAAY,GAAmB;AACtC,QAAO,EAAE,aAAa,CAAC,QAAQ,MAAM,IAAI"}
@@ -1 +1,12 @@
1
- export * from "@hanzo/docs-radix-ui/components/toc/clerk";
1
+ import { ComponentProps } from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/components/toc/clerk.d.ts
5
+ declare function TOCItems({
6
+ ref,
7
+ className,
8
+ ...props
9
+ }: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
10
+ //#endregion
11
+ export { TOCItems };
12
+ //# sourceMappingURL=clerk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk.d.ts","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"mappings":";;;;iBAQgB,QAAA,CAAA;EAAW,GAAA;EAAK,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,12 +1,112 @@
1
- import { __reExport } from "../../_virtual/rolldown_runtime.js";
1
+ 'use client';
2
2
 
3
- export * from "@hanzo/docs-radix-ui/components/toc/clerk"
3
+ import { useI18n } from "../../contexts/i18n.js";
4
+ import { cn } from "../../utils/cn.js";
5
+ import { mergeRefs } from "../../utils/merge-refs.js";
6
+ import { TocThumb, useTOCItems } from "./index.js";
7
+ import { useEffect, useRef, useState } from "react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ import * as Primitive from "@hanzo/docs-core/toc";
4
10
 
5
11
  //#region src/components/toc/clerk.tsx
6
- var clerk_exports = {};
7
- import * as import__hanzo_docs_radix_ui_components_toc_clerk from "@hanzo/docs-radix-ui/components/toc/clerk";
8
- __reExport(clerk_exports, import__hanzo_docs_radix_ui_components_toc_clerk);
12
+ function TOCItems({ ref, className, ...props }) {
13
+ const containerRef = useRef(null);
14
+ const items = useTOCItems();
15
+ const { text } = useI18n();
16
+ const [svg, setSvg] = useState();
17
+ useEffect(() => {
18
+ if (!containerRef.current) return;
19
+ const container = containerRef.current;
20
+ function onResize() {
21
+ if (container.clientHeight === 0) return;
22
+ let w = 0, h = 0;
23
+ const d = [];
24
+ for (let i = 0; i < items.length; i++) {
25
+ const element = container.querySelector(`a[href="#${items[i].url.slice(1)}"]`);
26
+ if (!element) continue;
27
+ const styles = getComputedStyle(element);
28
+ const offset = getLineOffset(items[i].depth) + 1, top = element.offsetTop + parseFloat(styles.paddingTop), bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);
29
+ w = Math.max(offset, w);
30
+ h = Math.max(h, bottom);
31
+ d.push(`${i === 0 ? "M" : "L"}${offset} ${top}`);
32
+ d.push(`L${offset} ${bottom}`);
33
+ }
34
+ setSvg({
35
+ path: d.join(" "),
36
+ width: w + 1,
37
+ height: h
38
+ });
39
+ }
40
+ const observer = new ResizeObserver(onResize);
41
+ onResize();
42
+ observer.observe(container);
43
+ return () => {
44
+ observer.disconnect();
45
+ };
46
+ }, [items]);
47
+ if (items.length === 0) return /* @__PURE__ */ jsx("div", {
48
+ className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
49
+ children: text.tocNoHeadings
50
+ });
51
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [svg && /* @__PURE__ */ jsx("div", {
52
+ className: "absolute start-0 top-0 rtl:-scale-x-100",
53
+ style: {
54
+ width: svg.width,
55
+ height: svg.height,
56
+ maskImage: `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="1" fill="none" /></svg>`)}")`
57
+ },
58
+ children: /* @__PURE__ */ jsx(TocThumb, {
59
+ containerRef,
60
+ className: "absolute w-full top-(--fd-top) h-(--fd-height) bg-fd-primary transition-[top,height]"
61
+ })
62
+ }), /* @__PURE__ */ jsx("div", {
63
+ ref: mergeRefs(containerRef, ref),
64
+ className: cn("flex flex-col", className),
65
+ ...props,
66
+ children: items.map((item, i) => /* @__PURE__ */ jsx(TOCItem, {
67
+ item,
68
+ upper: items[i - 1]?.depth,
69
+ lower: items[i + 1]?.depth
70
+ }, item.url))
71
+ })] });
72
+ }
73
+ function getItemOffset(depth) {
74
+ if (depth <= 2) return 14;
75
+ if (depth === 3) return 26;
76
+ return 36;
77
+ }
78
+ function getLineOffset(depth) {
79
+ return depth >= 3 ? 10 : 0;
80
+ }
81
+ function TOCItem({ item, upper = item.depth, lower = item.depth }) {
82
+ const offset = getLineOffset(item.depth), upperOffset = getLineOffset(upper), lowerOffset = getLineOffset(lower);
83
+ return /* @__PURE__ */ jsxs(Primitive.TOCItem, {
84
+ href: item.url,
85
+ style: { paddingInlineStart: getItemOffset(item.depth) },
86
+ className: "prose relative py-1.5 text-sm text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",
87
+ children: [
88
+ offset !== upperOffset && /* @__PURE__ */ jsx("svg", {
89
+ xmlns: "http://www.w3.org/2000/svg",
90
+ viewBox: "0 0 16 16",
91
+ className: "absolute -top-1.5 start-0 size-4 rtl:-scale-x-100",
92
+ children: /* @__PURE__ */ jsx("line", {
93
+ x1: upperOffset,
94
+ y1: "0",
95
+ x2: offset,
96
+ y2: "12",
97
+ className: "stroke-fd-foreground/10",
98
+ strokeWidth: "1"
99
+ })
100
+ }),
101
+ /* @__PURE__ */ jsx("div", {
102
+ className: cn("absolute inset-y-0 w-px bg-fd-foreground/10", offset !== upperOffset && "top-1.5", offset !== lowerOffset && "bottom-1.5"),
103
+ style: { insetInlineStart: offset }
104
+ }),
105
+ item.title
106
+ ]
107
+ });
108
+ }
9
109
 
10
110
  //#endregion
11
- export { clerk_exports };
111
+ export { TOCItems };
12
112
  //# sourceMappingURL=clerk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clerk.js","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"sourcesContent":["export * from '@hanzo/docs-radix-ui/components/toc/clerk';\n"],"mappings":""}
1
+ {"version":3,"file":"clerk.js","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"sourcesContent":["'use client';\nimport * as Primitive from '@hanzo/docs-core/toc';\nimport { type ComponentProps, useEffect, useRef, useState } from 'react';\nimport { cn } from '@/utils/cn';\nimport { TocThumb, useTOCItems } from '.';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { useI18n } from '@/contexts/i18n';\n\nexport function TOCItems({ ref, className, ...props }: ComponentProps<'div'>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const items = useTOCItems();\n const { text } = useI18n();\n\n const [svg, setSvg] = useState<{\n path: string;\n width: number;\n height: number;\n }>();\n\n useEffect(() => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n\n function onResize(): void {\n if (container.clientHeight === 0) return;\n let w = 0,\n h = 0;\n const d: string[] = [];\n for (let i = 0; i < items.length; i++) {\n const element: HTMLElement | null = container.querySelector(\n `a[href=\"#${items[i].url.slice(1)}\"]`,\n );\n if (!element) continue;\n\n const styles = getComputedStyle(element);\n const offset = getLineOffset(items[i].depth) + 1,\n top = element.offsetTop + parseFloat(styles.paddingTop),\n bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);\n\n w = Math.max(offset, w);\n h = Math.max(h, bottom);\n\n d.push(`${i === 0 ? 'M' : 'L'}${offset} ${top}`);\n d.push(`L${offset} ${bottom}`);\n }\n\n setSvg({\n path: d.join(' '),\n width: w + 1,\n height: h,\n });\n }\n\n const observer = new ResizeObserver(onResize);\n onResize();\n\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [items]);\n\n if (items.length === 0)\n return (\n <div className=\"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground\">\n {text.tocNoHeadings}\n </div>\n );\n\n return (\n <>\n {svg && (\n <div\n className=\"absolute start-0 top-0 rtl:-scale-x-100\"\n style={{\n width: svg.width,\n height: svg.height,\n maskImage: `url(\"data:image/svg+xml,${\n // Inline SVG\n encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${svg.width} ${svg.height}\"><path d=\"${svg.path}\" stroke=\"black\" stroke-width=\"1\" fill=\"none\" /></svg>`,\n )\n }\")`,\n }}\n >\n <TocThumb\n containerRef={containerRef}\n className=\"absolute w-full top-(--fd-top) h-(--fd-height) bg-fd-primary transition-[top,height]\"\n />\n </div>\n )}\n <div ref={mergeRefs(containerRef, ref)} className={cn('flex flex-col', className)} {...props}>\n {items.map((item, i) => (\n <TOCItem\n key={item.url}\n item={item}\n upper={items[i - 1]?.depth}\n lower={items[i + 1]?.depth}\n />\n ))}\n </div>\n </>\n );\n}\n\nfunction getItemOffset(depth: number): number {\n if (depth <= 2) return 14;\n if (depth === 3) return 26;\n return 36;\n}\n\nfunction getLineOffset(depth: number): number {\n return depth >= 3 ? 10 : 0;\n}\n\nfunction TOCItem({\n item,\n upper = item.depth,\n lower = item.depth,\n}: {\n item: Primitive.TOCItemType;\n upper?: number;\n lower?: number;\n}) {\n const offset = getLineOffset(item.depth),\n upperOffset = getLineOffset(upper),\n lowerOffset = getLineOffset(lower);\n\n return (\n <Primitive.TOCItem\n href={item.url}\n style={{\n paddingInlineStart: getItemOffset(item.depth),\n }}\n className=\"prose relative py-1.5 text-sm text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary\"\n >\n {offset !== upperOffset && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n className=\"absolute -top-1.5 start-0 size-4 rtl:-scale-x-100\"\n >\n <line\n x1={upperOffset}\n y1=\"0\"\n x2={offset}\n y2=\"12\"\n className=\"stroke-fd-foreground/10\"\n strokeWidth=\"1\"\n />\n </svg>\n )}\n <div\n className={cn(\n 'absolute inset-y-0 w-px bg-fd-foreground/10',\n offset !== upperOffset && 'top-1.5',\n offset !== lowerOffset && 'bottom-1.5',\n )}\n style={{\n insetInlineStart: offset,\n }}\n />\n {item.title}\n </Primitive.TOCItem>\n );\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,SAAS,EAAE,KAAK,WAAW,GAAG,SAAgC;CAC5E,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,QAAQ,aAAa;CAC3B,MAAM,EAAE,SAAS,SAAS;CAE1B,MAAM,CAAC,KAAK,UAAU,UAIlB;AAEJ,iBAAgB;AACd,MAAI,CAAC,aAAa,QAAS;EAC3B,MAAM,YAAY,aAAa;EAE/B,SAAS,WAAiB;AACxB,OAAI,UAAU,iBAAiB,EAAG;GAClC,IAAI,IAAI,GACN,IAAI;GACN,MAAM,IAAc,EAAE;AACtB,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;IACrC,MAAM,UAA8B,UAAU,cAC5C,YAAY,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC,IACnC;AACD,QAAI,CAAC,QAAS;IAEd,MAAM,SAAS,iBAAiB,QAAQ;IACxC,MAAM,SAAS,cAAc,MAAM,GAAG,MAAM,GAAG,GAC7C,MAAM,QAAQ,YAAY,WAAW,OAAO,WAAW,EACvD,SAAS,QAAQ,YAAY,QAAQ,eAAe,WAAW,OAAO,cAAc;AAEtF,QAAI,KAAK,IAAI,QAAQ,EAAE;AACvB,QAAI,KAAK,IAAI,GAAG,OAAO;AAEvB,MAAE,KAAK,GAAG,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,MAAM;AAChD,MAAE,KAAK,IAAI,OAAO,GAAG,SAAS;;AAGhC,UAAO;IACL,MAAM,EAAE,KAAK,IAAI;IACjB,OAAO,IAAI;IACX,QAAQ;IACT,CAAC;;EAGJ,MAAM,WAAW,IAAI,eAAe,SAAS;AAC7C,YAAU;AAEV,WAAS,QAAQ,UAAU;AAC3B,eAAa;AACX,YAAS,YAAY;;IAEtB,CAAC,MAAM,CAAC;AAEX,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YACZ,KAAK;GACF;AAGV,QACE,8CACG,OACC,oBAAC;EACC,WAAU;EACV,OAAO;GACL,OAAO,IAAI;GACX,QAAQ,IAAI;GACZ,WAAW,2BAET,mBACE,wDAAwD,IAAI,MAAM,GAAG,IAAI,OAAO,aAAa,IAAI,KAAK,wDACvG,CACF;GACF;YAED,oBAAC;GACe;GACd,WAAU;IACV;GACE,EAER,oBAAC;EAAI,KAAK,UAAU,cAAc,IAAI;EAAE,WAAW,GAAG,iBAAiB,UAAU;EAAE,GAAI;YACpF,MAAM,KAAK,MAAM,MAChB,oBAAC;GAEO;GACN,OAAO,MAAM,IAAI,IAAI;GACrB,OAAO,MAAM,IAAI,IAAI;KAHhB,KAAK,IAIV,CACF;GACE,IACL;;AAIP,SAAS,cAAc,OAAuB;AAC5C,KAAI,SAAS,EAAG,QAAO;AACvB,KAAI,UAAU,EAAG,QAAO;AACxB,QAAO;;AAGT,SAAS,cAAc,OAAuB;AAC5C,QAAO,SAAS,IAAI,KAAK;;AAG3B,SAAS,QAAQ,EACf,MACA,QAAQ,KAAK,OACb,QAAQ,KAAK,SAKZ;CACD,MAAM,SAAS,cAAc,KAAK,MAAM,EACtC,cAAc,cAAc,MAAM,EAClC,cAAc,cAAc,MAAM;AAEpC,QACE,qBAAC,UAAU;EACT,MAAM,KAAK;EACX,OAAO,EACL,oBAAoB,cAAc,KAAK,MAAM,EAC9C;EACD,WAAU;;GAET,WAAW,eACV,oBAAC;IACC,OAAM;IACN,SAAQ;IACR,WAAU;cAEV,oBAAC;KACC,IAAI;KACJ,IAAG;KACH,IAAI;KACJ,IAAG;KACH,WAAU;KACV,aAAY;MACZ;KACE;GAER,oBAAC;IACC,WAAW,GACT,+CACA,WAAW,eAAe,WAC1B,WAAW,eAAe,aAC3B;IACD,OAAO,EACL,kBAAkB,QACnB;KACD;GACD,KAAK;;GACY"}
@@ -1 +1,12 @@
1
- export * from "@hanzo/docs-radix-ui/components/toc/default";
1
+ import { ComponentProps } from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/components/toc/default.d.ts
5
+ declare function TOCItems({
6
+ ref,
7
+ className,
8
+ ...props
9
+ }: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
10
+ //#endregion
11
+ export { TOCItems };
12
+ //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","names":[],"sources":["../../../src/components/toc/default.tsx"],"mappings":";;;;iBAQgB,QAAA,CAAA;EAAW,GAAA;EAAK,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,12 +1,40 @@
1
- import { __reExport } from "../../_virtual/rolldown_runtime.js";
1
+ 'use client';
2
2
 
3
- export * from "@hanzo/docs-radix-ui/components/toc/default"
3
+ import { useI18n } from "../../contexts/i18n.js";
4
+ import { cn } from "../../utils/cn.js";
5
+ import { mergeRefs } from "../../utils/merge-refs.js";
6
+ import { TocThumb, useTOCItems } from "./index.js";
7
+ import { useRef } from "react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+ import * as Primitive from "@hanzo/docs-core/toc";
4
10
 
5
11
  //#region src/components/toc/default.tsx
6
- var default_exports = {};
7
- import * as import__hanzo_docs_radix_ui_components_toc_default from "@hanzo/docs-radix-ui/components/toc/default";
8
- __reExport(default_exports, import__hanzo_docs_radix_ui_components_toc_default);
12
+ function TOCItems({ ref, className, ...props }) {
13
+ const containerRef = useRef(null);
14
+ const items = useTOCItems();
15
+ const { text } = useI18n();
16
+ if (items.length === 0) return /* @__PURE__ */ jsx("div", {
17
+ className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
18
+ children: text.tocNoHeadings
19
+ });
20
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TocThumb, {
21
+ containerRef,
22
+ className: "absolute top-(--fd-top) h-(--fd-height) w-0.5 rounded-e-sm bg-fd-primary transition-[top,height] ease-linear"
23
+ }), /* @__PURE__ */ jsx("div", {
24
+ ref: mergeRefs(ref, containerRef),
25
+ className: cn("flex flex-col border-s border-fd-foreground/10", className),
26
+ ...props,
27
+ children: items.map((item) => /* @__PURE__ */ jsx(TOCItem, { item }, item.url))
28
+ })] });
29
+ }
30
+ function TOCItem({ item }) {
31
+ return /* @__PURE__ */ jsx(Primitive.TOCItem, {
32
+ href: item.url,
33
+ className: cn("prose py-1.5 text-sm text-fd-muted-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary", item.depth <= 2 && "ps-3", item.depth === 3 && "ps-6", item.depth >= 4 && "ps-8"),
34
+ children: item.title
35
+ });
36
+ }
9
37
 
10
38
  //#endregion
11
- export { default_exports };
39
+ export { TOCItems };
12
40
  //# sourceMappingURL=default.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","names":[],"sources":["../../../src/components/toc/default.tsx"],"sourcesContent":["export * from '@hanzo/docs-radix-ui/components/toc/default';\n"],"mappings":""}
1
+ {"version":3,"file":"default.js","names":[],"sources":["../../../src/components/toc/default.tsx"],"sourcesContent":["'use client';\nimport { useI18n } from '@/contexts/i18n';\nimport { cn } from '@/utils/cn';\nimport { type ComponentProps, useRef } from 'react';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { TocThumb, useTOCItems } from '.';\nimport * as Primitive from '@hanzo/docs-core/toc';\n\nexport function TOCItems({ ref, className, ...props }: ComponentProps<'div'>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const items = useTOCItems();\n const { text } = useI18n();\n\n if (items.length === 0)\n return (\n <div className=\"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground\">\n {text.tocNoHeadings}\n </div>\n );\n\n return (\n <>\n <TocThumb\n containerRef={containerRef}\n className=\"absolute top-(--fd-top) h-(--fd-height) w-0.5 rounded-e-sm bg-fd-primary transition-[top,height] ease-linear\"\n />\n <div\n ref={mergeRefs(ref, containerRef)}\n className={cn('flex flex-col border-s border-fd-foreground/10', className)}\n {...props}\n >\n {items.map((item) => (\n <TOCItem key={item.url} item={item} />\n ))}\n </div>\n </>\n );\n}\n\nfunction TOCItem({ item }: { item: Primitive.TOCItemType }) {\n return (\n <Primitive.TOCItem\n href={item.url}\n className={cn(\n 'prose py-1.5 text-sm text-fd-muted-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary',\n item.depth <= 2 && 'ps-3',\n item.depth === 3 && 'ps-6',\n item.depth >= 4 && 'ps-8',\n )}\n >\n {item.title}\n </Primitive.TOCItem>\n );\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,SAAS,EAAE,KAAK,WAAW,GAAG,SAAgC;CAC5E,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,QAAQ,aAAa;CAC3B,MAAM,EAAE,SAAS,SAAS;AAE1B,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YACZ,KAAK;GACF;AAGV,QACE,8CACE,oBAAC;EACe;EACd,WAAU;GACV,EACF,oBAAC;EACC,KAAK,UAAU,KAAK,aAAa;EACjC,WAAW,GAAG,kDAAkD,UAAU;EAC1E,GAAI;YAEH,MAAM,KAAK,SACV,oBAAC,WAA6B,QAAhB,KAAK,IAAmB,CACtC;GACE,IACL;;AAIP,SAAS,QAAQ,EAAE,QAAyC;AAC1D,QACE,oBAAC,UAAU;EACT,MAAM,KAAK;EACX,WAAW,GACT,yIACA,KAAK,SAAS,KAAK,QACnB,KAAK,UAAU,KAAK,QACpB,KAAK,SAAS,KAAK,OACpB;YAEA,KAAK;GACY"}
@@ -1 +1,26 @@
1
- export * from "@hanzo/docs-radix-ui/components/toc/index";
1
+ import { ComponentProps, RefObject } from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+ import * as Primitive from "@hanzo/docs-core/toc";
4
+
5
+ //#region src/components/toc/index.d.ts
6
+ declare function useTOCItems(): Primitive.TOCItemType[];
7
+ declare function TOCProvider({
8
+ toc,
9
+ children,
10
+ ...props
11
+ }: ComponentProps<typeof Primitive.AnchorProvider>): react_jsx_runtime0.JSX.Element;
12
+ declare function TOCScrollArea({
13
+ ref,
14
+ className,
15
+ ...props
16
+ }: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
17
+ interface RefProps {
18
+ containerRef: RefObject<HTMLElement | null>;
19
+ }
20
+ declare function TocThumb({
21
+ containerRef,
22
+ ...props
23
+ }: ComponentProps<'div'> & RefProps): react_jsx_runtime0.JSX.Element;
24
+ //#endregion
25
+ export { TOCProvider, TOCScrollArea, TocThumb, useTOCItems };
26
+ //# sourceMappingURL=index.d.ts.map