@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
@@ -243,7 +243,7 @@
243
243
  <section
244
244
  role="button"
245
245
  tabindex="0"
246
- class="dropdown-container"
246
+ class="dropdown-container spi-text-regular-2"
247
247
  onclick={readonly ? undefined : onToggleListOptions}
248
248
  onkeypress={readonly ? undefined : onToggleListOptions}
249
249
  bind:this={dropdownContainer}
@@ -319,12 +319,12 @@
319
319
  {/if}
320
320
  </div>
321
321
  {#if description}
322
- <p class="message-description">
322
+ <p class="message-description spi-text-regular-1">
323
323
  {description}
324
324
  </p>
325
325
  {/if}
326
326
  {#if isInvalid}
327
- <p class="message-error">
327
+ <p class="message-error spi-text-regular-1">
328
328
  {Array.isArray(error) ? error[0] : error}
329
329
  </p>
330
330
  {/if}
@@ -373,25 +373,10 @@
373
373
 
374
374
  <style>
375
375
  .form-control {
376
- --primary-color: #472aff;
377
- --white: #fff;
378
- --black: #000;
379
- --error: #dc2626;
380
- --success: #008556;
381
- --info-1: #eaecff;
382
- --gray-1: #f4f6f8;
383
- --gray-2: #e0e5e8;
384
- --gray-3: #aeb1b9;
385
- --gray-4: #6b7180;
386
- --readonly-bg: #f9fafb;
387
- --readonly-border: #d1d5db;
388
- --border: 1px solid var(--gray-4);
389
-
390
376
  display: flex;
391
377
  flex-direction: column;
392
378
  width: 100%;
393
- gap: 8px;
394
- font-size: 14px;
379
+ gap: var(--spi-size-2);
395
380
 
396
381
  > .label-wrapper {
397
382
  width: fit-content;
@@ -400,24 +385,22 @@
400
385
  }
401
386
 
402
387
  > .message-description {
403
- font-size: 12px;
404
- color: var(--gray-4);
388
+ color: var(--spi-color-text-muted);
405
389
  }
406
390
 
407
391
  > .message-error {
408
- font-size: 12px;
409
- color: var(--error);
392
+ color: var(--spi-color-text-danger);
410
393
  }
411
394
  }
412
395
 
413
396
  .dropdown {
414
397
  position: relative;
415
- border: var(--border);
416
- border-radius: 8px;
398
+ border: var(--spi-border-1) solid var(--spi-color-border-strong);
399
+ border-radius: var(--spi-rounded-lg);
417
400
  background: transparent;
418
401
  transition:
419
- border-color 0.2s ease-in-out,
420
- box-shadow 0.2s ease-in-out;
402
+ border-color var(--spi-duration-normal) var(--spi-ease-in-out),
403
+ box-shadow var(--spi-duration-normal) var(--spi-ease-in-out);
421
404
  }
422
405
 
423
406
  .dropdown.disabled {
@@ -425,7 +408,7 @@
425
408
 
426
409
  > .dropdown-container {
427
410
  pointer-events: none;
428
- background: var(--gray-2);
411
+ background: var(--spi-color-surface-muted);
429
412
  }
430
413
  }
431
414
 
@@ -434,74 +417,72 @@
434
417
 
435
418
  > .dropdown-container {
436
419
  cursor: default;
437
- background: var(--readonly-bg);
438
- border-color: var(--readonly-border);
420
+ background: var(--spi-color-surface-subtle);
421
+ border-color: var(--spi-color-disabled-border);
439
422
  }
440
423
  }
441
424
 
442
425
  .dropdown:not(.disabled, .readonly, .invalid, .valid):hover {
443
- border: 1px solid var(--primary-color);
426
+ border: var(--spi-border-1) solid var(--spi-color-primary-base);
444
427
  }
445
428
 
446
429
  .dropdown:not(.disabled, .readonly, .invalid, .valid):focus-within {
447
- border: 1px solid var(--primary-color);
448
- box-shadow: 0 0 0 3px rgba(149, 155, 255, 0.3);
430
+ border: var(--spi-border-1) solid var(--spi-color-primary-base);
431
+ box-shadow: var(--spi-shadow-focus-primary);
449
432
  }
450
433
 
451
434
  .dropdown.valid {
452
- border: 1px solid var(--success);
435
+ border: var(--spi-border-1) solid var(--spi-color-success-base);
453
436
  }
454
437
 
455
438
  .dropdown.valid:focus-within {
456
- box-shadow: 0px 0px 0px 3px rgba(16, 185, 129, 0.15);
439
+ box-shadow: var(--spi-shadow-focus-success);
457
440
  }
458
441
 
459
442
  .dropdown.invalid {
460
- border: 1px solid var(--error);
443
+ border: var(--spi-border-1) solid var(--spi-color-danger-base);
461
444
  }
462
445
 
463
446
  .dropdown.invalid:focus-within {
464
- box-shadow: 0px 0px 0px 3px rgba(220, 38, 38, 0.2);
447
+ box-shadow: var(--spi-shadow-focus-danger);
465
448
  }
466
449
 
467
450
  .dropdown > .dropdown-container {
468
- font-size: 14px;
469
- line-height: 20px;
470
451
  display: grid;
471
452
  grid-template-columns: 1fr auto;
472
- min-height: 36px;
473
- padding: 8px 16px;
474
- gap: 8px;
453
+ min-height: var(--spi-size-9);
454
+ padding: var(--spi-size-2) var(--spi-size-4);
455
+ gap: var(--spi-size-2);
475
456
  align-items: center;
476
457
  cursor: pointer;
477
458
  outline: none;
478
459
  border: none;
479
- border-radius: 8px;
480
- background: var(--white);
460
+ border-radius: var(--spi-rounded-lg);
461
+ background: var(--spi-color-surface-default);
481
462
  }
482
463
 
483
464
  .dropdown > .dropdown-container > .dropdown-container-selected-options {
484
465
  display: flex;
485
466
  flex-wrap: wrap;
486
467
  max-height: 250px;
487
- gap: 8px;
468
+ gap: var(--spi-size-2);
488
469
  align-items: center;
489
470
  overflow-y: auto;
490
471
 
491
472
  > .placeholder {
492
- color: var(--gray-4);
493
- opacity: 1;
473
+ color: var(--spi-color-text-muted);
474
+ opacity: var(--spi-opacity-100);
494
475
  }
495
476
 
496
477
  > .dropdown-container-selected-option {
497
478
  display: flex;
498
- padding: 0px 5px;
499
- gap: 4px;
479
+ padding: 0 var(--spi-size-1);
480
+ gap: var(--spi-size-1);
500
481
  align-items: center;
501
482
  cursor: default;
502
- border-radius: 4px;
503
- border: 1px solid var(--gray-2);
504
- background: var(--gray-1);
483
+ border-radius: var(--spi-rounded-sm);
484
+ border: var(--spi-border-1) solid var(--spi-color-border-default);
485
+ background: var(--spi-color-surface-subtle);
505
486
  }
506
487
  }
507
488
 
@@ -511,19 +492,16 @@
511
492
  flex-direction: column;
512
493
  z-index: 100;
513
494
  width: 100%;
514
- padding: 8px;
515
- margin-top: 8px;
516
- gap: 8px;
517
- border-radius: 8px;
518
- background: var(--white);
519
- box-shadow:
520
- 0px 4px 5px rgba(51, 56, 64, 0.15),
521
- 0px 1px 3px rgba(51, 56, 64, 0.2),
522
- 0px 1px 16px rgba(51, 56, 64, 0.1);
495
+ padding: var(--spi-size-2);
496
+ margin-top: var(--spi-size-2);
497
+ gap: var(--spi-size-2);
498
+ border-radius: var(--spi-rounded-lg);
499
+ background: var(--spi-color-surface-default);
500
+ box-shadow: var(--spi-shadow-card-hover);
523
501
 
524
502
  > .dropdown-list-no-options-message {
525
503
  text-align: center;
526
- color: var(--gray-4);
504
+ color: var(--spi-color-text-muted);
527
505
  }
528
506
  }
529
507
 
@@ -531,7 +509,7 @@
531
509
  top: auto;
532
510
  transform-origin: bottom;
533
511
  bottom: 100%;
534
- margin-bottom: 8px;
512
+ margin-bottom: var(--spi-size-2);
535
513
  }
536
514
 
537
515
  .dropdown > .dropdown-list.position-fixed {
@@ -545,7 +523,7 @@
545
523
  display: flex;
546
524
  flex-direction: column;
547
525
  max-height: 200px;
548
- gap: 8px;
526
+ gap: var(--spi-size-2);
549
527
  overflow-y: auto;
550
528
 
551
529
  .dropdown-list-option {
@@ -554,8 +532,8 @@
554
532
  align-items: center;
555
533
  text-align: left;
556
534
  width: 100%;
557
- min-height: 40px;
558
- padding: 0px 8px;
535
+ min-height: var(--spi-size-10);
536
+ padding: 0 var(--spi-size-2);
559
537
  cursor: pointer;
560
538
  outline: none;
561
539
  border: none;
@@ -565,25 +543,25 @@
565
543
 
566
544
  .dropdown-list-option:not(.active) > button:focus-visible,
567
545
  .dropdown-list-option:not(.active) > button:hover {
568
- background: var(--gray-1);
546
+ background: var(--spi-color-surface-subtle);
569
547
  }
570
548
 
571
549
  .dropdown-list-option.active {
572
- background: var(--info-1);
550
+ background: var(--spi-color-primary-lighter);
573
551
  }
574
552
  }
575
553
 
576
554
  .clear-button {
577
555
  outline: none;
578
556
  border: none;
579
- color: var(--gray-4);
557
+ color: var(--spi-color-text-muted);
580
558
  background: transparent;
581
- transition: color 0.2s ease-in-out;
559
+ transition: color var(--spi-duration-normal) var(--spi-ease-in-out);
582
560
  }
583
561
 
584
562
  .clear-button:focus-visible,
585
563
  .clear-button:hover {
586
564
  cursor: pointer;
587
- color: var(--black);
565
+ color: var(--spi-color-text-primary);
588
566
  }
589
567
  </style>
@@ -55,6 +55,7 @@
55
55
  bind:value
56
56
  class={[
57
57
  'form-textarea',
58
+ 'spi-text-regular-2',
58
59
  props.disabled && 'form-textarea-disabled',
59
60
  props.readonly && 'form-textarea-readonly',
60
61
  !resize && 'form-textarea-no-resize'
@@ -67,18 +68,18 @@
67
68
  <div class="form-footer">
68
69
  <div class="form-messages">
69
70
  {#if description}
70
- <p class="form-message form-message-description">
71
+ <p class="form-message form-message-description spi-text-regular-1">
71
72
  {description}
72
73
  </p>
73
74
  {/if}
74
75
  {#if errorMessage}
75
- <p class="form-message form-message-error">
76
+ <p class="form-message form-message-error spi-text-regular-1">
76
77
  {Array.isArray(errorMessage) ? errorMessage[0] : errorMessage}
77
78
  </p>
78
79
  {/if}
79
80
  </div>
80
81
  {#if maximumCharactersAllowed}
81
- <div class={['form-character-count', isOverLimit && 'error']}>
82
+ <div class={['form-character-count', 'spi-text-regular-1', isOverLimit && 'error']}>
82
83
  {currentTextLength} / {maximumCharactersAllowed}
83
84
  </div>
84
85
  {/if}
@@ -90,23 +91,17 @@
90
91
  .form-container {
91
92
  display: flex;
92
93
  flex-direction: column;
93
- gap: 8px;
94
- font-size: 14px;
95
- line-height: 20px;
96
- }
97
-
98
- .form-message {
99
- font-size: 12px;
94
+ gap: var(--spi-size-2);
100
95
  }
101
96
 
102
97
  .form-textarea-wrapper {
103
98
  position: relative;
104
99
  display: flex;
105
100
  width: 100%;
106
- border-radius: 8px;
107
- border: 1px solid #6b7180;
108
- background: #fff;
109
- transition: all 0.2s ease-in-out;
101
+ border-radius: var(--spi-rounded-lg);
102
+ border: var(--spi-border-1) solid var(--spi-color-border-strong);
103
+ background: var(--spi-color-surface-default);
104
+ transition: all var(--spi-duration-normal) var(--spi-ease-in-out);
110
105
  overflow: hidden;
111
106
  }
112
107
 
@@ -114,24 +109,22 @@
114
109
  :has(.form-textarea:read-only)
115
110
  ),
116
111
  .form-textarea-wrapper:focus-within {
117
- border-color: #472aff;
112
+ border-color: var(--spi-color-border-focus);
118
113
  }
119
114
 
120
115
  .form-textarea-wrapper:focus-within {
121
- box-shadow: 0px 0px 0px 3px rgba(149, 155, 255, 0.3);
116
+ box-shadow: var(--spi-shadow-focus-primary);
122
117
  }
123
118
 
124
119
  .form-textarea {
125
- font-size: 14px;
126
- line-height: 20px;
127
120
  display: flex;
128
121
  width: 100%;
129
- min-height: 80px;
130
- padding: 8px 16px;
122
+ min-height: var(--spi-size-20);
123
+ padding: var(--spi-size-2) var(--spi-size-4);
131
124
  border: none;
132
- border-radius: 8px;
133
- color: #000;
134
- transition: all 0.2s ease-in-out;
125
+ border-radius: var(--spi-rounded-lg);
126
+ color: var(--spi-color-text-primary);
127
+ transition: all var(--spi-duration-normal) var(--spi-ease-in-out);
135
128
  font-family: inherit;
136
129
  }
137
130
 
@@ -140,15 +133,14 @@
140
133
  }
141
134
 
142
135
  .form-textarea-disabled {
143
- background-color: #f3f4f6;
144
- border-color: #d1d5db;
145
- color: #6b7180;
136
+ background-color: var(--spi-color-disabled-bg);
137
+ border-color: var(--spi-color-disabled-border);
146
138
  cursor: not-allowed;
147
139
  }
148
140
 
149
141
  .form-textarea-readonly {
150
- background-color: #f9fafb;
151
- border-color: #d1d5db;
142
+ background-color: var(--spi-color-surface-subtle);
143
+ border-color: var(--spi-color-border-default);
152
144
  cursor: default;
153
145
  }
154
146
 
@@ -158,41 +150,40 @@
158
150
 
159
151
  .form-textarea::placeholder,
160
152
  .form-textarea:disabled::placeholder {
161
- color: #6b7180;
162
- opacity: 1;
153
+ color: var(--spi-color-text-placeholder);
154
+ opacity: var(--spi-opacity-100);
163
155
  }
164
156
 
165
157
  .form-footer {
166
158
  display: flex;
167
159
  justify-content: space-between;
168
160
  align-items: flex-start;
169
- gap: 8px;
161
+ gap: var(--spi-size-2);
170
162
  }
171
163
 
172
164
  .form-messages {
173
165
  display: flex;
174
166
  flex-direction: column;
175
- gap: 4px;
167
+ gap: var(--spi-size-1);
176
168
  flex: 1;
177
169
  }
178
170
 
179
171
  .form-message-error {
180
- color: #dc2626;
172
+ color: var(--spi-color-text-danger);
181
173
  }
182
174
 
183
175
  .form-message-description {
184
- color: #6b7180;
176
+ color: var(--spi-color-text-muted);
185
177
  }
186
178
 
187
179
  .form-character-count {
188
- font-size: 12px;
189
- color: #6b7180;
190
180
  white-space: nowrap;
181
+ color: var(--spi-color-text-muted);
191
182
  flex-shrink: 0;
192
183
  }
193
184
 
194
185
  .form-character-count.error {
195
- color: #dc2626;
186
+ color: var(--spi-color-text-danger);
196
187
  }
197
188
 
198
189
  .form-textarea-wrapper.error,
@@ -200,11 +191,11 @@
200
191
  :has(.form-textarea:read-only)
201
192
  ),
202
193
  .form-textarea-wrapper.error:focus-within {
203
- border-color: #dc2626;
194
+ border-color: var(--spi-color-border-danger);
204
195
  }
205
196
 
206
197
  .form-textarea-wrapper.error:focus-within {
207
- box-shadow: 0px 0px 0px 3px rgba(220, 38, 38, 0.2);
198
+ box-shadow: var(--spi-shadow-focus-danger);
208
199
  }
209
200
 
210
201
  .form-textarea-wrapper.success,
@@ -212,27 +203,27 @@
212
203
  :has(.form-textarea:read-only)
213
204
  ),
214
205
  .form-textarea-wrapper.success:focus-within {
215
- border-color: #008556;
206
+ border-color: var(--spi-color-border-success);
216
207
  }
217
208
 
218
209
  .form-textarea-wrapper.success:focus-within {
219
- box-shadow: 0px 0px 0px 3px rgba(16, 185, 129, 0.15);
210
+ box-shadow: var(--spi-shadow-focus-success);
220
211
  }
221
212
 
222
213
  .form-textarea-wrapper:has(.form-textarea:disabled),
223
214
  .form-textarea-wrapper:has(.form-textarea:read-only) {
224
- border-color: #d1d5db !important;
215
+ border-color: var(--spi-color-disabled-border) !important;
225
216
  box-shadow: none !important;
226
217
  }
227
218
 
228
219
  @media (prefers-contrast: high) {
229
220
  .form-textarea {
230
- border-width: 2px;
221
+ border-width: var(--spi-border-2);
231
222
  }
232
223
 
233
224
  .form-textarea:focus {
234
- outline: 2px solid;
235
- outline-offset: 2px;
225
+ outline: var(--spi-border-2) solid;
226
+ outline-offset: var(--spi-border-2);
236
227
  }
237
228
  }
238
229
 
@@ -32,7 +32,7 @@
32
32
  role="switch"
33
33
  />
34
34
  <div class={['toggle-slider', checked && 'checked', disabled && 'disabled']}>
35
- <span class="material-icons-outlined toggle-icon">
35
+ <span class="material-icons-outlined toggle-icon spi-text-regular-1">
36
36
  {#if checked}
37
37
  done
38
38
  {:else}
@@ -49,7 +49,7 @@
49
49
  display: flex;
50
50
  flex-direction: row;
51
51
  align-items: center;
52
- gap: 8px;
52
+ gap: var(--spi-size-2);
53
53
  }
54
54
 
55
55
  .container.vertical {
@@ -64,90 +64,88 @@
64
64
  .container.vertical label {
65
65
  order: 1;
66
66
  }
67
+
67
68
  .toggle-container {
68
69
  position: relative;
69
70
  }
70
71
 
71
72
  .toggle-input {
72
73
  position: absolute;
73
- opacity: 0;
74
+ opacity: var(--spi-opacity-0);
74
75
  width: 0;
75
76
  height: 0;
76
77
  }
77
78
 
78
79
  .toggle-slider {
79
80
  display: flex;
80
- width: 40px;
81
+ width: var(--spi-size-10);
81
82
  padding: 2px;
82
83
  align-items: center;
83
- border-radius: 12px;
84
- border: 2px solid #6b7180;
85
- background: #fff;
86
- transition: all 0.3s ease;
84
+ border-radius: var(--spi-rounded-xl);
85
+ border: var(--spi-border-2) solid var(--spi-color-neutral-dark);
86
+ background: var(--spi-color-surface-default);
87
+ transition: all var(--spi-duration-slow) var(--spi-ease-default);
87
88
  cursor: pointer;
88
89
  }
89
90
 
90
91
  .toggle-slider.checked {
91
92
  justify-content: flex-end;
92
- border: 2px solid #472aff;
93
- background: #472aff;
93
+ border: var(--spi-border-2) solid var(--spi-color-primary-base);
94
+ background: var(--spi-color-primary-base);
94
95
  }
95
96
 
96
97
  .toggle-slider.disabled {
97
98
  cursor: not-allowed;
98
- border: 2px solid #6b7180;
99
- background: #e0e5e8;
99
+ border: var(--spi-border-2) solid var(--spi-color-neutral-dark);
100
+ background: var(--spi-color-surface-muted);
100
101
  }
101
102
 
102
103
  .toggle-slider.disabled.checked {
103
- border: 2px solid #6b7180;
104
- background: #6b7180;
104
+ border: var(--spi-border-2) solid var(--spi-color-neutral-dark);
105
+ background: var(--spi-color-neutral-dark);
105
106
  }
106
107
 
107
108
  .toggle-icon {
108
109
  display: flex;
109
- font-size: 12px;
110
- flex-direction: column;
111
110
  align-items: center;
112
- justify-content: center;
113
- border-radius: 16px;
114
- border: 2px solid #6b7180;
115
- background: #6b7180;
116
- color: #fff;
117
- transition: all 0.3s ease;
118
- cursor: pointer;
111
+ line-height: normal;
112
+ border-radius: var(--spi-rounded-2xl);
113
+ border: var(--spi-border-2) solid var(--spi-color-neutral-dark);
114
+ background: var(--spi-color-neutral-dark);
115
+ color: var(--spi-color-text-inverse);
116
+ transition: all var(--spi-duration-slow) var(--spi-ease-default);
119
117
  }
120
118
 
121
119
  .toggle-slider.checked .toggle-icon {
122
- border: 2px solid #fff;
123
- background: #fff;
124
- color: #472aff;
120
+ border: var(--spi-border-2) solid var(--spi-color-surface-default);
121
+ background: var(--spi-color-surface-default);
122
+ color: var(--spi-color-primary-base);
125
123
  }
126
124
 
127
125
  .toggle-slider.disabled .toggle-icon {
128
126
  cursor: not-allowed;
129
- border: 2px solid #6b7180;
130
- background: #6b7180;
131
- color: #fff;
127
+ border: var(--spi-border-2) solid var(--spi-color-neutral-dark);
128
+ background: var(--spi-color-neutral-dark);
129
+ color: var(--spi-color-text-inverse);
132
130
  }
133
131
 
134
132
  .toggle-slider.disabled.checked .toggle-icon {
135
- border: 2px solid #fff;
136
- background: #fff;
137
- color: #6b7180;
133
+ border: var(--spi-border-2) solid var(--spi-color-surface-default);
134
+ background: var(--spi-color-surface-default);
135
+ color: var(--spi-color-neutral-dark);
138
136
  }
139
137
 
140
138
  .toggle-container:hover .toggle-slider:not(.disabled).checked {
141
- background: #3520bf;
142
- border: 2px solid #3520bf;
139
+ background: var(--spi-color-primary-dark);
140
+ border: var(--spi-border-2) solid var(--spi-color-primary-dark);
143
141
  }
144
142
 
145
143
  .toggle-container:hover .toggle-slider:not(.disabled):not(.checked) {
146
- border: 2px solid #434952;
144
+ border: var(--spi-border-2) solid var(--spi-color-neutral-darker);
147
145
  }
148
146
 
149
147
  .toggle-container:hover .toggle-slider:not(.disabled):not(.checked) .toggle-icon {
150
- border: 2px solid #434952;
151
- background: #434952;
148
+ border: var(--spi-border-2) solid var(--spi-color-neutral-darker);
149
+ background: var(--spi-color-neutral-darker);
152
150
  }
153
151
  </style>
@@ -17,9 +17,7 @@
17
17
  onclose
18
18
  }: Props = $props();
19
19
 
20
- let confirmationText = $derived(
21
- `Are you sure you want to delete ${confirmationName || 'this item'}?`
22
- );
20
+ let message = $derived(`Are you sure you want to delete ${confirmationName || 'this item'}?`);
23
21
  let value = $state('');
24
22
  let isLoading = $state(false);
25
23
  let enableButton = $derived(!enableDoubleConfirmation || confirmationName === value);
@@ -41,7 +39,7 @@
41
39
  <Modal title="Delete confirmation" bind:show {onclose}>
42
40
  <Spinner show={isLoading} />
43
41
  <div class="content">
44
- <p>{confirmationText}</p>
42
+ <p>{message}</p>
45
43
  {#if enableDoubleConfirmation}
46
44
  <p>
47
45
  To confirm, type "<strong>{confirmationName}</strong>" in the box below
@@ -73,7 +71,7 @@
73
71
  .content {
74
72
  display: flex;
75
73
  flex-direction: column;
76
- gap: 16px;
74
+ gap: var(--spi-size-4);
77
75
  width: 100%;
78
76
  }
79
77