@tremolo-ui/react 0.4.0 → 0.5.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/dist/index.cjs +1125 -1437
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +58 -93
- package/dist/index.d.cts +561 -243
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +561 -243
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1125 -1438
- package/dist/index.js.map +1 -1
- package/package.json +9 -10
- package/src/components/AnimationCanvas/index.tsx +84 -155
- package/src/components/Knob/ActiveLine.tsx +6 -6
- package/src/components/Knob/InactiveLine.tsx +9 -11
- package/src/components/Knob/SVGRoot.tsx +9 -18
- package/src/components/Knob/context.tsx +57 -89
- package/src/components/Knob/index.css +6 -2
- package/src/components/Knob/index.tsx +90 -61
- package/src/components/NumberInput/DecrementStepper.tsx +17 -50
- package/src/components/NumberInput/IncrementStepper.tsx +17 -50
- package/src/components/NumberInput/InputField.tsx +123 -0
- package/src/components/NumberInput/Stepper.tsx +90 -12
- package/src/components/NumberInput/context.tsx +74 -146
- package/src/components/NumberInput/index.css +38 -102
- package/src/components/NumberInput/index.tsx +252 -98
- package/src/components/NumberInput/stepperButton.tsx +90 -0
- package/src/components/Piano/index.tsx +272 -288
- package/src/components/Piano/keyboardShortcuts.ts +34 -4
- package/src/components/PointsEditor/Background.tsx +8 -2
- package/src/components/PointsEditor/Container.tsx +19 -9
- package/src/components/PointsEditor/Point.tsx +104 -24
- package/src/components/PointsEditor/context.tsx +28 -74
- package/src/components/PointsEditor/index.css +5 -0
- package/src/components/PointsEditor/index.tsx +77 -43
- package/src/components/Slider/{Scale.tsx → Marks.tsx} +8 -8
- package/src/components/Slider/{ScaleOption.tsx → MarksOption.tsx} +16 -18
- package/src/components/Slider/Thumb.tsx +55 -68
- package/src/components/Slider/Track.tsx +15 -15
- package/src/components/Slider/context.tsx +36 -51
- package/src/components/Slider/index.css +18 -5
- package/src/components/Slider/index.tsx +127 -146
- package/src/components/Slider/type.ts +4 -4
- package/src/components/XYPad/Area.tsx +16 -7
- package/src/components/XYPad/Thumb.tsx +62 -74
- package/src/components/XYPad/context.tsx +46 -0
- package/src/components/XYPad/index.css +12 -0
- package/src/components/XYPad/index.tsx +190 -230
- package/src/hooks/useDrag.ts +1 -1
- package/src/hooks/useDragValue.ts +149 -0
- package/src/hooks/useEventListener.ts +1 -1
- package/src/hooks/useWheel.ts +29 -9
- package/src/index.ts +15 -9
- package/src/components/AnimationCanvas/canvas.ts +0 -46
- package/src/components/NumberInput/InternalInput.tsx +0 -216
- package/src/components/NumberInput/type.ts +0 -58
- package/src/components/Piano/KeyLabel.tsx +0 -51
- package/src/components/Piano/context.tsx +0 -73
- package/src/components/Piano/key.tsx +0 -205
- package/src/components/_util/type.ts +0 -1
- package/src/hooks/useDragWithElement.ts +0 -100
- package/src/hooks/usePianoDrag.ts +0 -75
- package/src/hooks/useRefCallbackEvent.ts +0 -34
- /package/src/hooks/{useCallbackRef.ts → _internal/useCallbackRef.ts} +0 -0
package/dist/index.css
CHANGED
|
@@ -18,10 +18,12 @@
|
|
|
18
18
|
cursor: none;
|
|
19
19
|
}
|
|
20
20
|
.tremolo-knob {
|
|
21
|
+
--knob-size: 50px;
|
|
22
|
+
width: var(--knob-size);
|
|
23
|
+
height: var(--knob-size);
|
|
21
24
|
cursor: grab;
|
|
22
25
|
outline: 0;
|
|
23
26
|
display: inline-block;
|
|
24
|
-
overflow: visible;
|
|
25
27
|
|
|
26
28
|
&[aria-readonly="true"] {
|
|
27
29
|
cursor: not-allowed;
|
|
@@ -34,7 +36,6 @@
|
|
|
34
36
|
|
|
35
37
|
.tremolo-knob-active-line {
|
|
36
38
|
color: oklch(69.2% .17548 266.373);
|
|
37
|
-
overflow: visible;
|
|
38
39
|
|
|
39
40
|
:where(.tremolo-knob:focus, .tremolo-knob:hover) & {
|
|
40
41
|
color: oklch(59.5% .17548 266.373);
|
|
@@ -94,14 +95,14 @@
|
|
|
94
95
|
color: oklch(84.2% 0 0);
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
|
-
.tremolo-number-input
|
|
98
|
+
.tremolo-number-input {
|
|
98
99
|
--border-radius: 4px;
|
|
99
100
|
--stepper-width: 20px;
|
|
101
|
+
--stepper-icon-size: 12px;
|
|
100
102
|
--active-color: oklch(59.5% .17548 266.373);
|
|
101
103
|
--border-color: oklch(81% 0 0);
|
|
102
|
-
border
|
|
103
|
-
border-
|
|
104
|
-
border-width: 0;
|
|
104
|
+
border: 1px solid var(--border-color);
|
|
105
|
+
border-radius: var(--border-radius);
|
|
105
106
|
outline: none;
|
|
106
107
|
flex-direction: row;
|
|
107
108
|
width: 140px;
|
|
@@ -110,64 +111,26 @@
|
|
|
110
111
|
display: inline-flex;
|
|
111
112
|
position: relative;
|
|
112
113
|
|
|
113
|
-
&:
|
|
114
|
-
border-color: oklch(
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
&[data-variant="outline"] {
|
|
118
|
-
border-radius: var(--border-radius);
|
|
119
|
-
border-width: 1px;
|
|
120
|
-
|
|
121
|
-
&:hover {
|
|
122
|
-
--border-color: oklch(65.335% 0 0);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
&:focus-within {
|
|
126
|
-
--border-color: var(--active-color);
|
|
127
|
-
box-shadow: 0px 0px 0px 2px
|
|
128
|
-
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
129
|
-
}
|
|
114
|
+
&:hover {
|
|
115
|
+
--border-color: oklch(65.335% 0 0);
|
|
130
116
|
}
|
|
131
117
|
|
|
132
|
-
|
|
133
|
-
--
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
border-width: 1px;
|
|
137
|
-
border-color: #0000;
|
|
138
|
-
|
|
139
|
-
&:hover {
|
|
140
|
-
--bg: oklch(93.166% 0 0);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
&:focus-within {
|
|
144
|
-
background-color: inherit;
|
|
145
|
-
--border-color: var(--active-color);
|
|
146
|
-
box-shadow: 0px 0px 0px 2px
|
|
147
|
-
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
148
|
-
}
|
|
118
|
+
&:focus-within {
|
|
119
|
+
--border-color: var(--active-color);
|
|
120
|
+
box-shadow: 0px 0px 0px 2px
|
|
121
|
+
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
149
122
|
}
|
|
150
123
|
|
|
151
|
-
|
|
152
|
-
border-
|
|
153
|
-
|
|
154
|
-
&:hover {
|
|
155
|
-
--border-color: oklch(65.335% 0 0);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
&:focus-within {
|
|
159
|
-
--border-color: var(--active-color);
|
|
160
|
-
box-shadow: 0px 2px 0px 0px
|
|
161
|
-
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
162
|
-
}
|
|
124
|
+
&:not(:focus-within):has(.tremolo-number-input-field[data-out-of-range="true"]) {
|
|
125
|
+
border-color: oklch(64.245% .21266 25.499);
|
|
163
126
|
}
|
|
164
127
|
|
|
165
|
-
|
|
128
|
+
&:not(:has(.tremolo-number-input-stepper)) {
|
|
166
129
|
--stepper-width: 0px;
|
|
167
130
|
}
|
|
168
131
|
}
|
|
169
132
|
|
|
170
|
-
.tremolo-number-input {
|
|
133
|
+
.tremolo-number-input-field {
|
|
171
134
|
color: inherit;
|
|
172
135
|
width: calc(100% - 20px - var(--stepper-width));
|
|
173
136
|
background-color: inherit;
|
|
@@ -187,28 +150,29 @@
|
|
|
187
150
|
.tremolo-number-input-stepper {
|
|
188
151
|
height: 100%;
|
|
189
152
|
width: var(--stepper-width);
|
|
153
|
+
opacity: 0;
|
|
190
154
|
flex-direction: column;
|
|
191
155
|
transition: all .1s linear;
|
|
192
156
|
display: flex;
|
|
193
157
|
position: absolute;
|
|
194
158
|
top: 0;
|
|
195
159
|
right: 0;
|
|
196
|
-
|
|
197
|
-
&[data-dynamic="true"] {
|
|
198
|
-
opacity: 0;
|
|
199
|
-
transform: translateX(40%);
|
|
200
|
-
}
|
|
160
|
+
transform: translateX(40%);
|
|
201
161
|
}
|
|
202
162
|
|
|
203
|
-
:is(.tremolo-number-input
|
|
163
|
+
:is(.tremolo-number-input:hover, .tremolo-number-input:focus-within) .tremolo-number-input-stepper {
|
|
204
164
|
opacity: 1;
|
|
205
165
|
transform: translateX(0);
|
|
206
166
|
}
|
|
207
167
|
|
|
208
|
-
.tremolo-number-input-
|
|
168
|
+
.tremolo-number-input-stepper-icon {
|
|
169
|
+
width: var(--stepper-icon-size);
|
|
170
|
+
height: var(--stepper-icon-size);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
:is(.tremolo-number-input-increment-stepper, .tremolo-number-input-decrement-stepper) {
|
|
209
174
|
user-select: none;
|
|
210
175
|
cursor: pointer;
|
|
211
|
-
border-top-right-radius: var(--border-radius);
|
|
212
176
|
border-inline-start: 1px solid oklch(84.522% 0 0);
|
|
213
177
|
flex: 1;
|
|
214
178
|
justify-content: center;
|
|
@@ -226,39 +190,18 @@
|
|
|
226
190
|
}
|
|
227
191
|
}
|
|
228
192
|
|
|
193
|
+
.tremolo-number-input-increment-stepper {
|
|
194
|
+
border-top-right-radius: var(--border-radius);
|
|
195
|
+
}
|
|
196
|
+
|
|
229
197
|
.tremolo-number-input-decrement-stepper {
|
|
230
|
-
border-inline-start: 1px solid oklch(84.522% 0 0);
|
|
231
|
-
user-select: none;
|
|
232
|
-
cursor: pointer;
|
|
233
198
|
border-bottom-right-radius: var(--border-radius);
|
|
234
199
|
border-top: 1px solid oklch(84.522% 0 0);
|
|
235
|
-
flex: 1;
|
|
236
|
-
justify-content: center;
|
|
237
|
-
align-items: center;
|
|
238
|
-
max-height: 50%;
|
|
239
|
-
font-size: .75rem;
|
|
240
|
-
display: flex;
|
|
241
|
-
|
|
242
|
-
&[aria-disabled="false"]:active {
|
|
243
|
-
background-color: oklch(37.798% .03812 254.612 / .055);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
&[aria-disabled="true"], &[aria-readonly="true"] {
|
|
247
|
-
cursor: not-allowed;
|
|
248
|
-
}
|
|
249
200
|
}
|
|
250
201
|
|
|
251
202
|
:where(.dark, [data-theme="dark"]) {
|
|
252
|
-
& .tremolo-number-input
|
|
203
|
+
& .tremolo-number-input {
|
|
253
204
|
--border-color: oklch(52% 0 0);
|
|
254
|
-
|
|
255
|
-
&[data-variant="filled"] {
|
|
256
|
-
--bg: oklch(43.5% 0 0);
|
|
257
|
-
|
|
258
|
-
&:hover {
|
|
259
|
-
--bg: oklch(46.6% 0 0);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
205
|
}
|
|
263
206
|
}
|
|
264
207
|
.tremolo-piano {
|
|
@@ -377,12 +320,23 @@
|
|
|
377
320
|
&[data-dragging="true"] {
|
|
378
321
|
cursor: inherit;
|
|
379
322
|
}
|
|
323
|
+
|
|
324
|
+
&[aria-readonly="true"] {
|
|
325
|
+
cursor: default;
|
|
326
|
+
}
|
|
380
327
|
}
|
|
381
328
|
.tremolo-slider {
|
|
329
|
+
--thumb-size: 22px;
|
|
330
|
+
margin: calc(var(--thumb-size) / 2);
|
|
382
331
|
cursor: pointer;
|
|
383
332
|
-webkit-tap-highlight-color: transparent;
|
|
384
333
|
outline: 0;
|
|
385
|
-
|
|
334
|
+
flex-direction: column;
|
|
335
|
+
display: inline-flex;
|
|
336
|
+
|
|
337
|
+
&[data-vertical="true"] {
|
|
338
|
+
flex-direction: row;
|
|
339
|
+
}
|
|
386
340
|
|
|
387
341
|
&[aria-readonly="true"] {
|
|
388
342
|
cursor: not-allowed;
|
|
@@ -397,6 +351,8 @@
|
|
|
397
351
|
|
|
398
352
|
.tremolo-slider-thumb {
|
|
399
353
|
--color: oklch(59.5% .17548 266.373);
|
|
354
|
+
width: var(--thumb-size);
|
|
355
|
+
height: var(--thumb-size);
|
|
400
356
|
background: var(--color);
|
|
401
357
|
border-radius: 50%;
|
|
402
358
|
outline: none;
|
|
@@ -435,12 +391,12 @@
|
|
|
435
391
|
}
|
|
436
392
|
}
|
|
437
393
|
|
|
438
|
-
.tremolo-slider-
|
|
394
|
+
.tremolo-slider-marks {
|
|
439
395
|
display: block;
|
|
440
396
|
position: relative;
|
|
441
397
|
}
|
|
442
398
|
|
|
443
|
-
.tremolo-slider-
|
|
399
|
+
.tremolo-slider-marks-option {
|
|
444
400
|
color: oklch(25.197% .00003 271.152);
|
|
445
401
|
z-index: 10;
|
|
446
402
|
flex-direction: column;
|
|
@@ -456,11 +412,11 @@
|
|
|
456
412
|
}
|
|
457
413
|
}
|
|
458
414
|
|
|
459
|
-
.tremolo-slider-
|
|
415
|
+
.tremolo-slider-marks-option-mark {
|
|
460
416
|
background-color: currentColor;
|
|
461
417
|
}
|
|
462
418
|
|
|
463
|
-
.tremolo-slider-
|
|
419
|
+
.tremolo-slider-marks-option-label {
|
|
464
420
|
text-align: right;
|
|
465
421
|
}
|
|
466
422
|
|
|
@@ -489,8 +445,15 @@
|
|
|
489
445
|
}
|
|
490
446
|
}
|
|
491
447
|
.tremolo-xy-pad {
|
|
448
|
+
--thumb-size: 22px;
|
|
449
|
+
margin: calc(var(--thumb-size) / 2);
|
|
492
450
|
cursor: pointer;
|
|
451
|
+
-webkit-tap-highlight-color: transparent;
|
|
493
452
|
display: inline-block;
|
|
453
|
+
|
|
454
|
+
&[aria-readonly="true"] {
|
|
455
|
+
cursor: not-allowed;
|
|
456
|
+
}
|
|
494
457
|
}
|
|
495
458
|
|
|
496
459
|
.tremolo-xy-pad-area {
|
|
@@ -507,6 +470,8 @@
|
|
|
507
470
|
|
|
508
471
|
.tremolo-xy-pad-thumb {
|
|
509
472
|
--color: oklch(59.5% .17548 266.373);
|
|
473
|
+
width: var(--thumb-size);
|
|
474
|
+
height: var(--thumb-size);
|
|
510
475
|
background-color: var(--color);
|
|
511
476
|
border-radius: 50%;
|
|
512
477
|
outline: none;
|