@gentleduck/docs 0.0.13 → 0.0.14

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 (714) hide show
  1. package/dist/alert-DXO4N8gL.js +2 -0
  2. package/dist/alert-DXO4N8gL.js.map +1 -0
  3. package/dist/arrow-CU5T6t_D-Cs2Ykttv.js +2 -0
  4. package/dist/arrow-CU5T6t_D-Cs2Ykttv.js.map +1 -0
  5. package/dist/badge-BaSJ_om8.js +2 -0
  6. package/dist/badge-BaSJ_om8.js.map +1 -0
  7. package/dist/button-BPQ9zanb.js +2 -0
  8. package/dist/button-BPQ9zanb.js.map +1 -0
  9. package/dist/callout-C_FrO3-r.d.ts +21 -0
  10. package/dist/callout-C_FrO3-r.d.ts.map +1 -0
  11. package/dist/callout-WZt8I4Tj.js +2 -0
  12. package/dist/callout-WZt8I4Tj.js.map +1 -0
  13. package/dist/{charts-CvYC8d1e.js → charts-B7Xy2hnG.js} +1 -1
  14. package/dist/{charts-CvYC8d1e.js.map → charts-B7Xy2hnG.js.map} +1 -1
  15. package/dist/{charts-Cyick3Tp.d.ts → charts-D4Uj_gtE.d.ts} +1 -1
  16. package/dist/charts-D4Uj_gtE.d.ts.map +1 -0
  17. package/dist/client.d.ts +53 -54
  18. package/dist/client.js +1 -1
  19. package/dist/{code-block-BNW0BxR6.d.ts → code-block-B-PLa30f.d.ts} +3 -3
  20. package/dist/code-block-B-PLa30f.d.ts.map +1 -0
  21. package/dist/{code-block-uesBcZgM.js → code-block-DzuzMGMr.js} +1 -1
  22. package/dist/{code-block-uesBcZgM.js.map → code-block-DzuzMGMr.js.map} +1 -1
  23. package/dist/{code-block-wrapper-B0GrI7hb.d.ts → code-block-wrapper-BM4jRJHq.d.ts} +3 -3
  24. package/dist/{code-block-wrapper-B0GrI7hb.d.ts.map → code-block-wrapper-BM4jRJHq.d.ts.map} +1 -1
  25. package/dist/{code-block-wrapper-XLG-BrIs.js → code-block-wrapper-BNMwGoo7.js} +1 -1
  26. package/dist/{code-block-wrapper-XLG-BrIs.js.map → code-block-wrapper-BNMwGoo7.js.map} +1 -1
  27. package/dist/code-preview--lq9QGa0.js +2 -0
  28. package/dist/code-preview--lq9QGa0.js.map +1 -0
  29. package/dist/{code-preview-D5Og4Jk3.d.ts → code-preview-DST_xvt7.d.ts} +3 -3
  30. package/dist/{code-preview-D5Og4Jk3.d.ts.map → code-preview-DST_xvt7.d.ts.map} +1 -1
  31. package/dist/{colors-BDTM1-gZ.d.ts → colors-Cx-Rmxum.d.ts} +1 -1
  32. package/dist/{colors-BDTM1-gZ.d.ts.map → colors-Cx-Rmxum.d.ts.map} +1 -1
  33. package/dist/{colors-BUDdXvJ2.js → colors-IvpyMpg7.js} +2 -2
  34. package/dist/{colors-BUDdXvJ2.js.map → colors-IvpyMpg7.js.map} +1 -1
  35. package/dist/command-menu-BY4dKRHx.js +2 -0
  36. package/dist/command-menu-BY4dKRHx.js.map +1 -0
  37. package/dist/command-menu-D4LwSLnr.d.ts +7 -0
  38. package/dist/command-menu-D4LwSLnr.d.ts.map +1 -0
  39. package/dist/{component-preview-D2UaIsBZ.d.ts → component-preview-K8cndl5t.d.ts} +4 -4
  40. package/dist/component-preview-K8cndl5t.d.ts.map +1 -0
  41. package/dist/component-preview-g-CoGwuu.js +2 -0
  42. package/dist/component-preview-g-CoGwuu.js.map +1 -0
  43. package/dist/component-source-BhZijwev.js +3 -0
  44. package/dist/component-source-BhZijwev.js.map +1 -0
  45. package/dist/component-source-Ch59vA1U.d.ts +16 -0
  46. package/dist/component-source-Ch59vA1U.d.ts.map +1 -0
  47. package/dist/components/copy-button.d.ts +4 -0
  48. package/dist/components/copy-button.js +1 -0
  49. package/dist/components/docs/docs-copy-page.d.ts +1 -1
  50. package/dist/components/docs/docs-copy-page.js +1 -1
  51. package/dist/components/docs/docs-pager.d.ts +3 -3
  52. package/dist/components/docs/docs-pager.js +1 -1
  53. package/dist/components/docs/docs-sidebar.d.ts +3 -3
  54. package/dist/components/docs/docs-sidebar.js +1 -1
  55. package/dist/components/docs/docs-toc.d.ts +3 -3
  56. package/dist/components/docs/docs-toc.js +1 -1
  57. package/dist/components/docs/index.d.ts +7 -7
  58. package/dist/components/docs/index.js +1 -1
  59. package/dist/components/icons.d.ts +1 -1
  60. package/dist/components/icons.js +1 -1
  61. package/dist/components/index.d.ts +45 -46
  62. package/dist/components/index.js +1 -1
  63. package/dist/components/layouts/command-menu.d.ts +2 -0
  64. package/dist/components/layouts/command-menu.js +1 -0
  65. package/dist/components/layouts/{site-header/header-shell.d.ts → header-shell.d.ts} +1 -1
  66. package/dist/components/layouts/header-shell.js +1 -0
  67. package/dist/components/layouts/index.d.ts +6 -7
  68. package/dist/components/layouts/index.js +1 -1
  69. package/dist/components/layouts/site-footer.d.ts +2 -0
  70. package/dist/components/layouts/site-footer.js +1 -0
  71. package/dist/components/layouts/site-header.d.ts +3 -0
  72. package/dist/components/layouts/site-header.js +1 -0
  73. package/dist/components/layouts/tailwind-indicator.d.ts +2 -0
  74. package/dist/components/layouts/tailwind-indicator.js +1 -0
  75. package/dist/components/main-nav.d.ts +1 -1
  76. package/dist/components/main-nav.js +1 -1
  77. package/dist/components/mdx/mdx-component-registry.types.d.ts +8 -0
  78. package/dist/components/mdx/mdx-component-registry.types.d.ts.map +1 -0
  79. package/dist/components/mdx/mdx-components/callout.d.ts +1 -1
  80. package/dist/components/mdx/mdx-components/callout.js +1 -1
  81. package/dist/components/mdx/mdx-components/code/code-block-wrapper.d.ts +1 -1
  82. package/dist/components/mdx/mdx-components/code/code-block-wrapper.js +1 -1
  83. package/dist/components/mdx/mdx-components/code/code-block.d.ts +1 -1
  84. package/dist/components/mdx/mdx-components/code/code-block.js +1 -1
  85. package/dist/components/mdx/mdx-components/code/code-preview.d.ts +1 -1
  86. package/dist/components/mdx/mdx-components/code/code-preview.js +1 -1
  87. package/dist/components/mdx/mdx-components/code/component-preview.d.ts +1 -1
  88. package/dist/components/mdx/mdx-components/code/component-preview.js +1 -1
  89. package/dist/components/mdx/mdx-components/code/component-source.d.ts +1 -1
  90. package/dist/components/mdx/mdx-components/code/component-source.js +1 -1
  91. package/dist/components/mdx/mdx-components/code/figcaption-block.d.ts +1 -1
  92. package/dist/components/mdx/mdx-components/code/figcaption-block.js +1 -1
  93. package/dist/components/mdx/mdx-components/code/index.d.ts +15 -12
  94. package/dist/components/mdx/mdx-components/code/index.js +1 -1
  95. package/dist/components/mdx/mdx-components/code/mermaid-block.d.ts +1 -1
  96. package/dist/components/mdx/mdx-components/code/mermaid-block.js +1 -1
  97. package/dist/components/mdx/mdx-components/code/pre-block/index.d.ts +7 -0
  98. package/dist/components/mdx/mdx-components/code/pre-block/index.js +1 -0
  99. package/dist/components/mdx/mdx-components/code/pre-block/pre-block.d.ts +6 -0
  100. package/dist/components/mdx/mdx-components/code/pre-block/pre-block.js +1 -0
  101. package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts +14 -0
  102. package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts.map +1 -0
  103. package/dist/components/mdx/mdx-components/code/pre-block/shell-command.js +1 -0
  104. package/dist/components/mdx/mdx-components/code/pre-block/types.d.ts +5 -0
  105. package/dist/components/mdx/mdx-components/code/span-block.d.ts +2 -2
  106. package/dist/components/mdx/mdx-components/code/span-block.d.ts.map +1 -1
  107. package/dist/components/mdx/mdx-components/components-list.d.ts +3 -3
  108. package/dist/components/mdx/mdx-components/components-list.js +1 -1
  109. package/dist/components/mdx/mdx-components/exalidraw.d.ts +2 -2
  110. package/dist/components/mdx/mdx-components/index.d.ts +24 -21
  111. package/dist/components/mdx/mdx-components/index.js +1 -1
  112. package/dist/components/mdx/mdx-components/table.d.ts +1 -1
  113. package/dist/components/mdx/mdx-components/table.js +1 -1
  114. package/dist/components/mdx/mdx-components/tabs.d.ts +1 -1
  115. package/dist/components/mdx/mdx-components/tabs.js +1 -1
  116. package/dist/components/mdx/mdx-components/typepography.d.ts +1 -1
  117. package/dist/components/mdx/mdx-components/typepography.js +1 -1
  118. package/dist/components/mdx/mdx-components/typography.d.ts +3 -0
  119. package/dist/components/mdx/mdx-components/typography.js +1 -0
  120. package/dist/components/mdx/mdx-components-base.d.ts +119 -0
  121. package/dist/components/mdx/mdx-components-base.d.ts.map +1 -0
  122. package/dist/components/mdx/mdx-components-base.js +1 -0
  123. package/dist/components/mdx/mdx-components-registry.d.ts +171 -0
  124. package/dist/components/mdx/mdx-components-registry.d.ts.map +1 -0
  125. package/dist/components/mdx/mdx-components-registry.js +1 -0
  126. package/dist/components/mdx/mdx-components-ui.d.ts +50 -0
  127. package/dist/components/mdx/mdx-components-ui.d.ts.map +1 -0
  128. package/dist/components/mdx/mdx-components-ui.js +1 -0
  129. package/dist/components/mdx/mdx-icons.js +1 -1
  130. package/dist/components/mdx/mdx-runtime.d.ts +11 -0
  131. package/dist/components/mdx/mdx-runtime.d.ts.map +1 -0
  132. package/dist/components/mdx/mdx-runtime.js +1 -0
  133. package/dist/components/mdx/mdx.d.ts +1 -1
  134. package/dist/components/mdx/mdx.js +1 -1
  135. package/dist/components/mobile-nav.d.ts +1 -1
  136. package/dist/components/mobile-nav.js +1 -1
  137. package/dist/components/mode-toggle.d.ts +1 -1
  138. package/dist/components/mode-toggle.js +1 -1
  139. package/dist/components/page-header.d.ts +1 -1
  140. package/dist/components/page-header.js +1 -1
  141. package/dist/components/providers.d.ts +1 -1
  142. package/dist/components/providers.js +1 -1
  143. package/dist/components/style-switcher.d.ts +2 -0
  144. package/dist/components/style-switcher.js +1 -0
  145. package/dist/components-list-COrPlZeD.d.ts +12 -0
  146. package/dist/{components-list-VYl4HAYt.d.ts.map → components-list-COrPlZeD.d.ts.map} +1 -1
  147. package/dist/{components-list-DiOUxZd_.js → components-list-Cg9ggVyv.js} +2 -2
  148. package/dist/{components-list-DiOUxZd_.js.map → components-list-Cg9ggVyv.js.map} +1 -1
  149. package/dist/context/context.d.ts +1 -1
  150. package/dist/context/context.js +1 -1
  151. package/dist/context/context.types.d.ts +1 -1
  152. package/dist/context/index.d.ts +3 -3
  153. package/dist/context/index.js +1 -1
  154. package/dist/{context-CibrcgaK.js → context-Bu-bPlyW.js} +1 -1
  155. package/dist/{context-CibrcgaK.js.map → context-Bu-bPlyW.js.map} +1 -1
  156. package/dist/{context-C656KJNk.d.ts → context-jLJ1ef7m.d.ts} +4 -4
  157. package/dist/{context-C656KJNk.d.ts.map → context-jLJ1ef7m.d.ts.map} +1 -1
  158. package/dist/{context.types-KUK2rNdz.d.ts → context.types-pTQ85uw2.d.ts} +6 -2
  159. package/dist/context.types-pTQ85uw2.d.ts.map +1 -0
  160. package/dist/copy-button-CCqEsELt.d.ts +20 -0
  161. package/dist/copy-button-CCqEsELt.d.ts.map +1 -0
  162. package/dist/copy-button-Ccbj3Omt.js +2 -0
  163. package/dist/copy-button-Ccbj3Omt.js.map +1 -0
  164. package/dist/create-collection-S3CvffX1-DA20ZU15.js +2 -0
  165. package/dist/create-collection-S3CvffX1-DA20ZU15.js.map +1 -0
  166. package/dist/dialog-68QLl2rI.js +4 -0
  167. package/dist/dialog-68QLl2rI.js.map +1 -0
  168. package/dist/direction-B-anGbxM-BdqxtlGV.js +2 -0
  169. package/dist/direction-B-anGbxM-BdqxtlGV.js.map +1 -0
  170. package/dist/{dist-DfVBUGvk.js → dist-BEBzXlAF.js} +1 -1
  171. package/dist/{dist-DfVBUGvk.js.map → dist-BEBzXlAF.js.map} +1 -1
  172. package/dist/docs-copy-page-CPk7TsfY.js +2 -0
  173. package/dist/docs-copy-page-CPk7TsfY.js.map +1 -0
  174. package/dist/{docs-copy-page-BEtbT7qX.d.ts → docs-copy-page-Dr_nxgGI.d.ts} +3 -3
  175. package/dist/docs-copy-page-Dr_nxgGI.d.ts.map +1 -0
  176. package/dist/{docs-pager-BFx4yEm-.d.ts → docs-pager-B8tRIKlg.d.ts} +6 -6
  177. package/dist/{docs-pager-BFx4yEm-.d.ts.map → docs-pager-B8tRIKlg.d.ts.map} +1 -1
  178. package/dist/docs-pager-mprD1O3r.js +2 -0
  179. package/dist/docs-pager-mprD1O3r.js.map +1 -0
  180. package/dist/docs-sidebar-DY2ybOuM.js +2 -0
  181. package/dist/docs-sidebar-DY2ybOuM.js.map +1 -0
  182. package/dist/docs-sidebar-DfybXB8i.d.ts +43 -0
  183. package/dist/docs-sidebar-DfybXB8i.d.ts.map +1 -0
  184. package/dist/docs-toc-D-y66YCw.d.ts +13 -0
  185. package/dist/docs-toc-D-y66YCw.d.ts.map +1 -0
  186. package/dist/docs-toc-hcordVHk.js +2 -0
  187. package/dist/docs-toc-hcordVHk.js.map +1 -0
  188. package/dist/drawer-kwSiurIF.js +8 -0
  189. package/dist/drawer-kwSiurIF.js.map +1 -0
  190. package/dist/{events-CFVHB4m8.d.ts → events-CQ5HMYtp.d.ts} +1 -1
  191. package/dist/{events-CFVHB4m8.d.ts.map → events-CQ5HMYtp.d.ts.map} +1 -1
  192. package/dist/{events-DHlTM_S_.js → events-Tn9hD65k.js} +1 -1
  193. package/dist/{events-DHlTM_S_.js.map → events-Tn9hD65k.js.map} +1 -1
  194. package/dist/{figcaption-block-DfyvzBoz.d.ts → figcaption-block-BywypQCe.d.ts} +3 -3
  195. package/dist/figcaption-block-BywypQCe.d.ts.map +1 -0
  196. package/dist/figcaption-block-RFNt1OSv.js +2 -0
  197. package/dist/figcaption-block-RFNt1OSv.js.map +1 -0
  198. package/dist/hast-properties-C103K0PZ.js +2 -0
  199. package/dist/hast-properties-C103K0PZ.js.map +1 -0
  200. package/dist/{header-shell-DG6EtZSb.d.ts → header-shell-DkmS4hnL.d.ts} +7 -7
  201. package/dist/header-shell-DkmS4hnL.d.ts.map +1 -0
  202. package/dist/{header-shell-BnhiboVH.js → header-shell-PLI5ZAwI.js} +2 -2
  203. package/dist/header-shell-PLI5ZAwI.js.map +1 -0
  204. package/dist/hooks/index.d.ts +7 -7
  205. package/dist/hooks/index.js +1 -1
  206. package/dist/hooks/use-colors.d.ts +2 -2
  207. package/dist/hooks/use-colors.js +1 -1
  208. package/dist/hooks/use-config.d.ts +1 -1
  209. package/dist/hooks/use-config.js +1 -1
  210. package/dist/hooks/use-lift-mode.d.ts +1 -1
  211. package/dist/hooks/use-lift-mode.js +1 -1
  212. package/dist/hooks/use-meta-colors.d.ts +1 -1
  213. package/dist/hooks/use-meta-colors.js +1 -1
  214. package/dist/hooks/use-mounted.d.ts +1 -1
  215. package/dist/hooks/use-mounted.js +1 -1
  216. package/dist/hooks/use-themes-config.d.ts +1 -1
  217. package/dist/hooks/use-themes-config.js +1 -1
  218. package/dist/icons-DyZHG9BC.d.ts +33 -0
  219. package/dist/icons-DyZHG9BC.d.ts.map +1 -0
  220. package/dist/icons-dASZ3daW.js +2 -0
  221. package/dist/icons-dASZ3daW.js.map +1 -0
  222. package/dist/index-B94w2qPS.d.ts +17 -0
  223. package/dist/index-B94w2qPS.d.ts.map +1 -0
  224. package/dist/{index-C2_c9Mqo.d.ts → index-CdFFVx85.d.ts} +5 -13
  225. package/dist/index-CdFFVx85.d.ts.map +1 -0
  226. package/dist/index.d.ts +12 -11
  227. package/dist/index.js +1 -1
  228. package/dist/lib/charts.d.ts +1 -1
  229. package/dist/lib/charts.js +1 -1
  230. package/dist/lib/colors.d.ts +1 -1
  231. package/dist/lib/colors.js +1 -1
  232. package/dist/lib/events.d.ts +1 -1
  233. package/dist/lib/events.js +1 -1
  234. package/dist/lib/index.d.ts +6 -5
  235. package/dist/lib/index.js +1 -1
  236. package/dist/lib/registry-colors-data.js +1 -1
  237. package/dist/lib/registry-styles.d.ts +1 -1
  238. package/dist/lib/registry-styles.js +1 -1
  239. package/dist/lib/themes.d.ts +1 -1
  240. package/dist/lib/themes.js +1 -1
  241. package/dist/lib/utils.d.ts +1 -1
  242. package/dist/lib/utils.js +1 -1
  243. package/dist/list-navigation-LJg-1TD2-DsfZPowW.js +2 -0
  244. package/dist/list-navigation-LJg-1TD2-DsfZPowW.js.map +1 -0
  245. package/dist/main-nav-vyEIJEhN.d.ts +7 -0
  246. package/dist/main-nav-vyEIJEhN.d.ts.map +1 -0
  247. package/dist/mdx-Cjg68fQA.d.ts +12 -0
  248. package/dist/mdx-Cjg68fQA.d.ts.map +1 -0
  249. package/dist/mdx-D0Kp6lsv.js +2 -0
  250. package/dist/mdx-D0Kp6lsv.js.map +1 -0
  251. package/dist/mdx-components-base-CXqWNN8M.js +2 -0
  252. package/dist/mdx-components-base-CXqWNN8M.js.map +1 -0
  253. package/dist/mdx-components-registry-C12f6wSV.js +2 -0
  254. package/dist/mdx-components-registry-C12f6wSV.js.map +1 -0
  255. package/dist/mdx-components-ui-Cp73cCYd.js +2 -0
  256. package/dist/mdx-components-ui-Cp73cCYd.js.map +1 -0
  257. package/dist/{mdx-icons-BH4zLUw0.js → mdx-icons-Duo8BbOA.js} +1 -1
  258. package/dist/{mdx-icons-BH4zLUw0.js.map → mdx-icons-Duo8BbOA.js.map} +1 -1
  259. package/dist/mdx-runtime-BeG80qPS.js +2 -0
  260. package/dist/mdx-runtime-BeG80qPS.js.map +1 -0
  261. package/dist/mdx-runtime-DjYaVtmv.d.ts +23 -0
  262. package/dist/mdx-runtime-DjYaVtmv.d.ts.map +1 -0
  263. package/dist/{mermaid-block-DOJ68HFE.d.ts → mermaid-block--sl7UWp2.d.ts} +3 -3
  264. package/dist/{mermaid-block-DOJ68HFE.d.ts.map → mermaid-block--sl7UWp2.d.ts.map} +1 -1
  265. package/dist/mermaid-block-zasLfGio.js +12 -0
  266. package/dist/mermaid-block-zasLfGio.js.map +1 -0
  267. package/dist/metadata-plugin-BL84sQM5.d.ts +8 -0
  268. package/dist/metadata-plugin-BL84sQM5.d.ts.map +1 -0
  269. package/dist/metadata-plugin-DA7OesoA.js +2 -0
  270. package/dist/metadata-plugin-DA7OesoA.js.map +1 -0
  271. package/dist/metadata-utils-C_8CcvsG.js +2 -0
  272. package/dist/metadata-utils-C_8CcvsG.js.map +1 -0
  273. package/dist/mobile-nav-CRH545YU.d.ts +7 -0
  274. package/dist/mobile-nav-CRH545YU.d.ts.map +1 -0
  275. package/dist/mobile-nav-rBOCLILt.js +2 -0
  276. package/dist/mobile-nav-rBOCLILt.js.map +1 -0
  277. package/dist/mode-toggle-CNBqTwkg.d.ts +7 -0
  278. package/dist/mode-toggle-CNBqTwkg.d.ts.map +1 -0
  279. package/dist/mode-toggle-DhgB9p1I.js +2 -0
  280. package/dist/mode-toggle-DhgB9p1I.js.map +1 -0
  281. package/dist/mount-CoAqNcc6.js +2 -0
  282. package/dist/mount-CoAqNcc6.js.map +1 -0
  283. package/dist/{nav-B2NAfb21.d.ts → nav-B0m_RJfC.d.ts} +3 -1
  284. package/dist/nav-B0m_RJfC.d.ts.map +1 -0
  285. package/dist/{page-header-h4wXUkUH.d.ts → page-header-BNqr7gpZ.d.ts} +6 -6
  286. package/dist/{page-header-h4wXUkUH.d.ts.map → page-header-BNqr7gpZ.d.ts.map} +1 -1
  287. package/dist/{page-header-D8n3yXQF.js → page-header-TUu9iNwc.js} +1 -1
  288. package/dist/{page-header-D8n3yXQF.js.map → page-header-TUu9iNwc.js.map} +1 -1
  289. package/dist/portal-BNuCvTAR-DDrsnIMA.js +2 -0
  290. package/dist/portal-BNuCvTAR-DDrsnIMA.js.map +1 -0
  291. package/dist/pre-block-Bt_9UuCv.js +2 -0
  292. package/dist/pre-block-Bt_9UuCv.js.map +1 -0
  293. package/dist/pre-block-DvvPHwIA.d.ts +19 -0
  294. package/dist/pre-block-DvvPHwIA.d.ts.map +1 -0
  295. package/dist/{providers-Do13WJMr.d.ts → providers-BI7hm1su.d.ts} +3 -3
  296. package/dist/providers-BI7hm1su.d.ts.map +1 -0
  297. package/dist/providers-BlEJC-ZF.js +2 -0
  298. package/dist/providers-BlEJC-ZF.js.map +1 -0
  299. package/dist/{registry-colors-data-tROJGGvk.js → registry-colors-data-C5Xv_bOz.js} +1 -1
  300. package/dist/{registry-colors-data-tROJGGvk.js.map → registry-colors-data-C5Xv_bOz.js.map} +1 -1
  301. package/dist/{registry-styles-DACce7ra.d.ts → registry-styles-Boe9P1LO.d.ts} +1 -1
  302. package/dist/{registry-styles-DACce7ra.d.ts.map → registry-styles-Boe9P1LO.d.ts.map} +1 -1
  303. package/dist/{registry-styles-Bby12FIz.js → registry-styles-DwoJ9Qa9.js} +1 -1
  304. package/dist/{registry-styles-Bby12FIz.js.map → registry-styles-DwoJ9Qa9.js.map} +1 -1
  305. package/dist/{rehype-mermaid-gkaeJtqn.js → rehype-mermaid-Ctag2Ywx.js} +1 -1
  306. package/dist/{rehype-mermaid-gkaeJtqn.js.map → rehype-mermaid-Ctag2Ywx.js.map} +1 -1
  307. package/dist/{rehype-mermaid-kjf2DmAC.d.ts → rehype-mermaid-DPZ6UzOu.d.ts} +2 -2
  308. package/dist/rehype-mermaid-DPZ6UzOu.d.ts.map +1 -0
  309. package/dist/rehype-npm-command-0W5WqcQY.js +2 -0
  310. package/dist/rehype-npm-command-0W5WqcQY.js.map +1 -0
  311. package/dist/{rehype-npm-command-C7BP6nqi.d.ts → rehype-npm-command-khRZrj_X.d.ts} +2 -2
  312. package/dist/rehype-npm-command-khRZrj_X.d.ts.map +1 -0
  313. package/dist/{rehype-pre-block-source-zKoXg4aL.d.ts → rehype-pre-block-source-0UyWe2hh.d.ts} +2 -2
  314. package/dist/rehype-pre-block-source-0UyWe2hh.d.ts.map +1 -0
  315. package/dist/rehype-pre-block-source-paX7yPQ4.js +2 -0
  316. package/dist/rehype-pre-block-source-paX7yPQ4.js.map +1 -0
  317. package/dist/{rehype-title-TRUGszot.js → rehype-title-CB9V-h9I.js} +1 -1
  318. package/dist/{rehype-title-TRUGszot.js.map → rehype-title-CB9V-h9I.js.map} +1 -1
  319. package/dist/{rehype-title-umwuNb2D.d.ts → rehype-title-CTj31zR2.d.ts} +2 -2
  320. package/dist/rehype-title-CTj31zR2.d.ts.map +1 -0
  321. package/dist/scroll-area-DwfrxxQ_.js +2 -0
  322. package/dist/scroll-area-DwfrxxQ_.js.map +1 -0
  323. package/dist/separator-BL4VUMvX.js +2 -0
  324. package/dist/separator-BL4VUMvX.js.map +1 -0
  325. package/dist/shared-utils-DqLwMUcj-Cs7um3C7.js +2 -0
  326. package/dist/shared-utils-DqLwMUcj-Cs7um3C7.js.map +1 -0
  327. package/dist/shell-command-BQkaAnLc.js +2 -0
  328. package/dist/shell-command-BQkaAnLc.js.map +1 -0
  329. package/dist/site-footer-By5G_jLv.d.ts +8 -0
  330. package/dist/site-footer-By5G_jLv.d.ts.map +1 -0
  331. package/dist/site-footer-DoVwgNqf.js +2 -0
  332. package/dist/site-footer-DoVwgNqf.js.map +1 -0
  333. package/dist/site-header-BiFOBrXI.js +2 -0
  334. package/dist/site-header-BiFOBrXI.js.map +1 -0
  335. package/dist/site-header-lVtvm8N5.d.ts +8 -0
  336. package/dist/site-header-lVtvm8N5.d.ts.map +1 -0
  337. package/dist/slot-B-X2-pKU-DOhFF3E_.js +2 -0
  338. package/dist/slot-B-X2-pKU-DOhFF3E_.js.map +1 -0
  339. package/dist/style-switcher-B0i_slue.d.ts +15 -0
  340. package/dist/style-switcher-B0i_slue.d.ts.map +1 -0
  341. package/dist/style-switcher-BFkgsXlx.js +2 -0
  342. package/dist/style-switcher-BFkgsXlx.js.map +1 -0
  343. package/dist/styles/base.css +12 -12
  344. package/dist/styles/docs.css +14 -1
  345. package/dist/styles/mdx-base.css +27 -0
  346. package/dist/styles/mdx-code.css +142 -0
  347. package/dist/styles/mdx-extensions.css +3 -0
  348. package/dist/styles/mdx-typography.css +27 -0
  349. package/dist/styles/mdx.css +4 -197
  350. package/dist/table-5xep6A9Y.d.ts +22 -0
  351. package/dist/table-5xep6A9Y.d.ts.map +1 -0
  352. package/dist/table-E1lSNeuD.js +2 -0
  353. package/dist/table-E1lSNeuD.js.map +1 -0
  354. package/dist/tabs-BJcH-Dvh.d.ts +43 -0
  355. package/dist/tabs-BJcH-Dvh.d.ts.map +1 -0
  356. package/dist/{tabs-Cvy3-KIA.js → tabs-BonSZ_0a.js} +2 -2
  357. package/dist/tabs-BonSZ_0a.js.map +1 -0
  358. package/dist/tabs-CrZf6_5d.js +2 -0
  359. package/dist/tabs-CrZf6_5d.js.map +1 -0
  360. package/dist/tailwind-indicator-DoT2AWBN.d.ts +7 -0
  361. package/dist/tailwind-indicator-DoT2AWBN.d.ts.map +1 -0
  362. package/dist/{tailwind-indicator-Dt4Bfpta.js → tailwind-indicator-z53_j-ZR.js} +1 -1
  363. package/dist/tailwind-indicator-z53_j-ZR.js.map +1 -0
  364. package/dist/{themes-BzMklu0h.js → themes-DSmnGG_O.js} +2 -2
  365. package/dist/{themes-BzMklu0h.js.map → themes-DSmnGG_O.js.map} +1 -1
  366. package/dist/{themes-Ba683LGu.d.ts → themes-M1nDuQoV.d.ts} +1 -1
  367. package/dist/{themes-Ba683LGu.d.ts.map → themes-M1nDuQoV.d.ts.map} +1 -1
  368. package/dist/{typepography-CLdrb7_b.js → typepography-Bn-ZmO71.js} +1 -1
  369. package/dist/{typepography-CLdrb7_b.js.map → typepography-Bn-ZmO71.js.map} +1 -1
  370. package/dist/{typepography-BdIMY3Y2.d.ts → typepography-D0UONiAu.d.ts} +13 -13
  371. package/dist/{typepography-BdIMY3Y2.d.ts.map → typepography-D0UONiAu.d.ts.map} +1 -1
  372. package/dist/types/index.d.ts +5 -4
  373. package/dist/types/mdx-runtime.d.ts +2 -0
  374. package/dist/types/nav.d.ts +1 -1
  375. package/dist/types/unist.d.ts +2 -1
  376. package/dist/types-DsWNixhq.d.ts +14 -0
  377. package/dist/types-DsWNixhq.d.ts.map +1 -0
  378. package/dist/typography-BcEByhvR.js +0 -0
  379. package/dist/unist-Dtu3x3-k.js +0 -0
  380. package/dist/unist-q3NIH9ya.d.ts +29 -0
  381. package/dist/unist-q3NIH9ya.d.ts.map +1 -0
  382. package/dist/{use-colors-tvFBbu3S.d.ts → use-colors-BF9FOADD.d.ts} +3 -3
  383. package/dist/use-colors-BF9FOADD.d.ts.map +1 -0
  384. package/dist/{use-colors-BSOymnQG.js → use-colors-BiVXxR31.js} +2 -2
  385. package/dist/{use-colors-BSOymnQG.js.map → use-colors-BiVXxR31.js.map} +1 -1
  386. package/dist/{use-config-DViAkW1f.js → use-config-CkoOe8Fw.js} +1 -1
  387. package/dist/{use-config-DViAkW1f.js.map → use-config-CkoOe8Fw.js.map} +1 -1
  388. package/dist/{use-config-DlgXRPaN.d.ts → use-config-DKOEW76q.d.ts} +4 -4
  389. package/dist/{use-config-DlgXRPaN.d.ts.map → use-config-DKOEW76q.d.ts.map} +1 -1
  390. package/dist/{use-lift-mode-CqcC0vis.js → use-lift-mode-CRK6jO9I.js} +1 -1
  391. package/dist/{use-lift-mode-CqcC0vis.js.map → use-lift-mode-CRK6jO9I.js.map} +1 -1
  392. package/dist/{use-lift-mode-DEELjsRA.d.ts → use-lift-mode-DAQuqoIt.d.ts} +1 -1
  393. package/dist/use-lift-mode-DAQuqoIt.d.ts.map +1 -0
  394. package/dist/{use-meta-colors-CkNbJTgD.d.ts → use-meta-colors-Dlzg21A8.d.ts} +1 -1
  395. package/dist/use-meta-colors-Dlzg21A8.d.ts.map +1 -0
  396. package/dist/{use-meta-colors-B7HIXaHI.js → use-meta-colors-ye3z03RL.js} +2 -2
  397. package/dist/{use-meta-colors-B7HIXaHI.js.map → use-meta-colors-ye3z03RL.js.map} +1 -1
  398. package/dist/{use-mounted-gdBJPRp0.js → use-mounted-Bi7J0dBb.js} +1 -1
  399. package/dist/{use-mounted-gdBJPRp0.js.map → use-mounted-Bi7J0dBb.js.map} +1 -1
  400. package/dist/{use-mounted-BtOuPtMk.d.ts → use-mounted-CqC1Le-n.d.ts} +1 -1
  401. package/dist/use-mounted-CqC1Le-n.d.ts.map +1 -0
  402. package/dist/use-themes-config-I8d5A3YB.d.ts +14 -0
  403. package/dist/use-themes-config-I8d5A3YB.d.ts.map +1 -0
  404. package/dist/{use-themes-config-BRcxOF-M.js → use-themes-config-t4NBMHl1.js} +2 -2
  405. package/dist/{use-themes-config-BRcxOF-M.js.map → use-themes-config-t4NBMHl1.js.map} +1 -1
  406. package/dist/{utils-gls3XPIE.d.ts → utils-BGWVtLBe.d.ts} +1 -1
  407. package/dist/utils-BGWVtLBe.d.ts.map +1 -0
  408. package/dist/utils-CN0aIGfJ.js +2 -0
  409. package/dist/utils-CN0aIGfJ.js.map +1 -0
  410. package/dist/velite/browser.d.ts +2 -1
  411. package/dist/velite/browser.d.ts.map +1 -1
  412. package/dist/velite/browser.js +1 -1
  413. package/dist/velite/browser.js.map +1 -1
  414. package/dist/velite/config.d.ts.map +1 -1
  415. package/dist/velite/config.js +1 -1
  416. package/dist/velite/config.js.map +1 -1
  417. package/dist/velite/index.d.ts +8 -8
  418. package/dist/velite/index.js +1 -1
  419. package/dist/velite/plugins/hast-properties.d.ts +9 -0
  420. package/dist/velite/plugins/hast-properties.d.ts.map +1 -0
  421. package/dist/velite/plugins/hast-properties.js +1 -0
  422. package/dist/velite/plugins/index.d.ts +8 -8
  423. package/dist/velite/plugins/index.js +1 -1
  424. package/dist/velite/plugins/metadata-plugin.d.ts +4 -4
  425. package/dist/velite/plugins/metadata-plugin.js +1 -1
  426. package/dist/velite/plugins/metadata-utils.d.ts +9 -0
  427. package/dist/velite/plugins/metadata-utils.d.ts.map +1 -0
  428. package/dist/velite/plugins/metadata-utils.js +1 -0
  429. package/dist/velite/plugins/rehype-mermaid.d.ts +3 -3
  430. package/dist/velite/plugins/rehype-mermaid.js +1 -1
  431. package/dist/velite/plugins/rehype-npm-command.d.ts +3 -3
  432. package/dist/velite/plugins/rehype-npm-command.js +1 -1
  433. package/dist/velite/plugins/rehype-pre-block-source.d.ts +3 -3
  434. package/dist/velite/plugins/rehype-pre-block-source.js +1 -1
  435. package/dist/velite/plugins/rehype-title.d.ts +3 -3
  436. package/dist/velite/plugins/rehype-title.js +1 -1
  437. package/dist/visibility-hidden-CAHx9RLp-CN32k1Im.js +2 -0
  438. package/dist/visibility-hidden-CAHx9RLp-CN32k1Im.js.map +1 -0
  439. package/package.json +14 -16
  440. package/src/client.ts +0 -0
  441. package/src/components/copy-button.tsx +54 -0
  442. package/src/components/docs/docs-copy-page.tsx +161 -46
  443. package/src/components/docs/docs-pager.tsx +22 -12
  444. package/src/components/docs/docs-sidebar.tsx +194 -29
  445. package/src/components/docs/docs-toc.tsx +229 -54
  446. package/src/components/docs/index.ts +0 -0
  447. package/src/components/icons.tsx +13 -25
  448. package/src/components/index.ts +1 -1
  449. package/src/components/layouts/command-menu.tsx +491 -0
  450. package/src/components/layouts/{site-header/header-shell.tsx → header-shell.tsx} +2 -2
  451. package/src/components/layouts/{site-footer/index.tsx → site-footer.tsx} +10 -7
  452. package/src/components/layouts/site-header.tsx +178 -0
  453. package/src/components/main-nav.tsx +3 -2
  454. package/src/components/mdx/ARCHITECTURE.md +61 -0
  455. package/src/components/mdx/mdx-component-registry.types.ts +5 -0
  456. package/src/components/mdx/mdx-components/callout.tsx +10 -10
  457. package/src/components/mdx/mdx-components/code/code-preview.tsx +7 -4
  458. package/src/components/mdx/mdx-components/code/component-preview.tsx +59 -27
  459. package/src/components/mdx/mdx-components/code/component-source.tsx +49 -21
  460. package/src/components/mdx/mdx-components/code/figcaption-block.tsx +2 -8
  461. package/src/components/mdx/mdx-components/code/mermaid-block.tsx +5 -3
  462. package/src/components/mdx/mdx-components/code/pre-block/index.ts +1 -0
  463. package/src/components/mdx/mdx-components/code/pre-block/pre-block.tsx +52 -0
  464. package/src/components/mdx/mdx-components/code/{pre-block.tsx → pre-block/shell-command.tsx} +4 -58
  465. package/src/components/mdx/mdx-components/code/pre-block/types.ts +10 -0
  466. package/src/components/mdx/mdx-components/components-list.tsx +0 -0
  467. package/src/components/mdx/mdx-components/index.ts +1 -2
  468. package/src/components/mdx/mdx-components/table.tsx +36 -27
  469. package/src/components/mdx/mdx-components/tabs.tsx +5 -2
  470. package/src/components/mdx/mdx-components/typography.tsx +1 -0
  471. package/src/components/mdx/mdx-components-base.tsx +81 -0
  472. package/src/components/mdx/mdx-components-registry.ts +8 -0
  473. package/src/components/mdx/mdx-components-ui.tsx +21 -0
  474. package/src/components/mdx/mdx-icons.ts +0 -0
  475. package/src/components/mdx/mdx-runtime.ts +10 -0
  476. package/src/components/mdx/mdx.tsx +3 -103
  477. package/src/components/mobile-nav.tsx +57 -22
  478. package/src/components/mode-toggle.tsx +4 -4
  479. package/src/components/providers.tsx +0 -1
  480. package/src/components/{themes/style-switcher.tsx → style-switcher.tsx} +5 -2
  481. package/src/context/context.tsx +0 -0
  482. package/src/context/context.types.ts +4 -0
  483. package/src/context/index.ts +0 -0
  484. package/src/hooks/index.ts +0 -0
  485. package/src/lib/index.ts +0 -0
  486. package/src/lib/registry-styles.ts +0 -0
  487. package/src/lib/utils.ts +7 -1
  488. package/src/styles/base.css +12 -12
  489. package/src/styles/docs.css +14 -1
  490. package/src/styles/mdx-base.css +27 -0
  491. package/src/styles/mdx-code.css +142 -0
  492. package/src/styles/mdx-extensions.css +3 -0
  493. package/src/styles/mdx-typography.css +27 -0
  494. package/src/styles/mdx.css +4 -197
  495. package/src/types/index.ts +1 -0
  496. package/src/types/mdx-runtime.ts +21 -0
  497. package/src/types/nav.ts +2 -0
  498. package/src/types/unist.ts +5 -19
  499. package/src/velite/browser.ts +1 -0
  500. package/src/velite/config.ts +56 -38
  501. package/src/velite/index.ts +0 -0
  502. package/src/velite/plugins/hast-properties.ts +12 -0
  503. package/src/velite/plugins/index.ts +0 -0
  504. package/src/velite/plugins/metadata-plugin.ts +14 -11
  505. package/src/velite/plugins/metadata-utils.ts +14 -0
  506. package/src/velite/plugins/rehype-mermaid.ts +0 -0
  507. package/src/velite/plugins/rehype-npm-command.ts +24 -22
  508. package/src/velite/plugins/rehype-pre-block-source.ts +6 -4
  509. package/src/velite/plugins/rehype-title.ts +0 -0
  510. package/src/velite/utils.ts +0 -0
  511. package/dist/button-Ao0Egplu.js +0 -2
  512. package/dist/button-Ao0Egplu.js.map +0 -1
  513. package/dist/callout-C1MveMtC.d.ts +0 -20
  514. package/dist/callout-C1MveMtC.d.ts.map +0 -1
  515. package/dist/callout-ChU_uu_5.js +0 -2
  516. package/dist/callout-ChU_uu_5.js.map +0 -1
  517. package/dist/charts-Cyick3Tp.d.ts.map +0 -1
  518. package/dist/chunk-BPpoHddQ-DLGSIJHp.js +0 -2
  519. package/dist/chunk-BPpoHddQ-DLGSIJHp.js.map +0 -1
  520. package/dist/code-block-BNW0BxR6.d.ts.map +0 -1
  521. package/dist/code-preview-DTVYDNkK.js +0 -2
  522. package/dist/code-preview-DTVYDNkK.js.map +0 -1
  523. package/dist/command-2PGkRCUM.js +0 -2
  524. package/dist/command-2PGkRCUM.js.map +0 -1
  525. package/dist/command-menu-Db8sDulu.js +0 -2
  526. package/dist/command-menu-Db8sDulu.js.map +0 -1
  527. package/dist/command-menu-DtpwoKe8.d.ts +0 -7
  528. package/dist/command-menu-DtpwoKe8.d.ts.map +0 -1
  529. package/dist/component-preview-D2UaIsBZ.d.ts.map +0 -1
  530. package/dist/component-preview-InhzN4h1.js +0 -2
  531. package/dist/component-preview-InhzN4h1.js.map +0 -1
  532. package/dist/component-source-CLa1Z_vJ.d.ts +0 -17
  533. package/dist/component-source-CLa1Z_vJ.d.ts.map +0 -1
  534. package/dist/component-source-DtSz1ZSB.js +0 -5
  535. package/dist/component-source-DtSz1ZSB.js.map +0 -1
  536. package/dist/components/copy-button/copy-button.d.ts +0 -5
  537. package/dist/components/copy-button/copy-button.js +0 -1
  538. package/dist/components/copy-button/copy-button.types.d.ts +0 -4
  539. package/dist/components/copy-button/index.d.ts +0 -6
  540. package/dist/components/copy-button/index.js +0 -1
  541. package/dist/components/layouts/command-menu/command-menu.d.ts +0 -2
  542. package/dist/components/layouts/command-menu/command-menu.js +0 -1
  543. package/dist/components/layouts/command-menu/index.d.ts +0 -3
  544. package/dist/components/layouts/command-menu/index.js +0 -1
  545. package/dist/components/layouts/site-footer/index.d.ts +0 -2
  546. package/dist/components/layouts/site-footer/index.js +0 -1
  547. package/dist/components/layouts/site-header/header-shell.js +0 -1
  548. package/dist/components/layouts/site-header/index.d.ts +0 -3
  549. package/dist/components/layouts/site-header/index.js +0 -1
  550. package/dist/components/layouts/tailwind-indicator/index.d.ts +0 -2
  551. package/dist/components/layouts/tailwind-indicator/index.js +0 -1
  552. package/dist/components/mdx/mdx-components/code/pre-block.d.ts +0 -4
  553. package/dist/components/mdx/mdx-components/code/pre-block.js +0 -1
  554. package/dist/components/mdx/mdx-components/framework-docs.d.ts +0 -2
  555. package/dist/components/mdx/mdx-components/framework-docs.js +0 -1
  556. package/dist/components/themes/index.d.ts +0 -4
  557. package/dist/components/themes/index.js +0 -1
  558. package/dist/components/themes/style-switcher.d.ts +0 -3
  559. package/dist/components/themes/style-switcher.js +0 -1
  560. package/dist/components-list-VYl4HAYt.d.ts +0 -12
  561. package/dist/context.types-KUK2rNdz.d.ts.map +0 -1
  562. package/dist/copy-button-DSpL6XPh.d.ts +0 -21
  563. package/dist/copy-button-DSpL6XPh.d.ts.map +0 -1
  564. package/dist/copy-button-DZizVQ8G.js +0 -2
  565. package/dist/copy-button-DZizVQ8G.js.map +0 -1
  566. package/dist/copy-button.types-CGEbiMXO.d.ts +0 -29
  567. package/dist/copy-button.types-CGEbiMXO.d.ts.map +0 -1
  568. package/dist/dialog-BJXRFGlQ.js +0 -31
  569. package/dist/dialog-BJXRFGlQ.js.map +0 -1
  570. package/dist/docs-copy-page-BEtbT7qX.d.ts.map +0 -1
  571. package/dist/docs-copy-page-DZDkcR09.js +0 -3
  572. package/dist/docs-copy-page-DZDkcR09.js.map +0 -1
  573. package/dist/docs-pager-Dr6dooWP.js +0 -2
  574. package/dist/docs-pager-Dr6dooWP.js.map +0 -1
  575. package/dist/docs-sidebar-CWDyV0Rj.d.ts +0 -30
  576. package/dist/docs-sidebar-CWDyV0Rj.d.ts.map +0 -1
  577. package/dist/docs-sidebar-MtBCNnEG.js +0 -2
  578. package/dist/docs-sidebar-MtBCNnEG.js.map +0 -1
  579. package/dist/docs-toc-B7RS1k0Z.d.ts +0 -13
  580. package/dist/docs-toc-B7RS1k0Z.d.ts.map +0 -1
  581. package/dist/docs-toc-Czi8gMJf.js +0 -2
  582. package/dist/docs-toc-Czi8gMJf.js.map +0 -1
  583. package/dist/drawer-DVVyDJ2D.js +0 -8
  584. package/dist/drawer-DVVyDJ2D.js.map +0 -1
  585. package/dist/dropdown-menu-Cf4PnvE4.js +0 -2
  586. package/dist/dropdown-menu-Cf4PnvE4.js.map +0 -1
  587. package/dist/figcaption-block-7FWvsSXj.js +0 -2
  588. package/dist/figcaption-block-7FWvsSXj.js.map +0 -1
  589. package/dist/figcaption-block-DfyvzBoz.d.ts.map +0 -1
  590. package/dist/framework-docs-BQx_CG7u.js +0 -2
  591. package/dist/framework-docs-BQx_CG7u.js.map +0 -1
  592. package/dist/framework-docs-BuqO4yKf.d.ts +0 -13
  593. package/dist/framework-docs-BuqO4yKf.d.ts.map +0 -1
  594. package/dist/header-shell-BnhiboVH.js.map +0 -1
  595. package/dist/header-shell-DG6EtZSb.d.ts.map +0 -1
  596. package/dist/icons-Bp6-jojO.d.ts +0 -30
  597. package/dist/icons-Bp6-jojO.d.ts.map +0 -1
  598. package/dist/icons-CiCgiCYy.js +0 -2
  599. package/dist/icons-CiCgiCYy.js.map +0 -1
  600. package/dist/index-BgMLDj-T.d.ts +0 -8
  601. package/dist/index-BgMLDj-T.d.ts.map +0 -1
  602. package/dist/index-Bler93Rv.d.ts +0 -7
  603. package/dist/index-Bler93Rv.d.ts.map +0 -1
  604. package/dist/index-C2_c9Mqo.d.ts.map +0 -1
  605. package/dist/index-DWZV2KV9.d.ts +0 -8
  606. package/dist/index-DWZV2KV9.d.ts.map +0 -1
  607. package/dist/main-nav-Ci0i9b05.js +0 -2
  608. package/dist/main-nav-Ci0i9b05.js.map +0 -1
  609. package/dist/main-nav-DdJSFX9R.d.ts +0 -7
  610. package/dist/main-nav-DdJSFX9R.d.ts.map +0 -1
  611. package/dist/mdx-Bc39yJEk.js +0 -2
  612. package/dist/mdx-Bc39yJEk.js.map +0 -1
  613. package/dist/mdx-CKRU84WS.d.ts +0 -12
  614. package/dist/mdx-CKRU84WS.d.ts.map +0 -1
  615. package/dist/mermaid-block-BlCALvQ4.js +0 -13
  616. package/dist/mermaid-block-BlCALvQ4.js.map +0 -1
  617. package/dist/metadata-plugin-OKcE6Xsj.d.ts +0 -7
  618. package/dist/metadata-plugin-OKcE6Xsj.d.ts.map +0 -1
  619. package/dist/metadata-plugin-tEixstEj.js +0 -2
  620. package/dist/metadata-plugin-tEixstEj.js.map +0 -1
  621. package/dist/mobile-nav-BAkYO55-.js +0 -2
  622. package/dist/mobile-nav-BAkYO55-.js.map +0 -1
  623. package/dist/mobile-nav-wLU7upp-.d.ts +0 -7
  624. package/dist/mobile-nav-wLU7upp-.d.ts.map +0 -1
  625. package/dist/mode-toggle-B4gU5bK6.d.ts +0 -7
  626. package/dist/mode-toggle-B4gU5bK6.d.ts.map +0 -1
  627. package/dist/mode-toggle-BFNnk0Th.js +0 -2
  628. package/dist/mode-toggle-BFNnk0Th.js.map +0 -1
  629. package/dist/mount-CNbhMJe--D9ALOndF.js +0 -2
  630. package/dist/mount-CNbhMJe--D9ALOndF.js.map +0 -1
  631. package/dist/nav-B2NAfb21.d.ts.map +0 -1
  632. package/dist/popover-DBuHxfGT.js +0 -2
  633. package/dist/popover-DBuHxfGT.js.map +0 -1
  634. package/dist/pre-block-C2YQ_YU_.js +0 -2
  635. package/dist/pre-block-C2YQ_YU_.js.map +0 -1
  636. package/dist/pre-block-DMxLF2Tm.d.ts +0 -33
  637. package/dist/pre-block-DMxLF2Tm.d.ts.map +0 -1
  638. package/dist/presence-DKRzzG6_-DV_YtF92.js +0 -2
  639. package/dist/presence-DKRzzG6_-DV_YtF92.js.map +0 -1
  640. package/dist/providers-CFfgRc3G.js +0 -2
  641. package/dist/providers-CFfgRc3G.js.map +0 -1
  642. package/dist/providers-Do13WJMr.d.ts.map +0 -1
  643. package/dist/rehype-mermaid-kjf2DmAC.d.ts.map +0 -1
  644. package/dist/rehype-npm-command-C7BP6nqi.d.ts.map +0 -1
  645. package/dist/rehype-npm-command-O7ik2lKv.js +0 -2
  646. package/dist/rehype-npm-command-O7ik2lKv.js.map +0 -1
  647. package/dist/rehype-pre-block-source-D8t3NCnT.js +0 -2
  648. package/dist/rehype-pre-block-source-D8t3NCnT.js.map +0 -1
  649. package/dist/rehype-pre-block-source-zKoXg4aL.d.ts.map +0 -1
  650. package/dist/rehype-title-umwuNb2D.d.ts.map +0 -1
  651. package/dist/scroll-area-Bj8-58Fz.js +0 -2
  652. package/dist/scroll-area-Bj8-58Fz.js.map +0 -1
  653. package/dist/separator-t0JrmyLj.js +0 -2
  654. package/dist/separator-t0JrmyLj.js.map +0 -1
  655. package/dist/site-footer-BZQcOAVy.js +0 -2
  656. package/dist/site-footer-BZQcOAVy.js.map +0 -1
  657. package/dist/site-header-DH4ChrKl.js +0 -2
  658. package/dist/site-header-DH4ChrKl.js.map +0 -1
  659. package/dist/style-switcher-BvF4n8f4.js +0 -2
  660. package/dist/style-switcher-BvF4n8f4.js.map +0 -1
  661. package/dist/style-switcher-gHkRCCrl.d.ts +0 -25
  662. package/dist/style-switcher-gHkRCCrl.d.ts.map +0 -1
  663. package/dist/table-Cu1wFi9V.js +0 -2
  664. package/dist/table-Cu1wFi9V.js.map +0 -1
  665. package/dist/table-DAVFXCAf.d.ts +0 -10
  666. package/dist/table-DAVFXCAf.d.ts.map +0 -1
  667. package/dist/tabs-33zMuIHi.d.ts +0 -68
  668. package/dist/tabs-33zMuIHi.d.ts.map +0 -1
  669. package/dist/tabs-Cvy3-KIA.js.map +0 -1
  670. package/dist/tabs-jsmxQQW0.js +0 -2
  671. package/dist/tabs-jsmxQQW0.js.map +0 -1
  672. package/dist/tailwind-indicator-Dt4Bfpta.js.map +0 -1
  673. package/dist/unist-DN6buKAy.d.ts +0 -44
  674. package/dist/unist-DN6buKAy.d.ts.map +0 -1
  675. package/dist/use-colors-tvFBbu3S.d.ts.map +0 -1
  676. package/dist/use-lift-mode-DEELjsRA.d.ts.map +0 -1
  677. package/dist/use-meta-colors-CkNbJTgD.d.ts.map +0 -1
  678. package/dist/use-mounted-BtOuPtMk.d.ts.map +0 -1
  679. package/dist/use-themes-config-Dtk_egkh.d.ts +0 -14
  680. package/dist/use-themes-config-Dtk_egkh.d.ts.map +0 -1
  681. package/dist/utils-Ck5VSddf.js +0 -2
  682. package/dist/utils-Ck5VSddf.js.map +0 -1
  683. package/dist/utils-gls3XPIE.d.ts.map +0 -1
  684. package/src/components/copy-button/copy-button.tsx +0 -88
  685. package/src/components/copy-button/copy-button.types.ts +0 -17
  686. package/src/components/copy-button/index.ts +0 -2
  687. package/src/components/layouts/command-menu/command-menu.tsx +0 -166
  688. package/src/components/layouts/command-menu/index.ts +0 -1
  689. package/src/components/layouts/site-header/index.tsx +0 -127
  690. package/src/components/mdx/mdx-components/framework-docs.tsx +0 -20
  691. package/src/components/themes/index.ts +0 -1
  692. /package/dist/{code-CRijMbf8.js → code-B8oMaOlf.js} +0 -0
  693. /package/dist/{command-menu-DJNwkpf0.js → components/mdx/mdx-component-registry.types.js} +0 -0
  694. /package/dist/components/{copy-button/copy-button.types.js → mdx/mdx-components/code/pre-block/types.js} +0 -0
  695. /package/dist/{context-DAoDXLlH.js → context-BC4O8IkN.js} +0 -0
  696. /package/dist/{context.types-XX-41b7E.js → context.types-xqn674mu.js} +0 -0
  697. /package/dist/{copy-button-BKOhlef4.js → direction-BgdQqJSh.js} +0 -0
  698. /package/dist/{copy-button.types-B9s047di.js → docs-BxKlMynn.js} +0 -0
  699. /package/dist/{index-2DqdDmQN.d.ts → index-2ODhJ4PF.d.ts} +0 -0
  700. /package/dist/{index-CGglgRYd.d.ts → index-BCvK1fdV.d.ts} +0 -0
  701. /package/dist/{index-CX84Uo3j.d.ts → index-BOXZdgrl.d.ts} +0 -0
  702. /package/dist/{index-DOo6j0yP.d.ts → index-CDXWDYLH.d.ts} +0 -0
  703. /package/dist/{index-DUfvqU8v.d.ts → index-CEmd2iJF.d.ts} +0 -0
  704. /package/dist/{index-DlpwrdjG.d.ts → index-CMgWXPTi.d.ts} +0 -0
  705. /package/dist/{index-DxmiBoAj.d.ts → index-J4eIjbSW.d.ts} +0 -0
  706. /package/dist/{index-DzZbxTJ5.d.ts → index-PiDlmF8F.d.ts} +0 -0
  707. /package/dist/{docs-BXWvl6Zg.js → layouts-CZzkzPUj.js} +0 -0
  708. /package/dist/{layouts-MJSz-Ia5.js → mdx-components-DVXN21iW.js} +0 -0
  709. /package/dist/{mdx-components-Bvz2OZPf.js → mdx-runtime-8ZPauNCe.js} +0 -0
  710. /package/dist/{nav-CVNxjtXM.js → nav-n66GykpT.js} +0 -0
  711. /package/dist/{themes-k-j3m6gv.js → pre-block-B4y5yM69.js} +0 -0
  712. /package/dist/{unist-C_C48flD.js → types/mdx-runtime.js} +0 -0
  713. /package/dist/{index-MPFNOj9E.d.ts → typography-BjwZeImL.d.ts} +0 -0
  714. /package/src/components/layouts/{tailwind-indicator/index.tsx → tailwind-indicator.tsx} +0 -0
@@ -3,13 +3,29 @@
3
3
  import { type DocsConfig, useDocsConfig } from '@duck-docs/context'
4
4
  import type { SidebarNavItem } from '@duck-docs/types/nav'
5
5
  import { cn } from '@gentleduck/libs/cn'
6
+ import { ChevronRight } from 'lucide-react'
6
7
  import Link from 'next/link'
7
8
  import { usePathname } from 'next/navigation'
9
+ import * as React from 'react'
8
10
 
9
11
  export interface DocsSidebarNavProps {
10
12
  config?: DocsConfig
11
13
  }
12
14
 
15
+ function isPathActive(pathname: string, href: string) {
16
+ return pathname === href || (href !== '/docs' && pathname.startsWith(`${href}/`))
17
+ }
18
+
19
+ function isPathCurrent(pathname: string, href: string) {
20
+ return pathname === href
21
+ }
22
+
23
+ function hasActivePath(item: SidebarNavItem, pathname: string | null): boolean {
24
+ if (!pathname) return false
25
+ if (item.href && isPathActive(pathname, item.href)) return true
26
+ return Boolean(item.items?.some((child) => hasActivePath(child, pathname)))
27
+ }
28
+
13
29
  export function DocsSidebarNav({ config }: DocsSidebarNavProps) {
14
30
  const pathname = usePathname()
15
31
  const fallbackConfig = useDocsConfig()
@@ -31,7 +47,7 @@ export function DocsSidebarNav({ config }: DocsSidebarNavProps) {
31
47
  // Memoized category component to prevent unnecessary re-renders
32
48
  const CategoryItem = ({ item, pathname }: { item: SidebarNavItem; pathname: string | null }) => {
33
49
  return (
34
- <div className="mb-2 flex flex-col gap-1">
50
+ <div className="mb-2 flex flex-col">
35
51
  <div className="flex h-[36px] w-full items-center justify-between text-start font-semibold text-sm [&>div]:w-full [&>div]:justify-between">
36
52
  {item.title}
37
53
  {item.label && (
@@ -41,7 +57,9 @@ const CategoryItem = ({ item, pathname }: { item: SidebarNavItem; pathname: stri
41
57
  )}
42
58
  </div>
43
59
  <div className="border-l">
44
- {item?.items?.length && <DocsSidebarNavItems items={item.items} pathname={pathname} />}
60
+ {item?.items?.length && (
61
+ <DocsSidebarNavItems accordionDefault={Boolean(item.collapsible)} items={item.items} pathname={pathname} />
62
+ )}
45
63
  </div>
46
64
  </div>
47
65
  )
@@ -51,55 +69,202 @@ interface DocsSidebarNavItemsProps {
51
69
  items: SidebarNavItem[]
52
70
  pathname: string | null
53
71
  className?: string
72
+ depth?: number
73
+ accordionDefault?: boolean
54
74
  }
55
75
 
56
- export function DocsSidebarNavItems({ items, pathname }: DocsSidebarNavItemsProps) {
76
+ export function DocsSidebarNavItems({
77
+ items,
78
+ pathname,
79
+ className,
80
+ depth = 0,
81
+ accordionDefault = false,
82
+ }: DocsSidebarNavItemsProps) {
83
+ const activeAccordionIndex = React.useMemo(
84
+ () =>
85
+ items.findIndex((item) => {
86
+ const hasChildren = Boolean(item.items?.length)
87
+ const isAccordionItem = hasChildren && Boolean(item.collapsible ?? accordionDefault)
88
+ return isAccordionItem && hasActivePath(item, pathname)
89
+ }),
90
+ [items, pathname, accordionDefault],
91
+ )
92
+
57
93
  return (
58
94
  items?.length && (
59
- <ul>
95
+ <ul className={cn(depth > 0 && 'ml-3 border-l', className)}>
60
96
  {items.map((item, index) => (
61
- <DocsSidebarNavItem item={item} key={index} pathname={pathname} />
97
+ <DocsSidebarNavItem
98
+ accordionDefault={accordionDefault}
99
+ depth={depth}
100
+ forceClose={activeAccordionIndex !== -1 && activeAccordionIndex !== index}
101
+ forceOpen={activeAccordionIndex === index}
102
+ item={item}
103
+ key={index}
104
+ pathname={pathname}
105
+ />
62
106
  ))}
63
107
  </ul>
64
108
  )
65
109
  )
66
110
  }
67
111
 
68
- export function DocsSidebarNavItem({ item, pathname }: { item: SidebarNavItem; pathname: string | null }) {
112
+ export function DocsSidebarNavItem({
113
+ item,
114
+ pathname,
115
+ depth = 0,
116
+ accordionDefault = false,
117
+ forceOpen = false,
118
+ forceClose = false,
119
+ }: {
120
+ item: SidebarNavItem
121
+ pathname: string | null
122
+ depth?: number
123
+ accordionDefault?: boolean
124
+ forceOpen?: boolean
125
+ forceClose?: boolean
126
+ }) {
127
+ const hasChildren = Boolean(item.items?.length)
128
+ const isAccordionItem = hasChildren && Boolean(item.collapsible ?? accordionDefault)
129
+ const isCurrent = Boolean(pathname && item.href && isPathCurrent(pathname, item.href))
130
+ const isActiveBranch = hasActivePath(item, pathname)
131
+ const isActive = isCurrent || (hasChildren && isActiveBranch)
132
+ const [isOpen, setIsOpen] = React.useState(() => {
133
+ if (!isAccordionItem) return true
134
+ return isActiveBranch || Boolean(item.defaultOpen)
135
+ })
136
+
137
+ React.useEffect(() => {
138
+ if (!isAccordionItem) return
139
+ if (forceOpen || isActiveBranch) {
140
+ setIsOpen(true)
141
+ return
142
+ }
143
+ if (forceClose) {
144
+ setIsOpen(false)
145
+ }
146
+ }, [isAccordionItem, forceOpen, forceClose, isActiveBranch])
147
+
69
148
  if (item.href && !item.disabled) {
70
149
  return (
71
- <li className={cn(pathname === item.href && 'border-primary border-l')}>
72
- <Link
73
- className={cn(
74
- 'group flex w-full items-center border-primary px-4 py-1 font-medium text-sm focus-visible:border-l focus-visible:outline-none',
75
- pathname === item.href ? 'font-medium text-foreground' : 'text-muted-foreground',
150
+ <li className={cn(isActive && 'border-primary border-l')}>
151
+ <div className="flex items-center">
152
+ <Link
153
+ aria-current={isCurrent ? 'page' : undefined}
154
+ className={cn(
155
+ 'group flex w-full items-center border-primary px-4 py-1 font-medium text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
156
+ depth > 0 && 'px-3',
157
+ isActive ? 'font-medium text-foreground' : 'text-muted-foreground',
158
+ )}
159
+ href={item.href}
160
+ scroll
161
+ rel={item.external ? 'noreferrer' : ''}
162
+ target={item.external ? '_blank' : ''}>
163
+ {item.title}
164
+ {item.label && (
165
+ <span className="ml-2 rounded-md bg-primary px-1.5 py-0.5 font-medium text-accent text-xs leading-none no-underline group-hover:no-underline">
166
+ {item.label}
167
+ </span>
168
+ )}
169
+ {item.external && <span className="sr-only"> (opens in a new tab)</span>}
170
+ </Link>
171
+ {isAccordionItem && (
172
+ <button
173
+ aria-expanded={isOpen}
174
+ aria-label={`Toggle ${item.title}`}
175
+ className="relative mr-1 inline-flex size-6 items-center justify-center rounded-sm text-muted-foreground transition-colors after:absolute after:-inset-2 after:content-[''] hover:bg-accent hover:text-foreground"
176
+ onClick={(event) => {
177
+ event.preventDefault()
178
+ event.stopPropagation()
179
+ setIsOpen((open) => !open)
180
+ }}
181
+ type="button">
182
+ <ChevronRight aria-hidden="true" className={cn('size-3 transition-transform', isOpen && 'rotate-90')} />
183
+ </button>
76
184
  )}
77
- href={item.href}
78
- scroll
79
- rel={item.external ? 'noreferrer' : ''}
80
- target={item.external ? '_blank' : ''}>
185
+ </div>
186
+ {hasChildren &&
187
+ (isAccordionItem ? (
188
+ <AnimatedHeightCollapse open={isOpen}>
189
+ <DocsSidebarNavItems
190
+ accordionDefault={accordionDefault}
191
+ depth={depth + 1}
192
+ items={item.items ?? []}
193
+ pathname={pathname}
194
+ />
195
+ </AnimatedHeightCollapse>
196
+ ) : (
197
+ <DocsSidebarNavItems
198
+ accordionDefault={accordionDefault}
199
+ depth={depth + 1}
200
+ items={item.items ?? []}
201
+ pathname={pathname}
202
+ />
203
+ ))}
204
+ </li>
205
+ )
206
+ }
207
+
208
+ return (
209
+ <li>
210
+ <div className="flex items-center">
211
+ <span
212
+ className={cn(
213
+ 'flex w-full cursor-not-allowed items-center rounded-md p-2 text-muted-foreground hover:underline',
214
+ depth > 0 && 'px-3',
215
+ )}>
81
216
  {item.title}
82
217
  {item.label && (
83
- <span className="ml-2 rounded-md bg-primary px-1.5 py-0.5 font-medium text-accent text-xs leading-none no-underline group-hover:no-underline">
218
+ <span className="ml-2 rounded-md bg-muted px-1.5 py-0.5 text-muted-foreground text-sm leading-none no-underline group-hover:no-underline">
84
219
  {item.label}
85
220
  </span>
86
221
  )}
87
- </Link>
88
- </li>
89
- )
90
- }
222
+ </span>
223
+ {isAccordionItem && (
224
+ <button
225
+ aria-expanded={isOpen}
226
+ aria-label={`Toggle ${item.title}`}
227
+ className="relative mr-1 inline-flex size-6 items-center justify-center rounded-sm text-muted-foreground transition-colors after:absolute after:-inset-2 after:content-[''] hover:bg-accent hover:text-foreground"
228
+ onClick={() => {
229
+ setIsOpen((open) => !open)
230
+ }}
231
+ type="button">
232
+ <ChevronRight aria-hidden="true" className={cn('size-3 transition-transform', isOpen && 'rotate-90')} />
233
+ </button>
234
+ )}
235
+ </div>
236
+ {hasChildren &&
237
+ (isAccordionItem ? (
238
+ <AnimatedHeightCollapse open={isOpen}>
239
+ <DocsSidebarNavItems
240
+ accordionDefault={accordionDefault}
241
+ depth={depth + 1}
242
+ items={item.items ?? []}
243
+ pathname={pathname}
244
+ />
245
+ </AnimatedHeightCollapse>
246
+ ) : (
247
+ <DocsSidebarNavItems
248
+ accordionDefault={accordionDefault}
249
+ depth={depth + 1}
250
+ items={item.items ?? []}
251
+ pathname={pathname}
252
+ />
253
+ ))}
254
+ </li>
255
+ )
256
+ }
91
257
 
258
+ function AnimatedHeightCollapse({ open, children }: { open: boolean; children: React.ReactNode }) {
92
259
  return (
93
- <span
260
+ <div
261
+ aria-hidden={!open}
94
262
  className={cn(
95
- 'flex w-full cursor-not-allowed items-center rounded-md p-2 text-muted-foreground hover:underline',
96
- )}>
97
- {item.title}
98
- {item.label && (
99
- <span className="ml-2 rounded-md bg-muted px-1.5 py-0.5 text-muted-foreground text-sm leading-none no-underline group-hover:no-underline">
100
- {item.label}
101
- </span>
263
+ 'grid transition-[grid-template-rows] duration-300 ease-(--duck-motion-ease)',
264
+ open ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',
102
265
  )}
103
- </span>
266
+ inert={!open || undefined}>
267
+ <div className={cn('overflow-hidden', !open && 'invisible')}>{children}</div>
268
+ </div>
104
269
  )
105
270
  }
@@ -3,35 +3,44 @@
3
3
  import type { TocEntry } from '@duck-docs/context'
4
4
  import { useMounted } from '@duck-docs/hooks/use-mounted'
5
5
  import { cn } from '@gentleduck/libs/cn'
6
+ import { BookOpenText } from 'lucide-react'
6
7
  import * as React from 'react'
7
8
 
9
+ // -- Types -------------------------------------------------------------------
10
+
8
11
  interface TocProps {
9
12
  toc: TocEntry[]
10
13
  }
11
14
 
12
- export function DashboardTableOfContents({ toc }: TocProps) {
13
- const itemIds = React.useMemo(
14
- () =>
15
- toc
16
- ? toc
17
- .flatMap((item) => [item.url, item?.items?.map((item) => item.url)])
18
- .flat()
19
- .filter(Boolean)
20
- .map((id) => id?.split('#')[1])
21
- : [],
22
- [toc],
23
- )
24
- const activeHeading = useActiveItem(itemIds)
25
- const mounted = useMounted()
15
+ interface FlatTocItem {
16
+ url: string
17
+ title: string
18
+ depth: number
19
+ }
26
20
 
27
- return mounted ? (
28
- <div className="space-y-2">
29
- <p className="font-medium">On This Page</p>
30
- <Tree activeItem={activeHeading} tree={toc} />
31
- </div>
32
- ) : null
21
+ // -- Helpers -----------------------------------------------------------------
22
+
23
+ function flattenToc(toc: TocEntry[], depth = 1): FlatTocItem[] {
24
+ const result: FlatTocItem[] = []
25
+ for (const entry of toc) {
26
+ result.push({ url: entry.url, title: entry.title, depth })
27
+ if (entry.items && depth < 2) {
28
+ result.push(...flattenToc(entry.items, depth + 1))
29
+ }
30
+ }
31
+ return result
33
32
  }
34
33
 
34
+ function lineOffset(depth: number): number {
35
+ return depth >= 2 ? 12 : 0
36
+ }
37
+
38
+ function itemPadding(depth: number): number {
39
+ return depth >= 2 ? 28 : 16
40
+ }
41
+
42
+ // -- Hooks -------------------------------------------------------------------
43
+
35
44
  function useActiveItem(itemIds: (string | undefined)[]) {
36
45
  const [activeId, setActiveId] = React.useState<string>('')
37
46
 
@@ -44,30 +53,20 @@ function useActiveItem(itemIds: (string | undefined)[]) {
44
53
  }
45
54
  })
46
55
  },
47
- { rootMargin: `0% 0% -80% 0%` },
56
+ { rootMargin: '0% 0% -80% 0%' },
48
57
  )
49
58
 
50
59
  itemIds?.forEach((id) => {
51
- if (!id) {
52
- return
53
- }
54
-
60
+ if (!id) return
55
61
  const element = document.getElementById(id)
56
- if (element) {
57
- observer.observe(element)
58
- }
62
+ if (element) observer.observe(element)
59
63
  })
60
64
 
61
65
  return () => {
62
66
  itemIds?.forEach((id) => {
63
- if (!id) {
64
- return
65
- }
66
-
67
+ if (!id) return
67
68
  const element = document.getElementById(id)
68
- if (element) {
69
- observer.unobserve(element)
70
- }
69
+ if (element) observer.unobserve(element)
71
70
  })
72
71
  }
73
72
  }, [itemIds])
@@ -75,30 +74,206 @@ function useActiveItem(itemIds: (string | undefined)[]) {
75
74
  return activeId
76
75
  }
77
76
 
78
- interface TreeProps {
79
- tree: TocEntry[]
80
- level?: number
81
- activeItem?: string | null
77
+ function useTocThumb(containerRef: React.RefObject<HTMLDivElement | null>, activeItem: string): [number, number] {
78
+ const [pos, setPos] = React.useState<[number, number]>([0, 0])
79
+
80
+ React.useEffect(() => {
81
+ const container = containerRef.current
82
+ if (!activeItem || !container || container.clientHeight === 0) {
83
+ setPos([0, 0])
84
+ return
85
+ }
86
+
87
+ const el = container.querySelector<HTMLElement>(`a[href="#${activeItem}"]`)
88
+ if (!el) {
89
+ setPos([0, 0])
90
+ return
91
+ }
92
+
93
+ const styles = getComputedStyle(el)
94
+ const top = el.offsetTop + parseFloat(styles.paddingTop)
95
+ const bottom = el.offsetTop + el.clientHeight - parseFloat(styles.paddingBottom)
96
+ setPos([top, bottom - top])
97
+ }, [activeItem, containerRef])
98
+
99
+ return pos
100
+ }
101
+
102
+ function useTocSvg(containerRef: React.RefObject<HTMLDivElement | null>, items: FlatTocItem[]) {
103
+ const [svg, setSvg] = React.useState<{ path: string; width: number; height: number } | null>(null)
104
+
105
+ React.useEffect(() => {
106
+ const container = containerRef.current
107
+ if (!container || container.clientHeight === 0) return
108
+
109
+ function compute() {
110
+ if (!container) return
111
+ let w = 0
112
+ let h = 0
113
+ const d: string[] = []
114
+
115
+ for (let i = 0; i < items.length; i++) {
116
+ const item = items[i]!
117
+ const el = container.querySelector<HTMLElement>(`a[href="${item.url}"]`)
118
+ if (!el) continue
119
+
120
+ const styles = getComputedStyle(el)
121
+ const offset = lineOffset(item.depth) + 1
122
+ const top = el.offsetTop + parseFloat(styles.paddingTop)
123
+ const bottom = el.offsetTop + el.clientHeight - parseFloat(styles.paddingBottom)
124
+
125
+ w = Math.max(offset, w)
126
+ h = Math.max(h, bottom)
127
+
128
+ d.push(`${i === 0 ? 'M' : 'L'}${offset} ${top}`)
129
+ d.push(`L${offset} ${bottom}`)
130
+ }
131
+
132
+ setSvg({ path: d.join(' '), width: w + 1, height: h })
133
+ }
134
+
135
+ const observer = new ResizeObserver(compute)
136
+ compute()
137
+ observer.observe(container)
138
+ return () => observer.disconnect()
139
+ }, [items])
140
+
141
+ return svg
142
+ }
143
+
144
+ // -- Skeleton ----------------------------------------------------------------
145
+
146
+ function TocSkeleton({ toc }: TocProps) {
147
+ const skeletonItems = React.useMemo(() => {
148
+ const items: { level: number; width: string }[] = []
149
+ for (const entry of toc) {
150
+ const chars = entry.title.length
151
+ items.push({ level: 1, width: `${Math.min(Math.max(chars * 8, 80), 200)}px` })
152
+ if (entry.items) {
153
+ for (const sub of entry.items) {
154
+ const subChars = sub.title.length
155
+ items.push({ level: 2, width: `${Math.min(Math.max(subChars * 7, 64), 160)}px` })
156
+ }
157
+ }
158
+ }
159
+ return items
160
+ }, [toc])
161
+
162
+ return (
163
+ <ul className="m-0 list-none">
164
+ {skeletonItems.map((item, i) => (
165
+ <li key={i} className={cn('mt-0 pt-2', { 'pl-4': item.level > 1 })}>
166
+ <div className="h-3.5 animate-pulse rounded-full bg-muted/70" style={{ width: item.width }} />
167
+ </li>
168
+ ))}
169
+ </ul>
170
+ )
82
171
  }
83
172
 
84
- function Tree({ tree, level = 1, activeItem }: TreeProps) {
85
- return tree.length && level < 3 ? (
86
- <ul className={cn('m-0 list-none', { 'pl-4': level !== 1 })}>
87
- {tree.map((item, index) => {
173
+ // -- TocTree -----------------------------------------------------------------
174
+
175
+ function TocTree({ items, activeItem }: { items: FlatTocItem[]; activeItem: string }) {
176
+ const containerRef = React.useRef<HTMLDivElement>(null)
177
+ const thumb = useTocThumb(containerRef, activeItem)
178
+ const svg = useTocSvg(containerRef, items)
179
+
180
+ return (
181
+ <div ref={containerRef} className="relative">
182
+ {/* Per-item track lines + diagonal connectors */}
183
+ {items.map((item, i) => {
184
+ const upper = i > 0 ? items[i - 1]!.depth : item.depth
185
+ const lower = i < items.length - 1 ? items[i + 1]!.depth : item.depth
186
+ const offset = lineOffset(item.depth)
187
+ const upperOffset = lineOffset(upper)
188
+ const lowerOffset = lineOffset(lower)
189
+
88
190
  return (
89
- <li className={cn('mt-0 pt-2')} key={index}>
90
- <a
191
+ <a
192
+ key={i}
193
+ href={item.url}
194
+ className={cn(
195
+ 'relative block py-1.5 no-underline transition-colors [overflow-wrap:anywhere]',
196
+ item.url === `#${activeItem}`
197
+ ? 'font-medium text-primary'
198
+ : 'text-muted-foreground text-sm hover:text-foreground',
199
+ )}
200
+ style={{ paddingInlineStart: `${itemPadding(item.depth)}px` }}>
201
+ {/* Diagonal connector when depth changes */}
202
+ {offset !== upperOffset ? (
203
+ <svg
204
+ aria-hidden="true"
205
+ className="absolute start-0 -top-1.5 size-3"
206
+ viewBox="0 0 16 16"
207
+ xmlns="http://www.w3.org/2000/svg">
208
+ <line
209
+ className="stroke-muted-foreground/15"
210
+ strokeWidth={1}
211
+ x1={upperOffset + 1}
212
+ x2={offset + 1}
213
+ y1={0}
214
+ y2={16}
215
+ />
216
+ </svg>
217
+ ) : null}
218
+
219
+ {/* Vertical line segment */}
220
+ <div
91
221
  className={cn(
92
- 'inline-block no-underline',
93
- item.url === `#${activeItem}` ? 'font-medium text-primary' : 'text-muted-foreground text-sm',
222
+ 'absolute inset-y-0 w-px bg-muted-foreground/15',
223
+ offset !== upperOffset && 'top-1.5',
224
+ offset !== lowerOffset && 'bottom-1.5',
94
225
  )}
95
- href={item.url}>
96
- {item.title}
97
- </a>
98
- {item.items?.length ? <Tree activeItem={activeItem} level={level + 1} tree={item.items} /> : null}
99
- </li>
226
+ style={{ insetInlineStart: offset + 1 }}
227
+ />
228
+ {item.title}
229
+ </a>
100
230
  )
101
231
  })}
102
- </ul>
103
- ) : null
232
+
233
+ {/* Active highlight -- masked by the SVG path */}
234
+ {svg ? (
235
+ <div
236
+ aria-hidden="true"
237
+ className="pointer-events-none absolute start-0 top-0"
238
+ style={{
239
+ width: svg.width,
240
+ height: svg.height,
241
+ maskImage: `url("data:image/svg+xml,${encodeURIComponent(
242
+ `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="2" fill="none" /></svg>`,
243
+ )}")`,
244
+ }}>
245
+ <div
246
+ className="bg-primary transition-all duration-300 ease-out"
247
+ style={{
248
+ marginTop: thumb[0],
249
+ height: thumb[1],
250
+ }}
251
+ />
252
+ </div>
253
+ ) : null}
254
+ </div>
255
+ )
256
+ }
257
+
258
+ // -- Main component ----------------------------------------------------------
259
+
260
+ export function DashboardTableOfContents({ toc }: TocProps) {
261
+ const flatItems = React.useMemo(() => flattenToc(toc), [toc])
262
+ const itemIds = React.useMemo(() => flatItems.map((item) => item.url.split('#')[1]).filter(Boolean), [flatItems])
263
+ const activeHeading = useActiveItem(itemIds)
264
+ const mounted = useMounted()
265
+
266
+ if (!toc.length) return null
267
+
268
+ return (
269
+ <div className="flex min-h-0 flex-1 flex-col gap-2">
270
+ <div className="flex shrink-0 items-center gap-2">
271
+ <BookOpenText aria-hidden="true" className="size-4" />
272
+ <p className="font-medium">On This Page</p>
273
+ </div>
274
+ <div className="min-h-0 flex-1 overflow-y-auto">
275
+ {mounted ? <TocTree activeItem={activeHeading} items={flatItems} /> : <TocSkeleton toc={toc} />}
276
+ </div>
277
+ </div>
278
+ )
104
279
  }
File without changes