@admin-layout/tailwind-design-pro 12.2.4-alpha.0 → 12.2.4-alpha.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) 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 +20 -1
  6. package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
  7. package/lib/components/Layout/BasicLayout/index.js +64 -15
  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 +19 -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 +29 -24
  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 +213 -36
  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 +42 -33
  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 +321 -43
  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 +1 -1
  75. package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
  76. package/lib/components/Layout/TailwindLayout.js +22 -3
  77. package/lib/components/Layout/TailwindLayout.js.map +1 -1
  78. package/lib/components/Layout/defaultPermissions.d.ts +134 -0
  79. package/lib/components/Layout/defaultPermissions.d.ts.map +1 -0
  80. package/lib/components/Layout/defaultPermissions.js +134 -0
  81. package/lib/components/Layout/defaultPermissions.js.map +1 -0
  82. package/lib/components/Layout/getPageTitle.js +2 -2
  83. package/lib/components/Layout/getPageTitle.js.map +1 -1
  84. package/lib/components/Layout/slot-fill/RightContent.d.ts +3 -1
  85. package/lib/components/Layout/slot-fill/RightContent.d.ts.map +1 -1
  86. package/lib/components/Layout/slot-fill/RightContent.js +4 -6
  87. package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
  88. package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
  89. package/lib/components/SettingDrawer/SettingDrawer.js +22 -19
  90. package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
  91. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.d.ts.map +1 -1
  92. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js +8 -14
  93. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js.map +1 -1
  94. package/lib/components/SettingDrawer/components/CheckBoxTheme.js +2 -2
  95. package/lib/components/SettingDrawer/components/CheckBoxTheme.js.map +1 -1
  96. package/lib/components/SettingDrawer/components/DeviceTabs.js +2 -2
  97. package/lib/components/SettingDrawer/components/DeviceTabs.js.map +1 -1
  98. package/lib/components/SettingDrawer/components/InvitationSettings.d.ts.map +1 -1
  99. package/lib/components/SettingDrawer/components/InvitationSettings.js +7 -3
  100. package/lib/components/SettingDrawer/components/InvitationSettings.js.map +1 -1
  101. package/lib/components/SettingDrawer/components/LayoutChange.d.ts.map +1 -1
  102. package/lib/components/SettingDrawer/components/LayoutChange.js +8 -11
  103. package/lib/components/SettingDrawer/components/LayoutChange.js.map +1 -1
  104. package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js +5 -5
  105. package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js.map +1 -1
  106. package/lib/components/SettingDrawer/components/NavigationsModes.js +3 -3
  107. package/lib/components/SettingDrawer/components/NavigationsModes.js.map +1 -1
  108. package/lib/components/SettingDrawer/components/RegionalSettings.d.ts.map +1 -1
  109. package/lib/components/SettingDrawer/components/RegionalSettings.js +40 -97
  110. package/lib/components/SettingDrawer/components/RegionalSettings.js.map +1 -1
  111. package/lib/components/SettingDrawer/components/SettingsActions.d.ts.map +1 -1
  112. package/lib/components/SettingDrawer/components/SettingsActions.js +27 -25
  113. package/lib/components/SettingDrawer/components/SettingsActions.js.map +1 -1
  114. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.d.ts.map +1 -1
  115. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js +4 -3
  116. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js.map +1 -1
  117. package/lib/components/SettingDrawer/components/Switch.js +2 -2
  118. package/lib/components/SettingDrawer/components/ThemeColor.js +1 -1
  119. package/lib/components/SettingDrawer/components/ThemeColor.js.map +1 -1
  120. package/lib/components/SettingDrawer/components/ThemeSelector.js +1 -1
  121. package/lib/components/SettingDrawer/components/WebFontsSelector.js +1 -1
  122. package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
  123. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +13 -9
  124. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js.map +1 -1
  125. package/lib/components/SettingDrawer/utils/constants.d.ts.map +1 -1
  126. package/lib/components/SettingDrawer/utils/constants.js +3 -0
  127. package/lib/components/SettingDrawer/utils/constants.js.map +1 -1
  128. package/lib/components/SettingDrawer/utils/helper.js +1 -1
  129. package/lib/components/SettingDrawer/utils/transformers.d.ts +16 -0
  130. package/lib/components/SettingDrawer/utils/transformers.d.ts.map +1 -1
  131. package/lib/components/SettingDrawer/utils/transformers.js +39 -2
  132. package/lib/components/SettingDrawer/utils/transformers.js.map +1 -1
  133. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts +10 -0
  134. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts.map +1 -0
  135. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js +23 -0
  136. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js.map +1 -0
  137. package/lib/components/SettingsThemeApplier/index.d.ts +2 -0
  138. package/lib/components/SettingsThemeApplier/index.d.ts.map +1 -0
  139. package/lib/components/index.js +1 -1
  140. package/lib/components/typings.d.ts +29 -0
  141. package/lib/components/typings.d.ts.map +1 -1
  142. package/lib/compute.js +2 -1
  143. package/lib/compute.js.map +1 -1
  144. package/lib/helpers/DynamicIcon.js +7 -1
  145. package/lib/helpers/DynamicIcon.js.map +1 -1
  146. package/lib/hooks/index.d.ts +1 -0
  147. package/lib/hooks/index.d.ts.map +1 -1
  148. package/lib/hooks/useScrollThreshold.d.ts +1 -2
  149. package/lib/hooks/useScrollThreshold.d.ts.map +1 -1
  150. package/lib/index.d.ts +3 -0
  151. package/lib/index.d.ts.map +1 -1
  152. package/lib/index.js +1 -1
  153. package/lib/index.js.map +1 -1
  154. package/lib/routes.json +5 -1
  155. package/lib/styles/index.css +321 -0
  156. package/lib/utils/settingsTheme.d.ts +40 -0
  157. package/lib/utils/settingsTheme.d.ts.map +1 -0
  158. package/lib/utils/settingsTheme.js +106 -0
  159. package/lib/utils/settingsTheme.js.map +1 -0
  160. package/package.json +9 -7
@@ -1,4 +1,74 @@
1
- import React__default,{useState,useRef}from'react';import {useSelector}from'@xstate/react';import {useLocation,Link}from'@remix-run/react';import {generateMenuPath}from'@admin-layout/client';import {icons}from'../../../icons.js';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) {
@@ -90,6 +266,7 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
90
266
  window.clearTimeout(hoverOpenTimeout.current);
91
267
  hoverOpenTimeout.current = null;
92
268
  }
269
+ // Always update the current hovered menu ref
93
270
  currentHoveredMenu.current = item.path;
94
271
  // Update which item is being hovered and its children data
95
272
  if (hoveredMenu !== item.path) {
@@ -97,6 +274,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
97
274
  setActiveMenuItem(item);
98
275
  // If we're already showing a menu, just update content without closing/reopening
99
276
  if (flyoutVisible) {
277
+ // If menu is closing, cancel the close and reopen
278
+ if (menuTransition === 'closing') {
279
+ setMenuTransition('opening');
280
+ }
100
281
  // Just update the hovered menu path without animation
101
282
  setHoveredMenu(item.path);
102
283
  } else {
@@ -105,6 +286,13 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
105
286
  setFlyoutVisible(true);
106
287
  setHoveredMenu(item.path);
107
288
  }
289
+ } else {
290
+ // Same menu item, but ensure state is consistent
291
+ // This handles the case where we re-enter after leaving
292
+ if (!flyoutVisible || menuTransition === 'closing') {
293
+ setMenuTransition('opening');
294
+ setFlyoutVisible(true);
295
+ }
108
296
  }
109
297
  // If a different top-level item is hovered while pinned, update pinnedPath
110
298
  if (depth === 0 && pinnedPath) {
@@ -118,6 +306,10 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
118
306
  }
119
307
  };
120
308
  const handleMenuLeave = (item, isHoverMenu) => {
309
+ if (sharedFlyout) {
310
+ sharedFlyout.handleMenuLeave(item, isHoverMenu);
311
+ return;
312
+ }
121
313
  if (!isHoverMenu) {
122
314
  // Clear any existing timeouts
123
315
  if (hoverCloseTimeout.current) {
@@ -127,20 +319,33 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
127
319
  window.clearTimeout(hoverOpenTimeout.current);
128
320
  hoverOpenTimeout.current = null;
129
321
  }
130
- currentHoveredMenu.current = null;
131
- // Add a longer delay before closing the menu
322
+ // Don't immediately clear currentHoveredMenu - wait to see if user moves to flyout
323
+ // The flyout's onMouseEnter will restore it if user moves there
324
+ // If user moves to content, the timeout will clear it
325
+ // Add a delay before closing the menu to allow movement to flyout
132
326
  hoverCloseTimeout.current = window.setTimeout(() => {
133
- if (!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);
327
+ // Check if we're still hovering the flyout (activeMenuItem matches)
328
+ if (activeMenuItem?.path === item.path) {
329
+ // User is hovering the flyout, don't close
330
+ return;
143
331
  }
332
+ // Check if we re-entered the menu item
333
+ if (currentHoveredMenu.current === item.path) {
334
+ // User re-entered menu item, don't close
335
+ return;
336
+ }
337
+ // Safe to close now
338
+ currentHoveredMenu.current = null;
339
+ setMenuTransition('closing');
340
+ // Additional delay to complete closing animation
341
+ setTimeout(() => {
342
+ // Double-check before closing
343
+ if (activeMenuItem?.path !== item.path && currentHoveredMenu.current !== item.path) {
344
+ setFlyoutVisible(false);
345
+ setHoveredMenu(null);
346
+ setActiveMenuItem(null);
347
+ }
348
+ }, 150);
144
349
  }, 300); // Extended delay to give more time to move between items
145
350
  }
146
351
  };
@@ -185,56 +390,103 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
185
390
  // Single persistent flyout component for all menus
186
391
  const renderSingleFlyout = () => {
187
392
  if (!flyoutVisible || !activeMenuItem) return null;
188
- const sidebarWidth = 92; // Updated fixed sidebar rail width
393
+ const sidebarWidth = 83; // Updated fixed sidebar rail width (10% narrower)
189
394
  const item = activeMenuItem; // Use the currently active menu item
395
+ // Anchor the flyout to the vertical position of the hovered rail item (measured in
396
+ // handleMenuHover), so moving Notion -> Marketplace slides the panel to the new
397
+ // item instead of leaving it as a static full-height column. Clamp to keep it on
398
+ // screen. The `top`/`max-height` change is CSS-transitioned (see .ql-flyout-anchored),
399
+ // so the panel glides between items while its content cross-fades.
400
+ const minTop = !showHeader ? 8 : 16;
401
+ const anchorTop = Math.max(minTop, Math.round(popupPosition.top || minTop));
190
402
  return React__default.createElement("div", {
191
- className: `fixed 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`,
192
404
  style: {
193
405
  left: `${sidebarWidth}px`,
194
- top: !showHeader ? '0px' : '5rem',
195
- height: !showHeader ? '100vh' : 'calc(100vh - 5rem)',
406
+ top: `${anchorTop}px`,
407
+ maxHeight: `calc(100vh - ${anchorTop}px - 16px)`,
196
408
  width: '228px',
197
409
  maxWidth: 'calc(100vw - 100px)',
410
+ transformOrigin: 'left top',
411
+ borderRadius: '12px',
412
+ boxShadow: '0 24px 70px -24px rgba(0,0,0,0.45)',
198
413
  pointerEvents: menuTransition === 'closing' ? 'none' : 'auto',
199
- ...SidebarStyles
414
+ ...SidebarStyles,
415
+ // solid opaque fill — after the spread so nothing clears it
416
+ backgroundColor: settings?.navTheme === 'realDark' ? '#222' : 'hsl(var(--popover))'
200
417
  },
201
418
  onMouseEnter: () => {
419
+ // Clear any pending close timeouts
202
420
  if (hoverCloseTimeout.current) {
203
421
  window.clearTimeout(hoverCloseTimeout.current);
204
422
  hoverCloseTimeout.current = null;
205
423
  }
206
- // Keep the flyout open while hovering it
424
+ // Restore the hovered menu ref when entering the flyout
425
+ // This ensures state consistency when moving between menu item and flyout
426
+ if (activeMenuItem) {
427
+ currentHoveredMenu.current = activeMenuItem.path;
428
+ // Ensure flyout is visible and in opening state
429
+ if (!flyoutVisible || menuTransition === 'closing') {
430
+ setMenuTransition('opening');
431
+ setFlyoutVisible(true);
432
+ }
433
+ }
207
434
  },
208
435
  onMouseLeave: () => {
209
436
  if (pinnedPath === item.path) return; // don't close if pinned
437
+ // Clear any existing timeouts
210
438
  if (hoverCloseTimeout.current) {
211
439
  window.clearTimeout(hoverCloseTimeout.current);
212
440
  }
213
- currentHoveredMenu.current = null;
441
+ // Don't immediately set to null - wait for timeout
442
+ // This allows re-entering the menu item to restore state
214
443
  setMenuTransition('closing');
215
444
  hoverCloseTimeout.current = window.setTimeout(() => {
445
+ // Only close if we're still not hovering anything
216
446
  if (!currentHoveredMenu.current) {
217
447
  setFlyoutVisible(false);
218
448
  setHoveredMenu(null);
449
+ setActiveMenuItem(null);
219
450
  }
220
451
  }, 150);
221
452
  }
222
453
  }, React__default.createElement("style", {
223
454
  dangerouslySetInnerHTML: {
224
455
  __html: `
225
- @keyframes fadeIn {
226
- from { opacity: 0; transform: translateX(-10px); }
227
- 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); }
228
459
  }
229
- @keyframes fadeOut {
230
- from { opacity: 1; transform: translateX(0); }
231
- 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); }
232
463
  }
233
464
  .menu-opening {
234
- animation: fadeIn 0.15s ease-out forwards;
465
+ animation: flyoutIn 0.26s cubic-bezier(0.16, 1, 0.3, 1) forwards;
235
466
  }
236
467
  .menu-closing {
237
- 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; }
238
490
  }
239
491
  `
240
492
  }
@@ -251,16 +503,16 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
251
503
  }) : React__default.createElement(PushpinLineIcon, {
252
504
  className: "h-4 w-4"
253
505
  }))), React__default.createElement("div", {
254
- className: "overflow-y-auto overflow-x-hidden py-1",
506
+ className: "overflow-y-auto overflow-x-hidden py-1 flex-1 min-h-0"
507
+ }, item.children?.map((child, idx) => React__default.createElement("div", {
508
+ key: child.path,
509
+ className: "ql-flyout-item w-full min-w-max hover:text-primary",
255
510
  style: {
256
- height: !showHeader ? 'calc(100vh - 44px)' : 'calc(100vh - 5rem - 44px)'
511
+ ['--i']: idx
257
512
  }
258
- }, item.children?.map(child => React__default.createElement("div", {
259
- key: child.path,
260
- className: "w-full min-w-max hover:text-primary"
261
513
  }, renderMenuItem(child, 1, true)))));
262
514
  };
263
- const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
515
+ const renderMenuItem = (item, depth = 0, isHoverMenu = false, index = 0) => {
264
516
  const hasChildren = item.children && item.children.length > 0;
265
517
  const isOpen = openMenus.includes(item.path);
266
518
  const isActive = isMenuItemActive(item.path);
@@ -271,11 +523,17 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
271
523
  const shouldApplyBackground = isHovered || !isParentWithChildren && isActive;
272
524
  return React__default.createElement("div", {
273
525
  key: item.path,
274
- 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,
275
533
  onMouseEnter: e => handleMenuHover(e, item, isHoverMenu, depth),
276
534
  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"
535
+ }, depth === 0 && isParentWithChildren && isHovered && !isActive && React__default.createElement("span", {
536
+ className: "absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-full ql-hover-accent"
279
537
  }), React__default.createElement(Link, {
280
538
  to: hasChildren && (collapsed || !collapsed && depth === 0) && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
281
539
  className: `flex hover:text-primary items-center justify-between w-full px-1 py-2 text-xs cursor-pointer transition-colors mx-1 my-1 whitespace-nowrap overflow-hidden text-ellipsis ${shouldApplyBackground ? 'text-primary' : undefined}`,
@@ -286,12 +544,12 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
286
544
  }, React__default.createElement("div", {
287
545
  className: `flex ${depth === 0 && !isHoverMenu ? 'flex-col items-center justify-center w-full gap-1' : 'items-center gap-3'}`
288
546
  }, item.icon ? React__default.createElement("span", {
289
- className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? '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' : ''}` : ''}`,
290
548
  style: {
291
549
  color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
292
550
  }
293
551
  }, item.icon) : React__default.createElement("span", {
294
- className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'} ${depth === 0 && !isHoverMenu ? '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' : ''}` : ''}`,
295
553
  style: {
296
554
  color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
297
555
  }
@@ -312,7 +570,27 @@ import React__default,{useState,useRef}from'react';import {useSelector}from'@xst
312
570
  };
313
571
  return React__default.createElement("div", {
314
572
  className: "overflow-hidden"
315
- }, React__default.createElement("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
+ },
316
582
  className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`
317
- }, 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());
318
596
  };export{PerplexSidebarMenu};//# sourceMappingURL=PerplexSidebarMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerplexSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"PerplexSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ /**
3
+ * SidebarRailFX — an opt-in ambient backdrop that lives *behind* the icon rail.
4
+ *
5
+ * mode:
6
+ * 'off' — render nothing (default; zero cost).
7
+ * 'aurora' — lightweight CSS-only drifting aurora (works everywhere).
8
+ * 'webgpu' — a GPU shader aurora when the browser supports WebGPU,
9
+ * gracefully falling back to the CSS aurora otherwise.
10
+ *
11
+ * It is purely decorative: `pointer-events: none`, sits at `z-index: -1` inside
12
+ * the rail's stacking context (above the card background, below the icons), and
13
+ * honors `prefers-reduced-motion` by holding a static frame.
14
+ */
15
+ export type RailFxMode = 'off' | 'aurora' | 'webgpu';
16
+ interface SidebarRailFXProps {
17
+ mode?: RailFxMode;
18
+ /** Brand color as an `r,g,b` triplet in 0..1. Defaults to a calm indigo. */
19
+ rgb?: [number, number, number];
20
+ }
21
+ export declare const SidebarRailFX: React.FC<SidebarRailFXProps>;
22
+ export default SidebarRailFX;
23
+ //# sourceMappingURL=SidebarRailFX.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarRailFX.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/SidebarRailFX.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,UAAU,kBAAkB;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AA4CD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAuKtD,CAAC;AAEF,eAAe,aAAa,CAAC"}