Radio Group
Pick exactly one option from a short list of Zod enum values, as plain radio buttons or as clickable blocks, with a description under each label.
Preview
Usage
import { z } from 'zod';
import { AutoForm } from '@vitnode/core/components/form/auto-form';
import { AutoFormRadioGroup } from '@vitnode/core/components/form/fields/radio-group';const formSchema = z.object({
options: z.enum(['option1', 'option2', 'option3']),
})<AutoForm
formSchema={formSchema}
fields={[
{
id: 'options',
component: (props) => (
<AutoFormRadioGroup
{...props}
description="By checking this box, you agree to the terms and conditions."
label="I agree to the terms and conditions"
labels={[
{
value: 'option1',
label: 'Option 1',
description: 'This is the description for option 1',
},
{
value: 'option2',
label: 'Option 2',
},
{
value: 'option3',
label: 'Option 3',
description: 'This is the description for option 3',
disabled: true,
},
]}
/>
),
},
]}
/>import {
RadioGroup,
RadioGroupItem,
} from '@vitnode/core/components/ui/radio-group';
import { Field, FieldLabel } from "@vitnode/core/components/ui/field"<RadioGroup defaultValue="option-one">
<Field orientation="horizontal">
<RadioGroupItem value="option-one" id="option-one" />
<FieldContent>
<FieldLabel htmlFor="option-one">Option One</FieldLabel>
<FieldDescription>
This is the description for option one. It provides more information
about the option.
</FieldDescription>
</FieldContent>
</Field>
<Field orientation="horizontal">
<RadioGroupItem value="option-two" id="option-two" />
<FieldContent>
<FieldLabel htmlFor="option-two">Option Two</FieldLabel>
</FieldContent>
</Field>
<Field orientation="horizontal" data-disabled>
<RadioGroupItem value="option-three" id="option-three" disabled />
<FieldContent>
<FieldLabel htmlFor="option-three">Option Three</FieldLabel>
<FieldDescription>
This is the description for option three. It provides more information
about the option.
</FieldDescription>
</FieldContent>
</Field>
</RadioGroup>variant="block"
You can also use the block variant to display the radio buttons in a block style.
<AutoForm
formSchema={formSchema}
fields={[
{
id: 'options',
component: (props) => (
<AutoFormRadioGroup
{...props}
description="By checking this box, you agree to the terms and conditions."
label="I agree to the terms and conditions"
variant="block"
labels={[
{
value: 'option1',
label: 'Option 1',
description: 'This is the description for option 1',
},
{
value: 'option2',
label: 'Option 2',
},
{
value: 'option3',
label: 'Option 3',
description: 'This is the description for option 3',
disabled: true,
},
]}
/>
),
},
]}
/>Props
Prop
Type