@admin-layout/tailwind-design-pro 12.0.16-alpha.24 → 12.0.16-alpha.26

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 (35) hide show
  1. package/lib/components/Layout/BasicLayout/index.d.ts +1 -1
  2. package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
  3. package/lib/components/Layout/BasicLayout/index.js +12 -8
  4. package/lib/components/Layout/BasicLayout/index.js.map +1 -1
  5. package/lib/components/Layout/GlobalHeader/RightContent.d.ts +1 -0
  6. package/lib/components/Layout/GlobalHeader/RightContent.d.ts.map +1 -1
  7. package/lib/components/Layout/GlobalHeader/RightContent.js +74 -6
  8. package/lib/components/Layout/GlobalHeader/RightContent.js.map +1 -1
  9. package/lib/components/Layout/ProTailwindLayout.d.ts +2 -2
  10. package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
  11. package/lib/components/Layout/ProTailwindLayout.js +69 -7
  12. package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
  13. package/lib/components/Layout/Sidebar/MainSidebar.d.ts.map +1 -1
  14. package/lib/components/Layout/Sidebar/MainSidebar.js +1 -2
  15. package/lib/components/Layout/Sidebar/MainSidebar.js.map +1 -1
  16. package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts +1 -1
  17. package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts.map +1 -1
  18. package/lib/components/Layout/Sidebar/MainSidebarMenu.js +250 -133
  19. package/lib/components/Layout/Sidebar/MainSidebarMenu.js.map +1 -1
  20. package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
  21. package/lib/components/Layout/TailwindLayout.js +8 -5
  22. package/lib/components/Layout/TailwindLayout.js.map +1 -1
  23. package/lib/components/SettingDrawer/MenuVisibilitySettings.d.ts +20 -0
  24. package/lib/components/SettingDrawer/MenuVisibilitySettings.d.ts.map +1 -0
  25. package/lib/components/SettingDrawer/MenuVisibilitySettings.js +120 -0
  26. package/lib/components/SettingDrawer/MenuVisibilitySettings.js.map +1 -0
  27. package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
  28. package/lib/components/SettingDrawer/SettingDrawer.js +10 -2
  29. package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
  30. package/lib/machines/settingsMachine.d.ts.map +1 -1
  31. package/lib/machines/settingsMachine.js +4 -1
  32. package/lib/machines/settingsMachine.js.map +1 -1
  33. package/lib/machines/types.d.ts +2 -0
  34. package/lib/machines/types.d.ts.map +1 -1
  35. package/package.json +4 -4
@@ -1,4 +1,223 @@
1
- import {jsx,jsxs}from'react/jsx-runtime';import {useState}from'react';import {useLocation,Link}from'@remix-run/react';import {generateMenuPath}from'@admin-layout/client';import {icons}from'../../../icons.js';const MainSidebarMenu = ({
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 paddingLeft = `${depth * 1}rem`;
111
+ // Determine styling based on whether it's a parent or child item
112
+ const isParentWithChildren = hasChildren && depth === 0;
113
+ const shouldApplyBackground = isActive && !isParentWithChildren || isHovered;
114
+ const handleMenuClick = useCallback(e => {
115
+ if (hasChildren && !collapsed) {
116
+ onToggleMenu(item.path, depth, e);
117
+ }
118
+ }, [hasChildren, collapsed, item.path, depth, onToggleMenu]);
119
+ const renderPopupMenu = useCallback(() => {
120
+ if (!item.children || item.children.length === 0) return null;
121
+ return jsxs("div", {
122
+ className: "fixed shadow-themed-xl rounded-themed-lg border border-border z-[999] overflow-hidden themed-dropdown",
123
+ style: {
124
+ left: `${SIDEBAR_WIDTHS[collapsed ? 'COLLAPSED' : 'EXPANDED']}px`,
125
+ top: `${popupPosition.top}px`,
126
+ animation: 'fadeIn 0.2s ease-out forwards',
127
+ maxWidth: 'calc(100vw - 100px)',
128
+ width: 'max-content',
129
+ minWidth: POPUP_CONFIG.MIN_WIDTH
130
+ },
131
+ children: [jsx("style", {
132
+ dangerouslySetInnerHTML: {
133
+ __html: POPUP_ANIMATION_CSS
134
+ }
135
+ }), jsx("div", {
136
+ className: "font-medium text-sm px-4 py-3 border-b border-border whitespace-nowrap bg-muted",
137
+ children: jsx("span", {
138
+ className: "text-primary",
139
+ children: item.name
140
+ })
141
+ }), jsx("div", {
142
+ className: `max-h-[${POPUP_CONFIG.MAX_HEIGHT}px] overflow-y-auto overflow-x-hidden py-1`,
143
+ children: item.children.map(child => jsx(MenuItem, {
144
+ item: child,
145
+ depth: depth + 1,
146
+ isHoverMenu: true,
147
+ openMenus: openMenus,
148
+ hoveredMenu: hoveredMenu,
149
+ collapsed: collapsed,
150
+ navTheme: navTheme,
151
+ locationPathname: locationPathname,
152
+ routeParams: routeParams,
153
+ popupPosition: popupPosition,
154
+ onToggleMenu: onToggleMenu,
155
+ onMenuHover: onMenuHover,
156
+ onMenuLeave: onMenuLeave,
157
+ ChevronUpIcon: ChevronUpIcon,
158
+ ChevronDownIcon: ChevronDownIcon
159
+ }, child.path))
160
+ })]
161
+ });
162
+ }, [item, depth, collapsed, popupPosition.top, openMenus, hoveredMenu, navTheme, locationPathname, routeParams, onToggleMenu, onMenuHover, onMenuLeave, ChevronUpIcon, ChevronDownIcon]);
163
+ return jsxs("div", {
164
+ className: `w-full relative group ${isHovered && collapsed && !isHoverMenu ? 'rounded-themed' : ''}`,
165
+ style: {
166
+ backgroundColor: isHovered && !isHoverMenu ? 'hsl(var(--muted))' : ''
167
+ },
168
+ onMouseEnter: e => onMenuHover(e, item, isHoverMenu),
169
+ onMouseLeave: () => onMenuLeave(item, isHoverMenu),
170
+ children: [jsxs(Link, {
171
+ to: hasChildren && collapsed && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
172
+ 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' : ''}`,
173
+ style: {
174
+ paddingLeft: `calc(1rem + ${paddingLeft})`
175
+ },
176
+ onClick: handleMenuClick,
177
+ children: [jsxs("div", {
178
+ className: `flex items-center ${collapsed && !isHoverMenu ? 'justify-center w-full' : 'gap-3'}`,
179
+ children: [item.icon ? jsx("span", {
180
+ className: `flex-shrink-0 ${getIconColor(isActive, navTheme)}`,
181
+ children: item.icon
182
+ }) : collapsed && !isHoverMenu ? jsx("span", {
183
+ className: `flex items-center justify-center flex-shrink-0 ${getIconColor(isActive, navTheme)}`,
184
+ children: getFirstLetter(item.name)
185
+ }) : null, (!collapsed || isHoverMenu) && jsx("span", {
186
+ className: `font-medium whitespace-nowrap overflow-hidden text-ellipsis ${getTextColor(isActive, navTheme)}`,
187
+ children: item.name
188
+ })]
189
+ }), hasChildren && (!collapsed || isHoverMenu) && jsx("span", {
190
+ className: `flex-shrink-0 ml-1 ${getIconColor(isActive, navTheme)}`,
191
+ children: isOpen ? jsx(ChevronUpIcon, {
192
+ className: "h-4 w-4"
193
+ }) : jsx(ChevronDownIcon, {
194
+ className: "h-4 w-4"
195
+ })
196
+ })]
197
+ }), collapsed && hasChildren && isHovered && !isHoverMenu && item.children.length > 0 && renderPopupMenu(), hasChildren && isOpen && !collapsed && jsx("div", {
198
+ className: "transition-all duration-200 ease-in-out",
199
+ children: item.children.map(child => jsx(MenuItem, {
200
+ item: child,
201
+ depth: depth + 1,
202
+ isHoverMenu: false,
203
+ openMenus: openMenus,
204
+ hoveredMenu: hoveredMenu,
205
+ collapsed: collapsed,
206
+ navTheme: navTheme,
207
+ locationPathname: locationPathname,
208
+ routeParams: routeParams,
209
+ popupPosition: popupPosition,
210
+ onToggleMenu: onToggleMenu,
211
+ onMenuHover: onMenuHover,
212
+ onMenuLeave: onMenuLeave,
213
+ ChevronUpIcon: ChevronUpIcon,
214
+ ChevronDownIcon: ChevronDownIcon
215
+ }, child.path))
216
+ })]
217
+ });
218
+ }, areMenuItemPropsEqual);
219
+ MenuItem.displayName = 'MenuItem';
220
+ const MainSidebarMenuComponent = ({
2
221
  menuData,
3
222
  routeParams,
4
223
  settings,
@@ -15,20 +234,9 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState}from'react';import {us
15
234
  ChevronUpIcon
16
235
  } = icons;
17
236
  const location = useLocation();
18
- const isMenuItemActive = itemPath => {
19
- const currentPath = location.pathname;
20
- const menuPath = generateMenuPath(itemPath, routeParams);
21
- // Exact match
22
- if (currentPath === menuPath) {
23
- return true;
24
- }
25
- // Check if current path is a child of the menu item path
26
- if (menuPath && currentPath.startsWith(menuPath + '/')) {
27
- return true;
28
- }
29
- return false;
30
- };
31
- const toggleMenu = (path, depth, e) => {
237
+ const navTheme = settings?.navTheme;
238
+ // Event handler for toggling menu open/closed
239
+ const toggleMenu = useCallback((path, depth, e) => {
32
240
  e.preventDefault();
33
241
  if (collapsed) return;
34
242
  setOpenMenus(prev => {
@@ -38,139 +246,48 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useState}from'react';import {us
38
246
  return [...prev, path];
39
247
  }
40
248
  });
41
- };
42
- const handleMenuClick = (path, hasChildren, depth, e) => {
43
- if (hasChildren && !collapsed) {
44
- toggleMenu(path, depth, e);
45
- }
46
- };
47
- const getFirstLetter = name => {
48
- return name.charAt(0).toUpperCase();
49
- };
50
- const handleMenuHover = (e, item, isHoverMenu) => {
249
+ }, [collapsed]);
250
+ // Event handlers for hover effects
251
+ const handleMenuHover = useCallback((e, item, isHoverMenu) => {
51
252
  // Only set hover state if the menu has children
52
253
  if (collapsed && !isHoverMenu && item.children && item.children.length > 0) {
53
254
  const element = e.currentTarget;
54
255
  const rect = element.getBoundingClientRect();
55
- let top = rect.top;
56
- // Store the height to use for positioning
57
256
  setPopupPosition({
58
- top: top,
257
+ top: rect.top,
59
258
  height: rect.height
60
259
  });
61
260
  setHoveredMenu(item.path);
62
261
  }
63
- };
64
- const handleMenuLeave = (item, isHoverMenu) => {
262
+ }, [collapsed]);
263
+ const handleMenuLeave = useCallback((item, isHoverMenu) => {
65
264
  if (collapsed && !isHoverMenu) {
66
265
  setHoveredMenu(null);
67
266
  }
68
- };
69
- const renderPopupMenu = (item, depth = 0) => {
70
- if (!item.children || item.children.length === 0) return null;
71
- const sidebarWidth = collapsed ? 64 : 256; // 80px for collapsed (w-20), 256px for expanded (w-64)
72
- return jsxs("div", {
73
- className: "fixed shadow-themed-xl rounded-themed-lg border border-border z-[999] overflow-hidden themed-dropdown",
74
- style: {
75
- left: `${sidebarWidth}px`,
76
- // Position right after sidebar
77
- top: `${popupPosition.top}px`,
78
- animation: 'fadeIn 0.2s ease-out forwards',
79
- maxWidth: 'calc(100vw - 100px)',
80
- // Prevent overflow on small screens
81
- width: 'max-content',
82
- minWidth: '220px'
83
- },
84
- children: [jsx("style", {
85
- dangerouslySetInnerHTML: {
86
- __html: `
87
- @keyframes fadeIn {
88
- from { opacity: 0; transform: translateX(-10px); }
89
- to { opacity: 1; transform: translateX(0); }
90
- }
91
- `
92
- }
93
- }), jsx("div", {
94
- className: "font-medium text-sm px-4 py-3 border-b border-border whitespace-nowrap bg-muted",
95
- children: jsx("span", {
96
- className: "text-primary",
97
- children: item.name
98
- })
99
- }), jsx("div", {
100
- className: "max-h-[400px] overflow-y-auto overflow-x-hidden py-1",
101
- children: item.children.map(child => jsx("div", {
102
- className: "w-full min-w-max",
103
- children: renderMenuItem(child, depth + 1, true)
104
- }, child.path))
105
- })]
106
- });
107
- };
108
- const renderMenuItem = (item, depth = 0, isHoverMenu = false) => {
109
- const hasChildren = item.children && item.children.length > 0;
110
- const isOpen = openMenus.includes(item.path);
111
- const isActive = isMenuItemActive(item.path);
112
- const isHovered = hoveredMenu === item.path;
113
- const paddingLeft = `${depth * 1}rem`;
114
- // Determine styling based on whether it's a parent or child item
115
- const isParentWithChildren = hasChildren && depth === 0;
116
- const shouldApplyBackground = isActive && !isParentWithChildren || isHovered;
117
- return jsxs("div", {
118
- className: `w-full relative group ${isHovered && collapsed && !isHoverMenu ? `rounded-themed` : ''}`,
119
- style: {
120
- backgroundColor: isHovered && !isHoverMenu ? 'hsl(var(--muted))' : ''
121
- },
122
- onMouseEnter: e => handleMenuHover(e, item, isHoverMenu),
123
- onMouseLeave: () => handleMenuLeave(item, isHoverMenu),
124
- children: [jsxs(Link, {
125
- to: hasChildren && collapsed && !isHoverMenu ? '#' : generateMenuPath(item?.path, routeParams),
126
- 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' : ''}`,
127
- style: {
128
- paddingLeft: `calc(1rem + ${paddingLeft})`
129
- },
130
- onClick: e => handleMenuClick(item.path, hasChildren, depth, e),
131
- children: [jsxs("div", {
132
- className: `flex items-center ${collapsed && !isHoverMenu ? 'justify-center w-full' : 'gap-3'}`,
133
- children: [item.icon ? jsx("span", {
134
- className: `flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'}`,
135
- style: {
136
- color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
137
- },
138
- children: item.icon
139
- }) : collapsed && !isHoverMenu ? jsx("span", {
140
- className: `flex items-center justify-center flex-shrink-0 ${isActive ? 'text-primary' : 'text-muted-foreground'}`,
141
- style: {
142
- color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
143
- },
144
- children: getFirstLetter(item.name)
145
- }) : null, (!collapsed || isHoverMenu) && jsx("span", {
146
- className: `font-medium whitespace-nowrap overflow-hidden text-ellipsis ${isActive ? 'text-primary' : 'text-foreground'}`,
147
- style: {
148
- color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
149
- },
150
- children: item.name
151
- })]
152
- }), hasChildren && (!collapsed || isHoverMenu) && jsx("span", {
153
- className: `flex-shrink-0 ml-1 ${isActive ? 'text-primary' : 'text-muted-foreground'}`,
154
- style: {
155
- color: !isActive && settings?.navTheme === 'realDark' ? '#fff' : undefined
156
- },
157
- children: isOpen ? jsx(ChevronUpIcon, {
158
- className: "h-4 w-4"
159
- }) : jsx(ChevronDownIcon, {
160
- className: "h-4 w-4"
161
- })
162
- })]
163
- }), collapsed && hasChildren && isHovered && !isHoverMenu && item.children.length > 0 && renderPopupMenu(item, depth), hasChildren && isOpen && !collapsed && jsx("div", {
164
- className: "transition-all duration-200 ease-in-out",
165
- children: item.children.map(child => renderMenuItem(child, depth + 1))
166
- })]
167
- }, item.path);
168
- };
267
+ }, [collapsed]);
169
268
  return jsx("div", {
170
269
  className: "overflow-hidden",
171
270
  children: jsx("nav", {
172
271
  className: `mt-2 ${collapsed ? 'px-1' : 'px-2'} overflow-x-hidden`,
173
- children: menuData.map(item => renderMenuItem(item))
272
+ children: menuData.map(item => jsx(MenuItem, {
273
+ item: item,
274
+ depth: 0,
275
+ isHoverMenu: false,
276
+ openMenus: openMenus,
277
+ hoveredMenu: hoveredMenu,
278
+ collapsed: collapsed,
279
+ navTheme: navTheme,
280
+ locationPathname: location.pathname,
281
+ routeParams: routeParams,
282
+ popupPosition: popupPosition,
283
+ onToggleMenu: toggleMenu,
284
+ onMenuHover: handleMenuHover,
285
+ onMenuLeave: handleMenuLeave,
286
+ ChevronUpIcon: ChevronUpIcon,
287
+ ChevronDownIcon: ChevronDownIcon
288
+ }, item.path))
174
289
  })
175
290
  });
176
- };export{MainSidebarMenu};//# sourceMappingURL=MainSidebarMenu.js.map
291
+ };
292
+ // Export the memoized version to prevent unnecessary re-renders
293
+ const MainSidebarMenu = React__default.memo(MainSidebarMenuComponent);export{MainSidebarMenu};//# sourceMappingURL=MainSidebarMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MainSidebarMenu.js","sources":["../../../../src/components/Layout/Sidebar/MainSidebarMenu.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
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,GAAK;AACf,EAAA,SAAA,EAAS,IAEH;AAEV;AACA,MAAM,cAAc,GAAG,IAAa,QAAK,CAAA,MAAK,CAAA,CAAM,CAAC,CAAC,WAAE,EAAW;AAEnE;AACA,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAE,WAAmC,KAAI;QAC9F,QAAA,mBAA2B,CAAA,UAAS,WAAE,CAAA;;AAG5C,EAAA,IAAA,WAAe,KAAA,QAAa,EAAA;AACxB,IAAA,OAAA,IAAO;;;MAIP,QAAA,IAAY,WAAA,CAAA,UAAY,CAAA,QAAW,GAAW,GAAA,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,MAAU,EAAA,OAAA,cAAA;AAAE,EAAA,IAAA,QAAA,eAAqB,EAAC,OAAA,YAAA;SAC9B,iBAAuB;AAAE,CAAA;AAC7B,MAAA,sBAAwB,EAAC,QAAA,KAAA;AAC7B,EAAE,IAAA,MAAA,EAAA,OAAA,cAAA;AAEF,EAAA,IAAM,aAAe,UAAkB,EAAA,OAAiB,YAAI;AACxD,EAAA,OAAU,uBAAA;AAAE,CAAA;;AACiB;AAC7B,MAAA,kCAA+B,EAAA,SAAA,KAAA;AACnC;AAqBA,EAA4C,IAAA,SAAA,CAAA,IAAA,KAAA,SAAA,CAAA,IAAA,EAAA;AAC5C,IAAsF,OAAA,KAAA;AACtF;;QAEQ,YAAc,GAAA,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,OAAyE,KAAA;AACzE;AACA;AACA,EAAA,IAAA,SAAgB,CAAA,KAAA,KAAiB,SAAA,CAAA,KAAG,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,mBAAoB,GAAA,MAAA,CAAS,IAAM,CAAA,SAAA,CAAA,WAAA,CAAA;AACnC,EAAA,MAAA,mBAAU,GAAgB,MAAA,CAAA,IAAA,CAAA,SAAqB,CAAA,WAAA,CAAA;AAC/C,EAAA,IAAA,mBAAU,CAAA,MAAc,KAAA,mBAAmB,CAAA,MAAA,EAAA;AAC3C,IAAA,OAAA,KAAA;AAEA;OACH,MAAA,GAAA,IAAA,mBAAA,EAAA;IAED,IAAgD,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,KAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,EAAA;MAC1C,OAAA,KAAA;;;AAGF;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,OAAW,KAAA;AACP;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;MAEqB,UAAA,KAAA,UAAA,EAAA;IACtB,OACI,KAAA;;AAGA;QACH,aAAA,GAAA,SAAA,CAAA,WAAA,KAAA,SAAA,CAAA,IAAA,CAAA,IAAA;QAEkD,aAAA,GAAA,SAAA,CAAA,WAAA,KAAA,SAAA,CAAA,IAAA,CAAA,IAAA;AACnD,EAAA,IAAA,aAAgB,KAAY;AAC5B,IAAA,OAAgB,KAAA;AAChB;AACI;SACH,IAAA;;MAGK,QAAA,GAAAA,cAAA,CAAa,IAAG,CAAA,CAAA;MAChB;AACN,EAAA,KAAA;AACI,EAAA,WAAA;WACH;aAEwD;AACzD,EAAA,SAAO;AACX,EAAE,QAAA;AAEF,EAAA,gBAAiB;aAkBoD;AAC7D,EAAA,aAAiB;cACX;AACN,EAAA,WAAc;AACd,EAAA;AACA,EAAA;;AAGA,CAAA,KAAA;;AAGA,EAAA,MAAA,kBAAwB,CAAA,QAAA,IAAW,KACT,QAAE,CAAA,MAAA,GAAA,CAAA;AACpB,EAAA,MAAA,MAAe,GAAA,SAAA,CAAI,QAAC,CAAA,IAAY,CAAA,IAAA,CAAA;gBAChB,GAAA,iBAAY,IAAK,CAAA,IAAI,EAAC,gBAAA,EAAA,WAAA,CAAA;QACtC,SAAC,GAAA,WAAA,KAAA,IAAA,CAAA,IAAA;AACL,EAAA,MACC,WAAW,WAAW,GAAE,CAAA,CAAA,GAAK,CAAA;AAGlC;QACI,oBAAkB,GAAQ,WAAS,IAAO,KAAA,KAAM,CAAA;AAAE,EAAA,MAAA,qBAAY,GAAA,QAAA,IAAA,CAAA,oBAAA,IAAA,SAAA;AAE9D,EAAA,MAAA,eAEQ,GAAA,WAAA,CAAA,CAAA,IAAiH;AAE7G,IAAA,IAAA,WAAA,IAAM,CAAA,SAAiB,EAAA;AACvB,MAAA,YAAA,CAAG,IAAE,CAAG,IAAa,EAAA,KAAA,EAAA,CAAC;AACtB;AACA,GAAA,EAAA,CAAA,WAAA,EAAA,SAA+B,EAAA,IAAA,CAAA,IAAA,EAAA,KAAA,EAAA,YAAA,CAAA,CAAA;AAC/B,EAAA,MAAA,eAAO,GAAa,WAAA,CAAA,MAAA;sBACZ,IAAE,IAAY,CAAA,QAAC,CAAS,MAAA,KAAA,CAAA,EAAA,OAAA,IAAA;eAGpC,CAAA,KAAA,EAAA;AA4BZ,MAAG,SAAA,EAAA,uGAAA;WACK,EAAA;QACJ,IAAK,EAAA,CAAA,EAAA,cAAA,CAAA,SAAA,GAAA,WAAA,GAAA,UAAA,CAAA,CAAA,EAAA,CAAA;QACL,GAAS,EAAA,CAAA,EAAA,aAAA,CAAA,GAAA,CAAA,EAAA,CAAA;AACT,QAAA,SAAA,EAAA,+BAAiB;QACjB,QAAS,EAAA,qBAAA;QACT,KAAW,EAAA,aAAA;QACX,QAAQ,EAAA,YAAA,CAAA;;cAEG,EAAA,CAAAC,GAAA,CAAA,OAAA,EAAA;QACX,uBAAY,EAAA;UACD,MAAA,EAAA;;QAEX,EAAaA,GAAA,CAAA,KAAA,EAAA;QACb,SAAe,EAAA,iFAAA;AAClB,QAAE,QAAA,EAAAA,GAAA,CAAA,MAAA,EAAA;UAEI,SAEC,EAAA,cAAA;oBAWQ,IAAW,CAAA;AACd,SAAA;AAoEjB,OACqB,CAAA,EAAAA,GAAA,CAAA,KAAA,EAAA;AAEzB,QAAQ,SAAC,EAAA,CAAW,OAAG,EAAA,YAAW,CAAA,UAAA,CAAA,0CAAA,CAAA;AAElC,QAA8B,QAAA,EAAA,IAAA,CAAA,QAAA,CAAA,GAAgC,CAAE,KAAQ,IAAAA,GAAa,CAAA,QAAA,EAAU;UACrF,IAAU,EAAA,KAAA;UACV,KAAY,EAAA,KAAA,GAAgB,CAAA;AAClC,UAAM,WAAc,EAAA;AACpB,UAAM,SAAiB,EAAA;AACvB,UAAM,WAAW,EAAW,WAAE;AAC9B,UAAM,SAAQ,EAAI,SAAgB;UAEY,QAAA,EAAA,QAAA;UACxC,gBAAa,EAAA,gBACa;UACtB,WAAc,EAAA,WAAG;AACnB,UAAA,aAAa,EAAA,aAAA;sBAAS,EAAA,YAAA;AAEtB,UAAA,WAAa,EAAK,WAAI;AAClB,UAAA,WAAS,EAAA,WAAa;AAClB,UAAA,aAAO,EAAI,aAAS;yBACvB,EAAA;iBAAM,IAAC,CAAA;AACJ,OAAA,CAAA;;AAER,GAAA,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,OACUC,IAAA,CAAA,KACZ,EAAA;IAEF,SAAmC,EAAA,CAAA,sBAAA,EAAA,SAAA,IAAA,SAAA,IAAA,CAAA,WAAA,GAAA,gBAAA,GAAA,EAAA,CAAA,CAAA;IACnC,KAAM,EAAA;qBAEkD,EAAA,SAAA,IAAA,CAAA,WAAA,GAAA,mBAAA,GAAA;AAChD,KAAA;AACI,IAAA,YAAA,EAAM,CAAO,IAAA,qBAAkC,WAAA,CAAA;AAC/C,IAAA,YAAA,EAAM,MAAO,WAAQ,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;iBACP,CAAA,sLAAa,EAAA,qBAAA,GAAA,UAAA,GAAA,EAAA,CAAA,CAAA;AACtB,MAAA,KAAA,EAAA;AAED,QAAA,WAAA,EAAA,CAAA,YAAoB,EAAI,WAAE,CAAA,CAAA;;AAElC,MACA,OAAU,EAAA,eACZ;MAEI,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAkB,EAAW;AAE3B,QAAA,SAAa,EAAA,CAAA,oBAAmB,SAAA,IAAA,CAAA,WAAA,GAAA,uBAAA,GAAA,OAAA,CAAA,CAAA;gBACd,EAAA,CAAA,IAAA,CAAA,IAAK,GAAAD,GAAE,CAAA,MAAA,EAAA;UACxB,SAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,QAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AACL,UACU,QAAC,EACb,IAAA,CAAA;SAEK,CAAA,gBACE,CAAS,0BAAkB;AAyBxC,UAAE,SAAA,EAAA,CAAA,+CAAA,EAAA,YAAA,CAAA,QAAA,EAAA,QAAA,CAAA,CAAA,CAAA;AAEF,UAAgE,QAAA,EAAA,cAAA,CAAA,IAAA,CAAA,IAAA;AAChE,SAAa,CAAA,GAAA,IAAA,EAAA,CAAA,CAAA,SAAkB,IAAA,WAAmC,KAAAA,GAAA,CAAA,MAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,sBAAsB,CAAC;AAG3E,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAsEvF,KAAK,cAAc,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,QAAA,MAAM,SAAS;;;0EAAoB,CAAC;AAEpC,KAAK,+BAA+B,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzE,QAAA,MAAM,mBAAmB,EAAE,kBAAkB,CACzC,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,+BAA+B,KAAK,GAAG,CAAC,OAAO,CAAC,EAClF,GAAG,CAC8C,CAAC;AAEtD,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"TailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,sBAAsB,CAAC;AAK3E,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAqEvF,KAAK,cAAc,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,QAAA,MAAM,SAAS;;;0EAAoB,CAAC;AAEpC,KAAK,+BAA+B,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzE,QAAA,MAAM,mBAAmB,EAAE,kBAAkB,CACzC,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,+BAA+B,KAAK,GAAG,CAAC,OAAO,CAAC,EAClF,GAAG,CAC8C,CAAC;AAEtD,eAAe,mBAAmB,CAAC"}
@@ -1,17 +1,20 @@
1
- import {jsx}from'react/jsx-runtime';import {useLayoutSettings}from'@admin-layout/client';import {userSelector}from'@adminide-stack/user-auth0-client';import {useMachine}from'@xstate/react';import React__default,{useMemo,useCallback}from'react';import {connect,useSelector}from'react-redux';import {settingsMachine}from'../../machines/settingsMachine.js';import {TailwindThemeProvider}from'@admin-layout/tailwind-ui';import {BasicLayout}from'./BasicLayout/index.js';import {useRouteLoaderData}from'@remix-run/react';function BasicLayoutWithAuthorities(props) {
1
+ import {jsx}from'react/jsx-runtime';import {useLayoutSettings}from'@admin-layout/client';import {TailwindThemeProvider}from'@admin-layout/tailwind-ui';import {userSelector}from'@adminide-stack/user-auth0-client';import {useRouteLoaderData}from'@remix-run/react';import {useMachine}from'@xstate/react';import React__default,{useMemo,useCallback}from'react';import {connect,useSelector}from'react-redux';import {settingsMachine}from'../../machines/settingsMachine.js';import {BasicLayout}from'./BasicLayout/index.js';function BasicLayoutWithAuthorities(props) {
2
2
  const userData = useSelector(userSelector);
3
3
  const {
4
4
  settings: settingsFromLoader
5
5
  } = useRouteLoaderData('root');
6
6
  const {
7
- settings,
8
7
  setSettings
9
8
  } = useLayoutSettings();
10
9
  const [state, send, settingsActor] = useMachine(settingsMachine.provide({
11
10
  actions: {
12
11
  updateReduxSettings: ({
13
- context
12
+ context,
13
+ event
14
14
  }) => {
15
+ if (event?.type === 'ROUTE_CHANGE') {
16
+ return;
17
+ }
15
18
  setSettings(context);
16
19
  }
17
20
  }
@@ -25,8 +28,8 @@ import {jsx}from'react/jsx-runtime';import {useLayoutSettings}from'@admin-layout
25
28
  permissions
26
29
  } = props;
27
30
  const mainHeaderProps = useMemo(() => ({
28
- picture: userData ? userData?.profile?.picture : null
29
- }), [userData]);
31
+ picture: userData?.profile?.picture || null
32
+ }), [userData?.profile?.picture]);
30
33
  const onSettingChange = useCallback(config => {
31
34
  // Update Redux first
32
35
  setSettings(config);
@@ -1 +1 @@
1
- {"version":3,"file":"TailwindLayout.js","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"sourcesContent":[null],"names":[],"mappings":"mgBAUA,SAAS,0BAA0B,CAAC,KAAgF,EAAA;AAChH,EAAA,MAAA,WAAiB,WAAA,CAAA,YAAY,CAAA;QACvB;IACN,QAAQ;AAER,GAAA,GAAA,kBAAoB,CAAA,MAAA,CAAA;AAEZ,EAAA,MAAA;AACI,IAAA,QAAA;;uBAEC,EAAA;AACJ,EAAA,MAAA,CAAA,KAAA,EAAA,IAAA,EAAA,aAAA,CAAA,GAAA,UAAA,CAAA,eAAA,CAAA,OAAA,CAAA;AACJ,IAAA,OACD,EAAA;AACI,MAAA,mBAAO,EAAA,CAAA;AACH,QAAA;AACH,OAAA,KAAA;AACJ,QACH,WAAA,CAAA,OAAA,CAAA;AAEF;AAEA;AAEA,GAAA,CAAA,EAAA;AAEQ,IAAA,KAAA,EAAA;AACH,MAAC,QACO,EAAA;AAGb;;QAGQ,aAAkB,GAAA,KAAE,EAAA,OAAA;AACxB,EAAA,MACC;IAGL;MACM,KAAA;QAEC,eACmB,GAAA,OAAA,CAAA,OAAA;AAY9B,IAAC,OAAA,EAAA,QAAA,GAAA,QAAA,EAAA,OAAA,EAAA,OAAA,GAAA;AAED,GAAM,CAAA,EAAA,CAAA,QAAW,CAAA,CAAA;QACL,eAAA,GAAA,WAAA,CAAA,MAAA,IAAA;;AAEX,IAAE,WAAA,CAAA,MAAA,CAAA;AAMH,GAAA,EAAA,CAAM,WAAY,CAAA,CAAA;AAIlB;AAKA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"TailwindLayout.js","sources":["../../../src/components/Layout/TailwindLayout.tsx"],"sourcesContent":[null],"names":[],"mappings":"mgBAYA,SAAS,0BAA0B,CAAC,KAAqC,EAAA;AACrE,EAAA,MAAA,WAAiB,WAAA,CAAA,YAAY,CAAA;QACvB;AACN,IAAA,QAAQ,EAAW;AACnB,GAAA,GAAA,kBAAoB,CAAA,MAAA,CAAA;AAEZ,EAAA,MAAA;;AAEQ,GAAA,GAAA,mBAAS;oBACL,EAAO,aAAA,CAAA,GAAA,UAAA,CAAA,eAAA,CAAA,OAAA,CAAA;;yBAEA,EAAA,CAAC;eACf;AACJ,QAAA;AACJ,OACD,KAAA;AACI,QAAA,IAAA,KAAO,EAAA,IAAA,KAAA,cAAA,EAAA;AACH,UAAA;AACH;AACJ,QACH,WAAA,CAAA,OAAA,CAAA;AAEF;AACA;AACA,GAAA,CAAA,EAAA;AAEQ,IAAA,KAAA,EAAA;MACF,QACO,EAAA;AAEb;;QAGQ,aAAkB,GAAA,KAAE,EAAA,OAAA;AACxB,EAAA,MACC;IAGL;MACM,KAAA;QAEC,eACmB,GAAA,OAAA,CAAA,OAAA;AAY9B,IAAC,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,IAAA;AAED,GAAM,CAAA,EAAA,CAAA,QAAW,EAAA,OAAG,EAAA,OAAU,CAAA,CAAA;QAClB,eAAA,GAAA,WAAA,CAAA,MAAA,IAAA;;AAEX,IAAE,WAAA,CAAA,MAAA,CAAA;AAMH,GAAA,EAAA,CAAM,WAAY,CAAA,CAAA;AAIlB;AAKA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,20 @@
1
+ interface MenuItem {
2
+ key: string;
3
+ name: string;
4
+ path: string;
5
+ position?: string;
6
+ children?: MenuItem[];
7
+ tab?: string;
8
+ [key: string]: any;
9
+ }
10
+ interface MenuVisibilitySettingsProps {
11
+ fullMenuData: MenuItem[];
12
+ settings: {
13
+ hiddenMenuKeys?: string[];
14
+ [key: string]: any;
15
+ };
16
+ changeSetting: (key: string, value: any) => void;
17
+ }
18
+ export default function MenuVisibilitySettings({ fullMenuData, settings, changeSetting }: MenuVisibilitySettingsProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=MenuVisibilitySettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuVisibilitySettings.d.ts","sourceRoot":"","sources":["../../../src/components/SettingDrawer/MenuVisibilitySettings.tsx"],"names":[],"mappings":"AAQA,UAAU,QAAQ;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,UAAU,2BAA2B;IACjC,YAAY,EAAE,QAAQ,EAAE,CAAC;IACzB,QAAQ,EAAE;QACN,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACtB,CAAC;IACF,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACpD;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,2BAA2B,2CAsFpH"}
@@ -0,0 +1,120 @@
1
+ import {jsxs,jsx}from'react/jsx-runtime';import {useState,useMemo,useCallback}from'react';import {useTranslation}from'react-i18next';// Constants
2
+ // all keys included now ['usermenu', 'topmenu']
3
+ const EXCLUDED_MENU_KEYS = [];
4
+ const MENU_POSITIONS = ['UPPER', 'MIDDLE', 'LOWER', 'BOTTOM'];
5
+ function MenuVisibilitySettings({
6
+ fullMenuData,
7
+ settings,
8
+ changeSetting
9
+ }) {
10
+ const {
11
+ t
12
+ } = useTranslation('settings');
13
+ const [isExpanded, setIsExpanded] = useState(false);
14
+ // Get deduplicated hidden menu keys
15
+ const hiddenMenuKeys = useMemo(() => {
16
+ return settings.hiddenMenuKeys ? Array.from(new Set(settings.hiddenMenuKeys)) : [];
17
+ }, [settings.hiddenMenuKeys]);
18
+ // Organize menu items by position
19
+ const allMenuItems = useMemo(() => {
20
+ const categories = [];
21
+ // Process defined positions
22
+ MENU_POSITIONS.forEach(position => {
23
+ const positionItems = fullMenuData.filter(item => item.position === position && item.key && !EXCLUDED_MENU_KEYS.includes(item.key));
24
+ categories.push(...positionItems);
25
+ });
26
+ // Handle items without position
27
+ const itemsWithoutPosition = fullMenuData.filter(item => !item.position && item.key && !EXCLUDED_MENU_KEYS.includes(item.key));
28
+ categories.push(...itemsWithoutPosition);
29
+ return categories;
30
+ }, [fullMenuData]);
31
+ // Create bound functions with current dependencies
32
+ const boundGetDisplayName = useCallback(item => getDisplayName(item, t), [t]);
33
+ const boundToggleMenuItem = useCallback(itemKey => toggleMenuItem(itemKey, hiddenMenuKeys, changeSetting), [hiddenMenuKeys, changeSetting]);
34
+ // Memoize rendered menu items to prevent unnecessary JSX creation
35
+ const renderedMenuItems = useMemo(() => {
36
+ return renderMenuItems(allMenuItems, 0, hiddenMenuKeys, boundGetDisplayName, boundToggleMenuItem);
37
+ }, [allMenuItems, hiddenMenuKeys, boundGetDisplayName, boundToggleMenuItem]);
38
+ return jsxs("div", {
39
+ className: "space-y-4",
40
+ children: [jsx("div", {
41
+ className: "flex items-center mb-2",
42
+ children: jsxs("button", {
43
+ onClick: () => setIsExpanded(!isExpanded),
44
+ className: "flex items-center gap-2 hover:opacity-80 transition-all duration-200",
45
+ children: [jsx("svg", {
46
+ className: `w-4 h-4 transition-transform duration-300 ease-in-out ${isExpanded ? 'rotate-180' : ''}`,
47
+ fill: "none",
48
+ stroke: "currentColor",
49
+ viewBox: "0 0 24 24",
50
+ children: jsx("path", {
51
+ strokeLinecap: "round",
52
+ strokeLinejoin: "round",
53
+ strokeWidth: 2,
54
+ d: "M19 9l-7 7-7-7"
55
+ })
56
+ }), jsx("p", {
57
+ className: "text-md font-medium text-black dark:text-white",
58
+ children: t('menu_visibility.title') || 'Menu Visibility'
59
+ })]
60
+ })
61
+ }), jsx("div", {
62
+ className: `grid transition-all duration-300 ease-in-out ${isExpanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'}`,
63
+ children: jsx("div", {
64
+ className: "overflow-hidden",
65
+ children: jsx("div", {
66
+ className: "ml-4 mb-4 border-l-2 border-gray-200 dark:border-gray-600 pl-4",
67
+ children: jsx("div", {
68
+ className: "space-y-2",
69
+ children: allMenuItems.length === 0 ? jsx("div", {
70
+ className: "text-center text-gray-500 dark:text-gray-400 py-4",
71
+ children: t('menu_visibility.no_items') || 'No menu items found'
72
+ }) : renderedMenuItems
73
+ })
74
+ })
75
+ })
76
+ })]
77
+ });
78
+ }
79
+ // Helper functions
80
+ function getDisplayName(item, t) {
81
+ if (item.tab) return item.tab;
82
+ if (item.name?.startsWith('menu.')) {
83
+ const parts = item.name.split('.');
84
+ return parts.length > 1 ? parts[parts.length - 1].charAt(0).toUpperCase() + parts[parts.length - 1].slice(1) : item.name;
85
+ }
86
+ return t(item.name) || item.name;
87
+ }
88
+ function toggleMenuItem(itemKey, hiddenMenuKeys, changeSetting) {
89
+ const uniqueKeys = new Set(hiddenMenuKeys);
90
+ uniqueKeys.has(itemKey) ? uniqueKeys.delete(itemKey) : uniqueKeys.add(itemKey);
91
+ changeSetting('hiddenMenuKeys', Array.from(uniqueKeys));
92
+ }
93
+ function renderMenuItems(items, indent, hiddenMenuKeys, getDisplayNameFn, toggleMenuItemFn) {
94
+ return items.map(item => {
95
+ const isVisible = !hiddenMenuKeys.includes(item.key);
96
+ const displayName = getDisplayNameFn(item);
97
+ return jsxs("div", {
98
+ children: [jsxs("div", {
99
+ className: "flex items-center py-0.5",
100
+ children: [jsx("input", {
101
+ type: "checkbox",
102
+ id: `menu-item-${item.key}`,
103
+ className: "mr-2 h-3 w-3 rounded border-gray-300 dark:border-gray-600 text-primary dark:text-white focus:ring-primary dark:focus:ring-primary bg-white dark:bg-gray-700",
104
+ checked: isVisible,
105
+ onChange: () => toggleMenuItemFn(item.key)
106
+ }), jsx("label", {
107
+ htmlFor: `menu-item-${item.key}`,
108
+ className: "text-xs text-black dark:text-white cursor-pointer flex-1",
109
+ style: {
110
+ paddingLeft: `${indent * 12}px`
111
+ },
112
+ children: displayName
113
+ })]
114
+ }), isVisible && item.children && item.children.length > 0 && jsx("div", {
115
+ className: "ml-6",
116
+ children: renderMenuItems(item.children, indent + 1, hiddenMenuKeys, getDisplayNameFn, toggleMenuItemFn)
117
+ })]
118
+ }, item.key);
119
+ });
120
+ }export{MenuVisibilitySettings as default};//# sourceMappingURL=MenuVisibilitySettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuVisibilitySettings.js","sources":["../../../src/components/SettingDrawer/MenuVisibilitySettings.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"qIAGA;AACA;AACA,MAAM,kBAAkB,GAAG,EAAE;AAC7B,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU;AAqBxD,SAAU,sBAAsB,CAAC;cAChC;UACL;;AAGN,CAAA,EAAA;QACI;AACJ,IAAA;MAEkC,cAAA,CAAA,UAAA,CAAA;AAClC,EAAA,MAAA,CAAA,UAAkB,EAAA,iBAAgB,QAAA,CAAA,KAAA,CAAA;;QAG9B,cAA4B,GAAA,OAAA,CAAA,MAAA;AAC5B,IAAA,OAAA,QAAA,CAAA,cAAwB,GAAA,KAAU,CAAE,IAAA,CAAA,IAAA,GAAA,CAAA,QAAA,CAAA,cAAA,CAAA,CAAA,GAAA,EAAA;AAChC,GAAA,EAAA,CAAA,QAAA,CAAA,cAAmB,CAAA,CAAA;AAGnB;AACJ,EAAA,MAAA,YAAG,GAAA,OAAA,CAAA,MAAA;UAE6B,UAAA,GAAA,EAAA;AAChC;AAGA,IAAA,cAAU,CAAC,OAAQ,CAAA,QAAA,IAAA;AAEnB,MAAA,MAAA,aAAiB,GAAC,YAAA,CAAA,MAAA,CAAA,IAAA,IAAA,IAAA,CAAA,QAAA,KAAA,QAAA,IAAA,IAAA,CAAA,GAAA,IAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA;AACtB,MAAG,UAAa,CAAA,IAAC,CAAC,GAAC,aAAA,CAAA;KAEgC,CAAA;;IAEnD,MAAM,oBAAsB,GAAA,YACvB,OAAe,CAAE,IAAG,IAAA,CAAA,IAAA,CAAA,QAAe,IAAO,IAAgB,CAAA,GAAA,IAAA,CAAA,kBAAe,CAAC,iBAC5D,CAAE,CAAA;IAGrB,UAAkE,CAAA,IAAA,CAAA,GAAA,oBAAA,CAAA;AAClE,IAAA,OAAuB,UAAA;AACnB,GAAA,EAAA,CAAA,YAAsB,CAAA,CAAA;;AAG1B,EAAA,MAAA,mBACS,GAAS,oBACV,cAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA,CAAK,CAAS,CAAA,CAAA;AA0C1B,EAAC,MAAA,mBAAA,GAAA,WAAA,CAAA,OAAA,IAAA,cAAA,CAAA,OAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,CAAA;AAED;AACA,EAAA,MAAA,iBAAsC,GAAA,OAA4B,CAAA,MAAA;IAC9D,OAAI,eAAQ,CAAA,YAAA,EAAA,CAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA;kBAAS,EAAK,cAAI,EAAA,mBAAA,EAAA,mBAAA,CAAA,CAAA;SAC1BA,IAAS,CAAA;aACH,EAAA,WAAY;AAClB,IAAA,QAAA,EAAA,CAAOC,GAAK,CAAA,KAAO,EAAA;AACf,MAAA,SAAE,EAAA,wBAA8B;AAChC,MAAA,QAAE,EAAAD,IAAK,CAAA,QAAK,EAAA;QACnB,OAAA,EAAA,MAAA,aAAA,CAAA,CAAA,UAAA,CAAA;QACM,SAAM,EAAC,sEAAmB;AACrC,QAAC,QAAA,EAAA,CAAAC,GAAA,CAAA,KAAA,EAAA;AAED,4EAAmH,EAAA,UAAA,GAAA,YAAA,GAAA,EAAA,CAAA,CAAA;AAC/G,UAAM,YAAa;UACT,QAAI,cAAY;UACb,OAAA,EAAiB,WAAA;AAClC,UAAC,QAAA,EAAAA,GAAA,CAAA,MAAA,EAAA;AAED,YAAS,aACL,EAAA,OACA;AAKA,0BAAsB,EAAE,OAAE;YAChB,WAAS,EAAG,CAAA;AAClB,YAAA,CAAA;WAEO;AA0BX,SAAG,CAAA,EAAAA,GAAA,CAAA,GAAA,EAAA;AACP,UAAC,SAAA,EAAA,gDAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}