fumadocs-ui 14.7.4 → 14.7.6

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,4 +1,8 @@
1
1
  import { type ButtonHTMLAttributes } from 'react';
2
- export declare function SearchToggle(props: ButtonHTMLAttributes<HTMLButtonElement>): import("react/jsx-runtime").JSX.Element;
3
- export declare function LargeSearchToggle(props: ButtonHTMLAttributes<HTMLButtonElement>): import("react/jsx-runtime").JSX.Element;
2
+ export declare function SearchToggle({ hideIfDisabled, ...props }: ButtonHTMLAttributes<HTMLButtonElement> & {
3
+ hideIfDisabled?: boolean;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
5
+ export declare function LargeSearchToggle({ hideIfDisabled, ...props }: ButtonHTMLAttributes<HTMLButtonElement> & {
6
+ hideIfDisabled?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element | null;
4
8
  //# sourceMappingURL=search-toggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/search-toggle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAOlD,wBAAgB,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAsB1E;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CA6B/C"}
1
+ {"version":3,"file":"search-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/search-toggle.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAOlD,wBAAgB,YAAY,CAAC,EAC3B,cAAc,EACd,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,kDAuBA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,kDA6BA"}
@@ -5,19 +5,22 @@ import { useSearchContext } from '../../contexts/search';
5
5
  import { useI18n } from '../../contexts/i18n';
6
6
  import { cn } from '../../utils/cn';
7
7
  import { buttonVariants } from '../../components/ui/button';
8
- export function SearchToggle(props) {
9
- const { setOpenSearch } = useSearchContext();
8
+ export function SearchToggle({ hideIfDisabled, ...props }) {
9
+ const { setOpenSearch, enabled } = useSearchContext();
10
+ if (hideIfDisabled && !enabled)
11
+ return null;
10
12
  return (_jsx("button", { type: "button", className: cn(buttonVariants({
11
13
  size: 'icon',
12
14
  color: 'ghost',
13
- className: props.className,
14
- })), "data-search": "", "aria-label": "Open Search", onClick: () => {
15
+ }), props.className), "data-search": "", "aria-label": "Open Search", onClick: () => {
15
16
  setOpenSearch(true);
16
17
  }, children: _jsx(SearchIcon, {}) }));
17
18
  }
18
- export function LargeSearchToggle(props) {
19
- const { hotKey, setOpenSearch } = useSearchContext();
19
+ export function LargeSearchToggle({ hideIfDisabled, ...props }) {
20
+ const { enabled, hotKey, setOpenSearch } = useSearchContext();
20
21
  const { text } = useI18n();
22
+ if (hideIfDisabled && !enabled)
23
+ return null;
21
24
  return (_jsxs("button", { type: "button", "data-search-full": "", ...props, className: cn('inline-flex items-center gap-2 rounded-full border bg-fd-secondary/50 p-1.5 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground', props.className), onClick: () => {
22
25
  setOpenSearch(true);
23
26
  }, children: [_jsx(SearchIcon, { className: "ms-1 size-4" }), text.search, _jsx("div", { className: "ms-auto inline-flex gap-0.5", children: hotKey.map((k, i) => (_jsx("kbd", { className: "rounded-md border bg-fd-background px-1.5", children: k.display }, i))) })] }));
@@ -1,3 +1,5 @@
1
- import { type ButtonHTMLAttributes } from 'react';
2
- export declare function ThemeToggle({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): React.ReactElement;
1
+ import { type HTMLAttributes } from 'react';
2
+ export declare function ThemeToggle({ className, mode, ...props }: HTMLAttributes<HTMLElement> & {
3
+ mode?: 'light-dark' | 'light-dark-system';
4
+ }): import("react/jsx-runtime").JSX.Element;
3
5
  //# sourceMappingURL=theme-toggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/layout/theme-toggle.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAgBlD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,YAAY,CAuB9D"}
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;AAYvE,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,2CAiDA"}
@@ -1,21 +1,33 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { cva } from 'class-variance-authority';
4
- import { Moon, Sun } from 'lucide-react';
4
+ import { Moon, Sun, Airplay } from 'lucide-react';
5
5
  import { useTheme } from 'next-themes';
6
+ import { useLayoutEffect, useState } from 'react';
6
7
  import { cn } from '../../utils/cn';
7
- const buttonVariants = cva('size-7 rounded-full p-1.5 text-fd-muted-foreground', {
8
+ const itemVariants = cva('size-7 rounded-full p-1.5 text-fd-muted-foreground', {
8
9
  variants: {
9
- dark: {
10
- true: 'dark:bg-fd-accent dark:text-fd-accent-foreground',
11
- false: 'bg-fd-accent text-fd-accent-foreground dark:bg-transparent dark:text-fd-muted-foreground',
10
+ active: {
11
+ true: 'bg-fd-accent text-fd-accent-foreground',
12
+ false: 'text-fd-muted-foreground',
12
13
  },
13
14
  },
14
15
  });
15
- export function ThemeToggle({ className, ...props }) {
16
- const { setTheme, resolvedTheme } = useTheme();
17
- const onToggle = () => {
18
- setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');
19
- };
20
- return (_jsxs("button", { type: "button", className: cn('inline-flex items-center rounded-full border p-[3px]', className), "data-theme-toggle": "", "aria-label": "Toggle Theme", onClick: onToggle, ...props, children: [_jsx(Sun, { className: cn(buttonVariants({ dark: false })) }), _jsx(Moon, { className: cn(buttonVariants({ dark: true })) })] }));
16
+ export function ThemeToggle({ className, mode = 'light-dark', ...props }) {
17
+ const { setTheme, theme, resolvedTheme } = useTheme();
18
+ const [mounted, setMounted] = useState(false);
19
+ useLayoutEffect(() => {
20
+ setMounted(true);
21
+ }, []);
22
+ const container = cn('inline-flex items-center rounded-full border p-[3px]', className);
23
+ if (mode === 'light-dark') {
24
+ const value = mounted ? resolvedTheme : null;
25
+ return (_jsxs("button", { className: container, onClick: () => setTheme(value === 'light' ? 'dark' : 'light'), "data-theme-toggle": "", ...props, children: [_jsx(Sun, { className: cn(itemVariants({ active: value === 'light' })) }), _jsx(Moon, { className: cn(itemVariants({ active: value === 'dark' })) })] }));
26
+ }
27
+ const value = mounted ? theme : null;
28
+ return (_jsx("div", { className: container, "data-theme-toggle": "", ...props, children: [
29
+ ['light', Sun],
30
+ ['dark', Moon],
31
+ ['system', Airplay],
32
+ ].map(([key, Icon]) => (_jsx("button", { "aria-label": key, className: cn(itemVariants({ active: value === key })), onClick: () => setTheme(key), children: _jsx(Icon, { className: "size-full" }) }, key))) }));
21
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/components/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAUpD,eAAO,MAAM,QAAQ,EAAE,QAmEtB,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/components/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAUpD,eAAO,MAAM,QAAQ,EAAE,QAwEtB,CAAC"}
@@ -30,6 +30,11 @@ export const registry = {
30
30
  files: ['../layouts/docs.tsx'],
31
31
  mapImportPath: contextsMap,
32
32
  },
33
+ {
34
+ name: 'layouts/notebook',
35
+ files: ['../layouts/notebook.tsx'],
36
+ mapImportPath: contextsMap,
37
+ },
33
38
  {
34
39
  name: 'layouts/home',
35
40
  files: ['../layouts/home.tsx'],
@@ -1,8 +1,8 @@
1
1
  import type { ReactNode } from 'react';
2
- export declare function Steps({ children, }: {
2
+ export declare function Steps({ children }: {
3
3
  children: ReactNode;
4
- }): React.ReactElement;
5
- export declare function Step({ children, }: {
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export declare function Step({ children }: {
6
6
  children: ReactNode;
7
- }): React.ReactElement;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
8
  //# sourceMappingURL=steps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,KAAK,CAAC,EACpB,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,KAAK,CAAC,YAAY,CAErB;AAED,wBAAgB,IAAI,CAAC,EACnB,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,KAAK,CAAC,YAAY,CAErB"}
1
+ {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAE1D;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAEzD"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Steps({ children, }) {
3
- return _jsx("div", { className: "steps", children: children });
2
+ export function Steps({ children }) {
3
+ return _jsx("div", { className: "fd-steps", children: children });
4
4
  }
5
- export function Step({ children, }) {
6
- return _jsx("div", { className: "step", children: children });
5
+ export function Step({ children }) {
6
+ return _jsx("div", { className: "fd-step", children: children });
7
7
  }
@@ -39,8 +39,9 @@ export interface SidebarComponents {
39
39
  item: PageTree.Separator;
40
40
  }>;
41
41
  }
42
- export declare function SidebarLinkItem({ item }: {
42
+ export declare function SidebarLinkItem({ item, ...props }: {
43
43
  item: LinkItemType;
44
+ className?: string;
44
45
  }): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
45
46
  export declare function checkPageTree(passed: unknown): void;
46
47
  export declare function getSidebarTabsFromOptions(options: SidebarOptions['tabs'], tree: PageTree.Root): Option[] | undefined;
@@ -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,wBAAwB,CAAC;AAGhC,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;AAG9D,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,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IAErB,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,CAAA;KAAE,CAAC,CAAC;IACrD,SAAS,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7C;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,2UA+C/D;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,EAAgB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAGhC,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;AAG9D,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,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IAErB,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,CAAA;KAAE,CAAC,CAAC;IACrD,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,2UAsDA;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"}
@@ -7,18 +7,17 @@ import { notFound } from 'next/navigation';
7
7
  export const layoutVariables = {
8
8
  '--fd-layout-offset': 'max(calc(50vw - var(--fd-layout-width) / 2), 0px)',
9
9
  };
10
- export function SidebarLinkItem({ item }) {
10
+ export function SidebarLinkItem({ item, ...props }) {
11
11
  if (item.type === 'menu')
12
- return (_jsxs(SidebarFolder, { 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
+ 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))) })] }));
13
13
  if (item.type === 'button') {
14
- return (_jsxs(BaseLinkItem, { item: item, className: cn(buttonVariants({
14
+ return (_jsxs(BaseLinkItem, { item: item, ...props, className: cn(buttonVariants({
15
15
  color: 'secondary',
16
- className: 'gap-1.5 [&_svg]:size-4',
17
- })), children: [item.icon, item.text] }));
16
+ }), 'gap-1.5 [&_svg]:size-4', props.className), children: [item.icon, item.text] }));
18
17
  }
19
18
  if (item.type === 'custom')
20
19
  return item.children;
21
- return (_jsx(SidebarItem, { href: item.url, icon: item.icon, external: item.external, children: item.text }));
20
+ return (_jsx(SidebarItem, { href: item.url, icon: item.icon, external: item.external, ...props, children: item.text }));
22
21
  }
23
22
  export function checkPageTree(passed) {
24
23
  if (!passed)
@@ -29,8 +29,7 @@ export declare function SidebarSeparator(props: HTMLAttributes<HTMLParagraphElem
29
29
  export declare function SidebarItem({ icon, ...props }: LinkProps & {
30
30
  icon?: ReactNode;
31
31
  }): import("react/jsx-runtime").JSX.Element;
32
- export declare function SidebarFolder({ defaultOpen, ...props }: {
33
- children: ReactNode;
32
+ export declare function SidebarFolder({ defaultOpen, ...props }: HTMLAttributes<HTMLDivElement> & {
34
33
  defaultOpen?: boolean;
35
34
  }): import("react/jsx-runtime").JSX.Element;
36
35
  export declare function SidebarFolderTrigger(props: CollapsibleTriggerProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,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;AA6BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAqDrD;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,2CAuC3D;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,2CAY3E;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;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAelE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CA8BjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAQlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAyB/C;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,eA0CA"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,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;AA6BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAqDrD;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,2CAuC3D;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,2CAS3E;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,cAAc,CAAC,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAelE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CA8BjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAQlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAwB/C;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,eA8CA"}
@@ -14,11 +14,11 @@ import { useSidebar } from '../../contexts/sidebar';
14
14
  import { buttonVariants } from '../../components/ui/button';
15
15
  import { cva } from 'class-variance-authority';
16
16
  import { useTreeContext, useTreePath } from '../../contexts/tree';
17
- const itemVariants = cva('flex flex-row items-center gap-2 rounded-md p-2 text-fd-muted-foreground [overflow-wrap:anywhere] md:py-1.5 [&_svg]:size-4', {
17
+ const itemVariants = cva('flex flex-row items-center gap-2 rounded-md p-2 text-start text-fd-muted-foreground [overflow-wrap:anywhere] md:py-1.5 [&_svg]:size-4 [&_svg]:shrink-0', {
18
18
  variants: {
19
19
  active: {
20
20
  true: 'bg-fd-primary/10 font-medium text-fd-primary',
21
- false: 'transition-colors duration-100 hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',
21
+ false: 'transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none',
22
22
  },
23
23
  },
24
24
  });
@@ -74,12 +74,12 @@ export function SidebarFooter(props) {
74
74
  return (_jsx("div", { ...props, className: cn('flex flex-col border-t px-4 py-3 empty:hidden', props.className), children: props.children }));
75
75
  }
76
76
  export function SidebarViewport(props) {
77
- return (_jsx(ScrollArea, { ...props, className: cn('h-full', props.className), children: _jsx(ScrollViewport, { className: "px-4", style: {
77
+ return (_jsx(ScrollArea, { ...props, className: cn('h-full', props.className), children: _jsx(ScrollViewport, { className: "p-4", style: {
78
78
  maskImage: 'linear-gradient(to bottom, transparent 2px, white 16px)',
79
79
  }, children: props.children }) }));
80
80
  }
81
81
  export function SidebarSeparator(props) {
82
- return (_jsx("p", { ...props, className: cn('mb-2 mt-8 px-2 text-sm font-medium first:mt-0', props.className), children: props.children }));
82
+ return (_jsx("p", { ...props, className: cn('mb-2 px-2 text-sm font-medium', props.className), children: props.children }));
83
83
  }
84
84
  export function SidebarItem({ icon, ...props }) {
85
85
  const pathname = usePathname();
@@ -93,7 +93,7 @@ export function SidebarFolder({ defaultOpen = false, ...props }) {
93
93
  if (v)
94
94
  setOpen(v);
95
95
  });
96
- return (_jsx(Collapsible, { open: open, onOpenChange: setOpen, children: _jsx(FolderContext.Provider, { value: useMemo(() => ({ open, setOpen }), [open]), children: props.children }) }));
96
+ return (_jsx(Collapsible, { open: open, onOpenChange: setOpen, ...props, children: _jsx(FolderContext.Provider, { value: useMemo(() => ({ open, setOpen }), [open]), children: props.children }) }));
97
97
  }
98
98
  export function SidebarFolderTrigger(props) {
99
99
  const { open } = useFolderContext();
@@ -122,7 +122,7 @@ export function SidebarCollapseTrigger(props) {
122
122
  return (_jsx("button", { type: "button", "aria-label": "Collapse Sidebar", "data-collapsed": collapsed, ...props, className: cn(buttonVariants({
123
123
  color: 'ghost',
124
124
  size: 'icon',
125
- }), 'backdrop-blur-lg', props.className), onClick: () => {
125
+ }), props.className), onClick: () => {
126
126
  setCollapsed((prev) => !prev);
127
127
  }, children: props.children ?? _jsx(SidebarIcon, {}) }));
128
128
  }
@@ -152,7 +152,7 @@ export function SidebarPageTree(props) {
152
152
  case 'separator':
153
153
  if (Separator)
154
154
  return _jsx(Separator, { item: item }, id);
155
- return _jsx(SidebarSeparator, { children: item.name }, id);
155
+ return (_jsx(SidebarSeparator, { className: cn(i !== 0 && 'mt-8'), children: item.name }, id));
156
156
  case 'folder':
157
157
  if (Folder)
158
158
  return _jsx(Folder, { item: item, level: level }, id);
@@ -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,EAAE,MAAM,OAAO,CAAC;AAe5D,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAc1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,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,OAAO,EAAE,EACP,OAAO,EAAE,cAAqB,EAC9B,WAAkB,EAClB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA6G7B;AA0FD,OAAO,EAAE,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,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,EAAE,MAAM,OAAO,CAAC;AAe5D,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAa1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,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,OAAO,EAAE,EACP,OAAO,EAAE,cAAqB,EAC9B,WAAkB,EAClB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA0G7B;AA0FD,OAAO,EAAE,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -14,7 +14,6 @@ import { TreeContextProvider } from '../contexts/tree';
14
14
  import { NavProvider, Title } from '../components/layout/nav';
15
15
  import { ThemeToggle } from '../components/layout/theme-toggle';
16
16
  import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle';
17
- import { SearchOnly } from '../contexts/search';
18
17
  import { checkPageTree, getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared';
19
18
  import { StylesProvider } from '../contexts/layout';
20
19
  export function DocsLayout({ nav: { enabled: navEnabled = true, component: navReplace, transparentMode, ...nav } = {}, sidebar: { enabled: sidebarEnabled = true, collapsible = true, component: sidebarReplace, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, hideSearch: sidebarHideSearch, ...sidebar } = {}, i18n = false, ...props }) {
@@ -29,14 +28,14 @@ export function DocsLayout({ nav: { enabled: navEnabled = true, component: navRe
29
28
  tocNav: cn('xl:hidden'),
30
29
  toc: cn('max-xl:hidden'),
31
30
  };
32
- return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsxs(NavProvider, { transparentMode: transparentMode, children: [replaceOrDefault({ enabled: navEnabled, component: navReplace }, _jsxs(Navbar, { className: "md:hidden", children: [_jsx(Title, { url: nav.url, title: nav.title }), _jsx("div", { className: "flex flex-1 flex-row items-center gap-1", children: nav.children }), _jsx(SearchOnly, { children: _jsx(SearchToggle, {}) }), _jsx(NavbarSidebarTrigger, { className: "-me-2 md:hidden" })] }), nav), _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex flex-1 flex-row pe-[var(--fd-layout-offset)]', variables, props.containerProps?.className), style: {
31
+ return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsxs(NavProvider, { transparentMode: transparentMode, children: [replaceOrDefault({ enabled: navEnabled, component: navReplace }, _jsxs(Navbar, { className: "md:hidden", children: [_jsx(Title, { url: nav.url, title: nav.title }), _jsx("div", { className: "flex flex-1 flex-row items-center gap-1", children: nav.children }), _jsx(SearchToggle, { hideIfDisabled: true }), _jsx(NavbarSidebarTrigger, { className: "-me-2 md:hidden" })] }), nav), _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex flex-1 flex-row pe-[var(--fd-layout-offset)]', variables, props.containerProps?.className), style: {
33
32
  ...layoutVariables,
34
33
  ...props.containerProps?.style,
35
- }, children: [collapsible ? (_jsx(SidebarCollapseTrigger, { className: "fixed bottom-3 z-30 data-[collapsed=false]:hidden max-md:hidden", style: {
34
+ }, children: [collapsible ? (_jsx(SidebarCollapseTrigger, { className: "fixed bottom-3 z-30 backdrop-blur-lg data-[collapsed=false]:hidden max-md:hidden", style: {
36
35
  insetInlineStart: 'calc(var(--fd-layout-offset) + 0.5rem)',
37
- } })) : null, replaceOrDefault({ enabled: sidebarEnabled, component: sidebarReplace }, _jsxs(Aside, { ...sidebar, className: cn('md:ps-[var(--fd-layout-offset)]', sidebar.className), children: [_jsxs(SidebarHeader, { children: [_jsx(SidebarHeaderItems, { ...nav, links: links }), sidebarBanner, tabs.length > 0 ? (_jsx(RootToggle, { options: tabs, className: "-mx-2" })) : null, !sidebarHideSearch ? (_jsx(SearchOnly, { children: _jsx(LargeSearchToggle, { className: "rounded-lg max-md:hidden" }) })) : null] }), _jsxs(SidebarViewport, { children: [_jsx("div", { className: "pt-4 empty:hidden md:hidden", children: links
36
+ } })) : null, replaceOrDefault({ enabled: sidebarEnabled, component: sidebarReplace }, _jsxs(Aside, { ...sidebar, className: cn('md:ps-[var(--fd-layout-offset)]', sidebar.className), children: [_jsxs(SidebarHeader, { children: [_jsx(SidebarHeaderItems, { ...nav, links: links }), sidebarBanner, tabs.length > 0 ? (_jsx(RootToggle, { options: tabs, className: "-mx-2" })) : null, !sidebarHideSearch ? (_jsx(LargeSearchToggle, { hideIfDisabled: true, className: "rounded-lg max-md:hidden" })) : null] }), _jsxs(SidebarViewport, { children: [_jsx("div", { className: "mb-4 empty:hidden md:hidden", children: links
38
37
  .filter((v) => v.type !== 'icon')
39
- .map((item, i) => (_jsx(SidebarLinkItem, { item: item }, i))) }), _jsx("div", { className: "py-4", children: _jsx(SidebarPageTree, { components: sidebarComponents }) })] }), _jsxs(SidebarFooter, { children: [_jsx(SidebarFooterItems, { sidebarCollapsible: collapsible, i18n: i18n, disableThemeSwitch: props.disableThemeSwitch ?? false, iconItems: links.filter((v) => v.type === 'icon') }), sidebarFooter] })] }), {
38
+ .map((item, i) => (_jsx(SidebarLinkItem, { item: item }, i))) }), _jsx(SidebarPageTree, { components: sidebarComponents })] }), _jsxs(SidebarFooter, { children: [_jsx(SidebarFooterItems, { sidebarCollapsible: collapsible, i18n: i18n, disableThemeSwitch: props.disableThemeSwitch ?? false, iconItems: links.filter((v) => v.type === 'icon') }), sidebarFooter] })] }), {
40
39
  ...sidebar,
41
40
  tabs,
42
41
  }), _jsx(StylesProvider, { ...pageStyles, children: props.children })] })] }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../src/layouts/home.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AA+B1D,MAAM,WAAW,eACf,SAAQ,eAAe,EACrB,cAAc,CAAC,WAAW,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,CACX,UAAU,GAAG;QACX;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CACF,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA0BhD"}
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../src/layouts/home.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AA8B1D,MAAM,WAAW,eACf,SAAQ,eAAe,EACrB,cAAc,CAAC,WAAW,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,CACX,UAAU,GAAG;QACX;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CACF,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA0BhD"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { replaceOrDefault } from '../layouts/shared';
3
3
  import { cn } from '../utils/cn';
4
4
  import { getLinks } from './shared';
@@ -9,7 +9,6 @@ import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-to
9
9
  import { ThemeToggle } from '../components/layout/theme-toggle';
10
10
  import { LanguageToggle, LanguageToggleText, } from '../components/layout/language-toggle';
11
11
  import { ChevronDown, Languages } from 'lucide-react';
12
- import { SearchOnly } from '../contexts/search';
13
12
  import Link from 'fumadocs-core/link';
14
13
  import { Menu, MenuContent, MenuLinkItem, MenuTrigger, } from '../layouts/home/menu';
15
14
  export function HomeLayout(props) {
@@ -24,7 +23,7 @@ function Header({ nav: { enableSearch = true, ...nav } = {}, i18n = false, final
24
23
  const menuItems = finalLinks.filter((item) => ['menu', 'all'].includes(item.on ?? 'all'));
25
24
  return (_jsxs(Navbar, { children: [_jsx(Title, { title: nav.title, url: nav.url }), nav.children, _jsx(NavigationMenuList, { className: "flex flex-row items-center gap-2 max-sm:hidden", children: navItems
26
25
  .filter((item) => !isSecondary(item))
27
- .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm" }, i))) }), _jsxs("div", { className: "flex flex-1 flex-row items-center justify-end lg:gap-1.5", children: [enableSearch ? (_jsxs(SearchOnly, { children: [_jsx(SearchToggle, { className: "lg:hidden" }), _jsx(LargeSearchToggle, { className: "w-full max-w-[240px] max-lg:hidden" })] })) : null, !disableThemeSwitch ? _jsx(ThemeToggle, { className: "max-lg:hidden" }) : null, i18n ? (_jsx(LanguageToggle, { className: "-me-1.5 max-lg:hidden", children: _jsx(Languages, { className: "size-5" }) })) : null, navItems.filter(isSecondary).map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "-me-1.5 max-lg:hidden" }, i))), _jsxs(Menu, { className: "lg:hidden", children: [_jsx(MenuTrigger, { className: "group -me-2", enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "size-3 transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
26
+ .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm" }, i))) }), _jsxs("div", { className: "flex flex-1 flex-row items-center justify-end lg:gap-1.5", children: [enableSearch ? (_jsxs(_Fragment, { children: [_jsx(SearchToggle, { className: "lg:hidden", hideIfDisabled: true }), _jsx(LargeSearchToggle, { className: "w-full max-w-[240px] max-lg:hidden", hideIfDisabled: true })] })) : null, !disableThemeSwitch ? _jsx(ThemeToggle, { className: "max-lg:hidden" }) : null, i18n ? (_jsx(LanguageToggle, { className: "-me-1.5 max-lg:hidden", children: _jsx(Languages, { className: "size-5" }) })) : null, navItems.filter(isSecondary).map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "-me-1.5 max-lg:hidden" }, i))), _jsxs(Menu, { className: "lg:hidden", children: [_jsx(MenuTrigger, { className: "group -me-2", enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "size-3 transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
28
27
  .filter((item) => !isSecondary(item))
29
28
  .map((item, i) => (_jsx(MenuLinkItem, { item: item, className: "sm:hidden" }, i))), _jsxs("div", { className: "-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2", children: [menuItems.filter(isSecondary).map((item, i) => (_jsx(MenuLinkItem, { item: item, className: "-me-1.5" }, i))), _jsx("div", { role: "separator", className: "flex-1" }), i18n ? (_jsxs(LanguageToggle, { children: [_jsx(Languages, { className: "size-5" }), _jsx(LanguageToggleText, {}), _jsx(ChevronDown, { className: "size-3 text-fd-muted-foreground" })] })) : null, !disableThemeSwitch ? _jsx(ThemeToggle, {}) : null] })] })] })] })] }));
30
29
  }
@@ -13,7 +13,7 @@ export function Navbar(props) {
13
13
  paddingInlineStart: collapsed
14
14
  ? 'calc(var(--fd-layout-offset))'
15
15
  : 'calc(var(--fd-layout-offset) + var(--fd-sidebar-width))',
16
- }, children: _jsx("div", { className: "mx-auto flex size-full flex-row items-center border-b border-fd-foreground/10 px-4 md:gap-1.5 lg:px-8", children: props.children }) }));
16
+ }, children: _jsx("div", { className: "mx-auto flex size-full flex-row items-center border-b border-fd-foreground/10 px-4 md:gap-1.5", children: props.children }) }));
17
17
  }
18
18
  export function NavbarSidebarTrigger(props) {
19
19
  const { open } = useSidebar();
@@ -1 +1 @@
1
- {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AA8B1B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,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,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,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA+E7B"}
1
+ {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AA6B1B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,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,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,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA6E7B"}
@@ -5,7 +5,6 @@ import { CollapsibleSidebar, Sidebar, SidebarCollapseTrigger, SidebarFooter, Sid
5
5
  import { RootToggle } from '../components/layout/root-toggle';
6
6
  import { TreeContextProvider } from '../contexts/tree';
7
7
  import { NavProvider, Title } from '../components/layout/nav';
8
- import { SearchOnly } from '../contexts/search';
9
8
  import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle';
10
9
  import { cn } from '../utils/cn';
11
10
  import Link from 'next/link';
@@ -25,21 +24,21 @@ export function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { c
25
24
  const tabs = getSidebarTabsFromOptions(tabOptions, props.tree) ?? [];
26
25
  const variables = cn('[--fd-nav-height:3.5rem] [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] xl:[--fd-toc-width:268px] xl:[--fd-tocnav-height:0px]');
27
26
  const pageStyles = {
28
- tocNav: cn('lg:px-4 xl:hidden'),
27
+ tocNav: cn('xl:hidden'),
29
28
  toc: cn('max-xl:hidden'),
30
29
  page: cn('mt-[var(--fd-nav-height)]'),
31
30
  };
32
31
  return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsx(NavProvider, { transparentMode: transparentMode, children: _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex w-full flex-1 flex-row pe-[var(--fd-layout-offset)]', variables, props.containerProps?.className), style: {
33
32
  ...layoutVariables,
34
33
  ...props.containerProps?.style,
35
- }, children: [_jsxs(Aside, { ...sidebar, className: cn('md:ps-[var(--fd-layout-offset)] md:[--fd-nav-height:0px]', sidebar.className), children: [_jsxs(SidebarHeader, { children: [_jsxs(SidebarHeaderItems, { nav: nav, links: links, children: [nav.children, sidebarCollapsible ? (_jsx(SidebarCollapseTrigger, { className: "ms-auto text-fd-muted-foreground" })) : null] }), sidebarBanner, tabs.length > 0 ? (_jsx(RootToggle, { options: tabs, className: "-mx-2" })) : null] }), _jsxs(SidebarViewport, { children: [_jsx("div", { className: "pt-4 empty:hidden lg:hidden", children: links.map((item, i) => (_jsx(SidebarLinkItem, { item: item }, i))) }), _jsx("div", { className: "py-4", children: _jsx(SidebarPageTree, { components: sidebarComponents }) })] }), _jsxs(SidebarFooter, { className: cn(!sidebarFooter && 'md:hidden'), children: [!props.disableThemeSwitch ? (_jsx(ThemeToggle, { className: "w-fit md:hidden" })) : null, sidebarFooter] })] }), _jsx(DocsNavbar, { nav: nav, links: links, i18n: i18n, sidebarCollapsible: sidebarCollapsible }), _jsx(StylesProvider, { ...pageStyles, children: props.children })] }) }) }));
34
+ }, children: [_jsxs(Aside, { ...sidebar, className: cn('md:ps-[var(--fd-layout-offset)] md:[--fd-nav-height:0px]', sidebar.className), children: [_jsxs(SidebarHeader, { children: [_jsxs(SidebarHeaderItems, { nav: nav, links: links, children: [nav.children, sidebarCollapsible ? (_jsx(SidebarCollapseTrigger, { className: "ms-auto text-fd-muted-foreground" })) : null] }), sidebarBanner, tabs.length > 0 ? (_jsx(RootToggle, { options: tabs, className: "-mx-2" })) : null] }), _jsxs(SidebarViewport, { children: [_jsx("div", { className: "mb-4 empty:hidden lg:hidden", children: links.map((item, i) => (_jsx(SidebarLinkItem, { item: item }, i))) }), _jsx(SidebarPageTree, { components: sidebarComponents })] }), _jsxs(SidebarFooter, { className: cn(!sidebarFooter && 'md:hidden'), children: [!props.disableThemeSwitch ? (_jsx(ThemeToggle, { className: "w-fit md:hidden" })) : null, sidebarFooter] })] }), _jsx(DocsNavbar, { nav: nav, links: links, i18n: i18n, sidebarCollapsible: sidebarCollapsible }), _jsx(StylesProvider, { ...pageStyles, children: props.children })] }) }) }));
36
35
  }
37
36
  function DocsNavbar({ sidebarCollapsible, links, nav = {}, i18n, }) {
38
- return (_jsxs(Navbar, { children: [sidebarCollapsible ? (_jsx(SidebarCollapseTrigger, { className: "-ms-1.5 text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden" })) : null, _jsx(SearchOnly, { children: _jsx(LargeSearchToggle, { className: "w-full max-w-[240px] rounded-lg max-md:hidden" }) }), _jsx(Title, { url: nav.url, title: nav.title, className: "md:hidden" }), _jsxs("div", { className: "flex flex-1 flex-row items-center gap-6 px-2", children: [links
37
+ return (_jsxs(Navbar, { children: [sidebarCollapsible ? (_jsx(SidebarCollapseTrigger, { className: "-ms-1.5 text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden" })) : null, _jsx(LargeSearchToggle, { hideIfDisabled: true, className: "w-full max-w-[240px] rounded-lg max-md:hidden" }), _jsx(Title, { url: nav.url, title: nav.title, className: "md:hidden" }), _jsxs("div", { className: "flex flex-1 flex-row items-center gap-6 px-2", children: [links
39
38
  .filter((item) => item.type !== 'icon')
40
- .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground max-lg:hidden" }, i))), nav.children] }), _jsx(SearchOnly, { children: _jsx(SearchToggle, { className: "md:hidden" }) }), _jsx(NavbarSidebarTrigger, { className: "-me-1.5 md:hidden" }), _jsx("div", { className: "flex flex-row items-center empty:hidden max-lg:hidden", children: links
39
+ .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground max-lg:hidden" }, i))), nav.children] }), _jsx(SearchToggle, { hideIfDisabled: true, className: "md:hidden" }), _jsx(NavbarSidebarTrigger, { className: "-me-1.5 md:hidden" }), _jsx("div", { className: "flex flex-row items-center empty:hidden max-lg:hidden", children: links
41
40
  .filter((item) => item.type === 'icon')
42
- .map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({ size: 'icon', color: 'ghost' }), 'text-fd-muted-foreground'), "aria-label": item.label, children: item.icon }, i))) }), i18n ? (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-5" }) })) : null, _jsx(ThemeToggle, { className: "p-0 max-md:hidden" })] }));
41
+ .map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({ size: 'icon', color: 'ghost' }), 'text-fd-muted-foreground'), "aria-label": item.label, children: item.icon }, i))) }), i18n ? (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-5" }) })) : null, _jsx(ThemeToggle, { className: "max-md:hidden", mode: "light-dark-system" })] }));
43
42
  }
44
43
  function NavbarLinkItem({ item, ...props }) {
45
44
  if (item.type === 'menu') {
package/dist/style.css CHANGED
@@ -1648,10 +1648,6 @@ body {
1648
1648
  padding-top: 0.75rem;
1649
1649
  padding-bottom: 0.75rem;
1650
1650
  }
1651
- .py-4 {
1652
- padding-top: 1rem;
1653
- padding-bottom: 1rem;
1654
- }
1655
1651
  .pb-2 {
1656
1652
  padding-bottom: 0.5rem;
1657
1653
  }
@@ -1694,9 +1690,6 @@ body {
1694
1690
  .pt-2 {
1695
1691
  padding-top: 0.5rem;
1696
1692
  }
1697
- .pt-4 {
1698
- padding-top: 1rem;
1699
- }
1700
1693
  .pt-8 {
1701
1694
  padding-top: 2rem;
1702
1695
  }
@@ -1896,6 +1889,35 @@ body {
1896
1889
  .prose-no-margin > :last-child {
1897
1890
  margin-bottom: 0;
1898
1891
  }
1892
+ .fd-steps {
1893
+ counter-reset: step;
1894
+ border-left-width: 1px;
1895
+ margin-left: 1rem;
1896
+ padding-left: 1.75rem;
1897
+ position: relative;
1898
+ }
1899
+ .fd-step:before {
1900
+ background-color: hsl(var(--fd-secondary) / 1);
1901
+ color: hsl(var(--fd-secondary-foreground) / 1);
1902
+ content: counter(step);
1903
+ counter-increment: step;
1904
+ border-radius: 9999px;
1905
+ justify-content: center;
1906
+ align-items: center;
1907
+ width: 2rem;
1908
+ height: 2rem;
1909
+ font-size: .875rem;
1910
+ line-height: 1.25rem;
1911
+ display: flex;
1912
+ position: absolute;
1913
+ left: -1rem;
1914
+ }
1915
+ .prose-no-margin > :first-child {
1916
+ margin-top: 0;
1917
+ }
1918
+ .prose-no-margin > :last-child {
1919
+ margin-bottom: 0;
1920
+ }
1899
1921
  .\[--fd-nav-height\:3\.5rem\] {
1900
1922
  --fd-nav-height: 3.5rem;
1901
1923
  }
@@ -1925,10 +1947,6 @@ body {
1925
1947
  color: hsl(var(--fd-muted-foreground) / var(--tw-text-opacity, 1));
1926
1948
  }
1927
1949
 
1928
- .first\:mt-0:first-child {
1929
- margin-top: 0px;
1930
- }
1931
-
1932
1950
  .first\:pt-0:first-child {
1933
1951
  padding-top: 0px;
1934
1952
  }
@@ -2318,25 +2336,6 @@ body {
2318
2336
  background-color: var(--shiki-dark-bg);
2319
2337
  }
2320
2338
 
2321
- .dark\:bg-fd-accent:is(.dark *) {
2322
- --tw-bg-opacity: 1;
2323
- background-color: hsl(var(--fd-accent) / var(--tw-bg-opacity, 1));
2324
- }
2325
-
2326
- .dark\:bg-transparent:is(.dark *) {
2327
- background-color: transparent;
2328
- }
2329
-
2330
- .dark\:text-fd-accent-foreground:is(.dark *) {
2331
- --tw-text-opacity: 1;
2332
- color: hsl(var(--fd-accent-foreground) / var(--tw-text-opacity, 1));
2333
- }
2334
-
2335
- .dark\:text-fd-muted-foreground:is(.dark *) {
2336
- --tw-text-opacity: 1;
2337
- color: hsl(var(--fd-muted-foreground) / var(--tw-text-opacity, 1));
2338
- }
2339
-
2340
2339
  @media not all and (min-width: 1280px) {
2341
2340
 
2342
2341
  .max-xl\:hidden {
@@ -2550,11 +2549,6 @@ body {
2550
2549
  border-width: 1px;
2551
2550
  }
2552
2551
 
2553
- .lg\:px-4 {
2554
- padding-left: 1rem;
2555
- padding-right: 1rem;
2556
- }
2557
-
2558
2552
  .lg\:px-8 {
2559
2553
  padding-left: 2rem;
2560
2554
  padding-right: 2rem;
@@ -2625,3 +2619,7 @@ body {
2625
2619
  width: 1.25rem;
2626
2620
  height: 1.25rem;
2627
2621
  }
2622
+
2623
+ .\[\&_svg\]\:shrink-0 svg {
2624
+ flex-shrink: 0;
2625
+ }
@@ -31,6 +31,12 @@ export interface DocsUIOptions extends Pick<TypographyOptions, 'disableRoundedTa
31
31
  */
32
32
  preset?: keyof typeof presets | Preset;
33
33
  typography?: TypographyOptions;
34
+ /**
35
+ * Add Fumadocs UI `fd-*` utilities
36
+ *
37
+ * @defaultValue true
38
+ */
39
+ addGlobalUtils?: boolean;
34
40
  }
35
41
  type Keys = 'background' | 'foreground' | 'muted' | 'muted-foreground' | 'popover' | 'popover-foreground' | 'card' | 'card-foreground' | 'border' | 'primary' | 'primary-foreground' | 'secondary' | 'secondary-foreground' | 'accent' | 'accent-foreground' | 'ring';
36
42
  type Theme = Record<Keys, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-plugin.d.ts","sourceRoot":"","sources":["../src/tailwind-plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACL,KAAK,OAAO,IAAI,iBAAiB,EACjC,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;IACtD;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,MAAM,CAAC;IAEvC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,KAAK,IAAI,GACL,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,kBAAkB,GAClB,SAAS,GACT,oBAAoB,GACpB,MAAM,GACN,iBAAiB,GACjB,QAAQ,GACR,SAAS,GACT,oBAAoB,GACpB,WAAW,GACX,sBAAsB,GACtB,QAAQ,GACR,mBAAmB,GACnB,MAAM,CAAC;AAEX,KAAK,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAElC,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAkDD,eAAO,MAAM,MAAM;;;cApHH,CAAC;;;CA6QhB,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,aAAa,CAWvE;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"tailwind-plugin.d.ts","sourceRoot":"","sources":["../src/tailwind-plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACL,KAAK,OAAO,IAAI,iBAAiB,EACjC,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;IACtD;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,OAAO,GAAG,MAAM,CAAC;IAEvC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAG/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,KAAK,IAAI,GACL,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,kBAAkB,GAClB,SAAS,GACT,oBAAoB,GACpB,MAAM,GACN,iBAAiB,GACjB,QAAQ,GACR,SAAS,GACT,oBAAoB,GACpB,WAAW,GACX,sBAAsB,GACtB,QAAQ,GACR,mBAAmB,GACnB,MAAM,CAAC;AAEX,KAAK,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAElC,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAwFD,eAAO,MAAM,MAAM;;;cAlKH,CAAC;;;CAoShB,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,aAAa,CAWvE;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
@@ -37,7 +37,43 @@ function createTailwindColors(prefix, cloneToGlobal) {
37
37
  }
38
38
  return Object.fromEntries(v.entries());
39
39
  }
40
- export const docsUi = plugin.withOptions(({ cssPrefix = 'fd', preset = 'default', layoutWidth = '100vw' } = {}) => {
40
+ function createTailwindUtilities(prefix) {
41
+ const append = prefix.length > 0 ? prefix + '-' : prefix;
42
+ return {
43
+ [`.${append}steps`]: {
44
+ 'counter-reset': 'step',
45
+ 'border-left-width': '1px',
46
+ 'margin-left': '1rem',
47
+ 'padding-left': '1.75rem',
48
+ position: 'relative',
49
+ },
50
+ [`.${append}step:before`]: {
51
+ 'background-color': `theme('colors.fd-secondary.DEFAULT')`,
52
+ color: `theme('colors.fd-secondary.foreground')`,
53
+ content: 'counter(step)',
54
+ 'counter-increment': 'step',
55
+ 'border-radius': `theme('borderRadius.full')`,
56
+ 'justify-content': 'center',
57
+ 'align-items': 'center',
58
+ width: '2rem',
59
+ height: '2rem',
60
+ 'font-size': '.875rem',
61
+ 'line-height': '1.25rem',
62
+ display: 'flex',
63
+ position: 'absolute',
64
+ left: '-1rem',
65
+ },
66
+ '.prose-no-margin': {
67
+ '& > :first-child': {
68
+ marginTop: '0',
69
+ },
70
+ '& > :last-child': {
71
+ marginBottom: '0',
72
+ },
73
+ },
74
+ };
75
+ }
76
+ export const docsUi = plugin.withOptions(({ cssPrefix = 'fd', preset = 'default', layoutWidth = '100vw', addGlobalUtils = true, } = {}) => {
41
77
  return ({ addBase, addComponents, addUtilities }) => {
42
78
  const { light, dark, css } = typeof preset === 'string' ? presets[preset] : preset;
43
79
  addBase({
@@ -118,39 +154,10 @@ export const docsUi = plugin.withOptions(({ cssPrefix = 'fd', preset = 'default'
118
154
  borderRadius: '2px',
119
155
  },
120
156
  });
121
- addUtilities({
122
- '.steps': {
123
- 'counter-reset': 'step',
124
- 'border-left-width': '1px',
125
- 'margin-left': '1rem',
126
- 'padding-left': '1.75rem',
127
- position: 'relative',
128
- },
129
- '.step:before': {
130
- 'background-color': `theme('colors.fd-secondary.DEFAULT')`,
131
- color: `theme('colors.fd-secondary.foreground')`,
132
- content: 'counter(step)',
133
- 'counter-increment': 'step',
134
- 'border-radius': `theme('borderRadius.full')`,
135
- 'justify-content': 'center',
136
- 'align-items': 'center',
137
- width: '2rem',
138
- height: '2rem',
139
- 'font-size': '.875rem',
140
- 'line-height': '1.25rem',
141
- display: 'flex',
142
- position: 'absolute',
143
- left: '-1rem',
144
- },
145
- '.prose-no-margin': {
146
- '& > :first-child': {
147
- marginTop: '0',
148
- },
149
- '& > :last-child': {
150
- marginBottom: '0',
151
- },
152
- },
153
- });
157
+ if (addGlobalUtils) {
158
+ addUtilities(createTailwindUtilities(''));
159
+ }
160
+ addUtilities(createTailwindUtilities('fd'));
154
161
  };
155
162
  }, ({ cssPrefix = 'fd', modifyContainer = true, addGlobalColors = false, } = {}) => ({
156
163
  theme: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "14.7.4",
3
+ "version": "14.7.6",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -63,26 +63,26 @@
63
63
  "@radix-ui/react-tabs": "^1.1.2",
64
64
  "class-variance-authority": "^0.7.1",
65
65
  "lodash.merge": "^4.6.2",
66
- "lucide-react": "^0.471.1",
66
+ "lucide-react": "^0.473.0",
67
67
  "next-themes": "^0.4.4",
68
68
  "postcss-selector-parser": "^7.0.0",
69
69
  "react-medium-image-zoom": "^5.2.13",
70
70
  "tailwind-merge": "^2.6.0"
71
71
  },
72
72
  "devDependencies": {
73
- "@next/eslint-plugin-next": "^15.1.4",
73
+ "@next/eslint-plugin-next": "^15.1.5",
74
74
  "@types/lodash.merge": "^4.6.9",
75
75
  "@types/react": "^19.0.7",
76
76
  "@types/react-dom": "^19.0.3",
77
77
  "autoprefixer": "^10.4.20",
78
- "next": "15.1.4",
78
+ "next": "15.1.5",
79
79
  "postcss": "^8.5.1",
80
80
  "postcss-cli": "^11.0.0",
81
81
  "tailwindcss": "^3.4.17",
82
82
  "tsc-alias": "^1.8.10",
83
83
  "@fumadocs/cli": "0.0.7",
84
84
  "eslint-config-custom": "0.0.0",
85
- "fumadocs-core": "14.7.4",
85
+ "fumadocs-core": "14.7.6",
86
86
  "tsconfig": "0.0.0"
87
87
  },
88
88
  "peerDependencies": {
@@ -90,7 +90,7 @@
90
90
  "react": "18.x.x || 19.x.x",
91
91
  "react-dom": "18.x.x || 19.x.x",
92
92
  "tailwindcss": "^3.4.14",
93
- "fumadocs-core": "14.7.4"
93
+ "fumadocs-core": "14.7.6"
94
94
  },
95
95
  "peerDependenciesMeta": {
96
96
  "tailwindcss": {