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.