@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.
Files changed (89) hide show
  1. package/dist/components/accordion/Accordion.svelte +14 -23
  2. package/dist/components/announcement/Announcement.svelte +53 -61
  3. package/dist/components/avatar/Avatar.svelte +30 -12
  4. package/dist/components/avatar/Avatar.svelte.d.ts +2 -2
  5. package/dist/components/button/Button.svelte +41 -44
  6. package/dist/components/card/Card.svelte +4 -6
  7. package/dist/components/chips/Chips.svelte +37 -36
  8. package/dist/components/chips/Chips.svelte.d.ts +1 -1
  9. package/dist/components/confirmation/Confirmation.svelte +6 -6
  10. package/dist/components/confirmation/Confirmation.svelte.d.ts +2 -2
  11. package/dist/components/controls/attach-file/AttachFile.svelte +18 -41
  12. package/dist/components/controls/attach-file/FileManager.svelte +16 -30
  13. package/dist/components/controls/attach-file/Warnings.svelte +13 -15
  14. package/dist/components/controls/input/Input.svelte +46 -72
  15. package/dist/components/controls/input/InputIcon.svelte +13 -13
  16. package/dist/components/controls/label/Label.svelte +5 -9
  17. package/dist/components/controls/radio-group/RadioGroup.svelte +25 -39
  18. package/dist/components/controls/select/Select.svelte +49 -71
  19. package/dist/components/controls/textarea/TextArea.svelte +36 -45
  20. package/dist/components/controls/toggle/Toggle.svelte +35 -37
  21. package/dist/components/delete-confirmation/DeleteConfirmation.svelte +3 -5
  22. package/dist/components/error-page/ErrorPage.svelte +9 -18
  23. package/dist/components/footer/Footer.svelte +9 -14
  24. package/dist/components/footer/Footer.svelte.d.ts +0 -1
  25. package/dist/components/footer/FooterLogo.svelte +16 -0
  26. package/dist/components/footer/FooterLogo.svelte.d.ts +26 -0
  27. package/dist/components/form/Form.svelte +1 -1
  28. package/dist/components/header/Header.svelte +39 -45
  29. package/dist/components/header/HeaderAccount.svelte +21 -33
  30. package/dist/components/header/HeaderLoader.svelte +13 -8
  31. package/dist/components/highlight-panel/HighlightPanel.svelte +29 -34
  32. package/dist/components/home/Home.svelte +18 -36
  33. package/dist/components/link/Link.svelte +1 -1
  34. package/dist/components/menu/Menu.svelte +16 -21
  35. package/dist/components/menu/MenuItem.svelte +25 -29
  36. package/dist/components/menu/Sidebar.svelte +32 -40
  37. package/dist/components/menu/utils.d.ts +1 -1
  38. package/dist/components/menu/utils.js +6 -7
  39. package/dist/components/modal/Modal.svelte +8 -11
  40. package/dist/components/modal/ModalContent.svelte +3 -3
  41. package/dist/components/modal/ModalFooter.svelte +5 -5
  42. package/dist/components/modal/ModalHeader.svelte +6 -11
  43. package/dist/components/notification/Notification.svelte +20 -27
  44. package/dist/components/processing/Processing.svelte +9 -16
  45. package/dist/components/progress-page/ProgressPage.svelte +13 -18
  46. package/dist/components/progress-wizard/ProgressWizard.svelte +43 -54
  47. package/dist/components/search/Search.svelte +24 -29
  48. package/dist/components/spinner/Spinner.svelte +1 -1
  49. package/dist/components/switcher/Switcher.svelte +14 -23
  50. package/dist/components/table/ActionsColumn.svelte +13 -33
  51. package/dist/components/table/AdvancedFilter.svelte +39 -74
  52. package/dist/components/table/Body.svelte +9 -18
  53. package/dist/components/table/ColumnVisibilityDropdown.svelte +24 -55
  54. package/dist/components/table/Footer.svelte +2 -4
  55. package/dist/components/table/Header.svelte +23 -44
  56. package/dist/components/table/PageSize.svelte +24 -36
  57. package/dist/components/table/Pagination.svelte +49 -35
  58. package/dist/components/table/RowCheckBox.svelte +5 -12
  59. package/dist/components/table/Skeleton.svelte +16 -25
  60. package/dist/components/table/Table.svelte +50 -38
  61. package/dist/components/table/Table.svelte.d.ts +5 -1
  62. package/dist/components/table/types.d.ts +9 -1
  63. package/dist/components/table/utils.d.ts +5 -1
  64. package/dist/components/table/utils.js +8 -8
  65. package/dist/components/tabs/Tabs.svelte +16 -20
  66. package/dist/components/toast/Toast.svelte +27 -30
  67. package/dist/components/tooltip/Tooltip.svelte +15 -19
  68. package/dist/components/waffle/Waffle.svelte +9 -13
  69. package/dist/components/waffle/WaffleItems.svelte +10 -13
  70. package/dist/styles/index.css +3 -0
  71. package/dist/styles/reset.css +19 -0
  72. package/dist/styles/tokens/index.css +2 -0
  73. package/dist/styles/tokens/primitives/borders.css +17 -0
  74. package/dist/styles/tokens/primitives/colors.css +41 -0
  75. package/dist/styles/tokens/primitives/index.css +7 -0
  76. package/dist/styles/tokens/primitives/motion.css +11 -0
  77. package/dist/styles/tokens/primitives/opacity.css +6 -0
  78. package/dist/styles/tokens/primitives/shadows.css +11 -0
  79. package/dist/styles/tokens/primitives/sizing.css +19 -0
  80. package/dist/styles/tokens/primitives/typography.css +13 -0
  81. package/dist/styles/tokens/semantic/colors.css +78 -0
  82. package/dist/styles/tokens/semantic/index.css +2 -0
  83. package/dist/styles/tokens/semantic/shadows.css +9 -0
  84. package/dist/styles/utilities.css +73 -0
  85. package/dist/utils/index.d.ts +1 -0
  86. package/dist/utils/index.js +1 -0
  87. package/dist/utils/url.d.ts +3 -0
  88. package/dist/utils/url.js +15 -0
  89. package/package.json +3 -2
@@ -25,7 +25,7 @@
25
25
  };
26
26
  </script>
27
27
 
28
- <thead class="container">
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">filter_alt</span>
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 class="table-header-search" style:justify-content={justifyContent}>
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-gray-300);
115
+ border-left: 0.5px solid var(--spi-color-border-default);
126
116
  }
127
117
 
128
118
  .table-header-cell {
129
- padding: var(--spacing-sm) var(--spacing-md);
130
- border-right: 0.5px solid var(--color-gray-300);
131
- border-bottom: 2px solid var(--color-black);
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-gray-100);
126
+ background: var(--spi-color-surface-subtle);
139
127
  }
140
128
 
141
129
  .table-header-cell--active {
142
- background: var(--color-primary-light);
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: 16px;
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: 4px;
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: 4px;
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(--spacing-xs) 0;
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(--spacing-xs) 36px;
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}>{itemPerPage}</option>
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(--spacing-lg);
63
+ gap: var(--spi-size-6);
74
64
  }
75
65
 
76
66
  @media (max-width: 750px) {
77
67
  .page-size {
78
- margin-top: 20px;
68
+ margin-top: var(--spi-size-5);
79
69
  }
80
70
 
81
71
  .page-size--margin {
82
- margin-left: 12px;
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: 64px;
94
- padding: var(--spacing-sm);
95
- border-radius: var(--radius-lg);
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-gray-100);
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: 20px;
112
- padding: 4px 16px;
113
- font-weight: var(--font-medium);
114
- border-right: 2px solid var(--color-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-gray-200);
107
+ background: var(--spi-color-surface-muted);
120
108
  }
121
109
 
122
110
  .page-size-option:first-of-type {
123
- border-radius: var(--radius-lg) var(--radius-lg) 0 0;
124
- border-top: 2px solid var(--color-border);
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(--radius-lg) var(--radius-lg);
129
- border-bottom: 2px solid var(--color-border);
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-black);
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 0.4s ease;
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(--radius-lg);
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(--spacing-lg);
97
- padding: var(--spacing-sm) 0;
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(--spacing-sm);
122
+ gap: var(--spi-size-2);
104
123
  padding: 0;
105
124
  border: none;
106
125
  background: none;
107
- font-size: var(--font-size-sm);
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-gray-300);
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(--spacing-sm);
138
+ gap: var(--spi-size-2);
125
139
  }
126
140
 
127
141
  .pagination-input {
128
- height: var(--input-height);
129
- width: var(--input-width);
142
+ height: var(--spi-size-9);
143
+ width: var(--spi-size-9);
130
144
  padding: 0;
131
- border: 1px solid var(--color-gray-500);
132
- border-radius: var(--radius-lg);
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: 1px solid var(--color-primary);
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
- .accent-magentablue {
23
- accent-color: #472aff;
15
+ .row-checkbox {
16
+ accent-color: var(--spi-color-primary-base);
24
17
  cursor: pointer;
25
18
  }
26
19
 
27
- .accent-magentablue:disabled {
20
+ .row-checkbox:disabled {
28
21
  cursor: not-allowed;
29
- opacity: 0.5;
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(--spacing-md) var(--spacing-lg);
58
- border-right: 0.5px solid var(--color-gray-300);
59
- border-bottom: 2px solid var(--color-black);
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: var(--skeleton-header-height);
60
+ height: 18px;
70
61
  width: var(--skeleton-width);
71
- background: var(--color-gray-300);
72
- border-radius: var(--radius-lg);
73
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
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(--spacing-md) var(--spacing-lg);
78
- border-bottom: 2px solid var(--color-gray-300);
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(--skeleton-cell-height);
73
+ height: var(--spi-size-4);
83
74
  width: var(--skeleton-width);
84
- background: var(--color-gray-300);
85
- border-radius: var(--radius-lg);
86
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
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: 1;
83
+ opacity: var(--spi-opacity-100);
93
84
  }
94
85
  50% {
95
- opacity: 0.5;
86
+ opacity: var(--spi-opacity-50);
96
87
  }
97
88
  }
98
89
  </style>