🎉 We are thrilled to introduce FastStore v2. If you are looking for documentation of the previous version of FastStore, please refer to FastStore v1.

Slider

Sliders allow users to select a single value from a range.

Overview


Import

Import the component from @faststore/ui

import { Slider } from '@faststore/ui'

Import Styles

import '@faststore/ui/src/components/atoms/Slider/styles.scss'

Usage

$0$500
$100$250
<Slider
  max={{ absolute: 500, selected: 250 }}
  min={{ absolute: 0, selected: 100 }}
  absoluteValuesLabel={{
    min: useFormattedPrice(0),
    max: useFormattedPrice(500),
  }}
  maxValueLabelComponent={(maxValue) => {
    return <Price formatter={useFormattedPrice} value={maxValue} />
  }}
  minValueLabelComponent={(minValue) => {
    return <Price formatter={useFormattedPrice} value={minValue} />
  }}
/>

Props

NameTypeDescriptionDefault
testIdstringID to find this component in testing tools (e.g.: cypress, testing library, and jest).fs-slider
min*RangeThe minimum value of the slider.
max*RangeThe maximum value of the slider.
stepnumberSpecifies the number interval to be used in the inputs.
absoluteValuesLabel*RangeLabelSpecifies the absolute values labels.
onChange(value: { min: number; max: number; }) => voidCallback that fires when the slider value changes.
onEnd(value: { min: number; max: number; }) => voidCallback that fires when the slider value ends changing.
getAriaValueText(value: number, thumb?: "min" | "max") => stringA function used to set a human-readable value text based on the slider's current value.
minValueLabelComponent(minValue: number) => ReactNodeComponent that renders min value label above the left thumb.
maxValueLabelComponent(maxValue: number) => ReactNodeComponent that renders max value label above the right thumb.

Range

NameTypeDescriptionDefault
absolutenumberThe absolute value of the slider.
selectednumberThe selected value of the slider.

RangeLabel

NameTypeDescriptionDefault
minstring | ReactNodeLabel for minimum range value.
maxstring | ReactNodeLabel for maximum range value.

Design Tokens

Local tokenDefault value/Global token linked
--fs-slider-heightvar(--fs-spacing-2)
--fs-slider-border-radiusvar(--fs-border-radius-pill)
--fs-slider-margin-bottomvar(--fs-spacing-3)
--fs-slider-slider-bkg-color
var(--fs-color-neutral-bkg)
--fs-slider-slider-selection-bkg-color
var(--fs-color-primary-bkg-light-active)
--fs-slider-transition-functionvar(--fs-transition-function)
--fs-slider-transition-propertyvar(--fs-transition-property)
--fs-slider-transition-timingvar(--fs-transition-timing)

Nested Elements

Thumb

Local tokenDefault value/Global token linked
--fs-slider-thumb-sizevar(--fs-spacing-4)
--fs-slider-thumb-bkg-color
var(--fs-color-primary-bkg)
--fs-slider-thumb-bkg-color-hover
var(--fs-color-primary-bkg-hover)
--fs-slider-thumb-border-widthvar(--fs-border-width)
--fs-slider-thumb-border-radiusvar(--fs-border-radius-circle)
--fs-slider-thumb-border-color
var(--fs-slider-thumb-bkg-color)
--fs-slider-thumb-border-color-hover
var(--fs-slider-thumb-bkg-color-hover)

Absolute Values

Local tokenDefault value/Global token linked
--fs-slider-absolute-values-text-color
var(--fs-color-disabled-text)

Value Label

Local tokenDefault value/Global token linked
--fs-slider-value-label-bottomvar(--fs-spacing-3)
--fs-slider-value-label-bkg-color
var(--fs-color-body-bkg)

Customization

For further customization, you can use the following data attributes:

data-fs-slider

data-fs-slider-absolute-values

data-fs-slider-range

data-fs-slider-thumb="left" | "right"

data-fs-slider-value-label="min" | "max"


Related components

  • $0$500
    $100$250

    PriceRange

    Price Ranges are sliders that allows users to select a maximum and minimum price.

    See more