Skip to main content

Radio

Apresentação

O componente Radio é responsável por criar botões de rádio que permitem seleção única em um conjunto de opções. É ideal para formulários onde apenas uma opção pode ser selecionada por vez, garantindo escolhas mutuamente exclusivas.

Quando usar

  • Em formulários com opções mutuamente exclusivas
  • Para seleção de gênero ou estado civil
  • Em preferências de usuário com uma única escolha
  • Para escolhas simples entre 2-7 opções
  • Em questionários com resposta única
  • Para seleção de método de pagamento
  • Para escolher configurações de sistema
  • Em filtros com opção única
  • Para seleção de idioma
  • Em enquetes com uma resposta

Quando não usar

  • Para seleção múltipla (use Checkbox)
  • Em situações onde um Select é mais apropriado (muitas opções)
  • Quando as opções são muito numerosas (mais de 7)
  • Para valores booleanos simples (use Toggle ou Checkbox)

Forma básica de uso

import { Radio } from 'eitri-luminus';

// Radio básico
<Radio name="opcoes" value="opcao1" />

// Radio com diferentes tamanhos
<Radio name="opcoes" value="opcao1" className="radio-xs" />
<Radio name="opcoes" value="opcao2" className="radio-sm" />
<Radio name="opcoes" value="opcao3" className="radio-md" />
<Radio name="opcoes" value="opcao4" className="radio-lg" />

// Radio com diferentes cores
<Radio name="opcoes" value="opcao1" className="radio-primary" />
<Radio name="opcoes" value="opcao2" className="radio-secondary" />
<Radio name="opcoes" value="opcao3" className="radio-accent" />
<Radio name="opcoes" value="opcao4" className="radio-success" />
<Radio name="opcoes" value="opcao5" className="radio-warning" />
<Radio name="opcoes" value="opcao6" className="radio-error" />
<Radio name="opcoes" value="opcao7" className="radio-info" />

// Radio desabilitado
<Radio name="opcoes" value="opcao1" disabled />

// Radio selecionado por padrão
<Radio name="opcoes" value="opcao1" defaultChecked />

// Radio com evento de mudança
<Radio
name="opcoes"
value="opcao1"
onChange={(e) => console.log(e.target.value)}
/>

// Grupo de radios com labels
<div className="form-control">
<label className="label cursor-pointer">
<span className="label-text">Opção 1</span>
<Radio name="grupo" value="1" />
</label>
<label className="label cursor-pointer">
<span className="label-text">Opção 2</span>
<Radio name="grupo" value="2" />
</label>
<label className="label cursor-pointer">
<span className="label-text">Opção 3</span>
<Radio name="grupo" value="3" />
</label>
</div>

// Radio controlado com estado
const [selectedOption, setSelectedOption] = useState('');

<Radio
name="opcoes"
value="opcao1"
checked={selectedOption === 'opcao1'}
onChange={() => setSelectedOption('opcao1')}
/>

Propriedades

O componente Radio herda todas as propriedades de um input HTML padrão, exceto 'type', 'dangerouslySetInnerHTML' e 'children', além das propriedades comuns da biblioteca. As principais propriedades incluem:

PropriedadeTipoDescrição
checkedbooleanEstado de seleção do radio
defaultCheckedbooleanEstado inicial de seleção
disabledbooleanDesabilita o radio
namestringNome do grupo de radios
valuestringValor do radio
onChangefunctionFunção chamada ao mudar o estado
classNamestringClasses CSS adicionais
idstringIdentificador único do componente

Heranças

O componente Radio herda todas as propriedades comuns da biblioteca através da interface CommonProps, que inclui:

  • Propriedades de estilo (margin, padding, etc)
  • Propriedades de layout (flex, grid, etc)
  • Propriedades de posicionamento
  • Propriedades de acessibilidade
  • Propriedades de identificação (id, data-e)

Métodos via Ref

O componente Radio expõe métodos públicos que podem ser acessados através de uma ref:

import { useRef } from 'react';
import { Radio } from 'eitri-luminus';

function MyComponent() {
const radioRef = useRef<Radio>(null);

const handleGetValue = () => {
const isChecked = radioRef.current?.getValue();
console.log('Radio está marcado:', isChecked);
};

const handleSetValue = () => {
radioRef.current?.setValue(true);
};

const handleToggle = () => {
radioRef.current?.toggle();
};

return (
<>
<Radio ref={radioRef} name="opcoes" value="opcao1" />
<button onClick={handleGetValue}>Verificar valor</button>
<button onClick={handleSetValue}>Marcar</button>
<button onClick={handleToggle}>Alternar</button>
</>
);
}

Métodos Disponíveis

MétodoTipoDescrição
getValue()booleanRetorna se o radio está marcado
setValue(checked: boolean)voidDefine se o radio está marcado
toggle()voidAlterna o estado do radio

Observações

  • O componente usa a classe 'radio' para estilização base
  • Suporta diferentes tamanhos (xs, sm, md, lg)
  • Suporta diferentes cores (primary, secondary, accent, success, warning, error, info)
  • É possível personalizar a aparência usando classes do Tailwind
  • O componente é responsivo por padrão
  • Mantém a semântica HTML apropriada
  • Deve ser usado em grupos com o mesmo atributo 'name'
  • Apenas um radio por grupo pode ser selecionado
  • É especialmente útil para seleções únicas
  • Pode ser combinado com outros componentes
  • Suporta estados desabilitado e selecionado
  • Mantém o tipo "radio" por padrão
  • Pode ser usado em formulários
  • Suporta validação de formulários
  • Recomendado para 2-7 opções por grupo
  • Para mais opções, considere usar Select
  • Métodos via ref disponíveis para controle programático do radio