@softwareone/spi-sv5-library 1.14.4 → 1.15.1

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 (79) 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 +43 -46
  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 +1 -1
  10. package/dist/components/controls/attach-file/AttachFile.svelte +18 -41
  11. package/dist/components/controls/attach-file/FileManager.svelte +16 -30
  12. package/dist/components/controls/attach-file/Warnings.svelte +13 -15
  13. package/dist/components/controls/input/Input.svelte +46 -72
  14. package/dist/components/controls/input/InputIcon.svelte +13 -13
  15. package/dist/components/controls/label/Label.svelte +5 -9
  16. package/dist/components/controls/radio-group/RadioGroup.svelte +25 -39
  17. package/dist/components/controls/select/Select.svelte +49 -71
  18. package/dist/components/controls/textarea/TextArea.svelte +36 -45
  19. package/dist/components/controls/toggle/Toggle.svelte +35 -37
  20. package/dist/components/delete-confirmation/DeleteConfirmation.svelte +1 -1
  21. package/dist/components/error-page/ErrorPage.svelte +9 -18
  22. package/dist/components/footer/Footer.svelte +6 -7
  23. package/dist/components/form/Form.svelte +1 -1
  24. package/dist/components/header/Header.svelte +39 -45
  25. package/dist/components/header/HeaderAccount.svelte +21 -33
  26. package/dist/components/header/HeaderLoader.svelte +13 -8
  27. package/dist/components/highlight-panel/HighlightPanel.svelte +29 -34
  28. package/dist/components/home/Home.svelte +18 -36
  29. package/dist/components/link/Link.svelte +1 -1
  30. package/dist/components/menu/Menu.svelte +12 -12
  31. package/dist/components/menu/MenuItem.svelte +25 -29
  32. package/dist/components/menu/Sidebar.svelte +32 -40
  33. package/dist/components/modal/Modal.svelte +8 -12
  34. package/dist/components/modal/ModalContent.svelte +3 -3
  35. package/dist/components/modal/ModalFooter.svelte +5 -5
  36. package/dist/components/modal/ModalHeader.svelte +6 -11
  37. package/dist/components/notification/Notification.svelte +20 -27
  38. package/dist/components/processing/Processing.svelte +9 -16
  39. package/dist/components/progress-page/ProgressPage.svelte +13 -18
  40. package/dist/components/progress-wizard/ProgressWizard.svelte +43 -54
  41. package/dist/components/search/Search.svelte +24 -29
  42. package/dist/components/spinner/Spinner.svelte +1 -1
  43. package/dist/components/switcher/Switcher.svelte +14 -23
  44. package/dist/components/table/ActionsColumn.svelte +13 -33
  45. package/dist/components/table/AdvancedFilter.svelte +39 -74
  46. package/dist/components/table/Body.svelte +9 -18
  47. package/dist/components/table/ColumnVisibilityDropdown.svelte +24 -55
  48. package/dist/components/table/Footer.svelte +2 -4
  49. package/dist/components/table/Header.svelte +23 -44
  50. package/dist/components/table/PageSize.svelte +24 -36
  51. package/dist/components/table/Pagination.svelte +49 -35
  52. package/dist/components/table/RowCheckBox.svelte +5 -12
  53. package/dist/components/table/Skeleton.svelte +16 -25
  54. package/dist/components/table/Table.svelte +50 -38
  55. package/dist/components/table/Table.svelte.d.ts +5 -1
  56. package/dist/components/table/types.d.ts +9 -1
  57. package/dist/components/table/utils.d.ts +5 -1
  58. package/dist/components/table/utils.js +8 -8
  59. package/dist/components/tabs/Tabs.svelte +16 -20
  60. package/dist/components/toast/Toast.svelte +27 -30
  61. package/dist/components/tooltip/Tooltip.svelte +15 -19
  62. package/dist/components/waffle/Waffle.svelte +9 -13
  63. package/dist/components/waffle/WaffleItems.svelte +10 -13
  64. package/dist/styles/index.css +3 -0
  65. package/dist/styles/reset.css +19 -0
  66. package/dist/styles/tokens/index.css +2 -0
  67. package/dist/styles/tokens/primitives/borders.css +17 -0
  68. package/dist/styles/tokens/primitives/colors.css +41 -0
  69. package/dist/styles/tokens/primitives/index.css +7 -0
  70. package/dist/styles/tokens/primitives/motion.css +11 -0
  71. package/dist/styles/tokens/primitives/opacity.css +6 -0
  72. package/dist/styles/tokens/primitives/shadows.css +11 -0
  73. package/dist/styles/tokens/primitives/sizing.css +19 -0
  74. package/dist/styles/tokens/primitives/typography.css +13 -0
  75. package/dist/styles/tokens/semantic/colors.css +78 -0
  76. package/dist/styles/tokens/semantic/index.css +2 -0
  77. package/dist/styles/tokens/semantic/shadows.css +9 -0
  78. package/dist/styles/utilities.css +73 -0
  79. package/package.json +3 -2
@@ -16,7 +16,7 @@
16
16
  </script>
17
17
 
18
18
  <aside class="accordion-container" class:border={!disableBorder}>
19
- <div class="accordion-content">
19
+ <div class="accordion-content spi-text-regular-2">
20
20
  <section class="header" class:is-open={isOpen}>
21
21
  <button
22
22
  type="button"
@@ -24,12 +24,15 @@
24
24
  onclick={toggleAccordion}
25
25
  aria-label={isOpen ? 'Collapse accordion' : 'Expand accordion'}
26
26
  >
27
- <span class="material-icons-outlined icon-span" class:rotate={isOpen}>
27
+ <span
28
+ class="material-icons-outlined icon-span spi-text-regular-5"
29
+ class:rotate={isOpen}
30
+ >
28
31
  keyboard_arrow_right
29
32
  </span>
30
33
  </button>
31
34
 
32
- <h2 class="header-title">{title}</h2>
35
+ <h2 class="header-title spi-text-semibold-2">{title}</h2>
33
36
  </section>
34
37
 
35
38
  {#if isOpen}
@@ -44,18 +47,10 @@
44
47
  .accordion-container {
45
48
  width: 100%;
46
49
  height: 100%;
47
-
48
- --border-color: #e0e5e8;
49
- --color: #472aff;
50
- }
51
-
52
- .accordion-content {
53
- font-size: 14px;
54
- line-height: 20px;
55
50
  }
56
51
 
57
52
  .content {
58
- padding: 10px 10px 0 28px;
53
+ padding: 10px 10px 0 var(--spi-size-7);
59
54
  }
60
55
 
61
56
  .is-open {
@@ -63,18 +58,14 @@
63
58
  }
64
59
 
65
60
  .header {
66
- gap: 16px;
61
+ gap: var(--spi-size-4);
67
62
  display: inline-flex;
68
63
  }
69
64
 
70
- .header-title {
71
- font-weight: 600;
72
- }
73
-
74
65
  .border {
75
- border: 1px solid var(--border-color);
76
- border-radius: 8px;
77
- padding: 32px;
66
+ border: var(--spi-border-1) solid var(--spi-color-border-default);
67
+ border-radius: var(--spi-rounded-lg);
68
+ padding: var(--spi-size-8);
78
69
  }
79
70
 
80
71
  .button {
@@ -88,9 +79,9 @@
88
79
  }
89
80
 
90
81
  .icon-span {
91
- color: var(--color);
92
- font-size: 20px;
93
- transition: transform 0.2s ease-in-out;
82
+ line-height: normal;
83
+ color: var(--spi-color-primary-base);
84
+ transition: transform var(--spi-duration-normal) var(--spi-ease-in-out);
94
85
  }
95
86
 
96
87
  .icon-span.rotate {
@@ -25,14 +25,14 @@
25
25
  ></div>
26
26
  <section class="announcement-panel" transition:fade={{ duration: 250 }}>
27
27
  <header class="panel-header">
28
- <h1 class="panel-title">Announcements</h1>
28
+ <h1 class="panel-title spi-text-medium-4">Announcements</h1>
29
29
  <button
30
30
  class="close-button"
31
31
  onclick={toggleAnnouncement}
32
32
  aria-label="Close announcements"
33
33
  type="button"
34
34
  >
35
- <span class="material-icons close-icon">close</span>
35
+ <span class="material-icons close-icon spi-text-regular-6">close</span>
36
36
  </button>
37
37
  </header>
38
38
 
@@ -45,16 +45,21 @@
45
45
  {#if !announcement.isRead}
46
46
  <div class="unread-indicator"></div>
47
47
  {/if}
48
- <span class="material-icons-outlined announcement-icon"
48
+ <span
49
+ class="material-icons-outlined announcement-icon spi-text-regular-6"
49
50
  >notifications_active</span
50
51
  >
51
52
  </div>
52
53
  <div class="item-info">
53
- <h2 class="item-title">{announcement.title}</h2>
54
- <time class="item-date">{announcement.createdAt}</time>
54
+ <h2 class="item-title spi-text-medium-2">
55
+ {announcement.title}
56
+ </h2>
57
+ <time class="item-date spi-text-regular-1"
58
+ >{announcement.createdAt}</time
59
+ >
55
60
  </div>
56
61
  </div>
57
- <p class="item-message">{announcement.message}</p>
62
+ <p class="item-message spi-text-regular-2">{announcement.message}</p>
58
63
  </article>
59
64
  <hr class="item-divider" />
60
65
  {/each}
@@ -64,8 +69,10 @@
64
69
  <span class="material-icons-outlined empty-icon icon-gradient">hide_source</span
65
70
  >
66
71
  <div class="empty-content">
67
- <p class="empty-title">No announcements yet</p>
68
- <p class="empty-description">Check back later for updates</p>
72
+ <p class="empty-title spi-text-bold-4">No announcements yet</p>
73
+ <p class="empty-description spi-text-regular-2">
74
+ Check back later for updates
75
+ </p>
69
76
  </div>
70
77
  </div>
71
78
  {/if}
@@ -75,17 +82,13 @@
75
82
 
76
83
  <style>
77
84
  .announcement-wrapper {
78
- --color-primary: #472aff;
79
- --color-gray-100: #e0e5e8;
80
- --color-gray-200: #6b7180;
81
-
82
85
  position: relative;
83
86
  }
84
87
 
85
88
  .announcement-backdrop {
86
89
  position: fixed;
87
90
  inset: 0;
88
- background-color: rgba(243, 244, 246, 0.5);
91
+ background-color: var(--spi-color-backdrop);
89
92
  cursor: pointer;
90
93
  z-index: 30;
91
94
  border: none;
@@ -96,16 +99,16 @@
96
99
  z-index: 40;
97
100
  right: -260px;
98
101
  top: 30px;
99
- background: #ffffff;
100
- border-radius: 8px;
102
+ background: var(--spi-color-surface-default);
103
+ border-radius: var(--spi-rounded-lg);
101
104
  display: flex;
102
105
  width: 500px;
103
106
  max-height: 800px;
104
- padding: 24px;
107
+ padding: var(--spi-size-6);
105
108
  flex-direction: column;
106
109
  align-items: flex-start;
107
- gap: 16px;
108
- box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
110
+ gap: var(--spi-size-4);
111
+ box-shadow: var(--spi-shadow-dropdown);
109
112
  }
110
113
 
111
114
  .panel-header {
@@ -113,14 +116,11 @@
113
116
  justify-content: space-between;
114
117
  align-items: center;
115
118
  width: 100%;
116
- border-bottom: 1px solid var(--color-gray-100);
117
- padding-bottom: 24px;
119
+ border-bottom: var(--spi-border-1) solid var(--spi-color-border-default);
120
+ padding-bottom: var(--spi-size-6);
118
121
  }
119
122
 
120
123
  .panel-title {
121
- font-weight: 500;
122
- font-size: 18px;
123
- line-height: 28px;
124
124
  margin: 0;
125
125
  }
126
126
 
@@ -134,8 +134,7 @@
134
134
  }
135
135
 
136
136
  .close-icon {
137
- font-size: 24px;
138
- color: #000000;
137
+ color: var(--spi-color-text-primary);
139
138
  }
140
139
 
141
140
  .announcements-list {
@@ -147,48 +146,47 @@
147
146
  display: flex;
148
147
  flex-direction: column;
149
148
  align-items: flex-start;
150
- padding: 16px;
151
- gap: 16px;
149
+ padding: var(--spi-size-4);
150
+ gap: var(--spi-size-4);
152
151
  }
153
152
 
154
153
  .announcement-item.unread {
155
- background-color: #eaecff;
156
- border-radius: 16px;
154
+ background-color: var(--spi-color-primary-lighter);
155
+ border-radius: var(--spi-rounded-2xl);
157
156
  }
158
157
 
159
158
  .item-header {
160
159
  display: flex;
161
160
  align-items: center;
162
- gap: 16px;
161
+ gap: var(--spi-size-4);
163
162
  width: 100%;
164
163
  }
165
164
 
166
165
  .icon-container {
167
166
  position: relative;
168
167
  display: flex;
169
- width: 40px;
170
- height: 40px;
171
- padding: 8px;
168
+ width: var(--spi-size-10);
169
+ height: var(--spi-size-10);
170
+ padding: var(--spi-size-2);
172
171
  align-items: center;
173
172
  justify-content: center;
174
- border-radius: 20px;
175
- border: 1px solid var(--color-gray-100);
176
- background: #ffffff;
173
+ border-radius: var(--spi-rounded-full);
174
+ border: var(--spi-border-1) solid var(--spi-color-border-default);
175
+ background: var(--spi-color-surface-default);
177
176
  }
178
177
 
179
178
  .unread-indicator {
180
179
  position: absolute;
181
180
  left: -5px;
182
181
  top: 40%;
183
- width: 8px;
184
- height: 8px;
185
- background-color: var(--color-primary);
186
- border-radius: 50%;
182
+ width: var(--spi-size-2);
183
+ height: var(--spi-size-2);
184
+ background-color: var(--spi-color-primary-base);
185
+ border-radius: var(--spi-rounded-full);
187
186
  }
188
187
 
189
188
  .announcement-icon {
190
- color: #000000;
191
- font-size: 24px;
189
+ color: var(--spi-color-text-primary);
192
190
  }
193
191
 
194
192
  .item-info {
@@ -197,38 +195,31 @@
197
195
  }
198
196
 
199
197
  .item-title {
200
- font-weight: 500;
201
- font-size: 14px;
202
- line-height: 20px;
203
198
  margin: 0;
204
199
  }
205
200
 
206
201
  .item-date {
207
- font-size: 12px;
208
- line-height: 16px;
209
- color: var(--color-gray-200);
202
+ color: var(--spi-color-text-muted);
210
203
  text-align: left;
211
204
  }
212
205
 
213
206
  .item-message {
214
- font-size: 14px;
215
- line-height: 20px;
216
207
  margin: 0;
217
208
  }
218
209
 
219
210
  .item-divider {
220
211
  width: 100%;
221
212
  border: 0;
222
- border-top: 1px solid var(--color-gray-100);
223
- margin: 16px 0;
213
+ border-top: var(--spi-border-1) solid var(--spi-color-border-default);
214
+ margin: var(--spi-size-4) 0;
224
215
  }
225
216
 
226
217
  .empty-state {
227
218
  display: flex;
228
219
  flex-direction: column;
229
- padding: 24px;
220
+ padding: var(--spi-size-6);
230
221
  align-items: center;
231
- gap: 24px;
222
+ gap: var(--spi-size-6);
232
223
  width: 100%;
233
224
  }
234
225
 
@@ -241,28 +232,29 @@
241
232
  flex-direction: column;
242
233
  justify-content: center;
243
234
  align-items: center;
244
- gap: 8px;
235
+ gap: var(--spi-size-2);
245
236
  width: 100%;
246
237
  }
247
238
 
248
239
  .empty-title {
249
- font-size: 18px;
250
- line-height: 28px;
251
- font-weight: 700;
252
240
  word-break: break-word;
253
241
  margin: 0;
254
242
  }
255
243
 
256
244
  .empty-description {
257
- font-size: 14px;
258
- line-height: 20px;
259
245
  word-break: break-word;
260
246
  text-align: center;
261
247
  margin: 0;
262
248
  }
263
249
 
264
250
  .icon-gradient {
265
- background: linear-gradient(226deg, #00c9cd 0%, #472aff 33%, #392d9c 67%, black 100%);
251
+ background: linear-gradient(
252
+ 226deg,
253
+ #00c9cd 0%,
254
+ var(--spi-color-primary-base) 33%,
255
+ var(--spi-color-primary-dark) 67%,
256
+ black 100%
257
+ );
266
258
  -webkit-background-clip: text;
267
259
  -webkit-text-fill-color: transparent;
268
260
  background-clip: text;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- type BackgroundColor = '#472AFF' | '#25282D';
3
- type TextColor = '#333840' | '#FFFFFF';
2
+ type BackgroundColor = 'primary' | 'dark';
3
+ type TextColor = 'dark' | 'white';
4
4
 
5
5
  interface Props {
6
6
  text: string;
@@ -9,12 +9,17 @@
9
9
  keepOrder?: boolean;
10
10
  }
11
11
 
12
- let {
13
- text,
14
- backgroundColor = '#25282D',
15
- textColor = '#FFFFFF',
16
- keepOrder = false
17
- }: Props = $props();
12
+ let { text, backgroundColor, textColor, keepOrder = false }: Props = $props();
13
+
14
+ const avatarBackgroundColor: Record<BackgroundColor, string> = {
15
+ primary: '--spi-color-primary-base',
16
+ dark: '--spi-color-neutral-darkest'
17
+ };
18
+
19
+ const avatarTextColor: Record<TextColor, string> = {
20
+ dark: '--spi-color-neutral-darkest',
21
+ white: '--spi-color-text-inverse'
22
+ };
18
23
 
19
24
  const avatarSrc = (text: string): string => {
20
25
  const defaultValue = 'SO';
@@ -33,15 +38,28 @@
33
38
  </script>
34
39
 
35
40
  <svg class="avatar" width="40" height="40" viewBox="0 0 40 40">
36
- <circle cx="20" cy="20" r="20" fill={backgroundColor} />
37
- <text x="20" y="25" text-anchor="middle" font-size="14" font-weight="normal" fill={textColor}>
41
+ <circle
42
+ cx="20"
43
+ cy="20"
44
+ r="20"
45
+ fill={backgroundColor
46
+ ? `var(${avatarBackgroundColor[backgroundColor]})`
47
+ : `var(${avatarBackgroundColor.dark})`}
48
+ />
49
+ <text
50
+ x="20"
51
+ y="25"
52
+ text-anchor="middle"
53
+ class="spi-text-regular-2"
54
+ fill={textColor ? `var(${avatarTextColor[textColor]})` : `var(${avatarTextColor.white})`}
55
+ >
38
56
  {avatarSrc(text)}
39
57
  </text>
40
58
  </svg>
41
59
 
42
60
  <style>
43
61
  .avatar {
44
- min-width: 40px;
45
- min-height: 40px;
62
+ min-width: var(--spi-size-10);
63
+ min-height: var(--spi-size-10);
46
64
  }
47
65
  </style>
@@ -1,5 +1,5 @@
1
- type BackgroundColor = '#472AFF' | '#25282D';
2
- type TextColor = '#333840' | '#FFFFFF';
1
+ type BackgroundColor = 'primary' | 'dark';
2
+ type TextColor = 'dark' | 'white';
3
3
  interface Props {
4
4
  text: string;
5
5
  backgroundColor?: BackgroundColor;
@@ -29,7 +29,7 @@
29
29
 
30
30
  <button
31
31
  {@attach clearButtonFocus}
32
- class={['btn', `btn-${variant}-${variantColor}`, loading && 'loading']}
32
+ class={['btn', 'spi-text-regular-2', `btn-${variant}-${variantColor}`, loading && 'loading']}
33
33
  disabled={loading || disabled}
34
34
  {...props}
35
35
  >
@@ -55,27 +55,24 @@
55
55
  </svg>
56
56
  </span>
57
57
  {/if}
58
- <span class="content" class:hidden={loading}>
58
+ <span class="content" class:content--loading={loading}>
59
59
  {@render children()}
60
60
  </span>
61
61
  </button>
62
62
 
63
63
  <style>
64
64
  .btn {
65
- padding: 8px 16px;
66
- border-radius: 8px;
65
+ padding: var(--spi-size-2) var(--spi-size-4);
66
+ border-radius: var(--spi-rounded-lg);
67
67
  border: none;
68
- font-size: 14px;
69
68
  font-style: normal;
70
- font-weight: 400;
71
- line-height: 20px;
72
69
  display: inline-flex;
73
70
  position: relative;
74
- transition: all 0.2s ease-in-out;
71
+ transition: all var(--spi-duration-normal) var(--spi-ease-in-out);
75
72
  }
76
73
 
77
- .content.hidden {
78
- opacity: 0;
74
+ .content.content--loading {
75
+ opacity: var(--spi-opacity-0);
79
76
  }
80
77
 
81
78
  .spinner-wrapper {
@@ -93,19 +90,19 @@
93
90
 
94
91
  .btn-primary-primary .spinner,
95
92
  .btn-primary-danger .spinner {
96
- color: #fff;
93
+ color: var(--spi-color-text-inverse);
97
94
  }
98
95
 
99
96
  .btn-secondary-primary .spinner,
100
97
  .btn-outline-primary .spinner,
101
98
  .btn-outline-none-primary .spinner {
102
- color: #472aff;
99
+ color: var(--spi-color-primary-base);
103
100
  }
104
101
 
105
102
  .btn-secondary-danger .spinner,
106
103
  .btn-outline-danger .spinner,
107
104
  .btn-outline-none-danger .spinner {
108
- color: #dc182c;
105
+ color: var(--spi-color-danger-base);
109
106
  }
110
107
 
111
108
  @keyframes spin {
@@ -124,105 +121,105 @@
124
121
 
125
122
  .btn:focus:not(:disabled):not(.loading),
126
123
  .btn:focus-visible:not(:disabled):not(.loading) {
127
- box-shadow: 0px 0px 0px 3px #959bff;
124
+ box-shadow: var(--spi-shadow-focus-primary);
128
125
  outline: none;
129
126
  }
130
127
 
131
128
  .btn:disabled:not(.loading) {
132
- background: #e0e5e8;
129
+ background: var(--spi-color-surface-muted);
133
130
  border: none;
134
- color: #6b7180;
131
+ color: var(--spi-color-text-muted);
135
132
  cursor: not-allowed;
136
133
  }
137
134
 
138
135
  .btn-primary-primary {
139
- background: #472aff;
140
- color: #fff;
136
+ background: var(--spi-color-primary-base);
137
+ color: var(--spi-color-text-inverse);
141
138
  }
142
139
 
143
140
  .btn-primary-primary:hover:not(:disabled),
144
141
  .btn-primary-primary:focus:not(:disabled) {
145
- background: #3520bf;
142
+ background: var(--spi-color-primary-dark);
146
143
  }
147
144
 
148
145
  .btn-secondary-primary {
149
- background: #eaecff;
150
- color: #472aff;
146
+ background: var(--spi-color-primary-lighter);
147
+ color: var(--spi-color-primary-base);
151
148
  }
152
149
 
153
150
  .btn-secondary-primary:hover:not(:disabled),
154
151
  .btn-secondary-primary:focus:not(:disabled) {
155
- background: #472aff;
156
- color: #fff;
152
+ background: var(--spi-color-primary-base);
153
+ color: var(--spi-color-text-inverse);
157
154
  }
158
155
 
159
156
  .btn-outline-primary {
160
- border: 1px solid #472aff;
161
- background: #fff;
162
- color: #472aff;
157
+ border: var(--spi-border-1) solid var(--spi-color-primary-base);
158
+ background: var(--spi-color-surface-default);
159
+ color: var(--spi-color-primary-base);
163
160
  }
164
161
 
165
162
  .btn-outline-primary:hover:not(:disabled),
166
163
  .btn-outline-primary:focus:not(:disabled) {
167
- background: #eaecff;
164
+ background: var(--spi-color-primary-lighter);
168
165
  }
169
166
 
170
167
  .btn-outline-none-primary {
171
168
  border: none;
172
- background: #fff;
173
- color: #472aff;
174
- padding: 8px;
169
+ background: var(--spi-color-surface-default);
170
+ color: var(--spi-color-primary-base);
171
+ padding: var(--spi-size-2);
175
172
  }
176
173
 
177
174
  .btn-outline-none-primary:hover:not(:disabled),
178
175
  .btn-outline-none-primary:focus:not(:disabled) {
179
- background: #e0e5e8;
176
+ background: var(--spi-color-surface-muted);
180
177
  }
181
178
 
182
179
  .btn-primary-danger {
183
- background: #dc182c;
184
- color: #fff;
180
+ background: var(--spi-color-danger-base);
181
+ color: var(--spi-color-text-inverse);
185
182
  }
186
183
 
187
184
  .btn-primary-danger:hover:not(:disabled),
188
185
  .btn-primary-danger:focus:not(:disabled) {
189
- background: #bb1425;
186
+ background: var(--spi-color-danger-dark);
190
187
  }
191
188
 
192
189
  .btn-secondary-danger {
193
- background: #fce8ea;
194
- color: #dc182c;
190
+ background: var(--spi-color-danger-lighter);
191
+ color: var(--spi-color-danger-base);
195
192
  }
196
193
 
197
194
  .btn-secondary-danger:hover:not(:disabled),
198
195
  .btn-secondary-danger:focus:not(:disabled) {
199
- background: #dc182c;
200
- color: #fff;
196
+ background: var(--spi-color-danger-base);
197
+ color: var(--spi-color-text-inverse);
201
198
  }
202
199
 
203
200
  .btn-outline-danger {
204
- border: 1px solid #dc182c;
205
- background: #fff;
206
- color: #dc182c;
201
+ border: var(--spi-border-1) solid var(--spi-color-danger-base);
202
+ background: var(--spi-color-surface-default);
203
+ color: var(--spi-color-danger-base);
207
204
  }
208
205
 
209
206
  .btn-outline-none-danger {
210
207
  border: none;
211
- background: #fff;
212
- color: #dc182c;
213
- padding: 8px;
208
+ background: var(--spi-color-surface-default);
209
+ color: var(--spi-color-danger-base);
210
+ padding: var(--spi-size-2);
214
211
  }
215
212
 
216
213
  .btn-outline-none-danger:hover:not(:disabled),
217
214
  .btn-outline-none-danger:focus:not(:disabled),
218
215
  .btn-outline-danger:hover:not(:disabled),
219
216
  .btn-outline-danger:focus:not(:disabled) {
220
- background: #fce8ea;
217
+ background: var(--spi-color-danger-lighter);
221
218
  }
222
219
 
223
220
  .btn-outline-none-primary:disabled:not(.loading),
224
221
  .btn-outline-none-danger:disabled:not(.loading) {
225
222
  background: transparent;
226
- color: #6b7180;
223
+ color: var(--spi-color-text-muted);
227
224
  }
228
225
  </style>
@@ -16,14 +16,12 @@
16
16
  <style>
17
17
  .card {
18
18
  width: 100%;
19
- background: #fff;
20
- border-radius: 16px;
21
- box-shadow:
22
- 0px 1px 16px rgba(107, 113, 128, 0.1),
23
- 0px 1px 3px rgba(107, 113, 128, 0.2);
19
+ background: var(--spi-color-surface-default);
20
+ border-radius: var(--spi-rounded-2xl);
21
+ box-shadow: var(--spi-shadow-card);
24
22
  }
25
23
 
26
24
  .padding {
27
- padding: 24px;
25
+ padding: var(--spi-size-6);
28
26
  }
29
27
  </style>