@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
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
};
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
|
-
<thead
|
|
28
|
+
<thead>
|
|
29
29
|
{#each headerGroups as headerGroup (headerGroup.id)}
|
|
30
30
|
<tr class="table-header-row">
|
|
31
31
|
{#each headerGroup.headers as header (header.id)}
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
colSpan={header.colSpan}
|
|
43
43
|
class={[
|
|
44
44
|
'table-header-cell',
|
|
45
|
+
'spi-text-bold-2',
|
|
45
46
|
className,
|
|
46
47
|
isActive && 'table-header-cell--active'
|
|
47
48
|
]}
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
<button
|
|
55
56
|
type="button"
|
|
56
57
|
class={[
|
|
57
|
-
'table-header-button',
|
|
58
|
+
'table-header-button spi-text-bold-2',
|
|
58
59
|
canSort && 'table-header-button--sortable',
|
|
59
60
|
!canSort && 'table-header-button--disabled'
|
|
60
61
|
]}
|
|
@@ -74,7 +75,7 @@
|
|
|
74
75
|
|
|
75
76
|
{#if canSort}
|
|
76
77
|
<div class="table-header-sort-icon">
|
|
77
|
-
<span class="material-icons"
|
|
78
|
+
<span class="material-icons spi-text-regular-2"
|
|
78
79
|
>{getSortIcon[header.column.getIsSorted().toString()]}</span
|
|
79
80
|
>
|
|
80
81
|
</div>
|
|
@@ -82,13 +83,18 @@
|
|
|
82
83
|
|
|
83
84
|
{#if isFiltered}
|
|
84
85
|
<div class="table-header-filtered-icon">
|
|
85
|
-
<span class="material-icons-outlined"
|
|
86
|
+
<span class="material-icons-outlined spi-text-regular-2"
|
|
87
|
+
>filter_alt</span
|
|
88
|
+
>
|
|
86
89
|
</div>
|
|
87
90
|
{/if}
|
|
88
91
|
</button>
|
|
89
92
|
|
|
90
93
|
{#if enableColumnSearch && !hideColumnFilter}
|
|
91
|
-
<div
|
|
94
|
+
<div
|
|
95
|
+
class="table-header-search spi-text-regular-1"
|
|
96
|
+
style:justify-content={justifyContent}
|
|
97
|
+
>
|
|
92
98
|
<Search
|
|
93
99
|
oninput={({ currentTarget }) =>
|
|
94
100
|
header.column.setFilterValue(currentTarget.value)}
|
|
@@ -105,42 +111,24 @@
|
|
|
105
111
|
</thead>
|
|
106
112
|
|
|
107
113
|
<style>
|
|
108
|
-
.container {
|
|
109
|
-
--color-primary: #472aff;
|
|
110
|
-
--color-primary-light: #eaecff;
|
|
111
|
-
--color-black: #000000;
|
|
112
|
-
--color-gray-100: #f3f4f6;
|
|
113
|
-
--color-gray-200: #e5e7eb;
|
|
114
|
-
--color-gray-300: #e0e5e8;
|
|
115
|
-
--spacing-xs: 4px;
|
|
116
|
-
--spacing-sm: 8px;
|
|
117
|
-
--spacing-md: 16px;
|
|
118
|
-
--font-size-xs: 12px;
|
|
119
|
-
--font-size-sm: 14px;
|
|
120
|
-
--font-bold: 700;
|
|
121
|
-
--font-normal: 400;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
114
|
.table-header-cell:first-child {
|
|
125
|
-
border-left: 0.5px solid var(--color-
|
|
115
|
+
border-left: 0.5px solid var(--spi-color-border-default);
|
|
126
116
|
}
|
|
127
117
|
|
|
128
118
|
.table-header-cell {
|
|
129
|
-
padding: var(--
|
|
130
|
-
border-right: 0.5px solid var(--color-
|
|
131
|
-
border-bottom:
|
|
119
|
+
padding: var(--spi-size-2) var(--spi-size-4);
|
|
120
|
+
border-right: 0.5px solid var(--spi-color-border-default);
|
|
121
|
+
border-bottom: var(--spi-border-2) solid var(--spi-color-text-primary);
|
|
132
122
|
text-align: left;
|
|
133
|
-
font-size: var(--font-size-sm);
|
|
134
|
-
font-weight: var(--font-bold);
|
|
135
123
|
}
|
|
136
124
|
|
|
137
125
|
.table-header-cell:hover {
|
|
138
|
-
background: var(--color-
|
|
126
|
+
background: var(--spi-color-surface-subtle);
|
|
139
127
|
}
|
|
140
128
|
|
|
141
129
|
.table-header-cell--active {
|
|
142
|
-
background: var(--color-primary-
|
|
143
|
-
color: var(--color-primary);
|
|
130
|
+
background: var(--spi-color-primary-lighter);
|
|
131
|
+
color: var(--spi-color-primary-base);
|
|
144
132
|
}
|
|
145
133
|
|
|
146
134
|
.table-header-button {
|
|
@@ -151,8 +139,6 @@
|
|
|
151
139
|
padding: 0;
|
|
152
140
|
border: none;
|
|
153
141
|
background: none;
|
|
154
|
-
font-size: inherit;
|
|
155
|
-
font-weight: inherit;
|
|
156
142
|
color: inherit;
|
|
157
143
|
}
|
|
158
144
|
|
|
@@ -169,7 +155,7 @@
|
|
|
169
155
|
}
|
|
170
156
|
|
|
171
157
|
.table-header-label--sortable {
|
|
172
|
-
margin-right:
|
|
158
|
+
margin-right: var(--spi-size-4);
|
|
173
159
|
}
|
|
174
160
|
|
|
175
161
|
@media (max-width: 750px) {
|
|
@@ -181,7 +167,7 @@
|
|
|
181
167
|
.table-header-sort-icon {
|
|
182
168
|
position: absolute;
|
|
183
169
|
right: -8px;
|
|
184
|
-
margin-top:
|
|
170
|
+
margin-top: var(--spi-size-1);
|
|
185
171
|
}
|
|
186
172
|
|
|
187
173
|
.table-header-sort-icon:has(+ .table-header-filtered-icon) {
|
|
@@ -191,23 +177,16 @@
|
|
|
191
177
|
.table-header-filtered-icon {
|
|
192
178
|
position: absolute;
|
|
193
179
|
right: -13px;
|
|
194
|
-
margin-top:
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
.table-header-sort-icon .material-icons,
|
|
198
|
-
.material-icons-outlined {
|
|
199
|
-
font-size: var(--font-size-sm);
|
|
180
|
+
margin-top: var(--spi-size-1);
|
|
200
181
|
}
|
|
201
182
|
|
|
202
183
|
.table-header-search {
|
|
203
184
|
display: flex;
|
|
204
185
|
min-width: 144px;
|
|
205
|
-
margin: var(--
|
|
206
|
-
font-weight: var(--font-normal);
|
|
186
|
+
margin: var(--spi-size-1) 0;
|
|
207
187
|
}
|
|
208
188
|
|
|
209
189
|
.table-header-search :global(.search-input) {
|
|
210
|
-
padding: var(--
|
|
211
|
-
font-size: var(--font-size-xs);
|
|
190
|
+
padding: var(--spi-size-1) var(--spi-size-9);
|
|
212
191
|
}
|
|
213
192
|
</style>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<div class="page-size-selector">
|
|
34
34
|
<span>Rows per page:</span>
|
|
35
35
|
<select
|
|
36
|
-
class="page-size-select"
|
|
36
|
+
class="page-size-select spi-text-semibold-2"
|
|
37
37
|
name="rows-per-page"
|
|
38
38
|
id="rows-per-page"
|
|
39
39
|
title="Rows per page"
|
|
@@ -43,7 +43,9 @@
|
|
|
43
43
|
}}
|
|
44
44
|
>
|
|
45
45
|
{#each DEFAULT_ITEMS_PER_PAGE_OPTIONS as itemPerPage (itemPerPage)}
|
|
46
|
-
<option class="page-size-option" value={itemPerPage}
|
|
46
|
+
<option class="page-size-option spi-text-medium-2" value={itemPerPage}
|
|
47
|
+
>{itemPerPage}</option
|
|
48
|
+
>
|
|
47
49
|
{/each}
|
|
48
50
|
</select>
|
|
49
51
|
</div>
|
|
@@ -55,31 +57,19 @@
|
|
|
55
57
|
|
|
56
58
|
<style>
|
|
57
59
|
.page-size {
|
|
58
|
-
--color-black: #000000;
|
|
59
|
-
--color-primary: #472aff;
|
|
60
|
-
--color-gray-100: #f3f4f6;
|
|
61
|
-
--color-gray-200: #e5e7eb;
|
|
62
|
-
--color-border: #ebedef;
|
|
63
|
-
--spacing-sm: 8px;
|
|
64
|
-
--spacing-md: 12px;
|
|
65
|
-
--spacing-lg: 24px;
|
|
66
|
-
--radius-lg: 8px;
|
|
67
|
-
--font-medium: 500;
|
|
68
|
-
--font-semibold: 600;
|
|
69
|
-
|
|
70
60
|
display: flex;
|
|
71
61
|
align-items: center;
|
|
72
62
|
justify-content: center;
|
|
73
|
-
gap: var(--
|
|
63
|
+
gap: var(--spi-size-6);
|
|
74
64
|
}
|
|
75
65
|
|
|
76
66
|
@media (max-width: 750px) {
|
|
77
67
|
.page-size {
|
|
78
|
-
margin-top:
|
|
68
|
+
margin-top: var(--spi-size-5);
|
|
79
69
|
}
|
|
80
70
|
|
|
81
71
|
.page-size--margin {
|
|
82
|
-
margin-left:
|
|
72
|
+
margin-left: var(--spi-size-3);
|
|
83
73
|
}
|
|
84
74
|
}
|
|
85
75
|
|
|
@@ -90,17 +80,16 @@
|
|
|
90
80
|
}
|
|
91
81
|
|
|
92
82
|
.page-size-select {
|
|
93
|
-
width:
|
|
94
|
-
padding: var(--
|
|
95
|
-
border-radius: var(--
|
|
96
|
-
font-weight: var(--font-semibold);
|
|
83
|
+
width: var(--spi-size-16);
|
|
84
|
+
padding: var(--spi-size-2);
|
|
85
|
+
border-radius: var(--spi-rounded-lg);
|
|
97
86
|
cursor: pointer;
|
|
98
87
|
border: none;
|
|
99
88
|
background: transparent;
|
|
100
89
|
}
|
|
101
90
|
|
|
102
91
|
.page-size-select:hover {
|
|
103
|
-
background: var(--color-
|
|
92
|
+
background: var(--spi-color-surface-subtle);
|
|
104
93
|
}
|
|
105
94
|
|
|
106
95
|
.page-size-select:focus {
|
|
@@ -108,25 +97,24 @@
|
|
|
108
97
|
}
|
|
109
98
|
|
|
110
99
|
.page-size-option {
|
|
111
|
-
gap:
|
|
112
|
-
padding:
|
|
113
|
-
|
|
114
|
-
border-
|
|
115
|
-
border-left: 2px solid var(--color-border);
|
|
100
|
+
gap: var(--spi-size-5);
|
|
101
|
+
padding: var(--spi-size-1) var(--spi-size-4);
|
|
102
|
+
border-right: var(--spi-border-2) solid var(--spi-color-border-default);
|
|
103
|
+
border-left: var(--spi-border-2) solid var(--spi-color-border-default);
|
|
116
104
|
}
|
|
117
105
|
|
|
118
106
|
.page-size-option:hover {
|
|
119
|
-
background: var(--color-
|
|
107
|
+
background: var(--spi-color-surface-muted);
|
|
120
108
|
}
|
|
121
109
|
|
|
122
110
|
.page-size-option:first-of-type {
|
|
123
|
-
border-radius: var(--
|
|
124
|
-
border-top:
|
|
111
|
+
border-radius: var(--spi-rounded-lg) var(--spi-rounded-lg) 0 0;
|
|
112
|
+
border-top: var(--spi-border-2) solid var(--spi-color-border-default);
|
|
125
113
|
}
|
|
126
114
|
|
|
127
115
|
.page-size-option:last-of-type {
|
|
128
|
-
border-radius: 0 0 var(--
|
|
129
|
-
border-bottom:
|
|
116
|
+
border-radius: 0 0 var(--spi-rounded-lg) var(--spi-rounded-lg);
|
|
117
|
+
border-bottom: var(--spi-border-2) solid var(--spi-color-border-default);
|
|
130
118
|
}
|
|
131
119
|
|
|
132
120
|
select,
|
|
@@ -137,12 +125,12 @@
|
|
|
137
125
|
select::picker-icon {
|
|
138
126
|
content: '\e5e1';
|
|
139
127
|
font-family: 'Material Icons';
|
|
140
|
-
color: var(--color-
|
|
128
|
+
color: var(--spi-color-text-primary);
|
|
141
129
|
margin-left: 5px;
|
|
142
130
|
display: inline-flex;
|
|
143
131
|
align-items: center;
|
|
144
132
|
transform: rotate(90deg);
|
|
145
|
-
transition: transform
|
|
133
|
+
transition: transform var(--spi-duration-slow) var(--spi-ease-default);
|
|
146
134
|
}
|
|
147
135
|
|
|
148
136
|
option::checkmark {
|
|
@@ -150,7 +138,7 @@
|
|
|
150
138
|
font-family: 'Material Icons';
|
|
151
139
|
order: 1;
|
|
152
140
|
margin-left: auto;
|
|
153
|
-
color: var(--color-primary);
|
|
141
|
+
color: var(--spi-color-primary-base);
|
|
154
142
|
}
|
|
155
143
|
|
|
156
144
|
select:open::picker-icon {
|
|
@@ -159,6 +147,6 @@
|
|
|
159
147
|
|
|
160
148
|
::picker(select) {
|
|
161
149
|
border: none;
|
|
162
|
-
border-radius: var(--
|
|
150
|
+
border-radius: var(--spi-rounded-lg);
|
|
163
151
|
}
|
|
164
152
|
</style>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script lang="ts" generics="T">
|
|
2
2
|
import { Tooltip } from '../../index.js';
|
|
3
3
|
import type { Table } from './adapter/index.js';
|
|
4
|
+
import { getPaginationTableContext } from './context.js';
|
|
5
|
+
import { isCursorPagination } from './utils.js';
|
|
4
6
|
|
|
5
7
|
interface Props {
|
|
6
8
|
table: Table<T>;
|
|
@@ -8,7 +10,13 @@
|
|
|
8
10
|
|
|
9
11
|
let { table }: Props = $props();
|
|
10
12
|
|
|
13
|
+
const paginationTable = getPaginationTableContext();
|
|
14
|
+
|
|
11
15
|
const initialPage = $derived(table.getState().pagination.pageIndex + 1);
|
|
16
|
+
const isCursorPaginationEnabled = $derived(
|
|
17
|
+
$paginationTable && isCursorPagination($paginationTable)
|
|
18
|
+
);
|
|
19
|
+
const hasMultiplePages = $derived(table.getPageCount() > 2);
|
|
12
20
|
|
|
13
21
|
const handlePaginationChange = (event: Event) => {
|
|
14
22
|
const input = event.currentTarget as HTMLInputElement;
|
|
@@ -37,18 +45,30 @@
|
|
|
37
45
|
</script>
|
|
38
46
|
|
|
39
47
|
<div class="pagination">
|
|
48
|
+
{#if hasMultiplePages}
|
|
49
|
+
<Tooltip content="First page" width="xs" position="bottom">
|
|
50
|
+
<button
|
|
51
|
+
type="button"
|
|
52
|
+
class="pagination-button spi-text-regular-2"
|
|
53
|
+
onclick={() => table.setPageIndex(0)}
|
|
54
|
+
disabled={!table.getCanPreviousPage()}
|
|
55
|
+
>
|
|
56
|
+
<span class="pagination-icon material-icons spi-text-regular-5">first_page</span>
|
|
57
|
+
</button>
|
|
58
|
+
</Tooltip>
|
|
59
|
+
{/if}
|
|
40
60
|
<button
|
|
41
61
|
type="button"
|
|
42
|
-
class="pagination-button"
|
|
62
|
+
class="pagination-button spi-text-regular-2"
|
|
43
63
|
onclick={() => table.previousPage()}
|
|
44
64
|
disabled={!table.getCanPreviousPage()}
|
|
45
65
|
>
|
|
46
|
-
<span class="pagination-icon material-icons">arrow_back</span>
|
|
66
|
+
<span class="pagination-icon material-icons spi-text-regular-2">arrow_back</span>
|
|
47
67
|
<span>Previous</span>
|
|
48
68
|
</button>
|
|
49
69
|
<div class="pagination-info">
|
|
50
70
|
<span>Page</span>
|
|
51
|
-
{#if table.getPageCount() > 1}
|
|
71
|
+
{#if !isCursorPaginationEnabled && table.getPageCount() > 1}
|
|
52
72
|
<Tooltip content="Enter page number" width="sm" position="bottom">
|
|
53
73
|
<input
|
|
54
74
|
type="text"
|
|
@@ -66,80 +86,74 @@
|
|
|
66
86
|
|
|
67
87
|
<button
|
|
68
88
|
type="button"
|
|
69
|
-
class="pagination-button"
|
|
89
|
+
class="pagination-button spi-text-regular-2"
|
|
70
90
|
onclick={() => table.nextPage()}
|
|
71
91
|
disabled={!table.getCanNextPage()}
|
|
72
92
|
>
|
|
73
93
|
<span>Next</span>
|
|
74
|
-
<span class="pagination-icon material-icons">arrow_forward</span>
|
|
94
|
+
<span class="pagination-icon material-icons spi-text-regular-2">arrow_forward</span>
|
|
75
95
|
</button>
|
|
96
|
+
{#if hasMultiplePages}
|
|
97
|
+
<Tooltip content="Last page" width="xs" position="bottom">
|
|
98
|
+
<button
|
|
99
|
+
type="button"
|
|
100
|
+
class="pagination-button spi-text-regular-2"
|
|
101
|
+
onclick={() => table.setPageIndex(table.getPageCount() - 1)}
|
|
102
|
+
disabled={isCursorPaginationEnabled || !table.getCanNextPage()}
|
|
103
|
+
>
|
|
104
|
+
<span class="pagination-icon material-icons spi-text-regular-5">last_page</span>
|
|
105
|
+
</button>
|
|
106
|
+
</Tooltip>
|
|
107
|
+
{/if}
|
|
76
108
|
</div>
|
|
77
109
|
|
|
78
110
|
<style>
|
|
79
111
|
.pagination {
|
|
80
|
-
--color-primary: #472aff;
|
|
81
|
-
--color-gray-300: #d1d5db;
|
|
82
|
-
--color-gray-500: #6b7280;
|
|
83
|
-
--color-text: #000000;
|
|
84
|
-
--spacing-sm: 8px;
|
|
85
|
-
--spacing-md: 12px;
|
|
86
|
-
--spacing-lg: 24px;
|
|
87
|
-
--radius-lg: 8px;
|
|
88
|
-
--font-size-sm: 14px;
|
|
89
|
-
--font-size-icon: 14px;
|
|
90
|
-
--input-height: 37px;
|
|
91
|
-
--input-width: 38px;
|
|
92
|
-
|
|
93
112
|
display: flex;
|
|
94
113
|
align-items: center;
|
|
95
114
|
justify-content: center;
|
|
96
|
-
gap: var(--
|
|
97
|
-
padding: var(--
|
|
115
|
+
gap: var(--spi-size-6);
|
|
116
|
+
padding: var(--spi-size-2) 0;
|
|
98
117
|
}
|
|
99
118
|
|
|
100
119
|
.pagination-button {
|
|
101
120
|
display: flex;
|
|
102
121
|
align-items: center;
|
|
103
|
-
gap: var(--
|
|
122
|
+
gap: var(--spi-size-2);
|
|
104
123
|
padding: 0;
|
|
105
124
|
border: none;
|
|
106
125
|
background: none;
|
|
107
|
-
|
|
108
|
-
color: var(--color-text);
|
|
126
|
+
color: var(--spi-color-text-primary);
|
|
109
127
|
cursor: pointer;
|
|
110
128
|
}
|
|
111
129
|
|
|
112
130
|
.pagination-button:disabled {
|
|
113
|
-
color: var(--color-
|
|
131
|
+
color: var(--spi-color-text-disabled);
|
|
114
132
|
cursor: not-allowed;
|
|
115
133
|
}
|
|
116
134
|
|
|
117
|
-
.pagination-icon {
|
|
118
|
-
font-size: var(--font-size-icon);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
135
|
.pagination-info {
|
|
122
136
|
display: flex;
|
|
123
137
|
align-items: center;
|
|
124
|
-
gap: var(--
|
|
138
|
+
gap: var(--spi-size-2);
|
|
125
139
|
}
|
|
126
140
|
|
|
127
141
|
.pagination-input {
|
|
128
|
-
height: var(--
|
|
129
|
-
width: var(--
|
|
142
|
+
height: var(--spi-size-9);
|
|
143
|
+
width: var(--spi-size-9);
|
|
130
144
|
padding: 0;
|
|
131
|
-
border:
|
|
132
|
-
border-radius: var(--
|
|
145
|
+
border: var(--spi-border-1) solid var(--spi-color-border-strong);
|
|
146
|
+
border-radius: var(--spi-rounded-lg);
|
|
133
147
|
text-align: center;
|
|
134
148
|
cursor: pointer;
|
|
135
149
|
}
|
|
136
150
|
|
|
137
151
|
.pagination-input:hover {
|
|
138
|
-
border-color: var(--color-primary);
|
|
152
|
+
border-color: var(--spi-color-primary-base);
|
|
139
153
|
}
|
|
140
154
|
|
|
141
155
|
.pagination-input:focus {
|
|
142
|
-
border:
|
|
156
|
+
border: var(--spi-border-1) solid var(--spi-color-primary-base);
|
|
143
157
|
outline: none;
|
|
144
158
|
}
|
|
145
159
|
</style>
|
|
@@ -9,23 +9,16 @@
|
|
|
9
9
|
let { indeterminate = false, checked, disabled = false, onchange }: Props = $props();
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
|
-
<input
|
|
13
|
-
type="checkbox"
|
|
14
|
-
class="accent-magentablue"
|
|
15
|
-
{disabled}
|
|
16
|
-
{onchange}
|
|
17
|
-
{checked}
|
|
18
|
-
bind:indeterminate
|
|
19
|
-
/>
|
|
12
|
+
<input type="checkbox" class="row-checkbox" {disabled} {onchange} {checked} bind:indeterminate />
|
|
20
13
|
|
|
21
14
|
<style>
|
|
22
|
-
.
|
|
23
|
-
accent-color:
|
|
15
|
+
.row-checkbox {
|
|
16
|
+
accent-color: var(--spi-color-primary-base);
|
|
24
17
|
cursor: pointer;
|
|
25
18
|
}
|
|
26
19
|
|
|
27
|
-
.
|
|
20
|
+
.row-checkbox:disabled {
|
|
28
21
|
cursor: not-allowed;
|
|
29
|
-
opacity:
|
|
22
|
+
opacity: var(--spi-opacity-disabled);
|
|
30
23
|
}
|
|
31
24
|
</style>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<thead>
|
|
13
13
|
<tr>
|
|
14
14
|
{#each Array(columns).keys() as index (index)}
|
|
15
|
-
<th class="table-skeleton-header">
|
|
15
|
+
<th class="table-skeleton-header spi-text-regular-2">
|
|
16
16
|
<div class="table-skeleton-header-placeholder"></div>
|
|
17
17
|
</th>
|
|
18
18
|
{/each}
|
|
@@ -34,15 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
<style>
|
|
36
36
|
.table-skeleton {
|
|
37
|
-
--color-black: #000;
|
|
38
|
-
--color-gray-300: #d1d5db;
|
|
39
|
-
--spacing-md: 12px;
|
|
40
|
-
--spacing-lg: 16px;
|
|
41
|
-
--font-size-sm: 14px;
|
|
42
37
|
--skeleton-width: 150px;
|
|
43
|
-
--skeleton-header-height: 18px;
|
|
44
|
-
--skeleton-cell-height: 16px;
|
|
45
|
-
--radius-lg: 8px;
|
|
46
38
|
|
|
47
39
|
overflow-x: auto;
|
|
48
40
|
overflow-y: hidden;
|
|
@@ -54,11 +46,10 @@
|
|
|
54
46
|
}
|
|
55
47
|
|
|
56
48
|
.table-skeleton-header {
|
|
57
|
-
padding: var(--
|
|
58
|
-
border-right: 0.5px solid var(--color-
|
|
59
|
-
border-bottom:
|
|
49
|
+
padding: var(--spi-size-3) var(--spi-size-4);
|
|
50
|
+
border-right: 0.5px solid var(--spi-color-border-default);
|
|
51
|
+
border-bottom: var(--spi-border-2) solid var(--spi-color-text-primary);
|
|
60
52
|
text-align: left;
|
|
61
|
-
font-size: var(--font-size-sm);
|
|
62
53
|
}
|
|
63
54
|
|
|
64
55
|
.table-skeleton-header:last-child {
|
|
@@ -66,33 +57,33 @@
|
|
|
66
57
|
}
|
|
67
58
|
|
|
68
59
|
.table-skeleton-header-placeholder {
|
|
69
|
-
height:
|
|
60
|
+
height: 18px;
|
|
70
61
|
width: var(--skeleton-width);
|
|
71
|
-
background: var(--color-
|
|
72
|
-
border-radius: var(--
|
|
73
|
-
animation: pulse 2s
|
|
62
|
+
background: var(--spi-color-neutral-light);
|
|
63
|
+
border-radius: var(--spi-rounded-lg);
|
|
64
|
+
animation: pulse 2s var(--spi-ease-in-out) infinite;
|
|
74
65
|
}
|
|
75
66
|
|
|
76
67
|
.table-skeleton-cell {
|
|
77
|
-
padding: var(--
|
|
78
|
-
border-bottom:
|
|
68
|
+
padding: var(--spi-size-3) var(--spi-size-4);
|
|
69
|
+
border-bottom: var(--spi-border-2) solid var(--spi-color-border-default);
|
|
79
70
|
}
|
|
80
71
|
|
|
81
72
|
.table-skeleton-cell-placeholder {
|
|
82
|
-
height: var(--
|
|
73
|
+
height: var(--spi-size-4);
|
|
83
74
|
width: var(--skeleton-width);
|
|
84
|
-
background: var(--color-
|
|
85
|
-
border-radius: var(--
|
|
86
|
-
animation: pulse 2s
|
|
75
|
+
background: var(--spi-color-neutral-light);
|
|
76
|
+
border-radius: var(--spi-rounded-lg);
|
|
77
|
+
animation: pulse 2s var(--spi-ease-in-out) infinite;
|
|
87
78
|
}
|
|
88
79
|
|
|
89
80
|
@keyframes pulse {
|
|
90
81
|
0%,
|
|
91
82
|
100% {
|
|
92
|
-
opacity:
|
|
83
|
+
opacity: var(--spi-opacity-100);
|
|
93
84
|
}
|
|
94
85
|
50% {
|
|
95
|
-
opacity:
|
|
86
|
+
opacity: var(--spi-opacity-50);
|
|
96
87
|
}
|
|
97
88
|
}
|
|
98
89
|
</style>
|