@fumadocs/base-ui 16.8.7 → 16.8.9

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.
Files changed (34) hide show
  1. package/css/generated/shared.css +3 -3
  2. package/dist/components/accordion.js +1 -1
  3. package/dist/components/codeblock.js +1 -1
  4. package/dist/components/heading.d.ts +2 -2
  5. package/dist/components/heading.js +20 -10
  6. package/dist/components/image-zoom.d.ts +1 -1
  7. package/dist/components/image-zoom.js +1 -1
  8. package/dist/components/ui/button.d.ts +1 -1
  9. package/dist/contexts/search.js +1 -1
  10. package/dist/layouts/home/slots/header.d.ts +1 -1
  11. package/dist/layouts/shared/page-actions.js +1 -1
  12. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/controlled.d.ts +1 -1
  13. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/controlled.js +27 -11
  14. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/uncontrolled.d.ts +1 -1
  15. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/uncontrolled.js +1 -1
  16. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/adjust-svg-ids.js +1 -1
  17. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/compute-positioned-style.js +1 -1
  18. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/element-tests.js +1 -1
  19. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-div-img-style.js +1 -1
  20. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-img-alt.js +1 -1
  21. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-img-object-fit-style.js +1 -1
  22. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-img-regular-style.js +1 -1
  23. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-img-src.js +1 -1
  24. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-modal-img-transform.js +1 -1
  25. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-scale.js +1 -1
  26. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-style-ghost.js +1 -1
  27. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-style-modal-img.js +1 -1
  28. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/get-target-dimension.js +1 -1
  29. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/parse-position.js +1 -1
  30. package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/utils/test-has-scalable-src.js +1 -1
  31. package/dist/og/takumi.d.ts +1 -1
  32. package/dist/style.css +11 -14
  33. package/package.json +13 -13
  34. /package/dist/node_modules/.pnpm/{react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5 → react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6}/node_modules/react-medium-image-zoom/dist/index.d.ts +0 -0
@@ -88,7 +88,6 @@
88
88
  @source inline("application/json");
89
89
  @source inline("areaRef");
90
90
  @source inline("aria-describedby");
91
- @source inline("aria-hidden");
92
91
  @source inline("aria-label");
93
92
  @source inline("aria-selected");
94
93
  @source inline("as");
@@ -429,6 +428,8 @@
429
428
  @source inline("group-data-[open]:rotate-180");
430
429
  @source inline("group-data-[panel-open]:rotate-90");
431
430
  @source inline("group-data-active:bg-fd-primary");
431
+ @source inline("group-hover/heading:opacity-100");
432
+ @source inline("group/heading");
432
433
  @source inline("groupListeners");
433
434
  @source inline("guides");
434
435
  @source inline("h");
@@ -675,6 +676,7 @@
675
676
  @source inline("onChange");
676
677
  @source inline("onClick");
677
678
  @source inline("onCompute");
679
+ @source inline("onCopy");
678
680
  @source inline("onKey");
679
681
  @source inline("onOpenChange");
680
682
  @source inline("onOpenChangeCallback");
@@ -740,8 +742,6 @@
740
742
  @source inline("pb-0");
741
743
  @source inline("pb-2");
742
744
  @source inline("pe-2");
743
- @source inline("peer");
744
- @source inline("peer-hover:opacity-100");
745
745
  @source inline("performing");
746
746
  @source inline("persist");
747
747
  @source inline("persistent");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { useCopyButton } from "../utils/use-copy-button.js";
4
3
  import { buttonVariants } from "./ui/button.js";
4
+ import { useCopyButton } from "../utils/use-copy-button.js";
5
5
  import { mergeRefs } from "../utils/merge-refs.js";
6
6
  import { Accordion as Accordion$1, AccordionContent, AccordionHeader, AccordionItem, AccordionTrigger } from "./ui/accordion.js";
7
7
  import { useEffect, useRef, useState } from "react";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { useCopyButton } from "../utils/use-copy-button.js";
4
3
  import { buttonVariants } from "./ui/button.js";
4
+ import { useCopyButton } from "../utils/use-copy-button.js";
5
5
  import { mergeRefs } from "../utils/merge-refs.js";
6
6
  import { Tabs, TabsContent, TabsList, TabsTrigger } from "./ui/tabs.js";
7
7
  import { createContext, use, useMemo, useRef } from "react";
@@ -1,4 +1,5 @@
1
1
  import { ComponentPropsWithoutRef } from "react";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
3
 
3
4
  //#region src/components/heading.d.ts
4
5
  type Types = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
@@ -7,8 +8,7 @@ type HeadingProps<T extends Types> = Omit<ComponentPropsWithoutRef<T>, 'as'> & {
7
8
  };
8
9
  declare function Heading<T extends Types = 'h1'>({
9
10
  as,
10
- className,
11
11
  ...props
12
- }: HeadingProps<T>): React.ReactElement;
12
+ }: HeadingProps<T>): _$react_jsx_runtime0.JSX.Element;
13
13
  //#endregion
14
14
  export { Heading };
@@ -1,24 +1,34 @@
1
+ "use client";
1
2
  import { cn } from "../utils/cn.js";
3
+ import { buttonVariants } from "./ui/button.js";
4
+ import { useCopyButton } from "../utils/use-copy-button.js";
2
5
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { LinkIcon } from "lucide-react";
6
+ import { CopyCheckIcon, LinkIcon } from "lucide-react";
4
7
  //#region src/components/heading.tsx
5
- function Heading({ as, className, ...props }) {
8
+ function Heading({ as, ...props }) {
6
9
  const As = as ?? "h1";
7
- if (!props.id) return /* @__PURE__ */ jsx(As, {
8
- className,
9
- ...props
10
+ const [isChecked, onCopy] = useCopyButton(() => {
11
+ if (!props.id) return;
12
+ const url = new URL(window.location.href);
13
+ url.hash = props.id;
14
+ return navigator.clipboard.writeText(url.href);
10
15
  });
16
+ if (!props.id) return /* @__PURE__ */ jsx(As, { ...props });
11
17
  return /* @__PURE__ */ jsxs(As, {
12
- className: cn("flex scroll-m-28 flex-row items-center gap-2", className),
13
18
  ...props,
19
+ className: cn("group/heading flex scroll-m-28 flex-row items-center gap-1", props.className),
14
20
  children: [/* @__PURE__ */ jsx("a", {
15
21
  "data-card": "",
16
22
  href: `#${props.id}`,
17
- className: "peer",
18
23
  children: props.children
19
- }), /* @__PURE__ */ jsx(LinkIcon, {
20
- "aria-hidden": true,
21
- className: "size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100"
24
+ }), /* @__PURE__ */ jsx("button", {
25
+ "aria-label": "Copy Anchor Link",
26
+ className: cn(buttonVariants({
27
+ variant: "ghost",
28
+ size: "icon-xs"
29
+ }), "not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"),
30
+ onClick: onCopy,
31
+ children: isChecked ? /* @__PURE__ */ jsx(CopyCheckIcon, {}) : /* @__PURE__ */ jsx(LinkIcon, {})
22
32
  })]
23
33
  });
24
34
  }
@@ -1,4 +1,4 @@
1
- import { UncontrolledProps } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
1
+ import { UncontrolledProps } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
2
2
  import { ComponentProps } from "react";
3
3
  import { ImageProps } from "fumadocs-core/framework";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Uncontrolled } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
2
+ import { Uncontrolled } from "../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/uncontrolled.js";
3
3
  import "./image-zoom2.css";
4
4
  import { Image } from "fumadocs-core/framework";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -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?: "sm" | "icon" | "icon-sm" | "icon-xs" | null | undefined;
8
+ size?: "icon" | "sm" | "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
@@ -14,7 +14,7 @@ function useSearchContext() {
14
14
  function MetaOrControl() {
15
15
  const [key, setKey] = useState("⌘");
16
16
  useEffect(() => {
17
- if (window.navigator.userAgent.includes("Windows")) setKey("Ctrl");
17
+ if (/Windows|Linux/i.test(window.navigator.userAgent)) setKey("Ctrl");
18
18
  }, []);
19
19
  return key;
20
20
  }
@@ -4,7 +4,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
4
4
 
5
5
  //#region src/layouts/home/slots/header.d.ts
6
6
  declare const navItemVariants: (props?: ({
7
- variant?: "main" | "icon" | "button" | null | undefined;
7
+ variant?: "icon" | "main" | "button" | null | undefined;
8
8
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
9
9
  declare function Header(props: ComponentProps<'header'>): _$react_jsx_runtime0.JSX.Element;
10
10
  //#endregion
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
- import { useCopyButton } from "../../utils/use-copy-button.js";
4
3
  import { buttonVariants } from "../../components/ui/button.js";
4
+ import { useCopyButton } from "../../utils/use-copy-button.js";
5
5
  import { Popover, PopoverContent, PopoverTrigger } from "../../components/ui/popover.js";
6
6
  import { useMemo, useState } from "react";
7
7
  import { usePathname } from "fumadocs-core/framework";
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
 
3
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/controlled.d.ts
3
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/controlled.d.ts
4
4
  type ModalState = 'LOADED' | 'LOADING' | 'UNLOADED' | 'UNLOADING';
5
5
  interface ControlledProps {
6
6
  a11yNameButtonUnzoom?: string;
@@ -6,7 +6,7 @@ import { getStyleGhost } from "./utils/get-style-ghost.js";
6
6
  import { getStyleModalImg } from "./utils/get-style-modal-img.js";
7
7
  import React from "react";
8
8
  import ReactDOM from "react-dom";
9
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/controlled.js
9
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/controlled.js
10
10
  const IMAGE_QUERY = [
11
11
  "img",
12
12
  "svg",
@@ -15,6 +15,8 @@ const IMAGE_QUERY = [
15
15
  ].map((x) => `${x}:not([aria-hidden="true"])`).join(",");
16
16
  const defaultBodyAttrs = {
17
17
  overflow: "",
18
+ position: "",
19
+ top: "",
18
20
  width: ""
19
21
  };
20
22
  function getDialogContainer() {
@@ -50,10 +52,12 @@ var ControlledBase = class extends React.Component {
50
52
  this.imgEl = null;
51
53
  this.isScaling = false;
52
54
  this.prevBodyAttrs = defaultBodyAttrs;
55
+ this.prevScrollY = 0;
53
56
  this.styleModalImg = {};
54
57
  this.handleModalStateChange = (prevModalState) => {
55
58
  const { state: { modalState } } = this;
56
59
  if (prevModalState !== "LOADING" && modalState === "LOADING") {
60
+ this.isScaling = false;
57
61
  this.loadZoomImg();
58
62
  window.addEventListener("resize", this.handleResize, { passive: true });
59
63
  window.addEventListener("touchstart", this.handleTouchStart, { passive: true });
@@ -176,6 +180,8 @@ var ControlledBase = class extends React.Component {
176
180
  };
177
181
  this.handleWheel = (e) => {
178
182
  if (e.ctrlKey) return;
183
+ if (this.isScaling) return;
184
+ if ((window.visualViewport?.scale ?? 1) > 1) return;
179
185
  e.stopPropagation();
180
186
  queueMicrotask(() => {
181
187
  this.handleUnzoom(e);
@@ -210,12 +216,10 @@ var ControlledBase = class extends React.Component {
210
216
  }
211
217
  };
212
218
  this.handleTouchEnd = () => {
213
- this.isScaling = false;
214
219
  this.touchYStart = void 0;
215
220
  this.touchYEnd = void 0;
216
221
  };
217
222
  this.handleTouchCancel = () => {
218
- this.isScaling = false;
219
223
  this.touchYStart = void 0;
220
224
  this.touchYEnd = void 0;
221
225
  };
@@ -250,19 +254,31 @@ var ControlledBase = class extends React.Component {
250
254
  }
251
255
  };
252
256
  this.bodyScrollDisable = () => {
257
+ const bodyStyle = document.body.style;
253
258
  this.prevBodyAttrs = {
254
- overflow: document.body.style.overflow,
255
- width: document.body.style.width
259
+ overflow: bodyStyle.overflow,
260
+ position: bodyStyle.position,
261
+ top: bodyStyle.top,
262
+ width: bodyStyle.width
256
263
  };
257
- const { body: { clientWidth } } = document;
258
- document.body.style.overflow = "hidden";
259
- document.body.style.width = `${clientWidth}px`;
264
+ const scrollY = window.scrollY;
265
+ this.prevScrollY = scrollY;
266
+ const clientWidth = document.body.clientWidth;
267
+ bodyStyle.overflow = "hidden";
268
+ bodyStyle.position = "fixed";
269
+ bodyStyle.top = `-${scrollY}px`;
270
+ bodyStyle.width = `${clientWidth}px`;
260
271
  };
261
272
  this.bodyScrollEnable = () => {
262
- const { prevBodyAttrs: { overflow, width } } = this;
263
- document.body.style.width = width;
264
- document.body.style.overflow = overflow;
273
+ const bodyStyle = document.body.style;
274
+ const prev = this.prevBodyAttrs;
275
+ bodyStyle.width = prev.width;
276
+ bodyStyle.position = prev.position;
277
+ bodyStyle.top = prev.top;
278
+ bodyStyle.overflow = prev.overflow;
279
+ window.scrollTo(0, this.prevScrollY);
265
280
  this.prevBodyAttrs = defaultBodyAttrs;
281
+ this.prevScrollY = 0;
266
282
  };
267
283
  this.loadZoomImg = () => {
268
284
  const { props: { zoomImg } } = this;
@@ -1,7 +1,7 @@
1
1
  import { ControlledProps } from "./controlled.js";
2
2
  import React from "react";
3
3
 
4
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/uncontrolled.d.ts
4
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/uncontrolled.d.ts
5
5
  type UncontrolledProps = Omit<ControlledProps, 'isZoomed'>;
6
6
  //#endregion
7
7
  export { UncontrolledProps };
@@ -1,6 +1,6 @@
1
1
  import { Controlled } from "./controlled.js";
2
2
  import React from "react";
3
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/uncontrolled.js
3
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/uncontrolled.js
4
4
  function Uncontrolled({ onZoomChange, ...props }) {
5
5
  const [isZoomed, setIsZoomed] = React.useState(false);
6
6
  const handleZoomChange = React.useCallback((value, { event }) => {
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/adjust-svg-ids.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/adjust-svg-ids.js
2
2
  const adjustSvgIDs = (svgEl) => {
3
3
  const newIdSuffix = "-zoom";
4
4
  const attrs = [
@@ -1,6 +1,6 @@
1
1
  import { getScale } from "./get-scale.js";
2
2
  import { parsePosition } from "./parse-position.js";
3
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/compute-positioned-style.js
3
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/compute-positioned-style.js
4
4
  const computePositionedStyle = ({ containerHeight, containerLeft, containerTop, containerWidth, hasScalableSrc, offset, position, targetHeight, targetWidth, visibleHeight, visibleWidth }) => {
5
5
  const [posLeft = "50%", posTop = "50%"] = position.split(" ");
6
6
  const posX = parsePosition(posLeft, containerWidth - visibleWidth);
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/element-tests.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/element-tests.js
2
2
  function isElement(el) {
3
3
  if (typeof Element === "undefined") return false;
4
4
  return el instanceof Element;
@@ -1,6 +1,6 @@
1
1
  import { parsePosition } from "./parse-position.js";
2
2
  import { computePositionedStyle } from "./compute-positioned-style.js";
3
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-div-img-style.js
3
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-div-img-style.js
4
4
  const getDivImgStyle = ({ backgroundPosition, backgroundSize, containerHeight, containerLeft, containerTop, containerWidth, hasScalableSrc, offset, targetHeight, targetWidth }) => {
5
5
  const base = {
6
6
  containerHeight,
@@ -1,5 +1,5 @@
1
1
  import { testImg } from "./element-tests.js";
2
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-img-alt.js
2
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-img-alt.js
3
3
  const getImgAlt = (imgEl) => {
4
4
  if (imgEl !== null) if (testImg(imgEl)) return imgEl.alt;
5
5
  else return imgEl.getAttribute("aria-label") ?? void 0;
@@ -1,6 +1,6 @@
1
1
  import { getScale } from "./get-scale.js";
2
2
  import { computePositionedStyle } from "./compute-positioned-style.js";
3
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-img-object-fit-style.js
3
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-img-object-fit-style.js
4
4
  const getImgObjectFitStyle = ({ containerHeight, containerLeft, containerTop, containerWidth, hasScalableSrc, objectFit: objectFitParam, objectPosition, offset, targetHeight, targetWidth }) => {
5
5
  let resolvedObjectFit = objectFitParam;
6
6
  if (resolvedObjectFit === "scale-down") if (targetWidth <= containerWidth && targetHeight <= containerHeight) resolvedObjectFit = "none";
@@ -1,5 +1,5 @@
1
1
  import { getScale } from "./get-scale.js";
2
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-img-regular-style.js
2
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-img-regular-style.js
3
3
  const getImgRegularStyle = ({ containerHeight, containerLeft, containerTop, containerWidth, hasScalableSrc, offset, targetHeight, targetWidth }) => {
4
4
  const scale = getScale({
5
5
  containerHeight,
@@ -1,5 +1,5 @@
1
1
  import { testDiv, testImg } from "./element-tests.js";
2
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-img-src.js
2
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-img-src.js
3
3
  const URL_REGEX = /url(?:\(['"]?)(?<url>.*?)(?:['"]?\))/;
4
4
  const getImgSrc = (imgEl) => {
5
5
  if (imgEl !== null) {
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-modal-img-transform.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-modal-img-transform.js
2
2
  const getModalImgTransform = ({ height, initialTransform, isZoomed, left, top, userTransform, width }) => {
3
3
  let centeredUserTransform = "";
4
4
  if (userTransform !== "none" && userTransform !== "") {
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-scale.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-scale.js
2
2
  const getScaleToWindow = ({ height, offset, width }) => Math.min((window.innerWidth - offset * 2) / width, (window.innerHeight - offset * 2) / height);
3
3
  const getScaleToWindowMax = ({ containerHeight, containerWidth, offset, targetHeight, targetWidth }) => {
4
4
  const scale = getScaleToWindow({
@@ -1,5 +1,5 @@
1
1
  import { testSvg } from "./element-tests.js";
2
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-style-ghost.js
2
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-style-ghost.js
3
3
  const getStyleGhost = (imgEl) => {
4
4
  if (imgEl == null) return {};
5
5
  if (testSvg(imgEl)) {
@@ -5,7 +5,7 @@ import { getDivImgStyle } from "./get-div-img-style.js";
5
5
  import { getModalImgTransform } from "./get-modal-img-transform.js";
6
6
  import { getTargetDimension } from "./get-target-dimension.js";
7
7
  import { testHasScalableSrc } from "./test-has-scalable-src.js";
8
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-style-modal-img.js
8
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-style-modal-img.js
9
9
  const getStyleModalImg = ({ hasZoomImg, imgSrc, isSvg, isZoomed, loadedImgEl, offset, shouldRefresh, targetEl }) => {
10
10
  const hasScalableSrc = testHasScalableSrc({
11
11
  hasZoomImg,
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/get-target-dimension.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/get-target-dimension.js
2
2
  const getTargetDimension = ({ fallback, natural }) => natural !== void 0 && natural !== 0 ? natural : fallback;
3
3
  //#endregion
4
4
  export { getTargetDimension };
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/parse-position.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/parse-position.js
2
2
  const parsePosition = (position, relativeNum) => {
3
3
  const positionNum = parseFloat(position);
4
4
  return position.endsWith("%") ? relativeNum * positionNum / 100 : positionNum;
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.4_react-dom@19.2.5_react@19.2.5__react@19.2.5/node_modules/react-medium-image-zoom/dist/utils/test-has-scalable-src.js
1
+ //#region ../../node_modules/.pnpm/react-medium-image-zoom@5.4.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/react-medium-image-zoom/dist/utils/test-has-scalable-src.js
2
2
  const SRC_SVG_REGEX = /\.svg$/i;
3
3
  const testHasScalableSrc = ({ hasZoomImg, imgSrc, isSvg }) => isSvg || imgSrc?.slice(0, 18) === "data:image/svg+xml" || hasZoomImg || imgSrc !== void 0 && SRC_SVG_REGEX.test(imgSrc);
4
4
  //#endregion
@@ -19,4 +19,4 @@ declare function generate({
19
19
  ...props
20
20
  }: GenerateProps): _$react_jsx_runtime0.JSX.Element;
21
21
  //#endregion
22
- export { generate, generateOGImage };
22
+ export { GenerateProps, generate, generateOGImage };
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -304,9 +304,6 @@
304
304
  .inset-s-4 {
305
305
  inset-inline-start: calc(var(--spacing) * 4);
306
306
  }
307
- .start {
308
- inset-inline-start: var(--spacing);
309
- }
310
307
  .start-0 {
311
308
  inset-inline-start: calc(var(--spacing) * 0);
312
309
  }
@@ -1215,6 +1212,9 @@
1215
1212
  .scroll-m-28 {
1216
1213
  scroll-margin: calc(var(--spacing) * 28);
1217
1214
  }
1215
+ .\[scrollbar-width\:none\] {
1216
+ scrollbar-width: none;
1217
+ }
1218
1218
  .list-none {
1219
1219
  list-style-type: none;
1220
1220
  }
@@ -2014,9 +2014,6 @@
2014
2014
  .\[offset-distance\:var\(--offset-distance\,0\)\] {
2015
2015
  offset-distance: var(--offset-distance,0);
2016
2016
  }
2017
- .\[scrollbar-width\:none\] {
2018
- scrollbar-width: none;
2019
- }
2020
2017
  .\*\:pointer-events-auto {
2021
2018
  :is(& > *) {
2022
2019
  pointer-events: auto;
@@ -2088,6 +2085,13 @@
2088
2085
  margin-bottom: calc(var(--spacing) * 2);
2089
2086
  }
2090
2087
  }
2088
+ .group-hover\/heading\:opacity-100 {
2089
+ &:is(:where(.group\/heading):hover *) {
2090
+ @media (hover: hover) {
2091
+ opacity: 100%;
2092
+ }
2093
+ }
2094
+ }
2091
2095
  .group-data-active\:bg-fd-primary {
2092
2096
  &:is(:where(.group)[data-active] *) {
2093
2097
  background-color: var(--color-fd-primary);
@@ -2103,13 +2107,6 @@
2103
2107
  rotate: 90deg;
2104
2108
  }
2105
2109
  }
2106
- .peer-hover\:opacity-100 {
2107
- &:is(:where(.peer):hover ~ *) {
2108
- @media (hover: hover) {
2109
- opacity: 100%;
2110
- }
2111
- }
2112
- }
2113
2110
  .placeholder\:text-fd-muted-foreground {
2114
2111
  &::placeholder {
2115
2112
  color: var(--color-fd-muted-foreground);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fumadocs/base-ui",
3
- "version": "16.8.7",
3
+ "version": "16.8.9",
4
4
  "description": "The Base UI version of Fumadocs UI",
5
5
  "keywords": [
6
6
  "Docs",
@@ -130,22 +130,22 @@
130
130
  "@fumadocs/tailwind": "0.0.5"
131
131
  },
132
132
  "devDependencies": {
133
- "@tailwindcss/cli": "^4.2.4",
134
- "@tailwindcss/oxide": "^4.2.4",
135
- "@tsdown/css": "^0.21.10",
133
+ "@tailwindcss/cli": "^4.3.0",
134
+ "@tailwindcss/oxide": "^4.3.0",
135
+ "@tsdown/css": "^0.22.0",
136
136
  "@types/hast": "^3.0.4",
137
137
  "@types/mdx": "^2.0.13",
138
- "@types/node": "^25.6.0",
138
+ "@types/node": "^25.6.2",
139
139
  "@types/react": "^19.2.14",
140
140
  "@types/react-dom": "^19.2.3",
141
141
  "fuma-cli": "^0.1.1",
142
- "react-medium-image-zoom": "^5.4.4",
143
- "tailwindcss": "^4.2.4",
144
- "tsdown": "0.21.10",
142
+ "react-medium-image-zoom": "^5.4.5",
143
+ "tailwindcss": "^4.3.0",
144
+ "tsdown": "0.22.0",
145
145
  "unified": "^11.0.5",
146
+ "tsconfig": "0.0.0",
146
147
  "@fumadocs/cli": "1.3.10",
147
- "fumadocs-core": "16.8.7",
148
- "tsconfig": "0.0.0"
148
+ "fumadocs-core": "16.8.9"
149
149
  },
150
150
  "peerDependencies": {
151
151
  "@takumi-rs/image-response": "*",
@@ -154,7 +154,7 @@
154
154
  "next": "16.x.x",
155
155
  "react": "^19.2.0",
156
156
  "react-dom": "^19.2.0",
157
- "fumadocs-core": "16.8.7"
157
+ "fumadocs-core": "16.8.9"
158
158
  },
159
159
  "peerDependenciesMeta": {
160
160
  "next": {
@@ -171,11 +171,11 @@
171
171
  }
172
172
  },
173
173
  "inlinedDependencies": {
174
- "react-medium-image-zoom": "5.4.4"
174
+ "react-medium-image-zoom": "5.4.5"
175
175
  },
176
176
  "scripts": {
177
177
  "build": "pnpm build:layout && pnpm build:tailwind",
178
- "build:layout": "tsdown --config-loader unrun",
178
+ "build:layout": "tsdown",
179
179
  "build:tailwind": "tailwindcss -i css/style.css -o ./dist/style.css",
180
180
  "clean": "rimraf dist",
181
181
  "dev": "concurrently \"tsdown --watch --clean false\" \"tailwindcss -i css/style.css -o ./dist/style.css -w\"",