Docs Components Forms

Slider

React example follows below.
ts
const sliderFixture = {
id: "slider",
label: "Estimate",
min: 1,
max: 12,
step: 1,
defaultValue: 6,
} as const;
import { Slider } from "@grassroot/ui-react";
export default function SliderDemo() {
return (
<div>
<Slider
aria-label={sliderFixture.label}
min={sliderFixture.min}
max={sliderFixture.max}
step={sliderFixture.step}
defaultValue={sliderFixture.defaultValue}
/>
</div>
);
}
ts
<script setup lang="ts">
import { ref } from "vue";
const sliderFixture = {
id: "slider",
label: "Estimate",
min: 1,
max: 12,
step: 1,
defaultValue: 6,
} as const;
import { Slider } from "@grassroot/ui-vue";
const value = ref(sliderFixture.defaultValue);
</script>
<template>
<div>
<Slider
v-model="value"
:aria-label="sliderFixture.label"
:min="sliderFixture.min"
:max="sliderFixture.max"
:step="sliderFixture.step"
/>
</div>
</template>
ts
import { Component } from "@angular/core";
const sliderFixture = {
id: "slider",
label: "Estimate",
min: 1,
max: 12,
step: 1,
defaultValue: 6,
} as const;
import { GrassrootSlider } from "@grassroot/ui-angular";
@Component({
selector: "app-slider-demo",
standalone: true,
imports: [GrassrootSlider],
template: `<div>
<grassroot-slider
[aria-label]="fixture.label"
[min]="fixture.min"
[max]="fixture.max"
[step]="fixture.step"
[value]="fixture.defaultValue"
/>
</div>`,
})
export class SliderDemoComponent {
protected readonly fixture = sliderFixture;
}
export default SliderDemoComponent;
ts
<script lang="ts">
const sliderFixture = {
id: "slider",
label: "Estimate",
min: 1,
max: 12,
step: 1,
defaultValue: 6,
} as const;
import { Slider } from "@grassroot/ui-svelte";
let value = $state(sliderFixture.defaultValue);
</script>
<div>
<Slider
aria-label={sliderFixture.label}
min={sliderFixture.min}
max={sliderFixture.max}
step={sliderFixture.step}
bind:value
/>
</div>
ts
/** @jsxImportSource solid-js */
const sliderFixture = {
id: "slider",
label: "Estimate",
min: 1,
max: 12,
step: 1,
defaultValue: 6,
} as const;
import { Slider } from "@grassroot/ui-solid";
export default function SliderDemo() {
return (
<div>
<Slider
aria-label={sliderFixture.label}
min={sliderFixture.min}
max={sliderFixture.max}
step={sliderFixture.step}
value={sliderFixture.defaultValue}
/>
</div>
);
}

Installation

API Reference

Import

import { Slider } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
Description
tone
Tone | undefined
"accent"
optional
Brand colour of the thumb.
Prop
tone
Type
Tone | undefined
Default
"accent"
Requirement
optional
Description
Brand colour of the thumb.

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { ref } from "vue";
import { Slider } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
modelValue
number | undefined
—
optional
min
number | undefined
—
optional
max
number | undefined
—
optional
step
number | undefined
—
optional
disabled
boolean | undefined
—
optional
tone
"accent" | "amber" | "teal" | "indigo" | undefined
"accent"
optional
Prop
modelValue
Type
number | undefined
Default
—
Requirement
optional
Prop
min
Type
number | undefined
Default
—
Requirement
optional
Prop
max
Type
number | undefined
Default
—
Requirement
optional
Prop
step
Type
number | undefined
Default
—
Requirement
optional
Prop
disabled
Type
boolean | undefined
Default
—
Requirement
optional
Prop
tone
Type
"accent" | "amber" | "teal" | "indigo" | undefined
Default
"accent"
Requirement
optional

Events

EventPayload
update:modelValue[value: number]

Import

import { Component } from "@angular/core";
import { GrassrootSlider } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
value
number
—
optional
min
number
—
optional
max
number
—
optional
step
number
—
optional
disabled
boolean
false
optional
tone
"accent" | "amber" | "teal" | "indigo"
"accent"
optional
"aria-label"
string
undefined
optional
Prop
value
Type
number
Default
—
Requirement
optional
Prop
min
Type
number
Default
—
Requirement
optional
Prop
max
Type
number
Default
—
Requirement
optional
Prop
step
Type
number
Default
—
Requirement
optional
Prop
disabled
Type
boolean
Default
false
Requirement
optional
Prop
tone
Type
"accent" | "amber" | "teal" | "indigo"
Default
"accent"
Requirement
optional
Prop
"aria-label"
Type
string
Default
undefined
Requirement
optional

Events

EventPayload
valueChangenumber

Import

import { Slider } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
value
number
—
optional
min
number
—
optional
max
number
—
optional
step
number
—
optional
disabled
boolean
—
optional
aria-label
string
—
optional
className
string
—
optional
onChange
(event: Event) => void
—
optional
tone
"accent" | "amber" | "teal" | "indigo"
"accent"
optional
Prop
value
Type
number
Default
—
Requirement
optional
Prop
min
Type
number
Default
—
Requirement
optional
Prop
max
Type
number
Default
—
Requirement
optional
Prop
step
Type
number
Default
—
Requirement
optional
Prop
disabled
Type
boolean
Default
—
Requirement
optional
Prop
aria-label
Type
string
Default
—
Requirement
optional
Prop
className
Type
string
Default
—
Requirement
optional
Prop
onChange
Type
(event: Event) => void
Default
—
Requirement
optional
Prop
tone
Type
"accent" | "amber" | "teal" | "indigo"
Default
"accent"
Requirement
optional

Events

EventPayload
onChange(event: Event) => void

Import

import { Slider } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
defaultValue
number | string
—
optional
tone
"accent" | "amber" | "teal" | "indigo"
—
optional
Prop
defaultValue
Type
number | string
Default
—
Requirement
optional
Prop
tone
Type
"accent" | "amber" | "teal" | "indigo"
Default
—
Requirement
optional

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.