fumadocs-ui 16.4.0 → 16.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/css/preset.css +2 -4
  2. package/dist/_virtual/rolldown_runtime.js +36 -0
  3. package/dist/components/accordion.d.ts +24 -7
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +65 -38
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/banner.d.ts +33 -22
  8. package/dist/components/banner.d.ts.map +1 -1
  9. package/dist/components/banner.js +63 -47
  10. package/dist/components/banner.js.map +1 -0
  11. package/dist/components/callout.d.ts +41 -17
  12. package/dist/components/callout.d.ts.map +1 -1
  13. package/dist/components/callout.js +57 -28
  14. package/dist/components/callout.js.map +1 -0
  15. package/dist/components/card.d.ts +19 -9
  16. package/dist/components/card.d.ts.map +1 -1
  17. package/dist/components/card.js +39 -8
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/codeblock.d.ts +61 -40
  20. package/dist/components/codeblock.d.ts.map +1 -1
  21. package/dist/components/codeblock.js +116 -58
  22. package/dist/components/codeblock.js.map +1 -0
  23. package/dist/components/dialog/search-algolia.d.ts +37 -23
  24. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  25. package/dist/components/dialog/search-algolia.js +64 -31
  26. package/dist/components/dialog/search-algolia.js.map +1 -0
  27. package/dist/components/dialog/search-default.d.ts +42 -27
  28. package/dist/components/dialog/search-default.d.ts.map +1 -1
  29. package/dist/components/dialog/search-default.js +64 -38
  30. package/dist/components/dialog/search-default.js.map +1 -0
  31. package/dist/components/dialog/search-orama.d.ts +41 -25
  32. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  33. package/dist/components/dialog/search-orama.js +68 -35
  34. package/dist/components/dialog/search-orama.js.map +1 -0
  35. package/dist/components/dialog/search.d.ts +103 -64
  36. package/dist/components/dialog/search.d.ts.map +1 -1
  37. package/dist/components/dialog/search.js +264 -185
  38. package/dist/components/dialog/search.js.map +1 -0
  39. package/dist/components/dynamic-codeblock.d.ts +30 -19
  40. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  41. package/dist/components/dynamic-codeblock.js +60 -27
  42. package/dist/components/dynamic-codeblock.js.map +1 -0
  43. package/dist/components/files.d.ts +32 -16
  44. package/dist/components/files.d.ts.map +1 -1
  45. package/dist/components/files.js +40 -14
  46. package/dist/components/files.js.map +1 -0
  47. package/dist/components/github-info.d.ts +18 -7
  48. package/dist/components/github-info.d.ts.map +1 -1
  49. package/dist/components/github-info.js +63 -48
  50. package/dist/components/github-info.js.map +1 -0
  51. package/dist/components/heading.d.ts +11 -4
  52. package/dist/components/heading.d.ts.map +1 -1
  53. package/dist/components/heading.js +28 -8
  54. package/dist/components/heading.js.map +1 -0
  55. package/dist/components/image-zoom-CtfZieBH.css +80 -0
  56. package/dist/components/image-zoom-CtfZieBH.css.map +1 -0
  57. package/dist/components/image-zoom.d.ts +23 -14
  58. package/dist/components/image-zoom.d.ts.map +1 -1
  59. package/dist/components/image-zoom.js +32 -19
  60. package/dist/components/image-zoom.js.map +1 -0
  61. package/dist/components/image-zoom2.js +1 -0
  62. package/dist/components/inline-toc.d.ts +14 -6
  63. package/dist/components/inline-toc.d.ts.map +1 -1
  64. package/dist/components/inline-toc.js +28 -8
  65. package/dist/components/inline-toc.js.map +1 -0
  66. package/dist/components/sidebar/base.d.ts +102 -65
  67. package/dist/components/sidebar/base.d.ts.map +1 -1
  68. package/dist/components/sidebar/base.js +256 -180
  69. package/dist/components/sidebar/base.js.map +1 -0
  70. package/dist/components/sidebar/link-item.d.ts +23 -10
  71. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  72. package/dist/components/sidebar/link-item.js +32 -12
  73. package/dist/components/sidebar/link-item.js.map +1 -0
  74. package/dist/components/sidebar/page-tree.d.ts +28 -17
  75. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  76. package/dist/components/sidebar/page-tree.js +57 -33
  77. package/dist/components/sidebar/page-tree.js.map +1 -0
  78. package/dist/components/sidebar/tabs/dropdown.d.ts +18 -9
  79. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  80. package/dist/components/sidebar/tabs/dropdown.js +75 -31
  81. package/dist/components/sidebar/tabs/dropdown.js.map +1 -0
  82. package/dist/components/sidebar/tabs/index.d.ts +24 -18
  83. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  84. package/dist/components/sidebar/tabs/index.js +45 -45
  85. package/dist/components/sidebar/tabs/index.js.map +1 -0
  86. package/dist/components/steps.d.ts +16 -7
  87. package/dist/components/steps.d.ts.map +1 -1
  88. package/dist/components/steps.js +17 -5
  89. package/dist/components/steps.js.map +1 -0
  90. package/dist/components/tabs.d.ts +49 -28
  91. package/dist/components/tabs.d.ts.map +1 -1
  92. package/dist/components/tabs.js +88 -51
  93. package/dist/components/tabs.js.map +1 -0
  94. package/dist/components/toc/clerk.d.ts +1 -2
  95. package/dist/components/toc/clerk.js +12 -1
  96. package/dist/components/toc/clerk.js.map +1 -0
  97. package/dist/components/toc/default.d.ts +1 -2
  98. package/dist/components/toc/default.js +12 -1
  99. package/dist/components/toc/default.js.map +1 -0
  100. package/dist/components/toc/index.d.ts +1 -2
  101. package/dist/components/toc/index.js +12 -1
  102. package/dist/components/toc/index.js.map +1 -0
  103. package/dist/components/type-table.d.ts +36 -29
  104. package/dist/components/type-table.d.ts.map +1 -1
  105. package/dist/components/type-table.js +106 -25
  106. package/dist/components/type-table.js.map +1 -0
  107. package/dist/components/ui/accordion.d.ts +31 -7
  108. package/dist/components/ui/accordion.d.ts.map +1 -1
  109. package/dist/components/ui/accordion.js +40 -14
  110. package/dist/components/ui/accordion.js.map +1 -0
  111. package/dist/components/ui/button.d.ts +12 -7
  112. package/dist/components/ui/button.d.ts.map +1 -1
  113. package/dist/components/ui/button.js +21 -18
  114. package/dist/components/ui/button.js.map +1 -0
  115. package/dist/components/ui/collapsible.d.ts +12 -8
  116. package/dist/components/ui/collapsible.d.ts.map +1 -1
  117. package/dist/components/ui/collapsible.js +21 -11
  118. package/dist/components/ui/collapsible.js.map +1 -0
  119. package/dist/components/ui/navigation-menu.d.ts +8 -5
  120. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  121. package/dist/components/ui/navigation-menu.js +36 -9
  122. package/dist/components/ui/navigation-menu.js.map +1 -0
  123. package/dist/components/ui/popover.d.ts +6 -3
  124. package/dist/components/ui/popover.d.ts.map +1 -1
  125. package/dist/components/ui/popover.js +19 -6
  126. package/dist/components/ui/popover.js.map +1 -0
  127. package/dist/components/ui/scroll-area.d.ts +7 -4
  128. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  129. package/dist/components/ui/scroll-area.js +33 -7
  130. package/dist/components/ui/scroll-area.js.map +1 -0
  131. package/dist/components/ui/tabs.d.ts +37 -19
  132. package/dist/components/ui/tabs.d.ts.map +1 -1
  133. package/dist/components/ui/tabs.js +75 -73
  134. package/dist/components/ui/tabs.js.map +1 -0
  135. package/dist/contexts/i18n.d.ts +1 -2
  136. package/dist/contexts/i18n.js +12 -1
  137. package/dist/contexts/i18n.js.map +1 -0
  138. package/dist/contexts/search.d.ts +7 -1
  139. package/dist/contexts/search.d.ts.map +1 -1
  140. package/dist/contexts/search.js +12 -1
  141. package/dist/contexts/search.js.map +1 -0
  142. package/dist/contexts/tree.d.ts +1 -2
  143. package/dist/contexts/tree.js +12 -1
  144. package/dist/contexts/tree.js.map +1 -0
  145. package/dist/i18n.d.ts +1 -2
  146. package/dist/i18n.js +3 -1
  147. package/dist/layouts/docs/client.d.ts +30 -13
  148. package/dist/layouts/docs/client.d.ts.map +1 -1
  149. package/dist/layouts/docs/client.js +61 -34
  150. package/dist/layouts/docs/client.js.map +1 -0
  151. package/dist/layouts/docs/index.d.ts +57 -33
  152. package/dist/layouts/docs/index.d.ts.map +1 -1
  153. package/dist/layouts/docs/index.js +178 -68
  154. package/dist/layouts/docs/index.js.map +1 -0
  155. package/dist/layouts/docs/page/client.d.ts +43 -21
  156. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  157. package/dist/layouts/docs/page/client.js +213 -105
  158. package/dist/layouts/docs/page/client.js.map +1 -0
  159. package/dist/layouts/docs/page/index.d.ts +82 -46
  160. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  161. package/dist/layouts/docs/page/index.js +98 -45
  162. package/dist/layouts/docs/page/index.js.map +1 -0
  163. package/dist/layouts/docs/sidebar.d.ts +57 -16
  164. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  165. package/dist/layouts/docs/sidebar.js +135 -82
  166. package/dist/layouts/docs/sidebar.js.map +1 -0
  167. package/dist/layouts/home/client.d.ts +18 -5
  168. package/dist/layouts/home/client.d.ts.map +1 -1
  169. package/dist/layouts/home/client.js +252 -103
  170. package/dist/layouts/home/client.js.map +1 -0
  171. package/dist/layouts/home/index.d.ts +15 -10
  172. package/dist/layouts/home/index.d.ts.map +1 -1
  173. package/dist/layouts/home/index.js +24 -7
  174. package/dist/layouts/home/index.js.map +1 -0
  175. package/dist/layouts/home/navbar.d.ts +13 -6
  176. package/dist/layouts/home/navbar.d.ts.map +1 -1
  177. package/dist/layouts/home/navbar.js +34 -12
  178. package/dist/layouts/home/navbar.js.map +1 -0
  179. package/dist/layouts/notebook/client.d.ts +44 -20
  180. package/dist/layouts/notebook/client.d.ts.map +1 -1
  181. package/dist/layouts/notebook/client.js +148 -93
  182. package/dist/layouts/notebook/client.js.map +1 -0
  183. package/dist/layouts/notebook/index.d.ts +34 -30
  184. package/dist/layouts/notebook/index.d.ts.map +1 -1
  185. package/dist/layouts/notebook/index.js +216 -90
  186. package/dist/layouts/notebook/index.js.map +1 -0
  187. package/dist/layouts/notebook/page/client.d.ts +43 -21
  188. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  189. package/dist/layouts/notebook/page/client.js +213 -105
  190. package/dist/layouts/notebook/page/client.js.map +1 -0
  191. package/dist/layouts/notebook/page/index.d.ts +82 -46
  192. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  193. package/dist/layouts/notebook/page/index.js +98 -45
  194. package/dist/layouts/notebook/page/index.js.map +1 -0
  195. package/dist/layouts/notebook/sidebar.d.ts +62 -16
  196. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  197. package/dist/layouts/notebook/sidebar.js +135 -79
  198. package/dist/layouts/notebook/sidebar.js.map +1 -0
  199. package/dist/layouts/shared/index.d.ts +62 -50
  200. package/dist/layouts/shared/index.d.ts.map +1 -1
  201. package/dist/layouts/shared/index.js +36 -20
  202. package/dist/layouts/shared/index.js.map +1 -0
  203. package/dist/layouts/shared/language-toggle.d.ts +9 -4
  204. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  205. package/dist/layouts/shared/language-toggle.js +44 -21
  206. package/dist/layouts/shared/language-toggle.js.map +1 -0
  207. package/dist/layouts/shared/search-toggle.d.ts +20 -8
  208. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  209. package/dist/layouts/shared/search-toggle.js +53 -24
  210. package/dist/layouts/shared/search-toggle.js.map +1 -0
  211. package/dist/layouts/shared/theme-toggle.d.ts +13 -4
  212. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  213. package/dist/layouts/shared/theme-toggle.js +58 -34
  214. package/dist/layouts/shared/theme-toggle.js.map +1 -0
  215. package/dist/mdx.d.ts +34 -29
  216. package/dist/mdx.d.ts.map +1 -1
  217. package/dist/mdx.js +68 -34
  218. package/dist/mdx.js.map +1 -0
  219. package/dist/mdx.server.d.ts +9 -5
  220. package/dist/mdx.server.d.ts.map +1 -1
  221. package/dist/mdx.server.js +21 -13
  222. package/dist/mdx.server.js.map +1 -0
  223. package/dist/og.d.ts +1 -2
  224. package/dist/og.js +3 -1
  225. package/dist/page.d.ts +30 -20
  226. package/dist/page.d.ts.map +1 -1
  227. package/dist/page.js +34 -18
  228. package/dist/page.js.map +1 -0
  229. package/dist/provider/base.d.ts +43 -33
  230. package/dist/provider/base.d.ts.map +1 -1
  231. package/dist/provider/base.js +37 -17
  232. package/dist/provider/base.js.map +1 -0
  233. package/dist/provider/next.d.ts +20 -12
  234. package/dist/provider/next.d.ts.map +1 -1
  235. package/dist/provider/next.js +19 -5
  236. package/dist/provider/next.js.map +1 -0
  237. package/dist/provider/react-router.d.ts +20 -12
  238. package/dist/provider/react-router.d.ts.map +1 -1
  239. package/dist/provider/react-router.js +19 -5
  240. package/dist/provider/react-router.js.map +1 -0
  241. package/dist/provider/tanstack.d.ts +20 -12
  242. package/dist/provider/tanstack.d.ts.map +1 -1
  243. package/dist/provider/tanstack.js +19 -5
  244. package/dist/provider/tanstack.js.map +1 -0
  245. package/dist/provider/waku.d.ts +20 -12
  246. package/dist/provider/waku.d.ts.map +1 -1
  247. package/dist/provider/waku.js +19 -5
  248. package/dist/provider/waku.js.map +1 -0
  249. package/dist/style.css +30 -12
  250. package/dist/utils/use-copy-button.d.ts +1 -2
  251. package/dist/utils/use-copy-button.js +3 -1
  252. package/dist/utils/use-footer-items.d.ts +1 -2
  253. package/dist/utils/use-footer-items.js +3 -1
  254. package/dist/utils/use-is-scroll-top.d.ts +1 -2
  255. package/dist/utils/use-is-scroll-top.js +3 -1
  256. package/package.json +51 -52
  257. package/dist/components/toc/clerk.d.ts.map +0 -1
  258. package/dist/components/toc/default.d.ts.map +0 -1
  259. package/dist/components/toc/index.d.ts.map +0 -1
  260. package/dist/contexts/i18n.d.ts.map +0 -1
  261. package/dist/contexts/tree.d.ts.map +0 -1
  262. package/dist/i18n.d.ts.map +0 -1
  263. package/dist/og.d.ts.map +0 -1
  264. package/dist/utils/use-copy-button.d.ts.map +0 -1
  265. package/dist/utils/use-footer-items.d.ts.map +0 -1
  266. package/dist/utils/use-is-scroll-top.d.ts.map +0 -1
@@ -1,11 +1,21 @@
1
- import type { HTMLAttributes, ReactNode } from 'react';
2
- export declare function Cards(props: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
3
- export type CardProps = Omit<HTMLAttributes<HTMLElement>, 'title'> & {
4
- icon?: ReactNode;
5
- title: ReactNode;
6
- description?: ReactNode;
7
- href?: string;
8
- external?: boolean;
1
+ import * as react_jsx_runtime28 from "react/jsx-runtime";
2
+ import { HTMLAttributes, ReactNode } from "react";
3
+
4
+ //#region src/components/card.d.ts
5
+ declare function Cards(props: HTMLAttributes<HTMLDivElement>): react_jsx_runtime28.JSX.Element;
6
+ type CardProps = Omit<HTMLAttributes<HTMLElement>, 'title'> & {
7
+ icon?: ReactNode;
8
+ title: ReactNode;
9
+ description?: ReactNode;
10
+ href?: string;
11
+ external?: boolean;
9
12
  };
10
- export declare function Card({ icon, title, description, ...props }: CardProps): import("react/jsx-runtime").JSX.Element;
13
+ declare function Card({
14
+ icon,
15
+ title,
16
+ description,
17
+ ...props
18
+ }: CardProps): react_jsx_runtime28.JSX.Element;
19
+ //#endregion
20
+ export { Card, CardProps, Cards };
11
21
  //# sourceMappingURL=card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../src/components/card.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,wBAAgB,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAS1D;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACnE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CA2BrE"}
1
+ {"version":3,"file":"card.d.ts","names":[],"sources":["../../src/components/card.tsx"],"sourcesContent":[],"mappings":";;;;iBAIgB,KAAA,QAAa,eAAe,kBAAe,mBAAA,CAAA,GAAA,CAAA;KAQ/C,SAAA,GAAY,KAAK,eAAe;SACnC;EATO,KAAA,EAUP,SAVY;EAAuB,WAAA,CAAA,EAW5B,SAX4B;EAAf,IAAA,CAAA,EAAA,MAAA;EAA8B,QAAA,CAAA,EAAA,OAAA;CAAA;AAQ/C,iBASI,IAAA,CATK;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EASwC,SATxC,CAAA,EASiD,mBAAA,CAAA,GAAA,CAAA,OATjD"}
@@ -1,10 +1,41 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import Link from 'fumadocs-core/link';
3
- import { cn } from '@fumadocs/ui/cn';
4
- export function Cards(props) {
5
- return (_jsx("div", { ...props, className: cn('grid grid-cols-2 gap-3 @container', props.className), children: props.children }));
1
+ import Link from "fumadocs-core/link";
2
+ import { cn } from "@fumadocs/ui/cn";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+
5
+ //#region src/components/card.tsx
6
+ function Cards(props) {
7
+ return /* @__PURE__ */ jsx("div", {
8
+ ...props,
9
+ className: cn("grid grid-cols-2 gap-3 @container", props.className),
10
+ children: props.children
11
+ });
6
12
  }
7
- export function Card({ icon, title, description, ...props }) {
8
- const E = props.href ? Link : 'div';
9
- return (_jsxs(E, { ...props, "data-card": true, className: cn('block rounded-xl border bg-fd-card p-4 text-fd-card-foreground transition-colors @max-lg:col-span-full', props.href && 'hover:bg-fd-accent/80', props.className), children: [icon ? (_jsx("div", { className: "not-prose mb-2 w-fit shadow-md rounded-lg border bg-fd-muted p-1.5 text-fd-muted-foreground [&_svg]:size-4", children: icon })) : null, _jsx("h3", { className: "not-prose mb-1 text-sm font-medium", children: title }), description ? (_jsx("p", { className: "my-0! text-sm text-fd-muted-foreground", children: description })) : null, _jsx("div", { className: "text-sm text-fd-muted-foreground prose-no-margin empty:hidden", children: props.children })] }));
13
+ function Card({ icon, title, description, ...props }) {
14
+ return /* @__PURE__ */ jsxs(props.href ? Link : "div", {
15
+ ...props,
16
+ "data-card": true,
17
+ className: cn("block rounded-xl border bg-fd-card p-4 text-fd-card-foreground transition-colors @max-lg:col-span-full", props.href && "hover:bg-fd-accent/80", props.className),
18
+ children: [
19
+ icon ? /* @__PURE__ */ jsx("div", {
20
+ className: "not-prose mb-2 w-fit shadow-md rounded-lg border bg-fd-muted p-1.5 text-fd-muted-foreground [&_svg]:size-4",
21
+ children: icon
22
+ }) : null,
23
+ /* @__PURE__ */ jsx("h3", {
24
+ className: "not-prose mb-1 text-sm font-medium",
25
+ children: title
26
+ }),
27
+ description ? /* @__PURE__ */ jsx("p", {
28
+ className: "my-0! text-sm text-fd-muted-foreground",
29
+ children: description
30
+ }) : null,
31
+ /* @__PURE__ */ jsx("div", {
32
+ className: "text-sm text-fd-muted-foreground prose-no-margin empty:hidden",
33
+ children: props.children
34
+ })
35
+ ]
36
+ });
10
37
  }
38
+
39
+ //#endregion
40
+ export { Card, Cards };
41
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../src/components/card.tsx"],"sourcesContent":["import Link from 'fumadocs-core/link';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { cn } from '@fumadocs/ui/cn';\n\nexport function Cards(props: HTMLAttributes<HTMLDivElement>) {\n return (\n <div {...props} className={cn('grid grid-cols-2 gap-3 @container', props.className)}>\n {props.children}\n </div>\n );\n}\n\nexport type CardProps = Omit<HTMLAttributes<HTMLElement>, 'title'> & {\n icon?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n\n href?: string;\n external?: boolean;\n};\n\nexport function Card({ icon, title, description, ...props }: CardProps) {\n const E = props.href ? Link : 'div';\n\n return (\n <E\n {...props}\n data-card\n className={cn(\n 'block rounded-xl border bg-fd-card p-4 text-fd-card-foreground transition-colors @max-lg:col-span-full',\n props.href && 'hover:bg-fd-accent/80',\n props.className,\n )}\n >\n {icon ? (\n <div className=\"not-prose mb-2 w-fit shadow-md rounded-lg border bg-fd-muted p-1.5 text-fd-muted-foreground [&_svg]:size-4\">\n {icon}\n </div>\n ) : null}\n <h3 className=\"not-prose mb-1 text-sm font-medium\">{title}</h3>\n {description ? <p className=\"my-0! text-sm text-fd-muted-foreground\">{description}</p> : null}\n <div className=\"text-sm text-fd-muted-foreground prose-no-margin empty:hidden\">\n {props.children}\n </div>\n </E>\n );\n}\n"],"mappings":";;;;;AAIA,SAAgB,MAAM,OAAuC;AAC3D,QACE,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,qCAAqC,MAAM,UAAU;YAChF,MAAM;GACH;;AAaV,SAAgB,KAAK,EAAE,MAAM,OAAO,aAAa,GAAG,SAAoB;AAGtE,QACE,qBAHQ,MAAM,OAAO,OAAO;EAI1B,GAAI;EACJ;EACA,WAAW,GACT,0GACA,MAAM,QAAQ,yBACd,MAAM,UACP;;GAEA,OACC,oBAAC;IAAI,WAAU;cACZ;KACG,GACJ;GACJ,oBAAC;IAAG,WAAU;cAAsC;KAAW;GAC9D,cAAc,oBAAC;IAAE,WAAU;cAA0C;KAAgB,GAAG;GACzF,oBAAC;IAAI,WAAU;cACZ,MAAM;KACH;;GACJ"}
@@ -1,42 +1,63 @@
1
- import { type ComponentProps, type HTMLAttributes, type ReactNode } from 'react';
2
- import { Tabs, TabsContent, TabsList, TabsTrigger } from '../components/ui/tabs.js';
3
- export interface CodeBlockProps extends ComponentProps<'figure'> {
4
- /**
5
- * Icon of code block
6
- *
7
- * When passed as a string, it assumes the value is the HTML of icon
8
- */
9
- icon?: ReactNode;
10
- /**
11
- * Allow to copy code with copy button
12
- *
13
- * @defaultValue true
14
- */
15
- allowCopy?: boolean;
16
- /**
17
- * Keep original background color generated by Shiki or Rehype Code
18
- *
19
- * @defaultValue false
20
- */
21
- keepBackground?: boolean;
22
- viewportProps?: HTMLAttributes<HTMLElement>;
23
- /**
24
- * show line numbers
25
- */
26
- 'data-line-numbers'?: boolean;
27
- /**
28
- * @defaultValue 1
29
- */
30
- 'data-line-numbers-start'?: number;
31
- Actions?: (props: {
32
- className?: string;
33
- children?: ReactNode;
34
- }) => ReactNode;
1
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./ui/tabs.js";
2
+ import * as react_jsx_runtime34 from "react/jsx-runtime";
3
+ import { ComponentProps, HTMLAttributes, ReactNode } from "react";
4
+
5
+ //#region src/components/codeblock.d.ts
6
+ interface CodeBlockProps extends ComponentProps<'figure'> {
7
+ /**
8
+ * Icon of code block
9
+ *
10
+ * When passed as a string, it assumes the value is the HTML of icon
11
+ */
12
+ icon?: ReactNode;
13
+ /**
14
+ * Allow to copy code with copy button
15
+ *
16
+ * @defaultValue true
17
+ */
18
+ allowCopy?: boolean;
19
+ /**
20
+ * Keep original background color generated by Shiki or Rehype Code
21
+ *
22
+ * @defaultValue false
23
+ */
24
+ keepBackground?: boolean;
25
+ viewportProps?: HTMLAttributes<HTMLElement>;
26
+ /**
27
+ * show line numbers
28
+ */
29
+ 'data-line-numbers'?: boolean;
30
+ /**
31
+ * @defaultValue 1
32
+ */
33
+ 'data-line-numbers-start'?: number;
34
+ Actions?: (props: {
35
+ className?: string;
36
+ children?: ReactNode;
37
+ }) => ReactNode;
35
38
  }
36
- export declare function Pre(props: ComponentProps<'pre'>): import("react/jsx-runtime").JSX.Element;
37
- export declare function CodeBlock({ ref, title, allowCopy, keepBackground, icon, viewportProps, children, Actions, ...props }: CodeBlockProps): import("react/jsx-runtime").JSX.Element;
38
- export declare function CodeBlockTabs({ ref, ...props }: ComponentProps<typeof Tabs>): import("react/jsx-runtime").JSX.Element;
39
- export declare function CodeBlockTabsList(props: ComponentProps<typeof TabsList>): import("react/jsx-runtime").JSX.Element;
40
- export declare function CodeBlockTabsTrigger({ children, ...props }: ComponentProps<typeof TabsTrigger>): import("react/jsx-runtime").JSX.Element;
41
- export declare function CodeBlockTab(props: ComponentProps<typeof TabsContent>): import("react/jsx-runtime").JSX.Element;
39
+ declare function Pre(props: ComponentProps<'pre'>): react_jsx_runtime34.JSX.Element;
40
+ declare function CodeBlock({
41
+ ref,
42
+ title,
43
+ allowCopy,
44
+ keepBackground,
45
+ icon,
46
+ viewportProps,
47
+ children,
48
+ Actions,
49
+ ...props
50
+ }: CodeBlockProps): react_jsx_runtime34.JSX.Element;
51
+ declare function CodeBlockTabs({
52
+ ref,
53
+ ...props
54
+ }: ComponentProps<typeof Tabs>): react_jsx_runtime34.JSX.Element;
55
+ declare function CodeBlockTabsList(props: ComponentProps<typeof TabsList>): react_jsx_runtime34.JSX.Element;
56
+ declare function CodeBlockTabsTrigger({
57
+ children,
58
+ ...props
59
+ }: ComponentProps<typeof TabsTrigger>): react_jsx_runtime34.JSX.Element;
60
+ declare function CodeBlockTab(props: ComponentProps<typeof TabsContent>): react_jsx_runtime34.JSX.Element;
61
+ //#endregion
62
+ export { CodeBlock, CodeBlockProps, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre };
42
63
  //# sourceMappingURL=codeblock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeblock.d.ts","sourceRoot":"","sources":["../../src/components/codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAIf,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGhF,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC9D;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,aAAa,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5C;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,KAAK,SAAS,CAAC;CAC9E;AAOD,wBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAS/C;AAED,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,KAAK,EACL,SAAgB,EAChB,cAAsB,EACtB,IAAI,EACJ,aAAkB,EAClB,QAAQ,EACR,OAEC,EACD,GAAG,KAAK,EACT,EAAE,cAAc,2CAqEhB;AA0CD,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,IAAI,CAAC,2CA2B3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,2CAYvE;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAapC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,WAAW,CAAC,2CAErE"}
1
+ {"version":3,"file":"codeblock.d.ts","names":[],"sources":["../../src/components/codeblock.tsx"],"sourcesContent":[],"mappings":";;;;;UAkBiB,cAAA,SAAuB;;;AAAxC;;;EAsBkB,IAAA,CAAA,EAhBT,SAgBS;EAYmC;;;;AAQrD;EAQgB,SAAA,CAAA,EAAS,OAAA;EACvB;;;;;EAKA,cAAA,CAAA,EAAA,OAAA;EACA,aAAA,CAAA,EAnCgB,cAmChB,CAnC+B,WAmC/B,CAAA;EACA;;;EAEe,mBAAA,CAAA,EAAA,OAAA;EA4GD;;;EAAiC,yBAAA,CAAA,EAAA,MAAA;EAA2B,OAAA,CAAA,EAAA,CAAA,KAAA,EAAA;IAAA,SAAA,CAAA,EAAA,MAAA;IAyB5D,QAAA,CAAA,EA/JqC,SA+JpB;EAA8B,CAAA,EAAA,GA/JM,SA+JN;;AAAS,iBAvJxD,GAAA,CAuJwD,KAAA,EAvJ7C,cAuJ6C,CAAA,KAAA,CAAA,CAAA,EAvJxB,mBAAA,CAAA,GAAA,CAAA,OAuJwB;AAAA,iBA/IxD,SAAA,CA+IwD;EAAA,GAAA;EAAA,KAAA;EAAA,SAAA;EAAA,cAAA;EAAA,IAAA;EAAA,aAAA;EAAA,QAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EArIrE,cAqIqE,CAAA,EArIvD,mBAAA,CAAA,GAAA,CAAA,OAqIuD;AAWxD,iBApCA,aAAA,CAoCoB;EAAA,GAAA;EAAA,GAAA;AAAA,CAAA,EApCa,cAoCb,CAAA,OApCmC,IAoCnC,CAAA,CAAA,EApCwC,mBAAA,CAAA,GAAA,CAAA,OAoCxC;AAAG,iBAXvB,iBAAA,CAWuB,KAAA,EAXE,cAWF,CAAA,OAXwB,QAWxB,CAAA,CAAA,EAXiC,mBAAA,CAAA,GAAA,CAAA,OAWjC;AAA4C,iBAAnE,oBAAA,CAAmE;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EAAtB,cAAsB,CAAA,OAAA,WAAA,CAAA,CAAA,EAAY,mBAAA,CAAA,GAAA,CAAA,OAAZ;AAAtB,iBAe7C,YAAA,CAf6C,KAAA,EAezB,cAfyB,CAAA,OAeH,WAfG,CAAA,CAAA,EAeS,mBAAA,CAAA,GAAA,CAAA,OAfT"}
@@ -1,68 +1,126 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Check, Clipboard } from '@fumadocs/ui/icons';
4
- import { createContext, use, useMemo, useRef, } from 'react';
5
- import { cn } from '@fumadocs/ui/cn';
6
- import { useCopyButton } from '@fumadocs/ui/hooks/use-copy-button';
7
- import { buttonVariants } from '../components/ui/button.js';
8
- import { Tabs, TabsContent, TabsList, TabsTrigger } from '../components/ui/tabs.js';
9
- import { mergeRefs } from '@fumadocs/ui/merge-refs';
2
+
3
+ import { buttonVariants } from "./ui/button.js";
4
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./ui/tabs.js";
5
+ import { cn } from "@fumadocs/ui/cn";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Check, Clipboard } from "lucide-react";
8
+ import { createContext, use, useMemo, useRef } from "react";
9
+ import { useCopyButton } from "@fumadocs/ui/hooks/use-copy-button";
10
+ import { mergeRefs } from "@fumadocs/ui/merge-refs";
11
+
12
+ //#region src/components/codeblock.tsx
10
13
  const TabsContext = createContext(null);
11
- export function Pre(props) {
12
- return (_jsx("pre", { ...props, className: cn('min-w-full w-max *:flex *:flex-col', props.className), children: props.children }));
14
+ function Pre(props) {
15
+ return /* @__PURE__ */ jsx("pre", {
16
+ ...props,
17
+ className: cn("min-w-full w-max *:flex *:flex-col", props.className),
18
+ children: props.children
19
+ });
13
20
  }
14
- export function CodeBlock({ ref, title, allowCopy = true, keepBackground = false, icon, viewportProps = {}, children, Actions = (props) => (_jsx("div", { ...props, className: cn('empty:hidden', props.className) })), ...props }) {
15
- const inTab = use(TabsContext) !== null;
16
- const areaRef = useRef(null);
17
- return (_jsxs("figure", { ref: ref, dir: "ltr", ...props, tabIndex: -1, className: cn(inTab
18
- ? 'bg-fd-secondary -mx-px -mb-px last:rounded-b-xl'
19
- : 'my-4 bg-fd-card rounded-xl', keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)', 'shiki relative border shadow-sm not-prose overflow-hidden text-sm', props.className), children: [title ? (_jsxs("div", { className: "flex text-fd-muted-foreground items-center gap-2 h-9.5 border-b px-4", children: [typeof icon === 'string' ? (_jsx("div", { className: "[&_svg]:size-3.5", dangerouslySetInnerHTML: {
20
- __html: icon,
21
- } })) : (icon), _jsx("figcaption", { className: "flex-1 truncate", children: title }), Actions({
22
- className: '-me-2',
23
- children: allowCopy && _jsx(CopyButton, { containerRef: areaRef }),
24
- })] })) : (Actions({
25
- className: 'absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground',
26
- children: allowCopy && _jsx(CopyButton, { containerRef: areaRef }),
27
- })), _jsx("div", { ref: areaRef, ...viewportProps, role: "region", tabIndex: 0, className: cn('text-[0.8125rem] py-3.5 overflow-auto max-h-[600px] fd-scroll-container focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-fd-ring', viewportProps.className), style: {
28
- // space for toolbar
29
- '--padding-right': !title ? 'calc(var(--spacing) * 8)' : undefined,
30
- counterSet: props['data-line-numbers']
31
- ? `line ${Number(props['data-line-numbers-start'] ?? 1) - 1}`
32
- : undefined,
33
- ...viewportProps.style,
34
- }, children: children })] }));
21
+ function CodeBlock({ ref, title, allowCopy = true, keepBackground = false, icon, viewportProps = {}, children, Actions = (props$1) => /* @__PURE__ */ jsx("div", {
22
+ ...props$1,
23
+ className: cn("empty:hidden", props$1.className)
24
+ }), ...props }) {
25
+ const inTab = use(TabsContext) !== null;
26
+ const areaRef = useRef(null);
27
+ return /* @__PURE__ */ jsxs("figure", {
28
+ ref,
29
+ dir: "ltr",
30
+ ...props,
31
+ tabIndex: -1,
32
+ className: cn(inTab ? "bg-fd-secondary -mx-px -mb-px last:rounded-b-xl" : "my-4 bg-fd-card rounded-xl", keepBackground && "bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)", "shiki relative border shadow-sm not-prose overflow-hidden text-sm", props.className),
33
+ children: [title ? /* @__PURE__ */ jsxs("div", {
34
+ className: "flex text-fd-muted-foreground items-center gap-2 h-9.5 border-b px-4",
35
+ children: [
36
+ typeof icon === "string" ? /* @__PURE__ */ jsx("div", {
37
+ className: "[&_svg]:size-3.5",
38
+ dangerouslySetInnerHTML: { __html: icon }
39
+ }) : icon,
40
+ /* @__PURE__ */ jsx("figcaption", {
41
+ className: "flex-1 truncate",
42
+ children: title
43
+ }),
44
+ Actions({
45
+ className: "-me-2",
46
+ children: allowCopy && /* @__PURE__ */ jsx(CopyButton, { containerRef: areaRef })
47
+ })
48
+ ]
49
+ }) : Actions({
50
+ className: "absolute top-3 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground",
51
+ children: allowCopy && /* @__PURE__ */ jsx(CopyButton, { containerRef: areaRef })
52
+ }), /* @__PURE__ */ jsx("div", {
53
+ ref: areaRef,
54
+ ...viewportProps,
55
+ role: "region",
56
+ tabIndex: 0,
57
+ className: cn("text-[0.8125rem] py-3.5 overflow-auto max-h-[600px] fd-scroll-container focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-fd-ring", viewportProps.className),
58
+ style: {
59
+ "--padding-right": !title ? "calc(var(--spacing) * 8)" : void 0,
60
+ counterSet: props["data-line-numbers"] ? `line ${Number(props["data-line-numbers-start"] ?? 1) - 1}` : void 0,
61
+ ...viewportProps.style
62
+ },
63
+ children
64
+ })]
65
+ });
35
66
  }
36
67
  function CopyButton({ className, containerRef, ...props }) {
37
- const [checked, onClick] = useCopyButton(() => {
38
- const pre = containerRef.current?.getElementsByTagName('pre').item(0);
39
- if (!pre)
40
- return;
41
- const clone = pre.cloneNode(true);
42
- clone.querySelectorAll('.nd-copy-ignore').forEach((node) => {
43
- node.replaceWith('\n');
44
- });
45
- void navigator.clipboard.writeText(clone.textContent ?? '');
46
- });
47
- return (_jsx("button", { type: "button", "data-checked": checked || undefined, className: cn(buttonVariants({
48
- className: 'hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground',
49
- size: 'icon-xs',
50
- }), className), "aria-label": checked ? 'Copied Text' : 'Copy Text', onClick: onClick, ...props, children: checked ? _jsx(Check, {}) : _jsx(Clipboard, {}) }));
68
+ const [checked, onClick] = useCopyButton(() => {
69
+ const pre = containerRef.current?.getElementsByTagName("pre").item(0);
70
+ if (!pre) return;
71
+ const clone = pre.cloneNode(true);
72
+ clone.querySelectorAll(".nd-copy-ignore").forEach((node) => {
73
+ node.replaceWith("\n");
74
+ });
75
+ navigator.clipboard.writeText(clone.textContent ?? "");
76
+ });
77
+ return /* @__PURE__ */ jsx("button", {
78
+ type: "button",
79
+ "data-checked": checked || void 0,
80
+ className: cn(buttonVariants({
81
+ className: "hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground",
82
+ size: "icon-xs"
83
+ }), className),
84
+ "aria-label": checked ? "Copied Text" : "Copy Text",
85
+ onClick,
86
+ ...props,
87
+ children: checked ? /* @__PURE__ */ jsx(Check, {}) : /* @__PURE__ */ jsx(Clipboard, {})
88
+ });
51
89
  }
52
- export function CodeBlockTabs({ ref, ...props }) {
53
- const containerRef = useRef(null);
54
- const nested = use(TabsContext) !== null;
55
- return (_jsx(Tabs, { ref: mergeRefs(containerRef, ref), ...props, className: cn('bg-fd-card rounded-xl border', !nested && 'my-4', props.className), children: _jsx(TabsContext, { value: useMemo(() => ({
56
- containerRef,
57
- nested,
58
- }), [nested]), children: props.children }) }));
90
+ function CodeBlockTabs({ ref, ...props }) {
91
+ const containerRef = useRef(null);
92
+ const nested = use(TabsContext) !== null;
93
+ return /* @__PURE__ */ jsx(Tabs, {
94
+ ref: mergeRefs(containerRef, ref),
95
+ ...props,
96
+ className: cn("bg-fd-card rounded-xl border", !nested && "my-4", props.className),
97
+ children: /* @__PURE__ */ jsx(TabsContext, {
98
+ value: useMemo(() => ({
99
+ containerRef,
100
+ nested
101
+ }), [nested]),
102
+ children: props.children
103
+ })
104
+ });
59
105
  }
60
- export function CodeBlockTabsList(props) {
61
- return (_jsx(TabsList, { ...props, className: cn('flex flex-row px-2 overflow-x-auto text-fd-muted-foreground', props.className), children: props.children }));
106
+ function CodeBlockTabsList(props) {
107
+ return /* @__PURE__ */ jsx(TabsList, {
108
+ ...props,
109
+ className: cn("flex flex-row px-2 overflow-x-auto text-fd-muted-foreground", props.className),
110
+ children: props.children
111
+ });
62
112
  }
63
- export function CodeBlockTabsTrigger({ children, ...props }) {
64
- return (_jsxs(TabsTrigger, { ...props, className: cn('relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5', props.className), children: [_jsx("div", { className: "absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary" }), children] }));
113
+ function CodeBlockTabsTrigger({ children, ...props }) {
114
+ return /* @__PURE__ */ jsxs(TabsTrigger, {
115
+ ...props,
116
+ className: cn("relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5", props.className),
117
+ children: [/* @__PURE__ */ jsx("div", { className: "absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary" }), children]
118
+ });
65
119
  }
66
- export function CodeBlockTab(props) {
67
- return _jsx(TabsContent, { ...props });
120
+ function CodeBlockTab(props) {
121
+ return /* @__PURE__ */ jsx(TabsContent, { ...props });
68
122
  }
123
+
124
+ //#endregion
125
+ export { CodeBlock, CodeBlockTab, CodeBlockTabs, CodeBlockTabsList, CodeBlockTabsTrigger, Pre };
126
+ //# sourceMappingURL=codeblock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeblock.js","names":["props"],"sources":["../../src/components/codeblock.tsx"],"sourcesContent":["'use client';\nimport { Check, Clipboard } from 'lucide-react';\nimport {\n type ComponentProps,\n createContext,\n type HTMLAttributes,\n type ReactNode,\n type RefObject,\n use,\n useMemo,\n useRef,\n} from 'react';\nimport { cn } from '@fumadocs/ui/cn';\nimport { useCopyButton } from '@fumadocs/ui/hooks/use-copy-button';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\nimport { mergeRefs } from '@fumadocs/ui/merge-refs';\n\nexport interface CodeBlockProps extends ComponentProps<'figure'> {\n /**\n * Icon of code block\n *\n * When passed as a string, it assumes the value is the HTML of icon\n */\n icon?: ReactNode;\n\n /**\n * Allow to copy code with copy button\n *\n * @defaultValue true\n */\n allowCopy?: boolean;\n\n /**\n * Keep original background color generated by Shiki or Rehype Code\n *\n * @defaultValue false\n */\n keepBackground?: boolean;\n\n viewportProps?: HTMLAttributes<HTMLElement>;\n\n /**\n * show line numbers\n */\n 'data-line-numbers'?: boolean;\n\n /**\n * @defaultValue 1\n */\n 'data-line-numbers-start'?: number;\n\n Actions?: (props: { className?: string; children?: ReactNode }) => ReactNode;\n}\n\nconst TabsContext = createContext<{\n containerRef: RefObject<HTMLDivElement | null>;\n nested: boolean;\n} | null>(null);\n\nexport function Pre(props: ComponentProps<'pre'>) {\n return (\n <pre {...props} className={cn('min-w-full w-max *:flex *:flex-col', props.className)}>\n {props.children}\n </pre>\n );\n}\n\nexport function CodeBlock({\n ref,\n title,\n allowCopy = true,\n keepBackground = false,\n icon,\n viewportProps = {},\n children,\n Actions = (props) => <div {...props} className={cn('empty:hidden', props.className)} />,\n ...props\n}: CodeBlockProps) {\n const inTab = use(TabsContext) !== null;\n const areaRef = useRef<HTMLDivElement>(null);\n\n return (\n <figure\n ref={ref}\n dir=\"ltr\"\n {...props}\n tabIndex={-1}\n className={cn(\n inTab ? 'bg-fd-secondary -mx-px -mb-px last:rounded-b-xl' : 'my-4 bg-fd-card rounded-xl',\n keepBackground && 'bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)',\n\n 'shiki relative border shadow-sm not-prose overflow-hidden text-sm',\n props.className,\n )}\n >\n {title ? (\n <div className=\"flex text-fd-muted-foreground items-center gap-2 h-9.5 border-b px-4\">\n {typeof icon === 'string' ? (\n <div\n className=\"[&_svg]:size-3.5\"\n dangerouslySetInnerHTML={{\n __html: icon,\n }}\n />\n ) : (\n icon\n )}\n <figcaption className=\"flex-1 truncate\">{title}</figcaption>\n {Actions({\n className: '-me-2',\n children: allowCopy && <CopyButton containerRef={areaRef} />,\n })}\n </div>\n ) : (\n Actions({\n className:\n 'absolute top-3 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground',\n children: allowCopy && <CopyButton containerRef={areaRef} />,\n })\n )}\n <div\n ref={areaRef}\n {...viewportProps}\n role=\"region\"\n tabIndex={0}\n className={cn(\n 'text-[0.8125rem] py-3.5 overflow-auto max-h-[600px] fd-scroll-container focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-fd-ring',\n viewportProps.className,\n )}\n style={\n {\n // space for toolbar\n '--padding-right': !title ? 'calc(var(--spacing) * 8)' : undefined,\n counterSet: props['data-line-numbers']\n ? `line ${Number(props['data-line-numbers-start'] ?? 1) - 1}`\n : undefined,\n ...viewportProps.style,\n } as object\n }\n >\n {children}\n </div>\n </figure>\n );\n}\n\nfunction CopyButton({\n className,\n containerRef,\n ...props\n}: ComponentProps<'button'> & {\n containerRef: RefObject<HTMLElement | null>;\n}) {\n const [checked, onClick] = useCopyButton(() => {\n const pre = containerRef.current?.getElementsByTagName('pre').item(0);\n if (!pre) return;\n\n const clone = pre.cloneNode(true) as HTMLElement;\n clone.querySelectorAll('.nd-copy-ignore').forEach((node) => {\n node.replaceWith('\\n');\n });\n\n void navigator.clipboard.writeText(clone.textContent ?? '');\n });\n\n return (\n <button\n type=\"button\"\n data-checked={checked || undefined}\n className={cn(\n buttonVariants({\n className: 'hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground',\n size: 'icon-xs',\n }),\n className,\n )}\n aria-label={checked ? 'Copied Text' : 'Copy Text'}\n onClick={onClick}\n {...props}\n >\n {checked ? <Check /> : <Clipboard />}\n </button>\n );\n}\n\nexport function CodeBlockTabs({ ref, ...props }: ComponentProps<typeof Tabs>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const nested = use(TabsContext) !== null;\n\n return (\n <Tabs\n ref={mergeRefs(containerRef, ref)}\n {...props}\n className={cn('bg-fd-card rounded-xl border', !nested && 'my-4', props.className)}\n >\n <TabsContext\n value={useMemo(\n () => ({\n containerRef,\n nested,\n }),\n [nested],\n )}\n >\n {props.children}\n </TabsContext>\n </Tabs>\n );\n}\n\nexport function CodeBlockTabsList(props: ComponentProps<typeof TabsList>) {\n return (\n <TabsList\n {...props}\n className={cn('flex flex-row px-2 overflow-x-auto text-fd-muted-foreground', props.className)}\n >\n {props.children}\n </TabsList>\n );\n}\n\nexport function CodeBlockTabsTrigger({ children, ...props }: ComponentProps<typeof TabsTrigger>) {\n return (\n <TabsTrigger\n {...props}\n className={cn(\n 'relative group inline-flex text-sm font-medium text-nowrap items-center transition-colors gap-2 px-2 py-1.5 hover:text-fd-accent-foreground data-[state=active]:text-fd-primary [&_svg]:size-3.5',\n props.className,\n )}\n >\n <div className=\"absolute inset-x-2 bottom-0 h-px group-data-[state=active]:bg-fd-primary\" />\n {children}\n </TabsTrigger>\n );\n}\n\nexport function CodeBlockTab(props: ComponentProps<typeof TabsContent>) {\n return <TabsContent {...props} />;\n}\n"],"mappings":";;;;;;;;;;;;AAuDA,MAAM,cAAc,cAGV,KAAK;AAEf,SAAgB,IAAI,OAA8B;AAChD,QACE,oBAAC;EAAI,GAAI;EAAO,WAAW,GAAG,sCAAsC,MAAM,UAAU;YACjF,MAAM;GACH;;AAIV,SAAgB,UAAU,EACxB,KACA,OACA,YAAY,MACZ,iBAAiB,OACjB,MACA,gBAAgB,EAAE,EAClB,UACA,WAAW,YAAU,oBAAC;CAAI,GAAIA;CAAO,WAAW,GAAG,gBAAgBA,QAAM,UAAU;EAAI,EACvF,GAAG,SACc;CACjB,MAAM,QAAQ,IAAI,YAAY,KAAK;CACnC,MAAM,UAAU,OAAuB,KAAK;AAE5C,QACE,qBAAC;EACM;EACL,KAAI;EACJ,GAAI;EACJ,UAAU;EACV,WAAW,GACT,QAAQ,oDAAoD,8BAC5D,kBAAkB,mDAElB,qEACA,MAAM,UACP;aAEA,QACC,qBAAC;GAAI,WAAU;;IACZ,OAAO,SAAS,WACf,oBAAC;KACC,WAAU;KACV,yBAAyB,EACvB,QAAQ,MACT;MACD,GAEF;IAEF,oBAAC;KAAW,WAAU;eAAmB;MAAmB;IAC3D,QAAQ;KACP,WAAW;KACX,UAAU,aAAa,oBAAC,cAAW,cAAc,UAAW;KAC7D,CAAC;;IACE,GAEN,QAAQ;GACN,WACE;GACF,UAAU,aAAa,oBAAC,cAAW,cAAc,UAAW;GAC7D,CAAC,EAEJ,oBAAC;GACC,KAAK;GACL,GAAI;GACJ,MAAK;GACL,UAAU;GACV,WAAW,GACT,+KACA,cAAc,UACf;GACD,OACE;IAEE,mBAAmB,CAAC,QAAQ,6BAA6B;IACzD,YAAY,MAAM,uBACd,QAAQ,OAAO,MAAM,8BAA8B,EAAE,GAAG,MACxD;IACJ,GAAG,cAAc;IAClB;GAGF;IACG;GACC;;AAIb,SAAS,WAAW,EAClB,WACA,cACA,GAAG,SAGF;CACD,MAAM,CAAC,SAAS,WAAW,oBAAoB;EAC7C,MAAM,MAAM,aAAa,SAAS,qBAAqB,MAAM,CAAC,KAAK,EAAE;AACrE,MAAI,CAAC,IAAK;EAEV,MAAM,QAAQ,IAAI,UAAU,KAAK;AACjC,QAAM,iBAAiB,kBAAkB,CAAC,SAAS,SAAS;AAC1D,QAAK,YAAY,KAAK;IACtB;AAEF,EAAK,UAAU,UAAU,UAAU,MAAM,eAAe,GAAG;GAC3D;AAEF,QACE,oBAAC;EACC,MAAK;EACL,gBAAc,WAAW;EACzB,WAAW,GACT,eAAe;GACb,WAAW;GACX,MAAM;GACP,CAAC,EACF,UACD;EACD,cAAY,UAAU,gBAAgB;EAC7B;EACT,GAAI;YAEH,UAAU,oBAAC,UAAQ,GAAG,oBAAC,cAAY;GAC7B;;AAIb,SAAgB,cAAc,EAAE,KAAK,GAAG,SAAsC;CAC5E,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,SAAS,IAAI,YAAY,KAAK;AAEpC,QACE,oBAAC;EACC,KAAK,UAAU,cAAc,IAAI;EACjC,GAAI;EACJ,WAAW,GAAG,gCAAgC,CAAC,UAAU,QAAQ,MAAM,UAAU;YAEjF,oBAAC;GACC,OAAO,eACE;IACL;IACA;IACD,GACD,CAAC,OAAO,CACT;aAEA,MAAM;IACK;GACT;;AAIX,SAAgB,kBAAkB,OAAwC;AACxE,QACE,oBAAC;EACC,GAAI;EACJ,WAAW,GAAG,+DAA+D,MAAM,UAAU;YAE5F,MAAM;GACE;;AAIf,SAAgB,qBAAqB,EAAE,UAAU,GAAG,SAA6C;AAC/F,QACE,qBAAC;EACC,GAAI;EACJ,WAAW,GACT,oMACA,MAAM,UACP;aAED,oBAAC,SAAI,WAAU,6EAA6E,EAC3F;GACW;;AAIlB,SAAgB,aAAa,OAA2C;AACtE,QAAO,oBAAC,eAAY,GAAI,QAAS"}
@@ -1,25 +1,39 @@
1
- import { type AlgoliaOptions } from 'fumadocs-core/search/client';
2
- import { type ReactNode } from 'react';
3
- import { type SharedProps } from './search.js';
4
- import type { SearchLink, TagItem } from '../../contexts/search.js';
5
- export interface AlgoliaSearchDialogProps extends SharedProps {
6
- searchOptions: AlgoliaOptions;
7
- links?: SearchLink[];
8
- footer?: ReactNode;
9
- defaultTag?: string;
10
- tags?: TagItem[];
11
- /**
12
- * Add the "Powered by Algolia" label, this is useful for free tier users
13
- *
14
- * @defaultValue false
15
- */
16
- showAlgolia?: boolean;
17
- /**
18
- * Allow to clear tag filters
19
- *
20
- * @defaultValue false
21
- */
22
- allowClear?: boolean;
1
+ import { search_d_exports } from "../../contexts/search.js";
2
+ import "./search.js";
3
+ import * as react_jsx_runtime71 from "react/jsx-runtime";
4
+ import { ReactNode } from "react";
5
+ import { AlgoliaOptions } from "fumadocs-core/search/client";
6
+
7
+ //#region src/components/dialog/search-algolia.d.ts
8
+ interface AlgoliaSearchDialogProps extends search_d_exports.SharedProps {
9
+ searchOptions: AlgoliaOptions;
10
+ links?: search_d_exports.SearchLink[];
11
+ footer?: ReactNode;
12
+ defaultTag?: string;
13
+ tags?: search_d_exports.TagItem[];
14
+ /**
15
+ * Add the "Powered by Algolia" label, this is useful for free tier users
16
+ *
17
+ * @defaultValue false
18
+ */
19
+ showAlgolia?: boolean;
20
+ /**
21
+ * Allow to clear tag filters
22
+ *
23
+ * @defaultValue false
24
+ */
25
+ allowClear?: boolean;
23
26
  }
24
- export default function AlgoliaSearchDialog({ searchOptions, tags, defaultTag, showAlgolia, allowClear, links, footer, ...props }: AlgoliaSearchDialogProps): import("react/jsx-runtime").JSX.Element;
27
+ declare function AlgoliaSearchDialog({
28
+ searchOptions,
29
+ tags,
30
+ defaultTag,
31
+ showAlgolia,
32
+ allowClear,
33
+ links,
34
+ footer,
35
+ ...props
36
+ }: AlgoliaSearchDialogProps): react_jsx_runtime71.JSX.Element;
37
+ //#endregion
38
+ export { AlgoliaSearchDialogProps, AlgoliaSearchDialog as default };
25
39
  //# sourceMappingURL=search-algolia.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-algolia.d.ts","sourceRoot":"","sources":["../../../src/components/dialog/search-algolia.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAE1D,OAAO,EAUL,KAAK,WAAW,EAGjB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG7D,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,aAAa,EAAE,cAAc,CAAC;IAC9B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,IAAS,EACT,UAAU,EACV,WAAmB,EACnB,UAAkB,EAClB,KAAU,EACV,MAAM,EACN,GAAG,KAAK,EACT,EAAE,wBAAwB,2CA4D1B"}
1
+ {"version":3,"file":"search-algolia.d.ts","names":[],"sources":["../../../src/components/dialog/search-algolia.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAuBiB,wBAAA,SAAiC,gBAAA,CAAA;iBACjC;UACP,gBAAA,CAAA;EAFO,MAAA,CAAA,EAIN,SAJM;EACA,UAAA,CAAA,EAAA,MAAA;EACP,IAAA,CAAA,EAKD,gBAAA,CAAA,OALC,EAAA;EAEC;;;;AAkBV;EAGC,WAAA,CAAA,EAAA,OAAA;EACA;;;;;EAKA,UAAA,CAAA,EAAA,OAAA;;AAEyB,iBATH,mBAAA,CASG;EAAA,aAAA;EAAA,IAAA;EAAA,UAAA;EAAA,WAAA;EAAA,UAAA;EAAA,KAAA;EAAA,MAAA;EAAA,GAAA;AAAA,CAAA,EAAxB,wBAAwB,CAAA,EAAA,mBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,35 +1,68 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useDocsSearch, } from 'fumadocs-core/search/client';
4
- import { useMemo, useState } from 'react';
5
- import { useOnChange } from 'fumadocs-core/utils/use-on-change';
6
- import { SearchDialog, SearchDialogClose, SearchDialogContent, SearchDialogFooter, SearchDialogHeader, SearchDialogIcon, SearchDialogInput, SearchDialogList, SearchDialogOverlay, TagsList, TagsListItem, } from './search.js';
7
- import { useI18n } from '../../contexts/i18n.js';
8
- export default function AlgoliaSearchDialog({ searchOptions, tags = [], defaultTag, showAlgolia = false, allowClear = false, links = [], footer, ...props }) {
9
- const [tag, setTag] = useState(defaultTag);
10
- const { locale } = useI18n();
11
- const { search, setSearch, query } = useDocsSearch({
12
- type: 'algolia',
13
- tag,
14
- locale,
15
- ...searchOptions,
16
- });
17
- const defaultItems = useMemo(() => {
18
- if (links.length === 0)
19
- return null;
20
- return links.map(([name, link]) => ({
21
- type: 'page',
22
- id: name,
23
- content: name,
24
- url: link,
25
- }));
26
- }, [links]);
27
- useOnChange(defaultTag, (v) => {
28
- setTag(v);
29
- });
30
- const label = showAlgolia && _jsx(AlgoliaTitle, {});
31
- return (_jsxs(SearchDialog, { search: search, onSearchChange: setSearch, isLoading: query.isLoading, ...props, children: [_jsx(SearchDialogOverlay, {}), _jsxs(SearchDialogContent, { children: [_jsxs(SearchDialogHeader, { children: [_jsx(SearchDialogIcon, {}), _jsx(SearchDialogInput, {}), _jsx(SearchDialogClose, {})] }), _jsx(SearchDialogList, { items: query.data !== 'empty' ? query.data : defaultItems })] }), _jsxs(SearchDialogFooter, { children: [tags.length > 0 ? (_jsxs(TagsList, { tag: tag, onTagChange: setTag, allowClear: allowClear, children: [tags.map((tag) => (_jsx(TagsListItem, { value: tag.value, children: tag.name }, tag.value))), label] })) : (label), footer] })] }));
2
+
3
+ import { i18n_exports } from "../../contexts/i18n.js";
4
+ import { SearchDialog, SearchDialogClose, SearchDialogContent, SearchDialogFooter, SearchDialogHeader, SearchDialogIcon, SearchDialogInput, SearchDialogList, SearchDialogOverlay, TagsList, TagsListItem } from "./search.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useMemo, useState } from "react";
7
+ import { useOnChange } from "fumadocs-core/utils/use-on-change";
8
+ import { useDocsSearch } from "fumadocs-core/search/client";
9
+
10
+ //#region src/components/dialog/search-algolia.tsx
11
+ function AlgoliaSearchDialog({ searchOptions, tags = [], defaultTag, showAlgolia = false, allowClear = false, links = [], footer, ...props }) {
12
+ const [tag, setTag] = useState(defaultTag);
13
+ const { locale } = (0, i18n_exports.useI18n)();
14
+ const { search, setSearch, query } = useDocsSearch({
15
+ type: "algolia",
16
+ tag,
17
+ locale,
18
+ ...searchOptions
19
+ });
20
+ const defaultItems = useMemo(() => {
21
+ if (links.length === 0) return null;
22
+ return links.map(([name, link]) => ({
23
+ type: "page",
24
+ id: name,
25
+ content: name,
26
+ url: link
27
+ }));
28
+ }, [links]);
29
+ useOnChange(defaultTag, (v) => {
30
+ setTag(v);
31
+ });
32
+ const label = showAlgolia && /* @__PURE__ */ jsx(AlgoliaTitle, {});
33
+ return /* @__PURE__ */ jsxs(SearchDialog, {
34
+ search,
35
+ onSearchChange: setSearch,
36
+ isLoading: query.isLoading,
37
+ ...props,
38
+ children: [
39
+ /* @__PURE__ */ jsx(SearchDialogOverlay, {}),
40
+ /* @__PURE__ */ jsxs(SearchDialogContent, { children: [/* @__PURE__ */ jsxs(SearchDialogHeader, { children: [
41
+ /* @__PURE__ */ jsx(SearchDialogIcon, {}),
42
+ /* @__PURE__ */ jsx(SearchDialogInput, {}),
43
+ /* @__PURE__ */ jsx(SearchDialogClose, {})
44
+ ] }), /* @__PURE__ */ jsx(SearchDialogList, { items: query.data !== "empty" ? query.data : defaultItems })] }),
45
+ /* @__PURE__ */ jsxs(SearchDialogFooter, { children: [tags.length > 0 ? /* @__PURE__ */ jsxs(TagsList, {
46
+ tag,
47
+ onTagChange: setTag,
48
+ allowClear,
49
+ children: [tags.map((tag$1) => /* @__PURE__ */ jsx(TagsListItem, {
50
+ value: tag$1.value,
51
+ children: tag$1.name
52
+ }, tag$1.value)), label]
53
+ }) : label, footer] })
54
+ ]
55
+ });
32
56
  }
33
57
  function AlgoliaTitle() {
34
- return (_jsx("a", { href: "https://algolia.com", rel: "noreferrer noopener", className: "ms-auto text-xs text-fd-muted-foreground", children: "Search powered by Algolia" }));
58
+ return /* @__PURE__ */ jsx("a", {
59
+ href: "https://algolia.com",
60
+ rel: "noreferrer noopener",
61
+ className: "ms-auto text-xs text-fd-muted-foreground",
62
+ children: "Search powered by Algolia"
63
+ });
35
64
  }
65
+
66
+ //#endregion
67
+ export { AlgoliaSearchDialog as default };
68
+ //# sourceMappingURL=search-algolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-algolia.js","names":["tag"],"sources":["../../../src/components/dialog/search-algolia.tsx"],"sourcesContent":["'use client';\n\nimport { type AlgoliaOptions, useDocsSearch } from 'fumadocs-core/search/client';\nimport { type ReactNode, useMemo, useState } from 'react';\nimport { useOnChange } from 'fumadocs-core/utils/use-on-change';\nimport {\n SearchDialog,\n SearchDialogClose,\n SearchDialogContent,\n SearchDialogFooter,\n SearchDialogHeader,\n SearchDialogIcon,\n SearchDialogInput,\n SearchDialogList,\n SearchDialogOverlay,\n type SharedProps,\n TagsList,\n TagsListItem,\n} from './search';\nimport type { SortedResult } from 'fumadocs-core/search';\nimport type { SearchLink, TagItem } from '@/contexts/search';\nimport { useI18n } from '@/contexts/i18n';\n\nexport interface AlgoliaSearchDialogProps extends SharedProps {\n searchOptions: AlgoliaOptions;\n links?: SearchLink[];\n\n footer?: ReactNode;\n\n defaultTag?: string;\n tags?: TagItem[];\n\n /**\n * Add the \"Powered by Algolia\" label, this is useful for free tier users\n *\n * @defaultValue false\n */\n showAlgolia?: boolean;\n\n /**\n * Allow to clear tag filters\n *\n * @defaultValue false\n */\n allowClear?: boolean;\n}\n\nexport default function AlgoliaSearchDialog({\n searchOptions,\n tags = [],\n defaultTag,\n showAlgolia = false,\n allowClear = false,\n links = [],\n footer,\n ...props\n}: AlgoliaSearchDialogProps) {\n const [tag, setTag] = useState(defaultTag);\n const { locale } = useI18n();\n const { search, setSearch, query } = useDocsSearch({\n type: 'algolia',\n tag,\n locale,\n ...searchOptions,\n });\n const defaultItems = useMemo<SortedResult[] | null>(() => {\n if (links.length === 0) return null;\n return links.map(([name, link]) => ({\n type: 'page',\n id: name,\n content: name,\n url: link,\n }));\n }, [links]);\n\n useOnChange(defaultTag, (v) => {\n setTag(v);\n });\n\n const label = showAlgolia && <AlgoliaTitle />;\n\n return (\n <SearchDialog search={search} onSearchChange={setSearch} isLoading={query.isLoading} {...props}>\n <SearchDialogOverlay />\n <SearchDialogContent>\n <SearchDialogHeader>\n <SearchDialogIcon />\n <SearchDialogInput />\n <SearchDialogClose />\n </SearchDialogHeader>\n <SearchDialogList items={query.data !== 'empty' ? query.data : defaultItems} />\n </SearchDialogContent>\n <SearchDialogFooter>\n {tags.length > 0 ? (\n <TagsList tag={tag} onTagChange={setTag} allowClear={allowClear}>\n {tags.map((tag) => (\n <TagsListItem key={tag.value} value={tag.value}>\n {tag.name}\n </TagsListItem>\n ))}\n {label}\n </TagsList>\n ) : (\n label\n )}\n {footer}\n </SearchDialogFooter>\n </SearchDialog>\n );\n}\n\nfunction AlgoliaTitle() {\n return (\n <a\n href=\"https://algolia.com\"\n rel=\"noreferrer noopener\"\n className=\"ms-auto text-xs text-fd-muted-foreground\"\n >\n Search powered by Algolia\n </a>\n );\n}\n"],"mappings":";;;;;;;;;;AA+CA,SAAwB,oBAAoB,EAC1C,eACA,OAAO,EAAE,EACT,YACA,cAAc,OACd,aAAa,OACb,QAAQ,EAAE,EACV,QACA,GAAG,SACwB;CAC3B,MAAM,CAAC,KAAK,UAAU,SAAS,WAAW;CAC1C,MAAM,EAAE,sCAAoB;CAC5B,MAAM,EAAE,QAAQ,WAAW,UAAU,cAAc;EACjD,MAAM;EACN;EACA;EACA,GAAG;EACJ,CAAC;CACF,MAAM,eAAe,cAAqC;AACxD,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,SAAO,MAAM,KAAK,CAAC,MAAM,WAAW;GAClC,MAAM;GACN,IAAI;GACJ,SAAS;GACT,KAAK;GACN,EAAE;IACF,CAAC,MAAM,CAAC;AAEX,aAAY,aAAa,MAAM;AAC7B,SAAO,EAAE;GACT;CAEF,MAAM,QAAQ,eAAe,oBAAC,iBAAe;AAE7C,QACE,qBAAC;EAAqB;EAAQ,gBAAgB;EAAW,WAAW,MAAM;EAAW,GAAI;;GACvF,oBAAC,wBAAsB;GACvB,qBAAC,kCACC,qBAAC;IACC,oBAAC,qBAAmB;IACpB,oBAAC,sBAAoB;IACrB,oBAAC,sBAAoB;OACF,EACrB,oBAAC,oBAAiB,OAAO,MAAM,SAAS,UAAU,MAAM,OAAO,eAAgB,IAC3D;GACtB,qBAAC,iCACE,KAAK,SAAS,IACb,qBAAC;IAAc;IAAK,aAAa;IAAoB;eAClD,KAAK,KAAK,UACT,oBAAC;KAA6B,OAAOA,MAAI;eACtCA,MAAI;OADYA,MAAI,MAER,CACf,EACD;KACQ,GAEX,OAED,UACkB;;GACR;;AAInB,SAAS,eAAe;AACtB,QACE,oBAAC;EACC,MAAK;EACL,KAAI;EACJ,WAAU;YACX;GAEG"}