@gentleduck/docs 0.0.1

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 (462) hide show
  1. package/LICENSE +21 -0
  2. package/dist/callout-CFw8zUIz.js +2 -0
  3. package/dist/callout-CFw8zUIz.js.map +1 -0
  4. package/dist/callout-VcT2d48I.d.ts +17 -0
  5. package/dist/callout-VcT2d48I.d.ts.map +1 -0
  6. package/dist/charts-DX0UohRi.js +2 -0
  7. package/dist/charts-DX0UohRi.js.map +1 -0
  8. package/dist/charts-hfCEZEQp.d.ts +6 -0
  9. package/dist/charts-hfCEZEQp.d.ts.map +1 -0
  10. package/dist/client.d.ts +54 -0
  11. package/dist/client.js +1 -0
  12. package/dist/code-Cz75Womb.js +0 -0
  13. package/dist/code-block-CR2loi-i.d.ts +14 -0
  14. package/dist/code-block-CR2loi-i.d.ts.map +1 -0
  15. package/dist/code-block-DqFdGhI-.js +2 -0
  16. package/dist/code-block-DqFdGhI-.js.map +1 -0
  17. package/dist/code-block-wrapper-C8I0XMsN.d.ts +12 -0
  18. package/dist/code-block-wrapper-C8I0XMsN.d.ts.map +1 -0
  19. package/dist/code-block-wrapper-CCAw9mie.js +2 -0
  20. package/dist/code-block-wrapper-CCAw9mie.js.map +1 -0
  21. package/dist/code-preview-CeNXQxYN.d.ts +20 -0
  22. package/dist/code-preview-CeNXQxYN.d.ts.map +1 -0
  23. package/dist/code-preview-cIvw8qyg.js +2 -0
  24. package/dist/code-preview-cIvw8qyg.js.map +1 -0
  25. package/dist/colors-Ba_cRR6y.js +2 -0
  26. package/dist/colors-Ba_cRR6y.js.map +1 -0
  27. package/dist/colors-CpJMSMtf.d.ts +47 -0
  28. package/dist/colors-CpJMSMtf.d.ts.map +1 -0
  29. package/dist/command-menu-7HTBKVxd.js +0 -0
  30. package/dist/command-menu-BVebU1JI.js +2 -0
  31. package/dist/command-menu-BVebU1JI.js.map +1 -0
  32. package/dist/command-menu-C8RLyuBe.d.ts +7 -0
  33. package/dist/command-menu-C8RLyuBe.d.ts.map +1 -0
  34. package/dist/component-preview-CL6guE-v.js +2 -0
  35. package/dist/component-preview-CL6guE-v.js.map +1 -0
  36. package/dist/component-preview-DknaF8TG.d.ts +33 -0
  37. package/dist/component-preview-DknaF8TG.d.ts.map +1 -0
  38. package/dist/component-source-BCBDjfEb.js +5 -0
  39. package/dist/component-source-BCBDjfEb.js.map +1 -0
  40. package/dist/component-source-IrGlRkUy.d.ts +17 -0
  41. package/dist/component-source-IrGlRkUy.d.ts.map +1 -0
  42. package/dist/components/copy-button/copy-button.d.ts +4 -0
  43. package/dist/components/copy-button/copy-button.js +1 -0
  44. package/dist/components/copy-button/copy-button.types.d.ts +3 -0
  45. package/dist/components/copy-button/copy-button.types.js +0 -0
  46. package/dist/components/copy-button/index.d.ts +5 -0
  47. package/dist/components/copy-button/index.js +1 -0
  48. package/dist/components/docs/docs-copy-page.d.ts +2 -0
  49. package/dist/components/docs/docs-copy-page.js +1 -0
  50. package/dist/components/docs/docs-pager.d.ts +4 -0
  51. package/dist/components/docs/docs-pager.js +1 -0
  52. package/dist/components/docs/docs-sidebar.d.ts +4 -0
  53. package/dist/components/docs/docs-sidebar.js +1 -0
  54. package/dist/components/docs/docs-toc.d.ts +4 -0
  55. package/dist/components/docs/docs-toc.js +1 -0
  56. package/dist/components/docs/index.d.ts +8 -0
  57. package/dist/components/docs/index.js +1 -0
  58. package/dist/components/icons.d.ts +2 -0
  59. package/dist/components/icons.js +1 -0
  60. package/dist/components/index.d.ts +44 -0
  61. package/dist/components/index.js +1 -0
  62. package/dist/components/layouts/command-menu/command-menu.d.ts +2 -0
  63. package/dist/components/layouts/command-menu/command-menu.js +1 -0
  64. package/dist/components/layouts/command-menu/index.d.ts +3 -0
  65. package/dist/components/layouts/command-menu/index.js +1 -0
  66. package/dist/components/layouts/index.d.ts +8 -0
  67. package/dist/components/layouts/index.js +1 -0
  68. package/dist/components/layouts/site-footer/index.d.ts +2 -0
  69. package/dist/components/layouts/site-footer/index.js +1 -0
  70. package/dist/components/layouts/site-header/header-shell.d.ts +2 -0
  71. package/dist/components/layouts/site-header/header-shell.js +1 -0
  72. package/dist/components/layouts/site-header/index.d.ts +3 -0
  73. package/dist/components/layouts/site-header/index.js +1 -0
  74. package/dist/components/layouts/tailwind-indicator/index.d.ts +2 -0
  75. package/dist/components/layouts/tailwind-indicator/index.js +1 -0
  76. package/dist/components/main-nav.d.ts +2 -0
  77. package/dist/components/main-nav.js +1 -0
  78. package/dist/components/mdx/mdx-components/callout.d.ts +2 -0
  79. package/dist/components/mdx/mdx-components/callout.js +1 -0
  80. package/dist/components/mdx/mdx-components/code/code-block-wrapper.d.ts +2 -0
  81. package/dist/components/mdx/mdx-components/code/code-block-wrapper.js +1 -0
  82. package/dist/components/mdx/mdx-components/code/code-block.d.ts +2 -0
  83. package/dist/components/mdx/mdx-components/code/code-block.js +1 -0
  84. package/dist/components/mdx/mdx-components/code/code-preview.d.ts +2 -0
  85. package/dist/components/mdx/mdx-components/code/code-preview.js +1 -0
  86. package/dist/components/mdx/mdx-components/code/component-preview.d.ts +2 -0
  87. package/dist/components/mdx/mdx-components/code/component-preview.js +1 -0
  88. package/dist/components/mdx/mdx-components/code/component-source.d.ts +2 -0
  89. package/dist/components/mdx/mdx-components/code/component-source.js +1 -0
  90. package/dist/components/mdx/mdx-components/code/figcaption-block.d.ts +2 -0
  91. package/dist/components/mdx/mdx-components/code/figcaption-block.js +1 -0
  92. package/dist/components/mdx/mdx-components/code/index.d.ts +11 -0
  93. package/dist/components/mdx/mdx-components/code/index.js +1 -0
  94. package/dist/components/mdx/mdx-components/code/pre-block.d.ts +4 -0
  95. package/dist/components/mdx/mdx-components/code/pre-block.js +1 -0
  96. package/dist/components/mdx/mdx-components/code/span-block.d.ts +11 -0
  97. package/dist/components/mdx/mdx-components/code/span-block.d.ts.map +1 -0
  98. package/dist/components/mdx/mdx-components/code/span-block.js +2 -0
  99. package/dist/components/mdx/mdx-components/code/span-block.js.map +1 -0
  100. package/dist/components/mdx/mdx-components/components-list.d.ts +4 -0
  101. package/dist/components/mdx/mdx-components/components-list.js +1 -0
  102. package/dist/components/mdx/mdx-components/exalidraw.d.ts +7 -0
  103. package/dist/components/mdx/mdx-components/exalidraw.d.ts.map +1 -0
  104. package/dist/components/mdx/mdx-components/exalidraw.js +2 -0
  105. package/dist/components/mdx/mdx-components/exalidraw.js.map +1 -0
  106. package/dist/components/mdx/mdx-components/framework-docs.d.ts +2 -0
  107. package/dist/components/mdx/mdx-components/framework-docs.js +1 -0
  108. package/dist/components/mdx/mdx-components/index.d.ts +20 -0
  109. package/dist/components/mdx/mdx-components/index.js +1 -0
  110. package/dist/components/mdx/mdx-components/table.d.ts +2 -0
  111. package/dist/components/mdx/mdx-components/table.js +1 -0
  112. package/dist/components/mdx/mdx-components/tabs.d.ts +2 -0
  113. package/dist/components/mdx/mdx-components/tabs.js +1 -0
  114. package/dist/components/mdx/mdx-components/typepography.d.ts +2 -0
  115. package/dist/components/mdx/mdx-components/typepography.js +1 -0
  116. package/dist/components/mdx/mdx.d.ts +2 -0
  117. package/dist/components/mdx/mdx.js +1 -0
  118. package/dist/components/mobile-nav.d.ts +2 -0
  119. package/dist/components/mobile-nav.js +1 -0
  120. package/dist/components/mode-toggle.d.ts +2 -0
  121. package/dist/components/mode-toggle.js +1 -0
  122. package/dist/components/page-header.d.ts +2 -0
  123. package/dist/components/page-header.js +1 -0
  124. package/dist/components/providers.d.ts +2 -0
  125. package/dist/components/providers.js +1 -0
  126. package/dist/components/themes/index.d.ts +3 -0
  127. package/dist/components/themes/index.js +1 -0
  128. package/dist/components/themes/style-switcher.d.ts +2 -0
  129. package/dist/components/themes/style-switcher.js +1 -0
  130. package/dist/components-list-BCV3yN6H.js +2 -0
  131. package/dist/components-list-BCV3yN6H.js.map +1 -0
  132. package/dist/components-list-ZLlUD-Nr.d.ts +12 -0
  133. package/dist/components-list-ZLlUD-Nr.d.ts.map +1 -0
  134. package/dist/context/context.d.ts +2 -0
  135. package/dist/context/context.js +1 -0
  136. package/dist/context/context.types.d.ts +2 -0
  137. package/dist/context/context.types.js +0 -0
  138. package/dist/context/index.d.ts +4 -0
  139. package/dist/context/index.js +1 -0
  140. package/dist/context-Bd4Sf8r8.js +2 -0
  141. package/dist/context-Bd4Sf8r8.js.map +1 -0
  142. package/dist/context-BoqMzqgD.js +0 -0
  143. package/dist/context-tLL-jUw_.d.ts +26 -0
  144. package/dist/context-tLL-jUw_.d.ts.map +1 -0
  145. package/dist/context.types-8c0sgn5Q.js +0 -0
  146. package/dist/context.types-DgaGu8Ly.d.ts +57 -0
  147. package/dist/context.types-DgaGu8Ly.d.ts.map +1 -0
  148. package/dist/copy-button-Bh7DmVLN.d.ts +22 -0
  149. package/dist/copy-button-Bh7DmVLN.d.ts.map +1 -0
  150. package/dist/copy-button-D50DXq56.js +2 -0
  151. package/dist/copy-button-D50DXq56.js.map +1 -0
  152. package/dist/copy-button-DpLK4Hc9.js +0 -0
  153. package/dist/copy-button.types-D6D1XKDN.d.ts +19 -0
  154. package/dist/copy-button.types-D6D1XKDN.d.ts.map +1 -0
  155. package/dist/copy-button.types-ZXpoKEH1.js +0 -0
  156. package/dist/docs-B9qhW8T2.js +0 -0
  157. package/dist/docs-copy-page-B1HSXqlm.js +3 -0
  158. package/dist/docs-copy-page-B1HSXqlm.js.map +1 -0
  159. package/dist/docs-copy-page-rZ3GkUUQ.d.ts +13 -0
  160. package/dist/docs-copy-page-rZ3GkUUQ.d.ts.map +1 -0
  161. package/dist/docs-pager-2p2cKZcg.js +2 -0
  162. package/dist/docs-pager-2p2cKZcg.js.map +1 -0
  163. package/dist/docs-pager-CLERxm13.d.ts +25 -0
  164. package/dist/docs-pager-CLERxm13.d.ts.map +1 -0
  165. package/dist/docs-sidebar-C4HMPDIN.d.ts +30 -0
  166. package/dist/docs-sidebar-C4HMPDIN.d.ts.map +1 -0
  167. package/dist/docs-sidebar-Cq7haHti.js +2 -0
  168. package/dist/docs-sidebar-Cq7haHti.js.map +1 -0
  169. package/dist/docs-toc-B4_Znnrj.d.ts +13 -0
  170. package/dist/docs-toc-B4_Znnrj.d.ts.map +1 -0
  171. package/dist/docs-toc-DfQz3sNZ.js +2 -0
  172. package/dist/docs-toc-DfQz3sNZ.js.map +1 -0
  173. package/dist/events-BKAEw9TQ.d.ts +25 -0
  174. package/dist/events-BKAEw9TQ.d.ts.map +1 -0
  175. package/dist/events-D55YvIRi.js +2 -0
  176. package/dist/events-D55YvIRi.js.map +1 -0
  177. package/dist/figcaption-block-B7CmTI6d.d.ts +11 -0
  178. package/dist/figcaption-block-B7CmTI6d.d.ts.map +1 -0
  179. package/dist/figcaption-block-DWZhs-6i.js +2 -0
  180. package/dist/figcaption-block-DWZhs-6i.js.map +1 -0
  181. package/dist/framework-docs-ZYLz3BBy.js +2 -0
  182. package/dist/framework-docs-ZYLz3BBy.js.map +1 -0
  183. package/dist/framework-docs-tYKaeYsi.d.ts +13 -0
  184. package/dist/framework-docs-tYKaeYsi.d.ts.map +1 -0
  185. package/dist/header-shell-BusaKA4C.d.ts +39 -0
  186. package/dist/header-shell-BusaKA4C.d.ts.map +1 -0
  187. package/dist/header-shell-CWHnv2ot.js +2 -0
  188. package/dist/header-shell-CWHnv2ot.js.map +1 -0
  189. package/dist/hooks/index.d.ts +8 -0
  190. package/dist/hooks/index.js +1 -0
  191. package/dist/hooks/use-colors.d.ts +3 -0
  192. package/dist/hooks/use-colors.js +1 -0
  193. package/dist/hooks/use-config.d.ts +2 -0
  194. package/dist/hooks/use-config.js +1 -0
  195. package/dist/hooks/use-lift-mode.d.ts +2 -0
  196. package/dist/hooks/use-lift-mode.js +1 -0
  197. package/dist/hooks/use-meta-colors.d.ts +2 -0
  198. package/dist/hooks/use-meta-colors.js +1 -0
  199. package/dist/hooks/use-mounted.d.ts +2 -0
  200. package/dist/hooks/use-mounted.js +1 -0
  201. package/dist/hooks/use-themes-config.d.ts +2 -0
  202. package/dist/hooks/use-themes-config.js +1 -0
  203. package/dist/icons-BqnlXRgx.d.ts +30 -0
  204. package/dist/icons-BqnlXRgx.d.ts.map +1 -0
  205. package/dist/icons-bFf026bR.js +2 -0
  206. package/dist/icons-bFf026bR.js.map +1 -0
  207. package/dist/index-2mWOLEIP.d.ts +7 -0
  208. package/dist/index-2mWOLEIP.d.ts.map +1 -0
  209. package/dist/index-BZ1Usw1L.d.ts +8 -0
  210. package/dist/index-BZ1Usw1L.d.ts.map +1 -0
  211. package/dist/index-Bunxo_8h.d.ts +8 -0
  212. package/dist/index-Bunxo_8h.d.ts.map +1 -0
  213. package/dist/index-BwEOYyLd.d.ts +1 -0
  214. package/dist/index-CJOkJMYm.d.ts +1 -0
  215. package/dist/index-Cp46Zvz-.d.ts +1 -0
  216. package/dist/index-CsVdkYso.d.ts +1 -0
  217. package/dist/index-DIk3-d3u.d.ts +1 -0
  218. package/dist/index-LAzYY5Wa.d.ts +1 -0
  219. package/dist/index-k586z2Y3.d.ts +1 -0
  220. package/dist/index-mj9Ys67i.d.ts +1 -0
  221. package/dist/index-otwxHF3U.d.ts +1 -0
  222. package/dist/index.d.ts +11 -0
  223. package/dist/index.js +1 -0
  224. package/dist/layouts-hVp-aKom.js +0 -0
  225. package/dist/lib/charts.d.ts +2 -0
  226. package/dist/lib/charts.js +1 -0
  227. package/dist/lib/colors.d.ts +2 -0
  228. package/dist/lib/colors.js +1 -0
  229. package/dist/lib/events.d.ts +2 -0
  230. package/dist/lib/events.js +1 -0
  231. package/dist/lib/index.d.ts +6 -0
  232. package/dist/lib/index.js +1 -0
  233. package/dist/lib/registry-colors-data.d.ts +229 -0
  234. package/dist/lib/registry-colors-data.d.ts.map +1 -0
  235. package/dist/lib/registry-colors-data.js +1 -0
  236. package/dist/lib/registry-styles.d.ts +2 -0
  237. package/dist/lib/registry-styles.js +1 -0
  238. package/dist/lib/themes.d.ts +2 -0
  239. package/dist/lib/themes.js +1 -0
  240. package/dist/lib/utils.d.ts +2 -0
  241. package/dist/lib/utils.js +1 -0
  242. package/dist/main-nav-Df2pgQUs.js +2 -0
  243. package/dist/main-nav-Df2pgQUs.js.map +1 -0
  244. package/dist/main-nav-SathVgSN.d.ts +7 -0
  245. package/dist/main-nav-SathVgSN.d.ts.map +1 -0
  246. package/dist/mdx-CBnfwESR.d.ts +12 -0
  247. package/dist/mdx-CBnfwESR.d.ts.map +1 -0
  248. package/dist/mdx-components-BoD1jTr7.js +0 -0
  249. package/dist/mdx-cqn1ggXI.js +2 -0
  250. package/dist/mdx-cqn1ggXI.js.map +1 -0
  251. package/dist/metadata-plugin-Ag61IUUu.d.ts +7 -0
  252. package/dist/metadata-plugin-Ag61IUUu.d.ts.map +1 -0
  253. package/dist/metadata-plugin-Mc8lCfYT.js +2 -0
  254. package/dist/metadata-plugin-Mc8lCfYT.js.map +1 -0
  255. package/dist/mobile-nav-DRQtHK-O.js +2 -0
  256. package/dist/mobile-nav-DRQtHK-O.js.map +1 -0
  257. package/dist/mobile-nav-hEfoD2ld.d.ts +7 -0
  258. package/dist/mobile-nav-hEfoD2ld.d.ts.map +1 -0
  259. package/dist/mode-toggle-BcPx4Vfk.d.ts +7 -0
  260. package/dist/mode-toggle-BcPx4Vfk.d.ts.map +1 -0
  261. package/dist/mode-toggle-CGGAaMUK.js +2 -0
  262. package/dist/mode-toggle-CGGAaMUK.js.map +1 -0
  263. package/dist/nav-0JAtUIst.d.ts +18 -0
  264. package/dist/nav-0JAtUIst.d.ts.map +1 -0
  265. package/dist/nav-6wUjcK0K.js +0 -0
  266. package/dist/page-header-BGKsl1LK.js +2 -0
  267. package/dist/page-header-BGKsl1LK.js.map +1 -0
  268. package/dist/page-header-Brw3423H.d.ts +23 -0
  269. package/dist/page-header-Brw3423H.d.ts.map +1 -0
  270. package/dist/pre-block-BThyCz1h.js +2 -0
  271. package/dist/pre-block-BThyCz1h.js.map +1 -0
  272. package/dist/pre-block-CTP3z9eq.d.ts +33 -0
  273. package/dist/pre-block-CTP3z9eq.d.ts.map +1 -0
  274. package/dist/providers-BU3xm7I4.d.ts +11 -0
  275. package/dist/providers-BU3xm7I4.d.ts.map +1 -0
  276. package/dist/providers-fDpVqSs8.js +2 -0
  277. package/dist/providers-fDpVqSs8.js.map +1 -0
  278. package/dist/registry-colors-data-FyxAihEQ.js +2 -0
  279. package/dist/registry-colors-data-FyxAihEQ.js.map +1 -0
  280. package/dist/registry-styles-Cm1HpC4C.js +2 -0
  281. package/dist/registry-styles-Cm1HpC4C.js.map +1 -0
  282. package/dist/registry-styles-WvCGd0xY.d.ts +9 -0
  283. package/dist/registry-styles-WvCGd0xY.d.ts.map +1 -0
  284. package/dist/rehype-pre-block-source-Bz3-G4tr.js +2 -0
  285. package/dist/rehype-pre-block-source-Bz3-G4tr.js.map +1 -0
  286. package/dist/rehype-pre-block-source-Le9z9RN8.d.ts +7 -0
  287. package/dist/rehype-pre-block-source-Le9z9RN8.d.ts.map +1 -0
  288. package/dist/rehype-title-C1q6PbyG.js +2 -0
  289. package/dist/rehype-title-C1q6PbyG.js.map +1 -0
  290. package/dist/rehype-title-Dwt_OKnR.d.ts +7 -0
  291. package/dist/rehype-title-Dwt_OKnR.d.ts.map +1 -0
  292. package/dist/site-footer-CsUC-l-l.js +2 -0
  293. package/dist/site-footer-CsUC-l-l.js.map +1 -0
  294. package/dist/site-header-Bi3-9Kl3.js +2 -0
  295. package/dist/site-header-Bi3-9Kl3.js.map +1 -0
  296. package/dist/style-switcher-BXEGTMW2.d.ts +12 -0
  297. package/dist/style-switcher-BXEGTMW2.d.ts.map +1 -0
  298. package/dist/style-switcher-CpcMcuwL.js +2 -0
  299. package/dist/style-switcher-CpcMcuwL.js.map +1 -0
  300. package/dist/styles/base.css +156 -0
  301. package/dist/styles/docs.css +186 -0
  302. package/dist/styles/mdx.css +205 -0
  303. package/dist/table-B1hJe5kw.d.ts +10 -0
  304. package/dist/table-B1hJe5kw.d.ts.map +1 -0
  305. package/dist/table-Sc60jiil.js +2 -0
  306. package/dist/table-Sc60jiil.js.map +1 -0
  307. package/dist/tabs-DWxNPhgN.d.ts +23 -0
  308. package/dist/tabs-DWxNPhgN.d.ts.map +1 -0
  309. package/dist/tabs-KvYm5au9.js +2 -0
  310. package/dist/tabs-KvYm5au9.js.map +1 -0
  311. package/dist/tailwind-indicator-CV2jUfip.js +2 -0
  312. package/dist/tailwind-indicator-CV2jUfip.js.map +1 -0
  313. package/dist/themes-Dg5GgDgK.js +0 -0
  314. package/dist/themes-DsvojWlq.js +2 -0
  315. package/dist/themes-DsvojWlq.js.map +1 -0
  316. package/dist/themes-dv8YVpXg.d.ts +495 -0
  317. package/dist/themes-dv8YVpXg.d.ts.map +1 -0
  318. package/dist/typepography-B_jjjv9F.d.ts +54 -0
  319. package/dist/typepography-B_jjjv9F.d.ts.map +1 -0
  320. package/dist/typepography-Btk-lJ3O.js +2 -0
  321. package/dist/typepography-Btk-lJ3O.js.map +1 -0
  322. package/dist/types/index.d.ts +4 -0
  323. package/dist/types/index.js +0 -0
  324. package/dist/types/nav.d.ts +2 -0
  325. package/dist/types/nav.js +0 -0
  326. package/dist/types/unist.d.ts +2 -0
  327. package/dist/types/unist.js +0 -0
  328. package/dist/unist-Bs-H_R8g.d.ts +40 -0
  329. package/dist/unist-Bs-H_R8g.d.ts.map +1 -0
  330. package/dist/unist-DpNAVhDX.js +0 -0
  331. package/dist/use-colors-CeiLGCjZ.d.ts +13 -0
  332. package/dist/use-colors-CeiLGCjZ.d.ts.map +1 -0
  333. package/dist/use-colors-JhoQAYK2.js +2 -0
  334. package/dist/use-colors-JhoQAYK2.js.map +1 -0
  335. package/dist/use-config-CFygUPAg.d.ts +13 -0
  336. package/dist/use-config-CFygUPAg.d.ts.map +1 -0
  337. package/dist/use-config-D1zkiIbf.js +2 -0
  338. package/dist/use-config-D1zkiIbf.js.map +1 -0
  339. package/dist/use-lift-mode-Dya2HcpU.js +2 -0
  340. package/dist/use-lift-mode-Dya2HcpU.js.map +1 -0
  341. package/dist/use-lift-mode-IpZRia0D.d.ts +8 -0
  342. package/dist/use-lift-mode-IpZRia0D.d.ts.map +1 -0
  343. package/dist/use-meta-colors-BhIhFzvx.js +2 -0
  344. package/dist/use-meta-colors-BhIhFzvx.js.map +1 -0
  345. package/dist/use-meta-colors-C8OegAZO.d.ts +8 -0
  346. package/dist/use-meta-colors-C8OegAZO.d.ts.map +1 -0
  347. package/dist/use-mounted-D25Cx8rc.d.ts +5 -0
  348. package/dist/use-mounted-D25Cx8rc.d.ts.map +1 -0
  349. package/dist/use-mounted-SpB3P6Vt.js +2 -0
  350. package/dist/use-mounted-SpB3P6Vt.js.map +1 -0
  351. package/dist/use-themes-config-Bo-JZDNU.js +2 -0
  352. package/dist/use-themes-config-Bo-JZDNU.js.map +1 -0
  353. package/dist/use-themes-config-DfQCuhPn.d.ts +14 -0
  354. package/dist/use-themes-config-DfQCuhPn.d.ts.map +1 -0
  355. package/dist/utils-CMPpWmbv.d.ts +9 -0
  356. package/dist/utils-CMPpWmbv.d.ts.map +1 -0
  357. package/dist/utils-NjSy-iOL.js +2 -0
  358. package/dist/utils-NjSy-iOL.js.map +1 -0
  359. package/dist/velite/browser.d.ts +11 -0
  360. package/dist/velite/browser.d.ts.map +1 -0
  361. package/dist/velite/browser.js +2 -0
  362. package/dist/velite/browser.js.map +1 -0
  363. package/dist/velite/config.d.ts +21 -0
  364. package/dist/velite/config.d.ts.map +1 -0
  365. package/dist/velite/config.js +2 -0
  366. package/dist/velite/config.js.map +1 -0
  367. package/dist/velite/index.d.ts +10 -0
  368. package/dist/velite/index.js +1 -0
  369. package/dist/velite/plugins/index.d.ts +6 -0
  370. package/dist/velite/plugins/index.js +1 -0
  371. package/dist/velite/plugins/metadata-plugin.d.ts +4 -0
  372. package/dist/velite/plugins/metadata-plugin.js +1 -0
  373. package/dist/velite/plugins/rehype-pre-block-source.d.ts +4 -0
  374. package/dist/velite/plugins/rehype-pre-block-source.js +1 -0
  375. package/dist/velite/plugins/rehype-title.d.ts +4 -0
  376. package/dist/velite/plugins/rehype-title.js +1 -0
  377. package/dist/velite/rehype-npm-command.d.ts +8 -0
  378. package/dist/velite/rehype-npm-command.d.ts.map +1 -0
  379. package/dist/velite/rehype-npm-command.js +2 -0
  380. package/dist/velite/rehype-npm-command.js.map +1 -0
  381. package/dist/velite/utils.d.ts +5 -0
  382. package/dist/velite/utils.d.ts.map +1 -0
  383. package/dist/velite/utils.js +2 -0
  384. package/dist/velite/utils.js.map +1 -0
  385. package/package.json +174 -0
  386. package/src/client.ts +5 -0
  387. package/src/components/copy-button/copy-button.tsx +88 -0
  388. package/src/components/copy-button/copy-button.types.ts +17 -0
  389. package/src/components/copy-button/index.ts +2 -0
  390. package/src/components/docs/docs-copy-page.tsx +106 -0
  391. package/src/components/docs/docs-pager.tsx +114 -0
  392. package/src/components/docs/docs-sidebar.tsx +104 -0
  393. package/src/components/docs/docs-toc.tsx +104 -0
  394. package/src/components/docs/index.ts +4 -0
  395. package/src/components/icons.tsx +194 -0
  396. package/src/components/index.ts +13 -0
  397. package/src/components/layouts/command-menu/command-menu.tsx +166 -0
  398. package/src/components/layouts/command-menu/index.ts +1 -0
  399. package/src/components/layouts/index.ts +4 -0
  400. package/src/components/layouts/site-footer/index.tsx +70 -0
  401. package/src/components/layouts/site-header/header-shell.tsx +75 -0
  402. package/src/components/layouts/site-header/index.tsx +121 -0
  403. package/src/components/layouts/tailwind-indicator/index.tsx +16 -0
  404. package/src/components/main-nav.tsx +33 -0
  405. package/src/components/mdx/mdx-components/callout.tsx +17 -0
  406. package/src/components/mdx/mdx-components/code/code-block-wrapper.tsx +12 -0
  407. package/src/components/mdx/mdx-components/code/code-block.tsx +30 -0
  408. package/src/components/mdx/mdx-components/code/code-preview.tsx +80 -0
  409. package/src/components/mdx/mdx-components/code/component-preview.tsx +161 -0
  410. package/src/components/mdx/mdx-components/code/component-source.tsx +54 -0
  411. package/src/components/mdx/mdx-components/code/figcaption-block.tsx +25 -0
  412. package/src/components/mdx/mdx-components/code/index.ts +7 -0
  413. package/src/components/mdx/mdx-components/code/pre-block.tsx +103 -0
  414. package/src/components/mdx/mdx-components/code/span-block.tsx +13 -0
  415. package/src/components/mdx/mdx-components/components-list.tsx +23 -0
  416. package/src/components/mdx/mdx-components/exalidraw.tsx +12 -0
  417. package/src/components/mdx/mdx-components/framework-docs.tsx +20 -0
  418. package/src/components/mdx/mdx-components/index.ts +7 -0
  419. package/src/components/mdx/mdx-components/table.tsx +35 -0
  420. package/src/components/mdx/mdx-components/tabs.tsx +32 -0
  421. package/src/components/mdx/mdx-components/typepography.tsx +70 -0
  422. package/src/components/mdx/mdx.tsx +103 -0
  423. package/src/components/mobile-nav.tsx +91 -0
  424. package/src/components/mode-toggle.tsx +41 -0
  425. package/src/components/page-header.tsx +42 -0
  426. package/src/components/providers.tsx +14 -0
  427. package/src/components/themes/index.ts +1 -0
  428. package/src/components/themes/style-switcher.tsx +35 -0
  429. package/src/context/context.tsx +66 -0
  430. package/src/context/context.types.ts +55 -0
  431. package/src/context/index.ts +2 -0
  432. package/src/hooks/index.ts +6 -0
  433. package/src/hooks/use-colors.ts +27 -0
  434. package/src/hooks/use-config.ts +19 -0
  435. package/src/hooks/use-lift-mode.ts +19 -0
  436. package/src/hooks/use-meta-colors.ts +27 -0
  437. package/src/hooks/use-mounted.ts +11 -0
  438. package/src/hooks/use-themes-config.ts +17 -0
  439. package/src/index.ts +10 -0
  440. package/src/lib/charts.ts +23 -0
  441. package/src/lib/colors.ts +86 -0
  442. package/src/lib/events.ts +30 -0
  443. package/src/lib/index.ts +5 -0
  444. package/src/lib/registry-colors-data.ts +1810 -0
  445. package/src/lib/registry-styles.ts +8 -0
  446. package/src/lib/themes.ts +482 -0
  447. package/src/lib/utils.ts +42 -0
  448. package/src/styles/base.css +156 -0
  449. package/src/styles/docs.css +186 -0
  450. package/src/styles/mdx.css +205 -0
  451. package/src/types/index.ts +2 -0
  452. package/src/types/nav.ts +17 -0
  453. package/src/types/unist.ts +39 -0
  454. package/src/velite/browser.ts +11 -0
  455. package/src/velite/config.ts +118 -0
  456. package/src/velite/index.ts +5 -0
  457. package/src/velite/plugins/index.ts +3 -0
  458. package/src/velite/plugins/metadata-plugin.ts +26 -0
  459. package/src/velite/plugins/rehype-pre-block-source.ts +25 -0
  460. package/src/velite/plugins/rehype-title.ts +24 -0
  461. package/src/velite/rehype-npm-command.ts +42 -0
  462. package/src/velite/utils.ts +9 -0
@@ -0,0 +1,121 @@
1
+ 'use client'
2
+
3
+ import { CommandMenu } from '@duck-docs/components/layouts/command-menu'
4
+ import { MainNav } from '@duck-docs/components/main-nav'
5
+ import { MobileNav } from '@duck-docs/components/mobile-nav'
6
+ import { ModeSwitcher } from '@duck-docs/components/mode-toggle'
7
+ import { useSiteConfig } from '@duck-docs/context'
8
+ import { cn } from '@gentleduck/libs/cn'
9
+ import { buttonVariants } from '@gentleduck/registry-ui-duckui/button'
10
+ import { useAtom } from 'jotai'
11
+ import { atomWithStorage } from 'jotai/utils'
12
+ import { CaseUpper, Github, Twitter, Type } from 'lucide-react'
13
+ import Link from 'next/link'
14
+ import React from 'react'
15
+ import { HeaderContainer, HeaderRoot } from './header-shell'
16
+
17
+ export function SiteHeader() {
18
+ const siteConfig = useSiteConfig()
19
+
20
+ return (
21
+ <HeaderRoot className="border-border/50 border-b bg-background/95 backdrop-blur-sm supports-[backdrop-filter]:bg-background/70">
22
+ <HeaderContainer>
23
+ <MainNav />
24
+ <MobileNav />
25
+ <div className="flex flex-1 items-center justify-between space-x-2 md:justify-end">
26
+ <div className="w-full flex-1 md:w-auto md:flex-none">
27
+ <CommandMenu />
28
+ </div>
29
+ <nav className="flex items-center">
30
+ <GitHubStarsButton />
31
+ <FontStyleButton />
32
+ {siteConfig.links?.twitter ? (
33
+ <Link aria-label="Twitter" href={siteConfig.links.twitter} rel="noreferrer" target="_blank">
34
+ <div
35
+ className={cn(
36
+ buttonVariants({
37
+ size: 'icon',
38
+ variant: 'ghost',
39
+ }),
40
+ )}>
41
+ <Twitter />
42
+ </div>
43
+ </Link>
44
+ ) : null}
45
+ <ModeSwitcher />
46
+ </nav>
47
+ </div>
48
+ </HeaderContainer>
49
+ </HeaderRoot>
50
+ )
51
+ }
52
+
53
+ function GitHubStarsButton() {
54
+ const [stars, setStars] = React.useState<number | null>(null)
55
+ const siteConfig = useSiteConfig()
56
+ const repoFromUrl = siteConfig.links?.github?.replace('https://github.com/', '').replace(/\/$/, '')
57
+ const repo = siteConfig.githubRepo ?? repoFromUrl
58
+
59
+ React.useEffect(() => {
60
+ async function fetchStars() {
61
+ try {
62
+ if (!repo) {
63
+ return
64
+ }
65
+ const res = await fetch(`https://api.github.com/repos/${repo}`)
66
+ const data = await res.json()
67
+ setStars(data.stargazers_count)
68
+ } catch (err) {
69
+ console.error('Failed to fetch stars:', err)
70
+ }
71
+ }
72
+ fetchStars()
73
+ }, [])
74
+
75
+ if (!siteConfig.links?.github) {
76
+ return null
77
+ }
78
+
79
+ return (
80
+ <Link aria-label="GitHub" href={siteConfig.links.github} rel="noopener noreferrer" target="_blank">
81
+ <div
82
+ className={cn(
83
+ buttonVariants({
84
+ className: 'size-auto h-8 w-16 font-medium text-sm',
85
+ size: 'icon',
86
+ variant: 'ghost',
87
+ }),
88
+ )}>
89
+ <Github />
90
+ {stars !== null ? stars.toLocaleString() : '...'}
91
+ </div>
92
+ </Link>
93
+ )
94
+ }
95
+ const fontAtom = atomWithStorage('fontType', 'mono')
96
+
97
+ export function FontStyleButton() {
98
+ const [fontType, setFontType] = useAtom(fontAtom)
99
+ const firstRender = React.useRef(true)
100
+
101
+ React.useEffect(() => {
102
+ if (firstRender.current) {
103
+ firstRender.current = false
104
+ return
105
+ }
106
+
107
+ const family = fontType === 'sans' ? 'var(--font-sans-geist)' : 'var(--font-mono-geist)'
108
+
109
+ document.documentElement.style.setProperty('font-family', family, 'important')
110
+ }, [fontType])
111
+
112
+ return (
113
+ <div
114
+ className={cn(buttonVariants({ size: 'icon', variant: 'ghost' }))}
115
+ onClick={() => setFontType(fontType === 'mono' ? 'sans' : 'mono')}>
116
+ {fontType === 'mono' ? <Type /> : <CaseUpper />}
117
+ </div>
118
+ )
119
+ }
120
+
121
+ export { HeaderBrand, HeaderContainer, HeaderRoot, HeaderSection } from './header-shell'
@@ -0,0 +1,16 @@
1
+ export function TailwindIndicator() {
2
+ if (process.env.NODE_ENV === 'production') return null
3
+
4
+ return (
5
+ <div
6
+ className="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-white text-xs"
7
+ data-tailwind-indicator="">
8
+ <div className="block sm:hidden">xs</div>
9
+ <div className="hidden sm:block md:hidden">sm</div>
10
+ <div className="hidden md:block lg:hidden">md</div>
11
+ <div className="hidden lg:block xl:hidden">lg</div>
12
+ <div className="hidden xl:block 2xl:hidden">xl</div>
13
+ <div className="hidden 2xl:block">2xl</div>
14
+ </div>
15
+ )
16
+ }
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+
3
+ import { useDocsConfig } from '@duck-docs/context'
4
+ import { cn } from '@gentleduck/libs/cn'
5
+ import Link from 'next/link'
6
+ import { usePathname } from 'next/navigation'
7
+ import { HeaderBrand } from './layouts/site-header/header-shell'
8
+
9
+ export function MainNav() {
10
+ const pathname = usePathname()
11
+ const { mainNav } = useDocsConfig()
12
+
13
+ return (
14
+ <div className="mr-4 hidden md:flex">
15
+ <HeaderBrand className="mr-4 lg:mr-6" />
16
+ {mainNav?.length ? (
17
+ <nav className="flex items-center gap-4 text-sm xl:gap-6">
18
+ {mainNav.map((item) => (
19
+ <Link
20
+ className={cn(
21
+ 'font-medium transition-colors hover:text-foreground/80',
22
+ pathname === item.href ? 'text-foreground' : 'text-foreground/80',
23
+ )}
24
+ href={item.href ?? '#'}
25
+ key={item.href ?? item.title}>
26
+ {item.title}
27
+ </Link>
28
+ ))}
29
+ </nav>
30
+ ) : null}
31
+ </div>
32
+ )
33
+ }
@@ -0,0 +1,17 @@
1
+ import { Alert, AlertDescription, AlertTitle } from '@gentleduck/registry-ui-duckui/alert'
2
+
3
+ interface CalloutProps {
4
+ icon?: string
5
+ title?: string
6
+ children?: React.ReactNode
7
+ }
8
+
9
+ export function Callout({ title, children, icon, ...props }: CalloutProps) {
10
+ return (
11
+ <Alert {...props}>
12
+ {icon && <span className="mr-4 text-2xl">{icon}</span>}
13
+ {title && <AlertTitle>{title}</AlertTitle>}
14
+ <AlertDescription>{children}</AlertDescription>
15
+ </Alert>
16
+ )
17
+ }
@@ -0,0 +1,12 @@
1
+ 'use client'
2
+
3
+ import { cn } from '@gentleduck/libs/cn'
4
+ import type * as React from 'react'
5
+
6
+ export function CodeBlockWrapper({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {
7
+ return (
8
+ <div className={cn(className)} {...props}>
9
+ {children}
10
+ </div>
11
+ )
12
+ }
@@ -0,0 +1,30 @@
1
+ import { cn } from '@gentleduck/libs/cn'
2
+
3
+ interface CodeProps extends React.HTMLAttributes<HTMLElement> {
4
+ __rawString__?: boolean
5
+ }
6
+
7
+ export function CodeBlock({ className, __rawString__, ...props }: CodeProps) {
8
+ if (__rawString__) {
9
+ return (
10
+ <code
11
+ className={cn(
12
+ 'relative rounded-sm bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm dark:bg-muted',
13
+ className,
14
+ )}
15
+ {...props}
16
+ />
17
+ )
18
+ }
19
+
20
+ return (
21
+ <code
22
+ className={cn(
23
+ 'relative rounded-sm px-[0.3rem] py-[0.2rem] font-mono text-sm',
24
+ 'grid min-w-full break-words rounded-none border-0 bg-transparent p-0',
25
+ className,
26
+ )}
27
+ {...props}
28
+ />
29
+ )
30
+ }
@@ -0,0 +1,80 @@
1
+ 'use client'
2
+
3
+ import { Icons } from '@duck-docs/components/icons'
4
+ import { useLiftMode } from '@duck-docs/hooks/use-lift-mode'
5
+ import { cn } from '@gentleduck/libs/cn'
6
+ import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@gentleduck/registry-ui-duckui/resizable'
7
+ import { Tabs, TabsContent } from '@gentleduck/registry-ui-duckui/tabs'
8
+ import React from 'react'
9
+ import type { ImperativePanelHandle } from 'react-resizable-panels'
10
+
11
+ type Block = {
12
+ name: string
13
+ container?: {
14
+ height?: number
15
+ }
16
+ highlightedCode: string
17
+ }
18
+
19
+ export function CodePreview({ block }: { block: Block & { hasLiftMode: boolean } }) {
20
+ const { isLiftMode } = useLiftMode(block.name)
21
+ const [isLoading, setIsLoading] = React.useState(true)
22
+ const ref = React.useRef<ImperativePanelHandle>(null)
23
+
24
+ return (
25
+ <Tabs
26
+ className="relative grid w-full scroll-m-20 gap-4"
27
+ defaultValue="preview"
28
+ id={block.name}
29
+ style={
30
+ {
31
+ '--container-height': block.container?.height,
32
+ } as React.CSSProperties
33
+ }>
34
+ <TabsContent
35
+ className="relative after:absolute after:inset-0 after:right-3 after:z-0 after:rounded-lg after:bg-muted"
36
+ value="preview">
37
+ <ResizablePanelGroup className="relative z-10" direction="horizontal">
38
+ <ResizablePanel
39
+ className={cn(
40
+ 'relative rounded-lg border bg-background',
41
+ isLiftMode ? 'border-border/50' : 'border-border',
42
+ )}
43
+ defaultSize={100}
44
+ minSize={30}
45
+ ref={ref}>
46
+ {isLoading ? (
47
+ <div className="absolute inset-0 z-10 flex h-[--container-height] w-full items-center justify-center gap-2 bg-background text-muted-foreground text-sm">
48
+ <Icons.spinner className="h-4 w-4 animate-spin" />
49
+ Loading...
50
+ </div>
51
+ ) : null}
52
+ <iframe
53
+ allowTransparency
54
+ className="chunk-mode relative z-20 w-full bg-background"
55
+ height={block.container?.height ?? 450}
56
+ onLoad={() => {
57
+ setIsLoading(false)
58
+ }}
59
+ src={`/blocks/${block.name}`}
60
+ />
61
+ </ResizablePanel>
62
+ <ResizableHandle
63
+ className={cn(
64
+ 'relative hidden w-3 bg-transparent p-0 after:absolute after:top-1/2 after:right-0 after:h-8 after:w-[6px] after:translate-x-[-1px] after:-translate-y-1/2 after:rounded-full after:bg-border after:transition-all after:hover:h-10 sm:block',
65
+ isLiftMode && 'invisible',
66
+ )}
67
+ />
68
+ <ResizablePanel defaultSize={0} minSize={0} />
69
+ </ResizablePanelGroup>
70
+ </TabsContent>
71
+ <TabsContent value="code">
72
+ <div
73
+ className="w-full overflow-hidden rounded-md [&_pre]:my-0 [&_pre]:h-[--container-height] [&_pre]:overflow-auto [&_pre]:whitespace-break-spaces [&_pre]:p-6 [&_pre]:font-mono [&_pre]:text-sm [&_pre]:leading-relaxed"
74
+ dangerouslySetInnerHTML={{ __html: block.highlightedCode }}
75
+ data-rehype-pretty-code-fragment
76
+ />
77
+ </TabsContent>
78
+ </Tabs>
79
+ )
80
+ }
@@ -0,0 +1,161 @@
1
+ 'use client'
2
+
3
+ import { CopyButton } from '@duck-docs/components/copy-button'
4
+ import { Icons } from '@duck-docs/components/icons'
5
+ import { useRegistryIndex } from '@duck-docs/context'
6
+ import { cn } from '@gentleduck/libs/cn'
7
+ import { Button } from '@gentleduck/registry-ui-duckui/button'
8
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@gentleduck/registry-ui-duckui/tabs'
9
+ import { Crown } from 'lucide-react'
10
+ import * as React from 'react'
11
+
12
+ interface ComponentPreviewProps extends React.HTMLAttributes<HTMLDivElement> {
13
+ name: string
14
+ extractClassname?: boolean
15
+ extractedClassNames?: string
16
+ align?: 'center' | 'start' | 'end'
17
+ description?: string
18
+ hideCode?: boolean
19
+ showSettings?: boolean
20
+ }
21
+
22
+ export function ComponentPreview({
23
+ name,
24
+ children,
25
+ className,
26
+ extractClassname,
27
+ extractedClassNames,
28
+ align = 'center',
29
+ description,
30
+ hideCode = false,
31
+ showSettings = false,
32
+ ...props
33
+ }: ComponentPreviewProps) {
34
+ const Codes = React.Children.toArray(children) as React.ReactElement[]
35
+ const Code = Codes[0]
36
+ const registryIndex = useRegistryIndex()
37
+
38
+ const Preview = React.useMemo(() => {
39
+ if (!registryIndex) {
40
+ return <p className="text-muted-foreground text-sm">Registry index is not configured for this docs app.</p>
41
+ }
42
+
43
+ const Component = registryIndex[name]?.component
44
+
45
+ if (!Component) {
46
+ return (
47
+ <p className="text-muted-foreground text-sm">
48
+ Component <code className="relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm">{name}</code>{' '}
49
+ not found in registry.
50
+ </p>
51
+ )
52
+ }
53
+
54
+ return <Component />
55
+ }, [name, registryIndex])
56
+
57
+ const codeString = React.useMemo(() => {
58
+ if (
59
+ // ! FIX:
60
+ // @ts-ignore 'Code.props' is of type 'unknown'.ts(18046)
61
+ typeof Code?.props['data-rehype-pretty-code-fragment'] !== 'undefined'
62
+ ) {
63
+ const Button = React.Children.toArray(
64
+ // ! FIX:
65
+ // @ts-expect-error Property 'children' does not exist on type '{}'.ts(2339)
66
+ Code.props.children,
67
+ ) as React.ReactElement[]
68
+ // ! FIX:
69
+ // @ts-expect-error Property '__rawString__' does not exist on type '{}'.ts(2339)
70
+ return Button[1]?.props?.value || Button[1]?.props?.__rawString__ || null
71
+ }
72
+ }, [Code])
73
+
74
+ return (
75
+ <div
76
+ className={cn('group relative my-4 flex flex-col [&_div[data-slot="placeholder"]]:h-[512px]', className)}
77
+ {...props}>
78
+ <Tabs className="relative mr-auto w-full" defaultValue="preview">
79
+ <div className="flex items-center justify-between">
80
+ {!hideCode && (
81
+ <TabsList className="w-full justify-start overflow-x-auto rounded-none border-b bg-transparent p-0 [&_button]:shadow-none">
82
+ {TABS.map((tab, idx) => (
83
+ <TabsTrigger
84
+ className="cursor-pointer rounded-none border-b-[2px] border-b-transparent px-12 py-2 [&[aria-selected='true']]:border-b-primary [&[aria-selected='true']]:shadow-none [&_input]:focus-visible:shadow-none [&_input]:focus-visible:ring-transparent [&_input]:focus-visible:ring-offset-0"
85
+ key={idx}
86
+ value={tab.value}>
87
+ {tab.name}
88
+ </TabsTrigger>
89
+ ))}
90
+ </TabsList>
91
+ )}
92
+ </div>
93
+ <TabsContent className="relative min-w-2/5 rounded-md border" value="preview">
94
+ <div className="absolute flex w-full items-center justify-between p-4">
95
+ <span className="text-muted-foreground text-sm">{}</span>
96
+ <div className="flex items-center gap-2">
97
+ <CopyButton value={codeString} variant="outline" />
98
+ </div>
99
+ </div>
100
+ <div
101
+ className={cn('preview flex h-[500px] w-full justify-center overflow-auto p-10', {
102
+ 'items-center': align === 'center',
103
+ 'items-end': align === 'end',
104
+ 'items-start': align === 'start',
105
+ })}
106
+ duck-preview="">
107
+ <React.Suspense
108
+ fallback={
109
+ <div className="flex w-full items-center justify-center text-muted-foreground text-sm">
110
+ <Icons.spinner className="mr-2 h-4 w-4 animate-spin" />
111
+ Loading...
112
+ </div>
113
+ }>
114
+ {Preview}
115
+ </React.Suspense>
116
+ </div>
117
+ </TabsContent>
118
+ <TabsContent
119
+ className="[&_[data-rehype-pretty-code-fragment]]:!m-0 relative mt-2 [&>div>div>button]:top-3 [&>div>div>button]:right-3 [&>div>div]:mb-0 [&>div]:rounded-lg [&>div]:border [&>div]:bg-muted/40 [&_pre]:h-[502px]"
120
+ value="code">
121
+ {Code}
122
+ </TabsContent>
123
+ <BuildTab />
124
+ </Tabs>
125
+ </div>
126
+ )
127
+ }
128
+
129
+ export const BuildTab = () => {
130
+ return (
131
+ <TabsContent className="relative overflow-hidden" value="build">
132
+ <div className="h-[500px] overflow-hidden rounded-lg">
133
+ <img alt="build" className="object-cover" src="/builder.png" />
134
+ </div>
135
+
136
+ <div className="absolute inset-0 top-0 left-0 flex h-[500px] flex-col items-center justify-center gap-4 rounded-md bg-zinc-700/10 px-4 py-2 backdrop-blur-sm dark:bg-zinc-700/50">
137
+ <div className="flex items-center gap-4">
138
+ <Button className="rounded-sm font-bold" size={'sm'}>
139
+ <Crown />
140
+ <span>Coming soon</span>
141
+ </Button>
142
+ </div>
143
+ </div>
144
+ </TabsContent>
145
+ )
146
+ }
147
+
148
+ export const TABS = [
149
+ {
150
+ name: 'Preview',
151
+ value: 'preview',
152
+ },
153
+ {
154
+ name: 'Code',
155
+ value: 'code',
156
+ },
157
+ // {
158
+ // name: 'Benchmark',
159
+ // value: 'benchmark',
160
+ // },
161
+ ]
@@ -0,0 +1,54 @@
1
+ 'use client'
2
+
3
+ import { Separator } from '@gentleduck/registry-ui-duckui/separator'
4
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@gentleduck/registry-ui-duckui/tabs'
5
+ import type React from 'react'
6
+ import { FigcaptionBlock } from './figcaption-block'
7
+
8
+ interface ComponentSourceProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ children: React.ReactNode[]
10
+ src: string
11
+ }
12
+
13
+ /** NOTE: the props are not used */
14
+ export function ComponentSource({ children, className, ...props }: ComponentSourceProps) {
15
+ if (!children.length) {
16
+ return children
17
+ }
18
+
19
+ const defaultValue = String((children[0] as any).props.children[0].props.__rawString__)
20
+ .split('\n')[0]
21
+ ?.replace('//', '') as string
22
+
23
+ return (
24
+ <Tabs className="rounded-md border border-border bg-muted/40" defaultValue={defaultValue}>
25
+ <TabsList className="w-[622px] justify-start overflow-x-auto bg-transparent px-2 py-2">
26
+ {children.map((item, idx) => {
27
+ const value = String((item as any).props.children[0].props.__rawString__)
28
+ .split('\n')[0]
29
+ ?.replace('//', '') as string
30
+ return (
31
+ <TabsTrigger className="aria-[selected='true']:bg-muted" key={idx} value={value}>
32
+ {value}
33
+ </TabsTrigger>
34
+ )
35
+ })}
36
+ </TabsList>
37
+ <Separator />
38
+ {children.map((item, idx) => {
39
+ const value = String((item as any).props.children[0].props.__rawString__)
40
+ .split('\n')[0]
41
+ ?.replace('//', '') as string
42
+ return (
43
+ <TabsContent
44
+ className="relative m-0 bg-transparent focus-visible:shadow-none focus-visible:outline-none focus-visible:ring-0 [&>div>div>button]:top-1 [&>div>div>button]:right-1 [&>div>div]:m-0"
45
+ key={idx}
46
+ value={value}>
47
+ <FigcaptionBlock>{value}</FigcaptionBlock>
48
+ {item}
49
+ </TabsContent>
50
+ )
51
+ })}
52
+ </Tabs>
53
+ )
54
+ }
@@ -0,0 +1,25 @@
1
+ import { getIconForLanguageExtension } from '@duck-docs/components/icons'
2
+ import { cn } from '@gentleduck/libs/cn'
3
+ import { Separator } from '@gentleduck/registry-ui-duckui/separator'
4
+
5
+ export function FigcaptionBlock({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
6
+ const language = children?.toString().split('.').pop() ?? 'terminal'
7
+
8
+ const Icon = getIconForLanguageExtension(language)
9
+
10
+ return (
11
+ <>
12
+ <figcaption {...props} className="rounded-lg p-2">
13
+ <div
14
+ className={cn(
15
+ className,
16
+ 'flex items-center gap-2 font-mono text-muted-foreground text-sm ltr:pl-1.5 rtl:pr-1.5 [&_svg]:h-4 [&_svg]:w-4',
17
+ )}>
18
+ {Icon}
19
+ {children}
20
+ </div>
21
+ </figcaption>
22
+ <Separator />
23
+ </>
24
+ )
25
+ }
@@ -0,0 +1,7 @@
1
+ export * from './code-block'
2
+ export * from './code-block-wrapper'
3
+ export * from './code-preview'
4
+ export * from './component-preview'
5
+ export * from './component-source'
6
+ export * from './figcaption-block'
7
+ export * from './pre-block'
@@ -0,0 +1,103 @@
1
+ import { CopyButton } from '@duck-docs/components/copy-button'
2
+ import type { Event } from '@duck-docs/lib/events'
3
+ import type { NpmCommands } from '@duck-docs/types/unist'
4
+ import { cn } from '@gentleduck/libs/cn'
5
+ import { Separator } from '@gentleduck/registry-ui-duckui/separator'
6
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@gentleduck/registry-ui-duckui/tabs'
7
+ import { Terminal } from 'lucide-react'
8
+
9
+ export type CodeBlockProps = React.HTMLAttributes<HTMLPreElement> & {
10
+ __rawString__?: string
11
+ __withMeta__?: boolean
12
+ __title__?: string
13
+ __event__?: Event['name']
14
+ } & NpmCommands
15
+
16
+ export function PreBlock({
17
+ className,
18
+ __rawString__,
19
+ __npmCommand__,
20
+ __yarnCommand__,
21
+ __pnpmCommand__,
22
+ __bunCommand__,
23
+ __withMeta__,
24
+ __event__,
25
+ __title__,
26
+ children,
27
+ ...props
28
+ }: CodeBlockProps) {
29
+ return (
30
+ <div data-theme={(props as any)['data-theme']}>
31
+ {__npmCommand__ && __yarnCommand__ && __pnpmCommand__ && __bunCommand__ ? (
32
+ <ShellCommand
33
+ __bunCommand__={__bunCommand__}
34
+ __npmCommand__={__npmCommand__}
35
+ __pnpmCommand__={__pnpmCommand__}
36
+ __yarnCommand__={__yarnCommand__}
37
+ {...props}
38
+ />
39
+ ) : (
40
+ <>
41
+ {__rawString__ && !__npmCommand__ && (
42
+ <CopyButton
43
+ className={cn('absolute top-2 right-2 bg-muted [&_svg]:text-muted-foreground', __withMeta__ && 'top-16')}
44
+ event={__event__}
45
+ value={__rawString__}
46
+ variant={'outline'}
47
+ />
48
+ )}
49
+ <pre
50
+ className={cn(
51
+ 'max-h-[650px] overflow-auto rounded-lg py-4 focus-visible:shadow-none focus-visible:outline-none',
52
+ className,
53
+ )}
54
+ {...props}>
55
+ {children}
56
+ </pre>
57
+ </>
58
+ )}
59
+ </div>
60
+ )
61
+ }
62
+
63
+ export function ShellCommand({ __npmCommand__, __yarnCommand__, __pnpmCommand__, __bunCommand__ }: NpmCommands) {
64
+ const commands = {
65
+ __bunCommand__,
66
+ __npmCommand__,
67
+ __pnpmCommand__,
68
+ __yarnCommand__,
69
+ }
70
+ return (
71
+ <Tabs className="rounded-md" defaultValue="__npmCommand__">
72
+ <TabsList className="w-fit justify-start bg-transparent py-2">
73
+ <div className="flex size-4 flex-col items-center justify-center bg-foreground/65 ltr:mr-2 ltr:ml-3 rtl:mr-3 rtl:ml-2">
74
+ <Terminal className="size-4 text-background" />
75
+ </div>
76
+ {Object.keys(commands).map((command, idx) => {
77
+ return (
78
+ <TabsTrigger className="aria-[selected='true']:bg-muted" key={idx} value={command}>
79
+ {command.replace('__', '').replace('Command', '').replace('__', '')}
80
+ </TabsTrigger>
81
+ )
82
+ })}
83
+ </TabsList>
84
+ <Separator />
85
+ {Object.entries(commands).map(([commandKey, command], idx) => {
86
+ return (
87
+ <TabsContent className="[&_pre]:max-w-[620px] [&_pre]:overflow-auto" key={idx} value={commandKey}>
88
+ <CopyButton
89
+ className={cn(
90
+ 'absolute top-1.5 right-1.5 border-none bg-transparent [&_svg]:size-5 [&_svg]:text-muted-foreground',
91
+ )}
92
+ value={command as string}
93
+ variant={'outline'}
94
+ />
95
+ <pre className="p-4 pt-2 text-muted-foreground text-sm focus-visible:shadow-none focus-visible:outline-none">
96
+ {command}
97
+ </pre>
98
+ </TabsContent>
99
+ )
100
+ })}
101
+ </Tabs>
102
+ )
103
+ }