audio-player
elevenlabs/audio-playerFreeComponent
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/audio-player.jsonSource
1"use client"23import {4 ComponentProps,5 createContext,6 HTMLProps,7 ReactNode,8 RefObject,9 useCallback,10 useContext,11 useEffect,12 useMemo,13 useRef,14 useState,15} from "react"16import * as SliderPrimitive from "@radix-ui/react-slider"17import { Check, PauseIcon, PlayIcon, Settings } from "lucide-react"1819import { cn } from "@/lib/utils"20import { Button } from "@/components/ui/button"21import {22 DropdownMenu,23 DropdownMenuContent,24 DropdownMenuItem,25 DropdownMenuTrigger,26} from "@/components/ui/dropdown-menu"2728enum ReadyState {29 HAVE_NOTHING = 0,30 HAVE_METADATA = 1,31 HAVE_CURRENT_DATA = 2,32 HAVE_FUTURE_DATA = 3,33 HAVE_ENOUGH_DATA = 4,34}3536enum NetworkState {37 NETWORK_EMPTY = 0,38 NETWORK_IDLE = 1,39 NETWORK_LOADING = 2,40 NETWORK_NO_SOURCE = 3,41}4243function formatTime(seconds: number) {44 const hrs = Math.floor(seconds / 3600)45 const mins = Math.floor((seconds % 3600) / 60)46 const secs = Math.floor(seconds % 60)4748 const formattedMins = mins < 10 ? `0${mins}` : mins49 const formattedSecs = secs < 10 ? `0${secs}` : secs5051 return hrs > 052 ? `${hrs}:${formattedMins}:${formattedSecs}`53 : `${mins}:${formattedSecs}`54}5556interface AudioPlayerItem<TData = unknown> {57 id: string | number58 src: string59 data?: TData60}6162interface AudioPlayerApi<TData = unknown> {63 ref: RefObject<HTMLAudioElement | null>64 activeItem: AudioPlayerItem<TData> | null65 duration: number | undefined66 error: MediaError | null67 isPlaying: boolean68 isBuffering: boolean69 playbackRate: number70 isItemActive: (id: string | number | null) => boolean71 setActiveItem: (item: AudioPlayerItem<TData> | null) => Promise<void>72 play: (item?: AudioPlayerItem<TData> | null) => Promise<void>73 pause: () => void74 seek: (time: number) => void75 setPlaybackRate: (rate: number) => void76}7778const AudioPlayerContext = createContext<AudioPlayerApi<unknown> | null>(null)7980export function useAudioPlayer<TData = unknown>(): AudioPlayerApi<TData> {81 const api = useContext(AudioPlayerContext) as AudioPlayerApi<TData> | null82 if (!api) {83 throw new Error(84 "useAudioPlayer cannot be called outside of AudioPlayerProvider"85 )86 }87 return api88}8990const AudioPlayerTimeContext = createContext<number | null>(null)9192export const useAudioPlayerTime = () => {93 const time = useContext(AudioPlayerTimeContext)94 if (time === null) {95 throw new Error(96 "useAudioPlayerTime cannot be called outside of AudioPlayerProvider"97 )98 }99 return time100}101102// … 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 |
|---|---|---|---|---|---|
| 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 | |
| orborb | shadcn/ui | Components | Free | 4 deps |
