fumadocs-ui 15.7.10 → 15.7.12

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,88 +1,92 @@
1
- .shiki:not(.not-fumadocs-codeblock *) {
1
+ :root {
2
2
  --padding-left: calc(var(--spacing) * 4);
3
3
  --padding-right: calc(var(--spacing) * 4);
4
+ }
4
5
 
6
+ .shiki:not(.not-fumadocs-codeblock *) {
5
7
  code span {
6
8
  color: var(--shiki-light);
7
9
  }
10
+ }
11
+
12
+ .dark .shiki:not(.not-fumadocs-codeblock *) {
13
+ code span {
14
+ color: var(--shiki-dark);
15
+ }
16
+ }
8
17
 
9
- code .line {
18
+ :is(pre *):is(.shiki *):not(.not-fumadocs-codeblock *) {
19
+ .line& {
10
20
  position: relative;
11
21
  min-height: 1lh;
12
22
  padding-left: var(--padding-left);
13
23
  padding-right: var(--padding-right);
14
24
  }
15
25
 
16
- &.has-focused code .line:not(.focused) {
26
+ .has-focused .line&:not(.focused) {
17
27
  filter: blur(2px);
18
28
  transition: filter 200ms;
19
29
  }
20
30
 
21
- &.has-focused:hover code .line:not(.focused) {
31
+ .has-focused:hover .line&:not(.focused) {
22
32
  filter: blur(0);
23
33
  }
24
34
 
25
- &[data-line-numbers] code .twoslash-meta-line {
35
+ [data-line-numbers] .twoslash-meta-line& {
26
36
  padding-left: calc(var(--padding-left) + 7 * var(--spacing));
27
37
  }
28
38
 
29
- &[data-line-numbers] code .line {
39
+ [data-line-numbers] .line& {
30
40
  counter-increment: line;
31
41
  padding-left: calc(var(--padding-left) + 7 * var(--spacing));
42
+ }
32
43
 
33
- &::after {
34
- position: absolute;
35
- content: counter(line);
36
- color: color-mix(
37
- in oklab,
38
- var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%,
39
- transparent
40
- );
41
- @apply top-0 left-4;
42
- }
44
+ [data-line-numbers] .line&::after {
45
+ position: absolute;
46
+ content: counter(line);
47
+ color: color-mix(
48
+ in oklab,
49
+ var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%,
50
+ transparent
51
+ );
52
+ @apply top-0 left-4;
43
53
  }
44
54
 
45
- code .diff::before {
55
+ .diff&::before {
46
56
  position: absolute;
47
57
  left: calc(var(--spacing) * 1.5);
48
58
  }
49
59
 
50
- code .diff.remove {
60
+ .diff.remove& {
51
61
  opacity: 0.7;
52
62
  --fd-counter-color: var(--color-fd-diff-remove-symbol);
53
63
  @apply bg-fd-diff-remove;
54
64
  }
55
65
 
56
- code .diff.remove::before {
66
+ .diff.remove&::before {
57
67
  content: '-';
58
68
  @apply text-fd-diff-remove-symbol;
59
69
  }
60
70
 
61
- code .diff.add {
71
+ .diff.add& {
62
72
  --fd-counter-color: var(--color-fd-diff-add-symbol);
63
73
  @apply bg-fd-diff-add;
64
74
  }
65
75
 
66
- code .diff.add::before {
76
+ .diff.add&::before {
67
77
  content: '+';
68
78
  @apply text-fd-diff-add-symbol;
69
79
  }
70
80
 
71
- code .highlighted {
81
+ .highlighted& {
72
82
  --fd-counter-color: var(--color-fd-primary);
73
83
  padding-left: calc(var(--padding-left) - 2px);
74
84
 
75
85
  @apply border-l-2 border-fd-primary/50 bg-fd-primary/10;
76
86
  }
77
87
 
78
- code .highlighted-word {
88
+ .highlighted-word& {
79
89
  padding: 1px;
80
90
  @apply border -my-px border-fd-primary/30 bg-fd-primary/10 rounded-md font-medium;
81
91
  }
82
92
  }
83
-
84
- .dark .shiki:not(.not-fumadocs-codeblock *) {
85
- code span {
86
- color: var(--shiki-dark);
87
- }
88
- }
@@ -38,5 +38,5 @@ export declare function CodeBlock({ ref, title, allowCopy, keepBackground, icon,
38
38
  export declare function CodeBlockTabs({ ref, ...props }: ComponentProps<typeof Tabs>): import("react/jsx-runtime").JSX.Element;
39
39
  export declare function CodeBlockTabsList(props: ComponentProps<typeof TabsList>): import("react/jsx-runtime").JSX.Element;
40
40
  export declare function CodeBlockTabsTrigger({ children, ...props }: ComponentProps<typeof TabsTrigger>): import("react/jsx-runtime").JSX.Element;
41
- export declare function CodeBlockTab({ className, ...props }: ComponentProps<typeof TabsContent>): import("react/jsx-runtime").JSX.Element;
41
+ export declare function CodeBlockTab(props: ComponentProps<typeof TabsContent>): import("react/jsx-runtime").JSX.Element;
42
42
  //# sourceMappingURL=codeblock.d.ts.map
@@ -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,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,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAEpC"}
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,SAAgB,EAChB,cAAsB,EACtB,IAAI,EACJ,aAAkB,EAClB,QAAQ,EACR,OAEC,EACD,GAAG,KAAK,EACT,EAAE,cAAc,2CAkEhB;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,2CAYvE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAapC;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAErE"}
@@ -11,11 +11,12 @@ const TabsContext = createContext(null);
11
11
  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
- export function CodeBlock({ ref, title, allowCopy, keepBackground = false, icon, viewportProps = {}, children, Actions = (props) => (_jsx("div", { ...props, className: cn('empty:hidden', props.className) })), ...props }) {
14
+ export function CodeBlock({ ref, title, allowCopy = true, keepBackground = false, icon, viewportProps = {}, children, Actions = (props) => (_jsx("div", { ...props, className: cn('empty:hidden', props.className) })), ...props }) {
15
15
  const inTab = useContext(TabsContext) !== null;
16
16
  const areaRef = useRef(null);
17
- allowCopy ?? (allowCopy = !inTab);
18
- return (_jsxs("figure", { ref: ref, dir: "ltr", ...props, className: cn(inTab ? 'bg-fd-secondary' : 'my-4 bg-fd-card', keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)', 'shiki relative border shadow-sm rounded-xl 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: {
17
+ return (_jsxs("figure", { ref: ref, dir: "ltr", ...props, className: cn(inTab
18
+ ? 'bg-fd-secondary -mx-px -mb-px last:rounded-b-xl'
19
+ : 'my-4 bg-fd-card rounded-xl', keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)', 'shiki relative border shadow-sm 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: {
19
20
  __html: icon,
20
21
  } })) : (icon), _jsx("figcaption", { className: "flex-1 truncate", children: title }), Actions({
21
22
  className: '-me-2',
@@ -57,13 +58,12 @@ export function CodeBlockTabs({ ref, ...props }) {
57
58
  }), [nested]), children: props.children }) }));
58
59
  }
59
60
  export function CodeBlockTabsList(props) {
60
- const { containerRef, nested } = useContext(TabsContext);
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
+ return (_jsx(TabsList, { ...props, className: cn('flex flex-row px-2 overflow-x-auto text-fd-muted-foreground', props.className), children: props.children }));
62
62
  }
63
63
  export function CodeBlockTabsTrigger({ children, ...props }) {
64
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] }));
65
65
  }
66
- // TODO: currently Vite RSC plugin has problem with adding `asChild` here, maybe revisit this in future
67
- export function CodeBlockTab({ className, ...props }) {
68
- return _jsx(TabsContent, { className: cn('-mx-px -mb-px', className), ...props });
66
+ // TODO: currently Vite RSC plugin has problem with `asChild` due to children is automatically wrapped in <Fragment />, maybe revisit this in future
67
+ export function CodeBlockTab(props) {
68
+ return _jsx(TabsContent, { ...props });
69
69
  }
@@ -13,7 +13,7 @@ const keyVariants = cva('text-fd-primary', {
13
13
  },
14
14
  },
15
15
  });
16
- const fieldVariants = cva('text-fd-muted-foreground not-prose');
16
+ const fieldVariants = cva('text-fd-muted-foreground not-prose pe-2');
17
17
  export function TypeTable({ type }) {
18
18
  return (_jsxs("div", { className: "@container flex flex-col p-1 bg-fd-card text-fd-card-foreground rounded-2xl border my-6 text-sm overflow-hidden", children: [_jsxs("div", { className: "flex font-medium items-center px-3 py-1 not-prose text-fd-muted-foreground", children: [_jsx("p", { className: "w-[25%]", children: "Prop" }), _jsx("p", { className: "@max-xl:hidden", children: "Type" })] }), Object.entries(type).map(([key, value]) => (_jsx(Item, { name: key, item: value }, key)))] }));
19
19
  }
@@ -21,7 +21,8 @@ function Item({ name, item: { parameters = [], description, required = false, de
21
21
  const [open, setOpen] = useState(false);
22
22
  return (_jsxs(Collapsible, { open: open, onOpenChange: setOpen, className: cn('rounded-xl border overflow-hidden transition-all', open
23
23
  ? 'shadow-sm bg-fd-background not-last:mb-2'
24
- : 'border-transparent'), children: [_jsxs(CollapsibleTrigger, { className: "relative flex flex-row items-center w-full group text-start px-3 py-2 not-prose hover:bg-fd-accent", children: [_jsx("span", { className: "pe-2 min-w-fit font-medium w-[25%]", children: _jsxs("code", { className: cn(keyVariants({
25
- deprecated,
26
- })), children: [name, !required && '?'] }) }), typeDescriptionLink ? (_jsx(Link, { href: typeDescriptionLink, className: "underline @max-xl:hidden", children: type })) : (_jsx("span", { className: "@max-xl:hidden", children: type })), _jsx(ChevronDown, { className: "absolute end-2 size-4 text-fd-muted-foreground transition-transform group-data-[state=open]:rotate-180" })] }), _jsx(CollapsibleContent, { children: _jsxs("div", { className: "grid grid-cols-[1fr_3fr] gap-x-2 gap-y-4 text-sm p-3 overflow-auto fd-scroll-container border-t", children: [_jsx("div", { className: "text-sm prose col-span-full prose-no-margin empty:hidden", children: description }), typeDescription && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Type" }), _jsx("p", { className: "my-auto not-prose", children: typeDescription })] })), defaultValue && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Default" }), _jsx("p", { className: "my-auto not-prose", children: defaultValue })] })), parameters.length > 0 && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Parameters" }), _jsx("div", { className: "flex flex-col gap-2", children: parameters.map((param) => (_jsxs("div", { className: "inline-flex items-center gap-1", children: [_jsxs("p", { className: "font-medium not-prose", children: [param.name, " -"] }), _jsx("div", { className: "text-sm prose prose-no-margin", children: param.description })] }, param.name))) })] })), returns && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Returns" }), _jsx("div", { className: "my-auto text-sm prose prose-no-margin", children: returns })] }))] }) })] }));
24
+ : 'border-transparent'), children: [_jsxs(CollapsibleTrigger, { className: "relative flex flex-row items-center w-full group text-start px-3 py-2 not-prose hover:bg-fd-accent", children: [_jsxs("code", { className: cn(keyVariants({
25
+ deprecated,
26
+ className: 'min-w-fit w-[25%] font-medium',
27
+ })), children: [name, !required && '?'] }), typeDescriptionLink ? (_jsx(Link, { href: typeDescriptionLink, className: "underline @max-xl:hidden", children: type })) : (_jsx("span", { className: "@max-xl:hidden", children: type })), _jsx(ChevronDown, { className: "absolute end-2 size-4 text-fd-muted-foreground transition-transform group-data-[state=open]:rotate-180" })] }), _jsx(CollapsibleContent, { children: _jsxs("div", { className: "grid grid-cols-[1fr_3fr] gap-y-4 text-sm p-3 overflow-auto fd-scroll-container border-t", children: [_jsx("div", { className: "text-sm prose col-span-full prose-no-margin empty:hidden", children: description }), typeDescription && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Type" }), _jsx("p", { className: "my-auto not-prose", children: typeDescription })] })), defaultValue && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Default" }), _jsx("p", { className: "my-auto not-prose", children: defaultValue })] })), parameters.length > 0 && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Parameters" }), _jsx("div", { className: "flex flex-col gap-2", children: parameters.map((param) => (_jsxs("div", { className: "inline-flex items-center flex-wrap gap-1", children: [_jsxs("p", { className: "font-medium not-prose text-nowrap", children: [param.name, " -"] }), _jsx("div", { className: "text-sm prose prose-no-margin", children: param.description })] }, param.name))) })] })), returns && (_jsxs(_Fragment, { children: [_jsx("p", { className: cn(fieldVariants()), children: "Returns" }), _jsx("div", { className: "my-auto text-sm prose prose-no-margin", children: returns })] }))] }) })] }));
27
28
  }
package/dist/style.css CHANGED
@@ -1215,9 +1215,6 @@
1215
1215
  .gap-6 {
1216
1216
  gap: calc(var(--spacing) * 6);
1217
1217
  }
1218
- .gap-x-2 {
1219
- column-gap: calc(var(--spacing) * 2);
1220
- }
1221
1218
  .gap-y-4 {
1222
1219
  row-gap: calc(var(--spacing) * 4);
1223
1220
  }
@@ -1922,11 +1919,10 @@
1922
1919
  padding-top: calc(var(--spacing) * 0);
1923
1920
  }
1924
1921
  }
1925
- .\*\:first\:ms-2 {
1926
- :is(& > *) {
1927
- &:first-child {
1928
- margin-inline-start: calc(var(--spacing) * 2);
1929
- }
1922
+ .last\:rounded-b-xl {
1923
+ &:last-child {
1924
+ border-bottom-right-radius: var(--radius-xl);
1925
+ border-bottom-left-radius: var(--radius-xl);
1930
1926
  }
1931
1927
  }
1932
1928
  .last\:pb-0 {
@@ -2661,64 +2657,73 @@
2661
2657
  --color-fd-secondary: hsl(0, 0%, 18%);
2662
2658
  --color-fd-muted-foreground: hsl(0, 0%, 72%);
2663
2659
  }
2664
- .shiki:not(.not-fumadocs-codeblock *) {
2660
+ :root {
2665
2661
  --padding-left: calc(var(--spacing) * 4);
2666
2662
  --padding-right: calc(var(--spacing) * 4);
2663
+ }
2664
+ .shiki:not(.not-fumadocs-codeblock *) {
2667
2665
  code span {
2668
2666
  color: var(--shiki-light);
2669
2667
  }
2670
- code .line {
2668
+ }
2669
+ .dark .shiki:not(.not-fumadocs-codeblock *) {
2670
+ code span {
2671
+ color: var(--shiki-dark);
2672
+ }
2673
+ }
2674
+ :is(pre *):is(.shiki *):not(.not-fumadocs-codeblock *) {
2675
+ .line& {
2671
2676
  position: relative;
2672
2677
  min-height: 1lh;
2673
2678
  padding-left: var(--padding-left);
2674
2679
  padding-right: var(--padding-right);
2675
2680
  }
2676
- &.has-focused code .line:not(.focused) {
2681
+ .has-focused .line&:not(.focused) {
2677
2682
  filter: blur(2px);
2678
2683
  transition: filter 200ms;
2679
2684
  }
2680
- &.has-focused:hover code .line:not(.focused) {
2685
+ .has-focused:hover .line&:not(.focused) {
2681
2686
  filter: blur(0);
2682
2687
  }
2683
- &[data-line-numbers] code .twoslash-meta-line {
2688
+ [data-line-numbers] .twoslash-meta-line& {
2684
2689
  padding-left: calc(var(--padding-left) + 7 * var(--spacing));
2685
2690
  }
2686
- &[data-line-numbers] code .line {
2691
+ [data-line-numbers] .line& {
2687
2692
  counter-increment: line;
2688
2693
  padding-left: calc(var(--padding-left) + 7 * var(--spacing));
2689
- &::after {
2690
- position: absolute;
2691
- content: counter(line);
2692
- color: var(--fd-counter-color, hsl(0, 0%, 45.1%));
2693
- @supports (color: color-mix(in lab, red, red)) {
2694
- color: color-mix( in oklab, var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%, transparent );
2695
- }
2696
- top: calc(var(--spacing) * 0);
2697
- left: calc(var(--spacing) * 4);
2694
+ }
2695
+ [data-line-numbers] .line&::after {
2696
+ position: absolute;
2697
+ content: counter(line);
2698
+ color: var(--fd-counter-color, hsl(0, 0%, 45.1%));
2699
+ @supports (color: color-mix(in lab, red, red)) {
2700
+ color: color-mix( in oklab, var(--fd-counter-color, var(--color-fd-muted-foreground)) 60%, transparent );
2698
2701
  }
2702
+ top: calc(var(--spacing) * 0);
2703
+ left: calc(var(--spacing) * 4);
2699
2704
  }
2700
- code .diff::before {
2705
+ .diff&::before {
2701
2706
  position: absolute;
2702
2707
  left: calc(var(--spacing) * 1.5);
2703
2708
  }
2704
- code .diff.remove {
2709
+ .diff.remove& {
2705
2710
  opacity: 0.7;
2706
2711
  --fd-counter-color: var(--color-fd-diff-remove-symbol);
2707
2712
  background-color: var(--color-fd-diff-remove);
2708
2713
  }
2709
- code .diff.remove::before {
2714
+ .diff.remove&::before {
2710
2715
  content: '-';
2711
2716
  color: var(--color-fd-diff-remove-symbol);
2712
2717
  }
2713
- code .diff.add {
2718
+ .diff.add& {
2714
2719
  --fd-counter-color: var(--color-fd-diff-add-symbol);
2715
2720
  background-color: var(--color-fd-diff-add);
2716
2721
  }
2717
- code .diff.add::before {
2722
+ .diff.add&::before {
2718
2723
  content: '+';
2719
2724
  color: var(--color-fd-diff-add-symbol);
2720
2725
  }
2721
- code .highlighted {
2726
+ .highlighted& {
2722
2727
  --fd-counter-color: var(--color-fd-primary);
2723
2728
  padding-left: calc(var(--padding-left) - 2px);
2724
2729
  border-left-style: var(--tw-border-style);
@@ -2732,7 +2737,7 @@
2732
2737
  background-color: color-mix(in oklab, var(--color-fd-primary) 10%, transparent);
2733
2738
  }
2734
2739
  }
2735
- code .highlighted-word {
2740
+ .highlighted-word& {
2736
2741
  padding: 1px;
2737
2742
  margin-block: -1px;
2738
2743
  border-radius: var(--radius-md);
@@ -2750,11 +2755,6 @@
2750
2755
  font-weight: var(--font-weight-medium);
2751
2756
  }
2752
2757
  }
2753
- .dark .shiki:not(.not-fumadocs-codeblock *) {
2754
- code span {
2755
- color: var(--shiki-dark);
2756
- }
2757
- }
2758
2758
  [dir='rtl'] {
2759
2759
  --fd-sidebar-mobile-offset: -100%;
2760
2760
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.7.10",
3
+ "version": "15.7.12",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -121,20 +121,20 @@
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.10"
124
+ "fumadocs-core": "15.7.12"
125
125
  },
126
126
  "devDependencies": {
127
- "@next/eslint-plugin-next": "^15.5.2",
127
+ "@next/eslint-plugin-next": "^15.5.3",
128
128
  "@tailwindcss/cli": "^4.1.13",
129
129
  "@types/lodash.merge": "^4.6.9",
130
- "@types/react": "^19.1.12",
130
+ "@types/react": "^19.1.13",
131
131
  "@types/react-dom": "^19.1.9",
132
- "next": "15.5.2",
132
+ "next": "15.5.3",
133
133
  "tailwindcss": "^4.1.13",
134
134
  "tsc-alias": "^1.8.16",
135
135
  "@fumadocs/cli": "1.0.1",
136
136
  "eslint-config-custom": "0.0.0",
137
- "fumadocs-core": "15.7.10",
137
+ "fumadocs-core": "15.7.12",
138
138
  "tsconfig": "0.0.0"
139
139
  },
140
140
  "peerDependencies": {