@softwareone/spi-sv5-library 1.14.3 → 1.15.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.
- package/dist/components/accordion/Accordion.svelte +14 -23
- package/dist/components/announcement/Announcement.svelte +53 -61
- package/dist/components/avatar/Avatar.svelte +30 -12
- package/dist/components/avatar/Avatar.svelte.d.ts +2 -2
- package/dist/components/button/Button.svelte +41 -44
- package/dist/components/card/Card.svelte +4 -6
- package/dist/components/chips/Chips.svelte +37 -36
- package/dist/components/chips/Chips.svelte.d.ts +1 -1
- package/dist/components/confirmation/Confirmation.svelte +6 -6
- package/dist/components/confirmation/Confirmation.svelte.d.ts +2 -2
- package/dist/components/controls/attach-file/AttachFile.svelte +18 -41
- package/dist/components/controls/attach-file/FileManager.svelte +16 -30
- package/dist/components/controls/attach-file/Warnings.svelte +13 -15
- package/dist/components/controls/input/Input.svelte +46 -72
- package/dist/components/controls/input/InputIcon.svelte +13 -13
- package/dist/components/controls/label/Label.svelte +5 -9
- package/dist/components/controls/radio-group/RadioGroup.svelte +25 -39
- package/dist/components/controls/select/Select.svelte +49 -71
- package/dist/components/controls/textarea/TextArea.svelte +36 -45
- package/dist/components/controls/toggle/Toggle.svelte +35 -37
- package/dist/components/delete-confirmation/DeleteConfirmation.svelte +3 -5
- package/dist/components/error-page/ErrorPage.svelte +9 -18
- package/dist/components/footer/Footer.svelte +9 -14
- package/dist/components/footer/Footer.svelte.d.ts +0 -1
- package/dist/components/footer/FooterLogo.svelte +16 -0
- package/dist/components/footer/FooterLogo.svelte.d.ts +26 -0
- package/dist/components/form/Form.svelte +1 -1
- package/dist/components/header/Header.svelte +39 -45
- package/dist/components/header/HeaderAccount.svelte +21 -33
- package/dist/components/header/HeaderLoader.svelte +13 -8
- package/dist/components/highlight-panel/HighlightPanel.svelte +29 -34
- package/dist/components/home/Home.svelte +18 -36
- package/dist/components/link/Link.svelte +1 -1
- package/dist/components/menu/Menu.svelte +16 -21
- package/dist/components/menu/MenuItem.svelte +25 -29
- package/dist/components/menu/Sidebar.svelte +32 -40
- package/dist/components/menu/utils.d.ts +1 -1
- package/dist/components/menu/utils.js +6 -7
- package/dist/components/modal/Modal.svelte +8 -11
- package/dist/components/modal/ModalContent.svelte +3 -3
- package/dist/components/modal/ModalFooter.svelte +5 -5
- package/dist/components/modal/ModalHeader.svelte +6 -11
- package/dist/components/notification/Notification.svelte +20 -27
- package/dist/components/processing/Processing.svelte +9 -16
- package/dist/components/progress-page/ProgressPage.svelte +13 -18
- package/dist/components/progress-wizard/ProgressWizard.svelte +43 -54
- package/dist/components/search/Search.svelte +24 -29
- package/dist/components/spinner/Spinner.svelte +1 -1
- package/dist/components/switcher/Switcher.svelte +14 -23
- package/dist/components/table/ActionsColumn.svelte +13 -33
- package/dist/components/table/AdvancedFilter.svelte +39 -74
- package/dist/components/table/Body.svelte +9 -18
- package/dist/components/table/ColumnVisibilityDropdown.svelte +24 -55
- package/dist/components/table/Footer.svelte +2 -4
- package/dist/components/table/Header.svelte +23 -44
- package/dist/components/table/PageSize.svelte +24 -36
- package/dist/components/table/Pagination.svelte +49 -35
- package/dist/components/table/RowCheckBox.svelte +5 -12
- package/dist/components/table/Skeleton.svelte +16 -25
- package/dist/components/table/Table.svelte +50 -38
- package/dist/components/table/Table.svelte.d.ts +5 -1
- package/dist/components/table/types.d.ts +9 -1
- package/dist/components/table/utils.d.ts +5 -1
- package/dist/components/table/utils.js +8 -8
- package/dist/components/tabs/Tabs.svelte +16 -20
- package/dist/components/toast/Toast.svelte +27 -30
- package/dist/components/tooltip/Tooltip.svelte +15 -19
- package/dist/components/waffle/Waffle.svelte +9 -13
- package/dist/components/waffle/WaffleItems.svelte +10 -13
- package/dist/styles/index.css +3 -0
- package/dist/styles/reset.css +19 -0
- package/dist/styles/tokens/index.css +2 -0
- package/dist/styles/tokens/primitives/borders.css +17 -0
- package/dist/styles/tokens/primitives/colors.css +41 -0
- package/dist/styles/tokens/primitives/index.css +7 -0
- package/dist/styles/tokens/primitives/motion.css +11 -0
- package/dist/styles/tokens/primitives/opacity.css +6 -0
- package/dist/styles/tokens/primitives/shadows.css +11 -0
- package/dist/styles/tokens/primitives/sizing.css +19 -0
- package/dist/styles/tokens/primitives/typography.css +13 -0
- package/dist/styles/tokens/semantic/colors.css +78 -0
- package/dist/styles/tokens/semantic/index.css +2 -0
- package/dist/styles/tokens/semantic/shadows.css +9 -0
- package/dist/styles/utilities.css +73 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/url.d.ts +3 -0
- package/dist/utils/url.js +15 -0
- package/package.json +3 -2
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
let { title, homeItems }: Props = $props();
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
|
-
<h1 class="home-title">
|
|
12
|
+
<h1 class="home-title spi-text-semibold-4">
|
|
13
13
|
{title}
|
|
14
14
|
</h1>
|
|
15
15
|
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
<a href={homeItem.url} class="home-item">
|
|
19
19
|
<img src={homeItem.homeIcon} alt={homeItem.text} />
|
|
20
20
|
<div>
|
|
21
|
-
<h2>{homeItem.text}</h2>
|
|
22
|
-
<p>{homeItem.detail}</p>
|
|
21
|
+
<h2 class="spi-text-semibold-3">{homeItem.text}</h2>
|
|
22
|
+
<p class="spi-text-regular-2">{homeItem.detail}</p>
|
|
23
23
|
</div>
|
|
24
24
|
</a>
|
|
25
25
|
{/each}
|
|
@@ -27,20 +27,12 @@
|
|
|
27
27
|
|
|
28
28
|
<style>
|
|
29
29
|
.home-title {
|
|
30
|
-
padding-bottom:
|
|
31
|
-
font-size: 18px;
|
|
32
|
-
line-height: 1.55;
|
|
33
|
-
font-weight: 600;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.home-container {
|
|
37
|
-
--black: #000;
|
|
38
|
-
--white: #fff;
|
|
30
|
+
padding-bottom: var(--spi-size-4);
|
|
39
31
|
}
|
|
40
32
|
|
|
41
33
|
.home-container.grid {
|
|
42
34
|
display: grid;
|
|
43
|
-
gap:
|
|
35
|
+
gap: var(--spi-size-6);
|
|
44
36
|
|
|
45
37
|
@media (width >= 640px) {
|
|
46
38
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
@@ -59,45 +51,35 @@
|
|
|
59
51
|
display: flex;
|
|
60
52
|
max-height: 190px;
|
|
61
53
|
max-width: 770px;
|
|
62
|
-
gap:
|
|
63
|
-
padding:
|
|
64
|
-
border-radius:
|
|
65
|
-
background: var(--
|
|
54
|
+
gap: var(--spi-size-4);
|
|
55
|
+
padding: var(--spi-size-3);
|
|
56
|
+
border-radius: var(--spi-rounded-2xl);
|
|
57
|
+
background: var(--spi-color-surface-default);
|
|
66
58
|
transition:
|
|
67
|
-
box-shadow
|
|
68
|
-
transform
|
|
69
|
-
box-shadow:
|
|
70
|
-
0 1px 16px 0 rgba(107, 113, 128, 0.1),
|
|
71
|
-
0 1px 3px 0 rgba(107, 113, 128, 0.2);
|
|
59
|
+
box-shadow var(--spi-duration-normal) var(--spi-ease-in-out),
|
|
60
|
+
transform var(--spi-duration-normal) var(--spi-ease-in-out);
|
|
61
|
+
box-shadow: var(--spi-shadow-card);
|
|
72
62
|
|
|
73
63
|
&:hover {
|
|
74
64
|
transform: translateY(-2px);
|
|
75
65
|
box-shadow:
|
|
76
|
-
0 4px 20px 0
|
|
77
|
-
0 2px 6px 0
|
|
66
|
+
0 4px 20px 0 color-mix(in srgb, var(--spi-color-primary-light) 50%, transparent),
|
|
67
|
+
0 2px 6px 0 color-mix(in srgb, var(--spi-color-neutral-base) 50%, transparent);
|
|
78
68
|
}
|
|
79
69
|
|
|
80
70
|
> img {
|
|
81
|
-
width:
|
|
82
|
-
height:
|
|
71
|
+
width: var(--spi-size-9);
|
|
72
|
+
height: var(--spi-size-9);
|
|
83
73
|
margin: auto 0;
|
|
84
74
|
filter: invert(27%) sepia(99%) saturate(4729%) hue-rotate(240deg) brightness(101%)
|
|
85
75
|
contrast(106%);
|
|
86
76
|
}
|
|
87
77
|
|
|
88
78
|
> div {
|
|
89
|
-
color: var(--
|
|
79
|
+
color: var(--spi-color-text-primary);
|
|
90
80
|
|
|
91
81
|
> h2 {
|
|
92
|
-
padding-bottom:
|
|
93
|
-
font-size: 16px;
|
|
94
|
-
line-height: 1.5;
|
|
95
|
-
font-weight: 600;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
> p {
|
|
99
|
-
font-size: 14px;
|
|
100
|
-
line-height: 1.42;
|
|
82
|
+
padding-bottom: var(--spi-size-2);
|
|
101
83
|
}
|
|
102
84
|
}
|
|
103
85
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { page } from '$app/state';
|
|
3
2
|
import { fade } from 'svelte/transition';
|
|
4
3
|
|
|
4
|
+
import { existRoute, getFirstPathSegment, getNormalizedPathname } from '../../utils/index.js';
|
|
5
5
|
import MainMenuItem from './MenuItem.svelte';
|
|
6
6
|
import type { MenuItem } from './types.js';
|
|
7
7
|
|
|
@@ -20,14 +20,9 @@
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
const isActiveMenuItem = (url: string) => {
|
|
23
|
-
const pathname =
|
|
24
|
-
const
|
|
25
|
-
return existRoute(
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const existRoute = (url: string, pathname: string) => {
|
|
29
|
-
const regex = new RegExp(`${url}(?![\\w-])`);
|
|
30
|
-
return regex.test(pathname);
|
|
23
|
+
const pathname = getNormalizedPathname();
|
|
24
|
+
const firstPathSegment = getFirstPathSegment(pathname);
|
|
25
|
+
return existRoute(firstPathSegment, url);
|
|
31
26
|
};
|
|
32
27
|
|
|
33
28
|
const onHandleMenu = () => {
|
|
@@ -70,7 +65,7 @@
|
|
|
70
65
|
.menu-backdrop {
|
|
71
66
|
position: fixed;
|
|
72
67
|
inset: 0;
|
|
73
|
-
background-color:
|
|
68
|
+
background-color: var(--spi-color-backdrop);
|
|
74
69
|
cursor: pointer;
|
|
75
70
|
z-index: 30;
|
|
76
71
|
border: none;
|
|
@@ -78,16 +73,16 @@
|
|
|
78
73
|
|
|
79
74
|
.menu-nav {
|
|
80
75
|
position: absolute;
|
|
81
|
-
top:
|
|
82
|
-
left:
|
|
83
|
-
bottom:
|
|
76
|
+
top: var(--spi-size-20);
|
|
77
|
+
left: var(--spi-size-6);
|
|
78
|
+
bottom: var(--spi-size-6);
|
|
84
79
|
display: flex;
|
|
85
|
-
border:
|
|
86
|
-
border-bottom-left-radius:
|
|
87
|
-
border-bottom-right-radius:
|
|
88
|
-
background-color:
|
|
89
|
-
box-shadow:
|
|
90
|
-
min-height: calc(100vh -
|
|
80
|
+
border: var(--spi-border-1) solid var(--spi-color-border-default);
|
|
81
|
+
border-bottom-left-radius: var(--spi-rounded-xl);
|
|
82
|
+
border-bottom-right-radius: var(--spi-rounded-xl);
|
|
83
|
+
background-color: var(--spi-color-surface-default);
|
|
84
|
+
box-shadow: var(--spi-shadow-dropdown);
|
|
85
|
+
min-height: calc(100vh - var(--spi-size-20) - 55px);
|
|
91
86
|
z-index: 40;
|
|
92
87
|
width: auto;
|
|
93
88
|
}
|
|
@@ -95,8 +90,8 @@
|
|
|
95
90
|
.menu-list {
|
|
96
91
|
display: flex;
|
|
97
92
|
flex-direction: column;
|
|
98
|
-
gap:
|
|
99
|
-
padding:
|
|
93
|
+
gap: var(--spi-size-1);
|
|
94
|
+
padding: var(--spi-size-3);
|
|
100
95
|
width: 150px;
|
|
101
96
|
overflow-y: auto;
|
|
102
97
|
overflow-x: hidden;
|
|
@@ -23,44 +23,41 @@
|
|
|
23
23
|
]}
|
|
24
24
|
onclick={() => onClick?.(item)}
|
|
25
25
|
>
|
|
26
|
-
<span class="material-icons-outlined icon-span">{item.icon}</span>
|
|
27
|
-
<h2 class="item-name-span" class:hidden={isCollapsed}>
|
|
26
|
+
<span class="material-icons-outlined icon-span spi-text-regular-5">{item.icon}</span>
|
|
27
|
+
<h2 class="item-name-span spi-text-regular-2" class:hidden={isCollapsed}>
|
|
28
|
+
{item.text}
|
|
29
|
+
</h2>
|
|
28
30
|
</a>
|
|
29
31
|
</Tooltip>
|
|
30
32
|
</li>
|
|
31
33
|
|
|
32
34
|
<style>
|
|
33
35
|
.item {
|
|
34
|
-
min-height:
|
|
35
|
-
padding:
|
|
36
|
-
border-radius:
|
|
36
|
+
min-height: var(--spi-size-7);
|
|
37
|
+
padding: var(--spi-size-2);
|
|
38
|
+
border-radius: var(--spi-rounded-lg);
|
|
37
39
|
justify-content: flex-start;
|
|
38
40
|
align-items: center;
|
|
39
|
-
gap:
|
|
41
|
+
gap: var(--spi-size-2);
|
|
40
42
|
display: inline-flex;
|
|
41
43
|
background: none;
|
|
42
44
|
border: none;
|
|
43
45
|
cursor: pointer;
|
|
44
|
-
transition: background-color
|
|
46
|
+
transition: background-color var(--spi-duration-normal) var(--spi-ease-default);
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
.item-name-span {
|
|
48
50
|
text-align: left;
|
|
49
|
-
color:
|
|
50
|
-
font-size: 14px;
|
|
51
|
-
font-weight: 400;
|
|
52
|
-
line-height: 20px;
|
|
51
|
+
color: var(--spi-color-text-primary);
|
|
53
52
|
word-wrap: break-word;
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
.icon-span {
|
|
57
|
-
color: black;
|
|
58
|
-
font-size: 20px;
|
|
59
|
-
font-weight: 400;
|
|
60
|
-
line-height: 20px;
|
|
61
56
|
word-wrap: break-word;
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
line-height: normal;
|
|
58
|
+
color: var(--spi-color-text-primary);
|
|
59
|
+
border-radius: var(--spi-rounded-full);
|
|
60
|
+
transition: background-color var(--spi-duration-normal) var(--spi-ease-default);
|
|
64
61
|
}
|
|
65
62
|
|
|
66
63
|
.expanded {
|
|
@@ -68,34 +65,33 @@
|
|
|
68
65
|
}
|
|
69
66
|
|
|
70
67
|
.expanded:hover:not(.active-expanded) {
|
|
71
|
-
background-color:
|
|
68
|
+
background-color: var(--spi-color-surface-subtle);
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
.active-expanded {
|
|
75
|
-
background-color:
|
|
76
|
-
color:
|
|
72
|
+
background-color: var(--spi-color-primary-lighter);
|
|
73
|
+
color: var(--spi-color-primary-base);
|
|
77
74
|
cursor: default;
|
|
78
75
|
}
|
|
79
76
|
|
|
80
77
|
.collapsed {
|
|
81
|
-
width: 68px;
|
|
82
78
|
justify-content: center;
|
|
83
79
|
position: relative;
|
|
84
80
|
width: 100%;
|
|
85
81
|
}
|
|
86
82
|
|
|
87
83
|
.collapsed .icon-span:hover {
|
|
88
|
-
background-color:
|
|
84
|
+
background-color: var(--spi-color-surface-subtle);
|
|
89
85
|
}
|
|
90
86
|
|
|
91
87
|
.active-collapsed {
|
|
92
|
-
background-color:
|
|
93
|
-
border-radius:
|
|
94
|
-
color:
|
|
88
|
+
background-color: var(--spi-color-primary-lighter);
|
|
89
|
+
border-radius: var(--spi-rounded-full);
|
|
90
|
+
color: var(--spi-color-primary-base);
|
|
95
91
|
}
|
|
96
92
|
|
|
97
93
|
.active-collapsed:hover {
|
|
98
|
-
background-color:
|
|
94
|
+
background-color: var(--spi-color-primary-lighter);
|
|
99
95
|
cursor: default;
|
|
100
96
|
}
|
|
101
97
|
|
|
@@ -103,7 +99,7 @@
|
|
|
103
99
|
.active-collapsed .icon-span,
|
|
104
100
|
.active-expanded .item-name-span,
|
|
105
101
|
.active-collapsed .item-name-span {
|
|
106
|
-
color:
|
|
102
|
+
color: var(--spi-color-primary-base);
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
.item.collapsed:focus,
|
|
@@ -115,8 +111,8 @@
|
|
|
115
111
|
|
|
116
112
|
.item.collapsed:focus-visible .icon-span,
|
|
117
113
|
.item.expanded:focus-visible {
|
|
118
|
-
box-shadow: 0 0 0
|
|
119
|
-
background-color:
|
|
114
|
+
box-shadow: 0 0 0 var(--spi-border-2) var(--spi-color-primary-base);
|
|
115
|
+
background-color: var(--spi-color-primary-lighter);
|
|
120
116
|
outline: none;
|
|
121
117
|
}
|
|
122
118
|
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
<section class="menu-header">
|
|
39
39
|
<div class="menu-title" class:hidden={isCollapsed}>
|
|
40
40
|
<div class="menu">
|
|
41
|
-
<h2 class="menu-span">Menu</h2>
|
|
41
|
+
<h2 class="menu-span spi-text-semibold-2">Menu</h2>
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
44
44
|
<div class="category-items">
|
|
45
45
|
<button type="button" class="button" onclick={toggleSidebar}>
|
|
46
|
-
<span class="material-icons-outlined icon-span"
|
|
47
|
-
{isCollapsed ? 'menu' : 'menu_open'}
|
|
48
|
-
|
|
46
|
+
<span class="material-icons-outlined icon-span spi-text-regular-5"
|
|
47
|
+
>{isCollapsed ? 'menu' : 'menu_open'}</span
|
|
48
|
+
>
|
|
49
49
|
</button>
|
|
50
50
|
</div>
|
|
51
51
|
</section>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<section class="content">
|
|
55
55
|
{#each subMenuItems as subMenuItem, index (index)}
|
|
56
56
|
<section class="category-content">
|
|
57
|
-
<h2 class="category-span" class:hidden={isCollapsed}>
|
|
57
|
+
<h2 class="category-span spi-text-regular-1" class:hidden={isCollapsed}>
|
|
58
58
|
{subMenuItem.category}
|
|
59
59
|
</h2>
|
|
60
60
|
<menu class="category-items-details">
|
|
@@ -79,40 +79,40 @@
|
|
|
79
79
|
<style>
|
|
80
80
|
.side-menu {
|
|
81
81
|
display: inline-flex;
|
|
82
|
-
transition: width
|
|
82
|
+
transition: width var(--spi-duration-slow) var(--spi-ease-default);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.menu-content {
|
|
86
86
|
width: 100%;
|
|
87
87
|
height: 100%;
|
|
88
|
-
padding:
|
|
89
|
-
background:
|
|
90
|
-
border-right:
|
|
88
|
+
padding: var(--spi-size-4);
|
|
89
|
+
background: var(--spi-color-surface-default);
|
|
90
|
+
border-right: var(--spi-border-1) solid var(--spi-color-border-default);
|
|
91
91
|
flex-direction: column;
|
|
92
92
|
justify-content: flex-start;
|
|
93
93
|
align-items: center;
|
|
94
|
-
gap:
|
|
94
|
+
gap: var(--spi-size-8);
|
|
95
95
|
display: flex;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
.header {
|
|
99
99
|
align-self: stretch;
|
|
100
100
|
flex-direction: column;
|
|
101
|
-
gap:
|
|
101
|
+
gap: var(--spi-size-4);
|
|
102
102
|
display: flex;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.menu-header {
|
|
106
|
-
padding-bottom:
|
|
107
|
-
border-bottom:
|
|
106
|
+
padding-bottom: var(--spi-size-2);
|
|
107
|
+
border-bottom: var(--spi-border-1) solid var(--spi-color-border-default);
|
|
108
108
|
gap: 10px;
|
|
109
109
|
display: inline-flex;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
.menu-title {
|
|
113
113
|
flex: 1 1 0;
|
|
114
|
-
padding-top:
|
|
115
|
-
padding-bottom:
|
|
114
|
+
padding-top: var(--spi-size-2);
|
|
115
|
+
padding-bottom: var(--spi-size-2);
|
|
116
116
|
display: flex;
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -123,35 +123,30 @@
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
.menu-span {
|
|
126
|
-
color:
|
|
127
|
-
font-size: 14px;
|
|
128
|
-
font-weight: 600;
|
|
129
|
-
line-height: 20px;
|
|
126
|
+
color: var(--spi-color-text-primary);
|
|
130
127
|
word-wrap: break-word;
|
|
131
128
|
}
|
|
132
129
|
|
|
133
130
|
.category-items {
|
|
134
|
-
padding:
|
|
135
|
-
gap:
|
|
131
|
+
padding: var(--spi-size-2);
|
|
132
|
+
gap: var(--spi-size-2);
|
|
136
133
|
display: flex;
|
|
137
134
|
}
|
|
138
135
|
|
|
139
136
|
.content {
|
|
140
137
|
flex-direction: column;
|
|
141
|
-
gap:
|
|
138
|
+
gap: var(--spi-size-6);
|
|
142
139
|
display: flex;
|
|
143
140
|
}
|
|
144
141
|
|
|
145
142
|
.category-content {
|
|
146
143
|
flex-direction: column;
|
|
147
|
-
gap:
|
|
144
|
+
gap: var(--spi-size-2);
|
|
148
145
|
display: flex;
|
|
149
146
|
}
|
|
150
147
|
|
|
151
148
|
.category-span {
|
|
152
|
-
color:
|
|
153
|
-
font-size: 12px;
|
|
154
|
-
font-weight: 400;
|
|
149
|
+
color: var(--spi-color-text-muted);
|
|
155
150
|
word-wrap: break-word;
|
|
156
151
|
}
|
|
157
152
|
|
|
@@ -162,16 +157,13 @@
|
|
|
162
157
|
}
|
|
163
158
|
|
|
164
159
|
button:focus-visible {
|
|
165
|
-
box-shadow: 0 0 0
|
|
166
|
-
background-color:
|
|
160
|
+
box-shadow: 0 0 0 var(--spi-border-2) var(--spi-color-border-focus);
|
|
161
|
+
background-color: var(--spi-color-primary-lighter);
|
|
167
162
|
outline: none;
|
|
168
163
|
}
|
|
169
164
|
|
|
170
165
|
.icon-span {
|
|
171
|
-
color:
|
|
172
|
-
font-size: 20px;
|
|
173
|
-
font-weight: 400;
|
|
174
|
-
line-height: 20px;
|
|
166
|
+
color: var(--spi-color-neutral-darkest);
|
|
175
167
|
word-wrap: break-word;
|
|
176
168
|
}
|
|
177
169
|
|
|
@@ -192,10 +184,10 @@
|
|
|
192
184
|
}
|
|
193
185
|
|
|
194
186
|
.collapsed .menu-content {
|
|
195
|
-
padding:
|
|
187
|
+
padding: var(--spi-size-2);
|
|
196
188
|
}
|
|
197
189
|
.collapsed .content {
|
|
198
|
-
padding:
|
|
190
|
+
padding: var(--spi-size-2);
|
|
199
191
|
}
|
|
200
192
|
.collapsed .menu-header {
|
|
201
193
|
align-items: center;
|
|
@@ -204,24 +196,24 @@
|
|
|
204
196
|
.collapsed .menu-header {
|
|
205
197
|
justify-content: flex-start;
|
|
206
198
|
align-items: center;
|
|
207
|
-
padding:
|
|
199
|
+
padding: var(--spi-size-2);
|
|
208
200
|
}
|
|
209
201
|
|
|
210
202
|
.button {
|
|
211
203
|
background: transparent;
|
|
212
204
|
border: none;
|
|
213
205
|
cursor: pointer;
|
|
214
|
-
border-radius:
|
|
215
|
-
width:
|
|
216
|
-
height:
|
|
206
|
+
border-radius: var(--spi-rounded-full);
|
|
207
|
+
width: var(--spi-size-9);
|
|
208
|
+
height: var(--spi-size-9);
|
|
217
209
|
display: flex;
|
|
218
210
|
align-items: center;
|
|
219
211
|
justify-content: center;
|
|
220
|
-
transition: background-color
|
|
212
|
+
transition: background-color var(--spi-duration-normal) var(--spi-ease-default);
|
|
221
213
|
}
|
|
222
214
|
|
|
223
215
|
.button:hover {
|
|
224
|
-
background-color:
|
|
216
|
+
background-color: var(--spi-color-surface-subtle);
|
|
225
217
|
}
|
|
226
218
|
|
|
227
219
|
@media (max-width: 768px) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { MainMenu, SubMenuItem } from './types.js';
|
|
2
|
-
export declare const getSubMenuItemsFromMenu: (items: MainMenu[],
|
|
2
|
+
export declare const getSubMenuItemsFromMenu: (items: MainMenu[], excludedRoutes?: string[]) => SubMenuItem[];
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { existRoute, getFirstPathSegment, getNormalizedPathname } from '../../utils/index.js';
|
|
2
|
+
export const getSubMenuItemsFromMenu = (items, excludedRoutes) => {
|
|
3
|
+
const pathname = getNormalizedPathname();
|
|
4
|
+
if (excludedRoutes?.includes(pathname))
|
|
4
5
|
return [];
|
|
5
|
-
const
|
|
6
|
-
const urlValue = matchedPath?.[0] ?? '';
|
|
6
|
+
const firstPathSegment = getFirstPathSegment(pathname);
|
|
7
7
|
const matchedMenu = items.find((menu) => {
|
|
8
|
-
|
|
9
|
-
return regex.test(menu.url);
|
|
8
|
+
return existRoute(firstPathSegment, menu.url);
|
|
10
9
|
});
|
|
11
10
|
return matchedMenu?.children ?? [];
|
|
12
11
|
};
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
28
|
<div class="modal-backdrop">
|
|
29
|
-
<div class="modal-container {width}">
|
|
29
|
+
<div class="modal-container {width} spi-text-regular-2">
|
|
30
30
|
<div
|
|
31
31
|
onclose={onHandleClose}
|
|
32
32
|
class="modal"
|
|
@@ -52,20 +52,17 @@
|
|
|
52
52
|
justify-content: center;
|
|
53
53
|
width: 100%;
|
|
54
54
|
height: 100%;
|
|
55
|
-
background-color:
|
|
55
|
+
background-color: var(--spi-color-backdrop);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
.modal-container {
|
|
59
59
|
width: var(--modal-width);
|
|
60
60
|
max-height: 90%;
|
|
61
|
-
border-radius:
|
|
62
|
-
background-color:
|
|
61
|
+
border-radius: var(--spi-rounded-2xl);
|
|
62
|
+
background-color: var(--spi-color-surface-default);
|
|
63
63
|
margin: auto;
|
|
64
64
|
overflow-y: auto;
|
|
65
|
-
box-shadow:
|
|
66
|
-
0px 1px 10px 0px rgba(51, 56, 64, 0.12),
|
|
67
|
-
0px 2px 4px -1px rgba(51, 56, 64, 0.2),
|
|
68
|
-
0px 4px 5px 0px rgba(51, 56, 64, 0.14);
|
|
65
|
+
box-shadow: var(--spi-shadow-card-hover);
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
.modal {
|
|
@@ -93,12 +90,12 @@
|
|
|
93
90
|
}
|
|
94
91
|
|
|
95
92
|
.modal-container::-webkit-scrollbar-thumb {
|
|
96
|
-
background:
|
|
97
|
-
border-radius:
|
|
93
|
+
background: var(--spi-color-neutral-dark);
|
|
94
|
+
border-radius: var(--spi-rounded-full);
|
|
98
95
|
}
|
|
99
96
|
|
|
100
97
|
.modal-container::-webkit-scrollbar-thumb:hover {
|
|
101
|
-
background:
|
|
98
|
+
background: var(--spi-color-neutral-darker);
|
|
102
99
|
}
|
|
103
100
|
|
|
104
101
|
:global(html:has(.modal-backdrop)) {
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
display: flex;
|
|
20
20
|
flex-direction: column;
|
|
21
21
|
align-items: flex-start;
|
|
22
|
-
gap:
|
|
22
|
+
gap: var(--spi-size-6);
|
|
23
23
|
align-self: stretch;
|
|
24
|
-
background:
|
|
24
|
+
background: var(--spi-color-surface-default);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.padding {
|
|
28
|
-
padding:
|
|
28
|
+
padding: var(--spi-size-6);
|
|
29
29
|
}
|
|
30
30
|
</style>
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
.modal-footer,
|
|
19
19
|
.button-section {
|
|
20
20
|
display: flex;
|
|
21
|
-
gap:
|
|
21
|
+
gap: var(--spi-size-4);
|
|
22
22
|
}
|
|
23
23
|
.modal-footer {
|
|
24
24
|
width: 100%;
|
|
25
|
-
padding:
|
|
25
|
+
padding: var(--spi-size-6);
|
|
26
26
|
justify-content: space-between;
|
|
27
|
-
border-radius:
|
|
28
|
-
border-top:
|
|
29
|
-
background:
|
|
27
|
+
border-radius: 0 0 var(--spi-rounded-2xl) var(--spi-rounded-2xl);
|
|
28
|
+
border-top: var(--spi-border-1) solid var(--spi-color-border-medium);
|
|
29
|
+
background: var(--spi-color-surface-default);
|
|
30
30
|
}
|
|
31
31
|
</style>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
{#if errorIcon}
|
|
16
16
|
<span class="icon error material-icons-outlined">report</span>
|
|
17
17
|
{/if}
|
|
18
|
-
<h2>{title}</h2>
|
|
18
|
+
<h2 class="spi-text-semibold-4">{title}</h2>
|
|
19
19
|
</div>
|
|
20
20
|
<button type="button" class="close-button material-icons-outlined" onclick={onclose}
|
|
21
21
|
>close</button
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
.modal-header-title {
|
|
29
29
|
display: flex;
|
|
30
30
|
justify-content: space-between;
|
|
31
|
-
gap:
|
|
31
|
+
gap: var(--spi-size-4);
|
|
32
32
|
}
|
|
33
33
|
.modal-header {
|
|
34
|
-
padding:
|
|
34
|
+
padding: var(--spi-size-6);
|
|
35
35
|
align-self: stretch;
|
|
36
|
-
border-bottom:
|
|
36
|
+
border-bottom: var(--spi-border-1) solid var(--spi-color-border-medium);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
.modal-header-title > .icon {
|
|
@@ -45,11 +45,6 @@
|
|
|
45
45
|
align-items: center;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
.modal-header-title h2 {
|
|
49
|
-
font-size: 18px;
|
|
50
|
-
font-weight: 600;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
48
|
.modal-header > .close-button {
|
|
54
49
|
background: none;
|
|
55
50
|
border: none;
|
|
@@ -57,7 +52,7 @@
|
|
|
57
52
|
|
|
58
53
|
.modal-header > .close-button:hover {
|
|
59
54
|
cursor: pointer;
|
|
60
|
-
color:
|
|
55
|
+
color: var(--spi-color-text-secondary);
|
|
61
56
|
}
|
|
62
57
|
|
|
63
58
|
.modal-header > .close-button:focus {
|
|
@@ -65,6 +60,6 @@
|
|
|
65
60
|
}
|
|
66
61
|
|
|
67
62
|
.icon.error {
|
|
68
|
-
--color-icon:
|
|
63
|
+
--color-icon: var(--spi-color-danger-base);
|
|
69
64
|
}
|
|
70
65
|
</style>
|