@salmexio/ui 1.0.0 → 1.2.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 +1 -1
- package/dist/dialogs/ContextMenu/ContextMenu.svelte +17 -7
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +1 -1
- package/dist/dialogs/Modal/Modal.svelte +37 -4
- package/dist/dialogs/Modal/Modal.svelte.d.ts +1 -1
- package/dist/feedback/Alert/Alert.svelte +67 -19
- package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
- package/dist/feedback/ProgressBar/ProgressBar.svelte +33 -11
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +3 -3
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -1
- package/dist/feedback/Skeleton/Skeleton.svelte +12 -4
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +1 -1
- package/dist/feedback/Spinner/Spinner.svelte +5 -3
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +2 -2
- package/dist/feedback/Toast/Toaster.svelte +45 -13
- package/dist/feedback/Toast/Toaster.svelte.d.ts +1 -1
- package/dist/forms/Checkbox/Checkbox.svelte +37 -9
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/forms/Select/Select.svelte +28 -12
- package/dist/forms/Select/Select.svelte.d.ts +1 -1
- package/dist/forms/Slider/Slider.svelte +66 -38
- package/dist/forms/Slider/Slider.svelte.d.ts +2 -2
- package/dist/forms/Slider/Slider.svelte.d.ts.map +1 -1
- package/dist/forms/TextInput/TextInput.svelte +35 -7
- package/dist/forms/TextInput/TextInput.svelte.d.ts +1 -1
- package/dist/forms/Textarea/Textarea.svelte +22 -7
- package/dist/forms/Textarea/Textarea.svelte.d.ts +1 -1
- package/dist/forms/Toggle/Toggle.svelte +71 -12
- package/dist/forms/Toggle/Toggle.svelte.d.ts +1 -1
- package/dist/layout/Card/Card.svelte +128 -5
- package/dist/layout/Card/Card.svelte.d.ts +4 -1
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
- package/dist/layout/Container/Container.svelte +1 -1
- package/dist/layout/Container/Container.svelte.d.ts +1 -1
- package/dist/layout/ThermalBackground/ThermalBackground.svelte +275 -0
- package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts +14 -0
- package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts.map +1 -0
- package/dist/layout/ThermalBackground/index.d.ts +2 -0
- package/dist/layout/ThermalBackground/index.d.ts.map +1 -0
- package/dist/layout/ThermalBackground/index.js +1 -0
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +1 -0
- package/dist/navigation/CommandPalette/CommandPalette.svelte +45 -11
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +1 -1
- package/dist/navigation/NavMenu/NavMenu.svelte +800 -0
- package/dist/navigation/NavMenu/NavMenu.svelte.d.ts +81 -0
- package/dist/navigation/NavMenu/NavMenu.svelte.d.ts.map +1 -0
- package/dist/navigation/NavMenu/index.d.ts +3 -0
- package/dist/navigation/NavMenu/index.d.ts.map +1 -0
- package/dist/navigation/NavMenu/index.js +1 -0
- package/dist/navigation/Tabs/Tabs.svelte +73 -11
- package/dist/navigation/Tabs/Tabs.svelte.d.ts +1 -1
- package/dist/navigation/index.d.ts +2 -0
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -0
- package/dist/primitives/Badge/Badge.svelte +68 -21
- package/dist/primitives/Badge/Badge.svelte.d.ts +1 -1
- package/dist/primitives/Button/Button.svelte +254 -34
- package/dist/primitives/Button/Button.svelte.d.ts +1 -1
- package/dist/primitives/Tooltip/Tooltip.svelte +10 -2
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/styles/tokens.css +202 -64
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component Toaster
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
INFRARED — Toast notification container.
|
|
5
5
|
Renders stacked toast notifications with slide-in/out animations,
|
|
6
6
|
auto-dismiss with pause-on-hover, keyboard dismiss, and ARIA live region.
|
|
7
7
|
|
|
@@ -212,9 +212,10 @@ onMount(() => {
|
|
|
212
212
|
left: 0;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
/* ========== TOAST ========== */
|
|
215
|
+
/* ========== TOAST — 3D floating notification plate ========== */
|
|
216
216
|
.sx-toast {
|
|
217
217
|
pointer-events: auto;
|
|
218
|
+
position: relative;
|
|
218
219
|
display: flex;
|
|
219
220
|
align-items: flex-start;
|
|
220
221
|
gap: var(--sx-space-3);
|
|
@@ -223,15 +224,22 @@ onMount(() => {
|
|
|
223
224
|
backdrop-filter: var(--sx-glass-blur);
|
|
224
225
|
-webkit-backdrop-filter: var(--sx-glass-blur);
|
|
225
226
|
border: 1px solid var(--sx-color-border-strong);
|
|
227
|
+
border-top-color: rgba(255, 255, 255, 0.05);
|
|
226
228
|
border-radius: var(--sx-radius-md);
|
|
227
|
-
box-shadow:
|
|
229
|
+
box-shadow:
|
|
230
|
+
/* 3D extrusion */
|
|
231
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
232
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12),
|
|
233
|
+
0 3px 0 0 rgba(0, 0, 0, 0.06),
|
|
234
|
+
/* Ambient shadow */
|
|
235
|
+
0 6px 16px -3px rgba(0, 0, 0, 0.4);
|
|
228
236
|
border-left: 3px solid var(--sx-color-text-secondary);
|
|
229
237
|
animation: sx-toast-in 250ms var(--sx-ease-out) both;
|
|
230
238
|
outline: none;
|
|
231
239
|
}
|
|
232
240
|
|
|
233
241
|
.sx-toast:focus-visible {
|
|
234
|
-
outline: 2px solid var(--sx-color-
|
|
242
|
+
outline: 2px solid var(--sx-color-primary);
|
|
235
243
|
outline-offset: 2px;
|
|
236
244
|
}
|
|
237
245
|
|
|
@@ -239,21 +247,45 @@ onMount(() => {
|
|
|
239
247
|
animation: sx-toast-out 150ms ease-in both;
|
|
240
248
|
}
|
|
241
249
|
|
|
242
|
-
/* Type border colors */
|
|
250
|
+
/* Type border colors + variant-tinted extrusion */
|
|
243
251
|
.sx-toast-success {
|
|
244
252
|
border-left-color: var(--sx-color-green);
|
|
253
|
+
box-shadow:
|
|
254
|
+
0 1px 0 0 rgba(34, 120, 69, 0.2),
|
|
255
|
+
0 2px 0 0 rgba(34, 120, 69, 0.1),
|
|
256
|
+
0 3px 0 0 rgba(0, 0, 0, 0.06),
|
|
257
|
+
0 6px 16px -3px rgba(0, 0, 0, 0.4),
|
|
258
|
+
0 0 8px -4px rgba(34, 197, 94, 0.12);
|
|
245
259
|
}
|
|
246
260
|
|
|
247
261
|
.sx-toast-error {
|
|
248
262
|
border-left-color: var(--sx-color-red);
|
|
263
|
+
box-shadow:
|
|
264
|
+
0 1px 0 0 rgba(180, 30, 30, 0.2),
|
|
265
|
+
0 2px 0 0 rgba(140, 20, 20, 0.1),
|
|
266
|
+
0 3px 0 0 rgba(0, 0, 0, 0.06),
|
|
267
|
+
0 6px 16px -3px rgba(0, 0, 0, 0.4),
|
|
268
|
+
0 0 8px -4px rgba(220, 38, 38, 0.12);
|
|
249
269
|
}
|
|
250
270
|
|
|
251
271
|
.sx-toast-warning {
|
|
252
|
-
border-left-color: var(--sx-color-
|
|
272
|
+
border-left-color: var(--sx-color-secondary);
|
|
273
|
+
box-shadow:
|
|
274
|
+
0 1px 0 0 rgba(160, 134, 62, 0.2),
|
|
275
|
+
0 2px 0 0 rgba(130, 108, 50, 0.1),
|
|
276
|
+
0 3px 0 0 rgba(0, 0, 0, 0.06),
|
|
277
|
+
0 6px 16px -3px rgba(0, 0, 0, 0.4),
|
|
278
|
+
0 0 8px -4px rgba(200, 168, 78, 0.12);
|
|
253
279
|
}
|
|
254
280
|
|
|
255
281
|
.sx-toast-info {
|
|
256
|
-
border-left-color: var(--sx-color-
|
|
282
|
+
border-left-color: var(--sx-color-primary);
|
|
283
|
+
box-shadow:
|
|
284
|
+
0 1px 0 0 rgba(200, 85, 30, 0.2),
|
|
285
|
+
0 2px 0 0 rgba(160, 65, 20, 0.1),
|
|
286
|
+
0 3px 0 0 rgba(0, 0, 0, 0.06),
|
|
287
|
+
0 6px 16px -3px rgba(0, 0, 0, 0.4),
|
|
288
|
+
0 0 8px -4px rgba(255, 107, 53, 0.12);
|
|
257
289
|
}
|
|
258
290
|
|
|
259
291
|
/* Icon */
|
|
@@ -273,11 +305,11 @@ onMount(() => {
|
|
|
273
305
|
}
|
|
274
306
|
|
|
275
307
|
.sx-toast-warning .sx-toast-icon {
|
|
276
|
-
color: var(--sx-color-
|
|
308
|
+
color: var(--sx-color-secondary);
|
|
277
309
|
}
|
|
278
310
|
|
|
279
311
|
.sx-toast-info .sx-toast-icon {
|
|
280
|
-
color: var(--sx-color-
|
|
312
|
+
color: var(--sx-color-primary);
|
|
281
313
|
}
|
|
282
314
|
|
|
283
315
|
/* Content */
|
|
@@ -317,7 +349,7 @@ onMount(() => {
|
|
|
317
349
|
font-family: var(--sx-font-body);
|
|
318
350
|
font-size: var(--sx-text-xs);
|
|
319
351
|
font-weight: 600;
|
|
320
|
-
color: var(--sx-color-
|
|
352
|
+
color: var(--sx-color-primary);
|
|
321
353
|
cursor: pointer;
|
|
322
354
|
padding: var(--sx-space-1) var(--sx-space-2);
|
|
323
355
|
border-radius: var(--sx-radius-sm);
|
|
@@ -325,11 +357,11 @@ onMount(() => {
|
|
|
325
357
|
}
|
|
326
358
|
|
|
327
359
|
.sx-toast-action-btn:hover {
|
|
328
|
-
background: var(--sx-color-
|
|
360
|
+
background: var(--sx-color-primary-subtle);
|
|
329
361
|
}
|
|
330
362
|
|
|
331
363
|
.sx-toast-action-btn:focus-visible {
|
|
332
|
-
outline: 2px solid var(--sx-color-
|
|
364
|
+
outline: 2px solid var(--sx-color-primary);
|
|
333
365
|
outline-offset: 1px;
|
|
334
366
|
}
|
|
335
367
|
|
|
@@ -353,7 +385,7 @@ onMount(() => {
|
|
|
353
385
|
}
|
|
354
386
|
|
|
355
387
|
.sx-toast-close:focus-visible {
|
|
356
|
-
outline: 2px solid var(--sx-color-
|
|
388
|
+
outline: 2px solid var(--sx-color-primary);
|
|
357
389
|
outline-offset: 1px;
|
|
358
390
|
}
|
|
359
391
|
|
|
@@ -8,7 +8,7 @@ interface Props {
|
|
|
8
8
|
/**
|
|
9
9
|
* Toaster
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* INFRARED — Toast notification container.
|
|
12
12
|
* Renders stacked toast notifications with slide-in/out animations,
|
|
13
13
|
* auto-dismiss with pause-on-hover, keyboard dismiss, and ARIA live region.
|
|
14
14
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component Checkbox
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
INFRARED — Clean checkbox with vermilion accent fill and white checkmark.
|
|
5
5
|
Uses native <input type="checkbox"> per WAI-ARIA APG (best practice: native over custom role="checkbox").
|
|
6
6
|
Label, description, error, indeterminate. Full a11y; focus and semantics follow the native input.
|
|
7
7
|
-->
|
|
@@ -185,6 +185,10 @@ function handleChange(e: Event) {
|
|
|
185
185
|
background: var(--sx-color-surface);
|
|
186
186
|
border: 1px solid var(--sx-color-border-strong);
|
|
187
187
|
border-radius: var(--sx-radius-sm);
|
|
188
|
+
/* Recessed well when unchecked */
|
|
189
|
+
box-shadow:
|
|
190
|
+
inset 0 1px 3px rgba(0, 0, 0, 0.3),
|
|
191
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.06);
|
|
188
192
|
transition: background var(--sx-transition-fast), border-color var(--sx-transition-fast),
|
|
189
193
|
box-shadow var(--sx-transition-fast);
|
|
190
194
|
color: #fff;
|
|
@@ -209,22 +213,29 @@ function handleChange(e: Event) {
|
|
|
209
213
|
width: 100%;
|
|
210
214
|
height: 100%;
|
|
211
215
|
padding: 2px;
|
|
216
|
+
animation: sx-check-in var(--sx-duration-fast) var(--sx-ease-out) both;
|
|
212
217
|
}
|
|
213
218
|
|
|
214
219
|
.sx-checkbox-icon-minus {
|
|
215
220
|
padding: 3px 4px;
|
|
216
221
|
}
|
|
217
222
|
|
|
218
|
-
/* Checked --
|
|
223
|
+
/* Checked -- forge gradient fill, raised from the well */
|
|
219
224
|
.sx-checkbox-box-checked {
|
|
220
|
-
background:
|
|
221
|
-
border-color:
|
|
225
|
+
background: linear-gradient(135deg, #FF6B35, #C8A84E);
|
|
226
|
+
border-color: rgba(255, 107, 53, 0.6);
|
|
227
|
+
box-shadow:
|
|
228
|
+
0 1px 0 0 rgba(0, 0, 0, 0.15),
|
|
229
|
+
0 0 6px -2px rgba(255, 107, 53, 0.3);
|
|
222
230
|
}
|
|
223
231
|
|
|
224
|
-
/* Indeterminate -- same
|
|
232
|
+
/* Indeterminate -- same forge gradient */
|
|
225
233
|
.sx-checkbox-box-indeterminate {
|
|
226
|
-
background:
|
|
227
|
-
border-color:
|
|
234
|
+
background: linear-gradient(135deg, #FF6B35, #C8A84E);
|
|
235
|
+
border-color: rgba(255, 107, 53, 0.6);
|
|
236
|
+
box-shadow:
|
|
237
|
+
0 1px 0 0 rgba(0, 0, 0, 0.15),
|
|
238
|
+
0 0 6px -2px rgba(255, 107, 53, 0.3);
|
|
228
239
|
}
|
|
229
240
|
|
|
230
241
|
/* Hover -- border brightens on unchecked box */
|
|
@@ -232,10 +243,20 @@ function handleChange(e: Event) {
|
|
|
232
243
|
border-color: var(--sx-color-border-hover);
|
|
233
244
|
}
|
|
234
245
|
|
|
235
|
-
/* Focus --
|
|
246
|
+
/* Focus -- primary outline with forge glow */
|
|
236
247
|
.sx-checkbox-input:focus-visible + .sx-checkbox-box {
|
|
237
|
-
outline: 2px solid var(--sx-color-
|
|
248
|
+
outline: 2px solid var(--sx-color-primary);
|
|
238
249
|
outline-offset: 2px;
|
|
250
|
+
box-shadow:
|
|
251
|
+
inset 0 1px 3px rgba(0, 0, 0, 0.3),
|
|
252
|
+
0 0 12px -4px rgba(255, 107, 53, 0.2);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.sx-checkbox-input:focus-visible + .sx-checkbox-box-checked,
|
|
256
|
+
.sx-checkbox-input:focus-visible + .sx-checkbox-box-indeterminate {
|
|
257
|
+
box-shadow:
|
|
258
|
+
0 1px 0 0 rgba(0, 0, 0, 0.15),
|
|
259
|
+
0 0 10px -2px rgba(255, 107, 53, 0.4);
|
|
239
260
|
}
|
|
240
261
|
|
|
241
262
|
/* High contrast / forced colors: solid outline so focus is visible (APG) */
|
|
@@ -248,6 +269,9 @@ function handleChange(e: Event) {
|
|
|
248
269
|
|
|
249
270
|
.sx-checkbox-box-error {
|
|
250
271
|
border-color: var(--sx-color-red);
|
|
272
|
+
box-shadow:
|
|
273
|
+
inset 0 1px 3px rgba(0, 0, 0, 0.3),
|
|
274
|
+
0 0 8px -4px rgba(220, 38, 38, 0.2);
|
|
251
275
|
}
|
|
252
276
|
|
|
253
277
|
.sx-checkbox-content {
|
|
@@ -303,5 +327,9 @@ function handleChange(e: Event) {
|
|
|
303
327
|
.sx-checkbox-box {
|
|
304
328
|
transition: none;
|
|
305
329
|
}
|
|
330
|
+
|
|
331
|
+
.sx-checkbox-icon {
|
|
332
|
+
animation: none;
|
|
333
|
+
}
|
|
306
334
|
}
|
|
307
335
|
</style>
|
|
@@ -20,7 +20,7 @@ interface Props {
|
|
|
20
20
|
/**
|
|
21
21
|
* Checkbox
|
|
22
22
|
*
|
|
23
|
-
*
|
|
23
|
+
* INFRARED — Clean checkbox with vermilion accent fill and white checkmark.
|
|
24
24
|
* Uses native <input type="checkbox"> per WAI-ARIA APG (best practice: native over custom role="checkbox").
|
|
25
25
|
* Label, description, error, indeterminate. Full a11y; focus and semantics follow the native input.
|
|
26
26
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component Select
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
INFRARED — Dropdown select with clean trigger field, glass-blur panel,
|
|
5
5
|
keyboard-first navigation, type-ahead search, option groups, and multi-select.
|
|
6
6
|
|
|
7
7
|
Follows WAI-ARIA APG Select-Only Combobox pattern: DOM focus stays on
|
|
@@ -623,6 +623,7 @@ onMount(() => {
|
|
|
623
623
|
/* ========================================
|
|
624
624
|
TRIGGER -- Same style as TextInput
|
|
625
625
|
======================================== */
|
|
626
|
+
/* Trigger — recessed channel, same as TextInput */
|
|
626
627
|
.sx-select-trigger {
|
|
627
628
|
display: flex;
|
|
628
629
|
align-items: center;
|
|
@@ -638,6 +639,11 @@ onMount(() => {
|
|
|
638
639
|
cursor: pointer;
|
|
639
640
|
text-align: left;
|
|
640
641
|
transition: border-color var(--sx-transition-fast), box-shadow var(--sx-transition-fast);
|
|
642
|
+
|
|
643
|
+
/* Recessed inset */
|
|
644
|
+
box-shadow:
|
|
645
|
+
inset 0 1px 3px rgba(0, 0, 0, 0.3),
|
|
646
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.06);
|
|
641
647
|
}
|
|
642
648
|
|
|
643
649
|
.sx-select-trigger:hover:not(:disabled) {
|
|
@@ -646,23 +652,33 @@ onMount(() => {
|
|
|
646
652
|
|
|
647
653
|
.sx-select-trigger:focus-visible {
|
|
648
654
|
outline: none;
|
|
649
|
-
border-color: var(--sx-color-
|
|
650
|
-
box-shadow:
|
|
655
|
+
border-color: var(--sx-color-primary);
|
|
656
|
+
box-shadow:
|
|
657
|
+
inset 0 1px 2px rgba(0, 0, 0, 0.2),
|
|
658
|
+
0 0 0 3px var(--sx-color-primary-ring),
|
|
659
|
+
0 0 12px -4px rgba(255, 107, 53, 0.15);
|
|
651
660
|
}
|
|
652
661
|
|
|
653
662
|
.sx-select-trigger-open {
|
|
654
|
-
border-color: var(--sx-color-
|
|
655
|
-
box-shadow:
|
|
663
|
+
border-color: var(--sx-color-primary);
|
|
664
|
+
box-shadow:
|
|
665
|
+
inset 0 1px 2px rgba(0, 0, 0, 0.2),
|
|
666
|
+
0 0 0 3px var(--sx-color-primary-ring),
|
|
667
|
+
0 0 12px -4px rgba(255, 107, 53, 0.15);
|
|
656
668
|
}
|
|
657
669
|
|
|
658
670
|
.sx-select-trigger-error {
|
|
659
671
|
border-color: var(--sx-color-red);
|
|
660
|
-
box-shadow:
|
|
672
|
+
box-shadow:
|
|
673
|
+
inset 0 1px 2px rgba(0, 0, 0, 0.2),
|
|
674
|
+
0 0 0 3px var(--sx-color-red-ring),
|
|
675
|
+
0 0 10px -4px rgba(220, 38, 38, 0.15);
|
|
661
676
|
}
|
|
662
677
|
|
|
663
678
|
.sx-select-trigger-disabled {
|
|
664
679
|
opacity: 0.5;
|
|
665
680
|
cursor: not-allowed;
|
|
681
|
+
box-shadow: none;
|
|
666
682
|
}
|
|
667
683
|
|
|
668
684
|
/* ========================================
|
|
@@ -747,12 +763,12 @@ onMount(() => {
|
|
|
747
763
|
}
|
|
748
764
|
|
|
749
765
|
.sx-select-option-active {
|
|
750
|
-
background: var(--sx-color-
|
|
751
|
-
color: var(--sx-color-
|
|
766
|
+
background: var(--sx-color-primary-hover);
|
|
767
|
+
color: var(--sx-color-primary);
|
|
752
768
|
}
|
|
753
769
|
|
|
754
770
|
.sx-select-option-selected:not(.sx-select-option-active) {
|
|
755
|
-
background: var(--sx-color-
|
|
771
|
+
background: var(--sx-color-primary-subtle);
|
|
756
772
|
}
|
|
757
773
|
|
|
758
774
|
.sx-select-option-disabled {
|
|
@@ -772,11 +788,11 @@ onMount(() => {
|
|
|
772
788
|
flex-shrink: 0;
|
|
773
789
|
display: flex;
|
|
774
790
|
align-items: center;
|
|
775
|
-
color: var(--sx-color-
|
|
791
|
+
color: var(--sx-color-primary);
|
|
776
792
|
}
|
|
777
793
|
|
|
778
794
|
.sx-select-option-active .sx-select-checkmark {
|
|
779
|
-
color: var(--sx-color-
|
|
795
|
+
color: var(--sx-color-primary);
|
|
780
796
|
}
|
|
781
797
|
|
|
782
798
|
/* Checkbox square for multi select */
|
|
@@ -793,7 +809,7 @@ onMount(() => {
|
|
|
793
809
|
}
|
|
794
810
|
|
|
795
811
|
.sx-select-option-active .sx-select-check {
|
|
796
|
-
border-color: var(--sx-color-
|
|
812
|
+
border-color: var(--sx-color-primary);
|
|
797
813
|
}
|
|
798
814
|
|
|
799
815
|
/* ========================================
|
|
@@ -47,7 +47,7 @@ interface Props {
|
|
|
47
47
|
/**
|
|
48
48
|
* Select
|
|
49
49
|
*
|
|
50
|
-
*
|
|
50
|
+
* INFRARED — Dropdown select with clean trigger field, glass-blur panel,
|
|
51
51
|
* keyboard-first navigation, type-ahead search, option groups, and multi-select.
|
|
52
52
|
*
|
|
53
53
|
* Follows WAI-ARIA APG Select-Only Combobox pattern: DOM focus stays on
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component Slider
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
INFRARED — Range slider with keyboard support, optional value display,
|
|
5
5
|
step marks, min/max labels, and full ARIA compliance.
|
|
6
6
|
|
|
7
7
|
@example
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { cn } from '../../utils/cn.js';
|
|
14
14
|
|
|
15
15
|
type SliderSize = 'sm' | 'md' | 'lg';
|
|
16
|
-
type SliderColor = '
|
|
16
|
+
type SliderColor = 'primary' | 'green' | 'brass' | 'red' | 'teal';
|
|
17
17
|
|
|
18
18
|
interface Props {
|
|
19
19
|
/** Accessible label. */
|
|
@@ -61,7 +61,7 @@ let {
|
|
|
61
61
|
formatValue,
|
|
62
62
|
hideLabel = false,
|
|
63
63
|
size = 'md',
|
|
64
|
-
color = '
|
|
64
|
+
color = 'primary',
|
|
65
65
|
class: className = '',
|
|
66
66
|
oninput,
|
|
67
67
|
onchange,
|
|
@@ -199,50 +199,60 @@ function handleChange(e: Event) {
|
|
|
199
199
|
|
|
200
200
|
/* Focused track glow — WebKit */
|
|
201
201
|
.sx-slider-input:focus-visible::-webkit-slider-runnable-track {
|
|
202
|
-
box-shadow: 0 0 0 1px var(--sx-slider-accent, var(--sx-color-
|
|
202
|
+
box-shadow: 0 0 0 1px var(--sx-slider-accent, var(--sx-color-primary));
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
/* Focused track glow — Firefox */
|
|
206
206
|
.sx-slider-input:focus-visible::-moz-range-track {
|
|
207
|
-
box-shadow: 0 0 0 1px var(--sx-slider-accent, var(--sx-color-
|
|
207
|
+
box-shadow: 0 0 0 1px var(--sx-slider-accent, var(--sx-color-primary));
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
/* Track — WebKit */
|
|
210
|
+
/* Track — WebKit — recessed channel */
|
|
211
211
|
.sx-slider-input::-webkit-slider-runnable-track {
|
|
212
212
|
height: var(--sx-slider-track-h, 6px);
|
|
213
213
|
border-radius: var(--sx-radius-full);
|
|
214
214
|
background: linear-gradient(
|
|
215
215
|
to right,
|
|
216
|
-
var(--sx-slider-accent, var(--sx-color-
|
|
217
|
-
var(--sx-slider-accent, var(--sx-color-
|
|
216
|
+
var(--sx-slider-accent, var(--sx-color-primary)) 0%,
|
|
217
|
+
var(--sx-slider-accent, var(--sx-color-primary)) var(--sx-slider-fill),
|
|
218
218
|
var(--sx-color-surface-2) var(--sx-slider-fill),
|
|
219
219
|
var(--sx-color-surface-2) 100%
|
|
220
220
|
);
|
|
221
|
+
box-shadow:
|
|
222
|
+
inset 0 1px 2px rgba(0, 0, 0, 0.3),
|
|
223
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.06);
|
|
221
224
|
}
|
|
222
225
|
|
|
223
|
-
/* Track — Firefox */
|
|
226
|
+
/* Track — Firefox — recessed channel */
|
|
224
227
|
.sx-slider-input::-moz-range-track {
|
|
225
228
|
height: var(--sx-slider-track-h, 6px);
|
|
226
229
|
border-radius: var(--sx-radius-full);
|
|
227
230
|
background: var(--sx-color-surface-2);
|
|
228
231
|
border: none;
|
|
232
|
+
box-shadow:
|
|
233
|
+
inset 0 1px 2px rgba(0, 0, 0, 0.3),
|
|
234
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.06);
|
|
229
235
|
}
|
|
230
236
|
|
|
231
237
|
.sx-slider-input::-moz-range-progress {
|
|
232
238
|
height: var(--sx-slider-track-h, 6px);
|
|
233
239
|
border-radius: var(--sx-radius-full);
|
|
234
|
-
background: var(--sx-slider-accent, var(--sx-color-
|
|
240
|
+
background: var(--sx-slider-accent, var(--sx-color-primary));
|
|
235
241
|
}
|
|
236
242
|
|
|
237
|
-
/* Thumb — WebKit */
|
|
243
|
+
/* Thumb — WebKit — 3D raised knob */
|
|
238
244
|
.sx-slider-input::-webkit-slider-thumb {
|
|
239
245
|
-webkit-appearance: none;
|
|
240
246
|
width: var(--sx-slider-thumb, 18px);
|
|
241
247
|
height: var(--sx-slider-thumb, 18px);
|
|
242
248
|
border-radius: var(--sx-radius-full);
|
|
243
|
-
background:
|
|
244
|
-
border: 2px solid var(--sx-slider-accent, var(--sx-color-
|
|
249
|
+
background: linear-gradient(180deg, #E8E0D8 0%, #B8B0A8 100%);
|
|
250
|
+
border: 2px solid var(--sx-slider-accent, var(--sx-color-primary));
|
|
245
251
|
margin-top: calc((var(--sx-slider-track-h, 6px) - var(--sx-slider-thumb, 18px)) / 2);
|
|
252
|
+
box-shadow:
|
|
253
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
254
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12),
|
|
255
|
+
0 3px 6px -1px rgba(0, 0, 0, 0.25);
|
|
246
256
|
transition:
|
|
247
257
|
box-shadow var(--sx-transition-fast),
|
|
248
258
|
transform var(--sx-transition-fast),
|
|
@@ -252,24 +262,35 @@ function handleChange(e: Event) {
|
|
|
252
262
|
|
|
253
263
|
.sx-slider-input::-webkit-slider-thumb:hover {
|
|
254
264
|
transform: scale(1.15);
|
|
265
|
+
box-shadow:
|
|
266
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
267
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12),
|
|
268
|
+
0 4px 8px -1px rgba(0, 0, 0, 0.3),
|
|
269
|
+
0 0 8px -2px var(--sx-slider-glow, rgba(255, 107, 53, 0.25));
|
|
255
270
|
}
|
|
256
271
|
|
|
257
272
|
.sx-slider-input:focus-visible::-webkit-slider-thumb {
|
|
258
273
|
box-shadow:
|
|
259
|
-
0 0 0 3px var(--sx-slider-ring, rgba(
|
|
260
|
-
0 0 12px var(--sx-slider-glow, rgba(
|
|
274
|
+
0 0 0 3px var(--sx-slider-ring, rgba(255, 107, 53, 0.35)),
|
|
275
|
+
0 0 12px var(--sx-slider-glow, rgba(255, 107, 53, 0.25)),
|
|
276
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
277
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12);
|
|
261
278
|
transform: scale(1.2);
|
|
262
|
-
background: var(--sx-slider-accent, var(--sx-color-
|
|
279
|
+
background: var(--sx-slider-accent, var(--sx-color-primary));
|
|
263
280
|
border-color: var(--sx-color-text);
|
|
264
281
|
}
|
|
265
282
|
|
|
266
|
-
/* Thumb — Firefox */
|
|
283
|
+
/* Thumb — Firefox — 3D raised knob */
|
|
267
284
|
.sx-slider-input::-moz-range-thumb {
|
|
268
285
|
width: var(--sx-slider-thumb, 18px);
|
|
269
286
|
height: var(--sx-slider-thumb, 18px);
|
|
270
287
|
border-radius: var(--sx-radius-full);
|
|
271
|
-
background:
|
|
272
|
-
border: 2px solid var(--sx-slider-accent, var(--sx-color-
|
|
288
|
+
background: linear-gradient(180deg, #E8E0D8 0%, #B8B0A8 100%);
|
|
289
|
+
border: 2px solid var(--sx-slider-accent, var(--sx-color-primary));
|
|
290
|
+
box-shadow:
|
|
291
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
292
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12),
|
|
293
|
+
0 3px 6px -1px rgba(0, 0, 0, 0.25);
|
|
273
294
|
transition:
|
|
274
295
|
box-shadow var(--sx-transition-fast),
|
|
275
296
|
transform var(--sx-transition-fast),
|
|
@@ -279,42 +300,49 @@ function handleChange(e: Event) {
|
|
|
279
300
|
|
|
280
301
|
.sx-slider-input::-moz-range-thumb:hover {
|
|
281
302
|
transform: scale(1.15);
|
|
303
|
+
box-shadow:
|
|
304
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
305
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12),
|
|
306
|
+
0 4px 8px -1px rgba(0, 0, 0, 0.3),
|
|
307
|
+
0 0 8px -2px var(--sx-slider-glow, rgba(255, 107, 53, 0.25));
|
|
282
308
|
}
|
|
283
309
|
|
|
284
310
|
.sx-slider-input:focus-visible::-moz-range-thumb {
|
|
285
311
|
box-shadow:
|
|
286
|
-
0 0 0 3px var(--sx-slider-ring, rgba(
|
|
287
|
-
0 0 12px var(--sx-slider-glow, rgba(
|
|
312
|
+
0 0 0 3px var(--sx-slider-ring, rgba(255, 107, 53, 0.35)),
|
|
313
|
+
0 0 12px var(--sx-slider-glow, rgba(255, 107, 53, 0.25)),
|
|
314
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
315
|
+
0 2px 0 0 rgba(0, 0, 0, 0.12);
|
|
288
316
|
transform: scale(1.2);
|
|
289
|
-
background: var(--sx-slider-accent, var(--sx-color-
|
|
317
|
+
background: var(--sx-slider-accent, var(--sx-color-primary));
|
|
290
318
|
border-color: var(--sx-color-text);
|
|
291
319
|
}
|
|
292
320
|
|
|
293
321
|
/* Color variants — accent + focus ring colors */
|
|
294
|
-
.sx-slider-color-
|
|
295
|
-
--sx-slider-accent: var(--sx-color-
|
|
296
|
-
--sx-slider-ring: rgba(
|
|
297
|
-
--sx-slider-glow: rgba(
|
|
322
|
+
.sx-slider-color-primary {
|
|
323
|
+
--sx-slider-accent: var(--sx-color-primary);
|
|
324
|
+
--sx-slider-ring: rgba(255, 107, 53, 0.35);
|
|
325
|
+
--sx-slider-glow: rgba(255, 107, 53, 0.25);
|
|
298
326
|
}
|
|
299
327
|
.sx-slider-color-green {
|
|
300
328
|
--sx-slider-accent: var(--sx-color-green);
|
|
301
|
-
--sx-slider-ring: rgba(
|
|
302
|
-
--sx-slider-glow: rgba(
|
|
329
|
+
--sx-slider-ring: rgba(74, 222, 128, 0.35);
|
|
330
|
+
--sx-slider-glow: rgba(74, 222, 128, 0.25);
|
|
303
331
|
}
|
|
304
|
-
.sx-slider-color-
|
|
305
|
-
--sx-slider-accent: var(--sx-color-
|
|
306
|
-
--sx-slider-ring: rgba(
|
|
307
|
-
--sx-slider-glow: rgba(
|
|
332
|
+
.sx-slider-color-brass {
|
|
333
|
+
--sx-slider-accent: var(--sx-color-secondary);
|
|
334
|
+
--sx-slider-ring: rgba(200, 168, 78, 0.35);
|
|
335
|
+
--sx-slider-glow: rgba(200, 168, 78, 0.25);
|
|
308
336
|
}
|
|
309
337
|
.sx-slider-color-red {
|
|
310
338
|
--sx-slider-accent: var(--sx-color-red);
|
|
311
|
-
--sx-slider-ring: rgba(
|
|
312
|
-
--sx-slider-glow: rgba(
|
|
339
|
+
--sx-slider-ring: rgba(220, 38, 38, 0.35);
|
|
340
|
+
--sx-slider-glow: rgba(220, 38, 38, 0.25);
|
|
313
341
|
}
|
|
314
|
-
.sx-slider-color-
|
|
315
|
-
--sx-slider-accent: var(--sx-color-
|
|
316
|
-
--sx-slider-ring: rgba(
|
|
317
|
-
--sx-slider-glow: rgba(
|
|
342
|
+
.sx-slider-color-teal {
|
|
343
|
+
--sx-slider-accent: var(--sx-color-teal);
|
|
344
|
+
--sx-slider-ring: rgba(61, 139, 139, 0.35);
|
|
345
|
+
--sx-slider-glow: rgba(61, 139, 139, 0.25);
|
|
318
346
|
}
|
|
319
347
|
|
|
320
348
|
/* Size variants */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type SliderSize = 'sm' | 'md' | 'lg';
|
|
2
|
-
type SliderColor = '
|
|
2
|
+
type SliderColor = 'primary' | 'green' | 'brass' | 'red' | 'teal';
|
|
3
3
|
interface Props {
|
|
4
4
|
/** Accessible label. */
|
|
5
5
|
label: string;
|
|
@@ -36,7 +36,7 @@ interface Props {
|
|
|
36
36
|
/**
|
|
37
37
|
* Slider
|
|
38
38
|
*
|
|
39
|
-
*
|
|
39
|
+
* INFRARED — Range slider with keyboard support, optional value display,
|
|
40
40
|
* step marks, min/max labels, and full ARIA compliance.
|
|
41
41
|
*
|
|
42
42
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.svelte.d.ts","sourceRoot":"","sources":["../../../src/forms/Slider/Slider.svelte.ts"],"names":[],"mappings":"AAMA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,KAAK,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"Slider.svelte.d.ts","sourceRoot":"","sources":["../../../src/forms/Slider/Slider.svelte.ts"],"names":[],"mappings":"AAMA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAElE,UAAU,KAAK;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gDAAgD;IAChD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAuED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,MAAM,gDAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
|