fumadocs-ui 16.2.4 → 16.3.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 (150) hide show
  1. package/README.md +1 -1
  2. package/css/black.css +1 -39
  3. package/css/catppuccin.css +1 -49
  4. package/css/dusk.css +1 -47
  5. package/css/neutral.css +1 -7
  6. package/css/ocean.css +1 -48
  7. package/css/preset.css +1 -215
  8. package/css/purple.css +1 -39
  9. package/css/shadcn.css +1 -35
  10. package/css/solar.css +1 -75
  11. package/css/vitepress.css +1 -77
  12. package/dist/components/accordion.d.ts +5 -6
  13. package/dist/components/accordion.d.ts.map +1 -1
  14. package/dist/components/accordion.js +12 -14
  15. package/dist/components/banner.js +2 -2
  16. package/dist/components/callout.d.ts.map +1 -1
  17. package/dist/components/callout.js +2 -2
  18. package/dist/components/card.js +1 -1
  19. package/dist/components/codeblock.d.ts +1 -1
  20. package/dist/components/codeblock.d.ts.map +1 -1
  21. package/dist/components/codeblock.js +5 -5
  22. package/dist/components/dialog/search.js +2 -2
  23. package/dist/components/dynamic-codeblock.js +1 -1
  24. package/dist/components/files.js +2 -2
  25. package/dist/components/github-info.js +2 -2
  26. package/dist/components/heading.js +2 -2
  27. package/dist/components/inline-toc.js +2 -2
  28. package/dist/components/sidebar/base.d.ts +2 -2
  29. package/dist/components/sidebar/base.d.ts.map +1 -1
  30. package/dist/components/sidebar/base.js +4 -4
  31. package/dist/components/sidebar/link-item.d.ts +1 -1
  32. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  33. package/dist/components/sidebar/tabs/dropdown.d.ts +1 -0
  34. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  35. package/dist/components/sidebar/tabs/dropdown.js +8 -3
  36. package/dist/components/tabs.d.ts +1 -1
  37. package/dist/components/tabs.d.ts.map +1 -1
  38. package/dist/components/tabs.js +2 -2
  39. package/dist/components/toc/clerk.d.ts +1 -2
  40. package/dist/components/toc/clerk.d.ts.map +1 -1
  41. package/dist/components/toc/clerk.js +1 -76
  42. package/dist/components/toc/default.d.ts +1 -2
  43. package/dist/components/toc/default.d.ts.map +1 -1
  44. package/dist/components/toc/default.js +1 -19
  45. package/dist/components/toc/index.d.ts +1 -10
  46. package/dist/components/toc/index.d.ts.map +1 -1
  47. package/dist/components/toc/index.js +1 -64
  48. package/dist/components/type-table.js +2 -2
  49. package/dist/components/ui/accordion.d.ts +8 -0
  50. package/dist/components/ui/accordion.d.ts.map +1 -0
  51. package/dist/components/ui/accordion.js +20 -0
  52. package/dist/components/ui/button.d.ts +1 -1
  53. package/dist/components/ui/collapsible.d.ts +7 -4
  54. package/dist/components/ui/collapsible.d.ts.map +1 -1
  55. package/dist/components/ui/collapsible.js +6 -7
  56. package/dist/components/ui/navigation-menu.d.ts +2 -0
  57. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  58. package/dist/components/ui/navigation-menu.js +1 -1
  59. package/dist/components/ui/popover.js +1 -1
  60. package/dist/components/ui/scroll-area.d.ts +5 -4
  61. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  62. package/dist/components/ui/scroll-area.js +8 -8
  63. package/dist/components/{tabs.unstyled.d.ts → ui/tabs.d.ts} +1 -1
  64. package/dist/components/ui/tabs.d.ts.map +1 -0
  65. package/dist/components/{tabs.unstyled.js → ui/tabs.js} +1 -1
  66. package/dist/contexts/i18n.d.ts +1 -29
  67. package/dist/contexts/i18n.d.ts.map +1 -1
  68. package/dist/contexts/i18n.js +1 -23
  69. package/dist/contexts/search.d.ts +1 -60
  70. package/dist/contexts/search.d.ts.map +1 -1
  71. package/dist/contexts/search.js +1 -58
  72. package/dist/contexts/tree.d.ts +1 -14
  73. package/dist/contexts/tree.d.ts.map +1 -1
  74. package/dist/contexts/tree.js +1 -31
  75. package/dist/i18n.d.ts +1 -14
  76. package/dist/i18n.d.ts.map +1 -1
  77. package/dist/i18n.js +1 -16
  78. package/dist/layouts/docs/client.d.ts.map +1 -1
  79. package/dist/layouts/docs/client.js +3 -3
  80. package/dist/layouts/docs/index.js +4 -4
  81. package/dist/layouts/docs/page/client.js +6 -6
  82. package/dist/layouts/docs/page/index.js +2 -2
  83. package/dist/layouts/docs/sidebar.d.ts +1 -1
  84. package/dist/layouts/docs/sidebar.js +4 -4
  85. package/dist/layouts/home/client.d.ts +1 -1
  86. package/dist/layouts/home/client.js +4 -4
  87. package/dist/layouts/home/index.js +1 -1
  88. package/dist/layouts/home/navbar.d.ts +1 -1
  89. package/dist/layouts/home/navbar.d.ts.map +1 -1
  90. package/dist/layouts/home/navbar.js +1 -1
  91. package/dist/layouts/notebook/client.d.ts +3 -3
  92. package/dist/layouts/notebook/client.d.ts.map +1 -1
  93. package/dist/layouts/notebook/client.js +5 -5
  94. package/dist/layouts/notebook/index.js +4 -4
  95. package/dist/layouts/notebook/page/client.js +6 -6
  96. package/dist/layouts/notebook/page/index.js +2 -2
  97. package/dist/layouts/notebook/sidebar.d.ts +1 -1
  98. package/dist/layouts/notebook/sidebar.js +2 -2
  99. package/dist/layouts/shared/index.d.ts +2 -2
  100. package/dist/layouts/shared/index.d.ts.map +1 -1
  101. package/dist/layouts/shared/language-toggle.js +1 -1
  102. package/dist/layouts/shared/search-toggle.js +2 -2
  103. package/dist/layouts/shared/theme-toggle.js +2 -2
  104. package/dist/mdx.js +1 -1
  105. package/dist/mdx.server.d.ts +1 -1
  106. package/dist/mdx.server.d.ts.map +1 -1
  107. package/dist/mdx.server.js +1 -14
  108. package/dist/og.d.ts +1 -14
  109. package/dist/og.d.ts.map +1 -1
  110. package/dist/og.js +1 -45
  111. package/dist/page.d.ts.map +1 -1
  112. package/dist/page.js +1 -1
  113. package/dist/provider/base.d.ts +3 -22
  114. package/dist/provider/base.d.ts.map +1 -1
  115. package/dist/provider/base.js +4 -34
  116. package/dist/style.css +64 -131
  117. package/dist/utils/use-copy-button.d.ts +1 -2
  118. package/dist/utils/use-copy-button.d.ts.map +1 -1
  119. package/dist/utils/use-copy-button.js +1 -27
  120. package/dist/utils/use-footer-items.d.ts +1 -5
  121. package/dist/utils/use-footer-items.d.ts.map +1 -1
  122. package/dist/utils/use-footer-items.js +1 -27
  123. package/dist/utils/use-is-scroll-top.d.ts +1 -3
  124. package/dist/utils/use-is-scroll-top.d.ts.map +1 -1
  125. package/dist/utils/use-is-scroll-top.js +1 -17
  126. package/package.json +12 -25
  127. package/css/colors/index.css +0 -51
  128. package/css/shiki.css +0 -90
  129. package/dist/components/tabs.unstyled.d.ts.map +0 -1
  130. package/dist/icons.d.ts +0 -49
  131. package/dist/icons.d.ts.map +0 -1
  132. package/dist/icons.js +0 -282
  133. package/dist/layouts/shared/link-item.d.ts +0 -78
  134. package/dist/layouts/shared/link-item.d.ts.map +0 -1
  135. package/dist/layouts/shared/link-item.js +0 -12
  136. package/dist/theme/typography/index.d.ts +0 -10
  137. package/dist/theme/typography/index.d.ts.map +0 -1
  138. package/dist/theme/typography/index.js +0 -137
  139. package/dist/theme/typography/styles.d.ts +0 -93
  140. package/dist/theme/typography/styles.d.ts.map +0 -1
  141. package/dist/theme/typography/styles.js +0 -433
  142. package/dist/utils/cn.d.ts +0 -2
  143. package/dist/utils/cn.d.ts.map +0 -1
  144. package/dist/utils/cn.js +0 -1
  145. package/dist/utils/is-active.d.ts +0 -4
  146. package/dist/utils/is-active.d.ts.map +0 -1
  147. package/dist/utils/is-active.js +0 -15
  148. package/dist/utils/merge-refs.d.ts +0 -3
  149. package/dist/utils/merge-refs.d.ts.map +0 -1
  150. package/dist/utils/merge-refs.js +0 -12
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as Primitive from '@radix-ui/react-accordion';
4
+ import { ChevronRight } from '@fumadocs/ui/icons';
5
+ import { cn } from '@fumadocs/ui/cn';
6
+ export function Accordion({ className, ...props }) {
7
+ return (_jsx(Primitive.Root, { className: cn('divide-y divide-fd-border overflow-hidden rounded-lg border bg-fd-card', className), ...props }));
8
+ }
9
+ export function AccordionItem({ className, children, ...props }) {
10
+ return (_jsx(Primitive.Item, { className: cn('scroll-m-24', className), ...props, children: children }));
11
+ }
12
+ export function AccordionHeader({ className, children, ...props }) {
13
+ return (_jsx(Primitive.Header, { className: cn('not-prose flex flex-row items-center text-fd-card-foreground font-medium has-focus-visible:bg-fd-accent', className), ...props, children: children }));
14
+ }
15
+ export function AccordionTrigger({ className, children, ...props }) {
16
+ return (_jsxs(Primitive.Trigger, { className: cn('group flex flex-1 items-center gap-2 px-3 py-2.5 text-start focus-visible:outline-none', className), ...props, children: [_jsx(ChevronRight, { className: "size-4 shrink-0 text-fd-muted-foreground transition-transform duration-200 group-data-[state=open]:rotate-90" }), children] }));
17
+ }
18
+ export function AccordionContent({ className, children, ...props }) {
19
+ return (_jsx(Primitive.Content, { className: cn('overflow-hidden data-[state=closed]:animate-fd-accordion-up data-[state=open]:animate-fd-accordion-down', className), ...props, children: children }));
20
+ }
@@ -2,7 +2,7 @@ import { type VariantProps } from 'class-variance-authority';
2
2
  export declare const buttonVariants: (props?: ({
3
3
  variant?: "primary" | "outline" | "ghost" | "secondary" | null | undefined;
4
4
  color?: "primary" | "outline" | "ghost" | "secondary" | null | undefined;
5
- size?: "sm" | "icon" | "icon-sm" | "icon-xs" | null | undefined;
5
+ size?: "icon" | "sm" | "icon-sm" | "icon-xs" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export type ButtonProps = VariantProps<typeof buttonVariants>;
8
8
  //# sourceMappingURL=button.d.ts.map
@@ -1,6 +1,9 @@
1
- import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
2
- declare const Collapsible: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
3
- declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
4
- declare const CollapsibleContent: import("react").ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
1
+ import * as Primitive from '@radix-ui/react-collapsible';
2
+ declare const Collapsible: import("react").ForwardRefExoticComponent<Primitive.CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<Primitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
4
+ declare const CollapsibleContent: import("react").ForwardRefExoticComponent<Omit<Primitive.CollapsibleContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
5
  export { Collapsible, CollapsibleTrigger, CollapsibleContent };
6
+ export type CollapsibleProps = Primitive.CollapsibleProps;
7
+ export type CollapsibleContentProps = Primitive.CollapsibleContentProps;
8
+ export type CollapsibleTriggerProps = Primitive.CollapsibleTriggerProps;
6
9
  //# sourceMappingURL=collapsible.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAIpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAE9C,QAAA,MAAM,kBAAkB,4IAA0C,CAAC;AAEnE,QAAA,MAAM,kBAAkB,sMAwBtB,CAAC;AAKH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AAIzD,QAAA,MAAM,WAAW,uHAAiB,CAAC;AAEnC,QAAA,MAAM,kBAAkB,iIAA+B,CAAC;AAExD,QAAA,MAAM,kBAAkB,2LAwBtB,CAAC;AAIH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAC1D,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;AACxE,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC"}
@@ -1,18 +1,17 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
3
+ import * as Primitive from '@radix-ui/react-collapsible';
4
4
  import { forwardRef, useEffect, useState } from 'react';
5
- import { cn } from '../../utils/cn.js';
6
- const Collapsible = CollapsiblePrimitive.Root;
7
- const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
5
+ import { cn } from '@fumadocs/ui/cn';
6
+ const Collapsible = Primitive.Root;
7
+ const CollapsibleTrigger = Primitive.CollapsibleTrigger;
8
8
  const CollapsibleContent = forwardRef(({ children, ...props }, ref) => {
9
9
  const [mounted, setMounted] = useState(false);
10
10
  useEffect(() => {
11
11
  setMounted(true);
12
12
  }, []);
13
- return (_jsx(CollapsiblePrimitive.CollapsibleContent, { ref: ref, ...props, className: cn('overflow-hidden', mounted &&
13
+ return (_jsx(Primitive.CollapsibleContent, { ref: ref, ...props, className: cn('overflow-hidden', mounted &&
14
14
  'data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down', props.className), children: children }));
15
15
  });
16
- CollapsibleContent.displayName =
17
- CollapsiblePrimitive.CollapsibleContent.displayName;
16
+ CollapsibleContent.displayName = Primitive.CollapsibleContent.displayName;
18
17
  export { Collapsible, CollapsibleTrigger, CollapsibleContent };
@@ -1,5 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as Primitive from '@radix-ui/react-navigation-menu';
3
+ export type NavigationMenuContentProps = Primitive.NavigationMenuContentProps;
4
+ export type NavigationMenuTriggerProps = Primitive.NavigationMenuTriggerProps;
3
5
  declare const NavigationMenu: React.ForwardRefExoticComponent<Primitive.NavigationMenuProps & React.RefAttributes<HTMLElement>>;
4
6
  declare const NavigationMenuList: React.ForwardRefExoticComponent<Primitive.NavigationMenuListProps & React.RefAttributes<HTMLUListElement>>;
5
7
  declare const NavigationMenuItem: React.ForwardRefExoticComponent<Omit<Primitive.NavigationMenuItemProps & React.RefAttributes<HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/navigation-menu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAC;AAG7D,QAAA,MAAM,cAAc,mGAAiB,CAAC;AAEtC,QAAA,MAAM,kBAAkB,4GAAiB,CAAC;AAE1C,QAAA,MAAM,kBAAkB,2JAWtB,CAAC;AAIH,QAAA,MAAM,qBAAqB,sKAWzB,CAAC;AAGH,QAAA,MAAM,qBAAqB,gKAYzB,CAAC;AAGH,QAAA,MAAM,kBAAkB,6GAAiB,CAAC;AAE1C,QAAA,MAAM,sBAAsB,iKAa1B,CAAC;AAGH,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC"}
1
+ {"version":3,"file":"navigation-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/navigation-menu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,SAAS,MAAM,iCAAiC,CAAC;AAG7D,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAC,0BAA0B,CAAC;AAC9E,MAAM,MAAM,0BAA0B,GAAG,SAAS,CAAC,0BAA0B,CAAC;AAE9E,QAAA,MAAM,cAAc,mGAAiB,CAAC;AAEtC,QAAA,MAAM,kBAAkB,4GAAiB,CAAC;AAE1C,QAAA,MAAM,kBAAkB,2JAWtB,CAAC;AAIH,QAAA,MAAM,qBAAqB,sKAWzB,CAAC;AAGH,QAAA,MAAM,qBAAqB,gKAYzB,CAAC;AAGH,QAAA,MAAM,kBAAkB,6GAAiB,CAAC;AAE1C,QAAA,MAAM,sBAAsB,iKAa1B,CAAC;AAGH,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import * as Primitive from '@radix-ui/react-navigation-menu';
5
- import { cn } from '../../utils/cn.js';
5
+ import { cn } from '@fumadocs/ui/cn';
6
6
  const NavigationMenu = Primitive.Root;
7
7
  const NavigationMenuList = Primitive.List;
8
8
  const NavigationMenuItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(Primitive.NavigationMenuItem, { ref: ref, className: cn('list-none', className), ...props, children: children })));
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as PopoverPrimitive from '@radix-ui/react-popover';
4
4
  import * as React from 'react';
5
- import { cn } from '../../utils/cn.js';
5
+ import { cn } from '@fumadocs/ui/cn';
6
6
  const Popover = PopoverPrimitive.Root;
7
7
  const PopoverTrigger = PopoverPrimitive.Trigger;
8
8
  const PopoverContent = React.forwardRef(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, side: "bottom", className: cn('z-50 origin-(--radix-popover-content-transform-origin) overflow-y-auto max-h-(--radix-popover-content-available-height) min-w-[240px] max-w-[98vw] rounded-xl border bg-fd-popover/60 backdrop-blur-lg p-2 text-sm text-fd-popover-foreground shadow-lg focus-visible:outline-none data-[state=closed]:animate-fd-popover-out data-[state=open]:animate-fd-popover-in', className), ...props }) })));
@@ -1,7 +1,8 @@
1
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
1
+ import * as Primitive from '@radix-ui/react-scroll-area';
2
2
  import * as React from 'react';
3
- declare const ScrollArea: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
- declare const ScrollViewport: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaViewportProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
- declare const ScrollBar: React.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const ScrollArea: React.ForwardRefExoticComponent<Omit<Primitive.ScrollAreaProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const ScrollViewport: React.ForwardRefExoticComponent<Omit<Primitive.ScrollAreaViewportProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const ScrollBar: React.ForwardRefExoticComponent<Omit<Primitive.ScrollAreaScrollbarProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
6
  export { ScrollArea, ScrollBar, ScrollViewport };
7
+ export type ScrollAreaProps = Primitive.ScrollAreaProps;
7
8
  //# sourceMappingURL=scroll-area.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/ui/scroll-area.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,UAAU,+JAcd,CAAC;AAIH,QAAA,MAAM,cAAc,uKAWlB,CAAC;AAIH,QAAA,MAAM,SAAS,wKAiBb,CAAC;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/ui/scroll-area.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,UAAU,qJAcd,CAAC;AAIH,QAAA,MAAM,cAAc,6JAWlB,CAAC;AAIH,QAAA,MAAM,SAAS,8JAiBb,CAAC;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
2
+ import * as Primitive from '@radix-ui/react-scroll-area';
3
3
  import * as React from 'react';
4
- import { cn } from '../../utils/cn.js';
5
- const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(ScrollAreaPrimitive.Root, { ref: ref, type: "scroll", className: cn('overflow-hidden', className), ...props, children: [children, _jsx(ScrollAreaPrimitive.Corner, {}), _jsx(ScrollBar, { orientation: "vertical" })] })));
6
- ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
7
- const ScrollViewport = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(ScrollAreaPrimitive.Viewport, { ref: ref, className: cn('size-full rounded-[inherit]', className), ...props, children: children })));
8
- ScrollViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
9
- const ScrollBar = React.forwardRef(({ className, orientation = 'vertical', ...props }, ref) => (_jsx(ScrollAreaPrimitive.Scrollbar, { ref: ref, orientation: orientation, className: cn('flex select-none data-[state=hidden]:animate-fd-fade-out', orientation === 'vertical' && 'h-full w-1.5', orientation === 'horizontal' && 'h-1.5 flex-col', className), ...props, children: _jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-fd-border" }) })));
10
- ScrollBar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
4
+ import { cn } from '@fumadocs/ui/cn';
5
+ const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(Primitive.Root, { ref: ref, type: "scroll", className: cn('overflow-hidden', className), ...props, children: [children, _jsx(Primitive.Corner, {}), _jsx(ScrollBar, { orientation: "vertical" })] })));
6
+ ScrollArea.displayName = Primitive.Root.displayName;
7
+ const ScrollViewport = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(Primitive.Viewport, { ref: ref, className: cn('size-full rounded-[inherit]', className), ...props, children: children })));
8
+ ScrollViewport.displayName = Primitive.Viewport.displayName;
9
+ const ScrollBar = React.forwardRef(({ className, orientation = 'vertical', ...props }, ref) => (_jsx(Primitive.Scrollbar, { ref: ref, orientation: orientation, className: cn('flex select-none data-[state=hidden]:animate-fd-fade-out', orientation === 'vertical' && 'h-full w-1.5', orientation === 'horizontal' && 'h-1.5 flex-col', className), ...props, children: _jsx(Primitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-fd-border" }) })));
10
+ ScrollBar.displayName = Primitive.Scrollbar.displayName;
11
11
  export { ScrollArea, ScrollBar, ScrollViewport };
@@ -18,4 +18,4 @@ export declare const TabsList: import("react").ForwardRefExoticComponent<Primiti
18
18
  export declare const TabsTrigger: import("react").ForwardRefExoticComponent<Primitive.TabsTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
19
19
  export declare function Tabs({ ref, groupId, persist, updateAnchor, defaultValue, value: _value, onValueChange: _onValueChange, ...props }: TabsProps): import("react/jsx-runtime").JSX.Element;
20
20
  export declare function TabsContent({ value, ...props }: ComponentProps<typeof Primitive.TabsContent>): import("react/jsx-runtime").JSX.Element;
21
- //# sourceMappingURL=tabs.unstyled.d.ts.map
21
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAQpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAMlD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC;IACtE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAYD,eAAO,MAAM,QAAQ,oHAAqB,CAAC;AAE3C,eAAO,MAAM,WAAW,0HAAwB,CAAC;AAEjD,wBAAgB,IAAI,CAAC,EACnB,GAAG,EACH,OAAO,EACP,OAAe,EACf,YAAoB,EACpB,YAAY,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,cAAc,EAC7B,GAAG,KAAK,EACT,EAAE,SAAS,2CAqEX;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,WAAW,CAAC,2CAY9C"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, use, useEffectEvent, useLayoutEffect, useMemo, useRef, useState, } from 'react';
4
4
  import * as Primitive from '@radix-ui/react-tabs';
5
- import { mergeRefs } from '../utils/merge-refs.js';
5
+ import { mergeRefs } from '@fumadocs/ui/merge-refs';
6
6
  const listeners = new Map();
7
7
  const TabsContext = createContext(null);
8
8
  function useTabContext() {
@@ -1,30 +1,2 @@
1
- export interface Translations {
2
- search: string;
3
- searchNoResult: string;
4
- toc: string;
5
- tocNoHeadings: string;
6
- lastUpdate: string;
7
- chooseLanguage: string;
8
- nextPage: string;
9
- previousPage: string;
10
- chooseTheme: string;
11
- editOnGithub: string;
12
- }
13
- export interface LocaleItem {
14
- name: string;
15
- locale: string;
16
- }
17
- interface I18nContextType {
18
- locale?: string;
19
- onChange?: (v: string) => void;
20
- text: Translations;
21
- locales?: LocaleItem[];
22
- }
23
- export declare const defaultTranslations: Translations;
24
- export declare const I18nContext: import("react").Context<I18nContextType>;
25
- export declare function I18nLabel(props: {
26
- label: keyof Translations;
27
- }): string;
28
- export declare function useI18n(): I18nContextType;
29
- export {};
1
+ export * from '@fumadocs/ui/contexts/i18n';
30
2
  //# sourceMappingURL=i18n.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/contexts/i18n.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IAEvB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IAEtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,YAWjC,CAAC;AAEF,eAAO,MAAM,WAAW,0CAEtB,CAAC;AAEH,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,YAAY,CAAA;CAAE,GAAG,MAAM,CAItE;AAED,wBAAgB,OAAO,IAAI,eAAe,CAEzC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/contexts/i18n.tsx"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC"}
@@ -1,24 +1,2 @@
1
1
  'use client';
2
- import { createContext, useContext } from 'react';
3
- export const defaultTranslations = {
4
- search: 'Search',
5
- searchNoResult: 'No results found',
6
- toc: 'On this page',
7
- tocNoHeadings: 'No Headings',
8
- lastUpdate: 'Last updated on',
9
- chooseLanguage: 'Choose a language',
10
- nextPage: 'Next Page',
11
- previousPage: 'Previous Page',
12
- chooseTheme: 'Theme',
13
- editOnGithub: 'Edit on GitHub',
14
- };
15
- export const I18nContext = createContext({
16
- text: defaultTranslations,
17
- });
18
- export function I18nLabel(props) {
19
- const { text } = useI18n();
20
- return text[props.label];
21
- }
22
- export function useI18n() {
23
- return useContext(I18nContext);
24
- }
2
+ export * from '@fumadocs/ui/contexts/i18n';
@@ -1,61 +1,2 @@
1
- import { type ComponentType, type ReactNode } from 'react';
2
- interface HotKey {
3
- display: ReactNode;
4
- /**
5
- * Key code or a function determining whether the key is pressed.
6
- */
7
- key: string | ((e: KeyboardEvent) => boolean);
8
- }
9
- export interface SharedProps {
10
- open: boolean;
11
- onOpenChange: (open: boolean) => void;
12
- }
13
- export type SearchLink = [name: string, href: string];
14
- export interface TagItem {
15
- name: string;
16
- value: string;
17
- }
18
- export interface SearchProviderProps {
19
- /**
20
- * Preload search dialog before opening it
21
- *
22
- * @defaultValue `true`
23
- */
24
- preload?: boolean;
25
- /**
26
- * Custom links to be displayed if search is empty
27
- */
28
- links?: SearchLink[];
29
- /**
30
- * Hotkeys for triggering search dialog
31
- *
32
- * @defaultValue Meta/Ctrl + K
33
- */
34
- hotKey?: HotKey[];
35
- /**
36
- * Replace default search dialog, allowing you to use other solutions such as Algolia Search
37
- *
38
- * It receives the `open` and `onOpenChange` prop, can be lazy loaded with `next/dynamic`
39
- */
40
- SearchDialog: ComponentType<SharedProps>;
41
- /**
42
- * Additional props to the dialog
43
- */
44
- options?: Partial<SharedProps & Record<string, unknown>>;
45
- children?: ReactNode;
46
- }
47
- interface SearchContextType {
48
- enabled: boolean;
49
- hotKey: HotKey[];
50
- setOpenSearch: (value: boolean) => void;
51
- }
52
- export declare function useSearchContext(): SearchContextType;
53
- export declare function SearchProvider({ SearchDialog, children, preload, options, hotKey, links, }: SearchProviderProps): import("react/jsx-runtime").JSX.Element;
54
- /**
55
- * Show children only when search is enabled via React Context
56
- */
57
- export declare function SearchOnly({ children }: {
58
- children: ReactNode;
59
- }): ReactNode;
60
- export {};
1
+ export * from '@fumadocs/ui/contexts/search';
61
2
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/contexts/search.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAEf,UAAU,MAAM;IACd,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;;OAIG;IACH,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAQD,wBAAgB,gBAAgB,IAAI,iBAAiB,CAEpD;AAcD,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,QAAQ,EACR,OAAc,EACd,OAAO,EACP,MASC,EACD,KAAK,GACN,EAAE,mBAAmB,2CA2CrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,aAI/D"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/contexts/search.tsx"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAC"}
@@ -1,59 +1,2 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useMemo, useState, createContext, use, useEffectEvent, } from 'react';
4
- const SearchContext = createContext({
5
- enabled: false,
6
- hotKey: [],
7
- setOpenSearch: () => undefined,
8
- });
9
- export function useSearchContext() {
10
- return use(SearchContext);
11
- }
12
- function MetaOrControl() {
13
- const [key, setKey] = useState('⌘');
14
- useEffect(() => {
15
- const isWindows = window.navigator.userAgent.includes('Windows');
16
- if (isWindows)
17
- setKey('Ctrl');
18
- }, []);
19
- return key;
20
- }
21
- export function SearchProvider({ SearchDialog, children, preload = true, options, hotKey = [
22
- {
23
- key: (e) => e.metaKey || e.ctrlKey,
24
- display: _jsx(MetaOrControl, {}),
25
- },
26
- {
27
- key: 'k',
28
- display: 'K',
29
- },
30
- ], links, }) {
31
- const [isOpen, setIsOpen] = useState(preload ? false : undefined);
32
- const onKeyDown = useEffectEvent((e) => {
33
- if (hotKey.every((v) => typeof v.key === 'string' ? e.key === v.key : v.key(e))) {
34
- setIsOpen((open) => !open);
35
- e.preventDefault();
36
- }
37
- });
38
- useEffect(() => {
39
- window.addEventListener('keydown', onKeyDown);
40
- return () => {
41
- window.removeEventListener('keydown', onKeyDown);
42
- };
43
- }, [hotKey]);
44
- return (_jsxs(SearchContext, { value: useMemo(() => ({
45
- enabled: true,
46
- hotKey,
47
- setOpenSearch: setIsOpen,
48
- }), [hotKey]), children: [isOpen !== undefined && (_jsx(SearchDialog, { open: isOpen, onOpenChange: setIsOpen,
49
- // @ts-expect-error -- insert prop for official UIs
50
- links: links, ...options })), children] }));
51
- }
52
- /**
53
- * Show children only when search is enabled via React Context
54
- */
55
- export function SearchOnly({ children }) {
56
- const search = useSearchContext();
57
- if (search.enabled)
58
- return children;
59
- }
2
+ export * from '@fumadocs/ui/contexts/search';
@@ -1,15 +1,2 @@
1
- import type * as PageTree from 'fumadocs-core/page-tree';
2
- import { type ReactNode } from 'react';
3
- type MakeRequired<O, K extends keyof O> = Omit<O, K> & Pick<Required<O>, K>;
4
- interface TreeContextType {
5
- root: MakeRequired<PageTree.Root | PageTree.Folder, '$id'>;
6
- full: PageTree.Root;
7
- }
8
- export declare function TreeContextProvider({ tree: rawTree, children, }: {
9
- tree: PageTree.Root;
10
- children: ReactNode;
11
- }): import("react/jsx-runtime").JSX.Element;
12
- export declare function useTreePath(): PageTree.Node[];
13
- export declare function useTreeContext(): TreeContextType;
14
- export {};
1
+ export * from '@fumadocs/ui/contexts/tree';
15
2
  //# sourceMappingURL=tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/contexts/tree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,SAAS,EAAuC,MAAM,OAAO,CAAC;AAG5E,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,UAAU,eAAe;IACvB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3D,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;CACrB;AAKD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EAAE,OAAO,EACb,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CA8BA;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAE7C;AAED,wBAAgB,cAAc,IAAI,eAAe,CAMhD"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/contexts/tree.tsx"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC"}
@@ -1,32 +1,2 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { usePathname } from 'fumadocs-core/framework';
4
- import { useMemo, useRef, createContext, use } from 'react';
5
- import { searchPath } from 'fumadocs-core/breadcrumb';
6
- const TreeContext = createContext(null);
7
- const PathContext = createContext([]);
8
- export function TreeContextProvider({ tree: rawTree, children, }) {
9
- const nextIdRef = useRef(0);
10
- const pathname = usePathname();
11
- // I found that object-typed props passed from a RSC will be re-constructed, hence breaking all hooks' dependencies
12
- // using the id here to make sure this never happens
13
- // eslint-disable-next-line react-hooks/exhaustive-deps
14
- const tree = useMemo(() => rawTree, [rawTree.$id ?? rawTree]);
15
- const path = useMemo(() => {
16
- return (searchPath(tree.children, pathname) ??
17
- (tree.fallback ? searchPath(tree.fallback.children, pathname) : null) ??
18
- []);
19
- }, [tree, pathname]);
20
- const root = path.findLast((item) => item.type === 'folder' && item.root) ?? tree;
21
- root.$id ?? (root.$id = String(nextIdRef.current++));
22
- return (_jsx(TreeContext, { value: useMemo(() => ({ root, full: tree }), [root, tree]), children: _jsx(PathContext, { value: path, children: children }) }));
23
- }
24
- export function useTreePath() {
25
- return use(PathContext);
26
- }
27
- export function useTreeContext() {
28
- const ctx = use(TreeContext);
29
- if (!ctx)
30
- throw new Error('You must wrap this component under <DocsLayout />');
31
- return ctx;
32
- }
2
+ export * from '@fumadocs/ui/contexts/tree';
package/dist/i18n.d.ts CHANGED
@@ -1,15 +1,2 @@
1
- import type { Translations } from './contexts/i18n.js';
2
- import type { I18nProviderProps } from './provider/base.js';
3
- import type { I18nConfig } from 'fumadocs-core/i18n';
4
- export type { I18nProviderProps, Translations };
5
- export { defaultTranslations } from './contexts/i18n.js';
6
- export declare function defineI18nUI<Languages extends string>(config: I18nConfig<Languages>, options: {
7
- translations: {
8
- [K in Languages]?: Partial<Translations> & {
9
- displayName?: string;
10
- };
11
- };
12
- }): {
13
- provider(locale?: string): I18nProviderProps;
14
- };
1
+ export * from '@fumadocs/ui/i18n';
15
2
  //# sourceMappingURL=i18n.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,YAAY,CAAC,SAAS,SAAS,MAAM,EACnD,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE;IACP,YAAY,EAAE;SACX,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE;KACpE,CAAC;CACH;sBAKkB,MAAM,GAA4B,iBAAiB;EAWvE"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
package/dist/i18n.js CHANGED
@@ -1,16 +1 @@
1
- export { defaultTranslations } from './contexts/i18n.js';
2
- export function defineI18nUI(config, options) {
3
- const { translations } = options;
4
- return {
5
- provider(locale = config.defaultLanguage) {
6
- return {
7
- locale,
8
- translations: translations[locale],
9
- locales: config.languages.map((locale) => ({
10
- locale,
11
- name: translations[locale]?.displayName ?? locale,
12
- })),
13
- };
14
- },
15
- };
16
- }
1
+ export * from '@fumadocs/ui/i18n';
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,aAAa;sBACN,OAAO;SACZ,CAAC;AAEhB,wBAAgB,qBAAqB,CAAC,EACpC,kBAA2B,EAC3B,QAAQ,GACT,EAAE;IACD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAkBA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAQ3D;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CA8BvB;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,2CA6BA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,eAAO,MAAM,aAAa;sBACN,OAAO;SACZ,CAAC;AAEhB,wBAAgB,qBAAqB,CAAC,EACpC,kBAA2B,EAC3B,QAAQ,GACT,EAAE;IACD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAkBA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAQ3D;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CA8BvB;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,2CA6BA"}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, use, useMemo, } from 'react';
4
- import { cn } from '../../utils/cn.js';
4
+ import { cn } from '@fumadocs/ui/cn';
5
5
  import { useSidebar } from '../../components/sidebar/base.js';
6
6
  import { usePathname } from 'fumadocs-core/framework';
7
- import { isTabActive } from '../../utils/is-active.js';
8
7
  import Link from 'fumadocs-core/link';
9
- import { useIsScrollTop } from '../../utils/use-is-scroll-top.js';
8
+ import { isTabActive } from '../../components/sidebar/tabs/dropdown.js';
9
+ import { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';
10
10
  export const LayoutContext = createContext(null);
11
11
  export function LayoutContextProvider({ navTransparentMode = 'none', children, }) {
12
12
  const isTop = useIsScrollTop({ enabled: navTransparentMode === 'top' }) ?? true;
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useMemo, } from 'react';
3
- import { Languages, Sidebar as SidebarIcon } from '../../icons.js';
4
- import { cn } from '../../utils/cn.js';
3
+ import { Languages, Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
4
+ import { cn } from '@fumadocs/ui/cn';
5
5
  import { buttonVariants } from '../../components/ui/button.js';
6
6
  import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarLinkItem, SidebarPageTree, SidebarTrigger, SidebarViewport, } from './sidebar.js';
7
7
  import { resolveLinkItems } from '../../layouts/shared/index.js';
8
- import { LinkItem } from '../../layouts/shared/link-item.js';
8
+ import { LinkItem } from '@fumadocs/ui/link-item';
9
9
  import { LanguageToggle, LanguageToggleText, } from '../../layouts/shared/language-toggle.js';
10
- import { LayoutTabs, LayoutHeader, LayoutBody, LayoutContextProvider, } from './client.js';
10
+ import { LayoutBody, LayoutContextProvider, LayoutHeader, LayoutTabs, } from './client.js';
11
11
  import { TreeContextProvider } from '../../contexts/tree.js';
12
12
  import { ThemeToggle } from '../shared/theme-toggle.js';
13
13
  import Link from 'fumadocs-core/link';
@@ -1,19 +1,19 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Fragment, useEffect, useEffectEvent, createContext, useMemo, useRef, useState, use, } from 'react';
4
- import { ChevronDown, ChevronLeft, ChevronRight } from '../../../icons.js';
3
+ import { createContext, Fragment, use, useEffect, useEffectEvent, useMemo, useRef, useState, } from 'react';
4
+ import { ChevronDown, ChevronLeft, ChevronRight } from '@fumadocs/ui/icons';
5
5
  import Link from 'fumadocs-core/link';
6
- import { cn } from '../../../utils/cn.js';
6
+ import { cn } from '@fumadocs/ui/cn';
7
7
  import { useI18n } from '../../../contexts/i18n.js';
8
8
  import { useTreeContext, useTreePath } from '../../../contexts/tree.js';
9
9
  import { usePathname } from 'fumadocs-core/framework';
10
10
  import { getBreadcrumbItemsFromPath, } from 'fumadocs-core/breadcrumb';
11
- import { isActive } from '../../../utils/is-active.js';
11
+ import { isActive } from '@fumadocs/ui/urls';
12
12
  import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../../../components/ui/collapsible.js';
13
13
  import { useTOCItems } from '../../../components/toc/index.js';
14
14
  import { useActiveAnchor } from 'fumadocs-core/toc';
15
15
  import { LayoutContext } from '../client.js';
16
- import { useFooterItems } from '../../../utils/use-footer-items.js';
16
+ import { useFooterItems } from '@fumadocs/ui/hooks/use-footer-items';
17
17
  const TocPopoverContext = createContext(null);
18
18
  export function PageTOCPopover({ className, children, ...rest }) {
19
19
  const ref = useRef(null);
@@ -44,7 +44,7 @@ export function PageTOCPopoverTrigger({ className, ...props }) {
44
44
  const selected = useMemo(() => items.findIndex((item) => active === item.url.slice(1)), [items, active]);
45
45
  const path = useTreePath().at(-1);
46
46
  const showItem = selected !== -1 && !open;
47
- return (_jsxs(CollapsibleTrigger, { className: cn('flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6', className), "data-toc-popover-trigger": "", ...props, children: [_jsx(ProgressCircle, { value: (selected + 1) / Math.max(1, items.length), max: 1, className: cn('shrink-0', open && 'text-fd-primary') }), _jsxs("span", { className: "grid flex-1 *:my-auto *:row-start-1 *:col-start-1", children: [_jsx("span", { className: cn('truncate transition-all', open && 'text-fd-foreground', showItem && 'opacity-0 -translate-y-full pointer-events-none'), children: path?.name ?? text.toc }), _jsx("span", { className: cn('truncate transition-all', !showItem && 'opacity-0 translate-y-full pointer-events-none'), children: items[selected]?.title })] }), _jsx(ChevronDown, { className: cn('shrink-0 transition-transform mx-0.5', open && 'rotate-180') })] }));
47
+ return (_jsxs(CollapsibleTrigger, { className: cn('flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:size-4 md:px-6', className), "data-toc-popover-trigger": "", ...props, children: [_jsx(ProgressCircle, { value: (selected + 1) / Math.max(1, items.length), max: 1, className: cn('shrink-0', open && 'text-fd-primary') }), _jsxs("span", { className: "grid flex-1 *:my-auto *:row-start-1 *:col-start-1", children: [_jsx("span", { className: cn('truncate transition-[opacity,translate,color]', open && 'text-fd-foreground', showItem && 'opacity-0 -translate-y-full pointer-events-none'), children: path?.name ?? text.toc }), _jsx("span", { className: cn('truncate transition-[opacity,translate]', !showItem && 'opacity-0 translate-y-full pointer-events-none'), children: items[selected]?.title })] }), _jsx(ChevronDown, { className: cn('shrink-0 transition-transform mx-0.5', open && 'rotate-180') })] }));
48
48
  }
49
49
  function clamp(input, min, max) {
50
50
  if (input < min)
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { cn } from '../../../utils/cn.js';
2
+ import { cn } from '@fumadocs/ui/cn';
3
3
  import { buttonVariants } from '../../../components/ui/button.js';
4
- import { Edit, Text } from '../../../icons.js';
4
+ import { Edit, Text } from '@fumadocs/ui/icons';
5
5
  import { I18nLabel } from '../../../contexts/i18n.js';
6
6
  import { PageBreadcrumb, PageFooter, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger, } from './client.js';
7
7
  import * as TocDefault from '../../../components/toc/default.js';
@@ -10,7 +10,7 @@ export declare function SidebarFolderLink({ className, style, ...props }: Compon
10
10
  export declare function SidebarFolderContent({ className, children, ...props }: ComponentProps<typeof Base.SidebarFolderContent>): import("react/jsx-runtime").JSX.Element;
11
11
  export declare const SidebarPageTree: (components: Partial<import("../../components/sidebar/page-tree.js").SidebarPageTreeComponents>) => import("react/jsx-runtime").JSX.Element;
12
12
  export declare const SidebarLinkItem: ({ item, ...props }: import("react").HTMLAttributes<HTMLElement> & {
13
- item: Exclude<import("../shared/index.js").LinkItemType, {
13
+ item: Exclude<import("@fumadocs/ui/link-item").LinkItemType, {
14
14
  type: "icon";
15
15
  }>;
16
16
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as Base from '../../components/sidebar/base.js';
4
- import { cn } from '../../utils/cn.js';
4
+ import { cn } from '@fumadocs/ui/cn';
5
5
  import { useRef } from 'react';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { createPageTreeRenderer } from '../../components/sidebar/page-tree.js';
8
8
  import { createLinkItemRenderer } from '../../components/sidebar/link-item.js';
9
9
  import { buttonVariants } from '../../components/ui/button.js';
10
10
  import { SearchToggle } from '../../layouts/shared/search-toggle.js';
11
- import { Sidebar as SidebarIcon } from '../../icons.js';
12
- import { mergeRefs } from '../../utils/merge-refs.js';
11
+ import { Sidebar as SidebarIcon } from '@fumadocs/ui/icons';
12
+ import { mergeRefs } from '@fumadocs/ui/merge-refs';
13
13
  const itemVariants = cva('relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&_svg]:size-4 [&_svg]:shrink-0', {
14
14
  variants: {
15
15
  variant: {
@@ -35,7 +35,7 @@ export function SidebarContent({ ref: refProp, className, children, ...props })
35
35
  ], ref.current &&
36
36
  (ref.current.getAttribute('data-collapsed') === 'true') !==
37
37
  collapsed &&
38
- 'transition-[width,inset-block,translate,background-color]', className), ...props, ...rest, children: children })] }), _jsxs("div", { "data-sidebar-panel": "", className: cn('fixed flex top-[calc(--spacing(4)+var(--fd-toc-popover-height))] start-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10', (!collapsed || hovered) && 'pointer-events-none opacity-0'), children: [_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
38
+ 'transition-[width,inset-block,translate,background-color]', className), ...props, ...rest, children: children })] }), _jsxs("div", { "data-sidebar-panel": "", className: cn('fixed flex top-[calc(--spacing(4)+var(--fd-docs-row-3))] start-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10', (!collapsed || hovered) && 'pointer-events-none opacity-0'), children: [_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
39
39
  color: 'ghost',
40
40
  size: 'icon-sm',
41
41
  className: 'rounded-lg',