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