# 何时使用

- 需要**独立**的「按住说话 / 点击切换」录音条，并与音波、倒计时、取消区域等完整交互
- 多数对话输入场景更推荐 **`Input` 的 `allowAudio`**（内部集成录音与音波）
- 不适用：仅需语音转文字 + 多行输入时用 **`TextArea` 的 `allowAudio`（SpeechToText）**

---

# API

## AudioInputBaseProps

| 属性                   | 类型                                               | 默认值                     | 说明 |
| ---------------------- | -------------------------------------------------- | -------------------------- | ---- |
| mode                   | `'input' \| 'button'`                              | `'input'`                  | 按住说话 / 点击切换 |
| pressText              | `string`                                           | `'按住 说话'`              | |
| recordingText          | `string`                                           | `'松手发送，上移取消'`     | |
| cancelText             | `string`                                           | `'松开取消'`               | |
| countdownText          | `string`                                           | `'{seconds}s后将停止录音'` | 支持 `{seconds}` |
| onChange               | `(value: Blob) => void`                            | -                          | 得到录音 Blob |
| onRecordingChange      | `(isRecording: boolean) => void`                   | -                          | |
| onHintChange           | `(hint: string, isWarning: boolean) => void`       | -                          | |
| onRecordingStateChange | `(state: RecordingState) => void`                  | -                          | `idle` \| `recording` \| `willCancel` |
| onVibrate              | `(type: 'countdown' \| 'timeout') => void`         | `navigator.vibrate`        | |
| waveProps              | `WaveProps`                                        | -                          | |
| waveContainerClassName | `string`                                           | -                          | |
| onStreamChange         | `(stream: MediaStream \| null) => void`            | -                          | |
| showHalo               | `boolean`                                          | `true`                     | input 模式光圈 |
| style                  | `React.CSSProperties`                              | -                          | |
| audioFormat            | `AudioFormat`                                      | `'webm'`                   | 浏览器可能降级 |

## AudioInputProps

在 `AudioInputBaseProps` 上增加：

| 属性       | 类型                          | 说明 |
| ---------- | ----------------------------- | ---- |
| allowAudio | `boolean` \| `AudioInputBaseProps` | 为对象时与 props 合并 |

---

# FAQ

- 仓库内**无** `examples/AudioInput` 独立示例目录；API 以类型与实现为准，集成参考 **`Input` 文档中的 `allowAudio` / `AudioInputBaseProps`**。
- 主入口对子模块多为 `export *`，**默认导出**是否出现在包入口以发布物 `esm/index.js` 为准；稳妥做法是通过 `Input` 使用录音能力。
