@flipdish/ui-library 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/atoms/Flag/flag.utils.cjs +1 -1
- package/dist/components/atoms/Flag/flag.utils.cjs.map +1 -1
- package/dist/components/atoms/Flag/flag.utils.js +2 -2
- package/dist/components/atoms/Flag/flag.utils.js.map +1 -1
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.cjs +73 -0
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.cjs.map +1 -1
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.d.ts +48 -0
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.d.ts.map +1 -1
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.js +70 -1
- package/dist/components/molecules/CodeSnippet/codeSnippet.utils.js.map +1 -1
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.cjs +24 -2
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.cjs.map +1 -1
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.d.ts +2 -1
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.d.ts.map +1 -1
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.js +25 -3
- package/dist/components/molecules/CodeSnippet/hooks/useCodeSnippetHighlight.js.map +1 -1
- package/dist/components/molecules/CodeSnippet/index.cjs +7 -25
- package/dist/components/molecules/CodeSnippet/index.cjs.map +1 -1
- package/dist/components/molecules/CodeSnippet/index.d.ts +8 -4
- package/dist/components/molecules/CodeSnippet/index.d.ts.map +1 -1
- package/dist/components/molecules/CodeSnippet/index.js +8 -26
- package/dist/components/molecules/CodeSnippet/index.js.map +1 -1
- package/dist/components/organisms/Calendar/calendar.utils.cjs +35 -0
- package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -1
- package/dist/components/organisms/Calendar/calendar.utils.d.ts +29 -0
- package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/calendar.utils.js +36 -2
- package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -1
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.cjs +30 -0
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.cjs.map +1 -0
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.d.ts +12 -0
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.d.ts.map +1 -0
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.js +28 -0
- package/dist/components/organisms/Calendar/hooks/useCalendarClock.js.map +1 -0
- package/dist/components/organisms/Calendar/index.cjs +13 -42
- package/dist/components/organisms/Calendar/index.cjs.map +1 -1
- package/dist/components/organisms/Calendar/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/index.js +15 -44
- package/dist/components/organisms/Calendar/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.cjs +9 -2
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.d.ts +12 -1
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.js +9 -2
- package/dist/components/organisms/SidebarNavigation/components/NavAccountCard.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavItem.cjs +10 -4
- package/dist/components/organisms/SidebarNavigation/components/NavItem.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavItem.d.ts +12 -1
- package/dist/components/organisms/SidebarNavigation/components/NavItem.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavItem.js +10 -4
- package/dist/components/organisms/SidebarNavigation/components/NavItem.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.cjs +36 -11
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +38 -13
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/utilities/renderUtils/index.cjs +21 -0
- package/dist/utilities/renderUtils/index.cjs.map +1 -1
- package/dist/utilities/renderUtils/index.d.ts +10 -0
- package/dist/utilities/renderUtils/index.d.ts.map +1 -1
- package/dist/utilities/renderUtils/index.js +21 -1
- package/dist/utilities/renderUtils/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/organisms/SidebarNavigation/components/NavButton.cjs +0 -32
- package/dist/components/organisms/SidebarNavigation/components/NavButton.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/NavButton.d.ts +0 -36
- package/dist/components/organisms/SidebarNavigation/components/NavButton.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/NavButton.js +0 -30
- package/dist/components/organisms/SidebarNavigation/components/NavButton.js.map +0 -1
|
@@ -34,7 +34,7 @@ const NavAccountMenu = ({ className, menuItems = [], bottomMenuItems = [], testI
|
|
|
34
34
|
}, "data-testid": menuItemTestId(prefix, item) }, item.label));
|
|
35
35
|
return (jsx(Dialog, { ...dialogProps, className: cx('w-66 rounded-xl bg-secondary_alt shadow-lg ring ring-secondary_alt outline-hidden', className), children: ({ close }) => (jsxs(Fragment, { children: [menuItems.length > 0 && (jsx("div", { className: "rounded-xl bg-primary ring-1 ring-secondary", children: jsx("div", { className: "flex flex-col gap-0.5 py-1.5", children: menuItems.map((item) => renderItem(item, close)) }) })), bottomMenuItems.length > 0 && jsx("div", { className: "pt-1 pb-1.5", children: bottomMenuItems.map((item) => renderItem(item, close)) })] })) }));
|
|
36
36
|
};
|
|
37
|
-
const NavAccountCard = ({ popoverPlacement, account, avatarRounded, menuItems, bottomMenuItems, variant = 'full', onOpenChange, 'data-testid': dataTestId, }) => {
|
|
37
|
+
const NavAccountCard = ({ popoverPlacement, account, avatarRounded, menuItems, bottomMenuItems, variant = 'full', collapsed, resizing, onOpenChange, 'data-testid': dataTestId, }) => {
|
|
38
38
|
const triggerRef = useRef(null);
|
|
39
39
|
const isDesktop = useBreakpoints('lg');
|
|
40
40
|
// The trigger is icon/avatar-only with no visible text, so it needs an explicit
|
|
@@ -45,7 +45,14 @@ const NavAccountCard = ({ popoverPlacement, account, avatarRounded, menuItems, b
|
|
|
45
45
|
if (variant === 'avatar') {
|
|
46
46
|
return (jsxs(DialogTrigger, { onOpenChange: onOpenChange, children: [jsx(Button, { "aria-label": triggerLabel, ...testIdProps(accountTestId), className: ({ isPressed, isFocused }) => cx('group relative inline-flex cursor-pointer rounded-full', (isPressed || isFocused) && 'outline-2 outline-offset-2 outline-focus-ring'), children: jsx(Avatar, { border: true, status: account.status, src: account.avatar, size: "md", alt: account.name, rounded: avatarRounded }) }), jsx(Popover, { placement: popoverPlacement ?? 'right bottom', offset: 8, crossOffset: 6, className: POPOVER_ANIMATION, children: menu })] }));
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
const isRail = collapsed !== undefined;
|
|
49
|
+
// In rail mode the text and chevron fade as one; the fade-in waits for the rail to open a little.
|
|
50
|
+
const fadeClassName = isRail && cx('transition-opacity motion-reduce:transition-none', collapsed ? 'opacity-0 duration-150' : 'delay-100 duration-150');
|
|
51
|
+
return (jsxs("div", { ref: triggerRef, className: cx('relative flex items-center rounded-xl bg-primary p-3 ring-1 ring-secondary ring-inset', isRail && 'transition-[padding,margin,background-color,box-shadow] duration-300 ease-out motion-reduce:transition-none',
|
|
52
|
+
// Collapsed, the card is the 44px avatar slot of the icon-only rail: 2px of padding around the 40px avatar, overhanging the 36px rows by 4px.
|
|
53
|
+
collapsed && '-mx-1 bg-transparent p-0.5 ring-transparent'), children: [jsx("div", { className: "-m-1 flex min-w-0 flex-1 overflow-hidden p-1", children: jsx(AvatarLabelGroup, { size: "md", src: account.avatar,
|
|
54
|
+
// Block spans keep each line single-line at its natural width while the card resizes, so the name never wraps as the card narrows.
|
|
55
|
+
title: jsx("span", { className: cx('block truncate', fadeClassName), children: account.name }), subtitle: jsx("span", { className: cx('block truncate', fadeClassName), children: account.email }), status: account.status, rounded: avatarRounded, className: resizing ? 'min-w-max' : undefined }) }), jsxs(DialogTrigger, { onOpenChange: onOpenChange, children: [jsx(Button, { "aria-label": triggerLabel, ...testIdProps(accountTestId), className: cx('peer absolute flex cursor-pointer items-center justify-center outline-focus-ring transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2', collapsed ? 'inset-0.5 rounded-full' : 'top-2 right-2 size-7 rounded-md hover:bg-primary_hover pressed:bg-primary_hover') }), jsx(Popover, { placement: popoverPlacement ?? (isDesktop ? 'right bottom' : 'top right'), triggerRef: triggerRef, offset: 8, className: POPOVER_ANIMATION, children: menu })] }), jsx(ChevronSelectorVertical, { "aria-hidden": "true", className: cx('pointer-events-none absolute top-3.5 right-3.5 size-4 shrink-0 stroke-[2.25px] text-fg-quaternary peer-hover:text-fg-quaternary_hover peer-pressed:text-fg-quaternary_hover', fadeClassName) })] }));
|
|
49
56
|
};
|
|
50
57
|
|
|
51
58
|
export { NavAccountCard, NavAccountMenu };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavAccountCard.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavAccountCard.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","AriaLink","AriaDialog","_Fragment","AriaDialogTrigger","AriaButton","AriaPopover"],"mappings":";;;;;;;;;;;AAoEA;AACA,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,IAA4B,KAClE,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AAEhG,MAAM,iBAAiB,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAA+C,KAC/F,EAAE,CACA,uDAAuD,EACvD,UAAU;AACR,IAAA,+JAA+J,EACjK,SAAS;AACP,IAAA,6JAA6J,CAChK;AAEH,MAAM,mBAAmB,GAAG,mEAAmE;AAE/F,MAAM,sBAAsB,GAAG,CAAC,EAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,aAAa,EAAE,UAAU,GACwE,KAAI;AACrG,IAAA,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC;IAC7C,MAAM,OAAO,IACXA,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,iGAAiG,EACjG,iGAAiG,CAClG,EAAA,QAAA,EAAA,CAEDA,cAAK,SAAS,EAAC,uFAAuF,EAAA,QAAA,EAAA,CACnG,IAAI,IAAIC,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,qEAAqE,EAAA,CAAG,EAAA,GAAA,EAAG,KAAK,CAAA,EAAA,CACrG,EACL,aAAa,KACZA,aAAK,SAAS,EAAC,sGAAsG,EAAA,QAAA,EAAE,aAAa,GAAO,CAC5I,CAAA,EAAA,CACG,CACP;;AAGD,IAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;AACvC,QAAA,QACEA,GAAA,CAACC,IAAQ,IACP,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,EACvC,GAAG,EAAC,qBAAqB,EAAA,aAAA,EACZ,UAAU,EACvB,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,OAAO,YAEf,OAAO,EAAA,CACC;IAEf;AAEA,IAAA,QACED,GAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAA,aAAA,EAAc,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,YAC5F,OAAO,EAAA,CACD;AAEb,CAAC;MAEY,cAAc,GAAG,CAAC,EAC7B,SAAS,EACT,SAAS,GAAG,EAAE,EACd,eAAe,GAAG,EAAE,EACpB,YAAY,EACZ,GAAG,WAAW,EAOf,KAAI;IACH,MAAM,MAAM,GAAG,YAAY,IAAI,UAAU,CAAC,kBAAkB,CAAC;;AAG7D,IAAA,MAAM,UAAU,GAAG,CAAC,IAA4B,EAAE,KAAiB,MACjEA,GAAA,CAAC,sBAAsB,EAAA,EAErB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,MAAK;AACZ,YAAA,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,OAAO,IAAI;AAClB,QAAA,CAAC,EAAA,aAAA,EACY,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAA,EATpC,IAAI,CAAC,KAAK,CAUf,CACH;IAED,QACEA,IAACE,MAAU,EAAA,EAAA,GAAK,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,mFAAmF,EAAE,SAAS,CAAC,EAAA,QAAA,EACvI,CAAC,EAAE,KAAK,EAAE,MACTH,IAAA,CAAAI,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,SAAS,CAAC,MAAM,GAAG,CAAC,KACnBH,aAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAC1DA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8BAA8B,YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAA,CAAO,GAClG,CACP,EAEA,eAAe,CAAC,MAAM,GAAG,CAAC,IAAIA,aAAK,SAAS,EAAC,aAAa,EAAA,QAAA,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAO,CAAA,EAAA,CACzH,CACJ,EAAA,CACU;AAEjB;AAEO,MAAM,cAAc,GAAG,CAAC,EAC7B,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,SAAS,EACT,eAAe,EACf,OAAO,GAAG,MAAM,EAChB,YAAY,EACZ,aAAa,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"NavAccountCard.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavAccountCard.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","AriaLink","AriaDialog","_Fragment","AriaDialogTrigger","AriaButton","AriaPopover"],"mappings":"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"}
|
|
@@ -20,7 +20,8 @@ const styles = cx.sortCx({
|
|
|
20
20
|
rootSelected: 'bg-brand-primary hover:bg-brand-primary',
|
|
21
21
|
});
|
|
22
22
|
const StatusDot = ({ status }) => (jsxRuntime.jsx("span", { "aria-hidden": "true", className: cx.cx('mr-2 size-2 shrink-0 rounded-full', status === 'online' ? 'bg-success-solid' : 'bg-fg-quaternary') }));
|
|
23
|
-
const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, children, truncate = true, status, onClick, hasSubmenu, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, 'data-testid': dataTestId, }) => {
|
|
23
|
+
const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, children, truncate = true, status, onClick, hasSubmenu, collapsed, resizing, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, 'data-testid': dataTestId, }) => {
|
|
24
|
+
const isRail = collapsed !== undefined;
|
|
24
25
|
// `current` means "this is the current page" (→ aria-current); `selected` is the
|
|
25
26
|
// brand-highlight state (open/selected section), which may differ from the page.
|
|
26
27
|
const isSelected = selected ?? current;
|
|
@@ -28,11 +29,16 @@ const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, childre
|
|
|
28
29
|
useAriaDisclosureAttrs.useAriaDisclosureAttrs(linkRef, { ariaExpanded, ariaControls });
|
|
29
30
|
const iconElement = Icon && (jsxRuntime.jsx(Icon, { "aria-hidden": "true", className: cx.cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', isSelected && 'text-fg-brand-primary group-hover/item:text-fg-brand-primary') }));
|
|
30
31
|
const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsxRuntime.jsx(Badge.Badge, { className: "ml-3", color: isSelected ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
|
|
31
|
-
const labelElement = (jsxRuntime.jsx("span", { className: cx.cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', isSelected && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
32
|
+
const labelElement = (jsxRuntime.jsx("span", { className: cx.cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && (resizing ? 'whitespace-nowrap' : 'truncate'), isSelected && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
32
33
|
const isExternal = hrefUtils.isExternalHref(href);
|
|
33
34
|
const externalIcon = isExternal && jsxRuntime.jsx(uiIcons.Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
|
|
34
35
|
// A trailing chevron on a section parent signals it has a revealable sub-navigation tier.
|
|
35
36
|
const submenuChevron = hasSubmenu && (jsxRuntime.jsx(uiIcons.ChevronRight, { "aria-hidden": "true", className: cx.cx('ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary', isSelected && 'text-fg-brand-primary') }));
|
|
37
|
+
// Everything after the icon fades as one block in rail mode. While resizing it keeps its natural width so the
|
|
38
|
+
// row's edge wipes it in or out instead of the label reflowing; the fade-in waits for the rail to open a little.
|
|
39
|
+
const trailingElement = (jsxRuntime.jsxs("span", { className: cx.cx('flex flex-1 items-center', resizing ? 'shrink-0' : 'min-w-0', isRail && 'transition-opacity motion-reduce:transition-none', isRail && (collapsed ? 'opacity-0 duration-150' : 'delay-100 duration-150')), children: [labelElement, externalIcon, badgeElement, submenuChevron] }));
|
|
40
|
+
// The icon's margin and the trailing block overflow a collapsed row; clipping keeps the hover surface the row itself.
|
|
41
|
+
const railClassName = isRail && 'overflow-hidden';
|
|
36
42
|
if (type === 'collapsible') {
|
|
37
43
|
return (
|
|
38
44
|
// biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
|
|
@@ -43,9 +49,9 @@ const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, childre
|
|
|
43
49
|
}
|
|
44
50
|
// useButton forwards aria-expanded/aria-controls as plain props, unlike useLink — no ref workaround needed here.
|
|
45
51
|
if (type === 'disclosure') {
|
|
46
|
-
return (jsxRuntime.jsxs(reactAriaComponents.Button, { "data-testid": dataTestId, className: cx.cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement,
|
|
52
|
+
return (jsxRuntime.jsxs(reactAriaComponents.Button, { "data-testid": dataTestId, className: cx.cx('group/item p-2', styles.root, isSelected && styles.rootSelected, railClassName), onClick: onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, trailingElement] }));
|
|
47
53
|
}
|
|
48
|
-
return (jsxRuntime.jsxs(reactAriaComponents.Link, { ref: linkRef, href: hrefUtils.safeHref(href), target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx.cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement,
|
|
54
|
+
return (jsxRuntime.jsxs(reactAriaComponents.Link, { ref: linkRef, href: hrefUtils.safeHref(href), target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx.cx('group/item p-2', styles.root, isSelected && styles.rootSelected, railClassName), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, trailingElement] }));
|
|
49
55
|
};
|
|
50
56
|
|
|
51
57
|
exports.NavItemBase = NavItemBase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavItem.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","useRef","useAriaDisclosureAttrs","Badge","isExternalHref","Share04","ChevronRight","_jsxs","ChevronDown","AriaLink","safeHref","AriaButton"],"mappings":";;;;;;;;;;;AAWA;;;;AAIG;AACH,MAAM,MAAM,GAAGA,SAAM,CAAC;;AAEpB,IAAA,IAAI,EAAE,+QAA+Q;AACrR,IAAA,YAAY,EAAE,yCAAyC;AACxD,CAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"NavItem.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","useRef","useAriaDisclosureAttrs","Badge","isExternalHref","Share04","ChevronRight","_jsxs","ChevronDown","AriaLink","safeHref","AriaButton"],"mappings":"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"}
|
|
@@ -18,6 +18,17 @@ interface NavItemBaseProps {
|
|
|
18
18
|
selected?: boolean;
|
|
19
19
|
/** Whether to truncate the label text. */
|
|
20
20
|
truncate?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Rail mode, for `link` and `disclosure` items in the collapsible sidebar: `true` shrinks the item to its
|
|
23
|
+
* icon, fading out the label, badge and chevron as the row narrows with the rail; `false` fades them back
|
|
24
|
+
* in. The label stays in the DOM so the item keeps its accessible name. Omit outside the rail.
|
|
25
|
+
*/
|
|
26
|
+
collapsed?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Set while the rail animates between widths. The label keeps its full width and is clipped by the row's
|
|
29
|
+
* edge instead of re-truncating every frame, so a long label never reflows mid-motion.
|
|
30
|
+
*/
|
|
31
|
+
resizing?: boolean;
|
|
21
32
|
/** Optional leading status dot rendered before the icon. */
|
|
22
33
|
status?: NavItemStatus;
|
|
23
34
|
/** Handler for click events. */
|
|
@@ -33,6 +44,6 @@ interface NavItemBaseProps {
|
|
|
33
44
|
/** Content to display. */
|
|
34
45
|
children?: ReactNode;
|
|
35
46
|
}
|
|
36
|
-
export declare const NavItemBase: ({ current, selected, type, badge, href, icon: Icon, children, truncate, status, onClick, hasSubmenu, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, "data-testid": dataTestId, }: NavItemBaseProps) => import("react").JSX.Element;
|
|
47
|
+
export declare const NavItemBase: ({ current, selected, type, badge, href, icon: Icon, children, truncate, status, onClick, hasSubmenu, collapsed, resizing, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, "data-testid": dataTestId, }: NavItemBaseProps) => import("react").JSX.Element;
|
|
37
48
|
export {};
|
|
38
49
|
//# sourceMappingURL=NavItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB9E,kEAAkE;AAClE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,UAAU,gBAAgB;IACxB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wHAAwH;IACxH,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,GAAG,YAAY,CAAC;IAClE,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2IAA2I;IAC3I,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,sHAAsH;IACtH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,WAAW,GAAI,
|
|
1
|
+
{"version":3,"file":"NavItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB9E,kEAAkE;AAClE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,UAAU,gBAAgB;IACxB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wHAAwH;IACxH,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,GAAG,YAAY,CAAC;IAClE,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2IAA2I;IAC3I,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,sHAAsH;IACtH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,WAAW,GAAI,sNAiBzB,gBAAgB,gCAuIlB,CAAC"}
|
|
@@ -18,7 +18,8 @@ const styles = sortCx({
|
|
|
18
18
|
rootSelected: 'bg-brand-primary hover:bg-brand-primary',
|
|
19
19
|
});
|
|
20
20
|
const StatusDot = ({ status }) => (jsx("span", { "aria-hidden": "true", className: cx('mr-2 size-2 shrink-0 rounded-full', status === 'online' ? 'bg-success-solid' : 'bg-fg-quaternary') }));
|
|
21
|
-
const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, children, truncate = true, status, onClick, hasSubmenu, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, 'data-testid': dataTestId, }) => {
|
|
21
|
+
const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, children, truncate = true, status, onClick, hasSubmenu, collapsed, resizing, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, 'data-testid': dataTestId, }) => {
|
|
22
|
+
const isRail = collapsed !== undefined;
|
|
22
23
|
// `current` means "this is the current page" (→ aria-current); `selected` is the
|
|
23
24
|
// brand-highlight state (open/selected section), which may differ from the page.
|
|
24
25
|
const isSelected = selected ?? current;
|
|
@@ -26,11 +27,16 @@ const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, childre
|
|
|
26
27
|
useAriaDisclosureAttrs(linkRef, { ariaExpanded, ariaControls });
|
|
27
28
|
const iconElement = Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('mr-2 size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', isSelected && 'text-fg-brand-primary group-hover/item:text-fg-brand-primary') }));
|
|
28
29
|
const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsx(Badge, { className: "ml-3", color: isSelected ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
|
|
29
|
-
const labelElement = (jsx("span", { className: cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && 'truncate', isSelected && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
30
|
+
const labelElement = (jsx("span", { className: cx('flex-1 text-sm font-semibold text-secondary transition-inherit-all group-hover/item:text-secondary_hover', truncate && (resizing ? 'whitespace-nowrap' : 'truncate'), isSelected && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
30
31
|
const isExternal = isExternalHref(href);
|
|
31
32
|
const externalIcon = isExternal && jsx(Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
|
|
32
33
|
// A trailing chevron on a section parent signals it has a revealable sub-navigation tier.
|
|
33
34
|
const submenuChevron = hasSubmenu && (jsx(ChevronRight, { "aria-hidden": "true", className: cx('ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary', isSelected && 'text-fg-brand-primary') }));
|
|
35
|
+
// Everything after the icon fades as one block in rail mode. While resizing it keeps its natural width so the
|
|
36
|
+
// row's edge wipes it in or out instead of the label reflowing; the fade-in waits for the rail to open a little.
|
|
37
|
+
const trailingElement = (jsxs("span", { className: cx('flex flex-1 items-center', resizing ? 'shrink-0' : 'min-w-0', isRail && 'transition-opacity motion-reduce:transition-none', isRail && (collapsed ? 'opacity-0 duration-150' : 'delay-100 duration-150')), children: [labelElement, externalIcon, badgeElement, submenuChevron] }));
|
|
38
|
+
// The icon's margin and the trailing block overflow a collapsed row; clipping keeps the hover surface the row itself.
|
|
39
|
+
const railClassName = isRail && 'overflow-hidden';
|
|
34
40
|
if (type === 'collapsible') {
|
|
35
41
|
return (
|
|
36
42
|
// biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
|
|
@@ -41,9 +47,9 @@ const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, childre
|
|
|
41
47
|
}
|
|
42
48
|
// useButton forwards aria-expanded/aria-controls as plain props, unlike useLink — no ref workaround needed here.
|
|
43
49
|
if (type === 'disclosure') {
|
|
44
|
-
return (jsxs(Button, { "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsx(StatusDot, { status: status }), iconElement,
|
|
50
|
+
return (jsxs(Button, { "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected, railClassName), onClick: onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsx(StatusDot, { status: status }), iconElement, trailingElement] }));
|
|
45
51
|
}
|
|
46
|
-
return (jsxs(Link, { ref: linkRef, href: safeHref(href), target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [status && jsx(StatusDot, { status: status }), iconElement,
|
|
52
|
+
return (jsxs(Link, { ref: linkRef, href: safeHref(href), target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected, railClassName), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [status && jsx(StatusDot, { status: status }), iconElement, trailingElement] }));
|
|
47
53
|
};
|
|
48
54
|
|
|
49
55
|
export { NavItemBase };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavItem.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink","AriaButton"],"mappings":";;;;;;;;;AAWA;;;;AAIG;AACH,MAAM,MAAM,GAAG,MAAM,CAAC;;AAEpB,IAAA,IAAI,EAAE,+QAA+Q;AACrR,IAAA,YAAY,EAAE,yCAAyC;AACxD,CAAA,CAAC;
|
|
1
|
+
{"version":3,"file":"NavItem.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/NavItem.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink","AriaButton"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var uiIcons = require('@flipdish/ui-icons');
|
|
5
|
+
var Tooltip = require('@flipdish/ui-library/components/atoms/Tooltip');
|
|
5
6
|
var UtilityButton = require('@flipdish/ui-library/components/atoms/UtilityButton');
|
|
6
7
|
var useBreakpoints = require('@flipdish/ui-library/hooks/useBreakpoints');
|
|
7
8
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
@@ -15,7 +16,6 @@ var SearchTrigger = require('../ApplicationHeader/components/SearchTrigger.cjs')
|
|
|
15
16
|
var LogoLink = require('./components/LogoLink.cjs');
|
|
16
17
|
var MobileHeader = require('./components/MobileHeader.cjs');
|
|
17
18
|
var NavAccountCard = require('./components/NavAccountCard.cjs');
|
|
18
|
-
var NavButton = require('./components/NavButton.cjs');
|
|
19
19
|
var NavItem = require('./components/NavItem.cjs');
|
|
20
20
|
var NavList = require('./components/NavList.cjs');
|
|
21
21
|
var NavSectionToggle = require('./components/NavSectionToggle.cjs');
|
|
@@ -25,6 +25,8 @@ var SidebarMenuButton = require('./components/SidebarMenuButton.cjs');
|
|
|
25
25
|
const COLLAPSED_WIDTH = 68;
|
|
26
26
|
const EXPANDED_WIDTH = 280;
|
|
27
27
|
const SECONDARY_SIDEBAR_WIDTH = 256;
|
|
28
|
+
// One spring for the rail, the page beside it and the secondary panel, so everything that resizes moves together.
|
|
29
|
+
const SPRING = { type: 'spring', damping: 26, stiffness: 220, bounce: 0 };
|
|
28
30
|
/**
|
|
29
31
|
* The primary app-shell navigation rail: logo, destinations, footer links and an account card,
|
|
30
32
|
* collapsible to an icon-only strip, with a hover-revealed panel for the current section's
|
|
@@ -60,14 +62,20 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
60
62
|
if (isDesktop && isMobileMenuOpen)
|
|
61
63
|
setMobileMenuOpen(false);
|
|
62
64
|
}, [isDesktop]);
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
+
// The stored preference is applied after hydration (reading it during render would mismatch the server markup), so
|
|
66
|
+
// it must not animate: a returning user would watch the rail and the page spring closed on every load. The flag makes
|
|
67
|
+
// that one change instant; a layout effect commits it before the first paint, so neither the default state nor the
|
|
68
|
+
// CSS fades ever show.
|
|
69
|
+
const [isApplyingStoredPreference, setIsApplyingStoredPreference] = React.useState(false);
|
|
70
|
+
React.useLayoutEffect(() => {
|
|
65
71
|
if (isControlled || !persistCollapsed)
|
|
66
72
|
return;
|
|
67
73
|
const stored = localStorageUtils.sidebarCollapsedStorage.get();
|
|
68
|
-
if (stored
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
if (stored === null || stored === defaultCollapsed)
|
|
75
|
+
return;
|
|
76
|
+
setIsApplyingStoredPreference(true);
|
|
77
|
+
setInternalCollapsed(stored);
|
|
78
|
+
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
71
79
|
const setCollapsed = (next) => {
|
|
72
80
|
onCollapsedChange?.(next);
|
|
73
81
|
if (isControlled)
|
|
@@ -76,6 +84,16 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
76
84
|
if (persistCollapsed)
|
|
77
85
|
localStorageUtils.sidebarCollapsedStorage.set(next);
|
|
78
86
|
};
|
|
87
|
+
const shouldReduceMotion = react.useReducedMotion();
|
|
88
|
+
const resizeTransition = shouldReduceMotion || isApplyingStoredPreference ? { duration: 0 } : SPRING;
|
|
89
|
+
// While the rail is between widths its labels keep their width and get wiped by the row's edge rather than re-truncating
|
|
90
|
+
// every frame. Tracked from the resolved state, so a controlled toggle counts too, and cleared when the width settles.
|
|
91
|
+
const [isResizing, setIsResizing] = React.useState(false);
|
|
92
|
+
const [settledCollapsed, setSettledCollapsed] = React.useState(isCollapsed);
|
|
93
|
+
if (settledCollapsed !== isCollapsed) {
|
|
94
|
+
setSettledCollapsed(isCollapsed);
|
|
95
|
+
setIsResizing(true);
|
|
96
|
+
}
|
|
79
97
|
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
80
98
|
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
81
99
|
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
@@ -153,10 +171,17 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
153
171
|
};
|
|
154
172
|
const itemTestId = navItemTestId(item);
|
|
155
173
|
// A parent's own `href` (if any) is ignored — it reveals the panel, not navigates.
|
|
156
|
-
|
|
174
|
+
// The same item serves both rail widths: collapsed it shrinks to its icon and shows its label as a tooltip instead.
|
|
175
|
+
return (jsxRuntime.jsx("li", { className: "py-px", onKeyDown: handleTriggerKeyDown(item.label, hasChildren), children: jsxRuntime.jsx(Tooltip.Tooltip, { isDisabled: !isCollapsed, title: item.label, placement: "right", children: jsxRuntime.jsx(NavItem.NavItemBase, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, icon: item.icon, badge: item.badge, hasSubmenu: hasChildren, collapsed: isCollapsed, resizing: isResizing, onClick: selectSection, "data-testid": itemTestId, ...disclosure, children: item.label }) }) }, item.label));
|
|
157
176
|
});
|
|
158
|
-
const mainSidebar = (jsxRuntime.jsxs(react.motion.aside
|
|
159
|
-
|
|
177
|
+
const mainSidebar = (jsxRuntime.jsxs(react.motion.aside
|
|
178
|
+
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
179
|
+
, {
|
|
180
|
+
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
181
|
+
initial: false, animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, onAnimationComplete: () => {
|
|
182
|
+
setIsResizing(false);
|
|
183
|
+
setIsApplyingStoredPreference(false);
|
|
184
|
+
}, className: cx.cx('flex h-full max-h-full flex-col justify-between overflow-x-hidden overflow-y-auto bg-secondary', !hideBorder && 'border-r border-secondary'), children: [jsxRuntime.jsxs("div", { className: "flex flex-col", children: [jsxRuntime.jsxs("div", { className: "relative flex h-18 items-center px-5", children: [jsxRuntime.jsx("div", { inert: isCollapsed, className: cx.cx('flex transition-opacity motion-reduce:transition-none', isCollapsed ? 'opacity-0 duration-150' : 'delay-150 duration-150'), children: jsxRuntime.jsx(LogoLink.LogoLink, { href: homeHref, size: "md", onClick: () => reportNavigation(homeHref), "data-testid": testIdUtils.joinTestId(rootTestId, 'logo') }) }), jsxRuntime.jsx("div", { className: cx.cx('absolute top-5 transition-[right] duration-300 ease-out motion-reduce:transition-none', isCollapsed ? 'right-4.5' : 'right-4'), children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: isCollapsed ? 'Expand' : 'Collapse', "aria-label": isCollapsed ? 'Expand navigation' : 'Collapse navigation', icon: isCollapsed ? uiIcons.ChevronRightDouble : uiIcons.ChevronLeftDouble, "data-testid": testIdUtils.joinTestId(rootTestId, isCollapsed ? 'expand' : 'collapse'), onClick: () => setCollapsed(!isCollapsed) }) })] }), jsxRuntime.jsx("nav", { "aria-label": "Main", children: jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5 px-4 pt-1", children: renderPrimaryItems(items) }) })] }), jsxRuntime.jsxs("div", { className: "mt-auto flex flex-col gap-3 px-4 py-4", children: [footerItems.length > 0 && (jsxRuntime.jsx("nav", { "aria-label": "Footer", children: jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5", children: renderPrimaryItems(footerItems) }) })), account && (jsxRuntime.jsx(NavAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, collapsed: isCollapsed, resizing: isResizing, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] }))] })] }));
|
|
160
185
|
const handleMobileNavigate = (href) => {
|
|
161
186
|
const destination = hrefUtils.safeHref(href);
|
|
162
187
|
if (destination === undefined)
|
|
@@ -170,8 +195,8 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
170
195
|
onClick?.();
|
|
171
196
|
};
|
|
172
197
|
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
173
|
-
const secondarySidebar = currentItem && (jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsxRuntime.jsx(react.motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition:
|
|
174
|
-
return (jsxRuntime.jsxs(testIdUtils.TestIdProvider, { value: rootTestId, children: [jsxRuntime.jsxs("div", { className: "z-40 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerMove: handleContainerPointerMove, onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsxRuntime.jsx(
|
|
198
|
+
const secondarySidebar = currentItem && (jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsxRuntime.jsx(react.motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: SPRING, className: cx.cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxRuntime.jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsxRuntime.jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsxRuntime.jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsxRuntime.jsx("li", { className: "py-px", children: jsxRuntime.jsx(NavItem.NavItemBase, { type: "link", current: item.href === activeHref, href: item.href, icon: item.icon, badge: item.badge, onClick: () => reportNavigation(item.href), "data-testid": item['data-testid'] ?? testIdUtils.joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? testIdUtils.slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsxRuntime.jsx(NavSectionToggle.NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) })) }));
|
|
199
|
+
return (jsxRuntime.jsxs(testIdUtils.TestIdProvider, { value: rootTestId, children: [jsxRuntime.jsxs("div", { className: "z-40 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerMove: handleContainerPointerMove, onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsxRuntime.jsx(react.motion.div, { initial: false, animate: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && (jsxRuntime.jsx(MobileHeader.MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId, homeHref: homeHref, onHomePress: () => reportNavigation(homeHref), logoTestId: testIdUtils.joinTestId(rootTestId, 'mobile-logo'), "data-testid": testIdUtils.joinTestId(rootTestId, 'mobile-toggle') })), jsxRuntime.jsx(MobileHeader.MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, "data-testid": testIdUtils.joinTestId(rootTestId, 'mobile-close'), children: jsxRuntime.jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsxRuntime.jsxs("div", { className: "flex flex-col items-start gap-7 px-4", children: [jsxRuntime.jsx(LogoLink.LogoLink, { href: homeHref, size: "sm", onClick: () => handleMobileNavigate(homeHref), "data-testid": testIdUtils.joinTestId(rootTestId, 'drawer-logo') }), search && (jsxRuntime.jsx(SearchTrigger.SearchTrigger, { size: "md", placeholder: search.placeholder ?? 'Search', label: search.label ?? 'Search', onPress: closeMobileMenuThen(search.onPress), className: "w-full", "data-testid": search['data-testid'] ?? testIdUtils.joinTestId(rootTestId, 'search') }))] }), jsxRuntime.jsx("nav", { "aria-label": "Main", children: jsxRuntime.jsx(NavList.NavList, { activeUrl: activeUrl, items: items, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId }) }), jsxRuntime.jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsxRuntime.jsx("nav", { "aria-label": "Footer", children: jsxRuntime.jsx(NavList.NavList, { activeUrl: activeUrl, items: footerItems, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId, className: "px-0 pt-0" }) })), account && (jsxRuntime.jsx(NavAccountCard.NavAccountCard, { account: account.account, menuItems: withMobileMenuClose(account.menuItems), bottomMenuItems: withMobileMenuClose(account.bottomMenuItems), "data-testid": account['data-testid'] }))] })] }) })] }));
|
|
175
200
|
};
|
|
176
201
|
|
|
177
202
|
exports.NavAccountCard = NavAccountCard.NavAccountCard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","safeHref","joinTestId","slugifyTestId","useState","useBreakpoints","useEffect","sidebarCollapsedStorage","findActiveHref","findActiveItem","useId","useDualTierKeyboard","_jsx","NavButton","NavItemBase","_jsxs","motion","cx","ButtonUtility","ChevronRightDouble","LogoLink","ChevronLeftDouble","NavAccountCard","AnimatePresence","NavSectionToggleRow","TestIdProvider","MobileNavigationHeader","MobileNavigationDrawer","SearchTrigger","NavList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","safeHref","joinTestId","slugifyTestId","useState","useBreakpoints","useEffect","useLayoutEffect","sidebarCollapsedStorage","useReducedMotion","findActiveHref","findActiveItem","useId","useDualTierKeyboard","_jsx","Tooltip","NavItemBase","_jsxs","motion","cx","LogoLink","ButtonUtility","ChevronRightDouble","ChevronLeftDouble","NavAccountCard","AnimatePresence","NavSectionToggleRow","TestIdProvider","MobileNavigationHeader","MobileNavigationDrawer","SearchTrigger","NavList"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAA4B,MAAM,OAAO,CAAC;AAM1D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACpJ,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAChG,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7E,KAAK,cAAc,GAAG,WAAW,GAAG;IAAE,IAAI,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,sHAAsH;IACtH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,8GAA8G;IAC9G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AASD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,+PAkB/B,sBAAsB,gCA2YxB,CAAC"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ChevronRightDouble, ChevronLeftDouble } from '@flipdish/ui-icons';
|
|
3
|
+
import { Tooltip } from '@flipdish/ui-library/components/atoms/Tooltip';
|
|
3
4
|
import { ButtonUtility } from '@flipdish/ui-library/components/atoms/UtilityButton';
|
|
4
5
|
import { useBreakpoints } from '@flipdish/ui-library/hooks/useBreakpoints';
|
|
5
6
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
6
7
|
import { safeHref } from '@flipdish/ui-library/utilities/hrefUtils';
|
|
7
8
|
import { sidebarCollapsedStorage } from '@flipdish/ui-library/utilities/localStorageUtils';
|
|
8
9
|
import { useResolvedTestId, joinTestId, slugifyTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
9
|
-
import { motion, AnimatePresence } from 'motion/react';
|
|
10
|
-
import { useState, useEffect, useId } from 'react';
|
|
10
|
+
import { useReducedMotion, motion, AnimatePresence } from 'motion/react';
|
|
11
|
+
import { useState, useEffect, useLayoutEffect, useId } from 'react';
|
|
11
12
|
import { findActiveHref, findActiveItem } from '../../__internal__/navigation/nav.utils.js';
|
|
12
13
|
import { SearchTrigger } from '../ApplicationHeader/components/SearchTrigger.js';
|
|
13
14
|
import { LogoLink } from './components/LogoLink.js';
|
|
14
15
|
import { MobileNavigationHeader, MobileNavigationDrawer } from './components/MobileHeader.js';
|
|
15
16
|
import { NavAccountCard } from './components/NavAccountCard.js';
|
|
16
17
|
export { NavAccountMenu } from './components/NavAccountCard.js';
|
|
17
|
-
import { NavButton } from './components/NavButton.js';
|
|
18
18
|
import { NavItemBase } from './components/NavItem.js';
|
|
19
19
|
import { NavList } from './components/NavList.js';
|
|
20
20
|
import { NavSectionToggleRow } from './components/NavSectionToggle.js';
|
|
@@ -24,6 +24,8 @@ export { SidebarMenuButton } from './components/SidebarMenuButton.js';
|
|
|
24
24
|
const COLLAPSED_WIDTH = 68;
|
|
25
25
|
const EXPANDED_WIDTH = 280;
|
|
26
26
|
const SECONDARY_SIDEBAR_WIDTH = 256;
|
|
27
|
+
// One spring for the rail, the page beside it and the secondary panel, so everything that resizes moves together.
|
|
28
|
+
const SPRING = { type: 'spring', damping: 26, stiffness: 220, bounce: 0 };
|
|
27
29
|
/**
|
|
28
30
|
* The primary app-shell navigation rail: logo, destinations, footer links and an account card,
|
|
29
31
|
* collapsible to an icon-only strip, with a hover-revealed panel for the current section's
|
|
@@ -59,14 +61,20 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
59
61
|
if (isDesktop && isMobileMenuOpen)
|
|
60
62
|
setMobileMenuOpen(false);
|
|
61
63
|
}, [isDesktop]);
|
|
62
|
-
//
|
|
63
|
-
|
|
64
|
+
// The stored preference is applied after hydration (reading it during render would mismatch the server markup), so
|
|
65
|
+
// it must not animate: a returning user would watch the rail and the page spring closed on every load. The flag makes
|
|
66
|
+
// that one change instant; a layout effect commits it before the first paint, so neither the default state nor the
|
|
67
|
+
// CSS fades ever show.
|
|
68
|
+
const [isApplyingStoredPreference, setIsApplyingStoredPreference] = useState(false);
|
|
69
|
+
useLayoutEffect(() => {
|
|
64
70
|
if (isControlled || !persistCollapsed)
|
|
65
71
|
return;
|
|
66
72
|
const stored = sidebarCollapsedStorage.get();
|
|
67
|
-
if (stored
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
if (stored === null || stored === defaultCollapsed)
|
|
74
|
+
return;
|
|
75
|
+
setIsApplyingStoredPreference(true);
|
|
76
|
+
setInternalCollapsed(stored);
|
|
77
|
+
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
70
78
|
const setCollapsed = (next) => {
|
|
71
79
|
onCollapsedChange?.(next);
|
|
72
80
|
if (isControlled)
|
|
@@ -75,6 +83,16 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
75
83
|
if (persistCollapsed)
|
|
76
84
|
sidebarCollapsedStorage.set(next);
|
|
77
85
|
};
|
|
86
|
+
const shouldReduceMotion = useReducedMotion();
|
|
87
|
+
const resizeTransition = shouldReduceMotion || isApplyingStoredPreference ? { duration: 0 } : SPRING;
|
|
88
|
+
// While the rail is between widths its labels keep their width and get wiped by the row's edge rather than re-truncating
|
|
89
|
+
// every frame. Tracked from the resolved state, so a controlled toggle counts too, and cleared when the width settles.
|
|
90
|
+
const [isResizing, setIsResizing] = useState(false);
|
|
91
|
+
const [settledCollapsed, setSettledCollapsed] = useState(isCollapsed);
|
|
92
|
+
if (settledCollapsed !== isCollapsed) {
|
|
93
|
+
setSettledCollapsed(isCollapsed);
|
|
94
|
+
setIsResizing(true);
|
|
95
|
+
}
|
|
78
96
|
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
79
97
|
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
80
98
|
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
@@ -152,10 +170,17 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
152
170
|
};
|
|
153
171
|
const itemTestId = navItemTestId(item);
|
|
154
172
|
// A parent's own `href` (if any) is ignored — it reveals the panel, not navigates.
|
|
155
|
-
|
|
173
|
+
// The same item serves both rail widths: collapsed it shrinks to its icon and shows its label as a tooltip instead.
|
|
174
|
+
return (jsx("li", { className: "py-px", onKeyDown: handleTriggerKeyDown(item.label, hasChildren), children: jsx(Tooltip, { isDisabled: !isCollapsed, title: item.label, placement: "right", children: jsx(NavItemBase, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, icon: item.icon, badge: item.badge, hasSubmenu: hasChildren, collapsed: isCollapsed, resizing: isResizing, onClick: selectSection, "data-testid": itemTestId, ...disclosure, children: item.label }) }) }, item.label));
|
|
156
175
|
});
|
|
157
|
-
const mainSidebar = (jsxs(motion.aside
|
|
158
|
-
|
|
176
|
+
const mainSidebar = (jsxs(motion.aside
|
|
177
|
+
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
178
|
+
, {
|
|
179
|
+
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
180
|
+
initial: false, animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, onAnimationComplete: () => {
|
|
181
|
+
setIsResizing(false);
|
|
182
|
+
setIsApplyingStoredPreference(false);
|
|
183
|
+
}, className: cx('flex h-full max-h-full flex-col justify-between overflow-x-hidden overflow-y-auto bg-secondary', !hideBorder && 'border-r border-secondary'), children: [jsxs("div", { className: "flex flex-col", children: [jsxs("div", { className: "relative flex h-18 items-center px-5", children: [jsx("div", { inert: isCollapsed, className: cx('flex transition-opacity motion-reduce:transition-none', isCollapsed ? 'opacity-0 duration-150' : 'delay-150 duration-150'), children: jsx(LogoLink, { href: homeHref, size: "md", onClick: () => reportNavigation(homeHref), "data-testid": joinTestId(rootTestId, 'logo') }) }), jsx("div", { className: cx('absolute top-5 transition-[right] duration-300 ease-out motion-reduce:transition-none', isCollapsed ? 'right-4.5' : 'right-4'), children: jsx(ButtonUtility, { size: "sm", color: "tertiary", tooltip: isCollapsed ? 'Expand' : 'Collapse', "aria-label": isCollapsed ? 'Expand navigation' : 'Collapse navigation', icon: isCollapsed ? ChevronRightDouble : ChevronLeftDouble, "data-testid": joinTestId(rootTestId, isCollapsed ? 'expand' : 'collapse'), onClick: () => setCollapsed(!isCollapsed) }) })] }), jsx("nav", { "aria-label": "Main", children: jsx("ul", { className: "flex flex-col gap-0.5 px-4 pt-1", children: renderPrimaryItems(items) }) })] }), jsxs("div", { className: "mt-auto flex flex-col gap-3 px-4 py-4", children: [footerItems.length > 0 && (jsx("nav", { "aria-label": "Footer", children: jsx("ul", { className: "flex flex-col gap-0.5", children: renderPrimaryItems(footerItems) }) })), account && (jsx(NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, collapsed: isCollapsed, resizing: isResizing, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] }))] })] }));
|
|
159
184
|
const handleMobileNavigate = (href) => {
|
|
160
185
|
const destination = safeHref(href);
|
|
161
186
|
if (destination === undefined)
|
|
@@ -169,8 +194,8 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
169
194
|
onClick?.();
|
|
170
195
|
};
|
|
171
196
|
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
172
|
-
const secondarySidebar = currentItem && (jsx(AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsx(motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition:
|
|
173
|
-
return (jsxs(TestIdProvider, { value: rootTestId, children: [jsxs("div", { className: "z-40 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerMove: handleContainerPointerMove, onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsx(
|
|
197
|
+
const secondarySidebar = currentItem && (jsx(AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsx(motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: SPRING, className: cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", current: item.href === activeHref, href: item.href, icon: item.icon, badge: item.badge, onClick: () => reportNavigation(item.href), "data-testid": item['data-testid'] ?? joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsx(NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) })) }));
|
|
198
|
+
return (jsxs(TestIdProvider, { value: rootTestId, children: [jsxs("div", { className: "z-40 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerMove: handleContainerPointerMove, onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsx(motion.div, { initial: false, animate: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && (jsx(MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId, homeHref: homeHref, onHomePress: () => reportNavigation(homeHref), logoTestId: joinTestId(rootTestId, 'mobile-logo'), "data-testid": joinTestId(rootTestId, 'mobile-toggle') })), jsx(MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, "data-testid": joinTestId(rootTestId, 'mobile-close'), children: jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsxs("div", { className: "flex flex-col items-start gap-7 px-4", children: [jsx(LogoLink, { href: homeHref, size: "sm", onClick: () => handleMobileNavigate(homeHref), "data-testid": joinTestId(rootTestId, 'drawer-logo') }), search && (jsx(SearchTrigger, { size: "md", placeholder: search.placeholder ?? 'Search', label: search.label ?? 'Search', onPress: closeMobileMenuThen(search.onPress), className: "w-full", "data-testid": search['data-testid'] ?? joinTestId(rootTestId, 'search') }))] }), jsx("nav", { "aria-label": "Main", children: jsx(NavList, { activeUrl: activeUrl, items: items, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId }) }), jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsx("nav", { "aria-label": "Footer", children: jsx(NavList, { activeUrl: activeUrl, items: footerItems, onNavigate: handleMobileNavigate, testIdPrefix: rootTestId, className: "px-0 pt-0" }) })), account && (jsx(NavAccountCard, { account: account.account, menuItems: withMobileMenuClose(account.menuItems), bottomMenuItems: withMobileMenuClose(account.bottomMenuItems), "data-testid": account['data-testid'] }))] })] }) })] }));
|
|
174
199
|
};
|
|
175
200
|
|
|
176
201
|
export { NavAccountCard, NavItemBase, SidebarNavigation };
|