{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "music-player-01", "description": "Music player with playlist", "registryDependencies": [ "https://ui.elevenlabs.io/r/audio-player.json", "button", "scroll-area" ], "files": [ { "path": "blocks/music-player-01/page.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 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 Page() {\n return (\n >\n \n \n )\n}\n\nconst MusicPlayer = () => {\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\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:page", "target": "app/music-player/page.tsx" } ], "meta": { "iframeHeight": "600px", "container": "w-full bg-surface min-h-svh flex px-4 py-12 items-center md:py-20 justify-center min-w-0", "mobile": "component" }, "categories": [ "audio" ], "type": "registry:block" }