@salmexio/ui 0.4.0 → 1.1.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 (119) hide show
  1. package/README.md +52 -3
  2. package/dist/dialogs/ContextMenu/ContextMenu.svelte +97 -94
  3. package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +3 -2
  4. package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts.map +1 -1
  5. package/dist/dialogs/Modal/Modal.svelte +112 -116
  6. package/dist/dialogs/Modal/Modal.svelte.d.ts +1 -1
  7. package/dist/feedback/Alert/Alert.svelte +119 -220
  8. package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
  9. package/dist/feedback/ProgressBar/ProgressBar.svelte +265 -0
  10. package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +40 -0
  11. package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
  12. package/dist/feedback/ProgressBar/index.d.ts +2 -0
  13. package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
  14. package/dist/feedback/ProgressBar/index.js +1 -0
  15. package/dist/feedback/Skeleton/Skeleton.svelte +157 -0
  16. package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +37 -0
  17. package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
  18. package/dist/feedback/Skeleton/index.d.ts +2 -0
  19. package/dist/feedback/Skeleton/index.d.ts.map +1 -0
  20. package/dist/feedback/Skeleton/index.js +1 -0
  21. package/dist/feedback/Spinner/Spinner.svelte +86 -151
  22. package/dist/feedback/Spinner/Spinner.svelte.d.ts +5 -3
  23. package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -1
  24. package/dist/feedback/Toast/Toaster.svelte +431 -0
  25. package/dist/feedback/Toast/Toaster.svelte.d.ts +22 -0
  26. package/dist/feedback/Toast/Toaster.svelte.d.ts.map +1 -0
  27. package/dist/feedback/Toast/index.d.ts +4 -0
  28. package/dist/feedback/Toast/index.d.ts.map +1 -0
  29. package/dist/feedback/Toast/index.js +2 -0
  30. package/dist/feedback/Toast/toastStore.d.ts +34 -0
  31. package/dist/feedback/Toast/toastStore.d.ts.map +1 -0
  32. package/dist/feedback/Toast/toastStore.js +43 -0
  33. package/dist/feedback/index.d.ts +4 -0
  34. package/dist/feedback/index.d.ts.map +1 -1
  35. package/dist/feedback/index.js +3 -0
  36. package/dist/forms/Checkbox/Checkbox.svelte +87 -104
  37. package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
  38. package/dist/forms/Select/Select.svelte +137 -179
  39. package/dist/forms/Select/Select.svelte.d.ts +1 -1
  40. package/dist/forms/Slider/Slider.svelte +356 -0
  41. package/dist/forms/Slider/Slider.svelte.d.ts +50 -0
  42. package/dist/forms/Slider/Slider.svelte.d.ts.map +1 -0
  43. package/dist/forms/Slider/index.d.ts +2 -0
  44. package/dist/forms/Slider/index.d.ts.map +1 -0
  45. package/dist/forms/Slider/index.js +1 -0
  46. package/dist/forms/TextInput/TextInput.svelte +161 -167
  47. package/dist/forms/TextInput/TextInput.svelte.d.ts +1 -1
  48. package/dist/forms/Textarea/Textarea.svelte +615 -0
  49. package/dist/forms/Textarea/Textarea.svelte.d.ts +47 -0
  50. package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
  51. package/dist/forms/Textarea/index.d.ts +2 -0
  52. package/dist/forms/Textarea/index.d.ts.map +1 -0
  53. package/dist/forms/Textarea/index.js +1 -0
  54. package/dist/forms/Toggle/Toggle.svelte +239 -0
  55. package/dist/forms/Toggle/Toggle.svelte.d.ts +39 -0
  56. package/dist/forms/Toggle/Toggle.svelte.d.ts.map +1 -0
  57. package/dist/forms/Toggle/index.d.ts +2 -0
  58. package/dist/forms/Toggle/index.d.ts.map +1 -0
  59. package/dist/forms/Toggle/index.js +1 -0
  60. package/dist/forms/index.d.ts +3 -0
  61. package/dist/forms/index.d.ts.map +1 -1
  62. package/dist/forms/index.js +3 -0
  63. package/dist/index.d.ts +0 -1
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +0 -1
  66. package/dist/layout/Card/Card.svelte +66 -39
  67. package/dist/layout/Card/Card.svelte.d.ts +1 -1
  68. package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
  69. package/dist/layout/Container/Container.svelte +71 -71
  70. package/dist/layout/Container/Container.svelte.d.ts +2 -2
  71. package/dist/layout/ThermalBackground/ThermalBackground.svelte +313 -0
  72. package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts +16 -0
  73. package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts.map +1 -0
  74. package/dist/layout/ThermalBackground/index.d.ts +2 -0
  75. package/dist/layout/ThermalBackground/index.d.ts.map +1 -0
  76. package/dist/layout/ThermalBackground/index.js +1 -0
  77. package/dist/layout/index.d.ts +1 -0
  78. package/dist/layout/index.d.ts.map +1 -1
  79. package/dist/layout/index.js +1 -0
  80. package/dist/navigation/CommandPalette/CommandPalette.svelte +407 -189
  81. package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +8 -3
  82. package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts.map +1 -1
  83. package/dist/navigation/Tabs/Tabs.svelte +139 -192
  84. package/dist/navigation/Tabs/Tabs.svelte.d.ts +2 -2
  85. package/dist/primitives/Badge/Badge.svelte +85 -220
  86. package/dist/primitives/Badge/Badge.svelte.d.ts +2 -2
  87. package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -1
  88. package/dist/primitives/Button/Button.svelte +214 -194
  89. package/dist/primitives/Button/Button.svelte.d.ts +3 -3
  90. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  91. package/dist/primitives/Tooltip/Tooltip.svelte +260 -0
  92. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +36 -0
  93. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
  94. package/dist/primitives/Tooltip/index.d.ts +2 -0
  95. package/dist/primitives/Tooltip/index.d.ts.map +1 -0
  96. package/dist/primitives/Tooltip/index.js +1 -0
  97. package/dist/primitives/index.d.ts +1 -0
  98. package/dist/primitives/index.d.ts.map +1 -1
  99. package/dist/primitives/index.js +1 -0
  100. package/dist/styles/tokens.css +329 -260
  101. package/package.json +5 -5
  102. package/dist/windowing/Window/Window.svelte +0 -637
  103. package/dist/windowing/Window/Window.svelte.d.ts +0 -65
  104. package/dist/windowing/Window/Window.svelte.d.ts.map +0 -1
  105. package/dist/windowing/Window/index.d.ts +0 -2
  106. package/dist/windowing/Window/index.d.ts.map +0 -1
  107. package/dist/windowing/Window/index.js +0 -1
  108. package/dist/windowing/WindowManager/WindowManager.svelte +0 -425
  109. package/dist/windowing/WindowManager/WindowManager.svelte.d.ts +0 -38
  110. package/dist/windowing/WindowManager/WindowManager.svelte.d.ts.map +0 -1
  111. package/dist/windowing/WindowManager/index.d.ts +0 -2
  112. package/dist/windowing/WindowManager/index.d.ts.map +0 -1
  113. package/dist/windowing/WindowManager/index.js +0 -1
  114. package/dist/windowing/index.d.ts +0 -5
  115. package/dist/windowing/index.d.ts.map +0 -1
  116. package/dist/windowing/index.js +0 -3
  117. package/dist/windowing/windowStore.svelte.d.ts +0 -49
  118. package/dist/windowing/windowStore.svelte.d.ts.map +0 -1
  119. package/dist/windowing/windowStore.svelte.js +0 -170
@@ -1,7 +1,7 @@
1
1
  <!--
2
2
  @component Alert
3
3
 
4
- Win2K × Basquiat Bold message banner. Left accent border, high contrast.
4
+ INFRAREDClean message banner. Left accent border, dark surface.
5
5
  Dismissible, expandable, optional title; role="alert" for errors.
6
6
  -->
7
7
  <script lang="ts">
@@ -73,11 +73,11 @@ function toggleExpanded() {
73
73
  <div
74
74
  {id}
75
75
  class={cn(
76
- 'salmex-alert',
77
- `salmex-alert-${variant}`,
78
- `salmex-alert-${type}`,
79
- expandable && 'salmex-alert-expandable',
80
- expandable && isExpanded && 'salmex-alert-expanded',
76
+ 'sx-alert',
77
+ `sx-alert-${variant}`,
78
+ `sx-alert-${type}`,
79
+ expandable && 'sx-alert-expandable',
80
+ expandable && isExpanded && 'sx-alert-expanded',
81
81
  className
82
82
  )}
83
83
  role={ariaRole}
@@ -85,7 +85,7 @@ function toggleExpanded() {
85
85
  aria-labelledby={title ? titleId : undefined}
86
86
  >
87
87
  {#if showIcon}
88
- <span class="salmex-alert-icon" aria-hidden="true">
88
+ <span class="sx-alert-icon" aria-hidden="true">
89
89
  {#if type === 'success'}
90
90
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>
91
91
  {:else if type === 'error'}
@@ -98,20 +98,20 @@ function toggleExpanded() {
98
98
  </span>
99
99
  {/if}
100
100
 
101
- <div class="salmex-alert-content">
101
+ <div class="sx-alert-content">
102
102
  {#if title}
103
103
  {#if expandable}
104
104
  <button
105
105
  type="button"
106
- class="salmex-alert-title-btn"
106
+ class="sx-alert-title-btn"
107
107
  onclick={toggleExpanded}
108
108
  aria-expanded={isExpanded}
109
109
  aria-controls={contentId}
110
110
  >
111
- <svelte:element this={headingLevel} id={titleId} class="salmex-alert-title">
111
+ <svelte:element this={headingLevel} id={titleId} class="sx-alert-title">
112
112
  {title}
113
113
  </svelte:element>
114
- <span class="salmex-alert-expand-icon" aria-hidden="true">
114
+ <span class="sx-alert-expand-icon" aria-hidden="true">
115
115
  {#if isExpanded}
116
116
  &#9660;
117
117
  {:else}
@@ -120,7 +120,7 @@ function toggleExpanded() {
120
120
  </span>
121
121
  </button>
122
122
  {:else}
123
- <svelte:element this={headingLevel} id={titleId} class="salmex-alert-title">
123
+ <svelte:element this={headingLevel} id={titleId} class="sx-alert-title">
124
124
  {title}
125
125
  </svelte:element>
126
126
  {/if}
@@ -129,8 +129,8 @@ function toggleExpanded() {
129
129
  {#if children}
130
130
  <div
131
131
  id={contentId}
132
- class="salmex-alert-body"
133
- class:salmex-alert-body-hidden={expandable && !isExpanded}
132
+ class="sx-alert-body"
133
+ class:sx-alert-body-hidden={expandable && !isExpanded}
134
134
  aria-hidden={expandable && !isExpanded}
135
135
  >
136
136
  {@render children()}
@@ -138,7 +138,7 @@ function toggleExpanded() {
138
138
  {/if}
139
139
 
140
140
  {#if actions && (!expandable || isExpanded)}
141
- <div class="salmex-alert-actions">
141
+ <div class="sx-alert-actions">
142
142
  {@render actions()}
143
143
  </div>
144
144
  {/if}
@@ -147,7 +147,7 @@ function toggleExpanded() {
147
147
  {#if dismissible}
148
148
  <button
149
149
  type="button"
150
- class="salmex-alert-dismiss"
150
+ class="sx-alert-dismiss"
151
151
  onclick={handleDismiss}
152
152
  aria-label={closeLabel}
153
153
  >
@@ -157,94 +157,91 @@ function toggleExpanded() {
157
157
  </div>
158
158
 
159
159
  <style>
160
- /* Win2K × Basquiat: panel/chrome — canvas surface, bold 3px border, flat shadow */
161
- .salmex-alert {
160
+ /* INFRARED: surface card, left accent border, subtle type tint */
161
+ .sx-alert {
162
162
  display: flex;
163
- gap: var(--salmex-space-3);
164
- padding: var(--salmex-space-4);
165
- border: 2px solid transparent;
166
- font-family: var(--salmex-font-system);
167
- transition: box-shadow var(--salmex-transition-fast);
168
- border-radius: var(--salmex-radius-sm);
169
- /* Inner depth + flat outer shadow */
170
- box-shadow:
171
- inset 1px 1px 0 rgb(var(--salmex-button-highlight)),
172
- inset -1px -1px 0 rgb(var(--salmex-button-shadow)),
173
- var(--salmex-shadow-md);
174
- background: rgb(var(--salmex-window-surface));
163
+ gap: var(--sx-space-3);
164
+ padding: var(--sx-space-4);
165
+ background: var(--sx-color-surface);
166
+ border: 1px solid var(--sx-color-border);
167
+ border-left: 2px solid var(--sx-color-border-strong);
168
+ border-radius: var(--sx-radius-md);
169
+ font-family: var(--sx-font-body);
170
+ transition: box-shadow var(--sx-transition-fast);
171
+ animation: sx-alert-in var(--sx-duration-base) var(--sx-ease-out) both;
175
172
  }
176
173
 
177
- .salmex-alert-standard {
178
- border-radius: var(--salmex-radius-sm);
174
+ .sx-alert-standard {
175
+ border-radius: var(--sx-radius-md);
179
176
  }
180
177
 
181
- .salmex-alert-slim {
182
- padding: var(--salmex-space-2) var(--salmex-space-3);
183
- gap: var(--salmex-space-2);
178
+ .sx-alert-slim {
179
+ padding: var(--sx-space-2) var(--sx-space-3);
180
+ gap: var(--sx-space-2);
184
181
  }
185
182
 
186
- .salmex-alert-slim .salmex-alert-title {
187
- font-size: var(--salmex-font-size-sm);
183
+ .sx-alert-slim .sx-alert-title {
184
+ font-size: var(--sx-text-sm);
188
185
  margin-bottom: 0;
189
186
  }
190
187
 
191
- .salmex-alert-slim .salmex-alert-body {
192
- font-size: var(--salmex-font-size-xs);
188
+ .sx-alert-slim .sx-alert-body {
189
+ font-size: var(--sx-text-xs);
193
190
  }
194
191
 
195
- .salmex-alert-icon {
192
+ .sx-alert-icon {
196
193
  flex-shrink: 0;
197
194
  display: flex;
198
195
  align-items: flex-start;
199
196
  margin-top: 2px;
200
197
  }
201
198
 
202
- .salmex-alert-content {
199
+ .sx-alert-content {
203
200
  flex: 1;
204
201
  min-width: 0;
205
202
  display: flex;
206
203
  flex-direction: column;
207
204
  }
208
205
 
209
- .salmex-alert-title {
210
- font-size: var(--salmex-font-size-md);
211
- font-weight: 800;
206
+ .sx-alert-title {
207
+ font-size: var(--sx-text-md);
208
+ font-weight: 600;
212
209
  line-height: 1.4;
213
- margin: 0 0 var(--salmex-space-1);
214
- letter-spacing: 0.5px;
210
+ margin: 0 0 var(--sx-space-1);
211
+ color: var(--sx-color-text);
215
212
  }
216
213
 
217
- .salmex-alert-title:where(h2, h3, h4, h5, h6) {
214
+ .sx-alert-title:where(h2, h3, h4, h5, h6) {
218
215
  font-size: inherit;
219
216
  margin: inherit;
220
217
  }
221
218
 
222
- .salmex-alert-body {
223
- font-size: var(--salmex-font-size-sm);
219
+ .sx-alert-body {
220
+ font-size: var(--sx-text-sm);
224
221
  line-height: 1.55;
225
- color: rgb(var(--salmex-text-secondary));
222
+ color: var(--sx-color-text-secondary);
226
223
  }
227
224
 
228
- .salmex-alert-body-hidden {
225
+ .sx-alert-body-hidden {
229
226
  display: none;
230
227
  }
231
228
 
232
- .salmex-alert-actions {
229
+ .sx-alert-actions {
233
230
  display: flex;
234
231
  flex-wrap: wrap;
235
232
  align-items: center;
236
- gap: var(--salmex-space-2);
237
- margin-top: var(--salmex-space-3);
233
+ gap: var(--sx-space-2);
234
+ margin-top: var(--sx-space-3);
238
235
  }
239
236
 
240
- .salmex-alert-title-btn {
237
+ .sx-alert-title-btn {
241
238
  display: flex;
242
239
  align-items: center;
243
240
  justify-content: space-between;
244
241
  width: 100%;
245
- gap: var(--salmex-space-2);
242
+ gap: var(--sx-space-2);
246
243
  padding: 0;
247
- margin: 0 0 var(--salmex-space-1);
244
+ margin: 0 0 var(--sx-space-1);
248
245
  background: none;
249
246
  border: none;
250
247
  cursor: pointer;
@@ -253,224 +250,126 @@ function toggleExpanded() {
253
250
  font: inherit;
254
251
  }
255
252
 
256
- .salmex-alert-title-btn:focus-visible {
253
+ .sx-alert-title-btn:focus-visible {
257
254
  outline: none;
258
- box-shadow: 0 0 0 2px rgb(var(--salmex-midnight-black)), 0 0 2px 4px rgb(var(--salmex-crown-yellow));
255
+ box-shadow: 0 0 0 2px var(--sx-color-primary);
259
256
  }
260
257
 
261
- :global([data-theme='dark']) .salmex-alert-title-btn:focus-visible {
262
- box-shadow: 0 0 2px 3px rgb(var(--salmex-crown-yellow));
263
- }
264
-
265
- .salmex-alert-expand-icon {
258
+ .sx-alert-expand-icon {
266
259
  flex-shrink: 0;
267
260
  font-size: 0.75em;
268
261
  opacity: 0.8;
262
+ color: var(--sx-color-text-secondary);
269
263
  }
270
264
 
271
- /* Dismiss — 3D Win2K-style system button */
272
- .salmex-alert-dismiss {
265
+ /* Dismiss button transparent, minimal */
266
+ .sx-alert-dismiss {
273
267
  flex-shrink: 0;
274
268
  display: flex;
275
269
  align-items: center;
276
270
  justify-content: center;
277
- padding: var(--salmex-space-1);
271
+ padding: var(--sx-space-1);
278
272
  margin: -2px -2px -2px 0;
279
- border: 1px solid rgb(var(--salmex-border-dark));
280
- border-radius: var(--salmex-radius-sm);
281
- background: rgb(var(--salmex-button-face));
282
- color: rgb(var(--salmex-text-primary));
273
+ border: none;
274
+ border-radius: var(--sx-radius-sm);
275
+ background: transparent;
276
+ color: var(--sx-color-text-secondary);
283
277
  cursor: pointer;
284
- transition: all var(--salmex-transition-fast);
285
- box-shadow:
286
- inset 1px 1px 0 rgb(var(--salmex-button-highlight)),
287
- inset -1px -1px 0 rgb(var(--salmex-button-shadow)),
288
- 1px 1px 0 rgb(0 0 0 / 0.2);
278
+ transition: color var(--sx-transition-fast), background var(--sx-transition-fast);
289
279
  }
290
280
 
291
- .salmex-alert-dismiss:hover {
292
- background: rgb(var(--salmex-button-light));
293
- color: rgb(var(--salmex-text-primary));
281
+ .sx-alert-dismiss:hover {
282
+ color: var(--sx-color-text);
283
+ background: var(--sx-color-surface-2);
294
284
  }
295
285
 
296
- .salmex-alert-dismiss:active {
297
- box-shadow:
298
- inset -1px -1px 0 rgb(var(--salmex-button-highlight)),
299
- inset 1px 1px 0 rgb(var(--salmex-button-shadow)),
300
- 1px 1px 0 rgb(0 0 0 / 0.2);
301
- transform: translate(1px, 1px);
286
+ .sx-alert-dismiss:active {
287
+ background: var(--sx-color-surface-3);
302
288
  }
303
289
 
304
- .salmex-alert-dismiss:focus-visible {
290
+ .sx-alert-dismiss:focus-visible {
305
291
  outline: none;
306
- box-shadow:
307
- inset 1px 1px 0 rgb(var(--salmex-button-highlight)),
308
- inset -1px -1px 0 rgb(var(--salmex-button-shadow)),
309
- 0 0 0 2px rgb(var(--salmex-midnight-black)),
310
- 0 0 2px 4px rgb(var(--salmex-crown-yellow));
311
- }
312
-
313
- :global([data-theme='dark']) .salmex-alert-dismiss:focus-visible {
314
- box-shadow:
315
- inset 1px 1px 0 rgb(var(--salmex-button-highlight)),
316
- inset -1px -1px 0 rgb(var(--salmex-button-shadow)),
317
- 0 0 2px 3px rgb(var(--salmex-crown-yellow));
318
- }
319
-
320
- /* Type colors — panel + left accent; canvas base, bold borders */
321
- .salmex-alert-success {
322
- background: rgb(var(--salmex-window-surface));
323
- border-color: rgb(25 95 55);
324
- }
325
-
326
- .salmex-alert-success .salmex-alert-icon {
327
- color: rgb(25 95 55);
328
- }
329
-
330
- .salmex-alert-success .salmex-alert-title {
331
- color: rgb(25 95 55);
332
- }
333
-
334
- .salmex-alert-error {
335
- background: rgb(var(--salmex-window-surface));
336
- border-color: rgb(var(--salmex-street-red));
337
- }
338
-
339
- .salmex-alert-error .salmex-alert-icon {
340
- color: rgb(var(--salmex-street-red));
341
- }
342
-
343
- .salmex-alert-error .salmex-alert-title {
344
- color: rgb(165 30 35);
345
- }
346
-
347
- .salmex-alert-warning {
348
- background: rgb(var(--salmex-window-surface));
349
- border-color: rgb(145 75 10);
350
- }
351
-
352
- .salmex-alert-warning .salmex-alert-icon {
353
- color: rgb(145 75 10);
292
+ box-shadow: 0 0 0 2px var(--sx-color-primary);
354
293
  }
355
294
 
356
- .salmex-alert-warning .salmex-alert-title {
357
- color: rgb(145 75 10);
295
+ /* Type: success */
296
+ .sx-alert-success {
297
+ background: var(--sx-color-green-subtle);
298
+ border-left-color: var(--sx-color-green);
358
299
  }
359
300
 
360
- .salmex-alert-info {
361
- background: rgb(var(--salmex-window-surface));
362
- border-color: rgb(0 95 220);
301
+ .sx-alert-success .sx-alert-icon {
302
+ color: var(--sx-color-green);
363
303
  }
364
304
 
365
- .salmex-alert-info .salmex-alert-icon {
366
- color: rgb(0 95 220);
305
+ .sx-alert-success .sx-alert-title {
306
+ color: var(--sx-color-text);
367
307
  }
368
308
 
369
- .salmex-alert-info .salmex-alert-title {
370
- color: rgb(0 95 220);
309
+ /* Type: error */
310
+ .sx-alert-error {
311
+ background: var(--sx-color-red-subtle);
312
+ border-left-color: var(--sx-color-red);
371
313
  }
372
314
 
373
- .salmex-alert-neutral {
374
- background: rgb(var(--salmex-window-surface));
375
- border-color: rgb(var(--salmex-border-dark));
315
+ .sx-alert-error .sx-alert-icon {
316
+ color: var(--sx-color-red);
376
317
  }
377
318
 
378
- .salmex-alert-neutral .salmex-alert-icon {
379
- color: rgb(var(--salmex-text-secondary));
319
+ .sx-alert-error .sx-alert-title {
320
+ color: var(--sx-color-text);
380
321
  }
381
322
 
382
- .salmex-alert-neutral .salmex-alert-title {
383
- color: rgb(var(--salmex-text-primary));
323
+ /* Type: warning */
324
+ .sx-alert-warning {
325
+ background: var(--sx-color-brass-subtle);
326
+ border-left-color: var(--sx-color-secondary);
384
327
  }
385
328
 
386
- /* Dark theme — brighter colors for visibility */
387
- :global([data-theme='dark']) .salmex-alert-error {
388
- background: rgb(var(--salmex-street-red) / 0.12);
389
- border-color: rgb(255 90 95);
329
+ .sx-alert-warning .sx-alert-icon {
330
+ color: var(--sx-color-secondary);
390
331
  }
391
332
 
392
- :global([data-theme='dark']) .salmex-alert-error .salmex-alert-icon,
393
- :global([data-theme='dark']) .salmex-alert-error .salmex-alert-title {
394
- color: rgb(255 100 105);
333
+ .sx-alert-warning .sx-alert-title {
334
+ color: var(--sx-color-text);
395
335
  }
396
336
 
397
- :global([data-theme='dark']) .salmex-alert-success {
398
- background: rgb(var(--salmex-urban-green) / 0.15);
399
- border-color: rgb(var(--salmex-urban-green));
337
+ /* Type: info */
338
+ .sx-alert-info {
339
+ background: var(--sx-color-primary-subtle);
340
+ border-left-color: var(--sx-color-primary);
400
341
  }
401
342
 
402
- :global([data-theme='dark']) .salmex-alert-success .salmex-alert-icon,
403
- :global([data-theme='dark']) .salmex-alert-success .salmex-alert-title {
404
- color: rgb(var(--salmex-urban-green));
343
+ .sx-alert-info .sx-alert-icon {
344
+ color: var(--sx-color-primary);
405
345
  }
406
346
 
407
- :global([data-theme='dark']) .salmex-alert-warning {
408
- background: rgb(var(--salmex-spray-orange) / 0.15);
409
- border-color: rgb(var(--salmex-spray-orange));
347
+ .sx-alert-info .sx-alert-title {
348
+ color: var(--sx-color-text);
410
349
  }
411
350
 
412
- :global([data-theme='dark']) .salmex-alert-warning .salmex-alert-icon,
413
- :global([data-theme='dark']) .salmex-alert-warning .salmex-alert-title {
414
- color: rgb(var(--salmex-spray-orange));
351
+ /* Type: neutral */
352
+ .sx-alert-neutral {
353
+ background: var(--sx-color-surface);
354
+ border-left-color: var(--sx-color-border-strong);
415
355
  }
416
356
 
417
- :global([data-theme='dark']) .salmex-alert-info {
418
- background: rgb(var(--salmex-electric-blue) / 0.12);
419
- border-color: rgb(var(--salmex-primary-light));
357
+ .sx-alert-neutral .sx-alert-icon {
358
+ color: var(--sx-color-text-secondary);
420
359
  }
421
360
 
422
- :global([data-theme='dark']) .salmex-alert-info .salmex-alert-icon,
423
- :global([data-theme='dark']) .salmex-alert-info .salmex-alert-title {
424
- color: rgb(var(--salmex-primary-light));
361
+ .sx-alert-neutral .sx-alert-title {
362
+ color: var(--sx-color-text);
425
363
  }
426
364
 
427
- @media (prefers-color-scheme: dark) {
428
- :global(:root:not([data-theme='light'])) .salmex-alert-error {
429
- background: rgb(var(--salmex-street-red) / 0.12);
430
- border-color: rgb(255 90 95);
431
- }
432
-
433
- :global(:root:not([data-theme='light'])) .salmex-alert-error .salmex-alert-icon,
434
- :global(:root:not([data-theme='light'])) .salmex-alert-error .salmex-alert-title {
435
- color: rgb(255 100 105);
436
- }
437
-
438
- :global(:root:not([data-theme='light'])) .salmex-alert-success {
439
- background: rgb(var(--salmex-urban-green) / 0.15);
440
- border-color: rgb(var(--salmex-urban-green));
441
- }
442
-
443
- :global(:root:not([data-theme='light'])) .salmex-alert-success .salmex-alert-icon,
444
- :global(:root:not([data-theme='light'])) .salmex-alert-success .salmex-alert-title {
445
- color: rgb(var(--salmex-urban-green));
446
- }
447
-
448
- :global(:root:not([data-theme='light'])) .salmex-alert-warning {
449
- background: rgb(var(--salmex-spray-orange) / 0.15);
450
- border-color: rgb(var(--salmex-spray-orange));
451
- }
452
-
453
- :global(:root:not([data-theme='light'])) .salmex-alert-warning .salmex-alert-icon,
454
- :global(:root:not([data-theme='light'])) .salmex-alert-warning .salmex-alert-title {
455
- color: rgb(var(--salmex-spray-orange));
456
- }
457
-
458
- :global(:root:not([data-theme='light'])) .salmex-alert-info {
459
- background: rgb(var(--salmex-electric-blue) / 0.12);
460
- border-color: rgb(var(--salmex-primary-light));
461
- }
462
-
463
- :global(:root:not([data-theme='light'])) .salmex-alert-info .salmex-alert-icon,
464
- :global(:root:not([data-theme='light'])) .salmex-alert-info .salmex-alert-title {
465
- color: rgb(var(--salmex-primary-light));
365
+ @media (prefers-reduced-motion: reduce) {
366
+ .sx-alert {
367
+ transition: none;
368
+ animation: none;
466
369
  }
467
370
 
468
- }
469
-
470
- @media (prefers-reduced-motion: reduce) {
471
- .salmex-alert,
472
- .salmex-alert-dismiss,
473
- .salmex-alert-title-btn {
371
+ .sx-alert-dismiss,
372
+ .sx-alert-title-btn {
474
373
  transition: none;
475
374
  }
476
375
  }
@@ -21,7 +21,7 @@ interface Props {
21
21
  /**
22
22
  * Alert
23
23
  *
24
- * Win2K × Basquiat Bold message banner. Left accent border, high contrast.
24
+ * INFRAREDClean message banner. Left accent border, dark surface.
25
25
  * Dismissible, expandable, optional title; role="alert" for errors.
26
26
  */
27
27
  declare const Alert: import("svelte").Component<Props, {}, "">;