---
title: "slider"
image: "https://adonia.pages.dev/og.png"
version: "next"
---

> Documentation Index
> Fetch the complete documentation index at: https://adonia.pages.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# slider

<!-- Generated by `pnpm docs:fields` from packages/core/src/schema/fields/slider.ts. Edit the TSDoc, not this file. -->

Range-input slider bound to a number attribute, or — after `range()` — to
a two-element `[from, to]` array attribute.

| | |
| --- | --- |
| Builder | `F.slider(attribute: string): Slider` |
| Wire type key | `slider` |
| Class chain | `Slider` → `NumericField` → `Field` |
| Detail projection | `text-entry` |
| Column counterpart | `number` cell, i.e. `C.number(attribute)` |

## Example

```ts
import { F } from '@adonia/core'

F.slider('rating').label('Rating').min(0).max(10).step(0.5)
F.slider('priceBand').label('Price band').min(0).max(500).range()
```

## Props

Beyond the shared [field DSL](/reference/fields#the-shared-field-dsl):

| Prop | Declared on | Behaviour |
| --- | --- | --- |
| `range(): this` | `Slider` | Switches the control to two handles (§7.3 "single or range"). The form state becomes a `[from, to]` pair, and §11.1's `vine.number()` base is lifted into a fixed-length array of the same constrained number — both ends obey `min`/`max`/`decimal`. |
| `min(value: number): this` | `NumericField` | Lower bound; compiles to Vine `min` (§11.1) and rides the wire for the input. |
| `max(value: number): this` | `NumericField` | Upper bound; compiles to Vine `max` (§11.1). |
| `step(value: number): this` | `NumericField` | Input granularity. A rendering affordance only — see the module note. |
| `decimal(places: number): this` | `NumericField` | Maximum decimal places (§11.1 `decimal(places)`). `decimal(0)` is the integer constraint; omitting it accepts any precision. |

### Introspection

Read-only members this type adds — used by the compiler, the table derivation and
tests rather than by a schema author.

| Member | Declared on | Behaviour |
| --- | --- | --- |
| `get isRange(): boolean` | `Slider` | Whether this slider was switched to two-handle mode. |

## Validation

Vine base: `vine.number()`.

§11.1 mapping: `vine.number()` + `min`/`max`/`decimal`, wrapped in a
two-element `vine.array` in range mode. `fixedLength(2)` is what stops
a client from submitting a one- or three-handle payload.

Contributed by `Slider.vineSchema()` in `packages/core/src/schema/fields/slider.ts`. The shared modifiers (`required`, `nullable`, `requiredWhen`, `unique`, optionality) are applied on top by `Field.buildValidation`, and a `rules()` override replaces the base entirely — the validator compiler never branches on the field class.

## Declared in

- `packages/core/src/schema/fields/slider.ts` — `Slider`
- `packages/core/src/schema/fields/numeric.ts` — `NumericField`

Source: https://adonia.pages.dev/reference/fields/slider/index.mdx
