ui-soxo-bootstrap-core 2.6.1-dev.20 → 2.6.1-dev.22
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.
- package/core/components/landing-api/landing-api.js +1 -1
- package/core/lib/components/global-header/animations.js +4 -78
- package/core/lib/components/global-header/global-header.js +25 -60
- package/core/lib/components/global-header/global-header.scss +24 -162
- package/core/lib/components/sidemenu/animations.js +2 -84
- package/core/lib/components/sidemenu/sidemenu.js +55 -175
- package/core/lib/components/sidemenu/sidemenu.scss +14 -221
- package/core/lib/elements/basic/country-phone-input/country-phone-input.js +0 -1
- package/core/lib/pages/login/login.js +6 -2
- package/core/modules/steps/action-buttons.js +1 -5
- package/package.json +1 -1
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
|
|
11
11
|
import React, { useState, useEffect, useContext } from 'react';
|
|
12
12
|
|
|
13
|
-
import { motion,
|
|
13
|
+
import { animationControls, motion, useAnimation } from 'framer-motion';
|
|
14
14
|
|
|
15
15
|
import { GlobalContext } from './../../Store';
|
|
16
16
|
|
|
17
|
-
import { Menu, message, Popover } from 'antd';
|
|
17
|
+
import { Menu, message, Skeleton, Space, Popover } from 'antd';
|
|
18
18
|
|
|
19
19
|
import FirebaseUtils from './../../utils/firebase.utils';
|
|
20
20
|
|
|
@@ -24,15 +24,6 @@ import { useTranslation, Trans } from 'react-i18next';
|
|
|
24
24
|
|
|
25
25
|
import { Menus } from '../../models';
|
|
26
26
|
|
|
27
|
-
import {
|
|
28
|
-
sidebarGroupVariants,
|
|
29
|
-
sidebarIntroVariants,
|
|
30
|
-
sidebarItemRevealVariants,
|
|
31
|
-
sidebarLoaderContainerVariants,
|
|
32
|
-
sidebarLoaderRowVariants,
|
|
33
|
-
sidebarMenuSurfaceVariants,
|
|
34
|
-
} from './animations';
|
|
35
|
-
|
|
36
27
|
import './sidemenu.scss';
|
|
37
28
|
|
|
38
29
|
const { SubMenu } = Menu;
|
|
@@ -48,8 +39,7 @@ function CollapsedIconMenu({ menu, collapsed, icon, caption }) {
|
|
|
48
39
|
// Import t and i18n from useTranslation
|
|
49
40
|
const { t, i18n } = useTranslation();
|
|
50
41
|
const { state } = useContext(GlobalContext);
|
|
51
|
-
|
|
52
|
-
const [iconImageFailed, setIconImageFailed] = useState(false);
|
|
42
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
53
43
|
|
|
54
44
|
useEffect(() => {
|
|
55
45
|
const handleResize = () => {
|
|
@@ -62,110 +52,39 @@ function CollapsedIconMenu({ menu, collapsed, icon, caption }) {
|
|
|
62
52
|
return () => window.removeEventListener('resize', handleResize);
|
|
63
53
|
}, []);
|
|
64
54
|
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
setIconImageFailed(false);
|
|
67
|
-
}, [menu?.image_path]);
|
|
68
|
-
|
|
69
|
-
const normalizeIconClass = (iconValue) => {
|
|
70
|
-
const raw = (iconValue || 'fa-user').trim();
|
|
71
|
-
const tokens = (raw || 'fa-user').split(/\s+/).filter(Boolean);
|
|
72
|
-
const tokenSet = new Set(tokens);
|
|
73
|
-
|
|
74
|
-
const modernToLegacyStyleMap = {
|
|
75
|
-
'fa-solid': 'fas',
|
|
76
|
-
'fa-regular': 'far',
|
|
77
|
-
'fa-light': 'fal',
|
|
78
|
-
'fa-brands': 'fab',
|
|
79
|
-
};
|
|
80
|
-
const fa6ToFa5IconMap = {
|
|
81
|
-
'fa-house': 'fa-home',
|
|
82
|
-
'fa-house-user': 'fa-home',
|
|
83
|
-
'fa-gauge': 'fa-tachometer-alt',
|
|
84
|
-
'fa-location-dot': 'fa-map-marker-alt',
|
|
85
|
-
};
|
|
86
|
-
const styleTokens = ['fa', 'fas', 'far', 'fal', 'fab', 'fa-solid', 'fa-regular', 'fa-light', 'fa-brands'];
|
|
87
|
-
|
|
88
|
-
const iconTokens = tokens.filter((token) => token.startsWith('fa-') && !styleTokens.includes(token));
|
|
89
|
-
const hasAnyStyleToken = tokens.some((token) => styleTokens.includes(token));
|
|
90
|
-
|
|
91
|
-
tokenSet.add('fa');
|
|
92
|
-
|
|
93
|
-
tokens.forEach((token) => {
|
|
94
|
-
if (modernToLegacyStyleMap[token]) {
|
|
95
|
-
tokenSet.add(modernToLegacyStyleMap[token]);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
if (!hasAnyStyleToken) {
|
|
100
|
-
tokenSet.add('fas');
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (!iconTokens.length) {
|
|
104
|
-
const normalizedName = raw && !raw.includes(' ') ? (raw.startsWith('fa-') ? raw : `fa-${raw}`) : 'fa-user';
|
|
105
|
-
tokenSet.add(fa6ToFa5IconMap[normalizedName] || normalizedName);
|
|
106
|
-
} else {
|
|
107
|
-
iconTokens.forEach((token) => {
|
|
108
|
-
const mapped = fa6ToFa5IconMap[token];
|
|
109
|
-
if (mapped) {
|
|
110
|
-
tokenSet.add(mapped);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return Array.from(tokenSet).join(' ');
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
const renderMenuGlyph = () => {
|
|
119
|
-
if (menu && menu.image_path && !iconImageFailed) {
|
|
120
|
-
return (
|
|
121
|
-
<img
|
|
122
|
-
className="menu-image-icon"
|
|
123
|
-
src={menu.image_path}
|
|
124
|
-
alt={menu?.caption || caption || 'menu-icon'}
|
|
125
|
-
onError={() => setIconImageFailed(true)}
|
|
126
|
-
loading="lazy"
|
|
127
|
-
/>
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return <i className={normalizeIconClass(icon)} aria-hidden="true" />;
|
|
132
|
-
};
|
|
133
|
-
|
|
134
55
|
const menuText = t(caption);
|
|
135
56
|
const menuContent = (
|
|
136
|
-
|
|
57
|
+
<>
|
|
137
58
|
{/* If value of collapsed is false show caption & icon else hiding caption and showing only icon*/}
|
|
138
59
|
{!collapsed ? (
|
|
139
|
-
|
|
140
|
-
<div
|
|
141
|
-
{
|
|
60
|
+
<div className="menu-collapsed">
|
|
61
|
+
<div>
|
|
62
|
+
{menu && menu.image_path ? <img style={{ width: '25px' }} src={menu.image_path}></img> : <i className={`fa-solid fas ${icon}`} />}
|
|
142
63
|
</div>
|
|
143
64
|
|
|
144
|
-
<div
|
|
145
|
-
<span className="caption"
|
|
65
|
+
<div style={{ color: state.theme.colors.leftSectionColor }}>
|
|
66
|
+
<span className="caption">
|
|
146
67
|
{/* {caption} */}
|
|
147
68
|
{/* <Trans i18nKey="Appointments"></Trans> */}
|
|
148
69
|
{t(`${caption}`)}
|
|
149
70
|
</span>
|
|
150
71
|
</div>
|
|
151
|
-
|
|
72
|
+
</div>
|
|
152
73
|
) : (
|
|
153
|
-
|
|
154
|
-
<span className="anticon
|
|
155
|
-
{
|
|
74
|
+
<div className="menu-collapsed">
|
|
75
|
+
<span className="anticon">
|
|
76
|
+
{menu && menu.image_path ? <img style={{ width: '25px' }} src={menu.image_path}></img> : <i className={`fa-solid fas ${icon}`} />}
|
|
156
77
|
</span>
|
|
157
78
|
|
|
158
|
-
<span
|
|
79
|
+
<span style={{ color: state.theme.colors.colorPrimaryText, paddingLeft: '6px' }}>
|
|
159
80
|
{/* <>{caption}</> */}
|
|
160
81
|
{t(`${caption}`)}
|
|
161
82
|
</span>
|
|
162
|
-
|
|
83
|
+
</div>
|
|
163
84
|
)}
|
|
164
|
-
|
|
85
|
+
</>
|
|
165
86
|
);
|
|
166
87
|
|
|
167
|
-
// Show tooltip labels on desktop collapsed mode, hide on mobile / expanded mode.
|
|
168
|
-
// return isMobile || !collapsed ? menuContent : <Popover content={menuText} placement="right">{menuContent}</Popover>;
|
|
169
88
|
// On mobile, or when the menu is collapsed (based on original logic), don't show the popover tooltip.
|
|
170
89
|
return isMobile || collapsed ? (
|
|
171
90
|
menuContent
|
|
@@ -348,31 +267,17 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
348
267
|
}, [state.theme]);
|
|
349
268
|
|
|
350
269
|
const rootSubmenuKeys = Menus.screenMenus(modules, 'order').map((m) => m.id || m.path || m.caption);
|
|
351
|
-
const prefersReducedMotion = useReducedMotion();
|
|
352
|
-
const shouldAnimate = !prefersReducedMotion;
|
|
353
|
-
const loaderRows = collapsed ? 5 : 7;
|
|
354
270
|
|
|
355
271
|
return (
|
|
356
272
|
<div className="sidemenu">
|
|
357
273
|
{loading ? (
|
|
358
|
-
<
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
>
|
|
364
|
-
{[...Array(4)].map((_, index) => (
|
|
365
|
-
<motion.div key={`intro-loader-${index}`} className="side-loader-chip" variants={sidebarLoaderRowVariants}>
|
|
366
|
-
<span className="side-loader-dot" />
|
|
367
|
-
<span className="side-loader-line" />
|
|
368
|
-
</motion.div>
|
|
369
|
-
))}
|
|
370
|
-
</motion.div>
|
|
274
|
+
<Space className="side-loader">
|
|
275
|
+
<Skeleton.Avatar />
|
|
276
|
+
<Skeleton.Button />
|
|
277
|
+
{/* <Skeleton.Input /> */}
|
|
278
|
+
</Space>
|
|
371
279
|
) : (
|
|
372
|
-
<
|
|
373
|
-
variants={sidebarIntroVariants}
|
|
374
|
-
initial={shouldAnimate ? 'hidden' : false}
|
|
375
|
-
animate={shouldAnimate ? 'visible' : false}
|
|
280
|
+
<div
|
|
376
281
|
className="intro"
|
|
377
282
|
style={{ backgroundColor: state.theme.colors.leftSectionBackground, borderBottom: `2px solid ${state.theme.colors.borderColor}` }}
|
|
378
283
|
>
|
|
@@ -407,7 +312,7 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
407
312
|
{/* If value of collapsed is true render header else not rendering */}
|
|
408
313
|
|
|
409
314
|
{!collapsed ? renderCustomHeader() : ''}
|
|
410
|
-
</
|
|
315
|
+
</div>
|
|
411
316
|
)}
|
|
412
317
|
|
|
413
318
|
{/* Intro Component */}
|
|
@@ -424,49 +329,25 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
424
329
|
|
|
425
330
|
{/* Search for Queries Ends */}
|
|
426
331
|
|
|
427
|
-
<
|
|
428
|
-
className={`menu-item ${!collapsed ? 'open' : 'close'}`}
|
|
429
|
-
style={{ backgroundColor: state.theme.colors.leftSectionBackground }}
|
|
430
|
-
variants={sidebarMenuSurfaceVariants}
|
|
431
|
-
initial={shouldAnimate ? 'hidden' : false}
|
|
432
|
-
animate={shouldAnimate ? 'visible' : false}
|
|
433
|
-
>
|
|
332
|
+
<div className={`menu-item ${!collapsed ? 'open' : 'close'}`} style={{ backgroundColor: state.theme.colors.leftSectionBackground }}>
|
|
434
333
|
{loading ? (
|
|
435
|
-
|
|
436
|
-
className="side-loader-list"
|
|
437
|
-
variants={sidebarLoaderContainerVariants}
|
|
438
|
-
initial={shouldAnimate ? 'hidden' : false}
|
|
439
|
-
animate={shouldAnimate ? 'visible' : false}
|
|
440
|
-
>
|
|
441
|
-
{[...Array(loaderRows)].map((_, rowIndex) => (
|
|
442
|
-
<motion.div key={`menu-loader-${rowIndex}`} className="side-loader-row" variants={sidebarLoaderRowVariants}>
|
|
443
|
-
<span className="side-loader-dot" />
|
|
444
|
-
<span className="side-loader-line" />
|
|
445
|
-
</motion.div>
|
|
446
|
-
))}
|
|
447
|
-
</motion.div>
|
|
334
|
+
<></>
|
|
448
335
|
) : (
|
|
449
|
-
<
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
336
|
+
<Menu
|
|
337
|
+
// selectedKeys={[selected]}
|
|
338
|
+
// style={{ width: 256 }}
|
|
339
|
+
// defaultSelectedKeys={selected}
|
|
340
|
+
// defaultOpenKeys={['']}
|
|
341
|
+
inlineCollapsed={collapsed}
|
|
342
|
+
mode="inline"
|
|
343
|
+
theme={process.env.REACT_APP_THEME}
|
|
344
|
+
selectedKeys={selectedKeys}
|
|
345
|
+
openKeys={openKeys}
|
|
346
|
+
onOpenChange={onOpenChange}
|
|
347
|
+
style={{ backgroundColor: state.theme.colors.leftSectionBackground, color: state.theme.colors.leftSectionColor }}
|
|
348
|
+
// theme={''}
|
|
454
349
|
>
|
|
455
|
-
<Menu
|
|
456
|
-
// selectedKeys={[selected]}
|
|
457
|
-
// style={{ width: 256 }}
|
|
458
|
-
// defaultSelectedKeys={selected}
|
|
459
|
-
// defaultOpenKeys={['']}
|
|
460
|
-
inlineCollapsed={collapsed}
|
|
461
|
-
mode="inline"
|
|
462
|
-
theme={process.env.REACT_APP_THEME}
|
|
463
|
-
selectedKeys={selectedKeys}
|
|
464
|
-
openKeys={openKeys}
|
|
465
|
-
onOpenChange={onOpenChange}
|
|
466
|
-
style={{ backgroundColor: state.theme.colors.leftSectionBackground, color: state.theme.colors.leftSectionColor }}
|
|
467
|
-
// theme={''}
|
|
468
|
-
>
|
|
469
|
-
{/* <Menu.Item
|
|
350
|
+
{/* <Menu.Item
|
|
470
351
|
onClick={() => {
|
|
471
352
|
setSelected([1]);
|
|
472
353
|
history.push("/");
|
|
@@ -531,7 +412,7 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
531
412
|
<CollapsedIconMenu
|
|
532
413
|
menu={menu}
|
|
533
414
|
caption={menu.caption}
|
|
534
|
-
icon={menu.icon_name || 'fa-user'}
|
|
415
|
+
icon={menu.icon_name || 'fa-solid fas fa-user'}
|
|
535
416
|
collapsed={collapsed}
|
|
536
417
|
/>
|
|
537
418
|
</>
|
|
@@ -552,9 +433,9 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
552
433
|
title={
|
|
553
434
|
<span>
|
|
554
435
|
<CollapsedIconMenu
|
|
555
|
-
menu={
|
|
436
|
+
menu={menu}
|
|
556
437
|
caption={submenu.caption}
|
|
557
|
-
icon={submenu.icon_name || 'fa-user'}
|
|
438
|
+
icon={submenu.icon_name || 'fa-solid fas fa-user'}
|
|
558
439
|
collapsed={collapsed}
|
|
559
440
|
/>
|
|
560
441
|
</span>
|
|
@@ -578,7 +459,7 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
578
459
|
<CollapsedIconMenu
|
|
579
460
|
menu={menu}
|
|
580
461
|
caption={menu.caption}
|
|
581
|
-
icon={menu.icon_name || 'fa-user'}
|
|
462
|
+
icon={menu.icon_name || 'fa-solid fas fa-user'}
|
|
582
463
|
collapsed={collapsed}
|
|
583
464
|
/>
|
|
584
465
|
</Menu.Item>
|
|
@@ -601,9 +482,9 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
601
482
|
key={submenu.path || submenu.caption}
|
|
602
483
|
>
|
|
603
484
|
<CollapsedIconMenu
|
|
604
|
-
menu={
|
|
485
|
+
menu={menu}
|
|
605
486
|
caption={submenu.caption}
|
|
606
|
-
icon={submenu.icon_name || 'fa-user'}
|
|
487
|
+
icon={submenu.icon_name || 'fa-solid fas fa-user'}
|
|
607
488
|
collapsed={collapsed}
|
|
608
489
|
/>
|
|
609
490
|
</Menu.Item>
|
|
@@ -627,27 +508,26 @@ export default function SideMenu({ loading, modules = [], callback, appSettings,
|
|
|
627
508
|
// key={`${menu.id}-${randomIndex}`}
|
|
628
509
|
key={menu.path || menu.caption}
|
|
629
510
|
>
|
|
630
|
-
<CollapsedIconMenu menu={menu} caption={menu.caption} icon={menu.icon_name || 'fa-user'} collapsed={collapsed} />
|
|
511
|
+
<CollapsedIconMenu menu={menu} caption={menu.caption} icon={menu.icon_name || 'fa-solid fas fa-user'} collapsed={collapsed} />
|
|
631
512
|
</Menu.Item>
|
|
632
513
|
);
|
|
633
514
|
}
|
|
634
515
|
})}
|
|
635
516
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
</motion.div>
|
|
517
|
+
{loading ? (
|
|
518
|
+
<div class="skeleton-wrapper"></div>
|
|
519
|
+
) : (
|
|
520
|
+
<Menu.Item onClick={handleLogout} key="logout-button">
|
|
521
|
+
<CollapsedIconMenu caption="Logout" icon="fa-solid fas fa-user" collapsed={collapsed} />
|
|
522
|
+
</Menu.Item>
|
|
523
|
+
)}
|
|
524
|
+
</Menu>
|
|
645
525
|
)}
|
|
646
526
|
|
|
647
527
|
{/* Footer Logo */}
|
|
648
528
|
{/* {renderFooter(footerLogo)} */}
|
|
649
529
|
{/* Footer Logo Ends */}
|
|
650
|
-
</
|
|
530
|
+
</div>
|
|
651
531
|
</div>
|
|
652
532
|
);
|
|
653
533
|
}
|
|
@@ -1,52 +1,4 @@
|
|
|
1
1
|
.sidemenu {
|
|
2
|
-
.side-loader-shell {
|
|
3
|
-
margin: 14px 12px 10px;
|
|
4
|
-
padding: 10px;
|
|
5
|
-
border-radius: 14px;
|
|
6
|
-
border: 1px solid rgba(222, 229, 239, 0.9);
|
|
7
|
-
background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(248, 250, 255, 0.95) 100%);
|
|
8
|
-
box-shadow: 0 8px 18px rgba(16, 24, 40, 0.05);
|
|
9
|
-
display: grid;
|
|
10
|
-
gap: 8px;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.side-loader-chip,
|
|
14
|
-
.side-loader-row {
|
|
15
|
-
display: flex;
|
|
16
|
-
align-items: center;
|
|
17
|
-
gap: 10px;
|
|
18
|
-
min-height: 30px;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.side-loader-dot {
|
|
22
|
-
width: 14px;
|
|
23
|
-
height: 14px;
|
|
24
|
-
border-radius: 999px;
|
|
25
|
-
background: linear-gradient(90deg, #eef1f5 0%, #f7f8fb 50%, #eef1f5 100%);
|
|
26
|
-
background-size: 220% 100%;
|
|
27
|
-
animation: side-shimmer 1.4s linear infinite;
|
|
28
|
-
flex: 0 0 auto;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.side-loader-line {
|
|
32
|
-
height: 10px;
|
|
33
|
-
border-radius: 999px;
|
|
34
|
-
width: 100%;
|
|
35
|
-
background: linear-gradient(90deg, #edf0f4 0%, #f8f9fb 50%, #edf0f4 100%);
|
|
36
|
-
background-size: 220% 100%;
|
|
37
|
-
animation: side-shimmer 1.4s linear infinite;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.side-loader-list {
|
|
41
|
-
margin: 8px;
|
|
42
|
-
padding: 8px 6px 18px;
|
|
43
|
-
border-radius: 14px;
|
|
44
|
-
border: 1px solid rgba(229, 234, 242, 0.85);
|
|
45
|
-
background: rgba(255, 255, 255, 0.88);
|
|
46
|
-
display: grid;
|
|
47
|
-
gap: 4px;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
2
|
.intro {
|
|
51
3
|
.logo-wrapper {
|
|
52
4
|
border-bottom: none;
|
|
@@ -88,26 +40,18 @@
|
|
|
88
40
|
padding: 5px 16px;
|
|
89
41
|
position: fixed;
|
|
90
42
|
z-index: 1000;
|
|
91
|
-
|
|
92
|
-
background:
|
|
93
|
-
backdrop-filter: blur(10px);
|
|
43
|
+
width: 17%;
|
|
44
|
+
background: #fff;
|
|
94
45
|
// border-bottom: 1.5px solid #24aeb8;
|
|
95
46
|
&.close {
|
|
96
47
|
width: 6% !important;
|
|
97
48
|
}
|
|
98
49
|
|
|
99
50
|
.logo-wrapper {
|
|
100
|
-
display: flex;
|
|
101
|
-
align-items: center;
|
|
102
|
-
justify-content: space-between;
|
|
103
|
-
gap: 8px;
|
|
104
51
|
// height: 15px;
|
|
105
52
|
// border-bottom: 1px solid #eaeaea;
|
|
106
53
|
|
|
107
54
|
.sidemenu-brand-logo {
|
|
108
|
-
transition:
|
|
109
|
-
transform 220ms ease,
|
|
110
|
-
filter 220ms ease;
|
|
111
55
|
// width: 50%;
|
|
112
56
|
// margin: 10px;
|
|
113
57
|
// width: 200px;
|
|
@@ -131,11 +75,6 @@
|
|
|
131
75
|
}
|
|
132
76
|
|
|
133
77
|
cursor: pointer;
|
|
134
|
-
|
|
135
|
-
&:hover {
|
|
136
|
-
transform: translateY(-1px) scale(1.01);
|
|
137
|
-
filter: saturate(1.05);
|
|
138
|
-
}
|
|
139
78
|
}
|
|
140
79
|
}
|
|
141
80
|
|
|
@@ -155,22 +94,20 @@
|
|
|
155
94
|
}
|
|
156
95
|
|
|
157
96
|
.menu-item {
|
|
158
|
-
padding-top:
|
|
97
|
+
padding-top: 10px;
|
|
159
98
|
// height: calc(100vh - 48px); /* Adjust height */
|
|
160
99
|
height: 100vh;
|
|
161
100
|
margin-top: 0px;
|
|
162
101
|
width: 256px;
|
|
163
102
|
top: 48px;
|
|
164
|
-
border-
|
|
165
|
-
border-bottom: 1px solid rgba(240, 243, 248, 0.8);
|
|
103
|
+
border-bottom: 1px solid #f0f0f0;
|
|
166
104
|
position: fixed;
|
|
167
105
|
height: 100vh;
|
|
168
106
|
margin-top: 0;
|
|
169
107
|
overflow-y: scroll;
|
|
170
108
|
overflow-x: hidden;
|
|
171
109
|
width: 211px;
|
|
172
|
-
padding-bottom:
|
|
173
|
-
background: linear-gradient(180deg, rgba(255, 255, 255, 0.97) 0%, rgba(249, 250, 252, 0.98) 100%);
|
|
110
|
+
padding-bottom: 50px;
|
|
174
111
|
|
|
175
112
|
/* Custom Scrollbar like macOS */
|
|
176
113
|
scrollbar-width: thin; /* For Firefox */
|
|
@@ -205,57 +142,18 @@
|
|
|
205
142
|
margin: 80px;
|
|
206
143
|
}
|
|
207
144
|
|
|
208
|
-
.menu-motion-shell {
|
|
209
|
-
padding: 6px 6px 14px;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
145
|
.ant-menu-inline {
|
|
213
146
|
border: none !important;
|
|
214
147
|
}
|
|
215
148
|
|
|
216
149
|
.menu-collapsed {
|
|
217
|
-
width:
|
|
218
|
-
min-width: 0;
|
|
150
|
+
width: 81px;
|
|
219
151
|
display: flex;
|
|
220
152
|
align-items: center;
|
|
221
153
|
gap: 8px;
|
|
222
154
|
cursor: pointer;
|
|
223
155
|
}
|
|
224
156
|
|
|
225
|
-
.menu-icon-wrap {
|
|
226
|
-
width: 24px;
|
|
227
|
-
height: 24px;
|
|
228
|
-
min-width: 24px;
|
|
229
|
-
border-radius: 8px;
|
|
230
|
-
display: inline-flex;
|
|
231
|
-
align-items: center;
|
|
232
|
-
justify-content: center;
|
|
233
|
-
color: inherit;
|
|
234
|
-
transition:
|
|
235
|
-
background-color 220ms ease,
|
|
236
|
-
transform 220ms ease;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
.menu-image-icon {
|
|
240
|
-
width: 18px;
|
|
241
|
-
height: 18px;
|
|
242
|
-
object-fit: contain;
|
|
243
|
-
display: block;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.menu-label-wrap {
|
|
247
|
-
min-width: 0;
|
|
248
|
-
display: inline-flex;
|
|
249
|
-
align-items: center;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
.caption,
|
|
253
|
-
.menu-label-wrap {
|
|
254
|
-
overflow: hidden;
|
|
255
|
-
text-overflow: ellipsis;
|
|
256
|
-
white-space: nowrap;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
157
|
.menu-collapsed .anticon {
|
|
260
158
|
margin-right: 8px;
|
|
261
159
|
}
|
|
@@ -280,102 +178,6 @@
|
|
|
280
178
|
/* Style selected item */
|
|
281
179
|
.ant-menu {
|
|
282
180
|
background-color: transparent !important;
|
|
283
|
-
padding: 4px 0 28px;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.ant-menu-item,
|
|
287
|
-
.ant-menu-submenu-title {
|
|
288
|
-
width: calc(100% - 12px) !important;
|
|
289
|
-
margin: 3px 6px !important;
|
|
290
|
-
padding-right: 10px !important;
|
|
291
|
-
border-radius: 12px;
|
|
292
|
-
height: 40px !important;
|
|
293
|
-
line-height: 40px !important;
|
|
294
|
-
transition:
|
|
295
|
-
background-color 180ms ease,
|
|
296
|
-
box-shadow 180ms ease,
|
|
297
|
-
transform 180ms ease;
|
|
298
|
-
border: 1px solid transparent;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
.ant-menu-item::after,
|
|
302
|
-
.ant-menu-submenu-title::after {
|
|
303
|
-
display: none !important;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
.ant-menu-submenu-arrow {
|
|
307
|
-
transition:
|
|
308
|
-
transform 200ms ease,
|
|
309
|
-
opacity 200ms ease;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
.ant-menu-item:hover,
|
|
313
|
-
.ant-menu-submenu-title:hover {
|
|
314
|
-
background: linear-gradient(180deg, rgba(247, 248, 251, 0.98) 0%, rgba(242, 244, 248, 0.98) 100%) !important;
|
|
315
|
-
border-color: rgba(224, 229, 238, 0.95);
|
|
316
|
-
transform: translateX(1px);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
.ant-menu-item:hover .menu-icon-wrap,
|
|
320
|
-
.ant-menu-submenu-title:hover .menu-icon-wrap {
|
|
321
|
-
background: rgba(100, 116, 139, 0.1);
|
|
322
|
-
transform: scale(1.03);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
.ant-menu-item-selected,
|
|
326
|
-
.ant-menu-submenu-selected > .ant-menu-submenu-title {
|
|
327
|
-
background: linear-gradient(180deg, rgba(244, 247, 251, 0.98) 0%, rgba(238, 242, 247, 0.98) 100%) !important;
|
|
328
|
-
border-color: rgba(214, 222, 233, 0.95) !important;
|
|
329
|
-
box-shadow:
|
|
330
|
-
inset 0 1px 0 rgba(255, 255, 255, 0.7),
|
|
331
|
-
0 2px 8px rgba(71, 85, 105, 0.08);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.ant-menu-item-selected::before,
|
|
335
|
-
.ant-menu-submenu-selected > .ant-menu-submenu-title::before {
|
|
336
|
-
content: '';
|
|
337
|
-
position: absolute;
|
|
338
|
-
left: 6px;
|
|
339
|
-
top: 8px;
|
|
340
|
-
bottom: 8px;
|
|
341
|
-
width: 3px;
|
|
342
|
-
border-radius: 999px;
|
|
343
|
-
background: linear-gradient(180deg, #64748b 0%, #475569 100%);
|
|
344
|
-
opacity: 0.95;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
.ant-menu-sub.ant-menu-inline {
|
|
348
|
-
background: transparent !important;
|
|
349
|
-
padding-top: 2px;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
.ant-menu-sub.ant-menu-inline > .ant-menu-item {
|
|
353
|
-
height: 36px !important;
|
|
354
|
-
line-height: 36px !important;
|
|
355
|
-
border-radius: 10px;
|
|
356
|
-
margin-left: 18px !important;
|
|
357
|
-
width: calc(100% - 24px) !important;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
.ant-menu-inline-collapsed > .ant-menu-item,
|
|
361
|
-
.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
|
|
362
|
-
padding-inline: calc(50% - 12px) !important;
|
|
363
|
-
width: calc(100% - 12px) !important;
|
|
364
|
-
margin: 4px 6px !important;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
.ant-menu-inline-collapsed .menu-collapsed {
|
|
368
|
-
justify-content: center;
|
|
369
|
-
gap: 0;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.ant-menu-inline-collapsed .menu-label-wrap {
|
|
373
|
-
display: none !important;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
.ant-menu-inline-collapsed .menu-icon-wrap,
|
|
377
|
-
.ant-menu-inline-collapsed .menu-collapsed .anticon {
|
|
378
|
-
margin-right: 0 !important;
|
|
379
181
|
}
|
|
380
182
|
// .ant-menu-inline .ant-menu-item::after{
|
|
381
183
|
// border-right: none;
|
|
@@ -430,15 +232,6 @@
|
|
|
430
232
|
}
|
|
431
233
|
}
|
|
432
234
|
}
|
|
433
|
-
|
|
434
|
-
@keyframes side-shimmer {
|
|
435
|
-
0% {
|
|
436
|
-
background-position: 200% 0;
|
|
437
|
-
}
|
|
438
|
-
100% {
|
|
439
|
-
background-position: -20% 0;
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
235
|
@media only screen and (max-width: 768px) {
|
|
443
236
|
.sidemenu {
|
|
444
237
|
// width: 100% !important;
|
|
@@ -452,7 +245,7 @@
|
|
|
452
245
|
.intro {
|
|
453
246
|
width: 210px;
|
|
454
247
|
height: 60px;
|
|
455
|
-
padding:
|
|
248
|
+
padding: 0px;
|
|
456
249
|
// width: 100% !important;
|
|
457
250
|
// padding: 10px 16px;
|
|
458
251
|
}
|
|
@@ -460,7 +253,6 @@
|
|
|
460
253
|
.menu-item {
|
|
461
254
|
width: 100% !important;
|
|
462
255
|
top: 62px;
|
|
463
|
-
border-right: none;
|
|
464
256
|
}
|
|
465
257
|
|
|
466
258
|
.sidebar-footer {
|
|
@@ -469,16 +261,17 @@
|
|
|
469
261
|
}
|
|
470
262
|
}
|
|
471
263
|
|
|
264
|
+
.ant-menu-item:hover {
|
|
265
|
+
background-color: #e6f7ff !important;
|
|
266
|
+
color: #1a90ff9e !important;
|
|
267
|
+
}
|
|
268
|
+
|
|
472
269
|
/* Tooltip styling if needed */
|
|
473
270
|
.ant-tooltip-inner {
|
|
474
271
|
max-width: 200px;
|
|
475
272
|
white-space: nowrap;
|
|
476
273
|
overflow: hidden;
|
|
477
274
|
text-overflow: ellipsis;
|
|
478
|
-
background-color:
|
|
479
|
-
color: #
|
|
480
|
-
border: 1px solid rgba(224, 229, 238, 0.95);
|
|
481
|
-
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
|
|
482
|
-
border-radius: 10px;
|
|
483
|
-
font-weight: 500;
|
|
275
|
+
background-color: #ffffff !important;
|
|
276
|
+
color: #000000 !important;
|
|
484
277
|
}
|