@admin-layout/tailwind-design-pro 12.2.4-alpha.1 → 12.2.4-alpha.101
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/README.md +80 -0
- package/lib/components/LanguageMenu/LanguageMenu.d.ts.map +1 -1
- package/lib/components/LanguageMenu/LanguageMenu.js +6 -2
- package/lib/components/LanguageMenu/LanguageMenu.js.map +1 -1
- package/lib/components/Layout/BasicLayout/index.d.ts +19 -0
- package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
- package/lib/components/Layout/BasicLayout/index.js +63 -14
- package/lib/components/Layout/BasicLayout/index.js.map +1 -1
- package/lib/components/Layout/BasicLayout/utils.js +1 -1
- package/lib/components/Layout/BasicLayout/utils.js.map +1 -1
- package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js +1 -1
- package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.js +12 -4
- package/lib/components/Layout/GlobalHeader/Header.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.js +2 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.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 +36 -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.d.ts +43 -0
- package/lib/components/Layout/GlobalHeader/SearchBar.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/SearchBar.js +380 -43
- package/lib/components/Layout/GlobalHeader/SearchBar.js.map +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 +20 -8
- package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.js +255 -88
- 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 +55 -82
- 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 +31 -26
- 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 +228 -51
- 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 +45 -36
- package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts +25 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js +287 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +322 -45
- 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/SidebarControlsContext.d.ts +17 -0
- package/lib/components/Layout/SidebarControlsContext.d.ts.map +1 -0
- package/lib/components/Layout/SidebarControlsContext.js +21 -0
- package/lib/components/Layout/SidebarControlsContext.js.map +1 -0
- package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/TailwindLayout.js +22 -3
- package/lib/components/Layout/TailwindLayout.js.map +1 -1
- package/lib/components/Layout/defaultPermissions.d.ts +134 -0
- package/lib/components/Layout/defaultPermissions.d.ts.map +1 -0
- package/lib/components/Layout/defaultPermissions.js +134 -0
- package/lib/components/Layout/defaultPermissions.js.map +1 -0
- 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/SettingDrawer.d.ts.map +1 -1
- package/lib/components/SettingDrawer/SettingDrawer.js +21 -18
- package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js +8 -14
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js.map +1 -1
- package/lib/components/SettingDrawer/components/CheckBoxTheme.js +2 -2
- package/lib/components/SettingDrawer/components/CheckBoxTheme.js.map +1 -1
- package/lib/components/SettingDrawer/components/DeviceTabs.js +2 -2
- package/lib/components/SettingDrawer/components/DeviceTabs.js.map +1 -1
- package/lib/components/SettingDrawer/components/InvitationSettings.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/InvitationSettings.js +7 -3
- package/lib/components/SettingDrawer/components/InvitationSettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/LayoutChange.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/LayoutChange.js +8 -11
- package/lib/components/SettingDrawer/components/LayoutChange.js.map +1 -1
- package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js +5 -5
- package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/NavigationsModes.js +3 -3
- package/lib/components/SettingDrawer/components/NavigationsModes.js.map +1 -1
- package/lib/components/SettingDrawer/components/RegionalSettings.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/RegionalSettings.js +40 -97
- package/lib/components/SettingDrawer/components/RegionalSettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsActions.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsActions.js +27 -25
- package/lib/components/SettingDrawer/components/SettingsActions.js.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js +4 -3
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js.map +1 -1
- package/lib/components/SettingDrawer/components/Switch.js +2 -2
- package/lib/components/SettingDrawer/components/ThemeColor.js +1 -1
- package/lib/components/SettingDrawer/components/ThemeColor.js.map +1 -1
- package/lib/components/SettingDrawer/components/ThemeSelector.js +1 -1
- package/lib/components/SettingDrawer/components/WebFontsSelector.js +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +13 -9
- 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/SettingDrawer/utils/helper.js +1 -1
- package/lib/components/SettingDrawer/utils/transformers.d.ts +16 -0
- package/lib/components/SettingDrawer/utils/transformers.d.ts.map +1 -1
- package/lib/components/SettingDrawer/utils/transformers.js +39 -2
- package/lib/components/SettingDrawer/utils/transformers.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 +29 -0
- package/lib/components/typings.d.ts.map +1 -1
- package/lib/compute.js +2 -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/hooks/index.d.ts +1 -0
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/index.d.ts +3 -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 +6 -1
- package/lib/styles/index.css +321 -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 +9 -7
|
@@ -1,4 +1,73 @@
|
|
|
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';import {usePerplexSidebarFlyoutContext}from'./PerplexSidebarFlyoutContext.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.2);
|
|
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.06);
|
|
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.06);
|
|
47
|
+
}
|
|
48
|
+
.ql-rail-item:hover .ql-rail-icon-active {
|
|
49
|
+
transform: translateY(-1px) scale(1.08);
|
|
50
|
+
}
|
|
51
|
+
.ql-hover-accent {
|
|
52
|
+
background: hsl(var(--primary) / 0.35);
|
|
53
|
+
animation: qlHoverAccentIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
|
|
54
|
+
}
|
|
55
|
+
@keyframes qlHoverAccentIn {
|
|
56
|
+
from { opacity: 0; transform: scaleY(0.4); }
|
|
57
|
+
to { opacity: 1; transform: scaleY(1); }
|
|
58
|
+
}
|
|
59
|
+
@media (prefers-reduced-motion: reduce) {
|
|
60
|
+
.ql-rail-indicator--animated { transition: opacity 0.12s ease-out; }
|
|
61
|
+
.ql-rail-icon,
|
|
62
|
+
.ql-rail-item:hover .ql-rail-icon,
|
|
63
|
+
.ql-rail-item:active .ql-rail-icon,
|
|
64
|
+
.ql-rail-item:hover .ql-rail-icon-active { transition: none; transform: none; }
|
|
65
|
+
.ql-rail-icon-active { transform: none; }
|
|
66
|
+
.ql-hover-accent { animation: none; }
|
|
67
|
+
.ql-rail-enter { animation: none; }
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
const PerplexSidebarMenu = ({
|
|
2
71
|
menuData,
|
|
3
72
|
routeParams,
|
|
4
73
|
settings,
|
|
@@ -6,10 +75,13 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
6
75
|
siderPinned,
|
|
7
76
|
setSiderPinned,
|
|
8
77
|
actor,
|
|
9
|
-
deviceSettings = {}
|
|
78
|
+
deviceSettings = {},
|
|
79
|
+
// Provide empty object as default
|
|
80
|
+
sectionBreakIndex
|
|
10
81
|
}) => {
|
|
82
|
+
const sharedFlyout = usePerplexSidebarFlyoutContext();
|
|
11
83
|
const [openMenus, setOpenMenus] = useState([]);
|
|
12
|
-
const [
|
|
84
|
+
const [localHoveredMenu, setLocalHoveredMenu] = useState(null);
|
|
13
85
|
const [activeMenuItem, setActiveMenuItem] = useState(null);
|
|
14
86
|
const [popupPosition, setPopupPosition] = useState({
|
|
15
87
|
top: 0,
|
|
@@ -20,6 +92,19 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
20
92
|
const hoverCloseTimeout = React__default.useRef(null);
|
|
21
93
|
const hoverOpenTimeout = React__default.useRef(null);
|
|
22
94
|
const currentHoveredMenu = useRef(null);
|
|
95
|
+
const hoveredMenu = sharedFlyout?.hoveredMenu ?? localHoveredMenu;
|
|
96
|
+
const setHoveredMenu = sharedFlyout ? () => undefined : setLocalHoveredMenu;
|
|
97
|
+
// Refs + state for the shared "magic" active indicator that springs between items.
|
|
98
|
+
const navRef = useRef(null);
|
|
99
|
+
const itemRefs = useRef({});
|
|
100
|
+
const [indicator, setIndicator] = useState({
|
|
101
|
+
y: 0,
|
|
102
|
+
h: 0,
|
|
103
|
+
visible: false
|
|
104
|
+
});
|
|
105
|
+
// Suppresses the very first slide (so the bar fades in place instead of flying from y=0).
|
|
106
|
+
const indicatorPrimed = useRef(false);
|
|
107
|
+
const [indicatorAnimated, setIndicatorAnimated] = useState(false);
|
|
23
108
|
const {
|
|
24
109
|
PushpinLineIcon,
|
|
25
110
|
PushpinFillIcon
|
|
@@ -29,6 +114,31 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
29
114
|
const pinnedPath = machineState?.context?.sidebar?.pinnedPath || null;
|
|
30
115
|
// Extract showHeader with fallback to true if not defined
|
|
31
116
|
const showHeader = deviceSettings && deviceSettings.header && deviceSettings.header.showHeader !== undefined ? deviceSettings.header.showHeader : true;
|
|
117
|
+
// Tear down any transient hover/flyout state whenever the route changes.
|
|
118
|
+
// Navigating from inside a flyout (or while hovering a parent) never fires the
|
|
119
|
+
// mouse-leave handlers, so hoveredMenu/flyoutVisible/activeMenuItem would otherwise
|
|
120
|
+
// stay stuck — leaving the parent item highlighted and the flyout panel covering
|
|
121
|
+
// the content. Pinned flyouts are intentionally kept open.
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (hoverCloseTimeout.current) {
|
|
124
|
+
window.clearTimeout(hoverCloseTimeout.current);
|
|
125
|
+
hoverCloseTimeout.current = null;
|
|
126
|
+
}
|
|
127
|
+
if (hoverOpenTimeout.current) {
|
|
128
|
+
window.clearTimeout(hoverOpenTimeout.current);
|
|
129
|
+
hoverOpenTimeout.current = null;
|
|
130
|
+
}
|
|
131
|
+
if (pinnedPath) {
|
|
132
|
+
// Keep the pinned flyout open and highlighted; just drop any other hover.
|
|
133
|
+
currentHoveredMenu.current = pinnedPath;
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
currentHoveredMenu.current = null;
|
|
137
|
+
setFlyoutVisible(false);
|
|
138
|
+
setHoveredMenu(null);
|
|
139
|
+
setActiveMenuItem(null);
|
|
140
|
+
setMenuTransition('opening');
|
|
141
|
+
}, [location.pathname, pinnedPath]);
|
|
32
142
|
const isMenuItemActive = itemPath => {
|
|
33
143
|
const currentPath = location.pathname;
|
|
34
144
|
const menuPath = generateMenuPath(itemPath, routeParams);
|
|
@@ -42,6 +152,67 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
42
152
|
}
|
|
43
153
|
return false;
|
|
44
154
|
};
|
|
155
|
+
// Measure the active top-level item and move the shared indicator to it.
|
|
156
|
+
// Returns true once it has settled (placed on an item, or no active item exists).
|
|
157
|
+
const measureIndicator = () => {
|
|
158
|
+
if (typeof window === 'undefined') return false;
|
|
159
|
+
const nav = navRef.current;
|
|
160
|
+
if (!nav) return false;
|
|
161
|
+
const activeItem = menuData.find(item => isMenuItemActive(item.path));
|
|
162
|
+
const el = activeItem ? itemRefs.current[activeItem.path] : null;
|
|
163
|
+
if (el) {
|
|
164
|
+
setIndicator({
|
|
165
|
+
y: el.offsetTop,
|
|
166
|
+
h: el.offsetHeight,
|
|
167
|
+
visible: true
|
|
168
|
+
});
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
setIndicator(prev => ({
|
|
172
|
+
...prev,
|
|
173
|
+
visible: false
|
|
174
|
+
}));
|
|
175
|
+
// "Settled" only if there is genuinely no active item to point at.
|
|
176
|
+
return !activeItem;
|
|
177
|
+
};
|
|
178
|
+
// Keep a ref to the latest closure so observers always see current data.
|
|
179
|
+
const measureRef = useRef(measureIndicator);
|
|
180
|
+
measureRef.current = measureIndicator;
|
|
181
|
+
// Re-measure whenever the rail actually lays out or resizes. ResizeObserver
|
|
182
|
+
// fires once on observe (after layout) — the most reliable signal that item
|
|
183
|
+
// geometry is ready — and again on async menu load, hydration, or viewport change.
|
|
184
|
+
useEffect(() => {
|
|
185
|
+
if (typeof window === 'undefined') return;
|
|
186
|
+
const nav = navRef.current;
|
|
187
|
+
if (!nav) return;
|
|
188
|
+
const run = () => measureRef.current();
|
|
189
|
+
const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(run) : null;
|
|
190
|
+
ro?.observe(nav);
|
|
191
|
+
window.addEventListener('resize', run);
|
|
192
|
+
return () => {
|
|
193
|
+
ro?.disconnect();
|
|
194
|
+
window.removeEventListener('resize', run);
|
|
195
|
+
};
|
|
196
|
+
}, []);
|
|
197
|
+
// On navigation / data change: measure now (+ a couple of frame retries for the
|
|
198
|
+
// hydration race) and enable the sliding transition after the first placement.
|
|
199
|
+
useEffect(() => {
|
|
200
|
+
if (typeof window === 'undefined') return;
|
|
201
|
+
const rafs = [];
|
|
202
|
+
if (!measureRef.current()) {
|
|
203
|
+
rafs.push(requestAnimationFrame(() => {
|
|
204
|
+
if (!measureRef.current()) rafs.push(requestAnimationFrame(() => measureRef.current()));
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
207
|
+
if (!indicatorPrimed.current) {
|
|
208
|
+
indicatorPrimed.current = true;
|
|
209
|
+
rafs.push(requestAnimationFrame(() => setIndicatorAnimated(true)));
|
|
210
|
+
} else {
|
|
211
|
+
setIndicatorAnimated(true);
|
|
212
|
+
}
|
|
213
|
+
return () => rafs.forEach(r => cancelAnimationFrame(r));
|
|
214
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
215
|
+
}, [location.pathname, menuData, routeParams, collapsed]);
|
|
45
216
|
const toggleMenu = (path, depth, e) => {
|
|
46
217
|
e.preventDefault();
|
|
47
218
|
if (collapsed) return;
|
|
@@ -67,6 +238,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
67
238
|
return parts[0] || name;
|
|
68
239
|
};
|
|
69
240
|
const handleMenuHover = (e, item, isHoverMenu, depth = 0) => {
|
|
241
|
+
if (sharedFlyout) {
|
|
242
|
+
sharedFlyout.handleMenuHover(e, item, isHoverMenu, depth);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
70
245
|
// Only set hover state if the menu has children
|
|
71
246
|
const canShowHoverPopup = collapsed && !isHoverMenu || !collapsed && depth === 0 && !isHoverMenu;
|
|
72
247
|
if (item.children && item.children.length > 0 && canShowHoverPopup) {
|
|
@@ -90,6 +265,7 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
90
265
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
91
266
|
hoverOpenTimeout.current = null;
|
|
92
267
|
}
|
|
268
|
+
// Always update the current hovered menu ref
|
|
93
269
|
currentHoveredMenu.current = item.path;
|
|
94
270
|
// Update which item is being hovered and its children data
|
|
95
271
|
if (hoveredMenu !== item.path) {
|
|
@@ -97,6 +273,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
97
273
|
setActiveMenuItem(item);
|
|
98
274
|
// If we're already showing a menu, just update content without closing/reopening
|
|
99
275
|
if (flyoutVisible) {
|
|
276
|
+
// If menu is closing, cancel the close and reopen
|
|
277
|
+
if (menuTransition === 'closing') {
|
|
278
|
+
setMenuTransition('opening');
|
|
279
|
+
}
|
|
100
280
|
// Just update the hovered menu path without animation
|
|
101
281
|
setHoveredMenu(item.path);
|
|
102
282
|
} else {
|
|
@@ -105,6 +285,13 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
105
285
|
setFlyoutVisible(true);
|
|
106
286
|
setHoveredMenu(item.path);
|
|
107
287
|
}
|
|
288
|
+
} else {
|
|
289
|
+
// Same menu item, but ensure state is consistent
|
|
290
|
+
// This handles the case where we re-enter after leaving
|
|
291
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
292
|
+
setMenuTransition('opening');
|
|
293
|
+
setFlyoutVisible(true);
|
|
294
|
+
}
|
|
108
295
|
}
|
|
109
296
|
// If a different top-level item is hovered while pinned, update pinnedPath
|
|
110
297
|
if (depth === 0 && pinnedPath) {
|
|
@@ -118,6 +305,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
118
305
|
}
|
|
119
306
|
};
|
|
120
307
|
const handleMenuLeave = (item, isHoverMenu) => {
|
|
308
|
+
if (sharedFlyout) {
|
|
309
|
+
sharedFlyout.handleMenuLeave(item, isHoverMenu);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
121
312
|
if (!isHoverMenu) {
|
|
122
313
|
// Clear any existing timeouts
|
|
123
314
|
if (hoverCloseTimeout.current) {
|
|
@@ -127,20 +318,33 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
127
318
|
window.clearTimeout(hoverOpenTimeout.current);
|
|
128
319
|
hoverOpenTimeout.current = null;
|
|
129
320
|
}
|
|
130
|
-
currentHoveredMenu
|
|
131
|
-
//
|
|
321
|
+
// Don't immediately clear currentHoveredMenu - wait to see if user moves to flyout
|
|
322
|
+
// The flyout's onMouseEnter will restore it if user moves there
|
|
323
|
+
// If user moves to content, the timeout will clear it
|
|
324
|
+
// Add a delay before closing the menu to allow movement to flyout
|
|
132
325
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
setTimeout(() => {
|
|
138
|
-
if (!currentHoveredMenu.current) {
|
|
139
|
-
setFlyoutVisible(false);
|
|
140
|
-
setHoveredMenu(null);
|
|
141
|
-
}
|
|
142
|
-
}, 150);
|
|
326
|
+
// Check if we're still hovering the flyout (activeMenuItem matches)
|
|
327
|
+
if (activeMenuItem?.path === item.path) {
|
|
328
|
+
// User is hovering the flyout, don't close
|
|
329
|
+
return;
|
|
143
330
|
}
|
|
331
|
+
// Check if we re-entered the menu item
|
|
332
|
+
if (currentHoveredMenu.current === item.path) {
|
|
333
|
+
// User re-entered menu item, don't close
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
// Safe to close now
|
|
337
|
+
currentHoveredMenu.current = null;
|
|
338
|
+
setMenuTransition('closing');
|
|
339
|
+
// Additional delay to complete closing animation
|
|
340
|
+
setTimeout(() => {
|
|
341
|
+
// Double-check before closing
|
|
342
|
+
if (activeMenuItem?.path !== item.path && currentHoveredMenu.current !== item.path) {
|
|
343
|
+
setFlyoutVisible(false);
|
|
344
|
+
setHoveredMenu(null);
|
|
345
|
+
setActiveMenuItem(null);
|
|
346
|
+
}
|
|
347
|
+
}, 150);
|
|
144
348
|
}, 300); // Extended delay to give more time to move between items
|
|
145
349
|
}
|
|
146
350
|
};
|
|
@@ -185,56 +389,103 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
185
389
|
// Single persistent flyout component for all menus
|
|
186
390
|
const renderSingleFlyout = () => {
|
|
187
391
|
if (!flyoutVisible || !activeMenuItem) return null;
|
|
188
|
-
const sidebarWidth =
|
|
392
|
+
const sidebarWidth = 83; // Updated fixed sidebar rail width (10% narrower)
|
|
189
393
|
const item = activeMenuItem; // Use the currently active menu item
|
|
394
|
+
// Anchor the flyout to the vertical position of the hovered rail item (measured in
|
|
395
|
+
// handleMenuHover), so moving Notion -> Marketplace slides the panel to the new
|
|
396
|
+
// item instead of leaving it as a static full-height column. Clamp to keep it on
|
|
397
|
+
// screen. The `top`/`max-height` change is CSS-transitioned (see .ql-flyout-anchored),
|
|
398
|
+
// so the panel glides between items while its content cross-fades.
|
|
399
|
+
const minTop = !showHeader ? 8 : 16;
|
|
400
|
+
const anchorTop = Math.max(minTop, Math.round(popupPosition.top || minTop));
|
|
190
401
|
return React__default.createElement("div", {
|
|
191
|
-
className: `fixed
|
|
402
|
+
className: `fixed z-[999] flex flex-col overflow-hidden border border-border menu-${menuTransition} ql-flyout-anchored`,
|
|
192
403
|
style: {
|
|
193
404
|
left: `${sidebarWidth}px`,
|
|
194
|
-
top:
|
|
195
|
-
|
|
405
|
+
top: `${anchorTop}px`,
|
|
406
|
+
maxHeight: `calc(100vh - ${anchorTop}px - 16px)`,
|
|
196
407
|
width: '228px',
|
|
197
408
|
maxWidth: 'calc(100vw - 100px)',
|
|
409
|
+
transformOrigin: 'left top',
|
|
410
|
+
borderRadius: '8px',
|
|
411
|
+
boxShadow: '0 24px 70px -24px rgba(0,0,0,0.45)',
|
|
198
412
|
pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
|
|
199
|
-
...SidebarStyles
|
|
413
|
+
...SidebarStyles,
|
|
414
|
+
// solid opaque fill — after the spread so nothing clears it
|
|
415
|
+
backgroundColor: settings?.navTheme === 'realDark' ? '#222' : 'hsl(var(--popover))'
|
|
200
416
|
},
|
|
201
417
|
onMouseEnter: () => {
|
|
418
|
+
// Clear any pending close timeouts
|
|
202
419
|
if (hoverCloseTimeout.current) {
|
|
203
420
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
204
421
|
hoverCloseTimeout.current = null;
|
|
205
422
|
}
|
|
206
|
-
//
|
|
423
|
+
// Restore the hovered menu ref when entering the flyout
|
|
424
|
+
// This ensures state consistency when moving between menu item and flyout
|
|
425
|
+
if (activeMenuItem) {
|
|
426
|
+
currentHoveredMenu.current = activeMenuItem.path;
|
|
427
|
+
// Ensure flyout is visible and in opening state
|
|
428
|
+
if (!flyoutVisible || menuTransition === 'closing') {
|
|
429
|
+
setMenuTransition('opening');
|
|
430
|
+
setFlyoutVisible(true);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
207
433
|
},
|
|
208
434
|
onMouseLeave: () => {
|
|
209
435
|
if (pinnedPath === item.path) return; // don't close if pinned
|
|
436
|
+
// Clear any existing timeouts
|
|
210
437
|
if (hoverCloseTimeout.current) {
|
|
211
438
|
window.clearTimeout(hoverCloseTimeout.current);
|
|
212
439
|
}
|
|
213
|
-
|
|
440
|
+
// Don't immediately set to null - wait for timeout
|
|
441
|
+
// This allows re-entering the menu item to restore state
|
|
214
442
|
setMenuTransition('closing');
|
|
215
443
|
hoverCloseTimeout.current = window.setTimeout(() => {
|
|
444
|
+
// Only close if we're still not hovering anything
|
|
216
445
|
if (!currentHoveredMenu.current) {
|
|
217
446
|
setFlyoutVisible(false);
|
|
218
447
|
setHoveredMenu(null);
|
|
448
|
+
setActiveMenuItem(null);
|
|
219
449
|
}
|
|
220
450
|
}, 150);
|
|
221
451
|
}
|
|
222
452
|
}, React__default.createElement("style", {
|
|
223
453
|
dangerouslySetInnerHTML: {
|
|
224
454
|
__html: `
|
|
225
|
-
@keyframes
|
|
226
|
-
from { opacity: 0; transform: translateX(-
|
|
227
|
-
to
|
|
455
|
+
@keyframes flyoutIn {
|
|
456
|
+
from { opacity: 0; transform: translateX(-14px) scale(0.98); }
|
|
457
|
+
to { opacity: 1; transform: translateX(0) scale(1); }
|
|
228
458
|
}
|
|
229
|
-
@keyframes
|
|
230
|
-
from { opacity: 1; transform: translateX(0); }
|
|
231
|
-
to
|
|
459
|
+
@keyframes flyoutOut {
|
|
460
|
+
from { opacity: 1; transform: translateX(0) scale(1); }
|
|
461
|
+
to { opacity: 0; transform: translateX(-10px) scale(0.99); }
|
|
232
462
|
}
|
|
233
463
|
.menu-opening {
|
|
234
|
-
animation:
|
|
464
|
+
animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
235
465
|
}
|
|
236
466
|
.menu-closing {
|
|
237
|
-
animation:
|
|
467
|
+
animation: flyoutOut 0.16s cubic-bezier(0.4, 0, 1, 1) forwards;
|
|
468
|
+
}
|
|
469
|
+
/* Slide the anchored panel between rail items as the hover target
|
|
470
|
+
changes. top/max-height only — no layout thrash on the rail. */
|
|
471
|
+
.ql-flyout-anchored {
|
|
472
|
+
transition:
|
|
473
|
+
top 0.3s cubic-bezier(0.22, 1, 0.36, 1),
|
|
474
|
+
max-height 0.3s cubic-bezier(0.22, 1, 0.36, 1);
|
|
475
|
+
}
|
|
476
|
+
@keyframes flyoutItemIn {
|
|
477
|
+
from { opacity: 0; transform: translateX(10px); }
|
|
478
|
+
to { opacity: 1; transform: translateX(0); }
|
|
479
|
+
}
|
|
480
|
+
.ql-flyout-item {
|
|
481
|
+
opacity: 0;
|
|
482
|
+
animation: flyoutItemIn 0.34s cubic-bezier(0.22, 1, 0.36, 1) forwards;
|
|
483
|
+
animation-delay: calc(60ms + var(--i, 0) * 38ms);
|
|
484
|
+
}
|
|
485
|
+
@media (prefers-reduced-motion: reduce) {
|
|
486
|
+
.menu-opening, .menu-closing { animation-duration: 0.01ms; filter: none; }
|
|
487
|
+
.ql-flyout-item { animation: none; opacity: 1; }
|
|
488
|
+
.ql-flyout-anchored { transition: none; }
|
|
238
489
|
}
|
|
239
490
|
`
|
|
240
491
|
}
|
|
@@ -251,16 +502,16 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
251
502
|
}) : React__default.createElement(PushpinLineIcon, {
|
|
252
503
|
className: "h-4 w-4"
|
|
253
504
|
}))), React__default.createElement("div", {
|
|
254
|
-
className: "overflow-y-auto overflow-x-hidden py-1"
|
|
505
|
+
className: "overflow-y-auto overflow-x-hidden py-1 flex-1 min-h-0"
|
|
506
|
+
}, item.children?.map((child, idx) => React__default.createElement("div", {
|
|
507
|
+
key: child.path,
|
|
508
|
+
className: "ql-flyout-item w-full min-w-max hover:text-primary",
|
|
255
509
|
style: {
|
|
256
|
-
|
|
510
|
+
['--i']: idx
|
|
257
511
|
}
|
|
258
|
-
}, item.children?.map(child => React__default.createElement("div", {
|
|
259
|
-
key: child.path,
|
|
260
|
-
className: "w-full min-w-max hover:text-primary"
|
|
261
512
|
}, renderMenuItem(child, 1, true)))));
|
|
262
513
|
};
|
|
263
|
-
const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
|
|
514
|
+
const renderMenuItem = (item, depth = 0, isHoverMenu = false, index = 0) => {
|
|
264
515
|
const hasChildren = item.children && item.children.length > 0;
|
|
265
516
|
const isOpen = openMenus.includes(item.path);
|
|
266
517
|
const isActive = isMenuItemActive(item.path);
|
|
@@ -271,14 +522,20 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
271
522
|
const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
|
|
272
523
|
return React__default.createElement("div", {
|
|
273
524
|
key: item.path,
|
|
274
|
-
|
|
525
|
+
ref: depth === 0 && !isHoverMenu ? el => {
|
|
526
|
+
itemRefs.current[item.path] = el;
|
|
527
|
+
} : undefined,
|
|
528
|
+
className: `w-full relative group hover:text-primary ${depth === 0 && !isHoverMenu ? 'ql-rail-item ql-rail-enter' : ''}`,
|
|
529
|
+
style: depth === 0 && !isHoverMenu ? {
|
|
530
|
+
['--ql-rail-i']: index
|
|
531
|
+
} : undefined,
|
|
275
532
|
onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
|
|
276
533
|
onMouseLeave: () => handleMenuLeave(item, isHoverMenu)
|
|
277
|
-
}, depth === 0 &&
|
|
278
|
-
className: "absolute left-0 top-1 bottom-1 w-0.5
|
|
534
|
+
}, depth === 0 && isParentWithChildren && isHovered && !isActive && React__default.createElement("span", {
|
|
535
|
+
className: "absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-full ql-hover-accent"
|
|
279
536
|
}), React__default.createElement(Link, {
|
|
280
537
|
to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
|
|
281
|
-
className: `flex hover:text-primary items-center justify-between w-full px-1 py-2 text-xs cursor-pointer transition-colors mx-1 my-
|
|
538
|
+
className: `flex hover:text-primary items-center justify-between w-full px-1 py-2 text-xs cursor-pointer transition-colors mx-1 my-0.5 whitespace-nowrap overflow-hidden text-ellipsis ${shouldApplyBackground ? 'text-primary' : undefined}`,
|
|
282
539
|
style: {
|
|
283
540
|
paddingLeft: depth === 0 && !isHoverMenu ? '0.25rem' : `calc(1rem + ${paddingLeft})`
|
|
284
541
|
},
|
|
@@ -286,17 +543,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
286
543
|
}, React__default.createElement("div", {
|
|
287
544
|
className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
|
|
288
545
|
}, item.icon ? React__default.createElement("span", {
|
|
289
|
-
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ?
|
|
546
|
+
className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-xl ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
|
|
290
547
|
style: {
|
|
291
548
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
292
549
|
}
|
|
293
550
|
}, 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 ?
|
|
551
|
+
className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-base h-6 w-6 select-none text-center ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
|
|
295
552
|
style: {
|
|
296
553
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
297
554
|
}
|
|
298
555
|
}, getFirstLetter(item.name)), depth === 0 && !isHoverMenu ? React__default.createElement("span", {
|
|
299
|
-
className: `font-medium text-
|
|
556
|
+
className: `font-medium text-xs leading-tight text-center whitespace-nowrap overflow-hidden text-ellipsis w-full px-1 ${isActive ? 'text-primary' : 'text-foreground'}`,
|
|
300
557
|
style: {
|
|
301
558
|
color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
|
|
302
559
|
},
|
|
@@ -312,7 +569,27 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
|
|
|
312
569
|
};
|
|
313
570
|
return React__default.createElement("div", {
|
|
314
571
|
className: "overflow-hidden"
|
|
315
|
-
}, React__default.createElement("
|
|
572
|
+
}, React__default.createElement("style", {
|
|
573
|
+
dangerouslySetInnerHTML: {
|
|
574
|
+
__html: RAIL_MOTION_CSS
|
|
575
|
+
}
|
|
576
|
+
}), React__default.createElement("nav", {
|
|
577
|
+
ref: navRef,
|
|
578
|
+
style: {
|
|
579
|
+
position: 'relative'
|
|
580
|
+
},
|
|
316
581
|
className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
|
|
317
|
-
},
|
|
582
|
+
}, React__default.createElement("span", {
|
|
583
|
+
"aria-hidden": "true",
|
|
584
|
+
className: `ql-rail-indicator ${indicatorAnimated ? 'ql-rail-indicator--animated' : ''}`,
|
|
585
|
+
style: {
|
|
586
|
+
transform: `translateY(${indicator.y + 6}px)`,
|
|
587
|
+
height: `${Math.max(indicator.h - 12, 0)}px`,
|
|
588
|
+
opacity: indicator.visible ? 1 : 0
|
|
589
|
+
}
|
|
590
|
+
}), menuData.map((item, i) => React__default.createElement(React__default.Fragment, {
|
|
591
|
+
key: item.path
|
|
592
|
+
}, sectionBreakIndex === i && React__default.createElement("hr", {
|
|
593
|
+
className: "border-t border-border my-1"
|
|
594
|
+
}), renderMenuItem(item, 0, false, i)))), !sharedFlyout && renderSingleFlyout());
|
|
318
595
|
};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"}
|