File size: 1,362 Bytes
87337b1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
"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>
)
}
|