@hanzo/docs-base-ui 16.5.0 → 16.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +3 -3
  2. package/css/aspen.css +39 -0
  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 -0
  7. package/css/generated/docs.css +490 -0
  8. package/css/generated/flux.css +429 -0
  9. package/css/generated/home.css +285 -0
  10. package/css/generated/notebook.css +526 -0
  11. package/css/generated/shared.css +1173 -0
  12. package/css/lib/base.css +214 -0
  13. package/css/lib/default-colors.css +51 -0
  14. package/css/lib/shiki.css +98 -0
  15. package/css/neutral.css +7 -1
  16. package/css/ocean.css +44 -1
  17. package/css/preset.css +9 -7
  18. package/css/purple.css +39 -1
  19. package/css/ruby.css +39 -0
  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 +13 -0
  24. package/dist/components/accordion.d.ts +2 -3
  25. package/dist/components/accordion.js +9 -13
  26. package/dist/components/banner.d.ts +3 -4
  27. package/dist/components/banner.js +5 -9
  28. package/dist/components/callout.d.ts +6 -7
  29. package/dist/components/callout.js +1 -4
  30. package/dist/components/card.d.ts +4 -5
  31. package/dist/components/card.js +2 -5
  32. package/dist/components/codeblock.d.ts +8 -9
  33. package/dist/components/codeblock.js +9 -13
  34. package/dist/components/codeblock.rsc.d.ts +21 -0
  35. package/dist/components/codeblock.rsc.js +22 -0
  36. package/dist/components/dialog/search-algolia.d.ts +7 -9
  37. package/dist/components/dialog/search-algolia.js +8 -12
  38. package/dist/components/dialog/search-default.d.ts +7 -9
  39. package/dist/components/dialog/search-default.js +8 -12
  40. package/dist/components/dialog/search-orama.d.ts +7 -9
  41. package/dist/components/dialog/search-orama.js +8 -12
  42. package/dist/components/dialog/search.d.ts +21 -21
  43. package/dist/components/dialog/search.js +137 -60
  44. package/dist/components/dynamic-codeblock.core.d.ts +35 -0
  45. package/dist/components/dynamic-codeblock.core.js +51 -0
  46. package/dist/components/dynamic-codeblock.d.ts +7 -29
  47. package/dist/components/dynamic-codeblock.js +11 -60
  48. package/dist/components/files.d.ts +1 -2
  49. package/dist/components/files.js +6 -10
  50. package/dist/components/github-info.d.ts +23 -10
  51. package/dist/components/github-info.js +34 -29
  52. package/dist/components/heading.d.ts +1 -2
  53. package/dist/components/heading.js +3 -6
  54. package/dist/components/image-zoom.d.ts +4 -5
  55. package/dist/components/image-zoom.js +2 -5
  56. package/dist/components/inline-toc.d.ts +3 -4
  57. package/dist/components/inline-toc.js +2 -6
  58. package/dist/components/sidebar/base.d.ts +29 -23
  59. package/dist/components/sidebar/base.js +16 -22
  60. package/dist/components/sidebar/link-item.d.ts +3 -4
  61. package/dist/components/sidebar/link-item.js +6 -3
  62. package/dist/components/sidebar/page-tree.d.ts +3 -4
  63. package/dist/components/sidebar/page-tree.js +56 -45
  64. package/dist/components/sidebar/tabs/dropdown.d.ts +6 -9
  65. package/dist/components/sidebar/tabs/dropdown.js +22 -29
  66. package/dist/components/sidebar/tabs/index.d.ts +3 -17
  67. package/dist/components/sidebar/tabs/index.js +0 -3
  68. package/dist/components/steps.d.ts +4 -5
  69. package/dist/components/steps.js +0 -3
  70. package/dist/components/tabs.d.ts +15 -11
  71. package/dist/components/tabs.js +15 -20
  72. package/dist/components/toc/clerk.d.ts +19 -1
  73. package/dist/components/toc/clerk.js +165 -10
  74. package/dist/components/toc/default.d.ts +19 -1
  75. package/dist/components/toc/default.js +45 -10
  76. package/dist/components/toc/index.d.ts +29 -1
  77. package/dist/components/toc/index.js +105 -10
  78. package/dist/components/type-table.d.ts +11 -6
  79. package/dist/components/type-table.js +28 -23
  80. package/dist/components/ui/accordion.d.ts +7 -8
  81. package/dist/components/ui/accordion.js +2 -6
  82. package/dist/components/ui/button.d.ts +1 -2
  83. package/dist/components/ui/button.js +0 -3
  84. package/dist/components/ui/collapsible.d.ts +6 -7
  85. package/dist/components/ui/collapsible.js +3 -7
  86. package/dist/components/ui/navigation-menu.d.ts +27 -13
  87. package/dist/components/ui/navigation-menu.js +53 -31
  88. package/dist/components/ui/popover.d.ts +11 -6
  89. package/dist/components/ui/popover.js +15 -19
  90. package/dist/components/ui/scroll-area.d.ts +17 -7
  91. package/dist/components/ui/scroll-area.js +27 -31
  92. package/dist/components/ui/tabs.d.ts +8 -9
  93. package/dist/components/ui/tabs.js +5 -9
  94. package/dist/contexts/i18n.d.ts +62 -1
  95. package/dist/contexts/i18n.js +53 -10
  96. package/dist/contexts/search.d.ts +71 -5
  97. package/dist/contexts/search.js +64 -10
  98. package/dist/contexts/tree.d.ts +21 -1
  99. package/dist/contexts/tree.js +36 -10
  100. package/dist/i18n.d.ts +21 -1
  101. package/dist/i18n.js +20 -3
  102. package/dist/layouts/docs/client.d.ts +30 -29
  103. package/dist/layouts/docs/client.js +76 -52
  104. package/dist/layouts/docs/index.d.ts +21 -35
  105. package/dist/layouts/docs/index.js +16 -172
  106. package/dist/layouts/docs/page/index.d.ts +75 -52
  107. package/dist/layouts/docs/page/index.js +76 -56
  108. package/dist/layouts/docs/page/slots/breadcrumb.d.ts +14 -0
  109. package/dist/layouts/docs/page/slots/breadcrumb.js +44 -0
  110. package/dist/layouts/docs/page/slots/container.d.ts +7 -0
  111. package/dist/layouts/docs/page/slots/container.js +17 -0
  112. package/dist/layouts/docs/page/slots/footer.d.ts +23 -0
  113. package/dist/layouts/docs/page/slots/footer.js +56 -0
  114. package/dist/layouts/docs/page/slots/toc.d.ts +55 -0
  115. package/dist/layouts/docs/page/slots/toc.js +166 -0
  116. package/dist/layouts/docs/slots/container.d.ts +7 -0
  117. package/dist/layouts/docs/slots/container.js +29 -0
  118. package/dist/layouts/docs/slots/header.d.ts +8 -0
  119. package/dist/layouts/docs/slots/header.js +38 -0
  120. package/dist/layouts/docs/slots/sidebar.d.ts +30 -0
  121. package/dist/layouts/docs/slots/sidebar.js +319 -0
  122. package/dist/layouts/flux/index.d.ts +74 -0
  123. package/dist/layouts/flux/index.js +146 -0
  124. package/dist/layouts/flux/page/index.d.ts +105 -0
  125. package/dist/layouts/flux/page/index.js +104 -0
  126. package/dist/layouts/flux/page/slots/breadcrumb.d.ts +14 -0
  127. package/dist/layouts/flux/page/slots/breadcrumb.js +44 -0
  128. package/dist/layouts/flux/page/slots/container.d.ts +7 -0
  129. package/dist/layouts/flux/page/slots/container.js +17 -0
  130. package/dist/layouts/flux/page/slots/footer.d.ts +23 -0
  131. package/dist/layouts/flux/page/slots/footer.js +56 -0
  132. package/dist/layouts/flux/page/slots/toc.d.ts +34 -0
  133. package/dist/layouts/flux/page/slots/toc.js +172 -0
  134. package/dist/layouts/flux/slots/container.d.ts +7 -0
  135. package/dist/layouts/flux/slots/container.js +13 -0
  136. package/dist/layouts/flux/slots/sidebar.d.ts +23 -0
  137. package/dist/layouts/flux/slots/sidebar.js +237 -0
  138. package/dist/layouts/flux/slots/tab-dropdown.d.ts +17 -0
  139. package/dist/layouts/flux/slots/tab-dropdown.js +85 -0
  140. package/dist/layouts/home/index.d.ts +25 -8
  141. package/dist/layouts/home/index.js +39 -19
  142. package/dist/layouts/home/navbar.d.ts +7 -16
  143. package/dist/layouts/home/navbar.js +12 -14
  144. package/dist/layouts/home/not-found.d.ts +9 -0
  145. package/dist/layouts/home/not-found.js +38 -0
  146. package/dist/layouts/home/slots/container.d.ts +7 -0
  147. package/dist/layouts/home/slots/container.js +13 -0
  148. package/dist/layouts/home/slots/header.d.ts +11 -0
  149. package/dist/layouts/home/slots/header.js +242 -0
  150. package/dist/layouts/notebook/client.d.ts +32 -44
  151. package/dist/layouts/notebook/client.js +58 -148
  152. package/dist/layouts/notebook/index.d.ts +26 -25
  153. package/dist/layouts/notebook/index.js +16 -213
  154. package/dist/layouts/notebook/page/index.d.ts +75 -52
  155. package/dist/layouts/notebook/page/index.js +76 -56
  156. package/dist/layouts/notebook/page/slots/breadcrumb.d.ts +14 -0
  157. package/dist/layouts/notebook/page/slots/breadcrumb.js +44 -0
  158. package/dist/layouts/notebook/page/slots/container.d.ts +7 -0
  159. package/dist/layouts/notebook/page/slots/container.js +17 -0
  160. package/dist/layouts/notebook/page/slots/footer.d.ts +23 -0
  161. package/dist/layouts/notebook/page/slots/footer.js +56 -0
  162. package/dist/layouts/notebook/page/slots/toc.d.ts +55 -0
  163. package/dist/layouts/notebook/page/slots/toc.js +165 -0
  164. package/dist/layouts/notebook/slots/container.d.ts +7 -0
  165. package/dist/layouts/notebook/slots/container.js +31 -0
  166. package/dist/layouts/notebook/slots/header.d.ts +8 -0
  167. package/dist/layouts/notebook/slots/header.js +194 -0
  168. package/dist/layouts/notebook/slots/sidebar.d.ts +40 -0
  169. package/dist/layouts/notebook/slots/sidebar.js +297 -0
  170. package/dist/layouts/shared/client.d.ts +45 -0
  171. package/dist/layouts/shared/client.js +84 -0
  172. package/dist/layouts/shared/index.d.ts +144 -35
  173. package/dist/layouts/shared/index.js +74 -15
  174. package/dist/layouts/shared/page-actions.d.ts +36 -0
  175. package/dist/layouts/shared/page-actions.js +190 -0
  176. package/dist/layouts/shared/slots/language-select.d.ts +10 -0
  177. package/dist/layouts/shared/{language-toggle.js → slots/language-select.js} +12 -16
  178. package/dist/layouts/shared/slots/search-trigger.d.ts +23 -0
  179. package/dist/layouts/shared/{search-toggle.js → slots/search-trigger.js} +12 -16
  180. package/dist/layouts/shared/slots/theme-switch.d.ts +14 -0
  181. package/dist/layouts/shared/{theme-toggle.js → slots/theme-switch.js} +11 -15
  182. package/dist/mdx.d.ts +23 -13
  183. package/dist/mdx.js +2 -6
  184. package/dist/mdx.server.d.ts +1 -3
  185. package/dist/mdx.server.js +0 -3
  186. package/dist/og/takumi.d.ts +21 -0
  187. package/dist/og/takumi.js +70 -0
  188. package/dist/og.d.ts +22 -1
  189. package/dist/og.js +70 -3
  190. package/dist/page.d.ts +6 -7
  191. package/dist/page.js +9 -14
  192. package/dist/provider/base.d.ts +5 -6
  193. package/dist/provider/base.js +5 -9
  194. package/dist/provider/next.d.ts +4 -5
  195. package/dist/provider/next.js +1 -5
  196. package/dist/provider/react-router.d.ts +4 -5
  197. package/dist/provider/react-router.js +1 -5
  198. package/dist/provider/tanstack.d.ts +4 -5
  199. package/dist/provider/tanstack.js +1 -5
  200. package/dist/provider/waku.d.ts +4 -5
  201. package/dist/provider/waku.js +1 -5
  202. package/dist/style.css +594 -192
  203. package/dist/tailwind/typography.d.ts +2 -0
  204. package/dist/tailwind/typography.js +2 -0
  205. package/dist/utils/cn.js +2 -0
  206. package/dist/utils/merge-refs.js +11 -0
  207. package/dist/utils/urls.js +15 -0
  208. package/dist/utils/use-copy-button.d.ts +6 -1
  209. package/dist/utils/use-copy-button.js +26 -3
  210. package/dist/utils/use-footer-items.d.ts +9 -1
  211. package/dist/utils/use-footer-items.js +24 -3
  212. package/dist/utils/use-is-scroll-top.d.ts +8 -1
  213. package/dist/utils/use-is-scroll-top.js +20 -3
  214. package/package.json +133 -81
  215. package/css/layouts/docs.css +0 -1
  216. package/css/layouts/home.css +0 -1
  217. package/css/layouts/notebook.css +0 -1
  218. package/dist/_virtual/rolldown_runtime.js +0 -36
  219. package/dist/components/accordion.d.ts.map +0 -1
  220. package/dist/components/accordion.js.map +0 -1
  221. package/dist/components/banner.d.ts.map +0 -1
  222. package/dist/components/banner.js.map +0 -1
  223. package/dist/components/callout.d.ts.map +0 -1
  224. package/dist/components/callout.js.map +0 -1
  225. package/dist/components/card.d.ts.map +0 -1
  226. package/dist/components/card.js.map +0 -1
  227. package/dist/components/codeblock.d.ts.map +0 -1
  228. package/dist/components/codeblock.js.map +0 -1
  229. package/dist/components/dialog/search-algolia.d.ts.map +0 -1
  230. package/dist/components/dialog/search-algolia.js.map +0 -1
  231. package/dist/components/dialog/search-default.d.ts.map +0 -1
  232. package/dist/components/dialog/search-default.js.map +0 -1
  233. package/dist/components/dialog/search-orama.d.ts.map +0 -1
  234. package/dist/components/dialog/search-orama.js.map +0 -1
  235. package/dist/components/dialog/search.d.ts.map +0 -1
  236. package/dist/components/dialog/search.js.map +0 -1
  237. package/dist/components/dynamic-codeblock.d.ts.map +0 -1
  238. package/dist/components/dynamic-codeblock.js.map +0 -1
  239. package/dist/components/files.d.ts.map +0 -1
  240. package/dist/components/files.js.map +0 -1
  241. package/dist/components/github-info.d.ts.map +0 -1
  242. package/dist/components/github-info.js.map +0 -1
  243. package/dist/components/heading.d.ts.map +0 -1
  244. package/dist/components/heading.js.map +0 -1
  245. package/dist/components/image-zoom-CtfZieBH.css +0 -80
  246. package/dist/components/image-zoom-CtfZieBH.css.map +0 -1
  247. package/dist/components/image-zoom.d.ts.map +0 -1
  248. package/dist/components/image-zoom.js.map +0 -1
  249. package/dist/components/image-zoom2.js +0 -1
  250. package/dist/components/inline-toc.d.ts.map +0 -1
  251. package/dist/components/inline-toc.js.map +0 -1
  252. package/dist/components/sidebar/base.d.ts.map +0 -1
  253. package/dist/components/sidebar/base.js.map +0 -1
  254. package/dist/components/sidebar/link-item.d.ts.map +0 -1
  255. package/dist/components/sidebar/link-item.js.map +0 -1
  256. package/dist/components/sidebar/page-tree.d.ts.map +0 -1
  257. package/dist/components/sidebar/page-tree.js.map +0 -1
  258. package/dist/components/sidebar/tabs/dropdown.d.ts.map +0 -1
  259. package/dist/components/sidebar/tabs/dropdown.js.map +0 -1
  260. package/dist/components/sidebar/tabs/index.d.ts.map +0 -1
  261. package/dist/components/sidebar/tabs/index.js.map +0 -1
  262. package/dist/components/steps.d.ts.map +0 -1
  263. package/dist/components/steps.js.map +0 -1
  264. package/dist/components/tabs.d.ts.map +0 -1
  265. package/dist/components/tabs.js.map +0 -1
  266. package/dist/components/toc/clerk.js.map +0 -1
  267. package/dist/components/toc/default.js.map +0 -1
  268. package/dist/components/toc/index.js.map +0 -1
  269. package/dist/components/type-table.d.ts.map +0 -1
  270. package/dist/components/type-table.js.map +0 -1
  271. package/dist/components/ui/accordion.d.ts.map +0 -1
  272. package/dist/components/ui/accordion.js.map +0 -1
  273. package/dist/components/ui/button.d.ts.map +0 -1
  274. package/dist/components/ui/button.js.map +0 -1
  275. package/dist/components/ui/collapsible.d.ts.map +0 -1
  276. package/dist/components/ui/collapsible.js.map +0 -1
  277. package/dist/components/ui/navigation-menu.d.ts.map +0 -1
  278. package/dist/components/ui/navigation-menu.js.map +0 -1
  279. package/dist/components/ui/popover.d.ts.map +0 -1
  280. package/dist/components/ui/popover.js.map +0 -1
  281. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  282. package/dist/components/ui/scroll-area.js.map +0 -1
  283. package/dist/components/ui/tabs.d.ts.map +0 -1
  284. package/dist/components/ui/tabs.js.map +0 -1
  285. package/dist/contexts/i18n.js.map +0 -1
  286. package/dist/contexts/search.d.ts.map +0 -1
  287. package/dist/contexts/search.js.map +0 -1
  288. package/dist/contexts/tree.js.map +0 -1
  289. package/dist/layouts/docs/client.d.ts.map +0 -1
  290. package/dist/layouts/docs/client.js.map +0 -1
  291. package/dist/layouts/docs/index.d.ts.map +0 -1
  292. package/dist/layouts/docs/index.js.map +0 -1
  293. package/dist/layouts/docs/page/client.d.ts +0 -46
  294. package/dist/layouts/docs/page/client.d.ts.map +0 -1
  295. package/dist/layouts/docs/page/client.js +0 -227
  296. package/dist/layouts/docs/page/client.js.map +0 -1
  297. package/dist/layouts/docs/page/index.d.ts.map +0 -1
  298. package/dist/layouts/docs/page/index.js.map +0 -1
  299. package/dist/layouts/docs/sidebar.d.ts +0 -63
  300. package/dist/layouts/docs/sidebar.d.ts.map +0 -1
  301. package/dist/layouts/docs/sidebar.js +0 -162
  302. package/dist/layouts/docs/sidebar.js.map +0 -1
  303. package/dist/layouts/home/client.d.ts +0 -19
  304. package/dist/layouts/home/client.d.ts.map +0 -1
  305. package/dist/layouts/home/client.js +0 -285
  306. package/dist/layouts/home/client.js.map +0 -1
  307. package/dist/layouts/home/index.d.ts.map +0 -1
  308. package/dist/layouts/home/index.js.map +0 -1
  309. package/dist/layouts/home/navbar.d.ts.map +0 -1
  310. package/dist/layouts/home/navbar.js.map +0 -1
  311. package/dist/layouts/notebook/client.d.ts.map +0 -1
  312. package/dist/layouts/notebook/client.js.map +0 -1
  313. package/dist/layouts/notebook/index.d.ts.map +0 -1
  314. package/dist/layouts/notebook/index.js.map +0 -1
  315. package/dist/layouts/notebook/page/client.d.ts +0 -46
  316. package/dist/layouts/notebook/page/client.d.ts.map +0 -1
  317. package/dist/layouts/notebook/page/client.js +0 -227
  318. package/dist/layouts/notebook/page/client.js.map +0 -1
  319. package/dist/layouts/notebook/page/index.d.ts.map +0 -1
  320. package/dist/layouts/notebook/page/index.js.map +0 -1
  321. package/dist/layouts/notebook/sidebar.d.ts +0 -59
  322. package/dist/layouts/notebook/sidebar.d.ts.map +0 -1
  323. package/dist/layouts/notebook/sidebar.js +0 -133
  324. package/dist/layouts/notebook/sidebar.js.map +0 -1
  325. package/dist/layouts/shared/index.d.ts.map +0 -1
  326. package/dist/layouts/shared/index.js.map +0 -1
  327. package/dist/layouts/shared/language-toggle.d.ts +0 -10
  328. package/dist/layouts/shared/language-toggle.d.ts.map +0 -1
  329. package/dist/layouts/shared/language-toggle.js.map +0 -1
  330. package/dist/layouts/shared/search-toggle.d.ts +0 -23
  331. package/dist/layouts/shared/search-toggle.d.ts.map +0 -1
  332. package/dist/layouts/shared/search-toggle.js.map +0 -1
  333. package/dist/layouts/shared/theme-toggle.d.ts +0 -14
  334. package/dist/layouts/shared/theme-toggle.d.ts.map +0 -1
  335. package/dist/layouts/shared/theme-toggle.js.map +0 -1
  336. package/dist/mdx.d.ts.map +0 -1
  337. package/dist/mdx.js.map +0 -1
  338. package/dist/mdx.server.d.ts.map +0 -1
  339. package/dist/mdx.server.js.map +0 -1
  340. package/dist/page.d.ts.map +0 -1
  341. package/dist/page.js.map +0 -1
  342. package/dist/provider/base.d.ts.map +0 -1
  343. package/dist/provider/base.js.map +0 -1
  344. package/dist/provider/next.d.ts.map +0 -1
  345. package/dist/provider/next.js.map +0 -1
  346. package/dist/provider/react-router.d.ts.map +0 -1
  347. package/dist/provider/react-router.js.map +0 -1
  348. package/dist/provider/tanstack.d.ts.map +0 -1
  349. package/dist/provider/tanstack.js.map +0 -1
  350. package/dist/provider/waku.d.ts.map +0 -1
  351. package/dist/provider/waku.js.map +0 -1
@@ -1,227 +0,0 @@
1
- 'use client';
2
-
3
- import { i18n_exports } from "../../../contexts/i18n.js";
4
- import { tree_exports } from "../../../contexts/tree.js";
5
- import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../../components/ui/collapsible.js";
6
- import { toc_exports } from "../../../components/toc/index.js";
7
- import { LayoutContext } from "../client.js";
8
- import Link from "@hanzo/docs-core/link";
9
- import { usePathname } from "@hanzo/docs-core/framework";
10
- import { cn } from "@hanzo/docs-ui/cn";
11
- import { jsx, jsxs } from "react/jsx-runtime";
12
- import { ChevronDown, ChevronLeft, ChevronRight } from "lucide-react";
13
- import { Fragment as Fragment$1, createContext, use, useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
14
- import { getBreadcrumbItemsFromPath } from "@hanzo/docs-core/breadcrumb";
15
- import { isActive } from "@hanzo/docs-ui/urls";
16
- import { useActiveAnchor } from "@hanzo/docs-core/toc";
17
- import { useFooterItems } from "@hanzo/docs-ui/hooks/use-footer-items";
18
-
19
- //#region src/layouts/notebook/page/client.tsx
20
- const TocPopoverContext = createContext(null);
21
- function PageTOCPopover({ className, children, ...rest }) {
22
- const ref = useRef(null);
23
- const [open, setOpen] = useState(false);
24
- const { isNavTransparent } = use(LayoutContext);
25
- const onClick = useEffectEvent((e) => {
26
- if (!open) return;
27
- if (ref.current && !ref.current.contains(e.target)) setOpen(false);
28
- });
29
- useEffect(() => {
30
- window.addEventListener("click", onClick);
31
- return () => {
32
- window.removeEventListener("click", onClick);
33
- };
34
- }, []);
35
- return /* @__PURE__ */ jsx(TocPopoverContext, {
36
- value: useMemo(() => ({
37
- open,
38
- setOpen
39
- }), [setOpen, open]),
40
- children: /* @__PURE__ */ jsx(Collapsible, {
41
- open,
42
- onOpenChange: setOpen,
43
- "data-toc-popover": "",
44
- className: cn("sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]", className),
45
- ...rest,
46
- children: /* @__PURE__ */ jsx("header", {
47
- ref,
48
- className: cn("border-b backdrop-blur-sm transition-colors", (!isNavTransparent || open) && "bg-fd-background/80", open && "shadow-lg"),
49
- children
50
- })
51
- })
52
- });
53
- }
54
- function PageTOCPopoverTrigger({ className, ...props }) {
55
- const { text } = (0, i18n_exports.useI18n)();
56
- const { open } = use(TocPopoverContext);
57
- const items = (0, toc_exports.useTOCItems)();
58
- const active = useActiveAnchor();
59
- const selected = useMemo(() => items.findIndex((item) => active === item.url.slice(1)), [items, active]);
60
- const path = (0, tree_exports.useTreePath)().at(-1);
61
- const showItem = selected !== -1 && !open;
62
- return /* @__PURE__ */ jsxs(CollapsibleTrigger, {
63
- className: cn("flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6", className),
64
- "data-toc-popover-trigger": "",
65
- ...props,
66
- children: [
67
- /* @__PURE__ */ jsx(ProgressCircle, {
68
- value: (selected + 1) / Math.max(1, items.length),
69
- max: 1,
70
- className: cn("shrink-0", open && "text-fd-primary")
71
- }),
72
- /* @__PURE__ */ jsxs("span", {
73
- className: "grid flex-1 *:my-auto *:row-start-1 *:col-start-1",
74
- children: [/* @__PURE__ */ jsx("span", {
75
- className: cn("truncate transition-all", open && "text-fd-foreground", showItem && "opacity-0 -translate-y-full pointer-events-none"),
76
- children: path?.name ?? text.toc
77
- }), /* @__PURE__ */ jsx("span", {
78
- className: cn("truncate transition-all", !showItem && "opacity-0 translate-y-full pointer-events-none"),
79
- children: items[selected]?.title
80
- })]
81
- }),
82
- /* @__PURE__ */ jsx(ChevronDown, { className: cn("shrink-0 transition-transform mx-0.5", open && "rotate-180") })
83
- ]
84
- });
85
- }
86
- function clamp(input, min, max) {
87
- if (input < min) return min;
88
- if (input > max) return max;
89
- return input;
90
- }
91
- function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100, ...restSvgProps }) {
92
- const normalizedValue = clamp(value, min, max);
93
- const radius = (size - strokeWidth) / 2;
94
- const circumference = 2 * Math.PI * radius;
95
- const progress = normalizedValue / max * circumference;
96
- const circleProps = {
97
- cx: size / 2,
98
- cy: size / 2,
99
- r: radius,
100
- fill: "none",
101
- strokeWidth
102
- };
103
- return /* @__PURE__ */ jsxs("svg", {
104
- role: "progressbar",
105
- viewBox: `0 0 ${size} ${size}`,
106
- "aria-valuenow": normalizedValue,
107
- "aria-valuemin": min,
108
- "aria-valuemax": max,
109
- ...restSvgProps,
110
- children: [/* @__PURE__ */ jsx("circle", {
111
- ...circleProps,
112
- className: "stroke-current/25"
113
- }), /* @__PURE__ */ jsx("circle", {
114
- ...circleProps,
115
- stroke: "currentColor",
116
- strokeDasharray: circumference,
117
- strokeDashoffset: circumference - progress,
118
- strokeLinecap: "round",
119
- transform: `rotate(-90 ${size / 2} ${size / 2})`,
120
- className: "transition-all"
121
- })]
122
- });
123
- }
124
- function PageTOCPopoverContent(props) {
125
- return /* @__PURE__ */ jsx(CollapsibleContent, {
126
- "data-toc-popover-content": "",
127
- ...props,
128
- className: cn("flex flex-col px-4 max-h-[50vh] md:px-6", props.className),
129
- children: props.children
130
- });
131
- }
132
- function PageLastUpdate({ date: value, ...props }) {
133
- const { text } = (0, i18n_exports.useI18n)();
134
- const [date, setDate] = useState("");
135
- useEffect(() => {
136
- setDate(value.toLocaleDateString());
137
- }, [value]);
138
- return /* @__PURE__ */ jsxs("p", {
139
- ...props,
140
- className: cn("text-sm text-fd-muted-foreground", props.className),
141
- children: [
142
- text.lastUpdate,
143
- " ",
144
- date
145
- ]
146
- });
147
- }
148
- function PageFooter({ items, ...props }) {
149
- const footerList = useFooterItems();
150
- const pathname = usePathname();
151
- const { previous, next } = useMemo(() => {
152
- if (items) return items;
153
- const idx = footerList.findIndex((item) => isActive(item.url, pathname, false));
154
- if (idx === -1) return {};
155
- return {
156
- previous: footerList[idx - 1],
157
- next: footerList[idx + 1]
158
- };
159
- }, [
160
- footerList,
161
- items,
162
- pathname
163
- ]);
164
- return /* @__PURE__ */ jsxs("div", {
165
- ...props,
166
- className: cn("@container grid gap-4", previous && next ? "grid-cols-2" : "grid-cols-1", props.className),
167
- children: [previous ? /* @__PURE__ */ jsx(FooterItem, {
168
- item: previous,
169
- index: 0
170
- }) : null, next ? /* @__PURE__ */ jsx(FooterItem, {
171
- item: next,
172
- index: 1
173
- }) : null]
174
- });
175
- }
176
- function FooterItem({ item, index }) {
177
- const { text } = (0, i18n_exports.useI18n)();
178
- const Icon = index === 0 ? ChevronLeft : ChevronRight;
179
- return /* @__PURE__ */ jsxs(Link, {
180
- href: item.url,
181
- className: cn("flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full", index === 1 && "text-end"),
182
- children: [/* @__PURE__ */ jsxs("div", {
183
- className: cn("inline-flex items-center gap-1.5 font-medium", index === 1 && "flex-row-reverse"),
184
- children: [/* @__PURE__ */ jsx(Icon, { className: "-mx-1 size-4 shrink-0 rtl:rotate-180" }), /* @__PURE__ */ jsx("p", { children: item.name })]
185
- }), /* @__PURE__ */ jsx("p", {
186
- className: "text-fd-muted-foreground truncate",
187
- children: item.description ?? (index === 0 ? text.previousPage : text.nextPage)
188
- })]
189
- });
190
- }
191
- function PageBreadcrumb({ includeRoot, includeSeparator, includePage, ...props }) {
192
- const path = (0, tree_exports.useTreePath)();
193
- const { root } = (0, tree_exports.useTreeContext)();
194
- const items = useMemo(() => {
195
- return getBreadcrumbItemsFromPath(root, path, {
196
- includePage,
197
- includeSeparator,
198
- includeRoot
199
- });
200
- }, [
201
- includePage,
202
- includeRoot,
203
- includeSeparator,
204
- path,
205
- root
206
- ]);
207
- if (items.length === 0) return null;
208
- return /* @__PURE__ */ jsx("div", {
209
- ...props,
210
- className: cn("flex items-center gap-1.5 text-sm text-fd-muted-foreground", props.className),
211
- children: items.map((item, i) => {
212
- const className = cn("truncate", i === items.length - 1 && "text-fd-primary font-medium");
213
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [i !== 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5 shrink-0" }), item.url ? /* @__PURE__ */ jsx(Link, {
214
- href: item.url,
215
- className: cn(className, "transition-opacity hover:opacity-80"),
216
- children: item.name
217
- }) : /* @__PURE__ */ jsx("span", {
218
- className,
219
- children: item.name
220
- })] }, i);
221
- })
222
- });
223
- }
224
-
225
- //#endregion
226
- export { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger };
227
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":["Fragment"],"sources":["../../../../src/layouts/notebook/page/client.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n use,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\nimport Link from '@hanzo/docs-core/link';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { useI18n } from '@/contexts/i18n';\nimport { useTreeContext, useTreePath } from '@/contexts/tree';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { type BreadcrumbOptions, getBreadcrumbItemsFromPath } from '@hanzo/docs-core/breadcrumb';\nimport { isActive } from '@hanzo/docs-ui/urls';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { useTOCItems } from '@/components/toc';\nimport { useActiveAnchor } from '@hanzo/docs-core/toc';\nimport { LayoutContext } from '../client';\nimport { useFooterItems } from '@hanzo/docs-ui/hooks/use-footer-items';\n\nconst TocPopoverContext = createContext<{\n open: boolean;\n setOpen: (open: boolean) => void;\n} | null>(null);\n\nexport function PageTOCPopover({ className, children, ...rest }: ComponentProps<'div'>) {\n const ref = useRef<HTMLElement>(null);\n const [open, setOpen] = useState(false);\n const { isNavTransparent } = use(LayoutContext)!;\n\n const onClick = useEffectEvent((e: Event) => {\n if (!open) return;\n\n if (ref.current && !ref.current.contains(e.target as HTMLElement)) setOpen(false);\n });\n\n useEffect(() => {\n window.addEventListener('click', onClick);\n\n return () => {\n window.removeEventListener('click', onClick);\n };\n }, []);\n\n return (\n <TocPopoverContext\n value={useMemo(\n () => ({\n open,\n setOpen,\n }),\n [setOpen, open],\n )}\n >\n <Collapsible\n open={open}\n onOpenChange={setOpen}\n data-toc-popover=\"\"\n className={cn(\n 'sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]',\n className,\n )}\n {...rest}\n >\n <header\n ref={ref}\n className={cn(\n 'border-b backdrop-blur-sm transition-colors',\n (!isNavTransparent || open) && 'bg-fd-background/80',\n open && 'shadow-lg',\n )}\n >\n {children}\n </header>\n </Collapsible>\n </TocPopoverContext>\n );\n}\n\nexport function PageTOCPopoverTrigger({ className, ...props }: ComponentProps<'button'>) {\n const { text } = useI18n();\n const { open } = use(TocPopoverContext)!;\n const items = useTOCItems();\n const active = useActiveAnchor();\n const selected = useMemo(\n () => items.findIndex((item) => active === item.url.slice(1)),\n [items, active],\n );\n const path = useTreePath().at(-1);\n const showItem = selected !== -1 && !open;\n\n return (\n <CollapsibleTrigger\n className={cn(\n 'flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6',\n className,\n )}\n data-toc-popover-trigger=\"\"\n {...props}\n >\n <ProgressCircle\n value={(selected + 1) / Math.max(1, items.length)}\n max={1}\n className={cn('shrink-0', open && 'text-fd-primary')}\n />\n <span className=\"grid flex-1 *:my-auto *:row-start-1 *:col-start-1\">\n <span\n className={cn(\n 'truncate transition-all',\n open && 'text-fd-foreground',\n showItem && 'opacity-0 -translate-y-full pointer-events-none',\n )}\n >\n {path?.name ?? text.toc}\n </span>\n <span\n className={cn(\n 'truncate transition-all',\n !showItem && 'opacity-0 translate-y-full pointer-events-none',\n )}\n >\n {items[selected]?.title}\n </span>\n </span>\n <ChevronDown className={cn('shrink-0 transition-transform mx-0.5', open && 'rotate-180')} />\n </CollapsibleTrigger>\n );\n}\n\ninterface ProgressCircleProps extends Omit<React.ComponentProps<'svg'>, 'strokeWidth'> {\n value: number;\n strokeWidth?: number;\n size?: number;\n min?: number;\n max?: number;\n}\n\nfunction clamp(input: number, min: number, max: number): number {\n if (input < min) return min;\n if (input > max) return max;\n return input;\n}\n\nfunction ProgressCircle({\n value,\n strokeWidth = 2,\n size = 24,\n min = 0,\n max = 100,\n ...restSvgProps\n}: ProgressCircleProps) {\n const normalizedValue = clamp(value, min, max);\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const progress = (normalizedValue / max) * circumference;\n const circleProps = {\n cx: size / 2,\n cy: size / 2,\n r: radius,\n fill: 'none',\n strokeWidth,\n };\n\n return (\n <svg\n role=\"progressbar\"\n viewBox={`0 0 ${size} ${size}`}\n aria-valuenow={normalizedValue}\n aria-valuemin={min}\n aria-valuemax={max}\n {...restSvgProps}\n >\n <circle {...circleProps} className=\"stroke-current/25\" />\n <circle\n {...circleProps}\n stroke=\"currentColor\"\n strokeDasharray={circumference}\n strokeDashoffset={circumference - progress}\n strokeLinecap=\"round\"\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n className=\"transition-all\"\n />\n </svg>\n );\n}\n\nexport function PageTOCPopoverContent(props: ComponentProps<'div'>) {\n return (\n <CollapsibleContent\n data-toc-popover-content=\"\"\n {...props}\n className={cn('flex flex-col px-4 max-h-[50vh] md:px-6', props.className)}\n >\n {props.children}\n </CollapsibleContent>\n );\n}\n\nexport function PageLastUpdate({\n date: value,\n ...props\n}: Omit<ComponentProps<'p'>, 'children'> & { date: Date }) {\n const { text } = useI18n();\n const [date, setDate] = useState('');\n\n useEffect(() => {\n // to the timezone of client\n setDate(value.toLocaleDateString());\n }, [value]);\n\n return (\n <p {...props} className={cn('text-sm text-fd-muted-foreground', props.className)}>\n {text.lastUpdate} {date}\n </p>\n );\n}\n\ntype Item = Pick<PageTree.Item, 'name' | 'description' | 'url'>;\nexport interface FooterProps extends ComponentProps<'div'> {\n /**\n * Items including information for the next and previous page\n */\n items?: {\n previous?: Item;\n next?: Item;\n };\n}\n\nexport function PageFooter({ items, ...props }: FooterProps) {\n const footerList = useFooterItems();\n const pathname = usePathname();\n const { previous, next } = useMemo(() => {\n if (items) return items;\n\n const idx = footerList.findIndex((item) => isActive(item.url, pathname, false));\n\n if (idx === -1) return {};\n return {\n previous: footerList[idx - 1],\n next: footerList[idx + 1],\n };\n }, [footerList, items, pathname]);\n\n return (\n <div\n {...props}\n className={cn(\n '@container grid gap-4',\n previous && next ? 'grid-cols-2' : 'grid-cols-1',\n props.className,\n )}\n >\n {previous ? <FooterItem item={previous} index={0} /> : null}\n {next ? <FooterItem item={next} index={1} /> : null}\n </div>\n );\n}\n\nfunction FooterItem({ item, index }: { item: Item; index: 0 | 1 }) {\n const { text } = useI18n();\n const Icon = index === 0 ? ChevronLeft : ChevronRight;\n\n return (\n <Link\n href={item.url}\n className={cn(\n 'flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full',\n index === 1 && 'text-end',\n )}\n >\n <div\n className={cn(\n 'inline-flex items-center gap-1.5 font-medium',\n index === 1 && 'flex-row-reverse',\n )}\n >\n <Icon className=\"-mx-1 size-4 shrink-0 rtl:rotate-180\" />\n <p>{item.name}</p>\n </div>\n <p className=\"text-fd-muted-foreground truncate\">\n {item.description ?? (index === 0 ? text.previousPage : text.nextPage)}\n </p>\n </Link>\n );\n}\n\nexport type BreadcrumbProps = BreadcrumbOptions & ComponentProps<'div'>;\n\nexport function PageBreadcrumb({\n includeRoot,\n includeSeparator,\n includePage,\n ...props\n}: BreadcrumbProps) {\n const path = useTreePath();\n const { root } = useTreeContext();\n const items = useMemo(() => {\n return getBreadcrumbItemsFromPath(root, path, {\n includePage,\n includeSeparator,\n includeRoot,\n });\n }, [includePage, includeRoot, includeSeparator, path, root]);\n\n if (items.length === 0) return null;\n\n return (\n <div\n {...props}\n className={cn('flex items-center gap-1.5 text-sm text-fd-muted-foreground', props.className)}\n >\n {items.map((item, i) => {\n const className = cn('truncate', i === items.length - 1 && 'text-fd-primary font-medium');\n\n return (\n <Fragment key={i}>\n {i !== 0 && <ChevronRight className=\"size-3.5 shrink-0\" />}\n {item.url ? (\n <Link\n href={item.url}\n className={cn(className, 'transition-opacity hover:opacity-80')}\n >\n {item.name}\n </Link>\n ) : (\n <span className={className}>{item.name}</span>\n )}\n </Fragment>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/layouts/notebook/page/index.tsx"],"sourcesContent":[],"mappings":";;;;;;UAmBU,iBAAA,SAA0B;;aAEvB;AAPgE;AAK1B,UAKzC,aAAA,SAAsB,WAAA,CAAA;EAKf,OAAA,EAAA,OAAa;EACtB,SAAA,EAJK,SAIL;;AACW,UAFF,aAAA,CAEE;EACe,GAAA,CAAA,EAF1B,WAE0B,EAAA;EAAR,cAAA,CAAA,EADP,OACO,CADC,qBACD,CAAA;EAYH,qBAAA,CAAA,EAZG,OAYH,CAZW,4BAYX,CAAA;EAAR;;;;;EAUV,IAAA,CAAA,EAAA,OAAA;EAA6B;;;EASvB,UAAA,CAAA,EAnBI,OAmBJ,CAnBY,iBAmBZ,CAAA;EAGE;;AAAS;EAUN,MAAA,CAAA,EA3BL,OA2Ba,CA3BL,aA2BK,CAAA;EACC,QAAA,CAAA,EA1BZ,SA0BY;;KAvBpB,qBAAA,GAAwB,IAwB3B,CAxBgC,mBAwBhC,EAAA,QAAA,CAAA,GAAA;EACA;;;EAM2B,MAAA,CAAA,EA3BlB,SA2BkB;EAAuB;;;EAGjD,MAAA,CAAA,EAzBQ,SAyBR;EAAa,OAAA,EAAA,OAAA;EAAA,SAAA,EAtBH,SAsBG;EA2EA;AA4BhB;;EAAqC,KAAA,CAAA,EAAA,QAAA,GAAA,OAAA;CAAuB;KArHvD,4BAAA,GAA+B,IAqH6C,CArHxC,qBAqHwC,EAAA,QAAA,CAAA;AAAA,iBAnHjE,QAAA,CAmHiE;EAAA,UAAA,EAAA;IAAA,OAAA,EAlHxD,iBAkHwD;IAAA,SAAA,EAlHnB,UAkHmB;IAAA,GAAA;EAAA,CAAA;EAAA,MAAA;EAAA,IAAA;EAAA,qBAAA,EAAA;IAAA,OAAA,EA9GpE,iBA8GoE;IAAA,SAAA,EA7GlE,UA6GkE;IAAA,GAAA;EAAA,CAAA;EAAA,cAAA,EAAA;IAAA,OAAA,EA1GpD,UA0GoD;IAAA,SAAA,EA1G7B,UA0G6B;IAAA,GAAA;EAAA,CAAA;EAAA,GAAA;EAAA;AAAA,CAAA,EAvG9E,aAuG8E,CAAA,EAvGjE,SAuGiE;AAQjE,iBApCA,YAAA,CAoCe,KAAA,EApCK,cAoCL,CAAA,GAAA,CAAA,CAAA,EApCwB,mBAAA,CAAA,GAAA,CAAA,OAoCxB;;;;AAAuD,iBARtE,QAAA,CAQsE;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAR1B,cAQ0B,CAAA,KAAA,CAAA,CAAA,EARL,mBAAA,CAAA,GAAA,CAAA,OAQK;AAAA,iBAAtE,eAAA,CAAsE;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAAnB,cAAmB,CAAA,GAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,IAAA;AAWtE,iBAAA,SAAA,CAAS;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAAoC,cAApC,CAAA,IAAA,CAAA,CAAA,EAAwD,mBAAA,CAAA,GAAA,CAAA,OAAxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["children","TOCProvider","TOCScrollArea","TocClerk","TocDefault","I18nLabel"],"sources":["../../../../src/layouts/notebook/page/index.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Edit, Text } from 'lucide-react';\nimport { I18nLabel } from '@/contexts/i18n';\nimport {\n type BreadcrumbProps,\n type FooterProps,\n PageBreadcrumb,\n PageFooter,\n PageTOCPopover,\n PageTOCPopoverContent,\n PageTOCPopoverTrigger,\n} from './client';\nimport type { AnchorProviderProps, TOCItemType } from '@hanzo/docs-core/toc';\nimport * as TocDefault from '@/components/toc/default';\nimport * as TocClerk from '@/components/toc/clerk';\nimport { TOCProvider, TOCScrollArea } from '@/components/toc';\n\ninterface BreadcrumbOptions extends BreadcrumbProps {\n enabled: boolean;\n component: ReactNode;\n}\n\ninterface FooterOptions extends FooterProps {\n enabled: boolean;\n component: ReactNode;\n}\n\nexport interface DocsPageProps {\n toc?: TOCItemType[];\n tableOfContent?: Partial<TableOfContentOptions>;\n tableOfContentPopover?: Partial<TableOfContentPopoverOptions>;\n\n /**\n * Extend the page to fill all available space\n *\n * @defaultValue false\n */\n full?: boolean;\n\n /**\n * Replace or disable breadcrumb\n */\n breadcrumb?: Partial<BreadcrumbOptions>;\n\n /**\n * Footer navigation, you can disable it by passing `false`\n */\n footer?: Partial<FooterOptions>;\n\n children?: ReactNode;\n}\n\ntype TableOfContentOptions = Pick<AnchorProviderProps, 'single'> & {\n /**\n * Custom content in TOC container, before the main TOC\n */\n header?: ReactNode;\n\n /**\n * Custom content in TOC container, after the main TOC\n */\n footer?: ReactNode;\n\n enabled: boolean;\n component: ReactNode;\n\n /**\n * @defaultValue 'normal'\n */\n style?: 'normal' | 'clerk';\n};\n\ntype TableOfContentPopoverOptions = Omit<TableOfContentOptions, 'single'>;\n\nexport function DocsPage({\n breadcrumb: { enabled: breadcrumbEnabled = true, component: breadcrumb, ...breadcrumbProps } = {},\n footer = {},\n full = false,\n tableOfContentPopover: {\n enabled: tocPopoverEnabled,\n component: tocPopover,\n ...tocPopoverOptions\n } = {},\n tableOfContent: { enabled: tocEnabled, component: tocReplace, ...tocOptions } = {},\n toc = [],\n children,\n}: DocsPageProps) {\n // disable TOC on full mode, you can still enable it with `enabled` option.\n tocEnabled ??=\n !full && (toc.length > 0 || tocOptions.footer !== undefined || tocOptions.header !== undefined);\n\n tocPopoverEnabled ??=\n toc.length > 0 ||\n tocPopoverOptions.header !== undefined ||\n tocPopoverOptions.footer !== undefined;\n\n let wrapper = (children: ReactNode) => children;\n\n if (tocEnabled || tocPopoverEnabled) {\n wrapper = (children) => (\n <TOCProvider single={tocOptions.single} toc={toc}>\n {children}\n </TOCProvider>\n );\n }\n\n return wrapper(\n <>\n {tocPopoverEnabled &&\n (tocPopover ?? (\n <PageTOCPopover>\n <PageTOCPopoverTrigger />\n <PageTOCPopoverContent>\n {tocPopoverOptions.header}\n <TOCScrollArea>\n {tocPopoverOptions.style === 'clerk' ? (\n <TocClerk.TOCItems />\n ) : (\n <TocDefault.TOCItems />\n )}\n </TOCScrollArea>\n {tocPopoverOptions.footer}\n </PageTOCPopoverContent>\n </PageTOCPopover>\n ))}\n <article\n id=\"nd-page\"\n data-full={full}\n className={cn(\n 'flex flex-col [grid-area:main] px-4 py-6 gap-4 md:px-6 md:pt-8 xl:px-8 xl:pt-14 *:max-w-[900px]',\n full && '*:max-w-[1285px]',\n )}\n >\n {breadcrumbEnabled && (breadcrumb ?? <PageBreadcrumb {...breadcrumbProps} />)}\n {children}\n {footer.enabled !== false && (footer.component ?? <PageFooter items={footer.items} />)}\n </article>\n {tocEnabled &&\n (tocReplace ?? (\n <div\n id=\"nd-toc\"\n className=\"sticky top-(--fd-docs-row-3) [grid-area:toc] h-[calc(var(--fd-docs-height)-var(--fd-docs-row-3))] flex flex-col w-(--fd-toc-width) pt-12 pe-4 pb-2 xl:layout:[--fd-toc-width:268px] max-xl:hidden\"\n >\n {tocOptions.header}\n <h3\n id=\"toc-title\"\n className=\"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground\"\n >\n <Text className=\"size-4\" />\n <I18nLabel label=\"toc\" />\n </h3>\n <TOCScrollArea>\n {tocOptions.style === 'clerk' ? <TocClerk.TOCItems /> : <TocDefault.TOCItems />}\n </TOCScrollArea>\n {tocOptions.footer}\n </div>\n ))}\n </>,\n );\n}\n\nexport function EditOnGitHub(props: ComponentProps<'a'>) {\n return (\n <a\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n {...props}\n className={cn(\n buttonVariants({\n color: 'secondary',\n size: 'sm',\n className: 'gap-1.5 not-prose',\n }),\n props.className,\n )}\n >\n {props.children ?? (\n <>\n <Edit className=\"size-3.5\" />\n <I18nLabel label=\"editOnGithub\" />\n </>\n )}\n </a>\n );\n}\n\n/**\n * Add typography styles\n */\nexport function DocsBody({ children, className, ...props }: ComponentProps<'div'>) {\n return (\n <div {...props} className={cn('prose flex-1', className)}>\n {children}\n </div>\n );\n}\n\nexport function DocsDescription({ children, className, ...props }: ComponentProps<'p'>) {\n // Don't render if no description provided\n if (children === undefined) return null;\n\n return (\n <p {...props} className={cn('mb-8 text-lg text-fd-muted-foreground', className)}>\n {children}\n </p>\n );\n}\n\nexport function DocsTitle({ children, className, ...props }: ComponentProps<'h1'>) {\n return (\n <h1 {...props} className={cn('text-[1.75em] font-semibold', className)}>\n {children}\n </h1>\n );\n}\n\nexport { PageLastUpdate, PageBreadcrumb } from './client';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA4EA,SAAgB,SAAS,EACvB,YAAY,EAAE,SAAS,oBAAoB,MAAM,WAAW,YAAY,GAAG,oBAAoB,EAAE,EACjG,SAAS,EAAE,EACX,OAAO,OACP,uBAAuB,EACrB,SAAS,mBACT,WAAW,YACX,GAAG,sBACD,EAAE,EACN,gBAAgB,EAAE,SAAS,YAAY,WAAW,YAAY,GAAG,eAAe,EAAE,EAClF,MAAM,EAAE,EACR,YACgB;AAEhB,gBACE,CAAC,SAAS,IAAI,SAAS,KAAK,WAAW,WAAW,UAAa,WAAW,WAAW;AAEvF,uBACE,IAAI,SAAS,KACb,kBAAkB,WAAW,UAC7B,kBAAkB,WAAW;CAE/B,IAAI,WAAW,eAAwBA;AAEvC,KAAI,cAAc,kBAChB,YAAW,eACT,oBAACC;EAAY,QAAQ,WAAW;EAAa;YAC1CD;GACW;AAIlB,QAAO,QACL;EACG,sBACE,cACC,qBAAC,6BACC,oBAAC,0BAAwB,EACzB,qBAAC;GACE,kBAAkB;GACnB,oBAACE,uCACE,kBAAkB,UAAU,UAC3B,oBAACC,cAAS,aAAW,GAErB,oBAACC,gBAAW,aAAW,GAEX;GACf,kBAAkB;MACG,IACT;EAErB,qBAAC;GACC,IAAG;GACH,aAAW;GACX,WAAW,GACT,mGACA,QAAQ,mBACT;;IAEA,sBAAsB,cAAc,oBAAC,kBAAe,GAAI,kBAAmB;IAC3E;IACA,OAAO,YAAY,UAAU,OAAO,aAAa,oBAAC,cAAW,OAAO,OAAO,QAAS;;IAC7E;EACT,eACE,cACC,qBAAC;GACC,IAAG;GACH,WAAU;;IAET,WAAW;IACZ,qBAAC;KACC,IAAG;KACH,WAAU;gBAEV,oBAAC,QAAK,WAAU,WAAW,EAC3B,oBAACC,0BAAU,OAAM,QAAQ;MACtB;IACL,oBAACH,uCACE,WAAW,UAAU,UAAU,oBAACC,cAAS,aAAW,GAAG,oBAACC,gBAAW,aAAW,GACjE;IACf,WAAW;;IACR;KAET,CACJ;;AAGH,SAAgB,aAAa,OAA4B;AACvD,QACE,oBAAC;EACC,QAAO;EACP,KAAI;EACJ,GAAI;EACJ,WAAW,GACT,eAAe;GACb,OAAO;GACP,MAAM;GACN,WAAW;GACZ,CAAC,EACF,MAAM,UACP;YAEA,MAAM,YACL,4CACE,oBAAC,QAAK,WAAU,aAAa,EAC7B,oBAACC,0BAAU,OAAM,iBAAiB,IACjC;GAEH;;;;;AAOR,SAAgB,SAAS,EAAE,UAAU,WAAW,GAAG,SAAgC;AACjF,QACE,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,gBAAgB,UAAU;EACrD;GACG;;AAIV,SAAgB,gBAAgB,EAAE,UAAU,WAAW,GAAG,SAA8B;AAEtF,KAAI,aAAa,OAAW,QAAO;AAEnC,QACE,oBAAC;EAAE,GAAI;EAAO,WAAW,GAAG,yCAAyC,UAAU;EAC5E;GACC;;AAIR,SAAgB,UAAU,EAAE,UAAU,WAAW,GAAG,SAA+B;AACjF,QACE,oBAAC;EAAG,GAAI;EAAO,WAAW,GAAG,+BAA+B,UAAU;EACnE;GACE"}
@@ -1,59 +0,0 @@
1
- import { SidebarCollapseTrigger as SidebarCollapseTrigger$1, SidebarDrawerContent, SidebarFolder as SidebarFolder$1, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarProvider, SidebarTrigger as SidebarTrigger$1, SidebarViewport as SidebarViewport$1 } from "../../components/sidebar/base.js";
2
- import { SidebarPageTreeComponents } from "../../components/sidebar/page-tree.js";
3
- import * as react_jsx_runtime67 from "react/jsx-runtime";
4
- import * as react18 from "react";
5
- import { ComponentProps } from "react";
6
- import * as _hanzo_docs_ui_link_item0 from "@hanzo/docs-ui/link-item";
7
-
8
- //#region src/layouts/notebook/sidebar.d.ts
9
- declare const Sidebar: typeof SidebarProvider, SidebarFolder: typeof SidebarFolder$1, SidebarCollapseTrigger: typeof SidebarCollapseTrigger$1, SidebarViewport: typeof SidebarViewport$1, SidebarTrigger: typeof SidebarTrigger$1;
10
- declare function SidebarContent({
11
- ref: refProp,
12
- className,
13
- children,
14
- ...props
15
- }: ComponentProps<'aside'>): react_jsx_runtime67.JSX.Element;
16
- declare function SidebarDrawer({
17
- children,
18
- className,
19
- ...props
20
- }: ComponentProps<typeof SidebarDrawerContent>): react_jsx_runtime67.JSX.Element;
21
- declare function SidebarSeparator({
22
- className,
23
- style,
24
- children,
25
- ...props
26
- }: ComponentProps<'p'>): react_jsx_runtime67.JSX.Element;
27
- declare function SidebarItem({
28
- className,
29
- style,
30
- children,
31
- ...props
32
- }: ComponentProps<typeof SidebarItem$1>): react_jsx_runtime67.JSX.Element;
33
- declare function SidebarFolderTrigger({
34
- className,
35
- style,
36
- ...props
37
- }: ComponentProps<typeof SidebarFolderTrigger$1>): react_jsx_runtime67.JSX.Element;
38
- declare function SidebarFolderLink({
39
- className,
40
- style,
41
- ...props
42
- }: ComponentProps<typeof SidebarFolderLink$1>): react_jsx_runtime67.JSX.Element;
43
- declare function SidebarFolderContent({
44
- className,
45
- children,
46
- ...props
47
- }: ComponentProps<typeof SidebarFolderContent$1>): react_jsx_runtime67.JSX.Element;
48
- declare const SidebarPageTree: (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime67.JSX.Element;
49
- declare const SidebarLinkItem: ({
50
- item,
51
- ...props
52
- }: react18.HTMLAttributes<HTMLElement> & {
53
- item: Exclude<_hanzo_docs_ui_link_item0.LinkItemType, {
54
- type: "icon";
55
- }>;
56
- }) => react_jsx_runtime67.JSX.Element;
57
- //#endregion
58
- export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
59
- //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/layouts/notebook/sidebar.tsx"],"sourcesContent":[],"mappings":";;;;;;;;cA+BmB,gBAAO,uCACX,gDACS,kDACP,0CACD;iBAGA,cAAA;OACT;;;;GAIJ,0BAAuB,mBAAA,CAAA,GAAA,CAAA;iBA+CV,aAAA;;;;GAIb,sBAAsB,wBAA0B,mBAAA,CAAA,GAAA,CAAA;iBAiBnC,gBAAA;;;;;GAA2D,sBAAmB,mBAAA,CAAA,GAAA,CAAA;iBAiB9E,WAAA;;;;;GAKb,sBAAsB,iBAAiB,mBAAA,CAAA,GAAA,CAAA;iBAiB1B,oBAAA;;;;GAIb,sBAAsB,0BAA0B,mBAAA,CAAA,GAAA,CAAA;AA3HhC,iBAkJH,iBAAA,CAlJU;EAAA,SAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAsJvB,cAtJuB,CAAA,OAsJD,mBAtJC,CAAA,CAAA,EAsJsB,mBAAA,CAAA,GAAA,CAAA,OAtJtB;AAAA,iBAuKV,oBAAA,CAvKU;EAAA,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA2KvB,cA3KuB,CAAA,OA2KD,sBA3KC,CAAA,CAAA,EA2KyB,mBAAA,CAAA,GAAA,CAAA,OA3KzB;AACX,cA6LF,eA7LE,EAAA,CAAA,UAAA,EA6La,OA7Lb,CAoMb,yBAAA,CApMa,EAAA,GA6La,mBAAA,CAAA,GAAA,CAAA,OA7Lb;AACS,cAqMX,eArMW,EAAA,CAAA;EAAA,IAAA;EAAA,GAAA;CAAA,EAqMI,OAAA,CAAA,cArMJ,CAqMI,WArMJ,CAAA,GAAA;EACP,IAAA,SAAA,CAoMW,yBAAA,CAAA,YAAA,EApMX;IACD,IAAA,EAAA,MAAA;EACR,CAAA,CAAA;qCAJN"}
@@ -1,133 +0,0 @@
1
- 'use client';
2
-
3
- import { SidebarContent as SidebarContent$1, SidebarDrawerContent, SidebarDrawerOverlay, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarSeparator as SidebarSeparator$1, base_exports, useFolder, useFolderDepth } from "../../components/sidebar/base.js";
4
- import { LayoutContext } from "./client.js";
5
- import { createLinkItemRenderer } from "../../components/sidebar/link-item.js";
6
- import { createPageTreeRenderer } from "../../components/sidebar/page-tree.js";
7
- import { cn } from "@hanzo/docs-ui/cn";
8
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
- import { use, useRef } from "react";
10
- import { cva } from "class-variance-authority";
11
- import { mergeRefs } from "@hanzo/docs-ui/merge-refs";
12
-
13
- //#region src/layouts/notebook/sidebar.tsx
14
- const itemVariants = cva("relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0", { variants: {
15
- variant: {
16
- link: "transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors",
17
- button: "transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none"
18
- },
19
- highlight: { true: "data-[active=true]:before:content-[''] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5" }
20
- } });
21
- function getItemOffset(depth) {
22
- return `calc(${2 + 3 * depth} * var(--spacing))`;
23
- }
24
- const { SidebarProvider: Sidebar, SidebarFolder, SidebarCollapseTrigger, SidebarViewport, SidebarTrigger } = base_exports;
25
- function SidebarContent({ ref: refProp, className, children, ...props }) {
26
- const { navMode } = use(LayoutContext);
27
- const ref = useRef(null);
28
- return /* @__PURE__ */ jsx(SidebarContent$1, { children: ({ collapsed, hovered, ref: asideRef, ...rest }) => /* @__PURE__ */ jsxs("div", {
29
- "data-sidebar-placeholder": "",
30
- className: cn("sticky z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto md:layout:[--fd-sidebar-width:268px] max-md:hidden", navMode === "auto" ? "top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))]" : "top-(--fd-docs-row-2) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))]"),
31
- children: [collapsed && /* @__PURE__ */ jsx("div", {
32
- className: "absolute start-0 inset-y-0 w-4",
33
- ...rest
34
- }), /* @__PURE__ */ jsx("aside", {
35
- id: "nd-sidebar",
36
- ref: mergeRefs(ref, refProp, asideRef),
37
- "data-collapsed": collapsed,
38
- "data-hovered": collapsed && hovered,
39
- className: cn("absolute flex flex-col w-full start-0 inset-y-0 items-end text-sm duration-250 *:w-(--fd-sidebar-width)", navMode === "auto" && "bg-fd-card border-e", collapsed && ["inset-y-2 rounded-xl bg-fd-card transition-transform border w-(--fd-sidebar-width)", hovered ? "shadow-lg translate-x-2 rtl:-translate-x-2" : "-translate-x-(--fd-sidebar-width) rtl:translate-x-full"], ref.current && ref.current.getAttribute("data-collapsed") === "true" !== collapsed && "transition-[width,inset-block,translate,background-color]", className),
40
- ...props,
41
- ...rest,
42
- children
43
- })]
44
- }) });
45
- }
46
- function SidebarDrawer({ children, className, ...props }) {
47
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(SidebarDrawerOverlay, { className: "fixed z-40 inset-0 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out" }), /* @__PURE__ */ jsx(SidebarDrawerContent, {
48
- className: cn("fixed text-[0.9375rem] flex flex-col shadow-lg border-s end-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out", className),
49
- ...props,
50
- children
51
- })] });
52
- }
53
- function SidebarSeparator({ className, style, children, ...props }) {
54
- const depth = useFolderDepth();
55
- return /* @__PURE__ */ jsx(SidebarSeparator$1, {
56
- className: cn("[&_svg]:size-4 [&_svg]:shrink-0", className),
57
- style: {
58
- paddingInlineStart: getItemOffset(depth),
59
- ...style
60
- },
61
- ...props,
62
- children
63
- });
64
- }
65
- function SidebarItem({ className, style, children, ...props }) {
66
- const depth = useFolderDepth();
67
- return /* @__PURE__ */ jsx(SidebarItem$1, {
68
- className: cn(itemVariants({
69
- variant: "link",
70
- highlight: depth >= 1
71
- }), className),
72
- style: {
73
- paddingInlineStart: getItemOffset(depth),
74
- ...style
75
- },
76
- ...props,
77
- children
78
- });
79
- }
80
- function SidebarFolderTrigger({ className, style, ...props }) {
81
- const { depth, collapsible } = useFolder();
82
- return /* @__PURE__ */ jsx(SidebarFolderTrigger$1, {
83
- className: (s) => cn(itemVariants({ variant: collapsible ? "button" : null }), "w-full", typeof className === "function" ? className(s) : className),
84
- style: {
85
- paddingInlineStart: getItemOffset(depth - 1),
86
- ...style
87
- },
88
- ...props,
89
- children: props.children
90
- });
91
- }
92
- function SidebarFolderLink({ className, style, ...props }) {
93
- const depth = useFolderDepth();
94
- return /* @__PURE__ */ jsx(SidebarFolderLink$1, {
95
- className: cn(itemVariants({
96
- variant: "link",
97
- highlight: depth > 1
98
- }), "w-full", className),
99
- style: {
100
- paddingInlineStart: getItemOffset(depth - 1),
101
- ...style
102
- },
103
- ...props,
104
- children: props.children
105
- });
106
- }
107
- function SidebarFolderContent({ className, children, ...props }) {
108
- const depth = useFolderDepth();
109
- return /* @__PURE__ */ jsx(SidebarFolderContent$1, {
110
- className: (s) => cn("relative", depth === 1 && "before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5", typeof className === "function" ? className(s) : className),
111
- ...props,
112
- children
113
- });
114
- }
115
- const SidebarPageTree = createPageTreeRenderer({
116
- SidebarFolder,
117
- SidebarFolderContent,
118
- SidebarFolderLink,
119
- SidebarFolderTrigger,
120
- SidebarItem,
121
- SidebarSeparator
122
- });
123
- const SidebarLinkItem = createLinkItemRenderer({
124
- SidebarFolder,
125
- SidebarFolderContent,
126
- SidebarFolderLink,
127
- SidebarFolderTrigger,
128
- SidebarItem
129
- });
130
-
131
- //#endregion
132
- export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
133
- //# sourceMappingURL=sidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar.js","names":["Base","Base.SidebarContent","Base.SidebarDrawerOverlay","Base.SidebarDrawerContent","Base.useFolderDepth","Base.SidebarSeparator","Base.SidebarItem","Base.useFolder","Base.SidebarFolderTrigger","Base.SidebarFolderLink","Base.SidebarFolderContent"],"sources":["../../../src/layouts/notebook/sidebar.tsx"],"sourcesContent":["'use client';\nimport * as Base from '@/components/sidebar/base';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { type ComponentProps, use, useRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { LayoutContext } from './client';\nimport { createPageTreeRenderer } from '@/components/sidebar/page-tree';\nimport { createLinkItemRenderer } from '@/components/sidebar/link-item';\nimport { mergeRefs } from '@hanzo/docs-ui/merge-refs';\n\nconst itemVariants = cva(\n 'relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n link: 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors',\n button:\n 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',\n },\n highlight: {\n true: \"data-[active=true]:before:content-[''] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5\",\n },\n },\n },\n);\n\nfunction getItemOffset(depth: number) {\n return `calc(${2 + 3 * depth} * var(--spacing))`;\n}\n\nexport const {\n SidebarProvider: Sidebar,\n SidebarFolder,\n SidebarCollapseTrigger,\n SidebarViewport,\n SidebarTrigger,\n} = Base;\n\nexport function SidebarContent({\n ref: refProp,\n className,\n children,\n ...props\n}: ComponentProps<'aside'>) {\n const { navMode } = use(LayoutContext)!;\n const ref = useRef<HTMLElement>(null);\n\n return (\n <Base.SidebarContent>\n {({ collapsed, hovered, ref: asideRef, ...rest }) => (\n <div\n data-sidebar-placeholder=\"\"\n className={cn(\n 'sticky z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto md:layout:[--fd-sidebar-width:268px] max-md:hidden',\n navMode === 'auto'\n ? 'top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))]'\n : 'top-(--fd-docs-row-2) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))]',\n )}\n >\n {collapsed && <div className=\"absolute start-0 inset-y-0 w-4\" {...rest} />}\n <aside\n id=\"nd-sidebar\"\n ref={mergeRefs(ref, refProp, asideRef)}\n data-collapsed={collapsed}\n data-hovered={collapsed && hovered}\n className={cn(\n 'absolute flex flex-col w-full start-0 inset-y-0 items-end text-sm duration-250 *:w-(--fd-sidebar-width)',\n navMode === 'auto' && 'bg-fd-card border-e',\n collapsed && [\n 'inset-y-2 rounded-xl bg-fd-card transition-transform border w-(--fd-sidebar-width)',\n hovered\n ? 'shadow-lg translate-x-2 rtl:-translate-x-2'\n : '-translate-x-(--fd-sidebar-width) rtl:translate-x-full',\n ],\n ref.current &&\n (ref.current.getAttribute('data-collapsed') === 'true') !== collapsed &&\n 'transition-[width,inset-block,translate,background-color]',\n className,\n )}\n {...props}\n {...rest}\n >\n {children}\n </aside>\n </div>\n )}\n </Base.SidebarContent>\n );\n}\n\nexport function SidebarDrawer({\n children,\n className,\n ...props\n}: ComponentProps<typeof Base.SidebarDrawerContent>) {\n return (\n <>\n <Base.SidebarDrawerOverlay className=\"fixed z-40 inset-0 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out\" />\n <Base.SidebarDrawerContent\n className={cn(\n 'fixed text-[0.9375rem] flex flex-col shadow-lg border-s end-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out',\n className,\n )}\n {...props}\n >\n {children}\n </Base.SidebarDrawerContent>\n </>\n );\n}\n\nexport function SidebarSeparator({ className, style, children, ...props }: ComponentProps<'p'>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarSeparator\n className={cn('[&_svg]:size-4 [&_svg]:shrink-0', className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...props}\n >\n {children}\n </Base.SidebarSeparator>\n );\n}\n\nexport function SidebarItem({\n className,\n style,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarItem>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarItem\n className={cn(itemVariants({ variant: 'link', highlight: depth >= 1 }), className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...props}\n >\n {children}\n </Base.SidebarItem>\n );\n}\n\nexport function SidebarFolderTrigger({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderTrigger>) {\n const { depth, collapsible } = Base.useFolder()!;\n\n return (\n <Base.SidebarFolderTrigger\n className={(s) =>\n cn(\n itemVariants({ variant: collapsible ? 'button' : null }),\n 'w-full',\n typeof className === 'function' ? className(s) : className,\n )\n }\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...props}\n >\n {props.children}\n </Base.SidebarFolderTrigger>\n );\n}\n\nexport function SidebarFolderLink({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderLink>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarFolderLink\n className={cn(itemVariants({ variant: 'link', highlight: depth > 1 }), 'w-full', className)}\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...props}\n >\n {props.children}\n </Base.SidebarFolderLink>\n );\n}\n\nexport function SidebarFolderContent({\n className,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderContent>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarFolderContent\n className={(s) =>\n cn(\n 'relative',\n depth === 1 &&\n \"before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5\",\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {children}\n </Base.SidebarFolderContent>\n );\n}\nexport const SidebarPageTree = createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n SidebarSeparator,\n});\n\nexport const SidebarLinkItem = createLinkItemRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/shared/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;UAKiB,UAAA;;aAEJ;UAEH,qBAAqB,wBAAwB;;;AAJvD;;EAIU,GAAA,CAAA,EAAA,MAAA;EAAqB;;;;AAkB/B;EAGgB,eAAA,CAAA,EAAA,QAAA,GAAA,KAAA,GAAA,MAAA;EAON,QAAA,CAAA,EAbG,SAaH;;AADM,UATC,eAAA,CASD;EAFC,WAAA,CAAA,EAAA;IAaE,OAAA,CAAA,EAAA,OAAA;IAOT,SAAA,CAAA,EAxBM,SAwBN;IAIM,IAAA,CAAA,EAAA,YAAA,GAAA,mBAAA;EAAR,CAAA;EAEK,YAAA,CAAA,EA1BI,OA0BJ,CAAA;IAAS,OAAA,EAAA,OAAA;IAMN,UAAA,EA9BA,OA8BgB,CAAA;MAC9B,EAAA,EA9BQ,SA8BR;MACA,EAAA,EA9BQ,SA8BR;IACM,CAAA,CAAA;EAAL,CAAA,CAAA;EAA+C;;AAoBlD;;;EACgC,IAAA,CAAA,EAAA,OAAA,GA3Cb,UA2Ca;EAAR;;;EACI,SAAA,CAAA,EAAA,MAAA;EAAA,KAAA,CAAA,EArClB,YAqCkB,EAAA;EAAA;;;EAAA,GAAA,CAAA,EAjCpB,OAiCoB,CAjCZ,UAiCY,CAAA;EAAA,QAAA,CAAA,EA/Bf,SA+Be;;;;;iBAzBZ,gBAAA;;;GAGb,KAAK,0CAA0C;iBAoBlC,cAAA;;;GACQ,QAAQ,oBACvB,2DAAmB,mBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,SAAA,aAAA,6CAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,+BAAA,OAAA,CAAA,8BAAA,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/layouts/shared/index.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { I18nConfig } from '@hanzo/docs-core/i18n';\nimport type { LinkItemType } from '@hanzo/docs-ui/link-item';\nimport Link from '@hanzo/docs-core/link';\n\nexport interface NavOptions {\n enabled: boolean;\n component: ReactNode;\n\n title?: ReactNode | ((props: ComponentProps<'a'>) => ReactNode);\n\n /**\n * Redirect url of title\n * @defaultValue '/'\n */\n url?: string;\n\n /**\n * Use transparent background\n *\n * @defaultValue none\n */\n transparentMode?: 'always' | 'top' | 'none';\n\n children?: ReactNode;\n}\n\nexport interface BaseLayoutProps {\n themeSwitch?: {\n enabled?: boolean;\n component?: ReactNode;\n mode?: 'light-dark' | 'light-dark-system';\n };\n\n searchToggle?: Partial<{\n enabled: boolean;\n components: Partial<{\n sm: ReactNode;\n lg: ReactNode;\n }>;\n }>;\n\n /**\n * I18n options\n *\n * @defaultValue false\n */\n i18n?: boolean | I18nConfig;\n\n /**\n * GitHub url\n */\n githubUrl?: string;\n\n links?: LinkItemType[];\n /**\n * Replace or disable navbar\n */\n nav?: Partial<NavOptions>;\n\n children?: ReactNode;\n}\n\n/**\n * Get link items with shortcuts\n */\nexport function resolveLinkItems({\n links = [],\n githubUrl,\n}: Pick<BaseLayoutProps, 'links' | 'githubUrl'>): LinkItemType[] {\n const result = [...links];\n\n if (githubUrl)\n result.push({\n type: 'icon',\n url: githubUrl,\n text: 'Github',\n label: 'GitHub',\n icon: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" />\n </svg>\n ),\n external: true,\n });\n\n return result;\n}\n\nexport function renderTitleNav(\n { title, url = '/' }: Partial<NavOptions>,\n props: ComponentProps<'a'>,\n) {\n if (typeof title === 'function') return title({ href: url, ...props });\n return (\n <Link href={url} {...props}>\n {title}\n </Link>\n );\n}\n\nexport type * from '@hanzo/docs-ui/link-item';\n"],"mappings":";;;;;;;AAkEA,SAAgB,iBAAiB,EAC/B,QAAQ,EAAE,EACV,aAC+D;CAC/D,MAAM,SAAS,CAAC,GAAG,MAAM;AAEzB,KAAI,UACF,QAAO,KAAK;EACV,MAAM;EACN,KAAK;EACL,MAAM;EACN,OAAO;EACP,MACE,oBAAC;GAAI,MAAK;GAAM,SAAQ;GAAY,MAAK;aACvC,oBAAC,UAAK,GAAE,6sBAA6sB;IACjtB;EAER,UAAU;EACX,CAAC;AAEJ,QAAO;;AAGT,SAAgB,eACd,EAAE,OAAO,MAAM,OACf,OACA;AACA,KAAI,OAAO,UAAU,WAAY,QAAO,MAAM;EAAE,MAAM;EAAK,GAAG;EAAO,CAAC;AACtE,QACE,oBAAC;EAAK,MAAM;EAAK,GAAI;YAClB;GACI"}
@@ -1,10 +0,0 @@
1
- import * as react_jsx_runtime92 from "react/jsx-runtime";
2
- import { ComponentProps } from "react";
3
-
4
- //#region src/layouts/shared/language-toggle.d.ts
5
- type LanguageSelectProps = ComponentProps<'button'>;
6
- declare function LanguageToggle(props: LanguageSelectProps): React.ReactElement;
7
- declare function LanguageToggleText(props: ComponentProps<'span'>): react_jsx_runtime92.JSX.Element;
8
- //#endregion
9
- export { LanguageSelectProps, LanguageToggle, LanguageToggleText };
10
- //# sourceMappingURL=language-toggle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/language-toggle.tsx"],"sourcesContent":[],"mappings":";;;;KAOY,mBAAA,GAAsB;iBAElB,cAAA,QAAsB,sBAAsB,KAAA,CAAM;iBA6ClD,kBAAA,QAA0B,yBAAsB,mBAAA,CAAA,GAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"language-toggle.js","names":[],"sources":["../../../src/layouts/shared/language-toggle.tsx"],"sourcesContent":["'use client';\nimport type { ComponentProps } from 'react';\nimport { useI18n } from '@/contexts/i18n';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { buttonVariants } from '@/components/ui/button';\n\nexport type LanguageSelectProps = ComponentProps<'button'>;\n\nexport function LanguageToggle(props: LanguageSelectProps): React.ReactElement {\n const context = useI18n();\n if (!context.locales) throw new Error('Missing `<I18nProvider />`');\n\n return (\n <Popover>\n <PopoverTrigger\n aria-label={context.text.chooseLanguage}\n {...props}\n className={cn(\n buttonVariants({\n color: 'ghost',\n className: 'gap-1.5 p-1.5',\n }),\n props.className,\n )}\n >\n {props.children}\n </PopoverTrigger>\n <PopoverContent className=\"flex flex-col overflow-x-hidden p-0\">\n <p className=\"mb-1 p-2 text-xs font-medium text-fd-muted-foreground\">\n {context.text.chooseLanguage}\n </p>\n {context.locales.map((item) => (\n <button\n key={item.locale}\n type=\"button\"\n className={cn(\n 'p-2 text-start text-sm',\n item.locale === context.locale\n ? 'bg-fd-primary/10 font-medium text-fd-primary'\n : 'hover:bg-fd-accent hover:text-fd-accent-foreground',\n )}\n onClick={() => {\n context.onChange?.(item.locale);\n }}\n >\n {item.name}\n </button>\n ))}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function LanguageToggleText(props: ComponentProps<'span'>) {\n const context = useI18n();\n const text = context.locales?.find((item) => item.locale === context.locale)?.name;\n\n return <span {...props}>{text}</span>;\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,eAAe,OAAgD;CAC7E,MAAM,qCAAmB;AACzB,KAAI,CAAC,QAAQ,QAAS,OAAM,IAAI,MAAM,6BAA6B;AAEnE,QACE,qBAAC,sBACC,oBAAC;EACC,cAAY,QAAQ,KAAK;EACzB,GAAI;EACJ,WAAW,GACT,eAAe;GACb,OAAO;GACP,WAAW;GACZ,CAAC,EACF,MAAM,UACP;YAEA,MAAM;GACQ,EACjB,qBAAC;EAAe,WAAU;aACxB,oBAAC;GAAE,WAAU;aACV,QAAQ,KAAK;IACZ,EACH,QAAQ,QAAQ,KAAK,SACpB,oBAAC;GAEC,MAAK;GACL,WAAW,GACT,0BACA,KAAK,WAAW,QAAQ,SACpB,iDACA,qDACL;GACD,eAAe;AACb,YAAQ,WAAW,KAAK,OAAO;;aAGhC,KAAK;KAZD,KAAK,OAaH,CACT;GACa,IACT;;AAId,SAAgB,mBAAmB,OAA+B;CAChE,MAAM,qCAAmB;CACzB,MAAM,OAAO,QAAQ,SAAS,MAAM,SAAS,KAAK,WAAW,QAAQ,OAAO,EAAE;AAE9E,QAAO,oBAAC;EAAK,GAAI;YAAQ;GAAY"}
@@ -1,23 +0,0 @@
1
- import { ButtonProps } from "../../components/ui/button.js";
2
- import * as react_jsx_runtime139 from "react/jsx-runtime";
3
- import { ComponentProps } from "react";
4
-
5
- //#region src/layouts/shared/search-toggle.d.ts
6
- interface SearchToggleProps extends Omit<ComponentProps<'button'>, 'color'>, ButtonProps {
7
- hideIfDisabled?: boolean;
8
- }
9
- declare function SearchToggle({
10
- hideIfDisabled,
11
- size,
12
- color,
13
- ...props
14
- }: SearchToggleProps): react_jsx_runtime139.JSX.Element | null;
15
- declare function LargeSearchToggle({
16
- hideIfDisabled,
17
- ...props
18
- }: ComponentProps<'button'> & {
19
- hideIfDisabled?: boolean;
20
- }): react_jsx_runtime139.JSX.Element | null;
21
- //#endregion
22
- export { LargeSearchToggle, SearchToggle };
23
- //# sourceMappingURL=search-toggle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/search-toggle.tsx"],"sourcesContent":[],"mappings":";;;;;UAQU,iBAAA,SAA0B,KAAK,oCAAoC;;;AAAnE,iBAIM,YAAA,CAJY;EAAA,cAAA;EAAA,IAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EASzB,iBATyB,CAAA,EASR,oBAAA,CAAA,GAAA,CAAA,OAAA,GATQ,IAAA;AAAa,iBAkCzB,iBAAA,CAlCyB;EAAA,cAAA;EAAA,GAAA;CAAA,EAqCtC,cArCsC,CAAA,QAAA,CAAA,GAAA;EAAL,cAAA,CAAA,EAAA,OAAA;CAAyC,CAAA,EAuC5E,oBAAA,CAAA,GAAA,CAAA,OAAA,GAvC4E,IAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-toggle.js","names":[],"sources":["../../../src/layouts/shared/search-toggle.tsx"],"sourcesContent":["'use client';\nimport type { ComponentProps } from 'react';\nimport { Search } from 'lucide-react';\nimport { useSearchContext } from '@/contexts/search';\nimport { useI18n } from '@/contexts/i18n';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { type ButtonProps, buttonVariants } from '@/components/ui/button';\n\ninterface SearchToggleProps extends Omit<ComponentProps<'button'>, 'color'>, ButtonProps {\n hideIfDisabled?: boolean;\n}\n\nexport function SearchToggle({\n hideIfDisabled,\n size = 'icon-sm',\n color = 'ghost',\n ...props\n}: SearchToggleProps) {\n const { setOpenSearch, enabled } = useSearchContext();\n if (hideIfDisabled && !enabled) return null;\n\n return (\n <button\n type=\"button\"\n className={cn(\n buttonVariants({\n size,\n color,\n }),\n props.className,\n )}\n data-search=\"\"\n aria-label=\"Open Search\"\n onClick={() => {\n setOpenSearch(true);\n }}\n >\n <Search />\n </button>\n );\n}\n\nexport function LargeSearchToggle({\n hideIfDisabled,\n ...props\n}: ComponentProps<'button'> & {\n hideIfDisabled?: boolean;\n}) {\n const { enabled, hotKey, setOpenSearch } = useSearchContext();\n const { text } = useI18n();\n if (hideIfDisabled && !enabled) return null;\n\n return (\n <button\n type=\"button\"\n data-search-full=\"\"\n {...props}\n className={cn(\n 'inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground',\n props.className,\n )}\n onClick={() => {\n setOpenSearch(true);\n }}\n >\n <Search className=\"size-4\" />\n {text.search}\n <div className=\"ms-auto inline-flex gap-0.5\">\n {hotKey.map((k, i) => (\n <kbd key={i} className=\"rounded-md border bg-fd-background px-1.5\">\n {k.display}\n </kbd>\n ))}\n </div>\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAgB,aAAa,EAC3B,gBACA,OAAO,WACP,QAAQ,SACR,GAAG,SACiB;CACpB,MAAM,EAAE,eAAe,kDAA8B;AACrD,KAAI,kBAAkB,CAAC,QAAS,QAAO;AAEvC,QACE,oBAAC;EACC,MAAK;EACL,WAAW,GACT,eAAe;GACb;GACA;GACD,CAAC,EACF,MAAM,UACP;EACD,eAAY;EACZ,cAAW;EACX,eAAe;AACb,iBAAc,KAAK;;YAGrB,oBAAC,WAAS;GACH;;AAIb,SAAgB,kBAAkB,EAChC,gBACA,GAAG,SAGF;CACD,MAAM,EAAE,SAAS,QAAQ,wDAAoC;CAC7D,MAAM,EAAE,oCAAkB;AAC1B,KAAI,kBAAkB,CAAC,QAAS,QAAO;AAEvC,QACE,qBAAC;EACC,MAAK;EACL,oBAAiB;EACjB,GAAI;EACJ,WAAW,GACT,wLACA,MAAM,UACP;EACD,eAAe;AACb,iBAAc,KAAK;;;GAGrB,oBAAC,UAAO,WAAU,WAAW;GAC5B,KAAK;GACN,oBAAC;IAAI,WAAU;cACZ,OAAO,KAAK,GAAG,MACd,oBAAC;KAAY,WAAU;eACpB,EAAE;OADK,EAEJ,CACN;KACE;;GACC"}
@@ -1,14 +0,0 @@
1
- import * as react_jsx_runtime138 from "react/jsx-runtime";
2
- import { ComponentProps } from "react";
3
-
4
- //#region src/layouts/shared/theme-toggle.d.ts
5
- declare function ThemeToggle({
6
- className,
7
- mode,
8
- ...props
9
- }: ComponentProps<'div'> & {
10
- mode?: 'light-dark' | 'light-dark-system';
11
- }): react_jsx_runtime138.JSX.Element;
12
- //#endregion
13
- export { ThemeToggle };
14
- //# sourceMappingURL=theme-toggle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/theme-toggle.tsx"],"sourcesContent":[],"mappings":";;;;iBAkBgB,WAAA;;;;GAIb;;IAEF,oBAAA,CAAA,GAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-toggle.js","names":["value"],"sources":["../../../src/layouts/shared/theme-toggle.tsx"],"sourcesContent":["'use client';\nimport { cva } from 'class-variance-authority';\nimport { Airplay, Moon, Sun } from 'lucide-react';\nimport { useTheme } from 'next-themes';\nimport { ComponentProps, useEffect, useState } from 'react';\nimport { cn } from '@hanzo/docs-ui/cn';\n\nconst itemVariants = cva('size-6.5 rounded-full p-1.5 text-fd-muted-foreground', {\n variants: {\n active: {\n true: 'bg-fd-accent text-fd-accent-foreground',\n false: 'text-fd-muted-foreground',\n },\n },\n});\n\nconst full = [['light', Sun] as const, ['dark', Moon] as const, ['system', Airplay] as const];\n\nexport function ThemeToggle({\n className,\n mode = 'light-dark',\n ...props\n}: ComponentProps<'div'> & {\n mode?: 'light-dark' | 'light-dark-system';\n}) {\n const { setTheme, theme, resolvedTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const container = cn('inline-flex items-center rounded-full border p-1', className);\n\n if (mode === 'light-dark') {\n const value = mounted ? resolvedTheme : null;\n\n return (\n <button\n className={container}\n aria-label={`Toggle Theme`}\n onClick={() => setTheme(value === 'light' ? 'dark' : 'light')}\n data-theme-toggle=\"\"\n >\n {full.map(([key, Icon]) => {\n if (key === 'system') return;\n\n return (\n <Icon\n key={key}\n fill=\"currentColor\"\n className={cn(itemVariants({ active: value === key }))}\n />\n );\n })}\n </button>\n );\n }\n\n const value = mounted ? theme : null;\n\n return (\n <div className={container} data-theme-toggle=\"\" {...props}>\n {full.map(([key, Icon]) => (\n <button\n key={key}\n aria-label={key}\n className={cn(itemVariants({ active: value === key }))}\n onClick={() => setTheme(key)}\n >\n <Icon className=\"size-full\" fill=\"currentColor\" />\n </button>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAOA,MAAM,eAAe,IAAI,wDAAwD,EAC/E,UAAU,EACR,QAAQ;CACN,MAAM;CACN,OAAO;CACR,EACF,EACF,CAAC;AAEF,MAAM,OAAO;CAAC,CAAC,SAAS,IAAI;CAAW,CAAC,QAAQ,KAAK;CAAW,CAAC,UAAU,QAAQ;CAAU;AAE7F,SAAgB,YAAY,EAC1B,WACA,OAAO,cACP,GAAG,SAGF;CACD,MAAM,EAAE,UAAU,OAAO,kBAAkB,UAAU;CACrD,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;AAE7C,iBAAgB;AACd,aAAW,KAAK;IACf,EAAE,CAAC;CAEN,MAAM,YAAY,GAAG,oDAAoD,UAAU;AAEnF,KAAI,SAAS,cAAc;EACzB,MAAMA,UAAQ,UAAU,gBAAgB;AAExC,SACE,oBAAC;GACC,WAAW;GACX,cAAY;GACZ,eAAe,SAASA,YAAU,UAAU,SAAS,QAAQ;GAC7D,qBAAkB;aAEjB,KAAK,KAAK,CAAC,KAAK,UAAU;AACzB,QAAI,QAAQ,SAAU;AAEtB,WACE,oBAAC;KAEC,MAAK;KACL,WAAW,GAAG,aAAa,EAAE,QAAQA,YAAU,KAAK,CAAC,CAAC;OAFjD,IAGL;KAEJ;IACK;;CAIb,MAAM,QAAQ,UAAU,QAAQ;AAEhC,QACE,oBAAC;EAAI,WAAW;EAAW,qBAAkB;EAAG,GAAI;YACjD,KAAK,KAAK,CAAC,KAAK,UACf,oBAAC;GAEC,cAAY;GACZ,WAAW,GAAG,aAAa,EAAE,QAAQ,UAAU,KAAK,CAAC,CAAC;GACtD,eAAe,SAAS,IAAI;aAE5B,oBAAC;IAAK,WAAU;IAAY,MAAK;KAAiB;KAL7C,IAME,CACT;GACE"}
package/dist/mdx.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdx.d.ts","names":[],"sources":["../src/mdx.tsx"],"sourcesContent":[],"mappings":";;;;;;;;iBAsBS,KAAA,QACA,kBAAkB;;IAExB,kBAAA,CAAA,GAAA,CAAA;iBAYM,KAAA,QAAa,oBAAoB,oBAAiB,kBAAA,CAAA,GAAA,CAAA;AAjB3B,cAyB1B,oBAvBQ,EAAA;EACa,YAAA,EAAA,mBAAA;EAAlB,aAAA,EAAA,oBAAA;EAEN,iBAAA,EAAA,wBAAA;EAAA,oBAAA,EAAA,2BAAA;EAYM,GAAA,EAAA,CAAA,KAAK,EAaC,cAbD,CAagB,cAbhB,CAAA,EAAA,GAa+B,kBAAA,CAAA,GAAA,CAAA,OAb/B;EAA4B,IAAA,EAAA,WAAA;EAApB,KAAA,EAAA,YAAA;EAAqC,CAAA,EAoB9C,EApB8C,CAoB3C,oBApB2C,CAoBtB,iBApBsB,CAAA,CAAA;EAAA,GAAA,EAAA,YAAA;EAQrD,EAAA,EAAA,CAAA,KAAA,EAcQ,cAWb,CAX4B,kBAW5B,CAAA,EAAA,GAX+C,kBAAA,CAAA,GAAA,CAAA,OAW/C;cAVa,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;EAblB,EAAA,EAAA,CAAA,KAAA,EAchB,cAdgB,CAcD,kBAdC,CAAA,EAAA,GAckB,kBAAA,CAAA,GAAA,CAAA,OAdlB;EAAf,KAAA,EAAA,YAAA;EAA8B,OAAA,EAAA,cAAA;;;EAOR,kBAAA,EAAA,yBAAA;CAArB;AAAH,cAeA,kBAfA,EAAA,OAiBZ,oBAjBY"}