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

By checking this box, you agree to the terms and conditions.

This is the description for option 1

This is the description for option 3

By checking this box, you agree to the terms and conditions.

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

API Reference

Base UI - Radio Group