fumadocs-ui 16.1.0 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/black.css +1 -1
- package/css/catppuccin.css +1 -1
- package/css/colors/index.css +51 -0
- package/css/dusk.css +1 -1
- package/css/layouts/docs.css +1 -0
- package/css/layouts/home.css +1 -0
- package/css/layouts/notebook.css +1 -0
- package/css/neutral.css +1 -40
- package/css/ocean.css +1 -1
- package/css/preset.css +21 -28
- package/css/purple.css +1 -1
- package/css/shadcn.css +0 -2
- package/css/shiki.css +1 -3
- package/css/solar.css +49 -18
- package/css/vitepress.css +1 -1
- package/dist/components/image-zoom.d.ts +3 -3
- package/dist/components/image-zoom.d.ts.map +1 -1
- package/dist/components/image-zoom.js +1 -1
- package/dist/components/sidebar/base.d.ts +62 -0
- package/dist/components/sidebar/base.d.ts.map +1 -0
- package/dist/components/sidebar/base.js +174 -0
- package/dist/components/sidebar/link-item.d.ts +11 -0
- package/dist/components/sidebar/link-item.d.ts.map +1 -0
- package/dist/components/sidebar/link-item.js +13 -0
- package/dist/components/sidebar/page-tree.d.ts +19 -0
- package/dist/components/sidebar/page-tree.d.ts.map +1 -0
- package/dist/components/sidebar/page-tree.js +34 -0
- package/dist/components/{layout/root-toggle.d.ts → sidebar/tabs.d.ts} +4 -4
- package/dist/components/sidebar/tabs.d.ts.map +1 -0
- package/dist/components/{layout/root-toggle.js → sidebar/tabs.js} +3 -3
- package/dist/components/tabs.unstyled.d.ts +0 -3
- package/dist/components/tabs.unstyled.d.ts.map +1 -1
- package/dist/components/tabs.unstyled.js +23 -32
- package/dist/components/toc/clerk.d.ts +3 -0
- package/dist/components/toc/clerk.d.ts.map +1 -0
- package/dist/components/{layout/toc-clerk.js → toc/clerk.js} +5 -6
- package/dist/components/toc/default.d.ts +3 -0
- package/dist/components/toc/default.d.ts.map +1 -0
- package/dist/components/{layout/toc.js → toc/default.js} +5 -16
- package/dist/components/{layout/toc.d.ts → toc/index.d.ts} +7 -3
- package/dist/components/toc/index.d.ts.map +1 -0
- package/dist/components/{layout/toc-thumb.js → toc/index.js} +17 -3
- package/dist/contexts/search.js +1 -1
- package/dist/contexts/tree.d.ts +1 -1
- package/dist/contexts/tree.d.ts.map +1 -1
- package/dist/contexts/tree.js +3 -3
- package/dist/layouts/docs/client.d.ts +12 -5
- package/dist/layouts/docs/client.d.ts.map +1 -1
- package/dist/layouts/docs/client.js +31 -22
- package/dist/layouts/docs/index.d.ts +9 -9
- package/dist/layouts/docs/index.d.ts.map +1 -1
- package/dist/layouts/docs/index.js +37 -48
- package/dist/layouts/docs/{page-client.d.ts → page/client.d.ts} +3 -4
- package/dist/layouts/docs/page/client.d.ts.map +1 -0
- package/dist/layouts/docs/{page-client.js → page/client.js} +39 -76
- package/dist/layouts/docs/page/index.d.ts +58 -0
- package/dist/layouts/docs/page/index.d.ts.map +1 -0
- package/dist/layouts/docs/page/index.js +51 -0
- package/dist/layouts/docs/sidebar.d.ts +17 -0
- package/dist/layouts/docs/sidebar.d.ts.map +1 -0
- package/dist/layouts/docs/sidebar.js +82 -0
- package/dist/layouts/home/client.d.ts +2 -20
- package/dist/layouts/home/client.d.ts.map +1 -1
- package/dist/layouts/home/client.js +54 -17
- package/dist/layouts/home/index.d.ts +2 -3
- package/dist/layouts/home/index.d.ts.map +1 -1
- package/dist/layouts/home/index.js +3 -35
- package/dist/layouts/notebook/client.d.ts +20 -8
- package/dist/layouts/notebook/client.d.ts.map +1 -1
- package/dist/layouts/notebook/client.js +59 -33
- package/dist/layouts/notebook/index.d.ts +9 -9
- package/dist/layouts/notebook/index.d.ts.map +1 -1
- package/dist/layouts/notebook/index.js +47 -70
- package/dist/layouts/notebook/page/client.d.ts +24 -0
- package/dist/layouts/notebook/page/client.d.ts.map +1 -0
- package/dist/layouts/notebook/page/client.js +119 -0
- package/dist/layouts/notebook/page/index.d.ts +58 -0
- package/dist/layouts/notebook/page/index.d.ts.map +1 -0
- package/dist/layouts/notebook/page/index.js +51 -0
- package/dist/layouts/notebook/sidebar.d.ts +17 -0
- package/dist/layouts/notebook/sidebar.d.ts.map +1 -0
- package/dist/layouts/notebook/sidebar.js +87 -0
- package/dist/layouts/shared/index.d.ts +12 -78
- package/dist/layouts/shared/index.d.ts.map +1 -1
- package/dist/layouts/shared/index.js +11 -15
- package/dist/layouts/shared/language-toggle.d.ts +5 -0
- package/dist/layouts/shared/language-toggle.d.ts.map +1 -0
- package/dist/layouts/shared/link-item.d.ts +78 -0
- package/dist/layouts/shared/link-item.d.ts.map +1 -0
- package/dist/layouts/shared/{client.js → link-item.js} +1 -1
- package/dist/layouts/shared/search-toggle.d.ts.map +1 -0
- package/dist/{components/layout → layouts/shared}/theme-toggle.d.ts +2 -2
- package/dist/layouts/shared/theme-toggle.d.ts.map +1 -0
- package/dist/{components/layout → layouts/shared}/theme-toggle.js +3 -3
- package/dist/page.d.ts +6 -59
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +16 -50
- package/dist/provider/base.d.ts.map +1 -1
- package/dist/provider/base.js +2 -3
- package/dist/style.css +187 -160
- package/dist/utils/use-footer-items.d.ts +6 -0
- package/dist/utils/use-footer-items.d.ts.map +1 -0
- package/dist/utils/use-footer-items.js +27 -0
- package/dist/utils/use-is-scroll-top.d.ts +4 -0
- package/dist/utils/use-is-scroll-top.d.ts.map +1 -0
- package/dist/utils/use-is-scroll-top.js +17 -0
- package/package.json +11 -24
- package/css/default.css +0 -34
- package/dist/components/layout/language-toggle.d.ts +0 -5
- package/dist/components/layout/language-toggle.d.ts.map +0 -1
- package/dist/components/layout/root-toggle.d.ts.map +0 -1
- package/dist/components/layout/search-toggle.d.ts.map +0 -1
- package/dist/components/layout/sidebar.d.ts +0 -66
- package/dist/components/layout/sidebar.d.ts.map +0 -1
- package/dist/components/layout/sidebar.js +0 -200
- package/dist/components/layout/theme-toggle.d.ts.map +0 -1
- package/dist/components/layout/toc-clerk.d.ts +0 -3
- package/dist/components/layout/toc-clerk.d.ts.map +0 -1
- package/dist/components/layout/toc-thumb.d.ts +0 -7
- package/dist/components/layout/toc-thumb.d.ts.map +0 -1
- package/dist/components/layout/toc.d.ts.map +0 -1
- package/dist/contexts/layout.d.ts +0 -28
- package/dist/contexts/layout.d.ts.map +0 -1
- package/dist/contexts/layout.js +0 -38
- package/dist/contexts/sidebar.d.ts +0 -18
- package/dist/contexts/sidebar.d.ts.map +0 -1
- package/dist/contexts/sidebar.js +0 -31
- package/dist/layouts/docs/page-client.d.ts.map +0 -1
- package/dist/layouts/docs/page.d.ts +0 -17
- package/dist/layouts/docs/page.d.ts.map +0 -1
- package/dist/layouts/docs/page.js +0 -26
- package/dist/layouts/shared/client.d.ts +0 -6
- package/dist/layouts/shared/client.d.ts.map +0 -1
- package/dist/provider/index.d.ts +0 -11
- package/dist/provider/index.d.ts.map +0 -1
- package/dist/provider/index.js +0 -12
- /package/dist/{components/layout → layouts/shared}/language-toggle.js +0 -0
- /package/dist/{components/layout → layouts/shared}/search-toggle.d.ts +0 -0
- /package/dist/{components/layout → layouts/shared}/search-toggle.js +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useTreeContext } from '../contexts/tree.js';
|
|
2
|
+
const footerCache = new Map();
|
|
3
|
+
/**
|
|
4
|
+
* @returns a list of page tree items (linear), that you can obtain footer items
|
|
5
|
+
*/
|
|
6
|
+
export function useFooterItems() {
|
|
7
|
+
const { root } = useTreeContext();
|
|
8
|
+
const cached = footerCache.get(root.$id);
|
|
9
|
+
if (cached)
|
|
10
|
+
return cached;
|
|
11
|
+
const list = [];
|
|
12
|
+
function onNode(node) {
|
|
13
|
+
if (node.type === 'folder') {
|
|
14
|
+
if (node.index)
|
|
15
|
+
onNode(node.index);
|
|
16
|
+
for (const child of node.children)
|
|
17
|
+
onNode(child);
|
|
18
|
+
}
|
|
19
|
+
else if (node.type === 'page' && !node.external) {
|
|
20
|
+
list.push(node);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
for (const child of root.children)
|
|
24
|
+
onNode(child);
|
|
25
|
+
footerCache.set(root.$id, list);
|
|
26
|
+
return list;
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-is-scroll-top.d.ts","sourceRoot":"","sources":["../../src/utils/use-is-scroll-top.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,EAAE,OAAc,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,uBAkBvE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export function useIsScrollTop({ enabled = true }) {
|
|
3
|
+
const [isTop, setIsTop] = useState();
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!enabled)
|
|
6
|
+
return;
|
|
7
|
+
const listener = () => {
|
|
8
|
+
setIsTop(window.scrollY < 10);
|
|
9
|
+
};
|
|
10
|
+
listener();
|
|
11
|
+
window.addEventListener('scroll', listener);
|
|
12
|
+
return () => {
|
|
13
|
+
window.removeEventListener('scroll', listener);
|
|
14
|
+
};
|
|
15
|
+
}, [enabled]);
|
|
16
|
+
return isTop;
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fumadocs-ui",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.2.0",
|
|
4
4
|
"description": "The React.js documentation framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"NextJs",
|
|
@@ -37,38 +37,25 @@
|
|
|
37
37
|
"types": "./dist/layouts/docs/index.d.ts"
|
|
38
38
|
},
|
|
39
39
|
"./layouts/docs/page": {
|
|
40
|
-
"import": "./dist/layouts/docs/page.js",
|
|
41
|
-
"types": "./dist/layouts/docs/page.d.ts"
|
|
42
|
-
},
|
|
43
|
-
"./layouts/docs-client": {
|
|
44
|
-
"import": "./dist/layouts/docs/client.js",
|
|
45
|
-
"types": "./dist/layouts/docs/client.d.ts"
|
|
40
|
+
"import": "./dist/layouts/docs/page/index.js",
|
|
41
|
+
"types": "./dist/layouts/docs/page/index.d.ts"
|
|
46
42
|
},
|
|
47
43
|
"./layouts/notebook": {
|
|
48
44
|
"import": "./dist/layouts/notebook/index.js",
|
|
49
45
|
"types": "./dist/layouts/notebook/index.d.ts"
|
|
50
46
|
},
|
|
51
|
-
"./layouts/notebook
|
|
52
|
-
"import": "./dist/layouts/notebook/
|
|
53
|
-
"types": "./dist/layouts/notebook/
|
|
54
|
-
},
|
|
55
|
-
"./layouts/links": {
|
|
56
|
-
"import": "./dist/layouts/shared/index.js",
|
|
57
|
-
"types": "./dist/layouts/shared/index.d.ts"
|
|
47
|
+
"./layouts/notebook/page": {
|
|
48
|
+
"import": "./dist/layouts/notebook/page/index.js",
|
|
49
|
+
"types": "./dist/layouts/notebook/page/index.d.ts"
|
|
58
50
|
},
|
|
59
51
|
"./layouts/shared": {
|
|
60
52
|
"import": "./dist/layouts/shared/index.js",
|
|
61
53
|
"types": "./dist/layouts/shared/index.d.ts"
|
|
62
54
|
},
|
|
63
55
|
"./page": {
|
|
64
|
-
"node": "./dist/page.js",
|
|
65
56
|
"import": "./dist/page.js",
|
|
66
57
|
"types": "./dist/page.d.ts"
|
|
67
58
|
},
|
|
68
|
-
"./provider": {
|
|
69
|
-
"import": "./dist/provider/index.js",
|
|
70
|
-
"types": "./dist/provider/index.d.ts"
|
|
71
|
-
},
|
|
72
59
|
"./provider/*": {
|
|
73
60
|
"import": "./dist/provider/*.js",
|
|
74
61
|
"types": "./dist/provider/*.d.ts"
|
|
@@ -121,7 +108,7 @@
|
|
|
121
108
|
"react-medium-image-zoom": "^5.4.0",
|
|
122
109
|
"scroll-into-view-if-needed": "^3.1.0",
|
|
123
110
|
"tailwind-merge": "^3.4.0",
|
|
124
|
-
"fumadocs-core": "16.
|
|
111
|
+
"fumadocs-core": "16.2.0"
|
|
125
112
|
},
|
|
126
113
|
"devDependencies": {
|
|
127
114
|
"@next/eslint-plugin-next": "16.0.3",
|
|
@@ -133,10 +120,10 @@
|
|
|
133
120
|
"next": "16.0.3",
|
|
134
121
|
"tailwindcss": "^4.1.17",
|
|
135
122
|
"tsc-alias": "^1.8.16",
|
|
136
|
-
"@fumadocs/cli": "1.0
|
|
137
|
-
"
|
|
138
|
-
"fumadocs-core": "16.
|
|
139
|
-
"
|
|
123
|
+
"@fumadocs/cli": "1.1.0",
|
|
124
|
+
"eslint-config-custom": "0.0.0",
|
|
125
|
+
"fumadocs-core": "16.2.0",
|
|
126
|
+
"tsconfig": "0.0.0"
|
|
140
127
|
},
|
|
141
128
|
"peerDependencies": {
|
|
142
129
|
"@types/react": "*",
|
package/css/default.css
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
The default theme of Fumadocs
|
|
3
|
-
*/
|
|
4
|
-
@theme {
|
|
5
|
-
--color-fd-background: transparent;
|
|
6
|
-
--color-fd-foreground: transparent;
|
|
7
|
-
--color-fd-muted: transparent;
|
|
8
|
-
--color-fd-muted-foreground: transparent;
|
|
9
|
-
--color-fd-popover: transparent;
|
|
10
|
-
--color-fd-popover-foreground: transparent;
|
|
11
|
-
--color-fd-card: transparent;
|
|
12
|
-
--color-fd-card-foreground: transparent;
|
|
13
|
-
--color-fd-border: transparent;
|
|
14
|
-
--color-fd-primary: transparent;
|
|
15
|
-
--color-fd-primary-foreground: transparent;
|
|
16
|
-
--color-fd-secondary: transparent;
|
|
17
|
-
--color-fd-secondary-foreground: transparent;
|
|
18
|
-
--color-fd-accent: transparent;
|
|
19
|
-
--color-fd-accent-foreground: transparent;
|
|
20
|
-
--color-fd-ring: transparent;
|
|
21
|
-
--color-fd-overlay: transparent;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@theme static {
|
|
25
|
-
--color-fd-info: oklch(62.3% 0.214 259.815);
|
|
26
|
-
--color-fd-warning: oklch(76.9% 0.188 70.08);
|
|
27
|
-
--color-fd-error: oklch(63.7% 0.237 25.331);
|
|
28
|
-
--color-fd-success: oklch(72.3% 0.219 149.579);
|
|
29
|
-
--color-fd-idea: oklch(70.5% 0.209 60.849);
|
|
30
|
-
--color-fd-diff-remove: rgba(200, 10, 100, 0.12);
|
|
31
|
-
--color-fd-diff-remove-symbol: rgb(230, 10, 100);
|
|
32
|
-
--color-fd-diff-add: rgba(14, 180, 100, 0.1);
|
|
33
|
-
--color-fd-diff-add-symbol: rgb(10, 200, 100);
|
|
34
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
|
|
2
|
-
export type LanguageSelectProps = ButtonHTMLAttributes<HTMLButtonElement>;
|
|
3
|
-
export declare function LanguageToggle(props: LanguageSelectProps): React.ReactElement;
|
|
4
|
-
export declare function LanguageToggleText(props: HTMLAttributes<HTMLSpanElement>): React.ReactElement;
|
|
5
|
-
//# sourceMappingURL=language-toggle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"language-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/language-toggle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAUvE,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAE1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CA2C7E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,CAAC,eAAe,CAAC,GACrC,KAAK,CAAC,YAAY,CAOpB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/root-toggle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAO/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,WAAW,MAAO,SAAQ,UAAU;IACxC,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,WAAW,EACX,GAAG,KAAK,EACT,EAAE;IACD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG,cAAc,CAAC,QAAQ,CAAC,2CAkF3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/search-toggle.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,wBAAwB,CAAC;AAE1E,UAAU,iBACR,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAC7C,WAAW;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,EAC3B,cAAc,EACd,IAAgB,EAChB,KAAe,EACf,GAAG,KAAK,EACT,EAAE,iBAAiB,kDAuBnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,kDA6BA"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { type ComponentProps, type FC, type ReactNode } from 'react';
|
|
2
|
-
import { type LinkProps } from 'fumadocs-core/link';
|
|
3
|
-
import { type ScrollAreaProps } from '@radix-ui/react-scroll-area';
|
|
4
|
-
import type { CollapsibleContentProps, CollapsibleTriggerProps } from '@radix-ui/react-collapsible';
|
|
5
|
-
import type * as PageTree from 'fumadocs-core/page-tree';
|
|
6
|
-
export interface SidebarProps {
|
|
7
|
-
/**
|
|
8
|
-
* Open folders by default if their level is lower or equal to a specific level
|
|
9
|
-
* (Starting from 1)
|
|
10
|
-
*
|
|
11
|
-
* @defaultValue 0
|
|
12
|
-
*/
|
|
13
|
-
defaultOpenLevel?: number;
|
|
14
|
-
/**
|
|
15
|
-
* Prefetch links
|
|
16
|
-
*
|
|
17
|
-
* @defaultValue true
|
|
18
|
-
*/
|
|
19
|
-
prefetch?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Children to render
|
|
22
|
-
*/
|
|
23
|
-
Content: ReactNode;
|
|
24
|
-
/**
|
|
25
|
-
* Alternative children for mobile
|
|
26
|
-
*/
|
|
27
|
-
Mobile?: ReactNode;
|
|
28
|
-
}
|
|
29
|
-
export declare function Sidebar({ defaultOpenLevel, prefetch, Mobile, Content, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export declare function SidebarContent(props: ComponentProps<'aside'>): import("react/jsx-runtime").JSX.Element;
|
|
31
|
-
export declare function SidebarContentMobile({ className, children, ...props }: ComponentProps<'aside'>): import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
export declare function SidebarHeader(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
33
|
-
export declare function SidebarFooter(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
34
|
-
export declare function SidebarViewport(props: ScrollAreaProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
-
export declare function SidebarSeparator(props: ComponentProps<'p'>): import("react/jsx-runtime").JSX.Element;
|
|
36
|
-
export declare function SidebarItem({ icon, ...props }: LinkProps & {
|
|
37
|
-
icon?: ReactNode;
|
|
38
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
39
|
-
export declare function SidebarFolder({ defaultOpen, ...props }: ComponentProps<'div'> & {
|
|
40
|
-
defaultOpen?: boolean;
|
|
41
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
42
|
-
export declare function SidebarFolderTrigger({ className, ...props }: CollapsibleTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
-
export declare function SidebarFolderLink(props: LinkProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
-
export declare function SidebarFolderContent(props: CollapsibleContentProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
-
export declare function SidebarTrigger({ children, ...props }: ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
|
|
46
|
-
export declare function SidebarCollapseTrigger(props: ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
|
|
47
|
-
export interface SidebarComponents {
|
|
48
|
-
Item: FC<{
|
|
49
|
-
item: PageTree.Item;
|
|
50
|
-
}>;
|
|
51
|
-
Folder: FC<{
|
|
52
|
-
item: PageTree.Folder;
|
|
53
|
-
level: number;
|
|
54
|
-
children: ReactNode;
|
|
55
|
-
}>;
|
|
56
|
-
Separator: FC<{
|
|
57
|
-
item: PageTree.Separator;
|
|
58
|
-
}>;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Render sidebar items from page tree
|
|
62
|
-
*/
|
|
63
|
-
export declare function SidebarPageTree(props: {
|
|
64
|
-
components?: Partial<SidebarComponents>;
|
|
65
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
66
|
-
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,EAAE,EAEP,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAKzD,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AA2BD,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,MAAM,EACN,OAAO,GACR,EAAE,YAAY,2CAed;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,2CAiE5D;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,CAAC,2CA+BzB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAiBrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,2CAY1D;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAiBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAezB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAiCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAkClE;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAY1B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAgBrE;AAgBD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAA;KAAE,CAAC,CAAC;IAClC,MAAM,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,2CAuDA"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { ChevronDown, ExternalLink } from '../../icons.js';
|
|
4
|
-
import { usePathname } from 'fumadocs-core/framework';
|
|
5
|
-
import { createContext, Fragment, useContext, useMemo, useRef, useState, } from 'react';
|
|
6
|
-
import Link from 'fumadocs-core/link';
|
|
7
|
-
import { useOnChange } from 'fumadocs-core/utils/use-on-change';
|
|
8
|
-
import { cn } from '../../utils/cn.js';
|
|
9
|
-
import { ScrollArea, ScrollViewport } from '../../components/ui/scroll-area.js';
|
|
10
|
-
import { isActive } from '../../utils/is-active.js';
|
|
11
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../../components/ui/collapsible.js';
|
|
12
|
-
import { useSidebar } from '../../contexts/sidebar.js';
|
|
13
|
-
import { cva } from 'class-variance-authority';
|
|
14
|
-
import { useTreeContext, useTreePath } from '../../contexts/tree.js';
|
|
15
|
-
import { useMediaQuery } from 'fumadocs-core/utils/use-media-query';
|
|
16
|
-
import { Presence } from '@radix-ui/react-presence';
|
|
17
|
-
const itemVariants = cva('relative flex flex-row items-center gap-2 rounded-lg p-2 ps-(--sidebar-item-offset) text-start text-fd-muted-foreground [overflow-wrap:anywhere] [&_svg]:size-4 [&_svg]:shrink-0', {
|
|
18
|
-
variants: {
|
|
19
|
-
active: {
|
|
20
|
-
true: 'bg-fd-primary/10 text-fd-primary',
|
|
21
|
-
false: 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
const Context = createContext(null);
|
|
26
|
-
const FolderContext = createContext(null);
|
|
27
|
-
export function Sidebar({ defaultOpenLevel = 0, prefetch = true, Mobile, Content, }) {
|
|
28
|
-
const isMobile = useMediaQuery('(width < 768px)') ?? false;
|
|
29
|
-
const context = useMemo(() => {
|
|
30
|
-
return {
|
|
31
|
-
defaultOpenLevel,
|
|
32
|
-
prefetch,
|
|
33
|
-
level: 1,
|
|
34
|
-
};
|
|
35
|
-
}, [defaultOpenLevel, prefetch]);
|
|
36
|
-
return (_jsx(Context.Provider, { value: context, children: isMobile && Mobile != null ? Mobile : Content }));
|
|
37
|
-
}
|
|
38
|
-
export function SidebarContent(props) {
|
|
39
|
-
const { collapsed } = useSidebar();
|
|
40
|
-
const [hover, setHover] = useState(false);
|
|
41
|
-
const timerRef = useRef(0);
|
|
42
|
-
const closeTimeRef = useRef(0);
|
|
43
|
-
useOnChange(collapsed, () => {
|
|
44
|
-
setHover(false);
|
|
45
|
-
closeTimeRef.current = Date.now() + 150;
|
|
46
|
-
});
|
|
47
|
-
return (_jsx("aside", { id: "nd-sidebar", ...props, "data-collapsed": collapsed, className: cn('fixed left-0 rtl:left-auto rtl:right-(--removed-body-scroll-bar-size,0) flex flex-col items-end top-(--fd-sidebar-top) bottom-(--fd-sidebar-margin) z-20 bg-fd-card text-sm border-e transition-[top,opacity,translate,width] duration-200 max-md:hidden *:w-(--fd-sidebar-width)', collapsed && [
|
|
48
|
-
'rounded-xl border translate-x-(--fd-sidebar-offset) rtl:-translate-x-(--fd-sidebar-offset)',
|
|
49
|
-
hover ? 'z-50 shadow-lg' : 'opacity-0',
|
|
50
|
-
], props.className), style: {
|
|
51
|
-
...props.style,
|
|
52
|
-
'--fd-sidebar-offset': hover
|
|
53
|
-
? 'calc(var(--spacing) * 2)'
|
|
54
|
-
: 'calc(16px - 100%)',
|
|
55
|
-
'--fd-sidebar-margin': collapsed ? '0.5rem' : '0px',
|
|
56
|
-
'--fd-sidebar-top': `calc(var(--fd-banner-height) + var(--fd-nav-height) + var(--fd-sidebar-margin))`,
|
|
57
|
-
width: collapsed
|
|
58
|
-
? 'var(--fd-sidebar-width)'
|
|
59
|
-
: 'calc(var(--spacing) + var(--fd-sidebar-width) + var(--fd-layout-offset))',
|
|
60
|
-
}, onPointerEnter: (e) => {
|
|
61
|
-
if (!collapsed ||
|
|
62
|
-
e.pointerType === 'touch' ||
|
|
63
|
-
closeTimeRef.current > Date.now())
|
|
64
|
-
return;
|
|
65
|
-
window.clearTimeout(timerRef.current);
|
|
66
|
-
setHover(true);
|
|
67
|
-
}, onPointerLeave: (e) => {
|
|
68
|
-
if (!collapsed || e.pointerType === 'touch')
|
|
69
|
-
return;
|
|
70
|
-
window.clearTimeout(timerRef.current);
|
|
71
|
-
timerRef.current = window.setTimeout(() => {
|
|
72
|
-
setHover(false);
|
|
73
|
-
closeTimeRef.current = Date.now() + 150;
|
|
74
|
-
}, Math.min(e.clientX, document.body.clientWidth - e.clientX) > 100
|
|
75
|
-
? 0
|
|
76
|
-
: 500);
|
|
77
|
-
}, children: props.children }));
|
|
78
|
-
}
|
|
79
|
-
export function SidebarContentMobile({ className, children, ...props }) {
|
|
80
|
-
const { open, setOpen } = useSidebar();
|
|
81
|
-
const state = open ? 'open' : 'closed';
|
|
82
|
-
return (_jsxs(_Fragment, { children: [_jsx(Presence, { present: open, children: _jsx("div", { "data-state": state, className: "fixed z-40 inset-0 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out", onClick: () => setOpen(false) }) }), _jsx(Presence, { present: open, children: ({ present }) => (_jsx("aside", { id: "nd-sidebar-mobile", ...props, "data-state": state, className: cn('fixed text-[0.9375rem] flex flex-col shadow-lg border-s end-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out', !present && 'invisible', className), children: children })) })] }));
|
|
83
|
-
}
|
|
84
|
-
export function SidebarHeader(props) {
|
|
85
|
-
return (_jsx("div", { ...props, className: cn('flex flex-col gap-3 p-4 pb-2', props.className), children: props.children }));
|
|
86
|
-
}
|
|
87
|
-
export function SidebarFooter(props) {
|
|
88
|
-
return (_jsx("div", { ...props, className: cn('flex flex-col border-t p-4 pt-2', props.className), children: props.children }));
|
|
89
|
-
}
|
|
90
|
-
export function SidebarViewport(props) {
|
|
91
|
-
return (_jsx(ScrollArea, { ...props, className: cn('h-full', props.className), children: _jsx(ScrollViewport, { className: "p-4 overscroll-contain", style: {
|
|
92
|
-
'--sidebar-item-offset': 'calc(var(--spacing) * 2)',
|
|
93
|
-
maskImage: 'linear-gradient(to bottom, transparent, white 12px, white calc(100% - 12px), transparent)',
|
|
94
|
-
}, children: props.children }) }));
|
|
95
|
-
}
|
|
96
|
-
export function SidebarSeparator(props) {
|
|
97
|
-
return (_jsx("p", { ...props, className: cn('inline-flex items-center gap-2 mb-1.5 px-2 ps-(--sidebar-item-offset) empty:mb-0 [&_svg]:size-4 [&_svg]:shrink-0', props.className), children: props.children }));
|
|
98
|
-
}
|
|
99
|
-
export function SidebarItem({ icon, ...props }) {
|
|
100
|
-
const pathname = usePathname();
|
|
101
|
-
const active = props.href !== undefined && isActive(props.href, pathname, false);
|
|
102
|
-
const { prefetch } = useInternalContext();
|
|
103
|
-
return (_jsxs(Link, { ...props, "data-active": active, className: cn(itemVariants({ active }), props.className), prefetch: prefetch, children: [icon ?? (props.external ? _jsx(ExternalLink, {}) : null), props.children] }));
|
|
104
|
-
}
|
|
105
|
-
export function SidebarFolder({ defaultOpen = false, ...props }) {
|
|
106
|
-
const [open, setOpen] = useState(defaultOpen);
|
|
107
|
-
useOnChange(defaultOpen, (v) => {
|
|
108
|
-
if (v)
|
|
109
|
-
setOpen(v);
|
|
110
|
-
});
|
|
111
|
-
return (_jsx(Collapsible, { open: open, onOpenChange: setOpen, ...props, children: _jsx(FolderContext.Provider, { value: useMemo(() => ({ open, setOpen }), [open]), children: props.children }) }));
|
|
112
|
-
}
|
|
113
|
-
export function SidebarFolderTrigger({ className, ...props }) {
|
|
114
|
-
const { open } = useFolderContext();
|
|
115
|
-
return (_jsxs(CollapsibleTrigger, { className: cn(itemVariants({ active: false }), 'w-full', className), ...props, children: [props.children, _jsx(ChevronDown, { "data-icon": true, className: cn('ms-auto transition-transform', !open && '-rotate-90') })] }));
|
|
116
|
-
}
|
|
117
|
-
export function SidebarFolderLink(props) {
|
|
118
|
-
const { open, setOpen } = useFolderContext();
|
|
119
|
-
const { prefetch } = useInternalContext();
|
|
120
|
-
const pathname = usePathname();
|
|
121
|
-
const active = props.href !== undefined && isActive(props.href, pathname, false);
|
|
122
|
-
return (_jsxs(Link, { ...props, "data-active": active, className: cn(itemVariants({ active }), 'w-full', props.className), onClick: (e) => {
|
|
123
|
-
if (e.target instanceof Element &&
|
|
124
|
-
e.target.matches('[data-icon], [data-icon] *')) {
|
|
125
|
-
setOpen(!open);
|
|
126
|
-
e.preventDefault();
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
setOpen(active ? !open : true);
|
|
130
|
-
}
|
|
131
|
-
}, prefetch: prefetch, children: [props.children, _jsx(ChevronDown, { "data-icon": true, className: cn('ms-auto transition-transform', !open && '-rotate-90') })] }));
|
|
132
|
-
}
|
|
133
|
-
export function SidebarFolderContent(props) {
|
|
134
|
-
const { level, ...ctx } = useInternalContext();
|
|
135
|
-
return (_jsx(CollapsibleContent, { ...props, className: cn('relative', level === 1 && [
|
|
136
|
-
"before:content-[''] before:absolute before:w-px before:inset-y-1 before:bg-fd-border before:start-2.5",
|
|
137
|
-
"**:data-[active=true]:before:content-[''] **:data-[active=true]:before:bg-fd-primary **:data-[active=true]:before:absolute **:data-[active=true]:before:w-px **:data-[active=true]:before:inset-y-2.5 **:data-[active=true]:before:start-2.5",
|
|
138
|
-
], props.className), style: {
|
|
139
|
-
'--sidebar-item-offset': `calc(var(--spacing) * ${(level + 1) * 3})`,
|
|
140
|
-
...props.style,
|
|
141
|
-
}, children: _jsx(Context.Provider, { value: useMemo(() => ({
|
|
142
|
-
...ctx,
|
|
143
|
-
level: level + 1,
|
|
144
|
-
}), [ctx, level]), children: props.children }) }));
|
|
145
|
-
}
|
|
146
|
-
export function SidebarTrigger({ children, ...props }) {
|
|
147
|
-
const { setOpen } = useSidebar();
|
|
148
|
-
return (_jsx("button", { ...props, "aria-label": "Open Sidebar", onClick: () => setOpen((prev) => !prev), children: children }));
|
|
149
|
-
}
|
|
150
|
-
export function SidebarCollapseTrigger(props) {
|
|
151
|
-
const { collapsed, setCollapsed } = useSidebar();
|
|
152
|
-
return (_jsx("button", { type: "button", "aria-label": "Collapse Sidebar", "data-collapsed": collapsed, ...props, onClick: () => {
|
|
153
|
-
setCollapsed((prev) => !prev);
|
|
154
|
-
}, children: props.children }));
|
|
155
|
-
}
|
|
156
|
-
function useFolderContext() {
|
|
157
|
-
const ctx = useContext(FolderContext);
|
|
158
|
-
if (!ctx)
|
|
159
|
-
throw new Error('Missing sidebar folder');
|
|
160
|
-
return ctx;
|
|
161
|
-
}
|
|
162
|
-
function useInternalContext() {
|
|
163
|
-
const ctx = useContext(Context);
|
|
164
|
-
if (!ctx)
|
|
165
|
-
throw new Error('<Sidebar /> component required.');
|
|
166
|
-
return ctx;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Render sidebar items from page tree
|
|
170
|
-
*/
|
|
171
|
-
export function SidebarPageTree(props) {
|
|
172
|
-
const { root } = useTreeContext();
|
|
173
|
-
return useMemo(() => {
|
|
174
|
-
const { Separator, Item, Folder } = props.components ?? {};
|
|
175
|
-
function renderSidebarList(items, level) {
|
|
176
|
-
return items.map((item, i) => {
|
|
177
|
-
if (item.type === 'separator') {
|
|
178
|
-
if (Separator)
|
|
179
|
-
return _jsx(Separator, { item: item }, i);
|
|
180
|
-
return (_jsxs(SidebarSeparator, { className: cn(i !== 0 && 'mt-6'), children: [item.icon, item.name] }, i));
|
|
181
|
-
}
|
|
182
|
-
if (item.type === 'folder') {
|
|
183
|
-
const children = renderSidebarList(item.children, level + 1);
|
|
184
|
-
if (Folder)
|
|
185
|
-
return (_jsx(Folder, { item: item, level: level, children: children }, i));
|
|
186
|
-
return (_jsx(PageTreeFolder, { item: item, children: children }, i));
|
|
187
|
-
}
|
|
188
|
-
if (Item)
|
|
189
|
-
return _jsx(Item, { item: item }, item.url);
|
|
190
|
-
return (_jsx(SidebarItem, { href: item.url, external: item.external, icon: item.icon, children: item.name }, item.url));
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
return (_jsx(Fragment, { children: renderSidebarList(root.children, 1) }, root.$id));
|
|
194
|
-
}, [props.components, root]);
|
|
195
|
-
}
|
|
196
|
-
function PageTreeFolder({ item, ...props }) {
|
|
197
|
-
const { defaultOpenLevel, level } = useInternalContext();
|
|
198
|
-
const path = useTreePath();
|
|
199
|
-
return (_jsxs(SidebarFolder, { defaultOpen: (item.defaultOpen ?? defaultOpenLevel >= level) || path.includes(item), children: [item.index ? (_jsxs(SidebarFolderLink, { href: item.index.url, external: item.index.external, ...props, children: [item.icon, item.name] })) : (_jsxs(SidebarFolderTrigger, { ...props, children: [item.icon, item.name] })), _jsx(SidebarFolderContent, { children: props.children })] }));
|
|
200
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/theme-toggle.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAA6B,MAAM,OAAO,CAAC;AAqBvE,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,IAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAAC;CAC3C,2CAuDA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toc-clerk.d.ts","sourceRoot":"","sources":["../../../src/components/layout/toc-clerk.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAA+B,MAAM,OAAO,CAAC;AAOzE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CAsGvB"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type HTMLAttributes, type RefObject } from 'react';
|
|
2
|
-
interface RefProps {
|
|
3
|
-
containerRef: RefObject<HTMLElement | null>;
|
|
4
|
-
}
|
|
5
|
-
export declare function TocThumb({ containerRef, ...props }: HTMLAttributes<HTMLDivElement> & RefProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export {};
|
|
7
|
-
//# sourceMappingURL=toc-thumb.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toc-thumb.d.ts","sourceRoot":"","sources":["../../../src/components/layout/toc-thumb.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAKf,UAAU,QAAQ;IAChB,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CAC7C;AAED,wBAAgB,QAAQ,CAAC,EACvB,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,QAAQ,2CAS3C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toc.d.ts","sourceRoot":"","sources":["../../../src/components/layout/toc.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,cAAc,EAAqC,MAAM,OAAO,CAAC;AAQ/E,wBAAgB,WAAW,IAAI,SAAS,CAAC,WAAW,EAAE,CAErD;AAED,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,2CAQjD;AAED,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CAiBvB;AAED,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,2CAgC3E"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
|
-
export interface PageStyles {
|
|
3
|
-
tocNav?: string;
|
|
4
|
-
toc?: string;
|
|
5
|
-
page?: string;
|
|
6
|
-
article?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function usePageStyles(): PageStyles;
|
|
9
|
-
export declare function StylesProvider({ children, ...value }: PageStyles & {
|
|
10
|
-
children: ReactNode;
|
|
11
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export interface NavProviderProps {
|
|
13
|
-
/**
|
|
14
|
-
* Use transparent background
|
|
15
|
-
*
|
|
16
|
-
* @defaultValue none
|
|
17
|
-
*/
|
|
18
|
-
transparentMode?: 'always' | 'top' | 'none';
|
|
19
|
-
}
|
|
20
|
-
interface NavContextType {
|
|
21
|
-
isTransparent: boolean;
|
|
22
|
-
}
|
|
23
|
-
export declare function NavProvider({ transparentMode, children, }: NavProviderProps & {
|
|
24
|
-
children: ReactNode;
|
|
25
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
26
|
-
export declare function useNav(): NavContextType;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/contexts/layout.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAgB,aAAa,eAE5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAItC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,eAAwB,EACxB,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAwB5C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAEvC"}
|
package/dist/contexts/layout.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useMemo, useState, createContext, use, } from 'react';
|
|
4
|
-
/**
|
|
5
|
-
* applied styles to different layout components in `Page` from layouts
|
|
6
|
-
*/
|
|
7
|
-
const StylesContext = createContext({
|
|
8
|
-
tocNav: 'xl:hidden',
|
|
9
|
-
toc: 'max-xl:hidden',
|
|
10
|
-
});
|
|
11
|
-
export function usePageStyles() {
|
|
12
|
-
return use(StylesContext);
|
|
13
|
-
}
|
|
14
|
-
export function StylesProvider({ children, ...value }) {
|
|
15
|
-
return (_jsx(StylesContext.Provider, { value: value, children: children }));
|
|
16
|
-
}
|
|
17
|
-
const NavContext = createContext({
|
|
18
|
-
isTransparent: false,
|
|
19
|
-
});
|
|
20
|
-
export function NavProvider({ transparentMode = 'none', children, }) {
|
|
21
|
-
const [transparent, setTransparent] = useState(transparentMode !== 'none');
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (transparentMode !== 'top')
|
|
24
|
-
return;
|
|
25
|
-
const listener = () => {
|
|
26
|
-
setTransparent(window.scrollY < 10);
|
|
27
|
-
};
|
|
28
|
-
listener();
|
|
29
|
-
window.addEventListener('scroll', listener);
|
|
30
|
-
return () => {
|
|
31
|
-
window.removeEventListener('scroll', listener);
|
|
32
|
-
};
|
|
33
|
-
}, [transparentMode]);
|
|
34
|
-
return (_jsx(NavContext, { value: useMemo(() => ({ isTransparent: transparent }), [transparent]), children: children }));
|
|
35
|
-
}
|
|
36
|
-
export function useNav() {
|
|
37
|
-
return use(NavContext);
|
|
38
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type ReactNode, type RefObject } from 'react';
|
|
2
|
-
interface SidebarContext {
|
|
3
|
-
open: boolean;
|
|
4
|
-
setOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
5
|
-
collapsed: boolean;
|
|
6
|
-
setCollapsed: React.Dispatch<React.SetStateAction<boolean>>;
|
|
7
|
-
/**
|
|
8
|
-
* When set to false, don't close the sidebar when navigate to another page
|
|
9
|
-
*/
|
|
10
|
-
closeOnRedirect: RefObject<boolean>;
|
|
11
|
-
}
|
|
12
|
-
declare const SidebarContext: import("react").Context<SidebarContext | null>;
|
|
13
|
-
export declare function useSidebar(): SidebarContext;
|
|
14
|
-
export declare function SidebarProvider({ children, }: {
|
|
15
|
-
children: ReactNode;
|
|
16
|
-
}): ReactNode;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/contexts/sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAIf,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,QAAA,MAAM,cAAc,gDAA6C,CAAC;AAElE,wBAAgB,UAAU,IAAI,cAAc,CAQ3C;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CA6BZ"}
|
package/dist/contexts/sidebar.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useMemo, useRef, useState, createContext, use, } from 'react';
|
|
4
|
-
import { usePathname } from 'fumadocs-core/framework';
|
|
5
|
-
import { useOnChange } from 'fumadocs-core/utils/use-on-change';
|
|
6
|
-
const SidebarContext = createContext(null);
|
|
7
|
-
export function useSidebar() {
|
|
8
|
-
const ctx = use(SidebarContext);
|
|
9
|
-
if (!ctx)
|
|
10
|
-
throw new Error('Missing SidebarContext, make sure you have wrapped the component in <RootProvider /> and the context is available.');
|
|
11
|
-
return ctx;
|
|
12
|
-
}
|
|
13
|
-
export function SidebarProvider({ children, }) {
|
|
14
|
-
const closeOnRedirect = useRef(true);
|
|
15
|
-
const [open, setOpen] = useState(false);
|
|
16
|
-
const [collapsed, setCollapsed] = useState(false);
|
|
17
|
-
const pathname = usePathname();
|
|
18
|
-
useOnChange(pathname, () => {
|
|
19
|
-
if (closeOnRedirect.current) {
|
|
20
|
-
setOpen(false);
|
|
21
|
-
}
|
|
22
|
-
closeOnRedirect.current = true;
|
|
23
|
-
});
|
|
24
|
-
return (_jsx(SidebarContext, { value: useMemo(() => ({
|
|
25
|
-
open,
|
|
26
|
-
setOpen,
|
|
27
|
-
collapsed,
|
|
28
|
-
setCollapsed,
|
|
29
|
-
closeOnRedirect,
|
|
30
|
-
}), [open, collapsed]), children: children }));
|
|
31
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"page-client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EASpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAoDpE;AA4DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAwD1D;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,2CAiBxD;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAyBD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAiC1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAuBnD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type ComponentProps } from 'react';
|
|
2
|
-
import { type BreadcrumbProps, type FooterProps, PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger } from './page-client.js';
|
|
3
|
-
import type { AnchorProviderProps } from 'fumadocs-core/toc';
|
|
4
|
-
export declare function PageTOCTitle(props: ComponentProps<'h2'>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
export declare function PageTOCItems({ variant, ...props }: ComponentProps<'div'> & {
|
|
6
|
-
variant?: 'clerk' | 'normal';
|
|
7
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export declare function PageTOCPopoverItems({ variant, ...props }: ComponentProps<'div'> & {
|
|
9
|
-
variant?: 'clerk' | 'normal';
|
|
10
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export declare function PageArticle(props: ComponentProps<'article'>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
-
export interface RootProps extends ComponentProps<'div'> {
|
|
13
|
-
toc?: Omit<AnchorProviderProps, 'children'> | false;
|
|
14
|
-
}
|
|
15
|
-
export declare function PageRoot({ toc, children, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverTrigger, PageTOCPopoverContent, type FooterProps, type BreadcrumbProps, };
|
|
17
|
-
//# sourceMappingURL=page.d.ts.map
|