import { useState } from 'react'; import { CHARACTER_PRESETS, CUSTOM_CHARACTER_LABEL } from '../../../constants/characters'; import styles from '../RightPanel.module.css'; interface Props { speaker: string; portrait: string; onSpeakerChange: (speaker: string, portrait: string) => void; } export function SpeakerField({ speaker, portrait, onSpeakerChange }: Props) { const isPreset = CHARACTER_PRESETS.some(p => p.label === speaker); const [isCustom, setIsCustom] = useState(!isPreset); function handleSelect(e: React.ChangeEvent) { const val = e.target.value; if (val === CUSTOM_CHARACTER_LABEL) { setIsCustom(true); onSpeakerChange(speaker, portrait); } else { setIsCustom(false); const preset = CHARACTER_PRESETS.find(p => p.label === val); onSpeakerChange(val, preset?.portrait ?? ''); } } return (
{isCustom && ( onSpeakerChange(e.target.value, portrait)} /> )} onSpeakerChange(speaker, e.target.value)} />
); }