# Radio - 单选框

## 说明

单选框组件，24×24 圆形选框，选中/未选中切换带 200ms 渐隐动画。选中时填充为 `colorType` 对应主题色并显示对勾；未选中未禁用时显示灰色外描边。禁用态通过语义色实现，不使用透明度。组件自身只负责单个选框的受控展示与点击回调，互斥逻辑由使用方管理。

## 属性

| 属性 | 说明 | 类型 | 默认值 | 必填 |
|------|------|------|--------|------|
| **checked** | 是否选中 | `boolean` | `false` | 否 |
| **onChange** | 点击切换回调，入参为切换后的目标状态 | `(checked: boolean) => void` | - | 否 |
| **disabled** | 是否禁用 | `boolean` | `false` | 否 |
| **colorType** | 选中态色系 | `ColorType` | `'green'` | 否 |
| **accessible** | 无障碍：是否启用 | `boolean` | - | 否 |
| **accessibilityLabel** | 无障碍标签 | `string` | - | 否 |
| **accessibilityHint** | 无障碍提示 | `string` | - | 否 |

> `ColorType` 可选值：`'blue' \| 'green' \| 'wathet' \| 'purple' \| 'orange'`。

## 使用示例

```tsx
import { Radio } from 'miot/ui/hyperOSUI';

// 基础用法（受控）
<Radio checked={checked} onChange={setChecked} />

// 不同色系
<Radio checked onChange={() => {}} colorType="blue" />

// 禁用
<Radio checked disabled onChange={() => {}} />
```

## 注意事项

- 组件为受控展示，`onChange` 回调的入参是「点击后应变成」的状态（即 `!checked`），需由使用方更新 `checked`。
- 禁用态下点击不触发 `onChange`。
- 单选互斥逻辑（一组中只能选一个）需由使用方维护，组件本身不含分组能力。

## 修改记录

| 日期 | 版本 | 修改内容 | 修改原因 | 关联 |
|------|------|----------|----------|------|
| 2026-07-20 | v1.18.17 | 118 版本组件更新 | — | feef8025 |
| 2026-04-30 | v1.18.7 | 修复单选框相关问题 | — | d07092d4 |
| 2026-04-29 | v1.18.6 | 修复组件问题 | — | e15b02a4 |
| 2026-04-25 | v1.18.6 | TS 类型定义规范化 | — | 1c59cbd5 |
| 2026-04-21 | v1.18.5-alpha.0 | 接入组件引用上报 | — | b5db48c4 |
| 2026-04-20 | v1.18.5-alpha.0 | 组件问题修改 | — | 2cc0de28 |
