@flipdish/ui-library 0.7.5 → 0.8.1
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/FlipdishLogo/flipdish-logo.paths.cjs +56 -0
- package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.cjs.map +1 -0
- package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.d.ts +7 -0
- package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.d.ts.map +1 -0
- package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.js +49 -0
- package/dist/components/atoms/FlipdishLogo/flipdish-logo.paths.js.map +1 -0
- package/dist/components/atoms/FlipdishLogo/index.cjs +30 -6
- package/dist/components/atoms/FlipdishLogo/index.cjs.map +1 -1
- package/dist/components/atoms/FlipdishLogo/index.d.ts +65 -4
- package/dist/components/atoms/FlipdishLogo/index.d.ts.map +1 -1
- package/dist/components/atoms/FlipdishLogo/index.js +30 -6
- package/dist/components/atoms/FlipdishLogo/index.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.js +1 -1
- package/dist/components/organisms/HeaderNavigation/components/mobile-header.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.cjs +1 -1
- package/dist/components/organisms/HeaderNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.js +1 -1
- package/dist/components/organisms/HeaderNavigation/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs +16 -3
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts +31 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.js +18 -6
- package/dist/components/organisms/SidebarNavigation/components/mobile-header.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +6 -45
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +16 -25
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js +8 -47
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts +5 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +14 -8
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts +9 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js +14 -8
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs +19 -0
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.cjs.map +1 -0
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts +22 -0
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.d.ts.map +1 -0
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js +17 -0
- package/dist/components/organisms/SidebarNavigation/components/sidebar-menu-button.js.map +1 -0
- package/dist/components/organisms/SidebarNavigation/index.cjs +139 -11
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts +55 -7
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +143 -7
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/utilities/localStorageUtils/index.cjs +125 -0
- package/dist/utilities/localStorageUtils/index.cjs.map +1 -0
- package/dist/utilities/localStorageUtils/index.d.ts +43 -0
- package/dist/utilities/localStorageUtils/index.d.ts.map +1 -0
- package/dist/utilities/localStorageUtils/index.js +121 -0
- package/dist/utilities/localStorageUtils/index.js.map +1 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.cjs +15 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.cjs.map +1 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.d.ts +11 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.d.ts.map +1 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.js +13 -0
- package/dist/utilities/localStorageUtils/localStorageUtils.constants.js.map +1 -0
- package/package.json +1 -1
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.cjs +0 -16
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.cjs.map +0 -1
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.d.ts +0 -3
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.d.ts.map +0 -1
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.js +0 -14
- package/dist/components/atoms/FlipdishLogo/components/flipdish-logo-minimal.js.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs +0 -32
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts +0 -20
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js +0 -30
- package/dist/components/organisms/SidebarNavigation/components/sidebar-dual-tier.js.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs +0 -23
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts +0 -15
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js +0 -21
- package/dist/components/organisms/SidebarNavigation/components/sidebar-section-dividers.js.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs +0 -22
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts +0 -18
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js +0 -20
- package/dist/components/organisms/SidebarNavigation/components/sidebar-sections-subheadings.js.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs +0 -24
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts +0 -21
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js +0 -22
- package/dist/components/organisms/SidebarNavigation/components/sidebar-simple.js.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs +0 -35
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.cjs.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts +0 -28
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.d.ts.map +0 -1
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js +0 -33
- package/dist/components/organisms/SidebarNavigation/components/sidebar-slim.js.map +0 -1
|
@@ -3,9 +3,9 @@ import { Tooltip } from '@flipdish/ui-library/components/atoms/Tooltip';
|
|
|
3
3
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
4
4
|
import { Pressable } from 'react-aria-components';
|
|
5
5
|
|
|
6
|
-
const NavButton = ({ current, label, href, icon: Icon, className, tooltipPlacement = 'right', onClick, children }) => {
|
|
6
|
+
const NavButton = ({ current, label, href, icon: Icon, className, tooltipPlacement = 'right', onClick, children, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
|
|
7
7
|
const iconOnly = !children;
|
|
8
|
-
return (jsx(Tooltip, { isDisabled: !label, title: label, placement: tooltipPlacement, children: jsx(Pressable, { children: jsxs("a", { href: href, "aria-label": label, onClick: onClick, className: cx('group/item relative flex w-full cursor-pointer items-center justify-center gap-1 rounded-md bg-
|
|
8
|
+
return (jsx(Tooltip, { isDisabled: !label, title: label, placement: tooltipPlacement, children: jsx(Pressable, { children: jsxs("a", { href: href, "aria-label": label, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, onClick: onClick, className: cx('group/item relative flex w-full cursor-pointer items-center justify-center gap-1 rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2', current && 'bg-brand-primary hover:bg-brand-primary', iconOnly ? 'size-9' : 'px-2 py-1.5', className), children: [Icon && (jsx(Icon, { "aria-hidden": "true", className: cx('size-5 shrink-0 text-fg-quaternary transition-inherit-all group-hover/item:text-fg-quaternary_hover', current && 'text-fg-brand-primary') })), children && (jsx("span", { className: cx('px-0.5 text-sm font-semibold transition duration-100 ease-linear group-hover/item:text-secondary_hover', current && 'text-brand-secondary'), children: children }))] }) }) }));
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export { NavButton };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-button.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"nav-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-button.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAgCO,MAAM,SAAS,GAAG,CAAC,EACxB,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,EAAE,IAAI,EACV,SAAS,EACT,gBAAgB,GAAG,OAAO,EAC1B,OAAO,EACP,QAAQ,EACR,eAAe,EAAE,YAAY,EAC7B,eAAe,EAAE,YAAY,GACd,KAAI;AACnB,IAAA,MAAM,QAAQ,GAAG,CAAC,QAAQ;IAE1B,QACEA,IAAC,OAAO,EAAA,EAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAA,QAAA,EACpEA,IAAC,SAAS,EAAA,EAAA,QAAA,EACRC,IAAA,CAAA,GAAA,EAAA,EACE,IAAI,EAAE,IAAI,gBACE,KAAK,EAAA,eAAA,EACF,YAAY,EAAA,eAAA,EACZ,YAAY,EAC3B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,kRAAkR,EAClR,OAAO,IAAI,yCAAyC,EACpD,QAAQ,GAAG,QAAQ,GAAG,aAAa,EACnC,SAAS,CACV,EAAA,QAAA,EAAA,CAEA,IAAI,KACHD,GAAA,CAAC,IAAI,mBACS,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,OAAO,IAAI,uBAAuB,CACnC,GACD,CACH,EAEA,QAAQ,KACPA,cACE,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,OAAO,IAAI,sBAAsB,CAClC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACJ,CACR,CAAA,EAAA,CACC,EAAA,CACM,EAAA,CACJ;AAEd;;;;"}
|
|
@@ -6,25 +6,31 @@ var Badge = require('@flipdish/ui-library/components/atoms/Badge');
|
|
|
6
6
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
7
7
|
var reactAriaComponents = require('react-aria-components');
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A single navigation item used across the sidebar. The active state uses the
|
|
11
|
+
* brand surface/text tokens (`bg-brand-primary`, `text-brand-secondary`), and an
|
|
12
|
+
* optional leading status dot can be rendered before the icon.
|
|
13
|
+
*/
|
|
9
14
|
const styles = cx.sortCx({
|
|
10
|
-
root: 'group relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-
|
|
11
|
-
rootSelected: 'bg-
|
|
15
|
+
root: 'group/item relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
16
|
+
rootSelected: 'bg-brand-primary hover:bg-brand-primary',
|
|
12
17
|
});
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
const
|
|
18
|
+
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') }));
|
|
19
|
+
const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, status, onClick, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
|
|
20
|
+
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', current && 'text-fg-brand-primary') }));
|
|
21
|
+
const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsxRuntime.jsx(Badge.Badge, { className: "ml-3", color: current ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
|
|
22
|
+
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', current && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
17
23
|
const isExternal = href?.startsWith('http');
|
|
18
24
|
const externalIcon = isExternal && jsxRuntime.jsx(uiIcons.Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
|
|
19
25
|
if (type === 'collapsible') {
|
|
20
26
|
return (
|
|
21
27
|
// biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
|
|
22
|
-
jsxRuntime.jsxs("summary", { className: cx.cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [iconElement, labelElement, badgeElement, jsxRuntime.jsx(uiIcons.ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
|
|
28
|
+
jsxRuntime.jsxs("summary", { className: cx.cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, labelElement, badgeElement, jsxRuntime.jsx(uiIcons.ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
|
|
23
29
|
}
|
|
24
30
|
if (type === 'collapsible-child') {
|
|
25
31
|
return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('py-2 pr-3 pl-10', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [labelElement, externalIcon, badgeElement] }));
|
|
26
32
|
}
|
|
27
|
-
return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [iconElement, labelElement, externalIcon, badgeElement] }));
|
|
33
|
+
return (jsxRuntime.jsxs(reactAriaComponents.Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx.cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsxRuntime.jsx(StatusDot, { status: status }), iconElement, labelElement, externalIcon, badgeElement] }));
|
|
28
34
|
};
|
|
29
35
|
|
|
30
36
|
exports.NavItemBase = NavItemBase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-item.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","Badge","Share04","_jsxs","ChevronDown","AriaLink"],"mappings":";;;;;;;;AAQA,MAAM,MAAM,GAAGA,SAAM,CAAC;AACpB,IAAA,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"nav-item.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["sortCx","_jsx","cx","Badge","Share04","_jsxs","ChevronDown","AriaLink"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FC, HTMLAttributes, MouseEventHandler, ReactNode } from 'react';
|
|
2
|
+
/** Online status shown as a small leading dot on the nav item. */
|
|
3
|
+
export type NavItemStatus = 'online' | 'offline';
|
|
2
4
|
interface NavItemBaseProps {
|
|
3
|
-
/** Whether the nav item shows only an icon. */
|
|
4
|
-
iconOnly?: boolean;
|
|
5
5
|
/** Whether the collapsible nav item is open. */
|
|
6
6
|
open?: boolean;
|
|
7
7
|
/** URL to navigate to when the nav item is clicked. */
|
|
@@ -16,11 +16,17 @@ interface NavItemBaseProps {
|
|
|
16
16
|
current?: boolean;
|
|
17
17
|
/** Whether to truncate the label text. */
|
|
18
18
|
truncate?: boolean;
|
|
19
|
+
/** Optional leading status dot rendered before the icon. */
|
|
20
|
+
status?: NavItemStatus;
|
|
19
21
|
/** Handler for click events. */
|
|
20
22
|
onClick?: MouseEventHandler;
|
|
23
|
+
/** Disclosure state when the item triggers a revealed region (e.g. a sub-nav panel). */
|
|
24
|
+
'aria-expanded'?: boolean;
|
|
25
|
+
/** ID of the region this item controls when it acts as a disclosure trigger. */
|
|
26
|
+
'aria-controls'?: string;
|
|
21
27
|
/** Content to display. */
|
|
22
28
|
children?: ReactNode;
|
|
23
29
|
}
|
|
24
|
-
export declare const NavItemBase: ({ current, type, badge, href, icon: Icon, children, truncate, onClick }: NavItemBaseProps) => import("react").JSX.Element;
|
|
30
|
+
export declare const NavItemBase: ({ current, type, badge, href, icon: Icon, children, truncate, status, onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, }: NavItemBaseProps) => import("react").JSX.Element;
|
|
25
31
|
export {};
|
|
26
32
|
//# sourceMappingURL=nav-item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-item.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"nav-item.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAa9E,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,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,mBAAmB,CAAC;IACnD,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD,eAAO,MAAM,WAAW,GAAI,gJAYzB,gBAAgB,gCAmFlB,CAAC"}
|
|
@@ -4,25 +4,31 @@ import { Badge } from '@flipdish/ui-library/components/atoms/Badge';
|
|
|
4
4
|
import { sortCx, cx } from '@flipdish/ui-library/utilities/cx';
|
|
5
5
|
import { Link } from 'react-aria-components';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* A single navigation item used across the sidebar. The active state uses the
|
|
9
|
+
* brand surface/text tokens (`bg-brand-primary`, `text-brand-secondary`), and an
|
|
10
|
+
* optional leading status dot can be rendered before the icon.
|
|
11
|
+
*/
|
|
7
12
|
const styles = sortCx({
|
|
8
|
-
root: 'group relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-
|
|
9
|
-
rootSelected: 'bg-
|
|
13
|
+
root: 'group/item relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-transparent outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
14
|
+
rootSelected: 'bg-brand-primary hover:bg-brand-primary',
|
|
10
15
|
});
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
16
|
+
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') }));
|
|
17
|
+
const NavItemBase = ({ current, type, badge, href, icon: Icon, children, truncate = true, status, onClick, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls, }) => {
|
|
18
|
+
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', current && 'text-fg-brand-primary') }));
|
|
19
|
+
const badgeElement = badge && (typeof badge === 'string' || typeof badge === 'number') ? (jsx(Badge, { className: "ml-3", color: current ? 'brand' : 'gray', type: "pill-color", size: "sm", children: badge })) : (badge);
|
|
20
|
+
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', current && 'text-brand-secondary group-hover/item:text-brand-secondary'), children: children }));
|
|
15
21
|
const isExternal = href?.startsWith('http');
|
|
16
22
|
const externalIcon = isExternal && jsx(Share04, { className: "size-4 stroke-[2.5px] text-fg-quaternary" });
|
|
17
23
|
if (type === 'collapsible') {
|
|
18
24
|
return (
|
|
19
25
|
// biome-ignore lint/a11y/noStaticElementInteractions: This is a summary element
|
|
20
|
-
jsxs("summary", { className: cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [iconElement, labelElement, badgeElement, jsx(ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
|
|
26
|
+
jsxs("summary", { className: cx('p-2', styles.root, current && styles.rootSelected), onClick: onClick, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, badgeElement, jsx(ChevronDown, { "aria-hidden": "true", className: "ml-3 size-4 shrink-0 stroke-[2.5px] text-fg-quaternary in-open:-scale-y-100" })] }));
|
|
21
27
|
}
|
|
22
28
|
if (type === 'collapsible-child') {
|
|
23
29
|
return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('py-2 pr-3 pl-10', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [labelElement, externalIcon, badgeElement] }));
|
|
24
30
|
}
|
|
25
|
-
return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [iconElement, labelElement, externalIcon, badgeElement] }));
|
|
31
|
+
return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", className: cx('group/item p-2', styles.root, current && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, externalIcon, badgeElement] }));
|
|
26
32
|
};
|
|
27
33
|
|
|
28
34
|
export { NavItemBase };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink"],"mappings":";;;;;;AAQA,MAAM,MAAM,GAAG,MAAM,CAAC;AACpB,IAAA,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var uiIcons = require('@flipdish/ui-icons');
|
|
5
|
+
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
6
|
+
var reactAriaComponents = require('react-aria-components');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
|
|
10
|
+
* it into your own header when you don't render the built-in mobile header
|
|
11
|
+
* (`showMobileHeader={false}`), and wire it to the same open-state you pass to
|
|
12
|
+
* `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
|
|
13
|
+
*
|
|
14
|
+
* @summary hamburger toggle that opens the sidebar drawer from a custom header
|
|
15
|
+
*/
|
|
16
|
+
const SidebarMenuButton = ({ isOpen = false, onPress, controls, 'aria-label': ariaLabel, className }) => (jsxRuntime.jsxs(reactAriaComponents.Button, { "aria-label": ariaLabel ?? (isOpen ? 'Close navigation menu' : 'Open navigation menu'), "aria-expanded": isOpen, "aria-controls": controls, onPress: onPress, className: cx.cx('relative flex items-center justify-center rounded-lg bg-transparent p-2 text-fg-secondary outline-focus-ring hover:bg-secondary_hover hover:text-fg-secondary_hover focus-visible:outline-2 focus-visible:outline-offset-2', className), children: [jsxRuntime.jsx(uiIcons.Menu02, { className: cx.cx('size-6 transition duration-200 ease-in-out', isOpen && 'opacity-0') }), jsxRuntime.jsx(uiIcons.X, { className: cx.cx('absolute size-6 opacity-0 transition duration-200 ease-in-out', isOpen && 'opacity-100') })] }));
|
|
17
|
+
|
|
18
|
+
exports.SidebarMenuButton = SidebarMenuButton;
|
|
19
|
+
//# sourceMappingURL=sidebar-menu-button.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-menu-button.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"sourcesContent":[null],"names":["_jsxs","AriaButton","cx","_jsx","Menu02","CloseIcon"],"mappings":";;;;;;;AAmBA;;;;;;;AAOG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAA0B,MACjIA,eAAA,CAACC,0BAAU,kBACG,SAAS,KAAK,MAAM,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAA,eAAA,EACrE,MAAM,EAAA,eAAA,EACN,QAAQ,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAEC,KAAE,CACX,4NAA4N,EAC5N,SAAS,CACV,EAAA,QAAA,EAAA,CAEDC,eAACC,cAAM,EAAA,EAAC,SAAS,EAAEF,KAAE,CAAC,4CAA4C,EAAE,MAAM,IAAI,WAAW,CAAC,EAAA,CAAI,EAC9FC,eAACE,SAAS,EAAA,EAAC,SAAS,EAAEH,KAAE,CAAC,+DAA+D,EAAE,MAAM,IAAI,aAAa,CAAC,EAAA,CAAI,CAAA,EAAA,CAC3G;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface SidebarMenuButtonProps {
|
|
2
|
+
/** Whether the drawer this button controls is open. Drives the Menu ⇄ X icon crossfade and `aria-expanded`. */
|
|
3
|
+
isOpen?: boolean;
|
|
4
|
+
/** Called when the button is pressed — toggle your drawer open-state here. */
|
|
5
|
+
onPress?: () => void;
|
|
6
|
+
/** ID of the drawer element this button controls, for `aria-controls`. */
|
|
7
|
+
controls?: string;
|
|
8
|
+
/** Accessible label. Defaults to "Open/Close navigation menu" based on `isOpen`. */
|
|
9
|
+
'aria-label'?: string;
|
|
10
|
+
/** Additional CSS classes for the button. */
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
|
|
15
|
+
* it into your own header when you don't render the built-in mobile header
|
|
16
|
+
* (`showMobileHeader={false}`), and wire it to the same open-state you pass to
|
|
17
|
+
* `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
|
|
18
|
+
*
|
|
19
|
+
* @summary hamburger toggle that opens the sidebar drawer from a custom header
|
|
20
|
+
*/
|
|
21
|
+
export declare const SidebarMenuButton: ({ isOpen, onPress, controls, "aria-label": ariaLabel, className }: SidebarMenuButtonProps) => import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=sidebar-menu-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-menu-button.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,+GAA+G;IAC/G,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,mEAA2E,sBAAsB,gCAclI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Menu02, X } from '@flipdish/ui-icons';
|
|
3
|
+
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
4
|
+
import { Button } from 'react-aria-components';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A standalone hamburger toggle for the `SidebarNavigation` mobile drawer. Drop
|
|
8
|
+
* it into your own header when you don't render the built-in mobile header
|
|
9
|
+
* (`showMobileHeader={false}`), and wire it to the same open-state you pass to
|
|
10
|
+
* `SidebarNavigation`'s `mobileMenuOpen` / `onMobileMenuOpenChange`.
|
|
11
|
+
*
|
|
12
|
+
* @summary hamburger toggle that opens the sidebar drawer from a custom header
|
|
13
|
+
*/
|
|
14
|
+
const SidebarMenuButton = ({ isOpen = false, onPress, controls, 'aria-label': ariaLabel, className }) => (jsxs(Button, { "aria-label": ariaLabel ?? (isOpen ? 'Close navigation menu' : 'Open navigation menu'), "aria-expanded": isOpen, "aria-controls": controls, onPress: onPress, className: cx('relative flex items-center justify-center rounded-lg bg-transparent p-2 text-fg-secondary outline-focus-ring hover:bg-secondary_hover hover:text-fg-secondary_hover focus-visible:outline-2 focus-visible:outline-offset-2', className), children: [jsx(Menu02, { className: cx('size-6 transition duration-200 ease-in-out', isOpen && 'opacity-0') }), jsx(X, { className: cx('absolute size-6 opacity-0 transition duration-200 ease-in-out', isOpen && 'opacity-100') })] }));
|
|
15
|
+
|
|
16
|
+
export { SidebarMenuButton };
|
|
17
|
+
//# sourceMappingURL=sidebar-menu-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-menu-button.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/sidebar-menu-button.tsx"],"sourcesContent":[null],"names":["_jsxs","AriaButton","_jsx","CloseIcon"],"mappings":";;;;;AAmBA;;;;;;;AAOG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAA0B,MACjIA,IAAA,CAACC,MAAU,kBACG,SAAS,KAAK,MAAM,GAAG,uBAAuB,GAAG,sBAAsB,CAAC,EAAA,eAAA,EACrE,MAAM,EAAA,eAAA,EACN,QAAQ,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,4NAA4N,EAC5N,SAAS,CACV,EAAA,QAAA,EAAA,CAEDC,IAAC,MAAM,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,4CAA4C,EAAE,MAAM,IAAI,WAAW,CAAC,EAAA,CAAI,EAC9FA,IAACC,CAAS,EAAA,EAAC,SAAS,EAAE,EAAE,CAAC,+DAA+D,EAAE,MAAM,IAAI,aAAa,CAAC,EAAA,CAAI,CAAA,EAAA,CAC3G;;;;"}
|
|
@@ -1,21 +1,149 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var uiIcons = require('@flipdish/ui-icons');
|
|
5
|
+
var FlipdishLogo = require('@flipdish/ui-library/components/atoms/FlipdishLogo');
|
|
6
|
+
var UtilityButton = require('@flipdish/ui-library/components/atoms/UtilityButton');
|
|
7
|
+
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
8
|
+
var localStorageUtils = require('@flipdish/ui-library/utilities/localStorageUtils');
|
|
9
|
+
var react = require('motion/react');
|
|
10
|
+
var React = require('react');
|
|
11
|
+
var mobileHeader = require('./components/mobile-header.cjs');
|
|
3
12
|
var navAccountCard = require('./components/nav-account-card.cjs');
|
|
13
|
+
var navButton = require('./components/nav-button.cjs');
|
|
4
14
|
var navItem = require('./components/nav-item.cjs');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var sidebarSectionsSubheadings = require('./components/sidebar-sections-subheadings.cjs');
|
|
8
|
-
var sidebarSimple = require('./components/sidebar-simple.cjs');
|
|
9
|
-
var sidebarSlim = require('./components/sidebar-slim.cjs');
|
|
10
|
-
|
|
15
|
+
var navList = require('./components/nav-list.cjs');
|
|
16
|
+
var sidebarMenuButton = require('./components/sidebar-menu-button.cjs');
|
|
11
17
|
|
|
18
|
+
const COLLAPSED_WIDTH = 68;
|
|
19
|
+
const EXPANDED_WIDTH = 280;
|
|
20
|
+
const SECONDARY_SIDEBAR_WIDTH = 256;
|
|
21
|
+
/**
|
|
22
|
+
* The primary app-shell navigation rail. It renders a logo, a list of
|
|
23
|
+
* destinations, footer links, and an account card, and can be toggled between a
|
|
24
|
+
* labelled list and an icon-only strip (the choice persists across reloads).
|
|
25
|
+
* Hovering, focusing, or pressing ArrowRight on a section with children reveals a
|
|
26
|
+
* secondary sub-navigation panel. Below the `lg` breakpoint it collapses into a
|
|
27
|
+
* mobile header with a slide-over menu.
|
|
28
|
+
*
|
|
29
|
+
* @summary collapsible app-shell sidebar with a hover-revealed sub-navigation panel
|
|
30
|
+
*/
|
|
31
|
+
const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collapsed, defaultCollapsed = false, onCollapsedChange, persistCollapsed = true, hideBorder, hideRightBorder, showMobileHeader = true, mobileMenuOpen, onMobileMenuOpenChange, }) => {
|
|
32
|
+
const isControlled = collapsed !== undefined;
|
|
33
|
+
const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);
|
|
34
|
+
const isCollapsed = isControlled ? collapsed : internalCollapsed;
|
|
35
|
+
// Mobile drawer open-state: controlled when `mobileMenuOpen` is provided, else internal.
|
|
36
|
+
const isMobileMenuControlled = mobileMenuOpen !== undefined;
|
|
37
|
+
const [internalMobileMenuOpen, setInternalMobileMenuOpen] = React.useState(false);
|
|
38
|
+
const isMobileMenuOpen = isMobileMenuControlled ? mobileMenuOpen : internalMobileMenuOpen;
|
|
39
|
+
const setMobileMenuOpen = (next) => {
|
|
40
|
+
onMobileMenuOpenChange?.(next);
|
|
41
|
+
if (!isMobileMenuControlled)
|
|
42
|
+
setInternalMobileMenuOpen(next);
|
|
43
|
+
};
|
|
44
|
+
// Hydrate the persisted preference after mount to avoid an SSR hydration mismatch.
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
if (isControlled || !persistCollapsed)
|
|
47
|
+
return;
|
|
48
|
+
const stored = localStorageUtils.sidebarCollapsedStorage.get();
|
|
49
|
+
if (stored !== null)
|
|
50
|
+
setInternalCollapsed(stored);
|
|
51
|
+
}, [isControlled, persistCollapsed]);
|
|
52
|
+
const setCollapsed = (next) => {
|
|
53
|
+
onCollapsedChange?.(next);
|
|
54
|
+
if (isControlled)
|
|
55
|
+
return;
|
|
56
|
+
setInternalCollapsed(next);
|
|
57
|
+
if (persistCollapsed)
|
|
58
|
+
localStorageUtils.sidebarCollapsedStorage.set(next);
|
|
59
|
+
};
|
|
60
|
+
const isActive = (item) => item.href === activeUrl || item.items?.some((sub) => sub.href === activeUrl);
|
|
61
|
+
// The secondary sub-navigation panel is revealed on hover/focus of a parent
|
|
62
|
+
// item (one with children); leaf items and clicks navigate straight to `href`.
|
|
63
|
+
const [panelItem, setPanelItem] = React.useState(undefined);
|
|
64
|
+
const [showSubNav, setShowSubNav] = React.useState(false);
|
|
65
|
+
const isSecondarySidebarVisible = showSubNav && Boolean(panelItem?.items?.length);
|
|
66
|
+
const panelId = React.useId();
|
|
67
|
+
// Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
|
|
68
|
+
const mobileMenuId = React.useId();
|
|
69
|
+
const panelRef = React.useRef(null);
|
|
70
|
+
// The primary item that opened the panel, so ArrowLeft/Escape can restore focus.
|
|
71
|
+
const triggerRef = React.useRef(null);
|
|
72
|
+
// Set when a keyboard action should move focus into the panel once it renders.
|
|
73
|
+
const focusPanelOnOpen = React.useRef(false);
|
|
74
|
+
// Guards the focus-reveal so restoring focus to a parent doesn't re-open the panel.
|
|
75
|
+
const suppressReveal = React.useRef(false);
|
|
76
|
+
const focusFirstPanelItem = () => panelRef.current?.querySelector('a, button')?.focus();
|
|
77
|
+
// Move focus into the panel once it has rendered after a keyboard-triggered open.
|
|
78
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: focusFirstPanelItem only reads the stable panelRef
|
|
79
|
+
React.useEffect(() => {
|
|
80
|
+
if (isSecondarySidebarVisible && focusPanelOnOpen.current) {
|
|
81
|
+
focusPanelOnOpen.current = false;
|
|
82
|
+
focusFirstPanelItem();
|
|
83
|
+
}
|
|
84
|
+
}, [isSecondarySidebarVisible]);
|
|
85
|
+
const revealSubNav = (item) => {
|
|
86
|
+
if (suppressReveal.current) {
|
|
87
|
+
suppressReveal.current = false;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (item.items?.length) {
|
|
91
|
+
setPanelItem(item);
|
|
92
|
+
setShowSubNav(true);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Hovering/focusing a leaf destination closes any open panel.
|
|
96
|
+
setShowSubNav(false);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const hideSubNav = () => setShowSubNav(false);
|
|
100
|
+
const handleContainerBlur = (event) => {
|
|
101
|
+
if (!event.currentTarget.contains(event.relatedTarget))
|
|
102
|
+
hideSubNav();
|
|
103
|
+
};
|
|
104
|
+
// ArrowRight on a parent item opens (if needed) and moves focus into the panel.
|
|
105
|
+
const handlePrimaryKeyDown = (item) => (event) => {
|
|
106
|
+
if (event.key !== 'ArrowRight' || !item.items?.length)
|
|
107
|
+
return;
|
|
108
|
+
event.preventDefault();
|
|
109
|
+
triggerRef.current = event.currentTarget.querySelector('a, button');
|
|
110
|
+
if (isSecondarySidebarVisible && panelItem?.label === item.label) {
|
|
111
|
+
focusFirstPanelItem();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
focusPanelOnOpen.current = true;
|
|
115
|
+
setPanelItem(item);
|
|
116
|
+
setShowSubNav(true);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
// ArrowLeft/Escape inside the panel closes it and restores focus to the parent.
|
|
120
|
+
const handlePanelKeyDown = (event) => {
|
|
121
|
+
if (event.key !== 'ArrowLeft' && event.key !== 'Escape')
|
|
122
|
+
return;
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
suppressReveal.current = true;
|
|
125
|
+
hideSubNav();
|
|
126
|
+
triggerRef.current?.focus();
|
|
127
|
+
};
|
|
128
|
+
const renderPrimaryItems = (list) => list.map((item) => {
|
|
129
|
+
const hasChildren = Boolean(item.items?.length);
|
|
130
|
+
const isOpen = hasChildren && isSecondarySidebarVisible && panelItem?.label === item.label;
|
|
131
|
+
// Disclosure semantics: parents announce their expanded state and, once open, the panel they control.
|
|
132
|
+
const disclosure = {
|
|
133
|
+
'aria-expanded': hasChildren ? isOpen : undefined,
|
|
134
|
+
'aria-controls': isOpen ? panelId : undefined,
|
|
135
|
+
};
|
|
136
|
+
return (jsxRuntime.jsx("li", { className: isCollapsed ? undefined : 'py-px', onMouseEnter: () => revealSubNav(item), onFocus: () => revealSubNav(item), onKeyDown: handlePrimaryKeyDown(item), children: isCollapsed ? (jsxRuntime.jsx(navButton.NavButton, { current: isActive(item), href: item.href, label: item.label || '', icon: item.icon, ...disclosure })) : (jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: isActive(item), href: item.href, icon: item.icon, badge: item.badge, ...disclosure, children: item.label })) }, item.label));
|
|
137
|
+
});
|
|
138
|
+
const mainSidebar = (jsxRuntime.jsxs(react.motion.aside, { animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, 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: [isCollapsed ? (jsxRuntime.jsx("div", { className: "flex justify-center px-3 py-5", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Expand", "aria-label": "Expand navigation", icon: uiIcons.ChevronRightDouble, onClick: () => setCollapsed(false) }) })) : (jsxRuntime.jsxs("div", { className: "relative flex items-center px-5 py-5", children: [jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "md" }), jsxRuntime.jsx("div", { className: "absolute top-5 right-4", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Collapse", "aria-label": "Collapse navigation", icon: uiIcons.ChevronLeftDouble, onClick: () => setCollapsed(true) }) })] })), jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed ? 'items-center px-3.5' : 'px-4 pt-1'), children: renderPrimaryItems(items) })] }), jsxRuntime.jsxs("div", { className: cx.cx('mt-auto flex flex-col gap-3 py-4', isCollapsed ? 'items-center px-3' : 'px-4'), children: [footerItems.length > 0 && jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed && 'items-center'), children: renderPrimaryItems(footerItems) }), account &&
|
|
139
|
+
(isCollapsed ? (jsxRuntime.jsx(navAccountCard.NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })) : (jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })))] })] }));
|
|
140
|
+
const secondarySidebar = panelItem && (jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsxRuntime.jsx(react.motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${panelItem.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: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, 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: panelItem.label }), jsxRuntime.jsx("ul", { className: "py-2", children: panelItem.items?.map((item) => (jsxRuntime.jsx("li", { className: "py-px", children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, children: item.label }) }, item.label))) })] }) })) }));
|
|
141
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: "z-50 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onMouseLeave: hideSubNav, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsxRuntime.jsx("div", { style: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, 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 }), jsxRuntime.jsx(mobileHeader.MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, 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.jsx("div", { className: "px-4", children: jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "sm" }) }), jsxRuntime.jsx(navList.NavList, { activeUrl: activeUrl, items: items }), jsxRuntime.jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5", children: footerItems.map((item) => (jsxRuntime.jsx("li", { children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, children: item.label }) }, item.label))) })), account && jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems })] })] }) })] }));
|
|
142
|
+
};
|
|
12
143
|
|
|
13
144
|
exports.NavAccountCard = navAccountCard.NavAccountCard;
|
|
14
145
|
exports.NavAccountMenu = navAccountCard.NavAccountMenu;
|
|
15
146
|
exports.NavItemBase = navItem.NavItemBase;
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.SidebarNavigationSectionsSubheadings = sidebarSectionsSubheadings.SidebarNavigationSectionsSubheadings;
|
|
19
|
-
exports.SidebarNavigationSimple = sidebarSimple.SidebarNavigationSimple;
|
|
20
|
-
exports.SidebarNavigationSlim = sidebarSlim.SidebarNavigationSlim;
|
|
147
|
+
exports.SidebarMenuButton = sidebarMenuButton.SidebarMenuButton;
|
|
148
|
+
exports.SidebarNavigation = SidebarNavigation;
|
|
21
149
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useState","useEffect","sidebarCollapsedStorage","useId","useRef","_jsx","NavButton","NavItemBase","_jsxs","motion","cx","ButtonUtility","ChevronRightDouble","FlipdishLogo","ChevronLeftDouble","NavAccountCard","AnimatePresence","MobileNavigationHeader","MobileNavigationDrawer","NavList"],"mappings":"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"}
|
|
@@ -1,8 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import { type NavAccountData } from './components/nav-account-card';
|
|
3
|
+
import type { NavItemType } from './sidebarNavigation.types';
|
|
4
|
+
export { NavAccountCard, type NavAccountData, NavAccountMenu, type NavAccountMenuItemType, type NavAccountType } from './components/nav-account-card';
|
|
5
|
+
export { NavItemBase, type NavItemStatus } from './components/nav-item';
|
|
6
|
+
export { SidebarMenuButton, type SidebarMenuButtonProps } from './components/sidebar-menu-button';
|
|
7
|
+
type SidebarNavItem = NavItemType & {
|
|
8
|
+
icon: FC<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
export interface SidebarNavigationProps {
|
|
13
|
+
/** URL of the currently active item. */
|
|
14
|
+
activeUrl?: string;
|
|
15
|
+
/** List of items to display. Every item requires an icon for the collapsed rail. */
|
|
16
|
+
items: SidebarNavItem[];
|
|
17
|
+
/** List of footer items to display. */
|
|
18
|
+
footerItems?: SidebarNavItem[];
|
|
19
|
+
/** Account configuration for the card at the bottom of the sidebar. When omitted the account card is not rendered. */
|
|
20
|
+
account?: NavAccountData;
|
|
21
|
+
/** Controlled collapsed state. When provided, the component is controlled and the parent owns persistence. */
|
|
22
|
+
collapsed?: boolean;
|
|
23
|
+
/** Initial collapsed state when uncontrolled. @default false */
|
|
24
|
+
defaultCollapsed?: boolean;
|
|
25
|
+
/** Called whenever the user toggles the rail. */
|
|
26
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
27
|
+
/** Persist the collapsed state to localStorage (uncontrolled mode only). @default true */
|
|
28
|
+
persistCollapsed?: boolean;
|
|
29
|
+
/** Whether to hide the border when the secondary panel is closed. */
|
|
30
|
+
hideBorder?: boolean;
|
|
31
|
+
/** Whether to hide the right side border of the secondary panel. */
|
|
32
|
+
hideRightBorder?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to render the built-in mobile header (logo + hamburger) below the `lg`
|
|
35
|
+
* breakpoint. Set `false` to supply your own trigger — embed a `SidebarMenuButton`
|
|
36
|
+
* in a custom header and drive the drawer via `mobileMenuOpen`/`onMobileMenuOpenChange`.
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
39
|
+
showMobileHeader?: boolean;
|
|
40
|
+
/** Controlled open state of the mobile drawer. When provided, the parent owns the state. */
|
|
41
|
+
mobileMenuOpen?: boolean;
|
|
42
|
+
/** Called whenever the mobile drawer opens or closes. */
|
|
43
|
+
onMobileMenuOpenChange?: (open: boolean) => void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The primary app-shell navigation rail. It renders a logo, a list of
|
|
47
|
+
* destinations, footer links, and an account card, and can be toggled between a
|
|
48
|
+
* labelled list and an icon-only strip (the choice persists across reloads).
|
|
49
|
+
* Hovering, focusing, or pressing ArrowRight on a section with children reveals a
|
|
50
|
+
* secondary sub-navigation panel. Below the `lg` breakpoint it collapses into a
|
|
51
|
+
* mobile header with a slide-over menu.
|
|
52
|
+
*
|
|
53
|
+
* @summary collapsible app-shell sidebar with a hover-revealed sub-navigation panel
|
|
54
|
+
*/
|
|
55
|
+
export declare const SidebarNavigation: ({ activeUrl, items, footerItems, account, collapsed, defaultCollapsed, onCollapsedChange, persistCollapsed, hideBorder, hideRightBorder, showMobileHeader, mobileMenuOpen, onMobileMenuOpenChange, }: SidebarNavigationProps) => import("react").JSX.Element;
|
|
8
56
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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":"AAQA,OAAO,KAAK,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAIpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtJ,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAElG,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,wCAAwC;IACxC,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,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;CAClD;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,sMAc/B,sBAAsB,gCAuQxB,CAAC"}
|