@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.
- package/README.md +52 -3
- package/dist/dialogs/ContextMenu/ContextMenu.svelte +97 -94
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +3 -2
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts.map +1 -1
- package/dist/dialogs/Modal/Modal.svelte +112 -116
- package/dist/dialogs/Modal/Modal.svelte.d.ts +1 -1
- package/dist/feedback/Alert/Alert.svelte +115 -221
- package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
- package/dist/feedback/ProgressBar/ProgressBar.svelte +246 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +40 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.d.ts +2 -0
- package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.js +1 -0
- package/dist/feedback/Skeleton/Skeleton.svelte +153 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +37 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.d.ts +2 -0
- package/dist/feedback/Skeleton/index.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.js +1 -0
- package/dist/feedback/Spinner/Spinner.svelte +86 -151
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +5 -3
- package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/feedback/Toast/Toaster.svelte +431 -0
- package/dist/feedback/Toast/Toaster.svelte.d.ts +22 -0
- package/dist/feedback/Toast/Toaster.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/index.d.ts +4 -0
- package/dist/feedback/Toast/index.d.ts.map +1 -0
- package/dist/feedback/Toast/index.js +2 -0
- package/dist/feedback/Toast/toastStore.d.ts +34 -0
- package/dist/feedback/Toast/toastStore.d.ts.map +1 -0
- package/dist/feedback/Toast/toastStore.js +43 -0
- package/dist/feedback/index.d.ts +4 -0
- package/dist/feedback/index.d.ts.map +1 -1
- package/dist/feedback/index.js +3 -0
- package/dist/forms/Checkbox/Checkbox.svelte +82 -104
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/forms/Select/Select.svelte +137 -179
- package/dist/forms/Select/Select.svelte.d.ts +1 -1
- package/dist/forms/Slider/Slider.svelte +356 -0
- package/dist/forms/Slider/Slider.svelte.d.ts +50 -0
- package/dist/forms/Slider/Slider.svelte.d.ts.map +1 -0
- package/dist/forms/Slider/index.d.ts +2 -0
- package/dist/forms/Slider/index.d.ts.map +1 -0
- package/dist/forms/Slider/index.js +1 -0
- package/dist/forms/TextInput/TextInput.svelte +151 -167
- package/dist/forms/TextInput/TextInput.svelte.d.ts +1 -1
- package/dist/forms/Textarea/Textarea.svelte +615 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts +47 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
- package/dist/forms/Textarea/index.d.ts +2 -0
- package/dist/forms/Textarea/index.d.ts.map +1 -0
- package/dist/forms/Textarea/index.js +1 -0
- package/dist/forms/Toggle/Toggle.svelte +239 -0
- package/dist/forms/Toggle/Toggle.svelte.d.ts +39 -0
- package/dist/forms/Toggle/Toggle.svelte.d.ts.map +1 -0
- package/dist/forms/Toggle/index.d.ts +2 -0
- package/dist/forms/Toggle/index.d.ts.map +1 -0
- package/dist/forms/Toggle/index.js +1 -0
- package/dist/forms/index.d.ts +3 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +3 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/layout/Card/Card.svelte +64 -39
- package/dist/layout/Card/Card.svelte.d.ts +1 -1
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
- package/dist/layout/Container/Container.svelte +71 -71
- package/dist/layout/Container/Container.svelte.d.ts +2 -2
- package/dist/navigation/CommandPalette/CommandPalette.svelte +407 -189
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +8 -3
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts.map +1 -1
- package/dist/navigation/Tabs/Tabs.svelte +95 -181
- package/dist/navigation/Tabs/Tabs.svelte.d.ts +2 -2
- package/dist/primitives/Badge/Badge.svelte +83 -220
- package/dist/primitives/Badge/Badge.svelte.d.ts +2 -2
- package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -1
- package/dist/primitives/Button/Button.svelte +144 -195
- package/dist/primitives/Button/Button.svelte.d.ts +3 -3
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
- package/dist/primitives/Tooltip/Tooltip.svelte +260 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +36 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
- package/dist/primitives/Tooltip/index.d.ts +2 -0
- package/dist/primitives/Tooltip/index.d.ts.map +1 -0
- package/dist/primitives/Tooltip/index.js +1 -0
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +1 -0
- package/dist/styles/tokens.css +197 -265
- package/package.json +5 -5
- package/dist/windowing/Window/Window.svelte +0 -637
- package/dist/windowing/Window/Window.svelte.d.ts +0 -65
- package/dist/windowing/Window/Window.svelte.d.ts.map +0 -1
- package/dist/windowing/Window/index.d.ts +0 -2
- package/dist/windowing/Window/index.d.ts.map +0 -1
- package/dist/windowing/Window/index.js +0 -1
- package/dist/windowing/WindowManager/WindowManager.svelte +0 -425
- package/dist/windowing/WindowManager/WindowManager.svelte.d.ts +0 -38
- package/dist/windowing/WindowManager/WindowManager.svelte.d.ts.map +0 -1
- package/dist/windowing/WindowManager/index.d.ts +0 -2
- package/dist/windowing/WindowManager/index.d.ts.map +0 -1
- package/dist/windowing/WindowManager/index.js +0 -1
- package/dist/windowing/index.d.ts +0 -5
- package/dist/windowing/index.d.ts.map +0 -1
- package/dist/windowing/index.js +0 -3
- package/dist/windowing/windowStore.svelte.d.ts +0 -49
- package/dist/windowing/windowStore.svelte.d.ts.map +0 -1
- package/dist/windowing/windowStore.svelte.js +0 -170
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component Spinner
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Neo-Brutalist Dark — Clean 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' | '
|
|
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(--
|
|
58
|
-
sm: { dimension: 20, stroke: 3, fontSize: 'var(--
|
|
59
|
-
md: { dimension: 28, stroke: 4, fontSize: 'var(--
|
|
60
|
-
lg: { dimension: 40, stroke: 5, fontSize: 'var(--
|
|
61
|
-
xl: { dimension: 56, stroke: 6, fontSize: 'var(--
|
|
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
|
-
'
|
|
72
|
-
`
|
|
73
|
-
`
|
|
74
|
-
`
|
|
75
|
-
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="
|
|
85
|
+
<div class="sx-spinner-content">
|
|
84
86
|
{#if style === 'ring'}
|
|
85
87
|
<svg
|
|
86
|
-
class="
|
|
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="
|
|
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="
|
|
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
|
-
{
|
|
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="
|
|
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="
|
|
139
|
-
<span class="
|
|
140
|
-
<span class="
|
|
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
|
-
{
|
|
143
|
-
|
|
144
|
-
{#if style === 'pulse'}
|
|
124
|
+
{:else}
|
|
145
125
|
<div
|
|
146
|
-
class="
|
|
147
|
-
style="
|
|
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="
|
|
151
|
-
<span class="
|
|
152
|
-
<span class="
|
|
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="
|
|
137
|
+
<span class="sx-spinner-label" style="font-size: {config.fontSize};">
|
|
158
138
|
{label}
|
|
159
139
|
</span>
|
|
160
140
|
{:else}
|
|
161
|
-
<span class="
|
|
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
|
-
.
|
|
148
|
+
.sx-spinner {
|
|
169
149
|
display: inline-flex;
|
|
170
150
|
align-items: center;
|
|
171
151
|
justify-content: center;
|
|
172
152
|
}
|
|
173
153
|
|
|
174
|
-
.
|
|
154
|
+
.sx-spinner-content {
|
|
175
155
|
display: inline-flex;
|
|
176
156
|
align-items: center;
|
|
177
|
-
gap: var(--
|
|
157
|
+
gap: var(--sx-space-2);
|
|
178
158
|
}
|
|
179
159
|
|
|
180
|
-
.
|
|
181
|
-
font-family: var(--
|
|
182
|
-
font-weight:
|
|
160
|
+
.sx-spinner-label {
|
|
161
|
+
font-family: var(--sx-font-body);
|
|
162
|
+
font-weight: 600;
|
|
183
163
|
letter-spacing: 0.3px;
|
|
184
|
-
color:
|
|
164
|
+
color: var(--sx-color-text-secondary);
|
|
185
165
|
}
|
|
186
166
|
|
|
187
|
-
.
|
|
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
|
-
.
|
|
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:
|
|
206
|
-
|
|
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
|
|
218
|
-
.
|
|
219
|
-
color:
|
|
192
|
+
/* Variants */
|
|
193
|
+
.sx-spinner-primary {
|
|
194
|
+
color: var(--sx-color-cyan);
|
|
220
195
|
}
|
|
221
196
|
|
|
222
|
-
|
|
223
|
-
color:
|
|
197
|
+
.sx-spinner-secondary {
|
|
198
|
+
color: var(--sx-color-text-secondary);
|
|
224
199
|
}
|
|
225
200
|
|
|
226
|
-
.
|
|
227
|
-
color:
|
|
201
|
+
.sx-spinner-white {
|
|
202
|
+
color: var(--sx-color-text);
|
|
228
203
|
}
|
|
229
204
|
|
|
230
|
-
|
|
231
|
-
|
|
205
|
+
/* ========== RING ========== */
|
|
206
|
+
.sx-spinner-ring {
|
|
207
|
+
animation: sx-spin 0.85s linear infinite;
|
|
232
208
|
}
|
|
233
209
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
.
|
|
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
|
|
219
|
+
@keyframes sx-spin {
|
|
249
220
|
to {
|
|
250
221
|
transform: rotate(360deg);
|
|
251
222
|
}
|
|
252
223
|
}
|
|
253
224
|
|
|
254
|
-
/* ==========
|
|
255
|
-
.
|
|
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
|
-
.
|
|
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
|
-
|
|
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
|
-
.
|
|
242
|
+
.sx-spinner-dot-1 {
|
|
296
243
|
animation-delay: -0.2s;
|
|
297
244
|
}
|
|
298
245
|
|
|
299
|
-
.
|
|
246
|
+
.sx-spinner-dot-2 {
|
|
300
247
|
animation-delay: -0.1s;
|
|
301
248
|
}
|
|
302
249
|
|
|
303
|
-
@keyframes
|
|
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
|
|
315
|
-
.
|
|
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
|
-
.
|
|
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:
|
|
275
|
+
animation: sx-pulse-ring 1.5s ease-out infinite;
|
|
329
276
|
}
|
|
330
277
|
|
|
331
|
-
.
|
|
278
|
+
.sx-pulse-ring-2 {
|
|
332
279
|
animation-delay: 0.75s;
|
|
333
280
|
}
|
|
334
281
|
|
|
335
|
-
.
|
|
282
|
+
.sx-pulse-dot {
|
|
336
283
|
width: 28%;
|
|
337
284
|
height: 28%;
|
|
338
285
|
border-radius: 50%;
|
|
339
286
|
background: currentColor;
|
|
340
|
-
|
|
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
|
|
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
|
|
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
|
-
.
|
|
369
|
-
.salmex-spinner-bars,
|
|
370
|
-
.salmex-spinner-segment {
|
|
314
|
+
.sx-spinner-ring {
|
|
371
315
|
animation: none;
|
|
372
316
|
}
|
|
373
317
|
|
|
374
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
329
|
+
.sx-spinner-dot-1 {
|
|
395
330
|
opacity: 0.5;
|
|
396
331
|
}
|
|
397
332
|
|
|
398
|
-
.
|
|
333
|
+
.sx-spinner-dot-2 {
|
|
399
334
|
opacity: 0.75;
|
|
400
335
|
}
|
|
401
336
|
|
|
402
|
-
.
|
|
403
|
-
.
|
|
337
|
+
.sx-pulse-ring,
|
|
338
|
+
.sx-pulse-dot {
|
|
404
339
|
animation: none;
|
|
405
340
|
}
|
|
406
341
|
|
|
407
|
-
.
|
|
342
|
+
.sx-pulse-ring {
|
|
408
343
|
opacity: 0.25;
|
|
409
344
|
transform: scale(1);
|
|
410
345
|
}
|
|
411
346
|
|
|
412
|
-
.
|
|
347
|
+
.sx-pulse-ring-2 {
|
|
413
348
|
display: none;
|
|
414
349
|
}
|
|
415
350
|
|
|
416
|
-
.
|
|
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' | '
|
|
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
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Neo-Brutalist Dark — Clean 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,
|
|
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"}
|