@visns-studio/visns-components 4.3.12 → 4.4.0
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.
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
Briefcase,
|
|
8
8
|
Bug,
|
|
9
9
|
Calendar,
|
|
10
|
-
|
|
10
|
+
ChatDots,
|
|
11
11
|
Clipboard,
|
|
12
12
|
DoubleSword,
|
|
13
13
|
Draft,
|
|
@@ -39,11 +39,11 @@ import {
|
|
|
39
39
|
TextAlignLeft,
|
|
40
40
|
Ticket,
|
|
41
41
|
Utensils,
|
|
42
|
-
ChatDots,
|
|
43
42
|
} from 'akar-icons';
|
|
44
|
-
|
|
45
43
|
import CustomFetch from './Fetch';
|
|
46
44
|
import Notification from './Notification';
|
|
45
|
+
import classNames from 'classnames';
|
|
46
|
+
import styles from './styles/Navigation.module.css';
|
|
47
47
|
|
|
48
48
|
function Navigation({
|
|
49
49
|
children,
|
|
@@ -57,10 +57,13 @@ function Navigation({
|
|
|
57
57
|
const location = useLocation();
|
|
58
58
|
const navigate = useNavigate();
|
|
59
59
|
const currentPage = location.pathname.substr(1) || 'dashboard';
|
|
60
|
-
const [isOpen, setOpen] = useState(
|
|
60
|
+
const [isOpen, setOpen] = useState(false);
|
|
61
61
|
const [isScrolled, setIsScrolled] = useState(false);
|
|
62
62
|
const [navData, setNavData] = useState(navConfig);
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
const appNavClasses = classNames(styles['app-nav'], {
|
|
65
|
+
[styles['navscrolled']]: isScrolled,
|
|
66
|
+
});
|
|
64
67
|
|
|
65
68
|
const handleLogout = () => {
|
|
66
69
|
CustomFetch('/logout', 'GET', {}, () => {
|
|
@@ -150,7 +153,7 @@ function Navigation({
|
|
|
150
153
|
questionFill: QuestionFill,
|
|
151
154
|
settingsVertical: SettingsVertical,
|
|
152
155
|
signOut: SignOut,
|
|
153
|
-
|
|
156
|
+
shippingBoxV1: ShippingBoxV1,
|
|
154
157
|
statisticUp: StatisticUp,
|
|
155
158
|
textAlignLeft: TextAlignLeft,
|
|
156
159
|
ticket: Ticket,
|
|
@@ -158,16 +161,19 @@ function Navigation({
|
|
|
158
161
|
};
|
|
159
162
|
|
|
160
163
|
const IconComponent = iconComponents[n.icon];
|
|
164
|
+
const navItemClasses = classNames(
|
|
165
|
+
n.class.split(' ').map((cls) => styles[cls])
|
|
166
|
+
);
|
|
161
167
|
|
|
162
168
|
const renderChildren = () => {
|
|
163
169
|
if (n.children && n.children.length > 0) {
|
|
164
170
|
return (
|
|
165
|
-
<ul>
|
|
171
|
+
<ul className={styles.subnav}>
|
|
166
172
|
{n.children.map(
|
|
167
173
|
(child, childKey) =>
|
|
168
174
|
child.permission === true && (
|
|
169
175
|
<li
|
|
170
|
-
className=
|
|
176
|
+
className={styles['sub-nav-item']}
|
|
171
177
|
key={`nav-child-${childKey}`}
|
|
172
178
|
>
|
|
173
179
|
<Link
|
|
@@ -186,7 +192,7 @@ function Navigation({
|
|
|
186
192
|
};
|
|
187
193
|
|
|
188
194
|
return (
|
|
189
|
-
<li className={
|
|
195
|
+
<li className={navItemClasses}>
|
|
190
196
|
{n.url ? (
|
|
191
197
|
<Link to={n.url}>
|
|
192
198
|
<IconComponent strokeWidth={2} size={18} />
|
|
@@ -231,7 +237,6 @@ function Navigation({
|
|
|
231
237
|
const matchingPermission = permissions.includes(
|
|
232
238
|
nav.permissionKey
|
|
233
239
|
);
|
|
234
|
-
|
|
235
240
|
return {
|
|
236
241
|
...nav,
|
|
237
242
|
permission: matchingPermission,
|
|
@@ -250,7 +255,6 @@ function Navigation({
|
|
|
250
255
|
const matchingPermission = permissions.includes(
|
|
251
256
|
nav.permissionKey
|
|
252
257
|
);
|
|
253
|
-
|
|
254
258
|
return {
|
|
255
259
|
...nav,
|
|
256
260
|
permission: matchingPermission,
|
|
@@ -281,14 +285,12 @@ function Navigation({
|
|
|
281
285
|
useEffect(() => {
|
|
282
286
|
setNavData((prevNavData) => {
|
|
283
287
|
const updateNavItems = (nav) => {
|
|
284
|
-
const cleanUrl = (url) =>
|
|
285
|
-
|
|
288
|
+
const cleanUrl = (url) =>
|
|
289
|
+
url && url.startsWith('/')
|
|
286
290
|
? url.substr(1).split('/')[0]
|
|
287
291
|
: url
|
|
288
292
|
? url.split('/')[0]
|
|
289
293
|
: '';
|
|
290
|
-
};
|
|
291
|
-
|
|
292
294
|
const currentUrl = cleanUrl(currentPage);
|
|
293
295
|
const navUrl = nav.url
|
|
294
296
|
? cleanUrl(nav.url)
|
|
@@ -325,8 +327,6 @@ function Navigation({
|
|
|
325
327
|
return () => {
|
|
326
328
|
window.removeEventListener('scroll', handleScroll);
|
|
327
329
|
};
|
|
328
|
-
|
|
329
|
-
console.info(layout);
|
|
330
330
|
}, []);
|
|
331
331
|
|
|
332
332
|
return layout === 'simple' || layout === 'cms' ? (
|
|
@@ -338,7 +338,7 @@ function Navigation({
|
|
|
338
338
|
>
|
|
339
339
|
<div className="logo">
|
|
340
340
|
<Link to="/">
|
|
341
|
-
<img src={logo} alt="
|
|
341
|
+
<img src={logo} alt="System Logo" />
|
|
342
342
|
</Link>
|
|
343
343
|
</div>
|
|
344
344
|
<div className="awrap">
|
|
@@ -364,9 +364,7 @@ function Navigation({
|
|
|
364
364
|
className={
|
|
365
365
|
isOpen ? 'mobmenu' : 'mobmenu mobmenu--open'
|
|
366
366
|
}
|
|
367
|
-
onClick={() =>
|
|
368
|
-
setOpen(!isOpen);
|
|
369
|
-
}}
|
|
367
|
+
onClick={() => setOpen(!isOpen)}
|
|
370
368
|
>
|
|
371
369
|
<span></span>
|
|
372
370
|
<span></span>
|
|
@@ -394,38 +392,35 @@ function Navigation({
|
|
|
394
392
|
</main>
|
|
395
393
|
</div>
|
|
396
394
|
) : (
|
|
397
|
-
<
|
|
398
|
-
<div className=
|
|
399
|
-
<
|
|
400
|
-
<
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
<
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
)}
|
|
414
|
-
</ul>
|
|
415
|
-
</div>
|
|
416
|
-
<div className="hactions">
|
|
417
|
-
<ul>
|
|
418
|
-
{navData.settings.map((setting, settingKey) =>
|
|
419
|
-
setting.permission === true ? (
|
|
420
|
-
<React.Fragment key={`setting-${settingKey}`}>
|
|
421
|
-
{renderSetting(setting)}
|
|
422
|
-
</React.Fragment>
|
|
423
|
-
) : null
|
|
424
|
-
)}
|
|
425
|
-
</ul>
|
|
426
|
-
</div>
|
|
395
|
+
<div className={styles.hwrap}>
|
|
396
|
+
<div className={styles.logo}>
|
|
397
|
+
<Link to="/">
|
|
398
|
+
<img src={logo} alt="System Logo" />
|
|
399
|
+
</Link>
|
|
400
|
+
</div>
|
|
401
|
+
<div className={styles.navwrap}>
|
|
402
|
+
<ul className={appNavClasses}>
|
|
403
|
+
{navData.navigations.map((nav, navKey) =>
|
|
404
|
+
nav.permission === true || nav.permissionKey === '' ? (
|
|
405
|
+
<React.Fragment key={`nav-item-${navKey}`}>
|
|
406
|
+
{renderNav(nav)}
|
|
407
|
+
</React.Fragment>
|
|
408
|
+
) : null
|
|
409
|
+
)}
|
|
410
|
+
</ul>
|
|
427
411
|
</div>
|
|
428
|
-
|
|
412
|
+
<div className={styles.hactions}>
|
|
413
|
+
<ul>
|
|
414
|
+
{navData.settings.map((setting, settingKey) =>
|
|
415
|
+
setting.permission === true ? (
|
|
416
|
+
<React.Fragment key={`setting-${settingKey}`}>
|
|
417
|
+
{renderSetting(setting)}
|
|
418
|
+
</React.Fragment>
|
|
419
|
+
) : null
|
|
420
|
+
)}
|
|
421
|
+
</ul>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
429
424
|
);
|
|
430
425
|
}
|
|
431
426
|
|
|
@@ -2,22 +2,15 @@ import React, { useState, useEffect, useRef } from 'react';
|
|
|
2
2
|
import { useNavigate } from 'react-router-dom';
|
|
3
3
|
import moment from 'moment';
|
|
4
4
|
import parse from 'html-react-parser';
|
|
5
|
-
import { TooltipWrapper } from 'react-tooltip';
|
|
6
5
|
import { toast } from 'react-toastify';
|
|
7
6
|
import { Bell, CircleX } from 'akar-icons';
|
|
8
|
-
|
|
9
7
|
import CustomFetch from './Fetch';
|
|
8
|
+
import styles from './styles/Notification.module.css';
|
|
10
9
|
|
|
11
10
|
function Notification(props) {
|
|
12
11
|
let interval;
|
|
13
12
|
const navigate = useNavigate();
|
|
14
13
|
const wrapperRef = useRef(null);
|
|
15
|
-
const [containerClass] = useState('notibox');
|
|
16
|
-
const [divClass] = useState('notibox-item');
|
|
17
|
-
const [iconBellBlinkClass] = useState('cis-bell-exclamation noti');
|
|
18
|
-
const [iconBellClass] = useState('cis-bell-exclamation');
|
|
19
|
-
const [iconXClass] = useState('cis-x-circle noti-read');
|
|
20
|
-
const [actionClass] = useState('notibox-actions');
|
|
21
14
|
const [items, setItems] = useState([]);
|
|
22
15
|
const [show, setShow] = useState(false);
|
|
23
16
|
const { setSystemAuth } = props;
|
|
@@ -37,7 +30,6 @@ function Notification(props) {
|
|
|
37
30
|
if (error === 'Unauthenticated.') {
|
|
38
31
|
setSystemAuth(false);
|
|
39
32
|
}
|
|
40
|
-
|
|
41
33
|
toast.error(String(error));
|
|
42
34
|
}
|
|
43
35
|
}
|
|
@@ -62,9 +54,7 @@ function Notification(props) {
|
|
|
62
54
|
setItems(array);
|
|
63
55
|
}
|
|
64
56
|
|
|
65
|
-
let formData = {
|
|
66
|
-
id: id,
|
|
67
|
-
};
|
|
57
|
+
let formData = { id: id };
|
|
68
58
|
|
|
69
59
|
CustomFetch(
|
|
70
60
|
'/ajax/user/notification/markasread',
|
|
@@ -82,30 +72,22 @@ function Notification(props) {
|
|
|
82
72
|
let array = items;
|
|
83
73
|
setItems([]);
|
|
84
74
|
|
|
85
|
-
{
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
75
|
+
array.map((item) => {
|
|
76
|
+
let formData = { id: item.id };
|
|
77
|
+
|
|
78
|
+
CustomFetch(
|
|
79
|
+
'/ajax/user/notification/markasread',
|
|
80
|
+
'POST',
|
|
81
|
+
formData,
|
|
82
|
+
function () {
|
|
83
|
+
fetchNotification();
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
});
|
|
101
87
|
};
|
|
102
88
|
|
|
103
89
|
const toggleNotification = () => {
|
|
104
|
-
|
|
105
|
-
setShow(true);
|
|
106
|
-
} else {
|
|
107
|
-
setShow(false);
|
|
108
|
-
}
|
|
90
|
+
setShow(!show);
|
|
109
91
|
};
|
|
110
92
|
|
|
111
93
|
const showAllNotifications = () => {
|
|
@@ -126,8 +108,7 @@ function Notification(props) {
|
|
|
126
108
|
|
|
127
109
|
return function cleanup() {
|
|
128
110
|
clearInterval(interval);
|
|
129
|
-
|
|
130
|
-
document.addEventListener('mousedown', handleClick, false);
|
|
111
|
+
document.removeEventListener('mousedown', handleClick, false);
|
|
131
112
|
};
|
|
132
113
|
}, []);
|
|
133
114
|
|
|
@@ -143,22 +124,29 @@ function Notification(props) {
|
|
|
143
124
|
size={19}
|
|
144
125
|
strokeWidth={2}
|
|
145
126
|
className={
|
|
146
|
-
items.length > 0
|
|
127
|
+
items.length > 0
|
|
128
|
+
? styles.noti
|
|
129
|
+
: styles['cis-bell-exclamation']
|
|
147
130
|
}
|
|
148
131
|
/>
|
|
149
132
|
</a>
|
|
150
133
|
|
|
151
|
-
{show
|
|
134
|
+
{show && (
|
|
152
135
|
<div ref={wrapperRef}>
|
|
153
136
|
{items.length > 0 ? (
|
|
154
|
-
<div className={
|
|
155
|
-
<div className=
|
|
137
|
+
<div className={styles.notibox}>
|
|
138
|
+
<div className={styles.notiscrollwrap}>
|
|
156
139
|
{items.map((item, index) => (
|
|
157
|
-
<div
|
|
140
|
+
<div
|
|
141
|
+
className={styles['notibox-item']}
|
|
142
|
+
key={item.id}
|
|
143
|
+
>
|
|
158
144
|
<Bell
|
|
159
145
|
size={19}
|
|
160
146
|
strokeWidth={2}
|
|
161
|
-
className={
|
|
147
|
+
className={
|
|
148
|
+
styles.cisBellExclamation
|
|
149
|
+
}
|
|
162
150
|
/>{' '}
|
|
163
151
|
{parse(item.data.label)}{' '}
|
|
164
152
|
<span>
|
|
@@ -173,13 +161,13 @@ function Notification(props) {
|
|
|
173
161
|
size={24}
|
|
174
162
|
data-id={item.id}
|
|
175
163
|
data-index={index}
|
|
176
|
-
className={
|
|
164
|
+
className={styles.notiRead}
|
|
177
165
|
/>
|
|
178
166
|
</button>
|
|
179
167
|
</div>
|
|
180
168
|
))}
|
|
181
169
|
</div>
|
|
182
|
-
<div className={
|
|
170
|
+
<div className={styles['notibox-actions']}>
|
|
183
171
|
<button onClick={showAllNotifications}>
|
|
184
172
|
View All
|
|
185
173
|
</button>
|
|
@@ -189,11 +177,11 @@ function Notification(props) {
|
|
|
189
177
|
</div>
|
|
190
178
|
</div>
|
|
191
179
|
) : (
|
|
192
|
-
<div className={
|
|
193
|
-
<div className={
|
|
180
|
+
<div className={styles.notibox}>
|
|
181
|
+
<div className={styles['notibox-item']}>
|
|
194
182
|
No new notifications available.
|
|
195
183
|
</div>
|
|
196
|
-
<div className={
|
|
184
|
+
<div className={styles['notibox-actions']}>
|
|
197
185
|
<button onClick={showAllNotifications}>
|
|
198
186
|
View All
|
|
199
187
|
</button>
|
|
@@ -201,8 +189,6 @@ function Notification(props) {
|
|
|
201
189
|
</div>
|
|
202
190
|
)}
|
|
203
191
|
</div>
|
|
204
|
-
) : (
|
|
205
|
-
<div></div>
|
|
206
192
|
)}
|
|
207
193
|
</>
|
|
208
194
|
);
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
.hwrap {
|
|
2
|
+
width: 100%;
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.hwrap .logo {
|
|
8
|
+
width: 100px;
|
|
9
|
+
padding: 0 1rem 0 0.5rem;
|
|
10
|
+
margin: 0;
|
|
11
|
+
line-height: 1.45;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.hwrap .logo img {
|
|
15
|
+
width: 100%;
|
|
16
|
+
max-width: 80px;
|
|
17
|
+
height: auto;
|
|
18
|
+
display: block;
|
|
19
|
+
margin: 0 auto;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.branding {
|
|
23
|
+
margin: 0;
|
|
24
|
+
padding: 0;
|
|
25
|
+
font-weight: 700;
|
|
26
|
+
letter-spacing: -1px;
|
|
27
|
+
text-align: center;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.branding .highlight {
|
|
31
|
+
color: white;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.branding .light {
|
|
35
|
+
font-weight: 300;
|
|
36
|
+
color: var(--secondary-color);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.navwrap {
|
|
40
|
+
flex: 1;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.app-nav {
|
|
44
|
+
display: flex;
|
|
45
|
+
flex-wrap: nowrap;
|
|
46
|
+
flex-direction: row;
|
|
47
|
+
padding: 0.85rem 0;
|
|
48
|
+
margin: 0;
|
|
49
|
+
list-style: none;
|
|
50
|
+
align-items: center;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.nav-item {
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
position: relative;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.nav-item a {
|
|
61
|
+
display: flex;
|
|
62
|
+
flex-wrap: nowrap;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: 0.25rem;
|
|
65
|
+
color: var(--tertiary-color);
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
padding: 0.5em;
|
|
68
|
+
margin: 0 0.25em;
|
|
69
|
+
text-decoration: none;
|
|
70
|
+
background: var(--primary-color);
|
|
71
|
+
outline: none;
|
|
72
|
+
border-radius: var(--br);
|
|
73
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.nav-item a svg {
|
|
77
|
+
color: var(--secondary-color);
|
|
78
|
+
display: block;
|
|
79
|
+
width: 100%;
|
|
80
|
+
max-width: 15px;
|
|
81
|
+
height: auto;
|
|
82
|
+
position: relative;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.nav-item:hover a,
|
|
86
|
+
.nav-item.active a {
|
|
87
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
88
|
+
background: var(--primary-color-lighter);
|
|
89
|
+
color: var(--tertiary-color);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.nav-item:hover a svg,
|
|
93
|
+
.nav-item.active a svg {
|
|
94
|
+
color: var(--secondary-color);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.nav-item:hover ul,
|
|
98
|
+
.nav-item.active ul {
|
|
99
|
+
opacity: 1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.nav-item:hover ul {
|
|
103
|
+
display: block;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.nav-item.active a,
|
|
107
|
+
.nav-item.active span {
|
|
108
|
+
background: var(--primary-color-lighter);
|
|
109
|
+
color: var(--tertiary-color);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.nav-item span svg {
|
|
113
|
+
color: var(--secondary-color);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.nav-item.active a svg,
|
|
117
|
+
.nav-item.active span svg {
|
|
118
|
+
color: var(--secondary-color);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.nav-item span {
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-wrap: nowrap;
|
|
124
|
+
align-items: center;
|
|
125
|
+
gap: 0.25rem;
|
|
126
|
+
color: var(--tertiary-color);
|
|
127
|
+
box-sizing: border-box;
|
|
128
|
+
padding: 0.5em;
|
|
129
|
+
line-height: 1.25;
|
|
130
|
+
text-decoration: none;
|
|
131
|
+
background: var(--primary-color);
|
|
132
|
+
border-radius: var(--br);
|
|
133
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.nav-item span:hover {
|
|
137
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
138
|
+
background: var(--primary-color-lighter);
|
|
139
|
+
color: var(--tertiary-color);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.nav-item span:hover svg {
|
|
143
|
+
color: var(--secondary-color);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.nav-item ul {
|
|
147
|
+
width: 200px;
|
|
148
|
+
position: absolute;
|
|
149
|
+
height: auto;
|
|
150
|
+
margin: 0;
|
|
151
|
+
padding: 0;
|
|
152
|
+
list-style: none;
|
|
153
|
+
display: none;
|
|
154
|
+
opacity: 0;
|
|
155
|
+
background: rgba(var(--primary-color-rgb), 0.75);
|
|
156
|
+
border-radius: 5px;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.nav-item ul li {
|
|
160
|
+
display: block;
|
|
161
|
+
position: relative;
|
|
162
|
+
margin: 1px 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.nav-item ul li:last-of-type {
|
|
166
|
+
margin-bottom: 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.nav-item ul li a {
|
|
170
|
+
width: 100%;
|
|
171
|
+
padding: 8px 20px;
|
|
172
|
+
box-sizing: border-box;
|
|
173
|
+
display: block;
|
|
174
|
+
text-decoration: none;
|
|
175
|
+
background: rgba(var(--primary-color-rgb), 0.9);
|
|
176
|
+
color: var(--tertiary-color);
|
|
177
|
+
border-radius: 3px;
|
|
178
|
+
transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
179
|
+
outline: none;
|
|
180
|
+
margin: 0;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.nav-item ul li:hover a {
|
|
184
|
+
background: rgba(var(--primary-color-rgb), 0.8);
|
|
185
|
+
color: var(--highlight-color);
|
|
186
|
+
transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.navscrolled .nav-item a {
|
|
190
|
+
padding: 0.25em 1em;
|
|
191
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.navscrolled .nav-item span {
|
|
195
|
+
padding: 0.25em 1em;
|
|
196
|
+
transition: all 0.15s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.hactions > ul {
|
|
200
|
+
list-style: none;
|
|
201
|
+
display: flex;
|
|
202
|
+
padding: 0 1rem 0 0;
|
|
203
|
+
margin: 0;
|
|
204
|
+
flex-wrap: nowrap;
|
|
205
|
+
flex-direction: row;
|
|
206
|
+
align-items: center;
|
|
207
|
+
justify-content: center;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.hactions > ul li {
|
|
211
|
+
margin: 0 5px;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.hactions > ul a {
|
|
215
|
+
color: var(--tertiary-color);
|
|
216
|
+
box-sizing: border-box;
|
|
217
|
+
padding: 0.35rem;
|
|
218
|
+
text-decoration: none;
|
|
219
|
+
background: none;
|
|
220
|
+
border: 2px solid var(--primary-color-lighter);
|
|
221
|
+
border-radius: 100%;
|
|
222
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
223
|
+
display: flex;
|
|
224
|
+
align-items: center;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.hactions > ul a:hover {
|
|
228
|
+
background: var(--primary-color-lighter);
|
|
229
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.hactions > ul a:hover svg {
|
|
233
|
+
color: var(--highlight-color);
|
|
234
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.hactions button {
|
|
238
|
+
color: var(--tertiary-color);
|
|
239
|
+
box-sizing: border-box;
|
|
240
|
+
padding: 0.35rem;
|
|
241
|
+
text-decoration: none;
|
|
242
|
+
background: none;
|
|
243
|
+
border: 1px solid var(--primary-color-lighter);
|
|
244
|
+
border-radius: 100%;
|
|
245
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
246
|
+
display: flex;
|
|
247
|
+
align-items: center;
|
|
248
|
+
outline: none;
|
|
249
|
+
appearance: none;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.hactions button:hover {
|
|
253
|
+
background: var(--primary-color-lighter);
|
|
254
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.hactions button:hover svg {
|
|
258
|
+
color: var(--highlight-color);
|
|
259
|
+
transition: all 0.65s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
260
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
.notibox {
|
|
2
|
+
background: #fff;
|
|
3
|
+
border: 1px solid var(--primary-color-lighter);
|
|
4
|
+
border-top-color: rgb(204, 204, 204);
|
|
5
|
+
border-right-color: rgb(204, 204, 204);
|
|
6
|
+
border-bottom-color: rgb(204, 204, 204);
|
|
7
|
+
border-left-color: rgb(204, 204, 204);
|
|
8
|
+
border-color: rgba(0, 0, 0, 0.2);
|
|
9
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
|
|
10
|
+
display: block;
|
|
11
|
+
opacity: 1;
|
|
12
|
+
outline: none;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
position: absolute;
|
|
15
|
+
padding: 6px;
|
|
16
|
+
border-radius: var(--br);
|
|
17
|
+
width: 550px;
|
|
18
|
+
overflow-y: scroll;
|
|
19
|
+
transform: translateX(-470px);
|
|
20
|
+
text-align: left;
|
|
21
|
+
color: var(--paragraph-color);
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
transition: all 0.25s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
24
|
+
z-index: 999;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.notibox .notiscrollwrap {
|
|
28
|
+
max-height: 190px;
|
|
29
|
+
overflow-y: auto;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.notibox .notibox-item {
|
|
33
|
+
width: 100%;
|
|
34
|
+
display: block;
|
|
35
|
+
background: #f0f0f0;
|
|
36
|
+
border-radius: var(--br);
|
|
37
|
+
padding: 9px 36px 8px 6px;
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
margin-bottom: 4px;
|
|
40
|
+
position: relative;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.notibox .notibox-item span {
|
|
44
|
+
color: var(--paragraph-color);
|
|
45
|
+
font-size: 80%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.notibox .notibox-item > button {
|
|
49
|
+
position: absolute;
|
|
50
|
+
right: 6px;
|
|
51
|
+
top: 5px;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
padding: 0;
|
|
54
|
+
margin: 0;
|
|
55
|
+
outline: none;
|
|
56
|
+
background: none;
|
|
57
|
+
border: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.notibox .notibox-item > button svg {
|
|
61
|
+
width: 100%;
|
|
62
|
+
max-width: 20px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.notibox .notibox-item .noti-read {
|
|
66
|
+
color: var(--primary-color);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.notibox .notibox-item .cis-bell-exclamation {
|
|
70
|
+
display: none;
|
|
71
|
+
visibility: hidden;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.notibox .notibox-actions {
|
|
75
|
+
width: 100%;
|
|
76
|
+
display: block;
|
|
77
|
+
border-top: 1px solid darken(#f0f0f0, 5%);
|
|
78
|
+
padding: 10px 0 5px 0;
|
|
79
|
+
margin-top: 10px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.notibox .notibox-actions button {
|
|
83
|
+
display: inline-block;
|
|
84
|
+
border-radius: 6px;
|
|
85
|
+
border: 1px solid var(--primary-color-lighter);
|
|
86
|
+
margin-right: 5px;
|
|
87
|
+
padding: 8px;
|
|
88
|
+
font-size: 0.875em;
|
|
89
|
+
outline: none;
|
|
90
|
+
color: var(--tertiary-color);
|
|
91
|
+
background: var(--primary-color);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.notilink {
|
|
95
|
+
background: none;
|
|
96
|
+
padding: 0;
|
|
97
|
+
line-height: inherit;
|
|
98
|
+
border-radius: 0;
|
|
99
|
+
color: inherit;
|
|
100
|
+
display: inline;
|
|
101
|
+
text-decoration: underline;
|
|
102
|
+
border: none;
|
|
103
|
+
font-weight: 700;
|
|
104
|
+
text-decoration: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.notilink:hover {
|
|
108
|
+
background: none;
|
|
109
|
+
color: var(--secondary-color);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.noti {
|
|
113
|
+
animation: notification 1s infinite;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes notification {
|
|
117
|
+
0% {
|
|
118
|
+
color: var(--secondary-color);
|
|
119
|
+
opacity: 0;
|
|
120
|
+
}
|
|
121
|
+
50% {
|
|
122
|
+
color: #c0ff52;
|
|
123
|
+
opacity: 1;
|
|
124
|
+
}
|
|
125
|
+
100% {
|
|
126
|
+
color: var(--secondary-color);
|
|
127
|
+
opacity: 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
package/package.json
CHANGED