@hanzo/docs-base-ui 16.4.8 → 16.5.3
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/README.md +1 -1
- package/css/aspen.css +39 -1
- package/css/black.css +39 -1
- package/css/catppuccin.css +49 -1
- package/css/dusk.css +47 -1
- package/css/emerald.css +39 -1
- package/css/generated/docs.css +455 -0
- package/css/generated/flux.css +419 -0
- package/css/generated/home.css +201 -0
- package/css/generated/notebook.css +492 -0
- package/css/generated/shared.css +1033 -0
- package/css/lib/base.css +217 -0
- package/css/lib/default-colors.css +51 -0
- package/css/lib/shiki.css +90 -0
- package/css/neutral.css +7 -1
- package/css/ocean.css +44 -1
- package/css/preset.css +6 -7
- package/css/purple.css +39 -1
- package/css/ruby.css +39 -1
- package/css/shadcn.css +36 -1
- package/css/solar.css +75 -1
- package/css/vitepress.css +65 -1
- package/dist/_virtual/_rolldown/runtime.js +18 -0
- package/dist/components/accordion.d.ts +3 -3
- package/dist/components/accordion.d.ts.map +1 -1
- package/dist/components/accordion.js +6 -6
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/banner.d.ts +2 -2
- package/dist/components/banner.d.ts.map +1 -1
- package/dist/components/banner.js +4 -4
- package/dist/components/banner.js.map +1 -1
- package/dist/components/callout.d.ts +5 -5
- package/dist/components/callout.d.ts.map +1 -1
- package/dist/components/callout.js +1 -1
- package/dist/components/callout.js.map +1 -1
- package/dist/components/card.d.ts +3 -3
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +2 -2
- package/dist/components/card.js.map +1 -1
- package/dist/components/codeblock.d.ts +7 -7
- package/dist/components/codeblock.d.ts.map +1 -1
- package/dist/components/codeblock.js +7 -7
- package/dist/components/codeblock.js.map +1 -1
- package/dist/components/dialog/search-algolia.d.ts +6 -6
- package/dist/components/dialog/search-algolia.d.ts.map +1 -1
- package/dist/components/dialog/search-algolia.js +7 -7
- package/dist/components/dialog/search-algolia.js.map +1 -1
- package/dist/components/dialog/search-default.d.ts +6 -6
- package/dist/components/dialog/search-default.d.ts.map +1 -1
- package/dist/components/dialog/search-default.js +7 -7
- package/dist/components/dialog/search-default.js.map +1 -1
- package/dist/components/dialog/search-orama.d.ts +6 -6
- package/dist/components/dialog/search-orama.d.ts.map +1 -1
- package/dist/components/dialog/search-orama.js +7 -7
- package/dist/components/dialog/search-orama.js.map +1 -1
- package/dist/components/dialog/search.d.ts +16 -16
- package/dist/components/dialog/search.d.ts.map +1 -1
- package/dist/components/dialog/search.js +19 -27
- package/dist/components/dialog/search.js.map +1 -1
- package/dist/components/dynamic-codeblock.core.d.ts +33 -0
- package/dist/components/dynamic-codeblock.core.d.ts.map +1 -0
- package/dist/components/dynamic-codeblock.core.js +66 -0
- package/dist/components/dynamic-codeblock.core.js.map +1 -0
- package/dist/components/dynamic-codeblock.d.ts +4 -28
- package/dist/components/dynamic-codeblock.d.ts.map +1 -1
- package/dist/components/dynamic-codeblock.js +9 -53
- package/dist/components/dynamic-codeblock.js.map +1 -1
- package/dist/components/files.d.ts.map +1 -1
- package/dist/components/files.js +2 -2
- package/dist/components/files.js.map +1 -1
- package/dist/components/github-info.d.ts +2 -2
- package/dist/components/github-info.d.ts.map +1 -1
- package/dist/components/github-info.js +1 -1
- package/dist/components/github-info.js.map +1 -1
- package/dist/components/heading.d.ts.map +1 -1
- package/dist/components/heading.js +1 -1
- package/dist/components/heading.js.map +1 -1
- package/dist/components/{image-zoom-CtfZieBH.css → image-zoom-DGvp66QF.css} +1 -1
- package/dist/components/{image-zoom-CtfZieBH.css.map → image-zoom-DGvp66QF.css.map} +1 -1
- package/dist/components/image-zoom.d.ts +3 -3
- package/dist/components/image-zoom.d.ts.map +1 -1
- package/dist/components/inline-toc.d.ts +2 -2
- package/dist/components/inline-toc.d.ts.map +1 -1
- package/dist/components/inline-toc.js +1 -1
- package/dist/components/inline-toc.js.map +1 -1
- package/dist/components/sidebar/base.d.ts +16 -16
- package/dist/components/sidebar/base.d.ts.map +1 -1
- package/dist/components/sidebar/base.js +5 -5
- package/dist/components/sidebar/base.js.map +1 -1
- package/dist/components/sidebar/link-item.d.ts +3 -3
- package/dist/components/sidebar/link-item.d.ts.map +1 -1
- package/dist/components/sidebar/link-item.js.map +1 -1
- package/dist/components/sidebar/page-tree.d.ts +2 -2
- package/dist/components/sidebar/page-tree.d.ts.map +1 -1
- package/dist/components/sidebar/page-tree.js +5 -5
- package/dist/components/sidebar/page-tree.js.map +1 -1
- package/dist/components/sidebar/tabs/dropdown.d.ts +3 -3
- package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
- package/dist/components/sidebar/tabs/dropdown.js +19 -19
- package/dist/components/sidebar/tabs/dropdown.js.map +1 -1
- package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
- package/dist/components/steps.d.ts +3 -3
- package/dist/components/steps.d.ts.map +1 -1
- package/dist/components/tabs.d.ts +4 -4
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +2 -2
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/toc/clerk.d.ts +12 -1
- package/dist/components/toc/clerk.d.ts.map +1 -0
- package/dist/components/toc/clerk.js +106 -6
- package/dist/components/toc/clerk.js.map +1 -1
- package/dist/components/toc/default.d.ts +12 -1
- package/dist/components/toc/default.d.ts.map +1 -0
- package/dist/components/toc/default.js +34 -6
- package/dist/components/toc/default.js.map +1 -1
- package/dist/components/toc/index.d.ts +26 -1
- package/dist/components/toc/index.d.ts.map +1 -0
- package/dist/components/toc/index.js +76 -6
- package/dist/components/toc/index.js.map +1 -1
- package/dist/components/type-table.d.ts +2 -2
- package/dist/components/type-table.d.ts.map +1 -1
- package/dist/components/type-table.js +7 -7
- package/dist/components/type-table.js.map +1 -1
- package/dist/components/ui/accordion.d.ts +6 -6
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/collapsible.d.ts +6 -6
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +1 -1
- package/dist/components/ui/collapsible.js.map +1 -1
- package/dist/components/ui/navigation-menu.d.ts +7 -7
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +2 -2
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.d.ts +3 -3
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +2 -2
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +4 -4
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.js +2 -2
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/tabs.d.ts +7 -7
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +5 -5
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/contexts/i18n.d.ts +60 -1
- package/dist/contexts/i18n.d.ts.map +1 -0
- package/dist/contexts/i18n.js +54 -6
- package/dist/contexts/i18n.js.map +1 -1
- package/dist/contexts/search.d.ts +70 -4
- package/dist/contexts/search.d.ts.map +1 -1
- package/dist/contexts/search.js +62 -6
- package/dist/contexts/search.js.map +1 -1
- package/dist/contexts/tree.d.ts +22 -1
- package/dist/contexts/tree.d.ts.map +1 -0
- package/dist/contexts/tree.js +36 -6
- package/dist/contexts/tree.js.map +1 -1
- package/dist/i18n.d.ts +14 -1
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +19 -2
- package/dist/i18n.js.map +1 -0
- package/dist/layouts/docs/client.d.ts +7 -7
- package/dist/layouts/docs/client.d.ts.map +1 -1
- package/dist/layouts/docs/client.js +4 -4
- package/dist/layouts/docs/client.js.map +1 -1
- package/dist/layouts/docs/index.d.ts +3 -3
- package/dist/layouts/docs/index.d.ts.map +1 -1
- package/dist/layouts/docs/index.js +11 -11
- package/dist/layouts/docs/index.js.map +1 -1
- package/dist/layouts/docs/page/client.d.ts +7 -7
- package/dist/layouts/docs/page/client.d.ts.map +1 -1
- package/dist/layouts/docs/page/client.js +21 -21
- package/dist/layouts/docs/page/client.js.map +1 -1
- package/dist/layouts/docs/page/index.d.ts +5 -5
- package/dist/layouts/docs/page/index.d.ts.map +1 -1
- package/dist/layouts/docs/page/index.js +13 -13
- package/dist/layouts/docs/page/index.js.map +1 -1
- package/dist/layouts/docs/sidebar.d.ts +20 -19
- package/dist/layouts/docs/sidebar.d.ts.map +1 -1
- package/dist/layouts/docs/sidebar.js +6 -6
- package/dist/layouts/docs/sidebar.js.map +1 -1
- package/dist/layouts/flux/index.d.ts +79 -0
- package/dist/layouts/flux/index.d.ts.map +1 -0
- package/dist/layouts/flux/index.js +168 -0
- package/dist/layouts/flux/index.js.map +1 -0
- package/dist/layouts/flux/page/client.d.ts +45 -0
- package/dist/layouts/flux/page/client.d.ts.map +1 -0
- package/dist/layouts/flux/page/client.js +255 -0
- package/dist/layouts/flux/page/client.js.map +1 -0
- package/dist/layouts/flux/page/index.d.ts +98 -0
- package/dist/layouts/flux/page/index.d.ts.map +1 -0
- package/dist/layouts/flux/page/index.js +76 -0
- package/dist/layouts/flux/page/index.js.map +1 -0
- package/dist/layouts/flux/sidebar.d.ts +59 -0
- package/dist/layouts/flux/sidebar.d.ts.map +1 -0
- package/dist/layouts/flux/sidebar.js +197 -0
- package/dist/layouts/flux/sidebar.js.map +1 -0
- package/dist/layouts/flux/tab-dropdown.d.ts +21 -0
- package/dist/layouts/flux/tab-dropdown.d.ts.map +1 -0
- package/dist/layouts/flux/tab-dropdown.js +96 -0
- package/dist/layouts/flux/tab-dropdown.js.map +1 -0
- package/dist/layouts/home/client.d.ts +3 -3
- package/dist/layouts/home/client.d.ts.map +1 -1
- package/dist/layouts/home/client.js +20 -38
- package/dist/layouts/home/client.js.map +1 -1
- package/dist/layouts/home/index.d.ts +2 -2
- package/dist/layouts/home/index.d.ts.map +1 -1
- package/dist/layouts/home/index.js +1 -1
- package/dist/layouts/home/index.js.map +1 -1
- package/dist/layouts/home/navbar.d.ts +6 -6
- package/dist/layouts/home/navbar.d.ts.map +1 -1
- package/dist/layouts/home/navbar.js +2 -2
- package/dist/layouts/home/navbar.js.map +1 -1
- package/dist/layouts/notebook/client.d.ts +9 -9
- package/dist/layouts/notebook/client.d.ts.map +1 -1
- package/dist/layouts/notebook/client.js +8 -8
- package/dist/layouts/notebook/client.js.map +1 -1
- package/dist/layouts/notebook/index.d.ts +2 -2
- package/dist/layouts/notebook/index.d.ts.map +1 -1
- package/dist/layouts/notebook/index.js +18 -18
- package/dist/layouts/notebook/index.js.map +1 -1
- package/dist/layouts/notebook/page/client.d.ts +7 -7
- package/dist/layouts/notebook/page/client.d.ts.map +1 -1
- package/dist/layouts/notebook/page/client.js +21 -21
- package/dist/layouts/notebook/page/client.js.map +1 -1
- package/dist/layouts/notebook/page/index.d.ts +5 -5
- package/dist/layouts/notebook/page/index.d.ts.map +1 -1
- package/dist/layouts/notebook/page/index.js +13 -13
- package/dist/layouts/notebook/page/index.js.map +1 -1
- package/dist/layouts/notebook/sidebar.d.ts +15 -14
- package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
- package/dist/layouts/notebook/sidebar.js +4 -4
- package/dist/layouts/notebook/sidebar.js.map +1 -1
- package/dist/layouts/shared/index.d.ts +13 -6
- package/dist/layouts/shared/index.d.ts.map +1 -1
- package/dist/layouts/shared/index.js +29 -2
- package/dist/layouts/shared/index.js.map +1 -1
- package/dist/layouts/shared/language-toggle.d.ts +2 -2
- package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
- package/dist/layouts/shared/language-toggle.js +4 -4
- package/dist/layouts/shared/language-toggle.js.map +1 -1
- package/dist/layouts/shared/search-toggle.d.ts +3 -3
- package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
- package/dist/layouts/shared/search-toggle.js +6 -6
- package/dist/layouts/shared/search-toggle.js.map +1 -1
- package/dist/layouts/shared/theme-toggle.d.ts +2 -2
- package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
- package/dist/layouts/shared/theme-toggle.js +7 -7
- package/dist/layouts/shared/theme-toggle.js.map +1 -1
- package/dist/mdx.d.ts +1 -1
- package/dist/mdx.d.ts.map +1 -1
- package/dist/mdx.js +2 -2
- package/dist/mdx.js.map +1 -1
- package/dist/mdx.server.d.ts +0 -1
- package/dist/mdx.server.d.ts.map +1 -1
- package/dist/og.d.ts +23 -1
- package/dist/og.d.ts.map +1 -0
- package/dist/og.js +69 -2
- package/dist/og.js.map +1 -0
- package/dist/page.d.ts +3 -3
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +5 -5
- package/dist/page.js.map +1 -1
- package/dist/provider/base.d.ts +4 -4
- package/dist/provider/base.d.ts.map +1 -1
- package/dist/provider/base.js +3 -3
- package/dist/provider/base.js.map +1 -1
- package/dist/provider/next.d.ts +3 -3
- package/dist/provider/next.d.ts.map +1 -1
- package/dist/provider/react-router.d.ts +3 -3
- package/dist/provider/react-router.d.ts.map +1 -1
- package/dist/provider/tanstack.d.ts +3 -3
- package/dist/provider/tanstack.d.ts.map +1 -1
- package/dist/provider/waku.d.ts +3 -3
- package/dist/provider/waku.d.ts.map +1 -1
- package/dist/style.css +187 -56
- package/dist/utils/cn.js +3 -0
- package/dist/utils/link-item.d.ts +86 -0
- package/dist/utils/link-item.d.ts.map +1 -0
- package/dist/utils/link-item.js +25 -0
- package/dist/utils/link-item.js.map +1 -0
- package/dist/utils/merge-refs.js +13 -0
- package/dist/utils/merge-refs.js.map +1 -0
- package/dist/utils/urls.js +17 -0
- package/dist/utils/urls.js.map +1 -0
- package/dist/utils/use-copy-button.d.ts +7 -1
- package/dist/utils/use-copy-button.d.ts.map +1 -0
- package/dist/utils/use-copy-button.js +29 -2
- package/dist/utils/use-copy-button.js.map +1 -0
- package/dist/utils/use-footer-items.d.ts +10 -1
- package/dist/utils/use-footer-items.d.ts.map +1 -0
- package/dist/utils/use-footer-items.js +27 -2
- package/dist/utils/use-footer-items.js.map +1 -0
- package/dist/utils/use-is-scroll-top.d.ts +9 -1
- package/dist/utils/use-is-scroll-top.d.ts.map +1 -0
- package/dist/utils/use-is-scroll-top.js +23 -2
- package/dist/utils/use-is-scroll-top.js.map +1 -0
- package/package.json +28 -17
- package/css/layouts/docs.css +0 -1
- package/css/layouts/home.css +0 -1
- package/css/layouts/notebook.css +0 -1
- package/dist/_virtual/rolldown_runtime.js +0 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/docs/index.tsx"],"
|
|
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,18 +1,18 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
1
2
|
import { buttonVariants } from "../../components/ui/button.js";
|
|
2
|
-
import {
|
|
3
|
+
import { TreeContextProvider } from "../../contexts/tree.js";
|
|
3
4
|
import { SidebarTabsDropdown } from "../../components/sidebar/tabs/dropdown.js";
|
|
4
5
|
import { LayoutBody, LayoutContextProvider, LayoutHeader, LayoutTabs } from "./client.js";
|
|
6
|
+
import { LinkItem } from "../../utils/link-item.js";
|
|
5
7
|
import { LargeSearchToggle, SearchToggle } from "../shared/search-toggle.js";
|
|
6
8
|
import { Sidebar as Sidebar$1, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarLinkItem, SidebarPageTree, SidebarTrigger, SidebarViewport } from "./sidebar.js";
|
|
7
|
-
import { renderTitleNav,
|
|
9
|
+
import { renderTitleNav, useLinkItems } from "../shared/index.js";
|
|
8
10
|
import { LanguageToggle, LanguageToggleText } from "../shared/language-toggle.js";
|
|
9
11
|
import { ThemeToggle } from "../shared/theme-toggle.js";
|
|
10
12
|
import { getSidebarTabs } from "../../components/sidebar/tabs/index.js";
|
|
11
|
-
import { cn } from "@hanzo/docs-ui/cn";
|
|
12
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { Languages, Sidebar } from "lucide-react";
|
|
14
13
|
import { useMemo } from "react";
|
|
15
|
-
import {
|
|
14
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
import { Languages, Sidebar } from "lucide-react";
|
|
16
16
|
|
|
17
17
|
//#region src/layouts/docs/index.tsx
|
|
18
18
|
function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { tabs: sidebarTabs, enabled: sidebarEnabled = true, defaultOpenLevel, prefetch, ...sidebarProps } = {}, searchToggle = {}, themeSwitch = {}, tabMode = "auto", i18n = false, children, tree, ...props }) {
|
|
@@ -22,16 +22,16 @@ function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { tabs: si
|
|
|
22
22
|
if (sidebarTabs !== false) return getSidebarTabs(tree);
|
|
23
23
|
return [];
|
|
24
24
|
}, [tree, sidebarTabs]);
|
|
25
|
-
const
|
|
25
|
+
const { menuItems } = useLinkItems(props);
|
|
26
26
|
function sidebar() {
|
|
27
27
|
const { footer, banner, collapsible = true, component, components, ...rest } = sidebarProps;
|
|
28
28
|
if (component) return component;
|
|
29
|
-
const iconLinks =
|
|
30
|
-
const viewport = /* @__PURE__ */ jsxs(SidebarViewport, { children: [
|
|
29
|
+
const iconLinks = menuItems.filter((item) => item.type === "icon");
|
|
30
|
+
const viewport = /* @__PURE__ */ jsxs(SidebarViewport, { children: [menuItems.filter((v) => v.type !== "icon").map((item, i, list) => /* @__PURE__ */ jsx(SidebarLinkItem, {
|
|
31
31
|
item,
|
|
32
32
|
className: cn(i === list.length - 1 && "mb-4")
|
|
33
33
|
}, i)), /* @__PURE__ */ jsx(SidebarPageTree, { ...components })] });
|
|
34
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(SidebarContent, {
|
|
34
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(SidebarContent, {
|
|
35
35
|
...rest,
|
|
36
36
|
children: [
|
|
37
37
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -127,7 +127,7 @@ function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { tabs: si
|
|
|
127
127
|
})
|
|
128
128
|
] })] });
|
|
129
129
|
}
|
|
130
|
-
return /* @__PURE__ */ jsx(
|
|
130
|
+
return /* @__PURE__ */ jsx(TreeContextProvider, {
|
|
131
131
|
tree,
|
|
132
132
|
children: /* @__PURE__ */ jsx(LayoutContextProvider, {
|
|
133
133
|
navTransparentMode: transparentMode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["SidebarIcon","TreeContextProvider","Sidebar"],"sources":["../../../src/layouts/docs/index.tsx"],"sourcesContent":["import type * as PageTree from '@hanzo/docs-core/page-tree';\nimport { type ComponentProps, type HTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { Languages, Sidebar as SidebarIcon } from 'lucide-react';\nimport { cn } from '@hanzo/docs-ui/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, resolveLinkItems } from '@/layouts/shared';\nimport { LinkItem } from '@hanzo/docs-radix-ui/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 links = resolveLinkItems(props);\n\n function sidebar() {\n const { footer, banner, collapsible = true, component, components, ...rest } = sidebarProps;\n if (component) return component;\n\n const iconLinks = links.filter((item) => item.type === 'icon');\n const viewport = (\n <SidebarViewport>\n {links\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
|
+
{"version":3,"file":"index.js","names":["SidebarIcon","Sidebar"],"sources":["../../../src/layouts/docs/index.tsx"],"sourcesContent":["import type * as PageTree from '@hanzo/docs-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,5 +1,5 @@
|
|
|
1
|
-
import * as react_jsx_runtime59 from "react/jsx-runtime";
|
|
2
1
|
import { ComponentProps } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
import { BreadcrumbOptions } from "@hanzo/docs-core/breadcrumb";
|
|
4
4
|
import * as PageTree from "@hanzo/docs-core/page-tree";
|
|
5
5
|
|
|
@@ -8,18 +8,18 @@ declare function PageTOCPopover({
|
|
|
8
8
|
className,
|
|
9
9
|
children,
|
|
10
10
|
...rest
|
|
11
|
-
}: ComponentProps<'div'>):
|
|
11
|
+
}: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
12
12
|
declare function PageTOCPopoverTrigger({
|
|
13
13
|
className,
|
|
14
14
|
...props
|
|
15
|
-
}: ComponentProps<'button'>):
|
|
16
|
-
declare function PageTOCPopoverContent(props: ComponentProps<'div'>):
|
|
15
|
+
}: ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
|
|
16
|
+
declare function PageTOCPopoverContent(props: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
17
17
|
declare function PageLastUpdate({
|
|
18
18
|
date: value,
|
|
19
19
|
...props
|
|
20
20
|
}: Omit<ComponentProps<'p'>, 'children'> & {
|
|
21
21
|
date: Date;
|
|
22
|
-
}):
|
|
22
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
23
23
|
type Item = Pick<PageTree.Item, 'name' | 'description' | 'url'>;
|
|
24
24
|
interface FooterProps extends ComponentProps<'div'> {
|
|
25
25
|
/**
|
|
@@ -35,14 +35,14 @@ declare function PageFooter({
|
|
|
35
35
|
children,
|
|
36
36
|
className,
|
|
37
37
|
...props
|
|
38
|
-
}: FooterProps):
|
|
38
|
+
}: FooterProps): react_jsx_runtime0.JSX.Element;
|
|
39
39
|
type BreadcrumbProps = BreadcrumbOptions & ComponentProps<'div'>;
|
|
40
40
|
declare function PageBreadcrumb({
|
|
41
41
|
includeRoot,
|
|
42
42
|
includeSeparator,
|
|
43
43
|
includePage,
|
|
44
44
|
...props
|
|
45
|
-
}: BreadcrumbProps):
|
|
45
|
+
}: BreadcrumbProps): react_jsx_runtime0.JSX.Element | null;
|
|
46
46
|
//#endregion
|
|
47
47
|
export { BreadcrumbProps, FooterProps, PageBreadcrumb, PageFooter, PageLastUpdate, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger };
|
|
48
48
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../../src/layouts/docs/page/client.tsx"],"
|
|
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,20 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { useI18n } from "../../../contexts/i18n.js";
|
|
4
|
+
import { cn } from "../../../utils/cn.js";
|
|
5
|
+
import { useTreeContext, useTreePath } from "../../../contexts/tree.js";
|
|
6
|
+
import { isActive } from "../../../utils/urls.js";
|
|
5
7
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../../components/ui/collapsible.js";
|
|
6
|
-
import {
|
|
8
|
+
import { useTOCItems } from "../../../components/toc/index.js";
|
|
7
9
|
import { LayoutContext } from "../client.js";
|
|
8
|
-
import
|
|
10
|
+
import { useFooterItems } from "../../../utils/use-footer-items.js";
|
|
11
|
+
import { Fragment, createContext, use, useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
|
|
9
12
|
import { usePathname } from "@hanzo/docs-core/framework";
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
13
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
import Link from "@hanzo/docs-core/link";
|
|
12
15
|
import { ChevronDown, ChevronLeft, ChevronRight } from "lucide-react";
|
|
13
|
-
import { Fragment as Fragment$1, createContext, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
14
16
|
import { getBreadcrumbItemsFromPath } from "@hanzo/docs-core/breadcrumb";
|
|
15
|
-
import { isActive } from "@hanzo/docs-radix-ui/urls";
|
|
16
17
|
import { useActiveAnchor } from "@hanzo/docs-core/toc";
|
|
17
|
-
import { useFooterItems } from "@hanzo/docs-radix-ui/hooks/use-footer-items";
|
|
18
18
|
|
|
19
19
|
//#region src/layouts/docs/page/client.tsx
|
|
20
20
|
const TocPopoverContext = createContext(null);
|
|
@@ -22,16 +22,16 @@ function PageTOCPopover({ className, children, ...rest }) {
|
|
|
22
22
|
const ref = useRef(null);
|
|
23
23
|
const [open, setOpen] = useState(false);
|
|
24
24
|
const { isNavTransparent } = use(LayoutContext);
|
|
25
|
-
const onClick =
|
|
25
|
+
const onClick = useEffectEvent((e) => {
|
|
26
26
|
if (!open) return;
|
|
27
27
|
if (ref.current && !ref.current.contains(e.target)) setOpen(false);
|
|
28
|
-
}
|
|
28
|
+
});
|
|
29
29
|
useEffect(() => {
|
|
30
30
|
window.addEventListener("click", onClick);
|
|
31
31
|
return () => {
|
|
32
32
|
window.removeEventListener("click", onClick);
|
|
33
33
|
};
|
|
34
|
-
}, [
|
|
34
|
+
}, []);
|
|
35
35
|
return /* @__PURE__ */ jsx(TocPopoverContext, {
|
|
36
36
|
value: useMemo(() => ({
|
|
37
37
|
open,
|
|
@@ -52,12 +52,12 @@ function PageTOCPopover({ className, children, ...rest }) {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
function PageTOCPopoverTrigger({ className, ...props }) {
|
|
55
|
-
const { text } =
|
|
55
|
+
const { text } = useI18n();
|
|
56
56
|
const { open } = use(TocPopoverContext);
|
|
57
|
-
const items =
|
|
57
|
+
const items = useTOCItems();
|
|
58
58
|
const active = useActiveAnchor();
|
|
59
59
|
const selected = useMemo(() => items.findIndex((item) => active === item.url.slice(1)), [items, active]);
|
|
60
|
-
const path =
|
|
60
|
+
const path = useTreePath().at(-1);
|
|
61
61
|
const showItem = selected !== -1 && !open;
|
|
62
62
|
return /* @__PURE__ */ jsxs(CollapsibleTrigger, {
|
|
63
63
|
className: cn("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", className),
|
|
@@ -130,7 +130,7 @@ function PageTOCPopoverContent(props) {
|
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
function PageLastUpdate({ date: value, ...props }) {
|
|
133
|
-
const { text } =
|
|
133
|
+
const { text } = useI18n();
|
|
134
134
|
const [date, setDate] = useState("");
|
|
135
135
|
useEffect(() => {
|
|
136
136
|
setDate(value.toLocaleDateString());
|
|
@@ -161,7 +161,7 @@ function PageFooter({ items, children, className, ...props }) {
|
|
|
161
161
|
items,
|
|
162
162
|
pathname
|
|
163
163
|
]);
|
|
164
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
164
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("div", {
|
|
165
165
|
className: cn("@container grid gap-4", previous && next ? "grid-cols-2" : "grid-cols-1", className),
|
|
166
166
|
...props,
|
|
167
167
|
children: [previous && /* @__PURE__ */ jsx(FooterItem, {
|
|
@@ -174,7 +174,7 @@ function PageFooter({ items, children, className, ...props }) {
|
|
|
174
174
|
}), children] });
|
|
175
175
|
}
|
|
176
176
|
function FooterItem({ item, index }) {
|
|
177
|
-
const { text } =
|
|
177
|
+
const { text } = useI18n();
|
|
178
178
|
const Icon = index === 0 ? ChevronLeft : ChevronRight;
|
|
179
179
|
return /* @__PURE__ */ jsxs(Link, {
|
|
180
180
|
href: item.url,
|
|
@@ -189,8 +189,8 @@ function FooterItem({ item, index }) {
|
|
|
189
189
|
});
|
|
190
190
|
}
|
|
191
191
|
function PageBreadcrumb({ includeRoot, includeSeparator, includePage, ...props }) {
|
|
192
|
-
const path =
|
|
193
|
-
const { root } =
|
|
192
|
+
const path = useTreePath();
|
|
193
|
+
const { root } = useTreeContext();
|
|
194
194
|
const items = useMemo(() => {
|
|
195
195
|
return getBreadcrumbItemsFromPath(root, path, {
|
|
196
196
|
includePage,
|
|
@@ -210,7 +210,7 @@ function PageBreadcrumb({ includeRoot, includeSeparator, includePage, ...props }
|
|
|
210
210
|
className: cn("flex items-center gap-1.5 text-sm text-fd-muted-foreground", props.className),
|
|
211
211
|
children: items.map((item, i) => {
|
|
212
212
|
const className = cn("truncate", i === items.length - 1 && "text-fd-primary font-medium");
|
|
213
|
-
return /* @__PURE__ */ jsxs(Fragment
|
|
213
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [i !== 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-3.5 shrink-0" }), item.url ? /* @__PURE__ */ jsx(Link, {
|
|
214
214
|
href: item.url,
|
|
215
215
|
className: cn(className, "transition-opacity hover:opacity-80"),
|
|
216
216
|
children: item.name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["Fragment"],"sources":["../../../../src/layouts/docs/page/client.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentProps,\n createContext,\n Fragment,\n use,\n useEffect,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ChevronDown, ChevronLeft, ChevronRight } from 'lucide-react';\nimport Link from '@hanzo/docs-core/link';\nimport { cn } from '@hanzo/docs-ui/cn';\nimport { useI18n } from '@/contexts/i18n';\nimport { useTreeContext, useTreePath } from '@/contexts/tree';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { type BreadcrumbOptions, getBreadcrumbItemsFromPath } from '@hanzo/docs-core/breadcrumb';\nimport { isActive } from '@hanzo/docs-radix-ui/urls';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { useTOCItems } from '@/components/toc';\nimport { useActiveAnchor } from '@hanzo/docs-core/toc';\nimport { LayoutContext } from '../client';\nimport { useFooterItems } from '@hanzo/docs-radix-ui/hooks/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 } = use(LayoutContext)!;\n\n const onClick = useCallback((e: Event) => {\n if (!open) return;\n\n if (ref.current && !ref.current.contains(e.target as HTMLElement)) setOpen(false);\n }, [open]);\n\n useEffect(() => {\n window.addEventListener('click', onClick);\n\n return () => {\n window.removeEventListener('click', onClick);\n };\n }, [onClick]);\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, false));\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
|
+
{"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 '@hanzo/docs-core/link';\nimport { cn } from '@/utils/cn';\nimport { useI18n } from '@/contexts/i18n';\nimport { useTreeContext, useTreePath } from '@/contexts/tree';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { type BreadcrumbOptions, getBreadcrumbItemsFromPath } from '@hanzo/docs-core/breadcrumb';\nimport { isActive } from '@/utils/urls';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { useTOCItems } from '@/components/toc';\nimport { useActiveAnchor } from '@hanzo/docs-core/toc';\nimport { LayoutContext } 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 } = use(LayoutContext)!;\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, false));\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":";;;;;;;;;;;;;;;;;;;AA4BA,MAAM,oBAAoB,cAGhB,KAAK;AAEf,SAAgB,eAAe,EAAE,WAAW,UAAU,GAAG,QAA+B;CACtF,MAAM,MAAM,OAAoB,KAAK;CACrC,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,qBAAqB,IAAI,cAAc;CAE/C,MAAM,UAAU,gBAAgB,MAAa;AAC3C,MAAI,CAAC,KAAM;AAEX,MAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,EAAE,OAAsB,CAAE,SAAQ,MAAM;GACjF;AAEF,iBAAgB;AACd,SAAO,iBAAiB,SAAS,QAAQ;AAEzC,eAAa;AACX,UAAO,oBAAoB,SAAS,QAAQ;;IAE7C,EAAE,CAAC;AAEN,QACE,oBAAC;EACC,OAAO,eACE;GACL;GACA;GACD,GACD,CAAC,SAAS,KAAK,CAChB;YAED,oBAAC;GACO;GACN,cAAc;GACd,oBAAiB;GACjB,WAAW,GACT,yJACA,UACD;GACD,GAAI;aAEJ,oBAAC;IACM;IACL,WAAW,GACT,gDACC,CAAC,oBAAoB,SAAS,uBAC/B,QAAQ,YACT;IAEA;KACM;IACG;GACI;;AAIxB,SAAgB,sBAAsB,EAAE,WAAW,GAAG,SAAmC;CACvF,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,EAAE,SAAS,IAAI,kBAAkB;CACvC,MAAM,QAAQ,aAAa;CAC3B,MAAM,SAAS,iBAAiB;CAChC,MAAM,WAAW,cACT,MAAM,WAAW,SAAS,WAAW,KAAK,IAAI,MAAM,EAAE,CAAC,EAC7D,CAAC,OAAO,OAAO,CAChB;CACD,MAAM,OAAO,aAAa,CAAC,GAAG,GAAG;CACjC,MAAM,WAAW,aAAa,MAAM,CAAC;AAErC,QACE,qBAAC;EACC,WAAW,GACT,mJACA,UACD;EACD,4BAAyB;EACzB,GAAI;;GAEJ,oBAAC;IACC,QAAQ,WAAW,KAAK,KAAK,IAAI,GAAG,MAAM,OAAO;IACjD,KAAK;IACL,WAAW,GAAG,YAAY,QAAQ,kBAAkB;KACpD;GACF,qBAAC;IAAK,WAAU;eACd,oBAAC;KACC,WAAW,GACT,2BACA,QAAQ,sBACR,YAAY,kDACb;eAEA,MAAM,QAAQ,KAAK;MACf,EACP,oBAAC;KACC,WAAW,GACT,2BACA,CAAC,YAAY,iDACd;eAEA,MAAM,WAAW;MACb;KACF;GACP,oBAAC,eAAY,WAAW,GAAG,wCAAwC,QAAQ,aAAa,GAAI;;GACzE;;AAYzB,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,KAAI,QAAQ,IAAK,QAAO;AACxB,KAAI,QAAQ,IAAK,QAAO;AACxB,QAAO;;AAGT,SAAS,eAAe,EACtB,OACA,cAAc,GACd,OAAO,IACP,MAAM,GACN,MAAM,KACN,GAAG,gBACmB;CACtB,MAAM,kBAAkB,MAAM,OAAO,KAAK,IAAI;CAC9C,MAAM,UAAU,OAAO,eAAe;CACtC,MAAM,gBAAgB,IAAI,KAAK,KAAK;CACpC,MAAM,WAAY,kBAAkB,MAAO;CAC3C,MAAM,cAAc;EAClB,IAAI,OAAO;EACX,IAAI,OAAO;EACX,GAAG;EACH,MAAM;EACN;EACD;AAED,QACE,qBAAC;EACC,MAAK;EACL,SAAS,OAAO,KAAK,GAAG;EACxB,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,GAAI;aAEJ,oBAAC;GAAO,GAAI;GAAa,WAAU;IAAsB,EACzD,oBAAC;GACC,GAAI;GACJ,QAAO;GACP,iBAAiB;GACjB,kBAAkB,gBAAgB;GAClC,eAAc;GACd,WAAW,cAAc,OAAO,EAAE,GAAG,OAAO,EAAE;GAC9C,WAAU;IACV;GACE;;AAIV,SAAgB,sBAAsB,OAA8B;AAClE,QACE,oBAAC;EACC,4BAAyB;EACzB,GAAI;EACJ,WAAW,GAAG,2CAA2C,MAAM,UAAU;YAEzE,oBAAC,mBAAK,MAAM,WAAe;GACR;;AAIzB,SAAgB,eAAe,EAC7B,MAAM,OACN,GAAG,SACsD;CACzD,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,CAAC,MAAM,WAAW,SAAS,GAAG;AAEpC,iBAAgB;AAEd,UAAQ,MAAM,oBAAoB,CAAC;IAClC,CAAC,MAAM,CAAC;AAEX,QACE,qBAAC;EAAE,GAAI;EAAO,WAAW,GAAG,oCAAoC,MAAM,UAAU;;GAC7E,KAAK;GAAW;GAAE;;GACjB;;AAeR,SAAgB,WAAW,EAAE,OAAO,UAAU,WAAW,GAAG,SAAsB;CAChF,MAAM,aAAa,gBAAgB;CACnC,MAAM,WAAW,aAAa;CAE9B,MAAM,EAAE,UAAU,SAAS,cAAc;AACvC,MAAI,MAAO,QAAO;EAElB,MAAM,MAAM,WAAW,WAAW,SAAS,SAAS,KAAK,KAAK,UAAU,MAAM,CAAC;AAE/E,MAAI,QAAQ,GAAI,QAAO,EAAE;AACzB,SAAO;GACL,UAAU,WAAW,MAAM;GAC3B,MAAM,WAAW,MAAM;GACxB;IACA;EAAC;EAAY;EAAO;EAAS,CAAC;AAEjC,QACE,8CACE,qBAAC;EACC,WAAW,GACT,yBACA,YAAY,OAAO,gBAAgB,eACnC,UACD;EACD,GAAI;aAEH,YAAY,oBAAC;GAAW,MAAM;GAAU,OAAO;IAAK,EACpD,QAAQ,oBAAC;GAAW,MAAM;GAAM,OAAO;IAAK;GACzC,EACL,YACA;;AAIP,SAAS,WAAW,EAAE,MAAM,SAAuC;CACjE,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,OAAO,UAAU,IAAI,cAAc;AAEzC,QACE,qBAAC;EACC,MAAM,KAAK;EACX,WAAW,GACT,mJACA,UAAU,KAAK,WAChB;aAED,qBAAC;GACC,WAAW,GACT,gDACA,UAAU,KAAK,mBAChB;cAED,oBAAC,QAAK,WAAU,yCAAyC,EACzD,oBAAC,iBAAG,KAAK,OAAS;IACd,EACN,oBAAC;GAAE,WAAU;aACV,KAAK,gBAAgB,UAAU,IAAI,KAAK,eAAe,KAAK;IAC3D;GACC;;AAMX,SAAgB,eAAe,EAC7B,aACA,kBACA,aACA,GAAG,SACe;CAClB,MAAM,OAAO,aAAa;CAC1B,MAAM,EAAE,SAAS,gBAAgB;CACjC,MAAM,QAAQ,cAAc;AAC1B,SAAO,2BAA2B,MAAM,MAAM;GAC5C;GACA;GACA;GACD,CAAC;IACD;EAAC;EAAa;EAAa;EAAkB;EAAM;EAAK,CAAC;AAE5D,KAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,QACE,oBAAC;EACC,GAAI;EACJ,WAAW,GAAG,8DAA8D,MAAM,UAAU;YAE3F,MAAM,KAAK,MAAM,MAAM;GACtB,MAAM,YAAY,GAAG,YAAY,MAAM,MAAM,SAAS,KAAK,8BAA8B;AAEzF,UACE,qBAAC,uBACE,MAAM,KAAK,oBAAC,gBAAa,WAAU,sBAAsB,EACzD,KAAK,MACJ,oBAAC;IACC,MAAM,KAAK;IACX,WAAW,GAAG,WAAW,sCAAsC;cAE9D,KAAK;KACD,GAEP,oBAAC;IAAgB;cAAY,KAAK;KAAY,KAVnC,EAYJ;IAEb;GACE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BreadcrumbProps, FooterProps, PageBreadcrumb, PageLastUpdate } from "./client.js";
|
|
2
|
-
import * as react_jsx_runtime69 from "react/jsx-runtime";
|
|
3
2
|
import { ComponentProps, ReactNode } from "react";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import { AnchorProviderProps, TOCItemType } from "@hanzo/docs-core/toc";
|
|
5
5
|
|
|
6
6
|
//#region src/layouts/docs/page/index.d.ts
|
|
@@ -81,7 +81,7 @@ declare function DocsPage({
|
|
|
81
81
|
children,
|
|
82
82
|
className
|
|
83
83
|
}: DocsPageProps): ReactNode;
|
|
84
|
-
declare function EditOnGitHub(props: ComponentProps<'a'>):
|
|
84
|
+
declare function EditOnGitHub(props: ComponentProps<'a'>): react_jsx_runtime0.JSX.Element;
|
|
85
85
|
/**
|
|
86
86
|
* Add typography styles
|
|
87
87
|
*/
|
|
@@ -89,17 +89,17 @@ declare function DocsBody({
|
|
|
89
89
|
children,
|
|
90
90
|
className,
|
|
91
91
|
...props
|
|
92
|
-
}: ComponentProps<'div'>):
|
|
92
|
+
}: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
93
93
|
declare function DocsDescription({
|
|
94
94
|
children,
|
|
95
95
|
className,
|
|
96
96
|
...props
|
|
97
|
-
}: ComponentProps<'p'>):
|
|
97
|
+
}: ComponentProps<'p'>): react_jsx_runtime0.JSX.Element | null;
|
|
98
98
|
declare function DocsTitle({
|
|
99
99
|
children,
|
|
100
100
|
className,
|
|
101
101
|
...props
|
|
102
|
-
}: ComponentProps<'h1'>):
|
|
102
|
+
}: ComponentProps<'h1'>): react_jsx_runtime0.JSX.Element;
|
|
103
103
|
//#endregion
|
|
104
104
|
export { DocsBody, DocsDescription, DocsPage, DocsPageProps, DocsTitle, EditOnGitHub, PageBreadcrumb, PageLastUpdate };
|
|
105
105
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/layouts/docs/page/index.tsx"],"
|
|
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;EAdA;;;EAmBA,UAAA,GAAa,OAAA,CAAQ,iBAAA;EAlBD;AAGtB;;;;EAsBE,MAAA,GAAS,OAAA,CAAQ,aAAA;EAEjB,QAAA,GAAW,SAAA;EArBqB;;;EA0BhC,SAAA;AAAA;AAAA,KAGG,qBAAA,GAAwB,IAAA,CAAK,mBAAA;EARrB;;;EAYX,MAAA,GAAS,SAAA;EAnCH;;;EAwCN,MAAA,GAAS,SAAA;EAET,OAAA;EACA,SAAA,EAAW,SAAA;EAzCqB;;;EA8ChC,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,11 +1,11 @@
|
|
|
1
|
-
import { __exportAll } from "../../../_virtual/
|
|
1
|
+
import { __exportAll } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { I18nLabel } from "../../../contexts/i18n.js";
|
|
3
|
+
import { cn } from "../../../utils/cn.js";
|
|
2
4
|
import { buttonVariants } from "../../../components/ui/button.js";
|
|
3
|
-
import {
|
|
4
|
-
import { toc_exports } from "../../../components/toc/index.js";
|
|
5
|
+
import { TOCProvider, TOCScrollArea } from "../../../components/toc/index.js";
|
|
5
6
|
import { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger } from "./client.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { cn } from "@hanzo/docs-ui/cn";
|
|
7
|
+
import { TOCItems } from "../../../components/toc/default.js";
|
|
8
|
+
import { TOCItems as TOCItems$1 } from "../../../components/toc/clerk.js";
|
|
9
9
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
import { Edit, Text } from "lucide-react";
|
|
11
11
|
|
|
@@ -22,16 +22,16 @@ var page_exports = /* @__PURE__ */ __exportAll({
|
|
|
22
22
|
function DocsPage({ breadcrumb: { enabled: breadcrumbEnabled = true, component: breadcrumb, ...breadcrumbProps } = {}, footer: { enabled: footerEnabled, component: footerReplace, ...footerProps } = {}, full = false, tableOfContentPopover: { enabled: tocPopoverEnabled, component: tocPopover, ...tocPopoverOptions } = {}, tableOfContent: { enabled: tocEnabled, component: tocReplace, ...tocOptions } = {}, toc = [], children, className }) {
|
|
23
23
|
tocEnabled ??= !full && (toc.length > 0 || tocOptions.footer !== void 0 || tocOptions.header !== void 0);
|
|
24
24
|
tocPopoverEnabled ??= toc.length > 0 || tocPopoverOptions.header !== void 0 || tocPopoverOptions.footer !== void 0;
|
|
25
|
-
let wrapper = (children
|
|
26
|
-
if (tocEnabled || tocPopoverEnabled) wrapper = (children
|
|
25
|
+
let wrapper = (children) => children;
|
|
26
|
+
if (tocEnabled || tocPopoverEnabled) wrapper = (children) => /* @__PURE__ */ jsx(TOCProvider, {
|
|
27
27
|
single: tocOptions.single,
|
|
28
28
|
toc,
|
|
29
|
-
children
|
|
29
|
+
children
|
|
30
30
|
});
|
|
31
31
|
return wrapper(/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32
32
|
tocPopoverEnabled && (tocPopover ?? /* @__PURE__ */ jsxs(PageTOCPopover, { children: [/* @__PURE__ */ jsx(PageTOCPopoverTrigger, {}), /* @__PURE__ */ jsxs(PageTOCPopoverContent, { children: [
|
|
33
33
|
tocPopoverOptions.header,
|
|
34
|
-
/* @__PURE__ */ jsx(
|
|
34
|
+
/* @__PURE__ */ jsx(TOCScrollArea, { children: tocPopoverOptions.style === "clerk" ? /* @__PURE__ */ jsx(TOCItems$1, {}) : /* @__PURE__ */ jsx(TOCItems, {}) }),
|
|
35
35
|
tocPopoverOptions.footer
|
|
36
36
|
] })] })),
|
|
37
37
|
/* @__PURE__ */ jsxs("article", {
|
|
@@ -52,9 +52,9 @@ function DocsPage({ breadcrumb: { enabled: breadcrumbEnabled = true, component:
|
|
|
52
52
|
/* @__PURE__ */ jsxs("h3", {
|
|
53
53
|
id: "toc-title",
|
|
54
54
|
className: "inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground",
|
|
55
|
-
children: [/* @__PURE__ */ jsx(Text, { className: "size-4" }), /* @__PURE__ */ jsx(
|
|
55
|
+
children: [/* @__PURE__ */ jsx(Text, { className: "size-4" }), /* @__PURE__ */ jsx(I18nLabel, { label: "toc" })]
|
|
56
56
|
}),
|
|
57
|
-
/* @__PURE__ */ jsx(
|
|
57
|
+
/* @__PURE__ */ jsx(TOCScrollArea, { children: tocOptions.style === "clerk" ? /* @__PURE__ */ jsx(TOCItems$1, {}) : /* @__PURE__ */ jsx(TOCItems, {}) }),
|
|
58
58
|
tocOptions.footer
|
|
59
59
|
]
|
|
60
60
|
}))
|
|
@@ -70,7 +70,7 @@ function EditOnGitHub(props) {
|
|
|
70
70
|
size: "sm",
|
|
71
71
|
className: "gap-1.5 not-prose"
|
|
72
72
|
}), props.className),
|
|
73
|
-
children: props.children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Edit, { className: "size-3.5" }), /* @__PURE__ */ jsx(
|
|
73
|
+
children: props.children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Edit, { className: "size-3.5" }), /* @__PURE__ */ jsx(I18nLabel, { label: "editOnGithub" })] })
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
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 '@hanzo/docs-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-[1200px]' : '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';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAmFA,SAAgB,SAAS,EACvB,YAAY,EAAE,SAAS,oBAAoB,MAAM,WAAW,YAAY,GAAG,oBAAoB,EAAE,EACjG,QAAQ,EAAE,SAAS,eAAe,WAAW,eAAe,GAAG,gBAAgB,EAAE,EACjF,OAAO,OACP,uBAAuB,EACrB,SAAS,mBACT,WAAW,YACX,GAAG,sBACD,EAAE,EACN,gBAAgB,EAAE,SAAS,YAAY,WAAW,YAAY,GAAG,eAAe,EAAE,EAClF,MAAM,EAAE,EACR,UACA,aACgB;AAEhB,gBACE,CAAC,SAAS,IAAI,SAAS,KAAK,WAAW,WAAW,UAAa,WAAW,WAAW;AAEvF,uBACE,IAAI,SAAS,KACb,kBAAkB,WAAW,UAC7B,kBAAkB,WAAW;CAE/B,IAAI,WAAW,aAAwB;AAEvC,KAAI,cAAc,kBAChB,YAAW,aACT,oBAAC;EAAY,QAAQ,WAAW;EAAa;EAC1C;GACW;AAIlB,QAAO,QACL;EACG,sBACE,cACC,qBAAC,6BACC,oBAAC,0BAAwB,EACzB,qBAAC;GACE,kBAAkB;GACnB,oBAAC,2BACE,kBAAkB,UAAU,UAC3B,oBAACA,eAAoB,GAErB,oBAACC,aAAsB,GAEX;GACf,kBAAkB;MACG,IACT;EAErB,qBAAC;GACC,IAAG;GACH,aAAW;GACX,WAAW,GACT,gHACA,OAAO,mBAAmB,oCAC1B,UACD;;IAEA,sBAAsB,cAAc,oBAAC,kBAAe,GAAI,kBAAmB;IAC3E;IACA,kBAAkB,UAAU,iBAAiB,oBAAC,cAAW,GAAI,cAAe;;IACrE;EACT,eACE,cACC,qBAAC;GACC,IAAG;GACH,WAAU;;IAET,WAAW;IACZ,qBAAC;KACC,IAAG;KACH,WAAU;gBAEV,oBAAC,QAAK,WAAU,WAAW,EAC3B,oBAAC,aAAU,OAAM,QAAQ;MACtB;IACL,oBAAC,2BACE,WAAW,UAAU,UAAU,oBAACD,eAAoB,GAAG,oBAACC,aAAsB,GACjE;IACf,WAAW;;IACR;KAET,CACJ;;AAGH,SAAgB,aAAa,OAA4B;AACvD,QACE,oBAAC;EACC,QAAO;EACP,KAAI;EACJ,GAAI;EACJ,WAAW,GACT,eAAe;GACb,OAAO;GACP,MAAM;GACN,WAAW;GACZ,CAAC,EACF,MAAM,UACP;YAEA,MAAM,YACL,4CACE,oBAAC,QAAK,WAAU,aAAa,EAC7B,oBAAC,aAAU,OAAM,iBAAiB,IACjC;GAEH;;;;;AAOR,SAAgB,SAAS,EAAE,UAAU,WAAW,GAAG,SAAgC;AACjF,QACE,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,gBAAgB,UAAU;EACrD;GACG;;AAIV,SAAgB,gBAAgB,EAAE,UAAU,WAAW,GAAG,SAA8B;AAEtF,KAAI,aAAa,OAAW,QAAO;AAEnC,QACE,oBAAC;EAAE,GAAI;EAAO,WAAW,GAAG,yCAAyC,UAAU;EAC5E;GACC;;AAIR,SAAgB,UAAU,EAAE,UAAU,WAAW,GAAG,SAA+B;AACjF,QACE,oBAAC;EAAG,GAAI;EAAO,WAAW,GAAG,+BAA+B,UAAU;EACnE;GACE"}
|