@xsynaptic/sonic-ui 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/default/elements/button.js +3 -2
  2. package/dist/default/elements/dial.js +5 -1
  3. package/dist/default/elements/envelope.js +14 -2
  4. package/dist/default/elements/meter.js +1 -1
  5. package/dist/default/elements/radio-group.js +3 -2
  6. package/dist/default/elements/readout-claim.js +0 -29
  7. package/dist/default/elements/scale.js +43 -0
  8. package/dist/default/elements/slider.js +16 -3
  9. package/dist/default/elements/sonic-element.js +2 -67
  10. package/dist/default/elements/switch.js +1 -1
  11. package/dist/default/elements/value-element.js +35 -83
  12. package/dist/default/elements/wavestrip.js +42 -4
  13. package/dist/default/elements/xy.js +2 -1
  14. package/dist/default/lib/mirror-children.js +64 -0
  15. package/dist/default/lib/owned-control.js +10 -0
  16. package/dist/default/lib/time-regions.js +4 -1
  17. package/dist/dev/elements/button.js +3 -2
  18. package/dist/dev/elements/button.js.map +1 -1
  19. package/dist/dev/elements/dial.js +5 -1
  20. package/dist/dev/elements/dial.js.map +1 -1
  21. package/dist/dev/elements/envelope.js +14 -2
  22. package/dist/dev/elements/envelope.js.map +1 -1
  23. package/dist/dev/elements/meter.js +1 -1
  24. package/dist/dev/elements/radio-group.js +3 -2
  25. package/dist/dev/elements/radio-group.js.map +1 -1
  26. package/dist/dev/elements/readout-claim.js +0 -29
  27. package/dist/dev/elements/readout-claim.js.map +1 -1
  28. package/dist/dev/elements/scale.js +44 -0
  29. package/dist/dev/elements/scale.js.map +1 -0
  30. package/dist/dev/elements/slider.d.ts +3 -0
  31. package/dist/dev/elements/slider.js +16 -3
  32. package/dist/dev/elements/slider.js.map +1 -1
  33. package/dist/dev/elements/sonic-element.d.ts +0 -8
  34. package/dist/dev/elements/sonic-element.js +3 -90
  35. package/dist/dev/elements/sonic-element.js.map +1 -1
  36. package/dist/dev/elements/switch.js +1 -1
  37. package/dist/dev/elements/value-element.d.ts +3 -5
  38. package/dist/dev/elements/value-element.js +35 -83
  39. package/dist/dev/elements/value-element.js.map +1 -1
  40. package/dist/dev/elements/wavestrip.d.ts +4 -0
  41. package/dist/dev/elements/wavestrip.js +42 -4
  42. package/dist/dev/elements/wavestrip.js.map +1 -1
  43. package/dist/dev/elements/xy.js +2 -1
  44. package/dist/dev/elements/xy.js.map +1 -1
  45. package/dist/dev/lib/mirror-children.js +80 -0
  46. package/dist/dev/lib/mirror-children.js.map +1 -0
  47. package/dist/dev/lib/owned-control.js +23 -0
  48. package/dist/dev/lib/owned-control.js.map +1 -0
  49. package/dist/dev/lib/time-regions.js +4 -1
  50. package/dist/dev/lib/time-regions.js.map +1 -1
  51. package/dist/skins/flat.css +2 -1
  52. package/dist/styles/button.css +21 -0
  53. package/dist/styles/envelope.css +30 -30
  54. package/dist/styles/led.css +18 -2
  55. package/dist/styles/material.css +72 -26
  56. package/dist/styles/panel.css +2 -1
  57. package/dist/styles/switch.css +10 -7
  58. package/dist/styles/xy.css +14 -30
  59. package/package.json +1 -1
@@ -150,6 +150,10 @@
150
150
  color-mix(in oklab, var(--_sonic-focus) 60%, transparent);
151
151
  }
152
152
 
153
+ :is(.sonic-number, .sonic-waveform, .sonic-wavestrip, .sonic-xy) {
154
+ --_sonic-ink: var(--_sonic-glass-text);
155
+ }
156
+
153
157
  :is(.sonic-dial, .sonic-number, .sonic-slider, .sonic-waveform, .sonic-wavestrip) {
154
158
  --_sonic-detent-zone: var(--sonic-detent-zone, 8px);
155
159
  }
@@ -179,18 +183,42 @@
179
183
  .sonic-xy,
180
184
  .sonic-xy-readout
181
185
  ) {
182
- --_sonic-glass: var(--sonic-glass, color-mix(in oklab, var(--_sonic-unlit) 45%, #000));
186
+ --_sonic-glass-slab: color-mix(in oklab, var(--_sonic-unlit) 45%, #000);
187
+ --_sonic-glass-base: var(
188
+ --sonic-glass,
189
+ color-mix(
190
+ in oklab,
191
+ var(--_sonic-glass-slab) calc(100% * var(--_sonic-relief)),
192
+ light-dark(oklch(97% 0.003 286deg), var(--_sonic-glass-slab))
193
+ )
194
+ );
195
+ --_sonic-glass: var(--_sonic-glass-base);
183
196
  --_sonic-glass-fill: radial-gradient(
184
197
  closest-side,
185
- color-mix(in oklab, var(--_sonic-glass) 88%, #fff),
198
+ color-mix(
199
+ in oklab,
200
+ var(--_sonic-glass) calc(100% - 12% * var(--_sonic-glass-depth, var(--_sonic-relief))),
201
+ #fff
202
+ ),
186
203
  var(--_sonic-glass)
187
204
  )
188
205
  var(--_sonic-glass);
189
206
  --_sonic-glass-text: var(
190
207
  --sonic-glass-text,
191
- color-mix(in oklab, var(--_sonic-glass) 20%, #fff)
208
+ color-mix(
209
+ in oklab,
210
+ var(--_sonic-glass) 20%,
211
+ oklch(from var(--_sonic-glass) clamp(0, (0.6 - l) * 1000, 1) 0 0deg / 100%)
212
+ )
213
+ );
214
+
215
+ /* Invalid with the token unset, so the default takes over */
216
+ --_sonic-glass-edge-set: 1px solid var(--sonic-glass-edge);
217
+ --_sonic-glass-edge: var(
218
+ --_sonic-glass-edge-set,
219
+ calc(1px * (1 - var(--_sonic-relief))) solid
220
+ color-mix(in oklab, currentcolor 35%, transparent)
192
221
  );
193
- --_sonic-glass-edge: 1px solid var(--sonic-glass-edge);
194
222
 
195
223
  /* Glass is forced to Canvas like the page, so only a border shows its edge */
196
224
  @media (forced-colors: active) {
@@ -279,25 +307,6 @@
279
307
  }
280
308
  }
281
309
 
282
- @media (forced-colors: none) {
283
- /* A query reads the parent, or a pseudo-element's own element: on a readout itself, 0 leaves the warp on */
284
- @container style(--sonic-relief: 1) and (not style(--sonic-glass-texture: 0)) {
285
- :is(.sonic-number, .sonic-screen),
286
- :is(.sonic-envelope, .sonic-waveform, .sonic-wavestrip, .sonic-xy)::after {
287
- filter: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='w' x='-0.3' y='-0.3' width='1.6' height='1.6' primitiveUnits='objectBoundingBox' color-interpolation-filters='sRGB'%3E%3CfeFlood x='0' y='0' width='1' height='1' flood-color='%23000'/%3E%3CfeFlood x='.5' y='0' width='.5' height='1' flood-color='%23f00' result='r'/%3E%3CfeFlood x='0' y='.5' width='1' height='.5' flood-color='%230f0' result='g'/%3E%3CfeFlood x='0' y='0' width='1' height='1' flood-color='%23000' result='k'/%3E%3CfeComposite in='r' in2='g' operator='arithmetic' k2='1' k3='1' result='h'/%3E%3CfeMerge x='0' y='0' width='1' height='1'%3E%3CfeMergeNode in='k'/%3E%3CfeMergeNode in='h'/%3E%3C/feMerge%3E%3CfeGaussianBlur x='0' y='0' width='1' height='1' stdDeviation='0.25'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1'/%3E%3CfeComponentTransfer result='a'%3E%3CfeFuncR type='table' tableValues='0 0.052 0.172 0.25 0.312 0.364 0.412 0.457 0.5 0.543 0.588 0.636 0.688 0.75 0.828 0.948 1'/%3E%3CfeFuncG type='table' tableValues='0 0.052 0.172 0.25 0.312 0.364 0.412 0.457 0.5 0.543 0.588 0.636 0.688 0.75 0.828 0.948 1'/%3E%3C/feComponentTransfer%3E%3CfeComponentTransfer%3E%3CfeFuncR type='table' tableValues='1 0.563 0.25 0.063 0 0.063 0.25 0.563 1'/%3E%3CfeFuncG type='table' tableValues='1 0.563 0.25 0.063 0 0.063 0.25 0.563 1'/%3E%3C/feComponentTransfer%3E%3CfeColorMatrix values='.5 .5 0 0 0 .5 .5 0 0 0 0 0 0 0 0 0 0 0 0 1'/%3E%3CfeComponentTransfer result='f'%3E%3CfeFuncR type='gamma' amplitude='0.333' exponent='2'/%3E%3CfeFuncG type='gamma' exponent='2'/%3E%3C/feComponentTransfer%3E%3CfeComposite in='a' in2='f' operator='arithmetic' k1='1' k3='-.5' k4='.5' result='m'/%3E%3CfeFlood flood-color='%23808080'/%3E%3CfeMerge result='n'%3E%3CfeMergeNode/%3E%3CfeMergeNode in='m'/%3E%3C/feMerge%3E%3CfeDisplacementMap in='SourceGraphic' in2='n' scale='0.016' xChannelSelector='R' yChannelSelector='G'/%3E%3C/filter%3E%3C/svg%3E#w");
288
- }
289
-
290
- :is(.sonic-envelope, .sonic-waveform, .sonic-wavestrip, .sonic-xy)::after {
291
- --_sonic-glass-bend: calc(0.008 * hypot(100cqi, 100cqb));
292
-
293
- inset: calc(-1 * var(--_sonic-glass-bend));
294
- border: var(--_sonic-glass-bend) solid rgb(0 0 0 / 50%);
295
- border-radius: calc(var(--_sonic-glass-radius) + var(--_sonic-glass-bend));
296
- clip-path: inset(var(--_sonic-glass-bend) round var(--_sonic-glass-radius));
297
- }
298
- }
299
- }
300
-
301
310
  :is(
302
311
  .sonic-envelope,
303
312
  .sonic-button,
@@ -382,7 +391,11 @@
382
391
  place-items: center;
383
392
  background: var(--_sonic-skirt);
384
393
  border-radius: var(--_sonic-keycap-corner);
385
- box-shadow: var(--_sonic-keycap-drop), var(--_sonic-rim), var(--_sonic-focus-shadow);
394
+ box-shadow:
395
+ var(--_sonic-keycap-drop),
396
+ var(--_sonic-rim),
397
+ 0 0 0 max(1px, 0.75 * var(--_sonic-unit)) var(--_sonic-blank-edge, transparent),
398
+ var(--_sonic-focus-shadow);
386
399
  scale: var(--_sonic-keycap-scale);
387
400
  translate: 0 var(--_sonic-keycap-shift);
388
401
  transition: var(--_sonic-press-transition);
@@ -403,6 +416,36 @@
403
416
  }
404
417
  }
405
418
 
419
+ .sonic-xy-bracket,
420
+ .sonic-envelope-bracket::before {
421
+ box-sizing: border-box;
422
+ inline-size: var(--_sonic-bracket-size);
423
+ block-size: var(--_sonic-bracket-size);
424
+ pointer-events: none;
425
+ content: '';
426
+ border: max(1px, 0.06 * var(--_sonic-bracket-size)) solid
427
+ color-mix(in oklab, var(--_sonic-glass-text) 45%, transparent);
428
+ border-radius: 50%;
429
+ opacity: 0;
430
+ mask: conic-gradient(
431
+ from 10deg,
432
+ #000 0 70deg,
433
+ transparent 0 180deg,
434
+ #000 0 250deg,
435
+ transparent 0
436
+ );
437
+ scale: 0.6;
438
+ transition:
439
+ opacity 120ms ease-out,
440
+ scale 120ms ease-out;
441
+ }
442
+
443
+ :state(dragging) > * > .sonic-xy-bracket,
444
+ :state(dragging) > * > .sonic-envelope-bracket::before {
445
+ opacity: calc(1 - var(--_sonic-relief));
446
+ scale: 1;
447
+ }
448
+
406
449
  :is(.sonic-meter, .sonic-slider) {
407
450
  --_sonic-groove:
408
451
  inset var(--_sonic-cast-x) var(--_sonic-cast-y) calc(0.75 * var(--_sonic-unit))
@@ -455,6 +498,7 @@
455
498
  .sonic-xy-readout
456
499
  ) {
457
500
  --_sonic-unit: calc(var(--_sonic-readout-size) / 32);
501
+ --_sonic-glass: var(--sonic-readout-glass, var(--_sonic-glass-base));
458
502
 
459
503
  box-sizing: border-box;
460
504
  place-items: center;
@@ -471,6 +515,7 @@
471
515
  font-variant-numeric: tabular-nums;
472
516
  line-height: 1;
473
517
  color: var(--_sonic-glass-text);
518
+ white-space: nowrap;
474
519
  pointer-events: none;
475
520
  cursor: default;
476
521
  user-select: none;
@@ -567,13 +612,14 @@
567
612
  }
568
613
 
569
614
  & > .sonic-scale-tick {
570
- background: var(--_sonic-etch);
615
+ background: var(--sonic-scale, var(--_sonic-etch));
571
616
  }
572
617
  }
573
618
 
574
619
  @media (forced-colors: active) {
575
- .sonic-scale-tick {
620
+ :is(.sonic-dial-scale, .sonic-slider-scale) > .sonic-scale-tick {
576
621
  forced-color-adjust: none;
622
+ background: var(--_sonic-etch);
577
623
  }
578
624
 
579
625
  :is(
@@ -20,7 +20,8 @@
20
20
  --_sonic-panel-radius: var(--sonic-panel-radius, 0.75rem);
21
21
  --_sonic-unit: var(--_sonic-panel-depth);
22
22
 
23
- background: var(--sonic-panel, rgb(255 255 255 / 3%));
23
+ color: var(--sonic-panel-text, inherit);
24
+ background: var(--sonic-panel, color-mix(in oklab, currentcolor 3%, transparent));
24
25
  border: 1px solid var(--_sonic-panel-line);
25
26
  border-radius: var(--_sonic-panel-radius);
26
27
  box-shadow:
@@ -230,13 +230,16 @@
230
230
  inline-size: calc(var(--_sonic-switch-size) * var(--_sonic-switch-bushing-ratio));
231
231
  aspect-ratio: 1;
232
232
  pointer-events: none;
233
- background: radial-gradient(
234
- closest-side,
235
- color-mix(in oklab, var(--_sonic-cap) calc(100% - 70% * var(--_sonic-relief)), #000) 0 42%,
236
- var(--_sonic-switch-bushing-shade) 48%,
237
- var(--_sonic-cap) 70%,
238
- color-mix(in oklab, var(--_sonic-cap) calc(100% - 25% * var(--_sonic-relief)), #fff) 88%,
239
- var(--_sonic-switch-bushing-shade)
233
+ background: var(
234
+ --sonic-well,
235
+ radial-gradient(
236
+ closest-side,
237
+ color-mix(in oklab, var(--_sonic-cap) calc(100% - 70% * var(--_sonic-relief)), #000) 0 42%,
238
+ var(--_sonic-switch-bushing-shade) 48%,
239
+ var(--_sonic-cap) 70%,
240
+ color-mix(in oklab, var(--_sonic-cap) calc(100% - 25% * var(--_sonic-relief)), #fff) 88%,
241
+ var(--_sonic-switch-bushing-shade)
242
+ )
240
243
  );
241
244
  border-radius: 50%;
242
245
  box-shadow:
@@ -119,23 +119,28 @@
119
119
  }
120
120
  }
121
121
 
122
+ :is(.sonic-xy-bracket, .sonic-xy-puck) {
123
+ position: absolute;
124
+ inset: auto auto
125
+ calc(var(--_sonic-xy-inset) + var(--_sonic-xy-y, 0) * var(--_sonic-xy-travel-y))
126
+ calc(var(--_sonic-xy-inset) + var(--_sonic-xy-x, 0) * var(--_sonic-xy-travel-x));
127
+ inline-size: var(--_sonic-xy-puck);
128
+ block-size: var(--_sonic-xy-puck);
129
+ border-radius: 50%;
130
+ }
131
+
132
+ .sonic-xy-bracket {
133
+ --_sonic-bracket-size: var(--_sonic-xy-puck);
134
+ }
135
+
122
136
  .sonic-xy-puck {
123
137
  --_sonic-xy-puck-fill: var(--_sonic-xy-lit);
124
138
  --_sonic-xy-puck-edge: var(--_sonic-xy-puck-fill);
125
- --_sonic-xy-puck-bracket: transparent;
126
- --_sonic-xy-puck-bracket-scale: 0.6;
127
139
  --_sonic-xy-puck-lift: color-mix(in oklab, var(--_sonic-xy-lit) 85%, #fff);
128
140
  --_sonic-xy-puck-glow: transparent;
129
141
  --_sonic-xy-puck-ring: 0 0 transparent;
130
142
 
131
- position: absolute;
132
- inset: auto auto
133
- calc(var(--_sonic-xy-inset) + var(--_sonic-xy-y, 0) * var(--_sonic-xy-travel-y))
134
- calc(var(--_sonic-xy-inset) + var(--_sonic-xy-x, 0) * var(--_sonic-xy-travel-x));
135
- inline-size: var(--_sonic-xy-puck);
136
- block-size: var(--_sonic-xy-puck);
137
143
  cursor: var(--_sonic-xy-cursor);
138
- border-radius: 50%;
139
144
  filter: drop-shadow(0 0 calc(0.15 * var(--_sonic-xy-puck)) var(--_sonic-xy-puck-glow));
140
145
  transition: filter 120ms ease-out;
141
146
 
@@ -153,21 +158,6 @@
153
158
  border-color 120ms ease-out,
154
159
  box-shadow 120ms ease-out;
155
160
  }
156
-
157
- &::after {
158
- position: absolute;
159
- inset: 4%;
160
- pointer-events: none;
161
- content: '';
162
- border: max(1px, 0.08 * var(--_sonic-xy-puck)) solid var(--_sonic-xy-puck-bracket);
163
- border-block-start-color: transparent;
164
- border-radius: 50%;
165
- rotate: 45deg;
166
- scale: var(--_sonic-xy-puck-bracket-scale);
167
- transition:
168
- border-color 120ms ease-out,
169
- scale 120ms ease-out;
170
- }
171
161
  }
172
162
 
173
163
  @media (hover: hover) {
@@ -191,12 +181,6 @@
191
181
  var(--_sonic-xy-lit) calc(45% * var(--_sonic-relief)),
192
182
  transparent
193
183
  );
194
- --_sonic-xy-puck-bracket: color-mix(
195
- in oklab,
196
- var(--_sonic-xy-lit) calc(100% * (1 - var(--_sonic-relief))),
197
- transparent
198
- );
199
- --_sonic-xy-puck-bracket-scale: 1;
200
184
  }
201
185
 
202
186
  .sonic-xy-axis {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsynaptic/sonic-ui",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Native custom elements for audio interfaces, skinned with CSS custom properties",
5
5
  "keywords": [
6
6
  "custom-elements",