@xsynaptic/sonic-ui 0.17.0 → 0.19.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.
Files changed (178) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +122 -19
  3. package/dist/default/elements/button.js +2 -5
  4. package/dist/default/elements/dial.js +2 -7
  5. package/dist/default/elements/display-element.js +9 -12
  6. package/dist/default/elements/envelope.js +31 -78
  7. package/dist/default/elements/field-gesture.js +81 -0
  8. package/dist/default/elements/meter.js +4 -1
  9. package/dist/default/elements/number.js +0 -7
  10. package/dist/default/elements/position-group.js +42 -26
  11. package/dist/default/elements/radio-group.js +59 -56
  12. package/dist/default/elements/scale.js +3 -3
  13. package/dist/default/elements/segmented.js +0 -5
  14. package/dist/default/elements/slider.js +11 -20
  15. package/dist/default/elements/sonic-element.js +3 -1
  16. package/dist/default/elements/split.js +14 -13
  17. package/dist/default/elements/switch.js +31 -47
  18. package/dist/default/elements/toggle.js +20 -49
  19. package/dist/default/elements/value-element.js +72 -94
  20. package/dist/default/elements/value-gestures.js +22 -22
  21. package/dist/default/elements/wave-element.js +16 -20
  22. package/dist/default/elements/waveform.js +42 -241
  23. package/dist/default/elements/wavestrip.js +10 -5
  24. package/dist/default/elements/xy.js +67 -119
  25. package/dist/default/index.js +2 -1
  26. package/dist/default/lib/canvas-surface.js +25 -0
  27. package/dist/default/lib/clock.js +23 -0
  28. package/dist/default/lib/crossfade.js +1 -0
  29. package/dist/default/lib/envelope-curve.js +1 -0
  30. package/dist/default/lib/peaks-request.js +44 -0
  31. package/dist/default/lib/positions.js +58 -0
  32. package/dist/default/lib/scrub.js +12 -0
  33. package/dist/default/lib/spoken-duration.js +30 -0
  34. package/dist/default/lib/value-model.js +62 -0
  35. package/dist/default/lib/waveform-buckets.js +7 -1
  36. package/dist/default/lib/waveform-scene.js +108 -0
  37. package/dist/default/lib/zoom-gesture.js +97 -1
  38. package/dist/dev/elements/button.d.ts +2 -0
  39. package/dist/dev/elements/button.js +14 -5
  40. package/dist/dev/elements/button.js.map +1 -1
  41. package/dist/dev/elements/dial.d.ts +2 -0
  42. package/dist/dev/elements/dial.js +16 -7
  43. package/dist/dev/elements/dial.js.map +1 -1
  44. package/dist/dev/elements/display-element.d.ts +5 -3
  45. package/dist/dev/elements/display-element.js +11 -9
  46. package/dist/dev/elements/display-element.js.map +1 -1
  47. package/dist/dev/elements/envelope.js +48 -78
  48. package/dist/dev/elements/envelope.js.map +1 -1
  49. package/dist/dev/elements/field-gesture.js +82 -0
  50. package/dist/dev/elements/field-gesture.js.map +1 -0
  51. package/dist/dev/elements/meter.d.ts +10 -5
  52. package/dist/dev/elements/meter.js +5 -1
  53. package/dist/dev/elements/meter.js.map +1 -1
  54. package/dist/dev/elements/number.js +13 -7
  55. package/dist/dev/elements/number.js.map +1 -1
  56. package/dist/dev/elements/position-group.d.ts +12 -6
  57. package/dist/dev/elements/position-group.js +42 -26
  58. package/dist/dev/elements/position-group.js.map +1 -1
  59. package/dist/dev/elements/radio-group.d.ts +11 -7
  60. package/dist/dev/elements/radio-group.js +59 -56
  61. package/dist/dev/elements/radio-group.js.map +1 -1
  62. package/dist/dev/elements/scale.js +3 -3
  63. package/dist/dev/elements/scale.js.map +1 -1
  64. package/dist/dev/elements/segmented.js +12 -5
  65. package/dist/dev/elements/segmented.js.map +1 -1
  66. package/dist/dev/elements/slider.d.ts +4 -2
  67. package/dist/dev/elements/slider.js +25 -20
  68. package/dist/dev/elements/slider.js.map +1 -1
  69. package/dist/dev/elements/sonic-element.d.ts +13 -2
  70. package/dist/dev/elements/sonic-element.js +63 -11
  71. package/dist/dev/elements/sonic-element.js.map +1 -1
  72. package/dist/dev/elements/split.d.ts +1 -0
  73. package/dist/dev/elements/split.js +14 -13
  74. package/dist/dev/elements/split.js.map +1 -1
  75. package/dist/dev/elements/switch.d.ts +2 -2
  76. package/dist/dev/elements/switch.js +38 -47
  77. package/dist/dev/elements/switch.js.map +1 -1
  78. package/dist/dev/elements/toggle.js +32 -49
  79. package/dist/dev/elements/toggle.js.map +1 -1
  80. package/dist/dev/elements/value-element.d.ts +11 -5
  81. package/dist/dev/elements/value-element.js +72 -94
  82. package/dist/dev/elements/value-element.js.map +1 -1
  83. package/dist/dev/elements/value-gestures.js +22 -22
  84. package/dist/dev/elements/value-gestures.js.map +1 -1
  85. package/dist/dev/elements/wave-element.d.ts +8 -5
  86. package/dist/dev/elements/wave-element.js +30 -20
  87. package/dist/dev/elements/wave-element.js.map +1 -1
  88. package/dist/dev/elements/waveform.d.ts +20 -22
  89. package/dist/dev/elements/waveform.js +42 -241
  90. package/dist/dev/elements/waveform.js.map +1 -1
  91. package/dist/dev/elements/wavestrip.d.ts +5 -1
  92. package/dist/dev/elements/wavestrip.js +10 -5
  93. package/dist/dev/elements/wavestrip.js.map +1 -1
  94. package/dist/dev/elements/xy.js +81 -119
  95. package/dist/dev/elements/xy.js.map +1 -1
  96. package/dist/dev/index.d.ts +5 -3
  97. package/dist/dev/index.js +2 -1
  98. package/dist/dev/lib/canvas-surface.d.ts +1 -0
  99. package/dist/dev/lib/canvas-surface.js +25 -0
  100. package/dist/dev/lib/canvas-surface.js.map +1 -1
  101. package/dist/dev/lib/clock.d.ts +5 -0
  102. package/dist/dev/lib/clock.js +24 -0
  103. package/dist/dev/lib/clock.js.map +1 -0
  104. package/dist/dev/lib/crossfade.d.ts +1 -0
  105. package/dist/dev/lib/crossfade.js +1 -0
  106. package/dist/dev/lib/crossfade.js.map +1 -1
  107. package/dist/dev/lib/envelope-curve.d.ts +1 -0
  108. package/dist/dev/lib/envelope-curve.js +1 -0
  109. package/dist/dev/lib/envelope-curve.js.map +1 -1
  110. package/dist/dev/lib/mirror-children.js.map +1 -1
  111. package/dist/dev/lib/owned-control.js.map +1 -1
  112. package/dist/dev/lib/peaks-request.d.ts +5 -0
  113. package/dist/dev/lib/peaks-request.js +45 -0
  114. package/dist/dev/lib/peaks-request.js.map +1 -0
  115. package/dist/dev/lib/positions.d.ts +7 -0
  116. package/dist/dev/lib/positions.js +59 -0
  117. package/dist/dev/lib/positions.js.map +1 -0
  118. package/dist/dev/lib/scrub.d.ts +8 -0
  119. package/dist/dev/lib/scrub.js +13 -0
  120. package/dist/dev/lib/scrub.js.map +1 -0
  121. package/dist/dev/lib/spoken-duration.js +31 -0
  122. package/dist/dev/lib/spoken-duration.js.map +1 -0
  123. package/dist/dev/lib/time-regions.d.ts +1 -0
  124. package/dist/dev/lib/time-regions.js.map +1 -1
  125. package/dist/dev/lib/units.d.ts +8 -0
  126. package/dist/dev/lib/value-model.js +63 -0
  127. package/dist/dev/lib/value-model.js.map +1 -0
  128. package/dist/dev/lib/waveform-buckets.d.ts +2 -1
  129. package/dist/dev/lib/waveform-buckets.js +7 -1
  130. package/dist/dev/lib/waveform-buckets.js.map +1 -1
  131. package/dist/dev/lib/waveform-scene.d.ts +11 -0
  132. package/dist/dev/lib/waveform-scene.js +109 -0
  133. package/dist/dev/lib/waveform-scene.js.map +1 -0
  134. package/dist/dev/lib/zoom-gesture.js +97 -1
  135. package/dist/dev/lib/zoom-gesture.js.map +1 -1
  136. package/dist/skins/amber.css +1 -0
  137. package/dist/skins/ivory.css +1 -0
  138. package/dist/skins/lime.css +1 -0
  139. package/dist/skins/slate.css +1 -0
  140. package/dist/styles/button.css +45 -11
  141. package/dist/styles/dial.css +10 -9
  142. package/dist/styles/envelope.css +10 -4
  143. package/dist/styles/led.css +5 -1
  144. package/dist/styles/material/arc.css +3 -2
  145. package/dist/styles/material/bracket.css +2 -2
  146. package/dist/styles/material/cap.css +33 -12
  147. package/dist/styles/material/core.css +4 -0
  148. package/dist/styles/material/glass.css +1 -1
  149. package/dist/styles/material/groove.css +4 -3
  150. package/dist/styles/material/keycap.css +3 -2
  151. package/dist/styles/material/lens.css +1 -1
  152. package/dist/styles/material/pane.css +5 -4
  153. package/dist/styles/material/readout.css +6 -6
  154. package/dist/styles/material/well.css +2 -2
  155. package/dist/styles/meter.css +2 -7
  156. package/dist/styles/number.css +5 -1
  157. package/dist/styles/panel.css +4 -3
  158. package/dist/styles/ring.css +1 -1
  159. package/dist/styles/screen.css +5 -1
  160. package/dist/styles/segmented.css +17 -4
  161. package/dist/styles/slider.css +9 -3
  162. package/dist/styles/spectrum.css +16 -3
  163. package/dist/styles/switch.css +35 -10
  164. package/dist/styles/toggle.css +14 -7
  165. package/dist/styles/waveform.css +17 -5
  166. package/dist/styles/wavestrip.css +11 -3
  167. package/dist/styles/xy.css +9 -5
  168. package/package.json +1 -6
  169. package/dist/default/dat.js +0 -51
  170. package/dist/default/lib/asked-value.js +0 -21
  171. package/dist/default/lib/fill-watch.js +0 -29
  172. package/dist/dev/dat.d.ts +0 -19
  173. package/dist/dev/dat.js +0 -52
  174. package/dist/dev/dat.js.map +0 -1
  175. package/dist/dev/lib/asked-value.js +0 -22
  176. package/dist/dev/lib/asked-value.js.map +0 -1
  177. package/dist/dev/lib/fill-watch.js +0 -30
  178. package/dist/dev/lib/fill-watch.js.map +0 -1
@@ -32,6 +32,10 @@
32
32
  ) {
33
33
  --_sonic-unlit: var(--sonic-unlit, oklch(27.4% 0.005 286deg));
34
34
  --_sonic-relief: var(--sonic-relief, 0);
35
+ --_sonic-shade: var(--sonic-shade, #000);
36
+ --_sonic-shine: var(--sonic-shine, #fff);
37
+ --_sonic-press-duration: var(--sonic-press-duration, 60ms);
38
+ --_sonic-fade-duration: var(--sonic-fade-duration, 120ms);
35
39
  --_sonic-light-tilt: var(--sonic-light-tilt, 17deg);
36
40
  --_sonic-light-fall: calc(180deg - var(--_sonic-light-tilt));
37
41
  --_sonic-cast-x: calc(sin(var(--_sonic-light-tilt)) * var(--_sonic-unit));
@@ -29,7 +29,7 @@
29
29
  color-mix(
30
30
  in oklab,
31
31
  var(--_sonic-glass) calc(100% - 12% * var(--_sonic-glass-depth, var(--_sonic-relief))),
32
- #fff
32
+ var(--_sonic-shine)
33
33
  ),
34
34
  var(--_sonic-glass)
35
35
  )
@@ -2,9 +2,10 @@
2
2
  :is(.sonic-meter, .sonic-slider) {
3
3
  --_sonic-groove:
4
4
  inset var(--_sonic-cast-x) var(--_sonic-cast-y) calc(0.75 * var(--_sonic-unit))
5
- rgb(0 0 0 / calc(0.55 * var(--_sonic-relief))),
6
- inset 0 0 calc(0.5 * var(--_sonic-unit)) rgb(0 0 0 / calc(0.3 * var(--_sonic-relief))),
5
+ rgb(from var(--_sonic-shade) r g b / calc(0.55 * var(--_sonic-relief))),
6
+ inset 0 0 calc(0.5 * var(--_sonic-unit))
7
+ rgb(from var(--_sonic-shade) r g b / calc(0.3 * var(--_sonic-relief))),
7
8
  calc(0.5 * var(--_sonic-cast-x)) calc(0.5 * var(--_sonic-cast-y)) 0
8
- rgb(255 255 255 / calc(0.06 * var(--_sonic-relief)));
9
+ rgb(from var(--_sonic-shine) r g b / calc(0.06 * var(--_sonic-relief)));
9
10
  }
10
11
  }
@@ -18,11 +18,12 @@
18
18
  );
19
19
  --_sonic-engraving: drop-shadow(
20
20
  calc(-0.4 * var(--_sonic-cast-x)) calc(-0.4 * var(--_sonic-cast-y))
21
- calc(0.4 * var(--_sonic-unit)) rgb(0 0 0 / calc(0.3 * var(--_sonic-relief)))
21
+ calc(0.4 * var(--_sonic-unit))
22
+ rgb(from var(--_sonic-shade) r g b / calc(0.3 * var(--_sonic-relief)))
22
23
  )
23
24
  drop-shadow(
24
25
  calc(0.3 * var(--_sonic-cast-x)) calc(0.3 * var(--_sonic-cast-y)) 0
25
- rgb(255 255 255 / calc(0.07 * var(--_sonic-relief)))
26
+ rgb(from var(--_sonic-shine) r g b / calc(0.07 * var(--_sonic-relief)))
26
27
  );
27
28
  }
28
29
 
@@ -2,7 +2,7 @@
2
2
  :is(.sonic-led, .sonic-meter) {
3
3
  --_sonic-lens-glint: linear-gradient(
4
4
  var(--_sonic-light-fall),
5
- rgb(255 255 255 / calc(0.1 * var(--_sonic-relief))),
5
+ rgb(from var(--_sonic-shine) r g b / calc(0.1 * var(--_sonic-relief))),
6
6
  transparent 60%
7
7
  );
8
8
  --_sonic-lens-glass: var(--sonic-lens, color-mix(in oklab, var(--_sonic-unlit) 60%, #000));
@@ -44,24 +44,25 @@
44
44
  background:
45
45
  linear-gradient(
46
46
  var(--_sonic-light-fall),
47
- rgb(255 255 255 / calc(0.07 * var(--_sonic-glass-depth))),
47
+ rgb(from var(--_sonic-shine) r g b / calc(0.07 * var(--_sonic-glass-depth))),
48
48
  transparent 45%
49
49
  ),
50
50
  radial-gradient(
51
51
  farthest-corner,
52
52
  transparent 55%,
53
- rgb(0 0 0 / calc(0.4 * var(--_sonic-glass-texture)))
53
+ rgb(from var(--_sonic-shade) r g b / calc(0.4 * var(--_sonic-glass-texture)))
54
54
  ),
55
55
  repeating-linear-gradient(
56
56
  to bottom,
57
- rgb(0 0 0 / calc(0.025 * var(--_sonic-glass-texture))) 0
57
+ rgb(from var(--_sonic-shade) r g b / calc(0.025 * var(--_sonic-glass-texture))) 0
58
58
  calc(var(--_sonic-glass-pitch) / 2),
59
59
  transparent 0 var(--_sonic-glass-pitch)
60
60
  );
61
61
  border-radius: inherit;
62
62
  box-shadow:
63
63
  var(--_sonic-well),
64
- inset 0 0 calc(3 * var(--_sonic-glass-depth) * var(--_sonic-unit)) rgb(0 0 0 / 45%);
64
+ inset 0 0 calc(3 * var(--_sonic-glass-depth) * var(--_sonic-unit))
65
+ rgb(from var(--_sonic-shade) r g b / 45%);
65
66
  }
66
67
 
67
68
  @media (forced-colors: none) {
@@ -46,16 +46,16 @@
46
46
  border-radius: calc(0.25 * var(--_sonic-readout-size));
47
47
  box-shadow:
48
48
  calc(2 * var(--_sonic-cast-x)) calc(2 * var(--_sonic-cast-y)) calc(6 * var(--_sonic-unit))
49
- rgb(0 0 0 / calc(0.55 * var(--_sonic-relief))),
49
+ rgb(from var(--_sonic-shade) r g b / calc(0.55 * var(--_sonic-relief))),
50
50
  inset 0 0 0 max(1px, round(var(--_sonic-unit), var(--_sonic-snap)))
51
- rgb(255 255 255 / calc(0.08 * var(--_sonic-relief)));
51
+ rgb(from var(--_sonic-shine) r g b / calc(0.08 * var(--_sonic-relief)));
52
52
  opacity: 0;
53
53
  translate: 0 calc(0.15 * var(--_sonic-readout-size));
54
54
  transition:
55
- opacity 120ms ease-out,
56
- translate 120ms ease-out,
57
- display 120ms allow-discrete,
58
- overlay 120ms allow-discrete;
55
+ opacity var(--_sonic-fade-duration) ease-out,
56
+ translate var(--_sonic-fade-duration) ease-out,
57
+ display var(--_sonic-fade-duration) allow-discrete,
58
+ overlay var(--_sonic-fade-duration) allow-discrete;
59
59
 
60
60
  /* Grid only while open; engines keep the flip a closed readout took against a filtered ancestor */
61
61
  &:popover-open {
@@ -16,9 +16,9 @@
16
16
  inset calc(var(--_sonic-well-depth) * var(--_sonic-cast-x))
17
17
  calc(var(--_sonic-well-depth) * var(--_sonic-cast-y))
18
18
  calc(2 * var(--_sonic-well-depth) * var(--_sonic-unit))
19
- rgb(0 0 0 / calc(0.6 * var(--_sonic-relief))),
19
+ rgb(from var(--_sonic-shade) r g b / calc(0.6 * var(--_sonic-relief))),
20
20
  calc(0.5 * var(--_sonic-well-depth) * var(--_sonic-cast-x))
21
21
  calc(0.5 * var(--_sonic-well-depth) * var(--_sonic-cast-y)) 0
22
- rgb(255 255 255 / calc(0.06 * var(--_sonic-relief)));
22
+ rgb(from var(--_sonic-shine) r g b / calc(0.06 * var(--_sonic-relief)));
23
23
  }
24
24
  }
@@ -263,18 +263,13 @@
263
263
  position: absolute;
264
264
  inset: 0;
265
265
  content: '';
266
- background: linear-gradient(
267
- var(--_sonic-light-fall),
268
- rgb(255 255 255 / calc(0.1 * var(--_sonic-relief))),
269
- transparent 60%
270
- )
271
- 0 100% / 100% var(--_sonic-meter-pitch) repeat-y;
266
+ background: var(--_sonic-lens-glint) 0 100% / 100% var(--_sonic-meter-pitch) repeat-y;
272
267
  }
273
268
 
274
269
  :state(ladder) > .sonic-meter > .sonic-meter-bar::after {
275
270
  background: radial-gradient(
276
271
  circle var(--_sonic-meter-ladder-radius),
277
- rgb(255 255 255 / calc(0.45 * var(--_sonic-relief))),
272
+ rgb(from var(--_sonic-shine) r g b / calc(0.45 * var(--_sonic-relief))),
278
273
  transparent
279
274
  )
280
275
  0 100% / 100% var(--_sonic-meter-pitch) repeat-y;
@@ -31,6 +31,7 @@
31
31
 
32
32
  .sonic-number {
33
33
  --_sonic-number-radius-ratio: var(--sonic-number-radius-ratio, 0.15);
34
+ --_sonic-number-radius-own: calc(var(--_sonic-number-size) * var(--sonic-number-radius-ratio));
34
35
  --_sonic-number-inset-ratio: var(--sonic-number-inset-ratio, 0.2);
35
36
  --_sonic-number-text-ratio: var(--sonic-number-text-ratio, 0.45);
36
37
  --_sonic-number-travel: var(--sonic-number-travel, 160px);
@@ -44,7 +45,10 @@
44
45
  line-height: 1;
45
46
  touch-action: pan-x;
46
47
  cursor: ns-resize;
47
- border-radius: calc(var(--_sonic-number-size) * var(--_sonic-number-radius-ratio));
48
+ border-radius: var(
49
+ --_sonic-number-radius-own,
50
+ var(--sonic-radius, calc(var(--_sonic-number-size) * var(--_sonic-number-radius-ratio)))
51
+ );
48
52
  box-shadow: var(--_sonic-focus-shadow);
49
53
  }
50
54
 
@@ -29,13 +29,14 @@
29
29
  box-shadow:
30
30
  inset var(--_sonic-cast-x) var(--_sonic-cast-y)
31
31
  max(var(--_sonic-panel-depth), -1 * var(--_sonic-panel-depth))
32
- rgb(255 255 255 / calc(0.07 * var(--_sonic-relief))),
32
+ rgb(from var(--_sonic-shine) r g b / calc(0.07 * var(--_sonic-relief))),
33
33
  inset calc(-1 * var(--_sonic-cast-x)) calc(-1 * var(--_sonic-cast-y))
34
34
  max(var(--_sonic-panel-depth), -1 * var(--_sonic-panel-depth))
35
- rgb(0 0 0 / calc(0.35 * var(--_sonic-relief))),
35
+ rgb(from var(--_sonic-shade) r g b / calc(0.35 * var(--_sonic-relief))),
36
36
  calc(2 * sin(var(--_sonic-light-tilt)) * max(0px, var(--_sonic-panel-depth)))
37
37
  calc(2 * cos(var(--_sonic-light-tilt)) * max(0px, var(--_sonic-panel-depth)))
38
- calc(3 * max(0px, var(--_sonic-panel-depth))) rgb(0 0 0 / calc(0.45 * var(--_sonic-relief)));
38
+ calc(3 * max(0px, var(--_sonic-panel-depth)))
39
+ rgb(from var(--_sonic-shade) r g b / calc(0.45 * var(--_sonic-relief)));
39
40
  }
40
41
 
41
42
  .sonic-panel-title {
@@ -70,7 +70,7 @@
70
70
  }
71
71
 
72
72
  .sonic-ring > * > .sonic-button {
73
- --_sonic-button-radius-ratio: 0.5;
73
+ --_sonic-button-radius-own: calc(var(--_sonic-button-size) / 2);
74
74
  --_sonic-button-face-radius-ratio: 0.5;
75
75
 
76
76
  inline-size: var(--_sonic-button-size);
@@ -11,12 +11,16 @@
11
11
  --_sonic-screen-size: var(--sonic-screen-size, 2.5rem);
12
12
  --_sonic-screen-aspect-ratio: var(--sonic-screen-aspect-ratio, 3);
13
13
  --_sonic-screen-radius-ratio: var(--sonic-screen-radius-ratio, 0.15);
14
+ --_sonic-screen-radius-own: calc(var(--_sonic-screen-size) * var(--sonic-screen-radius-ratio));
14
15
  --_sonic-screen-inset-ratio: var(--sonic-screen-inset-ratio, 0.1);
15
16
  --_sonic-unit: calc(var(--_sonic-screen-size) / 32);
16
17
 
17
18
  inline-size: calc(var(--_sonic-screen-size) * var(--_sonic-screen-aspect-ratio));
18
19
  block-size: var(--_sonic-screen-size);
19
20
  padding: calc(var(--_sonic-screen-size) * var(--_sonic-screen-inset-ratio));
20
- border-radius: calc(var(--_sonic-screen-size) * var(--_sonic-screen-radius-ratio));
21
+ border-radius: var(
22
+ --_sonic-screen-radius-own,
23
+ var(--sonic-radius, calc(var(--_sonic-screen-size) * var(--_sonic-screen-radius-ratio)))
24
+ );
21
25
  }
22
26
  }
@@ -38,11 +38,18 @@
38
38
  var(--_sonic-segmented-press-scale)
39
39
  );
40
40
  --_sonic-segmented-font-ratio: var(--sonic-segmented-font-ratio, 0.34);
41
+ --_sonic-segmented-font-own: calc(
42
+ var(--_sonic-segmented-size) * var(--sonic-segmented-font-ratio)
43
+ );
41
44
  --_sonic-segmented-padding-ratio: var(--sonic-segmented-padding-ratio, 0.25);
42
45
  --_sonic-segmented-icon-ratio: var(--sonic-segmented-icon-ratio, 0.5);
43
46
  --_sonic-unit: calc(var(--_sonic-segmented-size) / 32);
44
- --_sonic-segmented-corner: calc(
45
- var(--_sonic-segmented-size) * var(--_sonic-segmented-radius-ratio)
47
+ --_sonic-segmented-radius-own: calc(
48
+ var(--_sonic-segmented-size) * var(--sonic-segmented-radius-ratio)
49
+ );
50
+ --_sonic-segmented-corner: var(
51
+ --_sonic-segmented-radius-own,
52
+ var(--sonic-radius, calc(var(--_sonic-segmented-size) * var(--_sonic-segmented-radius-ratio)))
46
53
  );
47
54
  --_sonic-keycap-depth: calc(var(--_sonic-segmented-size) * var(--_sonic-segmented-depth-ratio));
48
55
  --_sonic-segmented-gap: calc(var(--_sonic-segmented-size) * var(--_sonic-segmented-gap-ratio));
@@ -75,14 +82,20 @@
75
82
  min-inline-size: calc(var(--_sonic-segmented-size) - 2 * var(--_sonic-segmented-gap));
76
83
  padding: 0;
77
84
  font: inherit;
78
- font-size: calc(var(--_sonic-segmented-size) * var(--_sonic-segmented-font-ratio));
85
+ font-size: var(
86
+ --_sonic-segmented-font-own,
87
+ var(
88
+ --sonic-legend-font-size,
89
+ calc(var(--_sonic-segmented-size) * var(--_sonic-segmented-font-ratio))
90
+ )
91
+ );
79
92
  line-height: 1;
80
93
  color: var(--_sonic-ink);
81
94
  cursor: pointer;
82
95
  background: transparent;
83
96
  border: 0;
84
97
  border-radius: var(--_sonic-segmented-inner-corner);
85
- transition: color 120ms ease-out;
98
+ transition: color var(--_sonic-fade-duration) ease-out;
86
99
  }
87
100
 
88
101
  .sonic-segmented-option:where([data-sonic-pressed]):not(:disabled),
@@ -92,7 +92,7 @@
92
92
  touch-action: var(--sonic-touch-action, pan-y);
93
93
  cursor: var(--_sonic-slider-cursor);
94
94
  user-select: none;
95
- transition: --_sonic-slider-groove-ratio 120ms ease-out;
95
+ transition: --_sonic-slider-groove-ratio var(--_sonic-fade-duration) ease-out;
96
96
 
97
97
  @media (prefers-reduced-motion: reduce) {
98
98
  transition: none;
@@ -424,7 +424,13 @@
424
424
  var(--_sonic-slider-breadth) * var(--_sonic-slider-indicator-ratio)
425
425
  );
426
426
  --_sonic-slider-bevel: calc(var(--_sonic-slider-breadth) * var(--_sonic-slider-bevel-ratio));
427
- --_sonic-slider-corner: calc(var(--_sonic-slider-breadth) * var(--_sonic-slider-radius-ratio));
427
+ --_sonic-slider-radius-own: calc(
428
+ var(--_sonic-slider-breadth) * var(--sonic-slider-radius-ratio)
429
+ );
430
+ --_sonic-slider-corner: var(
431
+ --_sonic-slider-radius-own,
432
+ var(--sonic-radius, calc(var(--_sonic-slider-breadth) * var(--_sonic-slider-radius-ratio)))
433
+ );
428
434
  --_sonic-slider-indicator-inset: calc(
429
435
  var(--_sonic-slider-bevel) + var(--_sonic-slider-breadth) * 0.1
430
436
  );
@@ -460,7 +466,7 @@
460
466
  background: var(--_sonic-slider-indicator);
461
467
  border-radius: calc(var(--_sonic-slider-indicator-width) / 2);
462
468
  box-shadow: inset 0 0 calc(0.75 * var(--_sonic-unit))
463
- rgb(0 0 0 / calc(0.55 * var(--_sonic-relief)));
469
+ rgb(from var(--_sonic-shade) r g b / calc(0.55 * var(--_sonic-relief)));
464
470
  }
465
471
  }
466
472
 
@@ -77,13 +77,25 @@
77
77
 
78
78
  inline-size: var(--_sonic-spectrum-length);
79
79
  block-size: var(--_sonic-spectrum-size);
80
- padding: calc(var(--_sonic-spectrum-size) * var(--sonic-spectrum-inset-ratio, 0.06));
80
+
81
+ --_sonic-spectrum-inset: calc(
82
+ var(--_sonic-spectrum-size) * var(--sonic-spectrum-inset-ratio, 0.06)
83
+ );
84
+
85
+ padding: var(--_sonic-spectrum-inset);
81
86
 
82
87
  /* The canvas's backing size would otherwise feed an intrinsically sized parent */
83
88
  contain: size;
84
89
 
85
- --_sonic-glass-radius: calc(
86
- var(--_sonic-spectrum-size) * var(--sonic-spectrum-radius-ratio, 0.08)
90
+ --_sonic-spectrum-radius-own: calc(
91
+ var(--_sonic-spectrum-size) * var(--sonic-spectrum-radius-ratio)
92
+ );
93
+ --_sonic-glass-radius: var(
94
+ --_sonic-spectrum-radius-own,
95
+ var(
96
+ --sonic-radius,
97
+ calc(var(--_sonic-spectrum-size) * var(--sonic-spectrum-radius-ratio, 0.08))
98
+ )
87
99
  );
88
100
 
89
101
  border-radius: var(--_sonic-glass-radius);
@@ -98,6 +110,7 @@
98
110
  display: block;
99
111
  inline-size: 100%;
100
112
  block-size: 100%;
113
+ border-radius: max(0px, var(--_sonic-glass-radius) - var(--_sonic-spectrum-inset));
101
114
  }
102
115
 
103
116
  /* Opaque, since a system highlight carries alpha that would blend the bars into the glass */
@@ -35,6 +35,7 @@
35
35
  --_sonic-switch-bat-ratio: var(--sonic-switch-bat-ratio, 0.36);
36
36
  --_sonic-switch-bushing-ratio: var(--sonic-switch-bushing-ratio, 0.62);
37
37
  --_sonic-switch-font-ratio: var(--sonic-switch-font-ratio, 0.4);
38
+ --_sonic-switch-font-own: calc(var(--_sonic-switch-size) * var(--sonic-switch-font-ratio));
38
39
  --_sonic-unit: calc(var(--_sonic-switch-size) / 32);
39
40
  --_sonic-switch-reach: calc(var(--_sonic-switch-size) * var(--_sonic-switch-reach-ratio));
40
41
  --_sonic-switch-ball: calc(var(--_sonic-switch-size) * var(--_sonic-switch-bat-ratio));
@@ -46,12 +47,12 @@
46
47
  --_sonic-switch-metal: color-mix(
47
48
  in oklab,
48
49
  var(--_sonic-switch-cap) calc(100% - 55% * var(--_sonic-relief)),
49
- #fff
50
+ var(--_sonic-shine)
50
51
  );
51
52
  --_sonic-switch-metal-shade: color-mix(
52
53
  in oklab,
53
54
  var(--_sonic-switch-cap) calc(100% - 20% * var(--_sonic-relief)),
54
- #000
55
+ var(--_sonic-shade)
55
56
  );
56
57
 
57
58
  display: inline-grid;
@@ -84,7 +85,13 @@
84
85
  place-self: stretch;
85
86
  padding: 0;
86
87
  font: inherit;
87
- font-size: calc(var(--_sonic-switch-size) * var(--_sonic-switch-font-ratio));
88
+ font-size: var(
89
+ --_sonic-switch-font-own,
90
+ var(
91
+ --sonic-legend-font-size,
92
+ calc(var(--_sonic-switch-size) * var(--_sonic-switch-font-ratio))
93
+ )
94
+ );
88
95
  color: inherit;
89
96
  text-transform: inherit;
90
97
  letter-spacing: inherit;
@@ -241,7 +248,7 @@
241
248
  --_sonic-switch-bushing-shade: color-mix(
242
249
  in oklab,
243
250
  var(--_sonic-cap) calc(100% - 20% * var(--_sonic-relief)),
244
- #000
251
+ var(--_sonic-shade)
245
252
  );
246
253
 
247
254
  inline-size: calc(var(--_sonic-switch-size) * var(--_sonic-switch-bushing-ratio));
@@ -251,10 +258,20 @@
251
258
  --sonic-well,
252
259
  radial-gradient(
253
260
  closest-side,
254
- color-mix(in oklab, var(--_sonic-cap) calc(100% - 70% * var(--_sonic-relief)), #000) 0 42%,
261
+ color-mix(
262
+ in oklab,
263
+ var(--_sonic-cap) calc(100% - 70% * var(--_sonic-relief)),
264
+ var(--_sonic-shade)
265
+ )
266
+ 0 42%,
255
267
  var(--_sonic-switch-bushing-shade) 48%,
256
268
  var(--_sonic-cap) 70%,
257
- color-mix(in oklab, var(--_sonic-cap) calc(100% - 25% * var(--_sonic-relief)), #fff) 88%,
269
+ color-mix(
270
+ in oklab,
271
+ var(--_sonic-cap) calc(100% - 25% * var(--_sonic-relief)),
272
+ var(--_sonic-shine)
273
+ )
274
+ 88%,
258
275
  var(--_sonic-switch-bushing-shade)
259
276
  )
260
277
  );
@@ -266,7 +283,7 @@
266
283
  color-mix(
267
284
  in oklab,
268
285
  var(--_sonic-switch-cap) calc(100% - 60% * var(--_sonic-relief)),
269
- #000
286
+ var(--_sonic-shade)
270
287
  )
271
288
  ),
272
289
  calc(1.5 * var(--_sonic-cast-x)) calc(1.5 * var(--_sonic-cast-y)) calc(2 * var(--_sonic-unit))
@@ -279,7 +296,11 @@
279
296
  --_sonic-switch-pivot: calc((var(--_sonic-switch-size) - var(--_sonic-switch-shaft)) / 2);
280
297
  --_sonic-switch-sheen: linear-gradient(
281
298
  var(--_sonic-light-fall),
282
- color-mix(in oklab, var(--_sonic-switch-metal) calc(100% - 45% * var(--_sonic-relief)), #fff)
299
+ color-mix(
300
+ in oklab,
301
+ var(--_sonic-switch-metal) calc(100% - 45% * var(--_sonic-relief)),
302
+ var(--_sonic-shine)
303
+ )
283
304
  12%,
284
305
  var(--_sonic-switch-metal) 45%,
285
306
  var(--_sonic-switch-metal-shade) 88%
@@ -287,7 +308,11 @@
287
308
  --_sonic-switch-outline: max(1px, round(0.4 * var(--_sonic-unit), var(--_sonic-snap)));
288
309
  --_sonic-switch-rim: var(
289
310
  --sonic-cap-edge,
290
- color-mix(in oklab, var(--_sonic-switch-cap) calc(100% - 30% * var(--_sonic-relief)), #000)
311
+ color-mix(
312
+ in oklab,
313
+ var(--_sonic-switch-cap) calc(100% - 30% * var(--_sonic-relief)),
314
+ var(--_sonic-shade)
315
+ )
291
316
  );
292
317
 
293
318
  position: relative;
@@ -344,7 +369,7 @@
344
369
  calc((var(--_sonic-switch-ball) - var(--_sonic-switch-size)) / 2);
345
370
  box-shadow:
346
371
  inset 0 0 calc(1.5 * var(--_sonic-unit)) calc(0.4 * var(--_sonic-unit))
347
- rgb(0 0 0 / calc(0.3 * var(--_sonic-relief))),
372
+ rgb(from var(--_sonic-shade) r g b / calc(0.3 * var(--_sonic-relief))),
348
373
  0 0 0 var(--_sonic-switch-outline) var(--_sonic-switch-rim),
349
374
  var(--_sonic-focus-shadow);
350
375
  translate: calc(var(--_sonic-switch-along-x) * var(--_sonic-switch-throw))
@@ -52,6 +52,7 @@
52
52
  --_sonic-toggle-bevel-ratio: var(--sonic-toggle-bevel-ratio, 0.075);
53
53
  --_sonic-toggle-depth-ratio: var(--sonic-toggle-depth-ratio, calc(0.03 * var(--_sonic-relief)));
54
54
  --_sonic-toggle-font-ratio: var(--sonic-toggle-font-ratio, 0.26);
55
+ --_sonic-toggle-font-own: calc(var(--_sonic-toggle-size) * var(--sonic-toggle-font-ratio));
55
56
  --_sonic-toggle-press-scale: var(--sonic-toggle-press-scale, 0.985);
56
57
  --_sonic-toggle-icon-ratio: var(--sonic-toggle-icon-ratio, 0.5);
57
58
  --_sonic-toggle-led-ratio: var(--sonic-toggle-led-ratio, 0.25);
@@ -107,7 +108,7 @@
107
108
  user-select: none;
108
109
  transition:
109
110
  --_sonic-toggle-at 120ms cubic-bezier(0.4, 0, 0.2, 1),
110
- --_sonic-toggle-sink 60ms cubic-bezier(0.4, 0, 0.2, 1);
111
+ --_sonic-toggle-sink var(--_sonic-press-duration) cubic-bezier(0.4, 0, 0.2, 1);
111
112
  }
112
113
 
113
114
  [orientation='vertical'] > .sonic-toggle {
@@ -122,7 +123,7 @@
122
123
  }
123
124
 
124
125
  :state(dragging) > .sonic-toggle {
125
- transition: --_sonic-toggle-sink 60ms cubic-bezier(0.4, 0, 0.2, 1);
126
+ transition: --_sonic-toggle-sink var(--_sonic-press-duration) cubic-bezier(0.4, 0, 0.2, 1);
126
127
  }
127
128
 
128
129
  [data-sonic-lit='ok'] > .sonic-toggle:has(> [role='switch']),
@@ -205,7 +206,7 @@
205
206
  box-shadow:
206
207
  var(--_sonic-well),
207
208
  inset 0 0 0 calc(1px * (1 - var(--_sonic-relief))) var(--_sonic-toggle-well-edge);
208
- transition: --_sonic-toggle-well-tint 120ms ease-out;
209
+ transition: --_sonic-toggle-well-tint var(--_sonic-fade-duration) ease-out;
209
210
  }
210
211
 
211
212
  /* The position rides `--_sonic-toggle-at`, which already eases; easing the offset too would trail a drag */
@@ -219,8 +220,8 @@
219
220
  translate: calc(var(--_sonic-toggle-along-x) * var(--_sonic-toggle-throw))
220
221
  calc(var(--_sonic-toggle-along-y) * var(--_sonic-toggle-throw) + var(--_sonic-toggle-sink));
221
222
  transition:
222
- scale 60ms cubic-bezier(0.4, 0, 0.2, 1),
223
- box-shadow 60ms cubic-bezier(0.4, 0, 0.2, 1);
223
+ scale var(--_sonic-press-duration) cubic-bezier(0.4, 0, 0.2, 1),
224
+ box-shadow var(--_sonic-press-duration) cubic-bezier(0.4, 0, 0.2, 1);
224
225
 
225
226
  & > .sonic-led {
226
227
  --_sonic-led-size: var(
@@ -241,7 +242,13 @@
241
242
  position: relative;
242
243
  padding: 0;
243
244
  font: inherit;
244
- font-size: calc(var(--_sonic-toggle-size) * var(--_sonic-toggle-font-ratio));
245
+ font-size: var(
246
+ --_sonic-toggle-font-own,
247
+ var(
248
+ --sonic-legend-font-size,
249
+ calc(var(--_sonic-toggle-size) * var(--_sonic-toggle-font-ratio))
250
+ )
251
+ );
245
252
  line-height: 1;
246
253
  color: inherit;
247
254
  text-transform: inherit;
@@ -304,7 +311,7 @@
304
311
  opacity: 0;
305
312
  translate: calc(var(--_sonic-toggle-along-x) * var(--_sonic-toggle-ride))
306
313
  calc(var(--_sonic-toggle-along-y) * var(--_sonic-toggle-ride) + var(--_sonic-toggle-sink));
307
- transition: opacity 120ms ease-out;
314
+ transition: opacity var(--_sonic-fade-duration) ease-out;
308
315
 
309
316
  & > * {
310
317
  filter: var(--_sonic-engraving);
@@ -92,7 +92,7 @@
92
92
 
93
93
  .sonic-waveform {
94
94
  --_sonic-waveform-inset: calc(
95
- var(--_sonic-waveform-size) * var(--sonic-waveform-inset-ratio, 0.06)
95
+ var(--_sonic-waveform-size) * var(--sonic-waveform-inset-ratio, 0)
96
96
  );
97
97
  --_sonic-unit: calc(var(--_sonic-waveform-size) / 48);
98
98
  --_sonic-glass-depth: var(--sonic-glass-depth, calc(0.6 * var(--_sonic-relief)));
@@ -104,7 +104,11 @@
104
104
  --_sonic-waveform-wave: var(--_sonic-waveform-lit);
105
105
  --_sonic-waveform-wave-edge: var(
106
106
  --sonic-waveform-edge,
107
- color-mix(in oklab, var(--_sonic-waveform-lit) calc(100% - 55% * var(--_sonic-relief)), #000)
107
+ color-mix(
108
+ in oklab,
109
+ var(--_sonic-waveform-lit) calc(100% - 55% * var(--_sonic-relief)),
110
+ var(--_sonic-shade)
111
+ )
108
112
  );
109
113
  --_sonic-waveform-grid: var(--sonic-waveform-grid, var(--_sonic-etch));
110
114
  --_sonic-waveform-ends: var(--sonic-waveform-ends, var(--_sonic-etch));
@@ -135,8 +139,15 @@
135
139
  touch-action: var(--sonic-touch-action, pan-y);
136
140
  cursor: grab;
137
141
 
138
- --_sonic-glass-radius: calc(
139
- var(--_sonic-waveform-size) * var(--sonic-waveform-radius-ratio, 0.08)
142
+ --_sonic-waveform-radius-own: calc(
143
+ var(--_sonic-waveform-size) * var(--sonic-waveform-radius-ratio)
144
+ );
145
+ --_sonic-glass-radius: var(
146
+ --_sonic-waveform-radius-own,
147
+ var(
148
+ --sonic-radius,
149
+ calc(var(--_sonic-waveform-size) * var(--sonic-waveform-radius-ratio, 0.08))
150
+ )
140
151
  );
141
152
 
142
153
  border-radius: var(--_sonic-glass-radius);
@@ -213,7 +224,7 @@
213
224
  }
214
225
 
215
226
  .sonic-waveform-label[data-sonic-dimmed] {
216
- color: color-mix(in oklab, var(--_sonic-marker, var(--_sonic-waveform-label)) 50%, transparent);
227
+ filter: opacity(0.5);
217
228
  }
218
229
 
219
230
  /* Opaque, since a system highlight carries alpha that would blend the wave into the glass */
@@ -245,6 +256,7 @@
245
256
 
246
257
  &[data-sonic-dimmed] {
247
258
  color: GrayText;
259
+ filter: none;
248
260
  }
249
261
  }
250
262
 
@@ -111,7 +111,7 @@
111
111
  --_sonic-wavestrip-groove-size: var(--sonic-wavestrip-groove-size, 0px);
112
112
  --_sonic-wavestrip-marker-ratio: var(--sonic-wavestrip-marker-ratio, 0.065);
113
113
  --_sonic-wavestrip-inset: calc(
114
- var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-inset-ratio, 0.1)
114
+ var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-inset-ratio, 0)
115
115
  );
116
116
  --_sonic-unit: calc(var(--_sonic-wavestrip-size) / 32);
117
117
  --_sonic-wavestrip-lit: var(--_sonic-lit);
@@ -143,8 +143,15 @@
143
143
  touch-action: var(--sonic-touch-action, pan-y);
144
144
  cursor: ew-resize;
145
145
 
146
- --_sonic-glass-radius: calc(
147
- var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-radius-ratio, 0.15)
146
+ --_sonic-wavestrip-radius-own: calc(
147
+ var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-radius-ratio)
148
+ );
149
+ --_sonic-glass-radius: var(
150
+ --_sonic-wavestrip-radius-own,
151
+ var(
152
+ --sonic-radius,
153
+ calc(var(--_sonic-wavestrip-size) * var(--sonic-wavestrip-radius-ratio, 0.15))
154
+ )
148
155
  );
149
156
 
150
157
  border-radius: var(--_sonic-glass-radius);
@@ -170,6 +177,7 @@
170
177
  display: block;
171
178
  inline-size: 100%;
172
179
  block-size: 100%;
180
+ border-radius: max(0px, var(--_sonic-glass-radius) - var(--_sonic-wavestrip-inset));
173
181
  }
174
182
 
175
183
  .sonic-wavestrip-markers {
@@ -41,7 +41,11 @@
41
41
  touch-action: none;
42
42
  cursor: crosshair;
43
43
 
44
- --_sonic-glass-radius: calc(var(--_sonic-xy-size) * var(--_sonic-xy-radius-ratio));
44
+ --_sonic-xy-radius-own: calc(var(--_sonic-xy-size) * var(--sonic-xy-radius-ratio));
45
+ --_sonic-glass-radius: var(
46
+ --_sonic-xy-radius-own,
47
+ var(--sonic-radius, calc(var(--_sonic-xy-size) * var(--_sonic-xy-radius-ratio)))
48
+ );
45
49
 
46
50
  border-radius: var(--_sonic-glass-radius);
47
51
  }
@@ -144,7 +148,7 @@
144
148
 
145
149
  cursor: var(--_sonic-xy-cursor);
146
150
  filter: drop-shadow(0 0 calc(0.15 * var(--_sonic-xy-puck)) var(--_sonic-xy-puck-glow));
147
- transition: filter 120ms ease-out;
151
+ transition: filter var(--_sonic-fade-duration) ease-out;
148
152
 
149
153
  &::before {
150
154
  position: absolute;
@@ -156,9 +160,9 @@
156
160
  border-radius: 50%;
157
161
  box-shadow: var(--_sonic-xy-puck-ring);
158
162
  transition:
159
- background-color 120ms ease-out,
160
- border-color 120ms ease-out,
161
- box-shadow 120ms ease-out;
163
+ background-color var(--_sonic-fade-duration) ease-out,
164
+ border-color var(--_sonic-fade-duration) ease-out,
165
+ box-shadow var(--_sonic-fade-duration) ease-out;
162
166
  }
163
167
  }
164
168
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsynaptic/sonic-ui",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "Native custom elements for audio interfaces, skinned with CSS custom properties",
5
5
  "keywords": [
6
6
  "custom-elements",
@@ -38,11 +38,6 @@
38
38
  "development": "./dist/dev/index.js",
39
39
  "import": "./dist/default/index.js"
40
40
  },
41
- "./dat": {
42
- "types": "./dist/dev/dat.d.ts",
43
- "development": "./dist/dev/dat.js",
44
- "import": "./dist/default/dat.js"
45
- },
46
41
  "./define": {
47
42
  "types": "./dist/dev/define.d.ts",
48
43
  "development": "./dist/dev/define.js",