# Voice recorder

Record with a live waveform, review and scrub, then send the take into the thread.

- ID: `voice-recorder`
- Import: `animui/voice-recorder`
- Category: Special
- Runtime exports: `VoiceRecorder`
- Declaration: `types/pro/voice-recorder.d.ts`
- Type provenance: reconstructed-from-docs-and-runtime
- Related: now-playing, slider, hold-to-confirm

```tsx
import { VoiceRecorder } from 'animui/voice-recorder';
```

This import example is not a complete render recipe: read the declaration below and its local references for required props, data, callbacks and provider context. Use `animui info voice-recorder` to resolve the local declaration graph. Global setup is in `llms.txt`.

```ts
/** Reconstructed from saved Arc documentation and runtime binding evidence; original TypeScript source was unavailable. */
import type { ComponentType, ReactNode, CSSProperties, Ref, ButtonHTMLAttributes, HTMLAttributes, ReactElement } from 'react';

export interface VoiceMessage { id: string; url: string; duration: number; transcript?: string; }
export interface VoiceRecorderProps {
  defaultMessages?: { id: string; duration: number; peaks: number[]; from?: string; avatar?: string; meta?: string }[];
  onSend?: (message: VoiceMessage) => void;
  onCancel?: () => void;
  maxDuration?: number;
  sentMeta?: string;
  label?: string;
  className?: string;
}

export declare const VoiceRecorder: ComponentType<VoiceRecorderProps>;

export default VoiceRecorder;
```
