Radio

Radio buttons allow users to select exactly one option from a set.

Radio Group

Group radio buttons with the same name.

<div class="space-y-3">
  <%= render Rvk::RadioComponent.new(name: "plan", value: "free", label: "Free", checked: true) %>
  <%= render Rvk::RadioComponent.new(name: "plan", value: "pro", label: "Pro") %>
  <%= render Rvk::RadioComponent.new(name: "plan", value: "enterprise", label: "Enterprise") %>
</div>

Horizontal Layout

Use flex for horizontal radio groups.

<div class="flex gap-6">
  <%= render Rvk::RadioComponent.new(name: "size", value: "s", label: "S") %>
  <%= render Rvk::RadioComponent.new(name: "size", value: "m", label: "M", checked: true) %>
  <%= render Rvk::RadioComponent.new(name: "size", value: "l", label: "L") %>
  <%= render Rvk::RadioComponent.new(name: "size", value: "xl", label: "XL") %>
</div>

Sizes

Radio buttons come in 3 sizes.

<%= render Rvk::RadioComponent.new(name: "radio_sm", value: "1", label: "Small", size: :sm) %>
<%= render Rvk::RadioComponent.new(name: "radio_md", value: "1", label: "Medium", size: :md) %>
<%= render Rvk::RadioComponent.new(name: "radio_lg", value: "1", label: "Large", size: :lg) %>

With Hints

Add descriptions to each option.

4-10 business days

2-3 business days

Next business day

<%= render Rvk::RadioComponent.new(
  name: "shipping",
  value: "standard",
  label: "Standard Shipping",
  hint: "4-10 business days",
  checked: true
) %>

Error State

Display validation errors.

Please select a payment method.

<%= render Rvk::RadioComponent.new(
  name: "payment",
  value: "card",
  label: "Credit Card",
  error: "Please select a payment method."
) %>

Disabled State

Disabled radio buttons are non-interactive.

<%= render Rvk::RadioComponent.new(name: "option", value: "1", label: "Enabled option") %>
<%= render Rvk::RadioComponent.new(name: "option", value: "2", label: "Disabled option", disabled: true) %>

Props

Prop Type Default Description
name String required Form field name (same for group)
value String required Value when selected
label String nil Label text (displayed inline)
size Symbol :md Radio size: :sm, :md, :lg
checked Boolean false Whether radio is selected
hint String nil Helper text below radio
error String nil Error message
required Boolean false Mark as required
disabled Boolean false Disable the radio