{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "audio-player-demo", "registryDependencies": [ "https://ui.elevenlabs.io/r/audio-player.json", "button", "card", "scroll-area" ], "files": [ { "path": "examples/audio-player-demo.tsx", "content": "\"use client\"\n\nimport { PauseIcon, PlayIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n AudioPlayerButton,\n AudioPlayerDuration,\n AudioPlayerProgress,\n AudioPlayerProvider,\n AudioPlayerSpeed,\n AudioPlayerTime,\n exampleTracks,\n useAudioPlayer,\n} from \"@/components/ui/audio-player\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { ScrollArea } from \"@/components/ui/scroll-area\"\n\ninterface Track {\n id: string\n name: string\n url: string\n}\n\nexport default function AudioPlayer() {\n return (\n >\n \n \n )\n}\n\nconst AudioPlayerDemo = () => {\n return (\n \n
\n
\n \n
\n {exampleTracks.map((song, index) => (\n \n ))}\n
\n
\n
\n \n
\n
\n )\n}\n\nconst Player = () => {\n const player = useAudioPlayer()\n\n return (\n
\n
\n
\n

\n {player.activeItem?.data?.name ?? \"No track selected\"}\n

\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n
\n )\n}\n\nconst SongListItem = ({\n song,\n trackNumber,\n}: {\n song: Track\n trackNumber: number\n}) => {\n const player = useAudioPlayer()\n const isActive = player.isItemActive(song.id)\n const isCurrentlyPlaying = isActive && player.isPlaying\n\n return (\n
\n {\n if (isCurrentlyPlaying) {\n player.pause()\n } else {\n player.play({\n id: song.id,\n src: song.url,\n data: song,\n })\n }\n }}\n >\n
\n
\n {isCurrentlyPlaying ? (\n \n ) : (\n <>\n \n {trackNumber}\n \n \n \n )}\n
\n {song.name}\n
\n \n
\n )\n}\n", "type": "registry:example" } ], "type": "registry:example" }