@fumadocs/base-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");
@@ -501,6 +502,7 @@
501
502
  @source inline("w-4");
502
503
  @source inline("w-[85%]");
503
504
  @source inline("w-full");
505
+ @source inline("width");
504
506
  @source inline("will");
505
507
  @source inline("wrap-anywhere");
506
508
  @source inline("xl:hidden");
@@ -160,6 +160,7 @@
160
160
  @source inline("h1");
161
161
  @source inline("head");
162
162
  @source inline("header");
163
+ @source inline("height");
163
164
  @source inline("hide");
164
165
  @source inline("hideIfDisabled");
165
166
  @source inline("highlight");
@@ -423,6 +424,7 @@
423
424
  @source inline("w-[calc(100%-var(--removed-body-scroll-bar-size,0px))]");
424
425
  @source inline("w-full");
425
426
  @source inline("wait");
427
+ @source inline("width");
426
428
  @source inline("wrap-anywhere");
427
429
  @source inline("xl:layout:[--fd-toc-width:268px]");
428
430
  @source inline("xl:pt-14");
@@ -36,7 +36,7 @@
36
36
  @source inline("context");
37
37
  @source inline("createContext");
38
38
  @source inline("custom");
39
- @source inline("customise");
39
+ @source inline("customize");
40
40
  @source inline("cva");
41
41
  @source inline("data-[active=true]:font-medium");
42
42
  @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");
@@ -529,6 +530,7 @@
529
530
  @source inline("w-4");
530
531
  @source inline("w-[85%]");
531
532
  @source inline("w-full");
533
+ @source inline("width");
532
534
  @source inline("will");
533
535
  @source inline("window");
534
536
  @source inline("wrap-anywhere");
@@ -107,6 +107,7 @@
107
107
  @source inline("async");
108
108
  @source inline("at");
109
109
  @source inline("attribute");
110
+ @source inline("auto");
110
111
  @source inline("await");
111
112
  @source inline("backdrop-blur-lg");
112
113
  @source inline("backdrop-blur-md");
@@ -158,6 +159,7 @@
158
159
  @source inline("border-s");
159
160
  @source inline("border-t");
160
161
  @source inline("border-transparent");
162
+ @source inline("borderBottom");
161
163
  @source inline("bottom");
162
164
  @source inline("bottom-0");
163
165
  @source inline("bottom-1.5");
@@ -232,7 +234,7 @@
232
234
  @source inline("current");
233
235
  @source inline("currentColor");
234
236
  @source inline("custom");
235
- @source inline("customise");
237
+ @source inline("customize");
236
238
  @source inline("cva");
237
239
  @source inline("cx");
238
240
  @source inline("cy");
@@ -240,6 +242,7 @@
240
242
  @source inline("dangerouslySetInnerHTML");
241
243
  @source inline("dark");
242
244
  @source inline("dark:bg-(--shiki-dark-bg)");
245
+ @source inline("dashed");
243
246
  @source inline("data");
244
247
  @source inline("data-[active=true]:text-fd-primary");
245
248
  @source inline("data-[active]:border-fd-primary");
@@ -603,13 +606,16 @@
603
606
  @source inline("lower");
604
607
  @source inline("lowerOffset");
605
608
  @source inline("ltr");
609
+ @source inline("lucide");
610
+ @source inline("lucide-book");
611
+ @source inline("lucide-book-icon");
606
612
  @source inline("lucide-react");
607
613
  @source inline("made");
608
614
  @source inline("main");
609
615
  @source inline("make");
610
616
  @source inline("mapped");
611
617
  @source inline("margin");
612
- @source inline("marginBottom");
618
+ @source inline("marginTop");
613
619
  @source inline("mark");
614
620
  @source inline("markdownUrl");
615
621
  @source inline("marked");
@@ -780,6 +786,7 @@
780
786
  @source inline("p-3");
781
787
  @source inline("p-4");
782
788
  @source inline("padding");
789
+ @source inline("paddingBottom");
783
790
  @source inline("paddingInlineStart");
784
791
  @source inline("page");
785
792
  @source inline("pageUrl");
@@ -976,6 +983,7 @@
976
983
  @source inline("signature");
977
984
  @source inline("simple");
978
985
  @source inline("since");
986
+ @source inline("site");
979
987
  @source inline("size");
980
988
  @source inline("size-1");
981
989
  @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", {
@@ -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.
@@ -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/base-ui",
3
- "version": "16.8.0",
3
+ "version": "16.8.2",
4
4
  "description": "The Base UI version of Fumadocs UI",
5
5
  "keywords": [
6
6
  "Docs",
@@ -131,7 +131,7 @@
131
131
  },
132
132
  "devDependencies": {
133
133
  "@tailwindcss/cli": "^4.2.2",
134
- "@tsdown/css": "^0.21.8",
134
+ "@tsdown/css": "^0.21.9",
135
135
  "@types/hast": "^3.0.4",
136
136
  "@types/mdx": "^2.0.13",
137
137
  "@types/node": "^25.6.0",
@@ -140,11 +140,11 @@
140
140
  "fuma-cli": "^0.0.5",
141
141
  "react-medium-image-zoom": "^5.4.3",
142
142
  "tailwindcss": "^4.2.2",
143
- "tsdown": "0.21.8",
143
+ "tsdown": "0.21.9",
144
144
  "unified": "^11.0.5",
145
- "tsconfig": "0.0.0",
146
- "fumadocs-core": "16.8.0",
147
- "@fumadocs/cli": "1.3.8"
145
+ "@fumadocs/cli": "1.3.8",
146
+ "fumadocs-core": "16.8.2",
147
+ "tsconfig": "0.0.0"
148
148
  },
149
149
  "peerDependencies": {
150
150
  "@takumi-rs/image-response": "*",
@@ -153,7 +153,7 @@
153
153
  "next": "16.x.x",
154
154
  "react": "^19.2.0",
155
155
  "react-dom": "^19.2.0",
156
- "fumadocs-core": "16.8.0"
156
+ "fumadocs-core": "16.8.2"
157
157
  },
158
158
  "peerDependenciesMeta": {
159
159
  "next": {