@salmexio/ui 0.3.1 → 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 +96 -93
  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 -102
  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 +88 -154
  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 -103
  37. package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
  38. package/dist/forms/Select/Select.svelte +136 -177
  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 +148 -164
  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 -40
  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 +410 -181
  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 +94 -178
  75. package/dist/navigation/Tabs/Tabs.svelte.d.ts +2 -2
  76. package/dist/primitives/Badge/Badge.svelte +85 -223
  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 +138 -208
  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 +200 -259
  92. package/package.json +5 -5
  93. package/dist/windowing/Window/Window.svelte +0 -602
  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 -410
  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,95 +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: 3px solid transparent;
166
- font-family: var(--salmex-font-system);
167
- transition: box-shadow var(--salmex-transition-fast);
168
- border-radius: var(--salmex-radius-none);
169
- /* Inner depth + flat outer shadow */
170
- box-shadow:
171
- inset 2px 2px 0 rgb(var(--salmex-button-highlight)),
172
- inset -2px -2px 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-none);
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
- text-transform: uppercase;
215
- letter-spacing: 0.5px;
209
+ margin: 0 0 var(--sx-space-1);
210
+ color: var(--sx-color-text);
216
211
  }
217
212
 
218
- .salmex-alert-title:where(h2, h3, h4, h5, h6) {
213
+ .sx-alert-title:where(h2, h3, h4, h5, h6) {
219
214
  font-size: inherit;
220
215
  margin: inherit;
221
216
  }
222
217
 
223
- .salmex-alert-body {
224
- font-size: var(--salmex-font-size-sm);
218
+ .sx-alert-body {
219
+ font-size: var(--sx-text-sm);
225
220
  line-height: 1.55;
226
- color: rgb(var(--salmex-text-secondary));
221
+ color: var(--sx-color-text-secondary);
227
222
  }
228
223
 
229
- .salmex-alert-body-hidden {
224
+ .sx-alert-body-hidden {
230
225
  display: none;
231
226
  }
232
227
 
233
- .salmex-alert-actions {
228
+ .sx-alert-actions {
234
229
  display: flex;
235
230
  flex-wrap: wrap;
236
231
  align-items: center;
237
- gap: var(--salmex-space-2);
238
- margin-top: var(--salmex-space-3);
232
+ gap: var(--sx-space-2);
233
+ margin-top: var(--sx-space-3);
239
234
  }
240
235
 
241
- .salmex-alert-title-btn {
236
+ .sx-alert-title-btn {
242
237
  display: flex;
243
238
  align-items: center;
244
239
  justify-content: space-between;
245
240
  width: 100%;
246
- gap: var(--salmex-space-2);
241
+ gap: var(--sx-space-2);
247
242
  padding: 0;
248
- margin: 0 0 var(--salmex-space-1);
243
+ margin: 0 0 var(--sx-space-1);
249
244
  background: none;
250
245
  border: none;
251
246
  cursor: pointer;
@@ -254,223 +249,122 @@ function toggleExpanded() {
254
249
  font: inherit;
255
250
  }
256
251
 
257
- .salmex-alert-title-btn:focus-visible {
252
+ .sx-alert-title-btn:focus-visible {
258
253
  outline: none;
259
- box-shadow: 0 0 0 2px rgb(var(--salmex-midnight-black)), 0 0 0 5px rgb(var(--salmex-crown-yellow));
254
+ box-shadow: 0 0 0 2px var(--sx-color-cyan);
260
255
  }
261
256
 
262
- :global([data-theme='dark']) .salmex-alert-title-btn:focus-visible {
263
- box-shadow: 0 0 0 3px rgb(var(--salmex-crown-yellow));
264
- }
265
-
266
- .salmex-alert-expand-icon {
257
+ .sx-alert-expand-icon {
267
258
  flex-shrink: 0;
268
259
  font-size: 0.75em;
269
260
  opacity: 0.8;
261
+ color: var(--sx-color-text-secondary);
270
262
  }
271
263
 
272
- /* Dismiss — 3D Win2K-style system button */
273
- .salmex-alert-dismiss {
264
+ /* Dismiss button transparent, minimal */
265
+ .sx-alert-dismiss {
274
266
  flex-shrink: 0;
275
267
  display: flex;
276
268
  align-items: center;
277
269
  justify-content: center;
278
- padding: var(--salmex-space-1);
270
+ padding: var(--sx-space-1);
279
271
  margin: -2px -2px -2px 0;
280
- border: 2px solid rgb(var(--salmex-border-dark));
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 2px 2px 0 rgb(var(--salmex-button-highlight)),
287
- inset -2px -2px 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 -2px -2px 0 rgb(var(--salmex-button-highlight)),
299
- inset 2px 2px 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 2px 2px 0 rgb(var(--salmex-button-highlight)),
308
- inset -2px -2px 0 rgb(var(--salmex-button-shadow)),
309
- 0 0 0 2px rgb(var(--salmex-midnight-black)),
310
- 0 0 0 5px rgb(var(--salmex-crown-yellow));
311
- }
312
-
313
- :global([data-theme='dark']) .salmex-alert-dismiss:focus-visible {
314
- box-shadow:
315
- inset 2px 2px 0 rgb(var(--salmex-button-highlight)),
316
- inset -2px -2px 0 rgb(var(--salmex-button-shadow)),
317
- 0 0 0 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, {}, "">;