import React from 'react'; import { UserSettings } from '../types'; import { X, Volume2, Check, Info, Mic2, Settings2 } from 'lucide-react'; import Tooltip from './Tooltip'; import AudioDeviceSelector from './AudioDeviceSelector'; import { Button } from './ui/button'; import { Card } from './ui/card'; import { Badge } from './ui/badge'; import { ScrollArea } from './ui/scroll-area'; interface SettingsModalProps { settings: UserSettings; onUpdate: (settings: UserSettings) => void; onClose: () => void; } interface VoiceOption { id: UserSettings['voiceName']; label: string; gender: 'Male' | 'Female' | 'Neutral'; style: string; description: string; } const VOICE_OPTIONS: VoiceOption[] = [ { id: 'Zephyr', label: 'Zephyr', gender: 'Neutral', style: 'Helpful', description: 'A balanced, clear, and professional tone suitable for most scenarios.' }, { id: 'Puck', label: 'Puck', gender: 'Male', style: 'Youthful', description: 'Energetic and friendly, ideal for peer-to-peer or informal interactions.' }, { id: 'Kore', label: 'Kore', gender: 'Female', style: 'Calm', description: 'Soothing and professional, perfect for clinical or high-stress roleplay.' }, { id: 'Charon', label: 'Charon', gender: 'Male', style: 'Authoritative', description: 'Deep and commanding, useful for workplace or boundary-testing scenarios.' }, { id: 'Fenrir', label: 'Fenrir', gender: 'Male', style: 'Rugged', description: 'Direct and matter-of-fact tone with a slightly more serious edge.' }, ]; const SettingsModal: React.FC = ({ settings, onUpdate, onClose }) => { return (

Voice & Persona Settings

Configure your AI clinical partner

Vocal Profile

{VOICE_OPTIONS.map((voice) => ( onUpdate({ ...settings, voiceName: voice.id, genderPreference: voice.gender, vocalStyle: voice.style })} className={`flex flex-row items-center justify-between p-4 cursor-pointer transition-all ${settings.voiceName === voice.id ? 'bg-teal-50 border-teal-500 shadow-md shadow-teal-100' : 'bg-white border-slate-200 hover:border-teal-200' }`} >
{voice.label} {voice.gender} • {voice.style}

{voice.description}

{settings.voiceName === voice.id && (
)}
))}

Hardware Configuration

onUpdate({ ...settings, preferredAudioDeviceId: deviceId })} />

These settings apply to Voice Mode interactions only. Text-based roleplay personas are dynamically generated based on each specific scenario.

); }; export default SettingsModal;