@fumadocs/base-ui 16.6.17 → 16.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/generated/docs.css +64 -34
- package/css/generated/flux.css +36 -32
- package/css/generated/home.css +39 -55
- package/css/generated/notebook.css +58 -33
- package/css/generated/shared.css +42 -24
- package/dist/components/accordion.d.ts +1 -2
- package/dist/components/accordion.js +2 -4
- package/dist/components/banner.d.ts +1 -2
- package/dist/components/banner.js +0 -2
- package/dist/components/callout.d.ts +1 -2
- package/dist/components/callout.js +0 -2
- package/dist/components/card.d.ts +1 -2
- package/dist/components/card.js +0 -2
- package/dist/components/codeblock.d.ts +1 -2
- package/dist/components/codeblock.js +0 -2
- package/dist/components/codeblock.rsc.d.ts +1 -2
- package/dist/components/codeblock.rsc.js +1 -2
- package/dist/components/dialog/search-algolia.d.ts +1 -2
- package/dist/components/dialog/search-algolia.js +0 -2
- package/dist/components/dialog/search-default.d.ts +1 -2
- package/dist/components/dialog/search-default.js +0 -2
- package/dist/components/dialog/search-orama.d.ts +1 -2
- package/dist/components/dialog/search-orama.js +0 -2
- package/dist/components/dialog/search.d.ts +1 -2
- package/dist/components/dialog/search.js +2 -4
- package/dist/components/dynamic-codeblock.core.d.ts +7 -5
- package/dist/components/dynamic-codeblock.core.js +16 -29
- package/dist/components/dynamic-codeblock.d.ts +5 -3
- package/dist/components/dynamic-codeblock.js +7 -10
- package/dist/components/files.d.ts +1 -2
- package/dist/components/files.js +3 -5
- package/dist/components/github-info.d.ts +22 -9
- package/dist/components/github-info.js +33 -27
- package/dist/components/heading.d.ts +1 -2
- package/dist/components/heading.js +2 -4
- package/dist/components/image-zoom.d.ts +1 -2
- package/dist/components/image-zoom.js +0 -2
- package/dist/components/inline-toc.d.ts +1 -2
- package/dist/components/inline-toc.js +0 -2
- package/dist/components/sidebar/base.d.ts +1 -2
- package/dist/components/sidebar/base.js +0 -2
- package/dist/components/sidebar/link-item.d.ts +2 -3
- package/dist/components/sidebar/link-item.js +3 -4
- package/dist/components/sidebar/page-tree.d.ts +1 -2
- package/dist/components/sidebar/page-tree.js +0 -2
- package/dist/components/sidebar/tabs/dropdown.d.ts +4 -7
- package/dist/components/sidebar/tabs/dropdown.js +3 -8
- package/dist/components/sidebar/tabs/index.d.ts +3 -17
- package/dist/components/sidebar/tabs/index.js +0 -2
- package/dist/components/steps.d.ts +1 -2
- package/dist/components/steps.js +0 -2
- package/dist/components/tabs.d.ts +1 -2
- package/dist/components/tabs.js +0 -2
- package/dist/components/toc/clerk.d.ts +1 -2
- package/dist/components/toc/clerk.js +0 -2
- package/dist/components/toc/default.d.ts +1 -2
- package/dist/components/toc/default.js +0 -2
- package/dist/components/toc/index.d.ts +4 -3
- package/dist/components/toc/index.js +3 -4
- package/dist/components/type-table.d.ts +1 -2
- package/dist/components/type-table.js +0 -2
- package/dist/components/ui/accordion.d.ts +1 -2
- package/dist/components/ui/accordion.js +0 -2
- package/dist/components/ui/button.d.ts +1 -2
- package/dist/components/ui/button.js +0 -2
- package/dist/components/ui/collapsible.d.ts +1 -2
- package/dist/components/ui/collapsible.js +0 -2
- package/dist/components/ui/navigation-menu.d.ts +5 -3
- package/dist/components/ui/navigation-menu.js +13 -4
- package/dist/components/ui/popover.d.ts +1 -2
- package/dist/components/ui/popover.js +0 -2
- package/dist/components/ui/scroll-area.d.ts +1 -2
- package/dist/components/ui/scroll-area.js +0 -2
- package/dist/components/ui/tabs.d.ts +1 -2
- package/dist/components/ui/tabs.js +0 -2
- package/dist/contexts/i18n.d.ts +7 -5
- package/dist/contexts/i18n.js +2 -5
- package/dist/contexts/search.d.ts +1 -2
- package/dist/contexts/search.js +0 -2
- package/dist/contexts/tree.d.ts +1 -2
- package/dist/contexts/tree.js +0 -2
- package/dist/i18n.d.ts +11 -8
- package/dist/i18n.js +2 -4
- package/dist/layouts/docs/client.d.ts +28 -30
- package/dist/layouts/docs/client.js +66 -42
- package/dist/layouts/docs/index.d.ts +19 -33
- package/dist/layouts/docs/index.js +16 -171
- package/dist/layouts/docs/page/client.d.ts +87 -37
- package/dist/layouts/docs/page/client.js +76 -191
- package/dist/layouts/docs/page/index.d.ts +5 -82
- package/dist/layouts/docs/page/index.js +9 -51
- package/dist/layouts/docs/page/slots/breadcrumb.d.ts +14 -0
- package/dist/layouts/docs/page/slots/breadcrumb.js +43 -0
- package/dist/layouts/docs/page/slots/container.d.ts +7 -0
- package/dist/layouts/docs/page/slots/container.js +16 -0
- package/dist/layouts/docs/page/slots/footer.d.ts +23 -0
- package/dist/layouts/docs/page/slots/footer.js +55 -0
- package/dist/layouts/docs/page/slots/toc.d.ts +55 -0
- package/dist/layouts/docs/page/slots/toc.js +161 -0
- package/dist/layouts/docs/slots/container.d.ts +7 -0
- package/dist/layouts/docs/slots/container.js +28 -0
- package/dist/layouts/docs/slots/header.d.ts +8 -0
- package/dist/layouts/docs/slots/header.js +37 -0
- package/dist/layouts/docs/slots/sidebar.d.ts +30 -0
- package/dist/layouts/docs/slots/sidebar.js +329 -0
- package/dist/layouts/flux/index.d.ts +34 -38
- package/dist/layouts/flux/index.js +71 -95
- package/dist/layouts/flux/page/client.d.ts +72 -35
- package/dist/layouts/flux/page/client.js +60 -219
- package/dist/layouts/flux/page/index.d.ts +6 -75
- package/dist/layouts/flux/page/index.js +5 -30
- package/dist/layouts/flux/page/slots/breadcrumb.d.ts +14 -0
- package/dist/layouts/flux/page/slots/breadcrumb.js +43 -0
- package/dist/layouts/flux/page/slots/container.d.ts +7 -0
- package/dist/layouts/flux/page/slots/container.js +16 -0
- package/dist/layouts/flux/page/slots/footer.d.ts +23 -0
- package/dist/layouts/flux/page/slots/footer.js +55 -0
- package/dist/layouts/flux/page/slots/toc.d.ts +31 -0
- package/dist/layouts/flux/page/slots/toc.js +169 -0
- package/dist/layouts/flux/slots/container.d.ts +7 -0
- package/dist/layouts/flux/slots/container.js +12 -0
- package/dist/layouts/flux/slots/sidebar.d.ts +23 -0
- package/dist/layouts/flux/{sidebar.js → slots/sidebar.js} +68 -25
- package/dist/layouts/flux/slots/tab-dropdown.d.ts +17 -0
- package/dist/layouts/flux/{tab-dropdown.js → slots/tab-dropdown.js} +11 -20
- package/dist/layouts/home/index.d.ts +24 -7
- package/dist/layouts/home/index.js +36 -18
- package/dist/layouts/home/navbar.d.ts +3 -10
- package/dist/layouts/home/navbar.js +17 -14
- package/dist/layouts/home/not-found.d.ts +1 -2
- package/dist/layouts/home/not-found.js +0 -2
- package/dist/layouts/home/slots/container.d.ts +7 -0
- package/dist/layouts/home/slots/container.js +12 -0
- package/dist/layouts/home/slots/header.d.ts +12 -0
- package/dist/layouts/home/slots/header.js +232 -0
- package/dist/layouts/notebook/client.d.ts +31 -43
- package/dist/layouts/notebook/client.js +54 -144
- package/dist/layouts/notebook/index.d.ts +25 -24
- package/dist/layouts/notebook/index.js +16 -211
- package/dist/layouts/notebook/page/client.d.ts +87 -37
- package/dist/layouts/notebook/page/client.js +76 -191
- package/dist/layouts/notebook/page/index.d.ts +6 -82
- package/dist/layouts/notebook/page/index.js +12 -51
- package/dist/layouts/notebook/page/slots/breadcrumb.d.ts +14 -0
- package/dist/layouts/notebook/page/slots/breadcrumb.js +43 -0
- package/dist/layouts/notebook/page/slots/container.d.ts +7 -0
- package/dist/layouts/notebook/page/slots/container.js +16 -0
- package/dist/layouts/notebook/page/slots/footer.d.ts +23 -0
- package/dist/layouts/notebook/page/slots/footer.js +55 -0
- package/dist/layouts/notebook/page/slots/toc.d.ts +55 -0
- package/dist/layouts/notebook/page/slots/toc.js +160 -0
- package/dist/layouts/notebook/slots/container.d.ts +7 -0
- package/dist/layouts/notebook/slots/container.js +30 -0
- package/dist/layouts/notebook/slots/header.d.ts +8 -0
- package/dist/layouts/notebook/slots/header.js +194 -0
- package/dist/layouts/notebook/slots/sidebar.d.ts +40 -0
- package/dist/layouts/notebook/slots/sidebar.js +307 -0
- package/dist/layouts/shared/client.d.ts +45 -0
- package/dist/layouts/shared/client.js +84 -0
- package/dist/layouts/shared/index.d.ts +134 -32
- package/dist/layouts/shared/index.js +49 -16
- package/dist/layouts/shared/page-actions.d.ts +1 -2
- package/dist/layouts/shared/page-actions.js +10 -6
- package/dist/layouts/shared/slots/language-select.d.ts +10 -0
- package/dist/layouts/shared/{language-toggle.js → slots/language-select.js} +10 -12
- package/dist/layouts/shared/slots/search-trigger.d.ts +23 -0
- package/dist/layouts/shared/{search-toggle.js → slots/search-trigger.js} +9 -11
- package/dist/layouts/shared/slots/theme-switch.d.ts +14 -0
- package/dist/layouts/shared/{theme-toggle.js → slots/theme-switch.js} +4 -6
- package/dist/mdx.d.ts +1 -2
- package/dist/mdx.js +0 -2
- package/dist/mdx.server.d.ts +1 -2
- package/dist/mdx.server.js +0 -2
- package/dist/og/takumi.d.ts +1 -2
- package/dist/og/takumi.js +0 -2
- package/dist/og.d.ts +1 -2
- package/dist/og.js +0 -2
- package/dist/page.d.ts +4 -4
- package/dist/page.js +5 -7
- package/dist/provider/base.d.ts +1 -2
- package/dist/provider/base.js +1 -3
- package/dist/provider/next.d.ts +1 -2
- package/dist/provider/next.js +0 -2
- package/dist/provider/react-router.d.ts +1 -2
- package/dist/provider/react-router.js +0 -2
- package/dist/provider/tanstack.d.ts +1 -2
- package/dist/provider/tanstack.js +0 -2
- package/dist/provider/waku.d.ts +1 -2
- package/dist/provider/waku.js +0 -2
- package/dist/style.css +83 -89
- package/dist/utils/merge-refs.js +0 -2
- package/dist/utils/urls.js +0 -2
- package/dist/utils/use-copy-button.d.ts +1 -2
- package/dist/utils/use-copy-button.js +0 -2
- package/dist/utils/use-footer-items.d.ts +1 -2
- package/dist/utils/use-footer-items.js +0 -2
- package/dist/utils/use-is-scroll-top.d.ts +1 -2
- package/dist/utils/use-is-scroll-top.js +0 -2
- package/package.json +103 -85
- package/dist/components/accordion.d.ts.map +0 -1
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/banner.d.ts.map +0 -1
- package/dist/components/banner.js.map +0 -1
- package/dist/components/callout.d.ts.map +0 -1
- package/dist/components/callout.js.map +0 -1
- package/dist/components/card.d.ts.map +0 -1
- package/dist/components/card.js.map +0 -1
- package/dist/components/codeblock.d.ts.map +0 -1
- package/dist/components/codeblock.js.map +0 -1
- package/dist/components/codeblock.rsc.d.ts.map +0 -1
- package/dist/components/codeblock.rsc.js.map +0 -1
- package/dist/components/dialog/search-algolia.d.ts.map +0 -1
- package/dist/components/dialog/search-algolia.js.map +0 -1
- package/dist/components/dialog/search-default.d.ts.map +0 -1
- package/dist/components/dialog/search-default.js.map +0 -1
- package/dist/components/dialog/search-orama.d.ts.map +0 -1
- package/dist/components/dialog/search-orama.js.map +0 -1
- package/dist/components/dialog/search.d.ts.map +0 -1
- package/dist/components/dialog/search.js.map +0 -1
- package/dist/components/dynamic-codeblock.core.d.ts.map +0 -1
- package/dist/components/dynamic-codeblock.core.js.map +0 -1
- package/dist/components/dynamic-codeblock.d.ts.map +0 -1
- package/dist/components/dynamic-codeblock.js.map +0 -1
- package/dist/components/files.d.ts.map +0 -1
- package/dist/components/files.js.map +0 -1
- package/dist/components/github-info.d.ts.map +0 -1
- package/dist/components/github-info.js.map +0 -1
- package/dist/components/heading.d.ts.map +0 -1
- package/dist/components/heading.js.map +0 -1
- package/dist/components/image-zoom.d.ts.map +0 -1
- package/dist/components/image-zoom.js.map +0 -1
- package/dist/components/inline-toc.d.ts.map +0 -1
- package/dist/components/inline-toc.js.map +0 -1
- package/dist/components/sidebar/base.d.ts.map +0 -1
- package/dist/components/sidebar/base.js.map +0 -1
- package/dist/components/sidebar/link-item.d.ts.map +0 -1
- package/dist/components/sidebar/link-item.js.map +0 -1
- package/dist/components/sidebar/page-tree.d.ts.map +0 -1
- package/dist/components/sidebar/page-tree.js.map +0 -1
- package/dist/components/sidebar/tabs/dropdown.d.ts.map +0 -1
- package/dist/components/sidebar/tabs/dropdown.js.map +0 -1
- package/dist/components/sidebar/tabs/index.d.ts.map +0 -1
- package/dist/components/sidebar/tabs/index.js.map +0 -1
- package/dist/components/steps.d.ts.map +0 -1
- package/dist/components/steps.js.map +0 -1
- package/dist/components/tabs.d.ts.map +0 -1
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/toc/clerk.d.ts.map +0 -1
- package/dist/components/toc/clerk.js.map +0 -1
- package/dist/components/toc/default.d.ts.map +0 -1
- package/dist/components/toc/default.js.map +0 -1
- package/dist/components/toc/index.d.ts.map +0 -1
- package/dist/components/toc/index.js.map +0 -1
- package/dist/components/type-table.d.ts.map +0 -1
- package/dist/components/type-table.js.map +0 -1
- package/dist/components/ui/accordion.d.ts.map +0 -1
- package/dist/components/ui/accordion.js.map +0 -1
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/button.js.map +0 -1
- package/dist/components/ui/collapsible.d.ts.map +0 -1
- package/dist/components/ui/collapsible.js.map +0 -1
- package/dist/components/ui/navigation-menu.d.ts.map +0 -1
- package/dist/components/ui/navigation-menu.js.map +0 -1
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/popover.js.map +0 -1
- package/dist/components/ui/scroll-area.d.ts.map +0 -1
- package/dist/components/ui/scroll-area.js.map +0 -1
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js.map +0 -1
- package/dist/contexts/i18n.d.ts.map +0 -1
- package/dist/contexts/i18n.js.map +0 -1
- package/dist/contexts/search.d.ts.map +0 -1
- package/dist/contexts/search.js.map +0 -1
- package/dist/contexts/tree.d.ts.map +0 -1
- package/dist/contexts/tree.js.map +0 -1
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js.map +0 -1
- package/dist/layouts/docs/client.d.ts.map +0 -1
- package/dist/layouts/docs/client.js.map +0 -1
- package/dist/layouts/docs/index.d.ts.map +0 -1
- package/dist/layouts/docs/index.js.map +0 -1
- package/dist/layouts/docs/page/client.d.ts.map +0 -1
- package/dist/layouts/docs/page/client.js.map +0 -1
- package/dist/layouts/docs/page/index.d.ts.map +0 -1
- package/dist/layouts/docs/page/index.js.map +0 -1
- package/dist/layouts/docs/sidebar.d.ts +0 -63
- package/dist/layouts/docs/sidebar.d.ts.map +0 -1
- package/dist/layouts/docs/sidebar.js +0 -160
- package/dist/layouts/docs/sidebar.js.map +0 -1
- package/dist/layouts/flux/index.d.ts.map +0 -1
- package/dist/layouts/flux/index.js.map +0 -1
- package/dist/layouts/flux/page/client.d.ts.map +0 -1
- package/dist/layouts/flux/page/client.js.map +0 -1
- package/dist/layouts/flux/page/index.d.ts.map +0 -1
- package/dist/layouts/flux/page/index.js.map +0 -1
- package/dist/layouts/flux/sidebar.d.ts +0 -58
- package/dist/layouts/flux/sidebar.d.ts.map +0 -1
- package/dist/layouts/flux/sidebar.js.map +0 -1
- package/dist/layouts/flux/tab-dropdown.d.ts +0 -21
- package/dist/layouts/flux/tab-dropdown.d.ts.map +0 -1
- package/dist/layouts/flux/tab-dropdown.js.map +0 -1
- package/dist/layouts/home/client.d.ts +0 -19
- package/dist/layouts/home/client.d.ts.map +0 -1
- package/dist/layouts/home/client.js +0 -262
- package/dist/layouts/home/client.js.map +0 -1
- package/dist/layouts/home/index.d.ts.map +0 -1
- package/dist/layouts/home/index.js.map +0 -1
- package/dist/layouts/home/navbar.d.ts.map +0 -1
- package/dist/layouts/home/navbar.js.map +0 -1
- package/dist/layouts/home/not-found.d.ts.map +0 -1
- package/dist/layouts/home/not-found.js.map +0 -1
- package/dist/layouts/notebook/client.d.ts.map +0 -1
- package/dist/layouts/notebook/client.js.map +0 -1
- package/dist/layouts/notebook/index.d.ts.map +0 -1
- package/dist/layouts/notebook/index.js.map +0 -1
- package/dist/layouts/notebook/page/client.d.ts.map +0 -1
- package/dist/layouts/notebook/page/client.js.map +0 -1
- package/dist/layouts/notebook/page/index.d.ts.map +0 -1
- package/dist/layouts/notebook/page/index.js.map +0 -1
- package/dist/layouts/notebook/sidebar.d.ts +0 -59
- package/dist/layouts/notebook/sidebar.d.ts.map +0 -1
- package/dist/layouts/notebook/sidebar.js +0 -131
- package/dist/layouts/notebook/sidebar.js.map +0 -1
- package/dist/layouts/shared/index.d.ts.map +0 -1
- package/dist/layouts/shared/index.js.map +0 -1
- package/dist/layouts/shared/language-toggle.d.ts +0 -10
- package/dist/layouts/shared/language-toggle.d.ts.map +0 -1
- package/dist/layouts/shared/language-toggle.js.map +0 -1
- package/dist/layouts/shared/page-actions.d.ts.map +0 -1
- package/dist/layouts/shared/page-actions.js.map +0 -1
- package/dist/layouts/shared/search-toggle.d.ts +0 -23
- package/dist/layouts/shared/search-toggle.d.ts.map +0 -1
- package/dist/layouts/shared/search-toggle.js.map +0 -1
- package/dist/layouts/shared/theme-toggle.d.ts +0 -14
- package/dist/layouts/shared/theme-toggle.d.ts.map +0 -1
- package/dist/layouts/shared/theme-toggle.js.map +0 -1
- package/dist/mdx.d.ts.map +0 -1
- package/dist/mdx.js.map +0 -1
- package/dist/mdx.server.d.ts.map +0 -1
- package/dist/mdx.server.js.map +0 -1
- package/dist/og/takumi.d.ts.map +0 -1
- package/dist/og/takumi.js.map +0 -1
- package/dist/og.d.ts.map +0 -1
- package/dist/og.js.map +0 -1
- package/dist/page.d.ts.map +0 -1
- package/dist/page.js.map +0 -1
- package/dist/provider/base.d.ts.map +0 -1
- package/dist/provider/base.js.map +0 -1
- package/dist/provider/next.d.ts.map +0 -1
- package/dist/provider/next.js.map +0 -1
- package/dist/provider/react-router.d.ts.map +0 -1
- package/dist/provider/react-router.js.map +0 -1
- package/dist/provider/tanstack.d.ts.map +0 -1
- package/dist/provider/tanstack.js.map +0 -1
- package/dist/provider/waku.d.ts.map +0 -1
- package/dist/provider/waku.js.map +0 -1
- package/dist/utils/link-item.d.ts +0 -87
- package/dist/utils/link-item.d.ts.map +0 -1
- package/dist/utils/link-item.js +0 -27
- package/dist/utils/link-item.js.map +0 -1
- package/dist/utils/merge-refs.js.map +0 -1
- package/dist/utils/urls.js.map +0 -1
- package/dist/utils/use-copy-button.d.ts.map +0 -1
- package/dist/utils/use-copy-button.js.map +0 -1
- package/dist/utils/use-footer-items.d.ts.map +0 -1
- package/dist/utils/use-footer-items.js.map +0 -1
- package/dist/utils/use-is-scroll-top.d.ts.map +0 -1
- package/dist/utils/use-is-scroll-top.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","names":[],"sources":["../../../src/components/ui/button.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nconst variants = {\n primary: 'bg-fd-primary text-fd-primary-foreground hover:bg-fd-primary/80',\n outline: 'border hover:bg-fd-accent hover:text-fd-accent-foreground',\n ghost: 'hover:bg-fd-accent hover:text-fd-accent-foreground',\n secondary:\n 'border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground',\n} as const;\n\nexport const buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring',\n {\n variants: {\n variant: variants,\n // fumadocs use `color` instead of `variant`\n color: variants,\n size: {\n sm: 'gap-1 px-2 py-1.5 text-xs',\n icon: 'p-1.5 [&_svg]:size-5',\n 'icon-sm': 'p-1.5 [&_svg]:size-4.5',\n 'icon-xs': 'p-1 [&_svg]:size-4',\n },\n },\n },\n);\n\nexport type ButtonProps = VariantProps<typeof buttonVariants>;\n"],"mappings":";;AAEA,MAAM,WAAW;CACf,SAAS;CACT,SAAS;CACT,OAAO;CACP,WACE;CACH;AAED,MAAa,iBAAiB,IAC5B,yOACA,EACE,UAAU;CACR,SAAS;CAET,OAAO;CACP,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,WAAW;EACX,WAAW;EACZ;CACF,EACF,CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.d.ts","names":[],"sources":["../../../src/components/ui/collapsible.tsx"],"mappings":";;;;;;;cAKa,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAiB,eAAA,CAAjB,oBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAEX,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAoB,eAAA,CAApB,uBAAA,WAAA,KAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,iBAEf,kBAAA,CAAA;EACd,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,aAAA,CAAU,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KAgB7B,gBAAA,GAAmB,aAAA,CAAU,IAAA,CAAK,KAAA;AAAA,KAClC,uBAAA,GAA0B,aAAA,CAAU,KAAA,CAAM,KAAA;AAAA,KAC1C,uBAAA,GAA0B,aAAA,CAAU,OAAA,CAAQ,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.js","names":["Primitive"],"sources":["../../../src/components/ui/collapsible.tsx"],"sourcesContent":["'use client';\nimport { Collapsible as Primitive } from '@base-ui/react/collapsible';\nimport type { ComponentProps } from 'react';\nimport { cn } from '@/utils/cn';\n\nexport const Collapsible = Primitive.Root;\n\nexport const CollapsibleTrigger = Primitive.Trigger;\n\nexport function CollapsibleContent({\n children,\n className,\n ...props\n}: ComponentProps<typeof Primitive.Panel>) {\n return (\n <Primitive.Panel\n {...props}\n className={(s) =>\n cn(\n \"overflow-hidden [&[hidden]:not([hidden='until-found'])]:hidden h-(--collapsible-panel-height) transition-[height] data-[starting-style]:h-0 data-[ending-style]:h-0\",\n typeof className === 'function' ? className(s) : className,\n )\n }\n >\n {children}\n </Primitive.Panel>\n );\n}\n\nexport type CollapsibleProps = Primitive.Root.Props;\nexport type CollapsibleContentProps = Primitive.Panel.Props;\nexport type CollapsibleTriggerProps = Primitive.Trigger.Props;\n"],"mappings":";;;;;AAKA,MAAa,cAAcA,cAAU;AAErC,MAAa,qBAAqBA,cAAU;AAE5C,SAAgB,mBAAmB,EACjC,UACA,WACA,GAAG,SACsC;AACzC,QACE,oBAACA,cAAU,OAAX;EACE,GAAI;EACJ,YAAY,MACV,GACE,uKACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAGF;EACe,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-menu.d.ts","names":[],"sources":["../../../src/components/ui/navigation-menu.tsx"],"mappings":";;;;;KAKY,0BAAA,GAA6B,cAAA,CAAU,OAAA,CAAQ,KAAA;AAAA,KAC/C,0BAAA,GAA6B,cAAA,CAAU,OAAA,CAAQ,KAAA;AAAA,cAErD,kBAAA,EAAkB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAiB,eAAA,CAAjB,uBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,WAAA;AAAA,cAElB,kBAAA,EAAkB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAiB,eAAA,CAAjB,uBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,gBAAA;AAAA,cAElB,kBAAA,EAAkB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAWtB,eAAA,CAXsB,uBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,aAAA,YAAA,OAAA,CAAA,aAAA,CAAA,aAAA;AAAA,cAelB,qBAAA,EAAqB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAOzB,eAAA,CAPyB,0BAAA,WAAA,OAAA,CAAA,aAAA,CAAA,iBAAA,YAAA,OAAA,CAAA,aAAA,CAAA,iBAAA;AAAA,cAUrB,qBAAA,EAAqB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAoBzB,eAAA,CApByB,0BAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA,YAAA,OAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAuBrB,kBAAA,EAAkB,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAiB,eAAA,CAAjB,uBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,iBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-menu.js","names":["Primitive","React"],"sources":["../../../src/components/ui/navigation-menu.tsx"],"sourcesContent":["'use client';\nimport * as React from 'react';\nimport { NavigationMenu as Primitive } from '@base-ui/react/navigation-menu';\nimport { cn } from '@/utils/cn';\n\nexport type NavigationMenuContentProps = Primitive.Content.Props;\nexport type NavigationMenuTriggerProps = Primitive.Trigger.Props;\n\nconst NavigationMenuRoot = Primitive.Root;\n\nconst NavigationMenuList = Primitive.List;\n\nconst NavigationMenuItem = React.forwardRef<\n React.ComponentRef<typeof Primitive.Item>,\n React.ComponentPropsWithoutRef<typeof Primitive.Item>\n>(({ className, children, ...props }, ref) => (\n <Primitive.Item\n ref={ref}\n className={(s) => cn('list-none', typeof className === 'function' ? className(s) : className)}\n {...props}\n >\n {children}\n </Primitive.Item>\n));\n\nNavigationMenuItem.displayName = Primitive.Item.displayName;\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ComponentRef<typeof Primitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof Primitive.Trigger>\n>(({ children, ...props }, ref) => (\n <Primitive.Trigger ref={ref} {...props}>\n {children}\n </Primitive.Trigger>\n));\nNavigationMenuTrigger.displayName = Primitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n React.ComponentRef<typeof Primitive.Content>,\n React.ComponentPropsWithoutRef<typeof Primitive.Content>\n>(({ className, ...props }, ref) => (\n <Primitive.Content\n ref={ref}\n className={(s) =>\n cn(\n 'size-full p-4',\n 'transition-[opacity,transform,translate] duration-(--duration) ease-(--easing)',\n 'data-starting-style:opacity-0 data-ending-style:opacity-0',\n 'data-starting-style:data-[activation-direction=left]:-translate-x-1/2',\n 'data-starting-style:data-[activation-direction=right]:translate-x-1/2',\n 'data-ending-style:data-[activation-direction=left]:translate-x-1/2',\n 'data-ending-style:data-[activation-direction=right]:-translate-x-1/2',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n />\n));\nNavigationMenuContent.displayName = Primitive.Content.displayName;\n\nconst NavigationMenuLink = Primitive.Link;\n\nexport {\n NavigationMenuRoot,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n};\n"],"mappings":";;;;;;AAQA,MAAM,qBAAqBA,eAAU;AAErC,MAAM,qBAAqBA,eAAU;AAErC,MAAM,qBAAqBC,QAAM,YAG9B,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,oBAACD,eAAU,MAAX;CACO;CACL,YAAY,MAAM,GAAG,aAAa,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAAU;CAC7F,GAAI;CAEH;CACc,CAAA,CACjB;AAEF,mBAAmB,cAAcA,eAAU,KAAK;AAEhD,MAAM,wBAAwBC,QAAM,YAGjC,EAAE,UAAU,GAAG,SAAS,QACzB,oBAACD,eAAU,SAAX;CAAwB;CAAK,GAAI;CAC9B;CACiB,CAAA,CACpB;AACF,sBAAsB,cAAcA,eAAU,QAAQ;AAEtD,MAAM,wBAAwBC,QAAM,YAGjC,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACD,eAAU,SAAX;CACO;CACL,YAAY,MACV,GACE,iBACA,kFACA,6DACA,yEACA,yEACA,sEACA,wEACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;CAEH,GAAI;CACJ,CAAA,CACF;AACF,sBAAsB,cAAcA,eAAU,QAAQ;AAEtD,MAAM,qBAAqBA,eAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover.d.ts","names":[],"sources":["../../../src/components/ui/popover.tsx"],"mappings":";;;;;cAKM,OAAA,SAAO,SAAA,CAAA,IAAA;AAAA,cAEP,cAAA,EAAc,SAAA,CAAA,OAAA;AAAA,cAEd,cAAA,EAAc,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAmBlB,eAAA,CAnBkB,iBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA,YAAA,IAAA,CAAA,eAAA,CAAA,sBAAA,4BAAA,OAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAsBd,YAAA,EAAY,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAkB,eAAA,CAAlB,iBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,iBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","names":["Primitive","React"],"sources":["../../../src/components/ui/popover.tsx"],"sourcesContent":["'use client';\nimport { Popover as Primitive } from '@base-ui/react/popover';\nimport * as React from 'react';\nimport { cn } from '@/utils/cn';\n\nconst Popover = Primitive.Root;\n\nconst PopoverTrigger = Primitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ComponentRef<typeof Primitive.Popup>,\n React.ComponentPropsWithoutRef<typeof Primitive.Popup> &\n Pick<Primitive.Positioner.Props, 'sideOffset' | 'align'>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <Primitive.Portal>\n <Primitive.Positioner align={align} side=\"bottom\" sideOffset={sideOffset} className=\"z-50\">\n <Primitive.Popup\n ref={ref}\n className={(s) =>\n cn(\n 'z-50 origin-(--transform-origin) overflow-y-auto max-h-(--available-height) min-w-[240px] max-w-[98vw] rounded-xl border bg-fd-popover/60 backdrop-blur-lg p-2 text-sm text-fd-popover-foreground shadow-lg focus-visible:outline-none data-[closed]:animate-fd-popover-out data-[open]:animate-fd-popover-in',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n />\n </Primitive.Positioner>\n </Primitive.Portal>\n));\nPopoverContent.displayName = Primitive.Popup.displayName;\n\nconst PopoverClose = Primitive.Close;\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverClose };\n"],"mappings":";;;;;;AAKA,MAAM,UAAUA,UAAU;AAE1B,MAAM,iBAAiBA,UAAU;AAEjC,MAAM,iBAAiBC,QAAM,YAI1B,EAAE,WAAW,QAAQ,UAAU,aAAa,GAAG,GAAG,SAAS,QAC5D,oBAACD,UAAU,QAAX,EAAA,UACE,oBAACA,UAAU,YAAX;CAA6B;CAAO,MAAK;CAAqB;CAAY,WAAU;WAClF,oBAACA,UAAU,OAAX;EACO;EACL,YAAY,MACV,GACE,iTACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;EACJ,CAAA;CACmB,CAAA,EACN,CAAA,CACnB;AACF,eAAe,cAAcA,UAAU,MAAM;AAE7C,MAAM,eAAeA,UAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area.d.ts","names":[],"sources":["../../../src/components/ui/scroll-area.tsx"],"mappings":";;;;;cAIM,UAAA,EAAU,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAed,eAAA,CAfc,mBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA,YAAA,OAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAmBV,cAAA,EAAc,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAalB,eAAA,CAbkB,uBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA,YAAA,OAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAiBd,SAAA,EAAS,OAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAoBb,eAAA,CApBa,wBAAA,WAAA,OAAA,CAAA,aAAA,CAAA,cAAA,YAAA,OAAA,CAAA,aAAA,CAAA,cAAA;AAAA,KAwBH,eAAA,GAAkB,YAAA,CAAU,IAAA,CAAK,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area.js","names":["React","Primitive"],"sources":["../../../src/components/ui/scroll-area.tsx"],"sourcesContent":["import { ScrollArea as Primitive } from '@base-ui/react/scroll-area';\nimport * as React from 'react';\nimport { cn } from '@/utils/cn';\n\nconst ScrollArea = React.forwardRef<\n React.ComponentRef<typeof Primitive.Root>,\n React.ComponentPropsWithoutRef<typeof Primitive.Root>\n>(({ className, children, ...props }, ref) => (\n <Primitive.Root\n ref={ref}\n className={(s) =>\n cn('overflow-hidden', typeof className === 'function' ? className(s) : className)\n }\n {...props}\n >\n {children}\n <Primitive.Corner />\n <ScrollBar orientation=\"vertical\" />\n </Primitive.Root>\n));\n\nScrollArea.displayName = Primitive.Root.displayName;\n\nconst ScrollViewport = React.forwardRef<\n React.ComponentRef<typeof Primitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof Primitive.Viewport>\n>(({ className, children, ...props }, ref) => (\n <Primitive.Viewport\n ref={ref}\n className={(s) =>\n cn('size-full rounded-[inherit]', typeof className === 'function' ? className(s) : className)\n }\n {...props}\n >\n {children}\n </Primitive.Viewport>\n));\n\nScrollViewport.displayName = Primitive.Viewport.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ComponentRef<typeof Primitive.Scrollbar>,\n React.ComponentPropsWithoutRef<typeof Primitive.Scrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <Primitive.Scrollbar\n ref={ref}\n orientation={orientation}\n className={(s) =>\n cn(\n 'flex select-none transition-opacity',\n !s.hovering && 'opacity-0',\n orientation === 'vertical' && 'h-full w-1.5',\n orientation === 'horizontal' && 'h-1.5 flex-col',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n <Primitive.Thumb className=\"relative flex-1 rounded-full bg-fd-border\" />\n </Primitive.Scrollbar>\n));\nScrollBar.displayName = Primitive.Scrollbar.displayName;\n\nexport { ScrollArea, ScrollBar, ScrollViewport };\nexport type ScrollAreaProps = Primitive.Root.Props;\n"],"mappings":";;;;;AAIA,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,qBAACC,aAAU,MAAX;CACO;CACL,YAAY,MACV,GAAG,mBAAmB,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAAU;CAEnF,GAAI;WALN;EAOG;EACD,oBAACA,aAAU,QAAX,EAAoB,CAAA;EACpB,oBAAC,WAAD,EAAW,aAAY,YAAa,CAAA;EACrB;GACjB;AAEF,WAAW,cAAcA,aAAU,KAAK;AAExC,MAAM,iBAAiBD,QAAM,YAG1B,EAAE,WAAW,UAAU,GAAG,SAAS,QACpC,oBAACC,aAAU,UAAX;CACO;CACL,YAAY,MACV,GAAG,+BAA+B,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAAU;CAE/F,GAAI;CAEH;CACkB,CAAA,CACrB;AAEF,eAAe,cAAcA,aAAU,SAAS;AAEhD,MAAM,YAAYD,QAAM,YAGrB,EAAE,WAAW,cAAc,YAAY,GAAG,SAAS,QACpD,oBAACC,aAAU,WAAX;CACO;CACQ;CACb,YAAY,MACV,GACE,uCACA,CAAC,EAAE,YAAY,aACf,gBAAgB,cAAc,gBAC9B,gBAAgB,gBAAgB,kBAChC,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;CAEH,GAAI;WAEJ,oBAACA,aAAU,OAAX,EAAiB,WAAU,6CAA8C,CAAA;CACrD,CAAA,CACtB;AACF,UAAU,cAAcA,aAAU,UAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/components/ui/tabs.tsx"],"mappings":";;;;;;;UAkBiB,SAAA,SAAkB,cAAA,QAAsB,MAAA,CAAU,IAAA;;;;EAIjE,OAAA;EAJe;;;EASf,OAAA;EATiC;;;EAcjC,YAAA;EAEA,aAAA,IAAiB,KAAA;AAAA;AAAA,cAaN,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAiB,eAAA,CAAjB,aAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAER,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAgB,eAAA,CAAhB,YAAA,WAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,iBAER,IAAA,CAAA;EACd,GAAA;EACA,OAAA;EACA,OAAA;EACA,YAAA;EACA,YAAA;EACA,KAAA,EAAO,MAAA;EACP,aAAA,EAAe,cAAA;EAAA,GACZ;AAAA,GACF,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuEI,WAAA,CAAA;EAAc,KAAA;EAAA,GAAU;AAAA,GAAS,cAAA,QAAsB,MAAA,CAAU,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":["Primitive"],"sources":["../../../src/components/ui/tabs.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentProps,\n createContext,\n use,\n useEffectEvent,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Tabs as Primitive } from '@base-ui/react/tabs';\nimport { mergeRefs } from '@/utils/merge-refs';\n\ntype ChangeListener = (v: string) => void;\nconst listeners = new Map<string, Set<ChangeListener>>();\n\nexport interface TabsProps extends ComponentProps<typeof Primitive.Root> {\n /**\n * Identifier for Sharing value of tabs\n */\n groupId?: string;\n\n /**\n * Enable persistent\n */\n persist?: boolean;\n\n /**\n * If true, updates the URL hash based on the tab's id\n */\n updateAnchor?: boolean;\n\n onValueChange?: (value: string) => void;\n}\n\nconst TabsContext = createContext<{\n valueToIdMap: Map<string, string>;\n} | null>(null);\n\nfunction useTabContext() {\n const ctx = use(TabsContext);\n if (!ctx) throw new Error('You must wrap your component in <Tabs>');\n return ctx;\n}\n\nexport const TabsList = Primitive.List;\n\nexport const TabsTrigger = Primitive.Tab;\n\nexport function Tabs({\n ref,\n groupId,\n persist = false,\n updateAnchor = false,\n defaultValue,\n value: _value,\n onValueChange: _onValueChange,\n ...props\n}: TabsProps) {\n const tabsRef = useRef<HTMLDivElement>(null);\n const valueToIdMap = useMemo(() => new Map<string, string>(), []);\n const [value, setValue] =\n _value === undefined\n ? // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled\n useState(defaultValue)\n : // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled\n [_value, useEffectEvent((v: string) => _onValueChange?.(v))];\n\n useLayoutEffect(() => {\n if (!groupId) return;\n let previous = sessionStorage.getItem(groupId);\n if (persist) previous ??= localStorage.getItem(groupId);\n if (previous) setValue(previous);\n\n const groupListeners = listeners.get(groupId) ?? new Set();\n groupListeners.add(setValue);\n listeners.set(groupId, groupListeners);\n return () => {\n groupListeners.delete(setValue);\n };\n }, [groupId, persist, setValue]);\n\n useLayoutEffect(() => {\n const hash = window.location.hash.slice(1);\n if (!hash) return;\n\n for (const [value, id] of valueToIdMap.entries()) {\n if (id === hash) {\n setValue(value);\n tabsRef.current?.scrollIntoView();\n break;\n }\n }\n }, [setValue, valueToIdMap]);\n\n return (\n <Primitive.Root\n ref={mergeRefs(ref, tabsRef)}\n value={value}\n onValueChange={(v: string) => {\n if (updateAnchor) {\n const id = valueToIdMap.get(v);\n\n if (id) {\n window.history.replaceState(null, '', `#${id}`);\n }\n }\n\n if (groupId) {\n const groupListeners = listeners.get(groupId);\n if (groupListeners) {\n for (const listener of groupListeners) listener(v);\n }\n\n sessionStorage.setItem(groupId, v);\n if (persist) localStorage.setItem(groupId, v);\n } else {\n setValue(v);\n }\n }}\n {...props}\n >\n <TabsContext value={useMemo(() => ({ valueToIdMap }), [valueToIdMap])}>\n {props.children}\n </TabsContext>\n </Primitive.Root>\n );\n}\n\nexport function TabsContent({ value, ...props }: ComponentProps<typeof Primitive.Panel>) {\n const { valueToIdMap } = useTabContext();\n\n if (props.id) {\n valueToIdMap.set(value, props.id);\n }\n\n return (\n <Primitive.Panel value={value} {...props}>\n {props.children}\n </Primitive.Panel>\n );\n}\n"],"mappings":";;;;;;AAgBA,MAAM,4BAAY,IAAI,KAAkC;AAqBxD,MAAM,cAAc,cAEV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,IAAI,YAAY;AAC5B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAWA,OAAU;AAElC,MAAa,cAAcA,OAAU;AAErC,SAAgB,KAAK,EACnB,KACA,SACA,UAAU,OACV,eAAe,OACf,cACA,OAAO,QACP,eAAe,gBACf,GAAG,SACS;CACZ,MAAM,UAAU,OAAuB,KAAK;CAC5C,MAAM,eAAe,8BAAc,IAAI,KAAqB,EAAE,EAAE,CAAC;CACjE,MAAM,CAAC,OAAO,YACZ,WAAW,KAAA,IAEP,SAAS,aAAa,GAEtB,CAAC,QAAQ,gBAAgB,MAAc,iBAAiB,EAAE,CAAC,CAAC;AAElE,uBAAsB;AACpB,MAAI,CAAC,QAAS;EACd,IAAI,WAAW,eAAe,QAAQ,QAAQ;AAC9C,MAAI,QAAS,cAAa,aAAa,QAAQ,QAAQ;AACvD,MAAI,SAAU,UAAS,SAAS;EAEhC,MAAM,iBAAiB,UAAU,IAAI,QAAQ,oBAAI,IAAI,KAAK;AAC1D,iBAAe,IAAI,SAAS;AAC5B,YAAU,IAAI,SAAS,eAAe;AACtC,eAAa;AACX,kBAAe,OAAO,SAAS;;IAEhC;EAAC;EAAS;EAAS;EAAS,CAAC;AAEhC,uBAAsB;EACpB,MAAM,OAAO,OAAO,SAAS,KAAK,MAAM,EAAE;AAC1C,MAAI,CAAC,KAAM;AAEX,OAAK,MAAM,CAAC,OAAO,OAAO,aAAa,SAAS,CAC9C,KAAI,OAAO,MAAM;AACf,YAAS,MAAM;AACf,WAAQ,SAAS,gBAAgB;AACjC;;IAGH,CAAC,UAAU,aAAa,CAAC;AAE5B,QACE,oBAACA,OAAU,MAAX;EACE,KAAK,UAAU,KAAK,QAAQ;EACrB;EACP,gBAAgB,MAAc;AAC5B,OAAI,cAAc;IAChB,MAAM,KAAK,aAAa,IAAI,EAAE;AAE9B,QAAI,GACF,QAAO,QAAQ,aAAa,MAAM,IAAI,IAAI,KAAK;;AAInD,OAAI,SAAS;IACX,MAAM,iBAAiB,UAAU,IAAI,QAAQ;AAC7C,QAAI,eACF,MAAK,MAAM,YAAY,eAAgB,UAAS,EAAE;AAGpD,mBAAe,QAAQ,SAAS,EAAE;AAClC,QAAI,QAAS,cAAa,QAAQ,SAAS,EAAE;SAE7C,UAAS,EAAE;;EAGf,GAAI;YAEJ,oBAAC,aAAD;GAAa,OAAO,eAAe,EAAE,cAAc,GAAG,CAAC,aAAa,CAAC;aAClE,MAAM;GACK,CAAA;EACC,CAAA;;AAIrB,SAAgB,YAAY,EAAE,OAAO,GAAG,SAAiD;CACvF,MAAM,EAAE,iBAAiB,eAAe;AAExC,KAAI,MAAM,GACR,cAAa,IAAI,OAAO,MAAM,GAAG;AAGnC,QACE,oBAACA,OAAU,OAAX;EAAwB;EAAO,GAAI;YAChC,MAAM;EACS,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","names":[],"sources":["../../src/contexts/i18n.tsx"],"mappings":";;;;UAIiB,YAAA;EACf,MAAA;EACA,cAAA;EAEA,GAAA;EACA,aAAA;EAEA,UAAA;EACA,cAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,UAGe,UAAA;EACf,IAAA;EACA,MAAA;AAAA;AAAA,UAGQ,eAAA;EACR,MAAA;EACA,QAAA,IAAY,CAAA;EACZ,IAAA,EAAM,YAAA;EACN,OAAA,GAAU,UAAA;AAAA;AAAA,cAGC,mBAAA,EAAqB,YAAA;AAAA,iBAiBlB,SAAA,CAAU,KAAA;EAAS,KAAA,QAAa,YAAA;AAAA;AAAA,iBAMhC,OAAA,CAAA,GAAW,eAAA;AAAA,UAIV,iBAAA;EAjCf;;;EAqCA,MAAA;EAnCM;;;EAwCN,cAAA,IAAkB,CAAA;EAvCE;AAGtB;;EAyCE,YAAA,GAAe,OAAA,CAAQ,YAAA;EAzCS;;AAiBlC;EA6BE,OAAA,GAAU,UAAA;EAEV,QAAA,GAAW,SAAA;AAAA;AAAA,iBAGG,YAAA,CAAA;EACd,OAAA;EACA,MAAA;EACA,cAAA;EACA,QAAA;EACA;AAAA,GACC,iBAAA,GAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","names":[],"sources":["../../src/contexts/i18n.tsx"],"sourcesContent":["'use client';\nimport { createContext, type ReactNode, useContext, useMemo, useRef } from 'react';\nimport { usePathname, useRouter } from 'fumadocs-core/framework';\n\nexport interface Translations {\n search: string;\n searchNoResult: string;\n\n toc: string;\n tocNoHeadings: string;\n\n lastUpdate: string;\n chooseLanguage: string;\n nextPage: string;\n previousPage: string;\n chooseTheme: string;\n editOnGithub: string;\n}\n\nexport interface LocaleItem {\n name: string;\n locale: string;\n}\n\ninterface I18nContextType {\n locale?: string;\n onChange?: (v: string) => void;\n text: Translations;\n locales?: LocaleItem[];\n}\n\nexport const defaultTranslations: Translations = {\n search: 'Search',\n searchNoResult: 'No results found',\n toc: 'On this page',\n tocNoHeadings: 'No Headings',\n lastUpdate: 'Last updated on',\n chooseLanguage: 'Choose a language',\n nextPage: 'Next Page',\n previousPage: 'Previous Page',\n chooseTheme: 'Theme',\n editOnGithub: 'Edit on GitHub',\n};\n\nconst I18nContext = createContext<I18nContextType>({\n text: defaultTranslations,\n});\n\nexport function I18nLabel(props: { label: keyof Translations }): string {\n const { text } = useI18n();\n\n return text[props.label];\n}\n\nexport function useI18n(): I18nContextType {\n return useContext(I18nContext);\n}\n\nexport interface I18nProviderProps {\n /**\n * Current locale\n */\n locale: string;\n\n /**\n * Handle changes to the locale, redirect user when not specified.\n */\n onLocaleChange?: (v: string) => void;\n\n /**\n * Translations of current locale\n */\n translations?: Partial<Translations>;\n\n /**\n * Available languages\n */\n locales?: LocaleItem[];\n\n children?: ReactNode;\n}\n\nexport function I18nProvider({\n locales = [],\n locale,\n onLocaleChange,\n children,\n translations,\n}: I18nProviderProps) {\n const router = useRouter();\n const pathname = usePathname();\n const onChange = (value: string) => {\n if (onLocaleChange) {\n return onLocaleChange(value);\n }\n const segments = pathname.split('/').filter((v) => v.length > 0);\n\n // If locale prefix hidden\n if (segments[0] !== locale) {\n segments.unshift(value);\n } else {\n segments[0] = value;\n }\n\n router.push(`/${segments.join('/')}`);\n };\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n return (\n <I18nContext\n value={useMemo(\n () => ({\n locale,\n locales,\n text: {\n ...defaultTranslations,\n ...translations,\n },\n onChange: (v) => onChangeRef.current(v),\n }),\n [locale, locales, translations],\n )}\n >\n {children}\n </I18nContext>\n );\n}\n"],"mappings":";;;;;AA+BA,MAAa,sBAAoC;CAC/C,QAAQ;CACR,gBAAgB;CAChB,KAAK;CACL,eAAe;CACf,YAAY;CACZ,gBAAgB;CAChB,UAAU;CACV,cAAc;CACd,aAAa;CACb,cAAc;CACf;AAED,MAAM,cAAc,cAA+B,EACjD,MAAM,qBACP,CAAC;AAEF,SAAgB,UAAU,OAA8C;CACtE,MAAM,EAAE,SAAS,SAAS;AAE1B,QAAO,KAAK,MAAM;;AAGpB,SAAgB,UAA2B;AACzC,QAAO,WAAW,YAAY;;AA2BhC,SAAgB,aAAa,EAC3B,UAAU,EAAE,EACZ,QACA,gBACA,UACA,gBACoB;CACpB,MAAM,SAAS,WAAW;CAC1B,MAAM,WAAW,aAAa;CAC9B,MAAM,YAAY,UAAkB;AAClC,MAAI,eACF,QAAO,eAAe,MAAM;EAE9B,MAAM,WAAW,SAAS,MAAM,IAAI,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE;AAGhE,MAAI,SAAS,OAAO,OAClB,UAAS,QAAQ,MAAM;MAEvB,UAAS,KAAK;AAGhB,SAAO,KAAK,IAAI,SAAS,KAAK,IAAI,GAAG;;CAEvC,MAAM,cAAc,OAAO,SAAS;AACpC,aAAY,UAAU;AAEtB,QACE,oBAAC,aAAD;EACE,OAAO,eACE;GACL;GACA;GACA,MAAM;IACJ,GAAG;IACH,GAAG;IACJ;GACD,WAAW,MAAM,YAAY,QAAQ,EAAE;GACxC,GACD;GAAC;GAAQ;GAAS;GAAa,CAChC;EAEA;EACW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","names":[],"sources":["../../src/contexts/search.tsx"],"mappings":";;;;UAaU,MAAA;EACR,OAAA,EAAS,SAAA;;AAHI;;EAQb,GAAA,aAAgB,CAAA,EAAG,aAAA;AAAA;AAAA,UAGJ,WAAA;EACf,IAAA;EACA,YAAA,GAAe,IAAA;AAAA;AAAA,KAGL,UAAA,IAAc,IAAA,UAAc,IAAA;AAAA,UAEvB,OAAA;EACf,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,mBAAA;EAZW;;;;;EAkB1B,OAAA;EAbU;;;EAkBV,KAAA,GAAQ,UAAA;EAlBkC;AAE5C;;;;EAuBE,MAAA,GAAS,MAAA;EAlBM;;;;;EAyBf,YAAA,EAAc,aAAA,CAAc,WAAA;EAAd;;;EAKd,OAAA,GAAU,OAAA,CAAQ,WAAA,GAAc,MAAA;EAEhC,QAAA,GAAW,SAAA;AAAA;AAAA,UAGH,iBAAA;EACR,OAAA;EACA,IAAA;EACA,MAAA,EAAQ,MAAA;EACR,aAAA,GAAgB,KAAA;AAAA;AAAA,iBAUF,gBAAA,CAAA,GAAoB,iBAAA;AAAA,iBAgBpB,cAAA,CAAA;EACd,YAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EAUA;AAAA,GACC,mBAAA,GAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;iBAgDN,UAAA,CAAA;EAAa;AAAA;EAAc,QAAA,EAAU,SAAA;AAAA,IAAW,SAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","names":[],"sources":["../../src/contexts/search.tsx"],"sourcesContent":["'use client';\nimport {\n type ComponentType,\n createContext,\n type ReactNode,\n Suspense,\n use,\n useEffect,\n useEffectEvent,\n useMemo,\n useState,\n} from 'react';\n\ninterface HotKey {\n display: ReactNode;\n\n /**\n * Key code or a function determining whether the key is pressed.\n */\n key: string | ((e: KeyboardEvent) => boolean);\n}\n\nexport interface SharedProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nexport type SearchLink = [name: string, href: string];\n\nexport interface TagItem {\n name: string;\n value: string;\n}\n\nexport interface SearchProviderProps {\n /**\n * Preload search dialog before opening it\n *\n * @defaultValue `true`\n */\n preload?: boolean;\n\n /**\n * Custom links to be displayed if search is empty\n */\n links?: SearchLink[];\n\n /**\n * Hotkeys for triggering search dialog\n *\n * @defaultValue Meta/Ctrl + K\n */\n hotKey?: HotKey[];\n\n /**\n * Replace default search dialog, allowing you to use other solutions such as Algolia Search\n *\n * It receives the `open` and `onOpenChange` prop, can be lazy loaded with `next/dynamic`\n */\n SearchDialog: ComponentType<SharedProps>;\n\n /**\n * Additional props to the dialog\n */\n options?: Partial<SharedProps & Record<string, unknown>>;\n\n children?: ReactNode;\n}\n\ninterface SearchContextType {\n enabled: boolean;\n open: boolean;\n hotKey: HotKey[];\n setOpenSearch: (value: boolean) => void;\n}\n\nconst SearchContext = createContext<SearchContextType>({\n enabled: false,\n open: false,\n hotKey: [],\n setOpenSearch: () => undefined,\n});\n\nexport function useSearchContext(): SearchContextType {\n return use(SearchContext);\n}\n\nfunction MetaOrControl() {\n const [key, setKey] = useState('⌘');\n\n useEffect(() => {\n const isWindows = window.navigator.userAgent.includes('Windows');\n\n if (isWindows) setKey('Ctrl');\n }, []);\n\n return key;\n}\n\nexport function SearchProvider({\n SearchDialog,\n children,\n preload = true,\n options,\n hotKey = [\n {\n key: (e) => e.metaKey || e.ctrlKey,\n display: <MetaOrControl />,\n },\n {\n key: 'k',\n display: 'K',\n },\n ],\n links,\n}: SearchProviderProps) {\n const [isOpen, setIsOpen] = useState(preload ? false : undefined);\n const onKeyDown = useEffectEvent((e: KeyboardEvent) => {\n if (hotKey.every((v) => (typeof v.key === 'string' ? e.key === v.key : v.key(e)))) {\n setIsOpen((open) => !open);\n e.preventDefault();\n }\n });\n\n useEffect(() => {\n window.addEventListener('keydown', onKeyDown);\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [hotKey]);\n\n return (\n <SearchContext\n value={useMemo(\n () => ({\n enabled: true,\n open: isOpen ?? false,\n hotKey,\n setOpenSearch: setIsOpen,\n }),\n [isOpen, hotKey],\n )}\n >\n {isOpen !== undefined && (\n <Suspense fallback={null}>\n <SearchDialog\n open={isOpen}\n onOpenChange={setIsOpen}\n // @ts-expect-error -- insert prop for official UIs\n links={links}\n {...options}\n />\n </Suspense>\n )}\n\n {children}\n </SearchContext>\n );\n}\n\n/**\n * Show children only when search is enabled via React Context\n */\nexport function SearchOnly({ children }: { children: ReactNode }) {\n const search = useSearchContext();\n\n if (search.enabled) return children;\n}\n"],"mappings":";;;;AA4EA,MAAM,gBAAgB,cAAiC;CACrD,SAAS;CACT,MAAM;CACN,QAAQ,EAAE;CACV,qBAAqB,KAAA;CACtB,CAAC;AAEF,SAAgB,mBAAsC;AACpD,QAAO,IAAI,cAAc;;AAG3B,SAAS,gBAAgB;CACvB,MAAM,CAAC,KAAK,UAAU,SAAS,IAAI;AAEnC,iBAAgB;AAGd,MAFkB,OAAO,UAAU,UAAU,SAAS,UAAU,CAEjD,QAAO,OAAO;IAC5B,EAAE,CAAC;AAEN,QAAO;;AAGT,SAAgB,eAAe,EAC7B,cACA,UACA,UAAU,MACV,SACA,SAAS,CACP;CACE,MAAM,MAAM,EAAE,WAAW,EAAE;CAC3B,SAAS,oBAAC,eAAD,EAAiB,CAAA;CAC3B,EACD;CACE,KAAK;CACL,SAAS;CACV,CACF,EACD,SACsB;CACtB,MAAM,CAAC,QAAQ,aAAa,SAAS,UAAU,QAAQ,KAAA,EAAU;CACjE,MAAM,YAAY,gBAAgB,MAAqB;AACrD,MAAI,OAAO,OAAO,MAAO,OAAO,EAAE,QAAQ,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAE,EAAE;AACjF,cAAW,SAAS,CAAC,KAAK;AAC1B,KAAE,gBAAgB;;GAEpB;AAEF,iBAAgB;AACd,SAAO,iBAAiB,WAAW,UAAU;AAC7C,eAAa;AACX,UAAO,oBAAoB,WAAW,UAAU;;IAEjD,CAAC,OAAO,CAAC;AAEZ,QACE,qBAAC,eAAD;EACE,OAAO,eACE;GACL,SAAS;GACT,MAAM,UAAU;GAChB;GACA,eAAe;GAChB,GACD,CAAC,QAAQ,OAAO,CACjB;YATH,CAWG,WAAW,KAAA,KACV,oBAAC,UAAD;GAAU,UAAU;aAClB,oBAAC,cAAD;IACE,MAAM;IACN,cAAc;IAEP;IACP,GAAI;IACJ,CAAA;GACO,CAAA,EAGZ,SACa;;;;;;AAOpB,SAAgB,WAAW,EAAE,YAAqC;AAGhE,KAFe,kBAAkB,CAEtB,QAAS,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","names":[],"sources":["../../src/contexts/tree.tsx"],"mappings":";;;;;KAMK,YAAA,oBAAgC,CAAA,IAAK,IAAA,CAAK,CAAA,EAAG,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS,CAAA,GAAI,CAAA;AAAA,UAE/D,eAAA;EACR,IAAA,EAAM,YAAA,CAAa,QAAA,CAAS,IAAA,GAAO,QAAA,CAAS,MAAA;EAC5C,IAAA,EAAM,QAAA,CAAS,IAAA;AAAA;AAAA,iBAMD,mBAAA,CAAA;EACd,IAAA,EAAM,OAAA;EACN;AAAA;EAEA,IAAA,EAAM,QAAA,CAAS,IAAA;EACf,QAAA,EAAU,SAAA;AAAA,IACX,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA0Be,WAAA,CAAA,GAAe,QAAA,CAAS,IAAA;AAAA,iBAIxB,cAAA,CAAA,GAAkB,eAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","names":[],"sources":["../../src/contexts/tree.tsx"],"sourcesContent":["'use client';\nimport type * as PageTree from 'fumadocs-core/page-tree';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { type ReactNode, useMemo, useRef, createContext, use } from 'react';\nimport { searchPath } from 'fumadocs-core/breadcrumb';\n\ntype MakeRequired<O, K extends keyof O> = Omit<O, K> & Pick<Required<O>, K>;\n\ninterface TreeContextType {\n root: MakeRequired<PageTree.Root | PageTree.Folder, '$id'>;\n full: PageTree.Root;\n}\n\nconst TreeContext = createContext<TreeContextType | null>(null);\nconst PathContext = createContext<PageTree.Node[]>([]);\n\nexport function TreeContextProvider({\n tree: rawTree,\n children,\n}: {\n tree: PageTree.Root;\n children: ReactNode;\n}) {\n const nextIdRef = useRef(0);\n const pathname = usePathname();\n\n // I found that object-typed props passed from a RSC will be re-constructed, hence breaking all hooks' dependencies\n // using the id here to make sure this never happens\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const tree = useMemo(() => rawTree, [rawTree.$id ?? rawTree]);\n const path = useMemo(() => {\n return (\n searchPath(tree.children, pathname) ??\n (tree.fallback ? searchPath(tree.fallback.children, pathname) : null) ??\n []\n );\n }, [tree, pathname]);\n\n const root = path.findLast((item) => item.type === 'folder' && item.root) ?? tree;\n root.$id ??= String(nextIdRef.current++);\n\n return (\n <TreeContext value={useMemo(() => ({ root, full: tree }) as TreeContextType, [root, tree])}>\n <PathContext value={path}>{children}</PathContext>\n </TreeContext>\n );\n}\n\nexport function useTreePath(): PageTree.Node[] {\n return use(PathContext);\n}\n\nexport function useTreeContext(): TreeContextType {\n const ctx = use(TreeContext);\n\n if (!ctx) throw new Error('You must wrap this component under <DocsLayout />');\n return ctx;\n}\n"],"mappings":";;;;;;AAaA,MAAM,cAAc,cAAsC,KAAK;AAC/D,MAAM,cAAc,cAA+B,EAAE,CAAC;AAEtD,SAAgB,oBAAoB,EAClC,MAAM,SACN,YAIC;CACD,MAAM,YAAY,OAAO,EAAE;CAC3B,MAAM,WAAW,aAAa;CAK9B,MAAM,OAAO,cAAc,SAAS,CAAC,QAAQ,OAAO,QAAQ,CAAC;CAC7D,MAAM,OAAO,cAAc;AACzB,SACE,WAAW,KAAK,UAAU,SAAS,KAClC,KAAK,WAAW,WAAW,KAAK,SAAS,UAAU,SAAS,GAAG,SAChE,EAAE;IAEH,CAAC,MAAM,SAAS,CAAC;CAEpB,MAAM,OAAO,KAAK,UAAU,SAAS,KAAK,SAAS,YAAY,KAAK,KAAK,IAAI;AAC7E,MAAK,QAAQ,OAAO,UAAU,UAAU;AAExC,QACE,oBAAC,aAAD;EAAa,OAAO,eAAe;GAAE;GAAM,MAAM;GAAM,GAAsB,CAAC,MAAM,KAAK,CAAC;YACxF,oBAAC,aAAD;GAAa,OAAO;GAAO;GAAuB,CAAA;EACtC,CAAA;;AAIlB,SAAgB,cAA+B;AAC7C,QAAO,IAAI,YAAY;;AAGzB,SAAgB,iBAAkC;CAChD,MAAM,MAAM,IAAI,YAAY;AAE5B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,oDAAoD;AAC9E,QAAO"}
|
package/dist/i18n.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","names":[],"sources":["../src/i18n.tsx"],"mappings":";;;;UAKiB,YAAA,mCAA+C,UAAA,CAAW,SAAA;EAA1D;;;EAIf,QAAA,GAAW,MAAA,cAAoB,iBAAA;AAAA;AAAA,iBAGjB,YAAA,0BAAA,CACd,MAAA,EAAQ,UAAA,CAAW,SAAA,GACnB,OAAA;EACE,YAAA,UACQ,SAAA,IAAa,OAAA,CAAQ,YAAA;IAAkB,WAAA;EAAA;AAAA,IAGhD,YAAA,CAAa,SAAA"}
|
package/dist/i18n.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","names":[],"sources":["../src/i18n.tsx"],"sourcesContent":["import type { I18nProviderProps, Translations } from '@/contexts/i18n';\nimport type { I18nConfig } from 'fumadocs-core/i18n';\n\nexport { defaultTranslations, type I18nProviderProps, type Translations } from '@/contexts/i18n';\n\nexport interface I18nUIConfig<Languages extends string> extends I18nConfig<Languages> {\n /**\n * get i18n config for Fumadocs UI `<RootProvider i18n={config} />`.\n */\n provider: (locale?: string) => I18nProviderProps;\n}\n\nexport function defineI18nUI<Languages extends string>(\n config: I18nConfig<Languages>,\n options: {\n translations: {\n [K in Languages]?: Partial<Translations> & { displayName?: string };\n };\n },\n): I18nUIConfig<Languages> {\n const { translations } = options;\n\n return {\n ...config,\n provider(locale = config.defaultLanguage) {\n return {\n locale,\n translations: translations[locale as Languages],\n locales: config.languages.map((locale) => ({\n locale,\n name: translations[locale]?.displayName ?? locale,\n })),\n };\n },\n };\n}\n"],"mappings":";;AAYA,SAAgB,aACd,QACA,SAKyB;CACzB,MAAM,EAAE,iBAAiB;AAEzB,QAAO;EACL,GAAG;EACH,SAAS,SAAS,OAAO,iBAAiB;AACxC,UAAO;IACL;IACA,cAAc,aAAa;IAC3B,SAAS,OAAO,UAAU,KAAK,YAAY;KACzC;KACA,MAAM,aAAa,SAAS,eAAe;KAC5C,EAAE;IACJ;;EAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/layouts/docs/client.tsx"],"mappings":";;;;;;cAWa,aAAA,EAEE,KAAA,CAFW,OAAA;EAAA,gBAAA;AAAA;AAAA,iBAIV,aAAA,CAAA;EAAa,gBAAA;AAAA;AAAA,iBASb,qBAAA,CAAA;EACd,kBAAA;EACA;AAAA;EAEA,kBAAA;EACA,QAAA,EAAU,SAAA;AAAA,IACX,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBe,YAAA,CAAa,KAAA,EAAO,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAU5C,UAAA,CAAA;EAAa,SAAA;EAAW,KAAA;EAAO,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA8B1E,UAAA,CAAA;EACd,OAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,OAAA,EAAS,UAAA;AAAA,IACV,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../../../src/layouts/docs/client.tsx"],"sourcesContent":["'use client';\n\nimport { type ComponentProps, createContext, type ReactNode, use, useMemo } from 'react';\nimport { cn } from '@/utils/cn';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { isTabActive } from '@/components/sidebar/tabs/dropdown';\nimport Link from 'fumadocs-core/link';\nimport type { SidebarTab } from '@/components/sidebar/tabs';\nimport { useIsScrollTop } from '@/utils/use-is-scroll-top';\n\nexport const LayoutContext = createContext<{\n isNavTransparent: boolean;\n} | null>(null);\n\nexport function useDocsLayout() {\n const context = use(LayoutContext);\n if (!context)\n throw new Error(\n 'Please use <DocsPage /> (`fumadocs-ui/layouts/docs/page`) under <DocsLayout /> (`fumadocs-ui/layouts/docs`).',\n );\n return context;\n}\n\nexport function LayoutContextProvider({\n navTransparentMode = 'none',\n children,\n}: {\n navTransparentMode?: 'always' | 'top' | 'none';\n children: ReactNode;\n}) {\n const isTop = useIsScrollTop({ enabled: navTransparentMode === 'top' }) ?? true;\n const isNavTransparent = navTransparentMode === 'top' ? isTop : navTransparentMode === 'always';\n\n return (\n <LayoutContext\n value={useMemo(\n () => ({\n isNavTransparent,\n }),\n [isNavTransparent],\n )}\n >\n {children}\n </LayoutContext>\n );\n}\n\nexport function LayoutHeader(props: ComponentProps<'header'>) {\n const { isNavTransparent } = useDocsLayout();\n\n return (\n <header data-transparent={isNavTransparent} {...props}>\n {props.children}\n </header>\n );\n}\n\nexport function LayoutBody({ className, style, children, ...props }: ComponentProps<'div'>) {\n const { collapsed } = useSidebar();\n\n return (\n <div\n id=\"nd-docs-layout\"\n className={cn(\n 'grid transition-[grid-template-columns] overflow-x-clip min-h-(--fd-docs-height) [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px]',\n className,\n )}\n data-sidebar-collapsed={collapsed}\n style={\n {\n gridTemplate: `\"sidebar sidebar header toc toc\"\n \"sidebar sidebar toc-popover toc toc\"\n \"sidebar sidebar main toc toc\" 1fr / minmax(min-content, 1fr) var(--fd-sidebar-col) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) var(--fd-toc-width) minmax(min-content, 1fr)`,\n '--fd-docs-row-1': 'var(--fd-banner-height, 0px)',\n '--fd-docs-row-2': 'calc(var(--fd-docs-row-1) + var(--fd-header-height))',\n '--fd-docs-row-3': 'calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))',\n '--fd-sidebar-col': collapsed ? '0px' : 'var(--fd-sidebar-width)',\n ...style,\n } as object\n }\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function LayoutTabs({\n options,\n ...props\n}: ComponentProps<'div'> & {\n options: SidebarTab[];\n}) {\n const pathname = usePathname();\n const selected = useMemo(() => {\n return options.findLast((option) => isTabActive(option, pathname));\n }, [options, pathname]);\n\n return (\n <div\n {...props}\n className={cn(\n 'flex flex-row items-end gap-6 overflow-auto [grid-area:main]',\n props.className,\n )}\n >\n {options.map((option, i) => (\n <Link\n key={i}\n href={option.url}\n className={cn(\n 'inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground',\n option.unlisted && selected !== option && 'hidden',\n selected === option && 'border-fd-primary text-fd-primary',\n )}\n >\n {option.title}\n </Link>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAWA,MAAa,gBAAgB,cAEnB,KAAK;AAEf,SAAgB,gBAAgB;CAC9B,MAAM,UAAU,IAAI,cAAc;AAClC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,+GACD;AACH,QAAO;;AAGT,SAAgB,sBAAsB,EACpC,qBAAqB,QACrB,YAIC;CACD,MAAM,QAAQ,eAAe,EAAE,SAAS,uBAAuB,OAAO,CAAC,IAAI;CAC3E,MAAM,mBAAmB,uBAAuB,QAAQ,QAAQ,uBAAuB;AAEvF,QACE,oBAAC,eAAD;EACE,OAAO,eACE,EACL,kBACD,GACD,CAAC,iBAAiB,CACnB;EAEA;EACa,CAAA;;AAIpB,SAAgB,aAAa,OAAiC;CAC5D,MAAM,EAAE,qBAAqB,eAAe;AAE5C,QACE,oBAAC,UAAD;EAAQ,oBAAkB;EAAkB,GAAI;YAC7C,MAAM;EACA,CAAA;;AAIb,SAAgB,WAAW,EAAE,WAAW,OAAO,UAAU,GAAG,SAAgC;CAC1F,MAAM,EAAE,cAAc,YAAY;AAElC,QACE,oBAAC,OAAD;EACE,IAAG;EACH,WAAW,GACT,mNACA,UACD;EACD,0BAAwB;EACxB,OACE;GACE,cAAc;;;GAGd,mBAAmB;GACnB,mBAAmB;GACnB,mBAAmB;GACnB,oBAAoB,YAAY,QAAQ;GACxC,GAAG;GACJ;EAEH,GAAI;EAEH;EACG,CAAA;;AAIV,SAAgB,WAAW,EACzB,SACA,GAAG,SAGF;CACD,MAAM,WAAW,aAAa;CAC9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,WAAW,YAAY,QAAQ,SAAS,CAAC;IACjE,CAAC,SAAS,SAAS,CAAC;AAEvB,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,WAAW,GACT,gEACA,MAAM,UACP;YAEA,QAAQ,KAAK,QAAQ,MACpB,oBAAC,MAAD;GAEE,MAAM,OAAO;GACb,WAAW,GACT,kLACA,OAAO,YAAY,aAAa,UAAU,UAC1C,aAAa,UAAU,oCACxB;aAEA,OAAO;GACH,EATA,EASA,CACP;EACE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/docs/index.tsx"],"mappings":";;;;;;;;;;UA0BiB,eAAA,SAAwB,eAAA;EACvC,IAAA,EAAM,QAAA,CAAS,IAAA;EAEf,OAAA,GAAU,cAAA;EAEV,OAAA;EAL+B;;;EAU/B,cAAA,GAAiB,cAAA,CAAe,cAAA;AAAA;AAAA,UAGxB,cAAA,SAEN,cAAA,WACA,IAAA,CAAK,cAAA,QAAsB,OAAA;EAC7B,OAAA;EACA,SAAA,GAAY,SAAA;EACZ,UAAA,GAAa,OAAA,CAAQ,yBAAA;EAnBkB;;;EAwBvC,IAAA,GAAO,mBAAA,KAAwB,qBAAA;EAE/B,MAAA,GAAS,SAAA;EACT,MAAA,GAAS,SAAA;EAtBT;;;;;EA6BA,WAAA;AAAA;AAAA,iBAGc,UAAA,CAAA;EACd,GAAA;IAAO,eAAA;IAAA,GAAoB;EAAA;EAC3B,OAAA;IACE,IAAA,EAAM,WAAA;IACN,OAAA,EAAS,cAAA;IACT,gBAAA;IACA,QAAA;IAAA,GACG;EAAA;EAEL,YAAA;EACA,WAAA;EACA,OAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["SidebarIcon","Sidebar"],"sources":["../../../src/layouts/docs/index.tsx"],"sourcesContent":["import type * as PageTree from 'fumadocs-core/page-tree';\nimport { type ComponentProps, type HTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { Languages, Sidebar as SidebarIcon } from 'lucide-react';\nimport { cn } from '@/utils/cn';\nimport { buttonVariants } from '@/components/ui/button';\nimport {\n Sidebar,\n SidebarCollapseTrigger,\n SidebarContent,\n SidebarDrawer,\n SidebarLinkItem,\n SidebarPageTree,\n SidebarTrigger,\n SidebarViewport,\n} from './sidebar';\nimport { type BaseLayoutProps, renderTitleNav, useLinkItems } from '@/layouts/shared';\nimport { LinkItem } from '@/utils/link-item';\nimport { LanguageToggle, LanguageToggleText } from '@/layouts/shared/language-toggle';\nimport { LayoutBody, LayoutContextProvider, LayoutHeader, LayoutTabs } from './client';\nimport { TreeContextProvider } from '@/contexts/tree';\nimport { ThemeToggle } from '../shared/theme-toggle';\nimport { LargeSearchToggle, SearchToggle } from '@/layouts/shared/search-toggle';\nimport { getSidebarTabs, type GetSidebarTabsOptions } from '@/components/sidebar/tabs';\nimport type { SidebarPageTreeComponents } from '@/components/sidebar/page-tree';\nimport { SidebarTabsDropdown, type SidebarTabWithProps } from '@/components/sidebar/tabs/dropdown';\n\nexport interface DocsLayoutProps extends BaseLayoutProps {\n tree: PageTree.Root;\n\n sidebar?: SidebarOptions;\n\n tabMode?: 'top' | 'auto';\n\n /**\n * Props for the `div` container\n */\n containerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface SidebarOptions\n extends\n ComponentProps<'aside'>,\n Pick<ComponentProps<typeof Sidebar>, 'defaultOpenLevel' | 'prefetch'> {\n enabled?: boolean;\n component?: ReactNode;\n components?: Partial<SidebarPageTreeComponents>;\n\n /**\n * Root Toggle options\n */\n tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;\n\n banner?: ReactNode;\n footer?: ReactNode;\n\n /**\n * Support collapsing the sidebar on desktop mode\n *\n * @defaultValue true\n */\n collapsible?: boolean;\n}\n\nexport function DocsLayout({\n nav: { transparentMode, ...nav } = {},\n sidebar: {\n tabs: sidebarTabs,\n enabled: sidebarEnabled = true,\n defaultOpenLevel,\n prefetch,\n ...sidebarProps\n } = {},\n searchToggle = {},\n themeSwitch = {},\n tabMode = 'auto',\n i18n = false,\n children,\n tree,\n ...props\n}: DocsLayoutProps) {\n const tabs = useMemo(() => {\n if (Array.isArray(sidebarTabs)) {\n return sidebarTabs;\n }\n if (typeof sidebarTabs === 'object') {\n return getSidebarTabs(tree, sidebarTabs);\n }\n if (sidebarTabs !== false) {\n return getSidebarTabs(tree);\n }\n return [];\n }, [tree, sidebarTabs]);\n const { menuItems } = useLinkItems(props);\n\n function sidebar() {\n const { footer, banner, collapsible = true, component, components, ...rest } = sidebarProps;\n if (component) return component;\n\n const iconLinks = menuItems.filter((item) => item.type === 'icon');\n const viewport = (\n <SidebarViewport>\n {menuItems\n .filter((v) => v.type !== 'icon')\n .map((item, i, list) => (\n <SidebarLinkItem key={i} item={item} className={cn(i === list.length - 1 && 'mb-4')} />\n ))}\n <SidebarPageTree {...components} />\n </SidebarViewport>\n );\n\n return (\n <>\n <SidebarContent {...rest}>\n <div className=\"flex flex-col gap-3 p-4 pb-2\">\n <div className=\"flex\">\n {renderTitleNav(nav, {\n className: 'inline-flex text-[0.9375rem] items-center gap-2.5 font-medium me-auto',\n })}\n {nav.children}\n {collapsible && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'mb-auto text-fd-muted-foreground',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n </div>\n {searchToggle.enabled !== false &&\n (searchToggle.components?.lg ?? <LargeSearchToggle hideIfDisabled />)}\n {tabs.length > 0 && tabMode === 'auto' && <SidebarTabsDropdown options={tabs} />}\n {banner}\n </div>\n {viewport}\n {(i18n || iconLinks.length > 0 || themeSwitch?.enabled !== false || footer) && (\n <div className=\"flex flex-col border-t p-4 pt-2 empty:hidden\">\n <div className=\"flex text-fd-muted-foreground items-center empty:hidden\">\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5\" />\n </LanguageToggle>\n )}\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }))}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle className=\"ms-auto p-0\" mode={themeSwitch.mode} />\n ))}\n </div>\n {footer}\n </div>\n )}\n </SidebarContent>\n <SidebarDrawer>\n <div className=\"flex flex-col gap-3 p-4 pb-2\">\n <div className=\"flex text-fd-muted-foreground items-center gap-1.5\">\n <div className=\"flex flex-1\">\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n className: 'p-2',\n }),\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n </div>\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5\" />\n <LanguageToggleText />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? <ThemeToggle className=\"p-0\" mode={themeSwitch.mode} />)}\n <SidebarTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'p-2',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarTrigger>\n </div>\n {tabs.length > 0 && <SidebarTabsDropdown options={tabs} />}\n {banner}\n </div>\n {viewport}\n <div className=\"flex flex-col border-t p-4 pt-2 empty:hidden\">{footer}</div>\n </SidebarDrawer>\n </>\n );\n }\n\n return (\n <TreeContextProvider tree={tree}>\n <LayoutContextProvider navTransparentMode={transparentMode}>\n <Sidebar defaultOpenLevel={defaultOpenLevel} prefetch={prefetch}>\n <LayoutBody {...props.containerProps}>\n {nav.enabled !== false &&\n (nav.component ?? (\n <LayoutHeader\n id=\"nd-subnav\"\n className=\"[grid-area:header] sticky top-(--fd-docs-row-1) z-30 flex items-center ps-4 pe-2.5 border-b transition-colors backdrop-blur-sm h-(--fd-header-height) md:hidden max-md:layout:[--fd-header-height:--spacing(14)] data-[transparent=false]:bg-fd-background/80\"\n >\n {renderTitleNav(nav, {\n className: 'inline-flex items-center gap-2.5 font-semibold',\n })}\n <div className=\"flex-1\">{nav.children}</div>\n {searchToggle.enabled !== false &&\n (searchToggle.components?.sm ?? (\n <SearchToggle className=\"p-2\" hideIfDisabled />\n ))}\n {sidebarEnabled && (\n <SidebarTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'p-2',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarTrigger>\n )}\n </LayoutHeader>\n ))}\n {sidebarEnabled && sidebar()}\n {tabMode === 'top' && tabs.length > 0 && (\n <LayoutTabs\n options={tabs}\n className=\"z-10 bg-fd-background border-b px-6 pt-3 xl:px-8 max-md:hidden\"\n />\n )}\n {children}\n </LayoutBody>\n </Sidebar>\n </LayoutContextProvider>\n </TreeContextProvider>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../../src/layouts/docs/page/client.tsx"],"mappings":";;;;;;iBAiCgB,cAAA,CAAA;EAAiB,SAAA;EAAW,QAAA;EAAA,GAAa;AAAA,GAAQ,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAsDtE,qBAAA,CAAA;EAAwB,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA2GvE,qBAAA,CAAsB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAYlD,cAAA,CAAA;EACd,IAAA,EAAM,KAAA;EAAA,GACH;AAAA,GACF,IAAA,CAAK,cAAA;EAAqC,IAAA,EAAM,IAAA;AAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KAgBpD,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,IAAA;AAAA,UACT,WAAA,SAAoB,cAAA;EAjM4B;;;EAqM/D,KAAA;IACE,QAAA,GAAW,IAAA;IACX,IAAA,GAAO,IAAA;EAAA;AAAA;AAAA,iBAIK,UAAA,CAAA;EAAa,KAAA;EAAO,QAAA;EAAU,SAAA;EAAA,GAAc;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KA8DpE,eAAA,GAAkB,iBAAA,GAAoB,cAAA;AAAA,iBAElC,cAAA,CAAA;EACd,WAAA;EACA,gBAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../../../../src/layouts/docs/page/client.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n use,\n useEffect,\n useEffectEvent,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\nimport Link from 'fumadocs-core/link';\nimport { cn } from '@/utils/cn';\nimport { useI18n } from '@/contexts/i18n';\nimport { useTreeContext, useTreePath } from '@/contexts/tree';\nimport type * as PageTree from 'fumadocs-core/page-tree';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { type BreadcrumbOptions, getBreadcrumbItemsFromPath } from 'fumadocs-core/breadcrumb';\nimport { isActive } from '@/utils/urls';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { useTOCItems } from '@/components/toc';\nimport { useActiveAnchor } from 'fumadocs-core/toc';\nimport { useDocsLayout } from '../client';\nimport { useFooterItems } from '@/utils/use-footer-items';\n\nconst TocPopoverContext = createContext<{\n open: boolean;\n setOpen: (open: boolean) => void;\n} | null>(null);\n\nexport function PageTOCPopover({ className, children, ...rest }: ComponentProps<'div'>) {\n const ref = useRef<HTMLElement>(null);\n const [open, setOpen] = useState(false);\n const { isNavTransparent } = useDocsLayout();\n\n const onClick = useEffectEvent((e: Event) => {\n if (!open) return;\n\n if (ref.current && !ref.current.contains(e.target as HTMLElement)) setOpen(false);\n });\n\n useEffect(() => {\n window.addEventListener('click', onClick);\n\n return () => {\n window.removeEventListener('click', onClick);\n };\n }, []);\n\n return (\n <TocPopoverContext\n value={useMemo(\n () => ({\n open,\n setOpen,\n }),\n [setOpen, open],\n )}\n >\n <Collapsible\n open={open}\n onOpenChange={setOpen}\n data-toc-popover=\"\"\n className={cn(\n 'sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]',\n className,\n )}\n {...rest}\n >\n <header\n ref={ref}\n className={cn(\n 'border-b backdrop-blur-sm transition-colors',\n (!isNavTransparent || open) && 'bg-fd-background/80',\n open && 'shadow-lg',\n )}\n >\n {children}\n </header>\n </Collapsible>\n </TocPopoverContext>\n );\n}\n\nexport function PageTOCPopoverTrigger({ className, ...props }: ComponentProps<'button'>) {\n const { text } = useI18n();\n const { open } = use(TocPopoverContext)!;\n const items = useTOCItems();\n const active = useActiveAnchor();\n const selected = useMemo(\n () => items.findIndex((item) => active === item.url.slice(1)),\n [items, active],\n );\n const path = useTreePath().at(-1);\n const showItem = selected !== -1 && !open;\n\n return (\n <CollapsibleTrigger\n className={cn(\n 'flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6',\n className,\n )}\n data-toc-popover-trigger=\"\"\n {...props}\n >\n <ProgressCircle\n value={(selected + 1) / Math.max(1, items.length)}\n max={1}\n className={cn('shrink-0', open && 'text-fd-primary')}\n />\n <span className=\"grid flex-1 *:my-auto *:row-start-1 *:col-start-1\">\n <span\n className={cn(\n 'truncate transition-all',\n open && 'text-fd-foreground',\n showItem && 'opacity-0 -translate-y-full pointer-events-none',\n )}\n >\n {path?.name ?? text.toc}\n </span>\n <span\n className={cn(\n 'truncate transition-all',\n !showItem && 'opacity-0 translate-y-full pointer-events-none',\n )}\n >\n {items[selected]?.title}\n </span>\n </span>\n <ChevronDown className={cn('shrink-0 transition-transform mx-0.5', open && 'rotate-180')} />\n </CollapsibleTrigger>\n );\n}\n\ninterface ProgressCircleProps extends Omit<React.ComponentProps<'svg'>, 'strokeWidth'> {\n value: number;\n strokeWidth?: number;\n size?: number;\n min?: number;\n max?: number;\n}\n\nfunction clamp(input: number, min: number, max: number): number {\n if (input < min) return min;\n if (input > max) return max;\n return input;\n}\n\nfunction ProgressCircle({\n value,\n strokeWidth = 2,\n size = 24,\n min = 0,\n max = 100,\n ...restSvgProps\n}: ProgressCircleProps) {\n const normalizedValue = clamp(value, min, max);\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const progress = (normalizedValue / max) * circumference;\n const circleProps = {\n cx: size / 2,\n cy: size / 2,\n r: radius,\n fill: 'none',\n strokeWidth,\n };\n\n return (\n <svg\n role=\"progressbar\"\n viewBox={`0 0 ${size} ${size}`}\n aria-valuenow={normalizedValue}\n aria-valuemin={min}\n aria-valuemax={max}\n {...restSvgProps}\n >\n <circle {...circleProps} className=\"stroke-current/25\" />\n <circle\n {...circleProps}\n stroke=\"currentColor\"\n strokeDasharray={circumference}\n strokeDashoffset={circumference - progress}\n strokeLinecap=\"round\"\n transform={`rotate(-90 ${size / 2} ${size / 2})`}\n className=\"transition-all\"\n />\n </svg>\n );\n}\n\nexport function PageTOCPopoverContent(props: ComponentProps<'div'>) {\n return (\n <CollapsibleContent\n data-toc-popover-content=\"\"\n {...props}\n className={cn('flex flex-col px-4 max-h-[50vh] md:px-6', props.className)}\n >\n <div>{props.children}</div>\n </CollapsibleContent>\n );\n}\n\nexport function PageLastUpdate({\n date: value,\n ...props\n}: Omit<ComponentProps<'p'>, 'children'> & { date: Date }) {\n const { text } = useI18n();\n const [date, setDate] = useState('');\n\n useEffect(() => {\n // to the timezone of client\n setDate(value.toLocaleDateString());\n }, [value]);\n\n return (\n <p {...props} className={cn('text-sm text-fd-muted-foreground', props.className)}>\n {text.lastUpdate} {date}\n </p>\n );\n}\n\ntype Item = Pick<PageTree.Item, 'name' | 'description' | 'url'>;\nexport interface FooterProps extends ComponentProps<'div'> {\n /**\n * Items including information for the next and previous page\n */\n items?: {\n previous?: Item;\n next?: Item;\n };\n}\n\nexport function PageFooter({ items, children, className, ...props }: FooterProps) {\n const footerList = useFooterItems();\n const pathname = usePathname();\n\n const { previous, next } = useMemo(() => {\n if (items) return items;\n\n const idx = footerList.findIndex((item) => isActive(item.url, pathname));\n\n if (idx === -1) return {};\n return {\n previous: footerList[idx - 1],\n next: footerList[idx + 1],\n };\n }, [footerList, items, pathname]);\n\n return (\n <>\n <div\n className={cn(\n '@container grid gap-4',\n previous && next ? 'grid-cols-2' : 'grid-cols-1',\n className,\n )}\n {...props}\n >\n {previous && <FooterItem item={previous} index={0} />}\n {next && <FooterItem item={next} index={1} />}\n </div>\n {children}\n </>\n );\n}\n\nfunction FooterItem({ item, index }: { item: Item; index: 0 | 1 }) {\n const { text } = useI18n();\n const Icon = index === 0 ? ChevronLeft : ChevronRight;\n\n return (\n <Link\n href={item.url}\n className={cn(\n 'flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full',\n index === 1 && 'text-end',\n )}\n >\n <div\n className={cn(\n 'inline-flex items-center gap-1.5 font-medium',\n index === 1 && 'flex-row-reverse',\n )}\n >\n <Icon className=\"-mx-1 size-4 shrink-0 rtl:rotate-180\" />\n <p>{item.name}</p>\n </div>\n <p className=\"text-fd-muted-foreground truncate\">\n {item.description ?? (index === 0 ? text.previousPage : text.nextPage)}\n </p>\n </Link>\n );\n}\n\nexport type BreadcrumbProps = BreadcrumbOptions & ComponentProps<'div'>;\n\nexport function PageBreadcrumb({\n includeRoot,\n includeSeparator,\n includePage,\n ...props\n}: BreadcrumbProps) {\n const path = useTreePath();\n const { root } = useTreeContext();\n const items = useMemo(() => {\n return getBreadcrumbItemsFromPath(root, path, {\n includePage,\n includeSeparator,\n includeRoot,\n });\n }, [includePage, includeRoot, includeSeparator, path, root]);\n\n if (items.length === 0) return null;\n\n return (\n <div\n {...props}\n className={cn('flex items-center gap-1.5 text-sm text-fd-muted-foreground', props.className)}\n >\n {items.map((item, i) => {\n const className = cn('truncate', i === items.length - 1 && 'text-fd-primary font-medium');\n\n return (\n <Fragment key={i}>\n {i !== 0 && <ChevronRight className=\"size-3.5 shrink-0\" />}\n {item.url ? (\n <Link\n href={item.url}\n className={cn(className, 'transition-opacity hover:opacity-80')}\n >\n {item.name}\n </Link>\n ) : (\n <span className={className}>{item.name}</span>\n )}\n </Fragment>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/layouts/docs/page/index.tsx"],"mappings":";;;;;;;UAmBU,iBAAA,SAA0B,eAAA;EAClC,OAAA;EACA,SAAA,EAAW,SAAA;AAAA;AAAA,UAGH,aAAA,SAAsB,WAAA;EAC9B,OAAA;EACA,SAAA,EAAW,SAAA;AAAA;AAAA,UAGI,aAAA;EACf,GAAA,GAAM,WAAA;EACN,cAAA,GAAiB,OAAA,CAAQ,qBAAA;EACzB,qBAAA,GAAwB,OAAA,CAAQ,4BAAA;EAXZ;;AAAA;;;EAkBpB,IAAA;EAf8B;;;EAoB9B,UAAA,GAAa,OAAA,CAAQ,iBAAA;EAlBD;;AAGtB;;;EAsBE,MAAA,GAAS,OAAA,CAAQ,aAAA;EAEjB,QAAA,GAAW,SAAA;EAtBM;;;EA2BjB,SAAA;AAAA;AAAA,KAGG,qBAAA,GAAwB,IAAA,CAAK,mBAAA;EAVvB;;;EAcT,MAAA,GAAS,SAAA;EAnCT;;;EAwCA,MAAA,GAAS,SAAA;EAET,OAAA;EACA,SAAA,EAAW,SAAA;EAzCa;;;EA8CxB,KAAA;AAAA;AAAA,KAGG,4BAAA,GAA+B,IAAA,CAAK,qBAAA;AAAA,iBAEzB,QAAA,CAAA;EACd,UAAA;IAAc,OAAA,EAAS,iBAAA;IAA0B,SAAA,EAAW,UAAA;IAAA,GAAe;EAAA;EAC3E,MAAA;IAAU,OAAA,EAAS,aAAA;IAAe,SAAA,EAAW,aAAA;IAAA,GAAkB;EAAA;EAC/D,IAAA;EACA,qBAAA;IACE,OAAA,EAAS,iBAAA;IACT,SAAA,EAAW,UAAA;IAAA,GACR;EAAA;EAEL,cAAA;IAAkB,OAAA,EAAS,UAAA;IAAY,SAAA,EAAW,UAAA;IAAA,GAAe;EAAA;EACjE,GAAA;EACA,QAAA;EACA;AAAA,GACC,aAAA,GAAa,SAAA;AAAA,iBA4EA,YAAA,CAAa,KAAA,EAAO,cAAA,QAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;iBA4BvC,QAAA,CAAA;EAAW,QAAA;EAAU,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAQjE,eAAA,CAAA;EAAkB,QAAA;EAAU,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,QAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAWtE,SAAA,CAAA;EAAY,QAAA;EAAU,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,SAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TocClerk.TOCItems","TocDefault.TOCItems"],"sources":["../../../../src/layouts/docs/page/index.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport { cn } from '@/utils/cn';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Edit, Text } from 'lucide-react';\nimport { I18nLabel } from '@/contexts/i18n';\nimport {\n type BreadcrumbProps,\n type FooterProps,\n PageBreadcrumb,\n PageFooter,\n PageTOCPopover,\n PageTOCPopoverContent,\n PageTOCPopoverTrigger,\n} from './client';\nimport type { AnchorProviderProps, TOCItemType } from 'fumadocs-core/toc';\nimport * as TocDefault from '@/components/toc/default';\nimport * as TocClerk from '@/components/toc/clerk';\nimport { TOCProvider, TOCScrollArea } from '@/components/toc';\n\ninterface BreadcrumbOptions extends BreadcrumbProps {\n enabled: boolean;\n component: ReactNode;\n}\n\ninterface FooterOptions extends FooterProps {\n enabled: boolean;\n component: ReactNode;\n}\n\nexport interface DocsPageProps {\n toc?: TOCItemType[];\n tableOfContent?: Partial<TableOfContentOptions>;\n tableOfContentPopover?: Partial<TableOfContentPopoverOptions>;\n\n /**\n * Extend the page to fill all available space\n *\n * @defaultValue false\n */\n full?: boolean;\n\n /**\n * Replace or disable breadcrumb\n */\n breadcrumb?: Partial<BreadcrumbOptions>;\n\n /**\n * Footer navigation, located under the page body.\n *\n * You can specify `footer.children` to add extra components under the footer.\n */\n footer?: Partial<FooterOptions>;\n\n children?: ReactNode;\n\n /**\n * Apply class names to the `#nd-page` container.\n */\n className?: string;\n}\n\ntype TableOfContentOptions = Pick<AnchorProviderProps, 'single'> & {\n /**\n * Custom content in TOC container, before the main TOC\n */\n header?: ReactNode;\n\n /**\n * Custom content in TOC container, after the main TOC\n */\n footer?: ReactNode;\n\n enabled: boolean;\n component: ReactNode;\n\n /**\n * @defaultValue 'normal'\n */\n style?: 'normal' | 'clerk';\n};\n\ntype TableOfContentPopoverOptions = Omit<TableOfContentOptions, 'single'>;\n\nexport function DocsPage({\n breadcrumb: { enabled: breadcrumbEnabled = true, component: breadcrumb, ...breadcrumbProps } = {},\n footer: { enabled: footerEnabled, component: footerReplace, ...footerProps } = {},\n full = false,\n tableOfContentPopover: {\n enabled: tocPopoverEnabled,\n component: tocPopover,\n ...tocPopoverOptions\n } = {},\n tableOfContent: { enabled: tocEnabled, component: tocReplace, ...tocOptions } = {},\n toc = [],\n children,\n className,\n}: DocsPageProps) {\n // disable TOC on full mode, you can still enable it with `enabled` option.\n tocEnabled ??=\n !full && (toc.length > 0 || tocOptions.footer !== undefined || tocOptions.header !== undefined);\n\n tocPopoverEnabled ??=\n toc.length > 0 ||\n tocPopoverOptions.header !== undefined ||\n tocPopoverOptions.footer !== undefined;\n\n let wrapper = (children: ReactNode) => children;\n\n if (tocEnabled || tocPopoverEnabled) {\n wrapper = (children) => (\n <TOCProvider single={tocOptions.single} toc={toc}>\n {children}\n </TOCProvider>\n );\n }\n\n return wrapper(\n <>\n {tocPopoverEnabled &&\n (tocPopover ?? (\n <PageTOCPopover>\n <PageTOCPopoverTrigger />\n <PageTOCPopoverContent>\n {tocPopoverOptions.header}\n <TOCScrollArea>\n {tocPopoverOptions.style === 'clerk' ? (\n <TocClerk.TOCItems />\n ) : (\n <TocDefault.TOCItems />\n )}\n </TOCScrollArea>\n {tocPopoverOptions.footer}\n </PageTOCPopoverContent>\n </PageTOCPopover>\n ))}\n <article\n id=\"nd-page\"\n data-full={full}\n className={cn(\n 'flex flex-col w-full max-w-[900px] mx-auto [grid-area:main] px-4 py-6 gap-4 md:px-6 md:pt-8 xl:px-8 xl:pt-14',\n full ? 'max-w-[1168px]' : 'xl:layout:[--fd-toc-width:268px]',\n className,\n )}\n >\n {breadcrumbEnabled && (breadcrumb ?? <PageBreadcrumb {...breadcrumbProps} />)}\n {children}\n {footerEnabled !== false && (footerReplace ?? <PageFooter {...footerProps} />)}\n </article>\n {tocEnabled &&\n (tocReplace ?? (\n <div\n id=\"nd-toc\"\n className=\"sticky top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] flex flex-col [grid-area:toc] w-(--fd-toc-width) pt-12 pe-4 pb-2 max-xl:hidden\"\n >\n {tocOptions.header}\n <h3\n id=\"toc-title\"\n className=\"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground\"\n >\n <Text className=\"size-4\" />\n <I18nLabel label=\"toc\" />\n </h3>\n <TOCScrollArea>\n {tocOptions.style === 'clerk' ? <TocClerk.TOCItems /> : <TocDefault.TOCItems />}\n </TOCScrollArea>\n {tocOptions.footer}\n </div>\n ))}\n </>,\n );\n}\n\nexport function EditOnGitHub(props: ComponentProps<'a'>) {\n return (\n <a\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n {...props}\n className={cn(\n buttonVariants({\n color: 'secondary',\n size: 'sm',\n className: 'gap-1.5 not-prose',\n }),\n props.className,\n )}\n >\n {props.children ?? (\n <>\n <Edit className=\"size-3.5\" />\n <I18nLabel label=\"editOnGithub\" />\n </>\n )}\n </a>\n );\n}\n\n/**\n * Add typography styles\n */\nexport function DocsBody({ children, className, ...props }: ComponentProps<'div'>) {\n return (\n <div {...props} className={cn('prose flex-1', className)}>\n {children}\n </div>\n );\n}\n\nexport function DocsDescription({ children, className, ...props }: ComponentProps<'p'>) {\n // Don't render if no description provided\n if (children === undefined) return null;\n\n return (\n <p {...props} className={cn('mb-8 text-lg text-fd-muted-foreground', className)}>\n {children}\n </p>\n );\n}\n\nexport function DocsTitle({ children, className, ...props }: ComponentProps<'h1'>) {\n return (\n <h1 {...props} className={cn('text-[1.75em] font-semibold', className)}>\n {children}\n </h1>\n );\n}\n\nexport { PageLastUpdate, PageBreadcrumb } from './client';\nexport { MarkdownCopyButton, ViewOptionsPopover } from '@/layouts/shared/page-actions';\n"],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { SidebarCollapseTrigger as SidebarCollapseTrigger$1, SidebarDrawerContent, SidebarFolder as SidebarFolder$1, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarProvider, SidebarTrigger as SidebarTrigger$1, SidebarViewport as SidebarViewport$1 } from "../../components/sidebar/base.js";
|
|
2
|
-
import { LinkItemType } from "../../utils/link-item.js";
|
|
3
|
-
import { SidebarPageTreeComponents } from "../../components/sidebar/page-tree.js";
|
|
4
|
-
import * as react from "react";
|
|
5
|
-
import { ComponentProps } from "react";
|
|
6
|
-
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
//#region src/layouts/docs/sidebar.d.ts
|
|
9
|
-
declare function Sidebar(props: ComponentProps<typeof SidebarProvider>): react_jsx_runtime0.JSX.Element;
|
|
10
|
-
declare function SidebarFolder(props: ComponentProps<typeof SidebarFolder$1>): react_jsx_runtime0.JSX.Element;
|
|
11
|
-
declare function SidebarCollapseTrigger(props: ComponentProps<typeof SidebarCollapseTrigger$1>): react_jsx_runtime0.JSX.Element;
|
|
12
|
-
declare function SidebarViewport(props: ComponentProps<typeof SidebarViewport$1>): react_jsx_runtime0.JSX.Element;
|
|
13
|
-
declare function SidebarTrigger(props: ComponentProps<typeof SidebarTrigger$1>): react_jsx_runtime0.JSX.Element;
|
|
14
|
-
declare function SidebarContent({
|
|
15
|
-
ref: refProp,
|
|
16
|
-
className,
|
|
17
|
-
children,
|
|
18
|
-
...props
|
|
19
|
-
}: ComponentProps<'aside'>): react_jsx_runtime0.JSX.Element;
|
|
20
|
-
declare function SidebarDrawer({
|
|
21
|
-
children,
|
|
22
|
-
className,
|
|
23
|
-
...props
|
|
24
|
-
}: ComponentProps<typeof SidebarDrawerContent>): react_jsx_runtime0.JSX.Element;
|
|
25
|
-
declare function SidebarSeparator({
|
|
26
|
-
className,
|
|
27
|
-
style,
|
|
28
|
-
children,
|
|
29
|
-
...props
|
|
30
|
-
}: ComponentProps<'p'>): react_jsx_runtime0.JSX.Element;
|
|
31
|
-
declare function SidebarItem({
|
|
32
|
-
className,
|
|
33
|
-
style,
|
|
34
|
-
children,
|
|
35
|
-
...props
|
|
36
|
-
}: ComponentProps<typeof SidebarItem$1>): react_jsx_runtime0.JSX.Element;
|
|
37
|
-
declare function SidebarFolderTrigger({
|
|
38
|
-
className,
|
|
39
|
-
style,
|
|
40
|
-
...props
|
|
41
|
-
}: ComponentProps<typeof SidebarFolderTrigger$1>): react_jsx_runtime0.JSX.Element;
|
|
42
|
-
declare function SidebarFolderLink({
|
|
43
|
-
className,
|
|
44
|
-
style,
|
|
45
|
-
...props
|
|
46
|
-
}: ComponentProps<typeof SidebarFolderLink$1>): react_jsx_runtime0.JSX.Element;
|
|
47
|
-
declare function SidebarFolderContent({
|
|
48
|
-
className,
|
|
49
|
-
children,
|
|
50
|
-
...props
|
|
51
|
-
}: ComponentProps<typeof SidebarFolderContent$1>): react_jsx_runtime0.JSX.Element;
|
|
52
|
-
declare const SidebarPageTree: (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime0.JSX.Element;
|
|
53
|
-
declare const SidebarLinkItem: ({
|
|
54
|
-
item,
|
|
55
|
-
...props
|
|
56
|
-
}: react.HTMLAttributes<HTMLElement> & {
|
|
57
|
-
item: Exclude<LinkItemType, {
|
|
58
|
-
type: "icon";
|
|
59
|
-
}>;
|
|
60
|
-
}) => react_jsx_runtime0.JSX.Element;
|
|
61
|
-
//#endregion
|
|
62
|
-
export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
|
|
63
|
-
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../../src/layouts/docs/sidebar.tsx"],"mappings":";;;;;;;;iBAgCgB,OAAA,CAAQ,KAAA,EAAO,cAAA,QAAsB,eAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI1D,aAAA,CAAc,KAAA,EAAO,cAAA,QAAsB,eAAA,IAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI9D,sBAAA,CAAuB,KAAA,EAAO,cAAA,QAAsB,wBAAA,IAA4B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIhF,eAAA,CAAgB,KAAA,EAAO,cAAA,QAAsB,iBAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIlE,cAAA,CAAe,KAAA,EAAO,cAAA,QAAsB,gBAAA,IAAoB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIhE,cAAA,CAAA;EACd,GAAA,EAAK,OAAA;EACL,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,YAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA8DV,aAAA,CAAA;EACd,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,oBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiBnC,gBAAA,CAAA;EAAmB,SAAA;EAAW,KAAA;EAAO,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,QAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiB9E,WAAA,CAAA;EACd,SAAA;EACA,KAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,aAAA,IAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiB1B,oBAAA,CAAA;EACd,SAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,sBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAuBnC,iBAAA,CAAA;EACd,SAAA;EACA,KAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,mBAAA,IAAuB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiBhC,oBAAA,CAAA;EACd,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,sBAAA,IAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAoBtC,eAAA,GAAe,UAAA,EAAA,OAAA,CAO1B,yBAAA,MAP0B,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cASf,eAAA;EAAe,IAAA;EAAA,GAAA;AAAA,GAAA,KAAA,CAAA,cAAA,CAAA,WAAA;gBAAA,YAAA"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { cn } from "../../utils/cn.js";
|
|
3
|
-
import { buttonVariants } from "../../components/ui/button.js";
|
|
4
|
-
import { mergeRefs } from "../../utils/merge-refs.js";
|
|
5
|
-
import { SidebarCollapseTrigger as SidebarCollapseTrigger$1, SidebarContent as SidebarContent$1, SidebarDrawerContent, SidebarDrawerOverlay, SidebarFolder as SidebarFolder$1, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarProvider, SidebarSeparator as SidebarSeparator$1, SidebarTrigger as SidebarTrigger$1, SidebarViewport as SidebarViewport$1, useFolder, useFolderDepth } from "../../components/sidebar/base.js";
|
|
6
|
-
import { createLinkItemRenderer } from "../../components/sidebar/link-item.js";
|
|
7
|
-
import { createPageTreeRenderer } from "../../components/sidebar/page-tree.js";
|
|
8
|
-
import { SearchToggle } from "../shared/search-toggle.js";
|
|
9
|
-
import { useRef } from "react";
|
|
10
|
-
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
import { Sidebar as Sidebar$1 } from "lucide-react";
|
|
12
|
-
import { cva } from "class-variance-authority";
|
|
13
|
-
//#region src/layouts/docs/sidebar.tsx
|
|
14
|
-
const itemVariants = cva("relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0", { variants: {
|
|
15
|
-
variant: {
|
|
16
|
-
link: "transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors",
|
|
17
|
-
button: "transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none"
|
|
18
|
-
},
|
|
19
|
-
highlight: { true: "data-[active=true]:before:content-[''] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5" }
|
|
20
|
-
} });
|
|
21
|
-
function getItemOffset(depth) {
|
|
22
|
-
return `calc(${2 + 3 * depth} * var(--spacing))`;
|
|
23
|
-
}
|
|
24
|
-
function Sidebar(props) {
|
|
25
|
-
return /* @__PURE__ */ jsx(SidebarProvider, { ...props });
|
|
26
|
-
}
|
|
27
|
-
function SidebarFolder(props) {
|
|
28
|
-
return /* @__PURE__ */ jsx(SidebarFolder$1, { ...props });
|
|
29
|
-
}
|
|
30
|
-
function SidebarCollapseTrigger(props) {
|
|
31
|
-
return /* @__PURE__ */ jsx(SidebarCollapseTrigger$1, { ...props });
|
|
32
|
-
}
|
|
33
|
-
function SidebarViewport(props) {
|
|
34
|
-
return /* @__PURE__ */ jsx(SidebarViewport$1, { ...props });
|
|
35
|
-
}
|
|
36
|
-
function SidebarTrigger(props) {
|
|
37
|
-
return /* @__PURE__ */ jsx(SidebarTrigger$1, { ...props });
|
|
38
|
-
}
|
|
39
|
-
function SidebarContent({ ref: refProp, className, children, ...props }) {
|
|
40
|
-
const ref = useRef(null);
|
|
41
|
-
return /* @__PURE__ */ jsx(SidebarContent$1, { children: ({ collapsed, hovered, ref: asideRef, ...rest }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("div", {
|
|
42
|
-
"data-sidebar-placeholder": "",
|
|
43
|
-
className: "sticky top-(--fd-docs-row-1) z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] md:layout:[--fd-sidebar-width:268px] max-md:hidden",
|
|
44
|
-
children: [collapsed && /* @__PURE__ */ jsx("div", {
|
|
45
|
-
className: "absolute start-0 inset-y-0 w-4",
|
|
46
|
-
...rest
|
|
47
|
-
}), /* @__PURE__ */ jsx("aside", {
|
|
48
|
-
id: "nd-sidebar",
|
|
49
|
-
ref: mergeRefs(ref, refProp, asideRef),
|
|
50
|
-
"data-collapsed": collapsed,
|
|
51
|
-
"data-hovered": collapsed && hovered,
|
|
52
|
-
className: cn("absolute flex flex-col w-full start-0 inset-y-0 items-end bg-fd-card text-sm border-e duration-250 *:w-(--fd-sidebar-width)", collapsed && ["inset-y-2 rounded-xl transition-transform border w-(--fd-sidebar-width)", hovered ? "shadow-lg translate-x-2 rtl:-translate-x-2" : "-translate-x-(--fd-sidebar-width) rtl:translate-x-full"], ref.current && ref.current.getAttribute("data-collapsed") === "true" !== collapsed && "transition-[width,inset-block,translate,background-color]", className),
|
|
53
|
-
...props,
|
|
54
|
-
...rest,
|
|
55
|
-
children
|
|
56
|
-
})]
|
|
57
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
58
|
-
"data-sidebar-panel": "",
|
|
59
|
-
className: cn("fixed flex top-[calc(--spacing(4)+var(--fd-docs-row-3))] start-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10", (!collapsed || hovered) && "pointer-events-none opacity-0"),
|
|
60
|
-
children: [/* @__PURE__ */ jsx(SidebarCollapseTrigger$1, {
|
|
61
|
-
className: cn(buttonVariants({
|
|
62
|
-
color: "ghost",
|
|
63
|
-
size: "icon-sm",
|
|
64
|
-
className: "rounded-lg"
|
|
65
|
-
})),
|
|
66
|
-
children: /* @__PURE__ */ jsx(Sidebar$1, {})
|
|
67
|
-
}), /* @__PURE__ */ jsx(SearchToggle, {
|
|
68
|
-
className: "rounded-lg",
|
|
69
|
-
hideIfDisabled: true
|
|
70
|
-
})]
|
|
71
|
-
})] }) });
|
|
72
|
-
}
|
|
73
|
-
function SidebarDrawer({ children, className, ...props }) {
|
|
74
|
-
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(SidebarDrawerOverlay, { className: "fixed z-40 inset-0 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out" }), /* @__PURE__ */ jsx(SidebarDrawerContent, {
|
|
75
|
-
className: cn("fixed text-[0.9375rem] flex flex-col shadow-lg border-s end-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out", className),
|
|
76
|
-
...props,
|
|
77
|
-
children
|
|
78
|
-
})] });
|
|
79
|
-
}
|
|
80
|
-
function SidebarSeparator({ className, style, children, ...props }) {
|
|
81
|
-
const depth = useFolderDepth();
|
|
82
|
-
return /* @__PURE__ */ jsx(SidebarSeparator$1, {
|
|
83
|
-
className: cn("[&_svg]:size-4 [&_svg]:shrink-0", className),
|
|
84
|
-
style: {
|
|
85
|
-
paddingInlineStart: getItemOffset(depth),
|
|
86
|
-
...style
|
|
87
|
-
},
|
|
88
|
-
...props,
|
|
89
|
-
children
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
function SidebarItem({ className, style, children, ...props }) {
|
|
93
|
-
const depth = useFolderDepth();
|
|
94
|
-
return /* @__PURE__ */ jsx(SidebarItem$1, {
|
|
95
|
-
className: cn(itemVariants({
|
|
96
|
-
variant: "link",
|
|
97
|
-
highlight: depth >= 1
|
|
98
|
-
}), className),
|
|
99
|
-
style: {
|
|
100
|
-
paddingInlineStart: getItemOffset(depth),
|
|
101
|
-
...style
|
|
102
|
-
},
|
|
103
|
-
...props,
|
|
104
|
-
children
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function SidebarFolderTrigger({ className, style, ...props }) {
|
|
108
|
-
const { depth, collapsible } = useFolder();
|
|
109
|
-
return /* @__PURE__ */ jsx(SidebarFolderTrigger$1, {
|
|
110
|
-
className: (s) => cn(itemVariants({ variant: collapsible ? "button" : null }), "w-full", typeof className === "function" ? className(s) : className),
|
|
111
|
-
style: {
|
|
112
|
-
paddingInlineStart: getItemOffset(depth - 1),
|
|
113
|
-
...style
|
|
114
|
-
},
|
|
115
|
-
...props,
|
|
116
|
-
children: props.children
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
function SidebarFolderLink({ className, style, ...props }) {
|
|
120
|
-
const depth = useFolderDepth();
|
|
121
|
-
return /* @__PURE__ */ jsx(SidebarFolderLink$1, {
|
|
122
|
-
className: cn(itemVariants({
|
|
123
|
-
variant: "link",
|
|
124
|
-
highlight: depth > 1
|
|
125
|
-
}), "w-full", className),
|
|
126
|
-
style: {
|
|
127
|
-
paddingInlineStart: getItemOffset(depth - 1),
|
|
128
|
-
...style
|
|
129
|
-
},
|
|
130
|
-
...props,
|
|
131
|
-
children: props.children
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
function SidebarFolderContent({ className, children, ...props }) {
|
|
135
|
-
const depth = useFolderDepth();
|
|
136
|
-
return /* @__PURE__ */ jsx(SidebarFolderContent$1, {
|
|
137
|
-
className: (s) => cn("relative", depth === 1 && "before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5", typeof className === "function" ? className(s) : className),
|
|
138
|
-
...props,
|
|
139
|
-
children
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
const SidebarPageTree = createPageTreeRenderer({
|
|
143
|
-
SidebarFolder,
|
|
144
|
-
SidebarFolderContent,
|
|
145
|
-
SidebarFolderLink,
|
|
146
|
-
SidebarFolderTrigger,
|
|
147
|
-
SidebarItem,
|
|
148
|
-
SidebarSeparator
|
|
149
|
-
});
|
|
150
|
-
const SidebarLinkItem = createLinkItemRenderer({
|
|
151
|
-
SidebarFolder,
|
|
152
|
-
SidebarFolderContent,
|
|
153
|
-
SidebarFolderLink,
|
|
154
|
-
SidebarFolderTrigger,
|
|
155
|
-
SidebarItem
|
|
156
|
-
});
|
|
157
|
-
//#endregion
|
|
158
|
-
export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
|
|
159
|
-
|
|
160
|
-
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","names":["Base.SidebarProvider","Base.SidebarFolder","Base.SidebarCollapseTrigger","Base.SidebarViewport","Base.SidebarTrigger","Base.SidebarContent","SidebarIcon","Base.SidebarDrawerOverlay","Base.SidebarDrawerContent","Base.useFolderDepth","Base.SidebarSeparator","Base.SidebarItem","Base.useFolder","Base.SidebarFolderTrigger","Base.SidebarFolderLink","Base.SidebarFolderContent"],"sources":["../../../src/layouts/docs/sidebar.tsx"],"sourcesContent":["'use client';\nimport * as Base from '@/components/sidebar/base';\nimport { cn } from '@/utils/cn';\nimport { type ComponentProps, useRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { createPageTreeRenderer } from '@/components/sidebar/page-tree';\nimport { createLinkItemRenderer } from '@/components/sidebar/link-item';\nimport { buttonVariants } from '@/components/ui/button';\nimport { SearchToggle } from '@/layouts/shared/search-toggle';\nimport { Sidebar as SidebarIcon } from 'lucide-react';\nimport { mergeRefs } from '@/utils/merge-refs';\n\nconst itemVariants = cva(\n 'relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n link: 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors',\n button:\n 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',\n },\n highlight: {\n true: \"data-[active=true]:before:content-[''] data-[active=true]:before:bg-fd-primary data-[active=true]:before:absolute data-[active=true]:before:w-px data-[active=true]:before:inset-y-2.5 data-[active=true]:before:start-2.5\",\n },\n },\n },\n);\n\nfunction getItemOffset(depth: number) {\n return `calc(${2 + 3 * depth} * var(--spacing))`;\n}\n\nexport function Sidebar(props: ComponentProps<typeof Base.SidebarProvider>) {\n return <Base.SidebarProvider {...props} />;\n}\n\nexport function SidebarFolder(props: ComponentProps<typeof Base.SidebarFolder>) {\n return <Base.SidebarFolder {...props} />;\n}\n\nexport function SidebarCollapseTrigger(props: ComponentProps<typeof Base.SidebarCollapseTrigger>) {\n return <Base.SidebarCollapseTrigger {...props} />;\n}\n\nexport function SidebarViewport(props: ComponentProps<typeof Base.SidebarViewport>) {\n return <Base.SidebarViewport {...props} />;\n}\n\nexport function SidebarTrigger(props: ComponentProps<typeof Base.SidebarTrigger>) {\n return <Base.SidebarTrigger {...props} />;\n}\n\nexport function SidebarContent({\n ref: refProp,\n className,\n children,\n ...props\n}: ComponentProps<'aside'>) {\n const ref = useRef<HTMLElement>(null);\n\n return (\n <Base.SidebarContent>\n {({ collapsed, hovered, ref: asideRef, ...rest }) => (\n <>\n <div\n data-sidebar-placeholder=\"\"\n className=\"sticky top-(--fd-docs-row-1) z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] md:layout:[--fd-sidebar-width:268px] max-md:hidden\"\n >\n {collapsed && <div className=\"absolute start-0 inset-y-0 w-4\" {...rest} />}\n <aside\n id=\"nd-sidebar\"\n ref={mergeRefs(ref, refProp, asideRef)}\n data-collapsed={collapsed}\n data-hovered={collapsed && hovered}\n className={cn(\n 'absolute flex flex-col w-full start-0 inset-y-0 items-end bg-fd-card text-sm border-e duration-250 *:w-(--fd-sidebar-width)',\n collapsed && [\n 'inset-y-2 rounded-xl transition-transform border w-(--fd-sidebar-width)',\n hovered\n ? 'shadow-lg translate-x-2 rtl:-translate-x-2'\n : '-translate-x-(--fd-sidebar-width) rtl:translate-x-full',\n ],\n ref.current &&\n (ref.current.getAttribute('data-collapsed') === 'true') !== collapsed &&\n 'transition-[width,inset-block,translate,background-color]',\n className,\n )}\n {...props}\n {...rest}\n >\n {children}\n </aside>\n </div>\n <div\n data-sidebar-panel=\"\"\n className={cn(\n 'fixed flex top-[calc(--spacing(4)+var(--fd-docs-row-3))] start-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10',\n (!collapsed || hovered) && 'pointer-events-none opacity-0',\n )}\n >\n <Base.SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'rounded-lg',\n }),\n )}\n >\n <SidebarIcon />\n </Base.SidebarCollapseTrigger>\n <SearchToggle className=\"rounded-lg\" hideIfDisabled />\n </div>\n </>\n )}\n </Base.SidebarContent>\n );\n}\n\nexport function SidebarDrawer({\n children,\n className,\n ...props\n}: ComponentProps<typeof Base.SidebarDrawerContent>) {\n return (\n <>\n <Base.SidebarDrawerOverlay className=\"fixed z-40 inset-0 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out\" />\n <Base.SidebarDrawerContent\n className={cn(\n 'fixed text-[0.9375rem] flex flex-col shadow-lg border-s end-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out',\n className,\n )}\n {...props}\n >\n {children}\n </Base.SidebarDrawerContent>\n </>\n );\n}\n\nexport function SidebarSeparator({ className, style, children, ...props }: ComponentProps<'p'>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarSeparator\n className={cn('[&_svg]:size-4 [&_svg]:shrink-0', className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...props}\n >\n {children}\n </Base.SidebarSeparator>\n );\n}\n\nexport function SidebarItem({\n className,\n style,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarItem>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarItem\n className={cn(itemVariants({ variant: 'link', highlight: depth >= 1 }), className)}\n style={{\n paddingInlineStart: getItemOffset(depth),\n ...style,\n }}\n {...props}\n >\n {children}\n </Base.SidebarItem>\n );\n}\n\nexport function SidebarFolderTrigger({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderTrigger>) {\n const { depth, collapsible } = Base.useFolder()!;\n\n return (\n <Base.SidebarFolderTrigger\n className={(s) =>\n cn(\n itemVariants({ variant: collapsible ? 'button' : null }),\n 'w-full',\n typeof className === 'function' ? className(s) : className,\n )\n }\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...props}\n >\n {props.children}\n </Base.SidebarFolderTrigger>\n );\n}\n\nexport function SidebarFolderLink({\n className,\n style,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderLink>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarFolderLink\n className={cn(itemVariants({ variant: 'link', highlight: depth > 1 }), 'w-full', className)}\n style={{\n paddingInlineStart: getItemOffset(depth - 1),\n ...style,\n }}\n {...props}\n >\n {props.children}\n </Base.SidebarFolderLink>\n );\n}\n\nexport function SidebarFolderContent({\n className,\n children,\n ...props\n}: ComponentProps<typeof Base.SidebarFolderContent>) {\n const depth = Base.useFolderDepth();\n\n return (\n <Base.SidebarFolderContent\n className={(s) =>\n cn(\n 'relative',\n depth === 1 &&\n \"before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5\",\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {children}\n </Base.SidebarFolderContent>\n );\n}\n\nexport const SidebarPageTree = createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n SidebarSeparator,\n});\n\nexport const SidebarLinkItem = createLinkItemRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarItem,\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/flux/index.tsx"],"mappings":";;;;;;;;;;;UAsBiB,eAAA,SAAwB,eAAA;EACvC,IAAA,EAAM,QAAA,CAAS,IAAA;EAEf,OAAA,GAAU,cAAA;EAHK;;;EAQf,cAAA,GAAiB,cAAA,CAAe,cAAA;EAEhC,qBAAA,IAAyB,KAAA,EAAO,oBAAA,KAAyB,SAAA;AAAA;AAAA,UAGjD,cAAA,SAEN,cAAA,WACA,IAAA,CAAK,cAAA,QAAsB,OAAA;EAC7B,OAAA;EACA,SAAA,GAAY,SAAA;EACZ,UAAA,GAAa,OAAA,CAAQ,yBAAA;EAnBiC;;;EAwBtD,IAAA,GAAO,mBAAA,KAAwB,qBAAA;EAE/B,MAAA,GAAS,SAAA;EACT,MAAA,GAAS,SAAA;AAAA;AAAA,iBAGK,UAAA,CAAA;EACd,IAAA;EACA,GAAA;EACA,OAAA;IACE,OAAA,EAAS,cAAA;IACT,IAAA,EAAM,WAAA;IACN,gBAAA;IACA,QAAA;IAAA,GACG;EAAA;EAEL,YAAA;EACA,WAAA;EACA,IAAA;EACA,QAAA;EACA,cAAA;EACA,qBAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UAuID,oBAAA;EACf,IAAA,EAAM,SAAA;EACN,WAAA,EAAa,SAAA;EACb,IAAA,EAAM,SAAA;EACN,IAAA,EAAM,SAAA;AAAA;AAAA,iBAGQ,eAAA,CAAA;EACd,IAAA;EACA,WAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,oBAAA,GACD,IAAA,CAAK,cAAA,QAAsB,MAAA,CAAO,GAAA;EA3LgC;;AACnE;EA8LG,QAAA,IAAY,eAAA,EAAiB,SAAA,KAAc,SAAA;AAAA,IAC5C,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAyCa,sBAAA,CAAA;EACd,OAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,MAAA,CAAO,GAAA;EAAS,OAAA;AAAA,IAAmB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Sidebar"],"sources":["../../../src/layouts/flux/index.tsx"],"sourcesContent":["'use client';\nimport type * as PageTree from 'fumadocs-core/page-tree';\nimport type { BaseLayoutProps } from '@/layouts/shared';\nimport { TreeContextProvider } from '@/contexts/tree';\nimport { getSidebarTabs, type GetSidebarTabsOptions } from '@/components/sidebar/tabs';\nimport type { SidebarPageTreeComponents } from '@/components/sidebar/page-tree';\nimport { type ComponentProps, HTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { cn } from '@/utils/cn';\nimport { SidebarViewport, useSidebar } from '@/components/sidebar/base';\nimport { SidebarTabsDropdown, type SidebarTabWithProps } from './tab-dropdown';\nimport { Sidebar, SidebarContent, SidebarLinkItem, SidebarPageTree } from './sidebar';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Languages, SidebarIcon, XIcon } from 'lucide-react';\nimport { renderTitleNav, useLinkItems } from '../shared';\nimport { LanguageToggle } from '../shared/language-toggle';\nimport { SearchToggle } from '../shared/search-toggle';\nimport { ThemeToggle } from '../shared/theme-toggle';\nimport { LinkItem } from '@/utils/link-item';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { useSearchContext } from '@/contexts/search';\n\nexport interface DocsLayoutProps extends BaseLayoutProps {\n tree: PageTree.Root;\n\n sidebar?: SidebarOptions;\n\n /**\n * Props for the `div` container\n */\n containerProps?: HTMLAttributes<HTMLDivElement>;\n\n renderNavigationPanel?: (props: NavigationPanelProps) => ReactNode;\n}\n\ninterface SidebarOptions\n extends\n ComponentProps<'aside'>,\n Pick<ComponentProps<typeof Sidebar>, 'defaultOpenLevel' | 'prefetch'> {\n enabled?: boolean;\n component?: ReactNode;\n components?: Partial<SidebarPageTreeComponents>;\n\n /**\n * Root Toggle options\n */\n tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;\n\n banner?: ReactNode;\n footer?: ReactNode;\n}\n\nexport function DocsLayout({\n tree,\n nav = {},\n sidebar: {\n enabled: sidebarEnabled = true,\n tabs: sidebarTabs,\n defaultOpenLevel,\n prefetch,\n ...sidebarProps\n } = {},\n searchToggle = {},\n themeSwitch = {},\n i18n = false,\n children,\n containerProps,\n renderNavigationPanel = (props) => <NavigationPanel {...props} />,\n ...props\n}: DocsLayoutProps) {\n const tabs = useMemo(() => {\n if (Array.isArray(sidebarTabs)) {\n return sidebarTabs;\n }\n if (typeof sidebarTabs === 'object') {\n return getSidebarTabs(tree, sidebarTabs);\n }\n if (sidebarTabs !== false) {\n return getSidebarTabs(tree);\n }\n return [];\n }, [tree, sidebarTabs]);\n const { menuItems } = useLinkItems(props);\n const iconLinks = menuItems.filter((item) => item.type === 'icon');\n\n function sidebar() {\n const { footer, banner, component, components, ...rest } = sidebarProps;\n if (component) return component;\n\n return (\n <SidebarContent {...rest}>\n <div className=\"flex flex-col gap-3 p-4 pb-2 empty:hidden\">{banner}</div>\n <SidebarViewport>\n {menuItems\n .filter((v) => v.type !== 'icon')\n .map((item, i, list) => (\n <SidebarLinkItem\n key={i}\n item={item}\n className={cn(i === list.length - 1 && 'mb-4')}\n />\n ))}\n <SidebarPageTree {...components} />\n </SidebarViewport>\n {footer}\n </SidebarContent>\n );\n }\n\n return (\n <TreeContextProvider tree={tree}>\n <Sidebar defaultOpenLevel={defaultOpenLevel} prefetch={prefetch}>\n <div\n id=\"nd-flux-layout\"\n {...containerProps}\n className={cn(\n 'flex flex-col items-center pb-24 overflow-x-clip',\n containerProps?.className,\n )}\n >\n {sidebarEnabled && sidebar()}\n {children}\n </div>\n {renderNavigationPanel({\n head: renderTitleNav(nav, {\n className: 'inline-flex items-center gap-2.5 text-sm font-semibold',\n }),\n tabDropdown: tabs.length > 0 && <SidebarTabsDropdown className=\"flex-1\" options={tabs} />,\n tool: (\n <>\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5\" />\n </LanguageToggle>\n )}\n\n {searchToggle.enabled !== false &&\n (searchToggle.components?.sm ?? (\n <SearchToggle className=\"rounded-lg\" hideIfDisabled />\n ))}\n\n <NavigationSidebarTrigger />\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle\n className=\"px-1 py-0 h-full ms-1 rounded-xl bg-fd-muted *:rounded-lg\"\n mode={themeSwitch.mode}\n />\n ))}\n </>\n ),\n link: iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }))}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n )),\n })}\n </Sidebar>\n </TreeContextProvider>\n );\n}\n\nfunction NavigationSidebarTrigger() {\n const { open, setOpen } = useSidebar();\n return (\n <button\n className={cn(\n buttonVariants({\n variant: 'ghost',\n size: 'icon-sm',\n className: 'overflow-hidden',\n }),\n )}\n onClick={() => setOpen((prev) => !prev)}\n >\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={open ? 'open' : 'closed'}\n transition={{ duration: 0.2 }}\n initial={{\n y: '100%',\n opacity: 0,\n }}\n animate={{\n y: 0,\n opacity: 1,\n }}\n exit={{\n y: '100%',\n opacity: 0,\n }}\n >\n {open ? <XIcon /> : <SidebarIcon />}\n </motion.span>\n </AnimatePresence>\n </button>\n );\n}\n\nexport interface NavigationPanelProps {\n head: ReactNode;\n tabDropdown: ReactNode;\n tool: ReactNode;\n link: ReactNode;\n}\n\nexport function NavigationPanel({\n head,\n tabDropdown,\n tool,\n link,\n children = (v) => v,\n ...props\n}: NavigationPanelProps &\n Omit<ComponentProps<typeof motion.div>, 'children'> & {\n /**\n * replace default children\n */\n children?: (defaultChildren: ReactNode) => ReactNode;\n }) {\n const { open } = useSearchContext();\n return (\n <motion.div\n {...props}\n className={cn(\n 'fixed left-1/2 w-[calc(100%-var(--removed-body-scroll-bar-size,0px))] translate-x-[calc(-50%-var(--removed-body-scroll-bar-size,0px)/2)] bottom-0 z-40 bg-fd-popover text-fd-popover-foreground border-t shadow-lg sm:bottom-6 sm:rounded-2xl sm:border sm:max-w-[380px]',\n props.className,\n )}\n animate={\n props.animate ?? {\n scale: open ? 0.9 : 1,\n translateY: open ? 20 : 0,\n opacity: open ? 0.8 : 1,\n }\n }\n >\n {children(\n <>\n <div className=\"flex flex-row items-center ps-2.5 p-1 gap-2 min-h-11\">\n {head}\n <div id=\"flux-layout-slot\" className=\"flex-1\" />\n </div>\n\n <div className=\"flex flex-row gap-1.5 overflow-x-auto overflow-y-hidden p-2 sm:p-1\">\n <div className=\"flex flex-row items-center gap-2 min-w-0 flex-1\">{tabDropdown}</div>\n\n <div className=\"flex flex-row items-center text-fd-muted-foreground border-x px-0.5 empty:hidden\">\n {link}\n </div>\n\n <div className=\"flex flex-row items-center text-fd-muted-foreground empty:hidden\">\n {tool}\n </div>\n </div>\n </>,\n )}\n </motion.div>\n );\n}\n\nexport function NavigationPanelOverlay({\n enabled = false,\n className,\n ...props\n}: ComponentProps<typeof motion.div> & { enabled?: boolean }) {\n return (\n <RemoveScroll enabled={enabled}>\n <motion.div\n className={cn(\n 'fixed inset-0 z-30 pr-(--removed-body-scroll-bar-size,0) backdrop-blur-md bg-fd-background/60',\n !enabled && 'pointer-events-none',\n className,\n )}\n initial=\"hide\"\n variants={{\n show: {\n opacity: 1,\n },\n hide: {\n opacity: 0,\n },\n }}\n animate={enabled ? 'show' : 'hide'}\n exit=\"hide\"\n {...props}\n />\n </RemoveScroll>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../../src/layouts/flux/page/client.tsx"],"mappings":";;;;;;;iBAkCgB,cAAA,CAAe,KAAA,EAAO,cAAA,UAAc,KAAA,CAAO,WAAA;AAAA,iBA8D3C,qBAAA,CAAA;EAAwB,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAyHvE,qBAAA,CAAsB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAYlD,cAAA,CAAA;EACd,IAAA,EAAM,KAAA;EAAA,GACH;AAAA,GACF,IAAA,CAAK,cAAA;EAAqC,IAAA,EAAM,IAAA;AAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KAgBpD,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,IAAA;AAAA,UACT,WAAA,SAAoB,cAAA;EAvNC;;;EA2NpC,KAAA;IACE,QAAA,GAAW,IAAA;IACX,IAAA,GAAO,IAAA;EAAA;AAAA;AAAA,iBAIK,UAAA,CAAA;EAAa,KAAA;EAAO,QAAA;EAAU,SAAA;EAAA,GAAc;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KA6DpE,eAAA,GAAkB,iBAAA,GAAoB,cAAA;AAAA,iBAElC,cAAA,CAAA;EACd,WAAA;EACA,gBAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|