fumadocs-ui 11.3.1 → 12.0.0

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 (54) hide show
  1. package/dist/{chunk-24NYFO7H.js → chunk-2KMKNVSN.js} +2 -4
  2. package/dist/{chunk-C4PI62MH.js → chunk-34Z7WODD.js} +6 -8
  3. package/dist/{chunk-GDRBCN6Q.js → chunk-3F57TIUQ.js} +21 -7
  4. package/dist/{chunk-PXDQVGII.js → chunk-7EMVRXMS.js} +10 -1
  5. package/dist/{chunk-7F2LGCS6.js → chunk-AN2Y6MA2.js} +2 -4
  6. package/dist/{chunk-PW7TBOIJ.js → chunk-CRYPD6UZ.js} +2 -1
  7. package/dist/{chunk-UKE65HV3.js → chunk-IOHAG6BY.js} +1 -1
  8. package/dist/chunk-JQW5DMD2.js +226 -0
  9. package/dist/{chunk-WNKY4RA5.js → chunk-UBVEKNRF.js} +1 -1
  10. package/dist/{chunk-E2VA3Y4S.js → chunk-XXVXIK4M.js} +2 -3
  11. package/dist/components/accordion.js +2 -2
  12. package/dist/components/api.js +5 -8
  13. package/dist/components/callout.js +1 -1
  14. package/dist/components/card.js +1 -1
  15. package/dist/components/codeblock.js +3 -3
  16. package/dist/components/dialog/search-algolia.js +4 -3
  17. package/dist/components/dialog/search-default.js +4 -3
  18. package/dist/components/dialog/search.js +4 -3
  19. package/dist/components/files.js +1 -1
  20. package/dist/components/heading.js +2 -2
  21. package/dist/components/image-zoom.js +4 -6
  22. package/dist/components/inline-toc.js +1 -1
  23. package/dist/components/layout/language-toggle.d.ts +6 -0
  24. package/dist/components/layout/language-toggle.js +58 -0
  25. package/dist/components/layout/root-toggle.d.ts +16 -0
  26. package/dist/components/layout/root-toggle.js +60 -0
  27. package/dist/components/roll-button.js +2 -3
  28. package/dist/components/steps.js +1 -1
  29. package/dist/components/tabs.js +6 -11
  30. package/dist/components/type-table.js +2 -2
  31. package/dist/docs.client.d.ts +13 -0
  32. package/dist/docs.client.js +396 -0
  33. package/dist/{i18n-p5QWhj_3.d.ts → i18n-CE8z-AAs.d.ts} +1 -0
  34. package/dist/i18n.d.ts +3 -6
  35. package/dist/i18n.js +5 -104
  36. package/dist/{layout-vxXAvjoq.d.ts → layout.client-Duq0TTke.d.ts} +23 -15
  37. package/dist/layout.client.d.ts +2 -8
  38. package/dist/layout.client.js +39 -571
  39. package/dist/layout.d.ts +1 -1
  40. package/dist/layout.js +42 -28
  41. package/dist/mdx.client.js +3 -3
  42. package/dist/mdx.js +4 -4
  43. package/dist/page.client.js +7 -8
  44. package/dist/page.js +19 -10
  45. package/dist/provider.d.ts +12 -13
  46. package/dist/provider.js +10 -11
  47. package/dist/style.css +1 -1
  48. package/dist/tailwind-plugin.cjs +34 -43
  49. package/dist/tailwind-plugin.js +35 -44
  50. package/dist/twoslash/popup.js +8 -14
  51. package/dist/twoslash.css +1 -1
  52. package/package.json +4 -5
  53. /package/dist/{chunk-6C3VEZWH.js → chunk-MLKGABMK.js} +0 -0
  54. /package/dist/{tree-cqNEopxM.d.ts → tree-CrKzI9Nz.d.ts} +0 -0
@@ -9,8 +9,7 @@ function useCopyButton(onCopy) {
9
9
  const [checked, setChecked] = useState(false);
10
10
  const timeoutRef = useRef(null);
11
11
  const onClick = useCallback(() => {
12
- if (timeoutRef.current)
13
- window.clearTimeout(timeoutRef.current);
12
+ if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
14
13
  timeoutRef.current = window.setTimeout(() => {
15
14
  setChecked(false);
16
15
  }, 1500);
@@ -19,8 +18,7 @@ function useCopyButton(onCopy) {
19
18
  }, [onCopy]);
20
19
  useEffect(() => {
21
20
  return () => {
22
- if (timeoutRef.current)
23
- window.clearTimeout(timeoutRef.current);
21
+ if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
24
22
  };
25
23
  }, []);
26
24
  return [checked, onClick];
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  hasActive
3
- } from "./chunk-7F2LGCS6.js";
3
+ } from "./chunk-AN2Y6MA2.js";
4
4
 
5
5
  // src/contexts/tree.tsx
6
6
  import { usePathname } from "next/navigation";
@@ -11,8 +11,7 @@ function findRoot(items, pathname) {
11
11
  for (const item of items) {
12
12
  if (item.type === "folder") {
13
13
  const root = findRoot(item.children, pathname);
14
- if (root)
15
- return root;
14
+ if (root) return root;
16
15
  if (item.root === true && hasActive(item.children, pathname)) {
17
16
  return item;
18
17
  }
@@ -21,12 +20,10 @@ function findRoot(items, pathname) {
21
20
  }
22
21
  function getNavigationList(tree) {
23
22
  return tree.flatMap((node) => {
24
- if (node.type === "separator")
25
- return [];
23
+ if (node.type === "separator") return [];
26
24
  if (node.type === "folder") {
27
25
  const children = getNavigationList(node.children);
28
- if (!node.root && node.index)
29
- children.unshift(node.index);
26
+ if (!node.root && node.index) children.unshift(node.index);
30
27
  return children;
31
28
  }
32
29
  return !node.external ? [node] : [];
@@ -39,9 +36,10 @@ function TreeContextProvider({
39
36
  const pathname = usePathname();
40
37
  const value = useMemo(() => {
41
38
  const root = findRoot(tree.children, pathname) ?? tree;
39
+ const navigation = getNavigationList(root.children);
42
40
  return {
43
41
  root,
44
- navigation: getNavigationList(root.children),
42
+ navigation,
45
43
  tree
46
44
  };
47
45
  }, [pathname, tree]);
@@ -1,21 +1,34 @@
1
1
  // src/contexts/sidebar.tsx
2
- import { createContext, useContext, useState, useMemo } from "react";
2
+ import {
3
+ createContext,
4
+ useContext,
5
+ useState,
6
+ useMemo,
7
+ useRef,
8
+ useEffect
9
+ } from "react";
10
+ import { usePathname } from "next/navigation";
3
11
  import { SidebarProvider as BaseProvider } from "fumadocs-core/sidebar";
4
12
  import { jsx } from "react/jsx-runtime";
5
- var SidebarContext = createContext(
6
- void 0
7
- );
13
+ var SidebarContext = createContext(void 0);
8
14
  function useSidebar() {
9
15
  const ctx = useContext(SidebarContext);
10
- if (!ctx)
11
- throw new Error("Missing root provider");
16
+ if (!ctx) throw new Error("Missing root provider");
12
17
  return ctx;
13
18
  }
14
19
  function SidebarProvider({
15
20
  children
16
21
  }) {
22
+ const closeOnRedirect = useRef(false);
17
23
  const [open, setOpen] = useState(false);
18
24
  const [collapsed, setCollapsed] = useState(false);
25
+ const pathname = usePathname();
26
+ useEffect(() => {
27
+ if (closeOnRedirect.current) {
28
+ setOpen(false);
29
+ closeOnRedirect.current = false;
30
+ }
31
+ }, [pathname]);
19
32
  return /* @__PURE__ */ jsx(
20
33
  SidebarContext.Provider,
21
34
  {
@@ -24,7 +37,8 @@ function SidebarProvider({
24
37
  open,
25
38
  setOpen,
26
39
  collapsed,
27
- setCollapsed
40
+ setCollapsed,
41
+ closeOnRedirect
28
42
  }),
29
43
  [open, collapsed]
30
44
  ),
@@ -1,9 +1,12 @@
1
+ import {
2
+ useSidebar
3
+ } from "./chunk-3F57TIUQ.js";
1
4
  import {
2
5
  useSearchContext
3
6
  } from "./chunk-FSPYEOFC.js";
4
7
  import {
5
8
  useI18n
6
- } from "./chunk-PW7TBOIJ.js";
9
+ } from "./chunk-CRYPD6UZ.js";
7
10
  import {
8
11
  buttonVariants
9
12
  } from "./chunk-7GZKFBAP.js";
@@ -180,11 +183,17 @@ function Search2({
180
183
  const { text } = useI18n();
181
184
  const router = useRouter();
182
185
  const { setOpenSearch } = useSearchContext();
186
+ const sidebar = useSidebar();
183
187
  const items = results === "empty" ? defaultItems : results;
184
188
  const hideList = results === "empty" && defaultItems.length === 0;
185
189
  const onOpen = (url) => {
186
190
  router.push(url);
187
191
  setOpenSearch(false);
192
+ if (location.pathname === url.split("#")[0]) {
193
+ sidebar.setOpen(false);
194
+ } else {
195
+ sidebar.closeOnRedirect.current = true;
196
+ }
188
197
  };
189
198
  return /* @__PURE__ */ jsxs2(Fragment, { children: [
190
199
  /* @__PURE__ */ jsx2(
@@ -4,10 +4,8 @@ function isActive(url, pathname, nested = true) {
4
4
  return url === pathname || nested && pathname.startsWith(`${url}/`);
5
5
  }
6
6
  function replaceOrDefault(obj, def) {
7
- if (obj?.enabled === false)
8
- return;
9
- if (obj?.component !== void 0)
10
- return obj.component;
7
+ if (obj?.enabled === false) return;
8
+ if (obj?.component !== void 0) return obj.component;
11
9
  return def;
12
10
  }
13
11
  function hasActive(items, url) {
@@ -8,7 +8,8 @@ var I18nContext = createContext({
8
8
  lastUpdate: "Last updated on",
9
9
  chooseLanguage: "Choose a language",
10
10
  nextPage: "Next",
11
- previousPage: "Previous"
11
+ previousPage: "Previous",
12
+ chooseTheme: "Theme"
12
13
  }
13
14
  });
14
15
  function useI18n() {
@@ -11,7 +11,7 @@ function Heading({
11
11
  ...props
12
12
  }) {
13
13
  const As = as ?? "h1";
14
- return /* @__PURE__ */ jsx(As, { className: twMerge("scroll-m-20", className), ...props, children: props.id ? /* @__PURE__ */ jsxs("a", { href: `#${props.id}`, className: "not-prose group", children: [
14
+ return /* @__PURE__ */ jsx(As, { className: twMerge("scroll-m-20", className), ...props, children: props.id ? /* @__PURE__ */ jsxs("a", { href: `#${props.id}`, className: "group", children: [
15
15
  props.children,
16
16
  /* @__PURE__ */ jsx(
17
17
  LinkIcon,
@@ -0,0 +1,226 @@
1
+ import {
2
+ Popover,
3
+ PopoverContent,
4
+ PopoverTrigger
5
+ } from "./chunk-UBVEKNRF.js";
6
+ import {
7
+ isActive
8
+ } from "./chunk-AN2Y6MA2.js";
9
+ import {
10
+ useSearchContext
11
+ } from "./chunk-FSPYEOFC.js";
12
+ import {
13
+ useI18n
14
+ } from "./chunk-CRYPD6UZ.js";
15
+ import {
16
+ Collapsible,
17
+ CollapsibleContent,
18
+ CollapsibleTrigger
19
+ } from "./chunk-7XPZOMJ2.js";
20
+ import {
21
+ buttonVariants
22
+ } from "./chunk-7GZKFBAP.js";
23
+ import {
24
+ twMerge
25
+ } from "./chunk-TK3TM3MR.js";
26
+
27
+ // src/components/layout/search-toggle.tsx
28
+ import { useCallback } from "react";
29
+ import { SearchIcon } from "lucide-react";
30
+ import { jsx, jsxs } from "react/jsx-runtime";
31
+ function SearchToggle(props) {
32
+ const { setOpenSearch } = useSearchContext();
33
+ return /* @__PURE__ */ jsx(
34
+ "button",
35
+ {
36
+ type: "button",
37
+ className: twMerge(
38
+ buttonVariants({
39
+ size: "icon",
40
+ color: "ghost",
41
+ className: props.className
42
+ })
43
+ ),
44
+ "aria-label": "Open Search",
45
+ onClick: useCallback(() => {
46
+ setOpenSearch(true);
47
+ }, [setOpenSearch]),
48
+ children: /* @__PURE__ */ jsx(SearchIcon, {})
49
+ }
50
+ );
51
+ }
52
+ function LargeSearchToggle(props) {
53
+ const { hotKey, setOpenSearch } = useSearchContext();
54
+ const { text } = useI18n();
55
+ return /* @__PURE__ */ jsxs(
56
+ "button",
57
+ {
58
+ type: "button",
59
+ ...props,
60
+ className: twMerge(
61
+ "inline-flex items-center gap-2 rounded-full border bg-secondary/50 p-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground",
62
+ props.className
63
+ ),
64
+ onClick: useCallback(() => {
65
+ setOpenSearch(true);
66
+ }, [setOpenSearch]),
67
+ children: [
68
+ /* @__PURE__ */ jsx(SearchIcon, { className: "ms-1 size-4" }),
69
+ text.search,
70
+ /* @__PURE__ */ jsx("div", { className: "ms-auto inline-flex gap-0.5 text-xs", children: hotKey.map((k, i) => /* @__PURE__ */ jsx("kbd", { className: "rounded-md border bg-background px-1.5", children: k.display }, i)) })
71
+ ]
72
+ }
73
+ );
74
+ }
75
+
76
+ // src/components/layout/theme-toggle.tsx
77
+ import { cva } from "class-variance-authority";
78
+ import { Moon, Sun } from "lucide-react";
79
+ import { useTheme } from "next-themes";
80
+ import { useCallback as useCallback2 } from "react";
81
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
82
+ var buttonVariants2 = cva("size-7 rounded-full p-1.5 text-muted-foreground", {
83
+ variants: {
84
+ dark: {
85
+ true: "dark:bg-accent dark:text-accent-foreground",
86
+ false: "bg-accent text-accent-foreground dark:bg-transparent dark:text-muted-foreground"
87
+ }
88
+ }
89
+ });
90
+ function ThemeToggle({
91
+ className,
92
+ ...props
93
+ }) {
94
+ const { setTheme, resolvedTheme } = useTheme();
95
+ const onToggle = useCallback2(() => {
96
+ setTheme(resolvedTheme === "dark" ? "light" : "dark");
97
+ }, [setTheme, resolvedTheme]);
98
+ return /* @__PURE__ */ jsxs2(
99
+ "button",
100
+ {
101
+ type: "button",
102
+ className: twMerge(
103
+ "inline-flex items-center rounded-full border p-0.5",
104
+ className
105
+ ),
106
+ "aria-label": "Toggle Theme",
107
+ onClick: onToggle,
108
+ ...props,
109
+ children: [
110
+ /* @__PURE__ */ jsx2(Sun, { className: twMerge(buttonVariants2({ dark: false })) }),
111
+ /* @__PURE__ */ jsx2(Moon, { className: twMerge(buttonVariants2({ dark: true })) })
112
+ ]
113
+ }
114
+ );
115
+ }
116
+
117
+ // src/components/link-item.tsx
118
+ import Link from "fumadocs-core/link";
119
+ import { ChevronDown } from "lucide-react";
120
+ import { usePathname } from "next/navigation";
121
+ import { cva as cva2 } from "class-variance-authority";
122
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
123
+ var linkItemVariants = cva2(
124
+ "inline-flex items-center gap-1.5 rounded-lg p-2 text-muted-foreground transition-colors [&_svg]:size-4",
125
+ {
126
+ variants: {
127
+ active: {
128
+ true: "bg-accent text-accent-foreground",
129
+ false: "hover:bg-accent"
130
+ }
131
+ },
132
+ defaultVariants: {
133
+ active: false
134
+ }
135
+ }
136
+ );
137
+ function LinkItem({
138
+ item,
139
+ on = "nav",
140
+ className,
141
+ ...props
142
+ }) {
143
+ const pathname = usePathname();
144
+ if (item.type === "menu" && on === "nav") {
145
+ return /* @__PURE__ */ jsxs3(Popover, { children: [
146
+ /* @__PURE__ */ jsxs3(
147
+ PopoverTrigger,
148
+ {
149
+ className: twMerge(
150
+ linkItemVariants({ className }),
151
+ "data-[state=open]:bg-accent"
152
+ ),
153
+ ...props,
154
+ children: [
155
+ item.text,
156
+ /* @__PURE__ */ jsx3(ChevronDown, { className: "ml-auto size-4" })
157
+ ]
158
+ }
159
+ ),
160
+ /* @__PURE__ */ jsx3(PopoverContent, { className: "flex flex-col", children: item.items.map((child, i) => /* @__PURE__ */ jsx3(LinkItem, { item: child, on: "menu" }, i)) })
161
+ ] });
162
+ }
163
+ if (item.type === "menu") {
164
+ return /* @__PURE__ */ jsxs3(Collapsible, { className: "flex flex-col", children: [
165
+ /* @__PURE__ */ jsxs3(
166
+ CollapsibleTrigger,
167
+ {
168
+ className: twMerge(linkItemVariants({ className }), "group/link"),
169
+ ...props,
170
+ children: [
171
+ item.icon,
172
+ item.text,
173
+ /* @__PURE__ */ jsx3(ChevronDown, { className: "ml-auto size-4 group-data-[state=closed]/link:-rotate-90" })
174
+ ]
175
+ }
176
+ ),
177
+ /* @__PURE__ */ jsx3(CollapsibleContent, { children: /* @__PURE__ */ jsx3("div", { className: "flex flex-col py-1 ps-4", children: item.items.map((child, i) => /* @__PURE__ */ jsx3(LinkItem, { item: child, on: "menu" }, i)) }) })
178
+ ] });
179
+ }
180
+ const activeType = item.active ?? "url";
181
+ const active = activeType !== "none" ? isActive(item.url, pathname, activeType === "nested-url") : false;
182
+ if (item.type === "secondary" && on === "nav") {
183
+ return /* @__PURE__ */ jsx3(
184
+ Link,
185
+ {
186
+ "aria-label": item.text,
187
+ href: item.url,
188
+ external: item.external,
189
+ className: twMerge(
190
+ buttonVariants({
191
+ size: "icon",
192
+ color: "ghost",
193
+ className
194
+ })
195
+ ),
196
+ ...props,
197
+ children: item.icon
198
+ }
199
+ );
200
+ }
201
+ return /* @__PURE__ */ jsxs3(
202
+ Link,
203
+ {
204
+ href: item.url,
205
+ external: item.external,
206
+ className: twMerge(
207
+ linkItemVariants({
208
+ active,
209
+ className
210
+ })
211
+ ),
212
+ ...props,
213
+ children: [
214
+ on === "menu" ? item.icon : null,
215
+ item.text
216
+ ]
217
+ }
218
+ );
219
+ }
220
+
221
+ export {
222
+ SearchToggle,
223
+ LargeSearchToggle,
224
+ LinkItem,
225
+ ThemeToggle
226
+ };
@@ -16,7 +16,7 @@ var PopoverContent = React.forwardRef(({ className, align = "center", sideOffset
16
16
  sideOffset,
17
17
  side: "bottom",
18
18
  className: twMerge(
19
- "z-50 min-w-[260px] max-w-[90vw] rounded-md border bg-popover p-2 text-sm text-popover-foreground shadow-md outline-none data-[state=closed]:animate-popover-out data-[state=open]:animate-popover-in",
19
+ "z-50 min-w-[240px] max-w-[98vw] rounded-lg border bg-popover p-2 text-sm text-popover-foreground shadow-md outline-none data-[state=closed]:animate-popover-out data-[state=open]:animate-popover-in",
20
20
  className
21
21
  ),
22
22
  ...props
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-VYTHQTZE.js";
6
6
  import {
7
7
  useCopyButton
8
- } from "./chunk-24NYFO7H.js";
8
+ } from "./chunk-2KMKNVSN.js";
9
9
  import {
10
10
  buttonVariants
11
11
  } from "./chunk-7GZKFBAP.js";
@@ -28,8 +28,7 @@ var CodeBlock = forwardRef(
28
28
  const areaRef = useRef(null);
29
29
  const onCopy = useCallback(() => {
30
30
  const pre = areaRef.current?.getElementsByTagName("pre").item(0);
31
- if (!pre)
32
- return;
31
+ if (!pre) return;
33
32
  const clone = pre.cloneNode(true);
34
33
  clone.querySelectorAll(".nd-copy-ignore").forEach((node) => {
35
34
  node.remove();
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import {
3
3
  useCopyButton
4
- } from "../chunk-24NYFO7H.js";
4
+ } from "../chunk-2KMKNVSN.js";
5
5
  import {
6
6
  buttonVariants
7
7
  } from "../chunk-7GZKFBAP.js";
8
8
  import {
9
9
  twMerge
10
10
  } from "../chunk-TK3TM3MR.js";
11
- import "../chunk-6C3VEZWH.js";
11
+ import "../chunk-MLKGABMK.js";
12
12
 
13
13
  // src/components/accordion.tsx
14
14
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  twMerge
7
7
  } from "../chunk-TK3TM3MR.js";
8
- import "../chunk-6C3VEZWH.js";
8
+ import "../chunk-MLKGABMK.js";
9
9
 
10
10
  // src/components/api.tsx
11
11
  import { useState } from "react";
@@ -56,12 +56,9 @@ function APIInfo({
56
56
  ...props
57
57
  }) {
58
58
  let color = "green";
59
- if (["GET", "HEAD"].includes(method))
60
- color = "green";
61
- if (["POST", "PATCH", "PUT"].includes(method))
62
- color = "yellow";
63
- if (["DELETE"].includes(method))
64
- color = "red";
59
+ if (["GET", "HEAD"].includes(method)) color = "green";
60
+ if (["POST", "PATCH", "PUT"].includes(method)) color = "yellow";
61
+ if (["DELETE"].includes(method)) color = "red";
65
62
  return /* @__PURE__ */ jsxs("div", { className: twMerge("flex-1", className), ...props, children: [
66
63
  /* @__PURE__ */ jsxs("h2", { className: "not-prose mb-2 inline-flex items-center gap-3 font-mono", children: [
67
64
  /* @__PURE__ */ jsx("div", { className: twMerge(badgeVariants({ color })), children: method }),
@@ -96,7 +93,7 @@ function APIExample({
96
93
  return /* @__PURE__ */ jsxs(
97
94
  "div",
98
95
  {
99
- className: twMerge("sticky top-14 h-fit xl:w-2/5 xl:min-w-[400px]", className),
96
+ className: twMerge("sticky top-6 h-fit xl:w-2/5 xl:min-w-[400px]", className),
100
97
  ...props,
101
98
  children: [
102
99
  /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-4 xl:hidden", children: [
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  twMerge
3
3
  } from "../chunk-TK3TM3MR.js";
4
- import "../chunk-6C3VEZWH.js";
4
+ import "../chunk-MLKGABMK.js";
5
5
 
6
6
  // src/components/callout.tsx
7
7
  import { AlertOctagon, AlertTriangle, Info } from "lucide-react";
@@ -3,7 +3,7 @@ import {
3
3
  Cards
4
4
  } from "../chunk-N3HFQZRE.js";
5
5
  import "../chunk-TK3TM3MR.js";
6
- import "../chunk-6C3VEZWH.js";
6
+ import "../chunk-MLKGABMK.js";
7
7
  export {
8
8
  Card,
9
9
  Cards
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  CodeBlock,
4
4
  Pre
5
- } from "../chunk-E2VA3Y4S.js";
5
+ } from "../chunk-XXVXIK4M.js";
6
6
  import "../chunk-VYTHQTZE.js";
7
- import "../chunk-24NYFO7H.js";
7
+ import "../chunk-2KMKNVSN.js";
8
8
  import "../chunk-7GZKFBAP.js";
9
9
  import "../chunk-TK3TM3MR.js";
10
- import "../chunk-6C3VEZWH.js";
10
+ import "../chunk-MLKGABMK.js";
11
11
  export {
12
12
  CodeBlock,
13
13
  Pre
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  SearchDialog
4
- } from "../../chunk-PXDQVGII.js";
4
+ } from "../../chunk-7EMVRXMS.js";
5
+ import "../../chunk-3F57TIUQ.js";
5
6
  import "../../chunk-FSPYEOFC.js";
6
- import "../../chunk-PW7TBOIJ.js";
7
+ import "../../chunk-CRYPD6UZ.js";
7
8
  import "../../chunk-7GZKFBAP.js";
8
9
  import "../../chunk-TK3TM3MR.js";
9
- import "../../chunk-6C3VEZWH.js";
10
+ import "../../chunk-MLKGABMK.js";
10
11
 
11
12
  // src/components/dialog/search-algolia.tsx
12
13
  import {
@@ -1,14 +1,15 @@
1
1
  "use client";
2
2
  import {
3
3
  SearchDialog
4
- } from "../../chunk-PXDQVGII.js";
4
+ } from "../../chunk-7EMVRXMS.js";
5
+ import "../../chunk-3F57TIUQ.js";
5
6
  import "../../chunk-FSPYEOFC.js";
6
7
  import {
7
8
  useI18n
8
- } from "../../chunk-PW7TBOIJ.js";
9
+ } from "../../chunk-CRYPD6UZ.js";
9
10
  import "../../chunk-7GZKFBAP.js";
10
11
  import "../../chunk-TK3TM3MR.js";
11
- import "../../chunk-6C3VEZWH.js";
12
+ import "../../chunk-MLKGABMK.js";
12
13
 
13
14
  // src/components/dialog/search-default.tsx
14
15
  import { useDocsSearch } from "fumadocs-core/search/client";
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  SearchDialog
3
- } from "../../chunk-PXDQVGII.js";
3
+ } from "../../chunk-7EMVRXMS.js";
4
+ import "../../chunk-3F57TIUQ.js";
4
5
  import "../../chunk-FSPYEOFC.js";
5
- import "../../chunk-PW7TBOIJ.js";
6
+ import "../../chunk-CRYPD6UZ.js";
6
7
  import "../../chunk-7GZKFBAP.js";
7
8
  import "../../chunk-TK3TM3MR.js";
8
- import "../../chunk-6C3VEZWH.js";
9
+ import "../../chunk-MLKGABMK.js";
9
10
  export {
10
11
  SearchDialog
11
12
  };
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  twMerge
9
9
  } from "../chunk-TK3TM3MR.js";
10
- import "../chunk-6C3VEZWH.js";
10
+ import "../chunk-MLKGABMK.js";
11
11
 
12
12
  // src/components/files.tsx
13
13
  import { cva } from "class-variance-authority";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Heading
3
- } from "../chunk-UKE65HV3.js";
3
+ } from "../chunk-IOHAG6BY.js";
4
4
  import "../chunk-TK3TM3MR.js";
5
- import "../chunk-6C3VEZWH.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
  export {
7
7
  Heading
8
8
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import {
3
3
  defaultImageSizes
4
- } from "../chunk-7F2LGCS6.js";
5
- import "../chunk-6C3VEZWH.js";
4
+ } from "../chunk-AN2Y6MA2.js";
5
+ import "../chunk-MLKGABMK.js";
6
6
 
7
7
  // src/components/image-zoom.tsx
8
8
  import Image from "next/image";
@@ -10,10 +10,8 @@ import Zoom from "react-medium-image-zoom";
10
10
  import "../../dist/image-zoom.css";
11
11
  import { jsx } from "react/jsx-runtime";
12
12
  function getImageSrc(src) {
13
- if (typeof src === "string")
14
- return src;
15
- if ("default" in src)
16
- return src.default.src;
13
+ if (typeof src === "string") return src;
14
+ if ("default" in src) return src.default.src;
17
15
  return src.src;
18
16
  }
19
17
  function ImageZoom({
@@ -5,7 +5,7 @@ import {
5
5
  CollapsibleTrigger
6
6
  } from "../chunk-7XPZOMJ2.js";
7
7
  import "../chunk-TK3TM3MR.js";
8
- import "../chunk-6C3VEZWH.js";
8
+ import "../chunk-MLKGABMK.js";
9
9
 
10
10
  // src/components/inline-toc.tsx
11
11
  import { ChevronDown } from "lucide-react";
@@ -0,0 +1,6 @@
1
+ import { PopoverProps } from '@radix-ui/react-popover';
2
+
3
+ type LanguageSelectProps = Omit<PopoverProps, 'open' | 'onOpenChange'>;
4
+ declare function LanguageToggle(props: LanguageSelectProps): React.ReactElement;
5
+
6
+ export { type LanguageSelectProps, LanguageToggle };