@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.
- package/dist/{alert-DXO4N8gL.js → alert-CeNJkxIS.js} +1 -1
- package/dist/{alert-DXO4N8gL.js.map → alert-CeNJkxIS.js.map} +1 -1
- package/dist/{badge-BaSJ_om8.js → badge-lLTz8rjt.js} +1 -1
- package/dist/{badge-BaSJ_om8.js.map → badge-lLTz8rjt.js.map} +1 -1
- package/dist/{callout-CpRp0hs1.d.ts → callout-0BtCINKk.d.ts} +3 -3
- package/dist/{callout-CpRp0hs1.d.ts.map → callout-0BtCINKk.d.ts.map} +1 -1
- package/dist/{callout-DkKMc7na.js → callout-aAkFztfL.js} +2 -2
- package/dist/{callout-DkKMc7na.js.map → callout-aAkFztfL.js.map} +1 -1
- package/dist/{charts-D4Uj_gtE.d.ts → charts-DEaB4Lln.d.ts} +1 -1
- package/dist/{charts-D4Uj_gtE.d.ts.map → charts-DEaB4Lln.d.ts.map} +1 -1
- package/dist/{charts-B7Xy2hnG.js → charts-TTn-PPdo.js} +1 -1
- package/dist/{charts-B7Xy2hnG.js.map → charts-TTn-PPdo.js.map} +1 -1
- package/dist/client.d.ts +51 -51
- package/dist/client.js +1 -1
- package/dist/{code-block-CvkRo03f.d.ts → code-block-B0w93vdH.d.ts} +3 -3
- package/dist/code-block-B0w93vdH.d.ts.map +1 -0
- package/dist/{code-block-DzuzMGMr.js → code-block-BgDMP6Nq.js} +1 -1
- package/dist/{code-block-DzuzMGMr.js.map → code-block-BgDMP6Nq.js.map} +1 -1
- package/dist/{code-block-wrapper-BNMwGoo7.js → code-block-wrapper-CqEjVT5Z.js} +1 -1
- package/dist/{code-block-wrapper-BNMwGoo7.js.map → code-block-wrapper-CqEjVT5Z.js.map} +1 -1
- package/dist/{code-block-wrapper-BkCgtNmx.d.ts → code-block-wrapper-CtCPXtO_.d.ts} +3 -3
- package/dist/{code-block-wrapper-BkCgtNmx.d.ts.map → code-block-wrapper-CtCPXtO_.d.ts.map} +1 -1
- package/dist/{code-preview-BJfDdIF3.d.ts → code-preview-D6FrTX1A.d.ts} +3 -3
- package/dist/{code-preview-BJfDdIF3.d.ts.map → code-preview-D6FrTX1A.d.ts.map} +1 -1
- package/dist/{code-preview-CosZjiht.js → code-preview-DplOXYJF.js} +2 -2
- package/dist/{code-preview-CosZjiht.js.map → code-preview-DplOXYJF.js.map} +1 -1
- package/dist/{colors-Cx-Rmxum.d.ts → colors-BFoVQHcV.d.ts} +1 -1
- package/dist/{colors-Cx-Rmxum.d.ts.map → colors-BFoVQHcV.d.ts.map} +1 -1
- package/dist/{colors-IvpyMpg7.js → colors-CRrSbR4A.js} +2 -2
- package/dist/{colors-IvpyMpg7.js.map → colors-CRrSbR4A.js.map} +1 -1
- package/dist/command-menu-BvEJcMbM.d.ts +7 -0
- package/dist/{command-menu-BteUvSP4.d.ts.map → command-menu-BvEJcMbM.d.ts.map} +1 -1
- package/dist/{command-menu-BY4dKRHx.js → command-menu-C5eCuJ1p.js} +2 -2
- package/dist/{command-menu-BY4dKRHx.js.map → command-menu-C5eCuJ1p.js.map} +1 -1
- package/dist/{component-preview-g-CoGwuu.js → component-preview-AFsWULeq.js} +2 -2
- package/dist/{component-preview-g-CoGwuu.js.map → component-preview-AFsWULeq.js.map} +1 -1
- package/dist/{component-preview-CpawLgxl.d.ts → component-preview-CHng68hR.d.ts} +4 -4
- package/dist/{component-preview-CpawLgxl.d.ts.map → component-preview-CHng68hR.d.ts.map} +1 -1
- package/dist/{component-source-5yXtLqFU.d.ts → component-source-CWOUfnWY.d.ts} +3 -3
- package/dist/{component-source-5yXtLqFU.d.ts.map → component-source-CWOUfnWY.d.ts.map} +1 -1
- package/dist/{component-source-BhZijwev.js → component-source-DF57SjbQ.js} +2 -2
- package/dist/{component-source-BhZijwev.js.map → component-source-DF57SjbQ.js.map} +1 -1
- package/dist/components/copy-button.d.ts +3 -3
- package/dist/components/docs/docs-copy-page.d.ts +1 -1
- package/dist/components/docs/docs-copy-page.js +1 -1
- package/dist/components/docs/docs-pager.d.ts +3 -3
- package/dist/components/docs/docs-pager.js +1 -1
- package/dist/components/docs/docs-sidebar.d.ts +3 -3
- package/dist/components/docs/docs-sidebar.js +1 -1
- package/dist/components/docs/docs-toc.d.ts +3 -3
- package/dist/components/docs/docs-toc.js +1 -1
- package/dist/components/docs/index.d.ts +7 -7
- package/dist/components/docs/index.js +1 -1
- package/dist/components/icons.d.ts +1 -1
- package/dist/components/icons.js +1 -1
- package/dist/components/index.d.ts +43 -43
- package/dist/components/index.js +1 -1
- package/dist/components/layouts/command-menu.d.ts +1 -1
- package/dist/components/layouts/command-menu.js +1 -1
- package/dist/components/layouts/header-shell.d.ts +1 -1
- package/dist/components/layouts/header-shell.js +1 -1
- package/dist/components/layouts/index.d.ts +6 -6
- package/dist/components/layouts/index.js +1 -1
- package/dist/components/layouts/site-footer.d.ts +1 -1
- package/dist/components/layouts/site-footer.js +1 -1
- package/dist/components/layouts/site-header.d.ts +2 -2
- package/dist/components/layouts/site-header.js +1 -1
- package/dist/components/layouts/tailwind-indicator.d.ts +1 -1
- package/dist/components/layouts/tailwind-indicator.js +1 -1
- package/dist/components/main-nav.d.ts +1 -1
- package/dist/components/main-nav.js +1 -1
- package/dist/components/mdx/mdx-components/callout.d.ts +1 -1
- package/dist/components/mdx/mdx-components/callout.js +1 -1
- package/dist/components/mdx/mdx-components/code/code-block-wrapper.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/code-block-wrapper.js +1 -1
- package/dist/components/mdx/mdx-components/code/code-block.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/code-block.js +1 -1
- package/dist/components/mdx/mdx-components/code/code-preview.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/code-preview.js +1 -1
- package/dist/components/mdx/mdx-components/code/component-preview.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/component-preview.js +1 -1
- package/dist/components/mdx/mdx-components/code/component-source.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/component-source.js +1 -1
- package/dist/components/mdx/mdx-components/code/figcaption-block.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/figcaption-block.js +1 -1
- package/dist/components/mdx/mdx-components/code/index.d.ts +13 -13
- package/dist/components/mdx/mdx-components/code/index.js +1 -1
- package/dist/components/mdx/mdx-components/code/mermaid-block.d.ts +1 -1
- package/dist/components/mdx/mdx-components/code/mermaid-block.js +1 -1
- package/dist/components/mdx/mdx-components/code/pre-block/index.d.ts +6 -6
- package/dist/components/mdx/mdx-components/code/pre-block/index.js +1 -1
- package/dist/components/mdx/mdx-components/code/pre-block/pre-block.d.ts +5 -5
- package/dist/components/mdx/mdx-components/code/pre-block/pre-block.js +1 -1
- package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts +4 -4
- package/dist/components/mdx/mdx-components/code/pre-block/shell-command.js +1 -1
- package/dist/components/mdx/mdx-components/code/pre-block/types.d.ts +4 -4
- package/dist/components/mdx/mdx-components/code/span-block.d.ts +2 -2
- package/dist/components/mdx/mdx-components/components-list.d.ts +3 -3
- package/dist/components/mdx/mdx-components/components-list.js +1 -1
- package/dist/components/mdx/mdx-components/exalidraw.d.ts +2 -2
- package/dist/components/mdx/mdx-components/index.d.ts +22 -22
- package/dist/components/mdx/mdx-components/index.js +1 -1
- package/dist/components/mdx/mdx-components/table.d.ts +1 -1
- package/dist/components/mdx/mdx-components/table.js +1 -1
- package/dist/components/mdx/mdx-components/tabs.d.ts +1 -1
- package/dist/components/mdx/mdx-components/tabs.js +1 -1
- package/dist/components/mdx/mdx-components/typepography.d.ts +1 -1
- package/dist/components/mdx/mdx-components/typepography.js +1 -1
- package/dist/components/mdx/mdx-components/typography.d.ts +2 -2
- package/dist/components/mdx/mdx-components/typography.js +1 -1
- package/dist/components/mdx/mdx-components-base.d.ts +30 -30
- package/dist/components/mdx/mdx-components-base.js +1 -1
- package/dist/components/mdx/mdx-components-registry.d.ts +63 -63
- package/dist/components/mdx/mdx-components-registry.js +1 -1
- package/dist/components/mdx/mdx-components-ui.d.ts +19 -19
- package/dist/components/mdx/mdx-components-ui.js +1 -1
- package/dist/components/mdx/mdx-icons.js +1 -1
- package/dist/components/mdx/mdx-runtime.js +1 -1
- package/dist/components/mdx/mdx.d.ts +1 -1
- package/dist/components/mdx/mdx.js +1 -1
- package/dist/components/mobile-nav.d.ts +1 -1
- package/dist/components/mobile-nav.js +1 -1
- package/dist/components/mode-toggle.d.ts +1 -1
- package/dist/components/mode-toggle.js +1 -1
- package/dist/components/page-header.d.ts +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/providers.d.ts +1 -1
- package/dist/components/providers.js +1 -1
- package/dist/components/style-switcher.d.ts +1 -1
- package/dist/components/style-switcher.js +1 -1
- package/dist/{components-list-Cg9ggVyv.js → components-list-BIYh-rVo.js} +2 -2
- package/dist/{components-list-Cg9ggVyv.js.map → components-list-BIYh-rVo.js.map} +1 -1
- package/dist/components-list-DNtDa4DQ.d.ts +12 -0
- package/dist/{components-list-JYB1Djx7.d.ts.map → components-list-DNtDa4DQ.d.ts.map} +1 -1
- package/dist/context/context.d.ts +1 -1
- package/dist/context/context.js +1 -1
- package/dist/context/context.types.d.ts +1 -1
- package/dist/context/index.d.ts +3 -3
- package/dist/context/index.js +1 -1
- package/dist/{context-Bu-bPlyW.js → context-8iUWV99o.js} +1 -1
- package/dist/{context-Bu-bPlyW.js.map → context-8iUWV99o.js.map} +1 -1
- package/dist/{context-CC0ZL6KV.d.ts → context-DdAZ5e6e.d.ts} +2 -2
- package/dist/{context-CC0ZL6KV.d.ts.map → context-DdAZ5e6e.d.ts.map} +1 -1
- package/dist/{context.types-pTQ85uw2.d.ts → context.types-Bfz_W9_Q.d.ts} +2 -2
- package/dist/{context.types-pTQ85uw2.d.ts.map → context.types-Bfz_W9_Q.d.ts.map} +1 -1
- package/dist/{copy-button-DTBIjulx.d.ts → copy-button-DJt9b314.d.ts} +5 -5
- package/dist/{copy-button-DTBIjulx.d.ts.map → copy-button-DJt9b314.d.ts.map} +1 -1
- package/dist/{dialog-68QLl2rI.js → dialog-WKxDI8AJ.js} +1 -1
- package/dist/{dialog-68QLl2rI.js.map → dialog-WKxDI8AJ.js.map} +1 -1
- package/dist/{docs-copy-page-ChwVPYc1.d.ts → docs-copy-page-BP_9SFiu.d.ts} +3 -3
- package/dist/{docs-copy-page-ChwVPYc1.d.ts.map → docs-copy-page-BP_9SFiu.d.ts.map} +1 -1
- package/dist/docs-copy-page-BjCHLC98.js +2 -0
- package/dist/docs-copy-page-BjCHLC98.js.map +1 -0
- package/dist/{docs-pager-mprD1O3r.js → docs-pager-C_5XnMWG.js} +2 -2
- package/dist/{docs-pager-mprD1O3r.js.map → docs-pager-C_5XnMWG.js.map} +1 -1
- package/dist/{docs-pager-BnHLEkBw.d.ts → docs-pager-Cj_ihb89.d.ts} +6 -6
- package/dist/{docs-pager-BnHLEkBw.d.ts.map → docs-pager-Cj_ihb89.d.ts.map} +1 -1
- package/dist/{docs-sidebar-DY2ybOuM.js → docs-sidebar-CQ6ieEvV.js} +2 -2
- package/dist/{docs-sidebar-DY2ybOuM.js.map → docs-sidebar-CQ6ieEvV.js.map} +1 -1
- package/dist/{docs-sidebar-DJN5g6Ur.d.ts → docs-sidebar-Dm8CCbmk.d.ts} +7 -7
- package/dist/{docs-sidebar-DJN5g6Ur.d.ts.map → docs-sidebar-Dm8CCbmk.d.ts.map} +1 -1
- package/dist/docs-toc-COvBB3xw.d.ts +13 -0
- package/dist/{docs-toc-Bqz0glt_.d.ts.map → docs-toc-COvBB3xw.d.ts.map} +1 -1
- package/dist/{docs-toc-Bjmkbd6l.js → docs-toc-oDLRpfBi.js} +2 -2
- package/dist/{docs-toc-Bjmkbd6l.js.map → docs-toc-oDLRpfBi.js.map} +1 -1
- package/dist/{drawer-kwSiurIF.js → drawer-05tN_Xdp.js} +1 -1
- package/dist/{drawer-kwSiurIF.js.map → drawer-05tN_Xdp.js.map} +1 -1
- package/dist/dropdown-menu-DYiM8COh.js +2 -0
- package/dist/dropdown-menu-DYiM8COh.js.map +1 -0
- package/dist/{events-CQ5HMYtp.d.ts → events-fu3vNJdd.d.ts} +1 -1
- package/dist/{events-CQ5HMYtp.d.ts.map → events-fu3vNJdd.d.ts.map} +1 -1
- package/dist/{figcaption-block-RFNt1OSv.js → figcaption-block-hcA7ZV1t.js} +2 -2
- package/dist/{figcaption-block-RFNt1OSv.js.map → figcaption-block-hcA7ZV1t.js.map} +1 -1
- package/dist/{figcaption-block-D1bs7L2Q.d.ts → figcaption-block-lr2ii6n2.d.ts} +3 -3
- package/dist/{figcaption-block-D1bs7L2Q.d.ts.map → figcaption-block-lr2ii6n2.d.ts.map} +1 -1
- package/dist/{hast-properties-C103K0PZ.js → hast-properties-DMieBO19.js} +1 -1
- package/dist/{hast-properties-C103K0PZ.js.map → hast-properties-DMieBO19.js.map} +1 -1
- package/dist/{header-shell-BEh1FcJj.d.ts → header-shell-CPl-YeJY.d.ts} +6 -6
- package/dist/{header-shell-BEh1FcJj.d.ts.map → header-shell-CPl-YeJY.d.ts.map} +1 -1
- package/dist/{header-shell-PLI5ZAwI.js → header-shell-DSjT_BrI.js} +2 -2
- package/dist/{header-shell-PLI5ZAwI.js.map → header-shell-DSjT_BrI.js.map} +1 -1
- package/dist/hooks/index.d.ts +7 -7
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-colors.d.ts +2 -2
- package/dist/hooks/use-colors.js +1 -1
- package/dist/hooks/use-config.d.ts +1 -1
- package/dist/hooks/use-config.js +1 -1
- package/dist/hooks/use-lift-mode.d.ts +1 -1
- package/dist/hooks/use-lift-mode.js +1 -1
- package/dist/hooks/use-meta-colors.d.ts +1 -1
- package/dist/hooks/use-meta-colors.js +1 -1
- package/dist/hooks/use-mounted.d.ts +1 -1
- package/dist/hooks/use-mounted.js +1 -1
- package/dist/hooks/use-themes-config.d.ts +1 -1
- package/dist/hooks/use-themes-config.js +1 -1
- package/dist/{icons-dASZ3daW.js → icons-BczxfLsa.js} +1 -1
- package/dist/{icons-dASZ3daW.js.map → icons-BczxfLsa.js.map} +1 -1
- package/dist/icons-DOc-gx0p.d.ts +33 -0
- package/dist/icons-DOc-gx0p.d.ts.map +1 -0
- package/dist/{index-CdFFVx85.d.ts → index-Bk_7h9-s.d.ts} +1 -1
- package/dist/{index-CdFFVx85.d.ts.map → index-Bk_7h9-s.d.ts.map} +1 -1
- package/dist/{index-B94w2qPS.d.ts → index-CKCoJ9mr.d.ts} +1 -1
- package/dist/{index-B94w2qPS.d.ts.map → index-CKCoJ9mr.d.ts.map} +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.js +1 -1
- package/dist/lib/charts.d.ts +1 -1
- package/dist/lib/charts.js +1 -1
- package/dist/lib/colors.d.ts +1 -1
- package/dist/lib/colors.js +1 -1
- package/dist/lib/events.d.ts +1 -1
- package/dist/lib/index.d.ts +6 -6
- package/dist/lib/index.js +1 -1
- package/dist/lib/registry-colors-data.js +1 -1
- package/dist/lib/registry-styles.d.ts +1 -1
- package/dist/lib/registry-styles.js +1 -1
- package/dist/lib/themes.d.ts +1 -1
- package/dist/lib/themes.js +1 -1
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/main-nav-DVKLErQu.d.ts +7 -0
- package/dist/main-nav-DVKLErQu.d.ts.map +1 -0
- package/dist/mdx-BWQi54_m.d.ts +12 -0
- package/dist/{mdx-BjKd-lr3.d.ts.map → mdx-BWQi54_m.d.ts.map} +1 -1
- package/dist/mdx-C5u2Zdyc.js +2 -0
- package/dist/{mdx-CpGlQTio.js.map → mdx-C5u2Zdyc.js.map} +1 -1
- package/dist/{mdx-components-base-ByG7D4Kc.js → mdx-components-base-D4hUHZRR.js} +2 -2
- package/dist/{mdx-components-base-ByG7D4Kc.js.map → mdx-components-base-D4hUHZRR.js.map} +1 -1
- package/dist/mdx-components-registry-Ceb39eRW.js +2 -0
- package/dist/{mdx-components-registry-H3xD8Epe.js.map → mdx-components-registry-Ceb39eRW.js.map} +1 -1
- package/dist/{mdx-components-ui-Cp73cCYd.js → mdx-components-ui-DJy8a_xi.js} +2 -2
- package/dist/{mdx-components-ui-Cp73cCYd.js.map → mdx-components-ui-DJy8a_xi.js.map} +1 -1
- package/dist/{mdx-icons-Duo8BbOA.js → mdx-icons-B7YaM2WW.js} +1 -1
- package/dist/{mdx-icons-Duo8BbOA.js.map → mdx-icons-B7YaM2WW.js.map} +1 -1
- package/dist/{mdx-runtime-DjYaVtmv.d.ts → mdx-runtime-DLAfMyJY.d.ts} +1 -1
- package/dist/{mdx-runtime-DjYaVtmv.d.ts.map → mdx-runtime-DLAfMyJY.d.ts.map} +1 -1
- package/dist/{mdx-runtime-BeG80qPS.js → mdx-runtime-DoXPlXz4.js} +1 -1
- package/dist/{mdx-runtime-BeG80qPS.js.map → mdx-runtime-DoXPlXz4.js.map} +1 -1
- package/dist/{mermaid-block-Bl37eU5v.d.ts → mermaid-block-C6-6cv5f.d.ts} +3 -3
- package/dist/{mermaid-block-Bl37eU5v.d.ts.map → mermaid-block-C6-6cv5f.d.ts.map} +1 -1
- package/dist/{mermaid-block-BfbjIpjJ.js → mermaid-block-CrmASB4s.js} +2 -2
- package/dist/{mermaid-block-BfbjIpjJ.js.map → mermaid-block-CrmASB4s.js.map} +1 -1
- package/dist/{metadata-plugin-BL84sQM5.d.ts → metadata-plugin-5TaYHWXh.d.ts} +2 -2
- package/dist/{metadata-plugin-BL84sQM5.d.ts.map → metadata-plugin-5TaYHWXh.d.ts.map} +1 -1
- package/dist/{metadata-plugin-DA7OesoA.js → metadata-plugin-XzUCOTJ4.js} +2 -2
- package/dist/{metadata-plugin-DA7OesoA.js.map → metadata-plugin-XzUCOTJ4.js.map} +1 -1
- package/dist/{metadata-utils-C_8CcvsG.js → metadata-utils-BMtaoiZF.js} +1 -1
- package/dist/{metadata-utils-C_8CcvsG.js.map → metadata-utils-BMtaoiZF.js.map} +1 -1
- package/dist/mobile-nav-CFTIm8WK.d.ts +7 -0
- package/dist/mobile-nav-CFTIm8WK.d.ts.map +1 -0
- package/dist/{mobile-nav-rBOCLILt.js → mobile-nav-NA5oPhXI.js} +2 -2
- package/dist/{mobile-nav-rBOCLILt.js.map → mobile-nav-NA5oPhXI.js.map} +1 -1
- package/dist/{mode-toggle-DhgB9p1I.js → mode-toggle-DKG4x8wu.js} +2 -2
- package/dist/{mode-toggle-DhgB9p1I.js.map → mode-toggle-DKG4x8wu.js.map} +1 -1
- package/dist/mode-toggle-DazD3zuF.d.ts +7 -0
- package/dist/mode-toggle-DazD3zuF.d.ts.map +1 -0
- package/dist/{mount-CoAqNcc6.js → mount-uG4K6qTf.js} +1 -1
- package/dist/{mount-CoAqNcc6.js.map → mount-uG4K6qTf.js.map} +1 -1
- package/dist/{nav-B0m_RJfC.d.ts → nav-VxNVhf9_.d.ts} +1 -1
- package/dist/{nav-B0m_RJfC.d.ts.map → nav-VxNVhf9_.d.ts.map} +1 -1
- package/dist/{page-header-CCOOtADG.d.ts → page-header-CS5XM1q2.d.ts} +6 -6
- package/dist/page-header-CS5XM1q2.d.ts.map +1 -0
- package/dist/{page-header-TUu9iNwc.js → page-header-Dmt7REX5.js} +1 -1
- package/dist/{page-header-TUu9iNwc.js.map → page-header-Dmt7REX5.js.map} +1 -1
- package/dist/{pre-block-Bt_9UuCv.js → pre-block-BC2mRAfY.js} +2 -2
- package/dist/{pre-block-Bt_9UuCv.js.map → pre-block-BC2mRAfY.js.map} +1 -1
- package/dist/{pre-block-CWu93Zw5.d.ts → pre-block-Pa2SlBev.d.ts} +4 -4
- package/dist/{pre-block-CWu93Zw5.d.ts.map → pre-block-Pa2SlBev.d.ts.map} +1 -1
- package/dist/{providers-CPondy8d.d.ts → providers-6rBUIHJN.d.ts} +3 -3
- package/dist/providers-6rBUIHJN.d.ts.map +1 -0
- package/dist/{providers-BlEJC-ZF.js → providers-CwRigi1l.js} +1 -1
- package/dist/{providers-BlEJC-ZF.js.map → providers-CwRigi1l.js.map} +1 -1
- package/dist/{registry-colors-data-C5Xv_bOz.js → registry-colors-data-BtPF2NUx.js} +1 -1
- package/dist/{registry-colors-data-C5Xv_bOz.js.map → registry-colors-data-BtPF2NUx.js.map} +1 -1
- package/dist/{registry-styles-Boe9P1LO.d.ts → registry-styles-BcAsom8K.d.ts} +1 -1
- package/dist/{registry-styles-Boe9P1LO.d.ts.map → registry-styles-BcAsom8K.d.ts.map} +1 -1
- package/dist/{registry-styles-DwoJ9Qa9.js → registry-styles-gTcj4DCR.js} +1 -1
- package/dist/{registry-styles-DwoJ9Qa9.js.map → registry-styles-gTcj4DCR.js.map} +1 -1
- package/dist/{rehype-mermaid-Be9A3aSw.js → rehype-mermaid-CQ75hp2Q.js} +1 -1
- package/dist/{rehype-mermaid-Be9A3aSw.js.map → rehype-mermaid-CQ75hp2Q.js.map} +1 -1
- package/dist/{rehype-mermaid-DPZ6UzOu.d.ts → rehype-mermaid-DecYf_rU.d.ts} +2 -2
- package/dist/rehype-mermaid-DecYf_rU.d.ts.map +1 -0
- package/dist/{rehype-npm-command-khRZrj_X.d.ts → rehype-npm-command-Bg4YXfot.d.ts} +2 -2
- package/dist/rehype-npm-command-Bg4YXfot.d.ts.map +1 -0
- package/dist/{rehype-npm-command-0W5WqcQY.js → rehype-npm-command-D_fYpcFr.js} +2 -2
- package/dist/{rehype-npm-command-0W5WqcQY.js.map → rehype-npm-command-D_fYpcFr.js.map} +1 -1
- package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts → rehype-pre-block-source-BAdGFElv.d.ts} +2 -2
- package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts.map → rehype-pre-block-source-BAdGFElv.d.ts.map} +1 -1
- package/dist/{rehype-pre-block-source-paX7yPQ4.js → rehype-pre-block-source-Cdsik072.js} +2 -2
- package/dist/{rehype-pre-block-source-paX7yPQ4.js.map → rehype-pre-block-source-Cdsik072.js.map} +1 -1
- package/dist/{rehype-title-CTj31zR2.d.ts → rehype-title-9j_Q2o1g.d.ts} +2 -2
- package/dist/rehype-title-9j_Q2o1g.d.ts.map +1 -0
- package/dist/{rehype-title-CB9V-h9I.js → rehype-title-D5VN1law.js} +1 -1
- package/dist/{rehype-title-CB9V-h9I.js.map → rehype-title-D5VN1law.js.map} +1 -1
- package/dist/{scroll-area-DwfrxxQ_.js → scroll-area-BFWBc-X7.js} +1 -1
- package/dist/{scroll-area-DwfrxxQ_.js.map → scroll-area-BFWBc-X7.js.map} +1 -1
- package/dist/{separator-BL4VUMvX.js → separator-C2JodQpS.js} +1 -1
- package/dist/{separator-BL4VUMvX.js.map → separator-C2JodQpS.js.map} +1 -1
- package/dist/{shell-command-BQkaAnLc.js → shell-command-uA9FhemC.js} +2 -2
- package/dist/{shell-command-BQkaAnLc.js.map → shell-command-uA9FhemC.js.map} +1 -1
- package/dist/{site-footer-DoVwgNqf.js → site-footer-BDIGBSjx.js} +2 -2
- package/dist/{site-footer-DoVwgNqf.js.map → site-footer-BDIGBSjx.js.map} +1 -1
- package/dist/site-footer-BigIDuKM.d.ts +8 -0
- package/dist/{site-footer-BRyt4-dx.d.ts.map → site-footer-BigIDuKM.d.ts.map} +1 -1
- package/dist/site-header-ClW-bc7r.js +2 -0
- package/dist/site-header-ClW-bc7r.js.map +1 -0
- package/dist/site-header-m-AqO8bm.d.ts +8 -0
- package/dist/site-header-m-AqO8bm.d.ts.map +1 -0
- package/dist/{style-switcher--saWXPVm.js → style-switcher-Cvax_0P0.js} +2 -2
- package/dist/{style-switcher--saWXPVm.js.map → style-switcher-Cvax_0P0.js.map} +1 -1
- package/dist/{style-switcher-B3PdHXf8.d.ts → style-switcher-e8-d3sUq.d.ts} +3 -3
- package/dist/{style-switcher-B3PdHXf8.d.ts.map → style-switcher-e8-d3sUq.d.ts.map} +1 -1
- package/dist/styles/base.css +34 -2
- package/dist/styles/docs.css +55 -2
- package/dist/styles/mdx-base.css +3 -1
- package/dist/styles/mdx-code.css +3 -3
- package/dist/{table-E1lSNeuD.js → table-CugT9kEw.js} +1 -1
- package/dist/{table-E1lSNeuD.js.map → table-CugT9kEw.js.map} +1 -1
- package/dist/{table-czuTmeyb.d.ts → table-DOSBqDDt.d.ts} +6 -6
- package/dist/{table-czuTmeyb.d.ts.map → table-DOSBqDDt.d.ts.map} +1 -1
- package/dist/{tabs-BonSZ_0a.js → tabs-DWwPvmmz.js} +2 -2
- package/dist/{tabs-BonSZ_0a.js.map → tabs-DWwPvmmz.js.map} +1 -1
- package/dist/{tabs-CrZf6_5d.js → tabs-DkzoTBog.js} +2 -2
- package/dist/{tabs-CrZf6_5d.js.map → tabs-DkzoTBog.js.map} +1 -1
- package/dist/{tabs-lu27pQCB.d.ts → tabs-_OKB-QwX.d.ts} +6 -6
- package/dist/{tabs-lu27pQCB.d.ts.map → tabs-_OKB-QwX.d.ts.map} +1 -1
- package/dist/{tailwind-indicator-z53_j-ZR.js → tailwind-indicator-bD9Vctae.js} +1 -1
- package/dist/{tailwind-indicator-z53_j-ZR.js.map → tailwind-indicator-bD9Vctae.js.map} +1 -1
- package/dist/tailwind-indicator-pbpZIrz8.d.ts +7 -0
- package/dist/{tailwind-indicator-xsIX1AXQ.d.ts.map → tailwind-indicator-pbpZIrz8.d.ts.map} +1 -1
- package/dist/{themes-DSmnGG_O.js → themes-4-2kkrnX.js} +2 -2
- package/dist/{themes-DSmnGG_O.js.map → themes-4-2kkrnX.js.map} +1 -1
- package/dist/{themes-M1nDuQoV.d.ts → themes-CJcZ8etE.d.ts} +1 -1
- package/dist/{themes-M1nDuQoV.d.ts.map → themes-CJcZ8etE.d.ts.map} +1 -1
- package/dist/{typepography-lU2xNaSb.d.ts → typepography-1RFDvJqo.d.ts} +13 -13
- package/dist/{typepography-lU2xNaSb.d.ts.map → typepography-1RFDvJqo.d.ts.map} +1 -1
- package/dist/{typepography-Bn-ZmO71.js → typepography-Bo-fCx4O.js} +1 -1
- package/dist/{typepography-Bn-ZmO71.js.map → typepography-Bo-fCx4O.js.map} +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/mdx-runtime.d.ts +1 -1
- package/dist/types/nav.d.ts +1 -1
- package/dist/types/unist.d.ts +2 -2
- package/dist/{types-DsWNixhq.d.ts → types-Cso0EjCR.d.ts} +3 -3
- package/dist/{types-DsWNixhq.d.ts.map → types-Cso0EjCR.d.ts.map} +1 -1
- package/dist/{unist-q3NIH9ya.d.ts → unist-C-gDxuYf.d.ts} +2 -2
- package/dist/{unist-q3NIH9ya.d.ts.map → unist-C-gDxuYf.d.ts.map} +1 -1
- package/dist/{use-colors-CBAXuqtP.d.ts → use-colors-CCxJ3J6E.d.ts} +3 -3
- package/dist/use-colors-CCxJ3J6E.d.ts.map +1 -0
- package/dist/{use-colors-BiVXxR31.js → use-colors-DnvpPAsY.js} +2 -2
- package/dist/{use-colors-BiVXxR31.js.map → use-colors-DnvpPAsY.js.map} +1 -1
- package/dist/{use-config-3gNoFPn6.d.ts → use-config-CVGpN_gD.d.ts} +2 -2
- package/dist/{use-config-3gNoFPn6.d.ts.map → use-config-CVGpN_gD.d.ts.map} +1 -1
- package/dist/{use-config-CkoOe8Fw.js → use-config-LFMLgvtw.js} +1 -1
- package/dist/{use-config-CkoOe8Fw.js.map → use-config-LFMLgvtw.js.map} +1 -1
- package/dist/{use-lift-mode-CRK6jO9I.js → use-lift-mode-CSepfmVG.js} +1 -1
- package/dist/{use-lift-mode-CRK6jO9I.js.map → use-lift-mode-CSepfmVG.js.map} +1 -1
- package/dist/{use-lift-mode-DAQuqoIt.d.ts → use-lift-mode-GxKOrDG3.d.ts} +1 -1
- package/dist/use-lift-mode-GxKOrDG3.d.ts.map +1 -0
- package/dist/{use-meta-colors-Dlzg21A8.d.ts → use-meta-colors-Bl9VUeAa.d.ts} +1 -1
- package/dist/use-meta-colors-Bl9VUeAa.d.ts.map +1 -0
- package/dist/{use-meta-colors-ye3z03RL.js → use-meta-colors-DzRdgj3z.js} +2 -2
- package/dist/{use-meta-colors-ye3z03RL.js.map → use-meta-colors-DzRdgj3z.js.map} +1 -1
- package/dist/{use-mounted-CqC1Le-n.d.ts → use-mounted-CdYgfQY4.d.ts} +1 -1
- package/dist/use-mounted-CdYgfQY4.d.ts.map +1 -0
- package/dist/{use-mounted-Bi7J0dBb.js → use-mounted-DDwvpoyo.js} +1 -1
- package/dist/{use-mounted-Bi7J0dBb.js.map → use-mounted-DDwvpoyo.js.map} +1 -1
- package/dist/{use-themes-config-DfxLBbQI.d.ts → use-themes-config-BkPUKg8e.d.ts} +2 -2
- package/dist/{use-themes-config-DfxLBbQI.d.ts.map → use-themes-config-BkPUKg8e.d.ts.map} +1 -1
- package/dist/{use-themes-config-t4NBMHl1.js → use-themes-config-DIrOCXXn.js} +2 -2
- package/dist/{use-themes-config-t4NBMHl1.js.map → use-themes-config-DIrOCXXn.js.map} +1 -1
- package/dist/{utils-BGWVtLBe.d.ts → utils-CZyLoko1.d.ts} +1 -1
- package/dist/{utils-BGWVtLBe.d.ts.map → utils-CZyLoko1.d.ts.map} +1 -1
- package/dist/{utils-CN0aIGfJ.js → utils-sz03HSST.js} +1 -1
- package/dist/{utils-CN0aIGfJ.js.map → utils-sz03HSST.js.map} +1 -1
- package/dist/velite/config.d.ts.map +1 -1
- package/dist/velite/config.js +1 -1
- package/dist/velite/config.js.map +1 -1
- package/dist/velite/index.d.ts +7 -7
- package/dist/velite/index.js +1 -1
- package/dist/velite/plugins/hast-properties.d.ts +2 -2
- package/dist/velite/plugins/hast-properties.js +1 -1
- package/dist/velite/plugins/index.d.ts +7 -7
- package/dist/velite/plugins/index.js +1 -1
- package/dist/velite/plugins/metadata-plugin.d.ts +3 -3
- package/dist/velite/plugins/metadata-plugin.js +1 -1
- package/dist/velite/plugins/metadata-utils.js +1 -1
- package/dist/velite/plugins/rehype-mermaid.d.ts +3 -3
- package/dist/velite/plugins/rehype-mermaid.js +1 -1
- package/dist/velite/plugins/rehype-npm-command.d.ts +3 -3
- package/dist/velite/plugins/rehype-npm-command.js +1 -1
- package/dist/velite/plugins/rehype-pre-block-source.d.ts +3 -3
- package/dist/velite/plugins/rehype-pre-block-source.js +1 -1
- package/dist/velite/plugins/rehype-title.d.ts +3 -3
- package/dist/velite/plugins/rehype-title.js +1 -1
- package/dist/{visibility-hidden-CAHx9RLp-CN32k1Im.js → visibility-hidden-CAHx9RLp-DoPUpniv.js} +1 -1
- package/dist/{visibility-hidden-CAHx9RLp-CN32k1Im.js.map → visibility-hidden-CAHx9RLp-DoPUpniv.js.map} +1 -1
- package/package.json +3 -3
- package/src/components/layouts/site-header.tsx +158 -21
- package/src/styles/base.css +34 -2
- package/src/styles/docs.css +55 -2
- package/src/styles/mdx-base.css +3 -1
- package/src/styles/mdx-code.css +3 -3
- package/src/velite/config.ts +1 -5
- package/dist/code-block-CvkRo03f.d.ts.map +0 -1
- package/dist/command-menu-BteUvSP4.d.ts +0 -7
- package/dist/components-list-JYB1Djx7.d.ts +0 -12
- package/dist/docs-copy-page-QXgUbioW.js +0 -2
- package/dist/docs-copy-page-QXgUbioW.js.map +0 -1
- package/dist/docs-toc-Bqz0glt_.d.ts +0 -13
- package/dist/icons-Svr12EIY.d.ts +0 -33
- package/dist/icons-Svr12EIY.d.ts.map +0 -1
- package/dist/main-nav-Bs_3aIa9.d.ts +0 -7
- package/dist/main-nav-Bs_3aIa9.d.ts.map +0 -1
- package/dist/mdx-BjKd-lr3.d.ts +0 -12
- package/dist/mdx-CpGlQTio.js +0 -2
- package/dist/mdx-components-registry-H3xD8Epe.js +0 -2
- package/dist/mobile-nav-DMiJRcRb.d.ts +0 -7
- package/dist/mobile-nav-DMiJRcRb.d.ts.map +0 -1
- package/dist/mode-toggle-CvStvAZ_.d.ts +0 -7
- package/dist/mode-toggle-CvStvAZ_.d.ts.map +0 -1
- package/dist/page-header-CCOOtADG.d.ts.map +0 -1
- package/dist/providers-CPondy8d.d.ts.map +0 -1
- package/dist/rehype-mermaid-DPZ6UzOu.d.ts.map +0 -1
- package/dist/rehype-npm-command-khRZrj_X.d.ts.map +0 -1
- package/dist/rehype-title-CTj31zR2.d.ts.map +0 -1
- package/dist/site-footer-BRyt4-dx.d.ts +0 -8
- package/dist/site-header-C4ynyWai.d.ts +0 -8
- package/dist/site-header-C4ynyWai.d.ts.map +0 -1
- package/dist/site-header-aYzXrGgF.js +0 -2
- package/dist/site-header-aYzXrGgF.js.map +0 -1
- package/dist/tailwind-indicator-xsIX1AXQ.d.ts +0 -7
- package/dist/use-colors-CBAXuqtP.d.ts.map +0 -1
- package/dist/use-lift-mode-DAQuqoIt.d.ts.map +0 -1
- package/dist/use-meta-colors-Dlzg21A8.d.ts.map +0 -1
- package/dist/use-mounted-CqC1Le-n.d.ts.map +0 -1
- /package/dist/{code-B8oMaOlf.js → code-BuWlxrky.js} +0 -0
- /package/dist/{context-BC4O8IkN.js → context-d52mWdKF.js} +0 -0
- /package/dist/{context.types-xqn674mu.js → context.types-BtIPTDnR.js} +0 -0
- /package/dist/{direction-BgdQqJSh.js → direction-BCZ6Jklr.js} +0 -0
- /package/dist/{docs-BxKlMynn.js → docs-oiSmq9MA.js} +0 -0
- /package/dist/{index-2ODhJ4PF.d.ts → index-2g6qjnfC.d.ts} +0 -0
- /package/dist/{index-BOXZdgrl.d.ts → index-BqJL0rSj.d.ts} +0 -0
- /package/dist/{index-CDXWDYLH.d.ts → index-C3sUSN9A.d.ts} +0 -0
- /package/dist/{index-CEmd2iJF.d.ts → index-CJOkJMYm.d.ts} +0 -0
- /package/dist/{index-CMgWXPTi.d.ts → index-COTJSnad.d.ts} +0 -0
- /package/dist/{index-J4eIjbSW.d.ts → index-DKjTz6WE.d.ts} +0 -0
- /package/dist/{index-PiDlmF8F.d.ts → index-DU9NHLk5.d.ts} +0 -0
- /package/dist/{layouts-CZzkzPUj.js → layouts-CoDlKIIB.js} +0 -0
- /package/dist/{mdx-components-DVXN21iW.js → mdx-components-BIki5jZo.js} +0 -0
- /package/dist/{mdx-runtime-8ZPauNCe.js → mdx-runtime-CYIN9t8J.js} +0 -0
- /package/dist/{nav-n66GykpT.js → nav-CCvBufk2.js} +0 -0
- /package/dist/{pre-block-B4y5yM69.js → pre-block-BN3ZQQwl.js} +0 -0
- /package/dist/{typography-BcEByhvR.js → typography-BaOwC15y.js} +0 -0
- /package/dist/{typography-BjwZeImL.d.ts → typography-C040ELJU.d.ts} +0 -0
- /package/dist/{unist-Dtu3x3-k.js → unist-CMdu5xbz.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-mermaid-Be9A3aSw.js","names":["chromiumPath: string | null","results: Record<string, string>","entries: Entry[]","diagrams: { source: string; id: string; theme: 'default' | 'dark' }[]"],"sources":["../src/velite/plugins/rehype-mermaid.ts"],"sourcesContent":["import { execSync } from 'node:child_process'\nimport { mkdtempSync, rmSync, writeFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport type { UnistNode, UnistTree } from '@duck-docs/types'\nimport type { Nodes } from 'hast'\nimport { toString } from 'hast-util-to-string'\nimport { visit } from 'unist-util-visit'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction isMermaidCode(node: UnistNode): boolean {\n const codeChild = node.children?.[0]\n if (!codeChild || codeChild.type !== 'element' || codeChild.tagName !== 'code') return false\n const dataLang = codeChild.properties?.['data-language']\n const classes = codeChild.properties?.className\n return dataLang === 'mermaid' || (Array.isArray(classes) && classes.includes('language-mermaid'))\n}\n\n/** Safely extract a string value from an mdxJsxAttribute. */\nfunction extractAttrValue(attr: any): string | null {\n if (!attr?.value) return null\n if (typeof attr.value === 'string') return attr.value\n if (attr.value?.type === 'mdxJsxAttributeValueExpression') {\n try {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + attr.value.value)()\n } catch {\n return null\n }\n }\n return null\n}\n\n/** Create an mdxJsxAttribute with an expression value (properly escaped). */\nfunction makeJsxStringAttr(name: string, value: string) {\n return {\n type: 'mdxJsxAttribute',\n name,\n value: {\n type: 'mdxJsxAttributeValueExpression',\n value: JSON.stringify(value),\n data: {\n estree: {\n type: 'Program',\n sourceType: 'module',\n body: [\n {\n type: 'ExpressionStatement',\n expression: { type: 'Literal', value, raw: JSON.stringify(value) },\n },\n ],\n comments: [],\n },\n },\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Headless Chromium renderer - produces pixel-perfect SVGs using a real browser\n// ---------------------------------------------------------------------------\n\n/** Find the system Chromium / Chrome binary. */\nfunction findChromium(): string {\n for (const bin of ['chromium', 'google-chrome-stable', 'google-chrome', 'chromium-browser']) {\n try {\n const p = execSync(`which ${bin}`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim()\n if (p) return p\n } catch {\n /* next */\n }\n }\n throw new Error('[rehype-mermaid] No Chromium/Chrome binary found. Install chromium or google-chrome.')\n}\n\nlet chromiumPath: string | null = null\n\nfunction resolveMermaidPath(): string {\n try {\n const req = createRequire(import.meta.url)\n const pkgPath = req.resolve('mermaid/package.json')\n return join(pkgPath, '..', 'dist', 'mermaid.esm.min.mjs')\n } catch {\n return ''\n }\n}\n\nfunction buildRenderHtml(diagrams: { source: string; id: string; theme: 'default' | 'dark' }[]): string {\n const localMermaid = resolveMermaidPath()\n const mermaidSrc = localMermaid\n ? `file://${localMermaid}`\n : 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'\n return `<!DOCTYPE html><html><head>\n<script type=\"module\">\nimport mermaid from '${mermaidSrc}';\nconst diagrams = ${JSON.stringify(diagrams)};\nconst results = {};\nfor (const d of diagrams) {\n try {\n mermaid.initialize({ startOnLoad: false, theme: d.theme, fontFamily: 'sans-serif', securityLevel: 'loose' });\n const { svg } = await mermaid.render(d.id, d.source);\n results[d.id] = svg;\n } catch (e) {\n results[d.id] = '';\n }\n}\ndocument.title = 'DONE:' + btoa(unescape(encodeURIComponent(JSON.stringify(results))));\n</script></head><body></body></html>`\n}\n\nasync function renderSvgBatch(\n diagrams: { source: string; id: string; theme: 'default' | 'dark' }[],\n): Promise<Record<string, string>> {\n if (!chromiumPath) chromiumPath = findChromium()\n\n const dir = mkdtempSync(join(tmpdir(), 'mermaid-'))\n try {\n const htmlFile = join(dir, 'render.html')\n writeFileSync(htmlFile, buildRenderHtml(diagrams))\n\n const output = execSync(\n `\"${chromiumPath}\" --headless --disable-gpu --no-sandbox --allow-file-access-from-files --virtual-time-budget=15000 --dump-dom \"file://${htmlFile}\"`,\n { timeout: 60000, encoding: 'utf-8', maxBuffer: 50 * 1024 * 1024, stdio: ['pipe', 'pipe', 'pipe'] },\n )\n\n const titleMatch = output.match(/<title>DONE:([\\s\\S]*?)<\\/title>/)\n if (!titleMatch) throw new Error('Chromium did not produce output')\n\n const json = decodeURIComponent(escape(Buffer.from(titleMatch[1]!, 'base64').toString('binary')))\n const results: Record<string, string> = JSON.parse(json)\n\n // Make SVGs responsive\n for (const [id, svg] of Object.entries(results)) {\n if (svg) {\n results[id] = svg.replace(/\\bwidth=\"[\\d.]+\"/, 'width=\"100%\"')\n }\n }\n\n return results\n } finally {\n rmSync(dir, { recursive: true, force: true })\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\nexport function rehypeMermaid() {\n return async (tree: UnistTree) => {\n // Two kinds of entries: code-fence <pre> blocks and <MermaidDiagram> JSX elements\n type CodeFenceEntry = { kind: 'fence'; node: UnistNode; pre: UnistNode; source: string }\n type JsxEntry = { kind: 'jsx'; node: UnistNode; source: string }\n type Entry = CodeFenceEntry | JsxEntry\n\n const entries: Entry[] = []\n\n visit(tree, (node: UnistNode) => {\n // 1. <MermaidDiagram chart={`...`} /> JSX elements\n if ((node as any).type === 'mdxJsxFlowElement' && (node as any).name === 'MermaidDiagram') {\n const attrs = (node as any).attributes || []\n const chartAttr = attrs.find((a: any) => a.type === 'mdxJsxAttribute' && a.name === 'chart')\n const chart = extractAttrValue(chartAttr)\n if (chart) {\n entries.push({ kind: 'jsx', node, source: chart.trim() })\n }\n return\n }\n\n // 2. rehypePrettyCode wrapper div (dual themes, two pre elements)\n if (\n node.type === 'element' &&\n node.tagName === 'div' &&\n node.properties &&\n 'data-rehype-pretty-code-fragment' in node.properties\n ) {\n const pres = (node.children || []).filter((c: UnistNode) => c.type === 'element' && c.tagName === 'pre')\n const mPre = pres.find((c: UnistNode) => isMermaidCode(c))\n if (!mPre) return\n const src = (mPre.properties?.__rawString__ as string) || toString(mPre as Nodes)\n if (src) entries.push({ kind: 'fence', node, pre: mPre, source: src.trim() })\n return\n }\n\n // 3. Standalone <pre>\n if (node.type === 'element' && node.tagName === 'pre' && isMermaidCode(node)) {\n const src = (node.properties?.__rawString__ as string) || toString(node as Nodes)\n if (src) entries.push({ kind: 'fence', node, pre: node, source: src.trim() })\n }\n })\n\n if (entries.length === 0) return\n\n // Build all diagrams in a single Chromium invocation (both themes)\n const diagrams: { source: string; id: string; theme: 'default' | 'dark' }[] = []\n for (let i = 0; i < entries.length; i++) {\n const src = entries[i]!.source\n diagrams.push({ source: src, id: `ml${i}`, theme: 'default' })\n diagrams.push({ source: src, id: `md${i}`, theme: 'dark' })\n }\n\n let results: Record<string, string> = {}\n try {\n results = await renderSvgBatch(diagrams)\n } catch (err) {\n console.warn(`[rehype-mermaid] Build-time render failed:`, (err as Error).message)\n return\n }\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i]!\n const lightSvg = results[`ml${i}`] || ''\n const darkSvg = results[`md${i}`] || ''\n\n if (!lightSvg && !darkSvg) {\n console.warn(`[rehype-mermaid] No SVG produced for diagram ${i}`)\n continue\n }\n\n if (entry.kind === 'jsx') {\n const attrs = (entry.node as any).attributes || []\n if (lightSvg) attrs.push(makeJsxStringAttr('lightSvg', lightSvg))\n if (darkSvg) attrs.push(makeJsxStringAttr('darkSvg', darkSvg))\n ;(entry.node as any).attributes = attrs\n } else {\n if (entry.node !== entry.pre) {\n entry.node.children = [entry.pre]\n }\n entry.pre.properties = {\n ...entry.pre.properties,\n __isMermaid__: true,\n __mermaidLightSvg__: lightSvg,\n __mermaidDarkSvg__: darkSvg,\n }\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rehype-mermaid-CQ75hp2Q.js","names":["chromiumPath: string | null","results: Record<string, string>","entries: Entry[]","diagrams: { source: string; id: string; theme: 'default' | 'dark' }[]"],"sources":["../src/velite/plugins/rehype-mermaid.ts"],"sourcesContent":["import { execSync } from 'node:child_process'\nimport { mkdtempSync, rmSync, writeFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport type { UnistNode, UnistTree } from '@duck-docs/types'\nimport type { Nodes } from 'hast'\nimport { toString } from 'hast-util-to-string'\nimport { visit } from 'unist-util-visit'\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction isMermaidCode(node: UnistNode): boolean {\n const codeChild = node.children?.[0]\n if (!codeChild || codeChild.type !== 'element' || codeChild.tagName !== 'code') return false\n const dataLang = codeChild.properties?.['data-language']\n const classes = codeChild.properties?.className\n return dataLang === 'mermaid' || (Array.isArray(classes) && classes.includes('language-mermaid'))\n}\n\n/** Safely extract a string value from an mdxJsxAttribute. */\nfunction extractAttrValue(attr: any): string | null {\n if (!attr?.value) return null\n if (typeof attr.value === 'string') return attr.value\n if (attr.value?.type === 'mdxJsxAttributeValueExpression') {\n try {\n // eslint-disable-next-line no-new-func\n return new Function('return ' + attr.value.value)()\n } catch {\n return null\n }\n }\n return null\n}\n\n/** Create an mdxJsxAttribute with an expression value (properly escaped). */\nfunction makeJsxStringAttr(name: string, value: string) {\n return {\n type: 'mdxJsxAttribute',\n name,\n value: {\n type: 'mdxJsxAttributeValueExpression',\n value: JSON.stringify(value),\n data: {\n estree: {\n type: 'Program',\n sourceType: 'module',\n body: [\n {\n type: 'ExpressionStatement',\n expression: { type: 'Literal', value, raw: JSON.stringify(value) },\n },\n ],\n comments: [],\n },\n },\n },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Headless Chromium renderer - produces pixel-perfect SVGs using a real browser\n// ---------------------------------------------------------------------------\n\n/** Find the system Chromium / Chrome binary. */\nfunction findChromium(): string {\n for (const bin of ['chromium', 'google-chrome-stable', 'google-chrome', 'chromium-browser']) {\n try {\n const p = execSync(`which ${bin}`, { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim()\n if (p) return p\n } catch {\n /* next */\n }\n }\n throw new Error('[rehype-mermaid] No Chromium/Chrome binary found. Install chromium or google-chrome.')\n}\n\nlet chromiumPath: string | null = null\n\nfunction resolveMermaidPath(): string {\n try {\n const req = createRequire(import.meta.url)\n const pkgPath = req.resolve('mermaid/package.json')\n return join(pkgPath, '..', 'dist', 'mermaid.esm.min.mjs')\n } catch {\n return ''\n }\n}\n\nfunction buildRenderHtml(diagrams: { source: string; id: string; theme: 'default' | 'dark' }[]): string {\n const localMermaid = resolveMermaidPath()\n const mermaidSrc = localMermaid\n ? `file://${localMermaid}`\n : 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'\n return `<!DOCTYPE html><html><head>\n<script type=\"module\">\nimport mermaid from '${mermaidSrc}';\nconst diagrams = ${JSON.stringify(diagrams)};\nconst results = {};\nfor (const d of diagrams) {\n try {\n mermaid.initialize({ startOnLoad: false, theme: d.theme, fontFamily: 'sans-serif', securityLevel: 'loose' });\n const { svg } = await mermaid.render(d.id, d.source);\n results[d.id] = svg;\n } catch (e) {\n results[d.id] = '';\n }\n}\ndocument.title = 'DONE:' + btoa(unescape(encodeURIComponent(JSON.stringify(results))));\n</script></head><body></body></html>`\n}\n\nasync function renderSvgBatch(\n diagrams: { source: string; id: string; theme: 'default' | 'dark' }[],\n): Promise<Record<string, string>> {\n if (!chromiumPath) chromiumPath = findChromium()\n\n const dir = mkdtempSync(join(tmpdir(), 'mermaid-'))\n try {\n const htmlFile = join(dir, 'render.html')\n writeFileSync(htmlFile, buildRenderHtml(diagrams))\n\n const output = execSync(\n `\"${chromiumPath}\" --headless --disable-gpu --no-sandbox --allow-file-access-from-files --virtual-time-budget=15000 --dump-dom \"file://${htmlFile}\"`,\n { timeout: 60000, encoding: 'utf-8', maxBuffer: 50 * 1024 * 1024, stdio: ['pipe', 'pipe', 'pipe'] },\n )\n\n const titleMatch = output.match(/<title>DONE:([\\s\\S]*?)<\\/title>/)\n if (!titleMatch) throw new Error('Chromium did not produce output')\n\n const json = decodeURIComponent(escape(Buffer.from(titleMatch[1]!, 'base64').toString('binary')))\n const results: Record<string, string> = JSON.parse(json)\n\n // Make SVGs responsive\n for (const [id, svg] of Object.entries(results)) {\n if (svg) {\n results[id] = svg.replace(/\\bwidth=\"[\\d.]+\"/, 'width=\"100%\"')\n }\n }\n\n return results\n } finally {\n rmSync(dir, { recursive: true, force: true })\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\nexport function rehypeMermaid() {\n return async (tree: UnistTree) => {\n // Two kinds of entries: code-fence <pre> blocks and <MermaidDiagram> JSX elements\n type CodeFenceEntry = { kind: 'fence'; node: UnistNode; pre: UnistNode; source: string }\n type JsxEntry = { kind: 'jsx'; node: UnistNode; source: string }\n type Entry = CodeFenceEntry | JsxEntry\n\n const entries: Entry[] = []\n\n visit(tree, (node: UnistNode) => {\n // 1. <MermaidDiagram chart={`...`} /> JSX elements\n if ((node as any).type === 'mdxJsxFlowElement' && (node as any).name === 'MermaidDiagram') {\n const attrs = (node as any).attributes || []\n const chartAttr = attrs.find((a: any) => a.type === 'mdxJsxAttribute' && a.name === 'chart')\n const chart = extractAttrValue(chartAttr)\n if (chart) {\n entries.push({ kind: 'jsx', node, source: chart.trim() })\n }\n return\n }\n\n // 2. rehypePrettyCode wrapper div (dual themes, two pre elements)\n if (\n node.type === 'element' &&\n node.tagName === 'div' &&\n node.properties &&\n 'data-rehype-pretty-code-fragment' in node.properties\n ) {\n const pres = (node.children || []).filter((c: UnistNode) => c.type === 'element' && c.tagName === 'pre')\n const mPre = pres.find((c: UnistNode) => isMermaidCode(c))\n if (!mPre) return\n const src = (mPre.properties?.__rawString__ as string) || toString(mPre as Nodes)\n if (src) entries.push({ kind: 'fence', node, pre: mPre, source: src.trim() })\n return\n }\n\n // 3. Standalone <pre>\n if (node.type === 'element' && node.tagName === 'pre' && isMermaidCode(node)) {\n const src = (node.properties?.__rawString__ as string) || toString(node as Nodes)\n if (src) entries.push({ kind: 'fence', node, pre: node, source: src.trim() })\n }\n })\n\n if (entries.length === 0) return\n\n // Build all diagrams in a single Chromium invocation (both themes)\n const diagrams: { source: string; id: string; theme: 'default' | 'dark' }[] = []\n for (let i = 0; i < entries.length; i++) {\n const src = entries[i]!.source\n diagrams.push({ source: src, id: `ml${i}`, theme: 'default' })\n diagrams.push({ source: src, id: `md${i}`, theme: 'dark' })\n }\n\n let results: Record<string, string> = {}\n try {\n results = await renderSvgBatch(diagrams)\n } catch (err) {\n console.warn(`[rehype-mermaid] Build-time render failed:`, (err as Error).message)\n return\n }\n\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i]!\n const lightSvg = results[`ml${i}`] || ''\n const darkSvg = results[`md${i}`] || ''\n\n if (!lightSvg && !darkSvg) {\n console.warn(`[rehype-mermaid] No SVG produced for diagram ${i}`)\n continue\n }\n\n if (entry.kind === 'jsx') {\n const attrs = (entry.node as any).attributes || []\n if (lightSvg) attrs.push(makeJsxStringAttr('lightSvg', lightSvg))\n if (darkSvg) attrs.push(makeJsxStringAttr('darkSvg', darkSvg))\n ;(entry.node as any).attributes = attrs\n } else {\n if (entry.node !== entry.pre) {\n entry.node.children = [entry.pre]\n }\n entry.pre.properties = {\n ...entry.pre.properties,\n __isMermaid__: true,\n __mermaidLightSvg__: lightSvg,\n __mermaidDarkSvg__: darkSvg,\n }\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as UnistTree } from "./unist-
|
|
1
|
+
import { n as UnistTree } from "./unist-C-gDxuYf.js";
|
|
2
2
|
|
|
3
3
|
//#region src/velite/plugins/rehype-mermaid.d.ts
|
|
4
4
|
declare function rehypeMermaid(): (tree: UnistTree) => Promise<void>;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { rehypeMermaid as t };
|
|
7
|
-
//# sourceMappingURL=rehype-mermaid-
|
|
7
|
+
//# sourceMappingURL=rehype-mermaid-DecYf_rU.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehype-mermaid-DecYf_rU.d.ts","names":[],"sources":["../src/velite/plugins/rehype-mermaid.ts"],"sourcesContent":[],"mappings":";;;iBAwJgB,aAAA,CAAA,UACM,cAAS"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as UnistTree } from "./unist-
|
|
1
|
+
import { n as UnistTree } from "./unist-C-gDxuYf.js";
|
|
2
2
|
|
|
3
3
|
//#region src/velite/plugins/rehype-npm-command.d.ts
|
|
4
4
|
declare function rehypeNpmCommand(): (tree: UnistTree) => void;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { rehypeNpmCommand as t };
|
|
7
|
-
//# sourceMappingURL=rehype-npm-command-
|
|
7
|
+
//# sourceMappingURL=rehype-npm-command-Bg4YXfot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehype-npm-command-Bg4YXfot.d.ts","names":[],"sources":["../src/velite/plugins/rehype-npm-command.ts"],"sourcesContent":[],"mappings":";;;iBAIgB,gBAAA,CAAA,UACA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./hast-properties-
|
|
2
|
-
//# sourceMappingURL=rehype-npm-command-
|
|
1
|
+
import{n as e}from"./hast-properties-DMieBO19.js";import{visit as t}from"unist-util-visit";function n(){return n=>{t(n,t=>{if(t.type!==`element`||t?.tagName!==`pre`)return;let n=e(t),r=n.__rawString__;r&&(r.startsWith(`npm install`)&&(n.__npmCommand__=r,n.__yarnCommand__=r.replace(`npm install`,`yarn add`),n.__pnpmCommand__=r.replace(`npm install`,`pnpm add`),n.__bunCommand__=r.replace(`npm install`,`bun add`)),r.startsWith(`npx create-`)&&(n.__npmCommand__=r,n.__yarnCommand__=r.replace(`npx create-`,`yarn create `),n.__pnpmCommand__=r.replace(`npx create-`,`pnpm create `),n.__bunCommand__=r.replace(`npx`,`bunx --bun`)),r.startsWith(`npx`)&&!r.startsWith(`npx create-`)&&(n.__npmCommand__=r,n.__yarnCommand__=r.replace(`npx`,`yarn dlx`),n.__pnpmCommand__=r.replace(`npx`,`pnpm dlx`),n.__bunCommand__=r.replace(`npx`,`bunx --bun`)))})}}export{n as t};
|
|
2
|
+
//# sourceMappingURL=rehype-npm-command-D_fYpcFr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-npm-command-
|
|
1
|
+
{"version":3,"file":"rehype-npm-command-D_fYpcFr.js","names":[],"sources":["../src/velite/plugins/rehype-npm-command.ts"],"sourcesContent":["import type { MdxCodeNodeProperties, UnistNode, UnistTree } from '@duck-docs/types'\nimport { visit } from 'unist-util-visit'\nimport { readNodeProperties } from './hast-properties'\n\nexport function rehypeNpmCommand() {\n return (tree: UnistTree) => {\n visit(tree, (node: UnistNode) => {\n if (node.type !== 'element' || node?.tagName !== 'pre') {\n return\n }\n\n const props = readNodeProperties<MdxCodeNodeProperties>(node)\n const raw = props.__rawString__\n\n if (!raw) {\n return\n }\n\n // npm install.\n if (raw.startsWith('npm install')) {\n props.__npmCommand__ = raw\n props.__yarnCommand__ = raw.replace('npm install', 'yarn add')\n props.__pnpmCommand__ = raw.replace('npm install', 'pnpm add')\n props.__bunCommand__ = raw.replace('npm install', 'bun add')\n }\n\n // npx create.\n if (raw.startsWith('npx create-')) {\n props.__npmCommand__ = raw\n props.__yarnCommand__ = raw.replace('npx create-', 'yarn create ')\n props.__pnpmCommand__ = raw.replace('npx create-', 'pnpm create ')\n props.__bunCommand__ = raw.replace('npx', 'bunx --bun')\n }\n\n // npx.\n if (raw.startsWith('npx') && !raw.startsWith('npx create-')) {\n props.__npmCommand__ = raw\n props.__yarnCommand__ = raw.replace('npx', 'yarn dlx')\n props.__pnpmCommand__ = raw.replace('npx', 'pnpm dlx')\n props.__bunCommand__ = raw.replace('npx', 'bunx --bun')\n }\n })\n }\n}\n"],"mappings":"2FAIA,SAAgB,GAAmB,CACjC,MAAQ,IAAoB,CAC1B,EAAM,EAAO,GAAoB,CAC/B,GAAI,EAAK,OAAS,WAAa,GAAM,UAAY,MAC/C,OAGF,IAAM,EAAQ,EAA0C,EAAK,CACvD,EAAM,EAAM,cAEb,IAKD,EAAI,WAAW,cAAc,GAC/B,EAAM,eAAiB,EACvB,EAAM,gBAAkB,EAAI,QAAQ,cAAe,WAAW,CAC9D,EAAM,gBAAkB,EAAI,QAAQ,cAAe,WAAW,CAC9D,EAAM,eAAiB,EAAI,QAAQ,cAAe,UAAU,EAI1D,EAAI,WAAW,cAAc,GAC/B,EAAM,eAAiB,EACvB,EAAM,gBAAkB,EAAI,QAAQ,cAAe,eAAe,CAClE,EAAM,gBAAkB,EAAI,QAAQ,cAAe,eAAe,CAClE,EAAM,eAAiB,EAAI,QAAQ,MAAO,aAAa,EAIrD,EAAI,WAAW,MAAM,EAAI,CAAC,EAAI,WAAW,cAAc,GACzD,EAAM,eAAiB,EACvB,EAAM,gBAAkB,EAAI,QAAQ,MAAO,WAAW,CACtD,EAAM,gBAAkB,EAAI,QAAQ,MAAO,WAAW,CACtD,EAAM,eAAiB,EAAI,QAAQ,MAAO,aAAa,IAEzD"}
|
package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts → rehype-pre-block-source-BAdGFElv.d.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as UnistTree } from "./unist-
|
|
1
|
+
import { n as UnistTree } from "./unist-C-gDxuYf.js";
|
|
2
2
|
|
|
3
3
|
//#region src/velite/plugins/rehype-pre-block-source.d.ts
|
|
4
4
|
declare function rehypePreBlockSource(): (tree: UnistTree) => void;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { rehypePreBlockSource as t };
|
|
7
|
-
//# sourceMappingURL=rehype-pre-block-source-
|
|
7
|
+
//# sourceMappingURL=rehype-pre-block-source-BAdGFElv.d.ts.map
|
package/dist/{rehype-pre-block-source-0UyWe2hh.d.ts.map → rehype-pre-block-source-BAdGFElv.d.ts.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-pre-block-source-
|
|
1
|
+
{"version":3,"file":"rehype-pre-block-source-BAdGFElv.d.ts","names":[],"sources":["../src/velite/plugins/rehype-pre-block-source.ts"],"sourcesContent":[],"mappings":";;;iBAMgB,oBAAA,CAAA,UACA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,t}from"./hast-properties-
|
|
2
|
-
//# sourceMappingURL=rehype-pre-block-source-
|
|
1
|
+
import{n as e,t}from"./hast-properties-DMieBO19.js";import{visit as n}from"unist-util-visit";import{toString as r}from"hast-util-to-string";function i(){return i=>{n(i,n=>{if(n?.type===`element`&&n?.tagName===`div`&&n?.properties){if(!(`data-rehype-pretty-code-fragment`in n.properties))return;n.children?.forEach(n=>{n?.type===`element`&&n?.tagName===`pre`&&t(n,{...e(n),__rawString__:r(n)})})}})}}export{i as t};
|
|
2
|
+
//# sourceMappingURL=rehype-pre-block-source-Cdsik072.js.map
|
package/dist/{rehype-pre-block-source-paX7yPQ4.js.map → rehype-pre-block-source-Cdsik072.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-pre-block-source-
|
|
1
|
+
{"version":3,"file":"rehype-pre-block-source-Cdsik072.js","names":[],"sources":["../src/velite/plugins/rehype-pre-block-source.ts"],"sourcesContent":["import type { MdxCodeNodeProperties, UnistNode, UnistTree } from '@duck-docs/types'\nimport type { Nodes } from 'hast'\nimport { toString } from 'hast-util-to-string'\nimport { visit } from 'unist-util-visit'\nimport { assignNodeProperties, readNodeProperties } from './hast-properties'\n\nexport function rehypePreBlockSource() {\n return (tree: UnistTree) => {\n visit(tree, (node: UnistNode) => {\n if (node?.type === 'element' && node?.tagName === 'div' && node?.properties) {\n if (!('data-rehype-pretty-code-fragment' in node.properties)) {\n return\n }\n\n node.children?.forEach((child: UnistNode) => {\n if (child?.type === 'element' && child?.tagName === 'pre') {\n const currentProperties = readNodeProperties<MdxCodeNodeProperties>(child)\n assignNodeProperties(child, {\n ...currentProperties,\n __rawString__: toString(child as Nodes),\n })\n }\n })\n }\n })\n }\n}\n"],"mappings":"4IAMA,SAAgB,GAAuB,CACrC,MAAQ,IAAoB,CAC1B,EAAM,EAAO,GAAoB,CAC/B,GAAI,GAAM,OAAS,WAAa,GAAM,UAAY,OAAS,GAAM,WAAY,CAC3E,GAAI,EAAE,qCAAsC,EAAK,YAC/C,OAGF,EAAK,UAAU,QAAS,GAAqB,CACvC,GAAO,OAAS,WAAa,GAAO,UAAY,OAElD,EAAqB,EAAO,CAC1B,GAFwB,EAA0C,EAAM,CAGxE,cAAe,EAAS,EAAe,CACxC,CAAC,EAEJ,GAEJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as UnistTree } from "./unist-
|
|
1
|
+
import { n as UnistTree } from "./unist-C-gDxuYf.js";
|
|
2
2
|
|
|
3
3
|
//#region src/velite/plugins/rehype-title.d.ts
|
|
4
4
|
declare function rehypeTitle(): (tree: UnistTree) => void;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { rehypeTitle as t };
|
|
7
|
-
//# sourceMappingURL=rehype-title-
|
|
7
|
+
//# sourceMappingURL=rehype-title-9j_Q2o1g.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rehype-title-9j_Q2o1g.d.ts","names":[],"sources":["../src/velite/plugins/rehype-title.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,WAAA,CAAA,UACA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{visit as e}from"unist-util-visit";function t(){return t=>{e(t,e=>{if(e?.type===`element`&&e?.tagName===`div`&&e?.properties){if(!(`data-rehype-pretty-code-fragment`in e.properties))return;e.children?.forEach(e=>{e.type===`element`&&e.tagName===`div`&&Object.keys(e.properties??{}).includes(`data-rehype-pretty-code-title`)&&(e.tagName=`figcaption`)})}})}}export{t};
|
|
2
|
-
//# sourceMappingURL=rehype-title-
|
|
2
|
+
//# sourceMappingURL=rehype-title-D5VN1law.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype-title-
|
|
1
|
+
{"version":3,"file":"rehype-title-D5VN1law.js","names":[],"sources":["../src/velite/plugins/rehype-title.ts"],"sourcesContent":["import type { UnistNode, UnistTree } from '@duck-docs/types'\nimport { visit } from 'unist-util-visit'\n\nexport function rehypeTitle() {\n return (tree: UnistTree) => {\n visit(tree, (node: UnistNode) => {\n if (node?.type === 'element' && node?.tagName === 'div' && node?.properties) {\n if (!('data-rehype-pretty-code-fragment' in node.properties)) {\n return\n }\n\n node.children?.forEach((child: UnistNode) => {\n if (\n child.type === 'element' &&\n child.tagName === 'div' &&\n Object.keys(child.properties ?? {}).includes('data-rehype-pretty-code-title')\n ) {\n child.tagName = 'figcaption'\n }\n })\n }\n })\n }\n}\n"],"mappings":"yCAGA,SAAgB,GAAc,CAC5B,MAAQ,IAAoB,CAC1B,EAAM,EAAO,GAAoB,CAC/B,GAAI,GAAM,OAAS,WAAa,GAAM,UAAY,OAAS,GAAM,WAAY,CAC3E,GAAI,EAAE,qCAAsC,EAAK,YAC/C,OAGF,EAAK,UAAU,QAAS,GAAqB,CAEzC,EAAM,OAAS,WACf,EAAM,UAAY,OAClB,OAAO,KAAK,EAAM,YAAc,EAAE,CAAC,CAAC,SAAS,gCAAgC,GAE7E,EAAM,QAAU,eAElB,GAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{t as e}from"./direction-B-anGbxM-BdqxtlGV.js";import{cn as t}from"@gentleduck/libs/cn";import*as n from"react";import{jsx as r}from"react/jsx-runtime";const i=n.forwardRef(({children:n,className:i,viewportClassName:a,viewportRef:o,style:s,dir:c,...l},u)=>{let d=e(c);return r(`div`,{className:t(`relative overflow-hidden`,i),dir:d,style:s,ref:u,...l,"data-slot":`scroll-area`,children:r(`div`,{ref:o,className:t(`scrollbar-none h-full w-full overflow-auto`,a),children:n})})});i.displayName=`ScrollArea`;export{i as t};
|
|
2
|
-
//# sourceMappingURL=scroll-area-
|
|
2
|
+
//# sourceMappingURL=scroll-area-BFWBc-X7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-
|
|
1
|
+
{"version":3,"file":"scroll-area-BFWBc-X7.js","names":["React","useDirection"],"sources":["../../registry-ui/src/scroll-area/scroll-area.tsx"],"sourcesContent":["import { cn } from '@gentleduck/libs/cn'\nimport { type Direction, useDirection } from '@gentleduck/primitives/direction'\nimport * as React from 'react'\n\ninterface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n viewportClassName?: string\n viewportRef?: React.Ref<HTMLDivElement>\n}\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ children, className, viewportClassName, viewportRef, style, dir, ...props }, ref) => {\n const direction = useDirection(dir as Direction)\n return (\n <div\n className={cn('relative overflow-hidden', className)}\n dir={direction}\n style={style}\n ref={ref}\n {...props}\n data-slot=\"scroll-area\">\n <div ref={viewportRef} className={cn('scrollbar-none h-full w-full overflow-auto', viewportClassName)}>\n {children}\n </div>\n </div>\n )\n },\n)\nScrollArea.displayName = 'ScrollArea'\n\nexport { ScrollArea }\n"],"mappings":"8JASA,MAAM,EAAaA,EAAM,YACtB,CAAE,WAAU,YAAW,oBAAmB,cAAa,QAAO,MAAK,GAAG,GAAS,IAAQ,CACtF,IAAM,EAAYC,EAAa,EAAiB,CAChD,OACE,EAAC,MAAA,CACC,UAAW,EAAG,2BAA4B,EAAU,CACpD,IAAK,EACE,QACF,MACL,GAAI,EACJ,YAAU,uBACV,EAAC,MAAA,CAAI,IAAK,EAAa,UAAW,EAAG,6CAA8C,EAAkB,CAClG,YACG,EACF,EAGX,CACD,EAAW,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{t as e}from"./direction-B-anGbxM-BdqxtlGV.js";import{cn as t}from"@gentleduck/libs/cn";import*as n from"react";import{jsx as r}from"react/jsx-runtime";const i=n.forwardRef(({className:n,orientation:i=`horizontal`,dir:a,...o},s)=>{let c=e(a);return r(`hr`,{ref:s,"aria-orientation":i,className:t(`shrink-0 bg-border`,i===`horizontal`?`h-px w-full`:`min-h-full w-px`,n),dir:c,role:`separator`,...o,"data-slot":`separator`})});i.displayName=`Separator`;export{i as t};
|
|
2
|
-
//# sourceMappingURL=separator-
|
|
2
|
+
//# sourceMappingURL=separator-C2JodQpS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"separator-
|
|
1
|
+
{"version":3,"file":"separator-C2JodQpS.js","names":["React","useDirection"],"sources":["../../registry-ui/src/separator/separator.tsx"],"sourcesContent":["'use client'\n\nimport { cn } from '@gentleduck/libs/cn'\nimport { type Direction, useDirection } from '@gentleduck/primitives/direction'\nimport * as React from 'react'\n\nconst Separator = React.forwardRef<\n HTMLHRElement,\n React.HTMLAttributes<HTMLHRElement> & {\n orientation?: 'horizontal' | 'vertical'\n }\n>(({ className, orientation = 'horizontal', dir, ...props }, ref) => {\n const direction = useDirection(dir as Direction)\n return (\n <hr\n ref={ref}\n aria-orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-px w-full' : 'min-h-full w-px', className)}\n dir={direction}\n role=\"separator\"\n {...props}\n data-slot=\"separator\"\n />\n )\n})\nSeparator.displayName = 'Separator'\n\nexport { Separator }\n"],"mappings":"8JAMA,MAAM,EAAYA,EAAM,YAKrB,CAAE,YAAW,cAAc,aAAc,MAAK,GAAG,GAAS,IAAQ,CACnE,IAAM,EAAYC,EAAa,EAAiB,CAChD,OACE,EAAC,KAAA,CACM,MACL,mBAAkB,EAClB,UAAW,EAAG,qBAAsB,IAAgB,aAAe,cAAgB,kBAAmB,EAAU,CAChH,IAAK,EACL,KAAK,YACL,GAAI,EACJ,YAAU,aACV,EAEJ,CACF,EAAU,YAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./copy-button-Ccbj3Omt.js";import{t}from"./separator-
|
|
2
|
-
//# sourceMappingURL=shell-command-
|
|
1
|
+
import{t as e}from"./copy-button-Ccbj3Omt.js";import{t}from"./separator-C2JodQpS.js";import{i as n,n as r,r as i,t as a}from"./tabs-DkzoTBog.js";import{cn as o}from"@gentleduck/libs/cn";import{jsx as s,jsxs as c}from"react/jsx-runtime";import{Terminal as l}from"lucide-react";function u({__npmCommand__:u,__yarnCommand__:d,__pnpmCommand__:f,__bunCommand__:p}){let m={__bunCommand__:p,__npmCommand__:u,__pnpmCommand__:f,__yarnCommand__:d};return c(a,{className:`rounded-md`,defaultValue:`__npmCommand__`,children:[c(i,{className:`w-fit justify-start bg-transparent py-2`,children:[s(`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`,children:s(l,{"aria-hidden":`true`,className:`size-4 text-background`})}),Object.keys(m).map((e,t)=>s(n,{className:`aria-[selected='true']:bg-muted`,value:e,children:e.replace(`__`,``).replace(`Command`,``).replace(`__`,``)},t))]}),s(t,{}),Object.entries(m).map(([t,n],i)=>c(r,{className:`[&_pre]:max-w-[620px] [&_pre]:overflow-auto`,value:t,children:[s(e,{className:o(`absolute top-1.5 right-1.5 border-none bg-transparent [&_svg]:size-5 [&_svg]:text-muted-foreground`),value:n,variant:`outline`}),s(`pre`,{className:`p-4 pt-2 text-muted-foreground text-sm focus-visible:shadow-none focus-visible:outline-none`,children:n})]},i))]})}export{u as t};
|
|
2
|
+
//# sourceMappingURL=shell-command-uA9FhemC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-command-
|
|
1
|
+
{"version":3,"file":"shell-command-uA9FhemC.js","names":[],"sources":["../src/components/mdx/mdx-components/code/pre-block/shell-command.tsx"],"sourcesContent":["import { CopyButton } from '@duck-docs/components/copy-button'\nimport type { NpmCommands } from '@duck-docs/types/unist'\nimport { cn } from '@gentleduck/libs/cn'\nimport { Separator } from '@gentleduck/registry-ui/separator'\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@gentleduck/registry-ui/tabs'\nimport { Terminal } from 'lucide-react'\n\nexport function ShellCommand({ __npmCommand__, __yarnCommand__, __pnpmCommand__, __bunCommand__ }: NpmCommands) {\n const commands = {\n __bunCommand__,\n __npmCommand__,\n __pnpmCommand__,\n __yarnCommand__,\n }\n\n return (\n <Tabs className=\"rounded-md\" defaultValue=\"__npmCommand__\">\n <TabsList className=\"w-fit justify-start bg-transparent py-2\">\n <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\">\n <Terminal aria-hidden=\"true\" className=\"size-4 text-background\" />\n </div>\n {Object.keys(commands).map((command, idx) => {\n return (\n <TabsTrigger className=\"aria-[selected='true']:bg-muted\" key={idx} value={command}>\n {command.replace('__', '').replace('Command', '').replace('__', '')}\n </TabsTrigger>\n )\n })}\n </TabsList>\n <Separator />\n {Object.entries(commands).map(([commandKey, command], idx) => {\n return (\n <TabsContent className=\"[&_pre]:max-w-[620px] [&_pre]:overflow-auto\" key={idx} value={commandKey}>\n <CopyButton\n className={cn(\n 'absolute top-1.5 right-1.5 border-none bg-transparent [&_svg]:size-5 [&_svg]:text-muted-foreground',\n )}\n value={command as string}\n variant={'outline'}\n />\n <pre className=\"p-4 pt-2 text-muted-foreground text-sm focus-visible:shadow-none focus-visible:outline-none\">\n {command}\n </pre>\n </TabsContent>\n )\n })}\n </Tabs>\n )\n}\n"],"mappings":"oRAOA,SAAgB,EAAa,CAAE,iBAAgB,kBAAiB,kBAAiB,kBAA+B,CAC9G,IAAM,EAAW,CACf,iBACA,iBACA,kBACA,kBACD,CAED,OACE,EAAC,EAAA,CAAK,UAAU,aAAa,aAAa,2BACxC,EAAC,EAAA,CAAS,UAAU,oDAClB,EAAC,MAAA,CAAI,UAAU,iHACb,EAAC,EAAA,CAAS,cAAY,OAAO,UAAU,0BAA2B,EAC9D,CACL,OAAO,KAAK,EAAS,CAAC,KAAK,EAAS,IAEjC,EAAC,EAAA,CAAY,UAAU,kCAA4C,MAAO,WACvE,EAAQ,QAAQ,KAAM,GAAG,CAAC,QAAQ,UAAW,GAAG,CAAC,QAAQ,KAAM,GAAG,EADP,EAEhD,CAEhB,CAAA,EACO,CACX,EAAC,EAAA,EAAA,CAAY,CACZ,OAAO,QAAQ,EAAS,CAAC,KAAK,CAAC,EAAY,GAAU,IAElD,EAAC,EAAA,CAAY,UAAU,8CAAwD,MAAO,YACpF,EAAC,EAAA,CACC,UAAW,EACT,qGACD,CACD,MAAO,EACP,QAAS,WACT,CACF,EAAC,MAAA,CAAI,UAAU,uGACZ,GACG,CAAA,EAVkE,EAW5D,CAEhB,GACG"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./button-BPQ9zanb.js";import{o as t}from"./context-
|
|
2
|
-
//# sourceMappingURL=site-footer-
|
|
1
|
+
import{n as e}from"./button-BPQ9zanb.js";import{o as t}from"./context-8iUWV99o.js";import{Fragment as n,jsx as r,jsxs as i}from"react/jsx-runtime";import{HeartIcon as a,Mail as o}from"lucide-react";import s from"next/link";function c(){let e=t(),a=e.author?.name??e.name,o=e.author?.url??e.links?.twitter,s=e.links?.github;return r(`footer`,{className:`w-full border-t py-6 md:px-8 md:py-0`,children:i(`div`,{className:`container mx-auto flex flex-col items-center justify-between gap-4 md:h-24 md:flex-row`,children:[r(`div`,{className:`flex flex-col items-center justify-between gap-4 md:h-24 md:flex-row`,children:i(`p`,{className:`text-balance text-center text-muted-foreground text-sm leading-loose md:text-left`,children:[`Built by`,` `,o?i(`a`,{className:`font-medium underline underline-offset-4`,href:o,rel:`noreferrer`,target:`_blank`,children:[a,r(`span`,{className:`sr-only`,children:` (opens in a new tab)`})]}):r(`span`,{className:`font-medium`,children:a}),s?i(n,{children:[`. The source code is available on`,` `,i(`a`,{className:`font-medium underline underline-offset-4`,href:s,rel:`noreferrer`,target:`_blank`,children:[`GitHub`,r(`span`,{className:`sr-only`,children:` (opens in a new tab)`})]}),`.`]}):null]})}),r(`div`,{className:`hidden items-center gap-4 md:flex`,children:r(l,{})})]})})}function l(){let c=t();return i(n,{children:[i(s,{className:e({size:`sm`,variant:`outline`}),href:c.links?.sponsor??`https://opencollective.com/gentelduck`,rel:`noreferrer`,target:`_blank`,children:[r(a,{"aria-hidden":`true`,className:`mr-2 h-4 w-4 fill-current text-red-600`}),`Sponsor`,r(`span`,{className:`sr-only`,children:` (opens in a new tab)`})]}),i(s,{className:e({size:`sm`,variant:`outline`}),href:c.links?.email?`mailto:${c.links.email}`:`mailto:support@gentleduck.org`,children:[r(o,{"aria-hidden":`true`}),r(`span`,{children:`Email`})]})]})}export{c as n,l as t};
|
|
2
|
+
//# sourceMappingURL=site-footer-BDIGBSjx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-footer-
|
|
1
|
+
{"version":3,"file":"site-footer-BDIGBSjx.js","names":["Link"],"sources":["../src/components/layouts/site-footer.tsx"],"sourcesContent":["'use client'\n\nimport { useSiteConfig } from '@duck-docs/context'\nimport { buttonVariants } from '@gentleduck/registry-ui/button'\nimport { HeartIcon, Mail } from 'lucide-react'\nimport Link from 'next/link'\n\nexport function SiteFooter() {\n const siteConfig = useSiteConfig()\n const authorName = siteConfig.author?.name ?? siteConfig.name\n const authorUrl = siteConfig.author?.url ?? siteConfig.links?.twitter\n const githubUrl = siteConfig.links?.github\n\n return (\n <footer className=\"w-full border-t py-6 md:px-8 md:py-0\">\n <div className=\"container mx-auto flex flex-col items-center justify-between gap-4 md:h-24 md:flex-row\">\n <div className=\"flex flex-col items-center justify-between gap-4 md:h-24 md:flex-row\">\n <p className=\"text-balance text-center text-muted-foreground text-sm leading-loose md:text-left\">\n Built by{' '}\n {authorUrl ? (\n <a className=\"font-medium underline underline-offset-4\" href={authorUrl} rel=\"noreferrer\" target=\"_blank\">\n {authorName}\n <span className=\"sr-only\"> (opens in a new tab)</span>\n </a>\n ) : (\n <span className=\"font-medium\">{authorName}</span>\n )}\n {githubUrl ? (\n <>\n . The source code is available on{' '}\n <a\n className=\"font-medium underline underline-offset-4\"\n href={githubUrl}\n rel=\"noreferrer\"\n target=\"_blank\">\n GitHub\n <span className=\"sr-only\"> (opens in a new tab)</span>\n </a>\n .\n </>\n ) : null}\n </p>\n </div>\n <div className=\"hidden items-center gap-4 md:flex\">\n <FooterButtons />\n </div>\n </div>\n </footer>\n )\n}\n\nexport function FooterButtons() {\n const siteConfig = useSiteConfig()\n return (\n <>\n <Link\n className={buttonVariants({ size: 'sm', variant: 'outline' })}\n href={siteConfig.links?.sponsor ?? 'https://opencollective.com/gentelduck'}\n rel=\"noreferrer\"\n target=\"_blank\">\n <HeartIcon aria-hidden=\"true\" className=\"mr-2 h-4 w-4 fill-current text-red-600\" />\n Sponsor\n <span className=\"sr-only\"> (opens in a new tab)</span>\n </Link>\n <Link\n className={buttonVariants({ size: 'sm', variant: 'outline' })}\n href={siteConfig.links?.email ? `mailto:${siteConfig.links.email}` : 'mailto:support@gentleduck.org'}>\n <Mail aria-hidden=\"true\" />\n <span>Email</span>\n </Link>\n </>\n )\n}\n"],"mappings":"+NAOA,SAAgB,GAAa,CAC3B,IAAM,EAAa,GAAe,CAC5B,EAAa,EAAW,QAAQ,MAAQ,EAAW,KACnD,EAAY,EAAW,QAAQ,KAAO,EAAW,OAAO,QACxD,EAAY,EAAW,OAAO,OAEpC,OACE,EAAC,SAAA,CAAO,UAAU,gDAChB,EAAC,MAAA,CAAI,UAAU,mGACb,EAAC,MAAA,CAAI,UAAU,gFACb,EAAC,IAAA,CAAE,UAAU,8FAAoF,WACtF,IACR,EACC,EAAC,IAAA,CAAE,UAAU,2CAA2C,KAAM,EAAW,IAAI,aAAa,OAAO,mBAC9F,EACD,EAAC,OAAA,CAAK,UAAU,mBAAU,yBAA4B,CAAA,EACpD,CAEJ,EAAC,OAAA,CAAK,UAAU,uBAAe,GAAkB,CAElD,EACC,EAAA,EAAA,CAAA,SAAA,CAAE,oCACkC,IAClC,EAAC,IAAA,CACC,UAAU,2CACV,KAAM,EACN,IAAI,aACJ,OAAO,mBAAS,SAEhB,EAAC,OAAA,CAAK,UAAU,mBAAU,yBAA4B,CAAA,EACpD,OAEH,CACD,OACF,EACA,CACN,EAAC,MAAA,CAAI,UAAU,6CACb,EAAC,EAAA,EAAA,CAAgB,EACb,CAAA,EACF,EACC,CAIb,SAAgB,GAAgB,CAC9B,IAAM,EAAa,GAAe,CAClC,OACE,EAAA,EAAA,CAAA,SAAA,CACE,EAACA,EAAAA,CACC,UAAW,EAAe,CAAE,KAAM,KAAM,QAAS,UAAW,CAAC,CAC7D,KAAM,EAAW,OAAO,SAAW,wCACnC,IAAI,aACJ,OAAO,mBACP,EAAC,EAAA,CAAU,cAAY,OAAO,UAAU,0CAA2C,WAEnF,EAAC,OAAA,CAAK,UAAU,mBAAU,yBAA4B,GACjD,CACP,EAACA,EAAAA,CACC,UAAW,EAAe,CAAE,KAAM,KAAM,QAAS,UAAW,CAAC,CAC7D,KAAM,EAAW,OAAO,MAAQ,UAAU,EAAW,MAAM,QAAU,0CACrE,EAAC,EAAA,CAAK,cAAY,OAAA,CAAS,CAC3B,EAAC,OAAA,CAAA,SAAK,QAAA,CAAY,CAAA,EACb,CAAA,CAAA,CACN"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime96 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/layouts/site-footer.d.ts
|
|
4
|
+
declare function SiteFooter(): react_jsx_runtime96.JSX.Element;
|
|
5
|
+
declare function FooterButtons(): react_jsx_runtime96.JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { SiteFooter as n, FooterButtons as t };
|
|
8
|
+
//# sourceMappingURL=site-footer-BigIDuKM.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-footer-
|
|
1
|
+
{"version":3,"file":"site-footer-BigIDuKM.d.ts","names":[],"sources":["../src/components/layouts/site-footer.tsx"],"sourcesContent":[],"mappings":";;;iBAOgB,UAAA,CAAA,GAAU,mBAAA,CAAA,GAAA,CAAA;iBA4CV,aAAA,CAAA,GAAa,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./button-BPQ9zanb.js";import{a as t,i as n,n as r,o as i,t as a}from"./dropdown-menu-DYiM8COh.js";import{n as o,o as s}from"./context-8iUWV99o.js";import{t as c}from"./mode-toggle-DKG4x8wu.js";import{n as l,r as u,t as d}from"./header-shell-DSjT_BrI.js";import{cn as f}from"@gentleduck/libs/cn";import p from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{Github as g,Twitter as _,Type as v}from"lucide-react";import{usePathname as y}from"next/navigation";import b from"next/link";import{useAtom as x}from"jotai";import{atomWithStorage as S}from"jotai/utils";function C(){let e=y(),{mainNav:t}=o();return h(`div`,{className:`mr-4 hidden md:flex`,children:[m(d,{className:`mr-4 lg:mr-6`}),t?.length?m(`nav`,{"aria-label":`Main`,className:`flex items-center gap-4 text-sm xl:gap-6`,children:t.map(t=>m(b,{"aria-current":e===t.href?`page`:void 0,className:f(`font-medium transition-colors hover:text-foreground/80`,e===t.href?`text-foreground`:`text-foreground/80`),href:t.href??`#`,children:t.title},t.href??t.title))}):null]})}const w=p.lazy(()=>import(`./components/layouts/command-menu.js`).then(e=>({default:e.CommandMenu}))),T=p.lazy(()=>import(`./components/mobile-nav.js`).then(e=>({default:e.MobileNav}))),E=`fontPresetV6`,D=`mono-normal`,O=[{label:`JetBrains Mono Nerd Italic`,value:`mono-italic`},{label:`JetBrains Mono Nerd Regular`,value:`mono-normal`},{label:`Inter Regular`,value:`sans-normal`},{label:`Inter Italic`,value:`sans-italic`},{label:`Inria Serif Regular`,value:`serif-normal`},{label:`Inria Serif Italic`,value:`serif-italic`}],k=new Set(O.map(e=>e.value));function A(e){return typeof e==`string`&&k.has(e)}function j(e){let t=e.startsWith(`sans`)?`var(--font-sans-font, "Inter"), ui-sans-serif, system-ui, sans-serif`:e.startsWith(`serif`)?`var(--font-serif-font, "Inria Serif"), Georgia, "Times New Roman", serif`:`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`,n=e.startsWith(`sans`)?`--font-sans-font`:e.startsWith(`serif`)?`--font-serif-font`:`--font-mono-font`,r=e.endsWith(`italic`)?`italic`:`normal`;document.documentElement.setAttribute(`data-font-preset`,e),document.documentElement.style.setProperty(`--duck-font-family`,t),document.documentElement.style.setProperty(`--font-sans`,t),document.documentElement.style.setProperty(`--font-mono`,t),document.documentElement.style.setProperty(`font-family`,t,`important`),document.documentElement.style.setProperty(`font-style`,r,`important`),document.documentElement.style.setProperty(`--duck-font-style`,r),document.body&&(document.body.style.setProperty(`font-family`,t,`important`),document.body.style.setProperty(`font-style`,r,`important`)),(()=>{if(document.fonts?.load)try{let e=getComputedStyle(document.documentElement).getPropertyValue(n).trim();if(!e)return;let t=r===`italic`?`italic `:``;document.fonts.load(`${t}400 1em ${e}`),document.fonts.load(`${t}500 1em ${e}`),document.fonts.load(`${t}700 1em ${e}`)}catch{}})()}function M(){let t=s();return m(u,{className:`border-border/40 border-b bg-background/40 backdrop-blur-md supports-[backdrop-filter]:bg-transparent`,children:h(l,{children:[m(C,{}),m(p.Suspense,{fallback:null,children:m(T,{})}),h(`div`,{className:`flex flex-1 items-center justify-between space-x-2 md:justify-end`,children:[m(`div`,{className:`w-full flex-1 md:w-auto md:flex-none`,children:m(p.Suspense,{fallback:h(`div`,{className:f(e({size:`sm`,variant:`outline`}),`relative h-8 w-full bg-muted/50 text-muted-foreground text-sm shadow-none md:w-40 lg:w-64`),children:[m(`span`,{className:`hidden lg:inline-flex`,children:`Search documentation...`}),m(`span`,{className:`inline-flex lg:hidden`,children:`Search...`})]}),children:m(w,{})})}),h(`nav`,{"aria-label":`Social and settings`,className:`flex items-center`,children:[m(N,{}),m(F,{}),t.links?.discord?m(b,{"aria-label":`Discord (opens in a new tab)`,href:t.links.discord,rel:`noreferrer`,target:`_blank`,children:m(`div`,{className:f(e({size:`icon`,variant:`ghost`})),children:m(`svg`,{"aria-hidden":`true`,className:`size-4`,fill:`currentColor`,viewBox:`0 0 24 24`,xmlns:`http://www.w3.org/2000/svg`,children:m(`path`,{d:`M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z`})})})}):null,t.links?.twitter?m(b,{"aria-label":`Twitter (opens in a new tab)`,href:t.links.twitter,rel:`noreferrer`,target:`_blank`,children:m(`div`,{className:f(e({size:`icon`,variant:`ghost`})),children:m(_,{"aria-hidden":`true`})})}):null,m(c,{})]})]})]})})}function N(){let[t,n]=p.useState(null),r=s(),i=r.links?.github?.replace(`https://github.com/`,``).replace(/\/$/,``),a=r.githubRepo??i;return p.useEffect(()=>{async function e(){try{if(!a)return;let e=await fetch(`https://api.github.com/repos/${a}`);if(!e.ok)return;let t=await e.json();typeof t.stargazers_count==`number`&&n(t.stargazers_count)}catch(e){console.error(`Failed to fetch stars:`,e)}}e()},[]),r.links?.github?m(b,{"aria-label":`GitHub (opens in a new tab)`,href:r.links.github,rel:`noopener noreferrer`,target:`_blank`,children:h(`div`,{className:f(e({className:`size-auto h-8 w-16 font-medium text-sm`,size:`icon`,variant:`ghost`})),children:[m(g,{"aria-hidden":`true`}),t===null?`...`:t.toLocaleString()]})}):null}const P=S(E,D);function F(){let[o,s]=x(P);return p.useEffect(()=>{try{if(localStorage.getItem(E)!==null)return;let e=localStorage.getItem(`fontPresetV5`);if(e){let t=JSON.parse(e);s(A(t)?String(t).replace(`-italic`,`-normal`):D);return}let t=localStorage.getItem(`fontPresetV2`);if(t){let e=JSON.parse(t);s(A(e)&&e.startsWith(`mono`)?e:D);return}let n=localStorage.getItem(`fontPreset`);if(n){let e=JSON.parse(n);s(A(e)&&e.startsWith(`mono`)?e:D);return}let r=localStorage.getItem(`fontType`);r&&s(JSON.parse(r)===`mono`?`mono-normal`:D)}catch{}},[s]),p.useEffect(()=>{if(!A(o)){s(D);return}j(o)},[o,s]),h(a,{children:[m(i,{asChild:!0,children:m(`button`,{"aria-label":`Font and style`,className:f(e({size:`icon`,variant:`ghost`}),`size-8`),type:`button`,children:m(v,{"aria-hidden":`true`,className:`size-4`})})}),m(r,{align:`end`,className:`w-60`,children:m(n,{onValueChange:e=>{A(e)&&(s(e),j(e))},value:o,children:O.map(e=>m(t,{onSelect:()=>{s(e.value),j(e.value)},value:e.value,children:e.label},e.value))})})]})}export{M as n,C as r,F as t};
|
|
2
|
+
//# sourceMappingURL=site-header-ClW-bc7r.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-header-ClW-bc7r.js","names":["Link","DEFAULT_FONT_PRESET: FontPreset","FONT_PRESET_OPTIONS: Array<{ label: string; value: FontPreset }>","Link"],"sources":["../src/components/main-nav.tsx","../src/components/layouts/site-header.tsx"],"sourcesContent":["'use client'\n\nimport { useDocsConfig } from '@duck-docs/context'\nimport { cn } from '@gentleduck/libs/cn'\nimport Link from 'next/link'\nimport { usePathname } from 'next/navigation'\nimport { HeaderBrand } from './layouts/site-header'\n\nexport function MainNav() {\n const pathname = usePathname()\n const { mainNav } = useDocsConfig()\n\n return (\n <div className=\"mr-4 hidden md:flex\">\n <HeaderBrand className=\"mr-4 lg:mr-6\" />\n {mainNav?.length ? (\n <nav aria-label=\"Main\" className=\"flex items-center gap-4 text-sm xl:gap-6\">\n {mainNav.map((item) => (\n <Link\n aria-current={pathname === item.href ? 'page' : undefined}\n className={cn(\n 'font-medium transition-colors hover:text-foreground/80',\n pathname === item.href ? 'text-foreground' : 'text-foreground/80',\n )}\n href={item.href ?? '#'}\n key={item.href ?? item.title}>\n {item.title}\n </Link>\n ))}\n </nav>\n ) : null}\n </div>\n )\n}\n","'use client'\n\nimport { MainNav } from '@duck-docs/components/main-nav'\nimport { ModeSwitcher } from '@duck-docs/components/mode-toggle'\nimport { useSiteConfig } from '@duck-docs/context'\nimport { cn } from '@gentleduck/libs/cn'\nimport { buttonVariants } from '@gentleduck/registry-ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n} from '@gentleduck/registry-ui/dropdown-menu'\nimport { useAtom } from 'jotai'\nimport { atomWithStorage } from 'jotai/utils'\nimport { Github, Twitter, Type } from 'lucide-react'\nimport Link from 'next/link'\nimport React from 'react'\nimport { HeaderContainer, HeaderRoot } from './header-shell'\n\nconst CommandMenu = React.lazy(() =>\n import('@duck-docs/components/layouts/command-menu').then((m) => ({ default: m.CommandMenu })),\n)\nconst MobileNav = React.lazy(() => import('@duck-docs/components/mobile-nav').then((m) => ({ default: m.MobileNav })))\n\ntype FontPreset = 'mono-italic' | 'mono-normal' | 'sans-normal' | 'sans-italic' | 'serif-normal' | 'serif-italic'\nconst FONT_PRESET_STORAGE_KEY = 'fontPresetV6'\n\nconst DEFAULT_FONT_PRESET: FontPreset = 'mono-normal'\n\nconst FONT_PRESET_OPTIONS: Array<{ label: string; value: FontPreset }> = [\n { label: 'JetBrains Mono Nerd Italic', value: 'mono-italic' },\n { label: 'JetBrains Mono Nerd Regular', value: 'mono-normal' },\n { label: 'Inter Regular', value: 'sans-normal' },\n { label: 'Inter Italic', value: 'sans-italic' },\n { label: 'Inria Serif Regular', value: 'serif-normal' },\n { label: 'Inria Serif Italic', value: 'serif-italic' },\n]\n\nconst VALID_FONT_PRESETS = new Set<FontPreset>(FONT_PRESET_OPTIONS.map((option) => option.value))\n\nfunction isFontPreset(value: unknown): value is FontPreset {\n return typeof value === 'string' && VALID_FONT_PRESETS.has(value as FontPreset)\n}\n\nfunction applyFontPreset(preset: FontPreset) {\n const family = preset.startsWith('sans')\n ? 'var(--font-sans-font, \"Inter\"), ui-sans-serif, system-ui, sans-serif'\n : preset.startsWith('serif')\n ? 'var(--font-serif-font, \"Inria Serif\"), Georgia, \"Times New Roman\", serif'\n : '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'\n const familyVar = preset.startsWith('sans')\n ? '--font-sans-font'\n : preset.startsWith('serif')\n ? '--font-serif-font'\n : '--font-mono-font'\n const style = preset.endsWith('italic') ? 'italic' : 'normal'\n\n document.documentElement.setAttribute('data-font-preset', preset)\n const warmUpFont = () => {\n if (!document.fonts?.load) {\n return\n }\n try {\n const familyToken = getComputedStyle(document.documentElement).getPropertyValue(familyVar).trim()\n if (!familyToken) {\n return\n }\n const stylePrefix = style === 'italic' ? 'italic ' : ''\n void document.fonts.load(`${stylePrefix}400 1em ${familyToken}`)\n void document.fonts.load(`${stylePrefix}500 1em ${familyToken}`)\n void document.fonts.load(`${stylePrefix}700 1em ${familyToken}`)\n } catch {\n // Ignore font prewarm failures and let normal rendering fallback.\n }\n }\n\n document.documentElement.style.setProperty('--duck-font-family', family)\n document.documentElement.style.setProperty('--font-sans', family)\n document.documentElement.style.setProperty('--font-mono', family)\n document.documentElement.style.setProperty('font-family', family, 'important')\n document.documentElement.style.setProperty('font-style', style, 'important')\n document.documentElement.style.setProperty('--duck-font-style', style)\n if (document.body) {\n document.body.style.setProperty('font-family', family, 'important')\n document.body.style.setProperty('font-style', style, 'important')\n }\n warmUpFont()\n}\n\nexport function SiteHeader() {\n const siteConfig = useSiteConfig()\n\n return (\n <HeaderRoot className=\"border-border/40 border-b bg-background/40 backdrop-blur-md supports-[backdrop-filter]:bg-transparent\">\n <HeaderContainer>\n <MainNav />\n <React.Suspense fallback={null}>\n <MobileNav />\n </React.Suspense>\n <div className=\"flex flex-1 items-center justify-between space-x-2 md:justify-end\">\n <div className=\"w-full flex-1 md:w-auto md:flex-none\">\n <React.Suspense\n fallback={\n <div\n className={cn(\n buttonVariants({ size: 'sm', variant: 'outline' }),\n 'relative h-8 w-full bg-muted/50 text-muted-foreground text-sm shadow-none md:w-40 lg:w-64',\n )}>\n <span className=\"hidden lg:inline-flex\">Search documentation...</span>\n <span className=\"inline-flex lg:hidden\">Search...</span>\n </div>\n }>\n <CommandMenu />\n </React.Suspense>\n </div>\n <nav aria-label=\"Social and settings\" className=\"flex items-center\">\n <GitHubStarsButton />\n <FontStyleButton />\n {siteConfig.links?.discord ? (\n <Link\n aria-label=\"Discord (opens in a new tab)\"\n href={siteConfig.links.discord}\n rel=\"noreferrer\"\n target=\"_blank\">\n <div\n className={cn(\n buttonVariants({\n size: 'icon',\n variant: 'ghost',\n }),\n )}>\n <svg\n aria-hidden=\"true\"\n className=\"size-4\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.095 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z\" />\n </svg>\n </div>\n </Link>\n ) : null}\n {siteConfig.links?.twitter ? (\n <Link\n aria-label=\"Twitter (opens in a new tab)\"\n href={siteConfig.links.twitter}\n rel=\"noreferrer\"\n target=\"_blank\">\n <div\n className={cn(\n buttonVariants({\n size: 'icon',\n variant: 'ghost',\n }),\n )}>\n <Twitter aria-hidden=\"true\" />\n </div>\n </Link>\n ) : null}\n <ModeSwitcher />\n </nav>\n </div>\n </HeaderContainer>\n </HeaderRoot>\n )\n}\n\nfunction GitHubStarsButton() {\n const [stars, setStars] = React.useState<number | null>(null)\n const siteConfig = useSiteConfig()\n const repoFromUrl = siteConfig.links?.github?.replace('https://github.com/', '').replace(/\\/$/, '')\n const repo = siteConfig.githubRepo ?? repoFromUrl\n\n React.useEffect(() => {\n async function fetchStars() {\n try {\n if (!repo) {\n return\n }\n const res = await fetch(`https://api.github.com/repos/${repo}`)\n if (!res.ok) return\n const data = await res.json()\n if (typeof data.stargazers_count === 'number') {\n setStars(data.stargazers_count)\n }\n } catch (err) {\n console.error('Failed to fetch stars:', err)\n }\n }\n fetchStars()\n }, [])\n\n if (!siteConfig.links?.github) {\n return null\n }\n\n return (\n <Link\n aria-label=\"GitHub (opens in a new tab)\"\n href={siteConfig.links.github}\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <div\n className={cn(\n buttonVariants({\n className: 'size-auto h-8 w-16 font-medium text-sm',\n size: 'icon',\n variant: 'ghost',\n }),\n )}>\n <Github aria-hidden=\"true\" />\n {stars !== null ? stars.toLocaleString() : '...'}\n </div>\n </Link>\n )\n}\nconst fontPresetAtom = atomWithStorage<FontPreset>(FONT_PRESET_STORAGE_KEY, DEFAULT_FONT_PRESET)\n\nexport function FontStyleButton() {\n const [fontPreset, setFontPreset] = useAtom(fontPresetAtom)\n\n React.useEffect(() => {\n try {\n const hasNewPreset = localStorage.getItem(FONT_PRESET_STORAGE_KEY) !== null\n if (hasNewPreset) {\n return\n }\n\n const rawV5Preset = localStorage.getItem('fontPresetV5')\n if (rawV5Preset) {\n const v5Preset = JSON.parse(rawV5Preset)\n const migratedPreset: FontPreset = isFontPreset(v5Preset)\n ? (String(v5Preset).replace('-italic', '-normal') as FontPreset)\n : DEFAULT_FONT_PRESET\n setFontPreset(migratedPreset)\n return\n }\n\n const rawV2Preset = localStorage.getItem('fontPresetV2')\n if (rawV2Preset) {\n const v2Preset = JSON.parse(rawV2Preset)\n const migratedPreset: FontPreset =\n isFontPreset(v2Preset) && v2Preset.startsWith('mono') ? v2Preset : DEFAULT_FONT_PRESET\n setFontPreset(migratedPreset)\n return\n }\n\n const rawOldPreset = localStorage.getItem('fontPreset')\n if (rawOldPreset) {\n const oldPreset = JSON.parse(rawOldPreset)\n const migratedPreset: FontPreset =\n isFontPreset(oldPreset) && oldPreset.startsWith('mono') ? oldPreset : DEFAULT_FONT_PRESET\n setFontPreset(migratedPreset)\n return\n }\n\n const rawLegacyType = localStorage.getItem('fontType')\n if (rawLegacyType) {\n const legacyType = JSON.parse(rawLegacyType)\n const migratedPreset: FontPreset = legacyType === 'mono' ? 'mono-normal' : DEFAULT_FONT_PRESET\n setFontPreset(migratedPreset)\n }\n } catch {\n // Ignore legacy migration issues and keep defaults.\n }\n }, [setFontPreset])\n\n React.useEffect(() => {\n if (!isFontPreset(fontPreset)) {\n setFontPreset(DEFAULT_FONT_PRESET)\n return\n }\n applyFontPreset(fontPreset)\n }, [fontPreset, setFontPreset])\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n aria-label=\"Font and style\"\n className={cn(buttonVariants({ size: 'icon', variant: 'ghost' }), 'size-8')}\n type=\"button\">\n <Type aria-hidden=\"true\" className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-60\">\n <DropdownMenuRadioGroup\n onValueChange={(value) => {\n if (!isFontPreset(value)) {\n return\n }\n setFontPreset(value)\n applyFontPreset(value)\n }}\n value={fontPreset}>\n {FONT_PRESET_OPTIONS.map((option) => (\n <DropdownMenuRadioItem\n key={option.value}\n onSelect={() => {\n setFontPreset(option.value)\n applyFontPreset(option.value)\n }}\n value={option.value}>\n {option.label}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { HeaderBrand, HeaderContainer, HeaderRoot, HeaderSection } from './header-shell'\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as react_jsx_runtime23 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/layouts/site-header.d.ts
|
|
4
|
+
declare function SiteHeader(): react_jsx_runtime23.JSX.Element;
|
|
5
|
+
declare function FontStyleButton(): react_jsx_runtime23.JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { SiteHeader as n, FontStyleButton as t };
|
|
8
|
+
//# sourceMappingURL=site-header-m-AqO8bm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-header-m-AqO8bm.d.ts","names":[],"sources":["../src/components/layouts/site-header.tsx"],"sourcesContent":[],"mappings":";;;iBA2FgB,UAAA,CAAA,GAAU,mBAAA,CAAA,GAAA,CAAA;iBAiIV,eAAA,CAAA,GAAe,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e,r as t}from"./slot-B-X2-pKU-DOhFF3E_.js";import{a as n,d as r,f as i,i as a,l as o,n as s,o as c,p as l,r as u,t as d,u as f}from"./portal-BNuCvTAR-DDrsnIMA.js";import{t as p}from"./direction-B-anGbxM-BdqxtlGV.js";import{a as m,i as h,n as g,r as _,t as v}from"./arrow-CU5T6t_D-BA13FgoC.js";import{t as y}from"./create-collection-S3CvffX1-DA20ZU15.js";import{i as b,n as x,r as S,t as C}from"./list-navigation-LJg-1TD2-DsfZPowW.js";import{n as w}from"./visibility-hidden-CAHx9RLp-CN32k1Im.js";import{t as T}from"./use-config-CkoOe8Fw.js";import{t as E}from"./registry-styles-DwoJ9Qa9.js";import{cn as D}from"@gentleduck/libs/cn";import*as O from"react";import{Fragment as k,jsx as A,jsxs as j}from"react/jsx-runtime";import{Check as M,ChevronDown as N,ChevronUp as ee}from"lucide-react";import*as P from"react-dom";import{hideOthers as F}from"aria-hidden";import{RemoveScroll as I}from"react-remove-scroll";function L(e){let t=O.useRef({value:e,previous:e});return O.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const te=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ne=[` `,`Enter`],R=`Select`,[z,B,re]=y(R),[V,ie]=o(R,[re,h]),H=h(),[U,W]=V(R),[G,ae]=V(R),K=`SelectContent`,[oe,q]=V(K),[se,J]=V(K,{}),[ce,Y]=V(`SelectItem`),[X,le]=V(`SelectGroup`),ue=e=>{let{__scopeSelect:t,children:n,open:i,defaultOpen:a,onOpenChange:o,value:s,defaultValue:c,onValueChange:l,dir:u,name:d,autoComplete:h,disabled:g,required:_,form:v}=e,y=H(t),[b,x]=O.useState(null),[S,C]=O.useState(null),[w,T]=O.useState(!1),E=p(u),[D,k]=r({prop:i,defaultProp:a??!1,onChange:o,caller:R}),[M,N]=r({prop:s,defaultProp:c,onChange:l,caller:R}),ee=O.useRef(null),P=b?v||!!b.closest(`form`):!0,[F,I]=O.useState(new Set),L=Array.from(F).map(e=>e.props.value).join(`;`);return A(m,{...y,children:j(U,{required:_,scope:t,trigger:b,onTriggerChange:x,valueNode:S,onValueNodeChange:C,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:f(),value:M,onValueChange:N,open:D,onOpenChange:k,dir:E,triggerPointerDownPosRef:ee,disabled:g,children:[A(z.Provider,{scope:t,children:A(G,{scope:e.__scopeSelect,onNativeOptionAdd:O.useCallback(e=>{I(t=>new Set(t).add(e))},[]),onNativeOptionRemove:O.useCallback(e=>{I(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),P?j(de,{"aria-hidden":!0,required:_,tabIndex:-1,name:d,autoComplete:h,value:M,onChange:e=>N(e.target.value),disabled:g,form:v,children:[M===void 0?A(`option`,{value:``}):null,Array.from(F)]},L):null]})})};ue.displayName=R;const de=O.forwardRef((t,n)=>{let{value:r,...i}=t,a=O.useRef(null),o=e(n,a),s=L(r);return O.useEffect(()=>{let e=a.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(s!==r&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[s,r]),A(w,{asChild:!0,children:A(`select`,{...i,ref:o,defaultValue:r})})});de.displayName=`BubbleSelect`;const fe=`SelectArrow`,pe=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=H(n),a=W(fe,n),o=q(fe,n);return a.open&&o.position===`popper`?A(v,{"data-slot":`select-arrow`,...i,...r,ref:t}):null});pe.displayName=fe;function me(e){return e===``||e===void 0}function he(e,[t,n]){return Math.min(n,Math.max(t,e))}const Z=`SelectContent`,ge=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,a=W(Z,e.__scopeSelect),[o,c]=O.useState();return i(()=>{c(new DocumentFragment)},[]),j(k,{children:[!a.open&&o?P.createPortal(A(oe,{scope:e.__scopeSelect,children:A(z.Slot,{scope:e.__scopeSelect,children:A(`div`,{children:r.children})})}),o):null,A(s,{present:n||a.open,children:A(ve,{...r,ref:t})})]})});ge.displayName=Z;const _e=t(`SelectContent.RemoveScroll`),ve=O.forwardRef((t,r)=>{let{__scopeSelect:i,position:o=`item-aligned`,onCloseAutoFocus:s,onEscapeKeyDown:l,onPointerDownOutside:d,side:f,sideOffset:p,align:m,alignOffset:h,arrowPadding:g,collisionBoundary:_,collisionPadding:v,sticky:y,hideWhenDetached:w,avoidCollisions:T,...E}=t,D=W(Z,i),[k,j]=O.useState(null),[M,N]=O.useState(null),ee=e(r,e=>j(e)),[P,L]=O.useState(null),[te,ne]=O.useState(null),R=B(i),[z,re]=O.useState(!1),V=O.useRef(!1);O.useEffect(()=>{if(k)return F(k)},[k]),u();let ie=O.useCallback(e=>{let[t,...n]=R().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&M&&(M.scrollTop=0),n===r&&M&&(M.scrollTop=M.scrollHeight),n?.focus(),document.activeElement!==i))return},[R,M]),H=O.useCallback(()=>ie([P,k]),[ie,P,k]);O.useEffect(()=>{z&&H()},[z,H]);let{onOpenChange:U,triggerPointerDownPosRef:G}=D;O.useEffect(()=>{if(k){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():k.contains(n.target)||U(!1),document.removeEventListener(`pointermove`,t),G.current=null};return G.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[k,U,G]),O.useEffect(()=>{let e=()=>U(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[U]);let[ae,K,q]=x({getItems:()=>R().filter(e=>!e.disabled),getItemElement:e=>e.ref.current,getItemTextValue:e=>e.textValue||(e.ref.current?.textContent??``).trim(),onMatch:e=>{let t=e.ref.current;t&&setTimeout(()=>t.focus())}}),se=b({onNavigate:q}),J=O.useCallback((e,t,n)=>{let r=!V.current&&!n;(D.value!==void 0&&D.value===t||r)&&(L(e),r&&(V.current=!0))},[D.value]),ce=O.useCallback(()=>k?.focus(),[k]),Y=O.useCallback((e,t,n)=>{let r=!V.current&&!n;(D.value!==void 0&&D.value===t||r)&&ne(e)},[D.value]),X=o===`popper`?be:ye,le=X===be?{side:f,sideOffset:p,align:m,alignOffset:h,arrowPadding:g,collisionBoundary:_,collisionPadding:v,sticky:y,hideWhenDetached:w,avoidCollisions:T}:{};return A(oe,{scope:i,content:k,viewport:M,onViewportChange:N,itemRefCallback:J,selectedItem:P,onItemLeave:ce,itemTextRefCallback:Y,focusSelectedItem:H,selectedItemText:te,position:o,isPositioned:z,searchRef:ae,allowTextPortal:D.open,children:A(I,{as:_e,allowPinchZoom:!0,children:A(a,{asChild:!0,trapped:D.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:c(s,e=>{D.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:A(n,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>D.onOpenChange(!1),children:A(X,{"data-slot":`select-content`,role:`listbox`,id:D.contentId,"data-state":D.open?`open`:`closed`,dir:D.dir,onContextMenu:e=>e.preventDefault(),...E,...le,onPlaced:()=>re(!0),ref:ee,style:{display:`flex`,flexDirection:`column`,outline:`none`,...E.style},onKeyDown:c(E.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;e.key===`Tab`&&e.preventDefault();let n=R().filter(e=>!e.disabled).map(e=>e.ref.current);if(!se(e,n)&&(!t&&e.key.length===1&&K(e.key),S.includes(e.key))){let t=C(n,e.key,e.target);setTimeout(()=>ie(t)),e.preventDefault()}})})})})})})});ve.displayName=`SelectContentImpl`;const ye=O.forwardRef((t,n)=>{let{__scopeSelect:r,onPlaced:a,...o}=t,s=W(Z,r),c=q(Z,r),[u,d]=O.useState(null),[f,p]=O.useState(null),m=e(n,e=>p(e)),h=B(r),g=O.useRef(!1),_=O.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=c,S=O.useCallback(()=>{if(s.trigger&&s.valueNode&&u&&f&&v&&y&&b){let e=s.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=s.valueNode.getBoundingClientRect(),r=b.getBoundingClientRect();if(s.dir!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=he(a,[10,Math.max(10,l-c)]);u.style.minWidth=s+`px`,u.style.left=d+`px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=he(a,[10,Math.max(10,l-c)]);u.style.minWidth=s+`px`,u.style.right=d+`px`}let i=h(),o=window.innerHeight-20,c=v.scrollHeight,l=window.getComputedStyle(f),d=parseInt(l.borderTopWidth,10),p=parseInt(l.paddingTop,10),m=parseInt(l.borderBottomWidth,10),_=parseInt(l.paddingBottom,10),x=d+p+c+_+m,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(v),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=o-E,O=y.offsetHeight/2,k=y.offsetTop+O,A=d+p+k,j=x-A;if(A<=E){let e=i.length>0&&y===i[i.length-1].ref.current;u.style.bottom=`0px`;let t=f.clientHeight-v.offsetTop-v.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+m);u.style.height=n+`px`}else{let e=i.length>0&&y===i[0].ref.current;u.style.top=`0px`;let t=Math.max(E,d+v.offsetTop+(e?w:0)+O)+j;u.style.height=t+`px`,v.scrollTop=A-E+v.offsetTop}u.style.margin=`10px 0`,u.style.minHeight=S+`px`,u.style.maxHeight=o+`px`,a?.(),requestAnimationFrame(()=>g.current=!0)}},[h,s.trigger,s.valueNode,u,f,v,y,b,s.dir,a]);i(()=>S(),[S]);let[C,w]=O.useState();return i(()=>{f&&w(window.getComputedStyle(f).zIndex)},[f]),A(se,{scope:r,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:O.useCallback(e=>{e&&_.current===!0&&(S(),x?.(),_.current=!1)},[S,x]),children:A(`div`,{ref:d,dir:s.dir,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:A(l.div,{"data-slot":`select-item-aligned-position`,...o,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...o.style}})})})});ye.displayName=`SelectItemAlignedPosition`;const be=O.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=10,...a}=e,o=H(n);return A(g,{"data-slot":`select-popper-position`,...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--gentleduck-select-content-transform-origin":`var(--gentleduck-popper-transform-origin)`,"--gentleduck-select-content-available-width":`var(--gentleduck-popper-available-width)`,"--gentleduck-select-content-available-height":`var(--gentleduck-popper-available-height)`,"--gentleduck-select-trigger-width":`var(--gentleduck-popper-anchor-width)`,"--gentleduck-select-trigger-height":`var(--gentleduck-popper-anchor-height)`}})});be.displayName=`SelectPopperPosition`;const xe=`SelectGroup`,Se=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(xe,n),a=f();return A(X,{scope:n,id:a,children:A(l.div,{"data-slot":`select-group`,role:`group`,"aria-labelledby":a,dir:i.dir,...r,ref:t})})});Se.displayName=xe;const Ce=`SelectIcon`,we=O.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e,a=W(Ce,n);return A(l.span,{"data-slot":`select-icon`,"aria-hidden":!0,dir:a.dir,...i,ref:t,children:r||`▼`})});we.displayName=Ce;const Te=`SelectItem`,Ee=O.forwardRef((t,n)=>{let{__scopeSelect:r,value:i,disabled:a=!1,textValue:o,...s}=t,u=W(Te,r),d=q(Te,r),p=u.value===i,[m,h]=O.useState(o??``),[g,_]=O.useState(!1),v=e(n,e=>d.itemRefCallback?.(e,i,a)),y=f(),b=O.useRef(`touch`),x=()=>{a||(u.onValueChange(i),u.onOpenChange(!1))};if(i===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return A(ce,{scope:r,...O.useMemo(()=>({value:i,disabled:a,textId:y,isSelected:p,onItemTextChange:e=>{h(t=>t||(e?.textContent??``).trim())}}),[i,a,y,p]),children:A(z.ItemSlot,{scope:r,value:i,disabled:a,textValue:m,children:A(l.div,{"data-slot":`select-item`,role:`option`,"aria-labelledby":y,dir:u.dir,"data-highlighted":g?``:void 0,"aria-selected":p&&g,"data-state":p?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...s,ref:v,onFocus:c(s.onFocus,()=>_(!0)),onBlur:c(s.onBlur,()=>_(!1)),onClick:c(s.onClick,()=>{b.current!==`mouse`&&x()}),onPointerUp:c(s.onPointerUp,()=>{b.current===`mouse`&&x()}),onPointerDown:c(s.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:c(s.onPointerMove,e=>{b.current=e.pointerType,a?d.onItemLeave?.():b.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:c(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:c(s.onKeyDown,e=>{d.searchRef?.current!==``&&e.key===` `||(ne.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})});Ee.displayName=Te;const De=`SelectItemIndicator`,Oe=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(De,n);return Y(De,n).isSelected?A(l.span,{"data-slot":`select-item-indicator`,"aria-hidden":!0,dir:i.dir,...r,ref:t}):null});Oe.displayName=De;const Q=`SelectItemText`,ke=O.forwardRef((t,n)=>{let{__scopeSelect:r,className:a,style:o,...s}=t,c=W(Q,r),u=q(Q,r),d=Y(Q,r),f=ae(Q,r),[p,m]=O.useState(null),h=e(n,e=>m(e),d.onItemTextChange,e=>u.itemTextRefCallback?.(e,d.value,d.disabled)),g=p?.textContent,_=O.useMemo(()=>A(`option`,{value:d.value,disabled:d.disabled,children:g},d.value),[d.disabled,d.value,g]),{onNativeOptionAdd:v,onNativeOptionRemove:y}=f;return i(()=>(v(_),()=>y(_)),[v,y,_]),j(k,{children:[A(l.span,{"data-slot":`select-item-text`,id:d.textId,dir:c.dir,...s,ref:h}),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren&&u.allowTextPortal!==!1?P.createPortal(s.children,c.valueNode):null]})});ke.displayName=Q;const Ae=`SelectLabel`,je=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(Ae,n),a=le(Ae,n);return A(l.div,{"data-slot":`select-label`,id:a.id,dir:i.dir,...r,ref:t})});je.displayName=Ae;const Me=e=>A(d,{asChild:!0,...e});Me.displayName=`SelectPortal`;const Ne=`SelectScrollUpButton`,Pe=O.forwardRef((t,n)=>{let r=q(Ne,t.__scopeSelect),a=J(Ne,t.__scopeSelect),[o,s]=O.useState(!1),c=e(n,a.onScrollButtonChange);return i(()=>{if(r.viewport&&r.isPositioned){let e=r.viewport,t=()=>{s(e.scrollTop>0)};return t(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[r.viewport,r.isPositioned]),o?A(Le,{...t,"data-slot":`select-scroll-up-button`,ref:c,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Pe.displayName=Ne;const Fe=`SelectScrollDownButton`,Ie=O.forwardRef((t,n)=>{let r=q(Fe,t.__scopeSelect),a=J(Fe,t.__scopeSelect),[o,s]=O.useState(!1),c=e(n,a.onScrollButtonChange);return i(()=>{if(r.viewport&&r.isPositioned){let e=r.viewport,t=()=>{let t=e.scrollHeight-e.clientHeight;s(Math.ceil(e.scrollTop)<t)};return t(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[r.viewport,r.isPositioned]),o?A(Le,{...t,"data-slot":`select-scroll-down-button`,ref:c,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Ie.displayName=Fe;const Le=O.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...a}=e,o=W(`SelectScrollButton`,n),s=q(`SelectScrollButton`,n),u=O.useRef(null),d=B(n),f=O.useCallback(()=>{u.current!==null&&(window.clearInterval(u.current),u.current=null)},[]);return O.useEffect(()=>()=>f(),[f]),i(()=>{d().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[d]),A(l.div,{"data-slot":`select-scroll-button`,"aria-hidden":!0,dir:o.dir,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:c(a.onPointerDown,()=>{u.current===null&&(u.current=window.setInterval(r,50))}),onPointerMove:c(a.onPointerMove,()=>{s.onItemLeave?.(),u.current===null&&(u.current=window.setInterval(r,50))}),onPointerLeave:c(a.onPointerLeave,()=>{f()})})});Le.displayName=`SelectScrollButtonImpl`;const Re=`SelectSeparator`,ze=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(Re,n);return A(l.div,{"data-slot":`select-separator`,"aria-hidden":!0,dir:i.dir,...r,ref:t})});ze.displayName=Re;const Be=`SelectTrigger`,Ve=O.forwardRef((t,n)=>{let{__scopeSelect:r,disabled:i=!1,...a}=t,o=H(r),s=W(Be,r),u=s.disabled||i,d=e(n,s.onTriggerChange),f=B(r),p=O.useRef(`touch`),[m,h,g]=x({getItems:()=>f().filter(e=>!e.disabled),getItemElement:e=>e.ref.current,getItemTextValue:e=>e.textValue||(e.ref.current?.textContent??``).trim(),getCurrentItem:e=>e.find(e=>e.value===s.value),onMatch:e=>{s.onValueChange(e.value)}}),v=e=>{u||(s.onOpenChange(!0),g()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return A(_,{asChild:!0,...o,children:A(l.button,{"data-slot":`select-trigger`,type:`button`,role:`combobox`,"aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":`none`,dir:s.dir,"data-state":s.open?`open`:`closed`,disabled:u,"data-disabled":u?``:void 0,"data-placeholder":me(s.value)?``:void 0,...a,ref:d,onClick:c(a.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&v(e)}),onPointerDown:c(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(v(e),e.preventDefault())}),onKeyDown:c(a.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&te.includes(e.key)&&(v(),e.preventDefault())})})})});Ve.displayName=Be;const He=`SelectValue`,Ue=O.forwardRef((t,n)=>{let{__scopeSelect:r,className:a,style:o,children:s,placeholder:c=``,...u}=t,d=W(He,r),{onValueNodeHasChildrenChange:f}=d,p=s!==void 0,m=e(n,d.onValueNodeChange);return i(()=>{f(p)},[f,p]),A(l.span,{"data-slot":`select-value`,...u,ref:m,dir:d.dir,style:{pointerEvents:`none`},children:me(d.value)?A(k,{children:c}):s})});Ue.displayName=He;const $=`SelectViewport`,We=O.forwardRef((t,n)=>{let{__scopeSelect:r,nonce:i,...a}=t,o=W($,r),s=q($,r),u=J($,r),d=e(n,s.onViewportChange),f=O.useRef(0);return j(k,{children:[A(`style`,{dangerouslySetInnerHTML:{__html:`[data-slot="select-viewport"]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-slot="select-viewport"]::-webkit-scrollbar{display:none}`},nonce:i}),A(z.Slot,{scope:r,children:A(l.div,{"data-slot":`select-viewport`,role:`presentation`,dir:o.dir,...a,ref:d,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:c(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=u;if(r?.current&&n){let e=Math.abs(f.current-t.scrollTop);if(e>0){let r=window.innerHeight-20,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}f.current=t.scrollTop})})})]})});We.displayName=$;const Ge=ue,Ke=Ue,qe=O.forwardRef(({className:e,children:t,...n},r)=>j(Ve,{ref:r,"data-slot":`select-trigger`,className:D(`flex h-9 min-w-32 items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-muted-foreground [&>span]:line-clamp-1`,e),...n,children:[t,A(we,{asChild:!0,children:A(N,{"aria-hidden":`true`,className:`size-4 opacity-50`})})]}));qe.displayName=Ve.displayName;const Je=O.forwardRef(({className:e,...t},n)=>A(Pe,{ref:n,className:D(`flex cursor-default items-center justify-center py-1`,e),...t,children:A(ee,{"aria-hidden":`true`,className:`size-4`})}));Je.displayName=Pe.displayName;const Ye=O.forwardRef(({className:e,...t},n)=>A(Ie,{ref:n,className:D(`flex cursor-default items-center justify-center py-1`,e),...t,children:A(N,{"aria-hidden":`true`,className:`size-4`})}));Ye.displayName=Ie.displayName;const Xe=O.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>A(Me,{children:j(ge,{ref:i,className:D(`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--gentleduck-select-content-available-height) min-w-32 origin-(--gentleduck-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in`,n===`popper`&&`data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1`,`transition-all transition-discrete duration-[200ms,150ms] ease-(--duck-motion-ease)`,e),position:n,...r,children:[A(Je,{}),A(We,{className:D(`p-1`,n===`popper`&&`h-(--gentleduck-select-trigger-height) w-full min-w-(--gentleduck-select-trigger-width)`),children:t}),A(Ye,{})]})}));Xe.displayName=ge.displayName;const Ze=O.forwardRef(({className:e,...t},n)=>A(je,{ref:n,className:D(`px-2 py-1.5 font-semibold text-sm`,e),...t}));Ze.displayName=je.displayName;const Qe=O.forwardRef(({className:e,children:t,...n},r)=>j(Ee,{ref:r,className:D(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-2 pe-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50`,e),...n,children:[A(`span`,{className:`absolute end-2 flex size-3.5 items-center justify-center`,children:A(Oe,{children:A(M,{"aria-hidden":`true`,className:`size-4`})})}),A(ke,{children:t})]}));Qe.displayName=Ee.displayName;const $e=O.forwardRef(({className:e,...t},n)=>A(ze,{ref:n,className:D(`-mx-1 my-1 h-px bg-muted`,e),...t}));$e.displayName=ze.displayName;function et({className:e,...t}){let[n,r]=T();return j(Ge,{onValueChange:(e=>r({...n,style:e})),value:n.style,children:[j(qe,{"aria-label":`Style`,className:D(`h-7 w-[145px] text-xs [&_svg]:h-4 [&_svg]:w-4`,e),...t,children:[A(`span`,{className:`text-muted-foreground`,children:`Style: `}),A(Ke,{placeholder:`Select style`})]}),A(Xe,{children:E.map(e=>A(Qe,{className:`text-xs`,value:e.name,children:e.label},e.name))})]})}export{et as t};
|
|
2
|
-
//# sourceMappingURL=style-switcher
|
|
1
|
+
import{o as e,r as t}from"./slot-B-X2-pKU-DOhFF3E_.js";import{a as n,d as r,f as i,i as a,l as o,n as s,o as c,p as l,r as u,t as d,u as f}from"./portal-BNuCvTAR-DDrsnIMA.js";import{t as p}from"./direction-B-anGbxM-BdqxtlGV.js";import{a as m,i as h,n as g,r as _,t as v}from"./arrow-CU5T6t_D-BA13FgoC.js";import{t as y}from"./create-collection-S3CvffX1-DA20ZU15.js";import{i as b,n as x,r as S,t as C}from"./list-navigation-LJg-1TD2-DsfZPowW.js";import{n as w}from"./visibility-hidden-CAHx9RLp-DoPUpniv.js";import{t as T}from"./use-config-LFMLgvtw.js";import{t as E}from"./registry-styles-gTcj4DCR.js";import{cn as D}from"@gentleduck/libs/cn";import*as O from"react";import{Fragment as k,jsx as A,jsxs as j}from"react/jsx-runtime";import{Check as M,ChevronDown as N,ChevronUp as ee}from"lucide-react";import*as P from"react-dom";import{hideOthers as F}from"aria-hidden";import{RemoveScroll as I}from"react-remove-scroll";function L(e){let t=O.useRef({value:e,previous:e});return O.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const te=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ne=[` `,`Enter`],R=`Select`,[z,B,re]=y(R),[V,ie]=o(R,[re,h]),H=h(),[U,W]=V(R),[G,ae]=V(R),K=`SelectContent`,[oe,q]=V(K),[se,J]=V(K,{}),[ce,Y]=V(`SelectItem`),[X,le]=V(`SelectGroup`),ue=e=>{let{__scopeSelect:t,children:n,open:i,defaultOpen:a,onOpenChange:o,value:s,defaultValue:c,onValueChange:l,dir:u,name:d,autoComplete:h,disabled:g,required:_,form:v}=e,y=H(t),[b,x]=O.useState(null),[S,C]=O.useState(null),[w,T]=O.useState(!1),E=p(u),[D,k]=r({prop:i,defaultProp:a??!1,onChange:o,caller:R}),[M,N]=r({prop:s,defaultProp:c,onChange:l,caller:R}),ee=O.useRef(null),P=b?v||!!b.closest(`form`):!0,[F,I]=O.useState(new Set),L=Array.from(F).map(e=>e.props.value).join(`;`);return A(m,{...y,children:j(U,{required:_,scope:t,trigger:b,onTriggerChange:x,valueNode:S,onValueNodeChange:C,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:f(),value:M,onValueChange:N,open:D,onOpenChange:k,dir:E,triggerPointerDownPosRef:ee,disabled:g,children:[A(z.Provider,{scope:t,children:A(G,{scope:e.__scopeSelect,onNativeOptionAdd:O.useCallback(e=>{I(t=>new Set(t).add(e))},[]),onNativeOptionRemove:O.useCallback(e=>{I(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),P?j(de,{"aria-hidden":!0,required:_,tabIndex:-1,name:d,autoComplete:h,value:M,onChange:e=>N(e.target.value),disabled:g,form:v,children:[M===void 0?A(`option`,{value:``}):null,Array.from(F)]},L):null]})})};ue.displayName=R;const de=O.forwardRef((t,n)=>{let{value:r,...i}=t,a=O.useRef(null),o=e(n,a),s=L(r);return O.useEffect(()=>{let e=a.current,t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(s!==r&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[s,r]),A(w,{asChild:!0,children:A(`select`,{...i,ref:o,defaultValue:r})})});de.displayName=`BubbleSelect`;const fe=`SelectArrow`,pe=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=H(n),a=W(fe,n),o=q(fe,n);return a.open&&o.position===`popper`?A(v,{"data-slot":`select-arrow`,...i,...r,ref:t}):null});pe.displayName=fe;function me(e){return e===``||e===void 0}function he(e,[t,n]){return Math.min(n,Math.max(t,e))}const Z=`SelectContent`,ge=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,a=W(Z,e.__scopeSelect),[o,c]=O.useState();return i(()=>{c(new DocumentFragment)},[]),j(k,{children:[!a.open&&o?P.createPortal(A(oe,{scope:e.__scopeSelect,children:A(z.Slot,{scope:e.__scopeSelect,children:A(`div`,{children:r.children})})}),o):null,A(s,{present:n||a.open,children:A(ve,{...r,ref:t})})]})});ge.displayName=Z;const _e=t(`SelectContent.RemoveScroll`),ve=O.forwardRef((t,r)=>{let{__scopeSelect:i,position:o=`item-aligned`,onCloseAutoFocus:s,onEscapeKeyDown:l,onPointerDownOutside:d,side:f,sideOffset:p,align:m,alignOffset:h,arrowPadding:g,collisionBoundary:_,collisionPadding:v,sticky:y,hideWhenDetached:w,avoidCollisions:T,...E}=t,D=W(Z,i),[k,j]=O.useState(null),[M,N]=O.useState(null),ee=e(r,e=>j(e)),[P,L]=O.useState(null),[te,ne]=O.useState(null),R=B(i),[z,re]=O.useState(!1),V=O.useRef(!1);O.useEffect(()=>{if(k)return F(k)},[k]),u();let ie=O.useCallback(e=>{let[t,...n]=R().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&M&&(M.scrollTop=0),n===r&&M&&(M.scrollTop=M.scrollHeight),n?.focus(),document.activeElement!==i))return},[R,M]),H=O.useCallback(()=>ie([P,k]),[ie,P,k]);O.useEffect(()=>{z&&H()},[z,H]);let{onOpenChange:U,triggerPointerDownPosRef:G}=D;O.useEffect(()=>{if(k){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():k.contains(n.target)||U(!1),document.removeEventListener(`pointermove`,t),G.current=null};return G.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[k,U,G]),O.useEffect(()=>{let e=()=>U(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[U]);let[ae,K,q]=x({getItems:()=>R().filter(e=>!e.disabled),getItemElement:e=>e.ref.current,getItemTextValue:e=>e.textValue||(e.ref.current?.textContent??``).trim(),onMatch:e=>{let t=e.ref.current;t&&setTimeout(()=>t.focus())}}),se=b({onNavigate:q}),J=O.useCallback((e,t,n)=>{let r=!V.current&&!n;(D.value!==void 0&&D.value===t||r)&&(L(e),r&&(V.current=!0))},[D.value]),ce=O.useCallback(()=>k?.focus(),[k]),Y=O.useCallback((e,t,n)=>{let r=!V.current&&!n;(D.value!==void 0&&D.value===t||r)&&ne(e)},[D.value]),X=o===`popper`?be:ye,le=X===be?{side:f,sideOffset:p,align:m,alignOffset:h,arrowPadding:g,collisionBoundary:_,collisionPadding:v,sticky:y,hideWhenDetached:w,avoidCollisions:T}:{};return A(oe,{scope:i,content:k,viewport:M,onViewportChange:N,itemRefCallback:J,selectedItem:P,onItemLeave:ce,itemTextRefCallback:Y,focusSelectedItem:H,selectedItemText:te,position:o,isPositioned:z,searchRef:ae,allowTextPortal:D.open,children:A(I,{as:_e,allowPinchZoom:!0,children:A(a,{asChild:!0,trapped:D.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:c(s,e=>{D.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:A(n,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>D.onOpenChange(!1),children:A(X,{"data-slot":`select-content`,role:`listbox`,id:D.contentId,"data-state":D.open?`open`:`closed`,dir:D.dir,onContextMenu:e=>e.preventDefault(),...E,...le,onPlaced:()=>re(!0),ref:ee,style:{display:`flex`,flexDirection:`column`,outline:`none`,...E.style},onKeyDown:c(E.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;e.key===`Tab`&&e.preventDefault();let n=R().filter(e=>!e.disabled).map(e=>e.ref.current);if(!se(e,n)&&(!t&&e.key.length===1&&K(e.key),S.includes(e.key))){let t=C(n,e.key,e.target);setTimeout(()=>ie(t)),e.preventDefault()}})})})})})})});ve.displayName=`SelectContentImpl`;const ye=O.forwardRef((t,n)=>{let{__scopeSelect:r,onPlaced:a,...o}=t,s=W(Z,r),c=q(Z,r),[u,d]=O.useState(null),[f,p]=O.useState(null),m=e(n,e=>p(e)),h=B(r),g=O.useRef(!1),_=O.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=c,S=O.useCallback(()=>{if(s.trigger&&s.valueNode&&u&&f&&v&&y&&b){let e=s.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=s.valueNode.getBoundingClientRect(),r=b.getBoundingClientRect();if(s.dir!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=he(a,[10,Math.max(10,l-c)]);u.style.minWidth=s+`px`,u.style.left=d+`px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=he(a,[10,Math.max(10,l-c)]);u.style.minWidth=s+`px`,u.style.right=d+`px`}let i=h(),o=window.innerHeight-20,c=v.scrollHeight,l=window.getComputedStyle(f),d=parseInt(l.borderTopWidth,10),p=parseInt(l.paddingTop,10),m=parseInt(l.borderBottomWidth,10),_=parseInt(l.paddingBottom,10),x=d+p+c+_+m,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(v),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=o-E,O=y.offsetHeight/2,k=y.offsetTop+O,A=d+p+k,j=x-A;if(A<=E){let e=i.length>0&&y===i[i.length-1].ref.current;u.style.bottom=`0px`;let t=f.clientHeight-v.offsetTop-v.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+m);u.style.height=n+`px`}else{let e=i.length>0&&y===i[0].ref.current;u.style.top=`0px`;let t=Math.max(E,d+v.offsetTop+(e?w:0)+O)+j;u.style.height=t+`px`,v.scrollTop=A-E+v.offsetTop}u.style.margin=`10px 0`,u.style.minHeight=S+`px`,u.style.maxHeight=o+`px`,a?.(),requestAnimationFrame(()=>g.current=!0)}},[h,s.trigger,s.valueNode,u,f,v,y,b,s.dir,a]);i(()=>S(),[S]);let[C,w]=O.useState();return i(()=>{f&&w(window.getComputedStyle(f).zIndex)},[f]),A(se,{scope:r,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:O.useCallback(e=>{e&&_.current===!0&&(S(),x?.(),_.current=!1)},[S,x]),children:A(`div`,{ref:d,dir:s.dir,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:A(l.div,{"data-slot":`select-item-aligned-position`,...o,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...o.style}})})})});ye.displayName=`SelectItemAlignedPosition`;const be=O.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=10,...a}=e,o=H(n);return A(g,{"data-slot":`select-popper-position`,...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--gentleduck-select-content-transform-origin":`var(--gentleduck-popper-transform-origin)`,"--gentleduck-select-content-available-width":`var(--gentleduck-popper-available-width)`,"--gentleduck-select-content-available-height":`var(--gentleduck-popper-available-height)`,"--gentleduck-select-trigger-width":`var(--gentleduck-popper-anchor-width)`,"--gentleduck-select-trigger-height":`var(--gentleduck-popper-anchor-height)`}})});be.displayName=`SelectPopperPosition`;const xe=`SelectGroup`,Se=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(xe,n),a=f();return A(X,{scope:n,id:a,children:A(l.div,{"data-slot":`select-group`,role:`group`,"aria-labelledby":a,dir:i.dir,...r,ref:t})})});Se.displayName=xe;const Ce=`SelectIcon`,we=O.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e,a=W(Ce,n);return A(l.span,{"data-slot":`select-icon`,"aria-hidden":!0,dir:a.dir,...i,ref:t,children:r||`▼`})});we.displayName=Ce;const Te=`SelectItem`,Ee=O.forwardRef((t,n)=>{let{__scopeSelect:r,value:i,disabled:a=!1,textValue:o,...s}=t,u=W(Te,r),d=q(Te,r),p=u.value===i,[m,h]=O.useState(o??``),[g,_]=O.useState(!1),v=e(n,e=>d.itemRefCallback?.(e,i,a)),y=f(),b=O.useRef(`touch`),x=()=>{a||(u.onValueChange(i),u.onOpenChange(!1))};if(i===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return A(ce,{scope:r,...O.useMemo(()=>({value:i,disabled:a,textId:y,isSelected:p,onItemTextChange:e=>{h(t=>t||(e?.textContent??``).trim())}}),[i,a,y,p]),children:A(z.ItemSlot,{scope:r,value:i,disabled:a,textValue:m,children:A(l.div,{"data-slot":`select-item`,role:`option`,"aria-labelledby":y,dir:u.dir,"data-highlighted":g?``:void 0,"aria-selected":p&&g,"data-state":p?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...s,ref:v,onFocus:c(s.onFocus,()=>_(!0)),onBlur:c(s.onBlur,()=>_(!1)),onClick:c(s.onClick,()=>{b.current!==`mouse`&&x()}),onPointerUp:c(s.onPointerUp,()=>{b.current===`mouse`&&x()}),onPointerDown:c(s.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:c(s.onPointerMove,e=>{b.current=e.pointerType,a?d.onItemLeave?.():b.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:c(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&d.onItemLeave?.()}),onKeyDown:c(s.onKeyDown,e=>{d.searchRef?.current!==``&&e.key===` `||(ne.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})});Ee.displayName=Te;const De=`SelectItemIndicator`,Oe=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(De,n);return Y(De,n).isSelected?A(l.span,{"data-slot":`select-item-indicator`,"aria-hidden":!0,dir:i.dir,...r,ref:t}):null});Oe.displayName=De;const Q=`SelectItemText`,ke=O.forwardRef((t,n)=>{let{__scopeSelect:r,className:a,style:o,...s}=t,c=W(Q,r),u=q(Q,r),d=Y(Q,r),f=ae(Q,r),[p,m]=O.useState(null),h=e(n,e=>m(e),d.onItemTextChange,e=>u.itemTextRefCallback?.(e,d.value,d.disabled)),g=p?.textContent,_=O.useMemo(()=>A(`option`,{value:d.value,disabled:d.disabled,children:g},d.value),[d.disabled,d.value,g]),{onNativeOptionAdd:v,onNativeOptionRemove:y}=f;return i(()=>(v(_),()=>y(_)),[v,y,_]),j(k,{children:[A(l.span,{"data-slot":`select-item-text`,id:d.textId,dir:c.dir,...s,ref:h}),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren&&u.allowTextPortal!==!1?P.createPortal(s.children,c.valueNode):null]})});ke.displayName=Q;const Ae=`SelectLabel`,je=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(Ae,n),a=le(Ae,n);return A(l.div,{"data-slot":`select-label`,id:a.id,dir:i.dir,...r,ref:t})});je.displayName=Ae;const Me=e=>A(d,{asChild:!0,...e});Me.displayName=`SelectPortal`;const Ne=`SelectScrollUpButton`,Pe=O.forwardRef((t,n)=>{let r=q(Ne,t.__scopeSelect),a=J(Ne,t.__scopeSelect),[o,s]=O.useState(!1),c=e(n,a.onScrollButtonChange);return i(()=>{if(r.viewport&&r.isPositioned){let e=r.viewport,t=()=>{s(e.scrollTop>0)};return t(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[r.viewport,r.isPositioned]),o?A(Le,{...t,"data-slot":`select-scroll-up-button`,ref:c,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Pe.displayName=Ne;const Fe=`SelectScrollDownButton`,Ie=O.forwardRef((t,n)=>{let r=q(Fe,t.__scopeSelect),a=J(Fe,t.__scopeSelect),[o,s]=O.useState(!1),c=e(n,a.onScrollButtonChange);return i(()=>{if(r.viewport&&r.isPositioned){let e=r.viewport,t=()=>{let t=e.scrollHeight-e.clientHeight;s(Math.ceil(e.scrollTop)<t)};return t(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[r.viewport,r.isPositioned]),o?A(Le,{...t,"data-slot":`select-scroll-down-button`,ref:c,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Ie.displayName=Fe;const Le=O.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...a}=e,o=W(`SelectScrollButton`,n),s=q(`SelectScrollButton`,n),u=O.useRef(null),d=B(n),f=O.useCallback(()=>{u.current!==null&&(window.clearInterval(u.current),u.current=null)},[]);return O.useEffect(()=>()=>f(),[f]),i(()=>{d().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[d]),A(l.div,{"data-slot":`select-scroll-button`,"aria-hidden":!0,dir:o.dir,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:c(a.onPointerDown,()=>{u.current===null&&(u.current=window.setInterval(r,50))}),onPointerMove:c(a.onPointerMove,()=>{s.onItemLeave?.(),u.current===null&&(u.current=window.setInterval(r,50))}),onPointerLeave:c(a.onPointerLeave,()=>{f()})})});Le.displayName=`SelectScrollButtonImpl`;const Re=`SelectSeparator`,ze=O.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=W(Re,n);return A(l.div,{"data-slot":`select-separator`,"aria-hidden":!0,dir:i.dir,...r,ref:t})});ze.displayName=Re;const Be=`SelectTrigger`,Ve=O.forwardRef((t,n)=>{let{__scopeSelect:r,disabled:i=!1,...a}=t,o=H(r),s=W(Be,r),u=s.disabled||i,d=e(n,s.onTriggerChange),f=B(r),p=O.useRef(`touch`),[m,h,g]=x({getItems:()=>f().filter(e=>!e.disabled),getItemElement:e=>e.ref.current,getItemTextValue:e=>e.textValue||(e.ref.current?.textContent??``).trim(),getCurrentItem:e=>e.find(e=>e.value===s.value),onMatch:e=>{s.onValueChange(e.value)}}),v=e=>{u||(s.onOpenChange(!0),g()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return A(_,{asChild:!0,...o,children:A(l.button,{"data-slot":`select-trigger`,type:`button`,role:`combobox`,"aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":`none`,dir:s.dir,"data-state":s.open?`open`:`closed`,disabled:u,"data-disabled":u?``:void 0,"data-placeholder":me(s.value)?``:void 0,...a,ref:d,onClick:c(a.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&v(e)}),onPointerDown:c(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(v(e),e.preventDefault())}),onKeyDown:c(a.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&te.includes(e.key)&&(v(),e.preventDefault())})})})});Ve.displayName=Be;const He=`SelectValue`,Ue=O.forwardRef((t,n)=>{let{__scopeSelect:r,className:a,style:o,children:s,placeholder:c=``,...u}=t,d=W(He,r),{onValueNodeHasChildrenChange:f}=d,p=s!==void 0,m=e(n,d.onValueNodeChange);return i(()=>{f(p)},[f,p]),A(l.span,{"data-slot":`select-value`,...u,ref:m,dir:d.dir,style:{pointerEvents:`none`},children:me(d.value)?A(k,{children:c}):s})});Ue.displayName=He;const $=`SelectViewport`,We=O.forwardRef((t,n)=>{let{__scopeSelect:r,nonce:i,...a}=t,o=W($,r),s=q($,r),u=J($,r),d=e(n,s.onViewportChange),f=O.useRef(0);return j(k,{children:[A(`style`,{dangerouslySetInnerHTML:{__html:`[data-slot="select-viewport"]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-slot="select-viewport"]::-webkit-scrollbar{display:none}`},nonce:i}),A(z.Slot,{scope:r,children:A(l.div,{"data-slot":`select-viewport`,role:`presentation`,dir:o.dir,...a,ref:d,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:c(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=u;if(r?.current&&n){let e=Math.abs(f.current-t.scrollTop);if(e>0){let r=window.innerHeight-20,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}f.current=t.scrollTop})})})]})});We.displayName=$;const Ge=ue,Ke=Ue,qe=O.forwardRef(({className:e,children:t,...n},r)=>j(Ve,{ref:r,"data-slot":`select-trigger`,className:D(`flex h-9 min-w-32 items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-placeholder:text-muted-foreground [&>span]:line-clamp-1`,e),...n,children:[t,A(we,{asChild:!0,children:A(N,{"aria-hidden":`true`,className:`size-4 opacity-50`})})]}));qe.displayName=Ve.displayName;const Je=O.forwardRef(({className:e,...t},n)=>A(Pe,{ref:n,className:D(`flex cursor-default items-center justify-center py-1`,e),...t,children:A(ee,{"aria-hidden":`true`,className:`size-4`})}));Je.displayName=Pe.displayName;const Ye=O.forwardRef(({className:e,...t},n)=>A(Ie,{ref:n,className:D(`flex cursor-default items-center justify-center py-1`,e),...t,children:A(N,{"aria-hidden":`true`,className:`size-4`})}));Ye.displayName=Ie.displayName;const Xe=O.forwardRef(({className:e,children:t,position:n=`popper`,...r},i)=>A(Me,{children:j(ge,{ref:i,className:D(`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--gentleduck-select-content-available-height) min-w-32 origin-(--gentleduck-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in`,n===`popper`&&`data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1`,`transition-all transition-discrete duration-[200ms,150ms] ease-(--duck-motion-ease)`,e),position:n,...r,children:[A(Je,{}),A(We,{className:D(`p-1`,n===`popper`&&`h-(--gentleduck-select-trigger-height) w-full min-w-(--gentleduck-select-trigger-width)`),children:t}),A(Ye,{})]})}));Xe.displayName=ge.displayName;const Ze=O.forwardRef(({className:e,...t},n)=>A(je,{ref:n,className:D(`px-2 py-1.5 font-semibold text-sm`,e),...t}));Ze.displayName=je.displayName;const Qe=O.forwardRef(({className:e,children:t,...n},r)=>j(Ee,{ref:r,className:D(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 ps-2 pe-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50`,e),...n,children:[A(`span`,{className:`absolute end-2 flex size-3.5 items-center justify-center`,children:A(Oe,{children:A(M,{"aria-hidden":`true`,className:`size-4`})})}),A(ke,{children:t})]}));Qe.displayName=Ee.displayName;const $e=O.forwardRef(({className:e,...t},n)=>A(ze,{ref:n,className:D(`-mx-1 my-1 h-px bg-muted`,e),...t}));$e.displayName=ze.displayName;function et({className:e,...t}){let[n,r]=T();return j(Ge,{onValueChange:(e=>r({...n,style:e})),value:n.style,children:[j(qe,{"aria-label":`Style`,className:D(`h-7 w-[145px] text-xs [&_svg]:h-4 [&_svg]:w-4`,e),...t,children:[A(`span`,{className:`text-muted-foreground`,children:`Style: `}),A(Ke,{placeholder:`Select style`})]}),A(Xe,{children:E.map(e=>A(Qe,{className:`text-xs`,value:e.name,children:e.label},e.name))})]})}export{et as t};
|
|
2
|
+
//# sourceMappingURL=style-switcher-Cvax_0P0.js.map
|