@gentleduck/docs 0.1.1 → 0.2.0

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 (454) hide show
  1. package/dist/{alert-DXO4N8gL.js → alert-CeNJkxIS.js} +1 -1
  2. package/dist/{alert-DXO4N8gL.js.map → alert-CeNJkxIS.js.map} +1 -1
  3. package/dist/{badge-BaSJ_om8.js → badge-lLTz8rjt.js} +1 -1
  4. package/dist/{badge-BaSJ_om8.js.map → badge-lLTz8rjt.js.map} +1 -1
  5. package/dist/{callout-CpRp0hs1.d.ts → callout-0BtCINKk.d.ts} +3 -3
  6. package/dist/{callout-CpRp0hs1.d.ts.map → callout-0BtCINKk.d.ts.map} +1 -1
  7. package/dist/{callout-DkKMc7na.js → callout-aAkFztfL.js} +2 -2
  8. package/dist/{callout-DkKMc7na.js.map → callout-aAkFztfL.js.map} +1 -1
  9. package/dist/{charts-D4Uj_gtE.d.ts → charts-DEaB4Lln.d.ts} +1 -1
  10. package/dist/{charts-D4Uj_gtE.d.ts.map → charts-DEaB4Lln.d.ts.map} +1 -1
  11. package/dist/{charts-B7Xy2hnG.js → charts-TTn-PPdo.js} +1 -1
  12. package/dist/{charts-B7Xy2hnG.js.map → charts-TTn-PPdo.js.map} +1 -1
  13. package/dist/client.d.ts +51 -51
  14. package/dist/client.js +1 -1
  15. package/dist/{code-block-CvkRo03f.d.ts → code-block-B0w93vdH.d.ts} +3 -3
  16. package/dist/code-block-B0w93vdH.d.ts.map +1 -0
  17. package/dist/{code-block-DzuzMGMr.js → code-block-BgDMP6Nq.js} +1 -1
  18. package/dist/{code-block-DzuzMGMr.js.map → code-block-BgDMP6Nq.js.map} +1 -1
  19. package/dist/{code-block-wrapper-BNMwGoo7.js → code-block-wrapper-CqEjVT5Z.js} +1 -1
  20. package/dist/{code-block-wrapper-BNMwGoo7.js.map → code-block-wrapper-CqEjVT5Z.js.map} +1 -1
  21. package/dist/{code-block-wrapper-BkCgtNmx.d.ts → code-block-wrapper-CtCPXtO_.d.ts} +3 -3
  22. package/dist/{code-block-wrapper-BkCgtNmx.d.ts.map → code-block-wrapper-CtCPXtO_.d.ts.map} +1 -1
  23. package/dist/{code-preview-BJfDdIF3.d.ts → code-preview-D6FrTX1A.d.ts} +3 -3
  24. package/dist/{code-preview-BJfDdIF3.d.ts.map → code-preview-D6FrTX1A.d.ts.map} +1 -1
  25. package/dist/{code-preview-CosZjiht.js → code-preview-DplOXYJF.js} +2 -2
  26. package/dist/{code-preview-CosZjiht.js.map → code-preview-DplOXYJF.js.map} +1 -1
  27. package/dist/{colors-Cx-Rmxum.d.ts → colors-BFoVQHcV.d.ts} +1 -1
  28. package/dist/{colors-Cx-Rmxum.d.ts.map → colors-BFoVQHcV.d.ts.map} +1 -1
  29. package/dist/{colors-IvpyMpg7.js → colors-CRrSbR4A.js} +2 -2
  30. package/dist/{colors-IvpyMpg7.js.map → colors-CRrSbR4A.js.map} +1 -1
  31. package/dist/command-menu-BvEJcMbM.d.ts +7 -0
  32. package/dist/{command-menu-BteUvSP4.d.ts.map → command-menu-BvEJcMbM.d.ts.map} +1 -1
  33. package/dist/{command-menu-BY4dKRHx.js → command-menu-C5eCuJ1p.js} +2 -2
  34. package/dist/{command-menu-BY4dKRHx.js.map → command-menu-C5eCuJ1p.js.map} +1 -1
  35. package/dist/{component-preview-g-CoGwuu.js → component-preview-AFsWULeq.js} +2 -2
  36. package/dist/{component-preview-g-CoGwuu.js.map → component-preview-AFsWULeq.js.map} +1 -1
  37. package/dist/{component-preview-CpawLgxl.d.ts → component-preview-CHng68hR.d.ts} +4 -4
  38. package/dist/{component-preview-CpawLgxl.d.ts.map → component-preview-CHng68hR.d.ts.map} +1 -1
  39. package/dist/{component-source-5yXtLqFU.d.ts → component-source-CWOUfnWY.d.ts} +3 -3
  40. package/dist/{component-source-5yXtLqFU.d.ts.map → component-source-CWOUfnWY.d.ts.map} +1 -1
  41. package/dist/{component-source-BhZijwev.js → component-source-DF57SjbQ.js} +2 -2
  42. package/dist/{component-source-BhZijwev.js.map → component-source-DF57SjbQ.js.map} +1 -1
  43. package/dist/components/copy-button.d.ts +3 -3
  44. package/dist/components/docs/docs-copy-page.d.ts +1 -1
  45. package/dist/components/docs/docs-copy-page.js +1 -1
  46. package/dist/components/docs/docs-pager.d.ts +3 -3
  47. package/dist/components/docs/docs-pager.js +1 -1
  48. package/dist/components/docs/docs-sidebar.d.ts +3 -3
  49. package/dist/components/docs/docs-sidebar.js +1 -1
  50. package/dist/components/docs/docs-toc.d.ts +3 -3
  51. package/dist/components/docs/docs-toc.js +1 -1
  52. package/dist/components/docs/index.d.ts +7 -7
  53. package/dist/components/docs/index.js +1 -1
  54. package/dist/components/icons.d.ts +1 -1
  55. package/dist/components/icons.js +1 -1
  56. package/dist/components/index.d.ts +43 -43
  57. package/dist/components/index.js +1 -1
  58. package/dist/components/layouts/command-menu.d.ts +1 -1
  59. package/dist/components/layouts/command-menu.js +1 -1
  60. package/dist/components/layouts/header-shell.d.ts +1 -1
  61. package/dist/components/layouts/header-shell.js +1 -1
  62. package/dist/components/layouts/index.d.ts +6 -6
  63. package/dist/components/layouts/index.js +1 -1
  64. package/dist/components/layouts/site-footer.d.ts +1 -1
  65. package/dist/components/layouts/site-footer.js +1 -1
  66. package/dist/components/layouts/site-header.d.ts +2 -2
  67. package/dist/components/layouts/site-header.js +1 -1
  68. package/dist/components/layouts/tailwind-indicator.d.ts +1 -1
  69. package/dist/components/layouts/tailwind-indicator.js +1 -1
  70. package/dist/components/main-nav.d.ts +1 -1
  71. package/dist/components/main-nav.js +1 -1
  72. package/dist/components/mdx/mdx-components/callout.d.ts +1 -1
  73. package/dist/components/mdx/mdx-components/callout.js +1 -1
  74. package/dist/components/mdx/mdx-components/code/code-block-wrapper.d.ts +1 -1
  75. package/dist/components/mdx/mdx-components/code/code-block-wrapper.js +1 -1
  76. package/dist/components/mdx/mdx-components/code/code-block.d.ts +1 -1
  77. package/dist/components/mdx/mdx-components/code/code-block.js +1 -1
  78. package/dist/components/mdx/mdx-components/code/code-preview.d.ts +1 -1
  79. package/dist/components/mdx/mdx-components/code/code-preview.js +1 -1
  80. package/dist/components/mdx/mdx-components/code/component-preview.d.ts +1 -1
  81. package/dist/components/mdx/mdx-components/code/component-preview.js +1 -1
  82. package/dist/components/mdx/mdx-components/code/component-source.d.ts +1 -1
  83. package/dist/components/mdx/mdx-components/code/component-source.js +1 -1
  84. package/dist/components/mdx/mdx-components/code/figcaption-block.d.ts +1 -1
  85. package/dist/components/mdx/mdx-components/code/figcaption-block.js +1 -1
  86. package/dist/components/mdx/mdx-components/code/index.d.ts +13 -13
  87. package/dist/components/mdx/mdx-components/code/index.js +1 -1
  88. package/dist/components/mdx/mdx-components/code/mermaid-block.d.ts +1 -1
  89. package/dist/components/mdx/mdx-components/code/mermaid-block.js +1 -1
  90. package/dist/components/mdx/mdx-components/code/pre-block/index.d.ts +6 -6
  91. package/dist/components/mdx/mdx-components/code/pre-block/index.js +1 -1
  92. package/dist/components/mdx/mdx-components/code/pre-block/pre-block.d.ts +5 -5
  93. package/dist/components/mdx/mdx-components/code/pre-block/pre-block.js +1 -1
  94. package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts +4 -4
  95. package/dist/components/mdx/mdx-components/code/pre-block/shell-command.js +1 -1
  96. package/dist/components/mdx/mdx-components/code/pre-block/types.d.ts +4 -4
  97. package/dist/components/mdx/mdx-components/code/span-block.d.ts +2 -2
  98. package/dist/components/mdx/mdx-components/components-list.d.ts +3 -3
  99. package/dist/components/mdx/mdx-components/components-list.js +1 -1
  100. package/dist/components/mdx/mdx-components/exalidraw.d.ts +2 -2
  101. package/dist/components/mdx/mdx-components/index.d.ts +22 -22
  102. package/dist/components/mdx/mdx-components/index.js +1 -1
  103. package/dist/components/mdx/mdx-components/table.d.ts +1 -1
  104. package/dist/components/mdx/mdx-components/table.js +1 -1
  105. package/dist/components/mdx/mdx-components/tabs.d.ts +1 -1
  106. package/dist/components/mdx/mdx-components/tabs.js +1 -1
  107. package/dist/components/mdx/mdx-components/typepography.d.ts +1 -1
  108. package/dist/components/mdx/mdx-components/typepography.js +1 -1
  109. package/dist/components/mdx/mdx-components/typography.d.ts +2 -2
  110. package/dist/components/mdx/mdx-components/typography.js +1 -1
  111. package/dist/components/mdx/mdx-components-base.d.ts +30 -30
  112. package/dist/components/mdx/mdx-components-base.js +1 -1
  113. package/dist/components/mdx/mdx-components-registry.d.ts +63 -63
  114. package/dist/components/mdx/mdx-components-registry.js +1 -1
  115. package/dist/components/mdx/mdx-components-ui.d.ts +19 -19
  116. package/dist/components/mdx/mdx-components-ui.js +1 -1
  117. package/dist/components/mdx/mdx-icons.js +1 -1
  118. package/dist/components/mdx/mdx-runtime.js +1 -1
  119. package/dist/components/mdx/mdx.d.ts +1 -1
  120. package/dist/components/mdx/mdx.js +1 -1
  121. package/dist/components/mobile-nav.d.ts +1 -1
  122. package/dist/components/mobile-nav.js +1 -1
  123. package/dist/components/mode-toggle.d.ts +1 -1
  124. package/dist/components/mode-toggle.js +1 -1
  125. package/dist/components/page-header.d.ts +1 -1
  126. package/dist/components/page-header.js +1 -1
  127. package/dist/components/providers.d.ts +1 -1
  128. package/dist/components/providers.js +1 -1
  129. package/dist/components/style-switcher.d.ts +1 -1
  130. package/dist/components/style-switcher.js +1 -1
  131. package/dist/{components-list-Cg9ggVyv.js → components-list-BIYh-rVo.js} +2 -2
  132. package/dist/{components-list-Cg9ggVyv.js.map → components-list-BIYh-rVo.js.map} +1 -1
  133. package/dist/components-list-DNtDa4DQ.d.ts +12 -0
  134. package/dist/{components-list-JYB1Djx7.d.ts.map → components-list-DNtDa4DQ.d.ts.map} +1 -1
  135. package/dist/context/context.d.ts +1 -1
  136. package/dist/context/context.js +1 -1
  137. package/dist/context/context.types.d.ts +1 -1
  138. package/dist/context/index.d.ts +3 -3
  139. package/dist/context/index.js +1 -1
  140. package/dist/{context-Bu-bPlyW.js → context-8iUWV99o.js} +1 -1
  141. package/dist/{context-Bu-bPlyW.js.map → context-8iUWV99o.js.map} +1 -1
  142. package/dist/{context-CC0ZL6KV.d.ts → context-DdAZ5e6e.d.ts} +2 -2
  143. package/dist/{context-CC0ZL6KV.d.ts.map → context-DdAZ5e6e.d.ts.map} +1 -1
  144. package/dist/{context.types-pTQ85uw2.d.ts → context.types-Bfz_W9_Q.d.ts} +2 -2
  145. package/dist/{context.types-pTQ85uw2.d.ts.map → context.types-Bfz_W9_Q.d.ts.map} +1 -1
  146. package/dist/{copy-button-DTBIjulx.d.ts → copy-button-DJt9b314.d.ts} +5 -5
  147. package/dist/{copy-button-DTBIjulx.d.ts.map → copy-button-DJt9b314.d.ts.map} +1 -1
  148. package/dist/{dialog-68QLl2rI.js → dialog-WKxDI8AJ.js} +1 -1
  149. package/dist/{dialog-68QLl2rI.js.map → dialog-WKxDI8AJ.js.map} +1 -1
  150. package/dist/{docs-copy-page-ChwVPYc1.d.ts → docs-copy-page-BP_9SFiu.d.ts} +3 -3
  151. package/dist/{docs-copy-page-ChwVPYc1.d.ts.map → docs-copy-page-BP_9SFiu.d.ts.map} +1 -1
  152. package/dist/docs-copy-page-BjCHLC98.js +2 -0
  153. package/dist/docs-copy-page-BjCHLC98.js.map +1 -0
  154. package/dist/{docs-pager-mprD1O3r.js → docs-pager-C_5XnMWG.js} +2 -2
  155. package/dist/{docs-pager-mprD1O3r.js.map → docs-pager-C_5XnMWG.js.map} +1 -1
  156. package/dist/{docs-pager-BnHLEkBw.d.ts → docs-pager-Cj_ihb89.d.ts} +6 -6
  157. package/dist/{docs-pager-BnHLEkBw.d.ts.map → docs-pager-Cj_ihb89.d.ts.map} +1 -1
  158. package/dist/{docs-sidebar-DY2ybOuM.js → docs-sidebar-CQ6ieEvV.js} +2 -2
  159. package/dist/{docs-sidebar-DY2ybOuM.js.map → docs-sidebar-CQ6ieEvV.js.map} +1 -1
  160. package/dist/{docs-sidebar-DJN5g6Ur.d.ts → docs-sidebar-Dm8CCbmk.d.ts} +7 -7
  161. package/dist/{docs-sidebar-DJN5g6Ur.d.ts.map → docs-sidebar-Dm8CCbmk.d.ts.map} +1 -1
  162. package/dist/docs-toc-COvBB3xw.d.ts +13 -0
  163. package/dist/{docs-toc-Bqz0glt_.d.ts.map → docs-toc-COvBB3xw.d.ts.map} +1 -1
  164. package/dist/{docs-toc-Bjmkbd6l.js → docs-toc-oDLRpfBi.js} +2 -2
  165. package/dist/{docs-toc-Bjmkbd6l.js.map → docs-toc-oDLRpfBi.js.map} +1 -1
  166. package/dist/{drawer-kwSiurIF.js → drawer-05tN_Xdp.js} +1 -1
  167. package/dist/{drawer-kwSiurIF.js.map → drawer-05tN_Xdp.js.map} +1 -1
  168. package/dist/dropdown-menu-DYiM8COh.js +2 -0
  169. package/dist/dropdown-menu-DYiM8COh.js.map +1 -0
  170. package/dist/{events-CQ5HMYtp.d.ts → events-fu3vNJdd.d.ts} +1 -1
  171. package/dist/{events-CQ5HMYtp.d.ts.map → events-fu3vNJdd.d.ts.map} +1 -1
  172. package/dist/{figcaption-block-RFNt1OSv.js → figcaption-block-hcA7ZV1t.js} +2 -2
  173. package/dist/{figcaption-block-RFNt1OSv.js.map → figcaption-block-hcA7ZV1t.js.map} +1 -1
  174. package/dist/{figcaption-block-D1bs7L2Q.d.ts → figcaption-block-lr2ii6n2.d.ts} +3 -3
  175. package/dist/{figcaption-block-D1bs7L2Q.d.ts.map → figcaption-block-lr2ii6n2.d.ts.map} +1 -1
  176. package/dist/{hast-properties-C103K0PZ.js → hast-properties-DMieBO19.js} +1 -1
  177. package/dist/{hast-properties-C103K0PZ.js.map → hast-properties-DMieBO19.js.map} +1 -1
  178. package/dist/{header-shell-BEh1FcJj.d.ts → header-shell-CPl-YeJY.d.ts} +6 -6
  179. package/dist/{header-shell-BEh1FcJj.d.ts.map → header-shell-CPl-YeJY.d.ts.map} +1 -1
  180. package/dist/{header-shell-PLI5ZAwI.js → header-shell-DSjT_BrI.js} +2 -2
  181. package/dist/{header-shell-PLI5ZAwI.js.map → header-shell-DSjT_BrI.js.map} +1 -1
  182. package/dist/hooks/index.d.ts +7 -7
  183. package/dist/hooks/index.js +1 -1
  184. package/dist/hooks/use-colors.d.ts +2 -2
  185. package/dist/hooks/use-colors.js +1 -1
  186. package/dist/hooks/use-config.d.ts +1 -1
  187. package/dist/hooks/use-config.js +1 -1
  188. package/dist/hooks/use-lift-mode.d.ts +1 -1
  189. package/dist/hooks/use-lift-mode.js +1 -1
  190. package/dist/hooks/use-meta-colors.d.ts +1 -1
  191. package/dist/hooks/use-meta-colors.js +1 -1
  192. package/dist/hooks/use-mounted.d.ts +1 -1
  193. package/dist/hooks/use-mounted.js +1 -1
  194. package/dist/hooks/use-themes-config.d.ts +1 -1
  195. package/dist/hooks/use-themes-config.js +1 -1
  196. package/dist/{icons-dASZ3daW.js → icons-BczxfLsa.js} +1 -1
  197. package/dist/{icons-dASZ3daW.js.map → icons-BczxfLsa.js.map} +1 -1
  198. package/dist/icons-DOc-gx0p.d.ts +33 -0
  199. package/dist/icons-DOc-gx0p.d.ts.map +1 -0
  200. package/dist/{index-CdFFVx85.d.ts → index-Bk_7h9-s.d.ts} +1 -1
  201. package/dist/{index-CdFFVx85.d.ts.map → index-Bk_7h9-s.d.ts.map} +1 -1
  202. package/dist/{index-B94w2qPS.d.ts → index-CKCoJ9mr.d.ts} +1 -1
  203. package/dist/{index-B94w2qPS.d.ts.map → index-CKCoJ9mr.d.ts.map} +1 -1
  204. package/dist/index.d.ts +11 -11
  205. package/dist/index.js +1 -1
  206. package/dist/lib/charts.d.ts +1 -1
  207. package/dist/lib/charts.js +1 -1
  208. package/dist/lib/colors.d.ts +1 -1
  209. package/dist/lib/colors.js +1 -1
  210. package/dist/lib/events.d.ts +1 -1
  211. package/dist/lib/index.d.ts +6 -6
  212. package/dist/lib/index.js +1 -1
  213. package/dist/lib/registry-colors-data.js +1 -1
  214. package/dist/lib/registry-styles.d.ts +1 -1
  215. package/dist/lib/registry-styles.js +1 -1
  216. package/dist/lib/themes.d.ts +1 -1
  217. package/dist/lib/themes.js +1 -1
  218. package/dist/lib/utils.d.ts +1 -1
  219. package/dist/lib/utils.js +1 -1
  220. package/dist/main-nav-DVKLErQu.d.ts +7 -0
  221. package/dist/main-nav-DVKLErQu.d.ts.map +1 -0
  222. package/dist/mdx-BWQi54_m.d.ts +12 -0
  223. package/dist/{mdx-BjKd-lr3.d.ts.map → mdx-BWQi54_m.d.ts.map} +1 -1
  224. package/dist/mdx-C5u2Zdyc.js +2 -0
  225. package/dist/{mdx-CpGlQTio.js.map → mdx-C5u2Zdyc.js.map} +1 -1
  226. package/dist/{mdx-components-base-ByG7D4Kc.js → mdx-components-base-D4hUHZRR.js} +2 -2
  227. package/dist/{mdx-components-base-ByG7D4Kc.js.map → mdx-components-base-D4hUHZRR.js.map} +1 -1
  228. package/dist/mdx-components-registry-Ceb39eRW.js +2 -0
  229. package/dist/{mdx-components-registry-H3xD8Epe.js.map → mdx-components-registry-Ceb39eRW.js.map} +1 -1
  230. package/dist/{mdx-components-ui-Cp73cCYd.js → mdx-components-ui-DJy8a_xi.js} +2 -2
  231. package/dist/{mdx-components-ui-Cp73cCYd.js.map → mdx-components-ui-DJy8a_xi.js.map} +1 -1
  232. package/dist/{mdx-icons-Duo8BbOA.js → mdx-icons-B7YaM2WW.js} +1 -1
  233. package/dist/{mdx-icons-Duo8BbOA.js.map → mdx-icons-B7YaM2WW.js.map} +1 -1
  234. package/dist/{mdx-runtime-DjYaVtmv.d.ts → mdx-runtime-DLAfMyJY.d.ts} +1 -1
  235. package/dist/{mdx-runtime-DjYaVtmv.d.ts.map → mdx-runtime-DLAfMyJY.d.ts.map} +1 -1
  236. package/dist/{mdx-runtime-BeG80qPS.js → mdx-runtime-DoXPlXz4.js} +1 -1
  237. package/dist/{mdx-runtime-BeG80qPS.js.map → mdx-runtime-DoXPlXz4.js.map} +1 -1
  238. package/dist/{mermaid-block-Bl37eU5v.d.ts → mermaid-block-C6-6cv5f.d.ts} +3 -3
  239. package/dist/{mermaid-block-Bl37eU5v.d.ts.map → mermaid-block-C6-6cv5f.d.ts.map} +1 -1
  240. package/dist/{mermaid-block-BfbjIpjJ.js → mermaid-block-CrmASB4s.js} +2 -2
  241. package/dist/{mermaid-block-BfbjIpjJ.js.map → mermaid-block-CrmASB4s.js.map} +1 -1
  242. package/dist/{metadata-plugin-BL84sQM5.d.ts → metadata-plugin-5TaYHWXh.d.ts} +2 -2
  243. package/dist/{metadata-plugin-BL84sQM5.d.ts.map → metadata-plugin-5TaYHWXh.d.ts.map} +1 -1
  244. package/dist/{metadata-plugin-DA7OesoA.js → metadata-plugin-XzUCOTJ4.js} +2 -2
  245. package/dist/{metadata-plugin-DA7OesoA.js.map → metadata-plugin-XzUCOTJ4.js.map} +1 -1
  246. package/dist/{metadata-utils-C_8CcvsG.js → metadata-utils-BMtaoiZF.js} +1 -1
  247. package/dist/{metadata-utils-C_8CcvsG.js.map → metadata-utils-BMtaoiZF.js.map} +1 -1
  248. package/dist/mobile-nav-CFTIm8WK.d.ts +7 -0
  249. package/dist/mobile-nav-CFTIm8WK.d.ts.map +1 -0
  250. package/dist/{mobile-nav-rBOCLILt.js → mobile-nav-NA5oPhXI.js} +2 -2
  251. package/dist/{mobile-nav-rBOCLILt.js.map → mobile-nav-NA5oPhXI.js.map} +1 -1
  252. package/dist/{mode-toggle-DhgB9p1I.js → mode-toggle-DKG4x8wu.js} +2 -2
  253. package/dist/{mode-toggle-DhgB9p1I.js.map → mode-toggle-DKG4x8wu.js.map} +1 -1
  254. package/dist/mode-toggle-DazD3zuF.d.ts +7 -0
  255. package/dist/mode-toggle-DazD3zuF.d.ts.map +1 -0
  256. package/dist/{mount-CoAqNcc6.js → mount-uG4K6qTf.js} +1 -1
  257. package/dist/{mount-CoAqNcc6.js.map → mount-uG4K6qTf.js.map} +1 -1
  258. package/dist/{nav-B0m_RJfC.d.ts → nav-VxNVhf9_.d.ts} +1 -1
  259. package/dist/{nav-B0m_RJfC.d.ts.map → nav-VxNVhf9_.d.ts.map} +1 -1
  260. package/dist/{page-header-CCOOtADG.d.ts → page-header-CS5XM1q2.d.ts} +6 -6
  261. package/dist/page-header-CS5XM1q2.d.ts.map +1 -0
  262. package/dist/{page-header-TUu9iNwc.js → page-header-Dmt7REX5.js} +1 -1
  263. package/dist/{page-header-TUu9iNwc.js.map → page-header-Dmt7REX5.js.map} +1 -1
  264. package/dist/{pre-block-Bt_9UuCv.js → pre-block-BC2mRAfY.js} +2 -2
  265. package/dist/{pre-block-Bt_9UuCv.js.map → pre-block-BC2mRAfY.js.map} +1 -1
  266. package/dist/{pre-block-CWu93Zw5.d.ts → pre-block-Pa2SlBev.d.ts} +4 -4
  267. package/dist/{pre-block-CWu93Zw5.d.ts.map → pre-block-Pa2SlBev.d.ts.map} +1 -1
  268. package/dist/{providers-CPondy8d.d.ts → providers-6rBUIHJN.d.ts} +3 -3
  269. package/dist/providers-6rBUIHJN.d.ts.map +1 -0
  270. package/dist/{providers-BlEJC-ZF.js → providers-CwRigi1l.js} +1 -1
  271. package/dist/{providers-BlEJC-ZF.js.map → providers-CwRigi1l.js.map} +1 -1
  272. package/dist/{registry-colors-data-C5Xv_bOz.js → registry-colors-data-BtPF2NUx.js} +1 -1
  273. package/dist/{registry-colors-data-C5Xv_bOz.js.map → registry-colors-data-BtPF2NUx.js.map} +1 -1
  274. package/dist/{registry-styles-Boe9P1LO.d.ts → registry-styles-BcAsom8K.d.ts} +1 -1
  275. package/dist/{registry-styles-Boe9P1LO.d.ts.map → registry-styles-BcAsom8K.d.ts.map} +1 -1
  276. package/dist/{registry-styles-DwoJ9Qa9.js → registry-styles-gTcj4DCR.js} +1 -1
  277. package/dist/{registry-styles-DwoJ9Qa9.js.map → registry-styles-gTcj4DCR.js.map} +1 -1
  278. package/dist/{rehype-mermaid-Be9A3aSw.js → rehype-mermaid-CQ75hp2Q.js} +1 -1
  279. package/dist/{rehype-mermaid-Be9A3aSw.js.map → rehype-mermaid-CQ75hp2Q.js.map} +1 -1
  280. package/dist/{rehype-mermaid-DPZ6UzOu.d.ts → rehype-mermaid-DecYf_rU.d.ts} +2 -2
  281. package/dist/rehype-mermaid-DecYf_rU.d.ts.map +1 -0
  282. package/dist/{rehype-npm-command-khRZrj_X.d.ts → rehype-npm-command-Bg4YXfot.d.ts} +2 -2
  283. package/dist/rehype-npm-command-Bg4YXfot.d.ts.map +1 -0
  284. package/dist/{rehype-npm-command-0W5WqcQY.js → rehype-npm-command-D_fYpcFr.js} +2 -2
  285. package/dist/{rehype-npm-command-0W5WqcQY.js.map → rehype-npm-command-D_fYpcFr.js.map} +1 -1
  286. package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts → rehype-pre-block-source-BAdGFElv.d.ts} +2 -2
  287. package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts.map → rehype-pre-block-source-BAdGFElv.d.ts.map} +1 -1
  288. package/dist/{rehype-pre-block-source-paX7yPQ4.js → rehype-pre-block-source-Cdsik072.js} +2 -2
  289. package/dist/{rehype-pre-block-source-paX7yPQ4.js.map → rehype-pre-block-source-Cdsik072.js.map} +1 -1
  290. package/dist/{rehype-title-CTj31zR2.d.ts → rehype-title-9j_Q2o1g.d.ts} +2 -2
  291. package/dist/rehype-title-9j_Q2o1g.d.ts.map +1 -0
  292. package/dist/{rehype-title-CB9V-h9I.js → rehype-title-D5VN1law.js} +1 -1
  293. package/dist/{rehype-title-CB9V-h9I.js.map → rehype-title-D5VN1law.js.map} +1 -1
  294. package/dist/{scroll-area-DwfrxxQ_.js → scroll-area-BFWBc-X7.js} +1 -1
  295. package/dist/{scroll-area-DwfrxxQ_.js.map → scroll-area-BFWBc-X7.js.map} +1 -1
  296. package/dist/{separator-BL4VUMvX.js → separator-C2JodQpS.js} +1 -1
  297. package/dist/{separator-BL4VUMvX.js.map → separator-C2JodQpS.js.map} +1 -1
  298. package/dist/{shell-command-BQkaAnLc.js → shell-command-uA9FhemC.js} +2 -2
  299. package/dist/{shell-command-BQkaAnLc.js.map → shell-command-uA9FhemC.js.map} +1 -1
  300. package/dist/{site-footer-DoVwgNqf.js → site-footer-BDIGBSjx.js} +2 -2
  301. package/dist/{site-footer-DoVwgNqf.js.map → site-footer-BDIGBSjx.js.map} +1 -1
  302. package/dist/site-footer-BigIDuKM.d.ts +8 -0
  303. package/dist/{site-footer-BRyt4-dx.d.ts.map → site-footer-BigIDuKM.d.ts.map} +1 -1
  304. package/dist/site-header-ClW-bc7r.js +2 -0
  305. package/dist/site-header-ClW-bc7r.js.map +1 -0
  306. package/dist/site-header-m-AqO8bm.d.ts +8 -0
  307. package/dist/site-header-m-AqO8bm.d.ts.map +1 -0
  308. package/dist/{style-switcher--saWXPVm.js → style-switcher-Cvax_0P0.js} +2 -2
  309. package/dist/{style-switcher--saWXPVm.js.map → style-switcher-Cvax_0P0.js.map} +1 -1
  310. package/dist/{style-switcher-B3PdHXf8.d.ts → style-switcher-e8-d3sUq.d.ts} +3 -3
  311. package/dist/{style-switcher-B3PdHXf8.d.ts.map → style-switcher-e8-d3sUq.d.ts.map} +1 -1
  312. package/dist/styles/base.css +34 -2
  313. package/dist/styles/docs.css +55 -2
  314. package/dist/styles/mdx-base.css +3 -1
  315. package/dist/styles/mdx-code.css +3 -3
  316. package/dist/{table-E1lSNeuD.js → table-CugT9kEw.js} +1 -1
  317. package/dist/{table-E1lSNeuD.js.map → table-CugT9kEw.js.map} +1 -1
  318. package/dist/{table-czuTmeyb.d.ts → table-DOSBqDDt.d.ts} +6 -6
  319. package/dist/{table-czuTmeyb.d.ts.map → table-DOSBqDDt.d.ts.map} +1 -1
  320. package/dist/{tabs-BonSZ_0a.js → tabs-DWwPvmmz.js} +2 -2
  321. package/dist/{tabs-BonSZ_0a.js.map → tabs-DWwPvmmz.js.map} +1 -1
  322. package/dist/{tabs-CrZf6_5d.js → tabs-DkzoTBog.js} +2 -2
  323. package/dist/{tabs-CrZf6_5d.js.map → tabs-DkzoTBog.js.map} +1 -1
  324. package/dist/{tabs-lu27pQCB.d.ts → tabs-_OKB-QwX.d.ts} +6 -6
  325. package/dist/{tabs-lu27pQCB.d.ts.map → tabs-_OKB-QwX.d.ts.map} +1 -1
  326. package/dist/{tailwind-indicator-z53_j-ZR.js → tailwind-indicator-bD9Vctae.js} +1 -1
  327. package/dist/{tailwind-indicator-z53_j-ZR.js.map → tailwind-indicator-bD9Vctae.js.map} +1 -1
  328. package/dist/tailwind-indicator-pbpZIrz8.d.ts +7 -0
  329. package/dist/{tailwind-indicator-xsIX1AXQ.d.ts.map → tailwind-indicator-pbpZIrz8.d.ts.map} +1 -1
  330. package/dist/{themes-DSmnGG_O.js → themes-4-2kkrnX.js} +2 -2
  331. package/dist/{themes-DSmnGG_O.js.map → themes-4-2kkrnX.js.map} +1 -1
  332. package/dist/{themes-M1nDuQoV.d.ts → themes-CJcZ8etE.d.ts} +1 -1
  333. package/dist/{themes-M1nDuQoV.d.ts.map → themes-CJcZ8etE.d.ts.map} +1 -1
  334. package/dist/{typepography-lU2xNaSb.d.ts → typepography-1RFDvJqo.d.ts} +13 -13
  335. package/dist/{typepography-lU2xNaSb.d.ts.map → typepography-1RFDvJqo.d.ts.map} +1 -1
  336. package/dist/{typepography-Bn-ZmO71.js → typepography-Bo-fCx4O.js} +1 -1
  337. package/dist/{typepography-Bn-ZmO71.js.map → typepography-Bo-fCx4O.js.map} +1 -1
  338. package/dist/types/index.d.ts +4 -4
  339. package/dist/types/mdx-runtime.d.ts +1 -1
  340. package/dist/types/nav.d.ts +1 -1
  341. package/dist/types/unist.d.ts +2 -2
  342. package/dist/{types-DsWNixhq.d.ts → types-Cso0EjCR.d.ts} +3 -3
  343. package/dist/{types-DsWNixhq.d.ts.map → types-Cso0EjCR.d.ts.map} +1 -1
  344. package/dist/{unist-q3NIH9ya.d.ts → unist-C-gDxuYf.d.ts} +2 -2
  345. package/dist/{unist-q3NIH9ya.d.ts.map → unist-C-gDxuYf.d.ts.map} +1 -1
  346. package/dist/{use-colors-CBAXuqtP.d.ts → use-colors-CCxJ3J6E.d.ts} +3 -3
  347. package/dist/use-colors-CCxJ3J6E.d.ts.map +1 -0
  348. package/dist/{use-colors-BiVXxR31.js → use-colors-DnvpPAsY.js} +2 -2
  349. package/dist/{use-colors-BiVXxR31.js.map → use-colors-DnvpPAsY.js.map} +1 -1
  350. package/dist/{use-config-3gNoFPn6.d.ts → use-config-CVGpN_gD.d.ts} +2 -2
  351. package/dist/{use-config-3gNoFPn6.d.ts.map → use-config-CVGpN_gD.d.ts.map} +1 -1
  352. package/dist/{use-config-CkoOe8Fw.js → use-config-LFMLgvtw.js} +1 -1
  353. package/dist/{use-config-CkoOe8Fw.js.map → use-config-LFMLgvtw.js.map} +1 -1
  354. package/dist/{use-lift-mode-CRK6jO9I.js → use-lift-mode-CSepfmVG.js} +1 -1
  355. package/dist/{use-lift-mode-CRK6jO9I.js.map → use-lift-mode-CSepfmVG.js.map} +1 -1
  356. package/dist/{use-lift-mode-DAQuqoIt.d.ts → use-lift-mode-GxKOrDG3.d.ts} +1 -1
  357. package/dist/use-lift-mode-GxKOrDG3.d.ts.map +1 -0
  358. package/dist/{use-meta-colors-Dlzg21A8.d.ts → use-meta-colors-Bl9VUeAa.d.ts} +1 -1
  359. package/dist/use-meta-colors-Bl9VUeAa.d.ts.map +1 -0
  360. package/dist/{use-meta-colors-ye3z03RL.js → use-meta-colors-DzRdgj3z.js} +2 -2
  361. package/dist/{use-meta-colors-ye3z03RL.js.map → use-meta-colors-DzRdgj3z.js.map} +1 -1
  362. package/dist/{use-mounted-CqC1Le-n.d.ts → use-mounted-CdYgfQY4.d.ts} +1 -1
  363. package/dist/use-mounted-CdYgfQY4.d.ts.map +1 -0
  364. package/dist/{use-mounted-Bi7J0dBb.js → use-mounted-DDwvpoyo.js} +1 -1
  365. package/dist/{use-mounted-Bi7J0dBb.js.map → use-mounted-DDwvpoyo.js.map} +1 -1
  366. package/dist/{use-themes-config-DfxLBbQI.d.ts → use-themes-config-BkPUKg8e.d.ts} +2 -2
  367. package/dist/{use-themes-config-DfxLBbQI.d.ts.map → use-themes-config-BkPUKg8e.d.ts.map} +1 -1
  368. package/dist/{use-themes-config-t4NBMHl1.js → use-themes-config-DIrOCXXn.js} +2 -2
  369. package/dist/{use-themes-config-t4NBMHl1.js.map → use-themes-config-DIrOCXXn.js.map} +1 -1
  370. package/dist/{utils-BGWVtLBe.d.ts → utils-CZyLoko1.d.ts} +1 -1
  371. package/dist/{utils-BGWVtLBe.d.ts.map → utils-CZyLoko1.d.ts.map} +1 -1
  372. package/dist/{utils-CN0aIGfJ.js → utils-sz03HSST.js} +1 -1
  373. package/dist/{utils-CN0aIGfJ.js.map → utils-sz03HSST.js.map} +1 -1
  374. package/dist/velite/config.d.ts.map +1 -1
  375. package/dist/velite/config.js +1 -1
  376. package/dist/velite/config.js.map +1 -1
  377. package/dist/velite/index.d.ts +7 -7
  378. package/dist/velite/index.js +1 -1
  379. package/dist/velite/plugins/hast-properties.d.ts +2 -2
  380. package/dist/velite/plugins/hast-properties.js +1 -1
  381. package/dist/velite/plugins/index.d.ts +7 -7
  382. package/dist/velite/plugins/index.js +1 -1
  383. package/dist/velite/plugins/metadata-plugin.d.ts +3 -3
  384. package/dist/velite/plugins/metadata-plugin.js +1 -1
  385. package/dist/velite/plugins/metadata-utils.js +1 -1
  386. package/dist/velite/plugins/rehype-mermaid.d.ts +3 -3
  387. package/dist/velite/plugins/rehype-mermaid.js +1 -1
  388. package/dist/velite/plugins/rehype-npm-command.d.ts +3 -3
  389. package/dist/velite/plugins/rehype-npm-command.js +1 -1
  390. package/dist/velite/plugins/rehype-pre-block-source.d.ts +3 -3
  391. package/dist/velite/plugins/rehype-pre-block-source.js +1 -1
  392. package/dist/velite/plugins/rehype-title.d.ts +3 -3
  393. package/dist/velite/plugins/rehype-title.js +1 -1
  394. package/dist/{visibility-hidden-CAHx9RLp-CN32k1Im.js → visibility-hidden-CAHx9RLp-DoPUpniv.js} +1 -1
  395. package/dist/{visibility-hidden-CAHx9RLp-CN32k1Im.js.map → visibility-hidden-CAHx9RLp-DoPUpniv.js.map} +1 -1
  396. package/package.json +3 -3
  397. package/src/components/layouts/site-header.tsx +158 -21
  398. package/src/styles/base.css +34 -2
  399. package/src/styles/docs.css +55 -2
  400. package/src/styles/mdx-base.css +3 -1
  401. package/src/styles/mdx-code.css +3 -3
  402. package/src/velite/config.ts +1 -5
  403. package/dist/code-block-CvkRo03f.d.ts.map +0 -1
  404. package/dist/command-menu-BteUvSP4.d.ts +0 -7
  405. package/dist/components-list-JYB1Djx7.d.ts +0 -12
  406. package/dist/docs-copy-page-QXgUbioW.js +0 -2
  407. package/dist/docs-copy-page-QXgUbioW.js.map +0 -1
  408. package/dist/docs-toc-Bqz0glt_.d.ts +0 -13
  409. package/dist/icons-Svr12EIY.d.ts +0 -33
  410. package/dist/icons-Svr12EIY.d.ts.map +0 -1
  411. package/dist/main-nav-Bs_3aIa9.d.ts +0 -7
  412. package/dist/main-nav-Bs_3aIa9.d.ts.map +0 -1
  413. package/dist/mdx-BjKd-lr3.d.ts +0 -12
  414. package/dist/mdx-CpGlQTio.js +0 -2
  415. package/dist/mdx-components-registry-H3xD8Epe.js +0 -2
  416. package/dist/mobile-nav-DMiJRcRb.d.ts +0 -7
  417. package/dist/mobile-nav-DMiJRcRb.d.ts.map +0 -1
  418. package/dist/mode-toggle-CvStvAZ_.d.ts +0 -7
  419. package/dist/mode-toggle-CvStvAZ_.d.ts.map +0 -1
  420. package/dist/page-header-CCOOtADG.d.ts.map +0 -1
  421. package/dist/providers-CPondy8d.d.ts.map +0 -1
  422. package/dist/rehype-mermaid-DPZ6UzOu.d.ts.map +0 -1
  423. package/dist/rehype-npm-command-khRZrj_X.d.ts.map +0 -1
  424. package/dist/rehype-title-CTj31zR2.d.ts.map +0 -1
  425. package/dist/site-footer-BRyt4-dx.d.ts +0 -8
  426. package/dist/site-header-C4ynyWai.d.ts +0 -8
  427. package/dist/site-header-C4ynyWai.d.ts.map +0 -1
  428. package/dist/site-header-aYzXrGgF.js +0 -2
  429. package/dist/site-header-aYzXrGgF.js.map +0 -1
  430. package/dist/tailwind-indicator-xsIX1AXQ.d.ts +0 -7
  431. package/dist/use-colors-CBAXuqtP.d.ts.map +0 -1
  432. package/dist/use-lift-mode-DAQuqoIt.d.ts.map +0 -1
  433. package/dist/use-meta-colors-Dlzg21A8.d.ts.map +0 -1
  434. package/dist/use-mounted-CqC1Le-n.d.ts.map +0 -1
  435. /package/dist/{code-B8oMaOlf.js → code-BuWlxrky.js} +0 -0
  436. /package/dist/{context-BC4O8IkN.js → context-d52mWdKF.js} +0 -0
  437. /package/dist/{context.types-xqn674mu.js → context.types-BtIPTDnR.js} +0 -0
  438. /package/dist/{direction-BgdQqJSh.js → direction-BCZ6Jklr.js} +0 -0
  439. /package/dist/{docs-BxKlMynn.js → docs-oiSmq9MA.js} +0 -0
  440. /package/dist/{index-2ODhJ4PF.d.ts → index-2g6qjnfC.d.ts} +0 -0
  441. /package/dist/{index-BOXZdgrl.d.ts → index-BqJL0rSj.d.ts} +0 -0
  442. /package/dist/{index-CDXWDYLH.d.ts → index-C3sUSN9A.d.ts} +0 -0
  443. /package/dist/{index-CEmd2iJF.d.ts → index-CJOkJMYm.d.ts} +0 -0
  444. /package/dist/{index-CMgWXPTi.d.ts → index-COTJSnad.d.ts} +0 -0
  445. /package/dist/{index-J4eIjbSW.d.ts → index-DKjTz6WE.d.ts} +0 -0
  446. /package/dist/{index-PiDlmF8F.d.ts → index-DU9NHLk5.d.ts} +0 -0
  447. /package/dist/{layouts-CZzkzPUj.js → layouts-CoDlKIIB.js} +0 -0
  448. /package/dist/{mdx-components-DVXN21iW.js → mdx-components-BIki5jZo.js} +0 -0
  449. /package/dist/{mdx-runtime-8ZPauNCe.js → mdx-runtime-CYIN9t8J.js} +0 -0
  450. /package/dist/{nav-n66GykpT.js → nav-CCvBufk2.js} +0 -0
  451. /package/dist/{pre-block-B4y5yM69.js → pre-block-BN3ZQQwl.js} +0 -0
  452. /package/dist/{typography-BcEByhvR.js → typography-BaOwC15y.js} +0 -0
  453. /package/dist/{typography-BjwZeImL.d.ts → typography-C040ELJU.d.ts} +0 -0
  454. /package/dist/{unist-Dtu3x3-k.js → unist-CMdu5xbz.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"use-config-CkoOe8Fw.js","names":[],"sources":["../src/hooks/use-config.ts"],"sourcesContent":["import type { Style } from '@duck-docs/lib/registry-styles'\nimport { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\ntype Config = {\n style: Style['name']\n theme: string\n radius: number\n}\n\nconst configAtom = atomWithStorage<Config>('config', {\n radius: 0.5,\n style: 'default',\n theme: 'zinc',\n})\n\nexport function useConfig() {\n return useAtom(configAtom)\n}\n"],"mappings":"8EAUA,MAAM,EAAa,EAAwB,SAAU,CACnD,OAAQ,GACR,MAAO,UACP,MAAO,OACR,CAAC,CAEF,SAAgB,GAAY,CAC1B,OAAO,EAAQ,EAAW"}
1
+ {"version":3,"file":"use-config-LFMLgvtw.js","names":[],"sources":["../src/hooks/use-config.ts"],"sourcesContent":["import type { Style } from '@duck-docs/lib/registry-styles'\nimport { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\ntype Config = {\n style: Style['name']\n theme: string\n radius: number\n}\n\nconst configAtom = atomWithStorage<Config>('config', {\n radius: 0.5,\n style: 'default',\n theme: 'zinc',\n})\n\nexport function useConfig() {\n return useAtom(configAtom)\n}\n"],"mappings":"8EAUA,MAAM,EAAa,EAAwB,SAAU,CACnD,OAAQ,GACR,MAAO,UACP,MAAO,OACR,CAAC,CAEF,SAAgB,GAAY,CAC1B,OAAO,EAAQ,EAAW"}
@@ -1,2 +1,2 @@
1
1
  import{useAtom as e}from"jotai";import{atomWithStorage as t}from"jotai/utils";const n=t(`lift-mode`,[]);function r(t){let[r,i]=e(n);function a(e){i(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}return{isLiftMode:r.includes(t),toggleLiftMode:a}}export{r as t};
2
- //# sourceMappingURL=use-lift-mode-CRK6jO9I.js.map
2
+ //# sourceMappingURL=use-lift-mode-CSepfmVG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-lift-mode-CRK6jO9I.js","names":["name"],"sources":["../src/hooks/use-lift-mode.ts"],"sourcesContent":["import { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\nconst configAtom = atomWithStorage<string[]>('lift-mode', [])\n\nexport function useLiftMode(name: string) {\n const [chunks, setChunks] = useAtom(configAtom)\n\n function toggleLiftMode(name: string) {\n setChunks((prev) => {\n return prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name]\n })\n }\n\n return {\n isLiftMode: chunks.includes(name),\n toggleLiftMode,\n }\n}\n"],"mappings":"8EAGA,MAAM,EAAa,EAA0B,YAAa,EAAE,CAAC,CAE7D,SAAgB,EAAY,EAAc,CACxC,GAAM,CAAC,EAAQ,GAAa,EAAQ,EAAW,CAE/C,SAAS,EAAe,EAAc,CACpC,EAAW,GACF,EAAK,SAASA,EAAK,CAAG,EAAK,OAAQ,GAAM,IAAMA,EAAK,CAAG,CAAC,GAAG,EAAMA,EAAK,CAC7E,CAGJ,MAAO,CACL,WAAY,EAAO,SAAS,EAAK,CACjC,iBACD"}
1
+ {"version":3,"file":"use-lift-mode-CSepfmVG.js","names":["name"],"sources":["../src/hooks/use-lift-mode.ts"],"sourcesContent":["import { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\nconst configAtom = atomWithStorage<string[]>('lift-mode', [])\n\nexport function useLiftMode(name: string) {\n const [chunks, setChunks] = useAtom(configAtom)\n\n function toggleLiftMode(name: string) {\n setChunks((prev) => {\n return prev.includes(name) ? prev.filter((n) => n !== name) : [...prev, name]\n })\n }\n\n return {\n isLiftMode: chunks.includes(name),\n toggleLiftMode,\n }\n}\n"],"mappings":"8EAGA,MAAM,EAAa,EAA0B,YAAa,EAAE,CAAC,CAE7D,SAAgB,EAAY,EAAc,CACxC,GAAM,CAAC,EAAQ,GAAa,EAAQ,EAAW,CAE/C,SAAS,EAAe,EAAc,CACpC,EAAW,GACF,EAAK,SAASA,EAAK,CAAG,EAAK,OAAQ,GAAM,IAAMA,EAAK,CAAG,CAAC,GAAG,EAAMA,EAAK,CAC7E,CAGJ,MAAO,CACL,WAAY,EAAO,SAAS,EAAK,CACjC,iBACD"}
@@ -5,4 +5,4 @@ declare function useLiftMode(name: string): {
5
5
  };
6
6
  //#endregion
7
7
  export { useLiftMode as t };
8
- //# sourceMappingURL=use-lift-mode-DAQuqoIt.d.ts.map
8
+ //# sourceMappingURL=use-lift-mode-GxKOrDG3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-lift-mode-GxKOrDG3.d.ts","names":[],"sources":["../src/hooks/use-lift-mode.ts"],"sourcesContent":[],"mappings":";iBAKgB,WAAA;EAAA,UAAA,EAAA,OAAW"}
@@ -5,4 +5,4 @@ declare function useMetaColor(): {
5
5
  };
6
6
  //#endregion
7
7
  export { useMetaColor as t };
8
- //# sourceMappingURL=use-meta-colors-Dlzg21A8.d.ts.map
8
+ //# sourceMappingURL=use-meta-colors-Bl9VUeAa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-meta-colors-Bl9VUeAa.d.ts","names":[],"sources":["../src/hooks/use-meta-colors.ts"],"sourcesContent":[],"mappings":";iBASgB,YAAA,CAAA;EAAA,SAAA,EAAA,MAAY"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./context-Bu-bPlyW.js";import*as t from"react";import{useTheme as n}from"next-themes";const r={dark:`#000000`,light:`#ffffff`};function i(){let{resolvedTheme:i}=n(),a=e().metaThemeColors??r;return{metaColor:t.useMemo(()=>i===`dark`?a.dark:a.light,[a.dark,a.light,i]),setMetaColor:t.useCallback(e=>{document.querySelector(`meta[name="theme-color"]`)?.setAttribute(`content`,e)},[])}}export{i as t};
2
- //# sourceMappingURL=use-meta-colors-ye3z03RL.js.map
1
+ import{o as e}from"./context-8iUWV99o.js";import*as t from"react";import{useTheme as n}from"next-themes";const r={dark:`#000000`,light:`#ffffff`};function i(){let{resolvedTheme:i}=n(),a=e().metaThemeColors??r;return{metaColor:t.useMemo(()=>i===`dark`?a.dark:a.light,[a.dark,a.light,i]),setMetaColor:t.useCallback(e=>{document.querySelector(`meta[name="theme-color"]`)?.setAttribute(`content`,e)},[])}}export{i as t};
2
+ //# sourceMappingURL=use-meta-colors-DzRdgj3z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-meta-colors-ye3z03RL.js","names":["React"],"sources":["../src/hooks/use-meta-colors.ts"],"sourcesContent":["import { useSiteConfig } from '@duck-docs/context'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\n\nconst DEFAULT_META_THEME_COLORS = {\n dark: '#000000',\n light: '#ffffff',\n}\n\nexport function useMetaColor() {\n const { resolvedTheme } = useTheme()\n const siteConfig = useSiteConfig()\n const metaThemeColors = siteConfig.metaThemeColors ?? DEFAULT_META_THEME_COLORS\n\n const metaColor = React.useMemo(() => {\n return resolvedTheme !== 'dark' ? metaThemeColors.light : metaThemeColors.dark\n }, [metaThemeColors.dark, metaThemeColors.light, resolvedTheme])\n\n const setMetaColor = React.useCallback((color: string) => {\n document.querySelector('meta[name=\"theme-color\"]')?.setAttribute('content', color)\n }, [])\n\n return {\n metaColor,\n setMetaColor,\n }\n}\n"],"mappings":"yGAIA,MAAM,EAA4B,CAChC,KAAM,UACN,MAAO,UACR,CAED,SAAgB,GAAe,CAC7B,GAAM,CAAE,iBAAkB,GAAU,CAE9B,EADa,GAAe,CACC,iBAAmB,EAUtD,MAAO,CACL,UATgBA,EAAM,YACf,IAAkB,OAAiC,EAAgB,KAAxC,EAAgB,MACjD,CAAC,EAAgB,KAAM,EAAgB,MAAO,EAAc,CAAC,CAQ9D,aANmBA,EAAM,YAAa,GAAkB,CACxD,SAAS,cAAc,2BAA2B,EAAE,aAAa,UAAW,EAAM,EACjF,EAAE,CAAC,CAKL"}
1
+ {"version":3,"file":"use-meta-colors-DzRdgj3z.js","names":["React"],"sources":["../src/hooks/use-meta-colors.ts"],"sourcesContent":["import { useSiteConfig } from '@duck-docs/context'\nimport { useTheme } from 'next-themes'\nimport * as React from 'react'\n\nconst DEFAULT_META_THEME_COLORS = {\n dark: '#000000',\n light: '#ffffff',\n}\n\nexport function useMetaColor() {\n const { resolvedTheme } = useTheme()\n const siteConfig = useSiteConfig()\n const metaThemeColors = siteConfig.metaThemeColors ?? DEFAULT_META_THEME_COLORS\n\n const metaColor = React.useMemo(() => {\n return resolvedTheme !== 'dark' ? metaThemeColors.light : metaThemeColors.dark\n }, [metaThemeColors.dark, metaThemeColors.light, resolvedTheme])\n\n const setMetaColor = React.useCallback((color: string) => {\n document.querySelector('meta[name=\"theme-color\"]')?.setAttribute('content', color)\n }, [])\n\n return {\n metaColor,\n setMetaColor,\n }\n}\n"],"mappings":"yGAIA,MAAM,EAA4B,CAChC,KAAM,UACN,MAAO,UACR,CAED,SAAgB,GAAe,CAC7B,GAAM,CAAE,iBAAkB,GAAU,CAE9B,EADa,GAAe,CACC,iBAAmB,EAUtD,MAAO,CACL,UATgBA,EAAM,YACf,IAAkB,OAAiC,EAAgB,KAAxC,EAAgB,MACjD,CAAC,EAAgB,KAAM,EAAgB,MAAO,EAAc,CAAC,CAQ9D,aANmBA,EAAM,YAAa,GAAkB,CACxD,SAAS,cAAc,2BAA2B,EAAE,aAAa,UAAW,EAAM,EACjF,EAAE,CAAC,CAKL"}
@@ -2,4 +2,4 @@
2
2
  declare function useMounted(): boolean;
3
3
  //#endregion
4
4
  export { useMounted as t };
5
- //# sourceMappingURL=use-mounted-CqC1Le-n.d.ts.map
5
+ //# sourceMappingURL=use-mounted-CdYgfQY4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mounted-CdYgfQY4.d.ts","names":[],"sources":["../src/hooks/use-mounted.ts"],"sourcesContent":[],"mappings":";iBAEgB,UAAA,CAAA"}
@@ -1,2 +1,2 @@
1
1
  import*as e from"react";function t(){let[t,n]=e.useState(!1);return e.useEffect(()=>{n(!0)},[]),t}export{t};
2
- //# sourceMappingURL=use-mounted-Bi7J0dBb.js.map
2
+ //# sourceMappingURL=use-mounted-DDwvpoyo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-mounted-Bi7J0dBb.js","names":["React"],"sources":["../src/hooks/use-mounted.ts"],"sourcesContent":["import * as React from 'react'\n\nexport function useMounted() {\n const [mounted, setMounted] = React.useState(false)\n\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n return mounted\n}\n"],"mappings":"wBAEA,SAAgB,GAAa,CAC3B,GAAM,CAAC,EAAS,GAAcA,EAAM,SAAS,GAAM,CAMnD,OAJA,EAAM,cAAgB,CACpB,EAAW,GAAK,EACf,EAAE,CAAC,CAEC"}
1
+ {"version":3,"file":"use-mounted-DDwvpoyo.js","names":["React"],"sources":["../src/hooks/use-mounted.ts"],"sourcesContent":["import * as React from 'react'\n\nexport function useMounted() {\n const [mounted, setMounted] = React.useState(false)\n\n React.useEffect(() => {\n setMounted(true)\n }, [])\n\n return mounted\n}\n"],"mappings":"wBAEA,SAAgB,GAAa,CAC3B,GAAM,CAAC,EAAS,GAAcA,EAAM,SAAS,GAAM,CAMnD,OAJA,EAAM,cAAgB,CACpB,EAAW,GAAK,EACf,EAAE,CAAC,CAEC"}
@@ -1,4 +1,4 @@
1
- import { n as Theme } from "./themes-M1nDuQoV.js";
1
+ import { n as Theme } from "./themes-CJcZ8etE.js";
2
2
  import * as jotai_utils1 from "jotai/utils";
3
3
 
4
4
  //#region src/hooks/use-themes-config.d.ts
@@ -11,4 +11,4 @@ declare function useThemesConfig(): {
11
11
  };
12
12
  //#endregion
13
13
  export { useThemesConfig as t };
14
- //# sourceMappingURL=use-themes-config-DfxLBbQI.d.ts.map
14
+ //# sourceMappingURL=use-themes-config-BkPUKg8e.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-themes-config-DfxLBbQI.d.ts","names":[],"sources":["../src/hooks/use-themes-config.ts"],"sourcesContent":[],"mappings":";;;;KAIK,YAAA;eACU;;AADV,iBAQW,eAAA,CAAA,CAPI,EAAA;EAOJ,eAAA,EAAA,CAAe,MAAA,EAAA,OAAA,YAAA,CAAA,KAAA,eAAA,GAAA,CAAA,CAAA,IAAA,cAAA,EAAA,GAAA,yBAAA,eAAA,CAAA,EAAA,GAAA,IAAA;EAAA,YAAA,cAAA"}
1
+ {"version":3,"file":"use-themes-config-BkPUKg8e.d.ts","names":[],"sources":["../src/hooks/use-themes-config.ts"],"sourcesContent":[],"mappings":";;;;KAIK,YAAA;eACU;;AADV,iBAQW,eAAA,CAAA,CAPI,EAAA;EAOJ,eAAA,EAAA,CAAe,MAAA,EAAA,OAAA,YAAA,CAAA,KAAA,eAAA,GAAA,CAAA,CAAA,IAAA,cAAA,EAAA,GAAA,yBAAA,eAAA,CAAA,EAAA,GAAA,IAAA;EAAA,YAAA,cAAA"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./themes-DSmnGG_O.js";import{useAtom as t}from"jotai";import{atomWithStorage as n}from"jotai/utils";const r=n(`themes:config`,{activeTheme:e[0]});function i(){let[e,n]=t(r);return{setThemesConfig:n,themesConfig:e}}export{i as t};
2
- //# sourceMappingURL=use-themes-config-t4NBMHl1.js.map
1
+ import{t as e}from"./themes-4-2kkrnX.js";import{useAtom as t}from"jotai";import{atomWithStorage as n}from"jotai/utils";const r=n(`themes:config`,{activeTheme:e[0]});function i(){let[e,n]=t(r);return{setThemesConfig:n,themesConfig:e}}export{i as t};
2
+ //# sourceMappingURL=use-themes-config-DIrOCXXn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-themes-config-t4NBMHl1.js","names":[],"sources":["../src/hooks/use-themes-config.ts"],"sourcesContent":["import { THEMES, type Theme } from '@duck-docs/lib/themes'\nimport { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\ntype ThemesConfig = {\n activeTheme: Theme\n}\n\nconst configAtom = atomWithStorage<ThemesConfig>('themes:config', {\n activeTheme: THEMES[0] as Theme,\n})\n\nexport function useThemesConfig() {\n const [themesConfig, setThemesConfig] = useAtom(configAtom)\n\n return { setThemesConfig, themesConfig }\n}\n"],"mappings":"uHAQA,MAAM,EAAa,EAA8B,gBAAiB,CAChE,YAAa,EAAO,GACrB,CAAC,CAEF,SAAgB,GAAkB,CAChC,GAAM,CAAC,EAAc,GAAmB,EAAQ,EAAW,CAE3D,MAAO,CAAE,kBAAiB,eAAc"}
1
+ {"version":3,"file":"use-themes-config-DIrOCXXn.js","names":[],"sources":["../src/hooks/use-themes-config.ts"],"sourcesContent":["import { THEMES, type Theme } from '@duck-docs/lib/themes'\nimport { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\n\ntype ThemesConfig = {\n activeTheme: Theme\n}\n\nconst configAtom = atomWithStorage<ThemesConfig>('themes:config', {\n activeTheme: THEMES[0] as Theme,\n})\n\nexport function useThemesConfig() {\n const [themesConfig, setThemesConfig] = useAtom(configAtom)\n\n return { setThemesConfig, themesConfig }\n}\n"],"mappings":"uHAQA,MAAM,EAAa,EAA8B,gBAAiB,CAChE,YAAa,EAAO,GACrB,CAAC,CAEF,SAAgB,GAAkB,CAChC,GAAM,CAAC,EAAc,GAAmB,EAAQ,EAAW,CAE3D,MAAO,CAAE,kBAAiB,eAAc"}
@@ -6,4 +6,4 @@ declare function groupDataByNumbers<T>(strings: T[], groupSizes: number[]): T[][
6
6
  declare function groupArrays<T>(numbers: number[], arr: T[]): T[][];
7
7
  //#endregion
8
8
  export { groupDataByNumbers as a, groupArrays as i, filteredObject as n, formatDate as r, absoluteUrl as t };
9
- //# sourceMappingURL=utils-BGWVtLBe.d.ts.map
9
+ //# sourceMappingURL=utils-CZyLoko1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-BGWVtLBe.d.ts","names":[],"sources":["../src/lib/utils.ts"],"sourcesContent":[],"mappings":";iBAAgB,UAAA;AAAA,iBASA,WAAA,CATU,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AASV,cAUH,cAVc,EAAA,CAAA,UAUc,MAVd,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAUwD,CAVxD,EAAA,GAU4D,OAV5D,CAUoE,CAVpE,CAAA;AAUd,iBAIG,kBAFf,CAAA,CAAA,CAAA,CAAA,OAAA,EAE8C,CAF9C,EAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,EAE0E,CAF1E,EAAA,EAAA;AAFwC,iBAiBzB,WAjByB,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAiBc,CAjBd,EAAA,CAAA,EAiBoB,CAjBpB,EAAA,EAAA"}
1
+ {"version":3,"file":"utils-CZyLoko1.d.ts","names":[],"sources":["../src/lib/utils.ts"],"sourcesContent":[],"mappings":";iBAAgB,UAAA;AAAA,iBASA,WAAA,CATU,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AASV,cAUH,cAVc,EAAA,CAAA,UAUc,MAVd,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAUwD,CAVxD,EAAA,GAU4D,OAV5D,CAUoE,CAVpE,CAAA;AAUd,iBAIG,kBAFf,CAAA,CAAA,CAAA,CAAA,OAAA,EAE8C,CAF9C,EAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,EAE0E,CAF1E,EAAA,EAAA;AAFwC,iBAiBzB,WAjByB,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAiBc,CAjBd,EAAA,CAAA,EAiBoB,CAjBpB,EAAA,EAAA"}
@@ -1,2 +1,2 @@
1
1
  function e(e){return new Date(e).toLocaleDateString(`en-US`,{day:`numeric`,month:`long`,year:`numeric`})}function t(e){let t=process.env.NEXT_PUBLIC_APP_URL||``;return t?`${t.replace(/\/+$/,``)}${e.startsWith(`/`)?e:`/${e}`}`:e}const n=(e,t)=>Object.fromEntries(Object.entries(t).filter(([t])=>!e.includes(t)));function r(e,t){let n=[],r=0;for(let i of t){let t=e.slice(r,r+i);n.push(t),r+=i}return n}function i(e,t){let n=[],r=0;for(let i of e){let e=t.slice(r,r+i);n.push(e),r+=i}return n}export{r as a,i,n,e as r,t};
2
- //# sourceMappingURL=utils-CN0aIGfJ.js.map
2
+ //# sourceMappingURL=utils-sz03HSST.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-CN0aIGfJ.js","names":["result: T[][]"],"sources":["../src/lib/utils.ts"],"sourcesContent":["export function formatDate(input: string | number): string {\n const date = new Date(input)\n return date.toLocaleDateString('en-US', {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n}\n\nexport function absoluteUrl(path: string) {\n const baseUrl = process.env.NEXT_PUBLIC_APP_URL || ''\n if (!baseUrl) return path\n\n const normalizedBase = baseUrl.replace(/\\/+$/, '')\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n\n return `${normalizedBase}${normalizedPath}`\n}\n\nexport const filteredObject = <T extends Record<string, any>>(keys: string[], obj: T): Partial<T> => {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key))) as Partial<T>\n}\n\nexport function groupDataByNumbers<T>(strings: T[], groupSizes: number[]): T[][] {\n const result: T[][] = []\n let index = 0\n\n for (const size of groupSizes) {\n const group = strings.slice(index, index + size)\n result.push(group)\n index += size\n }\n\n return result\n}\n\nexport function groupArrays<T>(numbers: number[], arr: T[]): T[][] {\n const result: T[][] = []\n let index = 0\n\n for (const num of numbers) {\n const headerGroup = arr.slice(index, index + num)\n result.push(headerGroup)\n index += num\n }\n\n return result\n}\n"],"mappings":"AAAA,SAAgB,EAAW,EAAgC,CAEzD,OADa,IAAI,KAAK,EAAM,CAChB,mBAAmB,QAAS,CACtC,IAAK,UACL,MAAO,OACP,KAAM,UACP,CAAC,CAGJ,SAAgB,EAAY,EAAc,CACxC,IAAM,EAAU,QAAQ,IAAI,qBAAuB,GAMnD,OALK,EAKE,GAHgB,EAAQ,QAAQ,OAAQ,GAAG,GAC3B,EAAK,WAAW,IAAI,CAAG,EAAO,IAAI,MAHpC,EAQvB,MAAa,GAAiD,EAAgB,IACrE,OAAO,YAAY,OAAO,QAAQ,EAAI,CAAC,QAAQ,CAAC,KAAS,CAAC,EAAK,SAAS,EAAI,CAAC,CAAC,CAGvF,SAAgB,EAAsB,EAAc,EAA6B,CAC/E,IAAMA,EAAgB,EAAE,CACpB,EAAQ,EAEZ,IAAK,IAAM,KAAQ,EAAY,CAC7B,IAAM,EAAQ,EAAQ,MAAM,EAAO,EAAQ,EAAK,CAChD,EAAO,KAAK,EAAM,CAClB,GAAS,EAGX,OAAO,EAGT,SAAgB,EAAe,EAAmB,EAAiB,CACjE,IAAMA,EAAgB,EAAE,CACpB,EAAQ,EAEZ,IAAK,IAAM,KAAO,EAAS,CACzB,IAAM,EAAc,EAAI,MAAM,EAAO,EAAQ,EAAI,CACjD,EAAO,KAAK,EAAY,CACxB,GAAS,EAGX,OAAO"}
1
+ {"version":3,"file":"utils-sz03HSST.js","names":["result: T[][]"],"sources":["../src/lib/utils.ts"],"sourcesContent":["export function formatDate(input: string | number): string {\n const date = new Date(input)\n return date.toLocaleDateString('en-US', {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })\n}\n\nexport function absoluteUrl(path: string) {\n const baseUrl = process.env.NEXT_PUBLIC_APP_URL || ''\n if (!baseUrl) return path\n\n const normalizedBase = baseUrl.replace(/\\/+$/, '')\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n\n return `${normalizedBase}${normalizedPath}`\n}\n\nexport const filteredObject = <T extends Record<string, any>>(keys: string[], obj: T): Partial<T> => {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key))) as Partial<T>\n}\n\nexport function groupDataByNumbers<T>(strings: T[], groupSizes: number[]): T[][] {\n const result: T[][] = []\n let index = 0\n\n for (const size of groupSizes) {\n const group = strings.slice(index, index + size)\n result.push(group)\n index += size\n }\n\n return result\n}\n\nexport function groupArrays<T>(numbers: number[], arr: T[]): T[][] {\n const result: T[][] = []\n let index = 0\n\n for (const num of numbers) {\n const headerGroup = arr.slice(index, index + num)\n result.push(headerGroup)\n index += num\n }\n\n return result\n}\n"],"mappings":"AAAA,SAAgB,EAAW,EAAgC,CAEzD,OADa,IAAI,KAAK,EAAM,CAChB,mBAAmB,QAAS,CACtC,IAAK,UACL,MAAO,OACP,KAAM,UACP,CAAC,CAGJ,SAAgB,EAAY,EAAc,CACxC,IAAM,EAAU,QAAQ,IAAI,qBAAuB,GAMnD,OALK,EAKE,GAHgB,EAAQ,QAAQ,OAAQ,GAAG,GAC3B,EAAK,WAAW,IAAI,CAAG,EAAO,IAAI,MAHpC,EAQvB,MAAa,GAAiD,EAAgB,IACrE,OAAO,YAAY,OAAO,QAAQ,EAAI,CAAC,QAAQ,CAAC,KAAS,CAAC,EAAK,SAAS,EAAI,CAAC,CAAC,CAGvF,SAAgB,EAAsB,EAAc,EAA6B,CAC/E,IAAMA,EAAgB,EAAE,CACpB,EAAQ,EAEZ,IAAK,IAAM,KAAQ,EAAY,CAC7B,IAAM,EAAQ,EAAQ,MAAM,EAAO,EAAQ,EAAK,CAChD,EAAO,KAAK,EAAM,CAClB,GAAS,EAGX,OAAO,EAGT,SAAgB,EAAe,EAAmB,EAAiB,CACjE,IAAMA,EAAgB,EAAE,CACpB,EAAQ,EAEZ,IAAK,IAAM,KAAO,EAAS,CACzB,IAAM,EAAc,EAAI,MAAM,EAAO,EAAQ,EAAI,CACjD,EAAO,KAAK,EAAY,CACxB,GAAS,EAGX,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","names":[],"sources":["../../src/velite/config.ts"],"sourcesContent":[],"mappings":";;;KAaY,uBAAA;;EAAA,aAAA,CAAA,EAEM,SAFN,EAAuB;EAEjB,mBAAA,CAAA,EACM,SADN,EAAA;EACM,aAAA,CAAA,EACN,SADM,EAAA;EACN,mBAAA,CAAA,EACM,SADN,EAAA;CACM;AAAS,iBA4DjB,sBAAA,CA5DiB;EAAA,WAAA;EAAA,aAAA;EAAA,mBAAA;EAAA,aAAA;EAAA;AAAA,CAAA,CAAA,EAkE9B,uBAlE8B,CAAA,EAAA,GAAA;AA4DjB,cA6DH,gBA7DyB,EAAA,GAAA"}
1
+ {"version":3,"file":"config.d.ts","names":[],"sources":["../../src/velite/config.ts"],"sourcesContent":[],"mappings":";;;KAaY,uBAAA;;EAAA,aAAA,CAAA,EAEM,SAFN,EAAuB;EAEjB,mBAAA,CAAA,EACM,SADN,EAAA;EACM,aAAA,CAAA,EACN,SADM,EAAA;EACN,mBAAA,CAAA,EACM,SADN,EAAA;CACM;AAAS,iBAwDjB,sBAAA,CAxDiB;EAAA,WAAA;EAAA,aAAA;EAAA,mBAAA;EAAA,aAAA;EAAA;AAAA,CAAA,CAAA,EA8D9B,uBA9D8B,CAAA,EAAA,GAAA;AAwDjB,cA6DH,gBA7DyB,EAAA,GAAA"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"../metadata-plugin-DA7OesoA.js";import{t}from"../rehype-mermaid-Be9A3aSw.js";import{t as n}from"../rehype-npm-command-0W5WqcQY.js";import{t as r}from"../rehype-pre-block-source-paX7yPQ4.js";import{t as i}from"../rehype-title-CB9V-h9I.js";import"./plugins/index.js";import{cleanTocItems as a}from"./utils.js";import o from"rehype-autolink-headings";import s from"rehype-pretty-code";import c from"rehype-slug";import{codeImport as l}from"remark-code-import";import u from"remark-gfm";import{createHighlighter as d}from"shiki";import{defineConfig as f,s as p}from"velite";function m({rehypePlugins:a=[],rehypePluginsBefore:l=[]}){return[...l,c,e,[s,{getHighlighter:d,onVisitHighlightedLine(e){e.properties||={},e.properties.className||(e.properties.className=[]),e.properties.className.push(`line--highlighted`)},onVisitHighlightedWord(e){e.properties.className=[`word--highlighted`]},onVisitLine(e){e.children?.length===0&&(e.children=[{type:`text`,value:` `}])},theme:{dark:`catppuccin-mocha`,light:`github-light`}}],i,r,t,n,[o,{properties:{ariaLabel:`Link to section`,className:[`subheading-anchor`]}}],...a]}function h({remarkPlugins:e=[],remarkPluginsBefore:t=[]}){return[...t,u,l,...e]}function g({docsPattern:e=`docs/**/*.mdx`,rehypePlugins:t=[],rehypePluginsBefore:n=[],remarkPlugins:r=[],remarkPluginsBefore:i=[]}={}){return f({collections:{docs:{name:`Docs`,pattern:e,schema:p.object({body:p.mdx(),component:p.boolean().default(!1),content:p.markdown(),description:p.string(),excerpt:p.excerpt(),links:p.object({api:p.string().optional(),doc:p.string().optional()}).optional(),metadata:p.metadata(),title:p.string().max(99),toc:p.toc()}).transform((e,{path:t,meta:n})=>{let r=n;return{...e,contentType:r.path.split(`.`).pop(),flattenedPath:r.path.split(`/`).slice(-2,-1).join(`/`).replace(/\.mdx$/,``),permalink:r.path.replace(/^.*docs\//,``).replace(/\.mdx$/,``),slug:r.path.split(`docs/`).pop()?.replace(/\.mdx$/,``).replace(/^\/+/,``)?`docs/${r.path.split(`docs/`).pop()?.replace(/\.mdx$/,``).replace(/^\/+/,``)}`:`docs`,sourceFileDir:r.path.split(`/`).slice(-3,-1).join(`/`),sourceFileName:r.path.split(`/`).pop(),sourceFilePath:t,toc:a(e.toc)}})}},mdx:{rehypePlugins:m({rehypePlugins:t,rehypePluginsBefore:n}),remarkPlugins:h({remarkPlugins:r,remarkPluginsBefore:i})}})}const _=g();export{g as createDocsVeliteConfig,_ as docsVeliteConfig};
1
+ import{t as e}from"../metadata-plugin-XzUCOTJ4.js";import{t}from"../rehype-mermaid-CQ75hp2Q.js";import{t as n}from"../rehype-npm-command-D_fYpcFr.js";import{t as r}from"../rehype-pre-block-source-Cdsik072.js";import{t as i}from"../rehype-title-D5VN1law.js";import"./plugins/index.js";import{cleanTocItems as a}from"./utils.js";import{getHighlighter as o}from"@shikijs/compat";import s from"rehype-autolink-headings";import c from"rehype-pretty-code";import l from"rehype-slug";import{codeImport as u}from"remark-code-import";import d from"remark-gfm";import{defineConfig as f,s as p}from"velite";function m({rehypePlugins:a=[],rehypePluginsBefore:u=[]}){return[...u,l,e,[c,{getHighlighter:o,onVisitHighlightedLine(e){e.properties.className.push(`line--highlighted`)},onVisitHighlightedWord(e){e.properties.className=[`word--highlighted`]},onVisitLine(e){e.children?.length===0&&(e.children=[{type:`text`,value:` `}])},theme:{dark:`catppuccin-mocha`,light:`github-light`}}],i,r,t,n,[s,{properties:{ariaLabel:`Link to section`,className:[`subheading-anchor`]}}],...a]}function h({remarkPlugins:e=[],remarkPluginsBefore:t=[]}){return[...t,d,u,...e]}function g({docsPattern:e=`docs/**/*.mdx`,rehypePlugins:t=[],rehypePluginsBefore:n=[],remarkPlugins:r=[],remarkPluginsBefore:i=[]}={}){return f({collections:{docs:{name:`Docs`,pattern:e,schema:p.object({body:p.mdx(),component:p.boolean().default(!1),content:p.markdown(),description:p.string(),excerpt:p.excerpt(),links:p.object({api:p.string().optional(),doc:p.string().optional()}).optional(),metadata:p.metadata(),title:p.string().max(99),toc:p.toc()}).transform((e,{path:t,meta:n})=>{let r=n;return{...e,contentType:r.path.split(`.`).pop(),flattenedPath:r.path.split(`/`).slice(-2,-1).join(`/`).replace(/\.mdx$/,``),permalink:r.path.replace(/^.*docs\//,``).replace(/\.mdx$/,``),slug:r.path.split(`docs/`).pop()?.replace(/\.mdx$/,``).replace(/^\/+/,``)?`docs/${r.path.split(`docs/`).pop()?.replace(/\.mdx$/,``).replace(/^\/+/,``)}`:`docs`,sourceFileDir:r.path.split(`/`).slice(-3,-1).join(`/`),sourceFileName:r.path.split(`/`).pop(),sourceFilePath:t,toc:a(e.toc)}})}},mdx:{rehypePlugins:m({rehypePlugins:t,rehypePluginsBefore:n}),remarkPlugins:h({remarkPlugins:r,remarkPluginsBefore:i})}})}const _=g();export{g as createDocsVeliteConfig,_ as docsVeliteConfig};
2
2
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../../src/velite/config.ts"],"sourcesContent":["import type { UnistNode } from '@duck-docs/types'\nimport rehypeAutolinkHeadings from 'rehype-autolink-headings'\n// @ts-ignore\nimport rehypePrettyCode from 'rehype-pretty-code'\nimport rehypeSlug from 'rehype-slug'\nimport { codeImport } from 'remark-code-import'\nimport remarkGfm from 'remark-gfm'\nimport { createHighlighter as getHighlighter } from 'shiki'\nimport type { Pluggable } from 'unified'\nimport { defineConfig, s, type ZodMeta } from 'velite'\nimport { rehypeMermaid, rehypeMetadataPlugin, rehypeNpmCommand, rehypePreBlockSource, rehypeTitle } from './plugins'\nimport { cleanTocItems } from './utils'\n\nexport type DocsVeliteConfigOptions = {\n docsPattern?: string\n rehypePlugins?: Pluggable[]\n rehypePluginsBefore?: Pluggable[]\n remarkPlugins?: Pluggable[]\n remarkPluginsBefore?: Pluggable[]\n}\n\nfunction buildDefaultRehypePlugins({\n rehypePlugins = [],\n rehypePluginsBefore = [],\n}: Pick<DocsVeliteConfigOptions, 'rehypePlugins' | 'rehypePluginsBefore'>): Pluggable[] {\n return [\n ...rehypePluginsBefore,\n // 1) Structural transforms.\n // @ts-ignore\n rehypeSlug,\n rehypeMetadataPlugin,\n // 2) Syntax highlighting.\n [\n rehypePrettyCode,\n {\n getHighlighter,\n onVisitHighlightedLine(node: UnistNode) {\n // @ts-ignore\n if (!node.properties) node.properties = {}\n // @ts-ignore\n if (!node.properties.className) node.properties.className = []\n // @ts-ignore\n node.properties.className.push('line--highlighted')\n },\n onVisitHighlightedWord(node: UnistNode) {\n // @ts-ignore\n node.properties.className = ['word--highlighted']\n },\n onVisitLine(node: UnistNode) {\n if (node.children?.length === 0) {\n node.children = [{ type: 'text', value: ' ' }]\n }\n },\n theme: {\n dark: 'catppuccin-mocha',\n light: 'github-light',\n },\n },\n ],\n // 3) Post-highlight enrichments and specialized transforms.\n rehypeTitle,\n rehypePreBlockSource,\n rehypeMermaid,\n rehypeNpmCommand,\n // 4) Heading links for docs navigation.\n // @ts-ignore\n [rehypeAutolinkHeadings, { properties: { ariaLabel: 'Link to section', className: ['subheading-anchor'] } }],\n ...rehypePlugins,\n ]\n}\n\nfunction buildDefaultRemarkPlugins({\n remarkPlugins = [],\n remarkPluginsBefore = [],\n}: Pick<DocsVeliteConfigOptions, 'remarkPlugins' | 'remarkPluginsBefore'>): Pluggable[] {\n return [...remarkPluginsBefore, remarkGfm, codeImport, ...remarkPlugins]\n}\n\nexport function createDocsVeliteConfig({\n docsPattern = 'docs/**/*.mdx',\n rehypePlugins = [],\n rehypePluginsBefore = [],\n remarkPlugins = [],\n remarkPluginsBefore = [],\n}: DocsVeliteConfigOptions = {}) {\n return defineConfig({\n collections: {\n docs: {\n name: 'Docs',\n pattern: docsPattern,\n schema: s\n .object({\n body: s.mdx(),\n component: s.boolean().default(false),\n content: s.markdown(),\n description: s.string(),\n excerpt: s.excerpt(),\n links: s.object({ api: s.string().optional(), doc: s.string().optional() }).optional(),\n metadata: s.metadata(),\n title: s.string().max(99),\n toc: s.toc(),\n })\n .transform((data, { path, meta }) => {\n const _meta = meta as ZodMeta & { path: string }\n return {\n ...data,\n contentType: _meta.path.split('.').pop(),\n flattenedPath: _meta.path\n .split('/')\n .slice(-2, -1)\n .join('/')\n .replace(/\\.mdx$/, ''),\n permalink: _meta.path.replace(/^.*docs\\//, '').replace(/\\.mdx$/, ''),\n slug: _meta.path\n .split('docs/')\n .pop()\n ?.replace(/\\.mdx$/, '')\n .replace(/^\\/+/, '')\n ? `docs/${_meta.path\n .split('docs/')\n .pop()\n ?.replace(/\\.mdx$/, '')\n .replace(/^\\/+/, '')}`\n : 'docs',\n sourceFileDir: _meta.path.split('/').slice(-3, -1).join('/'),\n sourceFileName: _meta.path.split('/').pop(),\n sourceFilePath: path,\n toc: cleanTocItems(data.toc),\n }\n }),\n },\n },\n mdx: {\n rehypePlugins: buildDefaultRehypePlugins({ rehypePlugins, rehypePluginsBefore }),\n remarkPlugins: buildDefaultRemarkPlugins({ remarkPlugins, remarkPluginsBefore }),\n },\n }) as any\n}\n\nexport const docsVeliteConfig = createDocsVeliteConfig()\n"],"mappings":"6kBAqBA,SAAS,EAA0B,CACjC,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EAC8D,CACtF,MAAO,CACL,GAAG,EAGH,EACA,EAEA,CACE,EACA,CACE,eAAA,EACA,uBAAuB,EAAiB,CAEtC,AAAsB,EAAK,aAAa,EAAE,CAErC,EAAK,WAAW,YAAW,EAAK,WAAW,UAAY,EAAE,EAE9D,EAAK,WAAW,UAAU,KAAK,oBAAoB,EAErD,uBAAuB,EAAiB,CAEtC,EAAK,WAAW,UAAY,CAAC,oBAAoB,EAEnD,YAAY,EAAiB,CACvB,EAAK,UAAU,SAAW,IAC5B,EAAK,SAAW,CAAC,CAAE,KAAM,OAAQ,MAAO,IAAK,CAAC,GAGlD,MAAO,CACL,KAAM,mBACN,MAAO,eACR,CACF,CACF,CAED,EACA,EACA,EACA,EAGA,CAAC,EAAwB,CAAE,WAAY,CAAE,UAAW,kBAAmB,UAAW,CAAC,oBAAoB,CAAE,CAAE,CAAC,CAC5G,GAAG,EACJ,CAGH,SAAS,EAA0B,CACjC,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EAC8D,CACtF,MAAO,CAAC,GAAG,EAAqB,EAAW,EAAY,GAAG,EAAc,CAG1E,SAAgB,EAAuB,CACrC,cAAc,gBACd,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,CACxB,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EACG,EAAE,CAAE,CAC/B,OAAO,EAAa,CAClB,YAAa,CACX,KAAM,CACJ,KAAM,OACN,QAAS,EACT,OAAQ,EACL,OAAO,CACN,KAAM,EAAE,KAAK,CACb,UAAW,EAAE,SAAS,CAAC,QAAQ,GAAM,CACrC,QAAS,EAAE,UAAU,CACrB,YAAa,EAAE,QAAQ,CACvB,QAAS,EAAE,SAAS,CACpB,MAAO,EAAE,OAAO,CAAE,IAAK,EAAE,QAAQ,CAAC,UAAU,CAAE,IAAK,EAAE,QAAQ,CAAC,UAAU,CAAE,CAAC,CAAC,UAAU,CACtF,SAAU,EAAE,UAAU,CACtB,MAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,CACzB,IAAK,EAAE,KAAK,CACb,CAAC,CACD,WAAW,EAAM,CAAE,OAAM,UAAW,CACnC,IAAM,EAAQ,EACd,MAAO,CACL,GAAG,EACH,YAAa,EAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CACxC,cAAe,EAAM,KAClB,MAAM,IAAI,CACV,MAAM,GAAI,GAAG,CACb,KAAK,IAAI,CACT,QAAQ,SAAU,GAAG,CACxB,UAAW,EAAM,KAAK,QAAQ,YAAa,GAAG,CAAC,QAAQ,SAAU,GAAG,CACpE,KAAM,EAAM,KACT,MAAM,QAAQ,CACd,KAAK,EACJ,QAAQ,SAAU,GAAG,CACtB,QAAQ,OAAQ,GAAG,CAClB,QAAQ,EAAM,KACX,MAAM,QAAQ,CACd,KAAK,EACJ,QAAQ,SAAU,GAAG,CACtB,QAAQ,OAAQ,GAAG,GACtB,OACJ,cAAe,EAAM,KAAK,MAAM,IAAI,CAAC,MAAM,GAAI,GAAG,CAAC,KAAK,IAAI,CAC5D,eAAgB,EAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAC3C,eAAgB,EAChB,IAAK,EAAc,EAAK,IAAI,CAC7B,EACD,CACL,CACF,CACD,IAAK,CACH,cAAe,EAA0B,CAAE,gBAAe,sBAAqB,CAAC,CAChF,cAAe,EAA0B,CAAE,gBAAe,sBAAqB,CAAC,CACjF,CACF,CAAC,CAGJ,MAAa,EAAmB,GAAwB"}
1
+ {"version":3,"file":"config.js","names":[],"sources":["../../src/velite/config.ts"],"sourcesContent":["import type { UnistNode } from '@duck-docs/types'\nimport { getHighlighter } from '@shikijs/compat'\nimport rehypeAutolinkHeadings from 'rehype-autolink-headings'\n// @ts-ignore\nimport rehypePrettyCode from 'rehype-pretty-code'\nimport rehypeSlug from 'rehype-slug'\nimport { codeImport } from 'remark-code-import'\nimport remarkGfm from 'remark-gfm'\nimport type { Pluggable } from 'unified'\nimport { defineConfig, s, type ZodMeta } from 'velite'\nimport { rehypeMermaid, rehypeMetadataPlugin, rehypeNpmCommand, rehypePreBlockSource, rehypeTitle } from './plugins'\nimport { cleanTocItems } from './utils'\n\nexport type DocsVeliteConfigOptions = {\n docsPattern?: string\n rehypePlugins?: Pluggable[]\n rehypePluginsBefore?: Pluggable[]\n remarkPlugins?: Pluggable[]\n remarkPluginsBefore?: Pluggable[]\n}\n\nfunction buildDefaultRehypePlugins({\n rehypePlugins = [],\n rehypePluginsBefore = [],\n}: Pick<DocsVeliteConfigOptions, 'rehypePlugins' | 'rehypePluginsBefore'>): Pluggable[] {\n return [\n ...rehypePluginsBefore,\n // 1) Structural transforms.\n // @ts-ignore\n rehypeSlug,\n rehypeMetadataPlugin,\n // 2) Syntax highlighting.\n [\n rehypePrettyCode,\n {\n getHighlighter,\n onVisitHighlightedLine(node: UnistNode) {\n // @ts-ignore\n node.properties.className.push('line--highlighted')\n },\n onVisitHighlightedWord(node: UnistNode) {\n // @ts-ignore\n node.properties.className = ['word--highlighted']\n },\n onVisitLine(node: UnistNode) {\n if (node.children?.length === 0) {\n node.children = [{ type: 'text', value: ' ' }]\n }\n },\n theme: {\n dark: 'catppuccin-mocha',\n light: 'github-light',\n },\n },\n ],\n // 3) Post-highlight enrichments and specialized transforms.\n rehypeTitle,\n rehypePreBlockSource,\n rehypeMermaid,\n rehypeNpmCommand,\n // 4) Heading links for docs navigation.\n // @ts-ignore\n [rehypeAutolinkHeadings, { properties: { ariaLabel: 'Link to section', className: ['subheading-anchor'] } }],\n ...rehypePlugins,\n ]\n}\n\nfunction buildDefaultRemarkPlugins({\n remarkPlugins = [],\n remarkPluginsBefore = [],\n}: Pick<DocsVeliteConfigOptions, 'remarkPlugins' | 'remarkPluginsBefore'>): Pluggable[] {\n return [...remarkPluginsBefore, remarkGfm, codeImport, ...remarkPlugins]\n}\n\nexport function createDocsVeliteConfig({\n docsPattern = 'docs/**/*.mdx',\n rehypePlugins = [],\n rehypePluginsBefore = [],\n remarkPlugins = [],\n remarkPluginsBefore = [],\n}: DocsVeliteConfigOptions = {}) {\n return defineConfig({\n collections: {\n docs: {\n name: 'Docs',\n pattern: docsPattern,\n schema: s\n .object({\n body: s.mdx(),\n component: s.boolean().default(false),\n content: s.markdown(),\n description: s.string(),\n excerpt: s.excerpt(),\n links: s.object({ api: s.string().optional(), doc: s.string().optional() }).optional(),\n metadata: s.metadata(),\n title: s.string().max(99),\n toc: s.toc(),\n })\n .transform((data, { path, meta }) => {\n const _meta = meta as ZodMeta & { path: string }\n return {\n ...data,\n contentType: _meta.path.split('.').pop(),\n flattenedPath: _meta.path\n .split('/')\n .slice(-2, -1)\n .join('/')\n .replace(/\\.mdx$/, ''),\n permalink: _meta.path.replace(/^.*docs\\//, '').replace(/\\.mdx$/, ''),\n slug: _meta.path\n .split('docs/')\n .pop()\n ?.replace(/\\.mdx$/, '')\n .replace(/^\\/+/, '')\n ? `docs/${_meta.path\n .split('docs/')\n .pop()\n ?.replace(/\\.mdx$/, '')\n .replace(/^\\/+/, '')}`\n : 'docs',\n sourceFileDir: _meta.path.split('/').slice(-3, -1).join('/'),\n sourceFileName: _meta.path.split('/').pop(),\n sourceFilePath: path,\n toc: cleanTocItems(data.toc),\n }\n }),\n },\n },\n mdx: {\n rehypePlugins: buildDefaultRehypePlugins({ rehypePlugins, rehypePluginsBefore }),\n remarkPlugins: buildDefaultRemarkPlugins({ remarkPlugins, remarkPluginsBefore }),\n },\n }) as any\n}\n\nexport const docsVeliteConfig = createDocsVeliteConfig()\n"],"mappings":"olBAqBA,SAAS,EAA0B,CACjC,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EAC8D,CACtF,MAAO,CACL,GAAG,EAGH,EACA,EAEA,CACE,EACA,CACE,iBACA,uBAAuB,EAAiB,CAEtC,EAAK,WAAW,UAAU,KAAK,oBAAoB,EAErD,uBAAuB,EAAiB,CAEtC,EAAK,WAAW,UAAY,CAAC,oBAAoB,EAEnD,YAAY,EAAiB,CACvB,EAAK,UAAU,SAAW,IAC5B,EAAK,SAAW,CAAC,CAAE,KAAM,OAAQ,MAAO,IAAK,CAAC,GAGlD,MAAO,CACL,KAAM,mBACN,MAAO,eACR,CACF,CACF,CAED,EACA,EACA,EACA,EAGA,CAAC,EAAwB,CAAE,WAAY,CAAE,UAAW,kBAAmB,UAAW,CAAC,oBAAoB,CAAE,CAAE,CAAC,CAC5G,GAAG,EACJ,CAGH,SAAS,EAA0B,CACjC,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EAC8D,CACtF,MAAO,CAAC,GAAG,EAAqB,EAAW,EAAY,GAAG,EAAc,CAG1E,SAAgB,EAAuB,CACrC,cAAc,gBACd,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,CACxB,gBAAgB,EAAE,CAClB,sBAAsB,EAAE,EACG,EAAE,CAAE,CAC/B,OAAO,EAAa,CAClB,YAAa,CACX,KAAM,CACJ,KAAM,OACN,QAAS,EACT,OAAQ,EACL,OAAO,CACN,KAAM,EAAE,KAAK,CACb,UAAW,EAAE,SAAS,CAAC,QAAQ,GAAM,CACrC,QAAS,EAAE,UAAU,CACrB,YAAa,EAAE,QAAQ,CACvB,QAAS,EAAE,SAAS,CACpB,MAAO,EAAE,OAAO,CAAE,IAAK,EAAE,QAAQ,CAAC,UAAU,CAAE,IAAK,EAAE,QAAQ,CAAC,UAAU,CAAE,CAAC,CAAC,UAAU,CACtF,SAAU,EAAE,UAAU,CACtB,MAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,CACzB,IAAK,EAAE,KAAK,CACb,CAAC,CACD,WAAW,EAAM,CAAE,OAAM,UAAW,CACnC,IAAM,EAAQ,EACd,MAAO,CACL,GAAG,EACH,YAAa,EAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CACxC,cAAe,EAAM,KAClB,MAAM,IAAI,CACV,MAAM,GAAI,GAAG,CACb,KAAK,IAAI,CACT,QAAQ,SAAU,GAAG,CACxB,UAAW,EAAM,KAAK,QAAQ,YAAa,GAAG,CAAC,QAAQ,SAAU,GAAG,CACpE,KAAM,EAAM,KACT,MAAM,QAAQ,CACd,KAAK,EACJ,QAAQ,SAAU,GAAG,CACtB,QAAQ,OAAQ,GAAG,CAClB,QAAQ,EAAM,KACX,MAAM,QAAQ,CACd,KAAK,EACJ,QAAQ,SAAU,GAAG,CACtB,QAAQ,OAAQ,GAAG,GACtB,OACJ,cAAe,EAAM,KAAK,MAAM,IAAI,CAAC,MAAM,GAAI,GAAG,CAAC,KAAK,IAAI,CAC5D,eAAgB,EAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAC3C,eAAgB,EAChB,IAAK,EAAc,EAAK,IAAI,CAC7B,EACD,CACL,CACF,CACD,IAAK,CACH,cAAe,EAA0B,CAAE,gBAAe,sBAAqB,CAAC,CAChF,cAAe,EAA0B,CAAE,gBAAe,sBAAqB,CAAC,CACjF,CACF,CAAC,CAGJ,MAAa,EAAmB,GAAwB"}
@@ -1,11 +1,11 @@
1
- import "../unist-q3NIH9ya.js";
2
- import "../index-BOXZdgrl.js";
1
+ import "../unist-C-gDxuYf.js";
2
+ import "../index-COTJSnad.js";
3
3
  import { DocsVeliteConfigOptions, createDocsVeliteConfig, docsVeliteConfig } from "./config.js";
4
- import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../metadata-plugin-BL84sQM5.js";
5
- import { t as rehypeMermaid } from "../rehype-mermaid-DPZ6UzOu.js";
6
- import { t as rehypeNpmCommand } from "../rehype-npm-command-khRZrj_X.js";
7
- import { t as rehypePreBlockSource } from "../rehype-pre-block-source-0UyWe2hh.js";
8
- import { t as rehypeTitle } from "../rehype-title-CTj31zR2.js";
4
+ import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../metadata-plugin-5TaYHWXh.js";
5
+ import { t as rehypeMermaid } from "../rehype-mermaid-DecYf_rU.js";
6
+ import { t as rehypeNpmCommand } from "../rehype-npm-command-Bg4YXfot.js";
7
+ import { t as rehypePreBlockSource } from "../rehype-pre-block-source-BAdGFElv.js";
8
+ import { t as rehypeTitle } from "../rehype-title-9j_Q2o1g.js";
9
9
  import "./plugins/index.js";
10
10
  import { cleanTocItems } from "./utils.js";
11
11
  export { type DocsVeliteConfigOptions, cleanTocItems, createDocsVeliteConfig, docsVeliteConfig, rehypeMermaid, rehypeMetadataPlugin, rehypeNpmCommand, rehypePreBlockSource, rehypeTitle, rhypeMetadataPlugin };
@@ -1 +1 @@
1
- import{n as e,t}from"../metadata-plugin-DA7OesoA.js";import{t as n}from"../rehype-mermaid-Be9A3aSw.js";import{t as r}from"../rehype-npm-command-0W5WqcQY.js";import{t as i}from"../rehype-pre-block-source-paX7yPQ4.js";import{t as a}from"../rehype-title-CB9V-h9I.js";import"./plugins/index.js";import{cleanTocItems as o}from"./utils.js";import{createDocsVeliteConfig as s,docsVeliteConfig as c}from"./config.js";export{o as cleanTocItems,s as createDocsVeliteConfig,c as docsVeliteConfig,n as rehypeMermaid,t as rehypeMetadataPlugin,r as rehypeNpmCommand,i as rehypePreBlockSource,a as rehypeTitle,e as rhypeMetadataPlugin};
1
+ import{n as e,t}from"../metadata-plugin-XzUCOTJ4.js";import{t as n}from"../rehype-mermaid-CQ75hp2Q.js";import{t as r}from"../rehype-npm-command-D_fYpcFr.js";import{t as i}from"../rehype-pre-block-source-Cdsik072.js";import{t as a}from"../rehype-title-D5VN1law.js";import"./plugins/index.js";import{cleanTocItems as o}from"./utils.js";import{createDocsVeliteConfig as s,docsVeliteConfig as c}from"./config.js";export{o as cleanTocItems,s as createDocsVeliteConfig,c as docsVeliteConfig,n as rehypeMermaid,t as rehypeMetadataPlugin,r as rehypeNpmCommand,i as rehypePreBlockSource,a as rehypeTitle,e as rhypeMetadataPlugin};
@@ -1,5 +1,5 @@
1
- import { t as UnistNode } from "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
1
+ import { t as UnistNode } from "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
3
 
4
4
  //#region src/velite/plugins/hast-properties.d.ts
5
5
  declare function readNodeProperties<T extends object>(node: UnistNode): T;
@@ -1 +1 @@
1
- import{n as e,t}from"../../hast-properties-C103K0PZ.js";export{t as assignNodeProperties,e as readNodeProperties};
1
+ import{n as e,t}from"../../hast-properties-DMieBO19.js";export{t as assignNodeProperties,e as readNodeProperties};
@@ -1,8 +1,8 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../../metadata-plugin-BL84sQM5.js";
4
- import { t as rehypeMermaid } from "../../rehype-mermaid-DPZ6UzOu.js";
5
- import { t as rehypeNpmCommand } from "../../rehype-npm-command-khRZrj_X.js";
6
- import { t as rehypePreBlockSource } from "../../rehype-pre-block-source-0UyWe2hh.js";
7
- import { t as rehypeTitle } from "../../rehype-title-CTj31zR2.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../../metadata-plugin-5TaYHWXh.js";
4
+ import { t as rehypeMermaid } from "../../rehype-mermaid-DecYf_rU.js";
5
+ import { t as rehypeNpmCommand } from "../../rehype-npm-command-Bg4YXfot.js";
6
+ import { t as rehypePreBlockSource } from "../../rehype-pre-block-source-BAdGFElv.js";
7
+ import { t as rehypeTitle } from "../../rehype-title-9j_Q2o1g.js";
8
8
  export { rehypeMermaid, rehypeMetadataPlugin, rehypeNpmCommand, rehypePreBlockSource, rehypeTitle, rhypeMetadataPlugin };
@@ -1 +1 @@
1
- import{n as e,t}from"../../metadata-plugin-DA7OesoA.js";import{t as n}from"../../rehype-mermaid-Be9A3aSw.js";import{t as r}from"../../rehype-npm-command-0W5WqcQY.js";import{t as i}from"../../rehype-pre-block-source-paX7yPQ4.js";import{t as a}from"../../rehype-title-CB9V-h9I.js";export{n as rehypeMermaid,t as rehypeMetadataPlugin,r as rehypeNpmCommand,i as rehypePreBlockSource,a as rehypeTitle,e as rhypeMetadataPlugin};
1
+ import{n as e,t}from"../../metadata-plugin-XzUCOTJ4.js";import{t as n}from"../../rehype-mermaid-CQ75hp2Q.js";import{t as r}from"../../rehype-npm-command-D_fYpcFr.js";import{t as i}from"../../rehype-pre-block-source-Cdsik072.js";import{t as a}from"../../rehype-title-D5VN1law.js";export{n as rehypeMermaid,t as rehypeMetadataPlugin,r as rehypeNpmCommand,i as rehypePreBlockSource,a as rehypeTitle,e as rhypeMetadataPlugin};
@@ -1,4 +1,4 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../../metadata-plugin-BL84sQM5.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { n as rhypeMetadataPlugin, t as rehypeMetadataPlugin } from "../../metadata-plugin-5TaYHWXh.js";
4
4
  export { rehypeMetadataPlugin, rhypeMetadataPlugin };
@@ -1 +1 @@
1
- import{n as e,t}from"../../metadata-plugin-DA7OesoA.js";export{t as rehypeMetadataPlugin,e as rhypeMetadataPlugin};
1
+ import{n as e,t}from"../../metadata-plugin-XzUCOTJ4.js";export{t as rehypeMetadataPlugin,e as rhypeMetadataPlugin};
@@ -1 +1 @@
1
- import{t as e}from"../../metadata-utils-C_8CcvsG.js";export{e as parseCodeFenceMeta};
1
+ import{t as e}from"../../metadata-utils-BMtaoiZF.js";export{e as parseCodeFenceMeta};
@@ -1,4 +1,4 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { t as rehypeMermaid } from "../../rehype-mermaid-DPZ6UzOu.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { t as rehypeMermaid } from "../../rehype-mermaid-DecYf_rU.js";
4
4
  export { rehypeMermaid };
@@ -1 +1 @@
1
- import{t as e}from"../../rehype-mermaid-Be9A3aSw.js";export{e as rehypeMermaid};
1
+ import{t as e}from"../../rehype-mermaid-CQ75hp2Q.js";export{e as rehypeMermaid};
@@ -1,4 +1,4 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { t as rehypeNpmCommand } from "../../rehype-npm-command-khRZrj_X.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { t as rehypeNpmCommand } from "../../rehype-npm-command-Bg4YXfot.js";
4
4
  export { rehypeNpmCommand };
@@ -1 +1 @@
1
- import{t as e}from"../../rehype-npm-command-0W5WqcQY.js";export{e as rehypeNpmCommand};
1
+ import{t as e}from"../../rehype-npm-command-D_fYpcFr.js";export{e as rehypeNpmCommand};
@@ -1,4 +1,4 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { t as rehypePreBlockSource } from "../../rehype-pre-block-source-0UyWe2hh.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { t as rehypePreBlockSource } from "../../rehype-pre-block-source-BAdGFElv.js";
4
4
  export { rehypePreBlockSource };
@@ -1 +1 @@
1
- import{t as e}from"../../rehype-pre-block-source-paX7yPQ4.js";export{e as rehypePreBlockSource};
1
+ import{t as e}from"../../rehype-pre-block-source-Cdsik072.js";export{e as rehypePreBlockSource};
@@ -1,4 +1,4 @@
1
- import "../../unist-q3NIH9ya.js";
2
- import "../../index-BOXZdgrl.js";
3
- import { t as rehypeTitle } from "../../rehype-title-CTj31zR2.js";
1
+ import "../../unist-C-gDxuYf.js";
2
+ import "../../index-COTJSnad.js";
3
+ import { t as rehypeTitle } from "../../rehype-title-9j_Q2o1g.js";
4
4
  export { rehypeTitle };
@@ -1 +1 @@
1
- import{t as e}from"../../rehype-title-CB9V-h9I.js";export{e as rehypeTitle};
1
+ import{t as e}from"../../rehype-title-D5VN1law.js";export{e as rehypeTitle};
@@ -1,2 +1,2 @@
1
1
  import{p as e}from"./portal-BNuCvTAR-DDrsnIMA.js";import*as t from"react";import{jsx as n}from"react/jsx-runtime";const r=t.forwardRef((t,r)=>n(e.span,{"data-slot":`visually-hidden`,...t,ref:r,style:{position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`,...t.style}}));r.displayName=`VisuallyHidden`;const i=r;export{r as n,i as t};
2
- //# sourceMappingURL=visibility-hidden-CAHx9RLp-CN32k1Im.js.map
2
+ //# sourceMappingURL=visibility-hidden-CAHx9RLp-DoPUpniv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visibility-hidden-CAHx9RLp-CN32k1Im.js","names":["n","e","t","r"],"sources":["../../duck-primitives/dist/visibility-hidden-CAHx9RLp.js"],"sourcesContent":["import{t as e}from\"./primitive-elements-Ds9SbVBa.js\";import*as t from\"react\";import{jsx as n}from\"react/jsx-runtime\";const r=t.forwardRef((t,r)=>n(e.span,{\"data-slot\":`visually-hidden`,...t,ref:r,style:{position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`,...t.style}}));r.displayName=`VisuallyHidden`;const i=r;export{r as n,i as t};"],"mappings":"kHAAqH,MAAM,EAAE,EAAE,YAAY,EAAE,IAAIA,EAAEC,EAAE,KAAK,CAAC,YAAY,kBAAkB,GAAGC,EAAE,IAAIC,EAAE,MAAM,CAAC,SAAS,WAAW,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,SAAS,KAAK,mBAAmB,WAAW,SAAS,SAAS,SAAS,GAAGD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,iBAAiB,MAAM,EAAE"}
1
+ {"version":3,"file":"visibility-hidden-CAHx9RLp-DoPUpniv.js","names":["n","e","t","r"],"sources":["../../duck-primitives/dist/visibility-hidden-CAHx9RLp.js"],"sourcesContent":["import{t as e}from\"./primitive-elements-Ds9SbVBa.js\";import*as t from\"react\";import{jsx as n}from\"react/jsx-runtime\";const r=t.forwardRef((t,r)=>n(e.span,{\"data-slot\":`visually-hidden`,...t,ref:r,style:{position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`,...t.style}}));r.displayName=`VisuallyHidden`;const i=r;export{r as n,i as t};"],"mappings":"kHAAqH,MAAM,EAAE,EAAE,YAAY,EAAE,IAAIA,EAAEC,EAAE,KAAK,CAAC,YAAY,kBAAkB,GAAGC,EAAE,IAAIC,EAAE,MAAM,CAAC,SAAS,WAAW,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,SAAS,KAAK,mBAAmB,WAAW,SAAS,SAAS,SAAS,GAAGD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,iBAAiB,MAAM,EAAE"}
package/package.json CHANGED
@@ -4,6 +4,7 @@
4
4
  "node": ">=22.0.0"
5
5
  },
6
6
  "dependencies": {
7
+ "@shikijs/compat": "1.12.1",
7
8
  "@tanstack/react-virtual": "^3.13.19",
8
9
  "@types/unist": "^3.0.3",
9
10
  "aria-hidden": "^1.2.6",
@@ -13,12 +14,11 @@
13
14
  "mdast-util-toc": "^7.1.0",
14
15
  "react-remove-scroll": "^2.7.2",
15
16
  "rehype-autolink-headings": "^7.1.0",
16
- "rehype-pretty-code": "^0.14.3",
17
+ "rehype-pretty-code": "^0.6.0",
17
18
  "rehype-slug": "^6.0.0",
18
19
  "remark": "^15.0.1",
19
20
  "remark-code-import": "^1.2.0",
20
21
  "remark-gfm": "^4.0.0",
21
- "shiki": "^2.5.0",
22
22
  "tabbable": "6.2.0",
23
23
  "tw-animate-css": "^1.2.4",
24
24
  "unified": "^11.0.5",
@@ -164,5 +164,5 @@
164
164
  },
165
165
  "type": "module",
166
166
  "types": "./dist/index.d.ts",
167
- "version": "0.1.1"
167
+ "version": "0.2.0"
168
168
  }
@@ -5,9 +5,16 @@ import { ModeSwitcher } from '@duck-docs/components/mode-toggle'
5
5
  import { useSiteConfig } from '@duck-docs/context'
6
6
  import { cn } from '@gentleduck/libs/cn'
7
7
  import { buttonVariants } from '@gentleduck/registry-ui/button'
8
+ import {
9
+ DropdownMenu,
10
+ DropdownMenuContent,
11
+ DropdownMenuRadioGroup,
12
+ DropdownMenuRadioItem,
13
+ DropdownMenuTrigger,
14
+ } from '@gentleduck/registry-ui/dropdown-menu'
8
15
  import { useAtom } from 'jotai'
9
16
  import { atomWithStorage } from 'jotai/utils'
10
- import { CaseUpper, Github, Twitter, Type } from 'lucide-react'
17
+ import { Github, Twitter, Type } from 'lucide-react'
11
18
  import Link from 'next/link'
12
19
  import React from 'react'
13
20
  import { HeaderContainer, HeaderRoot } from './header-shell'
@@ -17,6 +24,71 @@ const CommandMenu = React.lazy(() =>
17
24
  )
18
25
  const MobileNav = React.lazy(() => import('@duck-docs/components/mobile-nav').then((m) => ({ default: m.MobileNav })))
19
26
 
27
+ type FontPreset = 'mono-italic' | 'mono-normal' | 'sans-normal' | 'sans-italic' | 'serif-normal' | 'serif-italic'
28
+ const FONT_PRESET_STORAGE_KEY = 'fontPresetV6'
29
+
30
+ const DEFAULT_FONT_PRESET: FontPreset = 'mono-normal'
31
+
32
+ const FONT_PRESET_OPTIONS: Array<{ label: string; value: FontPreset }> = [
33
+ { label: 'JetBrains Mono Nerd Italic', value: 'mono-italic' },
34
+ { label: 'JetBrains Mono Nerd Regular', value: 'mono-normal' },
35
+ { label: 'Inter Regular', value: 'sans-normal' },
36
+ { label: 'Inter Italic', value: 'sans-italic' },
37
+ { label: 'Inria Serif Regular', value: 'serif-normal' },
38
+ { label: 'Inria Serif Italic', value: 'serif-italic' },
39
+ ]
40
+
41
+ const VALID_FONT_PRESETS = new Set<FontPreset>(FONT_PRESET_OPTIONS.map((option) => option.value))
42
+
43
+ function isFontPreset(value: unknown): value is FontPreset {
44
+ return typeof value === 'string' && VALID_FONT_PRESETS.has(value as FontPreset)
45
+ }
46
+
47
+ function applyFontPreset(preset: FontPreset) {
48
+ const family = preset.startsWith('sans')
49
+ ? 'var(--font-sans-font, "Inter"), ui-sans-serif, system-ui, sans-serif'
50
+ : preset.startsWith('serif')
51
+ ? 'var(--font-serif-font, "Inria Serif"), Georgia, "Times New Roman", serif'
52
+ : 'var(--font-mono-font, "JetBrains Mono Nerd Font Mono"), "JetBrains Mono Nerd Font", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'
53
+ const familyVar = preset.startsWith('sans')
54
+ ? '--font-sans-font'
55
+ : preset.startsWith('serif')
56
+ ? '--font-serif-font'
57
+ : '--font-mono-font'
58
+ const style = preset.endsWith('italic') ? 'italic' : 'normal'
59
+
60
+ document.documentElement.setAttribute('data-font-preset', preset)
61
+ const warmUpFont = () => {
62
+ if (!document.fonts?.load) {
63
+ return
64
+ }
65
+ try {
66
+ const familyToken = getComputedStyle(document.documentElement).getPropertyValue(familyVar).trim()
67
+ if (!familyToken) {
68
+ return
69
+ }
70
+ const stylePrefix = style === 'italic' ? 'italic ' : ''
71
+ void document.fonts.load(`${stylePrefix}400 1em ${familyToken}`)
72
+ void document.fonts.load(`${stylePrefix}500 1em ${familyToken}`)
73
+ void document.fonts.load(`${stylePrefix}700 1em ${familyToken}`)
74
+ } catch {
75
+ // Ignore font prewarm failures and let normal rendering fallback.
76
+ }
77
+ }
78
+
79
+ document.documentElement.style.setProperty('--duck-font-family', family)
80
+ document.documentElement.style.setProperty('--font-sans', family)
81
+ document.documentElement.style.setProperty('--font-mono', family)
82
+ document.documentElement.style.setProperty('font-family', family, 'important')
83
+ document.documentElement.style.setProperty('font-style', style, 'important')
84
+ document.documentElement.style.setProperty('--duck-font-style', style)
85
+ if (document.body) {
86
+ document.body.style.setProperty('font-family', family, 'important')
87
+ document.body.style.setProperty('font-style', style, 'important')
88
+ }
89
+ warmUpFont()
90
+ }
91
+
20
92
  export function SiteHeader() {
21
93
  const siteConfig = useSiteConfig()
22
94
 
@@ -144,34 +216,99 @@ function GitHubStarsButton() {
144
216
  </Link>
145
217
  )
146
218
  }
147
- const fontAtom = atomWithStorage('fontType', 'mono')
219
+ const fontPresetAtom = atomWithStorage<FontPreset>(FONT_PRESET_STORAGE_KEY, DEFAULT_FONT_PRESET)
148
220
 
149
221
  export function FontStyleButton() {
150
- const [fontType, setFontType] = useAtom(fontAtom)
151
- const firstRender = React.useRef(true)
222
+ const [fontPreset, setFontPreset] = useAtom(fontPresetAtom)
152
223
 
153
224
  React.useEffect(() => {
154
- if (firstRender.current) {
155
- firstRender.current = false
156
- return
157
- }
225
+ try {
226
+ const hasNewPreset = localStorage.getItem(FONT_PRESET_STORAGE_KEY) !== null
227
+ if (hasNewPreset) {
228
+ return
229
+ }
158
230
 
159
- const family =
160
- fontType === 'sans'
161
- ? 'var(--font-geist-sans, "Montserrat"), sans-serif'
162
- : 'var(--font-geist-mono, "Geist Mono"), monospace'
231
+ const rawV5Preset = localStorage.getItem('fontPresetV5')
232
+ if (rawV5Preset) {
233
+ const v5Preset = JSON.parse(rawV5Preset)
234
+ const migratedPreset: FontPreset = isFontPreset(v5Preset)
235
+ ? (String(v5Preset).replace('-italic', '-normal') as FontPreset)
236
+ : DEFAULT_FONT_PRESET
237
+ setFontPreset(migratedPreset)
238
+ return
239
+ }
240
+
241
+ const rawV2Preset = localStorage.getItem('fontPresetV2')
242
+ if (rawV2Preset) {
243
+ const v2Preset = JSON.parse(rawV2Preset)
244
+ const migratedPreset: FontPreset =
245
+ isFontPreset(v2Preset) && v2Preset.startsWith('mono') ? v2Preset : DEFAULT_FONT_PRESET
246
+ setFontPreset(migratedPreset)
247
+ return
248
+ }
163
249
 
164
- document.documentElement.style.setProperty('font-family', family, 'important')
165
- }, [fontType])
250
+ const rawOldPreset = localStorage.getItem('fontPreset')
251
+ if (rawOldPreset) {
252
+ const oldPreset = JSON.parse(rawOldPreset)
253
+ const migratedPreset: FontPreset =
254
+ isFontPreset(oldPreset) && oldPreset.startsWith('mono') ? oldPreset : DEFAULT_FONT_PRESET
255
+ setFontPreset(migratedPreset)
256
+ return
257
+ }
258
+
259
+ const rawLegacyType = localStorage.getItem('fontType')
260
+ if (rawLegacyType) {
261
+ const legacyType = JSON.parse(rawLegacyType)
262
+ const migratedPreset: FontPreset = legacyType === 'mono' ? 'mono-normal' : DEFAULT_FONT_PRESET
263
+ setFontPreset(migratedPreset)
264
+ }
265
+ } catch {
266
+ // Ignore legacy migration issues and keep defaults.
267
+ }
268
+ }, [setFontPreset])
269
+
270
+ React.useEffect(() => {
271
+ if (!isFontPreset(fontPreset)) {
272
+ setFontPreset(DEFAULT_FONT_PRESET)
273
+ return
274
+ }
275
+ applyFontPreset(fontPreset)
276
+ }, [fontPreset, setFontPreset])
166
277
 
167
278
  return (
168
- <button
169
- aria-label={fontType === 'mono' ? 'Switch to sans-serif font' : 'Switch to monospace font'}
170
- className={cn(buttonVariants({ size: 'icon', variant: 'ghost' }))}
171
- onClick={() => setFontType(fontType === 'mono' ? 'sans' : 'mono')}
172
- type="button">
173
- {fontType === 'mono' ? <Type aria-hidden="true" /> : <CaseUpper aria-hidden="true" />}
174
- </button>
279
+ <DropdownMenu>
280
+ <DropdownMenuTrigger asChild>
281
+ <button
282
+ aria-label="Font and style"
283
+ className={cn(buttonVariants({ size: 'icon', variant: 'ghost' }), 'size-8')}
284
+ type="button">
285
+ <Type aria-hidden="true" className="size-4" />
286
+ </button>
287
+ </DropdownMenuTrigger>
288
+ <DropdownMenuContent align="end" className="w-60">
289
+ <DropdownMenuRadioGroup
290
+ onValueChange={(value) => {
291
+ if (!isFontPreset(value)) {
292
+ return
293
+ }
294
+ setFontPreset(value)
295
+ applyFontPreset(value)
296
+ }}
297
+ value={fontPreset}>
298
+ {FONT_PRESET_OPTIONS.map((option) => (
299
+ <DropdownMenuRadioItem
300
+ key={option.value}
301
+ onSelect={() => {
302
+ setFontPreset(option.value)
303
+ applyFontPreset(option.value)
304
+ }}
305
+ value={option.value}>
306
+ {option.label}
307
+ </DropdownMenuRadioItem>
308
+ ))}
309
+ </DropdownMenuRadioGroup>
310
+ </DropdownMenuContent>
311
+ </DropdownMenu>
175
312
  )
176
313
  }
177
314