Slider
Permite selecionar um valor ou um intervalo de valores dentro de uma faixa conhecida, deslizando um controle sobre uma faixa horizontal.
- Ajustar um valor dentro de uma faixa conhecida: quando o usuário se move entre um mínimo e um máximo definidos e pode se aproximar do valor desejado sem precisar digitá-lo. Ex.: "Raio de entrega em quilômetros", "Volume das notificações".
- Filtrar por um intervalo de valores: usar a variante Range para definir um mínimo e um máximo ao mesmo tempo, com um único controle. Ex.: "Preço: R$0 - R$5.000".
- Priorizar a velocidade de seleção em vez da precisão exata: quando basta se aproximar do valor desejado e não é necessário um número exato. Ex.: ajustar o brilho ou o volume.
- Simplificar a entrada em telas touch: evitar o teclado numérico em ajustes frequentes e aproximados, nos quais arrastar é mais direto do que digitar.
- Inserir um valor exato: quando o usuário precisa digitar um número preciso em vez de se aproximar arrastando um controle. Usar Input nesse caso. Ex.: "Preço de tabela", "Número de documento".
- Escolher entre duas opções excludentes: uma decisão binária não precisa de um percurso de valores intermediários. Usar Toggle ou Checkbox nesse caso.
- Escolher entre poucas opções discretas com nome próprio: quando os valores não formam uma escala contínua, e sim um conjunto reduzido de opções com nome. Usar Radio nesse caso. Ex.: tamanhos "P", "M", "G".
- Mostrar um progresso não interativo: quando o usuário não controla o valor e só é necessário comunicar um avanço. Usar Progress Bar nesse caso.
- Track base: faixa que representa a totalidade dos valores disponíveis, entre min e max.
- Active track: porção da faixa que indica visualmente o valor ou o intervalo selecionado; sua cor muda de acordo com a prop appearance.
- Thumb: controle que o usuário arrasta, clica ou navega com o teclado para alterar o valor. No modo Single há um único Thumb; no Range há dois, um em cada extremo do intervalo. Sua borda sempre fica na cor primary, independentemente do appearance escolhido para o Active track.
Default: um único Thumb para selecionar um valor escalar dentro da faixa. Ex.: "Raio de entrega em km".
Range: dois Thumbs para definir um intervalo entre um mínimo e um máximo. Ex.: "Preço: R$0 - R$5.000".
Step: restringe o percurso a incrementos discretos definidos pela prop step, em vez de um deslocamento contínuo. Ex.: ajustar de 10 em 10 unidades.
O Slider aparece em formulários e painéis de configuração nos quais o usuário ajusta um valor ou um intervalo dentro de uma faixa conhecida, como filtros de busca, configurações de entrega ou preferências da loja. Como o componente não exibe por si só nem um rótulo nem o valor atual, ele sempre convive com um Label ou Text que identifica o que está sendo ajustado e com um Text que exibe o valor selecionado.
Raio de entrega
15 km
Desconto
50%
0
100
Acompanhar o slider com um rótulo e o valor atual, para que o usuário saiba o que está ajustando e quanto.
Evitar deixar o slider sem rótulo nem valor visível: o usuário perde a referência do que está ajustando.
Preço
R$0
R$5.000
Usar a variante Range quando ambos os extremos do intervalo são relevantes, como uma faixa de preço, e somar os valores limite (min/max) abaixo do track para dar contexto sem precisar arrastar.
Preço de tabela
R$1.234
Evitar pedir um valor exato com um Slider: usar Input quando o número não admite aproximação.
- Navegação por teclado: o Thumb é renderizado como um button nativo focável; ArrowRight/ArrowUp aumenta o valor e ArrowLeft/ArrowDown o diminui de acordo com step, enquanto Home leva ao mínimo e End ao máximo.
- Atributos ARIA: cada Thumb expõe role="slider" com aria-valuemin, aria-valuemax e aria-valuenow, além de um aria-label que por padrão fica em inglês ("Value", "Minimum value", "Maximum value"). Passar sempre ariaLabel (ou minAriaLabel/maxAriaLabel no Range) no idioma da interface.
- Foco visível: ao navegar com o teclado, o Thumb exibe o anel de foco padrão do Nimbus em torno do controle.
- Estado disabled: o atributo disabled bloqueia a interação por mouse, touch e teclado, e atenua a cor do Thumb e do Active track.
- Valor que reforça a mensagem sem depender só da cor: a cor do Active track (definida por appearance) reforça visualmente o valor selecionado, mas como o Slider não exibe o número por si só, convém sempre acompanhá-lo de um Text que exiba o valor atual em vez de depender unicamente da posição do Thumb.
Instale o componente via terminal.
npm install @nimbus-ds/componentsimport React, { useState } from "react";
import { Slider } from "@nimbus-ds/components";
const Example: React.FC = () => {
const [value, setValue] = useState(50);
return (
<Slider
value={value}
min={0}
max={100}
onChange={setValue}
/>
);
};
export default Example;As propriedades adicionais são passadas para o elemento <Slider>. Consulte a documentação de atributos do elemento input para ver a lista equivalente de atributos nativos.
- Input — Para entrada de valores numéricos exatos, quando não admite aproximação.
- Toggle — Para uma decisão binária, sem percurso de valores intermediários.
- Radio — Para escolher entre poucas opções discretas com nome próprio.
- Progress Bar — Para mostrar um progresso não interativo, sem controle do usuário.
Slider
| Name | Type | Default | Description |
|---|---|---|---|
value* | number | The current value of the slider (single mode). | |
onChange | object | Callback fired when the value changes. | |
onChangeEnd | object | Callback fired when the user finishes interacting with the slider. | |
ariaLabel | string | 'Value' | Accessible label for the slider thumb. |
min | number | '0' | The minimum value of the slider range. |
max | number | '100' | The maximum value of the slider range. |
step | number | '1' | The step increment between values. |
appearance | 'danger' | 'primary' | Visual appearance of the slider fill. |
disabled | boolean | 'false' | Whether the slider is disabled. |
data-testid | string | This is an attribute used to identify a DOM node for testing purposes. |
Slider.Range
| Name | Type | Default | Description |
|---|---|---|---|
minValue* | number | The current minimum value selected on the slider. | |
maxValue* | number | The current maximum value selected on the slider. | |
onChange | object | Callback fired when the min or max value changes. | |
onMinChange | object | Callback fired when the min value changes. | |
onMaxChange | object | Callback fired when the max value changes. | |
onChangeEnd | object | Callback fired when the user finishes interacting with the slider. | |
minAriaLabel | string | 'Minimum value' | Accessible label for the minimum value thumb. |
maxAriaLabel | string | 'Maximum value' | Accessible label for the maximum value thumb. |
min | number | '0' | The minimum value of the slider range. |
max | number | '100' | The maximum value of the slider range. |
step | number | '1' | The step increment between values. |
appearance | 'danger' | 'primary' | Visual appearance of the slider fill. |
disabled | boolean | 'false' | Whether the slider is disabled. |
data-testid | string | This is an attribute used to identify a DOM node for testing purposes. |
Ajude-nos a melhorar a documentação
Encontrou um problema ou tem uma sugestão? Conte para a gente.