/** * Built-in chat notification sounds. * * Sounds are inlined as base64 data URLs inside each `./sounds/.ts` * module — no `.mp3` loader / `*.d.ts` shim required on the consumer * side. Total ≈ 136KB bundled into the lazy Chat chunk. * * To re-encode after a source edit: * 1. Drop the new mp3 next to this file (e.g. `./sounds/sent.source.mp3`). * 2. `base64 -i sent.source.mp3` and paste into `./sounds/sent.ts`. * 3. Delete the temporary source mp3 — only the `.ts` ships. * * Encoding cheat-sheet: * ffmpeg -i in.mp3 -ac 2 -ar 44100 -b:a 128k \ * -af 'atrim=0:1.4,afade=t=out:st=1.22:d=0.18' out.mp3 */ import sent from './sounds/sent'; import received from './sounds/received'; import start from './sounds/start'; import errorSound from './sounds/error'; import mention from './sounds/mention'; import notification from './sounds/notification'; import type { ChatAudioSounds } from './types'; /** * Default chat notification sounds. Pass to `useChatAudio` (or spread * into a custom map) so hosts don't have to ship assets themselves. * * @example * ```tsx * const audio = useChatAudio({ sounds: DEFAULT_CHAT_SOUNDS }); * * // Override one event: * const audio = useChatAudio({ * sounds: { ...DEFAULT_CHAT_SOUNDS, mention: '/custom-mention.mp3' }, * }); * ``` */ export const DEFAULT_CHAT_SOUNDS: ChatAudioSounds = { messageSent: sent, messageReceived: received, streamStart: start, error: errorSound, mention, notification, };