<!-- source-hash: 708dc6fe37c97945e4c968bc3a3e4867 -->
Storybook stories for the `RadioGroup` UI component, demonstrating all supported variants, states, and theme configurations within the OpenFrame design system.

## Key Components

| Export | Description |
|---|---|
| `Default` | Basic radio group with three unselected options |
| `WithDefaultValue` | Uncontrolled group with a pre-selected option via `defaultValue` |
| `Disabled` | Entire group disabled with a pre-selected value |
| `DisabledItem` | Group with a single item disabled while others remain interactive |
| `Horizontal` | Horizontal layout using `orientation="horizontal"` with flex-row styling |
| `Controlled` | Controlled component using `useState` with live selection display |
| `FlamingoTheme` | Group wrapped in `data-app-type="flamingo"` decorator for Flamingo-branded styling |

## Usage Example

```typescript
import { RadioGroup, RadioGroupItem } from '../components/ui/radio-group';
import { useState } from 'react';

// Uncontrolled with default selection
<RadioGroup defaultValue="option-1">
  <div className="flex items-center gap-3">
    <RadioGroupItem value="option-1" id="opt-1" />
    <label htmlFor="opt-1">Option 1</label>
  </div>
  <div className="flex items-center gap-3">
    <RadioGroupItem value="option-2" id="opt-2" />
    <label htmlFor="opt-2">Option 2</label>
  </div>
</RadioGroup>

// Controlled
const [value, setValue] = useState('option-1');
<RadioGroup value={value} onValueChange={setValue}>
  <RadioGroupItem value="option-1" id="opt-1" />
  <RadioGroupItem value="option-2" id="opt-2" />
</RadioGroup>
```

## Notes

- Built on **Radix UI** primitives with OpenFrame design tokens (`ods-text-primary`, `ods-text-secondary`)
- The `renderItem` helper ensures consistent label/input pairing across all stories
- Use `data-app-type="flamingo"` on a parent wrapper to activate Flamingo-specific theme overrides