@hanzo/docs-base-ui 16.4.2
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/LICENSE +21 -0
- package/README.md +5 -0
- package/css/black.css +1 -0
- package/css/catppuccin.css +1 -0
- package/css/dusk.css +1 -0
- package/css/layouts/docs.css +1 -0
- package/css/layouts/home.css +1 -0
- package/css/layouts/notebook.css +1 -0
- package/css/neutral.css +1 -0
- package/css/ocean.css +1 -0
- package/css/preset.css +10 -0
- package/css/purple.css +1 -0
- package/css/shadcn.css +1 -0
- package/css/solar.css +1 -0
- package/css/style.css +9 -0
- package/css/vitepress.css +1 -0
- package/dist/_virtual/rolldown_runtime.js +36 -0
- package/dist/components/accordion.d.ts +24 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +71 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/banner.d.ts +35 -0
- package/dist/components/banner.d.ts.map +1 -0
- package/dist/components/banner.js +70 -0
- package/dist/components/banner.js.map +1 -0
- package/dist/components/callout.d.ts +43 -0
- package/dist/components/callout.d.ts.map +1 -0
- package/dist/components/callout.js +63 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.d.ts +21 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +41 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/codeblock.d.ts +68 -0
- package/dist/components/codeblock.d.ts.map +1 -0
- package/dist/components/codeblock.js +126 -0
- package/dist/components/codeblock.js.map +1 -0
- package/dist/components/dialog/search-algolia.d.ts +39 -0
- package/dist/components/dialog/search-algolia.d.ts.map +1 -0
- package/dist/components/dialog/search-algolia.js +68 -0
- package/dist/components/dialog/search-algolia.js.map +1 -0
- package/dist/components/dialog/search-default.d.ts +44 -0
- package/dist/components/dialog/search-default.d.ts.map +1 -0
- package/dist/components/dialog/search-default.js +66 -0
- package/dist/components/dialog/search-default.js.map +1 -0
- package/dist/components/dialog/search-orama.d.ts +46 -0
- package/dist/components/dialog/search-orama.d.ts.map +1 -0
- package/dist/components/dialog/search-orama.js +73 -0
- package/dist/components/dialog/search-orama.js.map +1 -0
- package/dist/components/dialog/search.d.ts +117 -0
- package/dist/components/dialog/search.d.ts.map +1 -0
- package/dist/components/dialog/search.js +271 -0
- package/dist/components/dialog/search.js.map +1 -0
- package/dist/components/dynamic-codeblock.d.ts +32 -0
- package/dist/components/dynamic-codeblock.d.ts.map +1 -0
- package/dist/components/dynamic-codeblock.js +66 -0
- package/dist/components/dynamic-codeblock.js.map +1 -0
- package/dist/components/files.d.ts +35 -0
- package/dist/components/files.d.ts.map +1 -0
- package/dist/components/files.js +44 -0
- package/dist/components/files.js.map +1 -0
- package/dist/components/github-info.d.ts +19 -0
- package/dist/components/github-info.d.ts.map +1 -0
- package/dist/components/github-info.js +68 -0
- package/dist/components/github-info.js.map +1 -0
- package/dist/components/heading.d.ts +15 -0
- package/dist/components/heading.d.ts.map +1 -0
- package/dist/components/heading.js +29 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/image-zoom-CtfZieBH.css +80 -0
- package/dist/components/image-zoom-CtfZieBH.css.map +1 -0
- package/dist/components/image-zoom.css +77 -0
- package/dist/components/image-zoom.d.ts +25 -0
- package/dist/components/image-zoom.d.ts.map +1 -0
- package/dist/components/image-zoom.js +36 -0
- package/dist/components/image-zoom.js.map +1 -0
- package/dist/components/image-zoom2.js +1 -0
- package/dist/components/inline-toc.d.ts +17 -0
- package/dist/components/inline-toc.d.ts.map +1 -0
- package/dist/components/inline-toc.js +30 -0
- package/dist/components/inline-toc.js.map +1 -0
- package/dist/components/sidebar/base.d.ts +112 -0
- package/dist/components/sidebar/base.d.ts.map +1 -0
- package/dist/components/sidebar/base.js +284 -0
- package/dist/components/sidebar/base.js.map +1 -0
- package/dist/components/sidebar/link-item.d.ts +24 -0
- package/dist/components/sidebar/link-item.d.ts.map +1 -0
- package/dist/components/sidebar/link-item.js +33 -0
- package/dist/components/sidebar/link-item.js.map +1 -0
- package/dist/components/sidebar/page-tree.d.ts +30 -0
- package/dist/components/sidebar/page-tree.d.ts.map +1 -0
- package/dist/components/sidebar/page-tree.js +58 -0
- package/dist/components/sidebar/page-tree.js.map +1 -0
- package/dist/components/sidebar/tabs/dropdown.d.ts +20 -0
- package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -0
- package/dist/components/sidebar/tabs/dropdown.js +78 -0
- package/dist/components/sidebar/tabs/dropdown.js.map +1 -0
- package/dist/components/sidebar/tabs/index.d.ts +27 -0
- package/dist/components/sidebar/tabs/index.d.ts.map +1 -0
- package/dist/components/sidebar/tabs/index.js +49 -0
- package/dist/components/sidebar/tabs/index.js.map +1 -0
- package/dist/components/steps.d.ts +17 -0
- package/dist/components/steps.d.ts.map +1 -0
- package/dist/components/steps.js +19 -0
- package/dist/components/steps.js.map +1 -0
- package/dist/components/tabs.d.ts +52 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +101 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/toc/clerk.d.ts +1 -0
- package/dist/components/toc/clerk.js +12 -0
- package/dist/components/toc/clerk.js.map +1 -0
- package/dist/components/toc/default.d.ts +1 -0
- package/dist/components/toc/default.js +12 -0
- package/dist/components/toc/default.js.map +1 -0
- package/dist/components/toc/index.d.ts +1 -0
- package/dist/components/toc/index.js +12 -0
- package/dist/components/toc/index.js.map +1 -0
- package/dist/components/type-table.d.ts +39 -0
- package/dist/components/type-table.d.ts.map +1 -0
- package/dist/components/type-table.js +109 -0
- package/dist/components/type-table.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +31 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +45 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/button.d.ts +13 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +23 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +20 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +20 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +16 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.js +34 -0
- package/dist/components/ui/navigation-menu.js.map +1 -0
- package/dist/components/ui/popover.d.ts +12 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +27 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +12 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +36 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +41 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +81 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/contexts/i18n.d.ts +1 -0
- package/dist/contexts/i18n.js +12 -0
- package/dist/contexts/i18n.js.map +1 -0
- package/dist/contexts/search.d.ts +8 -0
- package/dist/contexts/search.d.ts.map +1 -0
- package/dist/contexts/search.js +12 -0
- package/dist/contexts/search.js.map +1 -0
- package/dist/contexts/tree.d.ts +1 -0
- package/dist/contexts/tree.js +12 -0
- package/dist/contexts/tree.js.map +1 -0
- package/dist/i18n.d.ts +1 -0
- package/dist/i18n.js +3 -0
- package/dist/layouts/docs/client.d.ts +32 -0
- package/dist/layouts/docs/client.d.ts.map +1 -0
- package/dist/layouts/docs/client.js +68 -0
- package/dist/layouts/docs/client.js.map +1 -0
- package/dist/layouts/docs/index.d.ts +59 -0
- package/dist/layouts/docs/index.d.ts.map +1 -0
- package/dist/layouts/docs/index.js +178 -0
- package/dist/layouts/docs/index.js.map +1 -0
- package/dist/layouts/docs/page/client.d.ts +46 -0
- package/dist/layouts/docs/page/client.d.ts.map +1 -0
- package/dist/layouts/docs/page/client.js +227 -0
- package/dist/layouts/docs/page/client.js.map +1 -0
- package/dist/layouts/docs/page/index.d.ts +94 -0
- package/dist/layouts/docs/page/index.d.ts.map +1 -0
- package/dist/layouts/docs/page/index.js +104 -0
- package/dist/layouts/docs/page/index.js.map +1 -0
- package/dist/layouts/docs/sidebar.d.ts +63 -0
- package/dist/layouts/docs/sidebar.d.ts.map +1 -0
- package/dist/layouts/docs/sidebar.js +162 -0
- package/dist/layouts/docs/sidebar.js.map +1 -0
- package/dist/layouts/home/client.d.ts +19 -0
- package/dist/layouts/home/client.d.ts.map +1 -0
- package/dist/layouts/home/client.js +285 -0
- package/dist/layouts/home/client.js.map +1 -0
- package/dist/layouts/home/index.d.ts +12 -0
- package/dist/layouts/home/index.d.ts.map +1 -0
- package/dist/layouts/home/index.js +25 -0
- package/dist/layouts/home/index.js.map +1 -0
- package/dist/layouts/home/navbar.d.ts +20 -0
- package/dist/layouts/home/navbar.d.ts.map +1 -0
- package/dist/layouts/home/navbar.js +35 -0
- package/dist/layouts/home/navbar.js.map +1 -0
- package/dist/layouts/notebook/client.d.ts +47 -0
- package/dist/layouts/notebook/client.d.ts.map +1 -0
- package/dist/layouts/notebook/client.js +159 -0
- package/dist/layouts/notebook/client.js.map +1 -0
- package/dist/layouts/notebook/index.d.ts +38 -0
- package/dist/layouts/notebook/index.d.ts.map +1 -0
- package/dist/layouts/notebook/index.js +219 -0
- package/dist/layouts/notebook/index.js.map +1 -0
- package/dist/layouts/notebook/page/client.d.ts +46 -0
- package/dist/layouts/notebook/page/client.d.ts.map +1 -0
- package/dist/layouts/notebook/page/client.js +227 -0
- package/dist/layouts/notebook/page/client.js.map +1 -0
- package/dist/layouts/notebook/page/index.d.ts +94 -0
- package/dist/layouts/notebook/page/index.d.ts.map +1 -0
- package/dist/layouts/notebook/page/index.js +104 -0
- package/dist/layouts/notebook/page/index.js.map +1 -0
- package/dist/layouts/notebook/sidebar.d.ts +59 -0
- package/dist/layouts/notebook/sidebar.d.ts.map +1 -0
- package/dist/layouts/notebook/sidebar.js +133 -0
- package/dist/layouts/notebook/sidebar.js.map +1 -0
- package/dist/layouts/shared/index.d.ts +69 -0
- package/dist/layouts/shared/index.d.ts.map +1 -0
- package/dist/layouts/shared/index.js +39 -0
- package/dist/layouts/shared/index.js.map +1 -0
- package/dist/layouts/shared/language-toggle.d.ts +10 -0
- package/dist/layouts/shared/language-toggle.d.ts.map +1 -0
- package/dist/layouts/shared/language-toggle.js +47 -0
- package/dist/layouts/shared/language-toggle.js.map +1 -0
- package/dist/layouts/shared/search-toggle.d.ts +23 -0
- package/dist/layouts/shared/search-toggle.d.ts.map +1 -0
- package/dist/layouts/shared/search-toggle.js +56 -0
- package/dist/layouts/shared/search-toggle.js.map +1 -0
- package/dist/layouts/shared/theme-toggle.d.ts +14 -0
- package/dist/layouts/shared/theme-toggle.d.ts.map +1 -0
- package/dist/layouts/shared/theme-toggle.js +62 -0
- package/dist/layouts/shared/theme-toggle.js.map +1 -0
- package/dist/mdx.d.ts +38 -0
- package/dist/mdx.d.ts.map +1 -0
- package/dist/mdx.js +74 -0
- package/dist/mdx.js.map +1 -0
- package/dist/mdx.server.d.ts +17 -0
- package/dist/mdx.server.d.ts.map +1 -0
- package/dist/mdx.server.js +23 -0
- package/dist/mdx.server.js.map +1 -0
- package/dist/og.d.ts +1 -0
- package/dist/og.js +3 -0
- package/dist/page.d.ts +37 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +38 -0
- package/dist/page.js.map +1 -0
- package/dist/provider/base.d.ts +50 -0
- package/dist/provider/base.d.ts.map +1 -0
- package/dist/provider/base.js +39 -0
- package/dist/provider/base.js.map +1 -0
- package/dist/provider/next.d.ts +22 -0
- package/dist/provider/next.d.ts.map +1 -0
- package/dist/provider/next.js +21 -0
- package/dist/provider/next.js.map +1 -0
- package/dist/provider/react-router.d.ts +22 -0
- package/dist/provider/react-router.d.ts.map +1 -0
- package/dist/provider/react-router.js +21 -0
- package/dist/provider/react-router.js.map +1 -0
- package/dist/provider/tanstack.d.ts +22 -0
- package/dist/provider/tanstack.d.ts.map +1 -0
- package/dist/provider/tanstack.js +21 -0
- package/dist/provider/tanstack.js.map +1 -0
- package/dist/provider/waku.d.ts +22 -0
- package/dist/provider/waku.d.ts.map +1 -0
- package/dist/provider/waku.js +21 -0
- package/dist/provider/waku.js.map +1 -0
- package/dist/style.css +3180 -0
- package/dist/utils/use-copy-button.d.ts +1 -0
- package/dist/utils/use-copy-button.js +3 -0
- package/dist/utils/use-footer-items.d.ts +1 -0
- package/dist/utils/use-footer-items.js +3 -0
- package/dist/utils/use-is-scroll-top.d.ts +1 -0
- package/dist/utils/use-is-scroll-top.js +3 -0
- package/package.json +132 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { SidebarContent as SidebarContent$1, SidebarDrawerContent, SidebarDrawerOverlay, SidebarFolderContent as SidebarFolderContent$1, SidebarFolderLink as SidebarFolderLink$1, SidebarFolderTrigger as SidebarFolderTrigger$1, SidebarItem as SidebarItem$1, SidebarSeparator as SidebarSeparator$1, base_exports, useFolder, useFolderDepth } from "../../components/sidebar/base.js";
|
|
4
|
+
import { LayoutContext } from "./client.js";
|
|
5
|
+
import { createLinkItemRenderer } from "../../components/sidebar/link-item.js";
|
|
6
|
+
import { createPageTreeRenderer } from "../../components/sidebar/page-tree.js";
|
|
7
|
+
import { cn } from "@hanzo/docs-ui/cn";
|
|
8
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { use, useRef } from "react";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
|
+
import { mergeRefs } from "@hanzo/docs-ui/merge-refs";
|
|
12
|
+
|
|
13
|
+
//#region src/layouts/notebook/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
|
+
const { SidebarProvider: Sidebar, SidebarFolder, SidebarCollapseTrigger, SidebarViewport, SidebarTrigger } = base_exports;
|
|
25
|
+
function SidebarContent({ ref: refProp, className, children, ...props }) {
|
|
26
|
+
const { navMode } = use(LayoutContext);
|
|
27
|
+
const ref = useRef(null);
|
|
28
|
+
return /* @__PURE__ */ jsx(SidebarContent$1, { children: ({ collapsed, hovered, ref: asideRef, ...rest }) => /* @__PURE__ */ jsxs("div", {
|
|
29
|
+
"data-sidebar-placeholder": "",
|
|
30
|
+
className: cn("sticky z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto md:layout:[--fd-sidebar-width:268px] max-md:hidden", navMode === "auto" ? "top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))]" : "top-(--fd-docs-row-2) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))]"),
|
|
31
|
+
children: [collapsed && /* @__PURE__ */ jsx("div", {
|
|
32
|
+
className: "absolute start-0 inset-y-0 w-4",
|
|
33
|
+
...rest
|
|
34
|
+
}), /* @__PURE__ */ jsx("aside", {
|
|
35
|
+
id: "nd-sidebar",
|
|
36
|
+
ref: mergeRefs(ref, refProp, asideRef),
|
|
37
|
+
"data-collapsed": collapsed,
|
|
38
|
+
"data-hovered": collapsed && hovered,
|
|
39
|
+
className: cn("absolute flex flex-col w-full start-0 inset-y-0 items-end text-sm duration-250 *:w-(--fd-sidebar-width)", navMode === "auto" && "bg-fd-card border-e", collapsed && ["inset-y-2 rounded-xl bg-fd-card 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),
|
|
40
|
+
...props,
|
|
41
|
+
...rest,
|
|
42
|
+
children
|
|
43
|
+
})]
|
|
44
|
+
}) });
|
|
45
|
+
}
|
|
46
|
+
function SidebarDrawer({ children, className, ...props }) {
|
|
47
|
+
return /* @__PURE__ */ jsxs(Fragment, { 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, {
|
|
48
|
+
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),
|
|
49
|
+
...props,
|
|
50
|
+
children
|
|
51
|
+
})] });
|
|
52
|
+
}
|
|
53
|
+
function SidebarSeparator({ className, style, children, ...props }) {
|
|
54
|
+
const depth = useFolderDepth();
|
|
55
|
+
return /* @__PURE__ */ jsx(SidebarSeparator$1, {
|
|
56
|
+
className: cn("[&_svg]:size-4 [&_svg]:shrink-0", className),
|
|
57
|
+
style: {
|
|
58
|
+
paddingInlineStart: getItemOffset(depth),
|
|
59
|
+
...style
|
|
60
|
+
},
|
|
61
|
+
...props,
|
|
62
|
+
children
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function SidebarItem({ className, style, children, ...props }) {
|
|
66
|
+
const depth = useFolderDepth();
|
|
67
|
+
return /* @__PURE__ */ jsx(SidebarItem$1, {
|
|
68
|
+
className: cn(itemVariants({
|
|
69
|
+
variant: "link",
|
|
70
|
+
highlight: depth >= 1
|
|
71
|
+
}), className),
|
|
72
|
+
style: {
|
|
73
|
+
paddingInlineStart: getItemOffset(depth),
|
|
74
|
+
...style
|
|
75
|
+
},
|
|
76
|
+
...props,
|
|
77
|
+
children
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function SidebarFolderTrigger({ className, style, ...props }) {
|
|
81
|
+
const { depth, collapsible } = useFolder();
|
|
82
|
+
return /* @__PURE__ */ jsx(SidebarFolderTrigger$1, {
|
|
83
|
+
className: (s) => cn(itemVariants({ variant: collapsible ? "button" : null }), "w-full", typeof className === "function" ? className(s) : className),
|
|
84
|
+
style: {
|
|
85
|
+
paddingInlineStart: getItemOffset(depth - 1),
|
|
86
|
+
...style
|
|
87
|
+
},
|
|
88
|
+
...props,
|
|
89
|
+
children: props.children
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function SidebarFolderLink({ className, style, ...props }) {
|
|
93
|
+
const depth = useFolderDepth();
|
|
94
|
+
return /* @__PURE__ */ jsx(SidebarFolderLink$1, {
|
|
95
|
+
className: cn(itemVariants({
|
|
96
|
+
variant: "link",
|
|
97
|
+
highlight: depth > 1
|
|
98
|
+
}), "w-full", className),
|
|
99
|
+
style: {
|
|
100
|
+
paddingInlineStart: getItemOffset(depth - 1),
|
|
101
|
+
...style
|
|
102
|
+
},
|
|
103
|
+
...props,
|
|
104
|
+
children: props.children
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function SidebarFolderContent({ className, children, ...props }) {
|
|
108
|
+
const depth = useFolderDepth();
|
|
109
|
+
return /* @__PURE__ */ jsx(SidebarFolderContent$1, {
|
|
110
|
+
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),
|
|
111
|
+
...props,
|
|
112
|
+
children
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const SidebarPageTree = createPageTreeRenderer({
|
|
116
|
+
SidebarFolder,
|
|
117
|
+
SidebarFolderContent,
|
|
118
|
+
SidebarFolderLink,
|
|
119
|
+
SidebarFolderTrigger,
|
|
120
|
+
SidebarItem,
|
|
121
|
+
SidebarSeparator
|
|
122
|
+
});
|
|
123
|
+
const SidebarLinkItem = createLinkItemRenderer({
|
|
124
|
+
SidebarFolder,
|
|
125
|
+
SidebarFolderContent,
|
|
126
|
+
SidebarFolderLink,
|
|
127
|
+
SidebarFolderTrigger,
|
|
128
|
+
SidebarItem
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
//#endregion
|
|
132
|
+
export { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, SidebarLinkItem, SidebarPageTree, SidebarSeparator, SidebarTrigger, SidebarViewport };
|
|
133
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","names":["Base","Base.SidebarContent","Base.SidebarDrawerOverlay","Base.SidebarDrawerContent","Base.useFolderDepth","Base.SidebarSeparator","Base.SidebarItem","Base.useFolder","Base.SidebarFolderTrigger","Base.SidebarFolderLink","Base.SidebarFolderContent"],"sources":["../../../src/layouts/notebook/sidebar.tsx"],"sourcesContent":["'use client';\nimport * as Base from '@/components/sidebar/base';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { type ComponentProps, use, useRef } from 'react';\nimport { cva } from 'class-variance-authority';\nimport { LayoutContext } from './client';\nimport { createPageTreeRenderer } from '@/components/sidebar/page-tree';\nimport { createLinkItemRenderer } from '@/components/sidebar/link-item';\nimport { mergeRefs } from '@hanzo/docs-ui/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 const {\n SidebarProvider: Sidebar,\n SidebarFolder,\n SidebarCollapseTrigger,\n SidebarViewport,\n SidebarTrigger,\n} = Base;\n\nexport function SidebarContent({\n ref: refProp,\n className,\n children,\n ...props\n}: ComponentProps<'aside'>) {\n const { navMode } = use(LayoutContext)!;\n const ref = useRef<HTMLElement>(null);\n\n return (\n <Base.SidebarContent>\n {({ collapsed, hovered, ref: asideRef, ...rest }) => (\n <div\n data-sidebar-placeholder=\"\"\n className={cn(\n 'sticky z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto md:layout:[--fd-sidebar-width:268px] max-md:hidden',\n navMode === 'auto'\n ? 'top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))]'\n : 'top-(--fd-docs-row-2) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-2))]',\n )}\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 text-sm duration-250 *:w-(--fd-sidebar-width)',\n navMode === 'auto' && 'bg-fd-card border-e',\n collapsed && [\n 'inset-y-2 rounded-xl bg-fd-card 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 )}\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}\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":";;;;;;;;;;;;;AAUA,MAAM,eAAe,IACnB,8IACA,EACE,UAAU;CACR,SAAS;EACP,MAAM;EACN,QACE;EACH;CACD,WAAW,EACT,MAAM,8NACP;CACF,EACF,CACF;AAED,SAAS,cAAc,OAAe;AACpC,QAAO,QAAQ,IAAI,IAAI,MAAM;;AAG/B,MAAa,EACX,iBAAiB,SACjB,eACA,wBACA,iBACA,mBACEA;AAEJ,SAAgB,eAAe,EAC7B,KAAK,SACL,WACA,UACA,GAAG,SACuB;CAC1B,MAAM,EAAE,YAAY,IAAI,cAAc;CACtC,MAAM,MAAM,OAAoB,KAAK;AAErC,QACE,oBAACC,+BACG,EAAE,WAAW,SAAS,KAAK,UAAU,GAAG,WACxC,qBAAC;EACC,4BAAyB;EACzB,WAAW,GACT,gIACA,YAAY,SACR,+EACA,6EACL;aAEA,aAAa,oBAAC;GAAI,WAAU;GAAiC,GAAI;IAAQ,EAC1E,oBAAC;GACC,IAAG;GACH,KAAK,UAAU,KAAK,SAAS,SAAS;GACtC,kBAAgB;GAChB,gBAAc,aAAa;GAC3B,WAAW,GACT,2GACA,YAAY,UAAU,uBACtB,aAAa,CACX,sFACA,UACI,+CACA,yDACL,EACD,IAAI,WACD,IAAI,QAAQ,aAAa,iBAAiB,KAAK,WAAY,aAC5D,6DACF,UACD;GACD,GAAI;GACJ,GAAI;GAEH;IACK;GACJ,GAEY;;AAI1B,SAAgB,cAAc,EAC5B,UACA,WACA,GAAG,SACgD;AACnD,QACE,4CACE,oBAACC,wBAA0B,WAAU,qHAAqH,EAC1J,oBAACC;EACC,WAAW,GACT,0MACA,UACD;EACD,GAAI;EAEH;GACyB,IAC3B;;AAIP,SAAgB,iBAAiB,EAAE,WAAW,OAAO,UAAU,GAAG,SAA8B;CAC9F,MAAM,QAAQC,gBAAqB;AAEnC,QACE,oBAACC;EACC,WAAW,GAAG,mCAAmC,UAAU;EAC3D,OAAO;GACL,oBAAoB,cAAc,MAAM;GACxC,GAAG;GACJ;EACD,GAAI;EAEH;GACqB;;AAI5B,SAAgB,YAAY,EAC1B,WACA,OACA,UACA,GAAG,SACuC;CAC1C,MAAM,QAAQD,gBAAqB;AAEnC,QACE,oBAACE;EACC,WAAW,GAAG,aAAa;GAAE,SAAS;GAAQ,WAAW,SAAS;GAAG,CAAC,EAAE,UAAU;EAClF,OAAO;GACL,oBAAoB,cAAc,MAAM;GACxC,GAAG;GACJ;EACD,GAAI;EAEH;GACgB;;AAIvB,SAAgB,qBAAqB,EACnC,WACA,OACA,GAAG,SACgD;CACnD,MAAM,EAAE,OAAO,gBAAgBC,WAAgB;AAE/C,QACE,oBAACC;EACC,YAAY,MACV,GACE,aAAa,EAAE,SAAS,cAAc,WAAW,MAAM,CAAC,EACxD,UACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,OAAO;GACL,oBAAoB,cAAc,QAAQ,EAAE;GAC5C,GAAG;GACJ;EACD,GAAI;YAEH,MAAM;GACmB;;AAIhC,SAAgB,kBAAkB,EAChC,WACA,OACA,GAAG,SAC6C;CAChD,MAAM,QAAQJ,gBAAqB;AAEnC,QACE,oBAACK;EACC,WAAW,GAAG,aAAa;GAAE,SAAS;GAAQ,WAAW,QAAQ;GAAG,CAAC,EAAE,UAAU,UAAU;EAC3F,OAAO;GACL,oBAAoB,cAAc,QAAQ,EAAE;GAC5C,GAAG;GACJ;EACD,GAAI;YAEH,MAAM;GACgB;;AAI7B,SAAgB,qBAAqB,EACnC,WACA,UACA,GAAG,SACgD;CACnD,MAAM,QAAQL,gBAAqB;AAEnC,QACE,oBAACM;EACC,YAAY,MACV,GACE,YACA,UAAU,KACR,yGACF,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;EAEH;GACyB;;AAGhC,MAAa,kBAAkB,uBAAuB;CACpD;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,MAAa,kBAAkB,uBAAuB;CACpD;CACA;CACA;CACA;CACA;CACD,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as react_jsx_runtime97 from "react/jsx-runtime";
|
|
2
|
+
import * as react13 from "react";
|
|
3
|
+
import { ComponentProps, ReactNode } from "react";
|
|
4
|
+
import { LinkItemType } from "@hanzo/docs-ui/link-item";
|
|
5
|
+
import { I18nConfig } from "@hanzo/docs-core/i18n";
|
|
6
|
+
export * from "@hanzo/docs-ui/link-item";
|
|
7
|
+
|
|
8
|
+
//#region src/layouts/shared/index.d.ts
|
|
9
|
+
interface NavOptions {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
component: ReactNode;
|
|
12
|
+
title?: ReactNode | ((props: ComponentProps<'a'>) => ReactNode);
|
|
13
|
+
/**
|
|
14
|
+
* Redirect url of title
|
|
15
|
+
* @defaultValue '/'
|
|
16
|
+
*/
|
|
17
|
+
url?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Use transparent background
|
|
20
|
+
*
|
|
21
|
+
* @defaultValue none
|
|
22
|
+
*/
|
|
23
|
+
transparentMode?: 'always' | 'top' | 'none';
|
|
24
|
+
children?: ReactNode;
|
|
25
|
+
}
|
|
26
|
+
interface BaseLayoutProps {
|
|
27
|
+
themeSwitch?: {
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
component?: ReactNode;
|
|
30
|
+
mode?: 'light-dark' | 'light-dark-system';
|
|
31
|
+
};
|
|
32
|
+
searchToggle?: Partial<{
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
components: Partial<{
|
|
35
|
+
sm: ReactNode;
|
|
36
|
+
lg: ReactNode;
|
|
37
|
+
}>;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* I18n options
|
|
41
|
+
*
|
|
42
|
+
* @defaultValue false
|
|
43
|
+
*/
|
|
44
|
+
i18n?: boolean | I18nConfig;
|
|
45
|
+
/**
|
|
46
|
+
* GitHub url
|
|
47
|
+
*/
|
|
48
|
+
githubUrl?: string;
|
|
49
|
+
links?: LinkItemType[];
|
|
50
|
+
/**
|
|
51
|
+
* Replace or disable navbar
|
|
52
|
+
*/
|
|
53
|
+
nav?: Partial<NavOptions>;
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get link items with shortcuts
|
|
58
|
+
*/
|
|
59
|
+
declare function resolveLinkItems({
|
|
60
|
+
links,
|
|
61
|
+
githubUrl
|
|
62
|
+
}: Pick<BaseLayoutProps, 'links' | 'githubUrl'>): LinkItemType[];
|
|
63
|
+
declare function renderTitleNav({
|
|
64
|
+
title,
|
|
65
|
+
url
|
|
66
|
+
}: Partial<NavOptions>, props: ComponentProps<'a'>): string | number | bigint | boolean | react_jsx_runtime97.JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react13.ReactPortal | react13.ReactElement<unknown, string | react13.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
|
|
67
|
+
//#endregion
|
|
68
|
+
export { BaseLayoutProps, NavOptions, renderTitleNav, resolveLinkItems };
|
|
69
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/shared/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;UAKiB,UAAA;;aAEJ;UAEH,qBAAqB,wBAAwB;;;AAJvD;;EAIU,GAAA,CAAA,EAAA,MAAA;EAAqB;;;;AAkB/B;EAGgB,eAAA,CAAA,EAAA,QAAA,GAAA,KAAA,GAAA,MAAA;EAON,QAAA,CAAA,EAbG,SAaH;;AADM,UATC,eAAA,CASD;EAFC,WAAA,CAAA,EAAA;IAaE,OAAA,CAAA,EAAA,OAAA;IAOT,SAAA,CAAA,EAxBM,SAwBN;IAIM,IAAA,CAAA,EAAA,YAAA,GAAA,mBAAA;EAAR,CAAA;EAEK,YAAA,CAAA,EA1BI,OA0BJ,CAAA;IAAS,OAAA,EAAA,OAAA;IAMN,UAAA,EA9BA,OA8BgB,CAAA;MAC9B,EAAA,EA9BQ,SA8BR;MACA,EAAA,EA9BQ,SA8BR;IACM,CAAA,CAAA;EAAL,CAAA,CAAA;EAA+C;;AAoBlD;;;EACgC,IAAA,CAAA,EAAA,OAAA,GA3Cb,UA2Ca;EAAR;;;EACI,SAAA,CAAA,EAAA,MAAA;EAAA,KAAA,CAAA,EArClB,YAqCkB,EAAA;EAAA;;;EAAA,GAAA,CAAA,EAjCpB,OAiCoB,CAjCZ,UAiCY,CAAA;EAAA,QAAA,CAAA,EA/Bf,SA+Be;;;;;iBAzBZ,gBAAA;;;GAGb,KAAK,0CAA0C;iBAoBlC,cAAA;;;GACQ,QAAQ,oBACvB,2DAAmB,mBAAA,CAAA,GAAA,CAAA,OAAA,GAAA,SAAA,aAAA,6CAAA,OAAA,CAAA,WAAA,GAAA,OAAA,CAAA,+BAAA,OAAA,CAAA,8BAAA,SAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Link from "@hanzo/docs-core/link";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/layouts/shared/index.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Get link items with shortcuts
|
|
7
|
+
*/
|
|
8
|
+
function resolveLinkItems({ links = [], githubUrl }) {
|
|
9
|
+
const result = [...links];
|
|
10
|
+
if (githubUrl) result.push({
|
|
11
|
+
type: "icon",
|
|
12
|
+
url: githubUrl,
|
|
13
|
+
text: "Github",
|
|
14
|
+
label: "GitHub",
|
|
15
|
+
icon: /* @__PURE__ */ jsx("svg", {
|
|
16
|
+
role: "img",
|
|
17
|
+
viewBox: "0 0 24 24",
|
|
18
|
+
fill: "currentColor",
|
|
19
|
+
children: /* @__PURE__ */ jsx("path", { d: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" })
|
|
20
|
+
}),
|
|
21
|
+
external: true
|
|
22
|
+
});
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function renderTitleNav({ title, url = "/" }, props) {
|
|
26
|
+
if (typeof title === "function") return title({
|
|
27
|
+
href: url,
|
|
28
|
+
...props
|
|
29
|
+
});
|
|
30
|
+
return /* @__PURE__ */ jsx(Link, {
|
|
31
|
+
href: url,
|
|
32
|
+
...props,
|
|
33
|
+
children: title
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
export { renderTitleNav, resolveLinkItems };
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/layouts/shared/index.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\nimport type { I18nConfig } from '@hanzo/docs-core/i18n';\nimport type { LinkItemType } from '@hanzo/docs-ui/link-item';\nimport Link from '@hanzo/docs-core/link';\n\nexport interface NavOptions {\n enabled: boolean;\n component: ReactNode;\n\n title?: ReactNode | ((props: ComponentProps<'a'>) => ReactNode);\n\n /**\n * Redirect url of title\n * @defaultValue '/'\n */\n url?: string;\n\n /**\n * Use transparent background\n *\n * @defaultValue none\n */\n transparentMode?: 'always' | 'top' | 'none';\n\n children?: ReactNode;\n}\n\nexport interface BaseLayoutProps {\n themeSwitch?: {\n enabled?: boolean;\n component?: ReactNode;\n mode?: 'light-dark' | 'light-dark-system';\n };\n\n searchToggle?: Partial<{\n enabled: boolean;\n components: Partial<{\n sm: ReactNode;\n lg: ReactNode;\n }>;\n }>;\n\n /**\n * I18n options\n *\n * @defaultValue false\n */\n i18n?: boolean | I18nConfig;\n\n /**\n * GitHub url\n */\n githubUrl?: string;\n\n links?: LinkItemType[];\n /**\n * Replace or disable navbar\n */\n nav?: Partial<NavOptions>;\n\n children?: ReactNode;\n}\n\n/**\n * Get link items with shortcuts\n */\nexport function resolveLinkItems({\n links = [],\n githubUrl,\n}: Pick<BaseLayoutProps, 'links' | 'githubUrl'>): LinkItemType[] {\n const result = [...links];\n\n if (githubUrl)\n result.push({\n type: 'icon',\n url: githubUrl,\n text: 'Github',\n label: 'GitHub',\n icon: (\n <svg role=\"img\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" />\n </svg>\n ),\n external: true,\n });\n\n return result;\n}\n\nexport function renderTitleNav(\n { title, url = '/' }: Partial<NavOptions>,\n props: ComponentProps<'a'>,\n) {\n if (typeof title === 'function') return title({ href: url, ...props });\n return (\n <Link href={url} {...props}>\n {title}\n </Link>\n );\n}\n\nexport type * from '@hanzo/docs-ui/link-item';\n"],"mappings":";;;;;;;AAkEA,SAAgB,iBAAiB,EAC/B,QAAQ,EAAE,EACV,aAC+D;CAC/D,MAAM,SAAS,CAAC,GAAG,MAAM;AAEzB,KAAI,UACF,QAAO,KAAK;EACV,MAAM;EACN,KAAK;EACL,MAAM;EACN,OAAO;EACP,MACE,oBAAC;GAAI,MAAK;GAAM,SAAQ;GAAY,MAAK;aACvC,oBAAC,UAAK,GAAE,6sBAA6sB;IACjtB;EAER,UAAU;EACX,CAAC;AAEJ,QAAO;;AAGT,SAAgB,eACd,EAAE,OAAO,MAAM,OACf,OACA;AACA,KAAI,OAAO,UAAU,WAAY,QAAO,MAAM;EAAE,MAAM;EAAK,GAAG;EAAO,CAAC;AACtE,QACE,oBAAC;EAAK,MAAM;EAAK,GAAI;YAClB;GACI"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime71 from "react/jsx-runtime";
|
|
2
|
+
import { ComponentProps } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/layouts/shared/language-toggle.d.ts
|
|
5
|
+
type LanguageSelectProps = ComponentProps<'button'>;
|
|
6
|
+
declare function LanguageToggle(props: LanguageSelectProps): React.ReactElement;
|
|
7
|
+
declare function LanguageToggleText(props: ComponentProps<'span'>): react_jsx_runtime71.JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { LanguageSelectProps, LanguageToggle, LanguageToggleText };
|
|
10
|
+
//# sourceMappingURL=language-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/language-toggle.tsx"],"sourcesContent":[],"mappings":";;;;KAOY,mBAAA,GAAsB;iBAElB,cAAA,QAAsB,sBAAsB,KAAA,CAAM;iBA6ClD,kBAAA,QAA0B,yBAAsB,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { buttonVariants } from "../../components/ui/button.js";
|
|
4
|
+
import { i18n_exports } from "../../contexts/i18n.js";
|
|
5
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../../components/ui/popover.js";
|
|
6
|
+
import { cn } from "@hanzo/docs-ui/cn";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
|
|
9
|
+
//#region src/layouts/shared/language-toggle.tsx
|
|
10
|
+
function LanguageToggle(props) {
|
|
11
|
+
const context = (0, i18n_exports.useI18n)();
|
|
12
|
+
if (!context.locales) throw new Error("Missing `<I18nProvider />`");
|
|
13
|
+
return /* @__PURE__ */ jsxs(Popover, { children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
14
|
+
"aria-label": context.text.chooseLanguage,
|
|
15
|
+
...props,
|
|
16
|
+
className: cn(buttonVariants({
|
|
17
|
+
color: "ghost",
|
|
18
|
+
className: "gap-1.5 p-1.5"
|
|
19
|
+
}), props.className),
|
|
20
|
+
children: props.children
|
|
21
|
+
}), /* @__PURE__ */ jsxs(PopoverContent, {
|
|
22
|
+
className: "flex flex-col overflow-x-hidden p-0",
|
|
23
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
24
|
+
className: "mb-1 p-2 text-xs font-medium text-fd-muted-foreground",
|
|
25
|
+
children: context.text.chooseLanguage
|
|
26
|
+
}), context.locales.map((item) => /* @__PURE__ */ jsx("button", {
|
|
27
|
+
type: "button",
|
|
28
|
+
className: cn("p-2 text-start text-sm", item.locale === context.locale ? "bg-fd-primary/10 font-medium text-fd-primary" : "hover:bg-fd-accent hover:text-fd-accent-foreground"),
|
|
29
|
+
onClick: () => {
|
|
30
|
+
context.onChange?.(item.locale);
|
|
31
|
+
},
|
|
32
|
+
children: item.name
|
|
33
|
+
}, item.locale))]
|
|
34
|
+
})] });
|
|
35
|
+
}
|
|
36
|
+
function LanguageToggleText(props) {
|
|
37
|
+
const context = (0, i18n_exports.useI18n)();
|
|
38
|
+
const text = context.locales?.find((item) => item.locale === context.locale)?.name;
|
|
39
|
+
return /* @__PURE__ */ jsx("span", {
|
|
40
|
+
...props,
|
|
41
|
+
children: text
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { LanguageToggle, LanguageToggleText };
|
|
47
|
+
//# sourceMappingURL=language-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-toggle.js","names":[],"sources":["../../../src/layouts/shared/language-toggle.tsx"],"sourcesContent":["'use client';\nimport type { ComponentProps } from 'react';\nimport { useI18n } from '@/contexts/i18n';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { buttonVariants } from '@/components/ui/button';\n\nexport type LanguageSelectProps = ComponentProps<'button'>;\n\nexport function LanguageToggle(props: LanguageSelectProps): React.ReactElement {\n const context = useI18n();\n if (!context.locales) throw new Error('Missing `<I18nProvider />`');\n\n return (\n <Popover>\n <PopoverTrigger\n aria-label={context.text.chooseLanguage}\n {...props}\n className={cn(\n buttonVariants({\n color: 'ghost',\n className: 'gap-1.5 p-1.5',\n }),\n props.className,\n )}\n >\n {props.children}\n </PopoverTrigger>\n <PopoverContent className=\"flex flex-col overflow-x-hidden p-0\">\n <p className=\"mb-1 p-2 text-xs font-medium text-fd-muted-foreground\">\n {context.text.chooseLanguage}\n </p>\n {context.locales.map((item) => (\n <button\n key={item.locale}\n type=\"button\"\n className={cn(\n 'p-2 text-start text-sm',\n item.locale === context.locale\n ? 'bg-fd-primary/10 font-medium text-fd-primary'\n : 'hover:bg-fd-accent hover:text-fd-accent-foreground',\n )}\n onClick={() => {\n context.onChange?.(item.locale);\n }}\n >\n {item.name}\n </button>\n ))}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function LanguageToggleText(props: ComponentProps<'span'>) {\n const context = useI18n();\n const text = context.locales?.find((item) => item.locale === context.locale)?.name;\n\n return <span {...props}>{text}</span>;\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,eAAe,OAAgD;CAC7E,MAAM,qCAAmB;AACzB,KAAI,CAAC,QAAQ,QAAS,OAAM,IAAI,MAAM,6BAA6B;AAEnE,QACE,qBAAC,sBACC,oBAAC;EACC,cAAY,QAAQ,KAAK;EACzB,GAAI;EACJ,WAAW,GACT,eAAe;GACb,OAAO;GACP,WAAW;GACZ,CAAC,EACF,MAAM,UACP;YAEA,MAAM;GACQ,EACjB,qBAAC;EAAe,WAAU;aACxB,oBAAC;GAAE,WAAU;aACV,QAAQ,KAAK;IACZ,EACH,QAAQ,QAAQ,KAAK,SACpB,oBAAC;GAEC,MAAK;GACL,WAAW,GACT,0BACA,KAAK,WAAW,QAAQ,SACpB,iDACA,qDACL;GACD,eAAe;AACb,YAAQ,WAAW,KAAK,OAAO;;aAGhC,KAAK;KAZD,KAAK,OAaH,CACT;GACa,IACT;;AAId,SAAgB,mBAAmB,OAA+B;CAChE,MAAM,qCAAmB;CACzB,MAAM,OAAO,QAAQ,SAAS,MAAM,SAAS,KAAK,WAAW,QAAQ,OAAO,EAAE;AAE9E,QAAO,oBAAC;EAAK,GAAI;YAAQ;GAAY"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ButtonProps } from "../../components/ui/button.js";
|
|
2
|
+
import * as react_jsx_runtime72 from "react/jsx-runtime";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/layouts/shared/search-toggle.d.ts
|
|
6
|
+
interface SearchToggleProps extends Omit<ComponentProps<'button'>, 'color'>, ButtonProps {
|
|
7
|
+
hideIfDisabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare function SearchToggle({
|
|
10
|
+
hideIfDisabled,
|
|
11
|
+
size,
|
|
12
|
+
color,
|
|
13
|
+
...props
|
|
14
|
+
}: SearchToggleProps): react_jsx_runtime72.JSX.Element | null;
|
|
15
|
+
declare function LargeSearchToggle({
|
|
16
|
+
hideIfDisabled,
|
|
17
|
+
...props
|
|
18
|
+
}: ComponentProps<'button'> & {
|
|
19
|
+
hideIfDisabled?: boolean;
|
|
20
|
+
}): react_jsx_runtime72.JSX.Element | null;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { LargeSearchToggle, SearchToggle };
|
|
23
|
+
//# sourceMappingURL=search-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/search-toggle.tsx"],"sourcesContent":[],"mappings":";;;;;UAQU,iBAAA,SAA0B,KAAK,oCAAoC;;;AAAnE,iBAIM,YAAA,CAJY;EAAA,cAAA;EAAA,IAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EASzB,iBATyB,CAAA,EASR,mBAAA,CAAA,GAAA,CAAA,OAAA,GATQ,IAAA;AAAa,iBAkCzB,iBAAA,CAlCyB;EAAA,cAAA;EAAA,GAAA;CAAA,EAqCtC,cArCsC,CAAA,QAAA,CAAA,GAAA;EAAL,cAAA,CAAA,EAAA,OAAA;CAAyC,CAAA,EAuC5E,mBAAA,CAAA,GAAA,CAAA,OAAA,GAvC4E,IAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { buttonVariants } from "../../components/ui/button.js";
|
|
4
|
+
import { i18n_exports } from "../../contexts/i18n.js";
|
|
5
|
+
import { search_exports } from "../../contexts/search.js";
|
|
6
|
+
import { cn } from "@hanzo/docs-ui/cn";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { Search } from "lucide-react";
|
|
9
|
+
|
|
10
|
+
//#region src/layouts/shared/search-toggle.tsx
|
|
11
|
+
function SearchToggle({ hideIfDisabled, size = "icon-sm", color = "ghost", ...props }) {
|
|
12
|
+
const { setOpenSearch, enabled } = (0, search_exports.useSearchContext)();
|
|
13
|
+
if (hideIfDisabled && !enabled) return null;
|
|
14
|
+
return /* @__PURE__ */ jsx("button", {
|
|
15
|
+
type: "button",
|
|
16
|
+
className: cn(buttonVariants({
|
|
17
|
+
size,
|
|
18
|
+
color
|
|
19
|
+
}), props.className),
|
|
20
|
+
"data-search": "",
|
|
21
|
+
"aria-label": "Open Search",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
setOpenSearch(true);
|
|
24
|
+
},
|
|
25
|
+
children: /* @__PURE__ */ jsx(Search, {})
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function LargeSearchToggle({ hideIfDisabled, ...props }) {
|
|
29
|
+
const { enabled, hotKey, setOpenSearch } = (0, search_exports.useSearchContext)();
|
|
30
|
+
const { text } = (0, i18n_exports.useI18n)();
|
|
31
|
+
if (hideIfDisabled && !enabled) return null;
|
|
32
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
33
|
+
type: "button",
|
|
34
|
+
"data-search-full": "",
|
|
35
|
+
...props,
|
|
36
|
+
className: cn("inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground", props.className),
|
|
37
|
+
onClick: () => {
|
|
38
|
+
setOpenSearch(true);
|
|
39
|
+
},
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ jsx(Search, { className: "size-4" }),
|
|
42
|
+
text.search,
|
|
43
|
+
/* @__PURE__ */ jsx("div", {
|
|
44
|
+
className: "ms-auto inline-flex gap-0.5",
|
|
45
|
+
children: hotKey.map((k, i) => /* @__PURE__ */ jsx("kbd", {
|
|
46
|
+
className: "rounded-md border bg-fd-background px-1.5",
|
|
47
|
+
children: k.display
|
|
48
|
+
}, i))
|
|
49
|
+
})
|
|
50
|
+
]
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { LargeSearchToggle, SearchToggle };
|
|
56
|
+
//# sourceMappingURL=search-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-toggle.js","names":[],"sources":["../../../src/layouts/shared/search-toggle.tsx"],"sourcesContent":["'use client';\nimport type { ComponentProps } from 'react';\nimport { Search } from 'lucide-react';\nimport { useSearchContext } from '@/contexts/search';\nimport { useI18n } from '@/contexts/i18n';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { type ButtonProps, buttonVariants } from '@/components/ui/button';\n\ninterface SearchToggleProps extends Omit<ComponentProps<'button'>, 'color'>, ButtonProps {\n hideIfDisabled?: boolean;\n}\n\nexport function SearchToggle({\n hideIfDisabled,\n size = 'icon-sm',\n color = 'ghost',\n ...props\n}: SearchToggleProps) {\n const { setOpenSearch, enabled } = useSearchContext();\n if (hideIfDisabled && !enabled) return null;\n\n return (\n <button\n type=\"button\"\n className={cn(\n buttonVariants({\n size,\n color,\n }),\n props.className,\n )}\n data-search=\"\"\n aria-label=\"Open Search\"\n onClick={() => {\n setOpenSearch(true);\n }}\n >\n <Search />\n </button>\n );\n}\n\nexport function LargeSearchToggle({\n hideIfDisabled,\n ...props\n}: ComponentProps<'button'> & {\n hideIfDisabled?: boolean;\n}) {\n const { enabled, hotKey, setOpenSearch } = useSearchContext();\n const { text } = useI18n();\n if (hideIfDisabled && !enabled) return null;\n\n return (\n <button\n type=\"button\"\n data-search-full=\"\"\n {...props}\n className={cn(\n 'inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground',\n props.className,\n )}\n onClick={() => {\n setOpenSearch(true);\n }}\n >\n <Search className=\"size-4\" />\n {text.search}\n <div className=\"ms-auto inline-flex gap-0.5\">\n {hotKey.map((k, i) => (\n <kbd key={i} className=\"rounded-md border bg-fd-background px-1.5\">\n {k.display}\n </kbd>\n ))}\n </div>\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;AAYA,SAAgB,aAAa,EAC3B,gBACA,OAAO,WACP,QAAQ,SACR,GAAG,SACiB;CACpB,MAAM,EAAE,eAAe,kDAA8B;AACrD,KAAI,kBAAkB,CAAC,QAAS,QAAO;AAEvC,QACE,oBAAC;EACC,MAAK;EACL,WAAW,GACT,eAAe;GACb;GACA;GACD,CAAC,EACF,MAAM,UACP;EACD,eAAY;EACZ,cAAW;EACX,eAAe;AACb,iBAAc,KAAK;;YAGrB,oBAAC,WAAS;GACH;;AAIb,SAAgB,kBAAkB,EAChC,gBACA,GAAG,SAGF;CACD,MAAM,EAAE,SAAS,QAAQ,wDAAoC;CAC7D,MAAM,EAAE,oCAAkB;AAC1B,KAAI,kBAAkB,CAAC,QAAS,QAAO;AAEvC,QACE,qBAAC;EACC,MAAK;EACL,oBAAiB;EACjB,GAAI;EACJ,WAAW,GACT,wLACA,MAAM,UACP;EACD,eAAe;AACb,iBAAc,KAAK;;;GAGrB,oBAAC,UAAO,WAAU,WAAW;GAC5B,KAAK;GACN,oBAAC;IAAI,WAAU;cACZ,OAAO,KAAK,GAAG,MACd,oBAAC;KAAY,WAAU;eACpB,EAAE;OADK,EAEJ,CACN;KACE;;GACC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime57 from "react/jsx-runtime";
|
|
2
|
+
import { ComponentProps } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/layouts/shared/theme-toggle.d.ts
|
|
5
|
+
declare function ThemeToggle({
|
|
6
|
+
className,
|
|
7
|
+
mode,
|
|
8
|
+
...props
|
|
9
|
+
}: ComponentProps<'div'> & {
|
|
10
|
+
mode?: 'light-dark' | 'light-dark-system';
|
|
11
|
+
}): react_jsx_runtime57.JSX.Element;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ThemeToggle };
|
|
14
|
+
//# sourceMappingURL=theme-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.d.ts","names":[],"sources":["../../../src/layouts/shared/theme-toggle.tsx"],"sourcesContent":[],"mappings":";;;;iBAkBgB,WAAA;;;;GAIb;;IAEF,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { cn } from "@hanzo/docs-ui/cn";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Airplay, Moon, Sun } from "lucide-react";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
import { cva } from "class-variance-authority";
|
|
8
|
+
import { useTheme } from "next-themes";
|
|
9
|
+
|
|
10
|
+
//#region src/layouts/shared/theme-toggle.tsx
|
|
11
|
+
const itemVariants = cva("size-6.5 rounded-full p-1.5 text-fd-muted-foreground", { variants: { active: {
|
|
12
|
+
true: "bg-fd-accent text-fd-accent-foreground",
|
|
13
|
+
false: "text-fd-muted-foreground"
|
|
14
|
+
} } });
|
|
15
|
+
const full = [
|
|
16
|
+
["light", Sun],
|
|
17
|
+
["dark", Moon],
|
|
18
|
+
["system", Airplay]
|
|
19
|
+
];
|
|
20
|
+
function ThemeToggle({ className, mode = "light-dark", ...props }) {
|
|
21
|
+
const { setTheme, theme, resolvedTheme } = useTheme();
|
|
22
|
+
const [mounted, setMounted] = useState(false);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
setMounted(true);
|
|
25
|
+
}, []);
|
|
26
|
+
const container = cn("inline-flex items-center rounded-full border p-1", className);
|
|
27
|
+
if (mode === "light-dark") {
|
|
28
|
+
const value$1 = mounted ? resolvedTheme : null;
|
|
29
|
+
return /* @__PURE__ */ jsx("button", {
|
|
30
|
+
className: container,
|
|
31
|
+
"aria-label": `Toggle Theme`,
|
|
32
|
+
onClick: () => setTheme(value$1 === "light" ? "dark" : "light"),
|
|
33
|
+
"data-theme-toggle": "",
|
|
34
|
+
children: full.map(([key, Icon]) => {
|
|
35
|
+
if (key === "system") return;
|
|
36
|
+
return /* @__PURE__ */ jsx(Icon, {
|
|
37
|
+
fill: "currentColor",
|
|
38
|
+
className: cn(itemVariants({ active: value$1 === key }))
|
|
39
|
+
}, key);
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const value = mounted ? theme : null;
|
|
44
|
+
return /* @__PURE__ */ jsx("div", {
|
|
45
|
+
className: container,
|
|
46
|
+
"data-theme-toggle": "",
|
|
47
|
+
...props,
|
|
48
|
+
children: full.map(([key, Icon]) => /* @__PURE__ */ jsx("button", {
|
|
49
|
+
"aria-label": key,
|
|
50
|
+
className: cn(itemVariants({ active: value === key })),
|
|
51
|
+
onClick: () => setTheme(key),
|
|
52
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
53
|
+
className: "size-full",
|
|
54
|
+
fill: "currentColor"
|
|
55
|
+
})
|
|
56
|
+
}, key))
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
export { ThemeToggle };
|
|
62
|
+
//# sourceMappingURL=theme-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.js","names":["value"],"sources":["../../../src/layouts/shared/theme-toggle.tsx"],"sourcesContent":["'use client';\nimport { cva } from 'class-variance-authority';\nimport { Airplay, Moon, Sun } from 'lucide-react';\nimport { useTheme } from 'next-themes';\nimport { ComponentProps, useEffect, useState } from 'react';\nimport { cn } from '@hanzo/docs-ui/cn';\n\nconst itemVariants = cva('size-6.5 rounded-full p-1.5 text-fd-muted-foreground', {\n variants: {\n active: {\n true: 'bg-fd-accent text-fd-accent-foreground',\n false: 'text-fd-muted-foreground',\n },\n },\n});\n\nconst full = [['light', Sun] as const, ['dark', Moon] as const, ['system', Airplay] as const];\n\nexport function ThemeToggle({\n className,\n mode = 'light-dark',\n ...props\n}: ComponentProps<'div'> & {\n mode?: 'light-dark' | 'light-dark-system';\n}) {\n const { setTheme, theme, resolvedTheme } = useTheme();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const container = cn('inline-flex items-center rounded-full border p-1', className);\n\n if (mode === 'light-dark') {\n const value = mounted ? resolvedTheme : null;\n\n return (\n <button\n className={container}\n aria-label={`Toggle Theme`}\n onClick={() => setTheme(value === 'light' ? 'dark' : 'light')}\n data-theme-toggle=\"\"\n >\n {full.map(([key, Icon]) => {\n if (key === 'system') return;\n\n return (\n <Icon\n key={key}\n fill=\"currentColor\"\n className={cn(itemVariants({ active: value === key }))}\n />\n );\n })}\n </button>\n );\n }\n\n const value = mounted ? theme : null;\n\n return (\n <div className={container} data-theme-toggle=\"\" {...props}>\n {full.map(([key, Icon]) => (\n <button\n key={key}\n aria-label={key}\n className={cn(itemVariants({ active: value === key }))}\n onClick={() => setTheme(key)}\n >\n <Icon className=\"size-full\" fill=\"currentColor\" />\n </button>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAOA,MAAM,eAAe,IAAI,wDAAwD,EAC/E,UAAU,EACR,QAAQ;CACN,MAAM;CACN,OAAO;CACR,EACF,EACF,CAAC;AAEF,MAAM,OAAO;CAAC,CAAC,SAAS,IAAI;CAAW,CAAC,QAAQ,KAAK;CAAW,CAAC,UAAU,QAAQ;CAAU;AAE7F,SAAgB,YAAY,EAC1B,WACA,OAAO,cACP,GAAG,SAGF;CACD,MAAM,EAAE,UAAU,OAAO,kBAAkB,UAAU;CACrD,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;AAE7C,iBAAgB;AACd,aAAW,KAAK;IACf,EAAE,CAAC;CAEN,MAAM,YAAY,GAAG,oDAAoD,UAAU;AAEnF,KAAI,SAAS,cAAc;EACzB,MAAMA,UAAQ,UAAU,gBAAgB;AAExC,SACE,oBAAC;GACC,WAAW;GACX,cAAY;GACZ,eAAe,SAASA,YAAU,UAAU,SAAS,QAAQ;GAC7D,qBAAkB;aAEjB,KAAK,KAAK,CAAC,KAAK,UAAU;AACzB,QAAI,QAAQ,SAAU;AAEtB,WACE,oBAAC;KAEC,MAAK;KACL,WAAW,GAAG,aAAa,EAAE,QAAQA,YAAU,KAAK,CAAC,CAAC;OAFjD,IAGL;KAEJ;IACK;;CAIb,MAAM,QAAQ,UAAU,QAAQ;AAEhC,QACE,oBAAC;EAAI,WAAW;EAAW,qBAAkB;EAAG,GAAI;YACjD,KAAK,KAAK,CAAC,KAAK,UACf,oBAAC;GAEC,cAAY;GACZ,WAAW,GAAG,aAAa,EAAE,QAAQ,UAAU,KAAK,CAAC,CAAC;GACtD,eAAe,SAAS,IAAI;aAE5B,oBAAC;IAAK,WAAU;IAAY,MAAK;KAAiB;KAL7C,IAME,CACT;GACE"}
|
package/dist/mdx.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Callout, CalloutContainer, CalloutDescription, CalloutTitle } from "./components/callout.js";
|
|
2
|
+
import { Card, Cards } from "./components/card.js";
|
|
3
|
+
import { CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger } from "./components/codeblock.js";
|
|
4
|
+
import { createRelativeLink as createRelativeLink$1 } from "./mdx.server.js";
|
|
5
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
6
|
+
import { AnchorHTMLAttributes, FC, HTMLAttributes, ImgHTMLAttributes, TableHTMLAttributes } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/mdx.d.ts
|
|
9
|
+
declare function Image(props: ImgHTMLAttributes<HTMLImageElement> & {
|
|
10
|
+
sizes?: string;
|
|
11
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
12
|
+
declare function Table(props: TableHTMLAttributes<HTMLTableElement>): react_jsx_runtime0.JSX.Element;
|
|
13
|
+
declare const defaultMdxComponents: {
|
|
14
|
+
CodeBlockTab: typeof CodeBlockTab;
|
|
15
|
+
CodeBlockTabs: typeof CodeBlockTabs;
|
|
16
|
+
CodeBlockTabsList: typeof CodeBlockTabsList;
|
|
17
|
+
CodeBlockTabsTrigger: typeof CodeBlockTabsTrigger;
|
|
18
|
+
pre: (props: HTMLAttributes<HTMLPreElement>) => react_jsx_runtime0.JSX.Element;
|
|
19
|
+
Card: typeof Card;
|
|
20
|
+
Cards: typeof Cards;
|
|
21
|
+
a: FC<AnchorHTMLAttributes<HTMLAnchorElement>>;
|
|
22
|
+
img: typeof Image;
|
|
23
|
+
h1: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
24
|
+
h2: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
25
|
+
h3: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
26
|
+
h4: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
27
|
+
h5: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
28
|
+
h6: (props: HTMLAttributes<HTMLHeadingElement>) => react_jsx_runtime0.JSX.Element;
|
|
29
|
+
table: typeof Table;
|
|
30
|
+
Callout: typeof Callout;
|
|
31
|
+
CalloutContainer: typeof CalloutContainer;
|
|
32
|
+
CalloutTitle: typeof CalloutTitle;
|
|
33
|
+
CalloutDescription: typeof CalloutDescription;
|
|
34
|
+
};
|
|
35
|
+
declare const createRelativeLink: typeof createRelativeLink$1;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { createRelativeLink, defaultMdxComponents as default };
|
|
38
|
+
//# sourceMappingURL=mdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdx.d.ts","names":[],"sources":["../src/mdx.tsx"],"sourcesContent":[],"mappings":";;;;;;;;iBAsBS,KAAA,QACA,kBAAkB;;IAExB,kBAAA,CAAA,GAAA,CAAA;iBAYM,KAAA,QAAa,oBAAoB,oBAAiB,kBAAA,CAAA,GAAA,CAAA;AAjB3B,cAyB1B,oBAvBQ,EAAA;EACa,YAAA,EAAA,mBAAA;EAAlB,aAAA,EAAA,oBAAA;EAEN,iBAAA,EAAA,wBAAA;EAAA,oBAAA,EAAA,2BAAA;EAYM,GAAA,EAAA,CAAA,KAAK,EAaC,cAbD,CAagB,cAbhB,CAAA,EAAA,GAa+B,kBAAA,CAAA,GAAA,CAAA,OAb/B;EAA4B,IAAA,EAAA,WAAA;EAApB,KAAA,EAAA,YAAA;EAAqC,CAAA,EAoB9C,EApB8C,CAoB3C,oBApB2C,CAoBtB,iBApBsB,CAAA,CAAA;EAAA,GAAA,EAAA,YAAA;EAQrD,EAAA,EAAA,CAAA,KAAA,EAcQ,cAWb,CAX4B,kBAW5B,CAAA,EAAA,GAX+C,kBAAA,CAAA,GAAA,CAAA,OAW/C;cAVa,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;cAClC,eAAe,wBAAmB,kBAAA,CAAA,GAAA,CAAA;EAblB,EAAA,EAAA,CAAA,KAAA,EAchB,cAdgB,CAcD,kBAdC,CAAA,EAAA,GAckB,kBAAA,CAAA,GAAA,CAAA,OAdlB;EAAf,KAAA,EAAA,YAAA;EAA8B,OAAA,EAAA,cAAA;;;EAOR,kBAAA,EAAA,yBAAA;CAArB;AAAH,cAeA,kBAfA,EAAA,OAiBZ,oBAjBY"}
|