@xsynaptic/sonic-ui 0.6.1 → 0.8.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 +4 -0
- package/dist/default/define/spectrum.js +7 -0
- package/dist/default/define.js +1 -0
- package/dist/default/elements/button.js +30 -2
- package/dist/default/elements/display-element.js +77 -0
- package/dist/default/elements/envelope.js +1 -1
- package/dist/default/elements/slider.js +67 -1
- package/dist/default/elements/spectrum.js +230 -0
- package/dist/default/elements/value-element.js +49 -11
- package/dist/default/elements/wave-element.js +59 -9
- package/dist/default/elements/waveform.js +56 -10
- package/dist/default/elements/wavestrip.js +31 -45
- package/dist/default/elements/xy.js +1 -1
- package/dist/default/index.js +2 -1
- package/dist/default/lib/canvas-surface.js +7 -4
- package/dist/default/lib/frame-timeline.js +2 -2
- package/dist/default/lib/hover-preview.js +46 -0
- package/dist/default/lib/marker-rider.js +7 -4
- package/dist/default/lib/pointer-drag.js +7 -2
- package/dist/default/lib/spectrum-columns.js +74 -0
- package/dist/default/lib/spectrum-levels.js +55 -0
- package/dist/default/lib/strip-scene.js +12 -1
- package/dist/default/lib/time-regions.js +5 -1
- package/dist/dev/define/spectrum.d.ts +2 -0
- package/dist/dev/define/spectrum.js +8 -0
- package/dist/dev/define/spectrum.js.map +1 -0
- package/dist/dev/define.d.ts +3 -1
- package/dist/dev/define.js +1 -0
- package/dist/dev/elements/button.d.ts +2 -0
- package/dist/dev/elements/button.js +30 -2
- package/dist/dev/elements/button.js.map +1 -1
- package/dist/dev/elements/display-element.d.ts +29 -0
- package/dist/dev/elements/display-element.js +78 -0
- package/dist/dev/elements/display-element.js.map +1 -0
- package/dist/dev/elements/envelope.js +1 -1
- package/dist/dev/elements/slider.d.ts +6 -0
- package/dist/dev/elements/slider.js +67 -1
- package/dist/dev/elements/slider.js.map +1 -1
- package/dist/dev/elements/spectrum.d.ts +59 -0
- package/dist/dev/elements/spectrum.js +231 -0
- package/dist/dev/elements/spectrum.js.map +1 -0
- package/dist/dev/elements/value-element.d.ts +5 -1
- package/dist/dev/elements/value-element.js +49 -11
- package/dist/dev/elements/value-element.js.map +1 -1
- package/dist/dev/elements/wave-element.d.ts +8 -2
- package/dist/dev/elements/wave-element.js +59 -9
- package/dist/dev/elements/wave-element.js.map +1 -1
- package/dist/dev/elements/waveform.d.ts +12 -4
- package/dist/dev/elements/waveform.js +56 -10
- package/dist/dev/elements/waveform.js.map +1 -1
- package/dist/dev/elements/wavestrip.d.ts +3 -0
- package/dist/dev/elements/wavestrip.js +31 -45
- package/dist/dev/elements/wavestrip.js.map +1 -1
- package/dist/dev/elements/xy.js +1 -1
- package/dist/dev/index.d.ts +4 -1
- package/dist/dev/index.js +2 -1
- package/dist/dev/lib/canvas-surface.d.ts +4 -3
- package/dist/dev/lib/canvas-surface.js +7 -4
- package/dist/dev/lib/canvas-surface.js.map +1 -1
- package/dist/dev/lib/frame-timeline.js +2 -2
- package/dist/dev/lib/frame-timeline.js.map +1 -1
- package/dist/dev/lib/hover-preview.js +47 -0
- package/dist/dev/lib/hover-preview.js.map +1 -0
- package/dist/dev/lib/marker-rider.js +7 -4
- package/dist/dev/lib/marker-rider.js.map +1 -1
- package/dist/dev/lib/pointer-drag.js +7 -2
- package/dist/dev/lib/pointer-drag.js.map +1 -1
- package/dist/dev/lib/spectrum-columns.js +75 -0
- package/dist/dev/lib/spectrum-columns.js.map +1 -0
- package/dist/dev/lib/spectrum-levels.js +56 -0
- package/dist/dev/lib/spectrum-levels.js.map +1 -0
- package/dist/dev/lib/strip-scene.js +12 -1
- package/dist/dev/lib/strip-scene.js.map +1 -1
- package/dist/dev/lib/time-regions.js +5 -1
- package/dist/dev/lib/time-regions.js.map +1 -1
- package/dist/styles/button.css +7 -1
- package/dist/styles/controls.css +1 -0
- package/dist/styles/material.css +18 -3
- package/dist/styles/meter.css +22 -18
- package/dist/styles/slider.css +42 -5
- package/dist/styles/spectrum.css +105 -0
- package/dist/styles/waveform.css +38 -16
- package/dist/styles/wavestrip.css +22 -4
- package/package.json +2 -1
package/dist/styles/material.css
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
.sonic-segmented,
|
|
34
34
|
.sonic-slider,
|
|
35
35
|
.sonic-slider-readout,
|
|
36
|
+
.sonic-spectrum,
|
|
36
37
|
.sonic-waveform,
|
|
37
38
|
.sonic-waveform-readout,
|
|
38
39
|
.sonic-wavestrip,
|
|
@@ -58,6 +59,7 @@
|
|
|
58
59
|
.sonic-ring,
|
|
59
60
|
.sonic-segmented-option,
|
|
60
61
|
.sonic-slider,
|
|
62
|
+
.sonic-spectrum,
|
|
61
63
|
.sonic-waveform,
|
|
62
64
|
.sonic-wavestrip,
|
|
63
65
|
.sonic-xy
|
|
@@ -92,6 +94,9 @@
|
|
|
92
94
|
);
|
|
93
95
|
--_sonic-lens-glass: var(--sonic-lens, color-mix(in oklab, var(--_sonic-unlit) 60%, #000));
|
|
94
96
|
--_sonic-lens: var(--_sonic-lens-glint), var(--_sonic-lens-glass);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:is(.sonic-led, .sonic-meter, .sonic-spectrum) {
|
|
95
100
|
--_sonic-hot: var(--sonic-hot, oklch(70.5% 0.187 48deg));
|
|
96
101
|
--_sonic-clip: var(--sonic-clip, oklch(63.7% 0.208 25deg));
|
|
97
102
|
}
|
|
@@ -176,6 +181,7 @@
|
|
|
176
181
|
.sonic-number,
|
|
177
182
|
.sonic-screen,
|
|
178
183
|
.sonic-slider-readout,
|
|
184
|
+
.sonic-spectrum,
|
|
179
185
|
.sonic-waveform,
|
|
180
186
|
.sonic-waveform-readout,
|
|
181
187
|
.sonic-wavestrip,
|
|
@@ -227,7 +233,15 @@
|
|
|
227
233
|
}
|
|
228
234
|
|
|
229
235
|
/* A definite cell, so percentage-sized content fills the glass; a canvas sized to its own box would feed back */
|
|
230
|
-
:is(
|
|
236
|
+
:is(
|
|
237
|
+
.sonic-envelope,
|
|
238
|
+
.sonic-number,
|
|
239
|
+
.sonic-screen,
|
|
240
|
+
.sonic-spectrum,
|
|
241
|
+
.sonic-waveform,
|
|
242
|
+
.sonic-wavestrip,
|
|
243
|
+
.sonic-xy
|
|
244
|
+
) {
|
|
231
245
|
--_sonic-glass-depth: var(--sonic-glass-depth, var(--_sonic-relief));
|
|
232
246
|
--_sonic-glass-texture: var(--sonic-glass-texture, var(--_sonic-relief));
|
|
233
247
|
--_sonic-glass-pitch: max(2px, round(2 * var(--_sonic-unit), 1px));
|
|
@@ -266,7 +280,7 @@
|
|
|
266
280
|
),
|
|
267
281
|
repeating-linear-gradient(
|
|
268
282
|
to bottom,
|
|
269
|
-
rgb(0 0 0 / calc(0.
|
|
283
|
+
rgb(0 0 0 / calc(0.025 * var(--_sonic-glass-texture))) 0
|
|
270
284
|
calc(var(--_sonic-glass-pitch) / 2),
|
|
271
285
|
transparent 0 var(--_sonic-glass-pitch)
|
|
272
286
|
);
|
|
@@ -313,6 +327,7 @@
|
|
|
313
327
|
.sonic-number,
|
|
314
328
|
.sonic-screen,
|
|
315
329
|
.sonic-segmented,
|
|
330
|
+
.sonic-spectrum,
|
|
316
331
|
.sonic-waveform,
|
|
317
332
|
.sonic-wavestrip,
|
|
318
333
|
.sonic-xy
|
|
@@ -514,7 +529,7 @@
|
|
|
514
529
|
font-size: calc(0.5 * var(--_sonic-readout-size));
|
|
515
530
|
font-variant-numeric: tabular-nums;
|
|
516
531
|
line-height: 1;
|
|
517
|
-
color: var(--_sonic-glass-text);
|
|
532
|
+
color: var(--sonic-readout-text, var(--_sonic-glass-text));
|
|
518
533
|
white-space: nowrap;
|
|
519
534
|
pointer-events: none;
|
|
520
535
|
cursor: default;
|
package/dist/styles/meter.css
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
@property --_sonic-meter-length {
|
|
8
|
-
syntax: '<length>';
|
|
8
|
+
syntax: '<length-percentage>';
|
|
9
9
|
inherits: true;
|
|
10
10
|
initial-value: 128px;
|
|
11
11
|
}
|
|
@@ -55,17 +55,12 @@
|
|
|
55
55
|
--_sonic-meter-segment-radius: calc(
|
|
56
56
|
var(--_sonic-meter-segment) * var(--_sonic-meter-segment-radius-ratio)
|
|
57
57
|
);
|
|
58
|
-
--_sonic-meter-segments: round(
|
|
59
|
-
down,
|
|
60
|
-
var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset) - var(--_sonic-meter-clip-space) +
|
|
61
|
-
var(--_sonic-meter-gap),
|
|
62
|
-
var(--_sonic-meter-pitch)
|
|
63
|
-
);
|
|
64
58
|
|
|
65
59
|
position: relative;
|
|
66
60
|
flex-shrink: 0;
|
|
67
61
|
inline-size: var(--_sonic-meter-size);
|
|
68
62
|
block-size: var(--_sonic-meter-length);
|
|
63
|
+
container-type: size;
|
|
69
64
|
background: var(--sonic-bezel, color-mix(in oklab, var(--_sonic-unlit) 55%, #000));
|
|
70
65
|
border-radius: calc(var(--_sonic-meter-size) * var(--_sonic-meter-radius-ratio));
|
|
71
66
|
|
|
@@ -91,21 +86,18 @@
|
|
|
91
86
|
}
|
|
92
87
|
|
|
93
88
|
:state(ladder) > .sonic-meter {
|
|
94
|
-
--_sonic-meter-pitch: calc(
|
|
95
|
-
(var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset)) / var(--_sonic-meter-count, 1)
|
|
96
|
-
);
|
|
97
89
|
--_sonic-meter-gap: 0px;
|
|
98
|
-
--_sonic-meter-segments: calc(var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset));
|
|
99
|
-
--_sonic-meter-ladder-radius: calc(
|
|
100
|
-
min(
|
|
101
|
-
var(--_sonic-meter-lens),
|
|
102
|
-
var(--_sonic-meter-pitch) * (1 - var(--_sonic-meter-gap-ratio))
|
|
103
|
-
) /
|
|
104
|
-
2
|
|
105
|
-
);
|
|
106
90
|
}
|
|
107
91
|
|
|
92
|
+
/* A percentage length means the parent only on the meter's own box; its parts measure the box */
|
|
108
93
|
:is(.sonic-meter-segments, .sonic-meter-bar) {
|
|
94
|
+
--_sonic-meter-length: 100cqb;
|
|
95
|
+
--_sonic-meter-segments: round(
|
|
96
|
+
down,
|
|
97
|
+
var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset) - var(--_sonic-meter-clip-space) +
|
|
98
|
+
var(--_sonic-meter-gap),
|
|
99
|
+
var(--_sonic-meter-pitch)
|
|
100
|
+
);
|
|
109
101
|
--_sonic-meter-span: calc(var(--_sonic-meter-max, 0) - var(--_sonic-meter-min, -60));
|
|
110
102
|
--_sonic-meter-hot-at: round(
|
|
111
103
|
clamp(
|
|
@@ -177,6 +169,17 @@
|
|
|
177
169
|
}
|
|
178
170
|
|
|
179
171
|
:state(ladder) > .sonic-meter > :is(.sonic-meter-segments, .sonic-meter-bar) {
|
|
172
|
+
--_sonic-meter-pitch: calc(
|
|
173
|
+
(var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset)) / var(--_sonic-meter-count, 1)
|
|
174
|
+
);
|
|
175
|
+
--_sonic-meter-segments: calc(var(--_sonic-meter-length) - 2 * var(--_sonic-meter-inset));
|
|
176
|
+
--_sonic-meter-ladder-radius: calc(
|
|
177
|
+
min(
|
|
178
|
+
var(--_sonic-meter-lens),
|
|
179
|
+
var(--_sonic-meter-pitch) * (1 - var(--_sonic-meter-gap-ratio))
|
|
180
|
+
) /
|
|
181
|
+
2
|
|
182
|
+
);
|
|
180
183
|
--_sonic-meter-hot-at: calc(var(--_sonic-meter-hot-segments, 0) * var(--_sonic-meter-pitch));
|
|
181
184
|
--_sonic-meter-clip-at: calc(var(--_sonic-meter-clip-segments, 0) * var(--_sonic-meter-pitch));
|
|
182
185
|
--_sonic-meter-segment-mask: radial-gradient(
|
|
@@ -193,6 +196,7 @@
|
|
|
193
196
|
}
|
|
194
197
|
|
|
195
198
|
[orientation='horizontal'] > .sonic-meter > :is(.sonic-meter-segments, .sonic-meter-bar) {
|
|
199
|
+
--_sonic-meter-length: 100cqi;
|
|
196
200
|
--_sonic-meter-segment-mask:
|
|
197
201
|
linear-gradient(to right, #000 var(--_sonic-meter-segment), transparent 0) 0
|
|
198
202
|
var(--_sonic-meter-segment-radius) / var(--_sonic-meter-pitch)
|
package/dist/styles/slider.css
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
initial-value: 128px;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
@property --_sonic-slider-groove-ratio {
|
|
14
|
+
syntax: '<number>';
|
|
15
|
+
inherits: true;
|
|
16
|
+
initial-value: 0.15;
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
@property --_sonic-slider-value {
|
|
14
20
|
syntax: '<number>';
|
|
15
21
|
inherits: true;
|
|
@@ -56,6 +62,7 @@
|
|
|
56
62
|
--sonic-buffered,
|
|
57
63
|
color-mix(in oklab, var(--_sonic-ink) 18%, var(--_sonic-unlit))
|
|
58
64
|
);
|
|
65
|
+
--_sonic-slider-scrub: var(--sonic-scrub, color-mix(in oklab, var(--_sonic-lit) 55%, #fff));
|
|
59
66
|
--_sonic-slider-toward: to right;
|
|
60
67
|
--_sonic-slider-across: to bottom;
|
|
61
68
|
--_sonic-slider-cursor: ew-resize;
|
|
@@ -69,9 +76,32 @@
|
|
|
69
76
|
inline-size: var(--_sonic-slider-length);
|
|
70
77
|
block-size: var(--_sonic-slider-size);
|
|
71
78
|
container-type: size;
|
|
72
|
-
touch-action: pan-y;
|
|
79
|
+
touch-action: var(--sonic-touch-action, pan-y);
|
|
73
80
|
cursor: var(--_sonic-slider-cursor);
|
|
74
81
|
user-select: none;
|
|
82
|
+
transition: --_sonic-slider-groove-ratio 120ms ease-out;
|
|
83
|
+
|
|
84
|
+
@media (prefers-reduced-motion: reduce) {
|
|
85
|
+
transition: none;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:where(:not(:disabled)) > .sonic-slider:focus-visible,
|
|
90
|
+
:state(dragging) > .sonic-slider {
|
|
91
|
+
--_sonic-slider-groove-ratio: var(
|
|
92
|
+
--sonic-slider-groove-hover-ratio,
|
|
93
|
+
var(--sonic-slider-groove-ratio, 0.15)
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@media (hover: hover) {
|
|
98
|
+
/* fallow-ignore-next-line code-duplication -- `:hover` and `:focus-visible` split by `(hover: hover)` */
|
|
99
|
+
:where(:not(:disabled)) > .sonic-slider:hover {
|
|
100
|
+
--_sonic-slider-groove-ratio: var(
|
|
101
|
+
--sonic-slider-groove-hover-ratio,
|
|
102
|
+
var(--sonic-slider-groove-ratio, 0.15)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
75
105
|
}
|
|
76
106
|
|
|
77
107
|
[orientation='vertical'] > .sonic-slider {
|
|
@@ -82,7 +112,7 @@
|
|
|
82
112
|
|
|
83
113
|
inline-size: var(--_sonic-slider-size);
|
|
84
114
|
block-size: var(--_sonic-slider-length);
|
|
85
|
-
touch-action: pan-x;
|
|
115
|
+
touch-action: var(--sonic-touch-action, pan-x);
|
|
86
116
|
}
|
|
87
117
|
|
|
88
118
|
:state(dragging) > .sonic-slider {
|
|
@@ -225,14 +255,16 @@
|
|
|
225
255
|
}
|
|
226
256
|
|
|
227
257
|
.sonic-slider-groove {
|
|
228
|
-
--_sonic-slider-lit-
|
|
229
|
-
--_sonic-slider-lit-
|
|
258
|
+
--_sonic-slider-lit-to: var(--_sonic-slider-played, var(--_sonic-slider-value, 0));
|
|
259
|
+
--_sonic-slider-lit-low: min(var(--_sonic-slider-origin, 0), var(--_sonic-slider-lit-to));
|
|
260
|
+
--_sonic-slider-lit-high: max(var(--_sonic-slider-origin, 0), var(--_sonic-slider-lit-to));
|
|
230
261
|
|
|
231
262
|
position: absolute;
|
|
232
263
|
inset: calc(50% + var(--_sonic-slider-scale-band) / 2 - var(--_sonic-slider-groove) / 2)
|
|
233
264
|
calc((var(--_sonic-slider-cap) - var(--_sonic-slider-groove)) / 2)
|
|
234
265
|
calc(50% - var(--_sonic-slider-scale-band) / 2 - var(--_sonic-slider-groove) / 2);
|
|
235
266
|
background:
|
|
267
|
+
var(--_sonic-slider-scrub-region, none),
|
|
236
268
|
linear-gradient(
|
|
237
269
|
var(--_sonic-slider-toward),
|
|
238
270
|
transparent
|
|
@@ -430,7 +462,11 @@
|
|
|
430
462
|
|
|
431
463
|
/* Bare `block-start` spans the viewport; `translate` belongs to the open transition */
|
|
432
464
|
:not([orientation='vertical']) > .sonic-slider > .sonic-slider-readout {
|
|
433
|
-
--_sonic-slider-readout-at: calc(
|
|
465
|
+
--_sonic-slider-readout-at: calc(
|
|
466
|
+
var(--_sonic-slider-cap) / 2 +
|
|
467
|
+
var(--_sonic-slider-readout-value, var(--_sonic-slider-value, 0)) *
|
|
468
|
+
var(--_sonic-slider-travel)
|
|
469
|
+
);
|
|
434
470
|
|
|
435
471
|
inset-inline: var(--_sonic-slider-readout-at) calc(100cqi - var(--_sonic-slider-readout-at));
|
|
436
472
|
justify-self: center;
|
|
@@ -454,6 +490,7 @@
|
|
|
454
490
|
|
|
455
491
|
.sonic-slider {
|
|
456
492
|
--_sonic-slider-buffered: color-mix(in srgb, CanvasText 50%, GrayText);
|
|
493
|
+
--_sonic-slider-scrub: CanvasText;
|
|
457
494
|
}
|
|
458
495
|
|
|
459
496
|
.sonic-slider-groove {
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
@property --_sonic-spectrum-size {
|
|
2
|
+
syntax: '<length>';
|
|
3
|
+
inherits: true;
|
|
4
|
+
initial-value: 96px;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@property --_sonic-spectrum-length {
|
|
8
|
+
syntax: '<length-percentage>';
|
|
9
|
+
inherits: true;
|
|
10
|
+
initial-value: 320px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@property --_sonic-spectrum-lit {
|
|
14
|
+
syntax: '<color>';
|
|
15
|
+
inherits: true;
|
|
16
|
+
initial-value: rgb(245 158 10);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@property --_sonic-spectrum-hot {
|
|
20
|
+
syntax: '<color>';
|
|
21
|
+
inherits: true;
|
|
22
|
+
initial-value: rgb(250 115 20);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@property --_sonic-spectrum-clip {
|
|
26
|
+
syntax: '<color>';
|
|
27
|
+
inherits: true;
|
|
28
|
+
initial-value: rgb(240 70 70);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@property --_sonic-spectrum-grid {
|
|
32
|
+
syntax: '<color>';
|
|
33
|
+
inherits: true;
|
|
34
|
+
initial-value: rgb(96 96 104);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@property --_sonic-spectrum-hot-from {
|
|
38
|
+
syntax: '<number>';
|
|
39
|
+
inherits: true;
|
|
40
|
+
initial-value: -12;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@property --_sonic-spectrum-clip-from {
|
|
44
|
+
syntax: '<number>';
|
|
45
|
+
inherits: true;
|
|
46
|
+
initial-value: -3;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@layer sonic {
|
|
50
|
+
:is(sonic-spectrum, .sonic-spectrum) {
|
|
51
|
+
--_sonic-spectrum-size: var(--sonic-spectrum-size, 6rem);
|
|
52
|
+
--_sonic-spectrum-length: var(--sonic-spectrum-length, 20rem);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:has(> .sonic-spectrum):not([hidden]) {
|
|
56
|
+
display: contents;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
sonic-spectrum:not(:defined, [hidden]) {
|
|
60
|
+
display: block;
|
|
61
|
+
visibility: hidden;
|
|
62
|
+
flex-shrink: 0;
|
|
63
|
+
inline-size: var(--_sonic-spectrum-length);
|
|
64
|
+
block-size: var(--_sonic-spectrum-size);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.sonic-spectrum {
|
|
68
|
+
--_sonic-unit: calc(var(--_sonic-spectrum-size) / 48);
|
|
69
|
+
--_sonic-spectrum-lit: var(--_sonic-lit);
|
|
70
|
+
--_sonic-spectrum-hot: var(--_sonic-hot);
|
|
71
|
+
--_sonic-spectrum-clip: var(--_sonic-clip);
|
|
72
|
+
--_sonic-spectrum-grid: color-mix(in oklab, var(--_sonic-glass-text) 20%, transparent);
|
|
73
|
+
--_sonic-spectrum-hot-from: var(--sonic-spectrum-hot-from, -12);
|
|
74
|
+
--_sonic-spectrum-clip-from: var(--sonic-spectrum-clip-from, -3);
|
|
75
|
+
|
|
76
|
+
inline-size: var(--_sonic-spectrum-length);
|
|
77
|
+
block-size: var(--_sonic-spectrum-size);
|
|
78
|
+
padding: calc(var(--_sonic-spectrum-size) * var(--sonic-spectrum-inset-ratio, 0.06));
|
|
79
|
+
|
|
80
|
+
/* The canvas's backing size would otherwise feed an intrinsically sized parent */
|
|
81
|
+
contain: size;
|
|
82
|
+
|
|
83
|
+
--_sonic-glass-radius: calc(
|
|
84
|
+
var(--_sonic-spectrum-size) * var(--sonic-spectrum-radius-ratio, 0.08)
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
border-radius: var(--_sonic-glass-radius);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.sonic-spectrum-canvas {
|
|
91
|
+
display: block;
|
|
92
|
+
inline-size: 100%;
|
|
93
|
+
block-size: 100%;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Opaque, since a system highlight carries alpha that would blend the bars into the glass */
|
|
97
|
+
@media (forced-colors: active) {
|
|
98
|
+
.sonic-spectrum {
|
|
99
|
+
--_sonic-spectrum-lit: rgb(from CanvasText r g b / 100%);
|
|
100
|
+
--_sonic-spectrum-hot: rgb(from Highlight r g b / 100%);
|
|
101
|
+
--_sonic-spectrum-clip: rgb(from Highlight r g b / 100%);
|
|
102
|
+
--_sonic-spectrum-grid: rgb(from GrayText r g b / 100%);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
package/dist/styles/waveform.css
CHANGED
|
@@ -34,12 +34,24 @@
|
|
|
34
34
|
initial-value: rgb(96 96 104);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
@property --_sonic-waveform-
|
|
37
|
+
@property --_sonic-waveform-ends {
|
|
38
38
|
syntax: '<color>';
|
|
39
39
|
inherits: true;
|
|
40
40
|
initial-value: rgb(96 96 104);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
@property --_sonic-waveform-placeholder {
|
|
44
|
+
syntax: '<color>';
|
|
45
|
+
inherits: true;
|
|
46
|
+
initial-value: rgb(96 96 104);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@property --_sonic-waveform-label-fade {
|
|
50
|
+
syntax: '<number>';
|
|
51
|
+
inherits: true;
|
|
52
|
+
initial-value: 0.25;
|
|
53
|
+
}
|
|
54
|
+
|
|
43
55
|
@property --_sonic-waveform-marker {
|
|
44
56
|
syntax: '<color>';
|
|
45
57
|
inherits: true;
|
|
@@ -69,18 +81,21 @@
|
|
|
69
81
|
var(--_sonic-waveform-size) * var(--sonic-waveform-inset-ratio, 0.06)
|
|
70
82
|
);
|
|
71
83
|
--_sonic-unit: calc(var(--_sonic-waveform-size) / 48);
|
|
72
|
-
--_sonic-waveform-line: max(1px, var(--_sonic-unit));
|
|
84
|
+
--_sonic-waveform-line: var(--sonic-waveform-playhead-width, max(1px, var(--_sonic-unit)));
|
|
73
85
|
--_sonic-waveform-lit: var(--_sonic-lit);
|
|
74
86
|
--_sonic-waveform-wave: var(--_sonic-waveform-lit);
|
|
75
87
|
--_sonic-waveform-wave-edge: var(
|
|
76
88
|
--sonic-waveform-edge,
|
|
77
|
-
color-mix(in oklab, var(--_sonic-waveform-lit)
|
|
89
|
+
color-mix(in oklab, var(--_sonic-waveform-lit) calc(100% - 55% * var(--_sonic-relief)), #000)
|
|
78
90
|
);
|
|
79
|
-
--_sonic-waveform-grid: var(--_sonic-etch);
|
|
80
|
-
--_sonic-waveform-
|
|
91
|
+
--_sonic-waveform-grid: var(--sonic-waveform-grid, var(--_sonic-etch));
|
|
92
|
+
--_sonic-waveform-ends: var(--sonic-waveform-ends, var(--_sonic-etch));
|
|
93
|
+
--_sonic-waveform-placeholder: var(--sonic-waveform-placeholder, var(--_sonic-etch));
|
|
81
94
|
--_sonic-waveform-marker: var(--sonic-marker, var(--_sonic-ink));
|
|
95
|
+
--_sonic-waveform-label: var(--sonic-waveform-label, var(--_sonic-waveform-marker));
|
|
96
|
+
--_sonic-waveform-label-fade: var(--sonic-waveform-label-fade-ratio, 0.25);
|
|
82
97
|
--_sonic-waveform-label-inset: calc(
|
|
83
|
-
var(--_sonic-waveform-size) * var(--sonic-waveform-label-inset-ratio, 0.
|
|
98
|
+
var(--_sonic-waveform-size) * var(--sonic-waveform-label-inset-ratio, 0.04)
|
|
84
99
|
);
|
|
85
100
|
|
|
86
101
|
inline-size: var(--_sonic-waveform-length);
|
|
@@ -90,7 +105,7 @@
|
|
|
90
105
|
|
|
91
106
|
/* A label riding in from the far side would otherwise widen the page */
|
|
92
107
|
overflow: hidden;
|
|
93
|
-
touch-action: pan-y;
|
|
108
|
+
touch-action: var(--sonic-touch-action, pan-y);
|
|
94
109
|
cursor: grab;
|
|
95
110
|
|
|
96
111
|
--_sonic-glass-radius: calc(
|
|
@@ -101,6 +116,11 @@
|
|
|
101
116
|
box-shadow: var(--_sonic-focus-shadow);
|
|
102
117
|
}
|
|
103
118
|
|
|
119
|
+
[fill] > .sonic-waveform,
|
|
120
|
+
sonic-waveform[fill]:not(:defined, [hidden]) {
|
|
121
|
+
block-size: 100%;
|
|
122
|
+
}
|
|
123
|
+
|
|
104
124
|
:state(dragging) > .sonic-waveform {
|
|
105
125
|
cursor: grabbing;
|
|
106
126
|
}
|
|
@@ -131,31 +151,32 @@
|
|
|
131
151
|
}
|
|
132
152
|
|
|
133
153
|
.sonic-waveform-playhead {
|
|
134
|
-
background: var(--_sonic-ink);
|
|
154
|
+
background: var(--sonic-waveform-playhead, var(--_sonic-ink));
|
|
135
155
|
}
|
|
136
156
|
|
|
137
157
|
.sonic-waveform-ghost {
|
|
138
|
-
background: var(--_sonic-etch);
|
|
158
|
+
background: var(--sonic-waveform-ghost, var(--_sonic-etch));
|
|
139
159
|
}
|
|
140
160
|
|
|
141
161
|
.sonic-waveform-label {
|
|
142
162
|
position: absolute;
|
|
143
163
|
inset-block-end: calc(var(--_sonic-waveform-inset) + var(--_sonic-waveform-label-inset));
|
|
144
164
|
inset-inline-start: var(--_sonic-waveform-inset);
|
|
165
|
+
padding: 0.2em 0.35em;
|
|
166
|
+
margin: -0.2em -0.35em;
|
|
167
|
+
font-family: var(--sonic-waveform-label-font, inherit);
|
|
145
168
|
font-size: calc(var(--_sonic-waveform-size) * var(--sonic-waveform-label-font-ratio, 0.13));
|
|
146
169
|
line-height: 1;
|
|
147
|
-
color: var(--_sonic-marker, var(--_sonic-waveform-
|
|
170
|
+
color: var(--_sonic-marker, var(--_sonic-waveform-label));
|
|
148
171
|
white-space: nowrap;
|
|
149
172
|
text-shadow: var(--sonic-waveform-label-shadow, none);
|
|
150
173
|
pointer-events: none;
|
|
174
|
+
background: var(--sonic-waveform-label-scrim, none);
|
|
175
|
+
border-radius: 0.2em;
|
|
151
176
|
}
|
|
152
177
|
|
|
153
178
|
.sonic-waveform-label[data-sonic-dimmed] {
|
|
154
|
-
color: color-mix(
|
|
155
|
-
in oklab,
|
|
156
|
-
var(--_sonic-marker, var(--_sonic-waveform-marker)) 50%,
|
|
157
|
-
transparent
|
|
158
|
-
);
|
|
179
|
+
color: color-mix(in oklab, var(--_sonic-marker, var(--_sonic-waveform-label)) 50%, transparent);
|
|
159
180
|
}
|
|
160
181
|
|
|
161
182
|
/* Opaque, since a system highlight carries alpha that would blend the wave into the glass */
|
|
@@ -164,7 +185,8 @@
|
|
|
164
185
|
--_sonic-waveform-wave: rgb(from CanvasText r g b / 100%);
|
|
165
186
|
--_sonic-waveform-wave-edge: rgb(from CanvasText r g b / 100%);
|
|
166
187
|
--_sonic-waveform-grid: rgb(from GrayText r g b / 100%);
|
|
167
|
-
--_sonic-waveform-
|
|
188
|
+
--_sonic-waveform-ends: rgb(from GrayText r g b / 100%);
|
|
189
|
+
--_sonic-waveform-placeholder: rgb(from GrayText r g b / 100%);
|
|
168
190
|
--_sonic-waveform-marker: rgb(from CanvasText r g b / 100%);
|
|
169
191
|
}
|
|
170
192
|
|
|
@@ -28,6 +28,12 @@
|
|
|
28
28
|
initial-value: 0.5;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
@property --_sonic-wavestrip-groove-ratio {
|
|
32
|
+
syntax: '<number>';
|
|
33
|
+
inherits: true;
|
|
34
|
+
initial-value: 0.15;
|
|
35
|
+
}
|
|
36
|
+
|
|
31
37
|
@property --_sonic-wavestrip-wave {
|
|
32
38
|
syntax: '<color>';
|
|
33
39
|
inherits: true;
|
|
@@ -93,6 +99,7 @@
|
|
|
93
99
|
--_sonic-wavestrip-bar-pitch: var(--sonic-wavestrip-bar-pitch, 3px);
|
|
94
100
|
--_sonic-wavestrip-bar-gap-ratio: var(--sonic-wavestrip-bar-gap-ratio, 0.33);
|
|
95
101
|
--_sonic-wavestrip-bar-radius-ratio: var(--sonic-wavestrip-bar-radius-ratio, 0.5);
|
|
102
|
+
--_sonic-wavestrip-groove-ratio: var(--sonic-wavestrip-groove-ratio, 0.15);
|
|
96
103
|
--_sonic-wavestrip-marker-ratio: var(--sonic-wavestrip-marker-ratio, 0.065);
|
|
97
104
|
--_sonic-wavestrip-inset: calc(
|
|
98
105
|
var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-inset-ratio, 0.1)
|
|
@@ -118,7 +125,7 @@
|
|
|
118
125
|
block-size: var(--_sonic-wavestrip-size);
|
|
119
126
|
padding: var(--_sonic-wavestrip-inset);
|
|
120
127
|
container-type: size;
|
|
121
|
-
touch-action: pan-y;
|
|
128
|
+
touch-action: var(--sonic-touch-action, pan-y);
|
|
122
129
|
cursor: ew-resize;
|
|
123
130
|
|
|
124
131
|
--_sonic-glass-radius: calc(
|
|
@@ -129,6 +136,11 @@
|
|
|
129
136
|
box-shadow: var(--_sonic-focus-shadow);
|
|
130
137
|
}
|
|
131
138
|
|
|
139
|
+
[fill] > .sonic-wavestrip,
|
|
140
|
+
sonic-wavestrip[fill]:not(:defined, [hidden]) {
|
|
141
|
+
block-size: 100%;
|
|
142
|
+
}
|
|
143
|
+
|
|
132
144
|
[dimmed] > .sonic-wavestrip {
|
|
133
145
|
--_sonic-wavestrip-lit: var(--_sonic-lit-off);
|
|
134
146
|
}
|
|
@@ -191,10 +203,16 @@
|
|
|
191
203
|
var(--_sonic-wavestrip-inset) + var(--_sonic-wavestrip-readout-at, 0) * 100cqi
|
|
192
204
|
);
|
|
193
205
|
|
|
194
|
-
inset-inline:
|
|
195
|
-
|
|
196
|
-
justify-self: center;
|
|
206
|
+
inset-inline: 0;
|
|
207
|
+
justify-self: start;
|
|
197
208
|
position-area: block-start center;
|
|
209
|
+
transform: translateX(
|
|
210
|
+
clamp(
|
|
211
|
+
0px,
|
|
212
|
+
var(--_sonic-wavestrip-readout-inset) - 50%,
|
|
213
|
+
100cqi + 2 * var(--_sonic-wavestrip-inset) - 100%
|
|
214
|
+
)
|
|
215
|
+
);
|
|
198
216
|
}
|
|
199
217
|
|
|
200
218
|
/* Opaque, since a system highlight carries alpha that would blend the bars into the glass */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xsynaptic/sonic-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Native custom elements for audio interfaces, skinned with CSS custom properties",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"custom-elements",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"./screen.css": "./dist/styles/screen.css",
|
|
67
67
|
"./segmented.css": "./dist/styles/segmented.css",
|
|
68
68
|
"./slider.css": "./dist/styles/slider.css",
|
|
69
|
+
"./spectrum.css": "./dist/styles/spectrum.css",
|
|
69
70
|
"./switch.css": "./dist/styles/switch.css",
|
|
70
71
|
"./waveform.css": "./dist/styles/waveform.css",
|
|
71
72
|
"./wavestrip.css": "./dist/styles/wavestrip.css",
|