@admin-layout/tailwind-design-pro 12.0.16-alpha.6 → 12.0.16-alpha.62

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 (257) hide show
  1. package/README.md +30 -0
  2. package/lib/cdm-locales/en/menu.json +2 -1
  3. package/lib/cdm-locales/es/menu.json +2 -1
  4. package/lib/cdm-locales/index.d.ts +2 -0
  5. package/lib/cdm-locales/index.d.ts.map +1 -0
  6. package/lib/cdm-locales/index.ts +1 -0
  7. package/lib/components/LanguageMenu/LanguageMenu.js.map +1 -1
  8. package/lib/components/Layout/BasicLayout/index.d.ts +2 -1
  9. package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
  10. package/lib/components/Layout/BasicLayout/index.js +120 -43
  11. package/lib/components/Layout/BasicLayout/index.js.map +1 -1
  12. package/lib/components/Layout/BasicLayout/utils.d.ts +2 -0
  13. package/lib/components/Layout/BasicLayout/utils.d.ts.map +1 -1
  14. package/lib/components/Layout/BasicLayout/utils.js +16 -13
  15. package/lib/components/Layout/BasicLayout/utils.js.map +1 -1
  16. package/lib/components/Layout/GlobalFooter/Account.d.ts +4 -0
  17. package/lib/components/Layout/GlobalFooter/Account.d.ts.map +1 -0
  18. package/lib/components/Layout/GlobalFooter/Account.js +147 -0
  19. package/lib/components/Layout/GlobalFooter/Account.js.map +1 -0
  20. package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.d.ts.map +1 -1
  21. package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js +7 -12
  22. package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js.map +1 -1
  23. package/lib/components/Layout/GlobalHeader/Header.d.ts.map +1 -1
  24. package/lib/components/Layout/GlobalHeader/Header.js +32 -9
  25. package/lib/components/Layout/GlobalHeader/Header.js.map +1 -1
  26. package/lib/components/Layout/GlobalHeader/MainHeader.d.ts +0 -2
  27. package/lib/components/Layout/GlobalHeader/MainHeader.d.ts.map +1 -1
  28. package/lib/components/Layout/GlobalHeader/MainHeader.js +32 -84
  29. package/lib/components/Layout/GlobalHeader/MainHeader.js.map +1 -1
  30. package/lib/components/Layout/GlobalHeader/OrganizationDropdown.js +1 -1
  31. package/lib/components/Layout/GlobalHeader/OrganizationDropdown.js.map +1 -1
  32. package/lib/components/Layout/GlobalHeader/RightContent.d.ts +1 -0
  33. package/lib/components/Layout/GlobalHeader/RightContent.d.ts.map +1 -1
  34. package/lib/components/Layout/GlobalHeader/RightContent.js +73 -6
  35. package/lib/components/Layout/GlobalHeader/RightContent.js.map +1 -1
  36. package/lib/components/Layout/GlobalHeader/RightMenu.d.ts.map +1 -1
  37. package/lib/components/Layout/GlobalHeader/RightMenu.js +2 -4
  38. package/lib/components/Layout/GlobalHeader/RightMenu.js.map +1 -1
  39. package/lib/components/Layout/GlobalHeader/SearchBar.js.map +1 -1
  40. package/lib/components/Layout/GlobalHeader/index.d.ts +0 -1
  41. package/lib/components/Layout/GlobalHeader/index.d.ts.map +1 -1
  42. package/lib/components/Layout/ProTailwindLayout.d.ts +2 -2
  43. package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
  44. package/lib/components/Layout/ProTailwindLayout.js +69 -7
  45. package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
  46. package/lib/components/Layout/Sidebar/Divider.js.map +1 -1
  47. package/lib/components/Layout/Sidebar/DynamicIcon.js.map +1 -1
  48. package/lib/components/Layout/Sidebar/MainSidebar.d.ts +5 -0
  49. package/lib/components/Layout/Sidebar/MainSidebar.d.ts.map +1 -0
  50. package/lib/components/Layout/Sidebar/{Sidebar.js → MainSidebar.js} +37 -9
  51. package/lib/components/Layout/Sidebar/MainSidebar.js.map +1 -0
  52. package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts +4 -0
  53. package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts.map +1 -0
  54. package/lib/components/Layout/Sidebar/MainSidebarMenu.js +294 -0
  55. package/lib/components/Layout/Sidebar/MainSidebarMenu.js.map +1 -0
  56. package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts +5 -0
  57. package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts.map +1 -0
  58. package/lib/components/Layout/Sidebar/PerplexSidebar.js +192 -0
  59. package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -0
  60. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts +4 -0
  61. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -0
  62. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +330 -0
  63. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js.map +1 -0
  64. package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
  65. package/lib/components/Layout/TailwindLayout.js +78 -15
  66. package/lib/components/Layout/TailwindLayout.js.map +1 -1
  67. package/lib/components/Layout/getPageTitle.js.map +1 -1
  68. package/lib/components/Layout/slot-fill/AdditionalSettings.js.map +1 -1
  69. package/lib/components/Layout/slot-fill/Footer.js.map +1 -1
  70. package/lib/components/Layout/slot-fill/HeaderSearchBar.js.map +1 -1
  71. package/lib/components/Layout/slot-fill/HeaderSearchButton.js.map +1 -1
  72. package/lib/components/Layout/slot-fill/Logo.d.ts +4 -0
  73. package/lib/components/Layout/slot-fill/Logo.d.ts.map +1 -0
  74. package/lib/components/Layout/slot-fill/Logo.js +7 -0
  75. package/lib/components/Layout/slot-fill/Logo.js.map +1 -0
  76. package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
  77. package/lib/components/Layout/util.js +1 -1
  78. package/lib/components/Layout/util.js.map +1 -1
  79. package/lib/components/SettingDrawer/CheckBoxTheme.d.ts.map +1 -1
  80. package/lib/components/SettingDrawer/CheckBoxTheme.js +13 -3
  81. package/lib/components/SettingDrawer/CheckBoxTheme.js.map +1 -1
  82. package/lib/components/SettingDrawer/InvitationSettings.d.ts.map +1 -1
  83. package/lib/components/SettingDrawer/InvitationSettings.js +10 -6
  84. package/lib/components/SettingDrawer/InvitationSettings.js.map +1 -1
  85. package/lib/components/SettingDrawer/LayoutChange.d.ts.map +1 -1
  86. package/lib/components/SettingDrawer/LayoutChange.js +23 -16
  87. package/lib/components/SettingDrawer/LayoutChange.js.map +1 -1
  88. package/lib/components/SettingDrawer/MenuVisibilitySettings.d.ts +20 -0
  89. package/lib/components/SettingDrawer/MenuVisibilitySettings.d.ts.map +1 -0
  90. package/lib/components/SettingDrawer/MenuVisibilitySettings.js +120 -0
  91. package/lib/components/SettingDrawer/MenuVisibilitySettings.js.map +1 -0
  92. package/lib/components/SettingDrawer/NavigationsModes.d.ts +1 -1
  93. package/lib/components/SettingDrawer/NavigationsModes.d.ts.map +1 -1
  94. package/lib/components/SettingDrawer/NavigationsModes.js +103 -15
  95. package/lib/components/SettingDrawer/NavigationsModes.js.map +1 -1
  96. package/lib/components/SettingDrawer/RegionalSettings.d.ts.map +1 -1
  97. package/lib/components/SettingDrawer/RegionalSettings.js +54 -177
  98. package/lib/components/SettingDrawer/RegionalSettings.js.map +1 -1
  99. package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
  100. package/lib/components/SettingDrawer/SettingDrawer.js +423 -62
  101. package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
  102. package/lib/components/SettingDrawer/Switch/index.js.map +1 -1
  103. package/lib/components/SettingDrawer/ThemeColor.d.ts.map +1 -1
  104. package/lib/components/SettingDrawer/ThemeColor.js +15 -3
  105. package/lib/components/SettingDrawer/ThemeColor.js.map +1 -1
  106. package/lib/components/SettingDrawer/types.d.ts +12 -0
  107. package/lib/components/SettingDrawer/types.d.ts.map +1 -1
  108. package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.d.ts +8 -5
  109. package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.d.ts.map +1 -1
  110. package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.js +239 -4
  111. package/lib/components/UpdateSettingsResource/UpdateSettingsResource.server.js.map +1 -1
  112. package/lib/components/index.d.ts +0 -1
  113. package/lib/components/index.d.ts.map +1 -1
  114. package/lib/components/index.js +1 -1
  115. package/lib/components/typings.d.ts +14 -6
  116. package/lib/components/typings.d.ts.map +1 -1
  117. package/lib/compute.d.ts.map +1 -1
  118. package/lib/compute.js +10 -2
  119. package/lib/compute.js.map +1 -1
  120. package/lib/config/analytics-config.js +9 -0
  121. package/lib/config/analytics-config.js.map +1 -0
  122. package/lib/config/constants.js.map +1 -1
  123. package/lib/config/env-config.d.ts +3 -0
  124. package/lib/config/env-config.d.ts.map +1 -1
  125. package/lib/config/env-config.js +10 -0
  126. package/lib/config/env-config.js.map +1 -1
  127. package/lib/helpers/DynamicIcon.js.map +1 -1
  128. package/lib/hooks/index.d.ts +0 -3
  129. package/lib/hooks/index.d.ts.map +1 -1
  130. package/lib/hooks/useMediaQuery.js.map +1 -1
  131. package/lib/hooks/useScrollThreshold.js.map +1 -1
  132. package/lib/hooks/useTailwindTheme.js.map +1 -1
  133. package/lib/icons.d.ts +2 -0
  134. package/lib/icons.d.ts.map +1 -1
  135. package/lib/icons.js +4 -2
  136. package/lib/icons.js.map +1 -1
  137. package/lib/index.d.ts +1 -0
  138. package/lib/index.d.ts.map +1 -1
  139. package/lib/index.js +1 -1
  140. package/lib/index.js.map +1 -1
  141. package/lib/machines/selectors.d.ts +118 -0
  142. package/lib/machines/selectors.d.ts.map +1 -0
  143. package/lib/machines/settingsMachine.d.ts +25 -2
  144. package/lib/machines/settingsMachine.d.ts.map +1 -1
  145. package/lib/machines/settingsMachine.js +217 -161
  146. package/lib/machines/settingsMachine.js.map +1 -1
  147. package/lib/machines/settingsMachine.test.d.ts +2 -0
  148. package/lib/machines/settingsMachine.test.d.ts.map +1 -0
  149. package/lib/machines/types.d.ts +106 -9
  150. package/lib/machines/types.d.ts.map +1 -1
  151. package/lib/machines/types.js.map +1 -1
  152. package/lib/module.js.map +1 -1
  153. package/lib/redux/searchReducer.js.map +1 -1
  154. package/lib/routes.json +9 -1
  155. package/lib/tailwindConfig.js.map +1 -1
  156. package/lib/utils/__tests__/configOverrides.test.d.ts +2 -0
  157. package/lib/utils/__tests__/configOverrides.test.d.ts.map +1 -0
  158. package/lib/utils/configOverrides.d.ts +213 -0
  159. package/lib/utils/configOverrides.d.ts.map +1 -0
  160. package/lib/utils/configOverrides.js +91 -0
  161. package/lib/utils/configOverrides.js.map +1 -0
  162. package/lib/utils/isBrowser/index.js.map +1 -1
  163. package/lib/utils/settingsUtils.d.ts +20 -0
  164. package/lib/utils/settingsUtils.d.ts.map +1 -0
  165. package/lib/utils/settingsUtils.js +74 -0
  166. package/lib/utils/settingsUtils.js.map +1 -0
  167. package/lib/utils/utils/index.js.map +1 -1
  168. package/package.json +6 -16
  169. package/lib/components/Layout/GlobalHeader/Logo.d.ts +0 -4
  170. package/lib/components/Layout/GlobalHeader/Logo.d.ts.map +0 -1
  171. package/lib/components/Layout/GlobalHeader/Logo.js +0 -141
  172. package/lib/components/Layout/GlobalHeader/Logo.js.map +0 -1
  173. package/lib/components/Layout/Sidebar/Sidebar.d.ts +0 -5
  174. package/lib/components/Layout/Sidebar/Sidebar.d.ts.map +0 -1
  175. package/lib/components/Layout/Sidebar/Sidebar.js.map +0 -1
  176. package/lib/components/Layout/Sidebar/SidebarMenu.d.ts +0 -4
  177. package/lib/components/Layout/Sidebar/SidebarMenu.d.ts.map +0 -1
  178. package/lib/components/Layout/Sidebar/SidebarMenu.js +0 -176
  179. package/lib/components/Layout/Sidebar/SidebarMenu.js.map +0 -1
  180. package/lib/components/UI/CardList.d.ts +0 -61
  181. package/lib/components/UI/CardList.d.ts.map +0 -1
  182. package/lib/components/UI/CardList.js +0 -43
  183. package/lib/components/UI/CardList.js.map +0 -1
  184. package/lib/components/UI/CategoriesTypeList.d.ts +0 -29
  185. package/lib/components/UI/CategoriesTypeList.d.ts.map +0 -1
  186. package/lib/components/UI/CategoriesTypeList.js +0 -139
  187. package/lib/components/UI/CategoriesTypeList.js.map +0 -1
  188. package/lib/components/UI/LazyLoadingGoogleMarker.d.ts +0 -83
  189. package/lib/components/UI/LazyLoadingGoogleMarker.d.ts.map +0 -1
  190. package/lib/components/UI/LazyLoadingGoogleMarker.js +0 -107
  191. package/lib/components/UI/LazyLoadingGoogleMarker.js.map +0 -1
  192. package/lib/components/UI/Pagination.d.ts +0 -6
  193. package/lib/components/UI/Pagination.d.ts.map +0 -1
  194. package/lib/components/UI/Pagination.js +0 -56
  195. package/lib/components/UI/Pagination.js.map +0 -1
  196. package/lib/components/UI/ParamSearchResultContainer.d.ts +0 -99
  197. package/lib/components/UI/ParamSearchResultContainer.d.ts.map +0 -1
  198. package/lib/components/UI/ParamSearchResultContainer.js +0 -120
  199. package/lib/components/UI/ParamSearchResultContainer.js.map +0 -1
  200. package/lib/components/UI/PropertyCard.d.ts +0 -24
  201. package/lib/components/UI/PropertyCard.d.ts.map +0 -1
  202. package/lib/components/UI/PropertyCard.js +0 -420
  203. package/lib/components/UI/PropertyCard.js.map +0 -1
  204. package/lib/components/UI/PropertyCardOnMap.d.ts +0 -10
  205. package/lib/components/UI/PropertyCardOnMap.d.ts.map +0 -1
  206. package/lib/components/UI/PropertyCardOnMap.js +0 -108
  207. package/lib/components/UI/PropertyCardOnMap.js.map +0 -1
  208. package/lib/components/UI/VehicleCard/PricePopover.d.ts +0 -8
  209. package/lib/components/UI/VehicleCard/PricePopover.d.ts.map +0 -1
  210. package/lib/components/UI/VehicleCard/PricePopover.js +0 -98
  211. package/lib/components/UI/VehicleCard/PricePopover.js.map +0 -1
  212. package/lib/components/UI/VehicleCard/VehicleBadge.d.ts +0 -7
  213. package/lib/components/UI/VehicleCard/VehicleBadge.d.ts.map +0 -1
  214. package/lib/components/UI/VehicleCard/VehicleFeature.d.ts +0 -9
  215. package/lib/components/UI/VehicleCard/VehicleFeature.d.ts.map +0 -1
  216. package/lib/components/UI/VehicleCard/VehicleFeature.js +0 -22
  217. package/lib/components/UI/VehicleCard/VehicleFeature.js.map +0 -1
  218. package/lib/components/UI/VehicleCard/types.d.ts +0 -59
  219. package/lib/components/UI/VehicleCard/types.d.ts.map +0 -1
  220. package/lib/components/UI/VehicleCard.d.ts +0 -15
  221. package/lib/components/UI/VehicleCard.d.ts.map +0 -1
  222. package/lib/components/UI/VehicleCard.js +0 -166
  223. package/lib/components/UI/VehicleCard.js.map +0 -1
  224. package/lib/components/UI/VehicleCardList.d.ts +0 -14
  225. package/lib/components/UI/VehicleCardList.d.ts.map +0 -1
  226. package/lib/components/UI/VehicleCardList.js +0 -38
  227. package/lib/components/UI/VehicleCardList.js.map +0 -1
  228. package/lib/components/UI/VehicleParamSearchResultContainer.d.ts +0 -90
  229. package/lib/components/UI/VehicleParamSearchResultContainer.d.ts.map +0 -1
  230. package/lib/components/UI/icons/LocationIcon.d.ts +0 -7
  231. package/lib/components/UI/icons/LocationIcon.d.ts.map +0 -1
  232. package/lib/components/UI/icons/LocationIcon.js +0 -18
  233. package/lib/components/UI/icons/LocationIcon.js.map +0 -1
  234. package/lib/components/UI/icons/index.d.ts +0 -2
  235. package/lib/components/UI/icons/index.d.ts.map +0 -1
  236. package/lib/components/UI/index.d.ts +0 -10
  237. package/lib/components/UI/index.d.ts.map +0 -1
  238. package/lib/components/typings.js +0 -6
  239. package/lib/components/typings.js.map +0 -1
  240. package/lib/hooks/use-get-current-lat-long.d.ts +0 -18
  241. package/lib/hooks/use-get-current-lat-long.d.ts.map +0 -1
  242. package/lib/hooks/use-get-current-lat-long.js +0 -29
  243. package/lib/hooks/use-get-current-lat-long.js.map +0 -1
  244. package/lib/hooks/useWindowSize.d.ts +0 -6
  245. package/lib/hooks/useWindowSize.d.ts.map +0 -1
  246. package/lib/hooks/useWindowSize.js +0 -20
  247. package/lib/hooks/useWindowSize.js.map +0 -1
  248. package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts +0 -6
  249. package/lib/middlewares/airbnbDatasourcesMiddleware.d.ts.map +0 -1
  250. package/lib/middlewares/bookingCarRentalMiddleware.d.ts +0 -6
  251. package/lib/middlewares/bookingCarRentalMiddleware.d.ts.map +0 -1
  252. package/lib/middlewares/bookingDatasourcesMiddleware.d.ts +0 -7
  253. package/lib/middlewares/bookingDatasourcesMiddleware.d.ts.map +0 -1
  254. package/lib/middlewares/datasourcesMiddleware.d.ts +0 -6
  255. package/lib/middlewares/datasourcesMiddleware.d.ts.map +0 -1
  256. package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts +0 -7
  257. package/lib/middlewares/pricelineDatasourcesMiddleware.d.ts.map +0 -1
@@ -0,0 +1,294 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';import {generateMenuPath}from'@admin-layout/client';import {useLocation,Link}from'@remix-run/react';import React__default,{useState,useCallback}from'react';import {icons}from'../../../icons.js';// Constants moved outside component
2
+ const SIDEBAR_WIDTHS = {
3
+ COLLAPSED: 64,
4
+ EXPANDED: 256
5
+ };
6
+ const POPUP_CONFIG = {
7
+ MAX_HEIGHT: 400,
8
+ MIN_WIDTH: 220};
9
+ // Pure function moved outside component
10
+ const getFirstLetter = name => name.charAt(0).toUpperCase();
11
+ // Utility for determining active menu item
12
+ const isMenuItemActive = (itemPath, currentPath, routeParams) => {
13
+ const menuPath = generateMenuPath(itemPath, routeParams);
14
+ // Exact match
15
+ if (currentPath === menuPath) {
16
+ return true;
17
+ }
18
+ // Check if current path is a child of the menu item path
19
+ if (menuPath && currentPath.startsWith(menuPath + '/')) {
20
+ return true;
21
+ }
22
+ return false;
23
+ };
24
+ // CSS keyframes definition moved outside component
25
+ const POPUP_ANIMATION_CSS = `
26
+ @keyframes fadeIn {
27
+ from { opacity: 0; transform: translateX(-10px); }
28
+ to { opacity: 1; transform: translateX(0); }
29
+ }
30
+ `;
31
+ const getTextColor = (active, navTheme) => {
32
+ if (active) return 'text-primary';
33
+ if (navTheme === 'realDark') return 'text-white';
34
+ return 'text-foreground';
35
+ };
36
+ const getIconColor = (active, navTheme) => {
37
+ if (active) return 'text-primary';
38
+ if (navTheme === 'realDark') return 'text-white';
39
+ return 'text-muted-foreground';
40
+ };
41
+ // Custom comparison function for React.memo
42
+ // Update the areMenuItemPropsEqual function to be more precise about location changes
43
+ const areMenuItemPropsEqual = (prevProps, nextProps) => {
44
+ // Always re-render if the item itself changed
45
+ if (prevProps.item !== nextProps.item) {
46
+ return false;
47
+ }
48
+ // Check only if active state changes instead of checking entire pathname
49
+ const prevIsActive = isMenuItemActive(prevProps.item.path, prevProps.locationPathname, prevProps.routeParams);
50
+ const nextIsActive = isMenuItemActive(nextProps.item.path, nextProps.locationPathname, nextProps.routeParams);
51
+ if (prevIsActive !== nextIsActive) {
52
+ return false;
53
+ }
54
+ // Rest of your existing checks...
55
+ if (prevProps.depth !== nextProps.depth || prevProps.isHoverMenu !== nextProps.isHoverMenu || prevProps.collapsed !== nextProps.collapsed || prevProps.navTheme !== nextProps.navTheme) {
56
+ return false;
57
+ }
58
+ // Check routeParams (shallow object comparison)
59
+ const prevRouteParamsKeys = Object.keys(prevProps.routeParams);
60
+ const nextRouteParamsKeys = Object.keys(nextProps.routeParams);
61
+ if (prevRouteParamsKeys.length !== nextRouteParamsKeys.length) {
62
+ return false;
63
+ }
64
+ for (const key of prevRouteParamsKeys) {
65
+ if (prevProps.routeParams[key] !== nextProps.routeParams[key]) {
66
+ return false;
67
+ }
68
+ }
69
+ // Check popupPosition
70
+ if (prevProps.popupPosition.top !== nextProps.popupPosition.top || prevProps.popupPosition.height !== nextProps.popupPosition.height) {
71
+ return false;
72
+ }
73
+ // Check if this specific item's open state changed
74
+ const prevIsOpen = prevProps.openMenus.includes(prevProps.item.path);
75
+ const nextIsOpen = nextProps.openMenus.includes(nextProps.item.path);
76
+ if (prevIsOpen !== nextIsOpen) {
77
+ return false;
78
+ }
79
+ // Check if this specific item's hover state changed
80
+ const prevIsHovered = prevProps.hoveredMenu === prevProps.item.path;
81
+ const nextIsHovered = nextProps.hoveredMenu === nextProps.item.path;
82
+ if (prevIsHovered !== nextIsHovered) {
83
+ return false;
84
+ }
85
+ // If none of the relevant props changed, don't re-render
86
+ return true;
87
+ };
88
+ const MenuItem = React__default.memo(({
89
+ item,
90
+ depth,
91
+ isHoverMenu,
92
+ openMenus,
93
+ hoveredMenu,
94
+ collapsed,
95
+ navTheme,
96
+ locationPathname,
97
+ routeParams,
98
+ popupPosition,
99
+ onToggleMenu,
100
+ onMenuHover,
101
+ onMenuLeave,
102
+ ChevronUpIcon,
103
+ ChevronDownIcon
104
+ }) => {
105
+ // Only log when actually rendering (not on every navigation)
106
+ const hasChildren = item.children && item.children.length > 0;
107
+ const isOpen = openMenus.includes(item.path);
108
+ const isActive = isMenuItemActive(item.path, locationPathname, routeParams);
109
+ const isHovered = hoveredMenu === item.path;
110
+ const menuItemPaddingLeft = `${depth * 1}rem`;
111
+ const subMenuItemPaddingLeft = `${depth * 2}rem`;
112
+ // Determine styling based on whether it's a parent or child item
113
+ const isParentWithChildren = hasChildren && depth === 0;
114
+ const shouldApplyBackground = isActive && !isParentWithChildren || isHovered;
115
+ const handleMenuClick = useCallback(e => {
116
+ if (hasChildren && !collapsed) {
117
+ onToggleMenu(item.path, depth, e);
118
+ }
119
+ }, [hasChildren, collapsed, item.path, depth, onToggleMenu]);
120
+ const renderPopupMenu = useCallback(() => {
121
+ if (!item.children || item.children.length === 0) return null;
122
+ return jsxs("div", {
123
+ className: "fixed shadow-themed-xl rounded-themed-lg border border-border z-[999] overflow-hidden themed-dropdown",
124
+ style: {
125
+ left: `${SIDEBAR_WIDTHS[collapsed ? 'COLLAPSED' : 'EXPANDED']}px`,
126
+ top: `${popupPosition.top}px`,
127
+ animation: 'fadeIn 0.2s ease-out forwards',
128
+ maxWidth: 'calc(100vw - 100px)',
129
+ width: 'max-content',
130
+ minWidth: POPUP_CONFIG.MIN_WIDTH
131
+ },
132
+ children: [jsx("style", {
133
+ dangerouslySetInnerHTML: {
134
+ __html: POPUP_ANIMATION_CSS
135
+ }
136
+ }), jsx("div", {
137
+ className: "font-medium text-sm px-4 py-3 border-b border-border whitespace-nowrap bg-muted",
138
+ children: jsx("span", {
139
+ className: "text-primary",
140
+ children: item.name
141
+ })
142
+ }), jsx("div", {
143
+ className: `max-h-[${POPUP_CONFIG.MAX_HEIGHT}px] overflow-y-auto overflow-x-hidden py-1`,
144
+ children: item.children.map(child => jsx(MenuItem, {
145
+ item: child,
146
+ depth: depth + 1,
147
+ isHoverMenu: true,
148
+ openMenus: openMenus,
149
+ hoveredMenu: hoveredMenu,
150
+ collapsed: collapsed,
151
+ navTheme: navTheme,
152
+ locationPathname: locationPathname,
153
+ routeParams: routeParams,
154
+ popupPosition: popupPosition,
155
+ onToggleMenu: onToggleMenu,
156
+ onMenuHover: onMenuHover,
157
+ onMenuLeave: onMenuLeave,
158
+ ChevronUpIcon: ChevronUpIcon,
159
+ ChevronDownIcon: ChevronDownIcon
160
+ }, child.path))
161
+ })]
162
+ });
163
+ }, [item, depth, collapsed, popupPosition.top, openMenus, hoveredMenu, navTheme, locationPathname, routeParams, onToggleMenu, onMenuHover, onMenuLeave, ChevronUpIcon, ChevronDownIcon]);
164
+ return jsxs("div", {
165
+ className: `w-full relative group ${isHovered && collapsed && !isHoverMenu ? 'rounded-themed' : ''}`,
166
+ style: {
167
+ backgroundColor: isHovered && !isHoverMenu ? 'hsl(var(--muted))' : ''
168
+ },
169
+ onMouseEnter: e => onMenuHover(e, item, isHoverMenu),
170
+ onMouseLeave: () => onMenuLeave(item, isHoverMenu),
171
+ children: [jsxs(Link, {
172
+ to: hasChildren && collapsed && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
173
+ className: `flex items-center justify-between w-full px-1 py-2 hover:bg-muted text-sm cursor-pointer transition-colors rounded-themed mx-1 my-0.5 whitespace-nowrap overflow-hidden text-ellipsis ${shouldApplyBackground ? 'bg-muted' : ''}`,
174
+ style: {
175
+ paddingLeft: `calc(1rem + ${depth > 0 ? subMenuItemPaddingLeft : menuItemPaddingLeft})`
176
+ },
177
+ onClick: handleMenuClick,
178
+ children: [jsxs("div", {
179
+ className: `flex items-center ${collapsed && !isHoverMenu ? 'justify-center w-full' : 'gap-3'}`,
180
+ children: [item.icon ? jsx("span", {
181
+ className: `flex-shrink-0 ${getIconColor(isActive, navTheme)}`,
182
+ children: item.icon
183
+ }) : collapsed && !isHoverMenu ? jsx("span", {
184
+ className: `flex items-center justify-center flex-shrink-0 ${getIconColor(isActive, navTheme)}`,
185
+ children: getFirstLetter(item.name)
186
+ }) : null, (!collapsed || isHoverMenu) && jsx("span", {
187
+ className: `font-medium whitespace-nowrap overflow-hidden text-ellipsis ${getTextColor(isActive, navTheme)} ${depth > 0 ? `text-xs` : ''}`,
188
+ children: item.name
189
+ })]
190
+ }), hasChildren && (!collapsed || isHoverMenu) && jsx("span", {
191
+ className: `flex-shrink-0 ml-1 ${getIconColor(isActive, navTheme)}`,
192
+ children: isOpen ? jsx(ChevronUpIcon, {
193
+ className: "h-4 w-4"
194
+ }) : jsx(ChevronDownIcon, {
195
+ className: "h-4 w-4"
196
+ })
197
+ })]
198
+ }), collapsed && hasChildren && isHovered && !isHoverMenu && item.children.length > 0 && renderPopupMenu(), hasChildren && isOpen && !collapsed && jsx("div", {
199
+ className: "transition-all duration-200 ease-in-out",
200
+ children: item.children.map(child => jsx(MenuItem, {
201
+ item: child,
202
+ depth: depth + 1,
203
+ isHoverMenu: false,
204
+ openMenus: openMenus,
205
+ hoveredMenu: hoveredMenu,
206
+ collapsed: collapsed,
207
+ navTheme: navTheme,
208
+ locationPathname: locationPathname,
209
+ routeParams: routeParams,
210
+ popupPosition: popupPosition,
211
+ onToggleMenu: onToggleMenu,
212
+ onMenuHover: onMenuHover,
213
+ onMenuLeave: onMenuLeave,
214
+ ChevronUpIcon: ChevronUpIcon,
215
+ ChevronDownIcon: ChevronDownIcon
216
+ }, child.path))
217
+ })]
218
+ });
219
+ }, areMenuItemPropsEqual);
220
+ MenuItem.displayName = 'MenuItem';
221
+ const MainSidebarMenuComponent = ({
222
+ menuData,
223
+ routeParams,
224
+ settings,
225
+ collapsed
226
+ }) => {
227
+ const [openMenus, setOpenMenus] = useState([]);
228
+ const [hoveredMenu, setHoveredMenu] = useState(null);
229
+ const [popupPosition, setPopupPosition] = useState({
230
+ top: 0,
231
+ height: 0
232
+ });
233
+ const {
234
+ ChevronDownIcon,
235
+ ChevronUpIcon
236
+ } = icons;
237
+ const location = useLocation();
238
+ const navTheme = settings?.navTheme;
239
+ // Event handler for toggling menu open/closed
240
+ const toggleMenu = useCallback((path, depth, e) => {
241
+ e.preventDefault();
242
+ if (collapsed) return;
243
+ setOpenMenus(prev => {
244
+ if (prev.includes(path)) {
245
+ return prev.filter(item => item !== path);
246
+ } else {
247
+ return [...prev, path];
248
+ }
249
+ });
250
+ }, [collapsed]);
251
+ // Event handlers for hover effects
252
+ const handleMenuHover = useCallback((e, item, isHoverMenu) => {
253
+ // Only set hover state if the menu has children
254
+ if (collapsed && !isHoverMenu && item.children && item.children.length > 0) {
255
+ const element = e.currentTarget;
256
+ const rect = element.getBoundingClientRect();
257
+ setPopupPosition({
258
+ top: rect.top,
259
+ height: rect.height
260
+ });
261
+ setHoveredMenu(item.path);
262
+ }
263
+ }, [collapsed]);
264
+ const handleMenuLeave = useCallback((item, isHoverMenu) => {
265
+ if (collapsed && !isHoverMenu) {
266
+ setHoveredMenu(null);
267
+ }
268
+ }, [collapsed]);
269
+ return jsx("div", {
270
+ className: "overflow-hidden",
271
+ children: jsx("nav", {
272
+ className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`,
273
+ children: menuData.map(item => jsx(MenuItem, {
274
+ item: item,
275
+ depth: 0,
276
+ isHoverMenu: false,
277
+ openMenus: openMenus,
278
+ hoveredMenu: hoveredMenu,
279
+ collapsed: collapsed,
280
+ navTheme: navTheme,
281
+ locationPathname: location.pathname,
282
+ routeParams: routeParams,
283
+ popupPosition: popupPosition,
284
+ onToggleMenu: toggleMenu,
285
+ onMenuHover: handleMenuHover,
286
+ onMenuLeave: handleMenuLeave,
287
+ ChevronUpIcon: ChevronUpIcon,
288
+ ChevronDownIcon: ChevronDownIcon
289
+ }, item.path))
290
+ })
291
+ });
292
+ };
293
+ // Export the memoized version to prevent unnecessary re-renders
294
+ const MainSidebarMenu = React__default.memo(MainSidebarMenuComponent);export{MainSidebarMenu};//# sourceMappingURL=MainSidebarMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/MainSidebarMenu.tsx"],"sourcesContent":[null],"names":["React","_jsx","_jsxs"],"mappings":"2OAMA;AACA,MAAM,cAAc,GAAG;AACnB,EAAA,SAAA,EAAS,EAAE;AACX,EAAA,QAAA,EAAQ;CACF;AAEV,MAAM,YAAY,GAAG;AACjB,EAAA,UAAA,EAAU,GAAE;AACZ,EAAA,SAAA,EAAS,IAEH;AAEV;AACA,MAAM,cAAc,GAAG,IAAC,QAAiB,CAAA,MAAK,CAAA,CAAM,CAAC,CAAC,WAAE,EAAW;AAEnE;AACA,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAE,WAAmC,KAAI;QACpG,QAAM,mBAAW,CAAA,UAAyB,WAAE,CAAA;;AAG5C,EAAA,IAAA,WAAI,KAAW,QAAK,EAAQ;AACxB,IAAA,OAAA,IAAO;;;MAIX,QAAI,IAAQ,WAAI,CAAA,UAAY,CAAA,QAAW,GAAQ,GAAG,CAAA,EAAI;AAClD,IAAA,OAAA,IAAO;;AAGX,EAAA,OAAA;AACJ,CAAC;AAED;AACA,MAAM,mBAAmB,GAAG;;;;;CAK3B;AAED,MAAM,YAAY,GAAG,CAAC,MAAe,EAAE,QAAiB,KAAI;AACxD,EAAA,IAAA,MAAI,EAAM,OAAA,cAAA;AAAE,EAAA,IAAA,QAAA,eAAqB,EAAC,OAAA,YAAA;SAC9B,iBAAa;AAAY,CAAA;AAC7B,MAAA,sBAAwB,EAAC,QAAA,KAAA;AAC7B,EAAE,IAAA,MAAA,EAAA,OAAA,cAAA;AAEF,EAAA,IAAM,aAAY,UAAmB,EAAE,OAAiB,YAAI;AACxD,EAAA,OAAI,uBAAM;AAAE,CAAA;;AACiB;AAC7B,MAAA,kCAA+B,EAAA,SAAA,KAAA;AACnC;AAqBA,EAAA,IAAA,SAAA,CAAA,IAAA,KAAA,SAAA,CAAA,IAAA,EAAA;AACA,IAAA,OAAA,KAAA;AACA,EAAA;;QAEQ,YAAU,GAAI,gBAAe,CAAA,SAAO,CAAA,IAAA,CAAA,IAAA,EAAA,SAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,WAAA,CAAA;AACpC,EAAA,MAAA,YAAY,GAAC,gBAAA,CAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAA,SAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,WAAA,CAAA;MAChB,YAAA,KAAA,YAAA,EAAA;IAED,OAAA,KAAA;AACA,EAAA;AACA;AACA,EAAA,IAAA,SAAI,CAAA,KAAY,KAAK,SAAA,CAAA,KAAe,IAAA,SAAA,CAAA,WAAA,KAAA,SAAA,CAAA,WAAA,IAAA,SAAA,CAAA,SAAA,KAAA,SAAA,CAAA,SAAA,IAAA,SAAA,CAAA,QAAA,KAAA,SAAA,CAAA,QAAA,EAAA;AAChC,IAAA,OAAA;;;AAIJ,EAAA,MACI,mBAAe,GAAK,MAAA,CAAS,IAAC,CAAA,SAAK,CAAA,WAAA,CAAA;AACnC,EAAA,MAAA,mBAAU,GAAW,MAAK,CAAA,IAAA,CAAA,SAAU,CAAA,WAAW,CAAA;AAC/C,EAAA,IAAA,mBAAU,CAAA,MAAc,KAAA,mBAAmB,CAAA,MAAA,EAAA;AAC3C,IAAA,OAAA,KAAA;AAEA,EAAA;OACH,MAAA,GAAA,IAAA,mBAAA,EAAA;IAED,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,KAAA,SAAA,CAAA,WAAgD,CAAA,GAAA,CAAA,EAAA;MAChD,OAAM,KAAA;IACN;;AAEI;MACH,SAAA,CAAA,aAAA,CAAA,GAAA,KAAA,SAAA,CAAA,aAAA,CAAA,GAAA,IAAA,SAAA,CAAA,aAAA,CAAA,MAAA,KAAA,SAAA,CAAA,aAAA,CAAA,MAAA,EAAA;AACD,IAAA,OAAK,KAAM;AACP,EAAA;AACI;QACJ,UAAC,GAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,SAAA,CAAA,IAAA,CAAA,IAAA,CAAA;QACJ,UAAA,GAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,SAAA,CAAA,IAAA,CAAA,IAAA,CAAA;MAED,UAAA,KAAA,UAAsB,EAAA;IACtB,OACI,KAAA;;AAGA;QACH,aAAA,GAAA,SAAA,CAAA,WAAA,KAAA,SAAA,CAAA,IAAA,CAAA,IAAA;QAED,aAAA,GAAA,SAAA,CAAA,WAAA,KAAA,SAAmD,CAAA,IAAA,CAAA,IAAA;AACnD,EAAA,IAAA,aAAM,KAAa;AACnB,IAAA,OAAM,KAAA;AACN,EAAA;AACI;SACH,IAAA;;MAGD,QAAM,GAAAA,cAAA,CAAa,IAAG,CAAA,CAAA;MACtB;AACA,EAAA,KAAA;AACI,EAAA,WAAA;WACH;aAED;AACA,EAAA,SAAO;AACX,EAAE,QAAA;AAEF,EAAA,gBAAiB;aAkBT;AACA,EAAA,aAAM;cACA;AACN,EAAA,WAAM;AACN,EAAA;AACA,EAAA;AACA,EAAA;MAEA;AACA;QACA,WAAM,GAAA,IAAA,CAAA,QAAyB,IAAA,IAAQ,CAAA,QAAK,CAAA,MAAA,GAAA,CAAA;AAE5C,EAAA,MAAA,kBAAqB,CAAA,QAAG,CAAA,IACpB,CAAC,IAAqB,CAAE;AACpB,EAAA,MAAA,QAAI,GAAA,gBAAgB,CAAA,IAAY,CAAA,IAAA,EAAA,gBAAA,EAAA,WAAA,CAAA;iBAC5B,GAAA,WAAkB,KAAM,IAAA,CAAK,IAAI;QACrC,mBAAC,GAAA,CAAA,EAAA,KAAA,GAAA,CAAA,CAAA,GAAA,CAAA;AACL,EAAA,MACC,sBAAsB,GAAE,CAAA,EAAI,KAAK,GAAE,CAAA,CAAA,GAAK,CAAE;AAG/C;QACI,oBAAkB,GAAI,WAAK,IAAS,KAAM,KAAM,CAAA;AAAE,EAAA,MAAA,qBAAY,GAAA,QAAA,IAAA,CAAA,oBAAA,IAAA,SAAA;AAE9D,EAAA,MAAA,eACI,GAAA,WACI,CAAA,CAAA,IAAU;AAEN,IAAA,IAAA,WAAA,IAAM,CAAA,SAAG,EAAA;AACT,MAAA,YAAA,CAAG,IAAE,CAAG,IAAA,EAAA,KAAA,EAAa,CAAC;AACtB,IAAA;AACA,EAAA,CAAA,EAAA,CAAA,WAAA,EAAA,SAAU,EAAA,IAAA,CAAA,IAAA,EAAA,KAAA,EAAqB,YAAA,CAAA,CAAA;AAC/B,EAAA,MAAA,eAAO,GAAA,WAAa,CAAA,MAAA;sBACpB,IAAU,IAAA,CAAA,QAAa,CAAA,MAAA,KAAS,CAAA,EAAA,OAAA,IAAA;eACnC,CAAA,KAAA,EAAA;AA8Bb,MAAC,SAAE,EAAA,uGAAA;WACC,EAAI;QACJ,IAAA,EAAK,CAAA,EAAA,cAAA,CAAA,SAAA,GAAA,WAAA,GAAA,UAAA,CAAA,CAAA,EAAA,CAAA;QACL,GAAA,EAAA,CAAA,EAAA,aAAS,CAAA,GAAA,CAAA,EAAA,CAAA;AACT,QAAA,SAAA,EAAA,+BAAiB;QACjB,QAAA,EAAS,qBAAA;QACT,KAAA,EAAA,aAAW;QACX,QAAQ,EAAA,YAAA,CAAA;;cAER,EAAA,CAAAC,GAAW,CAAA,OAAA,EAAA;QACX,uBAAY,EAAA;UACZ,MAAA,EAAA;;QAEA,EAAAA,GAAA,CAAA,KAAA,EAAa;QACb,SAAA,EAAA,iFAAe;AAClB,QAAE,QAAA,EAAAA,GAAA,CAAA,MAAA,EAAA;UAEH,SACI,EAAA,cACI;AAWQ,UAAA,QAAA,EAAA,IAAA,CAAA;AACH,SAAA;AAoEjB,OACA,CAAA,EAAAA,GAAA,CAAA,KAAA,EAAA;AAEJ,QAAQ,SAAC,EAAA,CAAW,OAAG,EAAA,YAAW,CAAA,UAAA,CAAA,0CAAA,CAAA;AAElC,QAAM,QAAA,EAAA,IAAA,CAAA,QAAwB,CAAA,GAAgC,CAAE,KAAA,IAAQA,GAAE,CAAA,QAAW,EAAE;UAC7E,IAAC,EAAA,KAAS;UACV,KAAC,EAAA,KAAW,GAAE,CAAA;AACpB,UAAM,WAAC,EAAA;AACP,UAAM,SAAE,EAAA;AACR,UAAM,WAAW,EAAA,WAAa;AAC9B,UAAM,SAAQ,EAAI,SAAgB;UAElC,QAAA,EAAA,QAAA;UACM,gBAAa,EAAA,gBACA;UACT,WAAA,EAAA,WAAiB;AACnB,UAAA,aAAa,EAAA,aAAA;sBAAS,EAAA,YAAA;AAEtB,UAAA,WAAa,EAAC,WAAQ;AAClB,UAAA,WAAS,EAAA,WAAa;AAClB,UAAA,aAAO,EAAA,aAAa;yBACvB,EAAA;iBAAM,IAAC,CAAA;AACJ,OAAA,CAAA;;AAER,EAAA,CAAA,EAAA,CAAA,IAAE,EAAC,KAAA,EAAA,SAAA,EAAA,aAAA,CAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,CAAA,CAAA;AACP,EAAA,OACCC,IAAA,CAAA,KACH,EAAA;IAEF,SAAA,EAAA,CAAA,sBAAA,EAAmC,SAAA,IAAA,SAAA,IAAA,CAAA,WAAA,GAAA,gBAAA,GAAA,EAAA,CAAA,CAAA;IACnC,KAAA,EAAM;qBAEE,EAAA,SAAA,IAAA,CAAA,WAAA,GAAA,mBAAgD,GAAA;AAChD,KAAA;AACI,IAAA,YAAA,EAAM,CAAA,IAAA,qBAAyC,WAAA,CAAA;AAC/C,IAAA,YAAA,EAAM,MAAI,WAAW,CAAA,IAAA,EAAA,WAAA,CAAqB;AAE1C,IAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,IAAA,EAAA;qBACS,IAAI,SAAI,IAAA,CAAA,WAAA,GAAA,GAAA,GAAA,gBAAA,CAAA,IAAA,EAAA,IAAA,EAAA,WAAA,CAAA;iBACb,CAAA,sLAAmB,EAAA,qBAAA,GAAA,UAAA,GAAA,EAAA,CAAA,CAAA;AACtB,MAAA,KAAA,EAAA;AAED,QAAA,WAAA,EAAA,CAAA,YAAoB,EAAI,KAAE,GAAA,CAAA,GAAA,sBAAA,GAAA,mBAAA,CAAA,CAAA;;AAElC,MAAC,OACA,EAAA,eACH;MAEF,QAAM,EAAA,CAAAA,IAAA,CAAA,KAAkB,EAAA;AAEhB,QAAA,SAAI,EAAA,CAAA,oBAA4B,SAAA,IAAA,CAAA,WAAA,GAAA,uBAAA,GAAA,OAAA,CAAA,CAAA;gBAC5B,EAAA,CAAA,IAAA,CAAA,IAAe,GAAID,GAAE,CAAA,MAAA,EAAA;UACxB,SAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,QAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AACL,UACC,QAAU,EACb,IAAA,CAAA;SAEF,CAAA,gBACS,CAAA,0BAA2B;AAyBxC,UAAE,SAAA,EAAA,CAAA,+CAAA,EAAA,YAAA,CAAA,QAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AAEF,UAAA,QAAA,EAAA,cAAA,CAAA,IAAA,CAAA,IAAA;AACA,SAAO,CAAA,GAAM,IAAA,EAAA,CAAA,CAAA,SAAe,IAAG,WAAW,KAAAA,GAAA,CAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { SidebarProps } from '../../typings';
3
+ export declare const PerplexSidebar: React.FC<SidebarProps>;
4
+ export default PerplexSidebar;
5
+ //# sourceMappingURL=PerplexSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerplexSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAI7C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqOjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,192 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import React__default,{useEffect}from'react';import {useTranslation}from'react-i18next';import {getMenuSeparation}from'@admin-layout/client';import {Divider}from'./Divider.js';import {PerplexSidebarMenu}from'./PerplexSidebarMenu.js';import'@react-icons/all-files/fa/FaMoon.js';import'@react-icons/all-files/fa/FaSun.js';import {useMediaQuery}from'../../../hooks/useMediaQuery.js';import Account from'../GlobalFooter/Account.js';const PerplexSidebar = props => {
2
+ const {
3
+ isSideMenuOpen,
4
+ closeSideMenu,
5
+ menuData,
6
+ collapsed,
7
+ routeParams,
8
+ settings,
9
+ location,
10
+ siderPinned,
11
+ setSiderPinned,
12
+ layoutSettings,
13
+ deviceSettings,
14
+ actor,
15
+ sideBarMarginTop,
16
+ showHeader
17
+ } = props;
18
+ const [iconModule, setIconModule] = React__default.useState(null);
19
+ const {
20
+ t,
21
+ i18n
22
+ } = useTranslation('menu');
23
+ const {
24
+ isMobile
25
+ } = useMediaQuery();
26
+ const currentRoute = location?.pathname || '/';
27
+ const deviceType = isMobile ? 'mobile' : 'desktop';
28
+ // Helper function to get value from settings with route/device override support
29
+ const getUILayoutValue = path => {
30
+ // Check for route/device-specific override first
31
+ const routeDeviceKey = `[${currentRoute}][${deviceType}]`;
32
+ const uiOverride = settings?.uiSettings?.[routeDeviceKey];
33
+ if (uiOverride) {
34
+ const value = path.split('.').reduce((obj, key) => obj?.[key], uiOverride);
35
+ if (value !== undefined) return value;
36
+ }
37
+ // Fallback to settings (flattened uilayout from configuration-registries)
38
+ return path.split('.').reduce((obj, key) => obj?.[key], settings);
39
+ };
40
+ // Get layout settings from the new flat structure
41
+ const deviceLayout = {
42
+ navigationMode: getUILayoutValue('navigationMode'),
43
+ sideMenuType: getUILayoutValue('sideMenuType'),
44
+ contentWidth: getUILayoutValue('contentWidth'),
45
+ fixedHeader: getUILayoutValue('fixedHeader'),
46
+ fixedSidebar: getUILayoutValue('fixedSidebar'),
47
+ splitMenus: getUILayoutValue('splitMenus'),
48
+ upperMenuDividerName: getUILayoutValue('upperMenuDividerName'),
49
+ middleMenuDividerName: getUILayoutValue('middleMenuDividerName'),
50
+ lowerMenuDividerName: getUILayoutValue('lowerMenuDividerName')
51
+ };
52
+ useEffect(() => {
53
+ if (!iconModule) {
54
+ import('./DynamicIcon.js').then(module => {
55
+ setIconModule(module);
56
+ });
57
+ }
58
+ }, []);
59
+ // Close sidebar when clicking outside on mobile
60
+ useEffect(() => {
61
+ const handleClickOutside = event => {
62
+ const sidebar = document.getElementById('mobile-sidebar');
63
+ if (sidebar && !sidebar.contains(event.target) && isSideMenuOpen) {
64
+ closeSideMenu();
65
+ }
66
+ };
67
+ document.addEventListener('mousedown', handleClickOutside);
68
+ return () => {
69
+ document.removeEventListener('mousedown', handleClickOutside);
70
+ };
71
+ }, [isSideMenuOpen, closeSideMenu]);
72
+ // Close sidebar when pressing escape
73
+ useEffect(() => {
74
+ const handleEscape = event => {
75
+ if (event.key === 'Escape' && isSideMenuOpen) {
76
+ closeSideMenu();
77
+ }
78
+ };
79
+ document.addEventListener('keydown', handleEscape);
80
+ return () => {
81
+ document.removeEventListener('keydown', handleEscape);
82
+ };
83
+ }, [isSideMenuOpen, closeSideMenu]);
84
+ const {
85
+ middleMenus,
86
+ lowerMenus,
87
+ bottomMenus
88
+ } = getMenuSeparation(menuData || []);
89
+ const updateMenuIcons = (menuItems = []) => {
90
+ if (!menuItems || !Array.isArray(menuItems)) return [];
91
+ return menuItems.map(item => {
92
+ const updatedItem = {
93
+ ...item,
94
+ name: t(item.name),
95
+ icon: iconModule && item.icon ? iconModule.renderDynamicIcon(item.icon) : null
96
+ };
97
+ if (updatedItem.children) {
98
+ updatedItem.children = updateMenuIcons(updatedItem.children);
99
+ }
100
+ return updatedItem;
101
+ });
102
+ };
103
+ const bottomMenusData = {
104
+ menuData: updateMenuIcons(bottomMenus)
105
+ };
106
+ // Use CSS classes instead of theme-based styling
107
+ const getSidebarClasses = () => {
108
+ let classes = `text-gray-500 dark:text-gray-400 h-full flex flex-col`;
109
+ if (settings?.navTheme === 'realDark') {
110
+ classes += ' themed-sidebar';
111
+ }
112
+ if (showHeader) {
113
+ classes += ' md:h-[92vh]';
114
+ }
115
+ if (!showHeader) {
116
+ classes += ' md:h-[100vh]';
117
+ }
118
+ return classes;
119
+ };
120
+ const SidebarStyles = React__default.useMemo(() => ({
121
+ backgroundColor: settings?.navTheme === 'realDark' ? '#222' : '',
122
+ color: settings?.navTheme === 'realDark' ? '#fff !important' : ''
123
+ }), [settings]);
124
+ // Helper function to render a separator with a name
125
+ const renderSeparator = name => {
126
+ if (!deviceLayout?.splitMenus) return null;
127
+ return collapsed ? jsx("hr", {
128
+ className: "border-t border-border"
129
+ }) : jsx(Divider, {
130
+ className: "text-muted-foreground border-border my-2 p-0",
131
+ plain: true,
132
+ children: name
133
+ });
134
+ };
135
+ const renderSidebarContent = () => {
136
+ return jsxs("div", {
137
+ className: getSidebarClasses(),
138
+ style: SidebarStyles,
139
+ children: [jsx("div", {
140
+ className: "relative"
141
+ }), jsxs("div", {
142
+ className: "flex-grow overflow-y-auto",
143
+ children: [middleMenus?.length > 0 && jsxs("div", {
144
+ className: "removeBoxShadow",
145
+ children: [renderSeparator(deviceLayout?.middleMenuDividerName), jsx(PerplexSidebarMenu, {
146
+ menuData: updateMenuIcons(middleMenus),
147
+ routeParams: routeParams,
148
+ settings: settings,
149
+ collapsed: collapsed,
150
+ siderPinned: siderPinned,
151
+ setSiderPinned: setSiderPinned,
152
+ actor: actor,
153
+ deviceSettings: deviceSettings
154
+ })]
155
+ }), lowerMenus?.length > 0 && jsxs("div", {
156
+ className: "removeBoxShadow",
157
+ children: [renderSeparator(deviceLayout?.lowerMenuDividerName), jsx(PerplexSidebarMenu, {
158
+ menuData: updateMenuIcons(lowerMenus),
159
+ routeParams: routeParams,
160
+ settings: settings,
161
+ collapsed: collapsed,
162
+ siderPinned: siderPinned,
163
+ setSiderPinned: setSiderPinned,
164
+ actor: actor,
165
+ deviceSettings: deviceSettings
166
+ })]
167
+ })]
168
+ }), jsx("div", {
169
+ className: "flex-shrink-0 p-4 border-t border-border",
170
+ children: jsx(Account, {
171
+ menus: bottomMenusData,
172
+ collapsed: collapsed,
173
+ routeParams: routeParams,
174
+ layoutSettings: layoutSettings
175
+ })
176
+ })]
177
+ });
178
+ };
179
+ return jsxs("div", {
180
+ children: [!isMobile && jsx("aside", {
181
+ className: `${deviceLayout?.fixedSidebar ? 'fixed' : 'relative'} border-r border-border z-20 h-screen bg-card text-card-foreground md:block flex-shrink-0 transition-all duration-300 ease-in-out w-[92px]`,
182
+ children: renderSidebarContent()
183
+ }), isSideMenuOpen && isMobile && jsx("div", {
184
+ className: "fixed inset-0 z-10 flex items-end bg-black bg-opacity-50 sm:items-center sm:justify-center transition-opacity duration-300",
185
+ onClick: closeSideMenu
186
+ }), isSideMenuOpen && isMobile && jsx("aside", {
187
+ id: "mobile-sidebar",
188
+ className: `fixed inset-0 z-20 flex-shrink-0 bg-card text-card-foreground md:hidden transition-transform duration-300 ease-in-out transform w-[92px]`,
189
+ children: renderSidebarContent()
190
+ })]
191
+ });
192
+ };export{PerplexSidebar,PerplexSidebar as default};//# sourceMappingURL=PerplexSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerplexSidebar.js","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { SidebarMenuProps } from '../../typings';
3
+ export declare const PerplexSidebarMenu: React.FC<SidebarMenuProps>;
4
+ //# sourceMappingURL=PerplexSidebarMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerplexSidebarMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/Sidebar/PerplexSidebarMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgazD,CAAC"}