@cladd-ui/react 0.7.3 → 0.7.5
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/CHANGELOG.md +13 -0
- package/components/Slider.d.ts +34 -3
- package/components/Slider.d.ts.map +1 -1
- package/components/Slider.js +53 -5
- package/components/Slider.js.map +1 -1
- package/package.json +1 -1
- package/shared/cn.d.ts.map +1 -1
- package/shared/cn.js +26 -1
- package/shared/cn.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.5 (2026-05-20)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add scale option to Slider (linear/log/custom) for non-linear value mapping (9c85e54)
|
|
8
|
+
- add throttle option to Slider for rate-limited onChange during drag (d9a5fb7)
|
|
9
|
+
|
|
10
|
+
## 0.7.4 (2026-05-18)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- teach tailwind-merge about safe-area utilities (92a4065)
|
|
15
|
+
|
|
3
16
|
## 0.7.3 (2026-05-18)
|
|
4
17
|
|
|
5
18
|
### Bug Fixes
|
package/components/Slider.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { ChangeEvent } from 'react';
|
|
2
2
|
import { Color } from '../types.js';
|
|
3
3
|
export type SliderSize = 'sm' | 'md';
|
|
4
|
+
/**
|
|
5
|
+
* Mapping between the user value (passed via `value`, emitted by `onChange`) and the internal slider position (linear 0..1 across the track).
|
|
6
|
+
*
|
|
7
|
+
* - `'linear'` (default): position = (value - min) / (max - min).
|
|
8
|
+
* - `'log'`: equal pixel motion produces equal *ratio* change. Requires `min > 0`.
|
|
9
|
+
* - Object with `toSlider`/`fromSlider`: custom bidirectional mapping.
|
|
10
|
+
*
|
|
11
|
+
* `toSlider(value) -> position` in [0, 1]; `fromSlider(position) -> value`.
|
|
12
|
+
*/
|
|
13
|
+
export type SliderScale = 'linear' | 'log' | {
|
|
14
|
+
toSlider: (value: number) => number;
|
|
15
|
+
fromSlider: (position: number) => number;
|
|
16
|
+
};
|
|
4
17
|
export interface SliderProps {
|
|
5
18
|
/** Controlled value. When omitted, the component falls back to uncontrolled mode using `defaultValue`. */
|
|
6
19
|
value?: number;
|
|
@@ -13,7 +26,11 @@ export interface SliderProps {
|
|
|
13
26
|
min?: number;
|
|
14
27
|
/** Default `100`. */
|
|
15
28
|
max?: number;
|
|
16
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Step size for the emitted value. Default `1`.
|
|
31
|
+
*
|
|
32
|
+
* For non-linear `scale`, the user value is rounded to the nearest `step` after the inverse mapping — so a `log` slider with `step={1}` still emits integer values, but those steps are spaced logarithmically on the track.
|
|
33
|
+
*/
|
|
17
34
|
step?: number;
|
|
18
35
|
/** Slider size token. Drives track and thumb dimensions. Default `'sm'`. */
|
|
19
36
|
size?: SliderSize;
|
|
@@ -21,7 +38,7 @@ export interface SliderProps {
|
|
|
21
38
|
disabled?: boolean;
|
|
22
39
|
/** Block dragging without the disabled visual treatment. */
|
|
23
40
|
readOnly?: boolean;
|
|
24
|
-
/** Fires while the user drags or types a new value (subject to `debounce`). */
|
|
41
|
+
/** Fires while the user drags or types a new value (subject to `debounce` / `throttle`). */
|
|
25
42
|
onChange?: (value: number, event?: ChangeEvent<HTMLInputElement>) => void;
|
|
26
43
|
/** Extra classes for the slider container. */
|
|
27
44
|
className?: string;
|
|
@@ -31,8 +48,22 @@ export interface SliderProps {
|
|
|
31
48
|
* Reserved - currently unused in the rendered output (the underlying `<input type="range">` is always present). Kept for parity with other form components.
|
|
32
49
|
*/
|
|
33
50
|
input?: boolean;
|
|
34
|
-
/** Debounce onChange calls in ms. Defaults to 0 (immediate). */
|
|
51
|
+
/** Debounce onChange calls in ms. Fires once after the user stops changing for N ms. Defaults to 0 (immediate). */
|
|
35
52
|
debounce?: number;
|
|
53
|
+
/** Throttle onChange calls in ms. Fires immediately, then at most once per N ms while changing, with a trailing call for the final value. Defaults to 0 (immediate).
|
|
54
|
+
*
|
|
55
|
+
* Takes precedence over `debounce` when both are set.
|
|
56
|
+
* */
|
|
57
|
+
throttle?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Value-to-position mapping. Default `'linear'`.
|
|
60
|
+
*
|
|
61
|
+
* Use `'log'` (requires `min > 0`) for ranges where ratios matter more than absolute differences — audio frequency, zoom, price brackets.
|
|
62
|
+
* Pass a custom `{ toSlider, fromSlider }` pair for any other curve (quadratic, S-curve, etc.).
|
|
63
|
+
*
|
|
64
|
+
* `min`, `max`, and `value` are always in user-value space. `step` is applied to the emitted value after the inverse mapping (see `step`).
|
|
65
|
+
*/
|
|
66
|
+
scale?: SliderScale;
|
|
36
67
|
}
|
|
37
68
|
/** Shape of `Slider` defaults that can be supplied via `CladdProvider`'s `defaults` prop. */
|
|
38
69
|
export type SliderDefaultProps = Partial<Omit<SliderProps, 'value' | 'defaultValue' | 'onChange'>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/components/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,WAAW,EAAc,MAAM,OAAO,CAAC;AAK7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKjC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/components/Slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,WAAW,EAAc,MAAM,OAAO,CAAC;AAK7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKjC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAIrC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,KAAK,GACL;IACE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,0GAA0G;IAC1G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1E,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mHAAmH;IACnH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;SAGK;IACL,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC,CACzD,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,2CAwOxC"}
|
package/components/Slider.js
CHANGED
|
@@ -6,23 +6,67 @@ import { cn } from '../shared/cn.js';
|
|
|
6
6
|
import { FocusableLayer } from './FocusableLayer.js';
|
|
7
7
|
import { Surface } from './Surface.js';
|
|
8
8
|
import { SurfaceCut } from './SurfaceCut.js';
|
|
9
|
+
const SLIDER_RESOLUTION = 1000;
|
|
9
10
|
export function Slider(props) {
|
|
10
11
|
const accentColor = useAccentColor();
|
|
11
|
-
const { value: valueProp, defaultValue = 0, min = 0, max = 100, step = 1, size = 'sm', readOnly = false, disabled = false, onChange = () => { }, className, color = accentColor, input: _input = false, debounce = 0, } = useComponentDefaults('Slider', props);
|
|
12
|
+
const { value: valueProp, defaultValue = 0, min = 0, max = 100, step = 1, size = 'sm', readOnly = false, disabled = false, onChange = () => { }, className, color = accentColor, input: _input = false, debounce = 0, throttle = 0, scale = 'linear', } = useComponentDefaults('Slider', props);
|
|
12
13
|
const isControlled = valueProp !== undefined;
|
|
13
14
|
const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
|
|
14
15
|
const value = isControlled ? valueProp : uncontrolledValue;
|
|
16
|
+
const scaleFns = scale === 'linear'
|
|
17
|
+
? null
|
|
18
|
+
: scale === 'log'
|
|
19
|
+
? {
|
|
20
|
+
toSlider: (v) => Math.log(v / min) / Math.log(max / min),
|
|
21
|
+
fromSlider: (p) => min * Math.pow(max / min, p),
|
|
22
|
+
}
|
|
23
|
+
: scale;
|
|
15
24
|
const elRef = useRef(null);
|
|
16
25
|
const thumbElRef = useRef(null);
|
|
17
|
-
const progress =
|
|
26
|
+
const progress = scaleFns
|
|
27
|
+
? scaleFns.toSlider(value)
|
|
28
|
+
: (value - min) / (max - min);
|
|
18
29
|
const debounceTimer = useRef(null);
|
|
30
|
+
const throttleTimer = useRef(null);
|
|
31
|
+
const throttleLastFire = useRef(0);
|
|
32
|
+
const throttlePending = useRef(null);
|
|
19
33
|
const isTouched = useRef(false);
|
|
20
34
|
const [isTouchMoved, setIsTouchMoved] = useState(false);
|
|
21
35
|
const onChangeInternal = (e) => {
|
|
22
|
-
const
|
|
36
|
+
const raw = parseFloat(e.target.value);
|
|
37
|
+
let v = scaleFns ? scaleFns.fromSlider(raw / SLIDER_RESOLUTION) : raw;
|
|
38
|
+
if (scaleFns && step > 0)
|
|
39
|
+
v = Math.round(v / step) * step;
|
|
23
40
|
if (!isControlled)
|
|
24
41
|
setUncontrolledValue(v);
|
|
25
|
-
if (
|
|
42
|
+
if (throttle > 0) {
|
|
43
|
+
const now = Date.now();
|
|
44
|
+
const elapsed = now - throttleLastFire.current;
|
|
45
|
+
if (elapsed >= throttle) {
|
|
46
|
+
throttleLastFire.current = now;
|
|
47
|
+
throttlePending.current = null;
|
|
48
|
+
if (throttleTimer.current) {
|
|
49
|
+
clearTimeout(throttleTimer.current);
|
|
50
|
+
throttleTimer.current = null;
|
|
51
|
+
}
|
|
52
|
+
onChange(v, e);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throttlePending.current = v;
|
|
56
|
+
if (!throttleTimer.current) {
|
|
57
|
+
throttleTimer.current = setTimeout(() => {
|
|
58
|
+
throttleTimer.current = null;
|
|
59
|
+
if (throttlePending.current !== null) {
|
|
60
|
+
const pending = throttlePending.current;
|
|
61
|
+
throttlePending.current = null;
|
|
62
|
+
throttleLastFire.current = Date.now();
|
|
63
|
+
onChange(pending);
|
|
64
|
+
}
|
|
65
|
+
}, throttle - elapsed);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (debounce > 0) {
|
|
26
70
|
if (debounceTimer.current)
|
|
27
71
|
clearTimeout(debounceTimer.current);
|
|
28
72
|
debounceTimer.current = setTimeout(() => onChange(v), debounce);
|
|
@@ -35,6 +79,8 @@ export function Slider(props) {
|
|
|
35
79
|
return () => {
|
|
36
80
|
if (debounceTimer.current)
|
|
37
81
|
clearTimeout(debounceTimer.current);
|
|
82
|
+
if (throttleTimer.current)
|
|
83
|
+
clearTimeout(throttleTimer.current);
|
|
38
84
|
};
|
|
39
85
|
}, []);
|
|
40
86
|
const onPointer = (e) => {
|
|
@@ -72,6 +118,8 @@ export function Slider(props) {
|
|
|
72
118
|
}, children: [_jsx("span", { className: cn('relative top-0 size-0 h-0'), "data-part": "value", children: _jsx(Surface, { color: color, variant: "gradient", outline: true, className: cn(size === 'sm' && 'left-2.5', size === 'md' && 'left-3', 'absolute -bottom-4 min-w-8 -translate-x-1/2 scale-0 rounded-cladd-2xl px-1 pt-2.5 pb-8 text-center text-cladd-xs leading-none font-medium text-cladd-primary duration-300', !disabled &&
|
|
73
119
|
!readOnly &&
|
|
74
120
|
'group-focus-within/cladd-slider:scale-100 group-active/cladd-slider:scale-100'), beforeContent: !readOnly &&
|
|
75
|
-
!disabled && (_jsx(FocusableLayer, { group: "slider", className: "rounded-full" })), children: value }) }), _jsx(Surface, { "data-part": "thumb", className: cn('z-10 shrink-0 rounded-full', size === 'sm' && 'size-cladd-thumb-sm', size === 'md' && 'size-cladd-thumb-md'), outline: true, variant: "gradient-fill", color: color, ref: thumbElRef })] }), _jsx("input", { "data-part": "input", className: "relative m-0 block w-full appearance-none border-transparent bg-transparent p-0 focus:outline-none", type: "range", disabled: disabled || readOnly, readOnly: readOnly, value:
|
|
121
|
+
!disabled && (_jsx(FocusableLayer, { group: "slider", className: "rounded-full" })), children: value }) }), _jsx(Surface, { "data-part": "thumb", className: cn('z-10 shrink-0 rounded-full', size === 'sm' && 'size-cladd-thumb-sm', size === 'md' && 'size-cladd-thumb-md'), outline: true, variant: "gradient-fill", color: color, ref: thumbElRef })] }), _jsx("input", { "data-part": "input", className: "relative m-0 block w-full appearance-none border-transparent bg-transparent p-0 focus:outline-none", type: "range", disabled: disabled || readOnly, readOnly: readOnly, value: scaleFns
|
|
122
|
+
? Math.round(scaleFns.toSlider(value) * SLIDER_RESOLUTION)
|
|
123
|
+
: value, min: scaleFns ? 0 : min, max: scaleFns ? SLIDER_RESOLUTION : max, step: scaleFns ? 1 : step, onChange: onChangeInternal })] }));
|
|
76
124
|
}
|
|
77
125
|
//# sourceMappingURL=Slider.js.map
|
package/components/Slider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","sourceRoot":"","sources":["../../../src/components/Slider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAA2B,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Slider.js","sourceRoot":"","sources":["../../../src/components/Slider.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/shared/cn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/shared/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/shared/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AA+H7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
package/shared/cn.js
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
|
-
import { extendTailwindMerge } from 'tailwind-merge';
|
|
2
|
+
import { extendTailwindMerge, validators } from 'tailwind-merge';
|
|
3
|
+
const safe = (prefix) => ({
|
|
4
|
+
[prefix]: ['safe', { safe: [validators.isNumber] }],
|
|
5
|
+
});
|
|
3
6
|
const customTwMerge = extendTailwindMerge({
|
|
4
7
|
extend: {
|
|
8
|
+
classGroups: {
|
|
9
|
+
pl: [safe('pl')],
|
|
10
|
+
pr: [safe('pr')],
|
|
11
|
+
pt: [safe('pt')],
|
|
12
|
+
pb: [safe('pb')],
|
|
13
|
+
px: [{ px: [{ safe: [validators.isNumber] }] }],
|
|
14
|
+
py: [{ py: [{ safe: [validators.isNumber] }] }],
|
|
15
|
+
ml: [safe('ml')],
|
|
16
|
+
mr: [safe('mr')],
|
|
17
|
+
mt: [safe('mt')],
|
|
18
|
+
mb: [safe('mb')],
|
|
19
|
+
mx: [{ mx: [{ safe: [validators.isNumber] }] }],
|
|
20
|
+
my: [{ my: [{ safe: [validators.isNumber] }] }],
|
|
21
|
+
'scroll-ml': [{ 'scroll-ml': [{ safe: [validators.isNumber] }] }],
|
|
22
|
+
'scroll-mr': [{ 'scroll-mr': [{ safe: [validators.isNumber] }] }],
|
|
23
|
+
'scroll-mt': [{ 'scroll-mt': [{ safe: [validators.isNumber] }] }],
|
|
24
|
+
'scroll-mb': [{ 'scroll-mb': [{ safe: [validators.isNumber] }] }],
|
|
25
|
+
left: [safe('left')],
|
|
26
|
+
right: [safe('right')],
|
|
27
|
+
top: [safe('top')],
|
|
28
|
+
bottom: [safe('bottom')],
|
|
29
|
+
},
|
|
5
30
|
theme: {
|
|
6
31
|
text: [
|
|
7
32
|
'cladd-4xs',
|
package/shared/cn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../../../src/shared/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"cn.js","sourceRoot":"","sources":["../../../src/shared/cn.ts"],"names":[],"mappings":"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"}
|