@xsynaptic/sonic-ui 0.6.0 → 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.
Files changed (118) hide show
  1. package/README.md +4 -0
  2. package/dist/default/define/spectrum.js +7 -0
  3. package/dist/default/define.js +1 -0
  4. package/dist/default/elements/button.js +33 -4
  5. package/dist/default/elements/dial.js +5 -1
  6. package/dist/default/elements/display-element.js +77 -0
  7. package/dist/default/elements/envelope.js +15 -3
  8. package/dist/default/elements/meter.js +1 -1
  9. package/dist/default/elements/radio-group.js +3 -2
  10. package/dist/default/elements/readout-claim.js +0 -29
  11. package/dist/default/elements/scale.js +43 -0
  12. package/dist/default/elements/slider.js +82 -3
  13. package/dist/default/elements/sonic-element.js +2 -67
  14. package/dist/default/elements/spectrum.js +230 -0
  15. package/dist/default/elements/switch.js +1 -1
  16. package/dist/default/elements/value-element.js +81 -91
  17. package/dist/default/elements/wave-element.js +59 -9
  18. package/dist/default/elements/waveform.js +56 -10
  19. package/dist/default/elements/wavestrip.js +45 -21
  20. package/dist/default/elements/xy.js +3 -2
  21. package/dist/default/index.js +2 -1
  22. package/dist/default/lib/canvas-surface.js +7 -4
  23. package/dist/default/lib/frame-timeline.js +2 -2
  24. package/dist/default/lib/hover-preview.js +46 -0
  25. package/dist/default/lib/marker-rider.js +7 -4
  26. package/dist/default/lib/mirror-children.js +64 -0
  27. package/dist/default/lib/owned-control.js +10 -0
  28. package/dist/default/lib/pointer-drag.js +7 -2
  29. package/dist/default/lib/spectrum-columns.js +74 -0
  30. package/dist/default/lib/spectrum-levels.js +55 -0
  31. package/dist/default/lib/strip-scene.js +12 -1
  32. package/dist/default/lib/time-regions.js +8 -1
  33. package/dist/dev/define/spectrum.d.ts +2 -0
  34. package/dist/dev/define/spectrum.js +8 -0
  35. package/dist/dev/define/spectrum.js.map +1 -0
  36. package/dist/dev/define.d.ts +3 -1
  37. package/dist/dev/define.js +1 -0
  38. package/dist/dev/elements/button.d.ts +2 -0
  39. package/dist/dev/elements/button.js +33 -4
  40. package/dist/dev/elements/button.js.map +1 -1
  41. package/dist/dev/elements/dial.js +5 -1
  42. package/dist/dev/elements/dial.js.map +1 -1
  43. package/dist/dev/elements/display-element.d.ts +29 -0
  44. package/dist/dev/elements/display-element.js +78 -0
  45. package/dist/dev/elements/display-element.js.map +1 -0
  46. package/dist/dev/elements/envelope.js +15 -3
  47. package/dist/dev/elements/envelope.js.map +1 -1
  48. package/dist/dev/elements/meter.js +1 -1
  49. package/dist/dev/elements/radio-group.js +3 -2
  50. package/dist/dev/elements/radio-group.js.map +1 -1
  51. package/dist/dev/elements/readout-claim.js +0 -29
  52. package/dist/dev/elements/readout-claim.js.map +1 -1
  53. package/dist/dev/elements/scale.js +44 -0
  54. package/dist/dev/elements/scale.js.map +1 -0
  55. package/dist/dev/elements/slider.d.ts +9 -0
  56. package/dist/dev/elements/slider.js +82 -3
  57. package/dist/dev/elements/slider.js.map +1 -1
  58. package/dist/dev/elements/sonic-element.d.ts +0 -8
  59. package/dist/dev/elements/sonic-element.js +3 -90
  60. package/dist/dev/elements/sonic-element.js.map +1 -1
  61. package/dist/dev/elements/spectrum.d.ts +59 -0
  62. package/dist/dev/elements/spectrum.js +231 -0
  63. package/dist/dev/elements/spectrum.js.map +1 -0
  64. package/dist/dev/elements/switch.js +1 -1
  65. package/dist/dev/elements/value-element.d.ts +8 -6
  66. package/dist/dev/elements/value-element.js +81 -91
  67. package/dist/dev/elements/value-element.js.map +1 -1
  68. package/dist/dev/elements/wave-element.d.ts +8 -2
  69. package/dist/dev/elements/wave-element.js +59 -9
  70. package/dist/dev/elements/wave-element.js.map +1 -1
  71. package/dist/dev/elements/waveform.d.ts +12 -4
  72. package/dist/dev/elements/waveform.js +56 -10
  73. package/dist/dev/elements/waveform.js.map +1 -1
  74. package/dist/dev/elements/wavestrip.d.ts +7 -0
  75. package/dist/dev/elements/wavestrip.js +45 -21
  76. package/dist/dev/elements/wavestrip.js.map +1 -1
  77. package/dist/dev/elements/xy.js +3 -2
  78. package/dist/dev/elements/xy.js.map +1 -1
  79. package/dist/dev/index.d.ts +4 -1
  80. package/dist/dev/index.js +2 -1
  81. package/dist/dev/lib/canvas-surface.d.ts +4 -3
  82. package/dist/dev/lib/canvas-surface.js +7 -4
  83. package/dist/dev/lib/canvas-surface.js.map +1 -1
  84. package/dist/dev/lib/frame-timeline.js +2 -2
  85. package/dist/dev/lib/frame-timeline.js.map +1 -1
  86. package/dist/dev/lib/hover-preview.js +47 -0
  87. package/dist/dev/lib/hover-preview.js.map +1 -0
  88. package/dist/dev/lib/marker-rider.js +7 -4
  89. package/dist/dev/lib/marker-rider.js.map +1 -1
  90. package/dist/dev/lib/mirror-children.js +80 -0
  91. package/dist/dev/lib/mirror-children.js.map +1 -0
  92. package/dist/dev/lib/owned-control.js +23 -0
  93. package/dist/dev/lib/owned-control.js.map +1 -0
  94. package/dist/dev/lib/pointer-drag.js +7 -2
  95. package/dist/dev/lib/pointer-drag.js.map +1 -1
  96. package/dist/dev/lib/spectrum-columns.js +75 -0
  97. package/dist/dev/lib/spectrum-columns.js.map +1 -0
  98. package/dist/dev/lib/spectrum-levels.js +56 -0
  99. package/dist/dev/lib/spectrum-levels.js.map +1 -0
  100. package/dist/dev/lib/strip-scene.js +12 -1
  101. package/dist/dev/lib/strip-scene.js.map +1 -1
  102. package/dist/dev/lib/time-regions.js +8 -1
  103. package/dist/dev/lib/time-regions.js.map +1 -1
  104. package/dist/skins/flat.css +2 -1
  105. package/dist/styles/button.css +28 -1
  106. package/dist/styles/controls.css +1 -0
  107. package/dist/styles/envelope.css +30 -30
  108. package/dist/styles/led.css +18 -2
  109. package/dist/styles/material.css +90 -29
  110. package/dist/styles/meter.css +22 -18
  111. package/dist/styles/panel.css +2 -1
  112. package/dist/styles/slider.css +42 -5
  113. package/dist/styles/spectrum.css +105 -0
  114. package/dist/styles/switch.css +10 -7
  115. package/dist/styles/waveform.css +38 -16
  116. package/dist/styles/wavestrip.css +22 -4
  117. package/dist/styles/xy.css +14 -30
  118. package/package.json +2 -1
@@ -34,12 +34,24 @@
34
34
  initial-value: rgb(96 96 104);
35
35
  }
36
36
 
37
- @property --_sonic-waveform-hatch {
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) 45%, #000)
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-hatch: var(--_sonic-etch);
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.08)
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-marker));
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-hatch: rgb(from GrayText r g b / 100%);
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: var(--_sonic-wavestrip-readout-inset)
195
- calc(100cqi + 2 * var(--_sonic-wavestrip-inset) - var(--_sonic-wavestrip-readout-inset));
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 */
@@ -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.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",