@admin-layout/tailwind-design-pro 12.2.4-alpha.1 → 12.2.4-alpha.101

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