@tremolo-ui/react 0.0.6 → 0.0.8

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 (133) hide show
  1. package/dist/cjs/index.js +954 -217
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/components/AnimationCanvas/index.d.ts +16 -9
  4. package/dist/cjs/types/components/AnimationCanvas/index.d.ts.map +1 -1
  5. package/dist/cjs/types/components/AnimationKnob/index.d.ts +53 -0
  6. package/dist/cjs/types/components/AnimationKnob/index.d.ts.map +1 -0
  7. package/dist/cjs/types/components/DragObserver/index.d.ts +19 -0
  8. package/dist/cjs/types/components/DragObserver/index.d.ts.map +1 -0
  9. package/dist/cjs/types/components/Knob/index.d.ts +26 -26
  10. package/dist/cjs/types/components/Knob/index.d.ts.map +1 -1
  11. package/dist/cjs/types/components/NumberInput/index.d.ts +2 -5
  12. package/dist/cjs/types/components/NumberInput/index.d.ts.map +1 -1
  13. package/dist/cjs/types/components/Piano/BlackKey.d.ts +3 -3
  14. package/dist/cjs/types/components/Piano/BlackKey.d.ts.map +1 -1
  15. package/dist/cjs/types/components/Piano/KeyLabel.d.ts +5 -8
  16. package/dist/cjs/types/components/Piano/KeyLabel.d.ts.map +1 -1
  17. package/dist/cjs/types/components/Piano/WhiteKey.d.ts +3 -3
  18. package/dist/cjs/types/components/Piano/WhiteKey.d.ts.map +1 -1
  19. package/dist/cjs/types/components/Piano/index.d.ts +4 -5
  20. package/dist/cjs/types/components/Piano/index.d.ts.map +1 -1
  21. package/dist/cjs/types/components/Piano/key.d.ts +4 -7
  22. package/dist/cjs/types/components/Piano/key.d.ts.map +1 -1
  23. package/dist/cjs/types/components/Piano/keyboardShortcuts.d.ts.map +1 -1
  24. package/dist/cjs/types/components/Slider/Scale.d.ts +11 -0
  25. package/dist/cjs/types/components/Slider/Scale.d.ts.map +1 -0
  26. package/dist/cjs/types/components/Slider/ScaleOption.d.ts +25 -0
  27. package/dist/cjs/types/components/Slider/ScaleOption.d.ts.map +1 -0
  28. package/dist/cjs/types/components/Slider/Thumb.d.ts +5 -13
  29. package/dist/cjs/types/components/Slider/Thumb.d.ts.map +1 -1
  30. package/dist/cjs/types/components/Slider/Track.d.ts +10 -21
  31. package/dist/cjs/types/components/Slider/Track.d.ts.map +1 -1
  32. package/dist/cjs/types/components/Slider/context.d.ts +21 -0
  33. package/dist/cjs/types/components/Slider/context.d.ts.map +1 -0
  34. package/dist/cjs/types/components/Slider/index.d.ts +18 -12
  35. package/dist/cjs/types/components/Slider/index.d.ts.map +1 -1
  36. package/dist/cjs/types/components/WheelObserver/index.d.ts +24 -0
  37. package/dist/cjs/types/components/WheelObserver/index.d.ts.map +1 -0
  38. package/dist/cjs/types/components/XYPad/Area.d.ts +13 -0
  39. package/dist/cjs/types/components/XYPad/Area.d.ts.map +1 -0
  40. package/dist/cjs/types/components/XYPad/Thumb.d.ts +19 -0
  41. package/dist/cjs/types/components/XYPad/Thumb.d.ts.map +1 -0
  42. package/dist/cjs/types/components/XYPad/index.d.ts +39 -0
  43. package/dist/cjs/types/components/XYPad/index.d.ts.map +1 -0
  44. package/dist/cjs/types/hooks/useCallbackRef.d.ts.map +1 -1
  45. package/dist/cjs/types/index.d.ts +11 -0
  46. package/dist/cjs/types/index.d.ts.map +1 -1
  47. package/dist/esm/index.js +932 -218
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/types/components/AnimationCanvas/index.d.ts +16 -9
  50. package/dist/esm/types/components/AnimationCanvas/index.d.ts.map +1 -1
  51. package/dist/esm/types/components/AnimationKnob/index.d.ts +53 -0
  52. package/dist/esm/types/components/AnimationKnob/index.d.ts.map +1 -0
  53. package/dist/esm/types/components/DragObserver/index.d.ts +19 -0
  54. package/dist/esm/types/components/DragObserver/index.d.ts.map +1 -0
  55. package/dist/esm/types/components/Knob/index.d.ts +26 -26
  56. package/dist/esm/types/components/Knob/index.d.ts.map +1 -1
  57. package/dist/esm/types/components/NumberInput/index.d.ts +2 -5
  58. package/dist/esm/types/components/NumberInput/index.d.ts.map +1 -1
  59. package/dist/esm/types/components/Piano/BlackKey.d.ts +3 -3
  60. package/dist/esm/types/components/Piano/BlackKey.d.ts.map +1 -1
  61. package/dist/esm/types/components/Piano/KeyLabel.d.ts +5 -8
  62. package/dist/esm/types/components/Piano/KeyLabel.d.ts.map +1 -1
  63. package/dist/esm/types/components/Piano/WhiteKey.d.ts +3 -3
  64. package/dist/esm/types/components/Piano/WhiteKey.d.ts.map +1 -1
  65. package/dist/esm/types/components/Piano/index.d.ts +4 -5
  66. package/dist/esm/types/components/Piano/index.d.ts.map +1 -1
  67. package/dist/esm/types/components/Piano/key.d.ts +4 -7
  68. package/dist/esm/types/components/Piano/key.d.ts.map +1 -1
  69. package/dist/esm/types/components/Piano/keyboardShortcuts.d.ts.map +1 -1
  70. package/dist/esm/types/components/Slider/Scale.d.ts +11 -0
  71. package/dist/esm/types/components/Slider/Scale.d.ts.map +1 -0
  72. package/dist/esm/types/components/Slider/ScaleOption.d.ts +25 -0
  73. package/dist/esm/types/components/Slider/ScaleOption.d.ts.map +1 -0
  74. package/dist/esm/types/components/Slider/Thumb.d.ts +5 -13
  75. package/dist/esm/types/components/Slider/Thumb.d.ts.map +1 -1
  76. package/dist/esm/types/components/Slider/Track.d.ts +10 -21
  77. package/dist/esm/types/components/Slider/Track.d.ts.map +1 -1
  78. package/dist/esm/types/components/Slider/context.d.ts +21 -0
  79. package/dist/esm/types/components/Slider/context.d.ts.map +1 -0
  80. package/dist/esm/types/components/Slider/index.d.ts +18 -12
  81. package/dist/esm/types/components/Slider/index.d.ts.map +1 -1
  82. package/dist/esm/types/components/WheelObserver/index.d.ts +24 -0
  83. package/dist/esm/types/components/WheelObserver/index.d.ts.map +1 -0
  84. package/dist/esm/types/components/XYPad/Area.d.ts +13 -0
  85. package/dist/esm/types/components/XYPad/Area.d.ts.map +1 -0
  86. package/dist/esm/types/components/XYPad/Thumb.d.ts +19 -0
  87. package/dist/esm/types/components/XYPad/Thumb.d.ts.map +1 -0
  88. package/dist/esm/types/components/XYPad/index.d.ts +39 -0
  89. package/dist/esm/types/components/XYPad/index.d.ts.map +1 -0
  90. package/dist/esm/types/hooks/useCallbackRef.d.ts.map +1 -1
  91. package/dist/esm/types/index.d.ts +11 -0
  92. package/dist/esm/types/index.d.ts.map +1 -1
  93. package/dist/styles/index.css +241 -0
  94. package/package.json +2 -5
  95. package/src/components/AnimationCanvas/index.tsx +87 -57
  96. package/src/components/AnimationKnob/index.tsx +305 -0
  97. package/src/components/DragObserver/index.tsx +94 -0
  98. package/src/components/Knob/index.css +48 -0
  99. package/src/components/Knob/index.tsx +152 -165
  100. package/src/components/NumberInput/index.css +25 -0
  101. package/src/components/NumberInput/index.tsx +8 -41
  102. package/src/components/Piano/BlackKey.tsx +104 -98
  103. package/src/components/Piano/KeyLabel.tsx +18 -40
  104. package/src/components/Piano/WhiteKey.tsx +92 -87
  105. package/src/components/Piano/index.css +63 -0
  106. package/src/components/Piano/index.tsx +78 -61
  107. package/src/components/Piano/key.ts +4 -7
  108. package/src/components/Piano/keyboardShortcuts.ts +23 -4
  109. package/src/components/Slider/Scale.tsx +55 -0
  110. package/src/components/Slider/ScaleOption.tsx +103 -0
  111. package/src/components/Slider/Thumb.tsx +69 -76
  112. package/src/components/Slider/Track.tsx +37 -48
  113. package/src/components/Slider/context.tsx +66 -0
  114. package/src/components/Slider/index.css +76 -0
  115. package/src/components/Slider/index.tsx +256 -298
  116. package/src/components/WheelObserver/index.tsx +47 -0
  117. package/src/components/XYPad/Area.tsx +40 -0
  118. package/src/components/XYPad/Thumb.tsx +92 -0
  119. package/src/components/XYPad/index.css +24 -0
  120. package/src/components/XYPad/index.tsx +317 -0
  121. package/src/hooks/useCallbackRef.ts +1 -0
  122. package/src/hooks/useRefCallbackEvent.ts +1 -0
  123. package/src/index.ts +12 -0
  124. package/dist/cjs/types/components/Slider/type.d.ts +0 -7
  125. package/dist/cjs/types/components/Slider/type.d.ts.map +0 -1
  126. package/dist/cjs/types/system/pseudo.d.ts +0 -14
  127. package/dist/cjs/types/system/pseudo.d.ts.map +0 -1
  128. package/dist/esm/types/components/Slider/type.d.ts +0 -7
  129. package/dist/esm/types/components/Slider/type.d.ts.map +0 -1
  130. package/dist/esm/types/system/pseudo.d.ts +0 -14
  131. package/dist/esm/types/system/pseudo.d.ts.map +0 -1
  132. package/src/components/Slider/type.ts +0 -16
  133. package/src/system/pseudo.ts +0 -55
@@ -1,76 +1,65 @@
1
- import { css, CSSObject } from '@emotion/react'
2
- import { ReactElement } from 'react'
3
1
  import clsx from 'clsx'
4
- import { styleHelper } from '@tremolo-ui/functions'
5
- import { isHorizontal } from '@tremolo-ui/functions/Slider'
2
+ import { CSSProperties, ReactElement } from 'react'
6
3
 
7
- import { Direction, gradientDirection } from './type'
4
+ import { styleHelper, xor } from '@tremolo-ui/functions'
8
5
 
9
- interface SliderTrackProps {
6
+ import { useDisabled, useReverse, useVertical } from './context'
7
+
8
+ export const defaultLength = 140
9
+ export const defaultThickness = 10
10
+
11
+ export interface SliderTrackProps {
10
12
  length?: number | string
11
13
  thickness?: number | string
12
14
 
13
- activeBg?: string
14
- inactiveBg?: string
15
- activeHoverBg?: string
16
- inactiveHoverBg?: string
17
-
18
- disabledActiveBg?: string
19
- disabledInactiveBg?: string
20
- disabledActiveHoverBg?: string
21
- disabledInactiveHoverBg?: string
15
+ active?: string
16
+ inactive?: string
22
17
 
23
18
  className?: string
24
- style?: CSSObject
19
+ style?: CSSProperties
25
20
  children?: ReactElement
26
21
 
27
- /** inherit */
22
+ /** @internal */
28
23
  __thumb?: ReactElement
29
- /** inherit */
30
- __direction?: Direction
31
- /** inherit */
32
- __disabled?: boolean
33
- /** internal */
24
+ /** @internal */
34
25
  __percent?: number
35
26
  }
36
27
 
37
28
  export function SliderTrack({
38
- length = 140,
39
- thickness = 10,
40
- activeBg = '#7998ec',
41
- inactiveBg = '#eee',
42
- activeHoverBg = '#6387e9',
43
- inactiveHoverBg = '#e0e0e0',
44
- disabledActiveBg = '#858890',
45
- disabledInactiveBg = '#ddd',
46
- disabledActiveHoverBg = disabledActiveBg,
47
- disabledInactiveHoverBg = disabledInactiveBg,
29
+ length = defaultLength,
30
+ thickness = defaultThickness,
31
+ active,
32
+ inactive,
48
33
  children,
49
34
  className,
50
35
  style,
51
36
  __thumb,
52
- __direction,
53
- __disabled,
54
37
  __percent,
55
38
  }: SliderTrackProps) {
56
- const active = __disabled ? disabledActiveBg : activeBg
57
- const inactive = __disabled ? disabledInactiveBg : inactiveBg
58
- const activeHover = __disabled ? disabledActiveHoverBg : activeHoverBg
59
- const inactiveHover = __disabled ? disabledInactiveHoverBg : inactiveHoverBg
39
+ const vertical = useVertical()
40
+ const reverse = useReverse()
41
+ const disabled = useDisabled()
42
+
43
+ const direction = vertical ? 'bottom' : 'right'
44
+ const colors = {
45
+ '--active': active,
46
+ '--inactive': inactive,
47
+ }
48
+
60
49
  return (
61
50
  <div
62
51
  className={clsx('tremolo-slider-track', className)}
63
- css={css({
64
- position: 'relative',
65
- background: `linear-gradient(to ${gradientDirection(__direction!)}, ${active} ${__percent}%, ${inactive} ${__percent}%)`,
52
+ aria-disabled={disabled}
53
+ style={{
54
+ ...colors,
55
+ background: xor(vertical, reverse)
56
+ ? `linear-gradient(to ${direction}, var(--inactive, #eee) ${__percent}%, var(--active, #7998ec) ${__percent}%)`
57
+ : `linear-gradient(to ${direction}, var(--active, #7998ec) ${__percent}%, var(--inactive, #eee) ${__percent}%)`,
66
58
  borderRadius: styleHelper(thickness!, '/', 2),
67
- width: isHorizontal(__direction!) ? length : thickness,
68
- height: isHorizontal(__direction!) ? thickness : length,
69
- ':hover': {
70
- background: `linear-gradient(to ${gradientDirection(__direction!)}, ${activeHover} ${__percent}%, ${inactiveHover} ${__percent}%)`
71
- },
72
- ...style
73
- })}
59
+ width: !vertical ? length : thickness,
60
+ height: vertical ? length : thickness,
61
+ ...style,
62
+ }}
74
63
  >
75
64
  {children}
76
65
  {__thumb}
@@ -0,0 +1,66 @@
1
+ import { createContext, useState, useContext, ReactNode } from 'react'
2
+
3
+ const minContext = createContext(0)
4
+ const maxContext = createContext(0)
5
+ const stepContext = createContext(0)
6
+ const skewContext = createContext(0)
7
+ const verticalContext = createContext(false)
8
+ const reverseContext = createContext(false)
9
+ const disabledContext = createContext(false)
10
+
11
+ interface Props {
12
+ min: number
13
+ max: number
14
+ step: number
15
+ skew: number
16
+ vertical: boolean
17
+ reverse: boolean
18
+ disabled: boolean
19
+ children: ReactNode
20
+ }
21
+
22
+ export function SliderValuesProvider({
23
+ min: _min,
24
+ max: _max,
25
+ step: _step,
26
+ skew: _skew,
27
+ vertical: _vertical,
28
+ reverse: _reverse,
29
+ disabled: _disabled,
30
+ children,
31
+ }: Props) {
32
+ const [min] = useState(_min)
33
+ const [max] = useState(_max)
34
+ const [step] = useState(_step)
35
+ const [skew] = useState(_skew)
36
+ const [vertical] = useState(_vertical)
37
+ const [reverse] = useState(_reverse)
38
+ const [disabled] = useState(_disabled)
39
+
40
+ return (
41
+ <minContext.Provider value={min}>
42
+ <maxContext.Provider value={max}>
43
+ <stepContext.Provider value={step}>
44
+ <skewContext.Provider value={skew}>
45
+ <verticalContext.Provider value={vertical}>
46
+ <reverseContext.Provider value={reverse}>
47
+ <disabledContext.Provider value={disabled}>
48
+ {children}
49
+ </disabledContext.Provider>
50
+ </reverseContext.Provider>
51
+ </verticalContext.Provider>
52
+ </skewContext.Provider>
53
+ </stepContext.Provider>
54
+ </maxContext.Provider>
55
+ </minContext.Provider>
56
+ )
57
+ }
58
+
59
+ export const useMin = () => useContext(minContext)
60
+ export const useMax = () => useContext(maxContext)
61
+ export const useStep = () => useContext(stepContext)
62
+ export const useSkew = () => useContext(skewContext)
63
+ export const useVertical = () => useContext(verticalContext)
64
+ // export const useSetVertical = () => useContext(setVerticalContext)
65
+ export const useReverse = () => useContext(reverseContext)
66
+ export const useDisabled = () => useContext(disabledContext)
@@ -0,0 +1,76 @@
1
+ .tremolo-slider {
2
+ display: inline-block;
3
+ cursor: pointer;
4
+ outline: 0;
5
+ -webkit-tap-highlight-color: transparent;
6
+
7
+ &[aria-readonly='true'] {
8
+ cursor: not-allowed;
9
+ }
10
+ }
11
+
12
+ .tremolo-slider-thumb-wrapper {
13
+ position: absolute;
14
+ translate: -50% -50%;
15
+ z-index: 100;
16
+ }
17
+
18
+ .tremolo-slider-thumb {
19
+ background: #4e76e6;
20
+ border-radius: 50%;
21
+ outline: none;
22
+
23
+ &[aria-disabled='true'] {
24
+ background: #5d6478;
25
+ }
26
+
27
+ &[aria-readonly='false']:focus {
28
+ box-shadow: 0px 0px 0px 3px rgba(var(--tremolo-theme-color-rgb), 0.2);
29
+ }
30
+ }
31
+
32
+ .tremolo-slider-track {
33
+ --active: #7998ec;
34
+ --inactive: #eee;
35
+
36
+ position: relative;
37
+
38
+ &:hover {
39
+ --active: #6387e9;
40
+ --inactive: #e0e0e0;
41
+ }
42
+
43
+ &[aria-disabled='true'] {
44
+ --active: #858890;
45
+ --inactive: #ddd;
46
+ }
47
+ }
48
+
49
+ .tremolo-slider-scale {
50
+ display: block;
51
+ position: relative;
52
+ }
53
+
54
+ .tremolo-slider-scale-option {
55
+ display: flex;
56
+ color: #222;
57
+ flex-direction: column;
58
+ justify-content: center;
59
+ align-items: center;
60
+ position: absolute;
61
+ translate: -50% 0;
62
+ z-index: 10;
63
+
64
+ &[data-vertical='true'] {
65
+ flex-direction: row;
66
+ translate: 0 -50%;
67
+ }
68
+ }
69
+
70
+ .tremolo-slider-scale-option-mark {
71
+ background-color: currentColor;
72
+ }
73
+
74
+ .tremolo-slider-scale-option-label {
75
+ text-align: right;
76
+ }