@admin-layout/tailwind-design-pro 12.2.4-alpha.7 → 12.2.4-alpha.70
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/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
- package/lib/components/Layout/BasicLayout/index.js +16 -2
- package/lib/components/Layout/BasicLayout/index.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts +12 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts.map +1 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js +18 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js.map +1 -0
- package/lib/components/Layout/GlobalHeader/RightContent.d.ts +1 -2
- package/lib/components/Layout/GlobalHeader/RightContent.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightContent.js +10 -72
- package/lib/components/Layout/GlobalHeader/RightContent.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightMenu.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightMenu.js +16 -80
- package/lib/components/Layout/GlobalHeader/RightMenu.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/SearchBar.js +1 -1
- package/lib/components/Layout/GlobalHeader/index.d.ts +1 -0
- package/lib/components/Layout/GlobalHeader/index.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.d.ts +0 -1
- package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.js +22 -18
- package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
- package/lib/components/Layout/Sidebar/BottomMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/BottomMenu.js +44 -71
- package/lib/components/Layout/Sidebar/BottomMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.js +7 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.js.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebar.js +20 -17
- package/lib/components/Layout/Sidebar/MainSidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebarMenu.js +187 -16
- package/lib/components/Layout/Sidebar/MainSidebarMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts +12 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.js +79 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.js.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebar.js +8 -12
- package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +268 -33
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts +23 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.js +229 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.js.map +1 -0
- package/lib/components/Layout/TailwindLayout.js +3 -1
- package/lib/components/Layout/TailwindLayout.js.map +1 -1
- package/lib/components/Layout/getPageTitle.js +2 -2
- package/lib/components/Layout/getPageTitle.js.map +1 -1
- package/lib/components/Layout/slot-fill/RightContent.d.ts +3 -1
- package/lib/components/Layout/slot-fill/RightContent.d.ts.map +1 -1
- package/lib/components/Layout/slot-fill/RightContent.js +4 -6
- package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +2 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.js.map +1 -1
- package/lib/components/SettingDrawer/utils/constants.d.ts.map +1 -1
- package/lib/components/SettingDrawer/utils/constants.js +3 -0
- package/lib/components/SettingDrawer/utils/constants.js.map +1 -1
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts +10 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts.map +1 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js +23 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js.map +1 -0
- package/lib/components/SettingsThemeApplier/index.d.ts +2 -0
- package/lib/components/SettingsThemeApplier/index.d.ts.map +1 -0
- package/lib/components/index.js +1 -1
- package/lib/components/typings.d.ts +2 -0
- package/lib/components/typings.d.ts.map +1 -1
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +0 -1
- package/lib/compute.js.map +1 -1
- package/lib/helpers/DynamicIcon.js +7 -1
- package/lib/helpers/DynamicIcon.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/routes.json +0 -1
- package/lib/styles/index.css +282 -0
- package/lib/utils/settingsTheme.d.ts +40 -0
- package/lib/utils/settingsTheme.d.ts.map +1 -0
- package/lib/utils/settingsTheme.js +106 -0
- package/lib/utils/settingsTheme.js.map +1 -0
- package/package.json +8 -7
|
@@ -1,4 +1,61 @@
|
|
|
1
|
-
import React__default,{useState,useRef}from'react';import {useSelector}from'@xstate/react';import {useLocation,Link}from'@remix-run/react';import {generateMenuPath}from'@admin-layout/client';import {icons}from'../../../icons.js'
|
|
1
|
+
import React__default,{useState,useRef,useEffect}from'react';import {useSelector}from'@xstate/react';import {useLocation,Link}from'@remix-run/react';import {generateMenuPath}from'@admin-layout/client';import {icons}from'../../../icons.js';// Motion system for the icon rail — sliding active indicator + icon micro-interactions.
|
|
2
|
+
// All transforms/opacity/filter only; layout untouched. Honors prefers-reduced-motion.
|
|
3
|
+
const RAIL_MOTION_CSS = `
|
|
4
|
+
.ql-rail-indicator {
|
|
5
|
+
position: absolute;
|
|
6
|
+
left: 2px;
|
|
7
|
+
top: 0;
|
|
8
|
+
width: 3px;
|
|
9
|
+
border-radius: 9999px;
|
|
10
|
+
background: hsl(var(--primary));
|
|
11
|
+
box-shadow: 0 0 0 0.5px hsl(var(--primary) / 0.25), 0 0 12px hsl(var(--primary) / 0.55);
|
|
12
|
+
pointer-events: none;
|
|
13
|
+
will-change: transform, height, opacity;
|
|
14
|
+
z-index: 1;
|
|
15
|
+
}
|
|
16
|
+
.ql-rail-indicator--animated {
|
|
17
|
+
transition:
|
|
18
|
+
transform 0.42s cubic-bezier(0.22, 1, 0.36, 1),
|
|
19
|
+
height 0.42s cubic-bezier(0.22, 1, 0.36, 1),
|
|
20
|
+
opacity 0.2s ease-out;
|
|
21
|
+
}
|
|
22
|
+
.ql-rail-icon {
|
|
23
|
+
transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), filter 0.24s ease-out;
|
|
24
|
+
will-change: transform;
|
|
25
|
+
}
|
|
26
|
+
.ql-rail-item:hover .ql-rail-icon {
|
|
27
|
+
transform: translateY(-1px) scale(1.12);
|
|
28
|
+
}
|
|
29
|
+
.ql-rail-item:active .ql-rail-icon {
|
|
30
|
+
transform: scale(0.94);
|
|
31
|
+
transition-duration: 0.1s;
|
|
32
|
+
}
|
|
33
|
+
.ql-rail-icon-active {
|
|
34
|
+
transform: scale(1.08);
|
|
35
|
+
filter: drop-shadow(0 1px 6px hsl(var(--primary) / 0.45));
|
|
36
|
+
}
|
|
37
|
+
.ql-rail-item:hover .ql-rail-icon-active {
|
|
38
|
+
transform: translateY(-1px) scale(1.14);
|
|
39
|
+
}
|
|
40
|
+
.ql-hover-accent {
|
|
41
|
+
background: hsl(var(--primary) / 0.35);
|
|
42
|
+
animation: qlHoverAccentIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
|
|
43
|
+
}
|
|
44
|
+
@keyframes qlHoverAccentIn {
|
|
45
|
+
from { opacity: 0; transform: scaleY(0.4); }
|
|
46
|
+
to { opacity: 1; transform: scaleY(1); }
|
|
47
|
+
}
|
|
48
|
+
@media (prefers-reduced-motion: reduce) {
|
|
49
|
+
.ql-rail-indicator--animated { transition: opacity 0.12s ease-out; }
|
|
50
|
+
.ql-rail-icon,
|
|
51
|
+
.ql-rail-item:hover .ql-rail-icon,
|
|
52
|
+
.ql-rail-item:active .ql-rail-icon,
|
|
53
|
+
.ql-rail-item:hover .ql-rail-icon-active { transition: none; transform: none; }
|
|
54
|
+
.ql-rail-icon-active { transform: none; }
|
|
55
|
+
.ql-hover-accent { animation: none; }
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
const PerplexSidebarMenu = ({
|
|
2
59
|
menuData,
|
|
3
60
|
routeParams,
|
|
4
61
|
settings,
|
|
@@ -20,6 +77,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
20
77
|
const hoverCloseTimeout = React__default.useRef(null);
|
|
21
78
|
const hoverOpenTimeout = React__default.useRef(null);
|
|
22
79
|
const currentHoveredMenu = useRef(null);
|
|
80
|
+
// Refs + state for the shared "magic" active indicator that springs between items.
|
|
81
|
+
const navRef = useRef(null);
|
|
82
|
+
const itemRefs = useRef({});
|
|
83
|
+
const [indicator, setIndicator] = useState({
|
|
84
|
+
y: 0,
|
|
85
|
+
h: 0,
|
|
86
|
+
visible: false
|
|
87
|
+
});
|
|
88
|
+
// Suppresses the very first slide (so the bar fades in place instead of flying from y=0).
|
|
89
|
+
const indicatorPrimed = useRef(false);
|
|
90
|
+
const [indicatorAnimated, setIndicatorAnimated] = useState(false);
|
|
23
91
|
const {
|
|
24
92
|
PushpinLineIcon,
|
|
25
93
|
PushpinFillIcon
|
|
@@ -29,6 +97,31 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
29
97
|
const pinnedPath = machineState?.context?.sidebar?.pinnedPath || null;
|
|
30
98
|
// Extract showHeader with fallback to true if not defined
|
|
31
99
|
const showHeader = deviceSettings && deviceSettings.header && deviceSettings.header.showHeader !== undefined ? deviceSettings.header.showHeader : true;
|
|
100
|
+
// Tear down any transient hover/flyout state whenever the route changes.
|
|
101
|
+
// Navigating from inside a flyout (or while hovering a parent) never fires the
|
|
102
|
+
// mouse-leave handlers, so hoveredMenu/flyoutVisible/activeMenuItem would otherwise
|
|
103
|
+
// stay stuck — leaving the parent item highlighted and the flyout panel covering
|
|
104
|
+
// the content. Pinned flyouts are intentionally kept open.
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (hoverCloseTimeout.current) {
|
|
107
|
+
window.clearTimeout(hoverCloseTimeout.current);
|
|
108
|
+
hoverCloseTimeout.current = null;
|
|
109
|
+
}
|
|
110
|
+
if (hoverOpenTimeout.current) {
|
|
111
|
+
window.clearTimeout(hoverOpenTimeout.current);
|
|
112
|
+
hoverOpenTimeout.current = null;
|
|
113
|
+
}
|
|
114
|
+
if (pinnedPath) {
|
|
115
|
+
// Keep the pinned flyout open and highlighted; just drop any other hover.
|
|
116
|
+
currentHoveredMenu.current = pinnedPath;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
currentHoveredMenu.current = null;
|
|
120
|
+
setFlyoutVisible(false);
|
|
121
|
+
setHoveredMenu(null);
|
|
122
|
+
setActiveMenuItem(null);
|
|
123
|
+
setMenuTransition('opening');
|
|
124
|
+
}, [location.pathname, pinnedPath]);
|
|
32
125
|
const isMenuItemActive = itemPath => {
|
|
33
126
|
const currentPath = location.pathname;
|
|
34
127
|
const menuPath = generateMenuPath(itemPath, routeParams);
|
|
@@ -42,6 +135,67 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
42
135
|
}
|
|
43
136
|
return false;
|
|
44
137
|
};
|
|
138
|
+
// Measure the active top-level item and move the shared indicator to it.
|
|
139
|
+
// Returns true once it has settled (placed on an item, or no active item exists).
|
|
140
|
+
const measureIndicator = () => {
|
|
141
|
+
if (typeof window === 'undefined') return false;
|
|
142
|
+
const nav = navRef.current;
|
|
143
|
+
if (!nav) return false;
|
|
144
|
+
const activeItem = menuData.find(item => isMenuItemActive(item.path));
|
|
145
|
+
const el = activeItem ? itemRefs.current[activeItem.path] : null;
|
|
146
|
+
if (el) {
|
|
147
|
+
setIndicator({
|
|
148
|
+
y: el.offsetTop,
|
|
149
|
+
h: el.offsetHeight,
|
|
150
|
+
visible: true
|
|
151
|
+
});
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
setIndicator(prev => ({
|
|
155
|
+
...prev,
|
|
156
|
+
visible: false
|
|
157
|
+
}));
|
|
158
|
+
// "Settled" only if there is genuinely no active item to point at.
|
|
159
|
+
return !activeItem;
|
|
160
|
+
};
|
|
161
|
+
// Keep a ref to the latest closure so observers always see current data.
|
|
162
|
+
const measureRef = useRef(measureIndicator);
|
|
163
|
+
measureRef.current = measureIndicator;
|
|
164
|
+
// Re-measure whenever the rail actually lays out or resizes. ResizeObserver
|
|
165
|
+
// fires once on observe (after layout) — the most reliable signal that item
|
|
166
|
+
// geometry is ready — and again on async menu load, hydration, or viewport change.
|
|
167
|
+
useEffect(() => {
|
|
168
|
+
if (typeof window === 'undefined') return;
|
|
169
|
+
const nav = navRef.current;
|
|
170
|
+
if (!nav) return;
|
|
171
|
+
const run = () => measureRef.current();
|
|
172
|
+
const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(run) : null;
|
|
173
|
+
ro?.observe(nav);
|
|
174
|
+
window.addEventListener('resize', run);
|
|
175
|
+
return () => {
|
|
176
|
+
ro?.disconnect();
|
|
177
|
+
window.removeEventListener('resize', run);
|
|
178
|
+
};
|
|
179
|
+
}, []);
|
|
180
|
+
// On navigation / data change: measure now (+ a couple of frame retries for the
|
|
181
|
+
// hydration race) and enable the sliding transition after the first placement.
|
|
182
|
+
useEffect(() => {
|
|
183
|
+
if (typeof window === 'undefined') return;
|
|
184
|
+
const rafs = [];
|
|
185
|
+
if (!measureRef.current()) {
|
|
186
|
+
rafs.push(requestAnimationFrame(() => {
|
|
187
|
+
if (!measureRef.current()) rafs.push(requestAnimationFrame(() => measureRef.current()));
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
if (!indicatorPrimed.current) {
|
|
191
|
+
indicatorPrimed.current = true;
|
|
192
|
+
rafs.push(requestAnimationFrame(() => setIndicatorAnimated(true)));
|
|
193
|
+
} else {
|
|
194
|
+
setIndicatorAnimated(true);
|
|
195
|
+
}
|
|
196
|
+
return () => rafs.forEach(r => cancelAnimationFrame(r));
|
|
197
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
198
|
+
}, [location.pathname, menuData, routeParams, collapsed]);
|
|
45
199
|
const toggleMenu = (path, depth, e) => {
|
|
46
200
|
e.preventDefault();
|
|
47
201
|
if (collapsed) return;
|
|
@@ -90,6 +244,7 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
90
244
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
91
245
|
hoverOpenTimeout.current = null;
|
|
92
246
|
}
|
|
247
|
+
// Always update the current hovered menu ref
|
|
93
248
|
currentHoveredMenu.current = item.path;
|
|
94
249
|
// Update which item is being hovered and its children data
|
|
95
250
|
if (hoveredMenu !== item.path) {
|
|
@@ -97,6 +252,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
97
252
|
setActiveMenuItem(item);
|
|
98
253
|
// If we're already showing a menu, just update content without closing/reopening
|
|
99
254
|
if (flyoutVisible) {
|
|
255
|
+
// If menu is closing, cancel the close and reopen
|
|
256
|
+
if (menuTransition === 'closing') {
|
|
257
|
+
setMenuTransition('opening');
|
|
258
|
+
}
|
|
100
259
|
// Just update the hovered menu path without animation
|
|
101
260
|
setHoveredMenu(item.path);
|
|
102
261
|
} else {
|
|
@@ -105,6 +264,13 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
105
264
|
setFlyoutVisible(true);
|
|
106
265
|
setHoveredMenu(item.path);
|
|
107
266
|
}
|
|
267
|
+
} else {
|
|
268
|
+
// Same menu item, but ensure state is consistent
|
|
269
|
+
// This handles the case where we re-enter after leaving
|
|
270
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
271
|
+
setMenuTransition('opening');
|
|
272
|
+
setFlyoutVisible(true);
|
|
273
|
+
}
|
|
108
274
|
}
|
|
109
275
|
// If a different top-level item is hovered while pinned, update pinnedPath
|
|
110
276
|
if (depth === 0 && pinnedPath) {
|
|
@@ -127,20 +293,33 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
127
293
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
128
294
|
hoverOpenTimeout.current = null;
|
|
129
295
|
}
|
|
130
|
-
currentHoveredMenu
|
|
131
|
-
//
|
|
296
|
+
// Don't immediately clear currentHoveredMenu - wait to see if user moves to flyout
|
|
297
|
+
// The flyout's onMouseEnter will restore it if user moves there
|
|
298
|
+
// If user moves to content, the timeout will clear it
|
|
299
|
+
// Add a delay before closing the menu to allow movement to flyout
|
|
132
300
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}, 150);
|
|
301
|
+
// Check if we're still hovering the flyout (activeMenuItem matches)
|
|
302
|
+
if (activeMenuItem?.path === item.path) {
|
|
303
|
+
// User is hovering the flyout, don't close
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
// Check if we re-entered the menu item
|
|
307
|
+
if (currentHoveredMenu.current === item.path) {
|
|
308
|
+
// User re-entered menu item, don't close
|
|
309
|
+
return;
|
|
143
310
|
}
|
|
311
|
+
// Safe to close now
|
|
312
|
+
currentHoveredMenu.current = null;
|
|
313
|
+
setMenuTransition('closing');
|
|
314
|
+
// Additional delay to complete closing animation
|
|
315
|
+
setTimeout(() => {
|
|
316
|
+
// Double-check before closing
|
|
317
|
+
if (activeMenuItem?.path !== item.path && currentHoveredMenu.current !== item.path) {
|
|
318
|
+
setFlyoutVisible(false);
|
|
319
|
+
setHoveredMenu(null);
|
|
320
|
+
setActiveMenuItem(null);
|
|
321
|
+
}
|
|
322
|
+
}, 150);
|
|
144
323
|
}, 300); // Extended delay to give more time to move between items
|
|
145
324
|
}
|
|
146
325
|
};
|
|
@@ -188,53 +367,87 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
188
367
|
const sidebarWidth = 92; // Updated fixed sidebar rail width
|
|
189
368
|
const item = activeMenuItem; // Use the currently active menu item
|
|
190
369
|
return React__default.createElement("div", {
|
|
191
|
-
className: `fixed
|
|
370
|
+
className: `fixed z-[999] overflow-hidden border-y border-r border-border menu-${menuTransition}`,
|
|
192
371
|
style: {
|
|
193
372
|
left: `${sidebarWidth}px`,
|
|
194
373
|
top: !showHeader ? '0px' : '5rem',
|
|
195
374
|
height: !showHeader ? '100vh' : 'calc(100vh - 5rem)',
|
|
196
375
|
width: '228px',
|
|
197
376
|
maxWidth: 'calc(100vw - 100px)',
|
|
377
|
+
transformOrigin: 'left center',
|
|
378
|
+
borderTopRightRadius: '12px',
|
|
379
|
+
borderBottomRightRadius: '12px',
|
|
380
|
+
background: 'hsl(var(--background) / 0.82)',
|
|
381
|
+
backdropFilter: 'blur(20px) saturate(1.4)',
|
|
382
|
+
WebkitBackdropFilter: 'blur(20px) saturate(1.4)',
|
|
383
|
+
boxShadow: '0 24px 70px -24px rgba(0,0,0,0.45)',
|
|
198
384
|
pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
|
|
199
385
|
...SidebarStyles
|
|
200
386
|
},
|
|
201
387
|
onMouseEnter: () => {
|
|
388
|
+
// Clear any pending close timeouts
|
|
202
389
|
if (hoverCloseTimeout.current) {
|
|
203
390
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
204
391
|
hoverCloseTimeout.current = null;
|
|
205
392
|
}
|
|
206
|
-
//
|
|
393
|
+
// Restore the hovered menu ref when entering the flyout
|
|
394
|
+
// This ensures state consistency when moving between menu item and flyout
|
|
395
|
+
if (activeMenuItem) {
|
|
396
|
+
currentHoveredMenu.current = activeMenuItem.path;
|
|
397
|
+
// Ensure flyout is visible and in opening state
|
|
398
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
399
|
+
setMenuTransition('opening');
|
|
400
|
+
setFlyoutVisible(true);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
207
403
|
},
|
|
208
404
|
onMouseLeave: () => {
|
|
209
405
|
if (pinnedPath === item.path) return; // don't close if pinned
|
|
406
|
+
// Clear any existing timeouts
|
|
210
407
|
if (hoverCloseTimeout.current) {
|
|
211
408
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
212
409
|
}
|
|
213
|
-
|
|
410
|
+
// Don't immediately set to null - wait for timeout
|
|
411
|
+
// This allows re-entering the menu item to restore state
|
|
214
412
|
setMenuTransition('closing');
|
|
215
413
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
414
|
+
// Only close if we're still not hovering anything
|
|
216
415
|
if (!currentHoveredMenu.current) {
|
|
217
416
|
setFlyoutVisible(false);
|
|
218
417
|
setHoveredMenu(null);
|
|
418
|
+
setActiveMenuItem(null);
|
|
219
419
|
}
|
|
220
420
|
}, 150);
|
|
221
421
|
}
|
|
222
422
|
}, React__default.createElement("style", {
|
|
223
423
|
dangerouslySetInnerHTML: {
|
|
224
424
|
__html: `
|
|
225
|
-
@keyframes
|
|
226
|
-
from { opacity: 0; transform: translateX(-
|
|
227
|
-
to
|
|
425
|
+
@keyframes flyoutIn {
|
|
426
|
+
from { opacity: 0; transform: translateX(-14px) scale(0.98); filter: blur(6px); }
|
|
427
|
+
to { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }
|
|
228
428
|
}
|
|
229
|
-
@keyframes
|
|
230
|
-
from { opacity: 1; transform: translateX(0); }
|
|
231
|
-
to
|
|
429
|
+
@keyframes flyoutOut {
|
|
430
|
+
from { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }
|
|
431
|
+
to { opacity: 0; transform: translateX(-10px) scale(0.99); filter: blur(4px); }
|
|
232
432
|
}
|
|
233
433
|
.menu-opening {
|
|
234
|
-
animation:
|
|
434
|
+
animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
235
435
|
}
|
|
236
436
|
.menu-closing {
|
|
237
|
-
animation:
|
|
437
|
+
animation: flyoutOut 0.16s cubic-bezier(0.4, 0, 1, 1) forwards;
|
|
438
|
+
}
|
|
439
|
+
@keyframes flyoutItemIn {
|
|
440
|
+
from { opacity: 0; transform: translateX(10px); }
|
|
441
|
+
to { opacity: 1; transform: translateX(0); }
|
|
442
|
+
}
|
|
443
|
+
.ql-flyout-item {
|
|
444
|
+
opacity: 0;
|
|
445
|
+
animation: flyoutItemIn 0.34s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
446
|
+
animation-delay: calc(60ms + var(--i, 0) * 38ms);
|
|
447
|
+
}
|
|
448
|
+
@media (prefers-reduced-motion: reduce) {
|
|
449
|
+
.menu-opening, .menu-closing { animation-duration: 0.01ms; filter: none; }
|
|
450
|
+
.ql-flyout-item { animation: none; opacity: 1; }
|
|
238
451
|
}
|
|
239
452
|
`
|
|
240
453
|
}
|
|
@@ -255,9 +468,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
255
468
|
style: {
|
|
256
469
|
height: !showHeader ? 'calc(100vh - 44px)' : 'calc(100vh - 5rem - 44px)'
|
|
257
470
|
}
|
|
258
|
-
}, item.children?.map(child => React__default.createElement("div", {
|
|
471
|
+
}, item.children?.map((child, idx) => React__default.createElement("div", {
|
|
259
472
|
key: child.path,
|
|
260
|
-
className: "w-full min-w-max hover:text-primary"
|
|
473
|
+
className: "ql-flyout-item w-full min-w-max hover:text-primary",
|
|
474
|
+
style: {
|
|
475
|
+
['--i']: idx
|
|
476
|
+
}
|
|
261
477
|
}, renderMenuItem(child, 1, true)))));
|
|
262
478
|
};
|
|
263
479
|
const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
|
|
@@ -271,11 +487,14 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
271
487
|
const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
|
|
272
488
|
return React__default.createElement("div", {
|
|
273
489
|
key: item.path,
|
|
274
|
-
|
|
490
|
+
ref: depth === 0 && !isHoverMenu ? el => {
|
|
491
|
+
itemRefs.current[item.path] = el;
|
|
492
|
+
} : undefined,
|
|
493
|
+
className: `w-full relative group hover:text-primary ${depth === 0 && !isHoverMenu ? 'ql-rail-item' : ''}`,
|
|
275
494
|
onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
|
|
276
495
|
onMouseLeave: () => handleMenuLeave(item, isHoverMenu)
|
|
277
|
-
}, depth === 0 &&
|
|
278
|
-
className: "absolute left-0 top-1 bottom-1 w-0.5
|
|
496
|
+
}, depth === 0 && isParentWithChildren && isHovered && !isActive && React__default.createElement("span", {
|
|
497
|
+
className: "absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-full ql-hover-accent"
|
|
279
498
|
}), React__default.createElement(Link, {
|
|
280
499
|
to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
|
|
281
500
|
className: `flex hover:text-primary items-center justify-between w-full px-1 py-2 text-xs cursor-pointer transition-colors mx-1 my-1 whitespace-nowrap overflow-hidden text-ellipsis ${shouldApplyBackground ? 'text-primary' : undefined}`,
|
|
@@ -286,12 +505,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
286
505
|
}, React__default.createElement("div", {
|
|
287
506
|
className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
|
|
288
507
|
}, item.icon ? React__default.createElement("span", {
|
|
289
|
-
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ?
|
|
508
|
+
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-[20px] ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
|
|
290
509
|
style: {
|
|
291
510
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
292
511
|
}
|
|
293
512
|
}, item.icon) : React__default.createElement("span", {
|
|
294
|
-
className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ?
|
|
513
|
+
className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-[16px] h-6 w-6 select-none text-center ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
|
|
295
514
|
style: {
|
|
296
515
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
297
516
|
}
|
|
@@ -312,7 +531,23 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
312
531
|
};
|
|
313
532
|
return React__default.createElement("div", {
|
|
314
533
|
className: "overflow-hidden"
|
|
315
|
-
}, React__default.createElement("
|
|
534
|
+
}, React__default.createElement("style", {
|
|
535
|
+
dangerouslySetInnerHTML: {
|
|
536
|
+
__html: RAIL_MOTION_CSS
|
|
537
|
+
}
|
|
538
|
+
}), React__default.createElement("nav", {
|
|
539
|
+
ref: navRef,
|
|
540
|
+
style: {
|
|
541
|
+
position: 'relative'
|
|
542
|
+
},
|
|
316
543
|
className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
|
|
317
|
-
},
|
|
544
|
+
}, React__default.createElement("span", {
|
|
545
|
+
"aria-hidden": "true",
|
|
546
|
+
className: `ql-rail-indicator ${indicatorAnimated ? 'ql-rail-indicator--animated' : ''}`,
|
|
547
|
+
style: {
|
|
548
|
+
transform: `translateY(${indicator.y + 6}px)`,
|
|
549
|
+
height: `${Math.max(indicator.h - 12, 0)}px`,
|
|
550
|
+
opacity: indicator.visible ? 1 : 0
|
|
551
|
+
}
|
|
552
|
+
}), menuData.map(item => renderMenuItem(item))), renderSingleFlyout());
|
|
318
553
|
};export{PerplexSidebarMenu};//# sourceMappingURL=PerplexSidebarMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerplexSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PerplexSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* SidebarRailFX — an opt-in ambient backdrop that lives *behind* the icon rail.
|
|
4
|
+
*
|
|
5
|
+
* mode:
|
|
6
|
+
* 'off' — render nothing (default; zero cost).
|
|
7
|
+
* 'aurora' — lightweight CSS-only drifting aurora (works everywhere).
|
|
8
|
+
* 'webgpu' — a GPU shader aurora when the browser supports WebGPU,
|
|
9
|
+
* gracefully falling back to the CSS aurora otherwise.
|
|
10
|
+
*
|
|
11
|
+
* It is purely decorative: `pointer-events: none`, sits at `z-index: -1` inside
|
|
12
|
+
* the rail's stacking context (above the card background, below the icons), and
|
|
13
|
+
* honors `prefers-reduced-motion` by holding a static frame.
|
|
14
|
+
*/
|
|
15
|
+
export type RailFxMode = 'off' | 'aurora' | 'webgpu';
|
|
16
|
+
interface SidebarRailFXProps {
|
|
17
|
+
mode?: RailFxMode;
|
|
18
|
+
/** Brand color as an `r,g,b` triplet in 0..1. Defaults to a calm indigo. */
|
|
19
|
+
rgb?: [number, number, number];
|
|
20
|
+
}
|
|
21
|
+
export declare const SidebarRailFX: React.FC<SidebarRailFXProps>;
|
|
22
|
+
export default SidebarRailFX;
|
|
23
|
+
//# sourceMappingURL=SidebarRailFX.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarRailFX.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/SidebarRailFX.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,UAAU,kBAAkB;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AA4CD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAuKtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|