Slider

Ползунок для выбора одного значения или диапазона [min, max]. Поверх rc-slider — те же клавиатурные шорткаты и семантика, но с токенами дизайн-системы и расширениями: handleTip с форматированием и marksEqualSpacing для нелинейных наборов значений.

Когда использовать

  • Выбор числового параметра в известном диапазоне: цена, громкость, приоритет.
  • Фильтры «от…до» (range).
  • Управление параметрами, где ценно видеть относительное положение (например, прозрачность).

Когда не стоит: точный ввод числа (лучше InputNumber), бинарные переключения (Switch), выбор из дискретных вариантов без порядка (RadioGroup).

Установка

pnpm add @cloud-ru/ds-slider
import { Slider } from '@cloud-ru/ds-slider'

Примеры использования

Базовый слайдер

Базовый слайдерОдно значение, без меток
tsx
import { Slider } from '@cloud-ru/ds-slider';

export function Basic() {
  return <Slider min={0} max={100} defaultValue={40} />;
}

Диапазон

Диапазонrange + handleTip — видно оба значения
tsx
import { Slider } from '@cloud-ru/ds-slider';

export function Range() {
  return <Slider range min={0} max={100} defaultValue={[20, 70]} handleTip />;
}

С метками

С метками
tsx
import { Slider } from '@cloud-ru/ds-slider';

export function Marks() {
  return (
    <Slider
      min={0}
      max={100}
      step={25}
      marks={{ 0: '0', 25: '25', 50: '50', 75: '75', 100: '100' }}
      defaultValue={50}
      handleTip
    />
  );
}

Disabled

Disabled
tsx
import { Slider } from '@cloud-ru/ds-slider';

export function Disabled() {
  return <Slider min={0} max={100} defaultValue={40} disabled />;
}

Props

Types

PropsSliderProps
PropTypeDefaultRequiredDescription
activeHandleRender((origin: React.ReactElement<React.HTMLAttributes<HTMLDivElement>>, props: RenderProps) => React.ReactElement) | undefinedno
allowCrossboolean | undefinedno
ariaLabelForHandlestring | string[] | undefinedno
ariaLabelledByForHandlestring | string[] | undefinedno
ariaRequiredboolean | undefinedno
ariaValueTextFormatterForHandleAriaValueFormat | AriaValueFormat[] | undefinedno
autoFocusboolean | undefinedno
classNamestring | undefinedno
countnumber | undefinedno
data-test-idstringnoСтабильный идентификатор для e2e/tests
defaultValuenumber | number[] | undefinedno
disabledboolean | undefinedno
dotsboolean | undefinedno
handleTipbooleannoПоказывать значение в тултипе на ручке
idstring | undefinedno
includedboolean | undefinedno
keyboardboolean | undefinedno
marksRecord<string | number, React.ReactNode | MarkObj> | undefinedno
marksEqualSpacingbooleannoВключение равномерного распределения при нелинейных значениях меток.
maxnumber | undefinedno
minnumber | undefinedno
onAfterChange((value: number | number[]) => void) | undefinedno
onBeforeChange((value: number | number[]) => void) | undefinedno
onBlur((e: React.FocusEvent<HTMLDivElement>) => void) | undefinedno
onChange((value: number | number[]) => void) | undefinedno
onChangeComplete((value: number | number[]) => void) | undefinedno
onFocus((e: React.FocusEvent<HTMLDivElement>) => void) | undefinedno
pushablenumber | boolean | undefinedno
rangeboolean | RangeConfig | undefinedno
reverseboolean | undefinedno
startPointnumber | undefinedno
stepnumber | null | undefinedno
tabIndexnumber | number[] | undefinedno
tipFormatter((value: string | number) => ReactNode)noФорматирование подсказки; по умолчанию — сырое значение
trackboolean | undefinedno
valuenumber | number[] | undefinedno

Types

SliderProps

Storybook

Figma