@xsynaptic/sonic-ui 0.10.4 → 0.12.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/CHANGELOG.md +17 -0
- package/README.md +5 -16
- package/dist/default/define/toggle.js +7 -0
- package/dist/default/define.js +1 -0
- package/dist/default/elements/button.js +2 -0
- package/dist/default/elements/position-group.js +163 -0
- package/dist/default/elements/radio-group.js +34 -12
- package/dist/default/elements/switch.js +33 -167
- package/dist/default/elements/toggle.js +189 -0
- package/dist/default/elements/waveform.js +30 -10
- package/dist/default/elements/wavestrip.js +4 -0
- package/dist/default/index.js +2 -1
- package/dist/default/lib/key-press.js +27 -0
- package/dist/default/lib/toggle-travel.js +19 -0
- package/dist/dev/define/toggle.d.ts +2 -0
- package/dist/dev/define/toggle.js +8 -0
- package/dist/dev/define/toggle.js.map +1 -0
- package/dist/dev/define.d.ts +3 -1
- package/dist/dev/define.js +1 -0
- package/dist/dev/elements/button.js +2 -0
- package/dist/dev/elements/button.js.map +1 -1
- package/dist/dev/elements/position-group.d.ts +38 -0
- package/dist/dev/elements/position-group.js +164 -0
- package/dist/dev/elements/position-group.js.map +1 -0
- package/dist/dev/elements/radio-group.d.ts +4 -0
- package/dist/dev/elements/radio-group.js +34 -12
- package/dist/dev/elements/radio-group.js.map +1 -1
- package/dist/dev/elements/switch.d.ts +4 -19
- package/dist/dev/elements/switch.js +33 -167
- package/dist/dev/elements/switch.js.map +1 -1
- package/dist/dev/elements/toggle.d.ts +21 -0
- package/dist/dev/elements/toggle.js +197 -0
- package/dist/dev/elements/toggle.js.map +1 -0
- package/dist/dev/elements/waveform.d.ts +1 -1
- package/dist/dev/elements/waveform.js +30 -10
- package/dist/dev/elements/waveform.js.map +1 -1
- package/dist/dev/elements/wavestrip.d.ts +1 -0
- package/dist/dev/elements/wavestrip.js +4 -0
- package/dist/dev/elements/wavestrip.js.map +1 -1
- package/dist/dev/index.d.ts +3 -2
- package/dist/dev/index.js +2 -1
- package/dist/dev/lib/key-press.js +28 -0
- package/dist/dev/lib/key-press.js.map +1 -0
- package/dist/dev/lib/toggle-travel.js +20 -0
- package/dist/dev/lib/toggle-travel.js.map +1 -0
- package/dist/styles/button.css +2 -2
- package/dist/styles/controls.css +1 -0
- package/dist/styles/led.css +16 -13
- package/dist/styles/material.css +36 -9
- package/dist/styles/meter.css +7 -6
- package/dist/styles/segmented.css +8 -4
- package/dist/styles/spectrum.css +2 -2
- package/dist/styles/switch.css +6 -2
- package/dist/styles/toggle.css +481 -0
- package/package.json +2 -1
package/dist/styles/button.css
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
transition-delay: var(--sonic-button-busy-delay, 0s);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
.sonic-button:active:where(:not(:disabled, [aria-disabled='true'])),
|
|
87
|
+
.sonic-button:is(:active, [data-sonic-pressed]):where(:not(:disabled, [aria-disabled='true'])),
|
|
88
88
|
.sonic-button:is([aria-pressed='true'], :where([momentary]:state(pressed)) > *) {
|
|
89
89
|
--_sonic-keycap-shift: calc(var(--_sonic-keycap-depth) / 2);
|
|
90
90
|
--_sonic-keycap-scale: var(--_sonic-button-press-scale);
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
[aria-disabled='true'],
|
|
127
127
|
:where([momentary]:state(pressed), [armed]) > *,
|
|
128
128
|
:where([busy]) > :not(:has(.sonic-led))
|
|
129
|
-
):is(:focus-visible, :active) {
|
|
129
|
+
):is(:focus-visible, :active, [data-sonic-pressed]) {
|
|
130
130
|
color: var(--_sonic-ink-lift);
|
|
131
131
|
}
|
|
132
132
|
|
package/dist/styles/controls.css
CHANGED
package/dist/styles/led.css
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
.sonic-led {
|
|
9
9
|
--_sonic-led-size: var(--sonic-led-size, 0.5rem);
|
|
10
10
|
--_sonic-led-lens-ratio: var(--sonic-led-lens-ratio, calc(0.8 - 0.175 * var(--_sonic-relief)));
|
|
11
|
-
--_sonic-lit-alt: var(--sonic-lit-alt, oklch(79% 0.2 150deg));
|
|
12
11
|
--_sonic-unit: calc(var(--_sonic-led-size) / 8);
|
|
13
12
|
--_sonic-led-modelled: calc(100% * var(--_sonic-relief));
|
|
14
13
|
--_sonic-led-bezel: var(
|
|
@@ -45,9 +44,9 @@
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
@media (forced-colors: active) {
|
|
48
|
-
--_sonic-lit-
|
|
49
|
-
--_sonic-
|
|
50
|
-
--_sonic-
|
|
47
|
+
--_sonic-lit-ok: Mark;
|
|
48
|
+
--_sonic-lit-warning: Highlight;
|
|
49
|
+
--_sonic-lit-danger: Mark;
|
|
51
50
|
|
|
52
51
|
forced-color-adjust: none;
|
|
53
52
|
background: none;
|
|
@@ -59,21 +58,21 @@
|
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
.sonic-led[data-sonic-lit='
|
|
63
|
-
--_sonic-lit: var(--_sonic-lit-
|
|
61
|
+
.sonic-led[data-sonic-lit='ok'] {
|
|
62
|
+
--_sonic-lit: var(--_sonic-lit-ok);
|
|
64
63
|
}
|
|
65
64
|
|
|
66
|
-
.sonic-led[data-sonic-lit='
|
|
67
|
-
--_sonic-lit: var(--_sonic-
|
|
65
|
+
.sonic-led[data-sonic-lit='warning'] {
|
|
66
|
+
--_sonic-lit: var(--_sonic-lit-warning);
|
|
68
67
|
}
|
|
69
68
|
|
|
70
|
-
.sonic-led[data-sonic-lit='
|
|
71
|
-
--_sonic-lit: var(--_sonic-
|
|
69
|
+
.sonic-led[data-sonic-lit='danger'] {
|
|
70
|
+
--_sonic-lit: var(--_sonic-lit-danger);
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
/* Before the lit rule, which a latched button's LED also matches */
|
|
75
74
|
.sonic-led:is(
|
|
76
|
-
[data-sonic-lit='
|
|
75
|
+
[data-sonic-lit='idle'],
|
|
77
76
|
:where(:is([armed], [busy]) > .sonic-button:not(:disabled, [aria-disabled='true'])) *
|
|
78
77
|
) {
|
|
79
78
|
&::after {
|
|
@@ -91,11 +90,15 @@
|
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
.sonic-led:is(
|
|
94
|
-
[data-sonic-lit]:where(:not([data-sonic-lit='
|
|
93
|
+
[data-sonic-lit]:where(:not([data-sonic-lit='idle'])),
|
|
95
94
|
:where(
|
|
96
95
|
.sonic-button[aria-pressed='true'],
|
|
97
96
|
[momentary]:state(pressed) > .sonic-button,
|
|
98
|
-
.sonic-segmented-option[aria-checked='true']
|
|
97
|
+
.sonic-segmented-option[aria-checked='true'],
|
|
98
|
+
.sonic-toggle:has(
|
|
99
|
+
> [role='switch'][aria-checked='true'],
|
|
100
|
+
> [aria-checked='true'] [data-sonic-lit]
|
|
101
|
+
)
|
|
99
102
|
)
|
|
100
103
|
*,
|
|
101
104
|
:where(:state(at-origin):not(:disabled) > .sonic-led)
|
package/dist/styles/material.css
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
.sonic-button,
|
|
32
32
|
.sonic-led,
|
|
33
33
|
.sonic-switch,
|
|
34
|
+
.sonic-toggle,
|
|
34
35
|
.sonic-meter,
|
|
35
36
|
.sonic-number,
|
|
36
37
|
.sonic-panel,
|
|
@@ -75,6 +76,7 @@
|
|
|
75
76
|
.sonic-segmented-option,
|
|
76
77
|
.sonic-slider,
|
|
77
78
|
.sonic-spectrum,
|
|
79
|
+
.sonic-toggle,
|
|
78
80
|
.sonic-waveform,
|
|
79
81
|
.sonic-wavestrip,
|
|
80
82
|
.sonic-xy
|
|
@@ -111,15 +113,17 @@
|
|
|
111
113
|
--_sonic-lens: var(--_sonic-lens-glint), var(--_sonic-lens-glass);
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
:is(.sonic-led, .sonic-meter, .sonic-spectrum) {
|
|
115
|
-
--_sonic-
|
|
116
|
-
--_sonic-
|
|
116
|
+
:is(.sonic-led, .sonic-meter, .sonic-spectrum, .sonic-toggle) {
|
|
117
|
+
--_sonic-lit-ok: var(--sonic-lit-ok, oklch(79% 0.2 150deg));
|
|
118
|
+
--_sonic-lit-warning: var(--sonic-lit-warning, oklch(70.5% 0.187 48deg));
|
|
119
|
+
--_sonic-lit-danger: var(--sonic-lit-danger, oklch(63.7% 0.208 25deg));
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
:is(
|
|
120
123
|
.sonic-dial,
|
|
121
124
|
.sonic-button,
|
|
122
125
|
.sonic-switch,
|
|
126
|
+
.sonic-toggle,
|
|
123
127
|
.sonic-number,
|
|
124
128
|
.sonic-segmented-option,
|
|
125
129
|
.sonic-slider,
|
|
@@ -359,6 +363,7 @@
|
|
|
359
363
|
.sonic-screen,
|
|
360
364
|
.sonic-segmented,
|
|
361
365
|
.sonic-spectrum,
|
|
366
|
+
.sonic-toggle,
|
|
362
367
|
.sonic-waveform,
|
|
363
368
|
.sonic-wavestrip,
|
|
364
369
|
.sonic-xy
|
|
@@ -374,7 +379,7 @@
|
|
|
374
379
|
rgb(255 255 255 / calc(0.06 * var(--_sonic-relief)));
|
|
375
380
|
}
|
|
376
381
|
|
|
377
|
-
:is(.sonic-button, .sonic-segmented) {
|
|
382
|
+
:is(.sonic-button, .sonic-segmented, .sonic-toggle) {
|
|
378
383
|
--_sonic-well-floor: var(
|
|
379
384
|
--sonic-well,
|
|
380
385
|
linear-gradient(
|
|
@@ -402,7 +407,7 @@
|
|
|
402
407
|
}
|
|
403
408
|
|
|
404
409
|
/* On the option rather than the strip, where forced colours clear the drop shade */
|
|
405
|
-
:is(.sonic-button, .sonic-segmented-option) {
|
|
410
|
+
:is(.sonic-button, .sonic-segmented-option, .sonic-toggle) {
|
|
406
411
|
--_sonic-press-drop: calc(0.5 * var(--_sonic-cast-x)) calc(0.5 * var(--_sonic-cast-y))
|
|
407
412
|
var(--_sonic-unit) var(--_sonic-drop-shade);
|
|
408
413
|
--_sonic-keycap-shift: calc(var(--_sonic-keycap-depth) / -2);
|
|
@@ -419,9 +424,23 @@
|
|
|
419
424
|
0 0 var(--_sonic-unit)
|
|
420
425
|
color-mix(in oklab, var(--_sonic-lit) calc(24% * var(--_sonic-relief)), transparent)
|
|
421
426
|
);
|
|
427
|
+
--_sonic-legend-lit-from: var(--_sonic-lit);
|
|
428
|
+
--_sonic-legend-lit: color-mix(
|
|
429
|
+
in oklab,
|
|
430
|
+
var(--sonic-cap) 0%,
|
|
431
|
+
oklch(
|
|
432
|
+
from
|
|
433
|
+
color-mix(
|
|
434
|
+
in oklab,
|
|
435
|
+
oklch(from var(--_sonic-ink) l c h / clamp(0, (0.6 - l) * 1000, 1)),
|
|
436
|
+
oklch(from var(--_sonic-legend-lit-from) l c h / 0.1%)
|
|
437
|
+
)
|
|
438
|
+
l c h / 100%
|
|
439
|
+
)
|
|
440
|
+
);
|
|
422
441
|
}
|
|
423
442
|
|
|
424
|
-
:is(.sonic-button, .sonic-segmented-option, .sonic-switch-position) {
|
|
443
|
+
:is(.sonic-button, .sonic-segmented-option, .sonic-switch-position, .sonic-toggle-position) {
|
|
425
444
|
--_sonic-target-outset: min(0px, calc((100% - var(--sonic-target-size, 100%)) / 2));
|
|
426
445
|
|
|
427
446
|
&::after {
|
|
@@ -432,7 +451,7 @@
|
|
|
432
451
|
}
|
|
433
452
|
|
|
434
453
|
/* Each sheet maps its own depth, corner, bevel and face corner onto the `keycap` tokens */
|
|
435
|
-
:is(.sonic-button-cap, .sonic-segmented-cap) {
|
|
454
|
+
:is(.sonic-button-cap, .sonic-segmented-cap, .sonic-toggle-cap) {
|
|
436
455
|
display: grid;
|
|
437
456
|
place-items: center;
|
|
438
457
|
background: var(--_sonic-skirt);
|
|
@@ -679,7 +698,8 @@
|
|
|
679
698
|
.sonic-number,
|
|
680
699
|
.sonic-ring,
|
|
681
700
|
.sonic-segmented-option,
|
|
682
|
-
.sonic-slider
|
|
701
|
+
.sonic-slider,
|
|
702
|
+
.sonic-toggle
|
|
683
703
|
) {
|
|
684
704
|
--_sonic-lit: Highlight;
|
|
685
705
|
--_sonic-unlit: GrayText;
|
|
@@ -692,6 +712,7 @@
|
|
|
692
712
|
.sonic-number,
|
|
693
713
|
.sonic-segmented-option,
|
|
694
714
|
.sonic-slider,
|
|
715
|
+
.sonic-toggle,
|
|
695
716
|
.sonic-waveform,
|
|
696
717
|
.sonic-wavestrip,
|
|
697
718
|
.sonic-xy
|
|
@@ -737,7 +758,13 @@
|
|
|
737
758
|
}
|
|
738
759
|
}
|
|
739
760
|
|
|
740
|
-
:is(
|
|
761
|
+
:is(
|
|
762
|
+
.sonic-dial-cap,
|
|
763
|
+
.sonic-button-cap,
|
|
764
|
+
.sonic-segmented-cap,
|
|
765
|
+
.sonic-slider-cap,
|
|
766
|
+
.sonic-toggle-cap
|
|
767
|
+
) {
|
|
741
768
|
color: var(--_sonic-ink);
|
|
742
769
|
forced-color-adjust: none;
|
|
743
770
|
}
|
package/dist/styles/meter.css
CHANGED
|
@@ -290,8 +290,9 @@
|
|
|
290
290
|
background: linear-gradient(
|
|
291
291
|
var(--_sonic-meter-toward),
|
|
292
292
|
color-mix(in oklab, var(--_sonic-lit) 12%, var(--_sonic-unlit)) 0 var(--_sonic-meter-hot-at),
|
|
293
|
-
color-mix(in oklab, var(--_sonic-
|
|
294
|
-
|
|
293
|
+
color-mix(in oklab, var(--_sonic-lit-warning) 12%, var(--_sonic-unlit)) 0
|
|
294
|
+
var(--_sonic-meter-clip-at),
|
|
295
|
+
color-mix(in oklab, var(--_sonic-lit-danger) 12%, var(--_sonic-unlit)) 0
|
|
295
296
|
);
|
|
296
297
|
}
|
|
297
298
|
|
|
@@ -318,8 +319,8 @@
|
|
|
318
319
|
background: linear-gradient(
|
|
319
320
|
var(--_sonic-meter-toward),
|
|
320
321
|
var(--_sonic-lit) 0 var(--_sonic-meter-hot-at),
|
|
321
|
-
var(--_sonic-
|
|
322
|
-
var(--_sonic-
|
|
322
|
+
var(--_sonic-lit-warning) 0 var(--_sonic-meter-clip-at),
|
|
323
|
+
var(--_sonic-lit-danger) 0
|
|
323
324
|
);
|
|
324
325
|
mask:
|
|
325
326
|
linear-gradient(
|
|
@@ -347,8 +348,8 @@
|
|
|
347
348
|
content: '';
|
|
348
349
|
background: radial-gradient(
|
|
349
350
|
closest-side,
|
|
350
|
-
color-mix(in oklab, var(--_sonic-
|
|
351
|
-
var(--_sonic-
|
|
351
|
+
color-mix(in oklab, var(--_sonic-lit-danger) 55%, #fff),
|
|
352
|
+
var(--_sonic-lit-danger)
|
|
352
353
|
);
|
|
353
354
|
border-radius: inherit;
|
|
354
355
|
opacity: var(--_sonic-meter-clipped, 0);
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
transition: color 120ms ease-out;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
.sonic-segmented-option:where([data-sonic-pressed]
|
|
81
|
+
.sonic-segmented-option:where([data-sonic-pressed]):not(:disabled),
|
|
82
82
|
.sonic-segmented-option[aria-checked='true'] {
|
|
83
83
|
--_sonic-keycap-shift: calc(var(--_sonic-keycap-depth) / 2);
|
|
84
84
|
--_sonic-keycap-scale: var(--_sonic-segmented-press-scale);
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
.sonic-segmented-option[aria-checked='true'] {
|
|
89
89
|
--_sonic-keycap-glow: var(--_sonic-keycap-lit-glow);
|
|
90
90
|
|
|
91
|
-
color: var(--_sonic-lit);
|
|
91
|
+
color: var(--_sonic-legend-lit, var(--_sonic-lit));
|
|
92
92
|
background: var(--_sonic-segmented-well-lit);
|
|
93
93
|
box-shadow: var(--_sonic-well);
|
|
94
94
|
}
|
|
@@ -115,12 +115,16 @@
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
.sonic-segmented-option[aria-checked='true']:not(:disabled):focus-visible {
|
|
118
|
-
|
|
118
|
+
--_sonic-legend-lit-from: var(--sonic-lit-hover, var(--_sonic-lit));
|
|
119
|
+
|
|
120
|
+
color: var(--_sonic-legend-lit, var(--_sonic-legend-lit-from));
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
@media (hover: hover) {
|
|
122
124
|
.sonic-segmented-option[aria-checked='true']:not(:disabled):hover {
|
|
123
|
-
|
|
125
|
+
--_sonic-legend-lit-from: var(--sonic-lit-hover, var(--_sonic-lit));
|
|
126
|
+
|
|
127
|
+
color: var(--_sonic-legend-lit, var(--_sonic-legend-lit-from));
|
|
124
128
|
}
|
|
125
129
|
}
|
|
126
130
|
|
package/dist/styles/spectrum.css
CHANGED
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
.sonic-spectrum {
|
|
68
68
|
--_sonic-unit: calc(var(--_sonic-spectrum-size) / 48);
|
|
69
69
|
--_sonic-spectrum-lit: var(--_sonic-lit);
|
|
70
|
-
--_sonic-spectrum-hot: var(--_sonic-
|
|
71
|
-
--_sonic-spectrum-clip: var(--_sonic-
|
|
70
|
+
--_sonic-spectrum-hot: var(--_sonic-lit-warning);
|
|
71
|
+
--_sonic-spectrum-clip: var(--_sonic-lit-danger);
|
|
72
72
|
--_sonic-spectrum-grid: color-mix(in oklab, var(--_sonic-glass-text) 20%, transparent);
|
|
73
73
|
--_sonic-spectrum-hot-from: var(--sonic-spectrum-hot-from, -12);
|
|
74
74
|
--_sonic-spectrum-clip-from: var(--sonic-spectrum-clip-from, -3);
|
package/dist/styles/switch.css
CHANGED
|
@@ -127,6 +127,10 @@
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
.sonic-switch-position:disabled > .sonic-switch-label {
|
|
131
|
+
color: color-mix(in oklab, currentcolor 30%, transparent);
|
|
132
|
+
}
|
|
133
|
+
|
|
130
134
|
.sonic-switch[data-sonic-position-count] {
|
|
131
135
|
& > :is(.sonic-switch-bushing, .sonic-switch-bat) {
|
|
132
136
|
grid-area: 2 / 1 / -2 / 2;
|
|
@@ -350,7 +354,7 @@
|
|
|
350
354
|
--_sonic-focus-shadow: var(--_sonic-focus-glow);
|
|
351
355
|
}
|
|
352
356
|
|
|
353
|
-
.sonic-switch:has(> .sonic-switch-position:disabled) {
|
|
357
|
+
.sonic-switch:not(:has(> .sonic-switch-position:not(:disabled))) {
|
|
354
358
|
--_sonic-switch-disabled: color-mix(
|
|
355
359
|
in oklab,
|
|
356
360
|
var(--_sonic-ink) 30%,
|
|
@@ -371,7 +375,7 @@
|
|
|
371
375
|
--_sonic-switch-metal-shade: CanvasText;
|
|
372
376
|
}
|
|
373
377
|
|
|
374
|
-
.sonic-switch:has(> .sonic-switch-position:disabled) {
|
|
378
|
+
.sonic-switch:not(:has(> .sonic-switch-position:not(:disabled))) {
|
|
375
379
|
--_sonic-switch-metal: GrayText;
|
|
376
380
|
--_sonic-switch-metal-shade: GrayText;
|
|
377
381
|
}
|