Radio Group
Um grupo de opções de rádio simples e acessível
Código:
import { cn } from '@/lib/utils';
import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
import * as React from 'react';
import { CircleIcon } from 'lucide-react';
export type RadioGroupProps = React.ComponentProps<typeof RadioGroupPrimitive.Root>;
function RadioGroup({ className, ...props }: RadioGroupProps) {
return <RadioGroupPrimitive.Root data-slot='radio-group' className={cn('grid gap-3', className)} {...props} />;
}
export type RadioGroupItemProps = React.ComponentProps<typeof RadioGroupPrimitive.Item>;
function RadioGroupItem({ className, ...props }: RadioGroupItemProps) {
return (
<RadioGroupPrimitive.Item
data-slot='radio-group-item'
className={cn(
'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 shadow-xs aspect-square size-6 shrink-0 rounded-full border outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
'data-[state=checked]:border-primary',
className
)}
{...props}
>
<RadioGroupPrimitive.Indicator data-slot='radio-group-indicator' className='relative flex items-center justify-center'>
<CircleIcon className='fill-primary absolute left-1/2 top-1/2 size-4 -translate-x-1/2 -translate-y-1/2' />
</RadioGroupPrimitive.Indicator>
</RadioGroupPrimitive.Item>
);
}
export { RadioGroup, RadioGroupItem };
yarn add radix-ui lucide-react
Prévia:
Orientation
Disabled
Props:
| Property | Type | Default | Description |
|---|---|---|---|
defaultValue | string | - | Valor inicial selecionado (não controlado). (RadioGroup) |
value | string | - | Valor selecionado, para uso controlado. (RadioGroup) |
onValueChange | (value: string) => void | - | Chamado quando o valor selecionado muda. (RadioGroup) |
orientation | 'horizontal' | 'vertical' | - | Orientação do grupo para navegação por teclado. (RadioGroup) |
disabled | boolean | false | Desabilita todos os itens do grupo. (RadioGroup) |
name | string | - | Nome do grupo em um formulário nativo. (RadioGroup) |
required | boolean | false | Indica se a seleção é obrigatória. (RadioGroup) |
value (item) | string | - | Valor do item de rádio. (RadioGroupItem) |
disabled (item) | boolean | false | Desabilita este item específico. (RadioGroupItem) |
