"use client" | |
import { | |
Select, | |
SelectContent, | |
SelectItem, | |
SelectTrigger, | |
SelectValue, | |
} from "@/components/ui/select" | |
import { useAppSelector, useAppDispatch, VOICE_OPTIONS } from "@/common" | |
import { setVoiceType } from "@/store/reducers/global" | |
import type { VoiceType } from "@/types" | |
import { VoiceIcon } from "@/components/Icon" | |
export default function AgentVoicePresetSelect() { | |
const dispatch = useAppDispatch() | |
const options = useAppSelector((state) => state.global.options) | |
const voiceType = useAppSelector((state) => state.global.voiceType) | |
const onVoiceChange = (value: string) => { | |
dispatch(setVoiceType(value as VoiceType)) | |
} | |
return ( | |
<Select value={voiceType} onValueChange={onVoiceChange}> | |
<SelectTrigger className="w-[180px]"> | |
<div className="inline-flex items-center gap-2"> | |
<SelectValue placeholder="Voice" /> | |
</div> | |
</SelectTrigger> | |
<SelectContent> | |
{VOICE_OPTIONS.map((option) => ( | |
<SelectItem | |
key={option.value} | |
value={option.value} | |
className="flex items-center gap-2" | |
> | |
<span className="flex items-center gap-2"> | |
<VoiceIcon className="h-4 w-4" /> | |
{option.label} | |
</span> | |
</SelectItem> | |
))} | |
</SelectContent> | |
</Select> | |
) | |
} | |