<!-- source-hash: 519574bf2339595c3bc66b2894c29fca -->
Accessible radio group components built on Radix UI primitives, providing three levels of abstraction: a base `RadioGroup`, a styled `RadioGroupItem`, and a higher-level `RadioGroupBlock` that renders labeled option cards from a data array.

## Key Components

| Export | Type | Description |
|--------|------|-------------|
| `RadioGroup` | Component | Thin wrapper around Radix `RadioGroup.Root` with `grid gap-2` layout |
| `RadioGroupItem` | Component | Styled circular radio input with focus ring, disabled, hover, and checked states |
| `RadioGroupBlock` | Component | Data-driven option list with label, description, trailing slot, error state, and two layout variants |
| `RadioGroupBlockOption` | Interface | Option shape: `value`, `label`, `description?`, `disabled?`, `trailing?` |
| `RadioGroupBlockProps` | Interface | Props for `RadioGroupBlock` including `options`, `variant`, `error`, `itemClassName` |

## Usage Example

```typescript
import { RadioGroup, RadioGroupItem, RadioGroupBlock } from "@/components/ui/radio-group"

// Primitive usage
<RadioGroup defaultValue="a">
  <RadioGroupItem value="a" id="a" />
  <RadioGroupItem value="b" id="b" />
</RadioGroup>

// Block usage — separated variant (default)
<RadioGroupBlock
  name="plan"
  defaultValue="pro"
  options={[
    { value: "free", label: "Free", description: "Up to 3 users" },
    { value: "pro",  label: "Pro",  description: "$49/mo", trailing: <Badge>Popular</Badge> },
    { value: "ent",  label: "Enterprise", disabled: true },
  ]}
  error="Please select a plan"
/>

// Block usage — grouped variant (single bordered card)
<RadioGroupBlock
  name="region"
  variant="grouped"
  options={[
    { value: "us", label: "United States" },
    { value: "eu", label: "Europe" },
  ]}
/>
```

> The `grouped` variant wraps all options in a single rounded border with dividers between rows, while `separated` (default) renders each option as its own card. Both variants propagate `error` as a red border and an absolute helper text rendered below the group.