voice-picker
elevenlabs/voice-pickerFreeComponent
shadcn/ui publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/elevenlabs/ui/main/apps/www/public/r/voice-picker.jsonSource
1"use client"23import * as React from "react"4import type { ElevenLabs } from "@elevenlabs/elevenlabs-js"5import { Check, ChevronsUpDown, Pause, Play } from "lucide-react"67import { cn } from "@/lib/utils"8import {9 AudioPlayerProvider,10 useAudioPlayer,11} from "@/components/ui/audio-player"12import { Button } from "@/components/ui/button"13import {14 Command,15 CommandEmpty,16 CommandGroup,17 CommandInput,18 CommandItem,19 CommandList,20} from "@/components/ui/command"21import { Orb } from "@/components/ui/orb"22import {23 Popover,24 PopoverContent,25 PopoverTrigger,26} from "@/components/ui/popover"2728interface VoicePickerProps {29 voices: ElevenLabs.Voice[]30 value?: string31 onValueChange?: (value: string) => void32 placeholder?: string33 className?: string34 open?: boolean35 onOpenChange?: (open: boolean) => void36}3738function VoicePicker({39 voices,40 value,41 onValueChange,42 placeholder = "Select a voice...",43 className,44 open,45 onOpenChange,46}: VoicePickerProps) {47 const [internalOpen, setInternalOpen] = React.useState(false)48 const isControlled = open !== undefined49 const isOpen = isControlled ? open : internalOpen50 const setIsOpen = isControlled ? onOpenChange : setInternalOpen5152 const selectedVoice = voices.find((v) => v.voiceId === value)5354 return (55 <AudioPlayerProvider>56 <Popover open={isOpen} onOpenChange={setIsOpen}>57 <PopoverTrigger asChild>58 <Button59 variant="outline"60 role="combobox"61 aria-expanded={isOpen}62 className={cn("w-full justify-between", className)}63 >64 {selectedVoice ? (65 <div className="flex items-center gap-2 overflow-hidden">66 <div className="relative size-6 shrink-0 overflow-visible">67 <Orb agentState="thinking" className="absolute inset-0" />68 </div>69 <span className="truncate">{selectedVoice.name}</span>70 </div>71 ) : (72 placeholder73 )}74 <ChevronsUpDown className="ml-2 size-4 shrink-0 opacity-50" />75 </Button>76 </PopoverTrigger>77 <PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0">78 <Command>79 <CommandInput placeholder="Search voices..." />80 <CommandList>81 <CommandEmpty>No voice found.</CommandEmpty>82 <CommandGroup>83 {voices.map((voice) => (84 <VoicePickerItem85// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from shadcn/ui
All 50 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| audio-playeraudio-player | shadcn/ui | Components | Free | 2 deps | |
| bar-visualizerbar-visualizer | shadcn/ui | Components | Free | no deps | |
| conversationconversation | shadcn/ui | Components | Free | 1 dep | |
| conversation-barconversation-bar | shadcn/ui | Components | Free | 1 dep | |
| live-waveformlive-waveform | shadcn/ui | Components | Free | no deps | |
| matrixmatrix | shadcn/ui | Components | Free | no deps | |
| messagemessage | shadcn/ui | Components | Free | 1 dep | |
| mic-selectormic-selector | shadcn/ui | Components | Free | no deps |
