@tremolo-ui/react 0.1.5 → 0.2.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 (40) hide show
  1. package/dist/index.cjs +325 -239
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +149 -64
  4. package/dist/index.css.map +1 -1
  5. package/dist/index.d.cts +229 -199
  6. package/dist/index.d.cts.map +1 -1
  7. package/dist/index.d.ts +229 -199
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +314 -223
  10. package/dist/index.js.map +1 -1
  11. package/package.json +2 -2
  12. package/src/components/Knob/index.css +50 -25
  13. package/src/components/Knob/index.tsx +37 -32
  14. package/src/components/NumberInput/index.css +31 -15
  15. package/src/components/NumberInput/index.tsx +22 -14
  16. package/src/components/Piano/context.tsx +1 -1
  17. package/src/components/Piano/index.css +17 -8
  18. package/src/components/Piano/index.tsx +259 -220
  19. package/src/components/Piano/key.tsx +3 -3
  20. package/src/components/Slider/Thumb.tsx +1 -1
  21. package/src/components/Slider/Track.tsx +3 -3
  22. package/src/components/Slider/index.css +33 -8
  23. package/src/components/Slider/index.tsx +25 -25
  24. package/src/components/XYPad/Area.tsx +4 -3
  25. package/src/components/XYPad/Thumb.tsx +8 -4
  26. package/src/components/XYPad/index.css +18 -4
  27. package/src/components/XYPad/index.tsx +25 -19
  28. package/src/hooks/useAnimationFrame.ts +3 -0
  29. package/src/hooks/useCallbackRef.ts +2 -2
  30. package/src/hooks/useDrag.ts +2 -1
  31. package/src/hooks/useDragWithElement.ts +2 -1
  32. package/src/hooks/useEventListener.ts +3 -0
  33. package/src/hooks/useInterval.ts +3 -0
  34. package/src/hooks/useLongPress.ts +3 -0
  35. package/src/hooks/useMIDIAccess.ts +40 -0
  36. package/src/hooks/useMIDIInput.ts +50 -0
  37. package/src/hooks/useMIDIMessage.ts +24 -0
  38. package/src/hooks/useRefCallbackEvent.ts +4 -0
  39. package/src/index.ts +30 -35
  40. package/src/styles/global.css +0 -4
package/dist/index.css CHANGED
@@ -1,7 +1,3 @@
1
- :root {
2
- --tremolo-theme-color: #4e76e6;
3
- }
4
-
5
1
  .tremolo-no-select {
6
2
  user-select: none;
7
3
  }
@@ -12,53 +8,79 @@
12
8
  overflow: visible;
13
9
  outline: 0;
14
10
 
15
- &:focus,
16
- &:hover {
17
- > .tremolo-knob-active-line {
18
- color: #4e76e6;
19
- }
20
-
21
- > .tremolo-knob-inactive-line {
22
- color: #ddd;
23
- }
24
-
25
- > .tremolo-knob-thumb {
26
- color: #ccc;
27
- }
28
- }
29
-
30
11
  &[aria-readonly='true'] {
31
12
  cursor: not-allowed;
32
13
  }
33
-
34
- &[aria-disabled='true'] {
35
- > .tremolo-knob-active-line {
36
- color: #5d6478;
37
- }
38
- }
39
14
  }
40
15
 
41
16
  .tremolo-knob-active-line {
42
17
  overflow: visible;
43
- color: #7998ec;
18
+ color: oklch(69.2% 0.17548 266.373);
19
+
20
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
21
+ color: oklch(59.5% 0.17548 266.373);
22
+ }
23
+
24
+ :where(.tremolo-knob[aria-disabled='true']) & {
25
+ color: oklch(50.5% 0.03307 270.021);
26
+ }
44
27
  }
45
28
 
46
29
  .tremolo-knob-inactive-line {
47
- color: #eee;
30
+ color: oklch(95% 0 0);
31
+
32
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
33
+ color: oklch(90% 0 0);
34
+ }
48
35
  }
49
36
 
50
37
  .tremolo-knob-thumb {
51
- color: #d0d0d0;
38
+ color: oklch(85.7% 0 0);
39
+
40
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
41
+ color: oklch(84.5% 0 0);
42
+ }
52
43
  }
53
44
 
54
45
  .tremolo-knob-thumb-line {
55
- color: #eee;
46
+ color: oklch(94.2% 0 0);
47
+ }
48
+
49
+ :where(.dark, [data-theme='dark']) {
50
+ .tremolo-knob-active-line {
51
+ color: oklch(59.5% 0.17548 266.373);
52
+
53
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
54
+ color: oklch(65.2% 0.17548 266.373);
55
+ }
56
+ }
57
+
58
+ .tremolo-knob-inactive-line {
59
+ color: oklch(41.7% 0 0);
60
+
61
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
62
+ color: oklch(44.59% 0 0);
63
+ }
64
+ }
65
+
66
+ .tremolo-knob-thumb {
67
+ color: oklch(48.6% 0 0);
68
+
69
+ :where(.tremolo-knob:focus, .tremolo-knob:hover) & {
70
+ color: oklch(51.7% 0 0);
71
+ }
72
+ }
73
+
74
+ .tremolo-knob-thumb-line {
75
+ color: oklch(84.2% 0 0);
76
+ }
56
77
  }
57
78
 
58
79
  .tremolo-number-input-wrapper {
59
80
  --border-radius: 4px;
60
81
  --stepper-width: 20px;
61
- --active-color: var(--tremolo-theme-color);
82
+ --active-color: oklch(59.5% 0.17548 266.373);
83
+ --border-color: oklch(81% 0 0);
62
84
 
63
85
  display: inline-flex;
64
86
  flex-direction: row;
@@ -66,13 +88,13 @@
66
88
  width: 140px;
67
89
  height: min-content;
68
90
  border-style: solid;
69
- border-color: #c1c1c1;
91
+ border-color: var(--border-color);
70
92
  border-width: 0px;
71
93
  outline: none;
72
94
  transition: all 0.1s;
73
95
 
74
96
  &:not(:focus-within):has(> .tremolo-number-input[data-error='true']) {
75
- border-color: #f34343;
97
+ border-color: oklch(64.245% 0.21266 25.499);
76
98
  }
77
99
 
78
100
  &[data-variant='outline'] {
@@ -80,29 +102,30 @@
80
102
  border-radius: var(--border-radius);
81
103
 
82
104
  &:hover {
83
- border-color: #909090;
105
+ --border-color: oklch(65.335% 0 0);
84
106
  }
85
107
 
86
108
  &:focus-within {
87
- border-color: var(--active-color);
109
+ --border-color: var(--active-color);
88
110
  box-shadow: 0px 0px 0px 2px
89
111
  color-mix(in srgb, var(--active-color) 10%, transparent);
90
112
  }
91
113
  }
92
114
 
93
115
  &[data-variant='filled'] {
116
+ --bg: oklch(95.88% 0 0);
94
117
  border-width: 1px;
95
118
  border-radius: var(--border-radius);
96
119
  border-color: transparent;
97
- background-color: #edf2f7;
120
+ background-color: var(--bg);
98
121
 
99
122
  &:hover {
100
- background-color: #e4e9ee;
123
+ --bg: oklch(93.166% 0 0);
101
124
  }
102
125
 
103
126
  &:focus-within {
104
127
  background-color: inherit;
105
- border-color: var(--active-color);
128
+ --border-color: var(--active-color);
106
129
  box-shadow: 0px 0px 0px 2px
107
130
  color-mix(in srgb, var(--active-color) 10%, transparent);
108
131
  }
@@ -112,11 +135,11 @@
112
135
  border-bottom-width: 1px;
113
136
 
114
137
  &:hover {
115
- border-color: #909090;
138
+ --border-color: oklch(65.335% 0 0);
116
139
  }
117
140
 
118
141
  &:focus-within {
119
- border-color: var(--active-color);
142
+ --border-color: var(--active-color);
120
143
  box-shadow: 0px 2px 0px 0px
121
144
  color-mix(in srgb, var(--active-color) 10%, transparent);
122
145
  }
@@ -173,7 +196,7 @@
173
196
  .tremolo-number-input-increment-stepper {
174
197
  border-inline-start-width: 1px;
175
198
  border-inline-start-style: solid;
176
- border-inline-start-color: #ccc;
199
+ border-inline-start-color: oklch(84.522% 0 0);
177
200
  font-size: calc(0.75rem);
178
201
  display: flex;
179
202
  justify-content: center;
@@ -185,7 +208,7 @@
185
208
  border-top-right-radius: var(--border-radius);
186
209
 
187
210
  &[aria-disabled='false']:active {
188
- background-color: #3443560e;
211
+ background-color: oklch(37.798% 0.03812 254.612 / 0.055);
189
212
  }
190
213
 
191
214
  &[aria-disabled='true'] {
@@ -200,8 +223,8 @@
200
223
  .tremolo-number-input-decrement-stepper {
201
224
  border-inline-start-width: 1px;
202
225
  border-inline-start-style: solid;
203
- border-inline-start-color: #ccc;
204
- border-top: 1px solid #ccc;
226
+ border-inline-start-color: oklch(84.522% 0 0);
227
+ border-top: 1px solid oklch(84.522% 0 0);
205
228
  font-size: calc(0.75rem);
206
229
  display: flex;
207
230
  justify-content: center;
@@ -213,7 +236,7 @@
213
236
  border-bottom-right-radius: var(--border-radius);
214
237
 
215
238
  &[aria-disabled='false']:active {
216
- background-color: #3443560e;
239
+ background-color: oklch(37.798% 0.03812 254.612 / 0.055);
217
240
  }
218
241
 
219
242
  &[aria-disabled='true'] {
@@ -225,6 +248,20 @@
225
248
  }
226
249
  }
227
250
 
251
+ :where(.dark, [data-theme='dark']) {
252
+ .tremolo-number-input-wrapper {
253
+ --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
+ }
263
+ }
264
+
228
265
  .tremolo-piano {
229
266
  display: inline-block;
230
267
  box-sizing: border-box;
@@ -234,10 +271,10 @@
234
271
  }
235
272
 
236
273
  .tremolo-piano-white-key {
237
- --bg: white;
238
- --color: black;
239
- --active-bg: #ccc;
240
- --active-color: black;
274
+ --bg: oklch(100% 0 0);
275
+ --color: oklch(0% 0 0);
276
+ --active-bg: oklch(92% 0 0);
277
+ --active-color: oklch(0% 0 0);
241
278
 
242
279
  box-sizing: border-box;
243
280
  position: absolute;
@@ -260,10 +297,10 @@
260
297
  }
261
298
 
262
299
  .tremolo-piano-black-key {
263
- --color: white;
264
- --bg: #333;
265
- --active-color: white;
266
- --active-bg: #666;
300
+ --color: oklch(100% 0 0);
301
+ --bg: oklch(32% 0 0);
302
+ --active-color: oklch(100% 0 0);
303
+ --active-bg: oklch(44% 0 0);
267
304
 
268
305
  box-sizing: border-box;
269
306
  position: absolute;
@@ -307,6 +344,15 @@
307
344
  max-width: calc(100% - 16px);
308
345
  }
309
346
 
347
+ :where(.dark, [data-theme='dark']) {
348
+ .tremolo-piano-white-key {
349
+ --bg: oklch(80% 0 0);
350
+ --color: oklch(0% 0 0);
351
+ --active-bg: oklch(72% 0 0);
352
+ --active-color: oklch(0% 0 0);
353
+ }
354
+ }
355
+
310
356
  .tremolo-slider {
311
357
  display: inline-block;
312
358
  cursor: pointer;
@@ -325,14 +371,14 @@
325
371
  }
326
372
 
327
373
  .tremolo-slider-thumb {
328
- --color: var(--tremolo-theme-color);
374
+ --color: oklch(59.5% 0.17548 266.373);
329
375
 
330
376
  background: var(--color);
331
377
  border-radius: 50%;
332
378
  outline: none;
333
379
 
334
380
  &[aria-disabled='true'] {
335
- background: #5d6478;
381
+ background: oklch(50.462% 0.03307 270.021);
336
382
  }
337
383
 
338
384
  &[aria-readonly='false']:focus {
@@ -342,8 +388,8 @@
342
388
  }
343
389
 
344
390
  .tremolo-slider-track {
345
- --active: #7998ec;
346
- --inactive: #eee;
391
+ --active: oklch(69.212% 0.12903 267.633);
392
+ --inactive: oklch(95% 0 0);
347
393
 
348
394
  position: relative;
349
395
 
@@ -356,13 +402,13 @@
356
402
  }
357
403
 
358
404
  &:hover {
359
- --active: #6387e9;
405
+ --active: oklch(64.276% 0.15244 266.932);
360
406
  --inactive: #e0e0e0;
361
407
  }
362
408
 
363
409
  &[aria-disabled='true'] {
364
- --active: #858890;
365
- --inactive: #ddd;
410
+ --active: oklch(75.327% 0.01237 264.547);
411
+ --inactive: oklch(89.755% 0.0001 271.152);
366
412
  }
367
413
  }
368
414
 
@@ -373,7 +419,7 @@
373
419
 
374
420
  .tremolo-slider-scale-option {
375
421
  display: flex;
376
- color: #222;
422
+ color: oklch(25.197% 0.00003 271.152);
377
423
  flex-direction: column;
378
424
  justify-content: center;
379
425
  align-items: center;
@@ -395,13 +441,38 @@
395
441
  text-align: right;
396
442
  }
397
443
 
444
+ :where(.dark, [data-theme='dark']) {
445
+ .tremolo-slider-thumb {
446
+ --color: oklch(64.5% 0.17548 266.373);
447
+
448
+ &:hover {
449
+ --color: oklch(67.5% 0.17548 266.373);
450
+ }
451
+ }
452
+
453
+ .tremolo-slider-track {
454
+ --active: oklch(59.5% 0.17548 266.373);
455
+ --inactive: oklch(41.7% 0 0);
456
+
457
+ &:hover {
458
+ --active: oklch(62.5% 0.17548 266.373);
459
+ --inactive: oklch(44.7% 0 0);
460
+ }
461
+
462
+ &[aria-disabled='true'] {
463
+ --active: oklch(75.327% 0.01237 264.547);
464
+ --inactive: oklch(89.755% 0.0001 271.152);
465
+ }
466
+ }
467
+ }
468
+
398
469
  .tremolo-xy-pad {
399
470
  display: inline-block;
400
471
  cursor: pointer;
401
472
  }
402
473
 
403
474
  .tremolo-xy-pad-area {
404
- --color: #eee;
475
+ --color: oklch(95% 0 0);
405
476
 
406
477
  position: relative;
407
478
  background-color: var(--color);
@@ -414,21 +485,35 @@
414
485
  }
415
486
 
416
487
  .tremolo-xy-pad-thumb {
417
- --color: var(--tremolo-theme-color);
488
+ --color: oklch(59.5% 0.17548 266.373);
418
489
 
419
490
  border-radius: 50%;
420
491
  outline: none;
421
492
  background-color: var(--color);
422
493
 
423
494
  &[aria-disabled='true'] {
424
- background-color: #5d6478;
495
+ background-color: oklch(50.462% 0.03307 270.021);
425
496
  }
426
497
 
427
- &:focus {
498
+ &[aria-readonly='false']:focus {
428
499
  box-shadow: 0px 0px 0px 3px
429
500
  color-mix(in srgb, var(--color) 20%, transparent);
430
501
  }
431
502
  }
432
503
 
504
+ :where(.dark, [data-theme='dark']) {
505
+ .tremolo-xy-pad-area {
506
+ --color: oklch(41.7% 0 0);
507
+ }
508
+
509
+ .tremolo-xy-pad-thumb {
510
+ --color: oklch(64.5% 0.17548 266.373);
511
+
512
+ &:hover {
513
+ --color: oklch(67.5% 0.17548 266.373);
514
+ }
515
+ }
516
+ }
517
+
433
518
 
434
519
  /*# sourceMappingURL=index.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"index.css","names":[],"sources":["../src/styles/global.css","../src/components/Knob/index.css","../src/components/NumberInput/index.css","../src/components/Piano/index.css","../src/components/Slider/index.css","../src/components/XYPad/index.css"],"sourcesContent":[":root {\n --tremolo-theme-color: #4e76e6;\n}\n\n.tremolo-no-select {\n user-select: none;\n}\n",".tremolo-knob {\n display: inline-block;\n cursor: pointer;\n overflow: visible;\n outline: 0;\n\n &:focus,\n &:hover {\n > .tremolo-knob-active-line {\n color: #4e76e6;\n }\n\n > .tremolo-knob-inactive-line {\n color: #ddd;\n }\n\n > .tremolo-knob-thumb {\n color: #ccc;\n }\n }\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n\n &[aria-disabled='true'] {\n > .tremolo-knob-active-line {\n color: #5d6478;\n }\n }\n}\n\n.tremolo-knob-active-line {\n overflow: visible;\n color: #7998ec;\n}\n\n.tremolo-knob-inactive-line {\n color: #eee;\n}\n\n.tremolo-knob-thumb {\n color: #d0d0d0;\n}\n\n.tremolo-knob-thumb-line {\n color: #eee;\n}\n",".tremolo-number-input-wrapper {\n --border-radius: 4px;\n --stepper-width: 20px;\n --active-color: var(--tremolo-theme-color);\n\n display: inline-flex;\n flex-direction: row;\n position: relative;\n width: 140px;\n height: min-content;\n border-style: solid;\n border-color: #c1c1c1;\n border-width: 0px;\n outline: none;\n transition: all 0.1s;\n\n &:not(:focus-within):has(> .tremolo-number-input[data-error='true']) {\n border-color: #f34343;\n }\n\n &[data-variant='outline'] {\n border-width: 1px;\n border-radius: var(--border-radius);\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus-within {\n border-color: var(--active-color);\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-variant='filled'] {\n border-width: 1px;\n border-radius: var(--border-radius);\n border-color: transparent;\n background-color: #edf2f7;\n\n &:hover {\n background-color: #e4e9ee;\n }\n\n &:focus-within {\n background-color: inherit;\n border-color: var(--active-color);\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-variant='flushed'] {\n border-bottom-width: 1px;\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus-within {\n border-color: var(--active-color);\n box-shadow: 0px 2px 0px 0px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-stepper='false'] {\n --stepper-width: 0px;\n }\n}\n\n.tremolo-number-input {\n display: block;\n color: inherit;\n width: calc(100% - 20px - var(--stepper-width));\n background-color: inherit;\n font: inherit;\n padding: 6px 10px;\n\n margin: 0;\n border: none;\n outline: none;\n appearance: none;\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-number-input-stepper {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n top: 0;\n right: 0;\n width: var(--stepper-width);\n transition: all 0.1s linear;\n\n &[data-dynamic='true'] {\n opacity: 0;\n transform: translateX(40%);\n }\n}\n\n:is(\n .tremolo-number-input-wrapper:hover,\n .tremolo-number-input-wrapper:focus-within\n )\n .tremolo-number-input-stepper {\n opacity: 1;\n transform: translateX(0);\n}\n\n.tremolo-number-input-increment-stepper {\n border-inline-start-width: 1px;\n border-inline-start-style: solid;\n border-inline-start-color: #ccc;\n font-size: calc(0.75rem);\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1 1 0%;\n max-height: 50%;\n user-select: none;\n cursor: pointer;\n border-top-right-radius: var(--border-radius);\n\n &[aria-disabled='false']:active {\n background-color: #3443560e;\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-number-input-decrement-stepper {\n border-inline-start-width: 1px;\n border-inline-start-style: solid;\n border-inline-start-color: #ccc;\n border-top: 1px solid #ccc;\n font-size: calc(0.75rem);\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1 1 0%;\n max-height: 50%;\n user-select: none;\n cursor: pointer;\n border-bottom-right-radius: var(--border-radius);\n\n &[aria-disabled='false']:active {\n background-color: #3443560e;\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n",".tremolo-piano {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n touch-action: none;\n position: relative;\n}\n\n.tremolo-piano-white-key {\n --bg: white;\n --color: black;\n --active-bg: #ccc;\n --active-color: black;\n\n box-sizing: border-box;\n position: absolute;\n background-color: var(--bg);\n -webkit-tap-highlight-color: transparent;\n color: var(--color);\n border: 1px solid #555;\n border-radius: 0px 0px 8px 8px;\n cursor: pointer;\n z-index: 1;\n\n &[data-active='true'] {\n background-color: var(--active-bg);\n color: var(--active-color);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-piano-black-key {\n --color: white;\n --bg: #333;\n --active-color: white;\n --active-bg: #666;\n\n box-sizing: border-box;\n position: absolute;\n background-color: var(--bg);\n -webkit-tap-highlight-color: transparent;\n color: var(--color);\n border: 1px solid #555;\n border-radius: 0px 0px 8px 8px;\n cursor: pointer;\n z-index: 2;\n\n &[data-active='true'] {\n background-color: var(--active-bg);\n color: var(--active-color);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-piano-key-label-wrapper {\n display: flex;\n justify-content: center;\n align-items: end;\n height: 100%;\n}\n\n.tremolo-piano-key-label {\n box-sizing: content-box;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 0.6rem;\n height: 10px;\n margin-bottom: 10px;\n padding: 4px;\n border-radius: 4px;\n border: 1px solid #888;\n aspect-ratio: 1;\n max-width: calc(100% - 16px);\n}\n",".tremolo-slider {\n display: inline-block;\n cursor: pointer;\n outline: 0;\n -webkit-tap-highlight-color: transparent;\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-slider-thumb-wrapper {\n position: absolute;\n translate: -50% -50%;\n z-index: 100;\n}\n\n.tremolo-slider-thumb {\n --color: var(--tremolo-theme-color);\n\n background: var(--color);\n border-radius: 50%;\n outline: none;\n\n &[aria-disabled='true'] {\n background: #5d6478;\n }\n\n &[aria-readonly='false']:focus {\n box-shadow: 0px 0px 0px 3px\n color-mix(in srgb, var(--color) 20%, transparent);\n }\n}\n\n.tremolo-slider-track {\n --active: #7998ec;\n --inactive: #eee;\n\n position: relative;\n\n &[data-vertical='false'] {\n min-width: 50px;\n }\n\n &[data-vertical='true'] {\n min-height: 50px;\n }\n\n &:hover {\n --active: #6387e9;\n --inactive: #e0e0e0;\n }\n\n &[aria-disabled='true'] {\n --active: #858890;\n --inactive: #ddd;\n }\n}\n\n.tremolo-slider-scale {\n display: block;\n position: relative;\n}\n\n.tremolo-slider-scale-option {\n display: flex;\n color: #222;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n position: absolute;\n translate: -50% 0;\n z-index: 10;\n\n &[data-vertical='true'] {\n flex-direction: row;\n translate: 0 -50%;\n }\n}\n\n.tremolo-slider-scale-option-mark {\n background-color: currentColor;\n}\n\n.tremolo-slider-scale-option-label {\n text-align: right;\n}\n",".tremolo-xy-pad {\n display: inline-block;\n cursor: pointer;\n}\n\n.tremolo-xy-pad-area {\n --color: #eee;\n\n position: relative;\n background-color: var(--color);\n}\n\n.tremolo-xy-pad-thumb-wrapper {\n position: absolute;\n translate: -50% -50%;\n z-index: 100;\n}\n\n.tremolo-xy-pad-thumb {\n --color: var(--tremolo-theme-color);\n\n border-radius: 50%;\n outline: none;\n background-color: var(--color);\n\n &[aria-disabled='true'] {\n background-color: #5d6478;\n }\n\n &:focus {\n box-shadow: 0px 0px 0px 3px\n color-mix(in srgb, var(--color) 20%, transparent);\n }\n}\n"],"mappings":"AAAA;AACA;AACA;;AAEA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AC/CA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;ACtFA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"index.css","names":[],"sources":["../src/styles/global.css","../src/components/Knob/index.css","../src/components/NumberInput/index.css","../src/components/Piano/index.css","../src/components/Slider/index.css","../src/components/XYPad/index.css"],"sourcesContent":[".tremolo-no-select {\n user-select: none;\n}\n",".tremolo-knob {\n display: inline-block;\n cursor: pointer;\n overflow: visible;\n outline: 0;\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-knob-active-line {\n overflow: visible;\n color: oklch(69.2% 0.17548 266.373);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(59.5% 0.17548 266.373);\n }\n\n :where(.tremolo-knob[aria-disabled='true']) & {\n color: oklch(50.5% 0.03307 270.021);\n }\n}\n\n.tremolo-knob-inactive-line {\n color: oklch(95% 0 0);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(90% 0 0);\n }\n}\n\n.tremolo-knob-thumb {\n color: oklch(85.7% 0 0);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(84.5% 0 0);\n }\n}\n\n.tremolo-knob-thumb-line {\n color: oklch(94.2% 0 0);\n}\n\n:where(.dark, [data-theme='dark']) {\n .tremolo-knob-active-line {\n color: oklch(59.5% 0.17548 266.373);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(65.2% 0.17548 266.373);\n }\n }\n\n .tremolo-knob-inactive-line {\n color: oklch(41.7% 0 0);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(44.59% 0 0);\n }\n }\n\n .tremolo-knob-thumb {\n color: oklch(48.6% 0 0);\n\n :where(.tremolo-knob:focus, .tremolo-knob:hover) & {\n color: oklch(51.7% 0 0);\n }\n }\n\n .tremolo-knob-thumb-line {\n color: oklch(84.2% 0 0);\n }\n}\n",".tremolo-number-input-wrapper {\n --border-radius: 4px;\n --stepper-width: 20px;\n --active-color: oklch(59.5% 0.17548 266.373);\n --border-color: oklch(81% 0 0);\n\n display: inline-flex;\n flex-direction: row;\n position: relative;\n width: 140px;\n height: min-content;\n border-style: solid;\n border-color: var(--border-color);\n border-width: 0px;\n outline: none;\n transition: all 0.1s;\n\n &:not(:focus-within):has(> .tremolo-number-input[data-error='true']) {\n border-color: oklch(64.245% 0.21266 25.499);\n }\n\n &[data-variant='outline'] {\n border-width: 1px;\n border-radius: var(--border-radius);\n\n &:hover {\n --border-color: oklch(65.335% 0 0);\n }\n\n &:focus-within {\n --border-color: var(--active-color);\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-variant='filled'] {\n --bg: oklch(95.88% 0 0);\n border-width: 1px;\n border-radius: var(--border-radius);\n border-color: transparent;\n background-color: var(--bg);\n\n &:hover {\n --bg: oklch(93.166% 0 0);\n }\n\n &:focus-within {\n background-color: inherit;\n --border-color: var(--active-color);\n box-shadow: 0px 0px 0px 2px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-variant='flushed'] {\n border-bottom-width: 1px;\n\n &:hover {\n --border-color: oklch(65.335% 0 0);\n }\n\n &:focus-within {\n --border-color: var(--active-color);\n box-shadow: 0px 2px 0px 0px\n color-mix(in srgb, var(--active-color) 10%, transparent);\n }\n }\n\n &[data-stepper='false'] {\n --stepper-width: 0px;\n }\n}\n\n.tremolo-number-input {\n display: block;\n color: inherit;\n width: calc(100% - 20px - var(--stepper-width));\n background-color: inherit;\n font: inherit;\n padding: 6px 10px;\n\n margin: 0;\n border: none;\n outline: none;\n appearance: none;\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-number-input-stepper {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n top: 0;\n right: 0;\n width: var(--stepper-width);\n transition: all 0.1s linear;\n\n &[data-dynamic='true'] {\n opacity: 0;\n transform: translateX(40%);\n }\n}\n\n:is(\n .tremolo-number-input-wrapper:hover,\n .tremolo-number-input-wrapper:focus-within\n )\n .tremolo-number-input-stepper {\n opacity: 1;\n transform: translateX(0);\n}\n\n.tremolo-number-input-increment-stepper {\n border-inline-start-width: 1px;\n border-inline-start-style: solid;\n border-inline-start-color: oklch(84.522% 0 0);\n font-size: calc(0.75rem);\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1 1 0%;\n max-height: 50%;\n user-select: none;\n cursor: pointer;\n border-top-right-radius: var(--border-radius);\n\n &[aria-disabled='false']:active {\n background-color: oklch(37.798% 0.03812 254.612 / 0.055);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-number-input-decrement-stepper {\n border-inline-start-width: 1px;\n border-inline-start-style: solid;\n border-inline-start-color: oklch(84.522% 0 0);\n border-top: 1px solid oklch(84.522% 0 0);\n font-size: calc(0.75rem);\n display: flex;\n justify-content: center;\n align-items: center;\n flex: 1 1 0%;\n max-height: 50%;\n user-select: none;\n cursor: pointer;\n border-bottom-right-radius: var(--border-radius);\n\n &[aria-disabled='false']:active {\n background-color: oklch(37.798% 0.03812 254.612 / 0.055);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n:where(.dark, [data-theme='dark']) {\n .tremolo-number-input-wrapper {\n --border-color: oklch(52% 0 0);\n\n &[data-variant='filled'] {\n --bg: oklch(43.5% 0 0);\n\n &:hover {\n --bg: oklch(46.6% 0 0);\n }\n }\n }\n}\n",".tremolo-piano {\n display: inline-block;\n box-sizing: border-box;\n user-select: none;\n touch-action: none;\n position: relative;\n}\n\n.tremolo-piano-white-key {\n --bg: oklch(100% 0 0);\n --color: oklch(0% 0 0);\n --active-bg: oklch(92% 0 0);\n --active-color: oklch(0% 0 0);\n\n box-sizing: border-box;\n position: absolute;\n background-color: var(--bg);\n -webkit-tap-highlight-color: transparent;\n color: var(--color);\n border: 1px solid #555;\n border-radius: 0px 0px 8px 8px;\n cursor: pointer;\n z-index: 1;\n\n &[data-active='true'] {\n background-color: var(--active-bg);\n color: var(--active-color);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-piano-black-key {\n --color: oklch(100% 0 0);\n --bg: oklch(32% 0 0);\n --active-color: oklch(100% 0 0);\n --active-bg: oklch(44% 0 0);\n\n box-sizing: border-box;\n position: absolute;\n background-color: var(--bg);\n -webkit-tap-highlight-color: transparent;\n color: var(--color);\n border: 1px solid #555;\n border-radius: 0px 0px 8px 8px;\n cursor: pointer;\n z-index: 2;\n\n &[data-active='true'] {\n background-color: var(--active-bg);\n color: var(--active-color);\n }\n\n &[aria-disabled='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-piano-key-label-wrapper {\n display: flex;\n justify-content: center;\n align-items: end;\n height: 100%;\n}\n\n.tremolo-piano-key-label {\n box-sizing: content-box;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 0.6rem;\n height: 10px;\n margin-bottom: 10px;\n padding: 4px;\n border-radius: 4px;\n border: 1px solid #888;\n aspect-ratio: 1;\n max-width: calc(100% - 16px);\n}\n\n:where(.dark, [data-theme='dark']) {\n .tremolo-piano-white-key {\n --bg: oklch(80% 0 0);\n --color: oklch(0% 0 0);\n --active-bg: oklch(72% 0 0);\n --active-color: oklch(0% 0 0);\n }\n}\n",".tremolo-slider {\n display: inline-block;\n cursor: pointer;\n outline: 0;\n -webkit-tap-highlight-color: transparent;\n\n &[aria-readonly='true'] {\n cursor: not-allowed;\n }\n}\n\n.tremolo-slider-thumb-wrapper {\n position: absolute;\n translate: -50% -50%;\n z-index: 100;\n}\n\n.tremolo-slider-thumb {\n --color: oklch(59.5% 0.17548 266.373);\n\n background: var(--color);\n border-radius: 50%;\n outline: none;\n\n &[aria-disabled='true'] {\n background: oklch(50.462% 0.03307 270.021);\n }\n\n &[aria-readonly='false']:focus {\n box-shadow: 0px 0px 0px 3px\n color-mix(in srgb, var(--color) 20%, transparent);\n }\n}\n\n.tremolo-slider-track {\n --active: oklch(69.212% 0.12903 267.633);\n --inactive: oklch(95% 0 0);\n\n position: relative;\n\n &[data-vertical='false'] {\n min-width: 50px;\n }\n\n &[data-vertical='true'] {\n min-height: 50px;\n }\n\n &:hover {\n --active: oklch(64.276% 0.15244 266.932);\n --inactive: #e0e0e0;\n }\n\n &[aria-disabled='true'] {\n --active: oklch(75.327% 0.01237 264.547);\n --inactive: oklch(89.755% 0.0001 271.152);\n }\n}\n\n.tremolo-slider-scale {\n display: block;\n position: relative;\n}\n\n.tremolo-slider-scale-option {\n display: flex;\n color: oklch(25.197% 0.00003 271.152);\n flex-direction: column;\n justify-content: center;\n align-items: center;\n position: absolute;\n translate: -50% 0;\n z-index: 10;\n\n &[data-vertical='true'] {\n flex-direction: row;\n translate: 0 -50%;\n }\n}\n\n.tremolo-slider-scale-option-mark {\n background-color: currentColor;\n}\n\n.tremolo-slider-scale-option-label {\n text-align: right;\n}\n\n:where(.dark, [data-theme='dark']) {\n .tremolo-slider-thumb {\n --color: oklch(64.5% 0.17548 266.373);\n\n &:hover {\n --color: oklch(67.5% 0.17548 266.373);\n }\n }\n\n .tremolo-slider-track {\n --active: oklch(59.5% 0.17548 266.373);\n --inactive: oklch(41.7% 0 0);\n\n &:hover {\n --active: oklch(62.5% 0.17548 266.373);\n --inactive: oklch(44.7% 0 0);\n }\n\n &[aria-disabled='true'] {\n --active: oklch(75.327% 0.01237 264.547);\n --inactive: oklch(89.755% 0.0001 271.152);\n }\n }\n}\n",".tremolo-xy-pad {\n display: inline-block;\n cursor: pointer;\n}\n\n.tremolo-xy-pad-area {\n --color: oklch(95% 0 0);\n\n position: relative;\n background-color: var(--color);\n}\n\n.tremolo-xy-pad-thumb-wrapper {\n position: absolute;\n translate: -50% -50%;\n z-index: 100;\n}\n\n.tremolo-xy-pad-thumb {\n --color: oklch(59.5% 0.17548 266.373);\n\n border-radius: 50%;\n outline: none;\n background-color: var(--color);\n\n &[aria-disabled='true'] {\n background-color: oklch(50.462% 0.03307 270.021);\n }\n\n &[aria-readonly='false']:focus {\n box-shadow: 0px 0px 0px 3px\n color-mix(in srgb, var(--color) 20%, transparent);\n }\n}\n\n:where(.dark, [data-theme='dark']) {\n .tremolo-xy-pad-area {\n --color: oklch(41.7% 0 0);\n }\n\n .tremolo-xy-pad-thumb {\n --color: oklch(64.5% 0.17548 266.373);\n\n &:hover {\n --color: oklch(67.5% 0.17548 266.373);\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AC/GA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA"}