@admin-layout/tailwind-design-pro 12.2.4-alpha.7 → 12.2.4-alpha.70

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