@admin-layout/tailwind-design-pro 12.2.4-alpha.68 → 12.2.4-alpha.69
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/Sidebar/BottomMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/BottomMenu.js +40 -6
- package/lib/components/Layout/Sidebar/BottomMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebar.js +7 -3
- 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 +215 -19
- 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/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/BottomMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"BottomMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/BottomMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA2BhD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyRhD,CAAC"}
|
|
@@ -1,4 +1,28 @@
|
|
|
1
|
-
import React__default,{useState,useRef,useEffect}from'react';import {Link}from'@remix-run/react';import {useAppSelector}from'@admin-layout/client';import {generateMenuPath}from'../util.js';import {renderDynamicIcon}from'../../../helpers/DynamicIcon.js';import {MenuDynamicDialog}from'./MenuDynamicDialog.js'
|
|
1
|
+
import React__default,{useState,useRef,useEffect}from'react';import {Link}from'@remix-run/react';import {useAppSelector}from'@admin-layout/client';import {generateMenuPath}from'../util.js';import {renderDynamicIcon}from'../../../helpers/DynamicIcon.js';import {MenuDynamicDialog}from'./MenuDynamicDialog.js';// Smooth entrance for the account/user dropdown — matches the rail's motion language.
|
|
2
|
+
// transform/opacity/filter only; honors prefers-reduced-motion.
|
|
3
|
+
const BOTTOM_MENU_MOTION_CSS = `
|
|
4
|
+
@keyframes qlBottomDropdownIn {
|
|
5
|
+
from { opacity: 0; transform: translateY(8px) scale(0.96); filter: blur(4px); }
|
|
6
|
+
to { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
|
|
7
|
+
}
|
|
8
|
+
.ql-bottom-dropdown {
|
|
9
|
+
animation: qlBottomDropdownIn 0.2s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
10
|
+
will-change: transform, opacity;
|
|
11
|
+
}
|
|
12
|
+
@keyframes qlBmItemIn {
|
|
13
|
+
from { opacity: 0; transform: translateX(-6px); }
|
|
14
|
+
to { opacity: 1; transform: translateX(0); }
|
|
15
|
+
}
|
|
16
|
+
.ql-bm-item {
|
|
17
|
+
animation: qlBmItemIn 0.26s cubic-bezier(0.22, 1, 0.36, 1) both;
|
|
18
|
+
animation-delay: calc(40ms + var(--i, 0) * 26ms);
|
|
19
|
+
}
|
|
20
|
+
@media (prefers-reduced-motion: reduce) {
|
|
21
|
+
.ql-bottom-dropdown { animation-duration: 0.01ms; filter: none; }
|
|
22
|
+
.ql-bm-item { animation: none; opacity: 1; }
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
const BottomMenu = ({
|
|
2
26
|
menuData,
|
|
3
27
|
routeParams,
|
|
4
28
|
getMenuSeparation,
|
|
@@ -186,11 +210,18 @@ import React__default,{useState,useRef,useEffect}from'react';import {Link}from'@
|
|
|
186
210
|
}))), isMobile && React__default.createElement("span", {
|
|
187
211
|
className: "text-lg font-medium"
|
|
188
212
|
}, t(nickname))), isOpen && React__default.createElement("div", {
|
|
189
|
-
className: "bg-background absolute bottom-full mb-2 w-72 rounded-themed shadow-themed-lg py-1 themed-dropdown ring-1 ring-border focus:outline-none z-40",
|
|
213
|
+
className: "ql-bottom-dropdown bg-background absolute bottom-full mb-2 w-72 rounded-themed shadow-themed-lg py-1 themed-dropdown ring-1 ring-border focus:outline-none z-40",
|
|
190
214
|
role: "menu",
|
|
191
215
|
"aria-orientation": "vertical",
|
|
192
|
-
"aria-labelledby": "user-menu"
|
|
193
|
-
|
|
216
|
+
"aria-labelledby": "user-menu",
|
|
217
|
+
style: {
|
|
218
|
+
transformOrigin: 'bottom left'
|
|
219
|
+
}
|
|
220
|
+
}, React__default.createElement("style", {
|
|
221
|
+
dangerouslySetInnerHTML: {
|
|
222
|
+
__html: BOTTOM_MENU_MOTION_CSS
|
|
223
|
+
}
|
|
224
|
+
}), MenusList?.upperMenus?.map((item, k) => React__default.createElement("div", {
|
|
194
225
|
key: k,
|
|
195
226
|
className: "px-1 py-1"
|
|
196
227
|
}, item.modal ? getMenuItemModal(item) : getMenuItemPath(item))), MenusList?.upperMenus?.length > 0 && MenusList?.middleMenus?.length > 0 && React__default.createElement("hr", {
|
|
@@ -200,9 +231,12 @@ import React__default,{useState,useRef,useEffect}from'react';import {Link}from'@
|
|
|
200
231
|
className: "px-1 py-1"
|
|
201
232
|
}, item.modal ? getMenuItemModal(item) : getMenuItemPath(item))), profile && accountMenuItems?.children && React__default.createElement("div", {
|
|
202
233
|
className: "py-2"
|
|
203
|
-
}, accountMenuItems.children.map(item => React__default.createElement(Link, {
|
|
234
|
+
}, accountMenuItems.children.map((item, idx) => React__default.createElement(Link, {
|
|
204
235
|
key: item.key,
|
|
205
|
-
className: "flex items-center justify-between px-4 py-2 text-sm text-
|
|
236
|
+
className: "ql-bm-item flex items-center justify-between px-4 py-2 text-sm text-foreground hover:bg-muted cursor-pointer transition-colors",
|
|
237
|
+
style: {
|
|
238
|
+
['--i']: idx
|
|
239
|
+
},
|
|
206
240
|
to: generateMenuPath(item.path, routeParams)
|
|
207
241
|
}, React__default.createElement("div", {
|
|
208
242
|
className: "flex items-center"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomMenu.js","sources":["../../../../src/components/Layout/Sidebar/BottomMenu.tsx"],"sourcesContent":[null],"names":["React","RouterLink"],"mappings":"
|
|
1
|
+
{"version":3,"file":"BottomMenu.js","sources":["../../../../src/components/Layout/Sidebar/BottomMenu.tsx"],"sourcesContent":[null],"names":["React","RouterLink"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerplexSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"PerplexSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAS7C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuTjD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useEffect}from'react';import {useTranslation}from'react-i18next';import {getMenuSeparation}from'@admin-layout/client';import {Divider}from'./Divider.js';import {PerplexSidebarMenu}from'./PerplexSidebarMenu.js';import'@react-icons/all-files/fa/FaMoon.js';import'@react-icons/all-files/fa/FaSun.js';import {useMediaQuery}from'../../../hooks/useMediaQuery.js';import'@common-stack/components-pro';import'reflect-metadata';import'@admin-layout/client/lib/constants/layout.js';import {SideMenuLogoSlot}from'../slot-fill/SideMenuLogo.js';import {BottomMenu}from'./BottomMenu.js';import {renderDynamicIcon}from'./DynamicIcon.js';import {icons}from'../../../icons.js';import {MainSidebarMenu}from'./MainSidebarMenu.js';const PerplexSidebar = props => {
|
|
1
|
+
import React__default,{useEffect}from'react';import {useTranslation}from'react-i18next';import {getMenuSeparation}from'@admin-layout/client';import {Divider}from'./Divider.js';import {PerplexSidebarMenu}from'./PerplexSidebarMenu.js';import'@react-icons/all-files/fa/FaMoon.js';import'@react-icons/all-files/fa/FaSun.js';import {useMediaQuery}from'../../../hooks/useMediaQuery.js';import'@common-stack/components-pro';import'reflect-metadata';import'@admin-layout/client/lib/constants/layout.js';import {SideMenuLogoSlot}from'../slot-fill/SideMenuLogo.js';import {BottomMenu}from'./BottomMenu.js';import {renderDynamicIcon}from'./DynamicIcon.js';import {icons}from'../../../icons.js';import {MainSidebarMenu}from'./MainSidebarMenu.js';import {SidebarRailFX}from'./SidebarRailFX.js';const PerplexSidebar = props => {
|
|
2
2
|
const {
|
|
3
3
|
isSideMenuOpen,
|
|
4
4
|
closeSideMenu,
|
|
@@ -54,7 +54,9 @@ import React__default,{useEffect}from'react';import {useTranslation}from'react-i
|
|
|
54
54
|
splitMenus: getUILayoutValue('splitMenus'),
|
|
55
55
|
upperMenuDividerName: getUILayoutValue('upperMenuDividerName'),
|
|
56
56
|
middleMenuDividerName: getUILayoutValue('middleMenuDividerName'),
|
|
57
|
-
lowerMenuDividerName: getUILayoutValue('lowerMenuDividerName')
|
|
57
|
+
lowerMenuDividerName: getUILayoutValue('lowerMenuDividerName'),
|
|
58
|
+
// Opt-in ambient rail backdrop: 'off' (default) | 'aurora' | 'webgpu'.
|
|
59
|
+
railFx: getUILayoutValue('railFx') || 'off'
|
|
58
60
|
};
|
|
59
61
|
// Close sidebar when clicking outside on mobile
|
|
60
62
|
useEffect(() => {
|
|
@@ -201,7 +203,9 @@ import React__default,{useEffect}from'react';import {useTranslation}from'react-i
|
|
|
201
203
|
return React__default.createElement("div", null, !isMobile && React__default.createElement("aside", {
|
|
202
204
|
style: SidebarStyles,
|
|
203
205
|
className: `${deviceLayout?.fixedSidebar ? 'fixed' : 'relative'} border-r border-border z-20 bg-card text-card-foreground md:block flex-shrink-0 transition-all duration-300 ease-in-out w-[92px] ${showHeader && deviceLayout?.fixedHeader ? deviceLayout?.fixedSidebar ? 'h-[calc(100vh-5rem)] top-20' : 'h-[calc(100vh-5rem)]' : 'h-screen'}`
|
|
204
|
-
},
|
|
206
|
+
}, React__default.createElement(SidebarRailFX, {
|
|
207
|
+
mode: deviceLayout?.railFx
|
|
208
|
+
}), menuHeaderRender && isSideMenuLayout && React__default.createElement("div", {
|
|
205
209
|
className: "border-b border-border py-1 flex items-center justify-center"
|
|
206
210
|
}, React__default.createElement(SideMenuLogoSlot, {
|
|
207
211
|
settings: settings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerplexSidebar.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PerplexSidebar.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerplexSidebarMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"PerplexSidebarMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA4DjD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAumB/D,CAAC"}
|
|
@@ -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;
|
|
@@ -213,13 +367,20 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
213
367
|
const sidebarWidth = 92; // Updated fixed sidebar rail width
|
|
214
368
|
const item = activeMenuItem; // Use the currently active menu item
|
|
215
369
|
return React__default.createElement("div", {
|
|
216
|
-
className: `fixed
|
|
370
|
+
className: `fixed z-[999] overflow-hidden border-y border-r border-border menu-${menuTransition}`,
|
|
217
371
|
style: {
|
|
218
372
|
left: `${sidebarWidth}px`,
|
|
219
373
|
top: !showHeader ? '0px' : '5rem',
|
|
220
374
|
height: !showHeader ? '100vh' : 'calc(100vh - 5rem)',
|
|
221
375
|
width: '228px',
|
|
222
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)',
|
|
223
384
|
pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
|
|
224
385
|
...SidebarStyles
|
|
225
386
|
},
|
|
@@ -261,19 +422,32 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
261
422
|
}, React__default.createElement("style", {
|
|
262
423
|
dangerouslySetInnerHTML: {
|
|
263
424
|
__html: `
|
|
264
|
-
@keyframes
|
|
265
|
-
from { opacity: 0; transform: translateX(-
|
|
266
|
-
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); }
|
|
267
428
|
}
|
|
268
|
-
@keyframes
|
|
269
|
-
from { opacity: 1; transform: translateX(0); }
|
|
270
|
-
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); }
|
|
271
432
|
}
|
|
272
433
|
.menu-opening {
|
|
273
|
-
animation:
|
|
434
|
+
animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
274
435
|
}
|
|
275
436
|
.menu-closing {
|
|
276
|
-
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; }
|
|
277
451
|
}
|
|
278
452
|
`
|
|
279
453
|
}
|
|
@@ -294,9 +468,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
294
468
|
style: {
|
|
295
469
|
height: !showHeader ? 'calc(100vh - 44px)' : 'calc(100vh - 5rem - 44px)'
|
|
296
470
|
}
|
|
297
|
-
}, item.children?.map(child => React__default.createElement("div", {
|
|
471
|
+
}, item.children?.map((child, idx) => React__default.createElement("div", {
|
|
298
472
|
key: child.path,
|
|
299
|
-
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
|
+
}
|
|
300
477
|
}, renderMenuItem(child, 1, true)))));
|
|
301
478
|
};
|
|
302
479
|
const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
|
|
@@ -310,11 +487,14 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
310
487
|
const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
|
|
311
488
|
return React__default.createElement("div", {
|
|
312
489
|
key: item.path,
|
|
313
|
-
|
|
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' : ''}`,
|
|
314
494
|
onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
|
|
315
495
|
onMouseLeave: () => handleMenuLeave(item, isHoverMenu)
|
|
316
|
-
}, depth === 0 &&
|
|
317
|
-
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"
|
|
318
498
|
}), React__default.createElement(Link, {
|
|
319
499
|
to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
|
|
320
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}`,
|
|
@@ -325,12 +505,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
325
505
|
}, React__default.createElement("div", {
|
|
326
506
|
className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
|
|
327
507
|
}, item.icon ? React__default.createElement("span", {
|
|
328
|
-
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' : ''}` : ''}`,
|
|
329
509
|
style: {
|
|
330
510
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
331
511
|
}
|
|
332
512
|
}, item.icon) : React__default.createElement("span", {
|
|
333
|
-
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' : ''}` : ''}`,
|
|
334
514
|
style: {
|
|
335
515
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
336
516
|
}
|
|
@@ -351,7 +531,23 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
351
531
|
};
|
|
352
532
|
return React__default.createElement("div", {
|
|
353
533
|
className: "overflow-hidden"
|
|
354
|
-
}, 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
|
+
},
|
|
355
543
|
className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
|
|
356
|
-
},
|
|
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());
|
|
357
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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import React__default,{useRef,useEffect}from'react';const prefersReducedMotion = () => typeof window !== 'undefined' && typeof window.matchMedia === 'function' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
2
|
+
const WGSL = /* wgsl */`
|
|
3
|
+
struct Uniforms { time: f32, w: f32, h: f32, reduced: f32 };
|
|
4
|
+
@group(0) @binding(0) var<uniform> u: Uniforms;
|
|
5
|
+
@group(0) @binding(1) var<uniform> col: vec4<f32>;
|
|
6
|
+
|
|
7
|
+
@vertex
|
|
8
|
+
fn vs(@builtin(vertex_index) i: u32) -> @builtin(position) vec4<f32> {
|
|
9
|
+
// Full-screen triangle
|
|
10
|
+
var p = array<vec2<f32>, 3>(vec2(-1.0, -1.0), vec2(3.0, -1.0), vec2(-1.0, 3.0));
|
|
11
|
+
return vec4<f32>(p[i], 0.0, 1.0);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
fn hash(p: vec2<f32>) -> f32 {
|
|
15
|
+
return fract(sin(dot(p, vec2<f32>(127.1, 311.7))) * 43758.5453);
|
|
16
|
+
}
|
|
17
|
+
fn noise(p: vec2<f32>) -> f32 {
|
|
18
|
+
let i = floor(p); let f = fract(p);
|
|
19
|
+
let u = f * f * (3.0 - 2.0 * f);
|
|
20
|
+
return mix(mix(hash(i + vec2(0.0,0.0)), hash(i + vec2(1.0,0.0)), u.x),
|
|
21
|
+
mix(hash(i + vec2(0.0,1.0)), hash(i + vec2(1.0,1.0)), u.x), u.y);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@fragment
|
|
25
|
+
fn fs(@builtin(position) frag: vec4<f32>) -> @location(0) vec4<f32> {
|
|
26
|
+
let uv = vec2<f32>(frag.x / u.w, frag.y / u.h);
|
|
27
|
+
let t = select(u.time, 0.0, u.reduced > 0.5);
|
|
28
|
+
// Soft vertical aurora bands that drift over time.
|
|
29
|
+
var n = noise(vec2<f32>(uv.x * 2.0, uv.y * 3.0 - t * 0.06));
|
|
30
|
+
n += 0.5 * noise(vec2<f32>(uv.x * 4.0 + t * 0.04, uv.y * 6.0));
|
|
31
|
+
let band = smoothstep(0.35, 0.95, n);
|
|
32
|
+
// Concentrate the glow toward the left edge so icons stay readable.
|
|
33
|
+
let edge = smoothstep(1.0, 0.1, uv.x);
|
|
34
|
+
let intensity = band * edge * 0.5;
|
|
35
|
+
return vec4<f32>(col.rgb * intensity, intensity);
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
const SidebarRailFX = ({
|
|
39
|
+
mode = 'off',
|
|
40
|
+
rgb = [0.36, 0.4, 0.95]
|
|
41
|
+
}) => {
|
|
42
|
+
const canvasRef = useRef(null);
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (mode !== 'webgpu') return;
|
|
45
|
+
if (typeof window === 'undefined') return;
|
|
46
|
+
const canvas = canvasRef.current;
|
|
47
|
+
const gpu = navigator?.gpu;
|
|
48
|
+
if (!canvas || !gpu) return; // CSS fallback (rendered below) handles the rest.
|
|
49
|
+
let raf = 0;
|
|
50
|
+
let disposed = false;
|
|
51
|
+
let device;
|
|
52
|
+
const reduced = prefersReducedMotion();
|
|
53
|
+
const start = async () => {
|
|
54
|
+
const adapter = await gpu.requestAdapter();
|
|
55
|
+
if (!adapter || disposed) return;
|
|
56
|
+
device = await adapter.requestDevice();
|
|
57
|
+
if (disposed) return;
|
|
58
|
+
const ctx = canvas.getContext('webgpu');
|
|
59
|
+
const format = gpu.getPreferredCanvasFormat();
|
|
60
|
+
ctx.configure({
|
|
61
|
+
device,
|
|
62
|
+
format,
|
|
63
|
+
alphaMode: 'premultiplied'
|
|
64
|
+
});
|
|
65
|
+
const module = device.createShaderModule({
|
|
66
|
+
code: WGSL
|
|
67
|
+
});
|
|
68
|
+
const pipeline = device.createRenderPipeline({
|
|
69
|
+
layout: 'auto',
|
|
70
|
+
vertex: {
|
|
71
|
+
module,
|
|
72
|
+
entryPoint: 'vs'
|
|
73
|
+
},
|
|
74
|
+
fragment: {
|
|
75
|
+
module,
|
|
76
|
+
entryPoint: 'fs',
|
|
77
|
+
targets: [{
|
|
78
|
+
format,
|
|
79
|
+
blend: {
|
|
80
|
+
color: {
|
|
81
|
+
srcFactor: 'one',
|
|
82
|
+
dstFactor: 'one-minus-src-alpha'
|
|
83
|
+
},
|
|
84
|
+
alpha: {
|
|
85
|
+
srcFactor: 'one',
|
|
86
|
+
dstFactor: 'one-minus-src-alpha'
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}]
|
|
90
|
+
},
|
|
91
|
+
primitive: {
|
|
92
|
+
topology: 'triangle-list'
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
const uBuf = device.createBuffer({
|
|
96
|
+
size: 16,
|
|
97
|
+
usage: 0x40 | 0x8
|
|
98
|
+
}); // UNIFORM | COPY_DST
|
|
99
|
+
const cBuf = device.createBuffer({
|
|
100
|
+
size: 16,
|
|
101
|
+
usage: 0x40 | 0x8
|
|
102
|
+
});
|
|
103
|
+
device.queue.writeBuffer(cBuf, 0, new Float32Array([rgb[0], rgb[1], rgb[2], 1]));
|
|
104
|
+
const bind = device.createBindGroup({
|
|
105
|
+
layout: pipeline.getBindGroupLayout(0),
|
|
106
|
+
entries: [{
|
|
107
|
+
binding: 0,
|
|
108
|
+
resource: {
|
|
109
|
+
buffer: uBuf
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
binding: 1,
|
|
113
|
+
resource: {
|
|
114
|
+
buffer: cBuf
|
|
115
|
+
}
|
|
116
|
+
}]
|
|
117
|
+
});
|
|
118
|
+
const dpr = Math.min(window.devicePixelRatio || 1, 2);
|
|
119
|
+
const resize = () => {
|
|
120
|
+
const r = canvas.getBoundingClientRect();
|
|
121
|
+
canvas.width = Math.max(1, Math.floor(r.width * dpr));
|
|
122
|
+
canvas.height = Math.max(1, Math.floor(r.height * dpr));
|
|
123
|
+
};
|
|
124
|
+
resize();
|
|
125
|
+
const ro = new ResizeObserver(resize);
|
|
126
|
+
ro.observe(canvas);
|
|
127
|
+
const t0 = performance.now();
|
|
128
|
+
let last = 0;
|
|
129
|
+
const frame = now => {
|
|
130
|
+
if (disposed) return;
|
|
131
|
+
// Throttle to ~30fps — this is ambient, not a game.
|
|
132
|
+
if (now - last >= 33) {
|
|
133
|
+
last = now;
|
|
134
|
+
const t = (now - t0) / 1000;
|
|
135
|
+
device.queue.writeBuffer(uBuf, 0, new Float32Array([t, canvas.width, canvas.height, reduced ? 1 : 0]));
|
|
136
|
+
const enc = device.createCommandEncoder();
|
|
137
|
+
const pass = enc.beginRenderPass({
|
|
138
|
+
colorAttachments: [{
|
|
139
|
+
view: ctx.getCurrentTexture().createView(),
|
|
140
|
+
clearValue: {
|
|
141
|
+
r: 0,
|
|
142
|
+
g: 0,
|
|
143
|
+
b: 0,
|
|
144
|
+
a: 0
|
|
145
|
+
},
|
|
146
|
+
loadOp: 'clear',
|
|
147
|
+
storeOp: 'store'
|
|
148
|
+
}]
|
|
149
|
+
});
|
|
150
|
+
pass.setPipeline(pipeline);
|
|
151
|
+
pass.setBindGroup(0, bind);
|
|
152
|
+
pass.draw(3);
|
|
153
|
+
pass.end();
|
|
154
|
+
device.queue.submit([enc.finish()]);
|
|
155
|
+
}
|
|
156
|
+
if (reduced) {
|
|
157
|
+
ro.disconnect();
|
|
158
|
+
return; // one static frame is enough under reduced motion
|
|
159
|
+
}
|
|
160
|
+
raf = requestAnimationFrame(frame);
|
|
161
|
+
};
|
|
162
|
+
raf = requestAnimationFrame(frame);
|
|
163
|
+
cleanupRef.current = () => {
|
|
164
|
+
ro.disconnect();
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
const cleanupRef = {
|
|
168
|
+
current: null
|
|
169
|
+
};
|
|
170
|
+
start().catch(() => {
|
|
171
|
+
/* WebGPU init failed — CSS fallback remains visible. */
|
|
172
|
+
});
|
|
173
|
+
return () => {
|
|
174
|
+
disposed = true;
|
|
175
|
+
cancelAnimationFrame(raf);
|
|
176
|
+
cleanupRef.current?.();
|
|
177
|
+
try {
|
|
178
|
+
device?.destroy?.();
|
|
179
|
+
} catch {
|
|
180
|
+
/* noop */
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}, [mode, rgb]);
|
|
184
|
+
if (mode === 'off') return null;
|
|
185
|
+
const colorCss = `rgb(${Math.round(rgb[0] * 255)} ${Math.round(rgb[1] * 255)} ${Math.round(rgb[2] * 255)})`;
|
|
186
|
+
return React__default.createElement("div", {
|
|
187
|
+
"aria-hidden": "true",
|
|
188
|
+
style: {
|
|
189
|
+
position: 'absolute',
|
|
190
|
+
inset: 0,
|
|
191
|
+
zIndex: -1,
|
|
192
|
+
overflow: 'hidden',
|
|
193
|
+
pointerEvents: 'none'
|
|
194
|
+
}
|
|
195
|
+
}, React__default.createElement("style", {
|
|
196
|
+
dangerouslySetInnerHTML: {
|
|
197
|
+
__html: `
|
|
198
|
+
@keyframes qlRailAurora {
|
|
199
|
+
0% { transform: translateY(-8%) scale(1.1); opacity: 0.55; }
|
|
200
|
+
50% { transform: translateY(8%) scale(1.25); opacity: 0.8; }
|
|
201
|
+
100% { transform: translateY(-8%) scale(1.1); opacity: 0.55; }
|
|
202
|
+
}
|
|
203
|
+
.ql-rail-aurora {
|
|
204
|
+
position: absolute; inset: -20% -10% -20% -40%;
|
|
205
|
+
background: radial-gradient(60% 45% at 25% 30%, ${colorCss} 0%, transparent 70%),
|
|
206
|
+
radial-gradient(50% 40% at 15% 80%, ${colorCss} 0%, transparent 72%);
|
|
207
|
+
filter: blur(26px);
|
|
208
|
+
opacity: 0.6;
|
|
209
|
+
animation: qlRailAurora 9s ease-in-out infinite;
|
|
210
|
+
-webkit-mask-image: linear-gradient(90deg, #000 0%, transparent 95%);
|
|
211
|
+
mask-image: linear-gradient(90deg, #000 0%, transparent 95%);
|
|
212
|
+
}
|
|
213
|
+
@media (prefers-reduced-motion: reduce) {
|
|
214
|
+
.ql-rail-aurora { animation: none; }
|
|
215
|
+
}
|
|
216
|
+
`
|
|
217
|
+
}
|
|
218
|
+
}), React__default.createElement("div", {
|
|
219
|
+
className: "ql-rail-aurora"
|
|
220
|
+
}), mode === 'webgpu' && React__default.createElement("canvas", {
|
|
221
|
+
ref: canvasRef,
|
|
222
|
+
style: {
|
|
223
|
+
position: 'absolute',
|
|
224
|
+
inset: 0,
|
|
225
|
+
width: '100%',
|
|
226
|
+
height: '100%'
|
|
227
|
+
}
|
|
228
|
+
}));
|
|
229
|
+
};export{SidebarRailFX};//# sourceMappingURL=SidebarRailFX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarRailFX.js","sources":["../../../../src/components/Layout/Sidebar/SidebarRailFX.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/tailwind-design-pro",
|
|
3
|
-
"version": "12.2.4-alpha.
|
|
3
|
+
"version": "12.2.4-alpha.69",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "d2a1d2cf80611cb850c2c6849ff714a7ff2dbea2",
|
|
56
56
|
"typescript": {
|
|
57
57
|
"definition": "lib/index.d.ts"
|
|
58
58
|
}
|