@admin-layout/tailwind-design-pro 12.2.4-alpha.8 → 12.2.4-alpha.84
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 +1 -1
- package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.js +48 -36
- 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 +51 -78
- package/lib/components/Layout/Sidebar/BottomMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.js +80 -19
- 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 +301 -39
- 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.js +2 -2
- 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 +5 -2
- 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,74 @@
|
|
|
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
|
+
/* Staggered entrance for the top-level rail items. opacity + transform are
|
|
5
|
+
compositor-only, so the reveal is GPU-accelerated and never reflows. Runs once
|
|
6
|
+
on mount; the per-item delay is set inline via --ql-rail-i. */
|
|
7
|
+
.ql-rail-enter {
|
|
8
|
+
animation: qlRailItemIn 0.34s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
9
|
+
animation-delay: calc(var(--ql-rail-i, 0) * 45ms);
|
|
10
|
+
will-change: transform, opacity;
|
|
11
|
+
}
|
|
12
|
+
@keyframes qlRailItemIn {
|
|
13
|
+
from { opacity: 0; transform: translateX(-8px) scale(0.92); }
|
|
14
|
+
to { opacity: 1; transform: translateX(0) scale(1); }
|
|
15
|
+
}
|
|
16
|
+
.ql-rail-indicator {
|
|
17
|
+
position: absolute;
|
|
18
|
+
left: 2px;
|
|
19
|
+
top: 0;
|
|
20
|
+
width: 3px;
|
|
21
|
+
border-radius: 9999px;
|
|
22
|
+
background: hsl(var(--primary));
|
|
23
|
+
box-shadow: 0 0 0 0.5px hsl(var(--primary) / 0.25), 0 0 12px hsl(var(--primary) / 0.55);
|
|
24
|
+
pointer-events: none;
|
|
25
|
+
will-change: transform, height, opacity;
|
|
26
|
+
z-index: 1;
|
|
27
|
+
}
|
|
28
|
+
.ql-rail-indicator--animated {
|
|
29
|
+
transition:
|
|
30
|
+
transform 0.42s cubic-bezier(0.22, 1, 0.36, 1),
|
|
31
|
+
height 0.42s cubic-bezier(0.22, 1, 0.36, 1),
|
|
32
|
+
opacity 0.2s ease-out;
|
|
33
|
+
}
|
|
34
|
+
.ql-rail-icon {
|
|
35
|
+
transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), filter 0.24s ease-out;
|
|
36
|
+
will-change: transform;
|
|
37
|
+
}
|
|
38
|
+
.ql-rail-item:hover .ql-rail-icon {
|
|
39
|
+
transform: translateY(-1px) scale(1.12);
|
|
40
|
+
}
|
|
41
|
+
.ql-rail-item:active .ql-rail-icon {
|
|
42
|
+
transform: scale(0.94);
|
|
43
|
+
transition-duration: 0.1s;
|
|
44
|
+
}
|
|
45
|
+
.ql-rail-icon-active {
|
|
46
|
+
transform: scale(1.08);
|
|
47
|
+
filter: drop-shadow(0 1px 6px hsl(var(--primary) / 0.45));
|
|
48
|
+
}
|
|
49
|
+
.ql-rail-item:hover .ql-rail-icon-active {
|
|
50
|
+
transform: translateY(-1px) scale(1.14);
|
|
51
|
+
}
|
|
52
|
+
.ql-hover-accent {
|
|
53
|
+
background: hsl(var(--primary) / 0.35);
|
|
54
|
+
animation: qlHoverAccentIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
|
|
55
|
+
}
|
|
56
|
+
@keyframes qlHoverAccentIn {
|
|
57
|
+
from { opacity: 0; transform: scaleY(0.4); }
|
|
58
|
+
to { opacity: 1; transform: scaleY(1); }
|
|
59
|
+
}
|
|
60
|
+
@media (prefers-reduced-motion: reduce) {
|
|
61
|
+
.ql-rail-indicator--animated { transition: opacity 0.12s ease-out; }
|
|
62
|
+
.ql-rail-icon,
|
|
63
|
+
.ql-rail-item:hover .ql-rail-icon,
|
|
64
|
+
.ql-rail-item:active .ql-rail-icon,
|
|
65
|
+
.ql-rail-item:hover .ql-rail-icon-active { transition: none; transform: none; }
|
|
66
|
+
.ql-rail-icon-active { transform: none; }
|
|
67
|
+
.ql-hover-accent { animation: none; }
|
|
68
|
+
.ql-rail-enter { animation: none; }
|
|
69
|
+
}
|
|
70
|
+
`;
|
|
71
|
+
const PerplexSidebarMenu = ({
|
|
2
72
|
menuData,
|
|
3
73
|
routeParams,
|
|
4
74
|
settings,
|
|
@@ -20,6 +90,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
20
90
|
const hoverCloseTimeout = React__default.useRef(null);
|
|
21
91
|
const hoverOpenTimeout = React__default.useRef(null);
|
|
22
92
|
const currentHoveredMenu = useRef(null);
|
|
93
|
+
// Refs + state for the shared "magic" active indicator that springs between items.
|
|
94
|
+
const navRef = useRef(null);
|
|
95
|
+
const itemRefs = useRef({});
|
|
96
|
+
const [indicator, setIndicator] = useState({
|
|
97
|
+
y: 0,
|
|
98
|
+
h: 0,
|
|
99
|
+
visible: false
|
|
100
|
+
});
|
|
101
|
+
// Suppresses the very first slide (so the bar fades in place instead of flying from y=0).
|
|
102
|
+
const indicatorPrimed = useRef(false);
|
|
103
|
+
const [indicatorAnimated, setIndicatorAnimated] = useState(false);
|
|
23
104
|
const {
|
|
24
105
|
PushpinLineIcon,
|
|
25
106
|
PushpinFillIcon
|
|
@@ -29,6 +110,31 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
29
110
|
const pinnedPath = machineState?.context?.sidebar?.pinnedPath || null;
|
|
30
111
|
// Extract showHeader with fallback to true if not defined
|
|
31
112
|
const showHeader = deviceSettings && deviceSettings.header && deviceSettings.header.showHeader !== undefined ? deviceSettings.header.showHeader : true;
|
|
113
|
+
// Tear down any transient hover/flyout state whenever the route changes.
|
|
114
|
+
// Navigating from inside a flyout (or while hovering a parent) never fires the
|
|
115
|
+
// mouse-leave handlers, so hoveredMenu/flyoutVisible/activeMenuItem would otherwise
|
|
116
|
+
// stay stuck — leaving the parent item highlighted and the flyout panel covering
|
|
117
|
+
// the content. Pinned flyouts are intentionally kept open.
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
if (hoverCloseTimeout.current) {
|
|
120
|
+
window.clearTimeout(hoverCloseTimeout.current);
|
|
121
|
+
hoverCloseTimeout.current = null;
|
|
122
|
+
}
|
|
123
|
+
if (hoverOpenTimeout.current) {
|
|
124
|
+
window.clearTimeout(hoverOpenTimeout.current);
|
|
125
|
+
hoverOpenTimeout.current = null;
|
|
126
|
+
}
|
|
127
|
+
if (pinnedPath) {
|
|
128
|
+
// Keep the pinned flyout open and highlighted; just drop any other hover.
|
|
129
|
+
currentHoveredMenu.current = pinnedPath;
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
currentHoveredMenu.current = null;
|
|
133
|
+
setFlyoutVisible(false);
|
|
134
|
+
setHoveredMenu(null);
|
|
135
|
+
setActiveMenuItem(null);
|
|
136
|
+
setMenuTransition('opening');
|
|
137
|
+
}, [location.pathname, pinnedPath]);
|
|
32
138
|
const isMenuItemActive = itemPath => {
|
|
33
139
|
const currentPath = location.pathname;
|
|
34
140
|
const menuPath = generateMenuPath(itemPath, routeParams);
|
|
@@ -42,6 +148,67 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
42
148
|
}
|
|
43
149
|
return false;
|
|
44
150
|
};
|
|
151
|
+
// Measure the active top-level item and move the shared indicator to it.
|
|
152
|
+
// Returns true once it has settled (placed on an item, or no active item exists).
|
|
153
|
+
const measureIndicator = () => {
|
|
154
|
+
if (typeof window === 'undefined') return false;
|
|
155
|
+
const nav = navRef.current;
|
|
156
|
+
if (!nav) return false;
|
|
157
|
+
const activeItem = menuData.find(item => isMenuItemActive(item.path));
|
|
158
|
+
const el = activeItem ? itemRefs.current[activeItem.path] : null;
|
|
159
|
+
if (el) {
|
|
160
|
+
setIndicator({
|
|
161
|
+
y: el.offsetTop,
|
|
162
|
+
h: el.offsetHeight,
|
|
163
|
+
visible: true
|
|
164
|
+
});
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
setIndicator(prev => ({
|
|
168
|
+
...prev,
|
|
169
|
+
visible: false
|
|
170
|
+
}));
|
|
171
|
+
// "Settled" only if there is genuinely no active item to point at.
|
|
172
|
+
return !activeItem;
|
|
173
|
+
};
|
|
174
|
+
// Keep a ref to the latest closure so observers always see current data.
|
|
175
|
+
const measureRef = useRef(measureIndicator);
|
|
176
|
+
measureRef.current = measureIndicator;
|
|
177
|
+
// Re-measure whenever the rail actually lays out or resizes. ResizeObserver
|
|
178
|
+
// fires once on observe (after layout) — the most reliable signal that item
|
|
179
|
+
// geometry is ready — and again on async menu load, hydration, or viewport change.
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
if (typeof window === 'undefined') return;
|
|
182
|
+
const nav = navRef.current;
|
|
183
|
+
if (!nav) return;
|
|
184
|
+
const run = () => measureRef.current();
|
|
185
|
+
const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(run) : null;
|
|
186
|
+
ro?.observe(nav);
|
|
187
|
+
window.addEventListener('resize', run);
|
|
188
|
+
return () => {
|
|
189
|
+
ro?.disconnect();
|
|
190
|
+
window.removeEventListener('resize', run);
|
|
191
|
+
};
|
|
192
|
+
}, []);
|
|
193
|
+
// On navigation / data change: measure now (+ a couple of frame retries for the
|
|
194
|
+
// hydration race) and enable the sliding transition after the first placement.
|
|
195
|
+
useEffect(() => {
|
|
196
|
+
if (typeof window === 'undefined') return;
|
|
197
|
+
const rafs = [];
|
|
198
|
+
if (!measureRef.current()) {
|
|
199
|
+
rafs.push(requestAnimationFrame(() => {
|
|
200
|
+
if (!measureRef.current()) rafs.push(requestAnimationFrame(() => measureRef.current()));
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
if (!indicatorPrimed.current) {
|
|
204
|
+
indicatorPrimed.current = true;
|
|
205
|
+
rafs.push(requestAnimationFrame(() => setIndicatorAnimated(true)));
|
|
206
|
+
} else {
|
|
207
|
+
setIndicatorAnimated(true);
|
|
208
|
+
}
|
|
209
|
+
return () => rafs.forEach(r => cancelAnimationFrame(r));
|
|
210
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
211
|
+
}, [location.pathname, menuData, routeParams, collapsed]);
|
|
45
212
|
const toggleMenu = (path, depth, e) => {
|
|
46
213
|
e.preventDefault();
|
|
47
214
|
if (collapsed) return;
|
|
@@ -90,6 +257,7 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
90
257
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
91
258
|
hoverOpenTimeout.current = null;
|
|
92
259
|
}
|
|
260
|
+
// Always update the current hovered menu ref
|
|
93
261
|
currentHoveredMenu.current = item.path;
|
|
94
262
|
// Update which item is being hovered and its children data
|
|
95
263
|
if (hoveredMenu !== item.path) {
|
|
@@ -97,6 +265,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
97
265
|
setActiveMenuItem(item);
|
|
98
266
|
// If we're already showing a menu, just update content without closing/reopening
|
|
99
267
|
if (flyoutVisible) {
|
|
268
|
+
// If menu is closing, cancel the close and reopen
|
|
269
|
+
if (menuTransition === 'closing') {
|
|
270
|
+
setMenuTransition('opening');
|
|
271
|
+
}
|
|
100
272
|
// Just update the hovered menu path without animation
|
|
101
273
|
setHoveredMenu(item.path);
|
|
102
274
|
} else {
|
|
@@ -105,6 +277,13 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
105
277
|
setFlyoutVisible(true);
|
|
106
278
|
setHoveredMenu(item.path);
|
|
107
279
|
}
|
|
280
|
+
} else {
|
|
281
|
+
// Same menu item, but ensure state is consistent
|
|
282
|
+
// This handles the case where we re-enter after leaving
|
|
283
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
284
|
+
setMenuTransition('opening');
|
|
285
|
+
setFlyoutVisible(true);
|
|
286
|
+
}
|
|
108
287
|
}
|
|
109
288
|
// If a different top-level item is hovered while pinned, update pinnedPath
|
|
110
289
|
if (depth === 0 && pinnedPath) {
|
|
@@ -127,20 +306,33 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
127
306
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
128
307
|
hoverOpenTimeout.current = null;
|
|
129
308
|
}
|
|
130
|
-
currentHoveredMenu
|
|
131
|
-
//
|
|
309
|
+
// Don't immediately clear currentHoveredMenu - wait to see if user moves to flyout
|
|
310
|
+
// The flyout's onMouseEnter will restore it if user moves there
|
|
311
|
+
// If user moves to content, the timeout will clear it
|
|
312
|
+
// Add a delay before closing the menu to allow movement to flyout
|
|
132
313
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}, 150);
|
|
314
|
+
// Check if we're still hovering the flyout (activeMenuItem matches)
|
|
315
|
+
if (activeMenuItem?.path === item.path) {
|
|
316
|
+
// User is hovering the flyout, don't close
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
// Check if we re-entered the menu item
|
|
320
|
+
if (currentHoveredMenu.current === item.path) {
|
|
321
|
+
// User re-entered menu item, don't close
|
|
322
|
+
return;
|
|
143
323
|
}
|
|
324
|
+
// Safe to close now
|
|
325
|
+
currentHoveredMenu.current = null;
|
|
326
|
+
setMenuTransition('closing');
|
|
327
|
+
// Additional delay to complete closing animation
|
|
328
|
+
setTimeout(() => {
|
|
329
|
+
// Double-check before closing
|
|
330
|
+
if (activeMenuItem?.path !== item.path && currentHoveredMenu.current !== item.path) {
|
|
331
|
+
setFlyoutVisible(false);
|
|
332
|
+
setHoveredMenu(null);
|
|
333
|
+
setActiveMenuItem(null);
|
|
334
|
+
}
|
|
335
|
+
}, 150);
|
|
144
336
|
}, 300); // Extended delay to give more time to move between items
|
|
145
337
|
}
|
|
146
338
|
};
|
|
@@ -187,54 +379,102 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
187
379
|
if (!flyoutVisible || !activeMenuItem) return null;
|
|
188
380
|
const sidebarWidth = 92; // Updated fixed sidebar rail width
|
|
189
381
|
const item = activeMenuItem; // Use the currently active menu item
|
|
382
|
+
// Anchor the flyout to the vertical position of the hovered rail item (measured in
|
|
383
|
+
// handleMenuHover), so moving Notion -> Marketplace slides the panel to the new
|
|
384
|
+
// item instead of leaving it as a static full-height column. Clamp to keep it on
|
|
385
|
+
// screen. The `top`/`max-height` change is CSS-transitioned (see .ql-flyout-anchored),
|
|
386
|
+
// so the panel glides between items while its content cross-fades.
|
|
387
|
+
const minTop = !showHeader ? 8 : 16;
|
|
388
|
+
const anchorTop = Math.max(minTop, Math.round(popupPosition.top || minTop));
|
|
190
389
|
return React__default.createElement("div", {
|
|
191
|
-
className: `fixed
|
|
390
|
+
className: `fixed z-[999] flex flex-col overflow-hidden border border-border menu-${menuTransition} ql-flyout-anchored`,
|
|
192
391
|
style: {
|
|
193
392
|
left: `${sidebarWidth}px`,
|
|
194
|
-
top:
|
|
195
|
-
|
|
393
|
+
top: `${anchorTop}px`,
|
|
394
|
+
maxHeight: `calc(100vh - ${anchorTop}px - 16px)`,
|
|
196
395
|
width: '228px',
|
|
197
396
|
maxWidth: 'calc(100vw - 100px)',
|
|
397
|
+
transformOrigin: 'left top',
|
|
398
|
+
borderRadius: '12px',
|
|
399
|
+
background: 'hsl(var(--background) / 0.82)',
|
|
400
|
+
backdropFilter: 'blur(20px) saturate(1.4)',
|
|
401
|
+
WebkitBackdropFilter: 'blur(20px) saturate(1.4)',
|
|
402
|
+
boxShadow: '0 24px 70px -24px rgba(0,0,0,0.45)',
|
|
198
403
|
pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
|
|
199
404
|
...SidebarStyles
|
|
200
405
|
},
|
|
201
406
|
onMouseEnter: () => {
|
|
407
|
+
// Clear any pending close timeouts
|
|
202
408
|
if (hoverCloseTimeout.current) {
|
|
203
409
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
204
410
|
hoverCloseTimeout.current = null;
|
|
205
411
|
}
|
|
206
|
-
//
|
|
412
|
+
// Restore the hovered menu ref when entering the flyout
|
|
413
|
+
// This ensures state consistency when moving between menu item and flyout
|
|
414
|
+
if (activeMenuItem) {
|
|
415
|
+
currentHoveredMenu.current = activeMenuItem.path;
|
|
416
|
+
// Ensure flyout is visible and in opening state
|
|
417
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
418
|
+
setMenuTransition('opening');
|
|
419
|
+
setFlyoutVisible(true);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
207
422
|
},
|
|
208
423
|
onMouseLeave: () => {
|
|
209
424
|
if (pinnedPath === item.path) return; // don't close if pinned
|
|
425
|
+
// Clear any existing timeouts
|
|
210
426
|
if (hoverCloseTimeout.current) {
|
|
211
427
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
212
428
|
}
|
|
213
|
-
|
|
429
|
+
// Don't immediately set to null - wait for timeout
|
|
430
|
+
// This allows re-entering the menu item to restore state
|
|
214
431
|
setMenuTransition('closing');
|
|
215
432
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
433
|
+
// Only close if we're still not hovering anything
|
|
216
434
|
if (!currentHoveredMenu.current) {
|
|
217
435
|
setFlyoutVisible(false);
|
|
218
436
|
setHoveredMenu(null);
|
|
437
|
+
setActiveMenuItem(null);
|
|
219
438
|
}
|
|
220
439
|
}, 150);
|
|
221
440
|
}
|
|
222
441
|
}, React__default.createElement("style", {
|
|
223
442
|
dangerouslySetInnerHTML: {
|
|
224
443
|
__html: `
|
|
225
|
-
@keyframes
|
|
226
|
-
from { opacity: 0; transform: translateX(-
|
|
227
|
-
to
|
|
444
|
+
@keyframes flyoutIn {
|
|
445
|
+
from { opacity: 0; transform: translateX(-14px) scale(0.98); filter: blur(6px); }
|
|
446
|
+
to { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }
|
|
228
447
|
}
|
|
229
|
-
@keyframes
|
|
230
|
-
from { opacity: 1; transform: translateX(0); }
|
|
231
|
-
to
|
|
448
|
+
@keyframes flyoutOut {
|
|
449
|
+
from { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }
|
|
450
|
+
to { opacity: 0; transform: translateX(-10px) scale(0.99); filter: blur(4px); }
|
|
232
451
|
}
|
|
233
452
|
.menu-opening {
|
|
234
|
-
animation:
|
|
453
|
+
animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
235
454
|
}
|
|
236
455
|
.menu-closing {
|
|
237
|
-
animation:
|
|
456
|
+
animation: flyoutOut 0.16s cubic-bezier(0.4, 0, 1, 1) forwards;
|
|
457
|
+
}
|
|
458
|
+
/* Slide the anchored panel between rail items as the hover target
|
|
459
|
+
changes. top/max-height only — no layout thrash on the rail. */
|
|
460
|
+
.ql-flyout-anchored {
|
|
461
|
+
transition:
|
|
462
|
+
top 0.3s cubic-bezier(0.22, 1, 0.36, 1),
|
|
463
|
+
max-height 0.3s cubic-bezier(0.22, 1, 0.36, 1);
|
|
464
|
+
}
|
|
465
|
+
@keyframes flyoutItemIn {
|
|
466
|
+
from { opacity: 0; transform: translateX(10px); }
|
|
467
|
+
to { opacity: 1; transform: translateX(0); }
|
|
468
|
+
}
|
|
469
|
+
.ql-flyout-item {
|
|
470
|
+
opacity: 0;
|
|
471
|
+
animation: flyoutItemIn 0.34s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
472
|
+
animation-delay: calc(60ms + var(--i, 0) * 38ms);
|
|
473
|
+
}
|
|
474
|
+
@media (prefers-reduced-motion: reduce) {
|
|
475
|
+
.menu-opening, .menu-closing { animation-duration: 0.01ms; filter: none; }
|
|
476
|
+
.ql-flyout-item { animation: none; opacity: 1; }
|
|
477
|
+
.ql-flyout-anchored { transition: none; }
|
|
238
478
|
}
|
|
239
479
|
`
|
|
240
480
|
}
|
|
@@ -251,16 +491,16 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
251
491
|
}) : React__default.createElement(PushpinLineIcon, {
|
|
252
492
|
className: "h-4 w-4"
|
|
253
493
|
}))), React__default.createElement("div", {
|
|
254
|
-
className: "overflow-y-auto overflow-x-hidden py-1"
|
|
494
|
+
className: "overflow-y-auto overflow-x-hidden py-1 flex-1 min-h-0"
|
|
495
|
+
}, item.children?.map((child, idx) => React__default.createElement("div", {
|
|
496
|
+
key: child.path,
|
|
497
|
+
className: "ql-flyout-item w-full min-w-max hover:text-primary",
|
|
255
498
|
style: {
|
|
256
|
-
|
|
499
|
+
['--i']: idx
|
|
257
500
|
}
|
|
258
|
-
}, item.children?.map(child => React__default.createElement("div", {
|
|
259
|
-
key: child.path,
|
|
260
|
-
className: "w-full min-w-max hover:text-primary"
|
|
261
501
|
}, renderMenuItem(child, 1, true)))));
|
|
262
502
|
};
|
|
263
|
-
const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
|
|
503
|
+
const renderMenuItem = (item, depth = 0, isHoverMenu = false, index = 0) => {
|
|
264
504
|
const hasChildren = item.children && item.children.length > 0;
|
|
265
505
|
const isOpen = openMenus.includes(item.path);
|
|
266
506
|
const isActive = isMenuItemActive(item.path);
|
|
@@ -271,11 +511,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
271
511
|
const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
|
|
272
512
|
return React__default.createElement("div", {
|
|
273
513
|
key: item.path,
|
|
274
|
-
|
|
514
|
+
ref: depth === 0 && !isHoverMenu ? el => {
|
|
515
|
+
itemRefs.current[item.path] = el;
|
|
516
|
+
} : undefined,
|
|
517
|
+
className: `w-full relative group hover:text-primary ${depth === 0 && !isHoverMenu ? 'ql-rail-item ql-rail-enter' : ''}`,
|
|
518
|
+
style: depth === 0 && !isHoverMenu ? {
|
|
519
|
+
['--ql-rail-i']: index
|
|
520
|
+
} : undefined,
|
|
275
521
|
onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
|
|
276
522
|
onMouseLeave: () => handleMenuLeave(item, isHoverMenu)
|
|
277
|
-
}, depth === 0 &&
|
|
278
|
-
className: "absolute left-0 top-1 bottom-1 w-0.5
|
|
523
|
+
}, depth === 0 && isParentWithChildren && isHovered && !isActive && React__default.createElement("span", {
|
|
524
|
+
className: "absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-full ql-hover-accent"
|
|
279
525
|
}), React__default.createElement(Link, {
|
|
280
526
|
to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
|
|
281
527
|
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 +532,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
286
532
|
}, React__default.createElement("div", {
|
|
287
533
|
className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
|
|
288
534
|
}, item.icon ? React__default.createElement("span", {
|
|
289
|
-
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ?
|
|
535
|
+
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-[20px] ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
|
|
290
536
|
style: {
|
|
291
537
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
292
538
|
}
|
|
293
539
|
}, 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 ?
|
|
540
|
+
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
541
|
style: {
|
|
296
542
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
297
543
|
}
|
|
@@ -312,7 +558,23 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
312
558
|
};
|
|
313
559
|
return React__default.createElement("div", {
|
|
314
560
|
className: "overflow-hidden"
|
|
315
|
-
}, React__default.createElement("
|
|
561
|
+
}, React__default.createElement("style", {
|
|
562
|
+
dangerouslySetInnerHTML: {
|
|
563
|
+
__html: RAIL_MOTION_CSS
|
|
564
|
+
}
|
|
565
|
+
}), React__default.createElement("nav", {
|
|
566
|
+
ref: navRef,
|
|
567
|
+
style: {
|
|
568
|
+
position: 'relative'
|
|
569
|
+
},
|
|
316
570
|
className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
|
|
317
|
-
},
|
|
571
|
+
}, React__default.createElement("span", {
|
|
572
|
+
"aria-hidden": "true",
|
|
573
|
+
className: `ql-rail-indicator ${indicatorAnimated ? 'ql-rail-indicator--animated' : ''}`,
|
|
574
|
+
style: {
|
|
575
|
+
transform: `translateY(${indicator.y + 6}px)`,
|
|
576
|
+
height: `${Math.max(indicator.h - 12, 0)}px`,
|
|
577
|
+
opacity: indicator.visible ? 1 : 0
|
|
578
|
+
}
|
|
579
|
+
}), menuData.map((item, i) => renderMenuItem(item, 0, false, i))), renderSingleFlyout());
|
|
318
580
|
};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"}
|