fumadocs-ui 15.3.3 → 15.3.4

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.
package/css/preset.css CHANGED
@@ -40,6 +40,9 @@
40
40
  --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;
41
41
  --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;
42
42
 
43
+ --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;
44
+ --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;
45
+
43
46
  --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;
44
47
  --animate-fd-exitToRight: fd-exitToRight 250ms ease;
45
48
 
@@ -187,6 +190,18 @@
187
190
  }
188
191
  }
189
192
 
193
+ @keyframes fd-sidebar-in {
194
+ from {
195
+ transform: translateX(-100%);
196
+ }
197
+ }
198
+
199
+ @keyframes fd-sidebar-out {
200
+ to {
201
+ transform: translateX(-100%);
202
+ }
203
+ }
204
+
190
205
  @keyframes fd-nav-menu-in {
191
206
  from {
192
207
  opacity: 0;
@@ -243,6 +258,10 @@
243
258
  &::-webkit-scrollbar-track {
244
259
  background: transparent;
245
260
  }
261
+
262
+ &::-webkit-scrollbar-corner {
263
+ display: none;
264
+ }
246
265
  }
247
266
 
248
267
  @utility fd-steps {
package/css/vitepress.css CHANGED
@@ -63,16 +63,13 @@
63
63
 
64
64
  #nd-sidebar {
65
65
  background-color: hsl(240, 6%, 97%);
66
+ border-color: transparent;
66
67
  }
67
68
 
68
69
  .dark #nd-sidebar {
69
70
  background-color: hsl(240, 4%, 9%);
70
71
  }
71
72
 
72
- #nd-sidebar > div {
73
- border-color: transparent;
74
- }
75
-
76
73
  button[data-search-full] {
77
74
  background-color: var(--color-fd-background);
78
75
  }
@@ -22,7 +22,7 @@ export function RootToggle({ options, placeholder, ...props }) {
22
22
  setOpen(false);
23
23
  };
24
24
  const item = selected ? _jsx(Item, { ...selected }) : placeholder;
25
- return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [item ? (_jsxs(PopoverTrigger, { ...props, className: cn('flex items-center gap-2.5 rounded-lg pe-2 hover:text-fd-accent-foreground', props.className), children: [item, _jsx(ChevronsUpDown, { className: "size-4 text-fd-muted-foreground" })] })) : null, _jsx(PopoverContent, { className: "w-(--radix-popover-trigger-width) overflow-hidden p-0", children: options.map((item) => (_jsx(Link, { href: item.url, onClick: onClick, ...item.props, className: cn('flex w-full flex-row items-center gap-2 px-2 py-1.5', selected === item
25
+ return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [item ? (_jsxs(PopoverTrigger, { ...props, className: cn('flex items-center gap-2 rounded-lg pe-2 hover:text-fd-accent-foreground', props.className), children: [item, _jsx(ChevronsUpDown, { className: "size-4 text-fd-muted-foreground" })] })) : null, _jsx(PopoverContent, { className: "w-(--radix-popover-trigger-width) overflow-hidden p-0", children: options.map((item) => (_jsx(Link, { href: item.url, onClick: onClick, ...item.props, className: cn('flex w-full flex-row items-center gap-2 px-2 py-1.5', selected === item
26
26
  ? 'bg-fd-accent text-fd-accent-foreground'
27
27
  : 'hover:bg-fd-accent/50', item.props?.className), children: _jsx(Item, { ...item }) }, item.url))) })] }));
28
28
  }
@@ -21,7 +21,7 @@ export function LargeSearchToggle({ hideIfDisabled, ...props }) {
21
21
  const { text } = useI18n();
22
22
  if (hideIfDisabled && !enabled)
23
23
  return null;
24
- return (_jsxs("button", { type: "button", "data-search-full": "", ...props, className: cn('inline-flex items-center gap-2 rounded-full border bg-fd-secondary/50 p-1.5 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground', props.className), onClick: () => {
24
+ return (_jsxs("button", { type: "button", "data-search-full": "", ...props, className: cn('inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground', props.className), onClick: () => {
25
25
  setOpenSearch(true);
26
- }, children: [_jsx(Search, { className: "ms-1 size-4" }), text.search, _jsx("div", { className: "ms-auto inline-flex gap-0.5", children: hotKey.map((k, i) => (_jsx("kbd", { className: "rounded-md border bg-fd-background px-1.5", children: k.display }, i))) })] }));
26
+ }, children: [_jsx(Search, { className: "size-4" }), text.search, _jsx("div", { className: "ms-auto inline-flex gap-0.5", children: hotKey.map((k, i) => (_jsx("kbd", { className: "rounded-md border bg-fd-background px-1.5", children: k.display }, i))) })] }));
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,EAAE,EAGP,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC3D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA2BD,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,WAAkB,EAClB,GAAG,KAAK,EACT,EAAE,YAAY,2CAkHd;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAarD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,2CAkB1D;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAqBzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAsCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAgBrE;AAgBD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAA;KAAE,CAAC,CAAC;IAClC,MAAM,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,2CAuDA"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/sidebar.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,EAAE,EAEP,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC3D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AA2BD,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,WAAkB,EAClB,GAAG,KAAK,EACT,EAAE,YAAY,2CAmHd;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CASzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAcrD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,2CAkB1D;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAqBzB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAsCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAgBrE;AAgBD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAA;KAAE,CAAC,CAAC;IAClC,MAAM,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC1E,SAAS,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,2CAuDA"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ChevronDown, ExternalLink } from '../../icons.js';
4
4
  import { usePathname } from 'fumadocs-core/framework';
5
5
  import { createContext, Fragment, useContext, useMemo, useRef, useState, } from 'react';
@@ -45,18 +45,22 @@ export function Sidebar({ defaultOpenLevel = 0, prefetch = true, collapsible = t
45
45
  });
46
46
  if (isMobile) {
47
47
  const state = open ? 'open' : 'closed';
48
- return (_jsxs(_Fragment, { children: [_jsx(Presence, { present: open, children: _jsx("div", { "data-state": state, className: "fixed z-40 inset-0 bg-black/30 backdrop-blur-sm data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out", onClick: () => setOpen(false) }) }), _jsx(Presence, { present: open, children: ({ present }) => (_jsx(RemoveScroll, { as: "aside", enabled: present, id: "nd-sidebar-mobile", ...props, "data-state": state, className: cn('fixed text-[15px] flex flex-col py-3 rounded-e-xl border-e start-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-enterFromLeft data-[state=closed]:animate-fd-exitToLeft', !present && 'invisible', props.className), children: _jsx(Context.Provider, { value: context, children: props.children }) })) })] }));
48
+ return (_jsxs(Context.Provider, { value: context, children: [_jsx(Presence, { present: open, children: _jsx("div", { "data-state": state, className: "fixed z-40 inset-0 bg-black/30 backdrop-blur-sm data-[state=open]:animate-fd-fade-in data-[state=closed]:animate-fd-fade-out", onClick: () => setOpen(false) }) }), _jsx(Presence, { present: open, children: ({ present }) => (_jsx(RemoveScroll, { as: "aside", enabled: present, id: "nd-sidebar-mobile", ...props, "data-state": state, className: cn('fixed text-[15px] flex flex-col py-2 rounded-e-2xl border-e start-0 inset-y-0 w-[85%] max-w-[380px] z-40 bg-fd-background data-[state=open]:animate-fd-sidebar-in data-[state=closed]:animate-fd-sidebar-out', !present && 'invisible', props.className), children: props.children })) })] }));
49
49
  }
50
- return (_jsx("aside", { id: "nd-sidebar", ...props, "data-collapsed": collapsed, className: cn('sticky top-(--fd-sidebar-top) z-20 bg-fd-card text-sm h-(--fd-sidebar-height) max-md:hidden', collapsible && [
51
- 'transition-all',
52
- collapsed &&
53
- '-me-(--fd-sidebar-width) -translate-x-(--fd-sidebar-offset) rtl:translate-x-(--fd-sidebar-offset)',
54
- collapsed && hover && 'z-50 translate-x-0',
55
- collapsed && !hover && 'opacity-0',
50
+ return (_jsx("aside", { id: "nd-sidebar", ...props, "data-collapsed": collapsed, className: cn('sticky shrink-0 flex flex-col items-end top-(--fd-sidebar-top) z-20 bg-fd-card text-sm h-(--fd-sidebar-height) w-(--fd-sidebar-width) *:w-(--fd-sidebar-width) border-e max-md:hidden', collapsed && [
51
+ 'rounded-xl border',
52
+ hover
53
+ ? 'z-50 translate-x-2 shadow-lg'
54
+ : 'opacity-0 -translate-x-(--fd-sidebar-offset) rtl:translate-x-(--fd-sidebar-offset)',
56
55
  ], props.className), style: {
57
- '--fd-sidebar-offset': 'calc(var(--fd-sidebar-width) - 6px)',
58
- '--fd-sidebar-top': 'calc(var(--fd-banner-height) + var(--fd-nav-height))',
59
- '--fd-sidebar-height': 'calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))',
56
+ transition: [
57
+ ...['border', 'height', 'top'].map((v) => collapsed ? `${v} step-end 200ms` : `${v} step-start 200ms`),
58
+ ...['opacity', 'margin', 'translate'].map((v) => `${v} ease 200ms`),
59
+ ].join(', '),
60
+ '--fd-sidebar-offset': 'calc(100% - 16px)',
61
+ '--fd-sidebar-margin': collapsed ? '0.5rem' : '0px',
62
+ '--fd-sidebar-top': `calc(var(--fd-banner-height) + var(--fd-nav-height) + var(--fd-sidebar-margin))`,
63
+ '--fd-sidebar-height': 'calc(100dvh - var(--fd-sidebar-top) - var(--fd-sidebar-margin))',
60
64
  ...props.style,
61
65
  }, onPointerEnter: (e) => {
62
66
  if (!collapsible ||
@@ -76,22 +80,22 @@ export function Sidebar({ defaultOpenLevel = 0, prefetch = true, collapsible = t
76
80
  }, Math.min(e.clientX, document.body.clientWidth - e.clientX) > 100
77
81
  ? 0
78
82
  : 500);
79
- }, children: _jsx("div", { className: "flex w-(--fd-sidebar-width) h-full max-w-full flex-col pt-1.5 ms-auto border-e", children: _jsx(Context.Provider, { value: context, children: props.children }) }) }));
83
+ }, children: _jsx(Context.Provider, { value: context, children: props.children }) }));
80
84
  }
81
85
  export function SidebarHeader(props) {
82
- return (_jsx("div", { ...props, className: cn('flex flex-col gap-3 px-4 py-2', props.className), children: props.children }));
86
+ return (_jsx("div", { ...props, className: cn('flex flex-col gap-3 p-4 pb-2', props.className), children: props.children }));
83
87
  }
84
88
  export function SidebarFooter(props) {
85
89
  return (_jsx("div", { ...props, className: cn('flex flex-col border-t px-4 py-3', props.className), children: props.children }));
86
90
  }
87
91
  export function SidebarViewport(props) {
88
92
  return (_jsx(ScrollArea, { ...props, className: cn('h-full', props.className), children: _jsx(ScrollViewport, { className: "p-4", style: {
89
- maskImage: 'linear-gradient(to bottom, transparent, white 12px)',
93
+ maskImage: 'linear-gradient(to bottom, transparent, white 12px, white calc(100% - 12px), transparent)',
90
94
  }, children: props.children }) }));
91
95
  }
92
96
  export function SidebarSeparator(props) {
93
97
  const { level } = useInternalContext();
94
- return (_jsx("p", { ...props, className: cn('inline-flex items-center gap-2 mb-2 px-2 font-medium empty:mb-0 [&_svg]:size-4 [&_svg]:shrink-0', props.className), style: {
98
+ return (_jsx("p", { ...props, className: cn('inline-flex items-center gap-2 mb-1.5 px-2 font-medium empty:mb-0 [&_svg]:size-4 [&_svg]:shrink-0', props.className), style: {
95
99
  paddingInlineStart: getOffset(level),
96
100
  ...props.style,
97
101
  }, children: props.children }));
@@ -145,7 +149,7 @@ export function SidebarFolderContent(props) {
145
149
  return (_jsx(CollapsibleContent, { ...props, className: cn('relative', props.className), children: _jsxs(Context.Provider, { value: useMemo(() => ({
146
150
  ...ctx,
147
151
  level: ctx.level + 1,
148
- }), [ctx]), children: [ctx.level === 1 && (_jsx("div", { className: "absolute w-px inset-y-0 bg-fd-border start-3" })), props.children] }) }));
152
+ }), [ctx]), children: [ctx.level === 1 && (_jsx("div", { className: "absolute w-px inset-y-1 bg-fd-border start-2.5" })), props.children] }) }));
149
153
  }
150
154
  export function SidebarCollapseTrigger(props) {
151
155
  const { collapsed, setCollapsed } = useSidebar();
@@ -199,10 +203,10 @@ function PageTreeFolder({ item, ...props }) {
199
203
  return (_jsxs(SidebarFolder, { defaultOpen: (item.defaultOpen ?? defaultOpenLevel >= level) || path.includes(item), children: [item.index ? (_jsxs(SidebarFolderLink, { href: item.index.url, external: item.index.external, ...props, children: [item.icon, item.name] })) : (_jsxs(SidebarFolderTrigger, { ...props, children: [item.icon, item.name] })), _jsx(SidebarFolderContent, { children: props.children })] }));
200
204
  }
201
205
  function getOffset(level) {
202
- return `calc(var(--spacing) * ${level > 1 ? (level - 1) * 3 + 3 : 2})`;
206
+ return `calc(var(--spacing) * ${level > 1 ? level * 3 : 2})`;
203
207
  }
204
208
  function Border({ level, active }) {
205
209
  if (level <= 1)
206
210
  return null;
207
- return (_jsx("div", { className: cn('absolute w-px inset-y-3 z-[2] start-3 md:inset-y-2', active && 'bg-fd-primary') }));
211
+ return (_jsx("div", { className: cn('absolute w-px inset-y-3 z-[2] start-2.5 md:inset-y-2', active && 'bg-fd-primary') }));
208
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,IAAI,SAAS,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAuBf,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAcD,eAAO,MAAM,QAAQ,sMAAqB,CAAC;AAC3C,eAAO,MAAM,WAAW,+MAAwB,CAAC;AAEjD,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,KAAK,EACL,OAAe,EACf,KAAK,EACL,YAAgB,EAChB,YAAoB,EACpB,YAAmE,EACnE,GAAG,KAAK,EACT,EAAE,SAAS,2CAmFX;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG;IACvD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,2CAgBhD;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAmB3E"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,IAAI,SAAS,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,SAAS,EAOf,MAAM,OAAO,CAAC;AAuBf,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAcD,eAAO,MAAM,QAAQ,sMAAqB,CAAC;AAC3C,eAAO,MAAM,WAAW,+MAAwB,CAAC;AAEjD,wBAAgB,IAAI,CAAC,EACnB,OAAO,EACP,KAAK,EACL,OAAe,EACf,KAAK,EACL,YAAgB,EAChB,YAAoB,EACpB,YAAmE,EACnE,GAAG,KAAK,EACT,EAAE,SAAS,2CAmFX;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG;IACvD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,2CAgBhD;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAoB3E"}
@@ -91,7 +91,7 @@ export function TabsContent({ value, className, ...props }) {
91
91
  if (props.id) {
92
92
  valueToIdMap.set(value, props.id);
93
93
  }
94
- return (_jsx(Primitive.TabsContent, { value: value, className: cn('prose-no-margin [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none', className), ...props, children: props.children }));
94
+ return (_jsx(Primitive.TabsContent, { value: value, forceMount: true, className: cn('prose-no-margin data-[state=inactive]:hidden [&>figure:only-child]:-m-4 [&>figure:only-child]:border-none', className), ...props, children: props.children }));
95
95
  }
96
96
  /**
97
97
  * Inspired by Headless UI.
@@ -1 +1 @@
1
- {"version":3,"file":"hide-if-empty.d.ts","sourceRoot":"","sources":["../../../src/components/ui/hide-if-empty.tsx"],"names":[],"mappings":"AAoCA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAyCtE"}
1
+ {"version":3,"file":"hide-if-empty.d.ts","sourceRoot":"","sources":["../../../src/components/ui/hide-if-empty.tsx"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAyDtE"}
@@ -2,21 +2,6 @@
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import { useEffect, useId, useRef, useState } from 'react';
5
- const init = `function isEmpty(node) {
6
- for (let i = 0; i < node.childNodes.length; i++) {
7
- const child = node.childNodes.item(i);
8
- if (child.nodeType === Node.TEXT_NODE) {
9
- return false
10
- } else if (
11
- child.nodeType === Node.ELEMENT_NODE &&
12
- window.getComputedStyle(child).display !== 'none'
13
- ) {
14
- return false
15
- }
16
- }
17
-
18
- return true;
19
- }`;
20
5
  function isEmpty(node) {
21
6
  for (let i = 0; i < node.childNodes.length; i++) {
22
7
  const child = node.childNodes.item(i);
@@ -55,10 +40,25 @@ export function HideIfEmpty({ children }) {
55
40
  };
56
41
  }, []);
57
42
  const inject = `
58
- ${init}
59
- const element = document.querySelector('[data-hide-if-empty="${id}"]')
43
+ function isEmpty(node) {
44
+ for (let i = 0; i < node.childNodes.length; i++) {
45
+ const child = node.childNodes.item(i);
46
+ if (child.nodeType === Node.TEXT_NODE) {
47
+ return false
48
+ } else if (
49
+ child.nodeType === Node.ELEMENT_NODE &&
50
+ window.getComputedStyle(child).display !== 'none'
51
+ ) {
52
+ return false
53
+ }
54
+ }
55
+
56
+ return true;
57
+ }
58
+
59
+ const element = document.querySelector('[data-fdid="${id}"]')
60
60
  if (element) {
61
61
  element.setAttribute('data-empty', String(isEmpty(element)))
62
62
  }`;
63
- return (_jsxs(_Fragment, { children: [empty === undefined && _jsx("script", { children: `{ ${inject} }` }), _jsx(Slot, { ref: ref, "data-hide-if-empty": id, "data-empty": empty, className: "data-[empty=true]:hidden", children: children })] }));
63
+ return (_jsxs(_Fragment, { children: [_jsx(Slot, { ref: ref, "data-fdid": id, "data-empty": empty, className: "data-[empty=true]:hidden", suppressHydrationWarning: true, children: children }), empty === undefined && _jsx("script", { children: `{ ${inject} }` })] }));
64
64
  }
@@ -10,7 +10,7 @@ import { SearchToggle } from '../components/layout/search-toggle.js';
10
10
  export function Navbar(props) {
11
11
  const { open } = useSidebar();
12
12
  const { isTransparent } = useNav();
13
- return (_jsx("header", { id: "nd-subnav", ...props, className: cn('sticky top-(--fd-banner-height) z-30 flex h-14 items-center px-4 border-b transition-colors backdrop-blur-sm md:px-6', (!isTransparent || open) && 'bg-fd-background/80', props.className), children: props.children }));
13
+ return (_jsx("header", { id: "nd-subnav", ...props, className: cn('sticky top-(--fd-banner-height) z-30 flex items-center px-4 border-b transition-colors backdrop-blur-sm', (!isTransparent || open) && 'bg-fd-background/80', props.className), children: props.children }));
14
14
  }
15
15
  export function NavbarSidebarTrigger({ className, ...props }) {
16
16
  const { setOpen } = useSidebar();
@@ -1 +1 @@
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,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAarE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEF;;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,OAAY,EACZ,YAAY,EACZ,kBAA0B,EAC1B,WAA8C,EAC9C,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CAkG7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAkB,EAClB,UAAU,EACV,GAAG,EACH,KAAU,EACV,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAChC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,2CAgDA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,KAAU,GACX,EAAE;IACD,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;CAC9C,2CAgCA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
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,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAarE,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAK1D,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;IAEF;;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,OAAY,EACZ,YAAY,EACZ,kBAA0B,EAC1B,WAA8C,EAC9C,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CAgG7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAkB,EAClB,UAAU,EACV,GAAG,EACH,KAAU,EACV,MAAM,EACN,MAAM,EACN,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAChC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB,2CAmDA;AAED,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,WAAW,EACX,KAAU,GACX,EAAE;IACD,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;CAC9C,2CAgCA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
@@ -20,23 +20,23 @@ import { HideIfEmpty } from '../components/ui/hide-if-empty.js';
20
20
  export function DocsLayout({ nav: { transparentMode, ...nav } = {}, sidebar = {}, searchToggle, disableThemeSwitch = false, themeSwitch = { enabled: !disableThemeSwitch }, i18n = false, children, ...props }) {
21
21
  const tabs = useMemo(() => getSidebarTabsFromOptions(sidebar.tabs, props.tree) ?? [], [sidebar.tabs, props.tree]);
22
22
  const links = getLinks(props.links ?? [], props.githubUrl);
23
- const variables = cn('[--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px]', !nav.component && nav.enabled !== false
24
- ? '[--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]'
23
+ const variables = cn('[--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:290px] xl:[--fd-toc-width:290px] xl:[--fd-tocnav-height:0px]', !nav.component && nav.enabled !== false
24
+ ? '[--fd-nav-height:56px] md:[--fd-nav-height:0px]'
25
25
  : undefined);
26
26
  const pageStyles = {
27
27
  tocNav: cn('xl:hidden'),
28
28
  toc: cn('max-xl:hidden'),
29
29
  };
30
- return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsxs(NavProvider, { transparentMode: transparentMode, children: [slot(nav, _jsxs(Navbar, { className: "md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-semibold", children: nav.title }), _jsx("div", { className: "flex flex-1 flex-row items-center gap-1", children: nav.children }), slots('sm', searchToggle, _jsx(SearchToggle, { hideIfDisabled: true })), _jsx(NavbarSidebarTrigger, { className: "-me-2 md:hidden" })] })), _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex flex-1 flex-row pe-(--fd-layout-offset)', variables, props.containerProps?.className), style: {
30
+ return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsxs(NavProvider, { transparentMode: transparentMode, children: [slot(nav, _jsxs(Navbar, { className: "h-14 md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-semibold", children: nav.title }), _jsx("div", { className: "flex-1", children: nav.children }), slots('sm', searchToggle, _jsx(SearchToggle, { hideIfDisabled: true })), _jsx(NavbarSidebarTrigger, { className: "-me-2 md:hidden" })] })), _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex flex-1 flex-row pe-(--fd-layout-offset)', variables, props.containerProps?.className), style: {
31
31
  ...layoutVariables,
32
32
  ...props.containerProps?.style,
33
- }, children: [slot(sidebar, _jsx(DocsLayoutSidebar, { ...omit(sidebar, 'enabled', 'component', 'tabs'), links: links, nav: _jsxs(_Fragment, { children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex text-[15px] items-center gap-2.5 font-medium", children: nav.title }), nav.children] }), banner: _jsxs(_Fragment, { children: [tabs.length > 0 ? _jsx(RootToggle, { options: tabs }) : null, slots('lg', searchToggle, _jsx(LargeSearchToggle, { hideIfDisabled: true, className: "rounded-lg max-md:hidden" })), sidebar.banner] }), footer: _jsxs(_Fragment, { children: [_jsx(DocsLayoutSidebarFooter, { links: links.filter((item) => item.type === 'icon'), i18n: i18n, themeSwitch: themeSwitch }), sidebar.footer] }) })), _jsx(StylesProvider, { ...pageStyles, children: children })] })] }) }));
33
+ }, children: [slot(sidebar, _jsx(DocsLayoutSidebar, { ...omit(sidebar, 'enabled', 'component', 'tabs'), links: links, nav: _jsxs(_Fragment, { children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex text-[15px] items-center gap-2.5 font-medium", children: nav.title }), nav.children] }), banner: _jsxs(_Fragment, { children: [tabs.length > 0 ? _jsx(RootToggle, { options: tabs }) : null, slots('lg', searchToggle, _jsx(LargeSearchToggle, { hideIfDisabled: true, className: "max-md:hidden" })), sidebar.banner] }), footer: _jsxs(_Fragment, { children: [_jsx(DocsLayoutSidebarFooter, { links: links.filter((item) => item.type === 'icon'), i18n: i18n, themeSwitch: themeSwitch }), sidebar.footer] }) })), _jsx(StylesProvider, { ...pageStyles, children: children })] })] }) }));
34
34
  }
35
35
  export function DocsLayoutSidebar({ collapsible = true, components, nav, links = [], footer, banner, ...props }) {
36
- return (_jsxs(_Fragment, { children: [collapsible ? _jsx(CollapsibleControl, {}) : null, _jsxs(Sidebar, { ...props, collapsible: collapsible, className: cn('md:ps-(--fd-layout-offset)', props.className), children: [_jsx(HideIfEmpty, { children: _jsxs(SidebarHeader, { children: [_jsxs("div", { className: "flex py-1.5 max-md:hidden", children: [nav, collapsible && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
36
+ return (_jsxs(_Fragment, { children: [collapsible ? _jsx(CollapsibleControl, {}) : null, _jsxs(Sidebar, { ...props, collapsible: collapsible, className: cn('data-[collapsed=false]:w-[calc(var(--fd-sidebar-width)+var(--fd-layout-offset))] data-[collapsed=true]:me-[calc(var(--fd-layout-offset)-var(--fd-sidebar-width))]', props.className), children: [_jsx(HideIfEmpty, { children: _jsxs(SidebarHeader, { children: [_jsxs("div", { className: "flex max-md:hidden", children: [nav, collapsible && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
37
37
  color: 'ghost',
38
38
  size: 'icon-sm',
39
- }), 'ms-auto mb-auto -my-1.5 text-fd-muted-foreground max-md:hidden'), children: _jsx(SidebarIcon, {}) }))] }), banner] }) }), _jsxs(SidebarViewport, { children: [links
39
+ }), 'ms-auto mb-auto text-fd-muted-foreground max-md:hidden'), children: _jsx(SidebarIcon, {}) }))] }), banner] }) }), _jsxs(SidebarViewport, { children: [links
40
40
  .filter((v) => v.type !== 'icon')
41
41
  .map((item, i, list) => (_jsx(SidebarLinkItem, { item: item, className: cn(i === list.length - 1 && 'mb-4') }, i))), _jsx(SidebarPageTree, { components: components })] }), _jsx(HideIfEmpty, { children: _jsx(SidebarFooter, { children: footer }) })] })] }));
42
42
  }
@@ -21,7 +21,7 @@ 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", children: [slots('sm', searchToggle, _jsx(SearchToggle, { className: "lg:hidden", hideIfDisabled: true })), slots('lg', searchToggle, _jsx(LargeSearchToggle, { className: "w-full max-w-[240px] max-lg:hidden", hideIfDisabled: true })), slot(themeSwitch, _jsx(ThemeToggle, { className: "max-lg:hidden", mode: themeSwitch?.mode })), i18n ? (_jsx(LanguageToggle, { className: "max-lg:hidden", children: _jsx(Languages, { className: "size-5" }) })) : null] }), _jsxs("ul", { className: "flex flex-row items-center", children: [navItems.filter(isSecondary).map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "-me-1.5 max-lg:hidden" }, i))), _jsxs(Menu, { className: "lg:hidden", children: [_jsx(MenuTrigger, { "aria-label": "Toggle Menu", className: "group -me-2", enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "size-3 transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
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", children: [slots('sm', searchToggle, _jsx(SearchToggle, { className: "lg:hidden", hideIfDisabled: true })), slots('lg', searchToggle, _jsx(LargeSearchToggle, { className: "w-full rounded-full ps-2.5 max-w-[240px] max-lg:hidden", hideIfDisabled: true })), slot(themeSwitch, _jsx(ThemeToggle, { className: "max-lg:hidden", mode: themeSwitch?.mode })), i18n ? (_jsx(LanguageToggle, { className: "max-lg:hidden", children: _jsx(Languages, { className: "size-5" }) })) : null] }), _jsxs("ul", { className: "flex flex-row items-center", children: [navItems.filter(isSecondary).map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "-me-1.5 max-lg:hidden" }, i))), _jsxs(Menu, { className: "lg:hidden", children: [_jsx(MenuTrigger, { "aria-label": "Toggle Menu", className: "group -me-2", enableHover: nav.enableHoverToOpen, children: _jsx(ChevronDown, { className: "size-3 transition-transform duration-300 group-data-[state=open]:rotate-180" }) }), _jsxs(MenuContent, { className: "sm:flex-row sm:items-center sm:justify-end", children: [menuItems
25
25
  .filter((item) => !isSecondary(item))
26
26
  .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, slot(themeSwitch, _jsx(ThemeToggle, { mode: themeSwitch?.mode }))] })] })] })] })] }));
27
27
  }
@@ -11,7 +11,7 @@ import { isActive } from '../utils/is-active.js';
11
11
  export function Navbar({ mode, ...props }) {
12
12
  const { open, collapsed } = useSidebar();
13
13
  const { isTransparent } = useNav();
14
- return (_jsx("header", { id: "nd-subnav", ...props, className: cn('fixed inset-x-0 top-(--fd-banner-height) z-10 px-(--fd-layout-offset) backdrop-blur-sm transition-colors', (!isTransparent || open) && 'bg-fd-background/80', mode === 'auto' &&
14
+ return (_jsx("header", { id: "nd-subnav", ...props, className: cn('fixed flex flex-col inset-x-0 top-(--fd-banner-height) z-10 px-(--fd-layout-offset) h-(--fd-nav-height) backdrop-blur-sm transition-colors', (!isTransparent || open) && 'bg-fd-background/80', mode === 'auto' &&
15
15
  !collapsed &&
16
16
  'ps-[calc(var(--fd-layout-offset)+var(--fd-sidebar-width))]', props.className), children: props.children }));
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAqB/E,OAAO,EAIL,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;AAc3B,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,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAmKhD;AAoLD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,kBAAkB,CAAC;AAqB/E,OAAO,EAIL,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;AAc3B,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,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAiKhD;AAsLD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC"}
@@ -22,25 +22,23 @@ export function DocsLayout(props) {
22
22
  const navMode = nav.mode ?? 'auto';
23
23
  const links = getLinks(props.links ?? [], props.githubUrl);
24
24
  const tabs = useMemo(() => getSidebarTabsFromOptions(tabOptions, props.tree) ?? [], [tabOptions, props.tree]);
25
- const variables = cn('[--fd-nav-height:calc(var(--spacing)*14)] [--fd-tocnav-height:36px] md:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px]', tabs.length > 0 &&
26
- tabMode === 'navbar' &&
27
- 'lg:[--fd-nav-height:calc(var(--spacing)*24)]');
25
+ const variables = cn('[--fd-nav-height:56px] [--fd-tocnav-height:36px] md:[--fd-sidebar-width:286px] md:[--fd-nav-height:64px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px]', tabs.length > 0 && tabMode === 'navbar' && 'lg:[--fd-nav-height:104px]');
28
26
  const pageStyles = {
29
27
  tocNav: cn('xl:hidden'),
30
28
  toc: cn('max-xl:hidden'),
31
29
  page: cn('mt-(--fd-nav-height)'),
32
30
  };
33
- const sidebarHeader = navMode === 'auto' && (_jsxs("div", { className: "flex justify-between max-md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-medium", children: nav.title }), (sidebar.collapsible ?? true) && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
31
+ const sidebarHeader = (_jsxs("div", { className: "flex justify-between max-md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-medium", children: nav.title }), (sidebar.collapsible ?? true) && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
34
32
  color: 'ghost',
35
33
  size: 'icon-sm',
36
- className: 'mb-auto text-fd-muted-foreground',
34
+ className: 'mt-px mb-auto text-fd-muted-foreground',
37
35
  })), children: _jsx(SidebarIcon, {}) }))] }));
38
36
  return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsx(NavProvider, { transparentMode: transparentMode, children: _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex w-full flex-1 flex-row pe-(--fd-layout-offset)', variables, props.containerProps?.className), style: {
39
37
  ...layoutVariables,
40
38
  ...props.containerProps?.style,
41
- }, children: [_jsxs(Sidebar, { ...sidebar, className: cn('md:ps-(--fd-layout-offset)', navMode === 'top'
39
+ }, children: [_jsxs(Sidebar, { ...sidebar, className: cn('data-[collapsed=false]:w-[calc(var(--fd-sidebar-width)+var(--fd-layout-offset))] data-[collapsed=true]:me-[calc(var(--fd-layout-offset)-var(--fd-sidebar-width))]', navMode === 'top'
42
40
  ? 'md:bg-transparent'
43
- : 'md:[--fd-nav-height:0px]', sidebar.className), children: [_jsx(HideIfEmpty, { children: _jsxs(SidebarHeader, { children: [sidebarHeader, nav.children, sidebarBanner, tabMode === 'sidebar' && tabs.length > 0 ? (_jsx(RootToggle, { className: "mb-2", options: tabs })) : null, tabMode === 'navbar' && tabs.length > 0 && (_jsx(RootToggle, { options: tabs, className: "lg:hidden" }))] }) }), _jsxs(SidebarViewport, { children: [links
41
+ : 'md:[--fd-nav-height:0px]', sidebar.className), children: [_jsx(HideIfEmpty, { children: _jsxs(SidebarHeader, { children: [navMode === 'auto' && sidebarHeader, nav.children, sidebarBanner, tabMode === 'sidebar' && tabs.length > 0 ? (_jsx(RootToggle, { className: "mb-2", options: tabs })) : null, tabMode === 'navbar' && tabs.length > 0 && (_jsx(RootToggle, { options: tabs, className: "lg:hidden" }))] }) }), _jsxs(SidebarViewport, { children: [links
44
42
  .filter((item) => item.type !== 'icon')
45
43
  .map((item, i) => (_jsx(SidebarLinkItem, { item: item, className: cn('lg:hidden', i === links.length - 1 && 'mb-4') }, i))), _jsx(SidebarPageTree, { components: sidebarComponents })] }), _jsx(HideIfEmpty, { children: _jsxs(SidebarFooter, { className: "flex flex-row items-center justify-end", children: [_jsx("div", { className: "flex items-center flex-1 empty:hidden lg:hidden", children: links
46
44
  .filter((item) => item.type === 'icon')
@@ -54,10 +52,12 @@ function DocsNavbar({ links, tabs, ...props }) {
54
52
  const navMode = props.nav?.mode ?? 'auto';
55
53
  const sidebarCollapsible = props.sidebar?.collapsible ?? true;
56
54
  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 }));
57
- return (_jsxs(Navbar, { mode: navMode, children: [_jsxs("div", { className: cn('flex flex-row border-b px-4 h-14', 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({
55
+ 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({
58
56
  color: 'ghost',
59
57
  size: 'icon-sm',
60
- }), 'text-fd-muted-foreground -ms-1.5 me-2 data-[collapsed=false]:hidden max-md:hidden'), children: _jsx(SidebarIcon, {}) })) : null, nav] }), slots('lg', props.searchToggle, _jsx(LargeSearchToggle, { hideIfDisabled: true, className: cn('w-full my-auto rounded-xl max-md:hidden', navMode === 'top' ? 'max-w-sm px-2' : '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
58
+ }), 'text-fd-muted-foreground -ms-1.5 me-2 data-[collapsed=false]:hidden max-md:hidden'), children: _jsx(SidebarIcon, {}) })) : null, nav] }), slots('lg', props.searchToggle, _jsx(LargeSearchToggle, { hideIfDisabled: true, className: cn('w-full my-auto max-md:hidden', navMode === 'top'
59
+ ? 'rounded-xl max-w-sm ps-2.5'
60
+ : '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
61
61
  .filter((item) => item.type !== 'icon')
62
62
  .map((item, i) => (_jsx(NavbarLinkItem, { item: item, className: "text-sm text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground" }, i))) }), props.nav?.children, slots('sm', props.searchToggle, _jsx(SearchToggle, { hideIfDisabled: true, className: "md:hidden" })), _jsx(NavbarSidebarTrigger, { className: "-me-1.5 md:hidden" }), links
63
63
  .filter((item) => item.type === 'icon')
package/dist/style.css CHANGED
@@ -82,6 +82,8 @@
82
82
  --animate-fd-nav-menu-out: fd-nav-menu-out 200ms ease;
83
83
  --animate-fd-enterFromLeft: fd-enterFromLeft 250ms ease;
84
84
  --animate-fd-enterFromRight: fd-enterFromRight 250ms ease;
85
+ --animate-fd-sidebar-in: fd-sidebar-in 250ms ease;
86
+ --animate-fd-sidebar-out: fd-sidebar-out 250ms ease;
85
87
  --animate-fd-exitToLeft: fd-exitToLeft 250ms ease;
86
88
  --animate-fd-exitToRight: fd-exitToRight 250ms ease;
87
89
  }
@@ -303,14 +305,17 @@
303
305
  .inset-y-0 {
304
306
  inset-block: calc(var(--spacing) * 0);
305
307
  }
308
+ .inset-y-1 {
309
+ inset-block: calc(var(--spacing) * 1);
310
+ }
306
311
  .inset-y-3 {
307
312
  inset-block: calc(var(--spacing) * 3);
308
313
  }
309
314
  .start-0 {
310
315
  inset-inline-start: calc(var(--spacing) * 0);
311
316
  }
312
- .start-3 {
313
- inset-inline-start: calc(var(--spacing) * 3);
317
+ .start-2\.5 {
318
+ inset-inline-start: calc(var(--spacing) * 2.5);
314
319
  }
315
320
  .end-2 {
316
321
  inset-inline-end: calc(var(--spacing) * 2);
@@ -412,9 +417,6 @@
412
417
  .\!my-0 {
413
418
  margin-block: calc(var(--spacing) * 0) !important;
414
419
  }
415
- .-my-1\.5 {
416
- margin-block: calc(var(--spacing) * -1.5);
417
- }
418
420
  .my-0 {
419
421
  margin-block: calc(var(--spacing) * 0);
420
422
  }
@@ -430,9 +432,6 @@
430
432
  .-ms-1\.5 {
431
433
  margin-inline-start: calc(var(--spacing) * -1.5);
432
434
  }
433
- .ms-1 {
434
- margin-inline-start: calc(var(--spacing) * 1);
435
- }
436
435
  .ms-2 {
437
436
  margin-inline-start: calc(var(--spacing) * 2);
438
437
  }
@@ -442,9 +441,6 @@
442
441
  .ms-px {
443
442
  margin-inline-start: 1px;
444
443
  }
445
- .-me-\(--fd-sidebar-width\) {
446
- margin-inline-end: calc(var(--fd-sidebar-width) * -1);
447
- }
448
444
  .-me-1\.5 {
449
445
  margin-inline-end: calc(var(--spacing) * -1.5);
450
446
  }
@@ -844,12 +840,18 @@
844
840
  .mt-auto {
845
841
  margin-top: auto;
846
842
  }
843
+ .mt-px {
844
+ margin-top: 1px;
845
+ }
847
846
  .mr-auto {
848
847
  margin-right: auto;
849
848
  }
850
849
  .mb-1 {
851
850
  margin-bottom: calc(var(--spacing) * 1);
852
851
  }
852
+ .mb-1\.5 {
853
+ margin-bottom: calc(var(--spacing) * 1.5);
854
+ }
853
855
  .mb-2 {
854
856
  margin-bottom: calc(var(--spacing) * 2);
855
857
  }
@@ -865,6 +867,22 @@
865
867
  .box-content {
866
868
  box-sizing: content-box;
867
869
  }
870
+ .fd-scroll-container {
871
+ &::-webkit-scrollbar {
872
+ width: 5px;
873
+ height: 5px;
874
+ }
875
+ &::-webkit-scrollbar-thumb {
876
+ border-radius: 5px;
877
+ background: var(--color-fd-border);
878
+ }
879
+ &::-webkit-scrollbar-track {
880
+ background: transparent;
881
+ }
882
+ &::-webkit-scrollbar-corner {
883
+ display: none;
884
+ }
885
+ }
868
886
  .block {
869
887
  display: block;
870
888
  }
@@ -886,19 +904,6 @@
886
904
  .table {
887
905
  display: table;
888
906
  }
889
- .fd-scroll-container {
890
- &::-webkit-scrollbar {
891
- width: 5px;
892
- height: 5px;
893
- }
894
- &::-webkit-scrollbar-thumb {
895
- border-radius: 5px;
896
- background: var(--color-fd-border);
897
- }
898
- &::-webkit-scrollbar-track {
899
- background: transparent;
900
- }
901
- }
902
907
  .size-3 {
903
908
  width: calc(var(--spacing) * 3);
904
909
  height: calc(var(--spacing) * 3);
@@ -930,6 +935,9 @@
930
935
  .h-\(--fd-height\) {
931
936
  height: var(--fd-height);
932
937
  }
938
+ .h-\(--fd-nav-height\) {
939
+ height: var(--fd-nav-height);
940
+ }
933
941
  .h-\(--fd-sidebar-height\) {
934
942
  height: var(--fd-sidebar-height);
935
943
  }
@@ -1079,8 +1087,8 @@
1079
1087
  --tw-translate-x: calc(calc(1/2 * 100%) * -1);
1080
1088
  translate: var(--tw-translate-x) var(--tw-translate-y);
1081
1089
  }
1082
- .translate-x-0 {
1083
- --tw-translate-x: calc(var(--spacing) * 0);
1090
+ .translate-x-2 {
1091
+ --tw-translate-x: calc(var(--spacing) * 2);
1084
1092
  translate: var(--tw-translate-x) var(--tw-translate-y);
1085
1093
  }
1086
1094
  .-translate-y-1\/2 {
@@ -1234,9 +1242,9 @@
1234
1242
  .rounded-xl {
1235
1243
  border-radius: var(--radius-xl);
1236
1244
  }
1237
- .rounded-e-xl {
1238
- border-start-end-radius: var(--radius-xl);
1239
- border-end-end-radius: var(--radius-xl);
1245
+ .rounded-e-2xl {
1246
+ border-start-end-radius: var(--radius-2xl);
1247
+ border-end-end-radius: var(--radius-2xl);
1240
1248
  }
1241
1249
  .border {
1242
1250
  border-style: var(--tw-border-style);
@@ -1461,6 +1469,9 @@
1461
1469
  .ps-2 {
1462
1470
  padding-inline-start: calc(var(--spacing) * 2);
1463
1471
  }
1472
+ .ps-2\.5 {
1473
+ padding-inline-start: calc(var(--spacing) * 2.5);
1474
+ }
1464
1475
  .ps-3 {
1465
1476
  padding-inline-start: calc(var(--spacing) * 3);
1466
1477
  }
@@ -1485,9 +1496,6 @@
1485
1496
  .pt-0 {
1486
1497
  padding-top: calc(var(--spacing) * 0);
1487
1498
  }
1488
- .pt-1\.5 {
1489
- padding-top: calc(var(--spacing) * 1.5);
1490
- }
1491
1499
  .pt-8 {
1492
1500
  padding-top: calc(var(--spacing) * 8);
1493
1501
  }
@@ -1705,9 +1713,6 @@
1705
1713
  .\[--fd-nav-height\:56px\] {
1706
1714
  --fd-nav-height: 56px;
1707
1715
  }
1708
- .\[--fd-nav-height\:calc\(var\(--spacing\)\*14\)\] {
1709
- --fd-nav-height: calc(var(--spacing) * 14);
1710
- }
1711
1716
  .\[--fd-tocnav-height\:36px\] {
1712
1717
  --fd-tocnav-height: 36px;
1713
1718
  }
@@ -1734,6 +1739,11 @@
1734
1739
  display: flex;
1735
1740
  }
1736
1741
  }
1742
+ .\*\:w-\(--fd-sidebar-width\) {
1743
+ :is(& > *) {
1744
+ width: var(--fd-sidebar-width);
1745
+ }
1746
+ }
1737
1747
  .\*\:flex-col {
1738
1748
  :is(& > *) {
1739
1749
  flex-direction: column;
@@ -1908,6 +1918,16 @@
1908
1918
  display: none;
1909
1919
  }
1910
1920
  }
1921
+ .data-\[collapsed\=false\]\:w-\[calc\(var\(--fd-sidebar-width\)\+var\(--fd-layout-offset\)\)\] {
1922
+ &[data-collapsed="false"] {
1923
+ width: calc(var(--fd-sidebar-width) + var(--fd-layout-offset));
1924
+ }
1925
+ }
1926
+ .data-\[collapsed\=true\]\:me-\[calc\(var\(--fd-layout-offset\)-var\(--fd-sidebar-width\)\)\] {
1927
+ &[data-collapsed="true"] {
1928
+ margin-inline-end: calc(var(--fd-layout-offset) - var(--fd-sidebar-width));
1929
+ }
1930
+ }
1911
1931
  .data-\[empty\=true\]\:hidden {
1912
1932
  &[data-empty="true"] {
1913
1933
  display: none;
@@ -1958,11 +1978,6 @@
1958
1978
  animation: var(--animate-fd-dialog-out);
1959
1979
  }
1960
1980
  }
1961
- .data-\[state\=closed\]\:animate-fd-exitToLeft {
1962
- &[data-state="closed"] {
1963
- animation: var(--animate-fd-exitToLeft);
1964
- }
1965
- }
1966
1981
  .data-\[state\=closed\]\:animate-fd-fade-out {
1967
1982
  &[data-state="closed"] {
1968
1983
  animation: var(--animate-fd-fade-out);
@@ -1978,11 +1993,21 @@
1978
1993
  animation: var(--animate-fd-popover-out);
1979
1994
  }
1980
1995
  }
1996
+ .data-\[state\=closed\]\:animate-fd-sidebar-out {
1997
+ &[data-state="closed"] {
1998
+ animation: var(--animate-fd-sidebar-out);
1999
+ }
2000
+ }
1981
2001
  .data-\[state\=hidden\]\:animate-fd-fade-out {
1982
2002
  &[data-state="hidden"] {
1983
2003
  animation: var(--animate-fd-fade-out);
1984
2004
  }
1985
2005
  }
2006
+ .data-\[state\=inactive\]\:hidden {
2007
+ &[data-state="inactive"] {
2008
+ display: none;
2009
+ }
2010
+ }
1986
2011
  .data-\[state\=open\]\:animate-fd-accordion-down {
1987
2012
  &[data-state="open"] {
1988
2013
  animation: var(--animate-fd-accordion-down);
@@ -1998,11 +2023,6 @@
1998
2023
  animation: var(--animate-fd-dialog-in);
1999
2024
  }
2000
2025
  }
2001
- .data-\[state\=open\]\:animate-fd-enterFromLeft {
2002
- &[data-state="open"] {
2003
- animation: var(--animate-fd-enterFromLeft);
2004
- }
2005
- }
2006
2026
  .data-\[state\=open\]\:animate-fd-fade-in {
2007
2027
  &[data-state="open"] {
2008
2028
  animation: var(--animate-fd-fade-in);
@@ -2018,6 +2038,11 @@
2018
2038
  animation: var(--animate-fd-popover-in);
2019
2039
  }
2020
2040
  }
2041
+ .data-\[state\=open\]\:animate-fd-sidebar-in {
2042
+ &[data-state="open"] {
2043
+ animation: var(--animate-fd-sidebar-in);
2044
+ }
2045
+ }
2021
2046
  .data-\[state\=open\]\:bg-fd-accent\/50 {
2022
2047
  &[data-state="open"] {
2023
2048
  background-color: color-mix(in srgb, hsl(0, 0%, 90.1%) 50%, transparent);
@@ -2146,11 +2171,6 @@
2146
2171
  padding-block: calc(var(--spacing) * 1.5);
2147
2172
  }
2148
2173
  }
2149
- .md\:ps-\(--fd-layout-offset\) {
2150
- @media (width >= 48rem) {
2151
- padding-inline-start: var(--fd-layout-offset);
2152
- }
2153
- }
2154
2174
  .md\:pt-12 {
2155
2175
  @media (width >= 48rem) {
2156
2176
  padding-top: calc(var(--spacing) * 12);
@@ -2173,6 +2193,11 @@
2173
2193
  --fd-nav-height: 0px;
2174
2194
  }
2175
2195
  }
2196
+ .md\:\[--fd-nav-height\:64px\] {
2197
+ @media (width >= 48rem) {
2198
+ --fd-nav-height: 64px;
2199
+ }
2200
+ }
2176
2201
  .md\:\[--fd-sidebar-width\:268px\] {
2177
2202
  @media (width >= 48rem) {
2178
2203
  --fd-sidebar-width: 268px;
@@ -2224,9 +2249,9 @@
2224
2249
  border-width: 1px;
2225
2250
  }
2226
2251
  }
2227
- .lg\:\[--fd-nav-height\:calc\(var\(--spacing\)\*24\)\] {
2252
+ .lg\:\[--fd-nav-height\:104px\] {
2228
2253
  @media (width >= 64rem) {
2229
- --fd-nav-height: calc(var(--spacing) * 24);
2254
+ --fd-nav-height: 104px;
2230
2255
  }
2231
2256
  }
2232
2257
  .lg\:\[--fd-padding\:1rem\] {
@@ -2234,9 +2259,9 @@
2234
2259
  --fd-padding: 1rem;
2235
2260
  }
2236
2261
  }
2237
- .lg\:\[--fd-sidebar-width\:286px\] {
2262
+ .lg\:\[--fd-sidebar-width\:290px\] {
2238
2263
  @media (width >= 64rem) {
2239
- --fd-sidebar-width: 286px;
2264
+ --fd-sidebar-width: 290px;
2240
2265
  }
2241
2266
  }
2242
2267
  .xl\:start-4 {
@@ -2264,6 +2289,11 @@
2264
2289
  --fd-toc-width: 286px;
2265
2290
  }
2266
2291
  }
2292
+ .xl\:\[--fd-toc-width\:290px\] {
2293
+ @media (width >= 80rem) {
2294
+ --fd-toc-width: 290px;
2295
+ }
2296
+ }
2267
2297
  .xl\:\[--fd-tocnav-height\:0px\] {
2268
2298
  @media (width >= 80rem) {
2269
2299
  --fd-tocnav-height: 0px;
@@ -2851,6 +2881,16 @@
2851
2881
  transform: translateX(-200px);
2852
2882
  }
2853
2883
  }
2884
+ @keyframes fd-sidebar-in {
2885
+ from {
2886
+ transform: translateX(-100%);
2887
+ }
2888
+ }
2889
+ @keyframes fd-sidebar-out {
2890
+ to {
2891
+ transform: translateX(-100%);
2892
+ }
2893
+ }
2854
2894
  @keyframes fd-nav-menu-in {
2855
2895
  from {
2856
2896
  opacity: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.3.3",
3
+ "version": "15.3.4",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -89,7 +89,7 @@
89
89
  "react-medium-image-zoom": "^5.2.14",
90
90
  "react-remove-scroll": "^2.6.3",
91
91
  "tailwind-merge": "^3.3.0",
92
- "fumadocs-core": "15.3.3"
92
+ "fumadocs-core": "15.3.4"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@next/eslint-plugin-next": "^15.3.2",
@@ -100,9 +100,9 @@
100
100
  "next": "15.3.2",
101
101
  "tailwindcss": "^4.1.7",
102
102
  "tsc-alias": "^1.8.16",
103
- "@fumadocs/cli": "0.1.1",
103
+ "@fumadocs/cli": "0.2.0",
104
104
  "eslint-config-custom": "0.0.0",
105
- "fumadocs-core": "15.3.3",
105
+ "fumadocs-core": "15.3.4",
106
106
  "tsconfig": "0.0.0"
107
107
  },
108
108
  "peerDependencies": {