message: Extract UniversalSlider from ReangeSlider
diff: -import { HTMLAttributes, useCallback, useMemo, useState } from 'react';
  -import { TouchEvent } from '../Touch/Touch';
  -
  -import { HasPlatform, HasRootRef } from '../../types';
  +import { useCallback, useMemo, useState } from 'react';
  import { withPlatform } from '../../hoc/withPlatform';
  -import { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';
  +import { withAdaptivity } from '../../hoc/withAdaptivity';
  import { clamp } from '../../helpers/math';
  -import { RangeSliderDumb, RangeSliderProps } from '../RangeSlider/RangeSlider';
  +import { UniversalSlider, UniversalSliderProps, UniversalValue } from '../RangeSlider/UniversalSlider';
  -export interface SliderProps extends
  - HasRootRef<HTMLDivElement>,
  - HasPlatform,
  - Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'>,
  - AdaptivityProps {
  - min?: number;
  - max?: number;
  - value?: number;
  - step?: number;
  - disabled?: boolean;
  - onChange?(value: number, e: TouchEvent): void;
  - defaultValue?: number;
  -}
  +export type SliderProps = UniversalSliderProps<number>;
  const Slider = ({ onChange, defaultValue, ...props }: SliderProps) => {
  const isControlled = props.value != null;
  @@ -27,7 +12,7 @@ const Slider = ({ onChange, defaultValue, ...props }: SliderProps) => {
  const [localValue, setValue] = useState(defaultValue == null ? props.min : defaultValue);
  const value = clamp(isControlled ? props.value : localValue, props.min, props.max);
  - const handleChange: RangeSliderProps['onChange'] = useCallback((nextValue, event) => {
  + const handleChange: UniversalSliderProps<UniversalValue>['onChange'] = useCallback((nextValue, event) => {
  if (props.disabled || value === nextValue[1]) {
  return;
  }
  @@ -36,7 +21,7 @@ const Slider = ({ onChange, defaultValue, ...props }: SliderProps) => {
  }, [onChange, isControlled, value]);
  const rangeValue: [null, number] = useMemo(() => [null, value], [value]);
  - return <RangeSliderDumb {...props} value={rangeValue} onChange={handleChange} />;
  + return <UniversalSlider {...props} value={rangeValue} onChange={handleChange} />;
  };
  Slider.defaultProps = {
  