@admin-layout/tailwind-design-pro 12.2.4-alpha.8 → 12.2.4-alpha.81

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