@fumadocs/base-ui 16.8.11 → 16.9.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 (153) hide show
  1. package/css/generated/docs.css +0 -2
  2. package/css/generated/flux.css +0 -2
  3. package/css/generated/home.css +0 -8
  4. package/css/generated/notebook.css +0 -2
  5. package/css/generated/shared.css +59 -4
  6. package/dist/components/accordion.d.ts +1 -1
  7. package/dist/components/accordion.js +4 -2
  8. package/dist/components/banner.d.ts +1 -1
  9. package/dist/components/banner.js +6 -4
  10. package/dist/components/callout.d.ts +1 -1
  11. package/dist/components/card.d.ts +1 -1
  12. package/dist/components/card.js +1 -1
  13. package/dist/components/codeblock.d.ts +1 -1
  14. package/dist/components/codeblock.js +4 -2
  15. package/dist/components/dialog/search-algolia.d.ts +1 -1
  16. package/dist/components/dialog/search-algolia.js +1 -1
  17. package/dist/components/dialog/search-default.d.ts +1 -1
  18. package/dist/components/dialog/search-default.js +1 -1
  19. package/dist/components/dialog/search-orama.d.ts +1 -1
  20. package/dist/components/dialog/search-orama.js +1 -1
  21. package/dist/components/dialog/search.d.ts +1 -1
  22. package/dist/components/dialog/search.js +13 -12
  23. package/dist/components/dynamic-codeblock.core.js +1 -1
  24. package/dist/components/files.js +1 -1
  25. package/dist/components/github-info.d.ts +7 -3
  26. package/dist/components/github-info.js +8 -6
  27. package/dist/components/heading.d.ts +1 -1
  28. package/dist/components/heading.js +3 -1
  29. package/dist/components/image-zoom.d.ts +1 -1
  30. package/dist/components/inline-toc.d.ts +1 -1
  31. package/dist/components/inline-toc.js +3 -1
  32. package/dist/components/sidebar/base.d.ts +2 -2
  33. package/dist/components/sidebar/base.js +5 -4
  34. package/dist/components/sidebar/link-item.d.ts +1 -1
  35. package/dist/components/sidebar/page-tree.d.ts +1 -1
  36. package/dist/components/sidebar/page-tree.js +2 -2
  37. package/dist/components/sidebar/tabs/dropdown.d.ts +1 -1
  38. package/dist/components/sidebar/tabs/dropdown.js +4 -4
  39. package/dist/components/steps.d.ts +1 -1
  40. package/dist/components/tabs.d.ts +1 -1
  41. package/dist/components/tabs.js +1 -1
  42. package/dist/components/toc/clerk.d.ts +1 -1
  43. package/dist/components/toc/clerk.js +3 -4
  44. package/dist/components/toc/default.d.ts +1 -1
  45. package/dist/components/toc/default.js +3 -4
  46. package/dist/components/toc/index.d.ts +1 -1
  47. package/dist/components/toc/index.js +1 -1
  48. package/dist/components/type-table.d.ts +1 -1
  49. package/dist/components/type-table.js +16 -13
  50. package/dist/components/ui/accordion.d.ts +1 -1
  51. package/dist/components/ui/collapsible.d.ts +1 -1
  52. package/dist/components/ui/navigation-menu.d.ts +1 -1
  53. package/dist/components/ui/navigation-menu.js +1 -1
  54. package/dist/components/ui/popover.d.ts +1 -1
  55. package/dist/components/ui/popover.js +1 -1
  56. package/dist/components/ui/scroll-area.d.ts +1 -1
  57. package/dist/components/ui/scroll-area.js +1 -1
  58. package/dist/components/ui/tabs.d.ts +1 -1
  59. package/dist/components/ui/tabs.js +1 -1
  60. package/dist/contexts/i18n.d.ts +14 -22
  61. package/dist/contexts/i18n.js +12 -19
  62. package/dist/contexts/search.d.ts +1 -1
  63. package/dist/contexts/search.js +1 -1
  64. package/dist/contexts/tree.d.ts +1 -1
  65. package/dist/contexts/tree.js +1 -1
  66. package/dist/i18n.d.ts +55 -6
  67. package/dist/i18n.js +68 -2
  68. package/dist/layouts/docs/client.d.ts +1 -0
  69. package/dist/layouts/docs/client.js +2 -2
  70. package/dist/layouts/docs/index.d.ts +1 -1
  71. package/dist/layouts/docs/index.js +1 -1
  72. package/dist/layouts/docs/page/index.d.ts +1 -1
  73. package/dist/layouts/docs/page/index.js +6 -6
  74. package/dist/layouts/docs/page/slots/breadcrumb.d.ts +1 -1
  75. package/dist/layouts/docs/page/slots/breadcrumb.js +3 -3
  76. package/dist/layouts/docs/page/slots/container.d.ts +1 -1
  77. package/dist/layouts/docs/page/slots/footer.d.ts +1 -1
  78. package/dist/layouts/docs/page/slots/footer.js +7 -7
  79. package/dist/layouts/docs/page/slots/toc.d.ts +1 -1
  80. package/dist/layouts/docs/page/slots/toc.js +4 -4
  81. package/dist/layouts/docs/slots/container.d.ts +1 -1
  82. package/dist/layouts/docs/slots/container.js +1 -1
  83. package/dist/layouts/docs/slots/header.d.ts +1 -1
  84. package/dist/layouts/docs/slots/sidebar.d.ts +1 -1
  85. package/dist/layouts/docs/slots/sidebar.js +7 -7
  86. package/dist/layouts/flux/index.d.ts +1 -1
  87. package/dist/layouts/flux/index.js +5 -5
  88. package/dist/layouts/flux/page/index.d.ts +1 -1
  89. package/dist/layouts/flux/page/index.js +6 -6
  90. package/dist/layouts/flux/page/slots/breadcrumb.d.ts +1 -1
  91. package/dist/layouts/flux/page/slots/breadcrumb.js +3 -3
  92. package/dist/layouts/flux/page/slots/container.d.ts +1 -1
  93. package/dist/layouts/flux/page/slots/footer.d.ts +1 -1
  94. package/dist/layouts/flux/page/slots/footer.js +5 -5
  95. package/dist/layouts/flux/page/slots/toc.d.ts +1 -1
  96. package/dist/layouts/flux/page/slots/toc.js +4 -4
  97. package/dist/layouts/flux/slots/container.d.ts +1 -1
  98. package/dist/layouts/flux/slots/sidebar.d.ts +1 -1
  99. package/dist/layouts/flux/slots/sidebar.js +1 -1
  100. package/dist/layouts/flux/slots/tab-dropdown.d.ts +1 -1
  101. package/dist/layouts/flux/slots/tab-dropdown.js +4 -4
  102. package/dist/layouts/home/index.d.ts +1 -1
  103. package/dist/layouts/home/index.js +1 -1
  104. package/dist/layouts/home/navbar.d.ts +1 -1
  105. package/dist/layouts/home/navbar.js +1 -1
  106. package/dist/layouts/home/not-found.js +5 -4
  107. package/dist/layouts/home/slots/container.d.ts +1 -1
  108. package/dist/layouts/home/slots/header.d.ts +1 -1
  109. package/dist/layouts/home/slots/header.js +8 -6
  110. package/dist/layouts/notebook/client.d.ts +1 -0
  111. package/dist/layouts/notebook/client.js +1 -1
  112. package/dist/layouts/notebook/index.d.ts +1 -1
  113. package/dist/layouts/notebook/index.js +1 -1
  114. package/dist/layouts/notebook/page/index.d.ts +1 -1
  115. package/dist/layouts/notebook/page/index.js +6 -6
  116. package/dist/layouts/notebook/page/slots/breadcrumb.d.ts +1 -1
  117. package/dist/layouts/notebook/page/slots/breadcrumb.js +3 -3
  118. package/dist/layouts/notebook/page/slots/container.d.ts +1 -1
  119. package/dist/layouts/notebook/page/slots/footer.d.ts +1 -1
  120. package/dist/layouts/notebook/page/slots/footer.js +7 -7
  121. package/dist/layouts/notebook/page/slots/toc.d.ts +1 -1
  122. package/dist/layouts/notebook/page/slots/toc.js +4 -4
  123. package/dist/layouts/notebook/slots/container.d.ts +1 -1
  124. package/dist/layouts/notebook/slots/container.js +1 -1
  125. package/dist/layouts/notebook/slots/header.d.ts +1 -1
  126. package/dist/layouts/notebook/slots/header.js +3 -3
  127. package/dist/layouts/notebook/slots/sidebar.d.ts +1 -1
  128. package/dist/layouts/notebook/slots/sidebar.js +9 -9
  129. package/dist/layouts/shared/client.d.ts +1 -1
  130. package/dist/layouts/shared/client.js +1 -1
  131. package/dist/layouts/shared/index.d.ts +1 -1
  132. package/dist/layouts/shared/index.js +1 -1
  133. package/dist/layouts/shared/page-actions.d.ts +1 -1
  134. package/dist/layouts/shared/page-actions.js +17 -11
  135. package/dist/layouts/shared/slots/language-select.d.ts +1 -1
  136. package/dist/layouts/shared/slots/language-select.js +1 -1
  137. package/dist/layouts/shared/slots/search-trigger.d.ts +1 -1
  138. package/dist/layouts/shared/slots/search-trigger.js +5 -4
  139. package/dist/layouts/shared/slots/theme-switch.d.ts +1 -1
  140. package/dist/layouts/shared/slots/theme-switch.js +21 -7
  141. package/dist/mdx.d.ts +1 -1
  142. package/dist/mdx.js +1 -1
  143. package/dist/og/takumi.d.ts +1 -1
  144. package/dist/og.d.ts +1 -1
  145. package/dist/page.d.ts +1 -1
  146. package/dist/provider/base.d.ts +1 -1
  147. package/dist/provider/base.js +1 -1
  148. package/dist/provider/next.d.ts +1 -1
  149. package/dist/provider/react-router.d.ts +1 -1
  150. package/dist/provider/tanstack.d.ts +1 -1
  151. package/dist/provider/waku.d.ts +1 -1
  152. package/dist/style.css +11 -9
  153. package/package.json +5 -5
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { I18nLabel, useI18n } from "../../contexts/i18n.js";
3
2
  import { cn } from "../../utils/cn.js";
4
3
  import { buttonVariants } from "../ui/button.js";
5
- import { Fragment, createContext, use, useCallback, useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
4
+ import { I18nLabel, useTranslations } from "../../contexts/i18n.js";
6
5
  import { useRouter } from "fumadocs-core/framework";
7
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
7
  import { ChevronRight, Hash, SearchIcon } from "lucide-react";
9
8
  import { cva } from "class-variance-authority";
9
+ import { Fragment as Fragment$1, createContext, use, useCallback, useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
10
10
  import { useOnChange } from "fumadocs-core/utils/use-on-change";
11
11
  import scrollIntoView from "scroll-into-view-if-needed";
12
12
  import { Dialog } from "@base-ui/react/dialog";
@@ -140,13 +140,13 @@ function SearchDialogHeader(props) {
140
140
  });
141
141
  }
142
142
  function SearchDialogInput(props) {
143
- const { text } = useI18n();
143
+ const t = useTranslations();
144
144
  const { search, onSearchChange } = useSearch();
145
145
  return /* @__PURE__ */ jsx("input", {
146
146
  ...props,
147
147
  value: search,
148
148
  onChange: (e) => onSearchChange(e.target.value),
149
- placeholder: text.search,
149
+ placeholder: t.search,
150
150
  className: "w-0 flex-1 bg-transparent text-lg placeholder:text-fd-muted-foreground focus-visible:outline-none"
151
151
  });
152
152
  }
@@ -154,6 +154,7 @@ function SearchDialogClose({ children = "ESC", className, ...props }) {
154
154
  const { onOpenChange } = useSearch();
155
155
  return /* @__PURE__ */ jsx("button", {
156
156
  type: "button",
157
+ "aria-label": useTranslations().searchClose,
157
158
  onClick: () => onOpenChange(false),
158
159
  className: cn(buttonVariants({
159
160
  color: "outline",
@@ -177,7 +178,7 @@ function SearchDialogOverlay({ className, ...props }) {
177
178
  });
178
179
  }
179
180
  function SearchDialogContent({ children, className, ...props }) {
180
- const { text } = useI18n();
181
+ const t = useTranslations();
181
182
  return /* @__PURE__ */ jsx(Dialog.Portal, { children: /* @__PURE__ */ jsxs(Dialog.Popup, {
182
183
  id: "fd-search-dialog-content",
183
184
  "aria-describedby": void 0,
@@ -185,7 +186,7 @@ function SearchDialogContent({ children, className, ...props }) {
185
186
  className: (s) => cn("fixed left-1/2 top-4 md:top-[calc(50%-250px)] z-50 w-[calc(100%-1rem)] max-w-screen-sm -translate-x-1/2 rounded-xl border bg-fd-popover text-fd-popover-foreground shadow-2xl overflow-hidden data-closed:animate-fd-dialog-out data-open:animate-fd-dialog-in focus-visible:outline-none", "*:border-b *:has-[+:last-child[data-empty=true]]:border-b-0 *:data-[empty=true]:border-b-0 *:last:border-b-0", typeof className === "function" ? className(s) : className),
186
187
  children: [/* @__PURE__ */ jsx(Dialog.Title, {
187
188
  className: "hidden",
188
- children: text.search
189
+ children: t.search
189
190
  }), children]
190
191
  }) });
191
192
  }
@@ -243,7 +244,7 @@ function SearchDialogList({ items = null, Empty = () => /* @__PURE__ */ jsx("div
243
244
  active,
244
245
  setActive
245
246
  }), [active]),
246
- children: [items?.length === 0 && Empty(), items?.map((item) => /* @__PURE__ */ jsx(Fragment, { children: Item({
247
+ children: [items?.length === 0 && Empty(), items?.map((item) => /* @__PURE__ */ jsx(Fragment$1, { children: Item({
247
248
  item,
248
249
  onClick: () => onSelect(item)
249
250
  }) }, item.id))]
@@ -258,16 +259,16 @@ function SearchDialogListItem({ item, className, children, renderMarkdown = (s)
258
259
  const { active: activeId, setActive } = useSearchList();
259
260
  const active = item.id === activeId;
260
261
  if (item.type === "action") children ??= item.node;
261
- else children ??= /* @__PURE__ */ jsxs(Fragment$1, { children: [
262
+ else children ??= /* @__PURE__ */ jsxs(Fragment, { children: [
262
263
  /* @__PURE__ */ jsx("div", {
263
264
  className: "inline-flex items-center text-fd-muted-foreground text-xs empty:hidden",
264
- children: item.breadcrumbs?.map((item, i) => /* @__PURE__ */ jsxs(Fragment, { children: [i > 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 rtl:rotate-180" }), item] }, i))
265
+ children: item.breadcrumbs?.map((item, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [i > 0 && /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 rtl:rotate-180" }), item] }, i))
265
266
  }),
266
267
  item.type !== "page" && /* @__PURE__ */ jsx("div", {
267
268
  role: "none",
268
- className: "absolute start-3 inset-y-0 w-px bg-fd-border"
269
+ className: "absolute inset-s-3 inset-y-0 w-px bg-fd-border"
269
270
  }),
270
- item.type === "heading" && /* @__PURE__ */ jsx(Hash, { className: "absolute start-6 top-2.5 size-4 text-fd-muted-foreground" }),
271
+ item.type === "heading" && /* @__PURE__ */ jsx(Hash, { className: "absolute inset-s-6 top-2.5 size-4 text-fd-muted-foreground" }),
271
272
  /* @__PURE__ */ jsx("div", {
272
273
  className: cn("min-w-0", item.type === "text" && "ps-4", item.type === "heading" && "ps-8", item.type === "page" || item.type === "heading" ? "font-medium" : "text-fd-popover-foreground/80"),
273
274
  children: typeof item.content === "string" ? renderMarkdown(item.content) : item.content
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
3
  import { CodeBlock, Pre } from "./codeblock.js";
4
- import { createContext, use, useId } from "react";
5
4
  import { jsx } from "react/jsx-runtime";
5
+ import { createContext, use, useId } from "react";
6
6
  import { useShikiDynamic } from "fumadocs-core/highlight/shiki/react";
7
7
  //#region src/components/dynamic-codeblock.core.tsx
8
8
  const PropsContext = createContext(void 0);
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
3
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible.js";
4
- import { useState } from "react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
6
5
  import { FileIcon, FolderIcon, FolderOpen } from "lucide-react";
7
6
  import { cva } from "class-variance-authority";
7
+ import { useState } from "react";
8
8
  //#region src/components/files.tsx
9
9
  const itemVariants = cva("flex flex-row items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-fd-accent hover:text-fd-accent-foreground [&_svg]:size-4");
10
10
  function Files({ className, ...props }) {
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
3
 
4
4
  //#region src/components/github-info.d.ts
5
5
  interface FetchRepositoryInfoOptions {
@@ -13,6 +13,9 @@ interface RepositoryInfo {
13
13
  stars: number;
14
14
  forks: number;
15
15
  }
16
+ interface GithubInfoProps extends ComponentProps<'a'>, FetchRepositoryInfoOptions {
17
+ locale?: Intl.LocalesArgument;
18
+ }
16
19
  declare function fetchRepositoryInfo({
17
20
  owner,
18
21
  repo,
@@ -26,7 +29,8 @@ declare function GithubInfo({
26
29
  token,
27
30
  baseUrl,
28
31
  fetchOptions,
32
+ locale,
29
33
  ...props
30
- }: ComponentProps<'a'> & FetchRepositoryInfoOptions): _$react_jsx_runtime0.JSX.Element;
34
+ }: GithubInfoProps): _$react_jsx_runtime0.JSX.Element;
31
35
  //#endregion
32
- export { FetchRepositoryInfoOptions, GithubInfo, RepositoryInfo, fetchRepositoryInfo };
36
+ export { FetchRepositoryInfoOptions, GithubInfo, GithubInfoProps, RepositoryInfo, fetchRepositoryInfo };
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../utils/cn.js";
2
- import { use } from "react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
4
3
  import { GitFork, Star } from "lucide-react";
4
+ import { use } from "react";
5
5
  //#region src/components/github-info.tsx
6
6
  async function fetchRepositoryInfo({ owner, repo, token, baseUrl = "https://api.github.com", fetchOptions = { next: { revalidate: 60 } } }) {
7
7
  const endpoint = `${baseUrl}/repos/${owner}/${repo}`;
@@ -25,12 +25,13 @@ async function fetchRepositoryInfo({ owner, repo, token, baseUrl = "https://api.
25
25
  /**
26
26
  * Uses compact notation (e.g., 1.5K, 2.3M).
27
27
  */
28
- const defaultFormatter = new Intl.NumberFormat("en", {
28
+ const formatterOptions = {
29
29
  notation: "compact",
30
30
  maximumFractionDigits: 1
31
- });
31
+ };
32
+ const defaultFormatter = new Intl.NumberFormat(void 0, formatterOptions);
32
33
  const promises = {};
33
- function GithubInfo({ repo, owner, token, baseUrl, fetchOptions, ...props }) {
34
+ function GithubInfo({ repo, owner, token, baseUrl, fetchOptions, locale, ...props }) {
34
35
  const options = {
35
36
  repo,
36
37
  owner,
@@ -39,6 +40,7 @@ function GithubInfo({ repo, owner, token, baseUrl, fetchOptions, ...props }) {
39
40
  fetchOptions
40
41
  };
41
42
  const { stars, forks } = use(promises[JSON.stringify(options)] ??= fetchRepositoryInfo(options));
43
+ const formatter = locale ? new Intl.NumberFormat(locale, formatterOptions) : defaultFormatter;
42
44
  return /* @__PURE__ */ jsxs("a", {
43
45
  href: `https://github.com/${owner}/${repo}`,
44
46
  rel: "noreferrer noopener",
@@ -62,9 +64,9 @@ function GithubInfo({ repo, owner, token, baseUrl, fetchOptions, ...props }) {
62
64
  className: "flex text-xs items-center gap-1 text-fd-muted-foreground",
63
65
  children: [
64
66
  /* @__PURE__ */ jsx(Star, { className: "size-3" }),
65
- /* @__PURE__ */ jsx("span", { children: defaultFormatter.format(stars) }),
67
+ /* @__PURE__ */ jsx("span", { children: formatter.format(stars) }),
66
68
  /* @__PURE__ */ jsx(GitFork, { className: "size-3 ms-2" }),
67
- /* @__PURE__ */ jsx("span", { children: defaultFormatter.format(forks) })
69
+ /* @__PURE__ */ jsx("span", { children: formatter.format(forks) })
68
70
  ]
69
71
  })]
70
72
  });
@@ -1,5 +1,5 @@
1
- import { ComponentPropsWithoutRef } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentPropsWithoutRef } from "react";
3
3
 
4
4
  //#region src/components/heading.d.ts
5
5
  type Types = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
@@ -2,11 +2,13 @@
2
2
  import { cn } from "../utils/cn.js";
3
3
  import { buttonVariants } from "./ui/button.js";
4
4
  import { useCopyButton } from "../utils/use-copy-button.js";
5
+ import { useTranslations } from "../contexts/i18n.js";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  import { CopyCheckIcon, LinkIcon } from "lucide-react";
7
8
  //#region src/components/heading.tsx
8
9
  function Heading({ as, ...props }) {
9
10
  const As = as ?? "h1";
11
+ const t = useTranslations();
10
12
  const [isChecked, onCopy] = useCopyButton(() => {
11
13
  if (!props.id) return;
12
14
  const url = new URL(window.location.href);
@@ -22,7 +24,7 @@ function Heading({ as, ...props }) {
22
24
  href: `#${props.id}`,
23
25
  children: props.children
24
26
  }), /* @__PURE__ */ jsx("button", {
25
- "aria-label": "Copy Anchor Link",
27
+ "aria-label": t.headingCopyAnchor,
26
28
  className: cn(buttonVariants({
27
29
  variant: "ghost",
28
30
  size: "icon-xs"
@@ -1,7 +1,7 @@
1
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
- import { ComponentProps } from "react";
3
2
  import { ImageProps } from "fumadocs-core/framework";
4
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+ import { ComponentProps } from "react";
5
5
 
6
6
  //#region src/components/image-zoom.d.ts
7
7
  type ImageZoomProps = ImageProps & {
@@ -1,6 +1,6 @@
1
1
  import { Collapsible } from "./ui/collapsible.js";
2
- import { ComponentProps } from "react";
3
2
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { ComponentProps } from "react";
4
4
  import { TOCItemType } from "fumadocs-core/toc";
5
5
 
6
6
  //#region src/components/inline-toc.d.ts
@@ -1,16 +1,18 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
+ import { useTranslations } from "../contexts/i18n.js";
3
4
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible.js";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  import { ChevronDown } from "lucide-react";
6
7
  //#region src/components/inline-toc.tsx
7
8
  function InlineTOC({ items, className, ...props }) {
9
+ const t = useTranslations();
8
10
  return /* @__PURE__ */ jsxs(Collapsible, {
9
11
  ...props,
10
12
  className: (s) => cn("not-prose rounded-lg border bg-fd-card text-fd-card-foreground", typeof className === "function" ? className(s) : className),
11
13
  children: [/* @__PURE__ */ jsxs(CollapsibleTrigger, {
12
14
  className: "group inline-flex w-full items-center justify-between px-4 py-2.5 font-medium",
13
- children: [props.children ?? "Table of Contents", /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 transition-transform duration-200 group-data-[open]:rotate-180" })]
15
+ children: [props.children ?? t.tocInline, /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 transition-transform duration-200 group-data-open:rotate-180" })]
14
16
  }), /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx("div", {
15
17
  className: "flex flex-col p-4 pt-0 text-sm text-fd-muted-foreground",
16
18
  children: items.map((item) => /* @__PURE__ */ jsx("a", {
@@ -1,9 +1,9 @@
1
1
  import { CollapsibleContentProps, CollapsibleTriggerProps } from "../ui/collapsible.js";
2
2
  import { ScrollAreaProps } from "../ui/scroll-area.js";
3
+ import { LinkProps } from "fumadocs-core/link";
4
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
5
  import * as _$react from "react";
4
6
  import { ComponentProps, PointerEvent, ReactNode, RefObject } from "react";
5
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
- import { LinkProps } from "fumadocs-core/link";
7
7
 
8
8
  //#region src/components/sidebar/base.d.ts
9
9
  declare namespace base_d_exports {
@@ -1,13 +1,14 @@
1
1
  "use client";
2
2
  import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
3
3
  import { cn } from "../../utils/cn.js";
4
+ import { useTranslations } from "../../contexts/i18n.js";
4
5
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../ui/collapsible.js";
5
6
  import { ScrollArea, ScrollViewport } from "../ui/scroll-area.js";
6
- import { createContext, use, useEffect, useMemo, useRef, useState } from "react";
7
+ import Link from "fumadocs-core/link";
7
8
  import { usePathname } from "fumadocs-core/framework";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import Link from "fumadocs-core/link";
10
10
  import { ChevronDown, ExternalLink } from "lucide-react";
11
+ import { createContext, use, useEffect, useMemo, useRef, useState } from "react";
11
12
  import { useOnChange } from "fumadocs-core/utils/use-on-change";
12
13
  import { useMediaQuery } from "fumadocs-core/utils/use-media-query";
13
14
  import scrollIntoView from "scroll-into-view-if-needed";
@@ -239,7 +240,7 @@ function SidebarFolderContent(props) {
239
240
  function SidebarTrigger({ children, ...props }) {
240
241
  const { setOpen } = useSidebar();
241
242
  return /* @__PURE__ */ jsx("button", {
242
- "aria-label": "Open Sidebar",
243
+ "aria-label": useTranslations().sidebarOpen,
243
244
  onClick: () => setOpen((prev) => !prev),
244
245
  ...props,
245
246
  children
@@ -249,7 +250,7 @@ function SidebarCollapseTrigger(props) {
249
250
  const { collapsed, setCollapsed } = useSidebar();
250
251
  return /* @__PURE__ */ jsx("button", {
251
252
  type: "button",
252
- "aria-label": "Collapse Sidebar",
253
+ "aria-label": useTranslations().sidebarCollapse,
253
254
  "data-collapsed": collapsed,
254
255
  onClick: () => {
255
256
  setCollapsed((prev) => !prev);
@@ -1,7 +1,7 @@
1
1
  import { base_d_exports } from "./base.js";
2
2
  import { LinkItemType } from "../../layouts/shared/index.js";
3
- import { HTMLAttributes } from "react";
4
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+ import { HTMLAttributes } from "react";
5
5
 
6
6
  //#region src/components/sidebar/link-item.d.ts
7
7
  type InternalComponents = Pick<typeof base_d_exports, 'SidebarFolder' | 'SidebarFolderLink' | 'SidebarFolderContent' | 'SidebarFolderTrigger' | 'SidebarItem'>;
@@ -1,6 +1,6 @@
1
1
  import { base_d_exports } from "./base.js";
2
- import { FC, ReactNode } from "react";
3
2
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { FC, ReactNode } from "react";
4
4
  import * as PageTree from "fumadocs-core/page-tree";
5
5
 
6
6
  //#region src/components/sidebar/page-tree.d.ts
@@ -1,8 +1,8 @@
1
1
  import { useTreeContext, useTreePath } from "../../contexts/tree.js";
2
2
  import { isActive } from "../../utils/urls.js";
3
- import { Fragment, createContext, use, useMemo } from "react";
4
3
  import { usePathname } from "fumadocs-core/framework";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Fragment as Fragment$1, createContext, use, useMemo } from "react";
6
6
  //#region src/components/sidebar/page-tree.tsx
7
7
  const RendererContext = createContext(null);
8
8
  function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarSeparator, SidebarItem }) {
@@ -61,7 +61,7 @@ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFo
61
61
  Separator,
62
62
  pathname
63
63
  ]),
64
- children: /* @__PURE__ */ jsx(Fragment, { children: renderList(root.children) }, root.$id)
64
+ children: /* @__PURE__ */ jsx(Fragment$1, { children: renderList(root.children) }, root.$id)
65
65
  });
66
66
  };
67
67
  }
@@ -1,6 +1,6 @@
1
1
  import { LayoutTab, isLayoutTabActive } from "../../../layouts/shared/index.js";
2
- import { ComponentProps, ReactNode } from "react";
3
2
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { ComponentProps, ReactNode } from "react";
4
4
 
5
5
  //#region src/components/sidebar/tabs/dropdown.d.ts
6
6
  type SidebarTabWithProps = LayoutTab;
@@ -3,11 +3,11 @@ import { cn } from "../../../utils/cn.js";
3
3
  import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
4
4
  import { isLayoutTabActive } from "../../../layouts/shared/index.js";
5
5
  import { useSidebar } from "../base.js";
6
- import { useMemo, useState } from "react";
7
- import { usePathname } from "fumadocs-core/framework";
8
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
6
  import Link from "fumadocs-core/link";
7
+ import { usePathname } from "fumadocs-core/framework";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
9
  import { Check, ChevronsUpDown } from "lucide-react";
10
+ import { useMemo, useState } from "react";
11
11
  //#region src/components/sidebar/tabs/dropdown.tsx
12
12
  function SidebarTabsDropdown({ options, placeholder, ...props }) {
13
13
  const [open, setOpen] = useState(false);
@@ -20,7 +20,7 @@ function SidebarTabsDropdown({ options, placeholder, ...props }) {
20
20
  closeOnRedirect.current = false;
21
21
  setOpen(false);
22
22
  };
23
- const item = selected ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
23
+ const item = selected ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
24
24
  className: "size-9 shrink-0 empty:hidden md:size-5",
25
25
  children: selected.icon
26
26
  }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/steps.d.ts
5
5
  declare function Steps({
@@ -1,7 +1,7 @@
1
1
  import { Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "./ui/tabs.js";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
3
  import * as React$1 from "react";
3
4
  import { ComponentProps, ReactNode } from "react";
4
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
5
 
6
6
  //#region src/components/tabs.d.ts
7
7
  interface TabsProps extends Omit<ComponentProps<typeof Tabs$1>, 'value' | 'onValueChange'> {
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
3
  import { Tabs as Tabs$1, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "./ui/tabs.js";
4
- import { createContext, useContext, useEffect, useId, useMemo, useState } from "react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { createContext, useContext, useEffect, useId, useMemo, useState } from "react";
6
6
  //#region src/components/tabs.tsx
7
7
  const TabsContext = createContext(null);
8
8
  function useTabContext() {
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
3
  import * as Primitive from "fumadocs-core/toc";
4
4
 
5
5
  //#region src/components/toc/clerk.d.ts
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
3
- import { useI18n } from "../../contexts/i18n.js";
4
3
  import { cn } from "../../utils/cn.js";
4
+ import { useTranslations } from "../../contexts/i18n.js";
5
5
  import { mergeRefs } from "../../utils/merge-refs.js";
6
6
  import { useTOCItems } from "./index.js";
7
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
9
9
  import * as Primitive from "fumadocs-core/toc";
10
10
  //#region src/components/toc/clerk.tsx
11
11
  var clerk_exports = /* @__PURE__ */ __exportAll({
@@ -119,10 +119,9 @@ function TOCItems({ ref, className, thumbBox = true, children, ...props }) {
119
119
  });
120
120
  }
121
121
  function TOCEmpty() {
122
- const { text } = useI18n();
123
122
  return /* @__PURE__ */ jsx("div", {
124
123
  className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
125
- children: text.tocNoHeadings
124
+ children: useTranslations().tocNoHeadings
126
125
  });
127
126
  }
128
127
  function ThumbTrack({ computed, thumbBox }) {
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
3
  import * as Primitive from "fumadocs-core/toc";
4
4
 
5
5
  //#region src/components/toc/default.d.ts
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
3
- import { useI18n } from "../../contexts/i18n.js";
4
3
  import { cn } from "../../utils/cn.js";
4
+ import { useTranslations } from "../../contexts/i18n.js";
5
5
  import { mergeRefs } from "../../utils/merge-refs.js";
6
6
  import { useTOCItems } from "./index.js";
7
- import { useCallback, useEffect, useRef, useState } from "react";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useCallback, useEffect, useRef, useState } from "react";
9
9
  import * as Primitive from "fumadocs-core/toc";
10
10
  //#region src/components/toc/default.tsx
11
11
  var default_exports = /* @__PURE__ */ __exportAll({
@@ -79,10 +79,9 @@ function TocThumb({ computed }) {
79
79
  });
80
80
  }
81
81
  function TOCEmpty() {
82
- const { text } = useI18n();
83
82
  return /* @__PURE__ */ jsx("div", {
84
83
  className: "rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",
85
- children: text.tocNoHeadings
84
+ children: useTranslations().tocNoHeadings
86
85
  });
87
86
  }
88
87
  function TOCItem({ item, ...props }) {
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
3
  import * as Primitive from "fumadocs-core/toc";
4
4
 
5
5
  //#region src/components/toc/index.d.ts
@@ -2,8 +2,8 @@
2
2
  import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
3
3
  import { cn } from "../../utils/cn.js";
4
4
  import { mergeRefs } from "../../utils/merge-refs.js";
5
- import { createContext, use, useRef } from "react";
6
5
  import { jsx } from "react/jsx-runtime";
6
+ import { createContext, use, useRef } from "react";
7
7
  import * as Primitive from "fumadocs-core/toc";
8
8
  //#region src/components/toc/index.tsx
9
9
  var toc_exports = /* @__PURE__ */ __exportAll({
@@ -1,5 +1,5 @@
1
- import { ComponentProps, ReactNode } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/components/type-table.d.ts
5
5
  interface ParameterNode {
@@ -1,14 +1,16 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
+ import { useTranslations } from "../contexts/i18n.js";
3
4
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible.js";
4
- import { useEffect, useState } from "react";
5
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
5
  import Link from "fumadocs-core/link";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { ChevronDown } from "lucide-react";
8
8
  import { cva } from "class-variance-authority";
9
+ import { useEffect, useState } from "react";
9
10
  //#region src/components/type-table.tsx
10
11
  const fieldVariants = cva("text-fd-muted-foreground not-prose pe-2");
11
12
  function TypeTable({ id, type, className, ...props }) {
13
+ const t = useTranslations();
12
14
  return /* @__PURE__ */ jsxs("div", {
13
15
  id,
14
16
  className: cn("@container flex flex-col p-1 bg-fd-card text-fd-card-foreground rounded-2xl border my-6 text-sm overflow-hidden", className),
@@ -17,10 +19,10 @@ function TypeTable({ id, type, className, ...props }) {
17
19
  className: "flex font-medium items-center px-3 py-1 not-prose text-fd-muted-foreground",
18
20
  children: [/* @__PURE__ */ jsx("p", {
19
21
  className: "w-1/4",
20
- children: "Prop"
22
+ children: t.typeTableProp
21
23
  }), /* @__PURE__ */ jsx("p", {
22
24
  className: "@max-xl:hidden",
23
- children: "Type"
25
+ children: t.typeTableType
24
26
  })]
25
27
  }), Object.entries(type).map(([key, value]) => /* @__PURE__ */ jsx(Item, {
26
28
  parentId: id,
@@ -30,6 +32,7 @@ function TypeTable({ id, type, className, ...props }) {
30
32
  });
31
33
  }
32
34
  function Item({ parentId, name, item: { parameters = [], description, required = false, deprecated, typeDescription, default: defaultValue, type, typeDescriptionLink, returns } }) {
35
+ const t = useTranslations();
33
36
  const [open, setOpen] = useState(false);
34
37
  const id = parentId ? `${parentId}-${name}` : void 0;
35
38
  useEffect(() => {
@@ -60,7 +63,7 @@ function Item({ parentId, name, item: { parameters = [], description, required =
60
63
  className: "@max-xl:hidden",
61
64
  children: type
62
65
  }),
63
- /* @__PURE__ */ jsx(ChevronDown, { className: "absolute end-2 size-4 text-fd-muted-foreground transition-transform group-data-[open]:rotate-180" })
66
+ /* @__PURE__ */ jsx(ChevronDown, { className: "absolute inset-e-2 size-4 text-fd-muted-foreground transition-transform group-data-[open]:rotate-180" })
64
67
  ]
65
68
  }), /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsxs("div", {
66
69
  className: "grid grid-cols-[1fr_3fr] gap-y-4 text-sm p-3 overflow-auto fd-scroll-container border-t",
@@ -69,23 +72,23 @@ function Item({ parentId, name, item: { parameters = [], description, required =
69
72
  className: "text-sm prose col-span-full prose-no-margin empty:hidden",
70
73
  children: description
71
74
  }),
72
- typeDescription && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
75
+ typeDescription && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
73
76
  className: cn(fieldVariants()),
74
- children: "Type"
77
+ children: t.typeTableType
75
78
  }), /* @__PURE__ */ jsx("p", {
76
79
  className: "my-auto not-prose",
77
80
  children: typeDescription
78
81
  })] }),
79
- defaultValue && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
82
+ defaultValue && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
80
83
  className: cn(fieldVariants()),
81
- children: "Default"
84
+ children: t.typeTableDefault
82
85
  }), /* @__PURE__ */ jsx("p", {
83
86
  className: "my-auto not-prose",
84
87
  children: defaultValue
85
88
  })] }),
86
- parameters.length > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
89
+ parameters.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
87
90
  className: cn(fieldVariants()),
88
- children: "Parameters"
91
+ children: t.typeTableParameters
89
92
  }), /* @__PURE__ */ jsx("div", {
90
93
  className: "flex flex-col gap-2",
91
94
  children: parameters.map((param) => /* @__PURE__ */ jsxs("div", {
@@ -99,9 +102,9 @@ function Item({ parentId, name, item: { parameters = [], description, required =
99
102
  })]
100
103
  }, param.name))
101
104
  })] }),
102
- returns && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
105
+ returns && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
103
106
  className: cn(fieldVariants()),
104
- children: "Returns"
107
+ children: t.typeTableReturns
105
108
  }), /* @__PURE__ */ jsx("div", {
106
109
  className: "my-auto text-sm prose prose-no-margin",
107
110
  children: returns
@@ -1,5 +1,5 @@
1
- import { ComponentProps } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
3
  import { Accordion as Accordion$1 } from "@base-ui/react/accordion";
4
4
 
5
5
  //#region src/components/ui/accordion.d.ts
@@ -1,6 +1,6 @@
1
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
1
2
  import * as _$react from "react";
2
3
  import { ComponentProps } from "react";
3
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import { Collapsible as Collapsible$1 } from "@base-ui/react/collapsible";
5
5
  import * as _$_base_ui_react0 from "@base-ui/react";
6
6
 
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
  import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
4
4
  import * as _$_base_ui_react0 from "@base-ui/react";
5
5
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
- import "react";
4
3
  import { jsx } from "react/jsx-runtime";
4
+ import "react";
5
5
  import { NavigationMenu as NavigationMenu$1 } from "@base-ui/react/navigation-menu";
6
6
  //#region src/components/ui/navigation-menu.tsx
7
7
  const NavigationMenu = NavigationMenu$1.Root;