@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,16 +1,18 @@
1
1
  <!--
2
2
  @component Spinner
3
3
 
4
- Win2K × Basquiat Bold loading indicator.
5
- Flat shadows, crown yellow / electric blue, geometric shapes. No soft gradients.
4
+ Neo-Brutalist DarkClean loading indicator.
5
+ Cyan accent, dark surfaces, geometric shapes.
6
6
  role="status", aria-label, delay, overlay. prefers-reduced-motion respected.
7
+
8
+ Three styles: ring (default), dots (inline), pulse (radar/broadcast).
7
9
  -->
8
10
  <script lang="ts">
9
11
  import { cn } from '../../utils/cn.js';
10
12
 
11
13
  type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
14
  type SpinnerVariant = 'primary' | 'secondary' | 'white';
13
- type SpinnerStyle = 'ring' | 'bars' | 'segment' | 'dots' | 'pulse';
15
+ type SpinnerStyle = 'ring' | 'dots' | 'pulse';
14
16
 
15
17
  interface Props {
16
18
  size?: SpinnerSize;
@@ -54,11 +56,11 @@ const sizeConfig: Record<
54
56
  SpinnerSize,
55
57
  { dimension: number; stroke: number; fontSize: string; dotSize: number }
56
58
  > = {
57
- xs: { dimension: 16, stroke: 2.5, fontSize: 'var(--salmex-font-size-xs)', dotSize: 4 },
58
- sm: { dimension: 20, stroke: 3, fontSize: 'var(--salmex-font-size-sm)', dotSize: 5 },
59
- md: { dimension: 28, stroke: 4, fontSize: 'var(--salmex-font-size-sm)', dotSize: 6 },
60
- lg: { dimension: 40, stroke: 5, fontSize: 'var(--salmex-font-size-base)', dotSize: 8 },
61
- xl: { dimension: 56, stroke: 6, fontSize: 'var(--salmex-font-size-md)', dotSize: 10 }
59
+ xs: { dimension: 16, stroke: 2.5, fontSize: 'var(--sx-text-xs)', dotSize: 4 },
60
+ sm: { dimension: 20, stroke: 3, fontSize: 'var(--sx-text-sm)', dotSize: 5 },
61
+ md: { dimension: 28, stroke: 4, fontSize: 'var(--sx-text-sm)', dotSize: 6 },
62
+ lg: { dimension: 40, stroke: 5, fontSize: 'var(--sx-text-base)', dotSize: 8 },
63
+ xl: { dimension: 56, stroke: 6, fontSize: 'var(--sx-text-md)', dotSize: 10 }
62
64
  };
63
65
 
64
66
  const config = $derived(sizeConfig[size]);
@@ -68,11 +70,11 @@ const config = $derived(sizeConfig[size]);
68
70
  <div
69
71
  {id}
70
72
  class={cn(
71
- 'salmex-spinner',
72
- `salmex-spinner-${size}`,
73
- `salmex-spinner-${variant}`,
74
- `salmex-spinner-style-${style}`,
75
- overlay && 'salmex-spinner-overlay',
73
+ 'sx-spinner',
74
+ `sx-spinner-${size}`,
75
+ `sx-spinner-${variant}`,
76
+ `sx-spinner-style-${style}`,
77
+ overlay && 'sx-spinner-overlay',
76
78
  className
77
79
  )}
78
80
  role="status"
@@ -80,28 +82,26 @@ const config = $derived(sizeConfig[size]);
80
82
  aria-busy="true"
81
83
  aria-label={label}
82
84
  >
83
- <div class="salmex-spinner-content">
85
+ <div class="sx-spinner-content">
84
86
  {#if style === 'ring'}
85
87
  <svg
86
- class="salmex-spinner-ring"
88
+ class="sx-spinner-ring"
87
89
  width={config.dimension}
88
90
  height={config.dimension}
89
91
  viewBox="0 0 32 32"
90
92
  fill="none"
91
93
  aria-hidden="true"
92
94
  >
93
- <!-- Track: full circle, bold stroke -->
94
95
  <circle
95
- class="salmex-spinner-track"
96
+ class="sx-spinner-track"
96
97
  cx="16"
97
98
  cy="16"
98
99
  r="14"
99
100
  stroke="currentColor"
100
101
  stroke-width={config.stroke}
101
102
  />
102
- <!-- Arc: one bold segment, round caps -->
103
103
  <circle
104
- class="salmex-spinner-arc"
104
+ class="sx-spinner-arc"
105
105
  cx="16"
106
106
  cy="16"
107
107
  r="14"
@@ -111,80 +111,60 @@ const config = $derived(sizeConfig[size]);
111
111
  stroke-dasharray="22 66"
112
112
  />
113
113
  </svg>
114
- {/if}
115
-
116
- {#if style === 'bars'}
117
- <div
118
- class="salmex-spinner-bars"
119
- style="width: {config.dimension}px; height: {config.dimension}px;"
120
- aria-hidden="true"
121
- ></div>
122
- {/if}
123
-
124
- {#if style === 'segment'}
114
+ {:else if style === 'pulse'}
125
115
  <div
126
- class="salmex-spinner-segment"
116
+ class="sx-spinner-pulse"
127
117
  style="width: {config.dimension}px; height: {config.dimension}px;"
128
118
  aria-hidden="true"
129
- ></div>
130
- {/if}
131
-
132
- {#if style === 'dots'}
133
- <div
134
- class="salmex-spinner-dots"
135
- style="--dot-size: {config.dotSize}px; --spinner-dim: {config.dimension}px;"
136
- aria-hidden="true"
137
119
  >
138
- <span class="salmex-spinner-dot salmex-spinner-dot-1"></span>
139
- <span class="salmex-spinner-dot salmex-spinner-dot-2"></span>
140
- <span class="salmex-spinner-dot salmex-spinner-dot-3"></span>
120
+ <span class="sx-pulse-ring sx-pulse-ring-1"></span>
121
+ <span class="sx-pulse-ring sx-pulse-ring-2"></span>
122
+ <span class="sx-pulse-dot"></span>
141
123
  </div>
142
- {/if}
143
-
144
- {#if style === 'pulse'}
124
+ {:else}
145
125
  <div
146
- class="salmex-spinner-pulse"
147
- style="width: {config.dimension}px; height: {config.dimension}px;"
126
+ class="sx-spinner-dots"
127
+ style="--dot-size: {config.dotSize}px; --spinner-dim: {config.dimension}px;"
148
128
  aria-hidden="true"
149
129
  >
150
- <span class="salmex-pulse-ring salmex-pulse-ring-1"></span>
151
- <span class="salmex-pulse-ring salmex-pulse-ring-2"></span>
152
- <span class="salmex-pulse-dot"></span>
130
+ <span class="sx-spinner-dot sx-spinner-dot-1"></span>
131
+ <span class="sx-spinner-dot sx-spinner-dot-2"></span>
132
+ <span class="sx-spinner-dot sx-spinner-dot-3"></span>
153
133
  </div>
154
134
  {/if}
155
135
 
156
136
  {#if showLabel}
157
- <span class="salmex-spinner-label" style="font-size: {config.fontSize};">
137
+ <span class="sx-spinner-label" style="font-size: {config.fontSize};">
158
138
  {label}
159
139
  </span>
160
140
  {:else}
161
- <span class="salmex-sr-only">{label}</span>
141
+ <span class="sx-sr-only">{label}</span>
162
142
  {/if}
163
143
  </div>
164
144
  </div>
165
145
  {/if}
166
146
 
167
147
  <style>
168
- .salmex-spinner {
148
+ .sx-spinner {
169
149
  display: inline-flex;
170
150
  align-items: center;
171
151
  justify-content: center;
172
152
  }
173
153
 
174
- .salmex-spinner-content {
154
+ .sx-spinner-content {
175
155
  display: inline-flex;
176
156
  align-items: center;
177
- gap: var(--salmex-space-2);
157
+ gap: var(--sx-space-2);
178
158
  }
179
159
 
180
- .salmex-spinner-label {
181
- font-family: var(--salmex-font-system);
182
- font-weight: 700;
160
+ .sx-spinner-label {
161
+ font-family: var(--sx-font-body);
162
+ font-weight: 600;
183
163
  letter-spacing: 0.3px;
184
- color: rgb(var(--salmex-text-secondary));
164
+ color: var(--sx-color-text-secondary);
185
165
  }
186
166
 
187
- .salmex-sr-only {
167
+ .sx-sr-only {
188
168
  position: absolute;
189
169
  width: 1px;
190
170
  height: 1px;
@@ -196,86 +176,54 @@ const config = $derived(sizeConfig[size]);
196
176
  border: 0;
197
177
  }
198
178
 
199
- .salmex-spinner-overlay {
179
+ .sx-spinner-overlay {
200
180
  position: absolute;
201
181
  inset: 0;
202
182
  display: flex;
203
183
  align-items: center;
204
184
  justify-content: center;
205
- background: rgb(var(--salmex-chalk-white) / 0.9);
206
- z-index: var(--salmex-z-modal-backdrop);
185
+ background: rgba(10, 10, 15, 0.7);
186
+ backdrop-filter: blur(4px);
187
+ -webkit-backdrop-filter: blur(4px);
188
+ z-index: var(--sx-z-modal-backdrop);
207
189
  border-radius: inherit;
208
- /* Flat, bold overlay edge - no blur */
209
- box-shadow: inset 0 0 0 2px rgb(var(--salmex-border-default));
210
- }
211
-
212
- :global([data-theme='dark']) .salmex-spinner-overlay {
213
- background: rgb(var(--salmex-midnight-black) / 0.9);
214
- box-shadow: inset 0 0 0 2px rgb(var(--salmex-border-light));
215
190
  }
216
191
 
217
- /* Variants - crown yellow / electric blue, bold */
218
- .salmex-spinner-primary {
219
- color: rgb(var(--salmex-electric-blue));
192
+ /* Variants */
193
+ .sx-spinner-primary {
194
+ color: var(--sx-color-cyan);
220
195
  }
221
196
 
222
- :global([data-theme='dark']) .salmex-spinner-primary {
223
- color: rgb(var(--salmex-crown-yellow));
197
+ .sx-spinner-secondary {
198
+ color: var(--sx-color-text-secondary);
224
199
  }
225
200
 
226
- .salmex-spinner-secondary {
227
- color: rgb(var(--salmex-text-secondary));
201
+ .sx-spinner-white {
202
+ color: var(--sx-color-text);
228
203
  }
229
204
 
230
- .salmex-spinner-white {
231
- color: rgb(var(--salmex-chalk-white));
205
+ /* ========== RING ========== */
206
+ .sx-spinner-ring {
207
+ animation: sx-spin 0.85s linear infinite;
232
208
  }
233
209
 
234
- /* ========== RING: bold stroke, one segment, round caps ========== */
235
- .salmex-spinner-ring {
236
- animation: salmex-spin 0.85s linear infinite;
237
- filter: drop-shadow(var(--salmex-shadow-sm));
210
+ .sx-spinner-track {
211
+ opacity: 0.15;
212
+ stroke: var(--sx-color-surface-2);
238
213
  }
239
214
 
240
- .salmex-spinner-track {
241
- opacity: 0.25;
242
- }
243
-
244
- .salmex-spinner-arc {
215
+ .sx-spinner-arc {
245
216
  transform-origin: center;
246
217
  }
247
218
 
248
- @keyframes salmex-spin {
219
+ @keyframes sx-spin {
249
220
  to {
250
221
  transform: rotate(360deg);
251
222
  }
252
223
  }
253
224
 
254
- /* ========== BARS: conic gradient, 12 segments, geometric ========== */
255
- .salmex-spinner-bars {
256
- border-radius: 50%;
257
- background: repeating-conic-gradient(
258
- currentColor 0deg 12deg,
259
- transparent 12deg 30deg
260
- );
261
- animation: salmex-spin 0.9s linear infinite;
262
- box-shadow: var(--salmex-shadow-sm);
263
- }
264
-
265
- /* ========== SEGMENT: one bold pie slice, high contrast ========== */
266
- .salmex-spinner-segment {
267
- border-radius: 50%;
268
- background: conic-gradient(
269
- from 0deg,
270
- currentColor 0deg 100deg,
271
- transparent 100deg 360deg
272
- );
273
- animation: salmex-spin 0.75s linear infinite;
274
- box-shadow: var(--salmex-shadow-sm);
275
- }
276
-
277
- /* ========== DOTS: bold, flat shadow ========== */
278
- .salmex-spinner-dots {
225
+ /* ========== DOTS ========== */
226
+ .sx-spinner-dots {
279
227
  display: flex;
280
228
  align-items: center;
281
229
  justify-content: center;
@@ -283,24 +231,23 @@ const config = $derived(sizeConfig[size]);
283
231
  height: var(--spinner-dim);
284
232
  }
285
233
 
286
- .salmex-spinner-dot {
234
+ .sx-spinner-dot {
287
235
  width: var(--dot-size);
288
236
  height: var(--dot-size);
289
237
  border-radius: 50%;
290
238
  background: currentColor;
291
- box-shadow: var(--salmex-shadow-sm);
292
- animation: salmex-dot-bounce 1s ease-out infinite both;
239
+ animation: sx-dot-bounce 1s ease-out infinite both;
293
240
  }
294
241
 
295
- .salmex-spinner-dot-1 {
242
+ .sx-spinner-dot-1 {
296
243
  animation-delay: -0.2s;
297
244
  }
298
245
 
299
- .salmex-spinner-dot-2 {
246
+ .sx-spinner-dot-2 {
300
247
  animation-delay: -0.1s;
301
248
  }
302
249
 
303
- @keyframes salmex-dot-bounce {
250
+ @keyframes sx-dot-bounce {
304
251
  0%, 60%, 100% {
305
252
  transform: scale(0.75);
306
253
  opacity: 0.7;
@@ -311,37 +258,36 @@ const config = $derived(sizeConfig[size]);
311
258
  }
312
259
  }
313
260
 
314
- /* ========== PULSE: bold ring + dot ========== */
315
- .salmex-spinner-pulse {
261
+ /* ========== PULSE ========== */
262
+ .sx-spinner-pulse {
316
263
  position: relative;
317
264
  display: flex;
318
265
  align-items: center;
319
266
  justify-content: center;
320
267
  }
321
268
 
322
- .salmex-pulse-ring {
269
+ .sx-pulse-ring {
323
270
  position: absolute;
324
271
  inset: 0;
325
272
  border-radius: 50%;
326
273
  border: 3px solid currentColor;
327
274
  opacity: 0;
328
- animation: salmex-pulse-ring 1.5s ease-out infinite;
275
+ animation: sx-pulse-ring 1.5s ease-out infinite;
329
276
  }
330
277
 
331
- .salmex-pulse-ring-2 {
278
+ .sx-pulse-ring-2 {
332
279
  animation-delay: 0.75s;
333
280
  }
334
281
 
335
- .salmex-pulse-dot {
282
+ .sx-pulse-dot {
336
283
  width: 28%;
337
284
  height: 28%;
338
285
  border-radius: 50%;
339
286
  background: currentColor;
340
- box-shadow: var(--salmex-shadow-sm);
341
- animation: salmex-pulse-dot 1.5s ease-out infinite;
287
+ animation: sx-pulse-dot 1.5s ease-out infinite;
342
288
  }
343
289
 
344
- @keyframes salmex-pulse-ring {
290
+ @keyframes sx-pulse-ring {
345
291
  0% {
346
292
  transform: scale(0.4);
347
293
  opacity: 0.9;
@@ -352,7 +298,7 @@ const config = $derived(sizeConfig[size]);
352
298
  }
353
299
  }
354
300
 
355
- @keyframes salmex-pulse-dot {
301
+ @keyframes sx-pulse-dot {
356
302
  0%, 100% {
357
303
  transform: scale(0.85);
358
304
  opacity: 0.8;
@@ -365,55 +311,44 @@ const config = $derived(sizeConfig[size]);
365
311
 
366
312
  /* ========== REDUCED MOTION ========== */
367
313
  @media (prefers-reduced-motion: reduce) {
368
- .salmex-spinner-ring,
369
- .salmex-spinner-bars,
370
- .salmex-spinner-segment {
314
+ .sx-spinner-ring {
371
315
  animation: none;
372
316
  }
373
317
 
374
- .salmex-spinner-ring {
375
- filter: none;
376
- }
377
-
378
- .salmex-spinner-arc {
318
+ .sx-spinner-arc {
379
319
  stroke-dasharray: 22 66;
380
320
  opacity: 0.9;
381
321
  transform: rotate(-90deg);
382
322
  }
383
323
 
384
- .salmex-spinner-bars,
385
- .salmex-spinner-segment {
386
- opacity: 0.85;
387
- }
388
-
389
- .salmex-spinner-dot {
324
+ .sx-spinner-dot {
390
325
  animation: none;
391
326
  opacity: 0.8;
392
327
  }
393
328
 
394
- .salmex-spinner-dot-1 {
329
+ .sx-spinner-dot-1 {
395
330
  opacity: 0.5;
396
331
  }
397
332
 
398
- .salmex-spinner-dot-2 {
333
+ .sx-spinner-dot-2 {
399
334
  opacity: 0.75;
400
335
  }
401
336
 
402
- .salmex-pulse-ring,
403
- .salmex-pulse-dot {
337
+ .sx-pulse-ring,
338
+ .sx-pulse-dot {
404
339
  animation: none;
405
340
  }
406
341
 
407
- .salmex-pulse-ring {
342
+ .sx-pulse-ring {
408
343
  opacity: 0.25;
409
344
  transform: scale(1);
410
345
  }
411
346
 
412
- .salmex-pulse-ring-2 {
347
+ .sx-pulse-ring-2 {
413
348
  display: none;
414
349
  }
415
350
 
416
- .salmex-pulse-dot {
351
+ .sx-pulse-dot {
417
352
  opacity: 1;
418
353
  }
419
354
  }
@@ -1,6 +1,6 @@
1
1
  type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
2
  type SpinnerVariant = 'primary' | 'secondary' | 'white';
3
- type SpinnerStyle = 'ring' | 'bars' | 'segment' | 'dots' | 'pulse';
3
+ type SpinnerStyle = 'ring' | 'dots' | 'pulse';
4
4
  interface Props {
5
5
  size?: SpinnerSize;
6
6
  variant?: SpinnerVariant;
@@ -15,9 +15,11 @@ interface Props {
15
15
  /**
16
16
  * Spinner
17
17
  *
18
- * Win2K × Basquiat Bold loading indicator.
19
- * Flat shadows, crown yellow / electric blue, geometric shapes. No soft gradients.
18
+ * Neo-Brutalist DarkClean loading indicator.
19
+ * Cyan accent, dark surfaces, geometric shapes.
20
20
  * role="status", aria-label, delay, overlay. prefers-reduced-motion respected.
21
+ *
22
+ * Three styles: ring (default), dots (inline), pulse (radar/broadcast).
21
23
  */
22
24
  declare const Spinner: import("svelte").Component<Props, {}, "">;
23
25
  type Spinner = ReturnType<typeof Spinner>;
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.svelte.d.ts","sourceRoot":"","sources":["../../../src/feedback/Spinner/Spinner.svelte.ts"],"names":[],"mappings":"AAMA,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpD,KAAK,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AACxD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,UAAU,KAAK;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AA2GD;;;;;;GAMG;AACH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Spinner.svelte.d.ts","sourceRoot":"","sources":["../../../src/feedback/Spinner/Spinner.svelte.ts"],"names":[],"mappings":"AAMA,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpD,KAAK,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AACxD,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,UAAU,KAAK;IACd,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AA6FD;;;;;;;;GAQG;AACH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}