Kickresume UI

Command Palette

Search for a command to run...

Slider

An input where the user selects a value from within a given range.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"

export default function SliderDemo() {
  return (
    <Slider
      defaultValue={[75]}
      getAriaLabel={() => "Completion"}
      max={100}
      step={1}
      className="mx-auto w-full max-w-xs"
    />
  )
}

Installation

pnpm dlx shadcn@latest add @kickresume/slider

Usage

import { Slider } from "@/components/ui/slider"
<Slider
  defaultValue={[75]}
  getAriaLabel={() => "Completion"}
  max={100}
  step={1}
  className="mx-auto w-full max-w-xs"
/>

Examples

Range

Use an array with two values for a range slider.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"

export default function SliderRange() {
  return (
    <Slider
      defaultValue={[25, 50]}
      getAriaLabel={(index) =>
        index === 0 ? "Minimum value" : "Maximum value"
      }
      max={100}
      step={5}
      className="mx-auto w-full max-w-xs"
    />
  )
}

Multiple Thumbs

Use an array with multiple values for multiple thumbs.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"

export default function SliderMultiple() {
  return (
    <Slider
      defaultValue={[10, 20, 70]}
      getAriaLabel={(index) => `Value ${index + 1}`}
      max={100}
      step={10}
      className="mx-auto w-full max-w-xs"
    />
  )
}

Vertical

Use orientation="vertical" for a vertical slider.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"

export default function SliderVertical() {
  return (
    <div className="mx-auto flex w-full max-w-xs items-center justify-center gap-6">
      <Slider
        defaultValue={[50]}
        getAriaLabel={() => "First vertical value"}
        max={100}
        step={1}
        orientation="vertical"
        className="h-40"
      />
      <Slider
        defaultValue={[25]}
        getAriaLabel={() => "Second vertical value"}
        max={100}
        step={1}
        orientation="vertical"
        className="h-40"
      />
    </div>
  )
}

Controlled

Loading…
"use client"

import * as React from "react"

import { Label } from "@/components/ui/label"
import { Slider } from "@/components/ui/slider"

export default function SliderControlled() {
  const [value, setValue] = React.useState([0.3, 0.7])

  return (
    <div className="mx-auto grid w-full max-w-xs gap-3">
      <div className="flex items-center justify-between gap-2">
        <Label htmlFor="slider-controlled-temperature">Temperature</Label>
        <span className="text-sm text-muted-foreground">
          {value.join(", ")}
        </span>
      </div>
      <Slider
        id="slider-controlled-temperature"
        value={value}
        getAriaLabel={(index) =>
          index === 0 ? "Minimum temperature" : "Maximum temperature"
        }
        onValueChange={(value) => setValue(value as number[])}
        min={0}
        max={1}
        step={0.1}
      />
    </div>
  )
}

Disabled

Use the disabled prop to disable the slider.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"
import { Field, FieldLabel } from "@/components/ui/field"

export default function SliderDisabled() {
  return (
    <Field data-disabled className="mx-auto w-full max-w-xs">
      <FieldLabel className="sr-only">Disabled value</FieldLabel>
      <Slider
        defaultValue={[50]}
        getAriaLabel={() => "Disabled value"}
        max={100}
        step={1}
        disabled
      />
    </Field>
  )
}

Variants

Use the variant prop to switch between the default, bar, and range styles.

Loading…
"use client"

import { Slider } from "@/components/ui/slider"

export default function SliderVariants() {
  return (
    <div className="mx-auto grid w-full max-w-xs gap-8">
      <Slider
        defaultValue={[60]}
        getAriaLabel={() => "Default value"}
        max={100}
        variant="default"
      />
      <Slider
        defaultValue={[60]}
        getAriaLabel={() => "Bar value"}
        max={100}
        variant="bar"
      />
      <Slider
        defaultValue={[25, 75]}
        getAriaLabel={(index) =>
          index === 0 ? "Range minimum" : "Range maximum"
        }
        max={100}
        variant="range"
      />
    </div>
  )
}

API Reference

The Slider component is built on top of the Base UI Slider primitive and accepts all of its props. In addition, it exposes the following Kickresume-specific prop:

PropTypeDefault
variant"default" | "bar" | "range""default"