# SmallImageButton - 小尺寸图文按钮

## 说明

小尺寸图文按钮，上方为自定义图标/图片插槽，下方为居中标题，常用于九宫格/网格入口场景。支持 `button`（纯指令/入口）与 `toggle`（二态开关）两种交互类型。`custom` 插槽支持按压态回调；按压交互基于 `TouchCbView`，`toggle` 激活时标题会切换为所选色系的强调色，禁用态通过语义色实现。

## 属性

| 属性 | 说明 | 类型 | 默认值 | 必填 |
|------|------|------|--------|------|
| **title** | 标题文字 | `string` | - | 是 |
| **actionType** | 交互类型：`button` 为纯指令/入口，`toggle` 为二态开关 | `'button' \| 'toggle'` | `'button'` | 否 |
| **disabled** | 是否禁用（禁用点击并展示灰态） | `boolean` | `false` | 否 |
| **active** | 激活状态，仅 `toggle` 模式下有效 | `boolean` | `false` | 否 |
| **custom** | 自定义图标/图片插槽，支持 24×24 图标或 40×40 图片；可传 `ReactNode`，也可传 `(pressed) => ReactNode` 以响应按压态 | `React.ReactNode \| ((pressed: boolean) => React.ReactNode)` | - | 否 |
| **onPress** | 点击/切换回调，未传或 `disabled` 时不可点击 | `() => void` | - | 否 |
| **colorType** | 激活态色系，仅 `toggle` 模式下有效 | `ColorType` | `'green'` | 否 |
| **accessible** | 无障碍：是否启用 | `boolean` | `true` | 否 |
| **accessibilityLabel** | 无障碍标签，默认取 `title` | `string` | - | 否 |
| **accessibilityHint** | 无障碍提示 | `string` | - | 否 |

> 另有 `flexBasis`、`flexShrink`、`flexGrow` 三个布局属性由 `SmallGridContainer` 自动注入，**外部请勿传入**。

## 使用示例

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

// 基础用法（网格入口）
<SmallImageButton
  title="定时"
  custom={<TimerIcon />}
  onPress={() => navigate('Timer')}
/>

// toggle 开关模式，按压态自定义图标
<SmallImageButton
  actionType="toggle"
  active={isOn}
  colorType="blue"
  title="睡眠"
  custom={(pressed) => <SleepIcon pressed={pressed} />}
  onPress={() => setIsOn(!isOn)}
/>

// 禁用态
<SmallImageButton title="暂不可用" disabled onPress={() => {}} />
```

## 注意事项

- `active` 与 `colorType` 仅在 `actionType="toggle"` 时生效。
- 未传 `onPress` 时按钮等同禁用点击。
- 标题最多 2 行、居中展示，超出以省略号截断，文字不随系统字体缩放（`allowFontScaling={false}`）。
- `custom` 传函数时会收到当前按压态 `pressed`，可据此切换图标颜色/样式。

## 修改记录

| 日期 | 版本 | 修改内容 | 修改原因 | 关联 |
|------|------|----------|----------|------|
| 2026-09-10 | v1.19.0 | 优化埋点上报，不影响对外 API | — | fc2ff0b5 |
| 2026-05-07 | v1.18.8 | 修复组件相关问题 | — | 8576ace3 |
| 2026-04-16 | v1.18.5-alpha.0 | 文件夹重命名为首字母小写，导入路径调整为 `smallImageButton` | — | 0a1eb66f |
