@gentleduck/docs 0.0.13 → 0.0.16
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 +2 -0
- package/dist/alert-DXO4N8gL.js.map +1 -0
- package/dist/arrow-CU5T6t_D-BA13FgoC.js +2 -0
- package/dist/arrow-CU5T6t_D-BA13FgoC.js.map +1 -0
- package/dist/badge-BaSJ_om8.js +2 -0
- package/dist/badge-BaSJ_om8.js.map +1 -0
- package/dist/button-BPQ9zanb.js +2 -0
- package/dist/button-BPQ9zanb.js.map +1 -0
- package/dist/callout-2UaufBMG.d.ts +24 -0
- package/dist/callout-2UaufBMG.d.ts.map +1 -0
- package/dist/callout-DkKMc7na.js +2 -0
- package/dist/callout-DkKMc7na.js.map +1 -0
- package/dist/{charts-CvYC8d1e.js → charts-B7Xy2hnG.js} +1 -1
- package/dist/{charts-CvYC8d1e.js.map → charts-B7Xy2hnG.js.map} +1 -1
- package/dist/{charts-Cyick3Tp.d.ts → charts-D4Uj_gtE.d.ts} +1 -1
- package/dist/{charts-Cyick3Tp.d.ts.map → charts-D4Uj_gtE.d.ts.map} +1 -1
- package/dist/client.d.ts +53 -54
- package/dist/client.js +1 -1
- package/dist/{code-block-BNW0BxR6.d.ts → code-block-DAy3JZ6j.d.ts} +3 -3
- package/dist/{code-block-BNW0BxR6.d.ts.map → code-block-DAy3JZ6j.d.ts.map} +1 -1
- package/dist/{code-block-uesBcZgM.js → code-block-DzuzMGMr.js} +1 -1
- package/dist/{code-block-uesBcZgM.js.map → code-block-DzuzMGMr.js.map} +1 -1
- package/dist/{code-block-wrapper-XLG-BrIs.js → code-block-wrapper-BNMwGoo7.js} +1 -1
- package/dist/{code-block-wrapper-XLG-BrIs.js.map → code-block-wrapper-BNMwGoo7.js.map} +1 -1
- package/dist/{code-block-wrapper-B0GrI7hb.d.ts → code-block-wrapper-Uomy0XJY.d.ts} +3 -3
- package/dist/{code-block-wrapper-B0GrI7hb.d.ts.map → code-block-wrapper-Uomy0XJY.d.ts.map} +1 -1
- package/dist/code-preview-CosZjiht.js +2 -0
- package/dist/code-preview-CosZjiht.js.map +1 -0
- package/dist/{code-preview-D5Og4Jk3.d.ts → code-preview-DMjl8mgw.d.ts} +3 -3
- package/dist/{code-preview-D5Og4Jk3.d.ts.map → code-preview-DMjl8mgw.d.ts.map} +1 -1
- package/dist/{colors-BDTM1-gZ.d.ts → colors-Cx-Rmxum.d.ts} +1 -1
- package/dist/{colors-BDTM1-gZ.d.ts.map → colors-Cx-Rmxum.d.ts.map} +1 -1
- package/dist/{colors-BUDdXvJ2.js → colors-IvpyMpg7.js} +2 -2
- package/dist/{colors-BUDdXvJ2.js.map → colors-IvpyMpg7.js.map} +1 -1
- package/dist/command-menu-BY4dKRHx.js +2 -0
- package/dist/command-menu-BY4dKRHx.js.map +1 -0
- package/dist/command-menu-LHgyNFdE.d.ts +7 -0
- package/dist/command-menu-LHgyNFdE.d.ts.map +1 -0
- package/dist/{component-preview-D2UaIsBZ.d.ts → component-preview-BHW7X6pM.d.ts} +4 -4
- package/dist/component-preview-BHW7X6pM.d.ts.map +1 -0
- package/dist/component-preview-g-CoGwuu.js +2 -0
- package/dist/component-preview-g-CoGwuu.js.map +1 -0
- package/dist/component-source-BhZijwev.js +3 -0
- package/dist/component-source-BhZijwev.js.map +1 -0
- package/dist/component-source-C4Ul_ToZ.d.ts +16 -0
- package/dist/component-source-C4Ul_ToZ.d.ts.map +1 -0
- package/dist/components/copy-button.d.ts +4 -0
- package/dist/components/copy-button.js +1 -0
- 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 +45 -46
- package/dist/components/index.js +1 -1
- package/dist/components/layouts/command-menu.d.ts +2 -0
- package/dist/components/layouts/command-menu.js +1 -0
- package/dist/components/layouts/{site-header/header-shell.d.ts → header-shell.d.ts} +1 -1
- package/dist/components/layouts/header-shell.js +1 -0
- package/dist/components/layouts/index.d.ts +6 -7
- package/dist/components/layouts/index.js +1 -1
- package/dist/components/layouts/site-footer.d.ts +2 -0
- package/dist/components/layouts/site-footer.js +1 -0
- package/dist/components/layouts/site-header.d.ts +3 -0
- package/dist/components/layouts/site-header.js +1 -0
- package/dist/components/layouts/tailwind-indicator.d.ts +2 -0
- package/dist/components/layouts/tailwind-indicator.js +1 -0
- package/dist/components/main-nav.d.ts +1 -1
- package/dist/components/main-nav.js +1 -1
- package/dist/components/mdx/mdx-component-registry.types.d.ts +8 -0
- package/dist/components/mdx/mdx-component-registry.types.d.ts.map +1 -0
- 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 +15 -12
- 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 +7 -0
- package/dist/components/mdx/mdx-components/code/pre-block/index.js +1 -0
- package/dist/components/mdx/mdx-components/code/pre-block/pre-block.d.ts +6 -0
- package/dist/components/mdx/mdx-components/code/pre-block/pre-block.js +1 -0
- package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts +14 -0
- package/dist/components/mdx/mdx-components/code/pre-block/shell-command.d.ts.map +1 -0
- package/dist/components/mdx/mdx-components/code/pre-block/shell-command.js +1 -0
- package/dist/components/mdx/mdx-components/code/pre-block/types.d.ts +5 -0
- package/dist/components/mdx/mdx-components/code/span-block.d.ts +2 -2
- package/dist/components/mdx/mdx-components/code/span-block.d.ts.map +1 -1
- 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 +24 -21
- 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 +3 -0
- package/dist/components/mdx/mdx-components/typography.js +1 -0
- package/dist/components/mdx/mdx-components-base.d.ts +119 -0
- package/dist/components/mdx/mdx-components-base.d.ts.map +1 -0
- package/dist/components/mdx/mdx-components-base.js +1 -0
- package/dist/components/mdx/mdx-components-registry.d.ts +171 -0
- package/dist/components/mdx/mdx-components-registry.d.ts.map +1 -0
- package/dist/components/mdx/mdx-components-registry.js +1 -0
- package/dist/components/mdx/mdx-components-ui.d.ts +50 -0
- package/dist/components/mdx/mdx-components-ui.d.ts.map +1 -0
- package/dist/components/mdx/mdx-components-ui.js +1 -0
- package/dist/components/mdx/mdx-icons.d.ts +9 -9
- package/dist/components/mdx/mdx-icons.d.ts.map +1 -1
- package/dist/components/mdx/mdx-icons.js +1 -1
- package/dist/components/mdx/mdx-runtime.d.ts +11 -0
- package/dist/components/mdx/mdx-runtime.d.ts.map +1 -0
- package/dist/components/mdx/mdx-runtime.js +1 -0
- 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 +2 -0
- package/dist/components/style-switcher.js +1 -0
- package/dist/components-list-C67E8feA.d.ts +12 -0
- package/dist/{components-list-VYl4HAYt.d.ts.map → components-list-C67E8feA.d.ts.map} +1 -1
- package/dist/{components-list-DiOUxZd_.js → components-list-Cg9ggVyv.js} +2 -2
- package/dist/{components-list-DiOUxZd_.js.map → components-list-Cg9ggVyv.js.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-C656KJNk.d.ts → context-Boqhj3tq.d.ts} +4 -4
- package/dist/{context-C656KJNk.d.ts.map → context-Boqhj3tq.d.ts.map} +1 -1
- package/dist/{context-CibrcgaK.js → context-Bu-bPlyW.js} +1 -1
- package/dist/{context-CibrcgaK.js.map → context-Bu-bPlyW.js.map} +1 -1
- package/dist/{context.types-KUK2rNdz.d.ts → context.types-pTQ85uw2.d.ts} +6 -2
- package/dist/context.types-pTQ85uw2.d.ts.map +1 -0
- package/dist/copy-button-BKx55olo.d.ts +20 -0
- package/dist/copy-button-BKx55olo.d.ts.map +1 -0
- package/dist/copy-button-Ccbj3Omt.js +2 -0
- package/dist/copy-button-Ccbj3Omt.js.map +1 -0
- package/dist/create-collection-S3CvffX1-DA20ZU15.js +2 -0
- package/dist/create-collection-S3CvffX1-DA20ZU15.js.map +1 -0
- package/dist/dialog-68QLl2rI.js +4 -0
- package/dist/dialog-68QLl2rI.js.map +1 -0
- package/dist/direction-B-anGbxM-BdqxtlGV.js +2 -0
- package/dist/direction-B-anGbxM-BdqxtlGV.js.map +1 -0
- package/dist/{dist-DfVBUGvk.js → dist-BEBzXlAF.js} +1 -1
- package/dist/{dist-DfVBUGvk.js.map → dist-BEBzXlAF.js.map} +1 -1
- package/dist/{docs-copy-page-BEtbT7qX.d.ts → docs-copy-page-BZuaAwiB.d.ts} +3 -3
- package/dist/docs-copy-page-BZuaAwiB.d.ts.map +1 -0
- package/dist/docs-copy-page-QXgUbioW.js +2 -0
- package/dist/docs-copy-page-QXgUbioW.js.map +1 -0
- package/dist/{docs-pager-BFx4yEm-.d.ts → docs-pager-D2ekv5NL.d.ts} +6 -6
- package/dist/{docs-pager-BFx4yEm-.d.ts.map → docs-pager-D2ekv5NL.d.ts.map} +1 -1
- package/dist/docs-pager-mprD1O3r.js +2 -0
- package/dist/docs-pager-mprD1O3r.js.map +1 -0
- package/dist/docs-sidebar-C0yQ6ZWj.d.ts +43 -0
- package/dist/docs-sidebar-C0yQ6ZWj.d.ts.map +1 -0
- package/dist/docs-sidebar-DY2ybOuM.js +2 -0
- package/dist/docs-sidebar-DY2ybOuM.js.map +1 -0
- package/dist/docs-toc-Bjmkbd6l.js +2 -0
- package/dist/docs-toc-Bjmkbd6l.js.map +1 -0
- package/dist/docs-toc-D-hn1gA2.d.ts +13 -0
- package/dist/docs-toc-D-hn1gA2.d.ts.map +1 -0
- package/dist/drawer-kwSiurIF.js +8 -0
- package/dist/drawer-kwSiurIF.js.map +1 -0
- package/dist/{events-CFVHB4m8.d.ts → events-CQ5HMYtp.d.ts} +1 -1
- package/dist/{events-CFVHB4m8.d.ts.map → events-CQ5HMYtp.d.ts.map} +1 -1
- package/dist/{events-DHlTM_S_.js → events-Tn9hD65k.js} +1 -1
- package/dist/{events-DHlTM_S_.js.map → events-Tn9hD65k.js.map} +1 -1
- package/dist/{figcaption-block-DfyvzBoz.d.ts → figcaption-block-Ccf4yBMy.d.ts} +3 -3
- package/dist/figcaption-block-Ccf4yBMy.d.ts.map +1 -0
- package/dist/figcaption-block-RFNt1OSv.js +2 -0
- package/dist/figcaption-block-RFNt1OSv.js.map +1 -0
- package/dist/hast-properties-C103K0PZ.js +2 -0
- package/dist/hast-properties-C103K0PZ.js.map +1 -0
- package/dist/{header-shell-DG6EtZSb.d.ts → header-shell-BYafp8lR.d.ts} +7 -7
- package/dist/header-shell-BYafp8lR.d.ts.map +1 -0
- package/dist/{header-shell-BnhiboVH.js → header-shell-PLI5ZAwI.js} +2 -2
- package/dist/header-shell-PLI5ZAwI.js.map +1 -0
- 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-B8awNAgi.d.ts +33 -0
- package/dist/icons-B8awNAgi.d.ts.map +1 -0
- package/dist/icons-dASZ3daW.js +2 -0
- package/dist/icons-dASZ3daW.js.map +1 -0
- package/dist/index-B94w2qPS.d.ts +17 -0
- package/dist/index-B94w2qPS.d.ts.map +1 -0
- package/dist/{index-C2_c9Mqo.d.ts → index-CdFFVx85.d.ts} +5 -13
- package/dist/index-CdFFVx85.d.ts.map +1 -0
- package/dist/index.d.ts +12 -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/events.js +1 -1
- package/dist/lib/index.d.ts +6 -5
- 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/list-navigation-LJg-1TD2-DsfZPowW.js +2 -0
- package/dist/list-navigation-LJg-1TD2-DsfZPowW.js.map +1 -0
- package/dist/main-nav-Ctrj2x2N.d.ts +7 -0
- package/dist/main-nav-Ctrj2x2N.d.ts.map +1 -0
- package/dist/mdx-B4bzoDDs.d.ts +12 -0
- package/dist/mdx-B4bzoDDs.d.ts.map +1 -0
- package/dist/mdx-CpGlQTio.js +2 -0
- package/dist/mdx-CpGlQTio.js.map +1 -0
- package/dist/mdx-components-base-ByG7D4Kc.js +2 -0
- package/dist/mdx-components-base-ByG7D4Kc.js.map +1 -0
- package/dist/mdx-components-registry-H3xD8Epe.js +2 -0
- package/dist/mdx-components-registry-H3xD8Epe.js.map +1 -0
- package/dist/mdx-components-ui-Cp73cCYd.js +2 -0
- package/dist/mdx-components-ui-Cp73cCYd.js.map +1 -0
- package/dist/{mdx-icons-BH4zLUw0.js → mdx-icons-Duo8BbOA.js} +1 -1
- package/dist/{mdx-icons-BH4zLUw0.js.map → mdx-icons-Duo8BbOA.js.map} +1 -1
- package/dist/mdx-runtime-BeG80qPS.js +2 -0
- package/dist/mdx-runtime-BeG80qPS.js.map +1 -0
- package/dist/mdx-runtime-DjYaVtmv.d.ts +23 -0
- package/dist/mdx-runtime-DjYaVtmv.d.ts.map +1 -0
- package/dist/mermaid-block-BfbjIpjJ.js +12 -0
- package/dist/mermaid-block-BfbjIpjJ.js.map +1 -0
- package/dist/{mermaid-block-DOJ68HFE.d.ts → mermaid-block-C3dgb4nS.d.ts} +3 -3
- package/dist/{mermaid-block-DOJ68HFE.d.ts.map → mermaid-block-C3dgb4nS.d.ts.map} +1 -1
- package/dist/metadata-plugin-BL84sQM5.d.ts +8 -0
- package/dist/metadata-plugin-BL84sQM5.d.ts.map +1 -0
- package/dist/metadata-plugin-DA7OesoA.js +2 -0
- package/dist/metadata-plugin-DA7OesoA.js.map +1 -0
- package/dist/metadata-utils-C_8CcvsG.js +2 -0
- package/dist/metadata-utils-C_8CcvsG.js.map +1 -0
- package/dist/mobile-nav-BwxnYQIS.d.ts +7 -0
- package/dist/mobile-nav-BwxnYQIS.d.ts.map +1 -0
- package/dist/mobile-nav-rBOCLILt.js +2 -0
- package/dist/mobile-nav-rBOCLILt.js.map +1 -0
- package/dist/mode-toggle-DTIF2o7F.d.ts +7 -0
- package/dist/mode-toggle-DTIF2o7F.d.ts.map +1 -0
- package/dist/mode-toggle-DhgB9p1I.js +2 -0
- package/dist/mode-toggle-DhgB9p1I.js.map +1 -0
- package/dist/mount-CoAqNcc6.js +2 -0
- package/dist/mount-CoAqNcc6.js.map +1 -0
- package/dist/{nav-B2NAfb21.d.ts → nav-B0m_RJfC.d.ts} +3 -1
- package/dist/nav-B0m_RJfC.d.ts.map +1 -0
- package/dist/{page-header-D8n3yXQF.js → page-header-TUu9iNwc.js} +1 -1
- package/dist/{page-header-D8n3yXQF.js.map → page-header-TUu9iNwc.js.map} +1 -1
- package/dist/{page-header-h4wXUkUH.d.ts → page-header-raOcAxSb.d.ts} +6 -6
- package/dist/{page-header-h4wXUkUH.d.ts.map → page-header-raOcAxSb.d.ts.map} +1 -1
- package/dist/portal-BNuCvTAR-DDrsnIMA.js +2 -0
- package/dist/portal-BNuCvTAR-DDrsnIMA.js.map +1 -0
- package/dist/pre-block-Bt_9UuCv.js +2 -0
- package/dist/pre-block-Bt_9UuCv.js.map +1 -0
- package/dist/pre-block-MqyNpmYa.d.ts +19 -0
- package/dist/pre-block-MqyNpmYa.d.ts.map +1 -0
- package/dist/providers-BlEJC-ZF.js +2 -0
- package/dist/providers-BlEJC-ZF.js.map +1 -0
- package/dist/{providers-Do13WJMr.d.ts → providers-CxZdaO7_.d.ts} +3 -3
- package/dist/providers-CxZdaO7_.d.ts.map +1 -0
- package/dist/{registry-colors-data-tROJGGvk.js → registry-colors-data-C5Xv_bOz.js} +1 -1
- package/dist/{registry-colors-data-tROJGGvk.js.map → registry-colors-data-C5Xv_bOz.js.map} +1 -1
- package/dist/{registry-styles-DACce7ra.d.ts → registry-styles-Boe9P1LO.d.ts} +1 -1
- package/dist/{registry-styles-DACce7ra.d.ts.map → registry-styles-Boe9P1LO.d.ts.map} +1 -1
- package/dist/{registry-styles-Bby12FIz.js → registry-styles-DwoJ9Qa9.js} +1 -1
- package/dist/{registry-styles-Bby12FIz.js.map → registry-styles-DwoJ9Qa9.js.map} +1 -1
- package/dist/{rehype-mermaid-gkaeJtqn.js → rehype-mermaid-Ctag2Ywx.js} +1 -1
- package/dist/{rehype-mermaid-gkaeJtqn.js.map → rehype-mermaid-Ctag2Ywx.js.map} +1 -1
- package/dist/{rehype-mermaid-kjf2DmAC.d.ts → rehype-mermaid-DPZ6UzOu.d.ts} +2 -2
- package/dist/rehype-mermaid-DPZ6UzOu.d.ts.map +1 -0
- package/dist/rehype-npm-command-0W5WqcQY.js +2 -0
- package/dist/rehype-npm-command-0W5WqcQY.js.map +1 -0
- package/dist/{rehype-npm-command-C7BP6nqi.d.ts → rehype-npm-command-khRZrj_X.d.ts} +2 -2
- package/dist/rehype-npm-command-khRZrj_X.d.ts.map +1 -0
- package/dist/{rehype-pre-block-source-zKoXg4aL.d.ts → rehype-pre-block-source-0UyWe2hh.d.ts} +2 -2
- package/dist/rehype-pre-block-source-0UyWe2hh.d.ts.map +1 -0
- package/dist/rehype-pre-block-source-paX7yPQ4.js +2 -0
- package/dist/rehype-pre-block-source-paX7yPQ4.js.map +1 -0
- package/dist/{rehype-title-TRUGszot.js → rehype-title-CB9V-h9I.js} +1 -1
- package/dist/{rehype-title-TRUGszot.js.map → rehype-title-CB9V-h9I.js.map} +1 -1
- package/dist/{rehype-title-umwuNb2D.d.ts → rehype-title-CTj31zR2.d.ts} +2 -2
- package/dist/rehype-title-CTj31zR2.d.ts.map +1 -0
- package/dist/scroll-area-DwfrxxQ_.js +2 -0
- package/dist/scroll-area-DwfrxxQ_.js.map +1 -0
- package/dist/separator-BL4VUMvX.js +2 -0
- package/dist/separator-BL4VUMvX.js.map +1 -0
- package/dist/shared-utils-DqLwMUcj-Cs7um3C7.js +2 -0
- package/dist/shared-utils-DqLwMUcj-Cs7um3C7.js.map +1 -0
- package/dist/shell-command-BQkaAnLc.js +2 -0
- package/dist/shell-command-BQkaAnLc.js.map +1 -0
- package/dist/site-footer-Dh_aYkTp.d.ts +8 -0
- package/dist/site-footer-Dh_aYkTp.d.ts.map +1 -0
- package/dist/site-footer-DoVwgNqf.js +2 -0
- package/dist/site-footer-DoVwgNqf.js.map +1 -0
- package/dist/site-header-BiFOBrXI.js +2 -0
- package/dist/site-header-BiFOBrXI.js.map +1 -0
- package/dist/site-header-C77EADsW.d.ts +8 -0
- package/dist/site-header-C77EADsW.d.ts.map +1 -0
- package/dist/slot-B-X2-pKU-DOhFF3E_.js +2 -0
- package/dist/slot-B-X2-pKU-DOhFF3E_.js.map +1 -0
- package/dist/style-switcher--saWXPVm.js +2 -0
- package/dist/style-switcher--saWXPVm.js.map +1 -0
- package/dist/style-switcher-BCCh5sxc.d.ts +15 -0
- package/dist/style-switcher-BCCh5sxc.d.ts.map +1 -0
- package/dist/styles/base.css +12 -12
- package/dist/styles/docs.css +14 -1
- package/dist/styles/mdx-base.css +27 -0
- package/dist/styles/mdx-code.css +142 -0
- package/dist/styles/mdx-extensions.css +3 -0
- package/dist/styles/mdx-typography.css +27 -0
- package/dist/styles/mdx.css +4 -197
- package/dist/table-E1lSNeuD.js +2 -0
- package/dist/table-E1lSNeuD.js.map +1 -0
- package/dist/table-tgo1Zoi5.d.ts +22 -0
- package/dist/table-tgo1Zoi5.d.ts.map +1 -0
- package/dist/tabs-Bi5DkOoD.d.ts +43 -0
- package/dist/tabs-Bi5DkOoD.d.ts.map +1 -0
- package/dist/{tabs-Cvy3-KIA.js → tabs-BonSZ_0a.js} +2 -2
- package/dist/tabs-BonSZ_0a.js.map +1 -0
- package/dist/tabs-CrZf6_5d.js +2 -0
- package/dist/tabs-CrZf6_5d.js.map +1 -0
- package/dist/tailwind-indicator-C2nO7EAI.d.ts +7 -0
- package/dist/tailwind-indicator-C2nO7EAI.d.ts.map +1 -0
- package/dist/{tailwind-indicator-Dt4Bfpta.js → tailwind-indicator-z53_j-ZR.js} +1 -1
- package/dist/tailwind-indicator-z53_j-ZR.js.map +1 -0
- package/dist/{themes-BzMklu0h.js → themes-DSmnGG_O.js} +2 -2
- package/dist/{themes-BzMklu0h.js.map → themes-DSmnGG_O.js.map} +1 -1
- package/dist/{themes-Ba683LGu.d.ts → themes-M1nDuQoV.d.ts} +1 -1
- package/dist/{themes-Ba683LGu.d.ts.map → themes-M1nDuQoV.d.ts.map} +1 -1
- package/dist/{typepography-BdIMY3Y2.d.ts → typepography-Bb4KzfVL.d.ts} +13 -13
- package/dist/{typepography-BdIMY3Y2.d.ts.map → typepography-Bb4KzfVL.d.ts.map} +1 -1
- package/dist/{typepography-CLdrb7_b.js → typepography-Bn-ZmO71.js} +1 -1
- package/dist/{typepography-CLdrb7_b.js.map → typepography-Bn-ZmO71.js.map} +1 -1
- package/dist/types/index.d.ts +5 -4
- package/dist/types/mdx-runtime.d.ts +2 -0
- package/dist/types/nav.d.ts +1 -1
- package/dist/types/unist.d.ts +2 -1
- package/dist/types-DsWNixhq.d.ts +14 -0
- package/dist/types-DsWNixhq.d.ts.map +1 -0
- package/dist/typography-BcEByhvR.js +0 -0
- package/dist/unist-Dtu3x3-k.js +0 -0
- package/dist/unist-q3NIH9ya.d.ts +29 -0
- package/dist/unist-q3NIH9ya.d.ts.map +1 -0
- package/dist/{use-colors-BSOymnQG.js → use-colors-BiVXxR31.js} +2 -2
- package/dist/{use-colors-BSOymnQG.js.map → use-colors-BiVXxR31.js.map} +1 -1
- package/dist/{use-colors-tvFBbu3S.d.ts → use-colors-CBAXuqtP.d.ts} +2 -2
- package/dist/use-colors-CBAXuqtP.d.ts.map +1 -0
- package/dist/{use-config-DlgXRPaN.d.ts → use-config-3gNoFPn6.d.ts} +2 -2
- package/dist/{use-config-DlgXRPaN.d.ts.map → use-config-3gNoFPn6.d.ts.map} +1 -1
- package/dist/{use-config-DViAkW1f.js → use-config-CkoOe8Fw.js} +1 -1
- package/dist/{use-config-DViAkW1f.js.map → use-config-CkoOe8Fw.js.map} +1 -1
- package/dist/{use-lift-mode-CqcC0vis.js → use-lift-mode-CRK6jO9I.js} +1 -1
- package/dist/{use-lift-mode-CqcC0vis.js.map → use-lift-mode-CRK6jO9I.js.map} +1 -1
- package/dist/{use-lift-mode-DEELjsRA.d.ts → use-lift-mode-DAQuqoIt.d.ts} +1 -1
- package/dist/use-lift-mode-DAQuqoIt.d.ts.map +1 -0
- package/dist/{use-meta-colors-CkNbJTgD.d.ts → use-meta-colors-Dlzg21A8.d.ts} +1 -1
- package/dist/use-meta-colors-Dlzg21A8.d.ts.map +1 -0
- package/dist/{use-meta-colors-B7HIXaHI.js → use-meta-colors-ye3z03RL.js} +2 -2
- package/dist/{use-meta-colors-B7HIXaHI.js.map → use-meta-colors-ye3z03RL.js.map} +1 -1
- package/dist/{use-mounted-gdBJPRp0.js → use-mounted-Bi7J0dBb.js} +1 -1
- package/dist/{use-mounted-gdBJPRp0.js.map → use-mounted-Bi7J0dBb.js.map} +1 -1
- package/dist/{use-mounted-BtOuPtMk.d.ts → use-mounted-CqC1Le-n.d.ts} +1 -1
- package/dist/use-mounted-CqC1Le-n.d.ts.map +1 -0
- package/dist/{use-themes-config-Dtk_egkh.d.ts → use-themes-config-DfxLBbQI.d.ts} +2 -2
- package/dist/{use-themes-config-Dtk_egkh.d.ts.map → use-themes-config-DfxLBbQI.d.ts.map} +1 -1
- package/dist/{use-themes-config-BRcxOF-M.js → use-themes-config-t4NBMHl1.js} +2 -2
- package/dist/{use-themes-config-BRcxOF-M.js.map → use-themes-config-t4NBMHl1.js.map} +1 -1
- package/dist/{utils-gls3XPIE.d.ts → utils-BGWVtLBe.d.ts} +1 -1
- package/dist/utils-BGWVtLBe.d.ts.map +1 -0
- package/dist/utils-CN0aIGfJ.js +2 -0
- package/dist/utils-CN0aIGfJ.js.map +1 -0
- package/dist/velite/browser.d.ts +2 -1
- package/dist/velite/browser.d.ts.map +1 -1
- package/dist/velite/browser.js +1 -1
- package/dist/velite/browser.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 +8 -8
- package/dist/velite/index.js +1 -1
- package/dist/velite/plugins/hast-properties.d.ts +9 -0
- package/dist/velite/plugins/hast-properties.d.ts.map +1 -0
- package/dist/velite/plugins/hast-properties.js +1 -0
- package/dist/velite/plugins/index.d.ts +8 -8
- package/dist/velite/plugins/index.js +1 -1
- package/dist/velite/plugins/metadata-plugin.d.ts +4 -4
- package/dist/velite/plugins/metadata-plugin.js +1 -1
- package/dist/velite/plugins/metadata-utils.d.ts +9 -0
- package/dist/velite/plugins/metadata-utils.d.ts.map +1 -0
- package/dist/velite/plugins/metadata-utils.js +1 -0
- 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 +2 -0
- package/dist/visibility-hidden-CAHx9RLp-CN32k1Im.js.map +1 -0
- package/package.json +28 -30
- package/src/client.ts +0 -0
- package/src/components/copy-button.tsx +54 -0
- package/src/components/docs/docs-copy-page.tsx +161 -46
- package/src/components/docs/docs-pager.tsx +22 -12
- package/src/components/docs/docs-sidebar.tsx +194 -29
- package/src/components/docs/docs-toc.tsx +233 -56
- package/src/components/docs/index.ts +0 -0
- package/src/components/icons.tsx +13 -25
- package/src/components/index.ts +1 -1
- package/src/components/layouts/command-menu.tsx +491 -0
- package/src/components/layouts/{site-header/header-shell.tsx → header-shell.tsx} +2 -2
- package/src/components/layouts/{site-footer/index.tsx → site-footer.tsx} +10 -7
- package/src/components/layouts/site-header.tsx +178 -0
- package/src/components/main-nav.tsx +3 -2
- package/src/components/mdx/ARCHITECTURE.md +61 -0
- package/src/components/mdx/mdx-component-registry.types.ts +5 -0
- package/src/components/mdx/mdx-components/callout.tsx +29 -9
- package/src/components/mdx/mdx-components/code/code-preview.tsx +11 -8
- package/src/components/mdx/mdx-components/code/component-preview.tsx +59 -27
- package/src/components/mdx/mdx-components/code/component-source.tsx +49 -21
- package/src/components/mdx/mdx-components/code/figcaption-block.tsx +2 -8
- package/src/components/mdx/mdx-components/code/mermaid-block.tsx +5 -3
- package/src/components/mdx/mdx-components/code/pre-block/index.ts +1 -0
- package/src/components/mdx/mdx-components/code/pre-block/pre-block.tsx +52 -0
- package/src/components/mdx/mdx-components/code/{pre-block.tsx → pre-block/shell-command.tsx} +4 -58
- package/src/components/mdx/mdx-components/code/pre-block/types.ts +10 -0
- package/src/components/mdx/mdx-components/components-list.tsx +0 -0
- package/src/components/mdx/mdx-components/index.ts +1 -2
- package/src/components/mdx/mdx-components/table.tsx +36 -27
- package/src/components/mdx/mdx-components/tabs.tsx +5 -2
- package/src/components/mdx/mdx-components/typography.tsx +1 -0
- package/src/components/mdx/mdx-components-base.tsx +81 -0
- package/src/components/mdx/mdx-components-registry.ts +8 -0
- package/src/components/mdx/mdx-components-ui.tsx +21 -0
- package/src/components/mdx/mdx-icons.ts +0 -0
- package/src/components/mdx/mdx-runtime.ts +10 -0
- package/src/components/mdx/mdx.tsx +3 -103
- package/src/components/mobile-nav.tsx +57 -22
- package/src/components/mode-toggle.tsx +4 -4
- package/src/components/providers.tsx +0 -1
- package/src/components/{themes/style-switcher.tsx → style-switcher.tsx} +5 -2
- package/src/context/context.tsx +0 -0
- package/src/context/context.types.ts +4 -0
- package/src/context/index.ts +0 -0
- package/src/hooks/index.ts +0 -0
- package/src/lib/index.ts +0 -0
- package/src/lib/registry-styles.ts +0 -0
- package/src/lib/utils.ts +7 -1
- package/src/styles/base.css +12 -12
- package/src/styles/docs.css +14 -1
- package/src/styles/mdx-base.css +27 -0
- package/src/styles/mdx-code.css +142 -0
- package/src/styles/mdx-extensions.css +3 -0
- package/src/styles/mdx-typography.css +27 -0
- package/src/styles/mdx.css +4 -197
- package/src/types/index.ts +1 -0
- package/src/types/mdx-runtime.ts +21 -0
- package/src/types/nav.ts +2 -0
- package/src/types/unist.ts +5 -19
- package/src/velite/browser.ts +1 -0
- package/src/velite/config.ts +56 -38
- package/src/velite/index.ts +0 -0
- package/src/velite/plugins/hast-properties.ts +12 -0
- package/src/velite/plugins/index.ts +0 -0
- package/src/velite/plugins/metadata-plugin.ts +14 -11
- package/src/velite/plugins/metadata-utils.ts +14 -0
- package/src/velite/plugins/rehype-mermaid.ts +0 -0
- package/src/velite/plugins/rehype-npm-command.ts +24 -22
- package/src/velite/plugins/rehype-pre-block-source.ts +6 -4
- package/src/velite/plugins/rehype-title.ts +0 -0
- package/src/velite/utils.ts +0 -0
- package/dist/button-Ao0Egplu.js +0 -2
- package/dist/button-Ao0Egplu.js.map +0 -1
- package/dist/callout-C1MveMtC.d.ts +0 -20
- package/dist/callout-C1MveMtC.d.ts.map +0 -1
- package/dist/callout-ChU_uu_5.js +0 -2
- package/dist/callout-ChU_uu_5.js.map +0 -1
- package/dist/chunk-BPpoHddQ-DLGSIJHp.js +0 -2
- package/dist/chunk-BPpoHddQ-DLGSIJHp.js.map +0 -1
- package/dist/code-preview-DTVYDNkK.js +0 -2
- package/dist/code-preview-DTVYDNkK.js.map +0 -1
- package/dist/command-2PGkRCUM.js +0 -2
- package/dist/command-2PGkRCUM.js.map +0 -1
- package/dist/command-menu-Db8sDulu.js +0 -2
- package/dist/command-menu-Db8sDulu.js.map +0 -1
- package/dist/command-menu-DtpwoKe8.d.ts +0 -7
- package/dist/command-menu-DtpwoKe8.d.ts.map +0 -1
- package/dist/component-preview-D2UaIsBZ.d.ts.map +0 -1
- package/dist/component-preview-InhzN4h1.js +0 -2
- package/dist/component-preview-InhzN4h1.js.map +0 -1
- package/dist/component-source-CLa1Z_vJ.d.ts +0 -17
- package/dist/component-source-CLa1Z_vJ.d.ts.map +0 -1
- package/dist/component-source-DtSz1ZSB.js +0 -5
- package/dist/component-source-DtSz1ZSB.js.map +0 -1
- package/dist/components/copy-button/copy-button.d.ts +0 -5
- package/dist/components/copy-button/copy-button.js +0 -1
- package/dist/components/copy-button/copy-button.types.d.ts +0 -4
- package/dist/components/copy-button/index.d.ts +0 -6
- package/dist/components/copy-button/index.js +0 -1
- package/dist/components/layouts/command-menu/command-menu.d.ts +0 -2
- package/dist/components/layouts/command-menu/command-menu.js +0 -1
- package/dist/components/layouts/command-menu/index.d.ts +0 -3
- package/dist/components/layouts/command-menu/index.js +0 -1
- package/dist/components/layouts/site-footer/index.d.ts +0 -2
- package/dist/components/layouts/site-footer/index.js +0 -1
- package/dist/components/layouts/site-header/header-shell.js +0 -1
- package/dist/components/layouts/site-header/index.d.ts +0 -3
- package/dist/components/layouts/site-header/index.js +0 -1
- package/dist/components/layouts/tailwind-indicator/index.d.ts +0 -2
- package/dist/components/layouts/tailwind-indicator/index.js +0 -1
- package/dist/components/mdx/mdx-components/code/pre-block.d.ts +0 -4
- package/dist/components/mdx/mdx-components/code/pre-block.js +0 -1
- package/dist/components/mdx/mdx-components/framework-docs.d.ts +0 -2
- package/dist/components/mdx/mdx-components/framework-docs.js +0 -1
- package/dist/components/themes/index.d.ts +0 -4
- package/dist/components/themes/index.js +0 -1
- package/dist/components/themes/style-switcher.d.ts +0 -3
- package/dist/components/themes/style-switcher.js +0 -1
- package/dist/components-list-VYl4HAYt.d.ts +0 -12
- package/dist/context.types-KUK2rNdz.d.ts.map +0 -1
- package/dist/copy-button-DSpL6XPh.d.ts +0 -21
- package/dist/copy-button-DSpL6XPh.d.ts.map +0 -1
- package/dist/copy-button-DZizVQ8G.js +0 -2
- package/dist/copy-button-DZizVQ8G.js.map +0 -1
- package/dist/copy-button.types-CGEbiMXO.d.ts +0 -29
- package/dist/copy-button.types-CGEbiMXO.d.ts.map +0 -1
- package/dist/dialog-BJXRFGlQ.js +0 -31
- package/dist/dialog-BJXRFGlQ.js.map +0 -1
- package/dist/docs-copy-page-BEtbT7qX.d.ts.map +0 -1
- package/dist/docs-copy-page-DZDkcR09.js +0 -3
- package/dist/docs-copy-page-DZDkcR09.js.map +0 -1
- package/dist/docs-pager-Dr6dooWP.js +0 -2
- package/dist/docs-pager-Dr6dooWP.js.map +0 -1
- package/dist/docs-sidebar-CWDyV0Rj.d.ts +0 -30
- package/dist/docs-sidebar-CWDyV0Rj.d.ts.map +0 -1
- package/dist/docs-sidebar-MtBCNnEG.js +0 -2
- package/dist/docs-sidebar-MtBCNnEG.js.map +0 -1
- package/dist/docs-toc-B7RS1k0Z.d.ts +0 -13
- package/dist/docs-toc-B7RS1k0Z.d.ts.map +0 -1
- package/dist/docs-toc-Czi8gMJf.js +0 -2
- package/dist/docs-toc-Czi8gMJf.js.map +0 -1
- package/dist/drawer-DVVyDJ2D.js +0 -8
- package/dist/drawer-DVVyDJ2D.js.map +0 -1
- package/dist/dropdown-menu-Cf4PnvE4.js +0 -2
- package/dist/dropdown-menu-Cf4PnvE4.js.map +0 -1
- package/dist/figcaption-block-7FWvsSXj.js +0 -2
- package/dist/figcaption-block-7FWvsSXj.js.map +0 -1
- package/dist/figcaption-block-DfyvzBoz.d.ts.map +0 -1
- package/dist/framework-docs-BQx_CG7u.js +0 -2
- package/dist/framework-docs-BQx_CG7u.js.map +0 -1
- package/dist/framework-docs-BuqO4yKf.d.ts +0 -13
- package/dist/framework-docs-BuqO4yKf.d.ts.map +0 -1
- package/dist/header-shell-BnhiboVH.js.map +0 -1
- package/dist/header-shell-DG6EtZSb.d.ts.map +0 -1
- package/dist/icons-Bp6-jojO.d.ts +0 -30
- package/dist/icons-Bp6-jojO.d.ts.map +0 -1
- package/dist/icons-CiCgiCYy.js +0 -2
- package/dist/icons-CiCgiCYy.js.map +0 -1
- package/dist/index-BgMLDj-T.d.ts +0 -8
- package/dist/index-BgMLDj-T.d.ts.map +0 -1
- package/dist/index-Bler93Rv.d.ts +0 -7
- package/dist/index-Bler93Rv.d.ts.map +0 -1
- package/dist/index-C2_c9Mqo.d.ts.map +0 -1
- package/dist/index-DWZV2KV9.d.ts +0 -8
- package/dist/index-DWZV2KV9.d.ts.map +0 -1
- package/dist/main-nav-Ci0i9b05.js +0 -2
- package/dist/main-nav-Ci0i9b05.js.map +0 -1
- package/dist/main-nav-DdJSFX9R.d.ts +0 -7
- package/dist/main-nav-DdJSFX9R.d.ts.map +0 -1
- package/dist/mdx-Bc39yJEk.js +0 -2
- package/dist/mdx-Bc39yJEk.js.map +0 -1
- package/dist/mdx-CKRU84WS.d.ts +0 -12
- package/dist/mdx-CKRU84WS.d.ts.map +0 -1
- package/dist/mermaid-block-BlCALvQ4.js +0 -13
- package/dist/mermaid-block-BlCALvQ4.js.map +0 -1
- package/dist/metadata-plugin-OKcE6Xsj.d.ts +0 -7
- package/dist/metadata-plugin-OKcE6Xsj.d.ts.map +0 -1
- package/dist/metadata-plugin-tEixstEj.js +0 -2
- package/dist/metadata-plugin-tEixstEj.js.map +0 -1
- package/dist/mobile-nav-BAkYO55-.js +0 -2
- package/dist/mobile-nav-BAkYO55-.js.map +0 -1
- package/dist/mobile-nav-wLU7upp-.d.ts +0 -7
- package/dist/mobile-nav-wLU7upp-.d.ts.map +0 -1
- package/dist/mode-toggle-B4gU5bK6.d.ts +0 -7
- package/dist/mode-toggle-B4gU5bK6.d.ts.map +0 -1
- package/dist/mode-toggle-BFNnk0Th.js +0 -2
- package/dist/mode-toggle-BFNnk0Th.js.map +0 -1
- package/dist/mount-CNbhMJe--D9ALOndF.js +0 -2
- package/dist/mount-CNbhMJe--D9ALOndF.js.map +0 -1
- package/dist/nav-B2NAfb21.d.ts.map +0 -1
- package/dist/popover-DBuHxfGT.js +0 -2
- package/dist/popover-DBuHxfGT.js.map +0 -1
- package/dist/pre-block-C2YQ_YU_.js +0 -2
- package/dist/pre-block-C2YQ_YU_.js.map +0 -1
- package/dist/pre-block-DMxLF2Tm.d.ts +0 -33
- package/dist/pre-block-DMxLF2Tm.d.ts.map +0 -1
- package/dist/presence-DKRzzG6_-DV_YtF92.js +0 -2
- package/dist/presence-DKRzzG6_-DV_YtF92.js.map +0 -1
- package/dist/providers-CFfgRc3G.js +0 -2
- package/dist/providers-CFfgRc3G.js.map +0 -1
- package/dist/providers-Do13WJMr.d.ts.map +0 -1
- package/dist/rehype-mermaid-kjf2DmAC.d.ts.map +0 -1
- package/dist/rehype-npm-command-C7BP6nqi.d.ts.map +0 -1
- package/dist/rehype-npm-command-O7ik2lKv.js +0 -2
- package/dist/rehype-npm-command-O7ik2lKv.js.map +0 -1
- package/dist/rehype-pre-block-source-D8t3NCnT.js +0 -2
- package/dist/rehype-pre-block-source-D8t3NCnT.js.map +0 -1
- package/dist/rehype-pre-block-source-zKoXg4aL.d.ts.map +0 -1
- package/dist/rehype-title-umwuNb2D.d.ts.map +0 -1
- package/dist/scroll-area-Bj8-58Fz.js +0 -2
- package/dist/scroll-area-Bj8-58Fz.js.map +0 -1
- package/dist/separator-t0JrmyLj.js +0 -2
- package/dist/separator-t0JrmyLj.js.map +0 -1
- package/dist/site-footer-BZQcOAVy.js +0 -2
- package/dist/site-footer-BZQcOAVy.js.map +0 -1
- package/dist/site-header-DH4ChrKl.js +0 -2
- package/dist/site-header-DH4ChrKl.js.map +0 -1
- package/dist/style-switcher-BvF4n8f4.js +0 -2
- package/dist/style-switcher-BvF4n8f4.js.map +0 -1
- package/dist/style-switcher-gHkRCCrl.d.ts +0 -25
- package/dist/style-switcher-gHkRCCrl.d.ts.map +0 -1
- package/dist/table-Cu1wFi9V.js +0 -2
- package/dist/table-Cu1wFi9V.js.map +0 -1
- package/dist/table-DAVFXCAf.d.ts +0 -10
- package/dist/table-DAVFXCAf.d.ts.map +0 -1
- package/dist/tabs-33zMuIHi.d.ts +0 -68
- package/dist/tabs-33zMuIHi.d.ts.map +0 -1
- package/dist/tabs-Cvy3-KIA.js.map +0 -1
- package/dist/tabs-jsmxQQW0.js +0 -2
- package/dist/tabs-jsmxQQW0.js.map +0 -1
- package/dist/tailwind-indicator-Dt4Bfpta.js.map +0 -1
- package/dist/unist-DN6buKAy.d.ts +0 -44
- package/dist/unist-DN6buKAy.d.ts.map +0 -1
- package/dist/use-colors-tvFBbu3S.d.ts.map +0 -1
- package/dist/use-lift-mode-DEELjsRA.d.ts.map +0 -1
- package/dist/use-meta-colors-CkNbJTgD.d.ts.map +0 -1
- package/dist/use-mounted-BtOuPtMk.d.ts.map +0 -1
- package/dist/utils-Ck5VSddf.js +0 -2
- package/dist/utils-Ck5VSddf.js.map +0 -1
- package/dist/utils-gls3XPIE.d.ts.map +0 -1
- package/src/components/copy-button/copy-button.tsx +0 -88
- package/src/components/copy-button/copy-button.types.ts +0 -17
- package/src/components/copy-button/index.ts +0 -2
- package/src/components/layouts/command-menu/command-menu.tsx +0 -166
- package/src/components/layouts/command-menu/index.ts +0 -1
- package/src/components/layouts/site-header/index.tsx +0 -127
- package/src/components/mdx/mdx-components/framework-docs.tsx +0 -20
- package/src/components/themes/index.ts +0 -1
- /package/dist/{code-CRijMbf8.js → code-B8oMaOlf.js} +0 -0
- /package/dist/{command-menu-DJNwkpf0.js → components/mdx/mdx-component-registry.types.js} +0 -0
- /package/dist/components/{copy-button/copy-button.types.js → mdx/mdx-components/code/pre-block/types.js} +0 -0
- /package/dist/{context-DAoDXLlH.js → context-BC4O8IkN.js} +0 -0
- /package/dist/{context.types-XX-41b7E.js → context.types-xqn674mu.js} +0 -0
- /package/dist/{copy-button-BKOhlef4.js → direction-BgdQqJSh.js} +0 -0
- /package/dist/{copy-button.types-B9s047di.js → docs-BxKlMynn.js} +0 -0
- /package/dist/{index-2DqdDmQN.d.ts → index-2ODhJ4PF.d.ts} +0 -0
- /package/dist/{index-CGglgRYd.d.ts → index-BCvK1fdV.d.ts} +0 -0
- /package/dist/{index-CX84Uo3j.d.ts → index-BOXZdgrl.d.ts} +0 -0
- /package/dist/{index-DOo6j0yP.d.ts → index-CDXWDYLH.d.ts} +0 -0
- /package/dist/{index-DUfvqU8v.d.ts → index-CEmd2iJF.d.ts} +0 -0
- /package/dist/{index-DlpwrdjG.d.ts → index-CMgWXPTi.d.ts} +0 -0
- /package/dist/{index-DxmiBoAj.d.ts → index-J4eIjbSW.d.ts} +0 -0
- /package/dist/{index-DzZbxTJ5.d.ts → index-PiDlmF8F.d.ts} +0 -0
- /package/dist/{docs-BXWvl6Zg.js → layouts-CZzkzPUj.js} +0 -0
- /package/dist/{layouts-MJSz-Ia5.js → mdx-components-DVXN21iW.js} +0 -0
- /package/dist/{mdx-components-Bvz2OZPf.js → mdx-runtime-8ZPauNCe.js} +0 -0
- /package/dist/{nav-CVNxjtXM.js → nav-n66GykpT.js} +0 -0
- /package/dist/{themes-k-j3m6gv.js → pre-block-B4y5yM69.js} +0 -0
- /package/dist/{unist-C_C48flD.js → types/mdx-runtime.js} +0 -0
- /package/dist/{index-MPFNOj9E.d.ts → typography-BjwZeImL.d.ts} +0 -0
- /package/src/components/layouts/{tailwind-indicator/index.tsx → tailwind-indicator.tsx} +0 -0
|
@@ -3,13 +3,29 @@
|
|
|
3
3
|
import { type DocsConfig, useDocsConfig } from '@duck-docs/context'
|
|
4
4
|
import type { SidebarNavItem } from '@duck-docs/types/nav'
|
|
5
5
|
import { cn } from '@gentleduck/libs/cn'
|
|
6
|
+
import { ChevronRight } from 'lucide-react'
|
|
6
7
|
import Link from 'next/link'
|
|
7
8
|
import { usePathname } from 'next/navigation'
|
|
9
|
+
import * as React from 'react'
|
|
8
10
|
|
|
9
11
|
export interface DocsSidebarNavProps {
|
|
10
12
|
config?: DocsConfig
|
|
11
13
|
}
|
|
12
14
|
|
|
15
|
+
function isPathActive(pathname: string, href: string) {
|
|
16
|
+
return pathname === href || (href !== '/docs' && pathname.startsWith(`${href}/`))
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function isPathCurrent(pathname: string, href: string) {
|
|
20
|
+
return pathname === href
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function hasActivePath(item: SidebarNavItem, pathname: string | null): boolean {
|
|
24
|
+
if (!pathname) return false
|
|
25
|
+
if (item.href && isPathActive(pathname, item.href)) return true
|
|
26
|
+
return Boolean(item.items?.some((child) => hasActivePath(child, pathname)))
|
|
27
|
+
}
|
|
28
|
+
|
|
13
29
|
export function DocsSidebarNav({ config }: DocsSidebarNavProps) {
|
|
14
30
|
const pathname = usePathname()
|
|
15
31
|
const fallbackConfig = useDocsConfig()
|
|
@@ -31,7 +47,7 @@ export function DocsSidebarNav({ config }: DocsSidebarNavProps) {
|
|
|
31
47
|
// Memoized category component to prevent unnecessary re-renders
|
|
32
48
|
const CategoryItem = ({ item, pathname }: { item: SidebarNavItem; pathname: string | null }) => {
|
|
33
49
|
return (
|
|
34
|
-
<div className="mb-2 flex flex-col
|
|
50
|
+
<div className="mb-2 flex flex-col">
|
|
35
51
|
<div className="flex h-[36px] w-full items-center justify-between text-start font-semibold text-sm [&>div]:w-full [&>div]:justify-between">
|
|
36
52
|
{item.title}
|
|
37
53
|
{item.label && (
|
|
@@ -41,7 +57,9 @@ const CategoryItem = ({ item, pathname }: { item: SidebarNavItem; pathname: stri
|
|
|
41
57
|
)}
|
|
42
58
|
</div>
|
|
43
59
|
<div className="border-l">
|
|
44
|
-
{item?.items?.length &&
|
|
60
|
+
{item?.items?.length && (
|
|
61
|
+
<DocsSidebarNavItems accordionDefault={Boolean(item.collapsible)} items={item.items} pathname={pathname} />
|
|
62
|
+
)}
|
|
45
63
|
</div>
|
|
46
64
|
</div>
|
|
47
65
|
)
|
|
@@ -51,55 +69,202 @@ interface DocsSidebarNavItemsProps {
|
|
|
51
69
|
items: SidebarNavItem[]
|
|
52
70
|
pathname: string | null
|
|
53
71
|
className?: string
|
|
72
|
+
depth?: number
|
|
73
|
+
accordionDefault?: boolean
|
|
54
74
|
}
|
|
55
75
|
|
|
56
|
-
export function DocsSidebarNavItems({
|
|
76
|
+
export function DocsSidebarNavItems({
|
|
77
|
+
items,
|
|
78
|
+
pathname,
|
|
79
|
+
className,
|
|
80
|
+
depth = 0,
|
|
81
|
+
accordionDefault = false,
|
|
82
|
+
}: DocsSidebarNavItemsProps) {
|
|
83
|
+
const activeAccordionIndex = React.useMemo(
|
|
84
|
+
() =>
|
|
85
|
+
items.findIndex((item) => {
|
|
86
|
+
const hasChildren = Boolean(item.items?.length)
|
|
87
|
+
const isAccordionItem = hasChildren && Boolean(item.collapsible ?? accordionDefault)
|
|
88
|
+
return isAccordionItem && hasActivePath(item, pathname)
|
|
89
|
+
}),
|
|
90
|
+
[items, pathname, accordionDefault],
|
|
91
|
+
)
|
|
92
|
+
|
|
57
93
|
return (
|
|
58
94
|
items?.length && (
|
|
59
|
-
<ul>
|
|
95
|
+
<ul className={cn(depth > 0 && 'ml-3 border-l', className)}>
|
|
60
96
|
{items.map((item, index) => (
|
|
61
|
-
<DocsSidebarNavItem
|
|
97
|
+
<DocsSidebarNavItem
|
|
98
|
+
accordionDefault={accordionDefault}
|
|
99
|
+
depth={depth}
|
|
100
|
+
forceClose={activeAccordionIndex !== -1 && activeAccordionIndex !== index}
|
|
101
|
+
forceOpen={activeAccordionIndex === index}
|
|
102
|
+
item={item}
|
|
103
|
+
key={index}
|
|
104
|
+
pathname={pathname}
|
|
105
|
+
/>
|
|
62
106
|
))}
|
|
63
107
|
</ul>
|
|
64
108
|
)
|
|
65
109
|
)
|
|
66
110
|
}
|
|
67
111
|
|
|
68
|
-
export function DocsSidebarNavItem({
|
|
112
|
+
export function DocsSidebarNavItem({
|
|
113
|
+
item,
|
|
114
|
+
pathname,
|
|
115
|
+
depth = 0,
|
|
116
|
+
accordionDefault = false,
|
|
117
|
+
forceOpen = false,
|
|
118
|
+
forceClose = false,
|
|
119
|
+
}: {
|
|
120
|
+
item: SidebarNavItem
|
|
121
|
+
pathname: string | null
|
|
122
|
+
depth?: number
|
|
123
|
+
accordionDefault?: boolean
|
|
124
|
+
forceOpen?: boolean
|
|
125
|
+
forceClose?: boolean
|
|
126
|
+
}) {
|
|
127
|
+
const hasChildren = Boolean(item.items?.length)
|
|
128
|
+
const isAccordionItem = hasChildren && Boolean(item.collapsible ?? accordionDefault)
|
|
129
|
+
const isCurrent = Boolean(pathname && item.href && isPathCurrent(pathname, item.href))
|
|
130
|
+
const isActiveBranch = hasActivePath(item, pathname)
|
|
131
|
+
const isActive = isCurrent || (hasChildren && isActiveBranch)
|
|
132
|
+
const [isOpen, setIsOpen] = React.useState(() => {
|
|
133
|
+
if (!isAccordionItem) return true
|
|
134
|
+
return isActiveBranch || Boolean(item.defaultOpen)
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
React.useEffect(() => {
|
|
138
|
+
if (!isAccordionItem) return
|
|
139
|
+
if (forceOpen || isActiveBranch) {
|
|
140
|
+
setIsOpen(true)
|
|
141
|
+
return
|
|
142
|
+
}
|
|
143
|
+
if (forceClose) {
|
|
144
|
+
setIsOpen(false)
|
|
145
|
+
}
|
|
146
|
+
}, [isAccordionItem, forceOpen, forceClose, isActiveBranch])
|
|
147
|
+
|
|
69
148
|
if (item.href && !item.disabled) {
|
|
70
149
|
return (
|
|
71
|
-
<li className={cn(
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
150
|
+
<li className={cn(isActive && 'border-primary border-l')}>
|
|
151
|
+
<div className="flex items-center">
|
|
152
|
+
<Link
|
|
153
|
+
aria-current={isCurrent ? 'page' : undefined}
|
|
154
|
+
className={cn(
|
|
155
|
+
'group flex w-full items-center border-primary px-4 py-1 font-medium text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
|
|
156
|
+
depth > 0 && 'px-3',
|
|
157
|
+
isActive ? 'font-medium text-foreground' : 'text-muted-foreground',
|
|
158
|
+
)}
|
|
159
|
+
href={item.href}
|
|
160
|
+
scroll
|
|
161
|
+
rel={item.external ? 'noreferrer' : ''}
|
|
162
|
+
target={item.external ? '_blank' : ''}>
|
|
163
|
+
{item.title}
|
|
164
|
+
{item.label && (
|
|
165
|
+
<span className="ml-2 rounded-md bg-primary px-1.5 py-0.5 font-medium text-accent text-xs leading-none no-underline group-hover:no-underline">
|
|
166
|
+
{item.label}
|
|
167
|
+
</span>
|
|
168
|
+
)}
|
|
169
|
+
{item.external && <span className="sr-only"> (opens in a new tab)</span>}
|
|
170
|
+
</Link>
|
|
171
|
+
{isAccordionItem && (
|
|
172
|
+
<button
|
|
173
|
+
aria-expanded={isOpen}
|
|
174
|
+
aria-label={`Toggle ${item.title}`}
|
|
175
|
+
className="relative mr-1 inline-flex size-6 items-center justify-center rounded-sm text-muted-foreground transition-colors after:absolute after:-inset-2 after:content-[''] hover:bg-accent hover:text-foreground"
|
|
176
|
+
onClick={(event) => {
|
|
177
|
+
event.preventDefault()
|
|
178
|
+
event.stopPropagation()
|
|
179
|
+
setIsOpen((open) => !open)
|
|
180
|
+
}}
|
|
181
|
+
type="button">
|
|
182
|
+
<ChevronRight aria-hidden="true" className={cn('size-3 transition-transform', isOpen && 'rotate-90')} />
|
|
183
|
+
</button>
|
|
76
184
|
)}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
185
|
+
</div>
|
|
186
|
+
{hasChildren &&
|
|
187
|
+
(isAccordionItem ? (
|
|
188
|
+
<AnimatedHeightCollapse open={isOpen}>
|
|
189
|
+
<DocsSidebarNavItems
|
|
190
|
+
accordionDefault={accordionDefault}
|
|
191
|
+
depth={depth + 1}
|
|
192
|
+
items={item.items ?? []}
|
|
193
|
+
pathname={pathname}
|
|
194
|
+
/>
|
|
195
|
+
</AnimatedHeightCollapse>
|
|
196
|
+
) : (
|
|
197
|
+
<DocsSidebarNavItems
|
|
198
|
+
accordionDefault={accordionDefault}
|
|
199
|
+
depth={depth + 1}
|
|
200
|
+
items={item.items ?? []}
|
|
201
|
+
pathname={pathname}
|
|
202
|
+
/>
|
|
203
|
+
))}
|
|
204
|
+
</li>
|
|
205
|
+
)
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return (
|
|
209
|
+
<li>
|
|
210
|
+
<div className="flex items-center">
|
|
211
|
+
<span
|
|
212
|
+
className={cn(
|
|
213
|
+
'flex w-full cursor-not-allowed items-center rounded-md p-2 text-muted-foreground hover:underline',
|
|
214
|
+
depth > 0 && 'px-3',
|
|
215
|
+
)}>
|
|
81
216
|
{item.title}
|
|
82
217
|
{item.label && (
|
|
83
|
-
<span className="ml-2 rounded-md bg-
|
|
218
|
+
<span className="ml-2 rounded-md bg-muted px-1.5 py-0.5 text-muted-foreground text-sm leading-none no-underline group-hover:no-underline">
|
|
84
219
|
{item.label}
|
|
85
220
|
</span>
|
|
86
221
|
)}
|
|
87
|
-
</
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
222
|
+
</span>
|
|
223
|
+
{isAccordionItem && (
|
|
224
|
+
<button
|
|
225
|
+
aria-expanded={isOpen}
|
|
226
|
+
aria-label={`Toggle ${item.title}`}
|
|
227
|
+
className="relative mr-1 inline-flex size-6 items-center justify-center rounded-sm text-muted-foreground transition-colors after:absolute after:-inset-2 after:content-[''] hover:bg-accent hover:text-foreground"
|
|
228
|
+
onClick={() => {
|
|
229
|
+
setIsOpen((open) => !open)
|
|
230
|
+
}}
|
|
231
|
+
type="button">
|
|
232
|
+
<ChevronRight aria-hidden="true" className={cn('size-3 transition-transform', isOpen && 'rotate-90')} />
|
|
233
|
+
</button>
|
|
234
|
+
)}
|
|
235
|
+
</div>
|
|
236
|
+
{hasChildren &&
|
|
237
|
+
(isAccordionItem ? (
|
|
238
|
+
<AnimatedHeightCollapse open={isOpen}>
|
|
239
|
+
<DocsSidebarNavItems
|
|
240
|
+
accordionDefault={accordionDefault}
|
|
241
|
+
depth={depth + 1}
|
|
242
|
+
items={item.items ?? []}
|
|
243
|
+
pathname={pathname}
|
|
244
|
+
/>
|
|
245
|
+
</AnimatedHeightCollapse>
|
|
246
|
+
) : (
|
|
247
|
+
<DocsSidebarNavItems
|
|
248
|
+
accordionDefault={accordionDefault}
|
|
249
|
+
depth={depth + 1}
|
|
250
|
+
items={item.items ?? []}
|
|
251
|
+
pathname={pathname}
|
|
252
|
+
/>
|
|
253
|
+
))}
|
|
254
|
+
</li>
|
|
255
|
+
)
|
|
256
|
+
}
|
|
91
257
|
|
|
258
|
+
function AnimatedHeightCollapse({ open, children }: { open: boolean; children: React.ReactNode }) {
|
|
92
259
|
return (
|
|
93
|
-
<
|
|
260
|
+
<div
|
|
261
|
+
aria-hidden={!open}
|
|
94
262
|
className={cn(
|
|
95
|
-
'
|
|
96
|
-
|
|
97
|
-
{item.title}
|
|
98
|
-
{item.label && (
|
|
99
|
-
<span className="ml-2 rounded-md bg-muted px-1.5 py-0.5 text-muted-foreground text-sm leading-none no-underline group-hover:no-underline">
|
|
100
|
-
{item.label}
|
|
101
|
-
</span>
|
|
263
|
+
'grid transition-[grid-template-rows] duration-300 ease-(--duck-motion-ease)',
|
|
264
|
+
open ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',
|
|
102
265
|
)}
|
|
103
|
-
|
|
266
|
+
inert={!open || undefined}>
|
|
267
|
+
<div className={cn('overflow-hidden', !open && 'invisible')}>{children}</div>
|
|
268
|
+
</div>
|
|
104
269
|
)
|
|
105
270
|
}
|
|
@@ -3,35 +3,44 @@
|
|
|
3
3
|
import type { TocEntry } from '@duck-docs/context'
|
|
4
4
|
import { useMounted } from '@duck-docs/hooks/use-mounted'
|
|
5
5
|
import { cn } from '@gentleduck/libs/cn'
|
|
6
|
+
import { BookOpenText } from 'lucide-react'
|
|
6
7
|
import * as React from 'react'
|
|
7
8
|
|
|
9
|
+
// -- Types -------------------------------------------------------------------
|
|
10
|
+
|
|
8
11
|
interface TocProps {
|
|
9
12
|
toc: TocEntry[]
|
|
10
13
|
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.flatMap((item) => [item.url, item?.items?.map((item) => item.url)])
|
|
18
|
-
.flat()
|
|
19
|
-
.filter(Boolean)
|
|
20
|
-
.map((id) => id?.split('#')[1])
|
|
21
|
-
: [],
|
|
22
|
-
[toc],
|
|
23
|
-
)
|
|
24
|
-
const activeHeading = useActiveItem(itemIds)
|
|
25
|
-
const mounted = useMounted()
|
|
15
|
+
interface FlatTocItem {
|
|
16
|
+
url: string
|
|
17
|
+
title: string
|
|
18
|
+
depth: number
|
|
19
|
+
}
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
// -- Helpers -----------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
function flattenToc(toc: TocEntry[], depth = 1): FlatTocItem[] {
|
|
24
|
+
const result: FlatTocItem[] = []
|
|
25
|
+
for (const entry of toc) {
|
|
26
|
+
result.push({ url: entry.url, title: entry.title, depth })
|
|
27
|
+
if (entry.items && depth < 2) {
|
|
28
|
+
result.push(...flattenToc(entry.items, depth + 1))
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return result
|
|
33
32
|
}
|
|
34
33
|
|
|
34
|
+
function lineOffset(depth: number): number {
|
|
35
|
+
return depth >= 2 ? 12 : 0
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function itemPadding(depth: number): number {
|
|
39
|
+
return depth >= 2 ? 28 : 16
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// -- Hooks -------------------------------------------------------------------
|
|
43
|
+
|
|
35
44
|
function useActiveItem(itemIds: (string | undefined)[]) {
|
|
36
45
|
const [activeId, setActiveId] = React.useState<string>('')
|
|
37
46
|
|
|
@@ -44,30 +53,20 @@ function useActiveItem(itemIds: (string | undefined)[]) {
|
|
|
44
53
|
}
|
|
45
54
|
})
|
|
46
55
|
},
|
|
47
|
-
{ rootMargin:
|
|
56
|
+
{ rootMargin: '0% 0% -80% 0%' },
|
|
48
57
|
)
|
|
49
58
|
|
|
50
59
|
itemIds?.forEach((id) => {
|
|
51
|
-
if (!id)
|
|
52
|
-
return
|
|
53
|
-
}
|
|
54
|
-
|
|
60
|
+
if (!id) return
|
|
55
61
|
const element = document.getElementById(id)
|
|
56
|
-
if (element)
|
|
57
|
-
observer.observe(element)
|
|
58
|
-
}
|
|
62
|
+
if (element) observer.observe(element)
|
|
59
63
|
})
|
|
60
64
|
|
|
61
65
|
return () => {
|
|
62
66
|
itemIds?.forEach((id) => {
|
|
63
|
-
if (!id)
|
|
64
|
-
return
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
+
if (!id) return
|
|
67
68
|
const element = document.getElementById(id)
|
|
68
|
-
if (element)
|
|
69
|
-
observer.unobserve(element)
|
|
70
|
-
}
|
|
69
|
+
if (element) observer.unobserve(element)
|
|
71
70
|
})
|
|
72
71
|
}
|
|
73
72
|
}, [itemIds])
|
|
@@ -75,30 +74,208 @@ function useActiveItem(itemIds: (string | undefined)[]) {
|
|
|
75
74
|
return activeId
|
|
76
75
|
}
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
function useTocThumb(containerRef: React.RefObject<HTMLDivElement | null>, activeItem: string): [number, number] {
|
|
78
|
+
const [pos, setPos] = React.useState<[number, number]>([0, 0])
|
|
79
|
+
|
|
80
|
+
React.useEffect(() => {
|
|
81
|
+
const container = containerRef.current
|
|
82
|
+
if (!activeItem || !container || container.clientHeight === 0) {
|
|
83
|
+
setPos([0, 0])
|
|
84
|
+
return
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const el = container.querySelector<HTMLElement>(`a[href="#${activeItem}"]`)
|
|
88
|
+
if (!el) {
|
|
89
|
+
setPos([0, 0])
|
|
90
|
+
return
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const styles = getComputedStyle(el)
|
|
94
|
+
const top = el.offsetTop + parseFloat(styles.paddingTop)
|
|
95
|
+
const bottom = el.offsetTop + el.clientHeight - parseFloat(styles.paddingBottom)
|
|
96
|
+
setPos([top, bottom - top])
|
|
97
|
+
}, [activeItem, containerRef])
|
|
98
|
+
|
|
99
|
+
return pos
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function useTocSvg(containerRef: React.RefObject<HTMLDivElement | null>, items: FlatTocItem[]) {
|
|
103
|
+
const [svg, setSvg] = React.useState<{ path: string; width: number; height: number } | null>(null)
|
|
104
|
+
|
|
105
|
+
React.useEffect(() => {
|
|
106
|
+
const container = containerRef.current
|
|
107
|
+
if (!container || container.clientHeight === 0) return
|
|
108
|
+
|
|
109
|
+
function compute() {
|
|
110
|
+
if (!container) return
|
|
111
|
+
let w = 0
|
|
112
|
+
let h = 0
|
|
113
|
+
const d: string[] = []
|
|
114
|
+
let previousOffset = 0
|
|
115
|
+
let previousBottom = 0
|
|
116
|
+
let hasStarted = false
|
|
117
|
+
|
|
118
|
+
for (const item of items) {
|
|
119
|
+
const el = container.querySelector<HTMLElement>(`a[href="${item.url}"]`)
|
|
120
|
+
if (!el) continue
|
|
121
|
+
|
|
122
|
+
const styles = getComputedStyle(el)
|
|
123
|
+
const offset = lineOffset(item.depth) + 1
|
|
124
|
+
const top = el.offsetTop + parseFloat(styles.paddingTop)
|
|
125
|
+
const bottom = el.offsetTop + el.clientHeight - parseFloat(styles.paddingBottom)
|
|
126
|
+
|
|
127
|
+
w = Math.max(offset, w)
|
|
128
|
+
h = Math.max(h, bottom)
|
|
129
|
+
|
|
130
|
+
if (!hasStarted) {
|
|
131
|
+
d.push(`M${offset} ${top}`)
|
|
132
|
+
d.push(`L${offset} ${bottom}`)
|
|
133
|
+
hasStarted = true
|
|
134
|
+
} else {
|
|
135
|
+
// Connect stacked items (including depth changes) with one continuous path.
|
|
136
|
+
if (top !== previousBottom || offset !== previousOffset) {
|
|
137
|
+
d.push(`L${offset} ${top}`)
|
|
138
|
+
}
|
|
139
|
+
d.push(`L${offset} ${bottom}`)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
previousOffset = offset
|
|
143
|
+
previousBottom = bottom
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
setSvg(d.length > 0 ? { path: d.join(' '), width: w + 1, height: h } : null)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const observer = new ResizeObserver(compute)
|
|
150
|
+
compute()
|
|
151
|
+
observer.observe(container)
|
|
152
|
+
return () => observer.disconnect()
|
|
153
|
+
}, [items])
|
|
154
|
+
|
|
155
|
+
return svg
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// -- Skeleton ----------------------------------------------------------------
|
|
159
|
+
|
|
160
|
+
function TocSkeleton({ toc }: TocProps) {
|
|
161
|
+
const skeletonItems = React.useMemo(() => {
|
|
162
|
+
const items: { level: number; width: string }[] = []
|
|
163
|
+
for (const entry of toc) {
|
|
164
|
+
const chars = entry.title.length
|
|
165
|
+
items.push({ level: 1, width: `${Math.min(Math.max(chars * 8, 80), 200)}px` })
|
|
166
|
+
if (entry.items) {
|
|
167
|
+
for (const sub of entry.items) {
|
|
168
|
+
const subChars = sub.title.length
|
|
169
|
+
items.push({ level: 2, width: `${Math.min(Math.max(subChars * 7, 64), 160)}px` })
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return items
|
|
174
|
+
}, [toc])
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
<ul className="m-0 list-none">
|
|
178
|
+
{skeletonItems.map((item, i) => (
|
|
179
|
+
<li key={i} className={cn('mt-0 pt-2', { 'pl-4': item.level > 1 })}>
|
|
180
|
+
<div className="h-3.5 animate-pulse rounded-full bg-muted/70" style={{ width: item.width }} />
|
|
181
|
+
</li>
|
|
182
|
+
))}
|
|
183
|
+
</ul>
|
|
184
|
+
)
|
|
82
185
|
}
|
|
83
186
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
187
|
+
// -- TocTree -----------------------------------------------------------------
|
|
188
|
+
|
|
189
|
+
function TocTree({ items, activeItem }: { items: FlatTocItem[]; activeItem: string }) {
|
|
190
|
+
const containerRef = React.useRef<HTMLDivElement>(null)
|
|
191
|
+
const thumb = useTocThumb(containerRef, activeItem)
|
|
192
|
+
const svg = useTocSvg(containerRef, items)
|
|
193
|
+
|
|
194
|
+
return (
|
|
195
|
+
<div ref={containerRef} className="relative">
|
|
196
|
+
{/* Shared SVG track for smoother joins and anti-aliased rendering */}
|
|
197
|
+
{svg ? (
|
|
198
|
+
<svg
|
|
199
|
+
aria-hidden="true"
|
|
200
|
+
className="pointer-events-none absolute start-0 top-0"
|
|
201
|
+
height={svg.height}
|
|
202
|
+
style={{ width: svg.width }}
|
|
203
|
+
viewBox={`0 0 ${svg.width} ${svg.height}`}
|
|
204
|
+
width={svg.width}>
|
|
205
|
+
<path
|
|
206
|
+
d={svg.path}
|
|
207
|
+
fill="none"
|
|
208
|
+
stroke="currentColor"
|
|
209
|
+
strokeLinecap="round"
|
|
210
|
+
strokeLinejoin="round"
|
|
211
|
+
strokeWidth={1}
|
|
212
|
+
className="text-muted-foreground/20"
|
|
213
|
+
/>
|
|
214
|
+
</svg>
|
|
215
|
+
) : null}
|
|
216
|
+
|
|
217
|
+
{/* Link labels */}
|
|
218
|
+
{items.map((item, i) => {
|
|
88
219
|
return (
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
220
|
+
<a
|
|
221
|
+
key={i}
|
|
222
|
+
href={item.url}
|
|
223
|
+
className={cn(
|
|
224
|
+
'relative block py-1.5 no-underline transition-colors [overflow-wrap:anywhere]',
|
|
225
|
+
item.url === `#${activeItem}`
|
|
226
|
+
? 'font-medium text-primary'
|
|
227
|
+
: 'text-muted-foreground text-sm hover:text-foreground',
|
|
228
|
+
)}
|
|
229
|
+
style={{ paddingInlineStart: `${itemPadding(item.depth)}px` }}>
|
|
230
|
+
{item.title}
|
|
231
|
+
</a>
|
|
100
232
|
)
|
|
101
233
|
})}
|
|
102
|
-
|
|
103
|
-
|
|
234
|
+
|
|
235
|
+
{/* Active highlight -- masked by the SVG path */}
|
|
236
|
+
{svg ? (
|
|
237
|
+
<div
|
|
238
|
+
aria-hidden="true"
|
|
239
|
+
className="pointer-events-none absolute start-0 top-0"
|
|
240
|
+
style={{
|
|
241
|
+
width: svg.width,
|
|
242
|
+
height: svg.height,
|
|
243
|
+
maskImage: `url("data:image/svg+xml,${encodeURIComponent(
|
|
244
|
+
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="2" fill="none" /></svg>`,
|
|
245
|
+
)}")`,
|
|
246
|
+
}}>
|
|
247
|
+
<div
|
|
248
|
+
className="bg-primary transition-all duration-300 ease-out"
|
|
249
|
+
style={{
|
|
250
|
+
marginTop: thumb[0],
|
|
251
|
+
height: thumb[1],
|
|
252
|
+
}}
|
|
253
|
+
/>
|
|
254
|
+
</div>
|
|
255
|
+
) : null}
|
|
256
|
+
</div>
|
|
257
|
+
)
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// -- Main component ----------------------------------------------------------
|
|
261
|
+
|
|
262
|
+
export function DashboardTableOfContents({ toc }: TocProps) {
|
|
263
|
+
const flatItems = React.useMemo(() => flattenToc(toc), [toc])
|
|
264
|
+
const itemIds = React.useMemo(() => flatItems.map((item) => item.url.split('#')[1]).filter(Boolean), [flatItems])
|
|
265
|
+
const activeHeading = useActiveItem(itemIds)
|
|
266
|
+
const mounted = useMounted()
|
|
267
|
+
|
|
268
|
+
if (!toc.length) return null
|
|
269
|
+
|
|
270
|
+
return (
|
|
271
|
+
<div className="flex min-h-0 flex-1 flex-col gap-2">
|
|
272
|
+
<div className="flex shrink-0 items-center gap-2">
|
|
273
|
+
<BookOpenText aria-hidden="true" className="size-4" />
|
|
274
|
+
<p className="font-medium">On This Page</p>
|
|
275
|
+
</div>
|
|
276
|
+
<div className="min-h-0 flex-1 overflow-y-auto">
|
|
277
|
+
{mounted ? <TocTree activeItem={activeHeading} items={flatItems} /> : <TocSkeleton toc={toc} />}
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
)
|
|
104
281
|
}
|
|
File without changes
|