@salmexio/ui 0.4.0 → 1.0.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 (110) 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 +115 -221
  8. package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
  9. package/dist/feedback/ProgressBar/ProgressBar.svelte +246 -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 +153 -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 +82 -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 +151 -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 +64 -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/navigation/CommandPalette/CommandPalette.svelte +407 -189
  72. package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +8 -3
  73. package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts.map +1 -1
  74. package/dist/navigation/Tabs/Tabs.svelte +95 -181
  75. package/dist/navigation/Tabs/Tabs.svelte.d.ts +2 -2
  76. package/dist/primitives/Badge/Badge.svelte +83 -220
  77. package/dist/primitives/Badge/Badge.svelte.d.ts +2 -2
  78. package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -1
  79. package/dist/primitives/Button/Button.svelte +144 -195
  80. package/dist/primitives/Button/Button.svelte.d.ts +3 -3
  81. package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
  82. package/dist/primitives/Tooltip/Tooltip.svelte +260 -0
  83. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +36 -0
  84. package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
  85. package/dist/primitives/Tooltip/index.d.ts +2 -0
  86. package/dist/primitives/Tooltip/index.d.ts.map +1 -0
  87. package/dist/primitives/Tooltip/index.js +1 -0
  88. package/dist/primitives/index.d.ts +1 -0
  89. package/dist/primitives/index.d.ts.map +1 -1
  90. package/dist/primitives/index.js +1 -0
  91. package/dist/styles/tokens.css +197 -265
  92. package/package.json +5 -5
  93. package/dist/windowing/Window/Window.svelte +0 -637
  94. package/dist/windowing/Window/Window.svelte.d.ts +0 -65
  95. package/dist/windowing/Window/Window.svelte.d.ts.map +0 -1
  96. package/dist/windowing/Window/index.d.ts +0 -2
  97. package/dist/windowing/Window/index.d.ts.map +0 -1
  98. package/dist/windowing/Window/index.js +0 -1
  99. package/dist/windowing/WindowManager/WindowManager.svelte +0 -425
  100. package/dist/windowing/WindowManager/WindowManager.svelte.d.ts +0 -38
  101. package/dist/windowing/WindowManager/WindowManager.svelte.d.ts.map +0 -1
  102. package/dist/windowing/WindowManager/index.d.ts +0 -2
  103. package/dist/windowing/WindowManager/index.d.ts.map +0 -1
  104. package/dist/windowing/WindowManager/index.js +0 -1
  105. package/dist/windowing/index.d.ts +0 -5
  106. package/dist/windowing/index.d.ts.map +0 -1
  107. package/dist/windowing/index.js +0 -3
  108. package/dist/windowing/windowStore.svelte.d.ts +0 -49
  109. package/dist/windowing/windowStore.svelte.d.ts.map +0 -1
  110. 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
+ Neo-Brutalist DarkClean 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,90 @@ 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
+ /* Neo-Brutalist Dark: 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);
175
171
  }
176
172
 
177
- .salmex-alert-standard {
178
- border-radius: var(--salmex-radius-sm);
173
+ .sx-alert-standard {
174
+ border-radius: var(--sx-radius-md);
179
175
  }
180
176
 
181
- .salmex-alert-slim {
182
- padding: var(--salmex-space-2) var(--salmex-space-3);
183
- gap: var(--salmex-space-2);
177
+ .sx-alert-slim {
178
+ padding: var(--sx-space-2) var(--sx-space-3);
179
+ gap: var(--sx-space-2);
184
180
  }
185
181
 
186
- .salmex-alert-slim .salmex-alert-title {
187
- font-size: var(--salmex-font-size-sm);
182
+ .sx-alert-slim .sx-alert-title {
183
+ font-size: var(--sx-text-sm);
188
184
  margin-bottom: 0;
189
185
  }
190
186
 
191
- .salmex-alert-slim .salmex-alert-body {
192
- font-size: var(--salmex-font-size-xs);
187
+ .sx-alert-slim .sx-alert-body {
188
+ font-size: var(--sx-text-xs);
193
189
  }
194
190
 
195
- .salmex-alert-icon {
191
+ .sx-alert-icon {
196
192
  flex-shrink: 0;
197
193
  display: flex;
198
194
  align-items: flex-start;
199
195
  margin-top: 2px;
200
196
  }
201
197
 
202
- .salmex-alert-content {
198
+ .sx-alert-content {
203
199
  flex: 1;
204
200
  min-width: 0;
205
201
  display: flex;
206
202
  flex-direction: column;
207
203
  }
208
204
 
209
- .salmex-alert-title {
210
- font-size: var(--salmex-font-size-md);
211
- font-weight: 800;
205
+ .sx-alert-title {
206
+ font-size: var(--sx-text-md);
207
+ font-weight: 600;
212
208
  line-height: 1.4;
213
- margin: 0 0 var(--salmex-space-1);
214
- letter-spacing: 0.5px;
209
+ margin: 0 0 var(--sx-space-1);
210
+ color: var(--sx-color-text);
215
211
  }
216
212
 
217
- .salmex-alert-title:where(h2, h3, h4, h5, h6) {
213
+ .sx-alert-title:where(h2, h3, h4, h5, h6) {
218
214
  font-size: inherit;
219
215
  margin: inherit;
220
216
  }
221
217
 
222
- .salmex-alert-body {
223
- font-size: var(--salmex-font-size-sm);
218
+ .sx-alert-body {
219
+ font-size: var(--sx-text-sm);
224
220
  line-height: 1.55;
225
- color: rgb(var(--salmex-text-secondary));
221
+ color: var(--sx-color-text-secondary);
226
222
  }
227
223
 
228
- .salmex-alert-body-hidden {
224
+ .sx-alert-body-hidden {
229
225
  display: none;
230
226
  }
231
227
 
232
- .salmex-alert-actions {
228
+ .sx-alert-actions {
233
229
  display: flex;
234
230
  flex-wrap: wrap;
235
231
  align-items: center;
236
- gap: var(--salmex-space-2);
237
- margin-top: var(--salmex-space-3);
232
+ gap: var(--sx-space-2);
233
+ margin-top: var(--sx-space-3);
238
234
  }
239
235
 
240
- .salmex-alert-title-btn {
236
+ .sx-alert-title-btn {
241
237
  display: flex;
242
238
  align-items: center;
243
239
  justify-content: space-between;
244
240
  width: 100%;
245
- gap: var(--salmex-space-2);
241
+ gap: var(--sx-space-2);
246
242
  padding: 0;
247
- margin: 0 0 var(--salmex-space-1);
243
+ margin: 0 0 var(--sx-space-1);
248
244
  background: none;
249
245
  border: none;
250
246
  cursor: pointer;
@@ -253,224 +249,122 @@ function toggleExpanded() {
253
249
  font: inherit;
254
250
  }
255
251
 
256
- .salmex-alert-title-btn:focus-visible {
252
+ .sx-alert-title-btn:focus-visible {
257
253
  outline: none;
258
- box-shadow: 0 0 0 2px rgb(var(--salmex-midnight-black)), 0 0 2px 4px rgb(var(--salmex-crown-yellow));
254
+ box-shadow: 0 0 0 2px var(--sx-color-cyan);
259
255
  }
260
256
 
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 {
257
+ .sx-alert-expand-icon {
266
258
  flex-shrink: 0;
267
259
  font-size: 0.75em;
268
260
  opacity: 0.8;
261
+ color: var(--sx-color-text-secondary);
269
262
  }
270
263
 
271
- /* Dismiss — 3D Win2K-style system button */
272
- .salmex-alert-dismiss {
264
+ /* Dismiss button transparent, minimal */
265
+ .sx-alert-dismiss {
273
266
  flex-shrink: 0;
274
267
  display: flex;
275
268
  align-items: center;
276
269
  justify-content: center;
277
- padding: var(--salmex-space-1);
270
+ padding: var(--sx-space-1);
278
271
  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));
272
+ border: none;
273
+ border-radius: var(--sx-radius-sm);
274
+ background: transparent;
275
+ color: var(--sx-color-text-secondary);
283
276
  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);
277
+ transition: color var(--sx-transition-fast), background var(--sx-transition-fast);
289
278
  }
290
279
 
291
- .salmex-alert-dismiss:hover {
292
- background: rgb(var(--salmex-button-light));
293
- color: rgb(var(--salmex-text-primary));
280
+ .sx-alert-dismiss:hover {
281
+ color: var(--sx-color-text);
282
+ background: var(--sx-color-surface-2);
294
283
  }
295
284
 
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);
285
+ .sx-alert-dismiss:active {
286
+ background: var(--sx-color-surface-3);
302
287
  }
303
288
 
304
- .salmex-alert-dismiss:focus-visible {
289
+ .sx-alert-dismiss:focus-visible {
305
290
  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));
291
+ box-shadow: 0 0 0 2px var(--sx-color-cyan);
341
292
  }
342
293
 
343
- .salmex-alert-error .salmex-alert-title {
344
- color: rgb(165 30 35);
294
+ /* Type: success */
295
+ .sx-alert-success {
296
+ background: var(--sx-color-green-subtle);
297
+ border-left-color: var(--sx-color-green);
345
298
  }
346
299
 
347
- .salmex-alert-warning {
348
- background: rgb(var(--salmex-window-surface));
349
- border-color: rgb(145 75 10);
300
+ .sx-alert-success .sx-alert-icon {
301
+ color: var(--sx-color-green);
350
302
  }
351
303
 
352
- .salmex-alert-warning .salmex-alert-icon {
353
- color: rgb(145 75 10);
304
+ .sx-alert-success .sx-alert-title {
305
+ color: var(--sx-color-text);
354
306
  }
355
307
 
356
- .salmex-alert-warning .salmex-alert-title {
357
- color: rgb(145 75 10);
308
+ /* Type: error */
309
+ .sx-alert-error {
310
+ background: var(--sx-color-red-subtle);
311
+ border-left-color: var(--sx-color-red);
358
312
  }
359
313
 
360
- .salmex-alert-info {
361
- background: rgb(var(--salmex-window-surface));
362
- border-color: rgb(0 95 220);
314
+ .sx-alert-error .sx-alert-icon {
315
+ color: var(--sx-color-red);
363
316
  }
364
317
 
365
- .salmex-alert-info .salmex-alert-icon {
366
- color: rgb(0 95 220);
318
+ .sx-alert-error .sx-alert-title {
319
+ color: var(--sx-color-text);
367
320
  }
368
321
 
369
- .salmex-alert-info .salmex-alert-title {
370
- color: rgb(0 95 220);
322
+ /* Type: warning */
323
+ .sx-alert-warning {
324
+ background: var(--sx-color-gold-subtle);
325
+ border-left-color: var(--sx-color-gold);
371
326
  }
372
327
 
373
- .salmex-alert-neutral {
374
- background: rgb(var(--salmex-window-surface));
375
- border-color: rgb(var(--salmex-border-dark));
328
+ .sx-alert-warning .sx-alert-icon {
329
+ color: var(--sx-color-gold);
376
330
  }
377
331
 
378
- .salmex-alert-neutral .salmex-alert-icon {
379
- color: rgb(var(--salmex-text-secondary));
332
+ .sx-alert-warning .sx-alert-title {
333
+ color: var(--sx-color-text);
380
334
  }
381
335
 
382
- .salmex-alert-neutral .salmex-alert-title {
383
- color: rgb(var(--salmex-text-primary));
336
+ /* Type: info */
337
+ .sx-alert-info {
338
+ background: var(--sx-color-cyan-subtle);
339
+ border-left-color: var(--sx-color-cyan);
384
340
  }
385
341
 
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);
342
+ .sx-alert-info .sx-alert-icon {
343
+ color: var(--sx-color-cyan);
390
344
  }
391
345
 
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);
346
+ .sx-alert-info .sx-alert-title {
347
+ color: var(--sx-color-text);
395
348
  }
396
349
 
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));
350
+ /* Type: neutral */
351
+ .sx-alert-neutral {
352
+ background: var(--sx-color-surface);
353
+ border-left-color: var(--sx-color-border-strong);
400
354
  }
401
355
 
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));
356
+ .sx-alert-neutral .sx-alert-icon {
357
+ color: var(--sx-color-text-secondary);
405
358
  }
406
359
 
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));
410
- }
411
-
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));
415
- }
416
-
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));
420
- }
421
-
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));
425
- }
426
-
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));
466
- }
467
-
360
+ .sx-alert-neutral .sx-alert-title {
361
+ color: var(--sx-color-text);
468
362
  }
469
363
 
470
364
  @media (prefers-reduced-motion: reduce) {
471
- .salmex-alert,
472
- .salmex-alert-dismiss,
473
- .salmex-alert-title-btn {
365
+ .sx-alert,
366
+ .sx-alert-dismiss,
367
+ .sx-alert-title-btn {
474
368
  transition: none;
475
369
  }
476
370
  }
@@ -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
+ * Neo-Brutalist DarkClean 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, {}, "">;