@flipdish/ui-library 0.34.0 → 0.34.2
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/organisms/SidebarNavigation/hooks/useDualTierReveal.cjs +73 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.cjs.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.d.ts +35 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.d.ts.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.js +71 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useDualTierReveal.js.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.cjs +85 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.cjs.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.d.ts +47 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.d.ts.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.js +82 -0
- package/dist/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.js.map +1 -0
- package/dist/components/organisms/SidebarNavigation/index.cjs +15 -90
- 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 +17 -92
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Which section the dual-tier panel lists, and whether hover, keyboard focus or the account menu
|
|
7
|
+
* currently holds that panel open. The panel lists the children of the current section. The active
|
|
8
|
+
* route seeds that section, and clicking or keyboard-activating a primary item switches it, so
|
|
9
|
+
* exactly one item is ever highlighted.
|
|
10
|
+
*
|
|
11
|
+
* @param options The active section label and the sections the rail can select.
|
|
12
|
+
* @returns The selected section, whether its panel is visible, and the pointer, focus and selection handlers.
|
|
13
|
+
*/
|
|
14
|
+
const useDualTierReveal = ({ activeLabel, sections }) => {
|
|
15
|
+
// Track the current section by its (unique) label rather than the object, so it
|
|
16
|
+
// survives the consumer passing a fresh `items` array and never collides on href.
|
|
17
|
+
const [currentLabel, setCurrentLabel] = React.useState(activeLabel);
|
|
18
|
+
// Keep the selected section in sync with the active route when it changes externally
|
|
19
|
+
// (browser navigation, a controlled `activeUrl`, or asynchronously-loaded items).
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
if (activeLabel !== undefined)
|
|
22
|
+
setCurrentLabel(activeLabel);
|
|
23
|
+
}, [activeLabel]);
|
|
24
|
+
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
25
|
+
const [isHovering, setIsHovering] = React.useState(false);
|
|
26
|
+
const [isFocusWithin, setIsFocusWithin] = React.useState(false);
|
|
27
|
+
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
28
|
+
const [isAccountMenuOpen, setIsAccountMenuOpen] = React.useState(false);
|
|
29
|
+
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
30
|
+
// Only *keyboard* focus holds the panel open. Focus parked on a just-clicked link
|
|
31
|
+
// (pointer modality) must not — otherwise the panel lingers after a mouse click even
|
|
32
|
+
// once the pointer leaves. Gating on `:focus-visible` keeps the mouse behaviour
|
|
33
|
+
// identical to Untitled UI (closes on pointer-leave) while preserving keyboard reach.
|
|
34
|
+
const handleContainerFocus = (event) => {
|
|
35
|
+
setIsFocusWithin(event.target.matches(':focus-visible'));
|
|
36
|
+
};
|
|
37
|
+
const handleContainerBlur = (event) => {
|
|
38
|
+
if (!event.currentTarget.contains(event.relatedTarget))
|
|
39
|
+
setIsFocusWithin(false);
|
|
40
|
+
};
|
|
41
|
+
// `pointerenter` never fires when the pointer is already inside as the sidebar mounts (it mounts
|
|
42
|
+
// late, after permissions/app data load), so the first move inside counts as entering too.
|
|
43
|
+
// Portaled children (account menu, tooltips) bubble through React but sit outside in the DOM.
|
|
44
|
+
const handleContainerPointerMove = (event) => {
|
|
45
|
+
if (!isHovering && event.currentTarget.contains(event.target))
|
|
46
|
+
setIsHovering(true);
|
|
47
|
+
};
|
|
48
|
+
// A click must reveal the panel even when no `pointerenter` preceded it (see
|
|
49
|
+
// handleContainerPointerMove). Keyboard activation is already covered by focus-within and must not latch
|
|
50
|
+
// the hover flag, which only `pointerleave` clears.
|
|
51
|
+
const revealSection = (label, hasChildren) => {
|
|
52
|
+
setCurrentLabel(label);
|
|
53
|
+
if (hasChildren && !isFocusWithin)
|
|
54
|
+
setIsHovering(true);
|
|
55
|
+
};
|
|
56
|
+
const revealFromKeyboard = () => setIsFocusWithin(true);
|
|
57
|
+
return {
|
|
58
|
+
currentLabel,
|
|
59
|
+
setCurrentLabel,
|
|
60
|
+
currentItem,
|
|
61
|
+
isSecondarySidebarVisible,
|
|
62
|
+
setIsHovering,
|
|
63
|
+
setIsAccountMenuOpen,
|
|
64
|
+
handleContainerFocus,
|
|
65
|
+
handleContainerBlur,
|
|
66
|
+
handleContainerPointerMove,
|
|
67
|
+
revealSection,
|
|
68
|
+
revealFromKeyboard,
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
exports.useDualTierReveal = useDualTierReveal;
|
|
73
|
+
//# sourceMappingURL=useDualTierReveal.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDualTierReveal.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useDualTierReveal.ts"],"sourcesContent":[null],"names":["useState","useEffect"],"mappings":";;;;AAiBA;;;;;;;;AAQG;AACI,MAAM,iBAAiB,GAAG,CAAkC,EAAE,WAAW,EAAE,QAAQ,EAAkC,KAAI;;;IAG9H,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAqB,WAAW,CAAC;;;IAIjFC,eAAS,CAAC,MAAK;QACb,IAAI,WAAW,KAAK,SAAS;YAAE,eAAe,CAAC,WAAW,CAAC;AAC7D,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGD,cAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;;IAEzD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;AACjE,IAAA,MAAM,yBAAyB,GAAG,CAAC,UAAU,IAAI,aAAa,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC;;;;;AAM5H,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAiC,KAAI;QACjE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1D,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,KAAiC,KAAI;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,gBAAgB,CAAC,KAAK,CAAC;AACjF,IAAA,CAAC;;;;AAKD,IAAA,MAAM,0BAA0B,GAAG,CAAC,KAAmC,KAAI;AACzE,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC;AAC5F,IAAA,CAAC;;;;AAKD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,WAAoB,KAAI;QAC5D,eAAe,CAAC,KAAK,CAAC;QACtB,IAAI,WAAW,IAAI,CAAC,aAAa;YAAE,aAAa,CAAC,IAAI,CAAC;AACxD,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC;IAEvD,OAAO;QACL,YAAY;QACZ,eAAe;QACf,WAAW;QACX,yBAAyB;QACzB,aAAa;QACb,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;QACnB,0BAA0B;QAC1B,aAAa;QACb,kBAAkB;KACnB;AACH;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FocusEvent, PointerEvent } from 'react';
|
|
2
|
+
interface DualTierSection {
|
|
3
|
+
label: string;
|
|
4
|
+
items?: readonly unknown[];
|
|
5
|
+
}
|
|
6
|
+
interface DualTierRevealOptions<Section extends DualTierSection> {
|
|
7
|
+
/** Label of the section that contains the active route, when one matches. */
|
|
8
|
+
activeLabel: string | undefined;
|
|
9
|
+
/** Primary items followed by footer items, the same list the rail highlights. */
|
|
10
|
+
sections: readonly Section[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Which section the dual-tier panel lists, and whether hover, keyboard focus or the account menu
|
|
14
|
+
* currently holds that panel open. The panel lists the children of the current section. The active
|
|
15
|
+
* route seeds that section, and clicking or keyboard-activating a primary item switches it, so
|
|
16
|
+
* exactly one item is ever highlighted.
|
|
17
|
+
*
|
|
18
|
+
* @param options The active section label and the sections the rail can select.
|
|
19
|
+
* @returns The selected section, whether its panel is visible, and the pointer, focus and selection handlers.
|
|
20
|
+
*/
|
|
21
|
+
export declare const useDualTierReveal: <Section extends DualTierSection>({ activeLabel, sections }: DualTierRevealOptions<Section>) => {
|
|
22
|
+
currentLabel: string | undefined;
|
|
23
|
+
setCurrentLabel: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
|
|
24
|
+
currentItem: Section | undefined;
|
|
25
|
+
isSecondarySidebarVisible: boolean;
|
|
26
|
+
setIsHovering: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
27
|
+
setIsAccountMenuOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
28
|
+
handleContainerFocus: (event: FocusEvent<HTMLDivElement>) => void;
|
|
29
|
+
handleContainerBlur: (event: FocusEvent<HTMLDivElement>) => void;
|
|
30
|
+
handleContainerPointerMove: (event: PointerEvent<HTMLDivElement>) => void;
|
|
31
|
+
revealSection: (label: string, hasChildren: boolean) => void;
|
|
32
|
+
revealFromKeyboard: () => void;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=useDualTierReveal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDualTierReveal.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useDualTierReveal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGtD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED,UAAU,qBAAqB,CAAC,OAAO,SAAS,eAAe;IAC7D,6EAA6E;IAC7E,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iFAAiF;IACjF,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,eAAe,EAAE,2BAA2B,qBAAqB,CAAC,OAAO,CAAC;;;;;;;kCAsBrF,UAAU,CAAC,cAAc,CAAC;iCAI3B,UAAU,CAAC,cAAc,CAAC;wCAOnB,YAAY,CAAC,cAAc,CAAC;2BAOzC,MAAM,eAAe,OAAO;;CAoB3D,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Which section the dual-tier panel lists, and whether hover, keyboard focus or the account menu
|
|
5
|
+
* currently holds that panel open. The panel lists the children of the current section. The active
|
|
6
|
+
* route seeds that section, and clicking or keyboard-activating a primary item switches it, so
|
|
7
|
+
* exactly one item is ever highlighted.
|
|
8
|
+
*
|
|
9
|
+
* @param options The active section label and the sections the rail can select.
|
|
10
|
+
* @returns The selected section, whether its panel is visible, and the pointer, focus and selection handlers.
|
|
11
|
+
*/
|
|
12
|
+
const useDualTierReveal = ({ activeLabel, sections }) => {
|
|
13
|
+
// Track the current section by its (unique) label rather than the object, so it
|
|
14
|
+
// survives the consumer passing a fresh `items` array and never collides on href.
|
|
15
|
+
const [currentLabel, setCurrentLabel] = useState(activeLabel);
|
|
16
|
+
// Keep the selected section in sync with the active route when it changes externally
|
|
17
|
+
// (browser navigation, a controlled `activeUrl`, or asynchronously-loaded items).
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (activeLabel !== undefined)
|
|
20
|
+
setCurrentLabel(activeLabel);
|
|
21
|
+
}, [activeLabel]);
|
|
22
|
+
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
23
|
+
const [isHovering, setIsHovering] = useState(false);
|
|
24
|
+
const [isFocusWithin, setIsFocusWithin] = useState(false);
|
|
25
|
+
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
26
|
+
const [isAccountMenuOpen, setIsAccountMenuOpen] = useState(false);
|
|
27
|
+
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
28
|
+
// Only *keyboard* focus holds the panel open. Focus parked on a just-clicked link
|
|
29
|
+
// (pointer modality) must not — otherwise the panel lingers after a mouse click even
|
|
30
|
+
// once the pointer leaves. Gating on `:focus-visible` keeps the mouse behaviour
|
|
31
|
+
// identical to Untitled UI (closes on pointer-leave) while preserving keyboard reach.
|
|
32
|
+
const handleContainerFocus = (event) => {
|
|
33
|
+
setIsFocusWithin(event.target.matches(':focus-visible'));
|
|
34
|
+
};
|
|
35
|
+
const handleContainerBlur = (event) => {
|
|
36
|
+
if (!event.currentTarget.contains(event.relatedTarget))
|
|
37
|
+
setIsFocusWithin(false);
|
|
38
|
+
};
|
|
39
|
+
// `pointerenter` never fires when the pointer is already inside as the sidebar mounts (it mounts
|
|
40
|
+
// late, after permissions/app data load), so the first move inside counts as entering too.
|
|
41
|
+
// Portaled children (account menu, tooltips) bubble through React but sit outside in the DOM.
|
|
42
|
+
const handleContainerPointerMove = (event) => {
|
|
43
|
+
if (!isHovering && event.currentTarget.contains(event.target))
|
|
44
|
+
setIsHovering(true);
|
|
45
|
+
};
|
|
46
|
+
// A click must reveal the panel even when no `pointerenter` preceded it (see
|
|
47
|
+
// handleContainerPointerMove). Keyboard activation is already covered by focus-within and must not latch
|
|
48
|
+
// the hover flag, which only `pointerleave` clears.
|
|
49
|
+
const revealSection = (label, hasChildren) => {
|
|
50
|
+
setCurrentLabel(label);
|
|
51
|
+
if (hasChildren && !isFocusWithin)
|
|
52
|
+
setIsHovering(true);
|
|
53
|
+
};
|
|
54
|
+
const revealFromKeyboard = () => setIsFocusWithin(true);
|
|
55
|
+
return {
|
|
56
|
+
currentLabel,
|
|
57
|
+
setCurrentLabel,
|
|
58
|
+
currentItem,
|
|
59
|
+
isSecondarySidebarVisible,
|
|
60
|
+
setIsHovering,
|
|
61
|
+
setIsAccountMenuOpen,
|
|
62
|
+
handleContainerFocus,
|
|
63
|
+
handleContainerBlur,
|
|
64
|
+
handleContainerPointerMove,
|
|
65
|
+
revealSection,
|
|
66
|
+
revealFromKeyboard,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { useDualTierReveal };
|
|
71
|
+
//# sourceMappingURL=useDualTierReveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDualTierReveal.js","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useDualTierReveal.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAiBA;;;;;;;;AAQG;AACI,MAAM,iBAAiB,GAAG,CAAkC,EAAE,WAAW,EAAE,QAAQ,EAAkC,KAAI;;;IAG9H,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,WAAW,CAAC;;;IAIjF,SAAS,CAAC,MAAK;QACb,IAAI,WAAW,KAAK,SAAS;YAAE,eAAe,CAAC,WAAW,CAAC;AAC7D,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;;IAEzD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACjE,IAAA,MAAM,yBAAyB,GAAG,CAAC,UAAU,IAAI,aAAa,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC;;;;;AAM5H,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAiC,KAAI;QACjE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1D,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,KAAiC,KAAI;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,gBAAgB,CAAC,KAAK,CAAC;AACjF,IAAA,CAAC;;;;AAKD,IAAA,MAAM,0BAA0B,GAAG,CAAC,KAAmC,KAAI;AACzE,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC;AAC5F,IAAA,CAAC;;;;AAKD,IAAA,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,WAAoB,KAAI;QAC5D,eAAe,CAAC,KAAK,CAAC;QACtB,IAAI,WAAW,IAAI,CAAC,aAAa;YAAE,aAAa,CAAC,IAAI,CAAC;AACxD,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC;IAEvD,OAAO;QACL,YAAY;QACZ,eAAe;QACf,WAAW;QACX,yBAAyB;QACzB,aAAa;QACb,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;QACnB,0BAA0B;QAC1B,aAAa;QACb,kBAAkB;KACnB;AACH;;"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var localStorageUtils = require('@flipdish/ui-library/utilities/localStorageUtils');
|
|
4
|
+
var react = require('motion/react');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
/** One spring for the rail, the page beside it and the secondary panel, so everything that resizes moves together. */
|
|
8
|
+
const SIDEBAR_SPRING = { type: 'spring', damping: 26, stiffness: 220, bounce: 0 };
|
|
9
|
+
const INSTANT = { duration: 0 };
|
|
10
|
+
/**
|
|
11
|
+
* Collapsed state of the sidebar rail and the flags its width animation needs. Resolves controlled versus
|
|
12
|
+
* uncontrolled state, restores a persisted preference after hydration without animating it, and tracks whether
|
|
13
|
+
* the rail is between widths so labels can hold their width while it moves.
|
|
14
|
+
*
|
|
15
|
+
* @param options The collapse props of `SidebarNavigation`.
|
|
16
|
+
* @returns The resolved state, its setter, the two animation flags, the Motion transition for the width, and the
|
|
17
|
+
* callback to pass to the rail's `onAnimationComplete`.
|
|
18
|
+
*/
|
|
19
|
+
const useSidebarCollapse = ({ collapsed, defaultCollapsed, onCollapsedChange, persistCollapsed }) => {
|
|
20
|
+
const isControlled = collapsed !== undefined;
|
|
21
|
+
const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);
|
|
22
|
+
const isCollapsed = isControlled ? collapsed : internalCollapsed;
|
|
23
|
+
// The stored preference is applied after hydration (reading it during render would mismatch the server markup), so
|
|
24
|
+
// it must not animate: a returning user would watch the rail and the page spring closed on every load. The flag makes
|
|
25
|
+
// that one change instant for Motion and lets the rail switch off its CSS fades.
|
|
26
|
+
const [isApplyingStoredPreference, setIsApplyingStoredPreference] = React.useState(false);
|
|
27
|
+
React.useLayoutEffect(() => {
|
|
28
|
+
if (isControlled || !persistCollapsed)
|
|
29
|
+
return;
|
|
30
|
+
const stored = localStorageUtils.sidebarCollapsedStorage.get();
|
|
31
|
+
if (stored === null || stored === defaultCollapsed)
|
|
32
|
+
return;
|
|
33
|
+
setIsApplyingStoredPreference(true);
|
|
34
|
+
setInternalCollapsed(stored);
|
|
35
|
+
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
36
|
+
const setCollapsed = (next) => {
|
|
37
|
+
onCollapsedChange?.(next);
|
|
38
|
+
if (isControlled)
|
|
39
|
+
return;
|
|
40
|
+
setInternalCollapsed(next);
|
|
41
|
+
if (persistCollapsed)
|
|
42
|
+
localStorageUtils.sidebarCollapsedStorage.set(next);
|
|
43
|
+
};
|
|
44
|
+
const shouldReduceMotion = react.useReducedMotion();
|
|
45
|
+
const resizeTransition = shouldReduceMotion || isApplyingStoredPreference ? INSTANT : SIDEBAR_SPRING;
|
|
46
|
+
// While the rail is between widths its labels keep their width and get wiped by the row's edge rather than re-truncating
|
|
47
|
+
// every frame. Tracked from the resolved state, so a controlled toggle counts too, and cleared when the width settles.
|
|
48
|
+
const [isResizing, setIsResizing] = React.useState(false);
|
|
49
|
+
const [settledCollapsed, setSettledCollapsed] = React.useState(isCollapsed);
|
|
50
|
+
if (settledCollapsed !== isCollapsed) {
|
|
51
|
+
setSettledCollapsed(isCollapsed);
|
|
52
|
+
setIsResizing(true);
|
|
53
|
+
}
|
|
54
|
+
// The fades come back only after a paint: cleared any earlier, the browser would compute the collapsed styles with
|
|
55
|
+
// the transitions already restored and the logo and toggle would still animate from the default state. The instant
|
|
56
|
+
// width change has settled by then too, so the resize flag clears here rather than waiting on Motion's callback for a
|
|
57
|
+
// zero-duration run. In a background tab the frames wait for the tab to show, which is harmless since nothing painted.
|
|
58
|
+
React.useEffect(() => {
|
|
59
|
+
if (!isApplyingStoredPreference)
|
|
60
|
+
return;
|
|
61
|
+
let frame = requestAnimationFrame(() => {
|
|
62
|
+
frame = requestAnimationFrame(() => {
|
|
63
|
+
setIsApplyingStoredPreference(false);
|
|
64
|
+
setIsResizing(false);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
return () => cancelAnimationFrame(frame);
|
|
68
|
+
}, [isApplyingStoredPreference]);
|
|
69
|
+
return {
|
|
70
|
+
isCollapsed,
|
|
71
|
+
setCollapsed,
|
|
72
|
+
/** True while the rail animates between widths. */
|
|
73
|
+
isResizing,
|
|
74
|
+
/** True for the first paint of a restored preference, while the rail must not transition anything. */
|
|
75
|
+
isApplyingStoredPreference,
|
|
76
|
+
/** The Motion transition for the rail's width and the page placeholder beside it. */
|
|
77
|
+
resizeTransition,
|
|
78
|
+
/** Pass to the rail's `onAnimationComplete`. */
|
|
79
|
+
onResizeComplete: () => setIsResizing(false),
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
exports.SIDEBAR_SPRING = SIDEBAR_SPRING;
|
|
84
|
+
exports.useSidebarCollapse = useSidebarCollapse;
|
|
85
|
+
//# sourceMappingURL=useSidebarCollapse.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSidebarCollapse.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.ts"],"sourcesContent":[null],"names":["useState","useLayoutEffect","sidebarCollapsedStorage","useReducedMotion","useEffect"],"mappings":";;;;;;AAMA;MACa,cAAc,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAEtF,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAW;AAaxC;;;;;;;;AAQG;AACI,MAAM,kBAAkB,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAA0B,KAAI;AACjI,IAAA,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS;IAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,cAAQ,CAAC,gBAAgB,CAAC;IAC5E,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,iBAAiB;;;;IAKhE,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IACnFC,qBAAe,CAAC,MAAK;QACnB,IAAI,YAAY,IAAI,CAAC,gBAAgB;YAAE;AACvC,QAAA,MAAM,MAAM,GAAGC,yCAAuB,CAAC,GAAG,EAAE;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,gBAAgB;YAAE;QACpD,6BAA6B,CAAC,IAAI,CAAC;QACnC,oBAAoB,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAEtD,IAAA,MAAM,YAAY,GAAG,CAAC,IAAa,KAAI;AACrC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,YAAY;YAAE;QAClB,oBAAoB,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,gBAAgB;AAAE,YAAAA,yCAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAGC,sBAAgB,EAAE;AAC7C,IAAA,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,0BAA0B,GAAG,OAAO,GAAG,cAAc;;;IAIpG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGH,cAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,cAAQ,CAAC,WAAW,CAAC;AACrE,IAAA,IAAI,gBAAgB,KAAK,WAAW,EAAE;QACpC,mBAAmB,CAAC,WAAW,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC;IACrB;;;;;IAMAI,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,0BAA0B;YAAE;AACjC,QAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACrC,YAAA,KAAK,GAAG,qBAAqB,CAAC,MAAK;gBACjC,6BAA6B,CAAC,KAAK,CAAC;gBACpC,aAAa,CAAC,KAAK,CAAC;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM,oBAAoB,CAAC,KAAK,CAAC;AAC1C,IAAA,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAEhC,OAAO;QACL,WAAW;QACX,YAAY;;QAEZ,UAAU;;QAEV,0BAA0B;;QAE1B,gBAAgB;;AAEhB,QAAA,gBAAgB,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC;KAC7C;AACH;;;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** One spring for the rail, the page beside it and the secondary panel, so everything that resizes moves together. */
|
|
2
|
+
export declare const SIDEBAR_SPRING: {
|
|
3
|
+
readonly type: "spring";
|
|
4
|
+
readonly damping: 26;
|
|
5
|
+
readonly stiffness: 220;
|
|
6
|
+
readonly bounce: 0;
|
|
7
|
+
};
|
|
8
|
+
interface SidebarCollapseOptions {
|
|
9
|
+
/** Controlled collapsed state. When provided the parent owns the state and its persistence. */
|
|
10
|
+
collapsed?: boolean;
|
|
11
|
+
/** Initial collapsed state when uncontrolled. */
|
|
12
|
+
defaultCollapsed: boolean;
|
|
13
|
+
/** Called whenever the user toggles the rail. */
|
|
14
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
15
|
+
/** Persist the collapsed state to localStorage (uncontrolled mode only). */
|
|
16
|
+
persistCollapsed: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Collapsed state of the sidebar rail and the flags its width animation needs. Resolves controlled versus
|
|
20
|
+
* uncontrolled state, restores a persisted preference after hydration without animating it, and tracks whether
|
|
21
|
+
* the rail is between widths so labels can hold their width while it moves.
|
|
22
|
+
*
|
|
23
|
+
* @param options The collapse props of `SidebarNavigation`.
|
|
24
|
+
* @returns The resolved state, its setter, the two animation flags, the Motion transition for the width, and the
|
|
25
|
+
* callback to pass to the rail's `onAnimationComplete`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const useSidebarCollapse: ({ collapsed, defaultCollapsed, onCollapsedChange, persistCollapsed }: SidebarCollapseOptions) => {
|
|
28
|
+
isCollapsed: boolean;
|
|
29
|
+
setCollapsed: (next: boolean) => void;
|
|
30
|
+
/** True while the rail animates between widths. */
|
|
31
|
+
isResizing: boolean;
|
|
32
|
+
/** True for the first paint of a restored preference, while the rail must not transition anything. */
|
|
33
|
+
isApplyingStoredPreference: boolean;
|
|
34
|
+
/** The Motion transition for the rail's width and the page placeholder beside it. */
|
|
35
|
+
resizeTransition: {
|
|
36
|
+
readonly type: "spring";
|
|
37
|
+
readonly damping: 26;
|
|
38
|
+
readonly stiffness: 220;
|
|
39
|
+
readonly bounce: 0;
|
|
40
|
+
} | {
|
|
41
|
+
readonly duration: 0;
|
|
42
|
+
};
|
|
43
|
+
/** Pass to the rail's `onAnimationComplete`. */
|
|
44
|
+
onResizeComplete: () => void;
|
|
45
|
+
};
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=useSidebarCollapse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSidebarCollapse.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.ts"],"names":[],"mappings":"AAMA,sHAAsH;AACtH,eAAO,MAAM,cAAc;;;;;CAAsE,CAAC;AAIlG,UAAU,sBAAsB;IAC9B,+FAA+F;IAC/F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,4EAA4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,sEAAsE,sBAAsB;;yBAiBjG,OAAO;IAqCjC,mDAAmD;;IAEnD,sGAAsG;;IAEtG,qFAAqF;;;;;;;;;IAErF,gDAAgD;;CAGnD,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { sidebarCollapsedStorage } from '@flipdish/ui-library/utilities/localStorageUtils';
|
|
2
|
+
import { useReducedMotion } from 'motion/react';
|
|
3
|
+
import { useState, useLayoutEffect, useEffect } from 'react';
|
|
4
|
+
|
|
5
|
+
/** One spring for the rail, the page beside it and the secondary panel, so everything that resizes moves together. */
|
|
6
|
+
const SIDEBAR_SPRING = { type: 'spring', damping: 26, stiffness: 220, bounce: 0 };
|
|
7
|
+
const INSTANT = { duration: 0 };
|
|
8
|
+
/**
|
|
9
|
+
* Collapsed state of the sidebar rail and the flags its width animation needs. Resolves controlled versus
|
|
10
|
+
* uncontrolled state, restores a persisted preference after hydration without animating it, and tracks whether
|
|
11
|
+
* the rail is between widths so labels can hold their width while it moves.
|
|
12
|
+
*
|
|
13
|
+
* @param options The collapse props of `SidebarNavigation`.
|
|
14
|
+
* @returns The resolved state, its setter, the two animation flags, the Motion transition for the width, and the
|
|
15
|
+
* callback to pass to the rail's `onAnimationComplete`.
|
|
16
|
+
*/
|
|
17
|
+
const useSidebarCollapse = ({ collapsed, defaultCollapsed, onCollapsedChange, persistCollapsed }) => {
|
|
18
|
+
const isControlled = collapsed !== undefined;
|
|
19
|
+
const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);
|
|
20
|
+
const isCollapsed = isControlled ? collapsed : internalCollapsed;
|
|
21
|
+
// The stored preference is applied after hydration (reading it during render would mismatch the server markup), so
|
|
22
|
+
// it must not animate: a returning user would watch the rail and the page spring closed on every load. The flag makes
|
|
23
|
+
// that one change instant for Motion and lets the rail switch off its CSS fades.
|
|
24
|
+
const [isApplyingStoredPreference, setIsApplyingStoredPreference] = useState(false);
|
|
25
|
+
useLayoutEffect(() => {
|
|
26
|
+
if (isControlled || !persistCollapsed)
|
|
27
|
+
return;
|
|
28
|
+
const stored = sidebarCollapsedStorage.get();
|
|
29
|
+
if (stored === null || stored === defaultCollapsed)
|
|
30
|
+
return;
|
|
31
|
+
setIsApplyingStoredPreference(true);
|
|
32
|
+
setInternalCollapsed(stored);
|
|
33
|
+
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
34
|
+
const setCollapsed = (next) => {
|
|
35
|
+
onCollapsedChange?.(next);
|
|
36
|
+
if (isControlled)
|
|
37
|
+
return;
|
|
38
|
+
setInternalCollapsed(next);
|
|
39
|
+
if (persistCollapsed)
|
|
40
|
+
sidebarCollapsedStorage.set(next);
|
|
41
|
+
};
|
|
42
|
+
const shouldReduceMotion = useReducedMotion();
|
|
43
|
+
const resizeTransition = shouldReduceMotion || isApplyingStoredPreference ? INSTANT : SIDEBAR_SPRING;
|
|
44
|
+
// While the rail is between widths its labels keep their width and get wiped by the row's edge rather than re-truncating
|
|
45
|
+
// every frame. Tracked from the resolved state, so a controlled toggle counts too, and cleared when the width settles.
|
|
46
|
+
const [isResizing, setIsResizing] = useState(false);
|
|
47
|
+
const [settledCollapsed, setSettledCollapsed] = useState(isCollapsed);
|
|
48
|
+
if (settledCollapsed !== isCollapsed) {
|
|
49
|
+
setSettledCollapsed(isCollapsed);
|
|
50
|
+
setIsResizing(true);
|
|
51
|
+
}
|
|
52
|
+
// The fades come back only after a paint: cleared any earlier, the browser would compute the collapsed styles with
|
|
53
|
+
// the transitions already restored and the logo and toggle would still animate from the default state. The instant
|
|
54
|
+
// width change has settled by then too, so the resize flag clears here rather than waiting on Motion's callback for a
|
|
55
|
+
// zero-duration run. In a background tab the frames wait for the tab to show, which is harmless since nothing painted.
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (!isApplyingStoredPreference)
|
|
58
|
+
return;
|
|
59
|
+
let frame = requestAnimationFrame(() => {
|
|
60
|
+
frame = requestAnimationFrame(() => {
|
|
61
|
+
setIsApplyingStoredPreference(false);
|
|
62
|
+
setIsResizing(false);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return () => cancelAnimationFrame(frame);
|
|
66
|
+
}, [isApplyingStoredPreference]);
|
|
67
|
+
return {
|
|
68
|
+
isCollapsed,
|
|
69
|
+
setCollapsed,
|
|
70
|
+
/** True while the rail animates between widths. */
|
|
71
|
+
isResizing,
|
|
72
|
+
/** True for the first paint of a restored preference, while the rail must not transition anything. */
|
|
73
|
+
isApplyingStoredPreference,
|
|
74
|
+
/** The Motion transition for the rail's width and the page placeholder beside it. */
|
|
75
|
+
resizeTransition,
|
|
76
|
+
/** Pass to the rail's `onAnimationComplete`. */
|
|
77
|
+
onResizeComplete: () => setIsResizing(false),
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { SIDEBAR_SPRING, useSidebarCollapse };
|
|
82
|
+
//# sourceMappingURL=useSidebarCollapse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSidebarCollapse.js","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/useSidebarCollapse.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA;MACa,cAAc,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAEtF,MAAM,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAW;AAaxC;;;;;;;;AAQG;AACI,MAAM,kBAAkB,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAA0B,KAAI;AACjI,IAAA,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS;IAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAC5E,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,iBAAiB;;;;IAKhE,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnF,eAAe,CAAC,MAAK;QACnB,IAAI,YAAY,IAAI,CAAC,gBAAgB;YAAE;AACvC,QAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,gBAAgB;YAAE;QACpD,6BAA6B,CAAC,IAAI,CAAC;QACnC,oBAAoB,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAEtD,IAAA,MAAM,YAAY,GAAG,CAAC,IAAa,KAAI;AACrC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,YAAY;YAAE;QAClB,oBAAoB,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,gBAAgB;AAAE,YAAA,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,gBAAgB,EAAE;AAC7C,IAAA,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,0BAA0B,GAAG,OAAO,GAAG,cAAc;;;IAIpG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;AACrE,IAAA,IAAI,gBAAgB,KAAK,WAAW,EAAE;QACpC,mBAAmB,CAAC,WAAW,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC;IACrB;;;;;IAMA,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,0BAA0B;YAAE;AACjC,QAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACrC,YAAA,KAAK,GAAG,qBAAqB,CAAC,MAAK;gBACjC,6BAA6B,CAAC,KAAK,CAAC;gBACpC,aAAa,CAAC,KAAK,CAAC;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM,oBAAoB,CAAC,KAAK,CAAC;AAC1C,IAAA,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC;IAEhC,OAAO;QACL,WAAW;QACX,YAAY;;QAEZ,UAAU;;QAEV,0BAA0B;;QAE1B,gBAAgB;;AAEhB,QAAA,gBAAgB,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC;KAC7C;AACH;;"}
|
|
@@ -7,7 +7,6 @@ var UtilityButton = require('@flipdish/ui-library/components/atoms/UtilityButton
|
|
|
7
7
|
var useBreakpoints = require('@flipdish/ui-library/hooks/useBreakpoints');
|
|
8
8
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
9
9
|
var hrefUtils = require('@flipdish/ui-library/utilities/hrefUtils');
|
|
10
|
-
var localStorageUtils = require('@flipdish/ui-library/utilities/localStorageUtils');
|
|
11
10
|
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
12
11
|
var react = require('motion/react');
|
|
13
12
|
var React = require('react');
|
|
@@ -20,13 +19,13 @@ var NavItem = require('./components/NavItem.cjs');
|
|
|
20
19
|
var NavList = require('./components/NavList.cjs');
|
|
21
20
|
var NavSectionToggle = require('./components/NavSectionToggle.cjs');
|
|
22
21
|
var useDualTierKeyboard = require('./hooks/useDualTierKeyboard.cjs');
|
|
22
|
+
var useDualTierReveal = require('./hooks/useDualTierReveal.cjs');
|
|
23
|
+
var useSidebarCollapse = require('./hooks/useSidebarCollapse.cjs');
|
|
23
24
|
var SidebarMenuButton = require('./components/SidebarMenuButton.cjs');
|
|
24
25
|
|
|
25
26
|
const COLLAPSED_WIDTH = 68;
|
|
26
27
|
const EXPANDED_WIDTH = 280;
|
|
27
28
|
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 };
|
|
30
29
|
/**
|
|
31
30
|
* The primary app-shell navigation rail: logo, destinations, footer links and an account card,
|
|
32
31
|
* collapsible to an icon-only strip, with a hover-revealed panel for the current section's
|
|
@@ -43,9 +42,12 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
43
42
|
onNavigate?.(destination);
|
|
44
43
|
};
|
|
45
44
|
const navItemTestId = (item) => item['data-testid'] ?? testIdUtils.joinTestId(rootTestId, `nav-item-${item.id ?? testIdUtils.slugifyTestId(item.label)}`);
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const { isCollapsed, setCollapsed, isResizing, isApplyingStoredPreference, resizeTransition, onResizeComplete } = useSidebarCollapse.useSidebarCollapse({
|
|
46
|
+
collapsed,
|
|
47
|
+
defaultCollapsed,
|
|
48
|
+
onCollapsedChange,
|
|
49
|
+
persistCollapsed,
|
|
50
|
+
});
|
|
49
51
|
// Mobile drawer open-state: controlled when `mobileMenuOpen` is provided, else internal.
|
|
50
52
|
const isMobileMenuControlled = mobileMenuOpen !== undefined;
|
|
51
53
|
const [internalMobileMenuOpen, setInternalMobileMenuOpen] = React.useState(false);
|
|
@@ -62,89 +64,18 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
62
64
|
if (isDesktop && isMobileMenuOpen)
|
|
63
65
|
setMobileMenuOpen(false);
|
|
64
66
|
}, [isDesktop]);
|
|
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(() => {
|
|
71
|
-
if (isControlled || !persistCollapsed)
|
|
72
|
-
return;
|
|
73
|
-
const stored = localStorageUtils.sidebarCollapsedStorage.get();
|
|
74
|
-
if (stored === null || stored === defaultCollapsed)
|
|
75
|
-
return;
|
|
76
|
-
setIsApplyingStoredPreference(true);
|
|
77
|
-
setInternalCollapsed(stored);
|
|
78
|
-
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
79
|
-
const setCollapsed = (next) => {
|
|
80
|
-
onCollapsedChange?.(next);
|
|
81
|
-
if (isControlled)
|
|
82
|
-
return;
|
|
83
|
-
setInternalCollapsed(next);
|
|
84
|
-
if (persistCollapsed)
|
|
85
|
-
localStorageUtils.sidebarCollapsedStorage.set(next);
|
|
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
|
-
}
|
|
97
|
-
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
98
|
-
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
99
|
-
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
100
|
-
// switched by clicking (or keyboard-activating) a primary item, which also
|
|
101
|
-
// navigates. Only `currentItem` is highlighted, so exactly one item is ever active.
|
|
102
67
|
const sections = [...items, ...footerItems];
|
|
103
68
|
// One resolved href (the most specific match) so nested hrefs never yield two current pages.
|
|
104
69
|
const activeHref = nav_utils.findActiveHref(sections, activeUrl);
|
|
105
|
-
const
|
|
106
|
-
const activeLabel = activeItem?.label;
|
|
107
|
-
// Track the current section by its (unique) label rather than the object, so it
|
|
108
|
-
// survives the consumer passing a fresh `items` array and never collides on href.
|
|
109
|
-
const [currentLabel, setCurrentLabel] = React.useState(activeLabel);
|
|
110
|
-
// Keep the selected section in sync with the active route when it changes externally
|
|
111
|
-
// (browser navigation, a controlled `activeUrl`, or asynchronously-loaded items).
|
|
112
|
-
React.useEffect(() => {
|
|
113
|
-
if (activeLabel !== undefined)
|
|
114
|
-
setCurrentLabel(activeLabel);
|
|
115
|
-
}, [activeLabel]);
|
|
116
|
-
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
117
|
-
const [isHovering, setIsHovering] = React.useState(false);
|
|
118
|
-
const [isFocusWithin, setIsFocusWithin] = React.useState(false);
|
|
119
|
-
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
120
|
-
const [isAccountMenuOpen, setIsAccountMenuOpen] = React.useState(false);
|
|
121
|
-
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
70
|
+
const { currentLabel, setCurrentLabel, currentItem, isSecondarySidebarVisible, setIsHovering, setIsAccountMenuOpen, handleContainerFocus, handleContainerBlur, handleContainerPointerMove, revealSection, revealFromKeyboard, } = useDualTierReveal.useDualTierReveal({ activeLabel: nav_utils.findActiveItem(sections, activeUrl)?.label, sections });
|
|
122
71
|
const panelId = React.useId();
|
|
123
72
|
// Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
|
|
124
73
|
const mobileMenuId = React.useId();
|
|
125
|
-
// Only *keyboard* focus holds the panel open. Focus parked on a just-clicked link
|
|
126
|
-
// (pointer modality) must not — otherwise the panel lingers after a mouse click even
|
|
127
|
-
// once the pointer leaves. Gating on `:focus-visible` keeps the mouse behaviour
|
|
128
|
-
// identical to Untitled UI (closes on pointer-leave) while preserving keyboard reach.
|
|
129
|
-
const handleContainerFocus = (event) => {
|
|
130
|
-
setIsFocusWithin(event.target.matches(':focus-visible'));
|
|
131
|
-
};
|
|
132
|
-
const handleContainerBlur = (event) => {
|
|
133
|
-
if (!event.currentTarget.contains(event.relatedTarget))
|
|
134
|
-
setIsFocusWithin(false);
|
|
135
|
-
};
|
|
136
|
-
// `pointerenter` never fires when the pointer is already inside as the sidebar mounts (it mounts
|
|
137
|
-
// late, after permissions/app data load), so the first move inside counts as entering too.
|
|
138
|
-
// Portaled children (account menu, tooltips) bubble through React but sit outside in the DOM.
|
|
139
|
-
const handleContainerPointerMove = (event) => {
|
|
140
|
-
if (!isHovering && event.currentTarget.contains(event.target))
|
|
141
|
-
setIsHovering(true);
|
|
142
|
-
};
|
|
143
74
|
const { panelRef, handleTriggerKeyDown, handlePanelKeyDown } = useDualTierKeyboard.useDualTierKeyboard({
|
|
144
75
|
isPanelVisible: isSecondarySidebarVisible,
|
|
145
76
|
currentLabel,
|
|
146
77
|
onSelectSection: setCurrentLabel,
|
|
147
|
-
onReveal:
|
|
78
|
+
onReveal: revealFromKeyboard,
|
|
148
79
|
});
|
|
149
80
|
const renderPrimaryItems = (list) => list.map((item) => {
|
|
150
81
|
const hasChildren = Boolean(item.items?.length);
|
|
@@ -160,12 +91,7 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
160
91
|
'aria-controls': isOpen ? panelId : undefined,
|
|
161
92
|
};
|
|
162
93
|
const selectSection = () => {
|
|
163
|
-
|
|
164
|
-
// A click must reveal the panel even when no `pointerenter` preceded it (see the wrapper's
|
|
165
|
-
// pointermove). Keyboard activation is already covered by focus-within and must not latch
|
|
166
|
-
// the hover flag, which only `pointerleave` clears.
|
|
167
|
-
if (hasChildren && !isFocusWithin)
|
|
168
|
-
setIsHovering(true);
|
|
94
|
+
revealSection(item.label, hasChildren);
|
|
169
95
|
if (!hasChildren && item.href !== undefined)
|
|
170
96
|
reportNavigation(item.href);
|
|
171
97
|
};
|
|
@@ -178,10 +104,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
178
104
|
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
179
105
|
, {
|
|
180
106
|
// 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
|
-
|
|
183
|
-
|
|
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'] }))] })] }));
|
|
107
|
+
initial: false, animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, onAnimationComplete: onResizeComplete, 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',
|
|
108
|
+
// Every fade and slide in the rail is a CSS transition; the stored preference must land without any of them.
|
|
109
|
+
isApplyingStoredPreference && '**:transition-none!'), 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'] }))] })] }));
|
|
185
110
|
const handleMobileNavigate = (href) => {
|
|
186
111
|
const destination = hrefUtils.safeHref(href);
|
|
187
112
|
if (destination === undefined)
|
|
@@ -195,7 +120,7 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
195
120
|
onClick?.();
|
|
196
121
|
};
|
|
197
122
|
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
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:
|
|
123
|
+
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: useSidebarCollapse.SIDEBAR_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
124
|
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'] }))] })] }) })] }));
|
|
200
125
|
};
|
|
201
126
|
|
|
@@ -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","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
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","safeHref","joinTestId","slugifyTestId","useSidebarCollapse","useState","useBreakpoints","useEffect","findActiveHref","useDualTierReveal","findActiveItem","useId","useDualTierKeyboard","_jsx","Tooltip","NavItemBase","_jsxs","motion","cx","LogoLink","ButtonUtility","ChevronRightDouble","ChevronLeftDouble","NavAccountCard","AnimatePresence","SIDEBAR_SPRING","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":"AAUA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMhC,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAOlF,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;AAMD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,+PAkB/B,sBAAsB,gCA4UxB,CAAC"}
|
|
@@ -5,10 +5,9 @@ import { ButtonUtility } from '@flipdish/ui-library/components/atoms/UtilityButt
|
|
|
5
5
|
import { useBreakpoints } from '@flipdish/ui-library/hooks/useBreakpoints';
|
|
6
6
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
7
7
|
import { safeHref } from '@flipdish/ui-library/utilities/hrefUtils';
|
|
8
|
-
import { sidebarCollapsedStorage } from '@flipdish/ui-library/utilities/localStorageUtils';
|
|
9
8
|
import { useResolvedTestId, joinTestId, slugifyTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
10
|
-
import {
|
|
11
|
-
import { useState, useEffect,
|
|
9
|
+
import { motion, AnimatePresence } from 'motion/react';
|
|
10
|
+
import { useState, useEffect, useId } from 'react';
|
|
12
11
|
import { findActiveHref, findActiveItem } from '../../__internal__/navigation/nav.utils.js';
|
|
13
12
|
import { SearchTrigger } from '../ApplicationHeader/components/SearchTrigger.js';
|
|
14
13
|
import { LogoLink } from './components/LogoLink.js';
|
|
@@ -19,13 +18,13 @@ import { NavItemBase } from './components/NavItem.js';
|
|
|
19
18
|
import { NavList } from './components/NavList.js';
|
|
20
19
|
import { NavSectionToggleRow } from './components/NavSectionToggle.js';
|
|
21
20
|
import { useDualTierKeyboard } from './hooks/useDualTierKeyboard.js';
|
|
21
|
+
import { useDualTierReveal } from './hooks/useDualTierReveal.js';
|
|
22
|
+
import { useSidebarCollapse, SIDEBAR_SPRING } from './hooks/useSidebarCollapse.js';
|
|
22
23
|
export { SidebarMenuButton } from './components/SidebarMenuButton.js';
|
|
23
24
|
|
|
24
25
|
const COLLAPSED_WIDTH = 68;
|
|
25
26
|
const EXPANDED_WIDTH = 280;
|
|
26
27
|
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 };
|
|
29
28
|
/**
|
|
30
29
|
* The primary app-shell navigation rail: logo, destinations, footer links and an account card,
|
|
31
30
|
* collapsible to an icon-only strip, with a hover-revealed panel for the current section's
|
|
@@ -42,9 +41,12 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
42
41
|
onNavigate?.(destination);
|
|
43
42
|
};
|
|
44
43
|
const navItemTestId = (item) => item['data-testid'] ?? joinTestId(rootTestId, `nav-item-${item.id ?? slugifyTestId(item.label)}`);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
const { isCollapsed, setCollapsed, isResizing, isApplyingStoredPreference, resizeTransition, onResizeComplete } = useSidebarCollapse({
|
|
45
|
+
collapsed,
|
|
46
|
+
defaultCollapsed,
|
|
47
|
+
onCollapsedChange,
|
|
48
|
+
persistCollapsed,
|
|
49
|
+
});
|
|
48
50
|
// Mobile drawer open-state: controlled when `mobileMenuOpen` is provided, else internal.
|
|
49
51
|
const isMobileMenuControlled = mobileMenuOpen !== undefined;
|
|
50
52
|
const [internalMobileMenuOpen, setInternalMobileMenuOpen] = useState(false);
|
|
@@ -61,89 +63,18 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
61
63
|
if (isDesktop && isMobileMenuOpen)
|
|
62
64
|
setMobileMenuOpen(false);
|
|
63
65
|
}, [isDesktop]);
|
|
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(() => {
|
|
70
|
-
if (isControlled || !persistCollapsed)
|
|
71
|
-
return;
|
|
72
|
-
const stored = sidebarCollapsedStorage.get();
|
|
73
|
-
if (stored === null || stored === defaultCollapsed)
|
|
74
|
-
return;
|
|
75
|
-
setIsApplyingStoredPreference(true);
|
|
76
|
-
setInternalCollapsed(stored);
|
|
77
|
-
}, [isControlled, persistCollapsed, defaultCollapsed]);
|
|
78
|
-
const setCollapsed = (next) => {
|
|
79
|
-
onCollapsedChange?.(next);
|
|
80
|
-
if (isControlled)
|
|
81
|
-
return;
|
|
82
|
-
setInternalCollapsed(next);
|
|
83
|
-
if (persistCollapsed)
|
|
84
|
-
sidebarCollapsedStorage.set(next);
|
|
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
|
-
}
|
|
96
|
-
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
97
|
-
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
98
|
-
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
99
|
-
// switched by clicking (or keyboard-activating) a primary item, which also
|
|
100
|
-
// navigates. Only `currentItem` is highlighted, so exactly one item is ever active.
|
|
101
66
|
const sections = [...items, ...footerItems];
|
|
102
67
|
// One resolved href (the most specific match) so nested hrefs never yield two current pages.
|
|
103
68
|
const activeHref = findActiveHref(sections, activeUrl);
|
|
104
|
-
const
|
|
105
|
-
const activeLabel = activeItem?.label;
|
|
106
|
-
// Track the current section by its (unique) label rather than the object, so it
|
|
107
|
-
// survives the consumer passing a fresh `items` array and never collides on href.
|
|
108
|
-
const [currentLabel, setCurrentLabel] = useState(activeLabel);
|
|
109
|
-
// Keep the selected section in sync with the active route when it changes externally
|
|
110
|
-
// (browser navigation, a controlled `activeUrl`, or asynchronously-loaded items).
|
|
111
|
-
useEffect(() => {
|
|
112
|
-
if (activeLabel !== undefined)
|
|
113
|
-
setCurrentLabel(activeLabel);
|
|
114
|
-
}, [activeLabel]);
|
|
115
|
-
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
116
|
-
const [isHovering, setIsHovering] = useState(false);
|
|
117
|
-
const [isFocusWithin, setIsFocusWithin] = useState(false);
|
|
118
|
-
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
119
|
-
const [isAccountMenuOpen, setIsAccountMenuOpen] = useState(false);
|
|
120
|
-
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
69
|
+
const { currentLabel, setCurrentLabel, currentItem, isSecondarySidebarVisible, setIsHovering, setIsAccountMenuOpen, handleContainerFocus, handleContainerBlur, handleContainerPointerMove, revealSection, revealFromKeyboard, } = useDualTierReveal({ activeLabel: findActiveItem(sections, activeUrl)?.label, sections });
|
|
121
70
|
const panelId = useId();
|
|
122
71
|
// Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
|
|
123
72
|
const mobileMenuId = useId();
|
|
124
|
-
// Only *keyboard* focus holds the panel open. Focus parked on a just-clicked link
|
|
125
|
-
// (pointer modality) must not — otherwise the panel lingers after a mouse click even
|
|
126
|
-
// once the pointer leaves. Gating on `:focus-visible` keeps the mouse behaviour
|
|
127
|
-
// identical to Untitled UI (closes on pointer-leave) while preserving keyboard reach.
|
|
128
|
-
const handleContainerFocus = (event) => {
|
|
129
|
-
setIsFocusWithin(event.target.matches(':focus-visible'));
|
|
130
|
-
};
|
|
131
|
-
const handleContainerBlur = (event) => {
|
|
132
|
-
if (!event.currentTarget.contains(event.relatedTarget))
|
|
133
|
-
setIsFocusWithin(false);
|
|
134
|
-
};
|
|
135
|
-
// `pointerenter` never fires when the pointer is already inside as the sidebar mounts (it mounts
|
|
136
|
-
// late, after permissions/app data load), so the first move inside counts as entering too.
|
|
137
|
-
// Portaled children (account menu, tooltips) bubble through React but sit outside in the DOM.
|
|
138
|
-
const handleContainerPointerMove = (event) => {
|
|
139
|
-
if (!isHovering && event.currentTarget.contains(event.target))
|
|
140
|
-
setIsHovering(true);
|
|
141
|
-
};
|
|
142
73
|
const { panelRef, handleTriggerKeyDown, handlePanelKeyDown } = useDualTierKeyboard({
|
|
143
74
|
isPanelVisible: isSecondarySidebarVisible,
|
|
144
75
|
currentLabel,
|
|
145
76
|
onSelectSection: setCurrentLabel,
|
|
146
|
-
onReveal:
|
|
77
|
+
onReveal: revealFromKeyboard,
|
|
147
78
|
});
|
|
148
79
|
const renderPrimaryItems = (list) => list.map((item) => {
|
|
149
80
|
const hasChildren = Boolean(item.items?.length);
|
|
@@ -159,12 +90,7 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
159
90
|
'aria-controls': isOpen ? panelId : undefined,
|
|
160
91
|
};
|
|
161
92
|
const selectSection = () => {
|
|
162
|
-
|
|
163
|
-
// A click must reveal the panel even when no `pointerenter` preceded it (see the wrapper's
|
|
164
|
-
// pointermove). Keyboard activation is already covered by focus-within and must not latch
|
|
165
|
-
// the hover flag, which only `pointerleave` clears.
|
|
166
|
-
if (hasChildren && !isFocusWithin)
|
|
167
|
-
setIsHovering(true);
|
|
93
|
+
revealSection(item.label, hasChildren);
|
|
168
94
|
if (!hasChildren && item.href !== undefined)
|
|
169
95
|
reportNavigation(item.href);
|
|
170
96
|
};
|
|
@@ -177,10 +103,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
177
103
|
// initial={false} starts at the `animate` value; without it Motion reads the DOM and springs from there on mount.
|
|
178
104
|
, {
|
|
179
105
|
// 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
|
-
|
|
182
|
-
|
|
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'] }))] })] }));
|
|
106
|
+
initial: false, animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: resizeTransition, onAnimationComplete: onResizeComplete, 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',
|
|
107
|
+
// Every fade and slide in the rail is a CSS transition; the stored preference must land without any of them.
|
|
108
|
+
isApplyingStoredPreference && '**:transition-none!'), 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'] }))] })] }));
|
|
184
109
|
const handleMobileNavigate = (href) => {
|
|
185
110
|
const destination = safeHref(href);
|
|
186
111
|
if (destination === undefined)
|
|
@@ -194,7 +119,7 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, onNavi
|
|
|
194
119
|
onClick?.();
|
|
195
120
|
};
|
|
196
121
|
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
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:
|
|
122
|
+
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: SIDEBAR_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
123
|
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'] }))] })] }) })] }));
|
|
199
124
|
};
|
|
200
125
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6FA,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,cAAc,GAAG,GAAG;AAC1B,MAAM,uBAAuB,GAAG,GAAG;AAEnC;AACA,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAW;AAElF;;;;;;AAMG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,KAAK,EACL,WAAW,GAAG,EAAE,EAChB,OAAO,EACP,UAAU,EACV,SAAS,EACT,gBAAgB,GAAG,KAAK,EACxB,iBAAiB,EACjB,gBAAgB,GAAG,IAAI,EACvB,UAAU,EACV,eAAe,EACf,gBAAgB,GAAG,IAAI,EACvB,cAAc,EACd,sBAAsB,EACtB,MAAM,EACN,QAAQ,GAAG,GAAG,EACd,aAAa,EAAE,UAAU,GACF,KAAI;AAC3B,IAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;;AAE3H,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAAY,KAAI;AACxC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,WAAW,KAAK,SAAS;AAAE,YAAA,UAAU,GAAG,WAAW,CAAC;AAC1D,IAAA,CAAC;AACD,IAAA,MAAM,aAAa,GAAG,CAAC,IAAoB,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;AAEjJ,IAAA,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS;IAC5C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IAC5E,MAAM,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,iBAAiB;;AAGhE,IAAA,MAAM,sBAAsB,GAAG,cAAc,KAAK,SAAS;IAC3D,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC3E,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,cAAc,GAAG,sBAAsB;AACzF,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAa,KAAI;AAC1C,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,sBAAsB;YAAE,yBAAyB,CAAC,IAAI,CAAC;AAC9D,IAAA,CAAC;;AAGD,IAAA,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC;;IAEtC,SAAS,CAAC,MAAK;QACb,IAAI,SAAS,IAAI,gBAAgB;YAAE,iBAAiB,CAAC,KAAK,CAAC;AAC7D,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;;;;;IAMf,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnF,eAAe,CAAC,MAAK;QACnB,IAAI,YAAY,IAAI,CAAC,gBAAgB;YAAE;AACvC,QAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE;AAC5C,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,gBAAgB;YAAE;QACpD,6BAA6B,CAAC,IAAI,CAAC;QACnC,oBAAoB,CAAC,MAAM,CAAC;IAC9B,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAEtD,IAAA,MAAM,YAAY,GAAG,CAAC,IAAa,KAAI;AACrC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,YAAY;YAAE;QAClB,oBAAoB,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,gBAAgB;AAAE,YAAA,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,gBAAgB,EAAE;AAC7C,IAAA,MAAM,gBAAgB,GAAG,kBAAkB,IAAI,0BAA0B,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,MAAM;;;IAGpG,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;AACrE,IAAA,IAAI,gBAAgB,KAAK,WAAW,EAAE;QACpC,mBAAmB,CAAC,WAAW,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC;IACrB;;;;;;IAOA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,WAAW,CAAC;;IAE3C,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;IACtD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;AACtD,IAAA,MAAM,WAAW,GAAG,UAAU,EAAE,KAAK;;;IAIrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAqB,WAAW,CAAC;;;IAIjF,SAAS,CAAC,MAAK;QACb,IAAI,WAAW,KAAK,SAAS;YAAE,eAAe,CAAC,WAAW,CAAC;AAC7D,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC;IACxE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;;IAEzD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACjE,IAAA,MAAM,yBAAyB,GAAG,CAAC,UAAU,IAAI,aAAa,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC;AAE5H,IAAA,MAAM,OAAO,GAAG,KAAK,EAAE;;AAEvB,IAAA,MAAM,YAAY,GAAG,KAAK,EAAE;;;;;AAM5B,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAiC,KAAI;QACjE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1D,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,KAAiC,KAAI;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YAAE,gBAAgB,CAAC,KAAK,CAAC;AACjF,IAAA,CAAC;;;;AAKD,IAAA,MAAM,0BAA0B,GAAG,CAAC,KAAmC,KAAI;AACzE,QAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC;AAC5F,IAAA,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CAAC;AACjF,QAAA,cAAc,EAAE,yBAAyB;QACzC,YAAY;AACZ,QAAA,eAAe,EAAE,eAAe;AAChC,QAAA,QAAQ,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC;AACvC,KAAA,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAG,CAAC,IAAsB,KAChD,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;;;;AAI/C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;AACzE,QAAA,MAAM,UAAU,GAAG,YAAY,KAAK,IAAI,CAAC,KAAK;AAC9C,QAAA,MAAM,MAAM,GAAG,WAAW,IAAI,UAAU,IAAI,yBAAyB;;AAErE,QAAA,MAAM,UAAU,GAAG;YACjB,eAAe,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;YACjD,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;SAC9C;QACD,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;;;YAI3B,IAAI,WAAW,IAAI,CAAC,aAAa;gBAAE,aAAa,CAAC,IAAI,CAAC;AACtD,YAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;AAAE,gBAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1E,QAAA,CAAC;AACD,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;;;QAItC,QACEA,GAAA,CAAA,IAAA,EAAA,EAAqB,SAAS,EAAC,OAAO,EAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAA,QAAA,EAC7FA,GAAA,CAAC,OAAO,EAAA,EAAC,UAAU,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAC,OAAO,EAAA,QAAA,EACrEA,GAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM,EACzC,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,EACzC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,aAAa,EAAA,aAAA,EACT,UAAU,EAAA,GACnB,UAAU,EAAA,QAAA,EAEb,IAAI,CAAC,KAAK,EAAA,CACC,EAAA,CACN,EAAA,EAlBH,IAAI,CAAC,KAAK,CAmBd;AAET,IAAA,CAAC,CAAC;AAEJ,IAAA,MAAM,WAAW,IACfC,IAAA,CAAC,MAAM,CAAC;;;;QAEN,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,cAAc,EAAE,EAClE,UAAU,EAAE,gBAAgB,EAC5B,mBAAmB,EAAE,MAAK;YACxB,aAAa,CAAC,KAAK,CAAC;YACpB,6BAA6B,CAAC,KAAK,CAAC;AACtC,QAAA,CAAC,EACD,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,CAAC,UAAU,IAAI,2BAA2B,CAC3C,EAAA,QAAA,EAAA,CAEDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAE5BA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CAEnDD,GAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,EAAE,CAAC,uDAAuD,EAAE,WAAW,GAAG,wBAAwB,GAAG,wBAAwB,CAAC,EAAA,QAAA,EAEzIA,GAAA,CAAC,QAAQ,EAAA,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAAA,aAAA,EAAe,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,EAAA,CAAI,EAAA,CAC1H,EACNA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,uFAAuF,EACvF,WAAW,GAAG,WAAW,GAAG,SAAS,CACtC,EAAA,QAAA,EAEDA,GAAA,CAAC,aAAa,EAAA,EACZ,IAAI,EAAC,IAAI,EACT,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,EAAA,YAAA,EAChC,WAAW,GAAG,mBAAmB,GAAG,qBAAqB,EACrE,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,iBAAiB,EAAA,aAAA,EAC7C,UAAU,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC,EACxE,OAAO,EAAE,MAAM,YAAY,CAAC,CAAC,WAAW,CAAC,EAAA,CACzC,EAAA,CACE,CAAA,EAAA,CACF,EAENA,GAAA,CAAA,KAAA,EAAA,EAAA,YAAA,EAAgB,MAAM,EAAA,QAAA,EACpBA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAA,CAAM,EAAA,CAC5E,CAAA,EAAA,CACF,EAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACnD,WAAW,CAAC,MAAM,GAAG,CAAC,KACrBD,GAAA,CAAA,KAAA,EAAA,EAAA,YAAA,EAAgB,QAAQ,EAAA,QAAA,EACtBA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAA,CAAM,EAAA,CACxE,CACP,EAEA,OAAO,KACNA,GAAA,CAAC,cAAc,EAAA,EACb,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,eAAe,EAAE,OAAO,CAAC,eAAe,EACxC,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,oBAAoB,EAAA,aAAA,EACrB,OAAO,CAAC,aAAa,CAAC,EAAA,CACnC,CACH,CAAA,EAAA,CACG,CAAA,EAAA,CACO,CAChB;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,IAAY,KAAI;AAC5C,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClC,IAAI,WAAW,KAAK,SAAS;YAAE;QAC/B,iBAAiB,CAAC,KAAK,CAAC;AACxB,QAAA,UAAU,GAAG,WAAW,CAAC;AAC3B,IAAA,CAAC;;IAGD,MAAM,mBAAmB,GAAG,CAAC,OAAoB,KAAK,MAAK;QACzD,iBAAiB,CAAC,KAAK,CAAC;QACxB,OAAO,IAAI;AACb,IAAA,CAAC;AACD,IAAA,MAAM,mBAAmB,GAAG,CAAC,SAAuC,KAClE,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAErF,IAAA,MAAM,gBAAgB,GAAG,WAAW,KAClCA,GAAA,CAAC,eAAe,EAAA,EAAC,OAAO,EAAE,KAAK,EAAA,QAAA,EAC5B,yBAAyB,KACxBA,GAAA,CAAC,MAAM,CAAC,GAAG,EAAA,EACT,GAAG,EAAE,QAAQ,EACb,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAC,OAAO,EAAA,YAAA,EACA,CAAA,EAAG,WAAW,CAAC,KAAK,CAAA,MAAA,CAAQ,EACxC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,EACnE,OAAO,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,+BAA+B,EAAE,EACzF,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAC7G,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,EAAE,UAAU,IAAI,eAAe,CAAC,IAAI,uCAAuC,CAC5E,EAAA,QAAA,EAEDC,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CACxFD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAE,WAAW,CAAC,KAAK,EAAA,CAAM,EACjFA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,MAAM,EAAA,QAAA,EACjB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,MAC3BA,GAAA,CAAA,IAAA,EAAA,EAAqB,SAAS,EAAC,OAAO,EAAA,QAAA,EACpCA,GAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU,EACjC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,YAE7H,IAAI,CAAC,KAAK,EAAA,CACC,EAAA,EAXP,IAAI,CAAC,KAAK,CAYd,CACN,CAAC,EAAA,CACC,EAGJ,WAAW,CAAC,MAAM,KACjBA,GAAA,CAAC,mBAAmB,EAAA,EAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,SAAS,EAAC,cAAc,EAAA,CAAG,CACvH,CAAA,EAAA,CACG,EAAA,CACK,CACd,EAAA,CACe,CACnB;AAED,IAAA,QACEC,IAAA,CAAC,cAAc,IAAC,KAAK,EAAE,UAAU,EAAA,QAAA,EAAA,CAK/BA,IAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,qDAAqD,EAC/D,cAAc,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,EACzC,aAAa,EAAE,0BAA0B,EACzC,cAAc,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,EAC1C,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,mBAAmB,aAE1B,WAAW,EACX,gBAAgB,CAAA,EAAA,CACb,EAKND,IAAC,MAAM,CAAC,GAAG,EAAA,EACT,OAAO,EAAE,KAAK,EACd,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,GAAG,eAAe,GAAG,cAAc,EAAE,EACxE,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAC,oEAAoE,EAAA,CAC9E,EAID,gBAAgB,KACfA,GAAA,CAAC,sBAAsB,IACrB,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,EAC7C,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,EAAA,aAAA,EACpC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,EAAA,CACpD,CACH,EACDA,IAAC,sBAAsB,EAAA,EACrB,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,iBAAiB,iBAClB,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,EAAA,QAAA,EAEnDC,gBAAO,SAAS,EAAC,2GAA2G,EAAA,QAAA,EAAA,CAC1HA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,aACnDD,GAAA,CAAC,QAAQ,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,MAAM,oBAAoB,CAAC,QAAQ,CAAC,EAAA,aAAA,EAAe,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,GAAI,EAExI,MAAM,KACLA,GAAA,CAAC,aAAa,EAAA,EACZ,IAAI,EAAC,IAAI,EACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ,EAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,EAC/B,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,EAC5C,SAAS,EAAC,QAAQ,EAAA,aAAA,EACL,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAA,CACtE,CACH,CAAA,EAAA,CACG,EAENA,2BAAgB,MAAM,EAAA,QAAA,EACpBA,IAAC,OAAO,EAAA,EAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,EAAA,CAAI,EAAA,CACvG,EAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,CAE7C,WAAW,CAAC,MAAM,GAAG,CAAC,KACrBD,GAAA,CAAA,KAAA,EAAA,EAAA,YAAA,EAAgB,QAAQ,EAAA,QAAA,EACtBA,GAAA,CAAC,OAAO,EAAA,EACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,oBAAoB,EAChC,YAAY,EAAE,UAAU,EACxB,SAAS,EAAC,WAAW,EAAA,CACrB,EAAA,CACE,CACP,EAEA,OAAO,KACNA,IAAC,cAAc,EAAA,EACb,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EACjD,eAAe,EAAE,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAA,aAAA,EAChD,OAAO,CAAC,aAAa,CAAC,GACnC,CACH,CAAA,EAAA,CACG,IACA,EAAA,CACe,CAAA,EAAA,CACV;AAErB;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|