@fumadocs/base-ui 16.5.0 → 16.5.2

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 (302) hide show
  1. package/css/aspen.css +39 -1
  2. package/css/black.css +39 -1
  3. package/css/catppuccin.css +49 -1
  4. package/css/dusk.css +47 -1
  5. package/css/emerald.css +39 -1
  6. package/css/generated/docs.css +460 -0
  7. package/css/generated/flux.css +424 -0
  8. package/css/generated/home.css +202 -0
  9. package/css/generated/notebook.css +497 -0
  10. package/css/generated/shared.css +1042 -0
  11. package/css/lib/base.css +217 -0
  12. package/css/lib/default-colors.css +51 -0
  13. package/css/lib/shiki.css +90 -0
  14. package/css/neutral.css +7 -1
  15. package/css/ocean.css +44 -1
  16. package/css/preset.css +6 -7
  17. package/css/purple.css +39 -1
  18. package/css/ruby.css +39 -1
  19. package/css/shadcn.css +36 -1
  20. package/css/solar.css +75 -1
  21. package/css/vitepress.css +65 -1
  22. package/dist/_virtual/_rolldown/runtime.js +18 -0
  23. package/dist/components/accordion.d.ts +3 -3
  24. package/dist/components/accordion.d.ts.map +1 -1
  25. package/dist/components/accordion.js +6 -6
  26. package/dist/components/accordion.js.map +1 -1
  27. package/dist/components/banner.d.ts +2 -2
  28. package/dist/components/banner.d.ts.map +1 -1
  29. package/dist/components/banner.js +4 -4
  30. package/dist/components/banner.js.map +1 -1
  31. package/dist/components/callout.d.ts +5 -5
  32. package/dist/components/callout.d.ts.map +1 -1
  33. package/dist/components/callout.js +1 -1
  34. package/dist/components/callout.js.map +1 -1
  35. package/dist/components/card.d.ts +3 -3
  36. package/dist/components/card.d.ts.map +1 -1
  37. package/dist/components/card.js +2 -2
  38. package/dist/components/card.js.map +1 -1
  39. package/dist/components/codeblock.d.ts +7 -7
  40. package/dist/components/codeblock.d.ts.map +1 -1
  41. package/dist/components/codeblock.js +7 -7
  42. package/dist/components/codeblock.js.map +1 -1
  43. package/dist/components/dialog/search-algolia.d.ts +6 -6
  44. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  45. package/dist/components/dialog/search-algolia.js +7 -7
  46. package/dist/components/dialog/search-algolia.js.map +1 -1
  47. package/dist/components/dialog/search-default.d.ts +6 -6
  48. package/dist/components/dialog/search-default.d.ts.map +1 -1
  49. package/dist/components/dialog/search-default.js +7 -7
  50. package/dist/components/dialog/search-default.js.map +1 -1
  51. package/dist/components/dialog/search-orama.d.ts +6 -6
  52. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  53. package/dist/components/dialog/search-orama.js +7 -7
  54. package/dist/components/dialog/search-orama.js.map +1 -1
  55. package/dist/components/dialog/search.d.ts +16 -16
  56. package/dist/components/dialog/search.d.ts.map +1 -1
  57. package/dist/components/dialog/search.js +14 -14
  58. package/dist/components/dialog/search.js.map +1 -1
  59. package/dist/components/dynamic-codeblock.core.d.ts +2 -2
  60. package/dist/components/dynamic-codeblock.core.d.ts.map +1 -1
  61. package/dist/components/dynamic-codeblock.core.js +4 -4
  62. package/dist/components/dynamic-codeblock.core.js.map +1 -1
  63. package/dist/components/dynamic-codeblock.d.ts +2 -2
  64. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  65. package/dist/components/files.d.ts.map +1 -1
  66. package/dist/components/files.js +2 -2
  67. package/dist/components/files.js.map +1 -1
  68. package/dist/components/github-info.d.ts +2 -2
  69. package/dist/components/github-info.d.ts.map +1 -1
  70. package/dist/components/github-info.js +1 -1
  71. package/dist/components/github-info.js.map +1 -1
  72. package/dist/components/heading.d.ts.map +1 -1
  73. package/dist/components/heading.js +1 -1
  74. package/dist/components/heading.js.map +1 -1
  75. package/dist/components/{image-zoom-CtfZieBH.css → image-zoom-DGvp66QF.css} +1 -1
  76. package/dist/components/{image-zoom-CtfZieBH.css.map → image-zoom-DGvp66QF.css.map} +1 -1
  77. package/dist/components/image-zoom.d.ts +3 -3
  78. package/dist/components/image-zoom.d.ts.map +1 -1
  79. package/dist/components/inline-toc.d.ts +2 -2
  80. package/dist/components/inline-toc.d.ts.map +1 -1
  81. package/dist/components/inline-toc.js +1 -1
  82. package/dist/components/inline-toc.js.map +1 -1
  83. package/dist/components/sidebar/base.d.ts +16 -16
  84. package/dist/components/sidebar/base.d.ts.map +1 -1
  85. package/dist/components/sidebar/base.js +5 -5
  86. package/dist/components/sidebar/base.js.map +1 -1
  87. package/dist/components/sidebar/link-item.d.ts +3 -3
  88. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  89. package/dist/components/sidebar/link-item.js.map +1 -1
  90. package/dist/components/sidebar/page-tree.d.ts +2 -2
  91. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  92. package/dist/components/sidebar/page-tree.js +5 -5
  93. package/dist/components/sidebar/page-tree.js.map +1 -1
  94. package/dist/components/sidebar/tabs/dropdown.d.ts +2 -2
  95. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  96. package/dist/components/sidebar/tabs/dropdown.js +19 -19
  97. package/dist/components/sidebar/tabs/dropdown.js.map +1 -1
  98. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  99. package/dist/components/steps.d.ts +3 -3
  100. package/dist/components/steps.d.ts.map +1 -1
  101. package/dist/components/tabs.d.ts +4 -4
  102. package/dist/components/tabs.d.ts.map +1 -1
  103. package/dist/components/tabs.js +2 -2
  104. package/dist/components/tabs.js.map +1 -1
  105. package/dist/components/toc/clerk.d.ts +12 -1
  106. package/dist/components/toc/clerk.d.ts.map +1 -0
  107. package/dist/components/toc/clerk.js +106 -6
  108. package/dist/components/toc/clerk.js.map +1 -1
  109. package/dist/components/toc/default.d.ts +12 -1
  110. package/dist/components/toc/default.d.ts.map +1 -0
  111. package/dist/components/toc/default.js +34 -6
  112. package/dist/components/toc/default.js.map +1 -1
  113. package/dist/components/toc/index.d.ts +26 -1
  114. package/dist/components/toc/index.d.ts.map +1 -0
  115. package/dist/components/toc/index.js +76 -6
  116. package/dist/components/toc/index.js.map +1 -1
  117. package/dist/components/type-table.d.ts +2 -2
  118. package/dist/components/type-table.d.ts.map +1 -1
  119. package/dist/components/type-table.js +7 -7
  120. package/dist/components/type-table.js.map +1 -1
  121. package/dist/components/ui/accordion.d.ts +6 -6
  122. package/dist/components/ui/accordion.d.ts.map +1 -1
  123. package/dist/components/ui/accordion.js +1 -1
  124. package/dist/components/ui/accordion.js.map +1 -1
  125. package/dist/components/ui/button.d.ts.map +1 -1
  126. package/dist/components/ui/collapsible.d.ts +6 -6
  127. package/dist/components/ui/collapsible.d.ts.map +1 -1
  128. package/dist/components/ui/collapsible.js +1 -1
  129. package/dist/components/ui/collapsible.js.map +1 -1
  130. package/dist/components/ui/navigation-menu.d.ts +7 -7
  131. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  132. package/dist/components/ui/navigation-menu.js +2 -2
  133. package/dist/components/ui/navigation-menu.js.map +1 -1
  134. package/dist/components/ui/popover.d.ts +3 -3
  135. package/dist/components/ui/popover.d.ts.map +1 -1
  136. package/dist/components/ui/popover.js +2 -2
  137. package/dist/components/ui/popover.js.map +1 -1
  138. package/dist/components/ui/scroll-area.d.ts +4 -4
  139. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  140. package/dist/components/ui/scroll-area.js +2 -2
  141. package/dist/components/ui/scroll-area.js.map +1 -1
  142. package/dist/components/ui/tabs.d.ts +7 -7
  143. package/dist/components/ui/tabs.d.ts.map +1 -1
  144. package/dist/components/ui/tabs.js +4 -4
  145. package/dist/components/ui/tabs.js.map +1 -1
  146. package/dist/contexts/i18n.d.ts +60 -1
  147. package/dist/contexts/i18n.d.ts.map +1 -0
  148. package/dist/contexts/i18n.js +54 -6
  149. package/dist/contexts/i18n.js.map +1 -1
  150. package/dist/contexts/search.d.ts +70 -4
  151. package/dist/contexts/search.d.ts.map +1 -1
  152. package/dist/contexts/search.js +62 -6
  153. package/dist/contexts/search.js.map +1 -1
  154. package/dist/contexts/tree.d.ts +22 -1
  155. package/dist/contexts/tree.d.ts.map +1 -0
  156. package/dist/contexts/tree.js +36 -6
  157. package/dist/contexts/tree.js.map +1 -1
  158. package/dist/i18n.d.ts +14 -1
  159. package/dist/i18n.d.ts.map +1 -0
  160. package/dist/i18n.js +19 -2
  161. package/dist/i18n.js.map +1 -0
  162. package/dist/layouts/docs/client.d.ts +7 -7
  163. package/dist/layouts/docs/client.d.ts.map +1 -1
  164. package/dist/layouts/docs/client.js +4 -4
  165. package/dist/layouts/docs/client.js.map +1 -1
  166. package/dist/layouts/docs/index.d.ts +3 -3
  167. package/dist/layouts/docs/index.d.ts.map +1 -1
  168. package/dist/layouts/docs/index.js +7 -7
  169. package/dist/layouts/docs/index.js.map +1 -1
  170. package/dist/layouts/docs/page/client.d.ts +7 -7
  171. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  172. package/dist/layouts/docs/page/client.js +18 -18
  173. package/dist/layouts/docs/page/client.js.map +1 -1
  174. package/dist/layouts/docs/page/index.d.ts +5 -5
  175. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  176. package/dist/layouts/docs/page/index.js +13 -13
  177. package/dist/layouts/docs/page/index.js.map +1 -1
  178. package/dist/layouts/docs/sidebar.d.ts +20 -19
  179. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  180. package/dist/layouts/docs/sidebar.js +6 -6
  181. package/dist/layouts/docs/sidebar.js.map +1 -1
  182. package/dist/layouts/flux/index.d.ts +79 -0
  183. package/dist/layouts/flux/index.d.ts.map +1 -0
  184. package/dist/layouts/flux/index.js +168 -0
  185. package/dist/layouts/flux/index.js.map +1 -0
  186. package/dist/layouts/flux/page/client.d.ts +45 -0
  187. package/dist/layouts/flux/page/client.d.ts.map +1 -0
  188. package/dist/layouts/flux/page/client.js +255 -0
  189. package/dist/layouts/flux/page/client.js.map +1 -0
  190. package/dist/layouts/flux/page/index.d.ts +98 -0
  191. package/dist/layouts/flux/page/index.d.ts.map +1 -0
  192. package/dist/layouts/flux/page/index.js +76 -0
  193. package/dist/layouts/flux/page/index.js.map +1 -0
  194. package/dist/layouts/flux/sidebar.d.ts +59 -0
  195. package/dist/layouts/flux/sidebar.d.ts.map +1 -0
  196. package/dist/layouts/flux/sidebar.js +197 -0
  197. package/dist/layouts/flux/sidebar.js.map +1 -0
  198. package/dist/layouts/flux/tab-dropdown.d.ts +21 -0
  199. package/dist/layouts/flux/tab-dropdown.d.ts.map +1 -0
  200. package/dist/layouts/flux/tab-dropdown.js +96 -0
  201. package/dist/layouts/flux/tab-dropdown.js.map +1 -0
  202. package/dist/layouts/home/client.d.ts +3 -3
  203. package/dist/layouts/home/client.d.ts.map +1 -1
  204. package/dist/layouts/home/client.js +8 -8
  205. package/dist/layouts/home/client.js.map +1 -1
  206. package/dist/layouts/home/index.d.ts +2 -2
  207. package/dist/layouts/home/index.d.ts.map +1 -1
  208. package/dist/layouts/home/index.js +1 -1
  209. package/dist/layouts/home/index.js.map +1 -1
  210. package/dist/layouts/home/navbar.d.ts +7 -7
  211. package/dist/layouts/home/navbar.d.ts.map +1 -1
  212. package/dist/layouts/home/navbar.js +2 -2
  213. package/dist/layouts/home/navbar.js.map +1 -1
  214. package/dist/layouts/notebook/client.d.ts +9 -9
  215. package/dist/layouts/notebook/client.d.ts.map +1 -1
  216. package/dist/layouts/notebook/client.js +8 -8
  217. package/dist/layouts/notebook/client.js.map +1 -1
  218. package/dist/layouts/notebook/index.d.ts +2 -2
  219. package/dist/layouts/notebook/index.d.ts.map +1 -1
  220. package/dist/layouts/notebook/index.js +13 -13
  221. package/dist/layouts/notebook/index.js.map +1 -1
  222. package/dist/layouts/notebook/page/client.d.ts +7 -7
  223. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  224. package/dist/layouts/notebook/page/client.js +18 -18
  225. package/dist/layouts/notebook/page/client.js.map +1 -1
  226. package/dist/layouts/notebook/page/index.d.ts +5 -5
  227. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  228. package/dist/layouts/notebook/page/index.js +13 -13
  229. package/dist/layouts/notebook/page/index.js.map +1 -1
  230. package/dist/layouts/notebook/sidebar.d.ts +15 -14
  231. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  232. package/dist/layouts/notebook/sidebar.js +4 -4
  233. package/dist/layouts/notebook/sidebar.js.map +1 -1
  234. package/dist/layouts/shared/index.d.ts +5 -6
  235. package/dist/layouts/shared/index.d.ts.map +1 -1
  236. package/dist/layouts/shared/index.js +2 -2
  237. package/dist/layouts/shared/index.js.map +1 -1
  238. package/dist/layouts/shared/language-toggle.d.ts +2 -2
  239. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  240. package/dist/layouts/shared/language-toggle.js +4 -4
  241. package/dist/layouts/shared/language-toggle.js.map +1 -1
  242. package/dist/layouts/shared/search-toggle.d.ts +3 -3
  243. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  244. package/dist/layouts/shared/search-toggle.js +6 -6
  245. package/dist/layouts/shared/search-toggle.js.map +1 -1
  246. package/dist/layouts/shared/theme-toggle.d.ts +2 -2
  247. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  248. package/dist/layouts/shared/theme-toggle.js +7 -7
  249. package/dist/layouts/shared/theme-toggle.js.map +1 -1
  250. package/dist/mdx.d.ts +1 -1
  251. package/dist/mdx.d.ts.map +1 -1
  252. package/dist/mdx.js +2 -2
  253. package/dist/mdx.js.map +1 -1
  254. package/dist/mdx.server.d.ts +0 -1
  255. package/dist/mdx.server.d.ts.map +1 -1
  256. package/dist/og.d.ts +23 -1
  257. package/dist/og.d.ts.map +1 -0
  258. package/dist/og.js +69 -2
  259. package/dist/og.js.map +1 -0
  260. package/dist/page.d.ts +3 -3
  261. package/dist/page.d.ts.map +1 -1
  262. package/dist/page.js +5 -5
  263. package/dist/page.js.map +1 -1
  264. package/dist/provider/base.d.ts +4 -4
  265. package/dist/provider/base.d.ts.map +1 -1
  266. package/dist/provider/base.js +3 -3
  267. package/dist/provider/base.js.map +1 -1
  268. package/dist/provider/next.d.ts +3 -3
  269. package/dist/provider/next.d.ts.map +1 -1
  270. package/dist/provider/react-router.d.ts +3 -3
  271. package/dist/provider/react-router.d.ts.map +1 -1
  272. package/dist/provider/tanstack.d.ts +3 -3
  273. package/dist/provider/tanstack.d.ts.map +1 -1
  274. package/dist/provider/waku.d.ts +3 -3
  275. package/dist/provider/waku.d.ts.map +1 -1
  276. package/dist/style.css +140 -19
  277. package/dist/utils/cn.js +3 -0
  278. package/dist/utils/link-item.d.ts +86 -0
  279. package/dist/utils/link-item.d.ts.map +1 -0
  280. package/dist/utils/link-item.js +25 -0
  281. package/dist/utils/link-item.js.map +1 -0
  282. package/dist/utils/merge-refs.js +13 -0
  283. package/dist/utils/merge-refs.js.map +1 -0
  284. package/dist/utils/urls.js +17 -0
  285. package/dist/utils/urls.js.map +1 -0
  286. package/dist/utils/use-copy-button.d.ts +7 -1
  287. package/dist/utils/use-copy-button.d.ts.map +1 -0
  288. package/dist/utils/use-copy-button.js +29 -2
  289. package/dist/utils/use-copy-button.js.map +1 -0
  290. package/dist/utils/use-footer-items.d.ts +10 -1
  291. package/dist/utils/use-footer-items.d.ts.map +1 -0
  292. package/dist/utils/use-footer-items.js +27 -2
  293. package/dist/utils/use-footer-items.js.map +1 -0
  294. package/dist/utils/use-is-scroll-top.d.ts +9 -1
  295. package/dist/utils/use-is-scroll-top.d.ts.map +1 -0
  296. package/dist/utils/use-is-scroll-top.js +23 -2
  297. package/dist/utils/use-is-scroll-top.js.map +1 -0
  298. package/package.json +20 -9
  299. package/css/layouts/docs.css +0 -1
  300. package/css/layouts/home.css +0 -1
  301. package/css/layouts/notebook.css +0 -1
  302. package/dist/_virtual/rolldown_runtime.js +0 -36
@@ -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 'fumadocs-core/link';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { cn } from '@fumadocs/ui/cn';\nimport { normalize, isActive } from '@fumadocs/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 'fumadocs-core/link';\nimport { usePathname } from 'fumadocs-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_runtime16 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_runtime16.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_runtime16.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_runtime30 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_runtime30.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_runtime30.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_runtime30.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,mBAAA,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,mBAAA,CAAA,GAAA,CAAA,OArEzB;AAAA,iBAuFR,WAAA,CAvFQ;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA2FrB,cA3FqB,CAAA,OA2FC,aA3FD,CAAA,CAAA,EA2FsB,mBAAA,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 "@fumadocs/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 '@fumadocs/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 "@fumadocs/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 "@fumadocs/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 "fumadocs-core/toc";
4
10
 
5
11
  //#region src/components/toc/clerk.tsx
6
- var clerk_exports = {};
7
- import * as import__fumadocs_ui_components_toc_clerk from "@fumadocs/ui/components/toc/clerk";
8
- __reExport(clerk_exports, import__fumadocs_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 '@fumadocs/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 'fumadocs-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 "@fumadocs/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 "@fumadocs/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 "fumadocs-core/toc";
4
10
 
5
11
  //#region src/components/toc/default.tsx
6
- var default_exports = {};
7
- import * as import__fumadocs_ui_components_toc_default from "@fumadocs/ui/components/toc/default";
8
- __reExport(default_exports, import__fumadocs_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 '@fumadocs/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 'fumadocs-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 "@fumadocs/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 "fumadocs-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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/toc/index.tsx"],"mappings":";;;;;iBAiBgB,WAAA,CAAA,GAAe,SAAA,CAAU,WAAA;AAAA,iBAIzB,WAAA,CAAA;EACd,GAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,SAAA,CAAU,cAAA,IAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAUlC,aAAA,CAAA;EAAgB,GAAA;EAAK,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UAmBvE,QAAA;EACR,YAAA,EAAc,SAAA,CAAU,WAAA;AAAA;AAAA,iBAGV,QAAA,CAAA;EAAW,YAAA;EAAA,GAAiB;AAAA,GAAS,cAAA,UAAwB,QAAA,GAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,12 +1,82 @@
1
- import { __reExport } from "../../_virtual/rolldown_runtime.js";
1
+ 'use client';
2
2
 
3
- export * from "@fumadocs/ui/components/toc/index"
3
+ import { cn } from "../../utils/cn.js";
4
+ import { mergeRefs } from "../../utils/merge-refs.js";
5
+ import { createContext, use, useEffect, useEffectEvent, useRef } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import * as Primitive from "fumadocs-core/toc";
8
+ import { useOnChange } from "fumadocs-core/utils/use-on-change";
4
9
 
5
10
  //#region src/components/toc/index.tsx
6
- var toc_exports = {};
7
- import * as import__fumadocs_ui_components_toc_index from "@fumadocs/ui/components/toc/index";
8
- __reExport(toc_exports, import__fumadocs_ui_components_toc_index);
11
+ const TOCContext = createContext([]);
12
+ function useTOCItems() {
13
+ return use(TOCContext);
14
+ }
15
+ function TOCProvider({ toc, children, ...props }) {
16
+ return /* @__PURE__ */ jsx(TOCContext, {
17
+ value: toc,
18
+ children: /* @__PURE__ */ jsx(Primitive.AnchorProvider, {
19
+ toc,
20
+ ...props,
21
+ children
22
+ })
23
+ });
24
+ }
25
+ function TOCScrollArea({ ref, className, ...props }) {
26
+ const viewRef = useRef(null);
27
+ return /* @__PURE__ */ jsx("div", {
28
+ ref: mergeRefs(viewRef, ref),
29
+ className: cn("relative min-h-0 text-sm ms-px overflow-auto [scrollbar-width:none] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] py-3", className),
30
+ ...props,
31
+ children: /* @__PURE__ */ jsx(Primitive.ScrollProvider, {
32
+ containerRef: viewRef,
33
+ children: props.children
34
+ })
35
+ });
36
+ }
37
+ function TocThumb({ containerRef, ...props }) {
38
+ const thumbRef = useRef(null);
39
+ const active = Primitive.useActiveAnchors();
40
+ function update(info) {
41
+ const element = thumbRef.current;
42
+ if (!element) return;
43
+ element.style.setProperty("--fd-top", `${info[0]}px`);
44
+ element.style.setProperty("--fd-height", `${info[1]}px`);
45
+ }
46
+ const onPrint = useEffectEvent(() => {
47
+ if (containerRef.current) update(calc(containerRef.current, active));
48
+ });
49
+ useEffect(() => {
50
+ if (!containerRef.current) return;
51
+ const container = containerRef.current;
52
+ const observer = new ResizeObserver(onPrint);
53
+ observer.observe(container);
54
+ return () => {
55
+ observer.disconnect();
56
+ };
57
+ }, [containerRef]);
58
+ useOnChange(active, () => {
59
+ if (containerRef.current) update(calc(containerRef.current, active));
60
+ });
61
+ return /* @__PURE__ */ jsx("div", {
62
+ ref: thumbRef,
63
+ "data-hidden": active.length === 0,
64
+ ...props
65
+ });
66
+ }
67
+ function calc(container, active) {
68
+ if (active.length === 0 || container.clientHeight === 0) return [0, 0];
69
+ let upper = Number.MAX_VALUE, lower = 0;
70
+ for (const item of active) {
71
+ const element = container.querySelector(`a[href="#${item}"]`);
72
+ if (!element) continue;
73
+ const styles = getComputedStyle(element);
74
+ upper = Math.min(upper, element.offsetTop + parseFloat(styles.paddingTop));
75
+ lower = Math.max(lower, element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom));
76
+ }
77
+ return [upper, lower - upper];
78
+ }
9
79
 
10
80
  //#endregion
11
- export { toc_exports };
81
+ export { TOCProvider, TOCScrollArea, TocThumb, useTOCItems };
12
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/toc/index.tsx"],"sourcesContent":["export * from '@fumadocs/ui/components/toc/index';\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/toc/index.tsx"],"sourcesContent":["'use client';\nimport * as Primitive from 'fumadocs-core/toc';\nimport {\n type ComponentProps,\n createContext,\n type RefObject,\n use,\n useEffect,\n useEffectEvent,\n useRef,\n} from 'react';\nimport { cn } from '@/utils/cn';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { useOnChange } from 'fumadocs-core/utils/use-on-change';\n\nconst TOCContext = createContext<Primitive.TOCItemType[]>([]);\n\nexport function useTOCItems(): Primitive.TOCItemType[] {\n return use(TOCContext);\n}\n\nexport function TOCProvider({\n toc,\n children,\n ...props\n}: ComponentProps<typeof Primitive.AnchorProvider>) {\n return (\n <TOCContext value={toc}>\n <Primitive.AnchorProvider toc={toc} {...props}>\n {children}\n </Primitive.AnchorProvider>\n </TOCContext>\n );\n}\n\nexport function TOCScrollArea({ ref, className, ...props }: ComponentProps<'div'>) {\n const viewRef = useRef<HTMLDivElement>(null);\n\n return (\n <div\n ref={mergeRefs(viewRef, ref)}\n className={cn(\n 'relative min-h-0 text-sm ms-px overflow-auto [scrollbar-width:none] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] py-3',\n className,\n )}\n {...props}\n >\n <Primitive.ScrollProvider containerRef={viewRef}>{props.children}</Primitive.ScrollProvider>\n </div>\n );\n}\n\ntype TocThumbType = [top: number, height: number];\n\ninterface RefProps {\n containerRef: RefObject<HTMLElement | null>;\n}\n\nexport function TocThumb({ containerRef, ...props }: ComponentProps<'div'> & RefProps) {\n const thumbRef = useRef<HTMLDivElement>(null);\n const active = Primitive.useActiveAnchors();\n function update(info: TocThumbType): void {\n const element = thumbRef.current;\n if (!element) return;\n element.style.setProperty('--fd-top', `${info[0]}px`);\n element.style.setProperty('--fd-height', `${info[1]}px`);\n }\n\n const onPrint = useEffectEvent(() => {\n if (containerRef.current) {\n update(calc(containerRef.current, active));\n }\n });\n\n useEffect(() => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n\n const observer = new ResizeObserver(onPrint);\n observer.observe(container);\n\n return () => {\n observer.disconnect();\n };\n }, [containerRef]);\n\n useOnChange(active, () => {\n if (containerRef.current) {\n update(calc(containerRef.current, active));\n }\n });\n\n return <div ref={thumbRef} data-hidden={active.length === 0} {...props} />;\n}\n\nfunction calc(container: HTMLElement, active: string[]): TocThumbType {\n if (active.length === 0 || container.clientHeight === 0) {\n return [0, 0];\n }\n\n let upper = Number.MAX_VALUE,\n lower = 0;\n\n for (const item of active) {\n const element = container.querySelector<HTMLElement>(`a[href=\"#${item}\"]`);\n if (!element) continue;\n\n const styles = getComputedStyle(element);\n upper = Math.min(upper, element.offsetTop + parseFloat(styles.paddingTop));\n lower = Math.max(\n lower,\n element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom),\n );\n }\n\n return [upper, lower - upper];\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAM,aAAa,cAAuC,EAAE,CAAC;AAE7D,SAAgB,cAAuC;AACrD,QAAO,IAAI,WAAW;;AAGxB,SAAgB,YAAY,EAC1B,KACA,UACA,GAAG,SAC+C;AAClD,QACE,oBAAC;EAAW,OAAO;YACjB,oBAAC,UAAU;GAAoB;GAAK,GAAI;GACrC;IACwB;GAChB;;AAIjB,SAAgB,cAAc,EAAE,KAAK,WAAW,GAAG,SAAgC;CACjF,MAAM,UAAU,OAAuB,KAAK;AAE5C,QACE,oBAAC;EACC,KAAK,UAAU,SAAS,IAAI;EAC5B,WAAW,GACT,uKACA,UACD;EACD,GAAI;YAEJ,oBAAC,UAAU;GAAe,cAAc;aAAU,MAAM;IAAoC;GACxF;;AAUV,SAAgB,SAAS,EAAE,cAAc,GAAG,SAA2C;CACrF,MAAM,WAAW,OAAuB,KAAK;CAC7C,MAAM,SAAS,UAAU,kBAAkB;CAC3C,SAAS,OAAO,MAA0B;EACxC,MAAM,UAAU,SAAS;AACzB,MAAI,CAAC,QAAS;AACd,UAAQ,MAAM,YAAY,YAAY,GAAG,KAAK,GAAG,IAAI;AACrD,UAAQ,MAAM,YAAY,eAAe,GAAG,KAAK,GAAG,IAAI;;CAG1D,MAAM,UAAU,qBAAqB;AACnC,MAAI,aAAa,QACf,QAAO,KAAK,aAAa,SAAS,OAAO,CAAC;GAE5C;AAEF,iBAAgB;AACd,MAAI,CAAC,aAAa,QAAS;EAC3B,MAAM,YAAY,aAAa;EAE/B,MAAM,WAAW,IAAI,eAAe,QAAQ;AAC5C,WAAS,QAAQ,UAAU;AAE3B,eAAa;AACX,YAAS,YAAY;;IAEtB,CAAC,aAAa,CAAC;AAElB,aAAY,cAAc;AACxB,MAAI,aAAa,QACf,QAAO,KAAK,aAAa,SAAS,OAAO,CAAC;GAE5C;AAEF,QAAO,oBAAC;EAAI,KAAK;EAAU,eAAa,OAAO,WAAW;EAAG,GAAI;GAAS;;AAG5E,SAAS,KAAK,WAAwB,QAAgC;AACpE,KAAI,OAAO,WAAW,KAAK,UAAU,iBAAiB,EACpD,QAAO,CAAC,GAAG,EAAE;CAGf,IAAI,QAAQ,OAAO,WACjB,QAAQ;AAEV,MAAK,MAAM,QAAQ,QAAQ;EACzB,MAAM,UAAU,UAAU,cAA2B,YAAY,KAAK,IAAI;AAC1E,MAAI,CAAC,QAAS;EAEd,MAAM,SAAS,iBAAiB,QAAQ;AACxC,UAAQ,KAAK,IAAI,OAAO,QAAQ,YAAY,WAAW,OAAO,WAAW,CAAC;AAC1E,UAAQ,KAAK,IACX,OACA,QAAQ,YAAY,QAAQ,eAAe,WAAW,OAAO,cAAc,CAC5E;;AAGH,QAAO,CAAC,OAAO,QAAQ,MAAM"}
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime139 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/type-table.d.ts
5
5
  interface ParameterNode {
@@ -33,7 +33,7 @@ declare function TypeTable({
33
33
  type
34
34
  }: {
35
35
  type: Record<string, TypeNode>;
36
- }): react_jsx_runtime139.JSX.Element;
36
+ }): react_jsx_runtime0.JSX.Element;
37
37
  //#endregion
38
38
  export { ParameterNode, TypeNode, TypeTable };
39
39
  //# sourceMappingURL=type-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-table.d.ts","names":[],"sources":["../../src/components/type-table.tsx"],"sourcesContent":[],"mappings":";;;;UASiB,aAAA;;eAEF;AAFf;AAKiB,UAAA,QAAA,CAAQ;EAIT;;;EAiBJ,WAAA,CAAA,EAjBI,SAiBJ;EAKG;;;EAeC,IAAA,EAhCR,SAgCiB;EAAG;;;EAA0C,eAAA,CAAA,EA3BlD,SA2BkD;EAAA;;;;YApB1D;;;eAKG;YAEH;;iBAaI,SAAA;;;QAA4B,eAAe;IAAW,oBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"type-table.d.ts","names":[],"sources":["../../src/components/type-table.tsx"],"mappings":";;;;UASiB,aAAA;EACf,IAAA;EACA,WAAA,EAAa,SAAA;AAAA;AAAA,UAGE,QAAA;;;;EAIf,WAAA,GAAc,SAAA;EAPD;;;EAYb,IAAA,EAAM,SAAA;EATiB;;;EAcvB,eAAA,GAAkB,SAAA;EAAA;;;EAKlB,mBAAA;EAEA,OAAA,GAAU,SAAA;EAEV,QAAA;EACA,UAAA;EAEA,UAAA,GAAa,aAAA;EAEb,OAAA,GAAU,SAAA;AAAA;AAAA,iBAaI,SAAA,CAAA;EAAY;AAAA;EAAU,IAAA,EAAM,MAAA,SAAe,QAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
 
3
+ import { cn } from "../utils/cn.js";
3
4
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible.js";
5
+ import { useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
4
7
  import Link from "fumadocs-core/link";
5
- import { cn } from "@fumadocs/ui/cn";
6
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
8
  import { ChevronDown } from "lucide-react";
8
- import { useState } from "react";
9
9
  import { cva } from "class-variance-authority";
10
10
 
11
11
  //#region src/components/type-table.tsx
@@ -62,21 +62,21 @@ function Item({ name, item: { parameters = [], description, required = false, de
62
62
  className: "text-sm prose col-span-full prose-no-margin empty:hidden",
63
63
  children: description
64
64
  }),
65
- typeDescription && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
65
+ typeDescription && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
66
66
  className: cn(fieldVariants()),
67
67
  children: "Type"
68
68
  }), /* @__PURE__ */ jsx("p", {
69
69
  className: "my-auto not-prose",
70
70
  children: typeDescription
71
71
  })] }),
72
- defaultValue && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
72
+ defaultValue && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
73
73
  className: cn(fieldVariants()),
74
74
  children: "Default"
75
75
  }), /* @__PURE__ */ jsx("p", {
76
76
  className: "my-auto not-prose",
77
77
  children: defaultValue
78
78
  })] }),
79
- parameters.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
79
+ parameters.length > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
80
80
  className: cn(fieldVariants()),
81
81
  children: "Parameters"
82
82
  }), /* @__PURE__ */ jsx("div", {
@@ -92,7 +92,7 @@ function Item({ name, item: { parameters = [], description, required = false, de
92
92
  })]
93
93
  }, param.name))
94
94
  })] }),
95
- returns && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
95
+ returns && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
96
96
  className: cn(fieldVariants()),
97
97
  children: "Returns"
98
98
  }), /* @__PURE__ */ jsx("div", {