@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,6 +1,6 @@
|
|
|
1
1
|
import { base_d_exports } from "./base.js";
|
|
2
|
-
import * as react_jsx_runtime14 from "react/jsx-runtime";
|
|
3
2
|
import { FC, ReactNode } from "react";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import * as PageTree from "@hanzo/docs-core/page-tree";
|
|
5
5
|
|
|
6
6
|
//#region src/components/sidebar/page-tree.d.ts
|
|
@@ -24,7 +24,7 @@ declare function createPageTreeRenderer({
|
|
|
24
24
|
SidebarFolderTrigger,
|
|
25
25
|
SidebarSeparator,
|
|
26
26
|
SidebarItem
|
|
27
|
-
}: InternalComponents): (components: Partial<SidebarPageTreeComponents>) =>
|
|
27
|
+
}: InternalComponents): (components: Partial<SidebarPageTreeComponents>) => react_jsx_runtime0.JSX.Element;
|
|
28
28
|
//#endregion
|
|
29
29
|
export { SidebarPageTreeComponents, createPageTreeRenderer };
|
|
30
30
|
//# sourceMappingURL=page-tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"
|
|
1
|
+
{"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"mappings":";;;;;;UAKiB,yBAAA;EACf,IAAA,EAAM,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,IAAA;EAAA;EAC1B,MAAA,EAAQ,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,MAAA;IAAQ,QAAA,EAAU,SAAA;EAAA;EAC9C,SAAA,EAAW,EAAA;IAAK,IAAA,EAAM,QAAA,CAAS,SAAA;EAAA;AAAA;AAAA,KAG5B,kBAAA,GAAqB,IAAA,QACjB,cAAA;AAAA,iBASO,sBAAA,CAAA;EACd,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;EACA;AAAA,GACC,kBAAA,IA6B+B,UAAA,EAAY,OAAA,CAAQ,yBAAA,MAA0B,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useTreeContext, useTreePath } from "../../contexts/tree.js";
|
|
2
|
+
import { Fragment, useMemo } from "react";
|
|
2
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Fragment as Fragment$1, useMemo } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/sidebar/page-tree.tsx
|
|
6
6
|
function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarSeparator, SidebarItem }) {
|
|
7
7
|
function PageTreeFolder({ item, children }) {
|
|
8
|
-
const path =
|
|
8
|
+
const path = useTreePath();
|
|
9
9
|
return /* @__PURE__ */ jsxs(SidebarFolder, {
|
|
10
10
|
collapsible: item.collapsible,
|
|
11
11
|
active: path.includes(item),
|
|
@@ -21,7 +21,7 @@ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFo
|
|
|
21
21
|
* Render sidebar items from page tree
|
|
22
22
|
*/
|
|
23
23
|
return function SidebarPageTree(components) {
|
|
24
|
-
const { root } =
|
|
24
|
+
const { root } = useTreeContext();
|
|
25
25
|
const { Separator, Item, Folder = PageTreeFolder } = components;
|
|
26
26
|
return useMemo(() => {
|
|
27
27
|
function renderSidebarList(items) {
|
|
@@ -43,7 +43,7 @@ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFo
|
|
|
43
43
|
}, item.url);
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
return /* @__PURE__ */ jsx(Fragment
|
|
46
|
+
return /* @__PURE__ */ jsx(Fragment, { children: renderSidebarList(root.children) }, root.$id);
|
|
47
47
|
}, [
|
|
48
48
|
Folder,
|
|
49
49
|
Item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-tree.js","names":[
|
|
1
|
+
{"version":3,"file":"page-tree.js","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":["import { useTreeContext, useTreePath } from '@/contexts/tree';\nimport { type FC, type ReactNode, useMemo, Fragment } from 'react';\nimport type * as PageTree from '@hanzo/docs-core/page-tree';\nimport type * as Base from './base';\n\nexport interface SidebarPageTreeComponents {\n Item: FC<{ item: PageTree.Item }>;\n Folder: FC<{ item: PageTree.Folder; children: ReactNode }>;\n Separator: FC<{ item: PageTree.Separator }>;\n}\n\ntype InternalComponents = Pick<\n typeof Base,\n | 'SidebarSeparator'\n | 'SidebarFolder'\n | 'SidebarFolderLink'\n | 'SidebarFolderContent'\n | 'SidebarFolderTrigger'\n | 'SidebarItem'\n>;\n\nexport function createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarSeparator,\n SidebarItem,\n}: InternalComponents) {\n function PageTreeFolder({ item, children }: { item: PageTree.Folder; children: ReactNode }) {\n const path = useTreePath();\n\n return (\n <SidebarFolder\n collapsible={item.collapsible}\n active={path.includes(item)}\n defaultOpen={item.defaultOpen}\n >\n {item.index ? (\n <SidebarFolderLink href={item.index.url} external={item.index.external}>\n {item.icon}\n {item.name}\n </SidebarFolderLink>\n ) : (\n <SidebarFolderTrigger>\n {item.icon}\n {item.name}\n </SidebarFolderTrigger>\n )}\n <SidebarFolderContent>{children}</SidebarFolderContent>\n </SidebarFolder>\n );\n }\n\n /**\n * Render sidebar items from page tree\n */\n return function SidebarPageTree(components: Partial<SidebarPageTreeComponents>) {\n const { root } = useTreeContext();\n const { Separator, Item, Folder = PageTreeFolder } = components;\n\n return useMemo(() => {\n function renderSidebarList(items: PageTree.Node[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') {\n if (Separator) return <Separator key={i} item={item} />;\n return (\n <SidebarSeparator key={i}>\n {item.icon}\n {item.name}\n </SidebarSeparator>\n );\n }\n\n if (item.type === 'folder') {\n return (\n <Folder key={i} item={item}>\n {renderSidebarList(item.children)}\n </Folder>\n );\n }\n\n if (Item) return <Item key={item.url} item={item} />;\n return (\n <SidebarItem key={item.url} href={item.url} external={item.external} icon={item.icon}>\n {item.name}\n </SidebarItem>\n );\n });\n }\n\n return <Fragment key={root.$id}>{renderSidebarList(root.children)}</Fragment>;\n }, [Folder, Item, Separator, root]);\n };\n}\n"],"mappings":";;;;;AAqBA,SAAgB,uBAAuB,EACrC,eACA,sBACA,mBACA,sBACA,kBACA,eACqB;CACrB,SAAS,eAAe,EAAE,MAAM,YAA4D;EAC1F,MAAM,OAAO,aAAa;AAE1B,SACE,qBAAC;GACC,aAAa,KAAK;GAClB,QAAQ,KAAK,SAAS,KAAK;GAC3B,aAAa,KAAK;cAEjB,KAAK,QACJ,qBAAC;IAAkB,MAAM,KAAK,MAAM;IAAK,UAAU,KAAK,MAAM;eAC3D,KAAK,MACL,KAAK;KACY,GAEpB,qBAAC,mCACE,KAAK,MACL,KAAK,QACe,EAEzB,oBAAC,wBAAsB,WAAgC;IACzC;;;;;AAOpB,QAAO,SAAS,gBAAgB,YAAgD;EAC9E,MAAM,EAAE,SAAS,gBAAgB;EACjC,MAAM,EAAE,WAAW,MAAM,SAAS,mBAAmB;AAErD,SAAO,cAAc;GACnB,SAAS,kBAAkB,OAAwB;AACjD,WAAO,MAAM,KAAK,MAAM,MAAM;AAC5B,SAAI,KAAK,SAAS,aAAa;AAC7B,UAAI,UAAW,QAAO,oBAAC,aAAwB,QAAT,EAAiB;AACvD,aACE,qBAAC,+BACE,KAAK,MACL,KAAK,SAFe,EAGJ;;AAIvB,SAAI,KAAK,SAAS,SAChB,QACE,oBAAC;MAAqB;gBACnB,kBAAkB,KAAK,SAAS;QADtB,EAEJ;AAIb,SAAI,KAAM,QAAO,oBAAC,QAA0B,QAAhB,KAAK,IAAmB;AACpD,YACE,oBAAC;MAA2B,MAAM,KAAK;MAAK,UAAU,KAAK;MAAU,MAAM,KAAK;gBAC7E,KAAK;QADU,KAAK,IAET;MAEhB;;AAGJ,UAAO,oBAAC,sBAAyB,kBAAkB,KAAK,SAAS,IAA3C,KAAK,IAAkD;KAC5E;GAAC;GAAQ;GAAM;GAAW;GAAK,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SidebarTab } from "./index.js";
|
|
2
|
-
import * as react_jsx_runtime58 from "react/jsx-runtime";
|
|
3
2
|
import { ComponentProps, ReactNode } from "react";
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/sidebar/tabs/dropdown.d.ts
|
|
6
6
|
interface SidebarTabWithProps extends SidebarTab {
|
|
@@ -13,8 +13,8 @@ declare function SidebarTabsDropdown({
|
|
|
13
13
|
}: {
|
|
14
14
|
placeholder?: ReactNode;
|
|
15
15
|
options: SidebarTabWithProps[];
|
|
16
|
-
} & ComponentProps<'button'>):
|
|
17
|
-
declare function isTabActive(tab: SidebarTab, pathname: string):
|
|
16
|
+
} & ComponentProps<'button'>): react_jsx_runtime0.JSX.Element;
|
|
17
|
+
declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
|
|
18
18
|
//#endregion
|
|
19
19
|
export { SidebarTabWithProps, SidebarTabsDropdown, isTabActive };
|
|
20
20
|
//# sourceMappingURL=dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"
|
|
1
|
+
{"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"mappings":";;;;;UAWiB,mBAAA,SAA4B,UAAA;EAC3C,KAAA,GAAQ,cAAA;AAAA;AAAA,iBAGM,mBAAA,CAAA;EACd,OAAA;EACA,WAAA;EAAA,GACG;AAAA;EAEH,WAAA,GAAc,SAAA;EACd,OAAA,EAAS,mBAAA;AAAA,IACP,cAAA,aAAwB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAgFZ,WAAA,CAAY,GAAA,EAAK,UAAA,EAAY,QAAA"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { cn } from "../../../utils/cn.js";
|
|
4
|
+
import { isActive, normalize } from "../../../utils/urls.js";
|
|
3
5
|
import { useSidebar } from "../base.js";
|
|
4
6
|
import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
|
|
5
|
-
import
|
|
7
|
+
import { useMemo, useState } from "react";
|
|
6
8
|
import { usePathname } from "@hanzo/docs-core/framework";
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import Link from "@hanzo/docs-core/link";
|
|
9
11
|
import { Check, ChevronsUpDown } from "lucide-react";
|
|
10
|
-
import { useMemo, useState } from "react";
|
|
11
|
-
import { isActive, normalize } from "@hanzo/docs-radix-ui/urls";
|
|
12
12
|
|
|
13
13
|
//#region src/components/sidebar/tabs/dropdown.tsx
|
|
14
14
|
function SidebarTabsDropdown({ options, placeholder, ...props }) {
|
|
@@ -16,13 +16,13 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
|
|
|
16
16
|
const { closeOnRedirect } = useSidebar();
|
|
17
17
|
const pathname = usePathname();
|
|
18
18
|
const selected = useMemo(() => {
|
|
19
|
-
return options.findLast((item
|
|
19
|
+
return options.findLast((item) => isTabActive(item, pathname));
|
|
20
20
|
}, [options, pathname]);
|
|
21
21
|
const onClick = () => {
|
|
22
22
|
closeOnRedirect.current = false;
|
|
23
23
|
setOpen(false);
|
|
24
24
|
};
|
|
25
|
-
const item = selected ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
25
|
+
const item = selected ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
26
26
|
className: "size-9 shrink-0 empty:hidden md:size-5",
|
|
27
27
|
children: selected.icon
|
|
28
28
|
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
@@ -37,33 +37,33 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
|
|
|
37
37
|
onOpenChange: setOpen,
|
|
38
38
|
children: [item && /* @__PURE__ */ jsxs(PopoverTrigger, {
|
|
39
39
|
...props,
|
|
40
|
-
className: cn("flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-
|
|
40
|
+
className: cn("flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground", props.className),
|
|
41
41
|
children: [item, /* @__PURE__ */ jsx(ChevronsUpDown, { className: "shrink-0 ms-auto size-4 text-fd-muted-foreground" })]
|
|
42
42
|
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
43
43
|
className: "flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container",
|
|
44
|
-
children: options.map((item
|
|
45
|
-
const isActive
|
|
46
|
-
if (!isActive
|
|
44
|
+
children: options.map((item) => {
|
|
45
|
+
const isActive = selected && item.url === selected.url;
|
|
46
|
+
if (!isActive && item.unlisted) return;
|
|
47
47
|
return /* @__PURE__ */ jsxs(Link, {
|
|
48
|
-
href: item
|
|
48
|
+
href: item.url,
|
|
49
49
|
onClick,
|
|
50
|
-
...item
|
|
51
|
-
className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item
|
|
50
|
+
...item.props,
|
|
51
|
+
className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item.props?.className),
|
|
52
52
|
children: [
|
|
53
53
|
/* @__PURE__ */ jsx("div", {
|
|
54
54
|
className: "shrink-0 size-9 md:mb-auto md:size-5 empty:hidden",
|
|
55
|
-
children: item
|
|
55
|
+
children: item.icon
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
58
58
|
className: "text-sm font-medium leading-none",
|
|
59
|
-
children: item
|
|
59
|
+
children: item.title
|
|
60
60
|
}), /* @__PURE__ */ jsx("p", {
|
|
61
61
|
className: "text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden",
|
|
62
|
-
children: item
|
|
62
|
+
children: item.description
|
|
63
63
|
})] }),
|
|
64
|
-
/* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive
|
|
64
|
+
/* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive && "invisible") })
|
|
65
65
|
]
|
|
66
|
-
}, item
|
|
66
|
+
}, item.url);
|
|
67
67
|
})
|
|
68
68
|
})]
|
|
69
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.js","names":[
|
|
1
|
+
{"version":3,"file":"dropdown.js","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":["'use client';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { type ComponentProps, type ReactNode, useMemo, useState } from 'react';\nimport Link from '@hanzo/docs-core/link';\nimport { usePathname } from '@hanzo/docs-core/framework';\nimport { cn } from '@/utils/cn';\nimport { normalize, isActive } from '@/utils/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\n ...props\n}: {\n placeholder?: ReactNode;\n options: SidebarTabWithProps[];\n} & ComponentProps<'button'>) {\n const [open, setOpen] = useState(false);\n const { closeOnRedirect } = useSidebar();\n const pathname = usePathname();\n\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-open:bg-fd-accent data-open:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--anchor-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\n if (!isActive && item.unlisted) return;\n\n return (\n <Link\n key={item.url}\n href={item.url}\n onClick={onClick}\n {...item.props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground',\n item.props?.className,\n )}\n >\n <div className=\"shrink-0 size-9 md:mb-auto md:size-5 empty:hidden\">{item.icon}</div>\n <div>\n <p className=\"text-sm font-medium leading-none\">{item.title}</p>\n <p className=\"text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden\">\n {item.description}\n </p>\n </div>\n\n <Check\n className={cn(\n 'shrink-0 ms-auto size-3.5 text-fd-primary',\n !isActive && 'invisible',\n )}\n />\n </Link>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function isTabActive(tab: SidebarTab, pathname: string) {\n if (tab.urls) return tab.urls.has(normalize(pathname));\n\n return isActive(tab.url, pathname, true);\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,SAAS,YAAY,MAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,8CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,4MACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,SAAS;IACrB,MAAM,WAAW,YAAY,KAAK,QAAQ,SAAS;AACnD,QAAI,CAAC,YAAY,KAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAM,KAAK;KACF;KACT,GAAI,KAAK;KACT,WAAW,GACT,+FACA,KAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqD,KAAK;QAAW;MACpF,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoC,KAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACV,KAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAAC,YAAY,YACd,GACD;;OAtBG,KAAK,IAuBL;KAET;IACa;GACT;;AAId,SAAgB,YAAY,KAAiB,UAAkB;AAC7D,KAAI,IAAI,KAAM,QAAO,IAAI,KAAK,IAAI,UAAU,SAAS,CAAC;AAEtD,QAAO,SAAS,IAAI,KAAK,UAAU,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAIE,GAAA;EAEA,IAAA,GAAO,SAAA;EACP,KAAA,EAAO,SAAA;EACP,WAAA,GAAc,SAAA;EAKP;;;EAAP,IAAA,GAAO,GAAA;EACP,QAAA;AAAA;AAAA,UAGe,qBAAA;EACf,SAAA,IAAa,MAAA,EAAQ,UAAA,EAAY,IAAA,EAAM,QAAA,CAAS,MAAA,KAAW,UAAA;AAAA;AAAA,iBAgB7C,cAAA,CACd,IAAA,EAAM,QAAA,CAAS,IAAA;EACb;AAAA,IAAgC,qBAAA,GACjC,UAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import * as react_jsx_runtime99 from "react/jsx-runtime";
|
|
2
1
|
import { ReactNode } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/steps.d.ts
|
|
5
5
|
declare function Steps({
|
|
6
6
|
children
|
|
7
7
|
}: {
|
|
8
8
|
children: ReactNode;
|
|
9
|
-
}):
|
|
9
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
10
10
|
declare function Step({
|
|
11
11
|
children
|
|
12
12
|
}: {
|
|
13
13
|
children: ReactNode;
|
|
14
|
-
}):
|
|
14
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { Step, Steps };
|
|
17
17
|
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","names":[],"sources":["../../src/components/steps.tsx"],"
|
|
1
|
+
{"version":3,"file":"steps.d.ts","names":[],"sources":["../../src/components/steps.tsx"],"mappings":";;;;iBAEgB,KAAA,CAAA;EAAQ;AAAA;EAAc,QAAA,EAAU,SAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI3C,IAAA,CAAA;EAAO;AAAA;EAAc,QAAA,EAAU,SAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Tabs as Tabs$1, TabsContent as TabsContent$1 } from "./ui/tabs.js";
|
|
2
|
-
import * as react_jsx_runtime102 from "react/jsx-runtime";
|
|
3
2
|
import * as React from "react";
|
|
4
3
|
import { ComponentProps, ReactNode } from "react";
|
|
4
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
5
|
import * as _base_ui_react0 from "@base-ui/react";
|
|
6
6
|
|
|
7
7
|
//#region src/components/tabs.d.ts
|
|
@@ -31,7 +31,7 @@ declare function Tabs({
|
|
|
31
31
|
defaultIndex,
|
|
32
32
|
defaultValue,
|
|
33
33
|
...props
|
|
34
|
-
}: TabsProps):
|
|
34
|
+
}: TabsProps): react_jsx_runtime0.JSX.Element;
|
|
35
35
|
interface TabProps extends Omit<ComponentProps<typeof TabsContent$1>, 'value'> {
|
|
36
36
|
/**
|
|
37
37
|
* Value of tab, detect from index if unspecified.
|
|
@@ -41,12 +41,12 @@ interface TabProps extends Omit<ComponentProps<typeof TabsContent$1>, 'value'> {
|
|
|
41
41
|
declare function Tab({
|
|
42
42
|
value,
|
|
43
43
|
...props
|
|
44
|
-
}: TabProps):
|
|
44
|
+
}: TabProps): react_jsx_runtime0.JSX.Element;
|
|
45
45
|
declare function TabsContent({
|
|
46
46
|
value,
|
|
47
47
|
className,
|
|
48
48
|
...props
|
|
49
|
-
}: ComponentProps<typeof TabsContent$1>):
|
|
49
|
+
}: ComponentProps<typeof TabsContent$1>): react_jsx_runtime0.JSX.Element;
|
|
50
50
|
//#endregion
|
|
51
51
|
export { Tab, TabProps, Tabs, TabsContent, TabsList, TabsProps, TabsTrigger };
|
|
52
52
|
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/components/tabs.tsx"],"
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/components/tabs.tsx"],"mappings":";;;;;;;UAkBiB,SAAA,SAAkB,IAAA,CACjC,cAAA,QAAsB,MAAA;;;;EAMtB,KAAA;EAPyB;;;;;EAczB,YAAA;EAdqC;;;EAmBrC,KAAA,GAAQ,SAAA;AAAA;AAAA,cAcG,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CAcnB,eAAA,CAdmB,aAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA,YAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,cAiBR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,IAAA,CActB,eAAA,CAdsB,YAAA,WAAA,KAAA,CAAA,aAAA,CAAA,WAAA,YAAA,KAAA,CAAA,aAAA,CAAA,WAAA;AAAA,iBAiBR,IAAA,CAAA;EACd,GAAA;EACA,SAAA;EACA,KAAA;EACA,KAAA;EACA,YAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UAqCK,QAAA,SAAiB,IAAA,CAAK,cAAA,QAAsB,aAAA;EA7FnD;;;EAiGR,KAAA;AAAA;AAAA,iBAGc,GAAA,CAAA;EAAM,KAAA;EAAA,GAAU;AAAA,GAAS,QAAA,GAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBjC,WAAA,CAAA;EACd,KAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,aAAA,IAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/components/tabs.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { cn } from "../utils/cn.js";
|
|
3
4
|
import { Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "./ui/tabs.js";
|
|
4
|
-
import { cn } from "@hanzo/docs-ui/cn";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
5
|
import * as React from "react";
|
|
7
6
|
import { createContext, useContext, useEffect, useId, useMemo, useState } from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
|
|
9
9
|
//#region src/components/tabs.tsx
|
|
10
10
|
const TabsContext = createContext(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":["Unstyled.TabsList","Unstyled.TabsTrigger","Unstyled.Tabs","Unstyled.TabsContent"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useState,\n} from 'react';\nimport { cn } from '
|
|
1
|
+
{"version":3,"file":"tabs.js","names":["Unstyled.TabsList","Unstyled.TabsTrigger","Unstyled.Tabs","Unstyled.TabsContent"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useId,\n useMemo,\n useState,\n} from 'react';\nimport { cn } from '@/utils/cn';\nimport * as Unstyled from './ui/tabs';\n\ntype CollectionKey = string | symbol;\n\nexport interface TabsProps extends Omit<\n ComponentProps<typeof Unstyled.Tabs>,\n 'value' | 'onValueChange'\n> {\n /**\n * Use simple mode instead of advanced usage as documented in https://radix-ui.com/primitives/docs/components/tabs.\n */\n items?: string[];\n\n /**\n * Shortcut for `defaultValue` when `items` is provided.\n *\n * @defaultValue 0\n */\n defaultIndex?: number;\n\n /**\n * Additional label in tabs list when `items` is provided.\n */\n label?: ReactNode;\n}\n\nconst TabsContext = createContext<{\n items?: string[];\n collection: CollectionKey[];\n} | null>(null);\n\nfunction useTabContext() {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error('You must wrap your component in <Tabs>');\n return ctx;\n}\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsList>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsList>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsList\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'flex gap-3.5 text-fd-secondary-foreground overflow-x-auto px-4 not-prose',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsList.displayName = 'TabsList';\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof Unstyled.TabsTrigger>,\n React.ComponentPropsWithoutRef<typeof Unstyled.TabsTrigger>\n>(({ className, ...props }, ref) => (\n <Unstyled.TabsTrigger\n ref={ref}\n {...props}\n className={(s) =>\n cn(\n 'inline-flex items-center gap-2 whitespace-nowrap text-fd-muted-foreground border-b border-transparent py-2 text-sm font-medium transition-colors [&_svg]:size-4 hover:text-fd-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active]:border-fd-primary data-[active]:text-fd-primary',\n typeof className === 'function' ? className(s) : className,\n )\n }\n />\n));\nTabsTrigger.displayName = 'TabsTrigger';\n\nexport function Tabs({\n ref,\n className,\n items,\n label,\n defaultIndex = 0,\n defaultValue = items ? escapeValue(items[defaultIndex]) : undefined,\n ...props\n}: TabsProps) {\n const [value, setValue] = useState(defaultValue);\n const collection = useMemo<CollectionKey[]>(() => [], []);\n\n return (\n <Unstyled.Tabs\n ref={ref}\n className={(s) =>\n cn(\n 'flex flex-col overflow-hidden rounded-xl border bg-fd-secondary my-4',\n typeof className === 'function' ? className(s) : className,\n )\n }\n value={value}\n onValueChange={(v: string) => {\n if (items && !items.some((item) => escapeValue(item) === v)) return;\n setValue(v);\n }}\n {...props}\n >\n {items && (\n <TabsList>\n {label && <span className=\"text-sm font-medium my-auto me-auto\">{label}</span>}\n {items.map((item) => (\n <TabsTrigger key={item} value={escapeValue(item)}>\n {item}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n <TabsContext.Provider value={useMemo(() => ({ items, collection }), [collection, items])}>\n {props.children}\n </TabsContext.Provider>\n </Unstyled.Tabs>\n );\n}\n\nexport interface TabProps extends Omit<ComponentProps<typeof Unstyled.TabsContent>, 'value'> {\n /**\n * Value of tab, detect from index if unspecified.\n */\n value?: string;\n}\n\nexport function Tab({ value, ...props }: TabProps) {\n const { items } = useTabContext();\n const resolved =\n value ??\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `value` is not supposed to change\n items?.at(useCollectionIndex());\n if (!resolved)\n throw new Error(\n 'Failed to resolve tab `value`, please pass a `value` prop to the Tab component.',\n );\n\n return (\n <TabsContent value={escapeValue(resolved)} {...props}>\n {props.children}\n </TabsContent>\n );\n}\n\nexport function TabsContent({\n value,\n className,\n ...props\n}: ComponentProps<typeof Unstyled.TabsContent>) {\n return (\n <Unstyled.TabsContent\n value={value}\n keepMounted\n className={(s) =>\n cn(\n 'p-4 text-[0.9375rem] bg-fd-background rounded-xl outline-none prose-no-margin data-[inactive]:hidden [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none',\n typeof className === 'function' ? className(s) : className,\n )\n }\n {...props}\n >\n {props.children}\n </Unstyled.TabsContent>\n );\n}\n\n/**\n * Inspired by Headless UI.\n *\n * Return the index of children, this is made possible by registering the order of render from children using React context.\n * This is supposed by work with pre-rendering & pure client-side rendering.\n */\nfunction useCollectionIndex() {\n const key = useId();\n const { collection } = useTabContext();\n\n useEffect(() => {\n return () => {\n const idx = collection.indexOf(key);\n if (idx !== -1) collection.splice(idx, 1);\n };\n }, [key, collection]);\n\n if (!collection.includes(key)) collection.push(key);\n return collection.indexOf(key);\n}\n\n/**\n * only escape whitespaces in values in simple mode\n */\nfunction escapeValue(v: string): string {\n return v.toLowerCase().replace(/\\s/, '-');\n}\n"],"mappings":";;;;;;;;;AAwCA,MAAM,cAAc,cAGV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,WAAW,YAAY;AACnC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAW,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACA;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,4EACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,SAAS,cAAc;AAEvB,MAAa,cAAc,MAAM,YAG9B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACC;CACM;CACL,GAAI;CACJ,YAAY,MACV,GACE,kTACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,CACF;AACF,YAAY,cAAc;AAE1B,SAAgB,KAAK,EACnB,KACA,WACA,OACA,OACA,eAAe,GACf,eAAe,QAAQ,YAAY,MAAM,cAAc,GAAG,QAC1D,GAAG,SACS;CACZ,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,aAAa,cAA+B,EAAE,EAAE,EAAE,CAAC;AAEzD,QACE,qBAACC;EACM;EACL,YAAY,MACV,GACE,wEACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEI;EACP,gBAAgB,MAAc;AAC5B,OAAI,SAAS,CAAC,MAAM,MAAM,SAAS,YAAY,KAAK,KAAK,EAAE,CAAE;AAC7D,YAAS,EAAE;;EAEb,GAAI;aAEH,SACC,qBAAC,uBACE,SAAS,oBAAC;GAAK,WAAU;aAAuC;IAAa,EAC7E,MAAM,KAAK,SACV,oBAAC;GAAuB,OAAO,YAAY,KAAK;aAC7C;KADe,KAEJ,CACd,IACO,EAEb,oBAAC,YAAY;GAAS,OAAO,eAAe;IAAE;IAAO;IAAY,GAAG,CAAC,YAAY,MAAM,CAAC;aACrF,MAAM;IACc;GACT;;AAWpB,SAAgB,IAAI,EAAE,OAAO,GAAG,SAAmB;CACjD,MAAM,EAAE,UAAU,eAAe;CACjC,MAAM,WACJ,SAEA,OAAO,GAAG,oBAAoB,CAAC;AACjC,KAAI,CAAC,SACH,OAAM,IAAI,MACR,kFACD;AAEH,QACE,oBAAC;EAAY,OAAO,YAAY,SAAS;EAAE,GAAI;YAC5C,MAAM;GACK;;AAIlB,SAAgB,YAAY,EAC1B,OACA,WACA,GAAG,SAC2C;AAC9C,QACE,oBAACC;EACQ;EACP;EACA,YAAY,MACV,GACE,qKACA,OAAO,cAAc,aAAa,UAAU,EAAE,GAAG,UAClD;EAEH,GAAI;YAEH,MAAM;GACc;;;;;;;;AAU3B,SAAS,qBAAqB;CAC5B,MAAM,MAAM,OAAO;CACnB,MAAM,EAAE,eAAe,eAAe;AAEtC,iBAAgB;AACd,eAAa;GACX,MAAM,MAAM,WAAW,QAAQ,IAAI;AACnC,OAAI,QAAQ,GAAI,YAAW,OAAO,KAAK,EAAE;;IAE1C,CAAC,KAAK,WAAW,CAAC;AAErB,KAAI,CAAC,WAAW,SAAS,IAAI,CAAE,YAAW,KAAK,IAAI;AACnD,QAAO,WAAW,QAAQ,IAAI;;;;;AAMhC,SAAS,YAAY,GAAmB;AACtC,QAAO,EAAE,aAAa,CAAC,QAAQ,MAAM,IAAI"}
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/toc/clerk.d.ts
|
|
5
|
+
declare function TOCItems({
|
|
6
|
+
ref,
|
|
7
|
+
className,
|
|
8
|
+
...props
|
|
9
|
+
}: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { TOCItems };
|
|
12
|
+
//# sourceMappingURL=clerk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clerk.d.ts","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"mappings":";;;;iBAQgB,QAAA,CAAA;EAAW,GAAA;EAAK,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,12 +1,112 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { useI18n } from "../../contexts/i18n.js";
|
|
4
|
+
import { cn } from "../../utils/cn.js";
|
|
5
|
+
import { mergeRefs } from "../../utils/merge-refs.js";
|
|
6
|
+
import { TocThumb, useTOCItems } from "./index.js";
|
|
7
|
+
import { useEffect, useRef, useState } from "react";
|
|
8
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import * as Primitive from "@hanzo/docs-core/toc";
|
|
4
10
|
|
|
5
11
|
//#region src/components/toc/clerk.tsx
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
function TOCItems({ ref, className, ...props }) {
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const items = useTOCItems();
|
|
15
|
+
const { text } = useI18n();
|
|
16
|
+
const [svg, setSvg] = useState();
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!containerRef.current) return;
|
|
19
|
+
const container = containerRef.current;
|
|
20
|
+
function onResize() {
|
|
21
|
+
if (container.clientHeight === 0) return;
|
|
22
|
+
let w = 0, h = 0;
|
|
23
|
+
const d = [];
|
|
24
|
+
for (let i = 0; i < items.length; i++) {
|
|
25
|
+
const element = container.querySelector(`a[href="#${items[i].url.slice(1)}"]`);
|
|
26
|
+
if (!element) continue;
|
|
27
|
+
const styles = getComputedStyle(element);
|
|
28
|
+
const offset = getLineOffset(items[i].depth) + 1, top = element.offsetTop + parseFloat(styles.paddingTop), bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);
|
|
29
|
+
w = Math.max(offset, w);
|
|
30
|
+
h = Math.max(h, bottom);
|
|
31
|
+
d.push(`${i === 0 ? "M" : "L"}${offset} ${top}`);
|
|
32
|
+
d.push(`L${offset} ${bottom}`);
|
|
33
|
+
}
|
|
34
|
+
setSvg({
|
|
35
|
+
path: d.join(" "),
|
|
36
|
+
width: w + 1,
|
|
37
|
+
height: h
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const observer = new ResizeObserver(onResize);
|
|
41
|
+
onResize();
|
|
42
|
+
observer.observe(container);
|
|
43
|
+
return () => {
|
|
44
|
+
observer.disconnect();
|
|
45
|
+
};
|
|
46
|
+
}, [items]);
|
|
47
|
+
if (items.length === 0) return /* @__PURE__ */ jsx("div", {
|
|
48
|
+
className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
|
|
49
|
+
children: text.tocNoHeadings
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [svg && /* @__PURE__ */ jsx("div", {
|
|
52
|
+
className: "absolute start-0 top-0 rtl:-scale-x-100",
|
|
53
|
+
style: {
|
|
54
|
+
width: svg.width,
|
|
55
|
+
height: svg.height,
|
|
56
|
+
maskImage: `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${svg.width} ${svg.height}"><path d="${svg.path}" stroke="black" stroke-width="1" fill="none" /></svg>`)}")`
|
|
57
|
+
},
|
|
58
|
+
children: /* @__PURE__ */ jsx(TocThumb, {
|
|
59
|
+
containerRef,
|
|
60
|
+
className: "absolute w-full top-(--fd-top) h-(--fd-height) bg-fd-primary transition-[top,height]"
|
|
61
|
+
})
|
|
62
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
63
|
+
ref: mergeRefs(containerRef, ref),
|
|
64
|
+
className: cn("flex flex-col", className),
|
|
65
|
+
...props,
|
|
66
|
+
children: items.map((item, i) => /* @__PURE__ */ jsx(TOCItem, {
|
|
67
|
+
item,
|
|
68
|
+
upper: items[i - 1]?.depth,
|
|
69
|
+
lower: items[i + 1]?.depth
|
|
70
|
+
}, item.url))
|
|
71
|
+
})] });
|
|
72
|
+
}
|
|
73
|
+
function getItemOffset(depth) {
|
|
74
|
+
if (depth <= 2) return 14;
|
|
75
|
+
if (depth === 3) return 26;
|
|
76
|
+
return 36;
|
|
77
|
+
}
|
|
78
|
+
function getLineOffset(depth) {
|
|
79
|
+
return depth >= 3 ? 10 : 0;
|
|
80
|
+
}
|
|
81
|
+
function TOCItem({ item, upper = item.depth, lower = item.depth }) {
|
|
82
|
+
const offset = getLineOffset(item.depth), upperOffset = getLineOffset(upper), lowerOffset = getLineOffset(lower);
|
|
83
|
+
return /* @__PURE__ */ jsxs(Primitive.TOCItem, {
|
|
84
|
+
href: item.url,
|
|
85
|
+
style: { paddingInlineStart: getItemOffset(item.depth) },
|
|
86
|
+
className: "prose relative py-1.5 text-sm text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",
|
|
87
|
+
children: [
|
|
88
|
+
offset !== upperOffset && /* @__PURE__ */ jsx("svg", {
|
|
89
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
90
|
+
viewBox: "0 0 16 16",
|
|
91
|
+
className: "absolute -top-1.5 start-0 size-4 rtl:-scale-x-100",
|
|
92
|
+
children: /* @__PURE__ */ jsx("line", {
|
|
93
|
+
x1: upperOffset,
|
|
94
|
+
y1: "0",
|
|
95
|
+
x2: offset,
|
|
96
|
+
y2: "12",
|
|
97
|
+
className: "stroke-fd-foreground/10",
|
|
98
|
+
strokeWidth: "1"
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ jsx("div", {
|
|
102
|
+
className: cn("absolute inset-y-0 w-px bg-fd-foreground/10", offset !== upperOffset && "top-1.5", offset !== lowerOffset && "bottom-1.5"),
|
|
103
|
+
style: { insetInlineStart: offset }
|
|
104
|
+
}),
|
|
105
|
+
item.title
|
|
106
|
+
]
|
|
107
|
+
});
|
|
108
|
+
}
|
|
9
109
|
|
|
10
110
|
//#endregion
|
|
11
|
-
export {
|
|
111
|
+
export { TOCItems };
|
|
12
112
|
//# sourceMappingURL=clerk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clerk.js","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"clerk.js","names":[],"sources":["../../../src/components/toc/clerk.tsx"],"sourcesContent":["'use client';\nimport * as Primitive from '@hanzo/docs-core/toc';\nimport { type ComponentProps, useEffect, useRef, useState } from 'react';\nimport { cn } from '@/utils/cn';\nimport { TocThumb, useTOCItems } from '.';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { useI18n } from '@/contexts/i18n';\n\nexport function TOCItems({ ref, className, ...props }: ComponentProps<'div'>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const items = useTOCItems();\n const { text } = useI18n();\n\n const [svg, setSvg] = useState<{\n path: string;\n width: number;\n height: number;\n }>();\n\n useEffect(() => {\n if (!containerRef.current) return;\n const container = containerRef.current;\n\n function onResize(): void {\n if (container.clientHeight === 0) return;\n let w = 0,\n h = 0;\n const d: string[] = [];\n for (let i = 0; i < items.length; i++) {\n const element: HTMLElement | null = container.querySelector(\n `a[href=\"#${items[i].url.slice(1)}\"]`,\n );\n if (!element) continue;\n\n const styles = getComputedStyle(element);\n const offset = getLineOffset(items[i].depth) + 1,\n top = element.offsetTop + parseFloat(styles.paddingTop),\n bottom = element.offsetTop + element.clientHeight - parseFloat(styles.paddingBottom);\n\n w = Math.max(offset, w);\n h = Math.max(h, bottom);\n\n d.push(`${i === 0 ? 'M' : 'L'}${offset} ${top}`);\n d.push(`L${offset} ${bottom}`);\n }\n\n setSvg({\n path: d.join(' '),\n width: w + 1,\n height: h,\n });\n }\n\n const observer = new ResizeObserver(onResize);\n onResize();\n\n observer.observe(container);\n return () => {\n observer.disconnect();\n };\n }, [items]);\n\n if (items.length === 0)\n return (\n <div className=\"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground\">\n {text.tocNoHeadings}\n </div>\n );\n\n return (\n <>\n {svg && (\n <div\n className=\"absolute start-0 top-0 rtl:-scale-x-100\"\n style={{\n width: svg.width,\n height: svg.height,\n maskImage: `url(\"data:image/svg+xml,${\n // Inline SVG\n encodeURIComponent(\n `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${svg.width} ${svg.height}\"><path d=\"${svg.path}\" stroke=\"black\" stroke-width=\"1\" fill=\"none\" /></svg>`,\n )\n }\")`,\n }}\n >\n <TocThumb\n containerRef={containerRef}\n className=\"absolute w-full top-(--fd-top) h-(--fd-height) bg-fd-primary transition-[top,height]\"\n />\n </div>\n )}\n <div ref={mergeRefs(containerRef, ref)} className={cn('flex flex-col', className)} {...props}>\n {items.map((item, i) => (\n <TOCItem\n key={item.url}\n item={item}\n upper={items[i - 1]?.depth}\n lower={items[i + 1]?.depth}\n />\n ))}\n </div>\n </>\n );\n}\n\nfunction getItemOffset(depth: number): number {\n if (depth <= 2) return 14;\n if (depth === 3) return 26;\n return 36;\n}\n\nfunction getLineOffset(depth: number): number {\n return depth >= 3 ? 10 : 0;\n}\n\nfunction TOCItem({\n item,\n upper = item.depth,\n lower = item.depth,\n}: {\n item: Primitive.TOCItemType;\n upper?: number;\n lower?: number;\n}) {\n const offset = getLineOffset(item.depth),\n upperOffset = getLineOffset(upper),\n lowerOffset = getLineOffset(lower);\n\n return (\n <Primitive.TOCItem\n href={item.url}\n style={{\n paddingInlineStart: getItemOffset(item.depth),\n }}\n className=\"prose relative py-1.5 text-sm text-fd-muted-foreground hover:text-fd-accent-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary\"\n >\n {offset !== upperOffset && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n className=\"absolute -top-1.5 start-0 size-4 rtl:-scale-x-100\"\n >\n <line\n x1={upperOffset}\n y1=\"0\"\n x2={offset}\n y2=\"12\"\n className=\"stroke-fd-foreground/10\"\n strokeWidth=\"1\"\n />\n </svg>\n )}\n <div\n className={cn(\n 'absolute inset-y-0 w-px bg-fd-foreground/10',\n offset !== upperOffset && 'top-1.5',\n offset !== lowerOffset && 'bottom-1.5',\n )}\n style={{\n insetInlineStart: offset,\n }}\n />\n {item.title}\n </Primitive.TOCItem>\n );\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,SAAS,EAAE,KAAK,WAAW,GAAG,SAAgC;CAC5E,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,QAAQ,aAAa;CAC3B,MAAM,EAAE,SAAS,SAAS;CAE1B,MAAM,CAAC,KAAK,UAAU,UAIlB;AAEJ,iBAAgB;AACd,MAAI,CAAC,aAAa,QAAS;EAC3B,MAAM,YAAY,aAAa;EAE/B,SAAS,WAAiB;AACxB,OAAI,UAAU,iBAAiB,EAAG;GAClC,IAAI,IAAI,GACN,IAAI;GACN,MAAM,IAAc,EAAE;AACtB,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;IACrC,MAAM,UAA8B,UAAU,cAC5C,YAAY,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC,IACnC;AACD,QAAI,CAAC,QAAS;IAEd,MAAM,SAAS,iBAAiB,QAAQ;IACxC,MAAM,SAAS,cAAc,MAAM,GAAG,MAAM,GAAG,GAC7C,MAAM,QAAQ,YAAY,WAAW,OAAO,WAAW,EACvD,SAAS,QAAQ,YAAY,QAAQ,eAAe,WAAW,OAAO,cAAc;AAEtF,QAAI,KAAK,IAAI,QAAQ,EAAE;AACvB,QAAI,KAAK,IAAI,GAAG,OAAO;AAEvB,MAAE,KAAK,GAAG,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,MAAM;AAChD,MAAE,KAAK,IAAI,OAAO,GAAG,SAAS;;AAGhC,UAAO;IACL,MAAM,EAAE,KAAK,IAAI;IACjB,OAAO,IAAI;IACX,QAAQ;IACT,CAAC;;EAGJ,MAAM,WAAW,IAAI,eAAe,SAAS;AAC7C,YAAU;AAEV,WAAS,QAAQ,UAAU;AAC3B,eAAa;AACX,YAAS,YAAY;;IAEtB,CAAC,MAAM,CAAC;AAEX,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YACZ,KAAK;GACF;AAGV,QACE,8CACG,OACC,oBAAC;EACC,WAAU;EACV,OAAO;GACL,OAAO,IAAI;GACX,QAAQ,IAAI;GACZ,WAAW,2BAET,mBACE,wDAAwD,IAAI,MAAM,GAAG,IAAI,OAAO,aAAa,IAAI,KAAK,wDACvG,CACF;GACF;YAED,oBAAC;GACe;GACd,WAAU;IACV;GACE,EAER,oBAAC;EAAI,KAAK,UAAU,cAAc,IAAI;EAAE,WAAW,GAAG,iBAAiB,UAAU;EAAE,GAAI;YACpF,MAAM,KAAK,MAAM,MAChB,oBAAC;GAEO;GACN,OAAO,MAAM,IAAI,IAAI;GACrB,OAAO,MAAM,IAAI,IAAI;KAHhB,KAAK,IAIV,CACF;GACE,IACL;;AAIP,SAAS,cAAc,OAAuB;AAC5C,KAAI,SAAS,EAAG,QAAO;AACvB,KAAI,UAAU,EAAG,QAAO;AACxB,QAAO;;AAGT,SAAS,cAAc,OAAuB;AAC5C,QAAO,SAAS,IAAI,KAAK;;AAG3B,SAAS,QAAQ,EACf,MACA,QAAQ,KAAK,OACb,QAAQ,KAAK,SAKZ;CACD,MAAM,SAAS,cAAc,KAAK,MAAM,EACtC,cAAc,cAAc,MAAM,EAClC,cAAc,cAAc,MAAM;AAEpC,QACE,qBAAC,UAAU;EACT,MAAM,KAAK;EACX,OAAO,EACL,oBAAoB,cAAc,KAAK,MAAM,EAC9C;EACD,WAAU;;GAET,WAAW,eACV,oBAAC;IACC,OAAM;IACN,SAAQ;IACR,WAAU;cAEV,oBAAC;KACC,IAAI;KACJ,IAAG;KACH,IAAI;KACJ,IAAG;KACH,WAAU;KACV,aAAY;MACZ;KACE;GAER,oBAAC;IACC,WAAW,GACT,+CACA,WAAW,eAAe,WAC1B,WAAW,eAAe,aAC3B;IACD,OAAO,EACL,kBAAkB,QACnB;KACD;GACD,KAAK;;GACY"}
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/toc/default.d.ts
|
|
5
|
+
declare function TOCItems({
|
|
6
|
+
ref,
|
|
7
|
+
className,
|
|
8
|
+
...props
|
|
9
|
+
}: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { TOCItems };
|
|
12
|
+
//# sourceMappingURL=default.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","names":[],"sources":["../../../src/components/toc/default.tsx"],"mappings":";;;;iBAQgB,QAAA,CAAA;EAAW,GAAA;EAAK,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,12 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { useI18n } from "../../contexts/i18n.js";
|
|
4
|
+
import { cn } from "../../utils/cn.js";
|
|
5
|
+
import { mergeRefs } from "../../utils/merge-refs.js";
|
|
6
|
+
import { TocThumb, useTOCItems } from "./index.js";
|
|
7
|
+
import { useRef } from "react";
|
|
8
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import * as Primitive from "@hanzo/docs-core/toc";
|
|
4
10
|
|
|
5
11
|
//#region src/components/toc/default.tsx
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
function TOCItems({ ref, className, ...props }) {
|
|
13
|
+
const containerRef = useRef(null);
|
|
14
|
+
const items = useTOCItems();
|
|
15
|
+
const { text } = useI18n();
|
|
16
|
+
if (items.length === 0) return /* @__PURE__ */ jsx("div", {
|
|
17
|
+
className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
|
|
18
|
+
children: text.tocNoHeadings
|
|
19
|
+
});
|
|
20
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TocThumb, {
|
|
21
|
+
containerRef,
|
|
22
|
+
className: "absolute top-(--fd-top) h-(--fd-height) w-0.5 rounded-e-sm bg-fd-primary transition-[top,height] ease-linear"
|
|
23
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
24
|
+
ref: mergeRefs(ref, containerRef),
|
|
25
|
+
className: cn("flex flex-col border-s border-fd-foreground/10", className),
|
|
26
|
+
...props,
|
|
27
|
+
children: items.map((item) => /* @__PURE__ */ jsx(TOCItem, { item }, item.url))
|
|
28
|
+
})] });
|
|
29
|
+
}
|
|
30
|
+
function TOCItem({ item }) {
|
|
31
|
+
return /* @__PURE__ */ jsx(Primitive.TOCItem, {
|
|
32
|
+
href: item.url,
|
|
33
|
+
className: cn("prose py-1.5 text-sm text-fd-muted-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary", item.depth <= 2 && "ps-3", item.depth === 3 && "ps-6", item.depth >= 4 && "ps-8"),
|
|
34
|
+
children: item.title
|
|
35
|
+
});
|
|
36
|
+
}
|
|
9
37
|
|
|
10
38
|
//#endregion
|
|
11
|
-
export {
|
|
39
|
+
export { TOCItems };
|
|
12
40
|
//# sourceMappingURL=default.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","names":[],"sources":["../../../src/components/toc/default.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"default.js","names":[],"sources":["../../../src/components/toc/default.tsx"],"sourcesContent":["'use client';\nimport { useI18n } from '@/contexts/i18n';\nimport { cn } from '@/utils/cn';\nimport { type ComponentProps, useRef } from 'react';\nimport { mergeRefs } from '@/utils/merge-refs';\nimport { TocThumb, useTOCItems } from '.';\nimport * as Primitive from '@hanzo/docs-core/toc';\n\nexport function TOCItems({ ref, className, ...props }: ComponentProps<'div'>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const items = useTOCItems();\n const { text } = useI18n();\n\n if (items.length === 0)\n return (\n <div className=\"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground\">\n {text.tocNoHeadings}\n </div>\n );\n\n return (\n <>\n <TocThumb\n containerRef={containerRef}\n className=\"absolute top-(--fd-top) h-(--fd-height) w-0.5 rounded-e-sm bg-fd-primary transition-[top,height] ease-linear\"\n />\n <div\n ref={mergeRefs(ref, containerRef)}\n className={cn('flex flex-col border-s border-fd-foreground/10', className)}\n {...props}\n >\n {items.map((item) => (\n <TOCItem key={item.url} item={item} />\n ))}\n </div>\n </>\n );\n}\n\nfunction TOCItem({ item }: { item: Primitive.TOCItemType }) {\n return (\n <Primitive.TOCItem\n href={item.url}\n className={cn(\n 'prose py-1.5 text-sm text-fd-muted-foreground transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary',\n item.depth <= 2 && 'ps-3',\n item.depth === 3 && 'ps-6',\n item.depth >= 4 && 'ps-8',\n )}\n >\n {item.title}\n </Primitive.TOCItem>\n );\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,SAAS,EAAE,KAAK,WAAW,GAAG,SAAgC;CAC5E,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,QAAQ,aAAa;CAC3B,MAAM,EAAE,SAAS,SAAS;AAE1B,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YACZ,KAAK;GACF;AAGV,QACE,8CACE,oBAAC;EACe;EACd,WAAU;GACV,EACF,oBAAC;EACC,KAAK,UAAU,KAAK,aAAa;EACjC,WAAW,GAAG,kDAAkD,UAAU;EAC1E,GAAI;YAEH,MAAM,KAAK,SACV,oBAAC,WAA6B,QAAhB,KAAK,IAAmB,CACtC;GACE,IACL;;AAIP,SAAS,QAAQ,EAAE,QAAyC;AAC1D,QACE,oBAAC,UAAU;EACT,MAAM,KAAK;EACX,WAAW,GACT,yIACA,KAAK,SAAS,KAAK,QACnB,KAAK,UAAU,KAAK,QACpB,KAAK,SAAS,KAAK,OACpB;YAEA,KAAK;GACY"}
|
|
@@ -1 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
import { ComponentProps, RefObject } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
+
import * as Primitive from "@hanzo/docs-core/toc";
|
|
4
|
+
|
|
5
|
+
//#region src/components/toc/index.d.ts
|
|
6
|
+
declare function useTOCItems(): Primitive.TOCItemType[];
|
|
7
|
+
declare function TOCProvider({
|
|
8
|
+
toc,
|
|
9
|
+
children,
|
|
10
|
+
...props
|
|
11
|
+
}: ComponentProps<typeof Primitive.AnchorProvider>): react_jsx_runtime0.JSX.Element;
|
|
12
|
+
declare function TOCScrollArea({
|
|
13
|
+
ref,
|
|
14
|
+
className,
|
|
15
|
+
...props
|
|
16
|
+
}: ComponentProps<'div'>): react_jsx_runtime0.JSX.Element;
|
|
17
|
+
interface RefProps {
|
|
18
|
+
containerRef: RefObject<HTMLElement | null>;
|
|
19
|
+
}
|
|
20
|
+
declare function TocThumb({
|
|
21
|
+
containerRef,
|
|
22
|
+
...props
|
|
23
|
+
}: ComponentProps<'div'> & RefProps): react_jsx_runtime0.JSX.Element;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { TOCProvider, TOCScrollArea, TocThumb, useTOCItems };
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|