fumadocs-ui 15.6.10 → 15.6.11

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.
@@ -2,4 +2,4 @@ import { type ComponentProps } from 'react';
2
2
  export declare function Navbar(props: ComponentProps<'header'>): import("react/jsx-runtime").JSX.Element;
3
3
  export declare function LayoutBody(props: ComponentProps<'main'>): import("react/jsx-runtime").JSX.Element;
4
4
  export declare function CollapsibleControl(): import("react/jsx-runtime").JSX.Element;
5
- //# sourceMappingURL=docs-client.d.ts.map
5
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/client.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAQ5C,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAgBrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,2CAsBvD;AAED,wBAAgB,kBAAkB,4CA2BjC"}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Sidebar as SidebarIcon } from '../icons.js';
4
- import { cn } from '../utils/cn.js';
5
- import { buttonVariants } from '../components/ui/button.js';
6
- import { useSidebar } from '../contexts/sidebar.js';
7
- import { useNav } from '../contexts/layout.js';
8
- import { SidebarCollapseTrigger } from '../components/layout/sidebar.js';
9
- import { SearchToggle } from '../components/layout/search-toggle.js';
3
+ import { Sidebar as SidebarIcon } from '../../icons.js';
4
+ import { cn } from '../../utils/cn.js';
5
+ import { buttonVariants } from '../../components/ui/button.js';
6
+ import { useSidebar } from '../../contexts/sidebar.js';
7
+ import { useNav } from '../../contexts/layout.js';
8
+ import { SidebarCollapseTrigger } from '../../components/layout/sidebar.js';
9
+ import { SearchToggle } from '../../components/layout/search-toggle.js';
10
10
  export function Navbar(props) {
11
11
  const { isTransparent } = useNav();
12
12
  return (_jsx("header", { id: "nd-subnav", ...props, className: cn('fixed top-(--fd-banner-height) inset-x-0 z-30 flex items-center ps-4 pe-2.5 border-b transition-colors backdrop-blur-sm', !isTransparent && 'bg-fd-background/80', props.className), children: props.children }));
@@ -1,10 +1,10 @@
1
1
  import type { PageTree } from 'fumadocs-core/server';
2
2
  import { type ComponentProps, type HTMLAttributes, type ReactNode } from 'react';
3
- import { SidebarTrigger } from '../components/layout/sidebar.js';
4
- import { type LinkItemType } from '../layouts/links.js';
5
- import { type BaseLayoutProps } from './shared.js';
6
- import { CollapsibleControl, Navbar } from '../layouts/docs-client.js';
7
- import { type SidebarOptions } from '../layouts/docs/shared.js';
3
+ import { SidebarTrigger } from '../../components/layout/sidebar.js';
4
+ import { type LinkItemType } from '../../layouts/links.js';
5
+ import { type BaseLayoutProps } from '../../layouts/shared.js';
6
+ import { CollapsibleControl, Navbar } from '../../layouts/docs/client.js';
7
+ import { type SidebarOptions } from '../../layouts/docs/shared.js';
8
8
  export interface DocsLayoutProps extends BaseLayoutProps {
9
9
  tree: PageTree.Root;
10
10
  sidebar?: SidebarOptions & ComponentProps<'aside'> & {
@@ -18,4 +18,4 @@ export interface DocsLayoutProps extends BaseLayoutProps {
18
18
  }
19
19
  export declare function DocsLayout({ nav: { transparentMode, ...nav }, sidebar: { tabs: sidebarTabs, enabled: sidebarEnabled, ...sidebarProps }, searchToggle, disableThemeSwitch, themeSwitch, i18n, children, ...props }: DocsLayoutProps): import("react/jsx-runtime").JSX.Element;
20
20
  export { CollapsibleControl, Navbar, SidebarTrigger, type LinkItemType };
21
- //# sourceMappingURL=docs.d.ts.map
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAIf,OAAO,EAQL,cAAc,EAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,kBAAkB,CAAC;AAKlE,OAAO,EAAE,kBAAkB,EAAc,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,cAAc,GACtB,cAAc,CAAC,OAAO,CAAC,GAAG;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEJ;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAqB,EAC9B,GAAG,YAAY,EACX,EACN,YAAiB,EACjB,kBAA0B,EAC1B,WAA8C,EAC9C,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,2CA8NjB;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -1,20 +1,20 @@
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';
5
- import { buttonVariants } from '../components/ui/button.js';
6
- import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarContentMobile, SidebarFooter, SidebarHeader, SidebarPageTree, SidebarTrigger, SidebarViewport, } from '../components/layout/sidebar.js';
7
- import { BaseLinkItem, } from '../layouts/links.js';
8
- import { RootToggle } from '../components/layout/root-toggle.js';
9
- import { getLinks } from './shared.js';
10
- import { LanguageToggle, LanguageToggleText, } from '../components/layout/language-toggle.js';
11
- import { CollapsibleControl, LayoutBody, Navbar } from '../layouts/docs-client.js';
12
- import { TreeContextProvider } from '../contexts/tree.js';
13
- import { ThemeToggle } from '../components/layout/theme-toggle.js';
14
- import { getSidebarTabsFromOptions, SidebarLinkItem, } from '../layouts/docs/shared.js';
15
- import { NavProvider } from '../contexts/layout.js';
3
+ import { Languages, Sidebar as SidebarIcon } from '../../icons.js';
4
+ import { cn } from '../../utils/cn.js';
5
+ import { buttonVariants } from '../../components/ui/button.js';
6
+ import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarContentMobile, SidebarFooter, SidebarHeader, SidebarPageTree, SidebarTrigger, SidebarViewport, } from '../../components/layout/sidebar.js';
7
+ import { BaseLinkItem, } from '../../layouts/links.js';
8
+ import { RootToggle } from '../../components/layout/root-toggle.js';
9
+ import { getLinks } from '../../layouts/shared.js';
10
+ import { LanguageToggle, LanguageToggleText, } from '../../components/layout/language-toggle.js';
11
+ import { CollapsibleControl, LayoutBody, Navbar } from '../../layouts/docs/client.js';
12
+ import { TreeContextProvider } from '../../contexts/tree.js';
13
+ import { ThemeToggle } from '../../components/layout/theme-toggle.js';
14
+ import { getSidebarTabsFromOptions, SidebarLinkItem, } from '../../layouts/docs/shared.js';
15
+ import { NavProvider } from '../../contexts/layout.js';
16
16
  import Link from 'fumadocs-core/link';
17
- import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle.js';
17
+ import { LargeSearchToggle, SearchToggle, } from '../../components/layout/search-toggle.js';
18
18
  import { HideIfEmpty } from 'fumadocs-core/hide-if-empty';
19
19
  export function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { tabs: sidebarTabs, enabled: sidebarEnabled = true, ...sidebarProps } = {}, searchToggle = {}, disableThemeSwitch = false, themeSwitch = { enabled: !disableThemeSwitch }, i18n = false, children, ...props }) {
20
20
  const tabs = useMemo(() => getSidebarTabsFromOptions(sidebarTabs, props.tree) ?? [], [sidebarTabs, props.tree]);
@@ -28,15 +28,15 @@ export function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { t
28
28
  const viewport = (_jsxs(SidebarViewport, { children: [links
29
29
  .filter((v) => v.type !== 'icon')
30
30
  .map((item, i, list) => (_jsx(SidebarLinkItem, { item: item, className: cn(i === list.length - 1 && 'mb-4') }, i))), _jsx(SidebarPageTree, { components: components })] }));
31
- const mobile = (_jsxs(SidebarContentMobile, { ...rest, children: [_jsxs(HideIfEmpty, { as: SidebarHeader, children: [_jsxs("div", { className: "flex text-fd-muted-foreground items-center justify-end empty:hidden", children: [iconLinks.map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({
32
- size: 'icon-sm',
33
- color: 'ghost',
34
- className: 'p-2',
35
- }), i === iconLinks.length - 1 && 'me-auto'), "aria-label": item.label, children: item.icon }, i))), i18n ? (_jsxs(LanguageToggle, { children: [_jsx(Languages, { className: "size-4.5" }), _jsx(LanguageToggleText, {})] })) : null, themeSwitch.enabled !== false &&
36
- (themeSwitch.component ?? (_jsx(ThemeToggle, { className: "p-0 ms-1.5", mode: themeSwitch.mode }))), _jsx(SidebarTrigger, { className: cn(buttonVariants({
31
+ const mobile = (_jsxs(SidebarContentMobile, { ...rest, children: [_jsxs(SidebarHeader, { children: [_jsxs("div", { className: "flex text-fd-muted-foreground items-center gap-1.5", children: [_jsx("div", { className: "flex flex-1", children: iconLinks.map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({
32
+ size: 'icon-sm',
33
+ color: 'ghost',
34
+ className: 'p-2',
35
+ })), "aria-label": item.label, children: item.icon }, i))) }), i18n ? (_jsxs(LanguageToggle, { children: [_jsx(Languages, { className: "size-4.5" }), _jsx(LanguageToggleText, {})] })) : null, themeSwitch.enabled !== false &&
36
+ (themeSwitch.component ?? (_jsx(ThemeToggle, { className: "p-0", mode: themeSwitch.mode }))), _jsx(SidebarTrigger, { className: cn(buttonVariants({
37
37
  color: 'ghost',
38
38
  size: 'icon-sm',
39
- className: 'p-2 ms-1.5',
39
+ className: 'p-2',
40
40
  })), children: _jsx(SidebarIcon, {}) })] }), tabs.length > 0 && _jsx(RootToggle, { options: tabs }), banner] }), viewport, _jsx(SidebarFooter, { className: "empty:hidden", children: footer })] }));
41
41
  const content = (_jsxs(SidebarContent, { ...rest, children: [_jsxs(SidebarHeader, { children: [_jsxs("div", { className: "flex", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex text-[15px] items-center gap-2.5 font-medium me-auto", children: nav.title }), nav.children, collapsible && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
42
42
  color: 'ghost',
@@ -44,7 +44,7 @@ export function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar: { t
44
44
  className: 'mb-auto text-fd-muted-foreground',
45
45
  })), children: _jsx(SidebarIcon, {}) }))] }), searchToggle.enabled !== false &&
46
46
  (searchToggle.components?.lg ?? (_jsx(LargeSearchToggle, { hideIfDisabled: true }))), tabs.length > 0 && _jsx(RootToggle, { options: tabs }), banner] }), viewport, _jsxs(HideIfEmpty, { as: SidebarFooter, children: [_jsxs("div", { className: "flex text-fd-muted-foreground items-center justify-end empty:hidden", children: [iconLinks.map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }), i === iconLinks.length - 1 && 'me-auto'), "aria-label": item.label, children: item.icon }, i))), i18n ? (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-4.5" }) })) : null, themeSwitch.enabled !== false &&
47
- (themeSwitch.component ?? (_jsx(ThemeToggle, { className: "p-0 ms-1.5", mode: themeSwitch.mode })))] }), footer] })] }));
47
+ (themeSwitch.component ?? (_jsx(ThemeToggle, { className: "p-0", mode: themeSwitch.mode })))] }), footer] })] }));
48
48
  return (_jsx(Sidebar, { defaultOpenLevel: defaultOpenLevel, prefetch: prefetch, Mobile: mobile, Content: _jsxs(_Fragment, { children: [collapsible && _jsx(CollapsibleControl, {}), content] }) }));
49
49
  }
50
50
  return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsxs(NavProvider, { transparentMode: transparentMode, children: [nav.enabled !== false &&
@@ -1,5 +1,5 @@
1
1
  import { type HTMLAttributes } from 'react';
2
- import { type BaseLayoutProps, type NavOptions } from './shared.js';
2
+ import { type BaseLayoutProps, type NavOptions } from '../../layouts/shared.js';
3
3
  export interface HomeLayoutProps extends BaseLayoutProps {
4
4
  nav?: Partial<NavOptions & {
5
5
  /**
@@ -10,4 +10,4 @@ export interface HomeLayoutProps extends BaseLayoutProps {
10
10
  }
11
11
  export declare function HomeLayout(props: HomeLayoutProps & HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
12
12
  export declare function Header({ nav, i18n, links, githubUrl, themeSwitch, searchToggle, }: HomeLayoutProps): import("react/jsx-runtime").JSX.Element;
13
- //# sourceMappingURL=home.d.ts.map
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/home/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAE/D,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AA8B1B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,GAAG,CAAC,EAAE,OAAO,CACX,UAAU,GAAG;QACX;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CACF,CAAC;CACH;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,2CAmCrD;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAQ,EACR,IAAY,EACZ,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,YAAiB,GAClB,EAAE,eAAe,2CAmGjB"}
@@ -1,16 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Fragment, useMemo } from 'react';
3
- import { cn } from '../utils/cn.js';
4
- import { getLinks } from './shared.js';
5
- import { NavProvider } from '../contexts/layout.js';
6
- import { Navbar, NavbarLink, NavbarMenu, NavbarMenuContent, NavbarMenuLink, NavbarMenuTrigger, } from '../layouts/home/navbar.js';
7
- import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle.js';
8
- import { ThemeToggle } from '../components/layout/theme-toggle.js';
9
- import { LanguageToggle, LanguageToggleText, } from '../components/layout/language-toggle.js';
10
- import { ChevronDown, Languages } from '../icons.js';
3
+ import { cn } from '../../utils/cn.js';
4
+ import { getLinks, } from '../../layouts/shared.js';
5
+ import { NavProvider } from '../../contexts/layout.js';
6
+ import { Navbar, NavbarLink, NavbarMenu, NavbarMenuContent, NavbarMenuLink, NavbarMenuTrigger, } from '../../layouts/home/navbar.js';
7
+ import { LargeSearchToggle, SearchToggle, } from '../../components/layout/search-toggle.js';
8
+ import { ThemeToggle } from '../../components/layout/theme-toggle.js';
9
+ import { LanguageToggle, LanguageToggleText, } from '../../components/layout/language-toggle.js';
10
+ import { ChevronDown, Languages } from '../../icons.js';
11
11
  import Link from 'fumadocs-core/link';
12
- import { Menu, MenuContent, MenuLinkItem, MenuTrigger, } from '../layouts/home/menu.js';
13
- import { buttonVariants } from '../components/ui/button.js';
12
+ import { Menu, MenuContent, MenuLinkItem, MenuTrigger, } from '../../layouts/home/menu.js';
13
+ import { buttonVariants } from '../../components/ui/button.js';
14
14
  export function HomeLayout(props) {
15
15
  const { nav = {}, links, githubUrl, i18n, disableThemeSwitch = false, themeSwitch = { enabled: !disableThemeSwitch }, searchToggle, ...rest } = props;
16
16
  return (_jsx(NavProvider, { transparentMode: nav?.transparentMode, children: _jsxs("main", { id: "nd-home-layout", ...rest, className: cn('flex flex-1 flex-col pt-14', rest.className), children: [nav.enabled !== false &&
@@ -47,5 +47,7 @@ function NavbarLinkItem({ item, ...props }) {
47
47
  return (_jsx(NavbarLink, { ...props, item: item, variant: item.type, "aria-label": item.type === 'icon' ? item.label : undefined, children: item.type === 'icon' ? item.icon : item.text }));
48
48
  }
49
49
  function isSecondary(item) {
50
- return (('secondary' in item && item.secondary === true) || item.type === 'icon');
50
+ if ('secondary' in item && item.secondary != null)
51
+ return item.secondary;
52
+ return item.type === 'icon';
51
53
  }
@@ -1,5 +1,5 @@
1
1
  import { type ComponentProps } from 'react';
2
- import type { Option } from '../components/layout/root-toggle.js';
2
+ import type { Option } from '../../components/layout/root-toggle.js';
3
3
  export declare function Navbar({ mode, ...props }: ComponentProps<'header'> & {
4
4
  mode: 'top' | 'auto';
5
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -8,4 +8,4 @@ export declare function NavbarSidebarTrigger({ className, ...props }: ComponentP
8
8
  export declare function LayoutTabs({ options, ...props }: ComponentProps<'div'> & {
9
9
  options: Option[];
10
10
  }): import("react/jsx-runtime").JSX.Element;
11
- //# sourceMappingURL=notebook-client.d.ts.map
11
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/notebook/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAQrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,2CAoBrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,2CAsBvD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAkB1B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,2CA+BA"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { cn } from '../utils/cn.js';
3
+ import { cn } from '../../utils/cn.js';
4
4
  import { useMemo } from 'react';
5
- import { useSidebar } from '../contexts/sidebar.js';
6
- import { useNav } from '../contexts/layout.js';
7
- import { buttonVariants } from '../components/ui/button.js';
8
- import { Sidebar as SidebarIcon } from '../icons.js';
5
+ import { useSidebar } from '../../contexts/sidebar.js';
6
+ import { useNav } from '../../contexts/layout.js';
7
+ import { buttonVariants } from '../../components/ui/button.js';
8
+ import { Sidebar as SidebarIcon } from '../../icons.js';
9
9
  import Link from 'fumadocs-core/link';
10
10
  import { usePathname } from 'fumadocs-core/framework';
11
- import { isActive } from '../utils/is-active.js';
11
+ import { isActive } from '../../utils/is-active.js';
12
12
  export function Navbar({ mode, ...props }) {
13
13
  const { open, collapsed } = useSidebar();
14
14
  const { isTransparent } = useNav();
@@ -1,8 +1,8 @@
1
1
  import { type ComponentProps, type HTMLAttributes } from 'react';
2
- import { type BaseLayoutProps } from '../layouts/shared.js';
3
- import { type SidebarOptions } from '../layouts/docs/shared.js';
2
+ import { type BaseLayoutProps } from '../../layouts/shared.js';
3
+ import { type SidebarOptions } from '../../layouts/docs/shared.js';
4
4
  import type { PageTree } from 'fumadocs-core/server';
5
- import { Navbar, NavbarSidebarTrigger } from './notebook-client.js';
5
+ import { Navbar, NavbarSidebarTrigger } from '../../layouts/notebook/client.js';
6
6
  export interface DocsLayoutProps extends BaseLayoutProps {
7
7
  tree: PageTree.Root;
8
8
  tabMode?: 'sidebar' | 'navbar';
@@ -14,4 +14,4 @@ export interface DocsLayoutProps extends BaseLayoutProps {
14
14
  }
15
15
  export declare function DocsLayout(props: DocsLayoutProps): import("react/jsx-runtime").JSX.Element;
16
16
  export { Navbar, NavbarSidebarTrigger };
17
- //# sourceMappingURL=notebook.d.ts.map
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/notebook/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,kBAAkB,CAAC;AA6BlE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAGL,MAAM,EACN,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAUnC,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAgNhD;AA6LD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,21 +1,21 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Fragment, useMemo, } from 'react';
3
- import { getLinks } from '../layouts/shared.js';
4
- import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarContentMobile, SidebarFooter, SidebarHeader, SidebarPageTree, SidebarTrigger, SidebarViewport, } from '../components/layout/sidebar.js';
5
- import { TreeContextProvider } from '../contexts/tree.js';
6
- import { cn } from '../utils/cn.js';
7
- import { buttonVariants } from '../components/ui/button.js';
8
- import { ChevronDown, Languages, Sidebar as SidebarIcon, X, } from '../icons.js';
9
- import { BaseLinkItem } from '../layouts/links.js';
10
- import { LanguageToggle } from '../components/layout/language-toggle.js';
11
- import { ThemeToggle } from '../components/layout/theme-toggle.js';
12
- import { Popover, PopoverContent, PopoverTrigger, } from '../components/ui/popover.js';
13
- import { getSidebarTabsFromOptions, SidebarLinkItem, } from '../layouts/docs/shared.js';
14
- import { LayoutBody, LayoutTabs, Navbar, NavbarSidebarTrigger, } from './notebook-client.js';
15
- import { NavProvider } from '../contexts/layout.js';
16
- import { RootToggle } from '../components/layout/root-toggle.js';
3
+ import { getLinks } from '../../layouts/shared.js';
4
+ import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarContentMobile, SidebarFooter, SidebarHeader, SidebarPageTree, SidebarTrigger, SidebarViewport, } from '../../components/layout/sidebar.js';
5
+ import { TreeContextProvider } from '../../contexts/tree.js';
6
+ import { cn } from '../../utils/cn.js';
7
+ import { buttonVariants } from '../../components/ui/button.js';
8
+ import { ChevronDown, Languages, Sidebar as SidebarIcon, X, } from '../../icons.js';
9
+ import { BaseLinkItem } from '../../layouts/links.js';
10
+ import { LanguageToggle } from '../../components/layout/language-toggle.js';
11
+ import { ThemeToggle } from '../../components/layout/theme-toggle.js';
12
+ import { Popover, PopoverContent, PopoverTrigger, } from '../../components/ui/popover.js';
13
+ import { getSidebarTabsFromOptions, SidebarLinkItem, } from '../../layouts/docs/shared.js';
14
+ import { LayoutBody, LayoutTabs, Navbar, NavbarSidebarTrigger, } from '../../layouts/notebook/client.js';
15
+ import { NavProvider } from '../../contexts/layout.js';
16
+ import { RootToggle } from '../../components/layout/root-toggle.js';
17
17
  import Link from 'fumadocs-core/link';
18
- import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle.js';
18
+ import { LargeSearchToggle, SearchToggle, } from '../../components/layout/search-toggle.js';
19
19
  import { HideIfEmpty } from 'fumadocs-core/hide-if-empty';
20
20
  export function DocsLayout(props) {
21
21
  const { tabMode = 'sidebar', nav: { transparentMode, ...nav } = {}, sidebar: { tabs: tabOptions, ...sidebarProps } = {}, i18n = false, disableThemeSwitch = false, themeSwitch = { enabled: !disableThemeSwitch }, } = props;
@@ -55,26 +55,25 @@ export function DocsLayout(props) {
55
55
  }
56
56
  return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsx(NavProvider, { transparentMode: transparentMode, children: _jsxs(LayoutBody, { ...props.containerProps, className: cn(variables, props.containerProps?.className), children: [sidebar(), _jsx(DocsNavbar, { ...props, links: links, tabs: tabMode == 'navbar' ? tabs : [] }), props.children] }) }) }));
57
57
  }
58
- function DocsNavbar({ links, tabs, searchToggle = {}, themeSwitch = {}, ...props }) {
59
- const navMode = props.nav?.mode ?? 'auto';
58
+ function DocsNavbar({ links, tabs, searchToggle = {}, themeSwitch = {}, nav = {}, ...props }) {
59
+ const navMode = nav.mode ?? 'auto';
60
60
  const sidebarCollapsible = props.sidebar?.collapsible ?? true;
61
- const nav = (_jsx(Link, { href: props.nav?.url ?? '/', className: cn('inline-flex items-center gap-2.5 font-semibold empty:hidden', navMode === 'auto' && 'md:hidden'), children: props.nav?.title }));
62
- return (_jsxs(Navbar, { mode: navMode, children: [_jsxs("div", { className: cn('flex border-b px-4 flex-1', navMode === 'auto' && 'md:px-6'), children: [_jsxs("div", { className: cn('flex flex-row items-center', navMode === 'top' && 'flex-1 pe-4'), children: [sidebarCollapsible && navMode === 'auto' ? (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
61
+ return (_jsxs(Navbar, { mode: navMode, children: [_jsxs("div", { className: cn('flex border-b px-2.5 gap-2 flex-1 md:px-4', navMode === 'auto' && 'md:px-6'), children: [_jsxs("div", { className: cn('flex items-center', navMode === 'top' && 'flex-1'), children: [sidebarCollapsible && navMode === 'auto' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
63
62
  color: 'ghost',
64
63
  size: 'icon-sm',
65
- }), 'text-fd-muted-foreground -ms-1.5 me-2 data-[collapsed=false]:hidden max-md:hidden'), children: _jsx(SidebarIcon, {}) })) : null, nav] }), searchToggle.enabled !== false &&
66
- (searchToggle.components?.lg ? (_jsx("div", { className: cn('w-full my-auto max-md:hidden', navMode === 'top' ? 'rounded-xl max-w-sm' : 'max-w-[240px]'), children: searchToggle.components?.lg })) : (_jsx(LargeSearchToggle, { hideIfDisabled: true, className: cn('w-full my-auto max-md:hidden', navMode === 'top'
64
+ }), 'text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden'), children: _jsx(SidebarIcon, {}) })), _jsx(Link, { href: nav.url ?? '/', className: cn('inline-flex items-center gap-2.5 font-semibold empty:hidden', navMode === 'auto' && 'md:hidden'), children: nav.title })] }), searchToggle.enabled !== false &&
65
+ (searchToggle.components?.lg ? (_jsx("div", { className: cn('w-full my-auto max-md:hidden', navMode === 'top' ? 'rounded-xl max-w-sm' : 'max-w-[240px]'), children: searchToggle.components.lg })) : (_jsx(LargeSearchToggle, { hideIfDisabled: true, className: cn('w-full my-auto max-md:hidden', navMode === 'top'
67
66
  ? 'rounded-xl max-w-sm ps-2.5'
68
- : 'max-w-[240px]') }))), _jsxs("div", { className: "flex flex-1 flex-row items-center justify-end", children: [_jsx("div", { className: "flex flex-row items-center gap-6 px-4 empty:hidden max-lg:hidden", children: links
67
+ : 'max-w-[240px]') }))), _jsxs("div", { className: "flex flex-1 items-center justify-end md:gap-2", children: [_jsx("div", { className: "flex items-center gap-6 empty:hidden max-lg:hidden", children: links
69
68
  .filter((item) => item.type !== 'icon')
70
- .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary" }, i))) }), props.nav?.children, searchToggle.enabled !== false &&
71
- (searchToggle.components?.sm ?? (_jsx(SearchToggle, { hideIfDisabled: true, className: "p-2 md:hidden" }))), _jsx(NavbarSidebarTrigger, { className: "p-2 -me-1.5 md:hidden" }), links
69
+ .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary" }, i))) }), nav.children, links
72
70
  .filter((item) => item.type === 'icon')
73
- .map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }), 'text-fd-muted-foreground max-lg:hidden'), "aria-label": item.label, children: item.icon }, i))), props.i18n ? (_jsx(LanguageToggle, { className: "max-md:hidden", children: _jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) })) : null, themeSwitch.enabled !== false &&
74
- (themeSwitch.component ?? (_jsx(ThemeToggle, { className: "ms-2 max-md:hidden", mode: themeSwitch.mode ?? 'light-dark-system' }))), sidebarCollapsible && navMode === 'top' ? (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
75
- color: 'secondary',
76
- size: 'icon-sm',
77
- }), 'ms-2 text-fd-muted-foreground rounded-full max-md:hidden'), children: _jsx(SidebarIcon, {}) })) : null] })] }), tabs.length > 0 && (_jsx(LayoutTabs, { className: cn('border-b h-10 max-lg:hidden', navMode === 'top' ? 'px-4' : 'px-6'), options: tabs }))] }));
71
+ .map((item, i) => (_jsx(BaseLinkItem, { item: item, className: cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }), 'text-fd-muted-foreground max-lg:hidden'), "aria-label": item.label, children: item.icon }, i))), _jsxs("div", { className: "flex items-center md:hidden", children: [searchToggle.enabled !== false &&
72
+ (searchToggle.components?.sm ?? (_jsx(SearchToggle, { hideIfDisabled: true, className: "p-2" }))), _jsx(NavbarSidebarTrigger, { className: "p-2" })] }), _jsxs("div", { className: "flex items-center gap-2 max-md:hidden", children: [props.i18n ? (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) })) : null, themeSwitch.enabled !== false &&
73
+ (themeSwitch.component ?? (_jsx(ThemeToggle, { mode: themeSwitch.mode ?? 'light-dark-system' }))), sidebarCollapsible && navMode === 'top' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
74
+ color: 'secondary',
75
+ size: 'icon-sm',
76
+ }), 'text-fd-muted-foreground rounded-full'), children: _jsx(SidebarIcon, {}) }))] })] })] }), tabs.length > 0 && (_jsx(LayoutTabs, { className: cn('border-b h-10 max-lg:hidden', navMode === 'top' ? 'px-4' : 'px-6'), options: tabs }))] }));
78
77
  }
79
78
  function NavbarLinkItem({ item, ...props }) {
80
79
  if (item.type === 'menu') {
package/dist/style.css CHANGED
@@ -455,9 +455,6 @@
455
455
  .-ms-1\.5 {
456
456
  margin-inline-start: calc(var(--spacing) * -1.5);
457
457
  }
458
- .ms-1\.5 {
459
- margin-inline-start: calc(var(--spacing) * 1.5);
460
- }
461
458
  .ms-2 {
462
459
  margin-inline-start: calc(var(--spacing) * 2);
463
460
  }
@@ -1427,6 +1424,9 @@
1427
1424
  .px-2 {
1428
1425
  padding-inline: calc(var(--spacing) * 2);
1429
1426
  }
1427
+ .px-2\.5 {
1428
+ padding-inline: calc(var(--spacing) * 2.5);
1429
+ }
1430
1430
  .px-3 {
1431
1431
  padding-inline: calc(var(--spacing) * 3);
1432
1432
  }
@@ -2351,6 +2351,16 @@
2351
2351
  grid-template-columns: repeat(2, minmax(0, 1fr));
2352
2352
  }
2353
2353
  }
2354
+ .md\:gap-2 {
2355
+ @media (width >= 48rem) {
2356
+ gap: calc(var(--spacing) * 2);
2357
+ }
2358
+ }
2359
+ .md\:px-4 {
2360
+ @media (width >= 48rem) {
2361
+ padding-inline: calc(var(--spacing) * 4);
2362
+ }
2363
+ }
2354
2364
  .md\:px-6 {
2355
2365
  @media (width >= 48rem) {
2356
2366
  padding-inline: calc(var(--spacing) * 6);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.6.10",
3
+ "version": "15.6.11",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -24,9 +24,41 @@
24
24
  "import": "./dist/i18n.js",
25
25
  "types": "./dist/i18n.d.ts"
26
26
  },
27
- "./layouts/*": {
28
- "import": "./dist/layouts/*.js",
29
- "types": "./dist/layouts/*.d.ts"
27
+ "./layouts/home": {
28
+ "import": "./dist/layouts/home/index.js",
29
+ "types": "./dist/layouts/home/index.d.ts"
30
+ },
31
+ "./layouts/home/*": {
32
+ "import": "./dist/layouts/home/*.js",
33
+ "types": "./dist/layouts/home/*.d.ts"
34
+ },
35
+ "./layouts/docs": {
36
+ "import": "./dist/layouts/docs/index.js",
37
+ "types": "./dist/layouts/docs/index.d.ts"
38
+ },
39
+ "./layouts/docs/page": {
40
+ "import": "./dist/layouts/docs/page.js",
41
+ "types": "./dist/layouts/docs/page.d.ts"
42
+ },
43
+ "./layouts/docs-client": {
44
+ "import": "./dist/layouts/docs/client.js",
45
+ "types": "./dist/layouts/docs/client.d.ts"
46
+ },
47
+ "./layouts/notebook": {
48
+ "import": "./dist/layouts/notebook/index.js",
49
+ "types": "./dist/layouts/notebook/index.d.ts"
50
+ },
51
+ "./layouts/notebook-client": {
52
+ "import": "./dist/layouts/notebook/client.js",
53
+ "types": "./dist/layouts/notebook/client.d.ts"
54
+ },
55
+ "./layouts/links": {
56
+ "import": "./dist/layouts/links.js",
57
+ "types": "./dist/layouts/links.d.ts"
58
+ },
59
+ "./layouts/shared": {
60
+ "import": "./dist/layouts/shared.js",
61
+ "types": "./dist/layouts/shared.d.ts"
30
62
  },
31
63
  "./page": {
32
64
  "node": "./dist/page.server.js",
@@ -89,20 +121,20 @@
89
121
  "react-medium-image-zoom": "^5.3.0",
90
122
  "scroll-into-view-if-needed": "^3.1.0",
91
123
  "tailwind-merge": "^3.3.1",
92
- "fumadocs-core": "15.6.10"
124
+ "fumadocs-core": "15.6.11"
93
125
  },
94
126
  "devDependencies": {
95
127
  "@next/eslint-plugin-next": "^15.4.6",
96
128
  "@tailwindcss/cli": "^4.1.11",
97
129
  "@types/lodash.merge": "^4.6.9",
98
- "@types/react": "^19.1.9",
130
+ "@types/react": "^19.1.10",
99
131
  "@types/react-dom": "^19.1.7",
100
132
  "next": "15.4.6",
101
133
  "tailwindcss": "^4.1.11",
102
134
  "tsc-alias": "^1.8.16",
103
- "@fumadocs/cli": "0.2.1",
135
+ "@fumadocs/cli": "1.0.0",
104
136
  "eslint-config-custom": "0.0.0",
105
- "fumadocs-core": "15.6.10",
137
+ "fumadocs-core": "15.6.11",
106
138
  "tsconfig": "0.0.0"
107
139
  },
108
140
  "peerDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-client.d.ts","sourceRoot":"","sources":["../../src/layouts/docs-client.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAQ5C,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAgBrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,2CAsBvD;AAED,wBAAgB,kBAAkB,4CA2BjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/layouts/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAIf,OAAO,EAQL,cAAc,EAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAK1D,OAAO,EAAE,kBAAkB,EAAc,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,cAAc,GACtB,cAAc,CAAC,OAAO,CAAC,GAAG;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEJ;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAqB,EAC9B,GAAG,YAAY,EACX,EACN,YAAiB,EACjB,kBAA0B,EAC1B,WAA8C,EAC9C,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,2CA6NjB;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../src/layouts/home.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,KAAK,eAAe,EAAY,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AA8B3E,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,GAAG,CAAC,EAAE,OAAO,CACX,UAAU,GAAG;QACX;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CACF,CAAC;CACH;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,2CAmCrD;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAQ,EACR,IAAY,EACZ,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,YAAiB,GAClB,EAAE,eAAe,2CAmGjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notebook-client.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAQrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,2CAoBrD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,2CAsBvD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAkB1B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,2CA+BA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,kBAAkB,CAAC;AA6BlE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAGL,MAAM,EACN,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAU3B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEnD,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAgNhD;AAiMD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}