@admin-layout/tailwind-design-pro 12.2.4-alpha.9 → 12.2.4-alpha.90

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 (89) 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 +51 -78
  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 +185 -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 +26 -18
  40. package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -1
  41. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts +25 -0
  42. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts.map +1 -0
  43. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js +287 -0
  44. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js.map +1 -0
  45. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -1
  46. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +268 -29
  47. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js.map +1 -1
  48. package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts +23 -0
  49. package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts.map +1 -0
  50. package/lib/components/Layout/Sidebar/SidebarRailFX.js +229 -0
  51. package/lib/components/Layout/Sidebar/SidebarRailFX.js.map +1 -0
  52. package/lib/components/Layout/TailwindLayout.js +3 -1
  53. package/lib/components/Layout/TailwindLayout.js.map +1 -1
  54. package/lib/components/Layout/getPageTitle.js +2 -2
  55. package/lib/components/Layout/getPageTitle.js.map +1 -1
  56. package/lib/components/Layout/slot-fill/RightContent.d.ts +3 -1
  57. package/lib/components/Layout/slot-fill/RightContent.d.ts.map +1 -1
  58. package/lib/components/Layout/slot-fill/RightContent.js +4 -6
  59. package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
  60. package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
  61. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +2 -1
  62. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js.map +1 -1
  63. package/lib/components/SettingDrawer/utils/constants.d.ts.map +1 -1
  64. package/lib/components/SettingDrawer/utils/constants.js +3 -0
  65. package/lib/components/SettingDrawer/utils/constants.js.map +1 -1
  66. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts +10 -0
  67. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts.map +1 -0
  68. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js +23 -0
  69. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js.map +1 -0
  70. package/lib/components/SettingsThemeApplier/index.d.ts +2 -0
  71. package/lib/components/SettingsThemeApplier/index.d.ts.map +1 -0
  72. package/lib/components/index.js +1 -1
  73. package/lib/components/typings.d.ts +4 -0
  74. package/lib/components/typings.d.ts.map +1 -1
  75. package/lib/compute.js +2 -2
  76. package/lib/compute.js.map +1 -1
  77. package/lib/helpers/DynamicIcon.js +7 -1
  78. package/lib/helpers/DynamicIcon.js.map +1 -1
  79. package/lib/index.d.ts +2 -0
  80. package/lib/index.d.ts.map +1 -1
  81. package/lib/index.js +1 -1
  82. package/lib/index.js.map +1 -1
  83. package/lib/routes.json +5 -2
  84. package/lib/styles/index.css +321 -0
  85. package/lib/utils/settingsTheme.d.ts +40 -0
  86. package/lib/utils/settingsTheme.d.ts.map +1 -0
  87. package/lib/utils/settingsTheme.js +106 -0
  88. package/lib/utils/settingsTheme.js.map +1 -0
  89. 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';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 = {} // Provide empty object as default
79
+ deviceSettings = {},
80
+ // Provide empty object as default
81
+ sectionBreakIndex
10
82
  }) => {
83
+ const sharedFlyout = usePerplexSidebarFlyoutContext();
11
84
  const [openMenus, setOpenMenus] = useState([]);
12
- const [hoveredMenu, setHoveredMenu] = useState(null);
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) {
@@ -130,6 +306,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
130
306
  }
131
307
  };
132
308
  const handleMenuLeave = (item, isHoverMenu) => {
309
+ if (sharedFlyout) {
310
+ sharedFlyout.handleMenuLeave(item, isHoverMenu);
311
+ return;
312
+ }
133
313
  if (!isHoverMenu) {
134
314
  // Clear any existing timeouts
135
315
  if (hoverCloseTimeout.current) {
@@ -210,18 +390,30 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
210
390
  // Single persistent flyout component for all menus
211
391
  const renderSingleFlyout = () => {
212
392
  if (!flyoutVisible || !activeMenuItem) return null;
213
- const sidebarWidth = 92; // Updated fixed sidebar rail width
393
+ const sidebarWidth = 83; // Updated fixed sidebar rail width (10% narrower)
214
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));
215
402
  return React__default.createElement("div", {
216
- className: `fixed border border-border z-[999] overflow-hidden bg-background menu-${menuTransition}`,
403
+ className: `fixed z-[999] flex flex-col overflow-hidden border border-border menu-${menuTransition} ql-flyout-anchored`,
217
404
  style: {
218
405
  left: `${sidebarWidth}px`,
219
- top: !showHeader ? '0px' : '5rem',
220
- height: !showHeader ? '100vh' : 'calc(100vh - 5rem)',
406
+ top: `${anchorTop}px`,
407
+ maxHeight: `calc(100vh - ${anchorTop}px - 16px)`,
221
408
  width: '228px',
222
409
  maxWidth: 'calc(100vw - 100px)',
410
+ transformOrigin: 'left top',
411
+ borderRadius: '12px',
412
+ boxShadow: '0 24px 70px -24px rgba(0,0,0,0.45)',
223
413
  pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
224
- ...SidebarStyles
414
+ ...SidebarStyles,
415
+ // solid opaque fill — after the spread so nothing clears it
416
+ backgroundColor: settings?.navTheme === 'realDark' ? '#222' : 'hsl(var(--popover))'
225
417
  },
226
418
  onMouseEnter: () => {
227
419
  // Clear any pending close timeouts
@@ -261,19 +453,40 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
261
453
  }, React__default.createElement("style", {
262
454
  dangerouslySetInnerHTML: {
263
455
  __html: `
264
- @keyframes fadeIn {
265
- from { opacity: 0; transform: translateX(-10px); }
266
- to { opacity: 1; transform: translateX(0); }
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); }
267
459
  }
268
- @keyframes fadeOut {
269
- from { opacity: 1; transform: translateX(0); }
270
- to { opacity: 0; transform: translateX(-10px); }
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); }
271
463
  }
272
464
  .menu-opening {
273
- animation: fadeIn 0.15s ease-out forwards;
465
+ animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
274
466
  }
275
467
  .menu-closing {
276
- animation: fadeOut 0.15s ease-in forwards;
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; }
277
490
  }
278
491
  `
279
492
  }
@@ -290,16 +503,16 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
290
503
  }) : React__default.createElement(PushpinLineIcon, {
291
504
  className: "h-4 w-4"
292
505
  }))), React__default.createElement("div", {
293
- 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",
294
510
  style: {
295
- height: !showHeader ? 'calc(100vh - 44px)' : 'calc(100vh - 5rem - 44px)'
511
+ ['--i']: idx
296
512
  }
297
- }, item.children?.map(child => React__default.createElement("div", {
298
- key: child.path,
299
- className: "w-full min-w-max hover:text-primary"
300
513
  }, renderMenuItem(child, 1, true)))));
301
514
  };
302
- const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
515
+ const renderMenuItem = (item, depth = 0, isHoverMenu = false, index = 0) => {
303
516
  const hasChildren = item.children && item.children.length > 0;
304
517
  const isOpen = openMenus.includes(item.path);
305
518
  const isActive = isMenuItemActive(item.path);
@@ -310,11 +523,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
310
523
  const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
311
524
  return React__default.createElement("div", {
312
525
  key: item.path,
313
- className: `w-full relative group hover:text-primary`,
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,
314
533
  onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
315
534
  onMouseLeave: () => handleMenuLeave(item, isHoverMenu)
316
- }, depth === 0 && (isActive || isParentWithChildren && isHovered) && React__default.createElement("span", {
317
- className: "absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-sm"
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"
318
537
  }), React__default.createElement(Link, {
319
538
  to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
320
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}`,
@@ -325,12 +544,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
325
544
  }, React__default.createElement("div", {
326
545
  className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
327
546
  }, item.icon ? React__default.createElement("span", {
328
- className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? 'text-[20px]' : ''}`,
547
+ className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? `text-[20px] ql-rail-icon ${isActive ? 'ql-rail-icon-active' : ''}` : ''}`,
329
548
  style: {
330
549
  color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
331
550
  }
332
551
  }, item.icon) : React__default.createElement("span", {
333
- className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? 'text-[16px] h-6 w-6 select-none text-center' : ''}`,
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' : ''}` : ''}`,
334
553
  style: {
335
554
  color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
336
555
  }
@@ -351,7 +570,27 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
351
570
  };
352
571
  return React__default.createElement("div", {
353
572
  className: "overflow-hidden"
354
- }, React__default.createElement("nav", {
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
+ },
355
582
  className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
356
- }, menuData.map(item => renderMenuItem(item))), renderSingleFlyout());
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());
357
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"}