fumadocs-ui 15.7.3 → 15.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/css/shiki.css CHANGED
@@ -1,6 +1,6 @@
1
1
  .shiki:not(.not-fumadocs-codeblock *) {
2
- --padding-left: calc(var(--spacing) * 3);
3
- --padding-right: calc(var(--spacing) * 3);
2
+ --padding-left: calc(var(--spacing) * 4);
3
+ --padding-right: calc(var(--spacing) * 4);
4
4
 
5
5
  code span {
6
6
  color: var(--shiki-light);
@@ -44,7 +44,7 @@
44
44
 
45
45
  code .diff::before {
46
46
  position: absolute;
47
- left: var(--spacing);
47
+ left: calc(var(--spacing) * 1.5);
48
48
  }
49
49
 
50
50
  code .diff.remove {
@@ -70,7 +70,9 @@
70
70
 
71
71
  code .highlighted {
72
72
  --fd-counter-color: var(--color-fd-primary);
73
- @apply bg-fd-primary/10;
73
+ padding-left: calc(var(--padding-left) - 2px);
74
+
75
+ @apply border-l-2 border-fd-primary/50 bg-fd-primary/10;
74
76
  }
75
77
 
76
78
  code .highlighted-word {
@@ -1 +1 @@
1
- {"version":3,"file":"codeblock.d.ts","sourceRoot":"","sources":["../../src/components/codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC9D;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,aAAa,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAC;CAC9E;AAOD,wBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAS/C;AAED,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,KAAK,EACL,SAAS,EACT,cAAsB,EACtB,IAAI,EACJ,aAAkB,EAClB,QAAQ,EACR,OAEC,EACD,GAAG,KAAK,EACT,EAAE,cAAc,2CAwEhB;AAuCD,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,IAAI,CAAC,2CA2B3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,2CAoBvE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAapC;AAGD,eAAO,MAAM,YAAY,oBAAc,CAAC"}
1
+ {"version":3,"file":"codeblock.d.ts","sourceRoot":"","sources":["../../src/components/codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC9D;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,aAAa,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAC;CAC9E;AAOD,wBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAS/C;AAED,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,KAAK,EACL,SAAS,EACT,cAAsB,EACtB,IAAI,EACJ,aAAkB,EAClB,QAAQ,EACR,OAEC,EACD,GAAG,KAAK,EACT,EAAE,cAAc,2CAiEhB;AAwCD,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,IAAI,CAAC,2CA2B3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,2CAoBvE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAapC;AAGD,eAAO,MAAM,YAAY,oBAAc,CAAC"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Check, Copy } from '../icons.js';
3
+ import { Check, Clipboard } from '../icons.js';
4
4
  import { createContext, useContext, useMemo, useRef, } from 'react';
5
5
  import { cn } from '../utils/cn.js';
6
6
  import { useCopyButton } from '../utils/use-copy-button.js';
@@ -12,18 +12,18 @@ export function Pre(props) {
12
12
  return (_jsx("pre", { ...props, className: cn('min-w-full w-max *:flex *:flex-col', props.className), children: props.children }));
13
13
  }
14
14
  export function CodeBlock({ ref, title, allowCopy, keepBackground = false, icon, viewportProps = {}, children, Actions = (props) => (_jsx("div", { ...props, className: cn('empty:hidden', props.className) })), ...props }) {
15
- const isTab = useContext(TabsContext) !== null;
15
+ const inTab = useContext(TabsContext) !== null;
16
16
  const areaRef = useRef(null);
17
- allowCopy ?? (allowCopy = !isTab);
18
- const bg = cn('bg-fd-secondary', keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)');
19
- return (_jsxs("figure", { ref: ref, dir: "ltr", ...props, className: cn(isTab ? [bg, 'rounded-lg'] : 'my-4 rounded-xl bg-fd-card p-1', 'shiki relative border shadow-sm outline-none not-prose overflow-hidden text-sm', props.className), children: [title ? (_jsxs("div", { className: cn('flex text-fd-muted-foreground items-center gap-2 ps-3 h-9.5', isTab && 'border-b'), children: [typeof icon === 'string' ? (_jsx("div", { className: "[&_svg]:size-3.5", dangerouslySetInnerHTML: {
17
+ allowCopy ?? (allowCopy = !inTab);
18
+ return (_jsxs("figure", { ref: ref, dir: "ltr", ...props, className: cn(inTab ? 'rounded-lg bg-fd-secondary' : 'my-4 rounded-xl bg-fd-card', keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)', 'shiki relative border shadow-md outline-none not-prose overflow-hidden text-sm', props.className), children: [title ? (_jsxs("div", { className: "flex text-fd-muted-foreground items-center gap-2 h-9.5 border-b px-4", children: [typeof icon === 'string' ? (_jsx("div", { className: "[&_svg]:size-3.5", dangerouslySetInnerHTML: {
20
19
  __html: icon,
21
20
  } })) : (icon), _jsx("figcaption", { className: "flex-1 truncate", children: title }), Actions({
21
+ className: '-me-2',
22
22
  children: allowCopy && _jsx(CopyButton, { containerRef: areaRef }),
23
23
  })] })) : (Actions({
24
- className: 'absolute top-1 right-1 z-2 bg-fd-card rounded-bl-lg border-l border-b text-fd-muted-foreground',
24
+ className: 'absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground',
25
25
  children: allowCopy && _jsx(CopyButton, { containerRef: areaRef }),
26
- })), _jsx("div", { ref: areaRef, ...viewportProps, className: cn(!isTab && [bg, 'rounded-lg border'], 'text-[13px] py-3.5 overflow-auto max-h-[600px] fd-scroll-container', viewportProps.className), style: {
26
+ })), _jsx("div", { ref: areaRef, ...viewportProps, className: cn('text-[13px] py-3.5 overflow-auto max-h-[600px] fd-scroll-container', viewportProps.className), style: {
27
27
  // space for toolbar
28
28
  '--padding-right': !title ? 'calc(var(--spacing) * 8)' : undefined,
29
29
  counterSet: props['data-line-numbers']
@@ -44,23 +44,24 @@ function CopyButton({ className, containerRef, ...props }) {
44
44
  void navigator.clipboard.writeText(clone.textContent ?? '');
45
45
  });
46
46
  return (_jsx("button", { type: "button", className: cn(buttonVariants({
47
- className: '[&_svg]:size-3.5 hover:text-fd-accent-foreground',
48
- }), className), "aria-label": checked ? 'Copied Text' : 'Copy Text', onClick: onClick, ...props, children: checked ? _jsx(Check, {}) : _jsx(Copy, {}) }));
47
+ className: 'hover:text-fd-accent-foreground',
48
+ size: 'icon-xs',
49
+ }), className), "aria-label": checked ? 'Copied Text' : 'Copy Text', onClick: onClick, ...props, children: checked ? _jsx(Check, {}) : _jsx(Clipboard, {}) }));
49
50
  }
50
51
  export function CodeBlockTabs({ ref, ...props }) {
51
52
  const containerRef = useRef(null);
52
53
  const nested = useContext(TabsContext) !== null;
53
- return (_jsx(Tabs, { ref: mergeRefs(containerRef, ref), ...props, className: cn('bg-fd-card p-1 rounded-xl border overflow-hidden', !nested && 'my-4', props.className), children: _jsx(TabsContext.Provider, { value: useMemo(() => ({
54
+ return (_jsx(Tabs, { ref: mergeRefs(containerRef, ref), ...props, className: cn('bg-fd-card p-1 rounded-xl border overflow-hidden', nested ? 'shadow-sm' : '-m-1 my-4', props.className), children: _jsx(TabsContext.Provider, { value: useMemo(() => ({
54
55
  containerRef,
55
56
  nested,
56
57
  }), [nested]), children: props.children }) }));
57
58
  }
58
59
  export function CodeBlockTabsList(props) {
59
60
  const { containerRef, nested } = useContext(TabsContext);
60
- return (_jsxs(TabsList, { ...props, className: cn('flex flex-row overflow-x-auto px-1 -mx-1 text-fd-muted-foreground', props.className), children: [props.children, !nested && (_jsx(CopyButton, { className: "sticky ms-auto right-0 bg-fd-card backdrop-blur-sm", containerRef: containerRef }))] }));
61
+ return (_jsxs(TabsList, { ...props, className: cn('flex flex-row *:first:ms-2 overflow-x-auto text-fd-muted-foreground', props.className), children: [props.children, !nested && (_jsx(CopyButton, { className: "sticky ms-auto right-2 bg-fd-card backdrop-blur-sm", containerRef: containerRef }))] }));
61
62
  }
62
63
  export function CodeBlockTabsTrigger({ children, ...props }) {
63
- return (_jsxs(TabsTrigger, { ...props, className: cn('relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 first:ms-1 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5', props.className), children: [_jsx("div", { className: "absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary" }), children] }));
64
+ return (_jsxs(TabsTrigger, { ...props, className: cn('relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5', props.className), children: [_jsx("div", { className: "absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary" }), children] }));
64
65
  }
65
66
  // TODO: currently Vite RSC plugin has problem with adding `asChild` here, maybe revisit this in future
66
67
  export const CodeBlockTab = TabsContent;
@@ -46,7 +46,7 @@ export function SearchDialogFooter(props) {
46
46
  return (_jsx("div", { ...props, className: cn('bg-fd-secondary/50 p-3 empty:hidden', props.className) }));
47
47
  }
48
48
  export function SearchDialogOverlay(props) {
49
- return (_jsx(DialogOverlay, { ...props, className: cn('fixed inset-0 z-50 max-md:backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out', props.className) }));
49
+ return (_jsx(DialogOverlay, { ...props, className: cn('fixed inset-0 z-50 backdrop-blur-xs data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out', props.className) }));
50
50
  }
51
51
  export function SearchDialogContent({ children, ...props }) {
52
52
  const { text } = useI18n();
package/dist/icons.d.ts CHANGED
@@ -30,6 +30,7 @@ export declare const Check: import("react").ForwardRefExoticComponent<Omit<Lucid
30
30
  export declare const TriangleAlert: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
31
31
  export declare const Info: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
32
32
  export declare const Copy: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
33
+ export declare const Clipboard: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
33
34
  export declare const FileText: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
34
35
  export declare const Hash: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
35
36
  export declare const Text: import("react").ForwardRefExoticComponent<Omit<LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,cAAc,EAA6B,MAAM,OAAO,CAAC;AAevE,KAAK,cAAc,GACf,QAAQ,GACR,SAAS,GACT,GAAG,GACH,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAC9B,EAAE,CAAC;AA6BJ,eAAO,MAAM,WAAW,oHAEtB,CAAC;AAEH,eAAO,MAAM,SAAS,oHAOpB,CAAC;AAEH,eAAO,MAAM,OAAO,oHAMlB,CAAC;AAEH,eAAO,MAAM,cAAc,oHAGzB,CAAC;AAEH,eAAO,MAAM,MAAM,oHAGjB,CAAC;AAEH,eAAO,MAAM,YAAY,oHAUvB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAEf,CAAC;AAEH,eAAO,MAAM,GAAG,oHAUd,CAAC;AAEH,eAAO,MAAM,OAAO,oHASlB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,CAAC,oHAGZ,CAAC;AAEH,eAAO,MAAM,YAAY,oHAEvB,CAAC;AAEH,eAAO,MAAM,WAAW,oHAGtB,CAAC;AAEH,eAAO,MAAM,OAAO,oHAIlB,CAAC;AAEH,eAAO,MAAM,KAAK,oHAEhB,CAAC;AAEH,eAAO,MAAM,aAAa,oHAUxB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAoBf,CAAC;AAEH,eAAO,MAAM,QAAQ,oHAYnB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAKf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,IAAI,oHASf,CAAC;AAEH,eAAO,MAAM,MAAM,oHAQjB,CAAC;AAEH,eAAO,MAAM,UAAU,oHAQrB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAQf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAef,CAAC;AAEH,eAAO,MAAM,IAAI,oHAef,CAAC;AAEH,eAAO,MAAM,YAAY,oHAEvB,CAAC;AAEH,eAAO,MAAM,WAAW,oHAEtB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAGf,CAAC;AAEH,eAAO,MAAM,MAAM,oHAMjB,CAAC;AAEH,eAAO,MAAM,SAAS,oHAEpB,CAAC"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,cAAc,EAA6B,MAAM,OAAO,CAAC;AAevE,KAAK,cAAc,GACf,QAAQ,GACR,SAAS,GACT,GAAG,GACH,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAC9B,EAAE,CAAC;AA6BJ,eAAO,MAAM,WAAW,oHAEtB,CAAC;AAEH,eAAO,MAAM,SAAS,oHAOpB,CAAC;AAEH,eAAO,MAAM,OAAO,oHAMlB,CAAC;AAEH,eAAO,MAAM,cAAc,oHAGzB,CAAC;AAEH,eAAO,MAAM,MAAM,oHAGjB,CAAC;AAEH,eAAO,MAAM,YAAY,oHAUvB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAEf,CAAC;AAEH,eAAO,MAAM,GAAG,oHAUd,CAAC;AAEH,eAAO,MAAM,OAAO,oHASlB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,CAAC,oHAGZ,CAAC;AAEH,eAAO,MAAM,YAAY,oHAEvB,CAAC;AAEH,eAAO,MAAM,WAAW,oHAGtB,CAAC;AAEH,eAAO,MAAM,OAAO,oHAIlB,CAAC;AAEH,eAAO,MAAM,KAAK,oHAEhB,CAAC;AAEH,eAAO,MAAM,aAAa,oHAUxB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAoBf,CAAC;AAEH,eAAO,MAAM,SAAS,oHAoBpB,CAAC;AAEH,eAAO,MAAM,QAAQ,oHAYnB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAKf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAIf,CAAC;AAEH,eAAO,MAAM,IAAI,oHASf,CAAC;AAEH,eAAO,MAAM,MAAM,oHAQjB,CAAC;AAEH,eAAO,MAAM,UAAU,oHAQrB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAQf,CAAC;AAEH,eAAO,MAAM,IAAI,oHAef,CAAC;AAEH,eAAO,MAAM,IAAI,oHAef,CAAC;AAEH,eAAO,MAAM,YAAY,oHAEvB,CAAC;AAEH,eAAO,MAAM,WAAW,oHAEtB,CAAC;AAEH,eAAO,MAAM,IAAI,oHAGf,CAAC;AAEH,eAAO,MAAM,MAAM,oHAMjB,CAAC;AAEH,eAAO,MAAM,SAAS,oHAEpB,CAAC"}
package/dist/icons.js CHANGED
@@ -146,6 +146,27 @@ export const Copy = createLucideIcon('copy', [
146
146
  },
147
147
  ],
148
148
  ]);
149
+ export const Clipboard = createLucideIcon('clipboard', [
150
+ [
151
+ 'rect',
152
+ {
153
+ width: '8',
154
+ height: '4',
155
+ x: '8',
156
+ y: '2',
157
+ rx: '1',
158
+ ry: '1',
159
+ key: '1',
160
+ },
161
+ ],
162
+ [
163
+ 'path',
164
+ {
165
+ d: 'M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2',
166
+ key: '2',
167
+ },
168
+ ],
169
+ ]);
149
170
  export const FileText = createLucideIcon('file-text', [
150
171
  [
151
172
  'path',
@@ -1,13 +1,9 @@
1
1
  import { type ComponentProps } from 'react';
2
2
  import type { PageTree } from 'fumadocs-core/server';
3
3
  import { type BreadcrumbOptions } from 'fumadocs-core/breadcrumb';
4
- import { type AnchorProviderProps } from 'fumadocs-core/toc';
5
4
  export declare function PageTOCPopoverTrigger(props: ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
6
5
  export declare function PageTOCPopoverContent(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
7
6
  export declare function PageTOCPopover(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
8
- export interface RootProps extends ComponentProps<'div'> {
9
- toc: Omit<AnchorProviderProps, 'children'>;
10
- }
11
7
  export declare function PageLastUpdate({ date: value, ...props }: Omit<ComponentProps<'p'>, 'children'> & {
12
8
  date: Date | string;
13
9
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"page-client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAAE,KAAK,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AAO9E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAoDpE;AA4DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAuD1D;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,KAAK,CAAC;IACtD,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,2CAiBjE;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAyBD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAiC1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAmB,EACnB,gBAAgB,EAChB,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAiBnD"}
1
+ {"version":3,"file":"page-client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAMpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAkBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAoDpE;AA4DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAuD1D;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,2CAiBjE;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAyBD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAiC1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAmB,EACnB,gBAAgB,EAChB,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAqBnD"}
@@ -146,9 +146,12 @@ export function PageBreadcrumb({ includeRoot = false, includeSeparator, includeP
146
146
  }) }));
147
147
  }
148
148
  export function PageTOC(props) {
149
- return (_jsx("div", { id: "nd-toc", ...props, className: cn('sticky pb-2 pt-12 max-xl:hidden', props.className), style: {
149
+ const { collapsed } = useSidebar();
150
+ return (_jsx("div", { id: "nd-toc", ...props, className: cn('fixed bottom-0 pb-2 pt-12 max-xl:hidden', props.className), style: {
150
151
  ...props.style,
151
152
  top: 'calc(var(--fd-banner-height) + var(--fd-nav-height))',
152
- height: 'calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))',
153
+ insetInlineEnd: collapsed
154
+ ? 'max(0px, calc(50vw - var(--fd-sidebar-width)/2 - var(--fd-page-width)/2))'
155
+ : 'max(var(--fd-layout-offset), calc(50vw - var(--fd-sidebar-width)/2 - var(--fd-page-width)/2))',
153
156
  }, children: _jsx("div", { className: "flex h-full w-(--fd-toc-width) max-w-full flex-col pe-4", children: props.children }) }));
154
157
  }
@@ -1,5 +1,6 @@
1
1
  import { type ComponentProps } from 'react';
2
- import { type BreadcrumbProps, type FooterProps, PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger, type RootProps } from './page-client.js';
2
+ import { type BreadcrumbProps, type FooterProps, PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger } from './page-client.js';
3
+ import type { AnchorProviderProps } from 'fumadocs-core/toc';
3
4
  /**
4
5
  * Apply `prose` on div
5
6
  */
@@ -12,6 +13,9 @@ export declare function PageTOCPopoverItems({ variant, ...props }: ComponentProp
12
13
  variant?: 'clerk' | 'normal';
13
14
  }): import("react/jsx-runtime").JSX.Element;
14
15
  export declare function PageArticle(props: ComponentProps<'article'>): import("react/jsx-runtime").JSX.Element;
16
+ export interface RootProps extends ComponentProps<'div'> {
17
+ toc?: Omit<AnchorProviderProps, 'children'> | false;
18
+ }
15
19
  export declare function PageRoot({ toc, children, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
16
- export { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverTrigger, PageTOCPopoverContent, type FooterProps, type BreadcrumbProps, type RootProps, };
20
+ export { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverTrigger, PageTOCPopoverContent, type FooterProps, type BreadcrumbProps, };
17
21
  //# sourceMappingURL=page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAMvB;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAMrD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,2CAavD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,2CAM1D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,2CAM1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,2CAY3D;AAED,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CAe9D;AAED,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,GACf,CAAC"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAMrD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,2CAavD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,2CAM1D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,2CAM1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,2CAY3D;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,KAAK,CAAC;IACtD,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;CACrD;AAED,wBAAgB,QAAQ,CAAC,EAAE,GAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CAgBtE;AAED,OAAO,EACL,cAAc,EACd,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,CAAC"}
@@ -23,7 +23,10 @@ export function PageTOCPopoverItems({ variant = 'normal', ...props }) {
23
23
  export function PageArticle(props) {
24
24
  return (_jsx("article", { ...props, className: cn('flex min-w-0 w-full flex-col gap-4 pt-8 px-4 md:px-6 md:mx-auto', props.className), children: props.children }));
25
25
  }
26
- export function PageRoot({ toc, children, ...props }) {
27
- return (_jsx(TOCProvider, { ...toc, children: _jsx("div", { id: "nd-page", ...props, className: cn('flex flex-1 w-full mx-auto max-w-(--fd-page-width) pt-(--fd-tocnav-height)', props.className), children: children }) }));
26
+ export function PageRoot({ toc = false, children, ...props }) {
27
+ const content = (_jsx("div", { id: "nd-page", ...props, className: cn('flex flex-1 w-full mx-auto max-w-(--fd-page-width) pt-(--fd-tocnav-height) pe-(--fd-toc-width)', props.className), children: children }));
28
+ if (toc)
29
+ return _jsx(TOCProvider, { ...toc, children: content });
30
+ return content;
28
31
  }
29
32
  export { PageBreadcrumb, PageFooter, PageLastUpdate, PageTOC, PageTOCPopover, PageTOCPopoverTrigger, PageTOCPopoverContent, };
@@ -44,8 +44,8 @@ export function LayoutTabs({ options, ...props }) {
44
44
  return isActive(option.url, pathname, true);
45
45
  });
46
46
  }, [options, pathname]);
47
- return (_jsx("div", { ...props, className: cn('flex flex-row items-center gap-4 overflow-auto', props.className), children: options.map((option) => (_jsx(LayoutTab, { selected: selected === option, option: option }, option.url))) }));
47
+ return (_jsx("div", { ...props, className: cn('flex flex-row items-end gap-6 overflow-auto', props.className), children: options.map((option) => (_jsx(LayoutTab, { selected: selected === option, option: option }, option.url))) }));
48
48
  }
49
49
  function LayoutTab({ option, selected = false, }) {
50
- return (_jsx(Link, { className: cn('inline-flex border-b border-transparent transition-colors items-center py-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap', option.unlisted && !selected && 'hidden', selected && 'border-fd-primary text-fd-primary'), href: option.url, children: option.title }));
50
+ return (_jsx(Link, { className: cn('inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground', option.unlisted && !selected && 'hidden', selected && 'border-fd-primary text-fd-primary'), href: option.url, children: option.title }));
51
51
  }
@@ -68,7 +68,7 @@ export function DocsLayout(props) {
68
68
  function DocsNavbar({ links, tabs, searchToggle = {}, themeSwitch = {}, nav = {}, ...props }) {
69
69
  const navMode = nav.mode ?? 'auto';
70
70
  const sidebarCollapsible = props.sidebar?.collapsible ?? true;
71
- return (_jsxs(Navbar, { mode: navMode, children: [_jsxs("div", { className: cn('flex border-b px-4 gap-2 flex-1', navMode === 'auto' && 'md:px-6'), children: [_jsxs("div", { className: cn('items-center', navMode === 'top' && 'flex flex-1', navMode === 'auto' && [
71
+ return (_jsxs(Navbar, { mode: navMode, children: [_jsxs("div", { className: cn('flex border-b px-4 gap-2 flex-1 md:px-6', navMode === 'top' && 'ps-7'), children: [_jsxs("div", { className: cn('items-center', navMode === 'top' && 'flex flex-1', navMode === 'auto' && [
72
72
  'hidden max-md:flex',
73
73
  sidebarCollapsible && 'has-data-[collapsed=true]:md:flex',
74
74
  ]), children: [sidebarCollapsible && navMode === 'auto' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
@@ -86,7 +86,7 @@ function DocsNavbar({ links, tabs, searchToggle = {}, themeSwitch = {}, nav = {}
86
86
  (themeSwitch.component ?? (_jsx(ThemeToggle, { mode: themeSwitch.mode ?? 'light-dark-system' }))), sidebarCollapsible && navMode === 'top' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
87
87
  color: 'secondary',
88
88
  size: 'icon-sm',
89
- }), 'text-fd-muted-foreground rounded-full'), children: _jsx(SidebarIcon, {}) }))] })] })] }), tabs.length > 0 && (_jsx(LayoutTabs, { className: cn('border-b h-10 max-lg:hidden', navMode === 'top' ? 'px-4' : 'px-6'), options: tabs }))] }));
89
+ }), 'text-fd-muted-foreground rounded-full -me-1.5'), children: _jsx(SidebarIcon, {}) }))] })] })] }), tabs.length > 0 && (_jsx(LayoutTabs, { className: cn('border-b px-6 h-10 max-lg:hidden', navMode === 'top' && 'ps-7'), options: tabs }))] }));
90
90
  }
91
91
  function NavbarLinkItem({ item, ...props }) {
92
92
  if (item.type === 'menu') {
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.tsx"],"names":[],"mappings":"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"}
package/dist/page.js CHANGED
@@ -6,20 +6,22 @@ import { Edit } from './icons.js';
6
6
  import { I18nLabel } from './contexts/i18n.js';
7
7
  import { PageArticle, PageBreadcrumb, PageFooter, PageLastUpdate, PageRoot, PageTOC, PageTOCItems, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverItems, PageTOCPopoverTrigger, PageTOCTitle, } from './layouts/docs/page.js';
8
8
  export function DocsPage({ editOnGithub, breadcrumb: { enabled: breadcrumbEnabled = true, component: breadcrumb, ...breadcrumbProps } = {}, footer = {}, lastUpdate, container, full = false, tableOfContentPopover: { enabled: tocPopoverEnabled, component: tocPopover, ...tocPopoverOptions } = {}, tableOfContent: { enabled: tocEnabled, component: tocReplace, ...tocOptions } = {}, toc = [], article, children, }) {
9
- const isTocRequired = toc.length > 0 ||
10
- tocOptions.footer !== undefined ||
11
- tocOptions.header !== undefined;
12
9
  // disable TOC on full mode, you can still enable it with `enabled` option.
13
- tocEnabled ?? (tocEnabled = !full && isTocRequired);
10
+ tocEnabled ?? (tocEnabled = !full &&
11
+ (toc.length > 0 ||
12
+ tocOptions.footer !== undefined ||
13
+ tocOptions.header !== undefined));
14
14
  tocPopoverEnabled ?? (tocPopoverEnabled = toc.length > 0 ||
15
15
  tocPopoverOptions.header !== undefined ||
16
16
  tocPopoverOptions.footer !== undefined);
17
- return (_jsxs(PageRoot, { toc: {
18
- toc,
19
- single: tocOptions.single,
20
- }, ...container, children: [tocPopoverEnabled &&
17
+ return (_jsxs(PageRoot, { toc: tocEnabled || tocPopoverEnabled
18
+ ? {
19
+ toc,
20
+ single: tocOptions.single,
21
+ }
22
+ : false, ...container, className: cn(!tocEnabled && '[--fd-toc-width:0px]', container?.className), children: [tocPopoverEnabled &&
21
23
  (tocPopover ?? (_jsxs(PageTOCPopover, { children: [_jsx(PageTOCPopoverTrigger, {}), _jsxs(PageTOCPopoverContent, { children: [tocPopoverOptions.header, _jsx(PageTOCPopoverItems, { variant: tocPopoverOptions.style }), tocPopoverOptions.footer] })] }))), _jsxs(PageArticle, { ...article, children: [breadcrumbEnabled &&
22
- (breadcrumb ?? _jsx(PageBreadcrumb, { ...breadcrumbProps })), children, _jsx("div", { role: "none", className: "flex-1" }), _jsxs("div", { className: "flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden", children: [editOnGithub && (_jsx(EditOnGitHub, { href: `https://github.com/${editOnGithub.owner}/${editOnGithub.repo}/blob/${editOnGithub.sha}/${editOnGithub.path.startsWith('/') ? editOnGithub.path.slice(1) : editOnGithub.path}` })), lastUpdate && _jsx(PageLastUpdate, { date: new Date(lastUpdate) })] }), footer.enabled !== false &&
24
+ (breadcrumb ?? _jsx(PageBreadcrumb, { ...breadcrumbProps })), children, _jsxs("div", { className: "flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden", children: [editOnGithub && (_jsx(EditOnGitHub, { href: `https://github.com/${editOnGithub.owner}/${editOnGithub.repo}/blob/${editOnGithub.sha}/${editOnGithub.path.startsWith('/') ? editOnGithub.path.slice(1) : editOnGithub.path}` })), lastUpdate && _jsx(PageLastUpdate, { date: new Date(lastUpdate) })] }), footer.enabled !== false &&
23
25
  (footer.component ?? _jsx(PageFooter, { items: footer.items }))] }), tocEnabled &&
24
26
  (tocReplace ?? (_jsxs(PageTOC, { children: [tocOptions.header, _jsx(PageTOCTitle, {}), _jsx(PageTOCItems, { variant: tocOptions.style }), tocOptions.footer] })))] }));
25
27
  }
package/dist/style.css CHANGED
@@ -343,26 +343,23 @@
343
343
  .top-0 {
344
344
  top: calc(var(--spacing) * 0);
345
345
  }
346
- .top-1 {
347
- top: calc(var(--spacing) * 1);
348
- }
349
346
  .top-1\.5 {
350
347
  top: calc(var(--spacing) * 1.5);
351
348
  }
352
349
  .top-1\/2 {
353
350
  top: calc(1/2 * 100%);
354
351
  }
352
+ .top-2 {
353
+ top: calc(var(--spacing) * 2);
354
+ }
355
355
  .top-4 {
356
356
  top: calc(var(--spacing) * 4);
357
357
  }
358
358
  .top-14 {
359
359
  top: calc(var(--spacing) * 14);
360
360
  }
361
- .right-0 {
362
- right: calc(var(--spacing) * 0);
363
- }
364
- .right-1 {
365
- right: calc(var(--spacing) * 1);
361
+ .right-2 {
362
+ right: calc(var(--spacing) * 2);
366
363
  }
367
364
  .bottom-\(--fd-sidebar-margin\) {
368
365
  bottom: var(--fd-sidebar-margin);
@@ -418,6 +415,9 @@
418
415
  max-width: 96rem;
419
416
  }
420
417
  }
418
+ .-m-1 {
419
+ margin: calc(var(--spacing) * -1);
420
+ }
421
421
  .container {
422
422
  margin-inline: auto;
423
423
  padding-inline: 1rem;
@@ -470,6 +470,9 @@
470
470
  .-me-1\.5 {
471
471
  margin-inline-end: calc(var(--spacing) * -1.5);
472
472
  }
473
+ .-me-2 {
474
+ margin-inline-end: calc(var(--spacing) * -2);
475
+ }
473
476
  .me-2 {
474
477
  margin-inline-end: calc(var(--spacing) * 2);
475
478
  }
@@ -1267,9 +1270,6 @@
1267
1270
  .rounded-xl {
1268
1271
  border-radius: var(--radius-xl);
1269
1272
  }
1270
- .rounded-bl-lg {
1271
- border-bottom-left-radius: var(--radius-lg);
1272
- }
1273
1273
  .border {
1274
1274
  border-style: var(--tw-border-style);
1275
1275
  border-width: 1px;
@@ -1294,6 +1294,10 @@
1294
1294
  border-bottom-style: var(--tw-border-style);
1295
1295
  border-bottom-width: 1px;
1296
1296
  }
1297
+ .border-b-2 {
1298
+ border-bottom-style: var(--tw-border-style);
1299
+ border-bottom-width: 2px;
1300
+ }
1297
1301
  .border-l {
1298
1302
  border-left-style: var(--tw-border-style);
1299
1303
  border-left-width: 1px;
@@ -1421,9 +1425,6 @@
1421
1425
  .px-\(--fd-layout-offset\) {
1422
1426
  padding-inline: var(--fd-layout-offset);
1423
1427
  }
1424
- .px-1 {
1425
- padding-inline: calc(var(--spacing) * 1);
1426
- }
1427
1428
  .px-1\.5 {
1428
1429
  padding-inline: calc(var(--spacing) * 1.5);
1429
1430
  }
@@ -1487,12 +1488,18 @@
1487
1488
  .ps-6 {
1488
1489
  padding-inline-start: calc(var(--spacing) * 6);
1489
1490
  }
1491
+ .ps-7 {
1492
+ padding-inline-start: calc(var(--spacing) * 7);
1493
+ }
1490
1494
  .ps-8 {
1491
1495
  padding-inline-start: calc(var(--spacing) * 8);
1492
1496
  }
1493
1497
  .ps-\[calc\(var\(--fd-layout-offset\)\+var\(--fd-sidebar-width\)\)\] {
1494
1498
  padding-inline-start: calc(var(--fd-layout-offset) + var(--fd-sidebar-width));
1495
1499
  }
1500
+ .pe-\(--fd-toc-width\) {
1501
+ padding-inline-end: var(--fd-toc-width);
1502
+ }
1496
1503
  .pe-2\.5 {
1497
1504
  padding-inline-end: calc(var(--spacing) * 2.5);
1498
1505
  }
@@ -1517,6 +1524,9 @@
1517
1524
  .pt-14 {
1518
1525
  padding-top: calc(var(--spacing) * 14);
1519
1526
  }
1527
+ .pb-1\.5 {
1528
+ padding-bottom: calc(var(--spacing) * 1.5);
1529
+ }
1520
1530
  .pb-2 {
1521
1531
  padding-bottom: calc(var(--spacing) * 2);
1522
1532
  }
@@ -1759,6 +1769,9 @@
1759
1769
  .\[--fd-nav-height\:56px\] {
1760
1770
  --fd-nav-height: 56px;
1761
1771
  }
1772
+ .\[--fd-toc-width\:0px\] {
1773
+ --fd-toc-width: 0px;
1774
+ }
1762
1775
  .\[scrollbar-width\:none\] {
1763
1776
  scrollbar-width: none;
1764
1777
  }
@@ -1872,11 +1885,6 @@
1872
1885
  content: var(--tw-content);
1873
1886
  }
1874
1887
  }
1875
- .first\:ms-1 {
1876
- &:first-child {
1877
- margin-inline-start: calc(var(--spacing) * 1);
1878
- }
1879
- }
1880
1888
  .first\:mt-0 {
1881
1889
  &:first-child {
1882
1890
  margin-top: calc(var(--spacing) * 0);
@@ -1887,6 +1895,13 @@
1887
1895
  padding-top: calc(var(--spacing) * 0);
1888
1896
  }
1889
1897
  }
1898
+ .\*\:first\:ms-2 {
1899
+ :is(& > *) {
1900
+ &:first-child {
1901
+ margin-inline-start: calc(var(--spacing) * 2);
1902
+ }
1903
+ }
1904
+ }
1890
1905
  .last\:pb-0 {
1891
1906
  &:last-child {
1892
1907
  padding-bottom: calc(var(--spacing) * 0);
@@ -2308,13 +2323,6 @@
2308
2323
  padding: calc(var(--spacing) * 1.5);
2309
2324
  }
2310
2325
  }
2311
- .max-md\:backdrop-blur-xs {
2312
- @media (width < 48rem) {
2313
- --tw-backdrop-blur: blur(var(--blur-xs));
2314
- -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2315
- backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2316
- }
2317
- }
2318
2326
  .max-sm\:mt-2 {
2319
2327
  @media (width < 40rem) {
2320
2328
  margin-top: calc(var(--spacing) * 2);
@@ -2590,8 +2598,8 @@
2590
2598
  --color-fd-muted-foreground: hsl(0, 0%, 72%);
2591
2599
  }
2592
2600
  .shiki:not(.not-fumadocs-codeblock *) {
2593
- --padding-left: calc(var(--spacing) * 3);
2594
- --padding-right: calc(var(--spacing) * 3);
2601
+ --padding-left: calc(var(--spacing) * 4);
2602
+ --padding-right: calc(var(--spacing) * 4);
2595
2603
  code span {
2596
2604
  color: var(--shiki-light);
2597
2605
  }
@@ -2627,7 +2635,7 @@
2627
2635
  }
2628
2636
  code .diff::before {
2629
2637
  position: absolute;
2630
- left: var(--spacing);
2638
+ left: calc(var(--spacing) * 1.5);
2631
2639
  }
2632
2640
  code .diff.remove {
2633
2641
  opacity: 0.7;
@@ -2648,6 +2656,13 @@
2648
2656
  }
2649
2657
  code .highlighted {
2650
2658
  --fd-counter-color: var(--color-fd-primary);
2659
+ padding-left: calc(var(--padding-left) - 2px);
2660
+ border-left-style: var(--tw-border-style);
2661
+ border-left-width: 2px;
2662
+ border-color: color-mix(in srgb, hsl(0, 0%, 9%) 50%, transparent);
2663
+ @supports (color: color-mix(in lab, red, red)) {
2664
+ border-color: color-mix(in oklab, var(--color-fd-primary) 50%, transparent);
2665
+ }
2651
2666
  background-color: color-mix(in srgb, hsl(0, 0%, 9%) 10%, transparent);
2652
2667
  @supports (color: color-mix(in lab, red, red)) {
2653
2668
  background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.7.3",
3
+ "version": "15.7.4",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -121,7 +121,7 @@
121
121
  "react-medium-image-zoom": "^5.3.0",
122
122
  "scroll-into-view-if-needed": "^3.1.0",
123
123
  "tailwind-merge": "^3.3.1",
124
- "fumadocs-core": "15.7.3"
124
+ "fumadocs-core": "15.7.4"
125
125
  },
126
126
  "devDependencies": {
127
127
  "@next/eslint-plugin-next": "^15.5.0",
@@ -134,7 +134,7 @@
134
134
  "tsc-alias": "^1.8.16",
135
135
  "@fumadocs/cli": "1.0.0",
136
136
  "eslint-config-custom": "0.0.0",
137
- "fumadocs-core": "15.7.3",
137
+ "fumadocs-core": "15.7.4",
138
138
  "tsconfig": "0.0.0"
139
139
  },
140
140
  "peerDependencies": {