fumadocs-ui 16.0.10 → 16.0.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/contexts/layout.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AAGrE,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAgB,aAAa,eAE5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAItC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,eAAwB,EACxB,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAwB5C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAEvC"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/contexts/layout.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAgB,aAAa,eAE5B;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAItC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,eAAwB,EACxB,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAwB5C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAEvC"}
@@ -1,21 +1,20 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useEffect, useMemo, useState } from 'react';
4
- import { createContext } from 'fumadocs-core/framework';
3
+ import { useEffect, useMemo, useState, createContext, use, } from 'react';
5
4
  /**
6
5
  * applied styles to different layout components in `Page` from layouts
7
6
  */
8
- const StylesContext = createContext('StylesContext', {
7
+ const StylesContext = createContext({
9
8
  tocNav: 'xl:hidden',
10
9
  toc: 'max-xl:hidden',
11
10
  });
12
11
  export function usePageStyles() {
13
- return StylesContext.use();
12
+ return use(StylesContext);
14
13
  }
15
14
  export function StylesProvider({ children, ...value }) {
16
15
  return (_jsx(StylesContext.Provider, { value: value, children: children }));
17
16
  }
18
- const NavContext = createContext('NavContext', {
17
+ const NavContext = createContext({
19
18
  isTransparent: false,
20
19
  });
21
20
  export function NavProvider({ transparentMode = 'none', children, }) {
@@ -32,8 +31,8 @@ export function NavProvider({ transparentMode = 'none', children, }) {
32
31
  window.removeEventListener('scroll', listener);
33
32
  };
34
33
  }, [transparentMode]);
35
- return (_jsx(NavContext.Provider, { value: useMemo(() => ({ isTransparent: transparent }), [transparent]), children: children }));
34
+ return (_jsx(NavContext, { value: useMemo(() => ({ isTransparent: transparent }), [transparent]), children: children }));
36
35
  }
37
36
  export function useNav() {
38
- return NavContext.use();
37
+ return use(NavContext);
39
38
  }
@@ -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,EAIf,MAAM,OAAO,CAAC;AAGf,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,2CA4CrB;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,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,14 +1,13 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useMemo, useState, } from 'react';
4
- import { createContext } from 'fumadocs-core/framework';
5
- const SearchContext = createContext('SearchContext', {
3
+ import { useEffect, useMemo, useState, createContext, use, useEffectEvent, } from 'react';
4
+ const SearchContext = createContext({
6
5
  enabled: false,
7
6
  hotKey: [],
8
7
  setOpenSearch: () => undefined,
9
8
  });
10
9
  export function useSearchContext() {
11
- return SearchContext.use();
10
+ return use(SearchContext);
12
11
  }
13
12
  function MetaOrControl() {
14
13
  const [key, setKey] = useState('⌘');
@@ -30,19 +29,19 @@ export function SearchProvider({ SearchDialog, children, preload = true, options
30
29
  },
31
30
  ], links, }) {
32
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(true);
35
+ e.preventDefault();
36
+ }
37
+ });
33
38
  useEffect(() => {
34
- const handler = (e) => {
35
- if (hotKey.every((v) => typeof v.key === 'string' ? e.key === v.key : v.key(e))) {
36
- setIsOpen(true);
37
- e.preventDefault();
38
- }
39
- };
40
- window.addEventListener('keydown', handler);
39
+ window.addEventListener('keydown', onKeyDown);
41
40
  return () => {
42
- window.removeEventListener('keydown', handler);
41
+ window.removeEventListener('keydown', onKeyDown);
43
42
  };
44
43
  }, [hotKey]);
45
- return (_jsxs(SearchContext.Provider, { value: useMemo(() => ({
44
+ return (_jsxs(SearchContext, { value: useMemo(() => ({
46
45
  enabled: true,
47
46
  hotKey,
48
47
  setOpenSearch: setIsOpen,
@@ -9,13 +9,7 @@ interface SidebarContext {
9
9
  */
10
10
  closeOnRedirect: RefObject<boolean>;
11
11
  }
12
- declare const SidebarContext: {
13
- Provider: (props: {
14
- value: SidebarContext;
15
- children: ReactNode;
16
- }) => import("react/jsx-runtime").JSX.Element;
17
- use: (errorMessage?: string) => SidebarContext;
18
- };
12
+ declare const SidebarContext: import("react").Context<SidebarContext | null>;
19
13
  export declare function useSidebar(): SidebarContext;
20
14
  export declare function SidebarProvider({ children, }: {
21
15
  children: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/contexts/sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAIf,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,QAAA,MAAM,cAAc;;;;;;CAAkD,CAAC;AAEvE,wBAAgB,UAAU,IAAI,cAAc,CAE3C;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CA8BZ"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/contexts/sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAIf,UAAU,cAAc;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,QAAA,MAAM,cAAc,gDAA6C,CAAC;AAElE,wBAAgB,UAAU,IAAI,cAAc,CAQ3C;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CA6BZ"}
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useMemo, useRef, useState, } from 'react';
4
- import { createContext, usePathname } from 'fumadocs-core/framework';
3
+ import { useMemo, useRef, useState, createContext, use, } from 'react';
4
+ import { usePathname } from 'fumadocs-core/framework';
5
5
  import { useOnChange } from 'fumadocs-core/utils/use-on-change';
6
- const SidebarContext = createContext('SidebarContext');
6
+ const SidebarContext = createContext(null);
7
7
  export function useSidebar() {
8
- return SidebarContext.use();
8
+ const ctx = use(SidebarContext);
9
+ if (!ctx)
10
+ throw new Error('Missing SidebarContext, make sure you have wrapped the component in <RootProvider /> and the context is available.');
11
+ return ctx;
9
12
  }
10
13
  export function SidebarProvider({ children, }) {
11
14
  const closeOnRedirect = useRef(true);
@@ -18,7 +21,7 @@ export function SidebarProvider({ children, }) {
18
21
  }
19
22
  closeOnRedirect.current = true;
20
23
  });
21
- return (_jsx(SidebarContext.Provider, { value: useMemo(() => ({
24
+ return (_jsx(SidebarContext, { value: useMemo(() => ({
22
25
  open,
23
26
  setOpen,
24
27
  collapsed,
@@ -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,EAAmB,MAAM,OAAO,CAAC;AAGxD,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,KAAK,EAAE;IACzC,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,CAEhD"}
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,KAAK,EAAE;IACzC,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,10 +1,10 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, usePathname } from 'fumadocs-core/framework';
4
- import { useMemo, useRef } from 'react';
3
+ import { usePathname } from 'fumadocs-core/framework';
4
+ import { useMemo, useRef, createContext, use } from 'react';
5
5
  import { searchPath } from 'fumadocs-core/breadcrumb';
6
- const TreeContext = createContext('TreeContext');
7
- const PathContext = createContext('PathContext', []);
6
+ const TreeContext = createContext(null);
7
+ const PathContext = createContext([]);
8
8
  export function TreeContextProvider(props) {
9
9
  const nextIdRef = useRef(0);
10
10
  const pathname = usePathname();
@@ -13,20 +13,20 @@ export function TreeContextProvider(props) {
13
13
  // eslint-disable-next-line react-hooks/exhaustive-deps
14
14
  const tree = useMemo(() => props.tree, [props.tree.$id ?? props.tree]);
15
15
  const path = useMemo(() => {
16
- let result = searchPath(tree.children, pathname);
17
- if (result)
18
- return result;
19
- if (tree.fallback)
20
- result = searchPath(tree.fallback.children, pathname);
21
- return result ?? [];
16
+ return (searchPath(tree.children, pathname) ??
17
+ (tree.fallback ? searchPath(tree.fallback.children, pathname) : null) ??
18
+ []);
22
19
  }, [tree, pathname]);
23
20
  const root = path.findLast((item) => item.type === 'folder' && item.root) ?? tree;
24
21
  root.$id ?? (root.$id = String(nextIdRef.current++));
25
- return (_jsx(TreeContext.Provider, { value: useMemo(() => ({ root, full: tree }), [root, tree]), children: _jsx(PathContext.Provider, { value: path, children: props.children }) }));
22
+ return (_jsx(TreeContext, { value: useMemo(() => ({ root, full: tree }), [root, tree]), children: _jsx(PathContext, { value: path, children: props.children }) }));
26
23
  }
27
24
  export function useTreePath() {
28
- return PathContext.use();
25
+ return use(PathContext);
29
26
  }
30
27
  export function useTreeContext() {
31
- return TreeContext.use('You must wrap this component under <DocsLayout />');
28
+ const ctx = use(TreeContext);
29
+ if (!ctx)
30
+ throw new Error('You must wrap this component under <DocsLayout />');
31
+ return ctx;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"page-client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAOpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAoDpE;AA4DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAwD1D;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,2CAiBjE;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAyBD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAiC1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAuBnD"}
1
+ {"version":3,"file":"page-client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/page-client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EASpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAoDpE;AA4DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAwD1D;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,2CAiBjE;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAyBD,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAiC1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAuBnD"}
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Fragment, useEffect, useEffectEvent, useMemo, useRef, useState, } from 'react';
3
+ import { Fragment, useEffect, useEffectEvent, createContext, useMemo, useRef, useState, use, } from 'react';
4
4
  import { ChevronDown, ChevronLeft, ChevronRight } from '../../icons.js';
5
5
  import Link from 'fumadocs-core/link';
6
6
  import { cn } from '../../utils/cn.js';
7
7
  import { useI18n } from '../../contexts/i18n.js';
8
8
  import { useTreeContext, useTreePath } from '../../contexts/tree.js';
9
- import { createContext, usePathname } from 'fumadocs-core/framework';
9
+ import { usePathname } from 'fumadocs-core/framework';
10
10
  import { getBreadcrumbItemsFromPath, } from 'fumadocs-core/breadcrumb';
11
11
  import { useNav } from '../../contexts/layout.js';
12
12
  import { isActive } from '../../utils/is-active.js';
@@ -14,10 +14,10 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../../comp
14
14
  import { useSidebar } from '../../contexts/sidebar.js';
15
15
  import { useTOCItems } from '../../components/layout/toc.js';
16
16
  import { useActiveAnchor } from 'fumadocs-core/toc';
17
- const TocPopoverContext = createContext('TocPopoverContext');
17
+ const TocPopoverContext = createContext(null);
18
18
  export function PageTOCPopoverTrigger(props) {
19
19
  const { text } = useI18n();
20
- const { open } = TocPopoverContext.use();
20
+ const { open } = use(TocPopoverContext);
21
21
  const items = useTOCItems();
22
22
  const active = useActiveAnchor();
23
23
  const selected = useMemo(() => items.findIndex((item) => active === item.url.slice(1)), [items, active]);
@@ -66,7 +66,7 @@ export function PageTOCPopover(props) {
66
66
  window.removeEventListener('click', onClick);
67
67
  };
68
68
  }, []);
69
- return (_jsx(TocPopoverContext.Provider, { value: useMemo(() => ({
69
+ return (_jsx(TocPopoverContext, { value: useMemo(() => ({
70
70
  open,
71
71
  setOpen,
72
72
  }), [setOpen, open]), children: _jsx(Collapsible, { open: open, onOpenChange: setOpen, asChild: true, children: _jsx("header", { ref: ref, id: "nd-tocnav", ...props, className: cn('fixed pr-(--removed-body-scroll-bar-size,0) z-10 border-b backdrop-blur-sm transition-colors xl:hidden max-xl:on-root:[--fd-tocnav-height:40px]', (!isTransparent || open) && 'bg-fd-background/80', open && 'shadow-lg', props.className), style: {
@@ -1,24 +1,24 @@
1
1
  import { type ComponentProps } from 'react';
2
2
  import { LinkItemType } from '../../layouts/shared/index.js';
3
- import { NavigationMenuContent, NavigationMenuTrigger } from '../../components/ui/navigation-menu.js';
3
+ import { NavigationMenuContent, NavigationMenuItem, NavigationMenuTrigger } from '../../components/ui/navigation-menu.js';
4
4
  export declare const navItemVariants: (props?: ({
5
5
  variant?: "button" | "main" | "icon" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export declare function Navbar(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
8
- export declare function NavbarLinkItem({ item, ...props }: {
8
+ export { NavigationMenuItem };
9
+ export declare function NavigationMenuLinkItem({ item, ...props }: {
9
10
  item: LinkItemType;
10
11
  className?: string;
11
12
  }): import("react/jsx-runtime").JSX.Element;
12
- export declare const Menu: import("react").ForwardRefExoticComponent<Omit<import("@radix-ui/react-navigation-menu").NavigationMenuItemProps & import("react").RefAttributes<HTMLLIElement>, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
13
- export declare function MenuLinkItem({ item, ...props }: {
13
+ export declare function MobileNavigationMenuLinkItem({ item, ...props }: {
14
14
  item: LinkItemType;
15
15
  className?: string;
16
16
  }): import("react/jsx-runtime").JSX.Element;
17
- export declare function MenuTrigger({ enableHover, ...props }: ComponentProps<typeof NavigationMenuTrigger> & {
17
+ export declare function MobileNavigationMenuTrigger({ enableHover, ...props }: ComponentProps<typeof NavigationMenuTrigger> & {
18
18
  /**
19
19
  * Enable hover to trigger
20
20
  */
21
21
  enableHover?: boolean;
22
22
  }): import("react/jsx-runtime").JSX.Element;
23
- export declare function MenuContent(props: ComponentProps<typeof NavigationMenuContent>): import("react/jsx-runtime").JSX.Element;
23
+ export declare function MobileNavigationMenuContent(props: ComponentProps<typeof NavigationMenuContent>): import("react/jsx-runtime").JSX.Element;
24
24
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/home/client.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,OAAO,CAAC;AAIhE,OAAO,EAAgB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAEL,qBAAqB,EAIrB,qBAAqB,EAEtB,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,eAAe;;8EAiB1B,CAAC;AAEH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CA2BlD;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAiFA;AAED,eAAO,MAAM,IAAI,yNAAqB,CAAC;AAEvC,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAyDA;AAED,wBAAgB,WAAW,CAAC,EAC1B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,qBAAqB,CAAC,GAAG;IAChD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CASA;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,cAAc,CAAC,OAAO,qBAAqB,CAAC,2CAUpD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/home/client.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,OAAO,CAAC;AAIhE,OAAO,EAAgB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAEL,qBAAqB,EACrB,kBAAkB,EAGlB,qBAAqB,EAEtB,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,eAAe;;8EAiB1B,CAAC;AAEH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CA2BlD;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CA0EA;AAED,wBAAgB,4BAA4B,CAAC,EAC3C,IAAI,EACJ,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAyDA;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,qBAAqB,CAAC,GAAG;IAChD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CASA;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,cAAc,CAAC,OAAO,qBAAqB,CAAC,2CAUpD"}
@@ -31,7 +31,8 @@ export function Navbar(props) {
31
31
  const { isTransparent } = useNav();
32
32
  return (_jsx(NavigationMenu, { value: value, onValueChange: setValue, asChild: true, children: _jsxs("header", { id: "nd-nav", ...props, className: cn('fixed top-(--fd-banner-height) z-40 left-0 right-(--removed-body-scroll-bar-size,0) backdrop-blur-lg border-b transition-colors *:mx-auto *:max-w-fd-container', value.length > 0 && 'max-lg:shadow-lg max-lg:rounded-b-2xl', (!isTransparent || value.length > 0) && 'bg-fd-background/80', props.className), children: [_jsx(NavigationMenuList, { className: "flex h-14 w-full items-center px-4", asChild: true, children: _jsx("nav", { children: props.children }) }), _jsx(NavigationMenuViewport, {})] }) }));
33
33
  }
34
- export function NavbarLinkItem({ item, ...props }) {
34
+ export { NavigationMenuItem };
35
+ export function NavigationMenuLinkItem({ item, ...props }) {
35
36
  if (item.type === 'custom')
36
37
  return _jsx("div", { ...props, children: item.children });
37
38
  if (item.type === 'menu') {
@@ -42,17 +43,16 @@ export function NavbarLinkItem({ item, ...props }) {
42
43
  const { banner = child.icon ? (_jsx("div", { className: "w-fit rounded-md border bg-fd-muted p-1 [&_svg]:size-4", children: child.icon })) : null, ...rest } = child.menu ?? {};
43
44
  return (_jsx(NavigationMenuLink, { asChild: true, children: _jsx(Link, { href: child.url, external: child.external, ...rest, className: cn('flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground', rest.className), children: rest.children ?? (_jsxs(_Fragment, { children: [banner, _jsx("p", { className: "text-[15px] font-medium", children: child.text }), _jsx("p", { className: "text-sm text-fd-muted-foreground empty:hidden", children: child.description })] })) }) }, `${j}-${child.url}`));
44
45
  });
45
- return (_jsxs(NavigationMenuItem, { children: [_jsx(NavigationMenuTrigger, { ...props, className: cn(navItemVariants(), 'rounded-md', props.className), children: item.url ? (_jsx(Link, { href: item.url, external: item.external, children: item.text })) : (item.text) }), _jsx(NavigationMenuContent, { className: "grid grid-cols-1 gap-2 p-4 md:grid-cols-2 lg:grid-cols-3", children: children })] }));
46
+ return (_jsxs(NavigationMenuItem, { ...props, children: [_jsx(NavigationMenuTrigger, { className: cn(navItemVariants(), 'rounded-md'), children: item.url ? (_jsx(Link, { href: item.url, external: item.external, children: item.text })) : (item.text) }), _jsx(NavigationMenuContent, { className: "grid grid-cols-1 gap-2 p-4 md:grid-cols-2 lg:grid-cols-3", children: children })] }));
46
47
  }
47
- return (_jsx(NavigationMenuItem, { children: _jsx(NavigationMenuLink, { asChild: true, children: _jsx(BaseLinkItem, { item: item, "aria-label": item.type === 'icon' ? item.label : undefined, ...props, className: cn(navItemVariants({ variant: item.type }), props.className), children: item.type === 'icon' ? item.icon : item.text }) }) }));
48
+ return (_jsx(NavigationMenuItem, { ...props, children: _jsx(NavigationMenuLink, { asChild: true, children: _jsx(BaseLinkItem, { item: item, "aria-label": item.type === 'icon' ? item.label : undefined, className: cn(navItemVariants({ variant: item.type })), children: item.type === 'icon' ? item.icon : item.text }) }) }));
48
49
  }
49
- export const Menu = NavigationMenuItem;
50
- export function MenuLinkItem({ item, ...props }) {
50
+ export function MobileNavigationMenuLinkItem({ item, ...props }) {
51
51
  if (item.type === 'custom')
52
52
  return _jsx("div", { className: cn('grid', props.className), children: item.children });
53
53
  if (item.type === 'menu') {
54
54
  const header = (_jsxs(_Fragment, { children: [item.icon, item.text] }));
55
- return (_jsxs("div", { className: cn('mb-4 flex flex-col', props.className), children: [_jsx("p", { className: "mb-1 text-sm text-fd-muted-foreground", children: item.url ? (_jsx(NavigationMenuLink, { asChild: true, children: _jsx(Link, { href: item.url, external: item.external, children: header }) })) : (header) }), item.items.map((child, i) => (_jsx(MenuLinkItem, { item: child }, i)))] }));
55
+ return (_jsxs("div", { className: cn('mb-4 flex flex-col', props.className), children: [_jsx("p", { className: "mb-1 text-sm text-fd-muted-foreground", children: item.url ? (_jsx(NavigationMenuLink, { asChild: true, children: _jsx(Link, { href: item.url, external: item.external, children: header }) })) : (header) }), item.items.map((child, i) => (_jsx(MobileNavigationMenuLinkItem, { item: child }, i)))] }));
56
56
  }
57
57
  return (_jsx(NavigationMenuLink, { asChild: true, children: _jsxs(BaseLinkItem, { item: item, className: cn({
58
58
  main: 'inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4',
@@ -66,9 +66,9 @@ export function MenuLinkItem({ item, ...props }) {
66
66
  }),
67
67
  }[item.type ?? 'main'], props.className), "aria-label": item.type === 'icon' ? item.label : undefined, children: [item.icon, item.type === 'icon' ? undefined : item.text] }) }));
68
68
  }
69
- export function MenuTrigger({ enableHover = false, ...props }) {
69
+ export function MobileNavigationMenuTrigger({ enableHover = false, ...props }) {
70
70
  return (_jsx(NavigationMenuTrigger, { ...props, onPointerMove: enableHover ? undefined : (e) => e.preventDefault(), children: props.children }));
71
71
  }
72
- export function MenuContent(props) {
72
+ export function MobileNavigationMenuContent(props) {
73
73
  return (_jsx(NavigationMenuContent, { ...props, className: cn('flex flex-col p-4', props.className), children: props.children }));
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/home/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAErD,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAuB1B,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,2CAkCrD;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAQ,EACR,IAAY,EACZ,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,YAAiB,GAClB,EAAE,eAAe,2CA2GjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/home/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAErD,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAuB1B,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,2CAkCrD;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAQ,EACR,IAAY,EACZ,KAAK,EACL,SAAS,EACT,WAAgB,EAChB,YAAiB,GAClB,EAAE,eAAe,2CA+GjB"}
@@ -8,7 +8,7 @@ import { ThemeToggle } from '../../components/layout/theme-toggle.js';
8
8
  import { LanguageToggle, LanguageToggleText, } from '../../components/layout/language-toggle.js';
9
9
  import { ChevronDown, Languages } from '../../icons.js';
10
10
  import Link from 'fumadocs-core/link';
11
- import { Navbar, NavbarLinkItem, Menu, MenuContent, MenuLinkItem, MenuTrigger, } from '../../layouts/home/client.js';
11
+ import { Navbar, NavigationMenuLinkItem, MobileNavigationMenuContent, MobileNavigationMenuLinkItem, MobileNavigationMenuTrigger, NavigationMenuItem, } from '../../layouts/home/client.js';
12
12
  import { buttonVariants } from '../../components/ui/button.js';
13
13
  export function HomeLayout(props) {
14
14
  const { nav = {}, links, githubUrl, i18n, themeSwitch = {}, searchToggle, ...rest } = props;
@@ -21,20 +21,16 @@ export function Header({ nav = {}, i18n = false, links, githubUrl, themeSwitch =
21
21
  const menuItems = finalLinks.filter((item) => ['menu', 'all'].includes(item.on ?? 'all'));
22
22
  return (_jsxs(Navbar, { children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-semibold", children: nav.title }), nav.children, _jsx("ul", { className: "flex flex-row items-center gap-2 px-6 max-sm:hidden", children: navItems
23
23
  .filter((item) => !isSecondary(item))
24
- .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm" }, i))) }), _jsxs("div", { className: "flex flex-row items-center justify-end gap-1.5 flex-1 max-lg:hidden", children: [searchToggle.enabled !== false &&
24
+ .map((item, i) => (_jsx(NavigationMenuLinkItem, { item: item, className: "text-sm" }, i))) }), _jsxs("div", { className: "flex flex-row items-center justify-end gap-1.5 flex-1 max-lg:hidden", children: [searchToggle.enabled !== false &&
25
25
  (searchToggle.components?.lg ?? (_jsx(LargeSearchToggle, { className: "w-full rounded-full ps-2.5 max-w-[240px]", hideIfDisabled: true }))), themeSwitch.enabled !== false &&
26
- (themeSwitch.component ?? _jsx(ThemeToggle, { mode: themeSwitch?.mode })), i18n && (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-5" }) })), _jsx("ul", { className: "flex flex-row gap-2 items-center empty:hidden", children: navItems.filter(isSecondary).map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: cn(item.type === 'icon' && [
27
- '-mx-1',
28
- i === 0 && 'ms-0',
29
- i === navItems.length - 1 && 'me-0',
30
- ]) }, i))) })] }), _jsxs("ul", { className: "flex flex-row items-center ms-auto -me-1.5 lg:hidden", children: [searchToggle.enabled !== false &&
31
- (searchToggle.components?.sm ?? (_jsx(SearchToggle, { className: "p-2", hideIfDisabled: true }))), _jsxs(Menu, { children: [_jsx(MenuTrigger, { "aria-label": "Toggle Menu", className: cn(buttonVariants({
26
+ (themeSwitch.component ?? _jsx(ThemeToggle, { mode: themeSwitch?.mode })), i18n && (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-5" }) })), _jsx("ul", { className: "flex flex-row gap-2 items-center empty:hidden", children: navItems.filter(isSecondary).map((item, i) => (_jsx(NavigationMenuLinkItem, { className: cn(item.type === 'icon' && '-mx-1 first:ms-0 last:me-0'), item: item }, i))) })] }), _jsxs("ul", { className: "flex flex-row items-center ms-auto -me-1.5 lg:hidden", children: [searchToggle.enabled !== false &&
27
+ (searchToggle.components?.sm ?? (_jsx(SearchToggle, { className: "p-2", hideIfDisabled: true }))), _jsxs(NavigationMenuItem, { children: [_jsx(MobileNavigationMenuTrigger, { "aria-label": "Toggle Menu", className: cn(buttonVariants({
32
28
  size: 'icon',
33
29
  color: 'ghost',
34
30
  className: 'group [&_svg]:size-5.5',
35
- })), enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
31
+ })), enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MobileNavigationMenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
36
32
  .filter((item) => !isSecondary(item))
37
- .map((item, i) => (_jsx(MenuLinkItem, { item: item, className: "sm:hidden" }, i))), _jsxs("div", { className: "-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2", children: [menuItems.filter(isSecondary).map((item, i) => (_jsx(MenuLinkItem, { item: item, className: "-me-1.5" }, i))), _jsx("div", { role: "separator", className: "flex-1" }), i18n ? (_jsxs(LanguageToggle, { children: [_jsx(Languages, { className: "size-5" }), _jsx(LanguageToggleText, {}), _jsx(ChevronDown, { className: "size-3 text-fd-muted-foreground" })] })) : null, themeSwitch.enabled !== false &&
33
+ .map((item, i) => (_jsx(MobileNavigationMenuLinkItem, { item: item, className: "sm:hidden" }, i))), _jsxs("div", { className: "-ms-1.5 flex flex-row items-center gap-2 max-sm:mt-2", children: [menuItems.filter(isSecondary).map((item, i) => (_jsx(MobileNavigationMenuLinkItem, { item: item, className: cn(item.type === 'icon' && '-mx-1 first:ms-0') }, i))), _jsx("div", { role: "separator", className: "flex-1" }), i18n && (_jsxs(LanguageToggle, { children: [_jsx(Languages, { className: "size-5" }), _jsx(LanguageToggleText, {}), _jsx(ChevronDown, { className: "size-3 text-fd-muted-foreground" })] })), themeSwitch.enabled !== false &&
38
34
  (themeSwitch.component ?? (_jsx(ThemeToggle, { mode: themeSwitch?.mode })))] })] })] })] })] }));
39
35
  }
40
36
  function isSecondary(item) {
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -465,9 +465,6 @@
465
465
  .-ms-1\.5 {
466
466
  margin-inline-start: calc(var(--spacing) * -1.5);
467
467
  }
468
- .ms-0 {
469
- margin-inline-start: calc(var(--spacing) * 0);
470
- }
471
468
  .ms-2 {
472
469
  margin-inline-start: calc(var(--spacing) * 2);
473
470
  }
@@ -486,9 +483,6 @@
486
483
  .-me-2 {
487
484
  margin-inline-end: calc(var(--spacing) * -2);
488
485
  }
489
- .me-0 {
490
- margin-inline-end: calc(var(--spacing) * 0);
491
- }
492
486
  .me-1 {
493
487
  margin-inline-end: calc(var(--spacing) * 1);
494
488
  }
@@ -1921,6 +1915,11 @@
1921
1915
  content: var(--tw-content);
1922
1916
  }
1923
1917
  }
1918
+ .first\:ms-0 {
1919
+ &:first-child {
1920
+ margin-inline-start: calc(var(--spacing) * 0);
1921
+ }
1922
+ }
1924
1923
  .first\:mt-0 {
1925
1924
  &:first-child {
1926
1925
  margin-top: calc(var(--spacing) * 0);
@@ -1931,6 +1930,11 @@
1931
1930
  padding-top: calc(var(--spacing) * 0);
1932
1931
  }
1933
1932
  }
1933
+ .last\:me-0 {
1934
+ &:last-child {
1935
+ margin-inline-end: calc(var(--spacing) * 0);
1936
+ }
1937
+ }
1934
1938
  .last\:rounded-b-xl {
1935
1939
  &:last-child {
1936
1940
  border-bottom-right-radius: var(--radius-xl);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "16.0.10",
3
+ "version": "16.0.12",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -120,22 +120,22 @@
120
120
  "postcss-selector-parser": "^7.1.0",
121
121
  "react-medium-image-zoom": "^5.4.0",
122
122
  "scroll-into-view-if-needed": "^3.1.0",
123
- "tailwind-merge": "^3.3.1",
124
- "fumadocs-core": "16.0.10"
123
+ "tailwind-merge": "^3.4.0",
124
+ "fumadocs-core": "16.0.12"
125
125
  },
126
126
  "devDependencies": {
127
- "@next/eslint-plugin-next": "16.0.1",
128
- "@tailwindcss/cli": "^4.1.16",
127
+ "@next/eslint-plugin-next": "16.0.3",
128
+ "@tailwindcss/cli": "^4.1.17",
129
129
  "@types/lodash.merge": "^4.6.9",
130
- "@types/node": "^24.10.0",
131
- "@types/react": "^19.2.2",
132
- "@types/react-dom": "^19.2.2",
133
- "next": "16.0.1",
134
- "tailwindcss": "^4.1.16",
130
+ "@types/node": "^24.10.1",
131
+ "@types/react": "^19.2.5",
132
+ "@types/react-dom": "^19.2.3",
133
+ "next": "16.0.3",
134
+ "tailwindcss": "^4.1.17",
135
135
  "tsc-alias": "^1.8.16",
136
136
  "@fumadocs/cli": "1.0.3",
137
137
  "eslint-config-custom": "0.0.0",
138
- "fumadocs-core": "16.0.10",
138
+ "fumadocs-core": "16.0.12",
139
139
  "tsconfig": "0.0.0"
140
140
  },
141
141
  "peerDependencies": {