fumadocs-ui 15.2.3 → 15.2.5

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.
@@ -1,7 +1,7 @@
1
- import type { HighlightOptions } from 'fumadocs-core/highlight';
1
+ import type { HighlightOptionsCommon, HighlightOptionsThemes } from 'fumadocs-core/highlight';
2
2
  export declare function DynamicCodeBlock({ lang, code, options, }: {
3
3
  lang: string;
4
4
  code: string;
5
- options?: Omit<HighlightOptions, 'lang'>;
5
+ options?: Omit<HighlightOptionsCommon, 'lang'> & HighlightOptionsThemes;
6
6
  }): import("react").ReactNode;
7
7
  //# sourceMappingURL=dynamic-codeblock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-codeblock.d.ts","sourceRoot":"","sources":["../../src/components/dynamic-codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAchE,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC1C,6BAUA"}
1
+ {"version":3,"file":"dynamic-codeblock.d.ts","sourceRoot":"","sources":["../../src/components/dynamic-codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAcjC,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,sBAAsB,CAAC;CACzE,6BAUA"}
@@ -1,8 +1,8 @@
1
- import { type ButtonHTMLAttributes, type HTMLAttributes, type ReactNode } from 'react';
1
+ import { type ButtonHTMLAttributes, type FC, type HTMLAttributes, type ReactNode } from 'react';
2
2
  import { type LinkProps } from 'fumadocs-core/link';
3
3
  import { type ScrollAreaProps } from '@radix-ui/react-scroll-area';
4
4
  import type { CollapsibleContentProps, CollapsibleTriggerProps } from '@radix-ui/react-collapsible';
5
- import type { SidebarComponents } from '../../layouts/docs/shared.js';
5
+ import type { PageTree } from 'fumadocs-core/server';
6
6
  export interface SidebarProps extends HTMLAttributes<HTMLElement> {
7
7
  /**
8
8
  * Open folders by default if their level is lower or equal to a specific level
@@ -36,6 +36,19 @@ export declare function SidebarFolderTrigger(props: CollapsibleTriggerProps): im
36
36
  export declare function SidebarFolderLink(props: LinkProps): import("react/jsx-runtime").JSX.Element;
37
37
  export declare function SidebarFolderContent(props: CollapsibleContentProps): import("react/jsx-runtime").JSX.Element;
38
38
  export declare function SidebarCollapseTrigger(props: ButtonHTMLAttributes<HTMLButtonElement>): import("react/jsx-runtime").JSX.Element;
39
+ export interface SidebarComponents {
40
+ Item: FC<{
41
+ item: PageTree.Item;
42
+ }>;
43
+ Folder: FC<{
44
+ item: PageTree.Folder;
45
+ level: number;
46
+ children: ReactNode;
47
+ }>;
48
+ Separator: FC<{
49
+ item: PageTree.Separator;
50
+ }>;
51
+ }
39
52
  /**
40
53
  * Render sidebar items from page tree
41
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EACnB,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;AAGrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAuDrD;AAED,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAAE,2CAwC3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CASlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAYlE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAarD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,2CAkB3E;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAmCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAmBlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAiB/C;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,2CAuDA"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,EAAE,EAEP,KAAK,cAAc,EACnB,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,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAuDrD;AAED,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAAE,2CAwC3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CASlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAYlE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAarD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,2CAkB3E;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAmCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAmBlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAiB/C;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"}
@@ -63,7 +63,7 @@ export function Sidebar({ defaultOpenLevel = 0, prefetch = true, inner, ...props
63
63
  level: 1,
64
64
  };
65
65
  }, [defaultOpenLevel, prefetch]);
66
- return (_jsx(Context.Provider, { value: context, children: _jsx(Base.SidebarList, { id: "nd-sidebar", removeScrollOn: "(min-width: 768px)" // md
66
+ return (_jsx(Context.Provider, { value: context, children: _jsx(Base.SidebarList, { id: "nd-sidebar", removeScrollOn: "(width < 768px)" // md
67
67
  , ...props, className: cn('fixed top-[calc(var(--fd-banner-height)+var(--fd-nav-height))] z-20 bg-fd-card text-sm md:sticky md:h-(--fd-sidebar-height)', 'max-md:inset-x-0 max-md:bottom-0 max-md:bg-fd-background/80 max-md:text-[15px] max-md:backdrop-blur-lg max-md:data-[open=false]:invisible', props.className), style: {
68
68
  ...props.style,
69
69
  '--fd-sidebar-height': 'calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))',
@@ -1,21 +1,19 @@
1
- import { type LinkItemType } from '../../layouts/links.js';
2
- import { type SidebarProps } from '../../components/layout/sidebar.js';
1
+ import type { LinkItemType } from '../../layouts/links.js';
2
+ import { type SidebarComponents, type SidebarProps } from '../../components/layout/sidebar.js';
3
3
  import type { PageTree } from 'fumadocs-core/server';
4
- import type { FC, ReactNode } from 'react';
4
+ import type { ReactNode } from 'react';
5
5
  import type { Option } from '../../components/layout/root-toggle.js';
6
+ import { type GetSidebarTabsOptions } from '../../utils/get-sidebar-tabs.js';
6
7
  export declare const layoutVariables: {
7
8
  '--fd-layout-offset': string;
8
9
  };
9
- export interface TabOptions {
10
- transform?: (option: Option, node: PageTree.Folder) => Option | null;
11
- }
12
10
  export interface SidebarOptions extends SidebarProps {
13
11
  collapsible?: boolean;
14
12
  components?: Partial<SidebarComponents>;
15
13
  /**
16
14
  * Root Toggle options
17
15
  */
18
- tabs?: Option[] | TabOptions | false;
16
+ tabs?: Option[] | GetSidebarTabsOptions | false;
19
17
  banner?: ReactNode;
20
18
  footer?: ReactNode;
21
19
  /**
@@ -25,23 +23,9 @@ export interface SidebarOptions extends SidebarProps {
25
23
  */
26
24
  hideSearch?: boolean;
27
25
  }
28
- export interface SidebarComponents {
29
- Item: FC<{
30
- item: PageTree.Item;
31
- }>;
32
- Folder: FC<{
33
- item: PageTree.Folder;
34
- level: number;
35
- children: ReactNode;
36
- }>;
37
- Separator: FC<{
38
- item: PageTree.Separator;
39
- }>;
40
- }
41
26
  export declare function SidebarLinkItem({ item, ...props }: {
42
27
  item: LinkItemType;
43
28
  className?: string;
44
29
  }): import("react/jsx-runtime").JSX.Element;
45
- export declare function checkPageTree(passed: unknown): void;
46
30
  export declare function getSidebarTabsFromOptions(options: SidebarOptions['tabs'], tree: PageTree.Root): Option[] | undefined;
47
31
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/shared.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAExC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,KAAK,CAAC;IAErC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,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,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAsDA;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,QAY5C;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI,wBASpB"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/shared.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,KAAK,iBAAiB,EAMtB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAExC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,qBAAqB,GAAG,KAAK,CAAC;IAEhD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAmCA;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI,wBASpB"}
@@ -1,31 +1,16 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { BaseLinkItem } from '../../layouts/links.js';
3
2
  import { SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarItem, } from '../../components/layout/sidebar.js';
4
- import { cn } from '../../utils/cn.js';
5
- import { buttonVariants } from '../../components/ui/button.js';
3
+ import { getSidebarTabs, } from '../../utils/get-sidebar-tabs.js';
6
4
  export const layoutVariables = {
7
5
  '--fd-layout-offset': 'max(calc(50vw - var(--fd-layout-width) / 2), 0px)',
8
6
  };
9
7
  export function SidebarLinkItem({ item, ...props }) {
10
8
  if (item.type === 'menu')
11
9
  return (_jsxs(SidebarFolder, { ...props, children: [item.url ? (_jsxs(SidebarFolderLink, { href: item.url, children: [item.icon, item.text] })) : (_jsxs(SidebarFolderTrigger, { children: [item.icon, item.text] })), _jsx(SidebarFolderContent, { children: item.items.map((child, i) => (_jsx(SidebarLinkItem, { item: child }, i))) })] }));
12
- if (item.type === 'button') {
13
- return (_jsxs(BaseLinkItem, { item: item, ...props, className: cn(buttonVariants({
14
- color: 'secondary',
15
- }), 'gap-1.5 [&_svg]:size-4', props.className), children: [item.icon, item.text] }));
16
- }
17
10
  if (item.type === 'custom')
18
11
  return _jsx("div", { ...props, children: item.children });
19
12
  return (_jsx(SidebarItem, { href: item.url, icon: item.icon, external: item.external, ...props, children: item.text }));
20
13
  }
21
- export function checkPageTree(passed) {
22
- if (passed &&
23
- typeof passed === 'object' &&
24
- 'children' in passed &&
25
- Array.isArray(passed.children))
26
- return;
27
- throw new Error('You passed an invalid page tree to `<DocsLayout />`. Check your usage in layout.tsx if you have enabled i18n.');
28
- }
29
14
  export function getSidebarTabsFromOptions(options, tree) {
30
15
  if (Array.isArray(options)) {
31
16
  return options;
@@ -37,48 +22,3 @@ export function getSidebarTabsFromOptions(options, tree) {
37
22
  return getSidebarTabs(tree);
38
23
  }
39
24
  }
40
- const defaultTransform = (option, node) => {
41
- if (!node.icon)
42
- return option;
43
- return {
44
- ...option,
45
- icon: (_jsx("div", { className: "rounded-md border bg-fd-secondary p-1 shadow-md [&_svg]:size-5", children: node.icon })),
46
- };
47
- };
48
- function getSidebarTabs(pageTree, { transform = defaultTransform } = {}) {
49
- function findOptions(node) {
50
- const results = [];
51
- if (node.root) {
52
- const urls = getFolderUrls(node);
53
- if (urls.size > 0) {
54
- const option = {
55
- url: urls.values().next().value ?? '',
56
- title: node.name,
57
- icon: node.icon,
58
- description: node.description,
59
- urls,
60
- };
61
- const mapped = transform ? transform(option, node) : option;
62
- if (mapped)
63
- results.push(mapped);
64
- }
65
- }
66
- for (const child of node.children) {
67
- if (child.type === 'folder')
68
- results.push(...findOptions(child));
69
- }
70
- return results;
71
- }
72
- return findOptions(pageTree);
73
- }
74
- function getFolderUrls(folder, output = new Set()) {
75
- if (folder.index)
76
- output.add(folder.index.url);
77
- for (const child of folder.children) {
78
- if (child.type === 'page' && !child.external)
79
- output.add(child.url);
80
- if (child.type === 'folder')
81
- getFolderUrls(child, output);
82
- }
83
- return output;
84
- }
@@ -27,5 +27,5 @@ export declare function DocsLayoutSidebarFooter({ i18n, themeSwitch, links, }: {
27
27
  themeSwitch?: DocsLayoutProps['themeSwitch'];
28
28
  }): import("react/jsx-runtime").JSX.Element | null;
29
29
  export { CollapsibleControl, Navbar, NavbarSidebarTrigger, type LinkItemType };
30
- export { getSidebarTabsFromOptions, type TabOptions } from './docs/shared.js';
30
+ export { getSidebarTabsFromOptions } from './docs/shared.js';
31
31
  //# sourceMappingURL=docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/layouts/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAcrE,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEF;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EACH,OAAO,EAAE,UAAiB,EAC1B,SAAS,EAAE,UAAU,EACrB,eAAe,EACf,GAAG,GAAG,EACF,EACN,WAAW,EACX,OAAY,EACZ,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CAmF7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAkB,EAClB,UAAU,EACV,IAAI,EAAE,UAAU,EAChB,UAAU,EACV,IAAI,EACJ,GAAG,EACH,KAAU,EACV,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,2CAwDA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,KAAU,GACX,EAAE;IACD,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;CAC9C,kDAiCA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/layouts/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAcrE,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAQ/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEF;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EACH,OAAO,EAAE,UAAiB,EAC1B,SAAS,EAAE,UAAU,EACrB,eAAe,EACf,GAAG,GAAG,EACF,EACN,WAAW,EACX,OAAY,EACZ,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CAkF7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAkB,EAClB,UAAU,EACV,IAAI,EAAE,UAAU,EAChB,UAAU,EACV,IAAI,EACJ,GAAG,EACH,KAAU,EACV,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;IAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,2CAwDA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,KAAU,GACX,EAAE;IACD,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;CAC9C,kDAiCA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
@@ -13,11 +13,10 @@ import { CollapsibleControl, Navbar, NavbarSidebarTrigger, } from '../layouts/do
13
13
  import { TreeContextProvider } from '../contexts/tree.js';
14
14
  import { ThemeToggle } from '../components/layout/theme-toggle.js';
15
15
  import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle.js';
16
- import { checkPageTree, getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared.js';
16
+ import { getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared.js';
17
17
  import { StylesProvider, NavProvider, } from '../contexts/layout.js';
18
18
  import Link from 'fumadocs-core/link';
19
19
  export function DocsLayout({ nav: { enabled: navEnabled = true, component: navReplace, transparentMode, ...nav } = {}, themeSwitch, sidebar = {}, i18n = false, children, ...props }) {
20
- checkPageTree(props.tree);
21
20
  const links = getLinks(props.links ?? [], props.githubUrl);
22
21
  const variables = cn('[--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px]', !navReplace && navEnabled
23
22
  ? '[--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]'
@@ -29,14 +29,13 @@ function Header({ nav: { enableSearch = true, ...nav } = {}, i18n = false, final
29
29
  }
30
30
  function NavbarLinkItem({ item, ...props }) {
31
31
  if (item.type === 'custom')
32
- return item.children;
32
+ return _jsx("div", { ...props, children: item.children });
33
33
  if (item.type === 'menu') {
34
34
  const children = item.items.map((child, j) => {
35
35
  if (child.type === 'custom')
36
36
  return _jsx(Fragment, { children: child.children }, j);
37
- const { banner, footer, ...rest } = child.menu ?? {};
38
- return (_jsxs(NavbarMenuLink, { href: child.url, ...rest, children: [banner ??
39
- (child.icon ? (_jsx("div", { className: "w-fit rounded-md border bg-fd-muted p-1 [&_svg]:size-4", children: child.icon })) : null), _jsx("p", { className: "-mb-1 text-sm font-medium", children: child.text }), child.description ? (_jsx("p", { className: "text-[13px] text-fd-muted-foreground", children: child.description })) : null, footer] }, j));
37
+ const { banner = child.icon ? (_jsx("div", { className: "w-fit rounded-md border bg-fd-muted p-1 [&_svg]:size-4", children: child.icon })) : null, ...rest } = child.menu ?? {};
38
+ return (_jsx(NavbarMenuLink, { href: child.url, ...rest, children: rest.children ?? (_jsxs(_Fragment, { children: [banner, _jsx("p", { className: "-mb-1 text-sm font-medium", children: child.text }), child.description ? (_jsx("p", { className: "text-[13px] text-fd-muted-foreground", children: child.description })) : null] })) }, j));
40
39
  });
41
40
  return (_jsxs(NavbarMenu, { children: [_jsx(NavbarMenuTrigger, { ...props, children: item.url ? _jsx(Link, { href: item.url, children: item.text }) : item.text }), _jsx(NavbarMenuContent, { children: children })] }));
42
41
  }
@@ -56,7 +56,6 @@ export interface MenuItemType extends BaseItem {
56
56
  */
57
57
  menu?: HTMLAttributes<HTMLElement> & {
58
58
  banner?: ReactNode;
59
- footer?: ReactNode;
60
59
  };
61
60
  }) | CustomItem)[];
62
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/layouts/links.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,UAAU,QAAQ;IAChB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,YAAY;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CACH,CAAC,YAAY,GAAG;QACd;;WAEG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG;YACnC,MAAM,CAAC,EAAE,SAAS,CAAC;YACnB,MAAM,CAAC,EAAE,SAAS,CAAC;SACpB,CAAC;KACH,CAAC,GACF,UAAU,CACb,EAAE,CAAC;IAEJ;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,QAAQ;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,UAAU,CAAC;AAEf,eAAO,MAAM,YAAY;UAEyC,YAAY;qDAmB5E,CAAC"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/layouts/links.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,UAAU,QAAQ;IAChB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,YAAY;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CACH,CAAC,YAAY,GAAG;QACd;;WAEG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG;YACnC,MAAM,CAAC,EAAE,SAAS,CAAC;SACpB,CAAC;KACH,CAAC,GACF,UAAU,CACb,EAAE,CAAC;IAEJ;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAW,SAAQ,QAAQ;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,UAAU,CAAC;AAEf,eAAO,MAAM,YAAY;UAEyC,YAAY;qDAmB5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAC/D,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AA0B1B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAGL,MAAM,EACN,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAmB,EACnB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,WAAW,EAAE,kBAAyB,EACtC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,2CAsIjB;AAiLD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAC/D,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AA0B1B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAGL,MAAM,EACN,oBAAoB,EAErB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAmB,EACnB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,WAAW,EAAE,kBAAyB,EACtC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,2CAqIjB;AAiLD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
@@ -11,13 +11,12 @@ import { BaseLinkItem } from '../layouts/links.js';
11
11
  import { LanguageToggle } from '../components/layout/language-toggle.js';
12
12
  import { ThemeToggle } from '../components/layout/theme-toggle.js';
13
13
  import { Popover, PopoverContent, PopoverTrigger, } from '../components/ui/popover.js';
14
- import { checkPageTree, getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared.js';
14
+ import { getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared.js';
15
15
  import { LayoutTab, LayoutTabs, Navbar, NavbarSidebarTrigger, SidebarLayoutTab, } from './notebook-client.js';
16
16
  import { StylesProvider, NavProvider, } from '../contexts/layout.js';
17
17
  import { RootToggle } from '../components/layout/root-toggle.js';
18
18
  import Link from 'fumadocs-core/link';
19
19
  export function DocsLayout({ tabMode = 'sidebar', nav: { transparentMode, ...nav } = {}, sidebar: { collapsible: sidebarCollapsible = true, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, ...sidebar } = {}, i18n = false, themeSwitch, ...props }) {
20
- checkPageTree(props.tree);
21
20
  const navMode = nav.mode ?? 'auto';
22
21
  const links = getLinks(props.links ?? [], props.githubUrl);
23
22
  const tabs = useMemo(() => getSidebarTabsFromOptions(tabOptions, props.tree) ?? [], [tabOptions, props.tree]);
package/dist/style.css CHANGED
@@ -1,64 +1,6 @@
1
- /*! tailwindcss v4.1.1 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties;
2
3
  @layer theme, base, components, utilities;
3
- @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
4
- @layer base {
5
- *, ::before, ::after, ::backdrop {
6
- --tw-translate-x: 0;
7
- --tw-translate-y: 0;
8
- --tw-translate-z: 0;
9
- --tw-scale-x: 1;
10
- --tw-scale-y: 1;
11
- --tw-scale-z: 1;
12
- --tw-rotate-x: rotateX(0);
13
- --tw-rotate-y: rotateY(0);
14
- --tw-rotate-z: rotateZ(0);
15
- --tw-skew-x: skewX(0);
16
- --tw-skew-y: skewY(0);
17
- --tw-divide-y-reverse: 0;
18
- --tw-border-style: solid;
19
- --tw-font-weight: initial;
20
- --tw-shadow: 0 0 #0000;
21
- --tw-shadow-color: initial;
22
- --tw-shadow-alpha: 100%;
23
- --tw-inset-shadow: 0 0 #0000;
24
- --tw-inset-shadow-color: initial;
25
- --tw-inset-shadow-alpha: 100%;
26
- --tw-ring-color: initial;
27
- --tw-ring-shadow: 0 0 #0000;
28
- --tw-inset-ring-color: initial;
29
- --tw-inset-ring-shadow: 0 0 #0000;
30
- --tw-ring-inset: initial;
31
- --tw-ring-offset-width: 0px;
32
- --tw-ring-offset-color: #fff;
33
- --tw-ring-offset-shadow: 0 0 #0000;
34
- --tw-outline-style: solid;
35
- --tw-blur: initial;
36
- --tw-brightness: initial;
37
- --tw-contrast: initial;
38
- --tw-grayscale: initial;
39
- --tw-hue-rotate: initial;
40
- --tw-invert: initial;
41
- --tw-opacity: initial;
42
- --tw-saturate: initial;
43
- --tw-sepia: initial;
44
- --tw-drop-shadow: initial;
45
- --tw-drop-shadow-color: initial;
46
- --tw-drop-shadow-alpha: 100%;
47
- --tw-drop-shadow-size: initial;
48
- --tw-backdrop-blur: initial;
49
- --tw-backdrop-brightness: initial;
50
- --tw-backdrop-contrast: initial;
51
- --tw-backdrop-grayscale: initial;
52
- --tw-backdrop-hue-rotate: initial;
53
- --tw-backdrop-invert: initial;
54
- --tw-backdrop-opacity: initial;
55
- --tw-backdrop-saturate: initial;
56
- --tw-backdrop-sepia: initial;
57
- --tw-duration: initial;
58
- --radix-collapsible-content-height: 0px;
59
- }
60
- }
61
- }
62
4
  @layer theme {
63
5
  :root, :host {
64
6
  --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
@@ -247,7 +189,10 @@
247
189
  }
248
190
  @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
249
191
  ::placeholder {
250
- color: color-mix(in oklab, currentColor 50%, transparent);
192
+ color: currentcolor;
193
+ @supports (color: color-mix(in lab, red, red)) {
194
+ color: color-mix(in oklab, currentcolor 50%, transparent);
195
+ }
251
196
  }
252
197
  }
253
198
  textarea {
@@ -2837,3 +2782,62 @@
2837
2782
  height: 0px;
2838
2783
  }
2839
2784
  }
2785
+ @layer properties {
2786
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
2787
+ *, ::before, ::after, ::backdrop {
2788
+ --tw-translate-x: 0;
2789
+ --tw-translate-y: 0;
2790
+ --tw-translate-z: 0;
2791
+ --tw-scale-x: 1;
2792
+ --tw-scale-y: 1;
2793
+ --tw-scale-z: 1;
2794
+ --tw-rotate-x: rotateX(0);
2795
+ --tw-rotate-y: rotateY(0);
2796
+ --tw-rotate-z: rotateZ(0);
2797
+ --tw-skew-x: skewX(0);
2798
+ --tw-skew-y: skewY(0);
2799
+ --tw-divide-y-reverse: 0;
2800
+ --tw-border-style: solid;
2801
+ --tw-font-weight: initial;
2802
+ --tw-shadow: 0 0 #0000;
2803
+ --tw-shadow-color: initial;
2804
+ --tw-shadow-alpha: 100%;
2805
+ --tw-inset-shadow: 0 0 #0000;
2806
+ --tw-inset-shadow-color: initial;
2807
+ --tw-inset-shadow-alpha: 100%;
2808
+ --tw-ring-color: initial;
2809
+ --tw-ring-shadow: 0 0 #0000;
2810
+ --tw-inset-ring-color: initial;
2811
+ --tw-inset-ring-shadow: 0 0 #0000;
2812
+ --tw-ring-inset: initial;
2813
+ --tw-ring-offset-width: 0px;
2814
+ --tw-ring-offset-color: #fff;
2815
+ --tw-ring-offset-shadow: 0 0 #0000;
2816
+ --tw-outline-style: solid;
2817
+ --tw-blur: initial;
2818
+ --tw-brightness: initial;
2819
+ --tw-contrast: initial;
2820
+ --tw-grayscale: initial;
2821
+ --tw-hue-rotate: initial;
2822
+ --tw-invert: initial;
2823
+ --tw-opacity: initial;
2824
+ --tw-saturate: initial;
2825
+ --tw-sepia: initial;
2826
+ --tw-drop-shadow: initial;
2827
+ --tw-drop-shadow-color: initial;
2828
+ --tw-drop-shadow-alpha: 100%;
2829
+ --tw-drop-shadow-size: initial;
2830
+ --tw-backdrop-blur: initial;
2831
+ --tw-backdrop-brightness: initial;
2832
+ --tw-backdrop-contrast: initial;
2833
+ --tw-backdrop-grayscale: initial;
2834
+ --tw-backdrop-hue-rotate: initial;
2835
+ --tw-backdrop-invert: initial;
2836
+ --tw-backdrop-opacity: initial;
2837
+ --tw-backdrop-saturate: initial;
2838
+ --tw-backdrop-sepia: initial;
2839
+ --tw-duration: initial;
2840
+ --radix-collapsible-content-height: 0px;
2841
+ }
2842
+ }
2843
+ }
@@ -0,0 +1,7 @@
1
+ import type { PageTree } from 'fumadocs-core/server';
2
+ import type { Option } from '../components/layout/root-toggle.js';
3
+ export interface GetSidebarTabsOptions {
4
+ transform?: (option: Option, node: PageTree.Folder) => Option | null;
5
+ }
6
+ export declare function getSidebarTabs(pageTree: PageTree.Root, { transform }?: GetSidebarTabsOptions): Option[];
7
+ //# sourceMappingURL=get-sidebar-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-sidebar-tabs.d.ts","sourceRoot":"","sources":["../../src/utils/get-sidebar-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACtE;AAeD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,CAAC,IAAI,EACvB,EAAE,SAA4B,EAAE,GAAE,qBAA0B,GAC3D,MAAM,EAAE,CA6BV"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ const defaultTransform = (option, node) => {
3
+ if (!node.icon)
4
+ return option;
5
+ return {
6
+ ...option,
7
+ icon: (_jsx("div", { className: "rounded-md border bg-fd-secondary p-1 shadow-md [&_svg]:size-5", children: node.icon })),
8
+ };
9
+ };
10
+ export function getSidebarTabs(pageTree, { transform = defaultTransform } = {}) {
11
+ function findOptions(node) {
12
+ const results = [];
13
+ if (node.root) {
14
+ const urls = getFolderUrls(node);
15
+ if (urls.size > 0) {
16
+ const option = {
17
+ url: urls.values().next().value ?? '',
18
+ title: node.name,
19
+ icon: node.icon,
20
+ description: node.description,
21
+ urls,
22
+ };
23
+ const mapped = transform ? transform(option, node) : option;
24
+ if (mapped)
25
+ results.push(mapped);
26
+ }
27
+ }
28
+ for (const child of node.children) {
29
+ if (child.type === 'folder')
30
+ results.push(...findOptions(child));
31
+ }
32
+ return results;
33
+ }
34
+ return findOptions(pageTree);
35
+ }
36
+ function getFolderUrls(folder, output = new Set()) {
37
+ if (folder.index)
38
+ output.add(folder.index.url);
39
+ for (const child of folder.children) {
40
+ if (child.type === 'page' && !child.external)
41
+ output.add(child.url);
42
+ if (child.type === 'folder')
43
+ getFolderUrls(child, output);
44
+ }
45
+ return output;
46
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.2.3",
3
+ "version": "15.2.5",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -56,6 +56,10 @@
56
56
  "./theme/*": {
57
57
  "import": "./dist/theme/*.js",
58
58
  "types": "./dist/theme/*.d.ts"
59
+ },
60
+ "./utils/*": {
61
+ "import": "./dist/utils/*.js",
62
+ "types": "./dist/utils/*.d.ts"
59
63
  }
60
64
  },
61
65
  "files": [
@@ -79,20 +83,20 @@
79
83
  "postcss-selector-parser": "^7.1.0",
80
84
  "react-medium-image-zoom": "^5.2.14",
81
85
  "tailwind-merge": "^3.1.0",
82
- "fumadocs-core": "15.2.3"
86
+ "fumadocs-core": "15.2.5"
83
87
  },
84
88
  "devDependencies": {
85
89
  "@next/eslint-plugin-next": "^15.2.4",
86
- "@tailwindcss/cli": "^4.1.1",
90
+ "@tailwindcss/cli": "^4.1.3",
87
91
  "@types/lodash.merge": "^4.6.9",
88
92
  "@types/react": "^19.1.0",
89
93
  "@types/react-dom": "^19.1.1",
90
94
  "next": "15.2.4",
91
- "tailwindcss": "^4.1.1",
95
+ "tailwindcss": "^4.1.3",
92
96
  "tsc-alias": "^1.8.13",
93
- "@fumadocs/cli": "0.1.0",
97
+ "@fumadocs/cli": "0.1.1",
94
98
  "eslint-config-custom": "0.0.0",
95
- "fumadocs-core": "15.2.3",
99
+ "fumadocs-core": "15.2.5",
96
100
  "tsconfig": "0.0.0"
97
101
  },
98
102
  "peerDependencies": {
@@ -1,4 +0,0 @@
1
- export * from '../utils/cn.js';
2
- export * from '../components/ui/button.js';
3
- export { useCopyButton } from '../utils/use-copy-button.js';
4
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/components/api.tsx"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from '../utils/cn.js';
2
- export * from '../components/ui/button.js';
3
- export { useCopyButton } from '../utils/use-copy-button.js';