fumadocs-ui 16.8.0 → 16.8.2

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.
@@ -200,6 +200,7 @@
200
200
  @source inline("h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))]");
201
201
  @source inline("h1");
202
202
  @source inline("header");
203
+ @source inline("height");
203
204
  @source inline("hidden");
204
205
  @source inline("hideIfDisabled");
205
206
  @source inline("highlight");
@@ -500,6 +501,7 @@
500
501
  @source inline("w-4");
501
502
  @source inline("w-[85%]");
502
503
  @source inline("w-full");
504
+ @source inline("width");
503
505
  @source inline("will");
504
506
  @source inline("wrap-anywhere");
505
507
  @source inline("xl:hidden");
@@ -161,6 +161,7 @@
161
161
  @source inline("h1");
162
162
  @source inline("head");
163
163
  @source inline("header");
164
+ @source inline("height");
164
165
  @source inline("hide");
165
166
  @source inline("hideIfDisabled");
166
167
  @source inline("highlight");
@@ -424,6 +425,7 @@
424
425
  @source inline("w-[calc(100%-var(--removed-body-scroll-bar-size,0px))]");
425
426
  @source inline("w-full");
426
427
  @source inline("wait");
428
+ @source inline("width");
427
429
  @source inline("wrap-anywhere");
428
430
  @source inline("xl:layout:[--fd-toc-width:268px]");
429
431
  @source inline("xl:pt-14");
@@ -34,7 +34,7 @@
34
34
  @source inline("context");
35
35
  @source inline("createContext");
36
36
  @source inline("custom");
37
- @source inline("customise");
37
+ @source inline("customize");
38
38
  @source inline("cva");
39
39
  @source inline("data-[active=true]:font-medium");
40
40
  @source inline("data-[active=true]:text-fd-primary");
@@ -215,6 +215,7 @@
215
215
  @source inline("has-data-[active=true]:text-fd-primary");
216
216
  @source inline("has-data-[collapsed=true]:md:flex");
217
217
  @source inline("header");
218
+ @source inline("height");
218
219
  @source inline("hidden");
219
220
  @source inline("hideIfDisabled");
220
221
  @source inline("highlight");
@@ -528,6 +529,7 @@
528
529
  @source inline("w-4");
529
530
  @source inline("w-[85%]");
530
531
  @source inline("w-full");
532
+ @source inline("width");
531
533
  @source inline("will");
532
534
  @source inline("window");
533
535
  @source inline("wrap-anywhere");
@@ -111,6 +111,7 @@
111
111
  @source inline("async");
112
112
  @source inline("at");
113
113
  @source inline("attribute");
114
+ @source inline("auto");
114
115
  @source inline("await");
115
116
  @source inline("backdrop-blur-lg");
116
117
  @source inline("backdrop-blur-xs");
@@ -159,6 +160,7 @@
159
160
  @source inline("border-s");
160
161
  @source inline("border-t");
161
162
  @source inline("border-transparent");
163
+ @source inline("borderBottom");
162
164
  @source inline("bottom");
163
165
  @source inline("bottom-0");
164
166
  @source inline("bottom-1.5");
@@ -230,7 +232,7 @@
230
232
  @source inline("current");
231
233
  @source inline("currentColor");
232
234
  @source inline("custom");
233
- @source inline("customise");
235
+ @source inline("customize");
234
236
  @source inline("cva");
235
237
  @source inline("cx");
236
238
  @source inline("cy");
@@ -238,6 +240,7 @@
238
240
  @source inline("dangerouslySetInnerHTML");
239
241
  @source inline("dark");
240
242
  @source inline("dark:bg-(--shiki-dark-bg)");
243
+ @source inline("dashed");
241
244
  @source inline("data");
242
245
  @source inline("data-[active=true]:text-fd-primary");
243
246
  @source inline("data-[motion=from-end]:animate-fd-enterFromRight");
@@ -572,13 +575,16 @@
572
575
  @source inline("lower");
573
576
  @source inline("lowerOffset");
574
577
  @source inline("ltr");
578
+ @source inline("lucide");
579
+ @source inline("lucide-book");
580
+ @source inline("lucide-book-icon");
575
581
  @source inline("lucide-react");
576
582
  @source inline("made");
577
583
  @source inline("main");
578
584
  @source inline("make");
579
585
  @source inline("mapped");
580
586
  @source inline("margin");
581
- @source inline("marginBottom");
587
+ @source inline("marginTop");
582
588
  @source inline("mark");
583
589
  @source inline("markdownUrl");
584
590
  @source inline("marked");
@@ -747,6 +753,7 @@
747
753
  @source inline("p-3");
748
754
  @source inline("p-4");
749
755
  @source inline("padding");
756
+ @source inline("paddingBottom");
750
757
  @source inline("paddingInlineStart");
751
758
  @source inline("page");
752
759
  @source inline("pageUrl");
@@ -942,6 +949,7 @@
942
949
  @source inline("simple");
943
950
  @source inline("since");
944
951
  @source inline("single");
952
+ @source inline("site");
945
953
  @source inline("size");
946
954
  @source inline("size-1");
947
955
  @source inline("size-3");
@@ -20,7 +20,7 @@ declare function Banner({
20
20
  */
21
21
  variant?: BannerVariant;
22
22
  /**
23
- * For rainbow variant only, customise the colors
23
+ * For rainbow variant only, customize the colors
24
24
  */
25
25
  rainbowColors?: string[];
26
26
  /**
@@ -5,7 +5,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
5
5
  declare const buttonVariants: (props?: ({
6
6
  variant?: "primary" | "outline" | "ghost" | "secondary" | null | undefined;
7
7
  color?: "primary" | "outline" | "ghost" | "secondary" | null | undefined;
8
- size?: "icon" | "sm" | "icon-sm" | "icon-xs" | null | undefined;
8
+ size?: "sm" | "icon" | "icon-sm" | "icon-xs" | null | undefined;
9
9
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
10
10
  type ButtonProps = VariantProps<typeof buttonVariants>;
11
11
  //#endregion
@@ -102,7 +102,7 @@ function PageTOCPopoverTrigger({ className, ...props }) {
102
102
  ...props,
103
103
  children: [
104
104
  /* @__PURE__ */ jsx(ProgressCircle, {
105
- value: (selectedIdx + 1) / Math.max(1, items.length),
105
+ value: (items.findLastIndex((item) => item.active) + 1) / Math.max(1, items.length),
106
106
  max: 1,
107
107
  className: cn("shrink-0", open && "text-fd-primary")
108
108
  }),
@@ -125,9 +125,9 @@ function clamp(input, min, max) {
125
125
  if (input > max) return max;
126
126
  return input;
127
127
  }
128
- function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100, ...restSvgProps }) {
128
+ function ProgressCircle({ value, strokeWidth = 1.5, size = 18, min = 0, max = 100, style, ...restSvgProps }) {
129
129
  const normalizedValue = clamp(value, min, max);
130
- const radius = (size - strokeWidth) / 2;
130
+ const radius = size / 2 - strokeWidth;
131
131
  const circumference = 2 * Math.PI * radius;
132
132
  const progress = normalizedValue / max * circumference;
133
133
  const circleProps = {
@@ -143,6 +143,11 @@ function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100,
143
143
  "aria-valuenow": normalizedValue,
144
144
  "aria-valuemin": min,
145
145
  "aria-valuemax": max,
146
+ style: {
147
+ width: size,
148
+ height: size,
149
+ ...style
150
+ },
146
151
  ...restSvgProps,
147
152
  children: [/* @__PURE__ */ jsx("circle", {
148
153
  ...circleProps,
@@ -102,7 +102,7 @@ function PageTOCPopoverTrigger({ className, ...props }) {
102
102
  ...props,
103
103
  children: [
104
104
  /* @__PURE__ */ jsx(ProgressCircle, {
105
- value: (selectedIdx + 1) / Math.max(1, items.length),
105
+ value: (items.findLastIndex((item) => item.active) + 1) / Math.max(1, items.length),
106
106
  max: 1,
107
107
  className: cn("shrink-0", open && "text-fd-primary")
108
108
  }),
@@ -128,9 +128,9 @@ function clamp(input, min, max) {
128
128
  if (input > max) return max;
129
129
  return input;
130
130
  }
131
- function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100, ...restSvgProps }) {
131
+ function ProgressCircle({ value, strokeWidth = 1.5, size = 18, min = 0, max = 100, style, ...restSvgProps }) {
132
132
  const normalizedValue = clamp(value, min, max);
133
- const radius = (size - strokeWidth) / 2;
133
+ const radius = size / 2 - strokeWidth;
134
134
  const circumference = 2 * Math.PI * radius;
135
135
  const progress = normalizedValue / max * circumference;
136
136
  const circleProps = {
@@ -146,6 +146,11 @@ function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100,
146
146
  "aria-valuenow": normalizedValue,
147
147
  "aria-valuemin": min,
148
148
  "aria-valuemax": max,
149
+ style: {
150
+ width: size,
151
+ height: size,
152
+ ...style
153
+ },
149
154
  ...restSvgProps,
150
155
  children: [/* @__PURE__ */ jsx("circle", {
151
156
  ...circleProps,
@@ -2,7 +2,7 @@ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/layouts/home/not-found.d.ts
4
4
  /**
5
- * the default not found page content, please make your own if you want to customise it.
5
+ * the default not found page content, please make your own if you want to customize it.
6
6
  */
7
7
  declare function DefaultNotFound(): _$react_jsx_runtime0.JSX.Element;
8
8
  //#endregion
@@ -5,7 +5,7 @@ import Link from "fumadocs-core/link";
5
5
  import { HomeIcon } from "lucide-react";
6
6
  //#region src/layouts/home/not-found.tsx
7
7
  /**
8
- * the default not found page content, please make your own if you want to customise it.
8
+ * the default not found page content, please make your own if you want to customize it.
9
9
  */
10
10
  function DefaultNotFound() {
11
11
  return /* @__PURE__ */ jsxs("div", {
@@ -5,7 +5,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
5
5
 
6
6
  //#region src/layouts/home/slots/header.d.ts
7
7
  declare const navItemVariants: (props?: ({
8
- variant?: "icon" | "main" | "button" | null | undefined;
8
+ variant?: "icon" | "button" | "main" | null | undefined;
9
9
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
10
10
  declare function Header(props: ComponentProps<'header'>): string | number | bigint | true | _$react_jsx_runtime0.JSX.Element | Iterable<_$react.ReactNode> | Promise<string | number | bigint | boolean | _$react.ReactPortal | _$react.ReactElement<unknown, string | _$react.JSXElementConstructor<any>> | Iterable<_$react.ReactNode> | null | undefined>;
11
11
  //#endregion
@@ -6,18 +6,17 @@ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
6
  import * as PageTree from "fumadocs-core/page-tree";
7
7
 
8
8
  //#region src/layouts/notebook/index.d.ts
9
- interface DocsLayoutProps extends BaseLayoutProps {
9
+ interface DocsLayoutProps extends Omit<BaseLayoutProps, 'nav'> {
10
10
  tree: PageTree.Root;
11
11
  tabs?: LayoutTab[] | GetLayoutTabsOptions | false;
12
12
  tabMode?: 'sidebar' | 'navbar';
13
13
  sidebar?: SidebarOptions;
14
- nav?: Nav;
14
+ nav?: NavOptions & {
15
+ mode?: 'top' | 'auto';
16
+ };
15
17
  containerProps?: HTMLAttributes<HTMLDivElement>;
16
18
  slots?: Partial<DocsSlots>;
17
19
  }
18
- interface Nav extends NavOptions {
19
- mode?: 'top' | 'auto';
20
- }
21
20
  interface SidebarOptions extends SidebarProps, SidebarProviderProps {
22
21
  /**
23
22
  * @deprecated use layout-level `tabs` option instead.
@@ -36,4 +35,4 @@ declare function DocsLayout({
36
35
  ...props
37
36
  }: DocsLayoutProps): _$react_jsx_runtime0.JSX.Element;
38
37
  //#endregion
39
- export { DocsLayout, DocsLayoutProps, type DocsSlots, useNotebookLayout };
38
+ export { DocsLayout, DocsLayoutProps, type DocsSlots, SidebarOptions, useNotebookLayout };
@@ -101,7 +101,7 @@ function PageTOCPopoverTrigger({ className, ...props }) {
101
101
  ...props,
102
102
  children: [
103
103
  /* @__PURE__ */ jsx(ProgressCircle, {
104
- value: (selectedIdx + 1) / Math.max(1, items.length),
104
+ value: (items.findLastIndex((item) => item.active) + 1) / Math.max(1, items.length),
105
105
  max: 1,
106
106
  className: cn("shrink-0", open && "text-fd-primary")
107
107
  }),
@@ -124,9 +124,9 @@ function clamp(input, min, max) {
124
124
  if (input > max) return max;
125
125
  return input;
126
126
  }
127
- function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100, ...restSvgProps }) {
127
+ function ProgressCircle({ value, strokeWidth = 1.5, size = 18, min = 0, max = 100, style, ...restSvgProps }) {
128
128
  const normalizedValue = clamp(value, min, max);
129
- const radius = (size - strokeWidth) / 2;
129
+ const radius = size / 2 - strokeWidth;
130
130
  const circumference = 2 * Math.PI * radius;
131
131
  const progress = normalizedValue / max * circumference;
132
132
  const circleProps = {
@@ -142,6 +142,11 @@ function ProgressCircle({ value, strokeWidth = 2, size = 24, min = 0, max = 100,
142
142
  "aria-valuenow": normalizedValue,
143
143
  "aria-valuemin": min,
144
144
  "aria-valuemax": max,
145
+ style: {
146
+ width: size,
147
+ height: size,
148
+ ...style
149
+ },
145
150
  ...restSvgProps,
146
151
  children: [/* @__PURE__ */ jsx("circle", {
147
152
  ...circleProps,
@@ -41,7 +41,7 @@ interface BaseLayoutProps {
41
41
  themeSwitch?: ThemeSwitchOptions;
42
42
  searchToggle?: SearchToggleOptions;
43
43
  /**
44
- * @deprecated this is now optional for i18n setups, you can still customise language switch from `slots`.
44
+ * @deprecated this is now optional for i18n setups, you can still customize language switch from `slots`.
45
45
  */
46
46
  i18n?: boolean | I18nConfig;
47
47
  }
@@ -4,7 +4,7 @@ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/layouts/shared/page-actions.d.ts
6
6
  /**
7
- * see https://fumadocs.dev/docs/integrations/llms#page-actions to customise.
7
+ * see https://fumadocs.dev/docs/integrations/llms#page-actions to customize.
8
8
  */
9
9
  declare function MarkdownCopyButton({
10
10
  markdownUrl,
@@ -16,7 +16,7 @@ declare function MarkdownCopyButton({
16
16
  markdownUrl: string;
17
17
  }): _$react_jsx_runtime0.JSX.Element;
18
18
  /**
19
- * see https://fumadocs.dev/docs/integrations/llms#page-actions to customise.
19
+ * see https://fumadocs.dev/docs/integrations/llms#page-actions to customize.
20
20
  */
21
21
  declare function ViewOptionsPopover({
22
22
  markdownUrl,
@@ -10,7 +10,7 @@ import { Check, ChevronDown, Copy, ExternalLinkIcon, TextIcon } from "lucide-rea
10
10
  //#region src/layouts/shared/page-actions.tsx
11
11
  const cache = /* @__PURE__ */ new Map();
12
12
  /**
13
- * see https://fumadocs.dev/docs/integrations/llms#page-actions to customise.
13
+ * see https://fumadocs.dev/docs/integrations/llms#page-actions to customize.
14
14
  */
15
15
  function MarkdownCopyButton({ markdownUrl, ...props }) {
16
16
  const [isLoading, setLoading] = useState(false);
@@ -39,7 +39,7 @@ function MarkdownCopyButton({ markdownUrl, ...props }) {
39
39
  });
40
40
  }
41
41
  /**
42
- * see https://fumadocs.dev/docs/integrations/llms#page-actions to customise.
42
+ * see https://fumadocs.dev/docs/integrations/llms#page-actions to customize.
43
43
  */
44
44
  function ViewOptionsPopover({ markdownUrl, githubUrl, ...props }) {
45
45
  const pathname = usePathname();
package/dist/og.d.ts CHANGED
@@ -16,6 +16,7 @@ declare function generateOGImage(options: GenerateProps & ImageResponseOptions):
16
16
  declare function generate({
17
17
  primaryColor,
18
18
  primaryTextColor,
19
+ icon,
19
20
  ...props
20
21
  }: GenerateProps): _$react_jsx_runtime0.JSX.Element;
21
22
  //#endregion
package/dist/og.js CHANGED
@@ -16,7 +16,25 @@ function generateOGImage(options) {
16
16
  ...rest
17
17
  });
18
18
  }
19
- function generate({ primaryColor = "rgba(255,150,255,0.3)", primaryTextColor = "rgb(255,150,255)", ...props }) {
19
+ function generate({ primaryColor = "rgba(255,150,255,0.3)", primaryTextColor = "rgb(255,150,255)", icon = /* @__PURE__ */ jsx("svg", {
20
+ xmlns: "http://www.w3.org/2000/svg",
21
+ width: "56",
22
+ height: "56",
23
+ viewBox: "0 0 24 24",
24
+ fill: "none",
25
+ stroke: "currentColor",
26
+ strokeWidth: "2",
27
+ strokeLinecap: "round",
28
+ strokeLinejoin: "round",
29
+ className: "lucide lucide-book-icon lucide-book",
30
+ children: /* @__PURE__ */ jsx("circle", {
31
+ cx: "12",
32
+ cy: "12",
33
+ r: "11",
34
+ stroke: primaryTextColor,
35
+ strokeWidth: "2"
36
+ })
37
+ }), ...props }) {
20
38
  return /* @__PURE__ */ jsxs("div", {
21
39
  style: {
22
40
  display: "flex",
@@ -26,27 +44,9 @@ function generate({ primaryColor = "rgba(255,150,255,0.3)", primaryTextColor = "
26
44
  color: "white",
27
45
  padding: "4rem",
28
46
  backgroundColor: "#0c0c0c",
29
- backgroundImage: `linear-gradient(to top right, ${primaryColor}, transparent)`
47
+ border: `18px ${primaryColor}`
30
48
  },
31
49
  children: [
32
- /* @__PURE__ */ jsxs("div", {
33
- style: {
34
- display: "flex",
35
- flexDirection: "row",
36
- alignItems: "center",
37
- gap: "16px",
38
- marginBottom: "12px",
39
- color: primaryTextColor
40
- },
41
- children: [props.icon, /* @__PURE__ */ jsx("p", {
42
- style: {
43
- fontSize: "56px",
44
- fontWeight: 600,
45
- margin: 0
46
- },
47
- children: props.site
48
- })]
49
- }),
50
50
  /* @__PURE__ */ jsx("p", {
51
51
  style: {
52
52
  fontWeight: 800,
@@ -59,9 +59,30 @@ function generate({ primaryColor = "rgba(255,150,255,0.3)", primaryTextColor = "
59
59
  style: {
60
60
  fontSize: "52px",
61
61
  color: "rgba(240,240,240,0.8)",
62
- margin: 0
62
+ margin: 0,
63
+ marginTop: "16px",
64
+ paddingBottom: "28px",
65
+ borderBottom: `8px dashed ${primaryColor}`
63
66
  },
64
67
  children: props.description
68
+ }),
69
+ /* @__PURE__ */ jsxs("div", {
70
+ style: {
71
+ display: "flex",
72
+ flexDirection: "row",
73
+ alignItems: "center",
74
+ gap: "20px",
75
+ marginTop: "auto",
76
+ color: primaryTextColor
77
+ },
78
+ children: [icon, props.site && /* @__PURE__ */ jsx("p", {
79
+ style: {
80
+ fontSize: "56px",
81
+ fontWeight: 600,
82
+ margin: 0
83
+ },
84
+ children: props.site
85
+ })]
65
86
  })
66
87
  ]
67
88
  });
@@ -33,7 +33,7 @@ interface RootProviderProps {
33
33
  */
34
34
  search?: Partial<SearchOptions>;
35
35
  /**
36
- * Customise options for `next-themes`
36
+ * Customize options for `next-themes`
37
37
  */
38
38
  theme?: ThemeOptions;
39
39
  i18n?: Omit<I18nProviderProps, 'children'>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "16.8.0",
3
+ "version": "16.8.2",
4
4
  "description": "The Radix UI version of Fumadocs UI",
5
5
  "keywords": [
6
6
  "Docs",
@@ -148,7 +148,7 @@
148
148
  },
149
149
  "devDependencies": {
150
150
  "@tailwindcss/cli": "^4.2.2",
151
- "@tsdown/css": "^0.21.8",
151
+ "@tsdown/css": "^0.21.9",
152
152
  "@types/hast": "^3.0.4",
153
153
  "@types/mdx": "^2.0.13",
154
154
  "@types/node": "^25.6.0",
@@ -157,10 +157,10 @@
157
157
  "fuma-cli": "^0.0.5",
158
158
  "react-medium-image-zoom": "^5.4.3",
159
159
  "tailwindcss": "^4.2.2",
160
- "tsdown": "0.21.8",
160
+ "tsdown": "0.21.9",
161
161
  "unified": "^11.0.5",
162
162
  "@fumadocs/cli": "1.3.8",
163
- "fumadocs-core": "16.8.0",
163
+ "fumadocs-core": "16.8.2",
164
164
  "tsconfig": "0.0.0"
165
165
  },
166
166
  "peerDependencies": {
@@ -170,7 +170,7 @@
170
170
  "next": "16.x.x",
171
171
  "react": "^19.2.0",
172
172
  "react-dom": "^19.2.0",
173
- "fumadocs-core": "16.8.0"
173
+ "fumadocs-core": "16.8.2"
174
174
  },
175
175
  "peerDependenciesMeta": {
176
176
  "next": {