| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Liquid Glass Music</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); |
| |
| body { |
| font-family: 'Inter', sans-serif; |
| background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); |
| color: white; |
| min-height: 100vh; |
| overflow-x: hidden; |
| } |
| |
| .glass-card { |
| background: rgba(255, 255, 255, 0.1); |
| backdrop-filter: blur(20px); |
| -webkit-backdrop-filter: blur(20px); |
| border: 1px solid rgba(255, 255, 255, 0.2); |
| box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.15); |
| } |
| |
| .waveform { |
| height: 60px; |
| width: 100%; |
| background: linear-gradient(90deg, rgba(99, 102, 241, 0.8) 0%, rgba(168, 85, 247, 0.8) 100%); |
| border-radius: 10px; |
| position: relative; |
| overflow: hidden; |
| } |
| |
| .waveform::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background: repeating-linear-gradient( |
| 90deg, |
| transparent, |
| transparent 2px, |
| rgba(255, 255, 255, 0.2) 2px, |
| rgba(255, 255, 255, 0.2) 4px |
| ); |
| animation: wave 2s linear infinite; |
| } |
| |
| @keyframes wave { |
| 0% { transform: translateX(0); } |
| 100% { transform: translateX(-4px); } |
| } |
| |
| .progress-bar { |
| position: absolute; |
| top: 0; |
| left: 0; |
| height: 100%; |
| width: 30%; |
| background: rgba(255, 255, 255, 0.3); |
| border-radius: 10px; |
| } |
| |
| .player-controls button { |
| transition: all 0.3s ease; |
| } |
| |
| .player-controls button:hover { |
| transform: scale(1.1); |
| } |
| |
| .play-btn { |
| box-shadow: 0 0 20px rgba(99, 102, 241, 0.5); |
| } |
| |
| .song-card:hover .play-icon { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| |
| .play-icon { |
| opacity: 0; |
| transform: translateY(10px); |
| transition: all 0.3s ease; |
| } |
| |
| .tab-indicator { |
| height: 3px; |
| width: 30px; |
| background: white; |
| border-radius: 3px; |
| transition: all 0.3s ease; |
| } |
| |
| .active-tab .tab-indicator { |
| width: 50px; |
| background: #6366f1; |
| } |
| |
| .ripple { |
| position: absolute; |
| border-radius: 50%; |
| background-color: rgba(255, 255, 255, 0.3); |
| transform: scale(0); |
| animation: ripple 0.6s linear; |
| pointer-events: none; |
| } |
| |
| @keyframes ripple { |
| to { |
| transform: scale(4); |
| opacity: 0; |
| } |
| } |
| |
| .upload-zone { |
| border: 2px dashed rgba(255, 255, 255, 0.3); |
| transition: all 0.3s ease; |
| } |
| |
| .upload-zone.active { |
| border-color: #6366f1; |
| background: rgba(99, 102, 241, 0.1); |
| } |
| </style> |
| </head> |
| <body class="relative pb-32"> |
| |
| <div class="container mx-auto px-4 py-6"> |
| |
| <header class="flex justify-between items-center mb-8"> |
| <div class="flex items-center"> |
| <div class="w-10 h-10 rounded-full glass-card flex items-center justify-center mr-3"> |
| <i class="fas fa-music text-purple-500"></i> |
| </div> |
| <h1 class="text-2xl font-bold">Liquid Glass</h1> |
| </div> |
| <div class="flex items-center space-x-4"> |
| <button class="glass-card w-10 h-10 rounded-full flex items-center justify-center"> |
| <i class="fas fa-search"></i> |
| </button> |
| <button class="glass-card w-10 h-10 rounded-full flex items-center justify-center"> |
| <i class="fas fa-user"></i> |
| </button> |
| </div> |
| </header> |
| |
| |
| <div class="flex justify-around mb-8"> |
| <button class="tab-btn active-tab flex flex-col items-center pb-2"> |
| <i class="fas fa-home text-xl mb-1"></i> |
| <div class="tab-indicator"></div> |
| </button> |
| <button class="tab-btn flex flex-col items-center pb-2"> |
| <i class="fas fa-search text-xl mb-1"></i> |
| <div class="tab-indicator"></div> |
| </button> |
| <button class="tab-btn flex flex-col items-center pb-2"> |
| <i class="fas fa-heart text-xl mb-1"></i> |
| <div class="tab-indicator"></div> |
| </button> |
| <button class="tab-btn flex flex-col items-center pb-2"> |
| <i class="fas fa-list text-xl mb-1"></i> |
| <div class="tab-indicator"></div> |
| </button> |
| </div> |
| |
| |
| <div id="home-content" class="tab-content active"> |
| <h2 class="text-xl font-semibold mb-4">Recently Played</h2> |
| <div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4 mb-8"> |
| |
| <div class="song-card glass-card rounded-xl p-4 relative overflow-hidden"> |
| <div class="relative mb-3"> |
| <img src="https://source.unsplash.com/random/300x300/?music" alt="Album Cover" class="w-full rounded-lg aspect-square object-cover"> |
| <button class="play-icon absolute bottom-2 right-2 w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| </div> |
| <h3 class="font-medium truncate">Liquid Dreams</h3> |
| <p class="text-sm text-gray-300 truncate">Waveform Collective</p> |
| </div> |
| |
| <div class="song-card glass-card rounded-xl p-4 relative overflow-hidden"> |
| <div class="relative mb-3"> |
| <img src="https://source.unsplash.com/random/300x300/?album" alt="Album Cover" class="w-full rounded-lg aspect-square object-cover"> |
| <button class="play-icon absolute bottom-2 right-2 w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| </div> |
| <h3 class="font-medium truncate">Glass Beats</h3> |
| <p class="text-sm text-gray-300 truncate">Transparent Sounds</p> |
| </div> |
| |
| <div class="song-card glass-card rounded-xl p-4 relative overflow-hidden"> |
| <div class="relative mb-3"> |
| <img src="https://source.unsplash.com/random/300x300/?vinyl" alt="Album Cover" class="w-full rounded-lg aspect-square object-cover"> |
| <button class="play-icon absolute bottom-2 right-2 w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| </div> |
| <h3 class="font-medium truncate">Fluid Motion</h3> |
| <p class="text-sm text-gray-300 truncate">Liquid Harmony</p> |
| </div> |
| |
| <div class="song-card glass-card rounded-xl p-4 relative overflow-hidden"> |
| <div class="relative mb-3"> |
| <img src="https://source.unsplash.com/random/300x300/?concert" alt="Album Cover" class="w-full rounded-lg aspect-square object-cover"> |
| <button class="play-icon absolute bottom-2 right-2 w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| </div> |
| <h3 class="font-medium truncate">Crystal Clear</h3> |
| <p class="text-sm text-gray-300 truncate">Pure Audio</p> |
| </div> |
| |
| <div class="song-card glass-card rounded-xl p-4 relative overflow-hidden"> |
| <div class="relative mb-3"> |
| <img src="https://source.unsplash.com/random/300x300/?dj" alt="Album Cover" class="w-full rounded-lg aspect-square object-cover"> |
| <button class="play-icon absolute bottom-2 right-2 w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| </div> |
| <h3 class="font-medium truncate">Reflections</h3> |
| <p class="text-sm text-gray-300 truncate">Mirror Sounds</p> |
| </div> |
| </div> |
| |
| <h2 class="text-xl font-semibold mb-4">Trending Now</h2> |
| <div class="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-8"> |
| |
| <div class="glass-card rounded-xl p-4 flex items-center"> |
| <div class="w-16 h-16 rounded-lg overflow-hidden mr-4"> |
| <img src="https://source.unsplash.com/random/300x300/?playlist" alt="Playlist Cover" class="w-full h-full object-cover"> |
| </div> |
| <div> |
| <h3 class="font-medium">Liquid Vibes</h3> |
| <p class="text-sm text-gray-300">Chill beats for your glass world</p> |
| </div> |
| <button class="ml-auto w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-play"></i> |
| </button> |
| </div> |
| |
| <div class="glass-card rounded-xl p-4 flex items-center"> |
| <div class="w-16 h-16 rounded-lg overflow-hidden mr-4"> |
| <img src="https://source.unsplash.com/random/300x300/?music,night" alt="Playlist Cover" class="w-full h-full object-cover"> |
| </div> |
| <div> |
| <h3 class="font-medium">Night Waves</h3> |
| <p class="text-sm text-gray-300">Smooth nocturnal frequencies</p> |
| </div> |
| <button class="ml-auto w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-play"></i> |
| </button> |
| </div> |
| </div> |
| |
| <h2 class="text-xl font-semibold mb-4">New Releases</h2> |
| <div class="mb-8"> |
| |
| <div class="glass-card rounded-xl overflow-hidden"> |
| <div class="flex items-center p-4 border-b border-white/10 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 h-10 rounded mr-4 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?music,cover" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div class="flex-grow min-w-0"> |
| <h3 class="font-medium truncate">Liquid Dreams</h3> |
| <p class="text-sm text-gray-300 truncate">Waveform Collective</p> |
| </div> |
| <div class="w-24 md:w-32 ml-4"> |
| <div class="waveform"> |
| <div class="progress-bar"></div> |
| </div> |
| </div> |
| <button class="ml-4 w-8 h-8 rounded-full flex items-center justify-center text-gray-300 hover:text-white"> |
| <i class="fas fa-ellipsis-h"></i> |
| </button> |
| </div> |
| |
| <div class="flex items-center p-4 border-b border-white/10 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 h-10 rounded mr-4 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?album,art" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div class="flex-grow min-w-0"> |
| <h3 class="font-medium truncate">Glass Beats</h3> |
| <p class="text-sm text-gray-300 truncate">Transparent Sounds</p> |
| </div> |
| <div class="w-24 md:w-32 ml-4"> |
| <div class="waveform"> |
| <div class="progress-bar" style="width: 45%"></div> |
| </div> |
| </div> |
| <button class="ml-4 w-8 h-8 rounded-full flex items-center justify-center text-gray-300 hover:text-white"> |
| <i class="fas fa-ellipsis-h"></i> |
| </button> |
| </div> |
| |
| <div class="flex items-center p-4 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 h-10 rounded mr-4 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?vinyl,record" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div class="flex-grow min-w-0"> |
| <h3 class="font-medium truncate">Fluid Motion</h3> |
| <p class="text-sm text-gray-300 truncate">Liquid Harmony</p> |
| </div> |
| <div class="w-24 md:w-32 ml-4"> |
| <div class="waveform"> |
| <div class="progress-bar" style="width: 15%"></div> |
| </div> |
| </div> |
| <button class="ml-4 w-8 h-8 rounded-full flex items-center justify-center text-gray-300 hover:text-white"> |
| <i class="fas fa-ellipsis-h"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="glass-card rounded-xl p-6 mb-8"> |
| <h2 class="text-xl font-semibold mb-4">Upload Your Music</h2> |
| <div class="upload-zone rounded-xl p-8 text-center cursor-pointer"> |
| <i class="fas fa-cloud-upload-alt text-4xl mb-3 text-purple-500"></i> |
| <p class="mb-2 font-medium">Drag & drop your audio files here</p> |
| <p class="text-sm text-gray-300 mb-4">or click to browse files</p> |
| <button class="px-6 py-2 rounded-full bg-purple-600 hover:bg-purple-700 transition-colors"> |
| Select Files |
| </button> |
| </div> |
| |
| <div class="mt-6"> |
| <h3 class="font-medium mb-3">Upload Queue</h3> |
| <div class="space-y-3"> |
| <div class="flex items-center glass-card rounded-lg p-3"> |
| <div class="w-12 h-12 rounded mr-3 bg-purple-500/10 flex items-center justify-center"> |
| <i class="fas fa-music text-purple-500"></i> |
| </div> |
| <div class="flex-grow"> |
| <h4 class="font-medium">My New Track.mp3</h4> |
| <div class="w-full bg-gray-700 rounded-full h-1.5 mt-1"> |
| <div class="bg-purple-500 h-1.5 rounded-full" style="width: 45%"></div> |
| </div> |
| </div> |
| <button class="ml-3 text-gray-400 hover:text-white"> |
| <i class="fas fa-times"></i> |
| </button> |
| </div> |
| |
| <div class="flex items-center glass-card rounded-lg p-3"> |
| <div class="w-12 h-12 rounded mr-3 bg-purple-500/10 flex items-center justify-center"> |
| <i class="fas fa-music text-purple-500"></i> |
| </div> |
| <div class="flex-grow"> |
| <h4 class="font-medium">Liquid Dreams.wav</h4> |
| <div class="w-full bg-gray-700 rounded-full h-1.5 mt-1"> |
| <div class="bg-purple-500 h-1.5 rounded-full" style="width: 80%"></div> |
| </div> |
| </div> |
| <button class="ml-3 text-gray-400 hover:text-white"> |
| <i class="fas fa-times"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="search-content" class="tab-content hidden"> |
| <div class="glass-card rounded-xl p-4 mb-6"> |
| <div class="relative"> |
| <input type="text" placeholder="Search for songs, artists, or albums" class="w-full bg-transparent border-0 focus:ring-0 pl-10 pr-4 py-3"> |
| <i class="fas fa-search absolute left-3 top-3.5 text-gray-400"></i> |
| </div> |
| </div> |
| |
| <h2 class="text-xl font-semibold mb-4">Browse All</h2> |
| <div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4"> |
| <div class="glass-card rounded-xl aspect-square flex flex-col items-center justify-center p-4"> |
| <div class="w-16 h-16 rounded-full bg-purple-500/10 flex items-center justify-center mb-3"> |
| <i class="fas fa-compact-disc text-purple-500 text-2xl"></i> |
| </div> |
| <span class="font-medium">Albums</span> |
| </div> |
| |
| <div class="glass-card rounded-xl aspect-square flex flex-col items-center justify-center p-4"> |
| <div class="w-16 h-16 rounded-full bg-pink-500/10 flex items-center justify-center mb-3"> |
| <i class="fas fa-music text-pink-500 text-2xl"></i> |
| </div> |
| <span class="font-medium">Songs</span> |
| </div> |
| |
| <div class="glass-card rounded-xl aspect-square flex flex-col items-center justify-center p-4"> |
| <div class="w-16 h-16 rounded-full bg-blue-500/10 flex items-center justify-center mb-3"> |
| <i class="fas fa-users text-blue-500 text-2xl"></i> |
| </div> |
| <span class="font-medium">Artists</span> |
| </div> |
| |
| <div class="glass-card rounded-xl aspect-square flex flex-col items-center justify-center p-4"> |
| <div class="w-16 h-16 rounded-full bg-green-500/10 flex items-center justify-center mb-3"> |
| <i class="fas fa-list text-green-500 text-2xl"></i> |
| </div> |
| <span class="font-medium">Playlists</span> |
| </div> |
| |
| <div class="glass-card rounded-xl aspect-square flex flex-col items-center justify-center p-4"> |
| <div class="w-16 h-16 rounded-full bg-yellow-500/10 flex items-center justify-center mb-3"> |
| <i class="fas fa-tags text-yellow-500 text-2xl"></i> |
| </div> |
| <span class="font-medium">Genres</span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="library-content" class="tab-content hidden"> |
| <h2 class="text-xl font-semibold mb-4">Your Library</h2> |
| |
| <div class="flex space-x-2 mb-6 overflow-x-auto pb-2"> |
| <button class="px-4 py-1 rounded-full glass-card text-sm whitespace-nowrap">Playlists</button> |
| <button class="px-4 py-1 rounded-full glass-card text-sm whitespace-nowrap">Liked Songs</button> |
| <button class="px-4 py-1 rounded-full glass-card text-sm whitespace-nowrap">Albums</button> |
| <button class="px-4 py-1 rounded-full glass-card text-sm whitespace-nowrap">Artists</button> |
| <button class="px-4 py-1 rounded-full glass-card text-sm whitespace-nowrap">Downloads</button> |
| </div> |
| |
| <div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4"> |
| <div class="glass-card rounded-xl p-4 aspect-square flex flex-col"> |
| <div class="w-full h-3/4 rounded-lg mb-3 bg-gradient-to-br from-purple-500 to-pink-500 flex items-center justify-center"> |
| <i class="fas fa-heart text-white text-4xl"></i> |
| </div> |
| <h3 class="font-medium truncate">Liked Songs</h3> |
| <p class="text-sm text-gray-300">24 songs</p> |
| </div> |
| |
| <div class="glass-card rounded-xl p-4 aspect-square flex flex-col"> |
| <div class="w-full h-3/4 rounded-lg mb-3 bg-gradient-to-br from-blue-500 to-cyan-500 flex items-center justify-center"> |
| <i class="fas fa-headphones text-white text-4xl"></i> |
| </div> |
| <h3 class="font-medium truncate">Chill Vibes</h3> |
| <p class="text-sm text-gray-300">12 songs</p> |
| </div> |
| |
| <div class="glass-card rounded-xl p-4 aspect-square flex flex-col"> |
| <div class="w-full h-3/4 rounded-lg mb-3 bg-gradient-to-br from-green-500 to-emerald-500 flex items-center justify-center"> |
| <i class="fas fa-running text-white text-4xl"></i> |
| </div> |
| <h3 class="font-medium truncate">Workout Mix</h3> |
| <p class="text-sm text-gray-300">18 songs</p> |
| </div> |
| |
| <div class="glass-card rounded-xl p-4 aspect-square flex flex-col"> |
| <div class="w-full h-3/4 rounded-lg mb-3 bg-gradient-to-br from-red-500 to-orange-500 flex items-center justify-center"> |
| <i class="fas fa-moon text-white text-4xl"></i> |
| </div> |
| <h3 class="font-medium truncate">Sleep Sounds</h3> |
| <p class="text-sm text-gray-300">8 songs</p> |
| </div> |
| |
| <div class="glass-card rounded-xl p-4 aspect-square flex flex-col"> |
| <div class="w-full h-3/4 rounded-lg mb-3 bg-gradient-to-br from-yellow-500 to-amber-500 flex items-center justify-center"> |
| <i class="fas fa-plus text-white text-4xl"></i> |
| </div> |
| <h3 class="font-medium truncate">New Playlist</h3> |
| <p class="text-sm text-gray-300">Create</p> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="playlist-content" class="tab-content hidden"> |
| <div class="flex items-start mb-6"> |
| <div class="w-24 h-24 sm:w-32 sm:h-32 md:w-48 md:h-48 rounded-xl glass-card overflow-hidden mr-4 md:mr-6 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?playlist" alt="Playlist Cover" class="w-full h-full object-cover"> |
| </div> |
| <div class="flex-grow"> |
| <p class="text-sm text-gray-300 mb-1">PLAYLIST</p> |
| <h1 class="text-2xl md:text-4xl font-bold mb-3">Liquid Dreams</h1> |
| <p class="text-gray-300 mb-4">A collection of smooth liquid glass tracks to relax and unwind</p> |
| <div class="flex items-center text-sm text-gray-300"> |
| <span class="font-medium text-white">Waveform Collective</span> |
| <span class="mx-2">•</span> |
| <span>12 songs</span> |
| <span class="mx-2">•</span> |
| <span>45 min</span> |
| </div> |
| </div> |
| </div> |
| |
| <div class="glass-card rounded-xl overflow-hidden"> |
| <div class="p-4 border-b border-white/10 flex items-center"> |
| <div class="w-10 flex-shrink-0 text-center text-gray-400">#</div> |
| <div class="flex-grow">TITLE</div> |
| <div class="w-24 md:w-32">WAVEFORM</div> |
| <div class="w-10 flex-shrink-0 text-right text-gray-400"> |
| <i class="far fa-clock"></i> |
| </div> |
| </div> |
| |
| <div class="flex items-center p-4 border-b border-white/10 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 flex-shrink-0 text-center text-gray-400">1</div> |
| <div class="flex items-center flex-grow min-w-0"> |
| <div class="w-10 h-10 rounded mr-3 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?music,cover" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div> |
| <h3 class="font-medium truncate">Liquid Dreams</h3> |
| <p class="text-sm text-gray-300 truncate">Waveform Collective</p> |
| </div> |
| </div> |
| <div class="w-24 md:w-32"> |
| <div class="waveform"> |
| <div class="progress-bar"></div> |
| </div> |
| </div> |
| <div class="w-10 flex-shrink-0 text-right text-gray-400">3:42</div> |
| </div> |
| |
| <div class="flex items-center p-4 border-b border-white/10 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 flex-shrink-0 text-center text-gray-400">2</div> |
| <div class="flex items-center flex-grow min-w-0"> |
| <div class="w-10 h-10 rounded mr-3 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?album,art" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div> |
| <h3 class="font-medium truncate">Glass Beats</h3> |
| <p class="text-sm text-gray-300 truncate">Transparent Sounds</p> |
| </div> |
| </div> |
| <div class="w-24 md:w-32"> |
| <div class="waveform"> |
| <div class="progress-bar" style="width: 45%"></div> |
| </div> |
| </div> |
| <div class="w-10 flex-shrink-0 text-right text-gray-400">4:15</div> |
| </div> |
| |
| <div class="flex items-center p-4 hover:bg-white/5 transition-colors cursor-pointer"> |
| <div class="w-10 flex-shrink-0 text-center text-gray-400">3</div> |
| <div class="flex items-center flex-grow min-w-0"> |
| <div class="w-10 h-10 rounded mr-3 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?vinyl,record" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div> |
| <h3 class="font-medium truncate">Fluid Motion</h3> |
| <p class="text-sm text-gray-300 truncate">Liquid Harmony</p> |
| </div> |
| </div> |
| <div class="w-24 md:w-32"> |
| <div class="waveform"> |
| <div class="progress-bar" style="width: 15%"></div> |
| </div> |
| </div> |
| <div class="w-10 flex-shrink-0 text-right text-gray-400">3:28</div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="fixed bottom-0 left-0 right-0 glass-card backdrop-blur-xl border-t border-white/10"> |
| <div class="container mx-auto px-4 py-3"> |
| <div class="flex items-center"> |
| <div class="w-12 h-12 rounded mr-3 flex-shrink-0"> |
| <img src="https://source.unsplash.com/random/300x300/?music,cover" alt="Album Cover" class="w-full h-full object-cover rounded"> |
| </div> |
| <div class="flex-grow min-w-0"> |
| <h3 class="font-medium truncate">Liquid Dreams</h3> |
| <p class="text-sm text-gray-300 truncate">Waveform Collective</p> |
| </div> |
| <div class="flex items-center space-x-4 ml-4"> |
| <button class="player-controls"> |
| <i class="fas fa-step-backward text-lg"></i> |
| </button> |
| <button class="player-controls play-btn w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white"></i> |
| </button> |
| <button class="player-controls"> |
| <i class="fas fa-step-forward text-lg"></i> |
| </button> |
| </div> |
| </div> |
| |
| <div class="mt-2 flex items-center"> |
| <span class="text-xs text-gray-400 w-10">1:23</span> |
| <div class="flex-grow mx-2"> |
| <div class="waveform"> |
| <div class="progress-bar" style="width: 30%"></div> |
| </div> |
| </div> |
| <span class="text-xs text-gray-400 w-10">3:42</span> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div id="full-player" class="fixed inset-0 bg-gradient-to-b from-purple-900/80 to-indigo-900/80 backdrop-blur-3xl z-50 hidden flex flex-col items-center justify-center p-6"> |
| <button id="close-player" class="absolute top-6 right-6 w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-times"></i> |
| </button> |
| |
| <div class="w-full max-w-md mb-8"> |
| <div class="w-full aspect-square rounded-2xl overflow-hidden mb-6 glass-card"> |
| <img src="https://source.unsplash.com/random/600x600/?music,cover" alt="Album Cover" class="w-full h-full object-cover"> |
| </div> |
| |
| <div class="text-center mb-8"> |
| <h1 class="text-2xl font-bold mb-1">Liquid Dreams</h1> |
| <p class="text-gray-300">Waveform Collective</p> |
| </div> |
| |
| <div class="mb-6"> |
| <div class="waveform h-16 rounded-xl mb-2"> |
| <div class="progress-bar" style="width: 30%"></div> |
| </div> |
| <div class="flex justify-between text-sm text-gray-300"> |
| <span>1:23</span> |
| <span>3:42</span> |
| </div> |
| </div> |
| |
| <div class="flex items-center justify-center space-x-8 mb-8"> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-random"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-step-backward"></i> |
| </button> |
| <button class="play-btn w-16 h-16 rounded-full bg-purple-600 flex items-center justify-center"> |
| <i class="fas fa-play text-white text-2xl"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-step-forward"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-redo"></i> |
| </button> |
| </div> |
| |
| <div class="flex items-center justify-between"> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-heart"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-download"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-share-alt"></i> |
| </button> |
| <button class="w-10 h-10 rounded-full glass-card flex items-center justify-center"> |
| <i class="fas fa-ellipsis-h"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| <script> |
| |
| const tabButtons = document.querySelectorAll('.tab-btn'); |
| const tabContents = document.querySelectorAll('.tab-content'); |
| |
| tabButtons.forEach(button => { |
| button.addEventListener('click', () => { |
| |
| tabButtons.forEach(btn => btn.classList.remove('active-tab')); |
| tabContents.forEach(content => { |
| content.classList.remove('active'); |
| content.classList.add('hidden'); |
| }); |
| |
| |
| button.classList.add('active-tab'); |
| |
| |
| const tabName = button.querySelector('i').className.split(' ')[1]; |
| let contentId; |
| |
| if (tabName === 'fa-home') contentId = 'home-content'; |
| else if (tabName === 'fa-search') contentId = 'search-content'; |
| else if (tabName === 'fa-heart') contentId = 'library-content'; |
| else if (tabName === 'fa-list') contentId = 'playlist-content'; |
| |
| const content = document.getElementById(contentId); |
| content.classList.remove('hidden'); |
| content.classList.add('active'); |
| }); |
| }); |
| |
| |
| const miniPlayer = document.querySelector('.fixed.bottom-0'); |
| const fullPlayer = document.getElementById('full-player'); |
| const closePlayer = document.getElementById('close-player'); |
| |
| miniPlayer.addEventListener('click', (e) => { |
| |
| if (e.target === miniPlayer || e.target.classList.contains('flex-grow')) { |
| fullPlayer.classList.remove('hidden'); |
| fullPlayer.classList.add('flex'); |
| document.body.style.overflow = 'hidden'; |
| } |
| }); |
| |
| closePlayer.addEventListener('click', () => { |
| fullPlayer.classList.add('hidden'); |
| fullPlayer.classList.remove('flex'); |
| document.body.style.overflow = ''; |
| }); |
| |
| |
| const playButtons = document.querySelectorAll('.play-btn'); |
| |
| playButtons.forEach(button => { |
| button.addEventListener('click', (e) => { |
| e.stopPropagation(); |
| const icon = button.querySelector('i'); |
| if (icon.classList.contains('fa-play')) { |
| icon.classList.remove('fa-play'); |
| icon.classList.add('fa-pause'); |
| |
| } else { |
| icon.classList.remove('fa-pause'); |
| icon.classList.add('fa-play'); |
| |
| } |
| }); |
| }); |
| |
| |
| const songCards = document.querySelectorAll('.song-card'); |
| songCards.forEach(card => { |
| card.addEventListener('click', (e) => { |
| if (!e.target.closest('.play-icon')) { |
| |
| const title = card.querySelector('h3').textContent; |
| const artist = card.querySelector('p').textContent; |
| console.log(`Playing: ${title} by ${artist}`); |
| } |
| }); |
| |
| const playBtn = card.querySelector('.play-icon'); |
| if (playBtn) { |
| playBtn.addEventListener('click', (e) => { |
| e.stopPropagation(); |
| const icon = playBtn.querySelector('i'); |
| if (icon.classList.contains('fa-play')) { |
| icon.classList.remove('fa-play'); |
| icon.classList.add('fa-pause'); |
| } else { |
| icon.classList.remove('fa-pause'); |
| icon.classList.add('fa-play'); |
| } |
| }); |
| } |
| }); |
| |
| |
| document.addEventListener('click', function(e) { |
| if (e.target.closest('.glass-card, .play-btn')) { |
| const button = e.target.closest('.glass-card, .play-btn'); |
| const rect = button.getBoundingClientRect(); |
| const x = e.clientX - rect.left; |
| const y = e.clientY - rect.top; |
| |
| const ripple = document.createElement('span'); |
| ripple.className = 'ripple'; |
| ripple.style.left = `${x}px`; |
| ripple.style.top = `${y}px`; |
| |
| button.appendChild(ripple); |
| |
| setTimeout(() => { |
| ripple.remove(); |
| }, 600); |
| } |
| }); |
| |
| |
| const uploadZone = document.querySelector('.upload-zone'); |
| |
| uploadZone.addEventListener('dragover', (e) => { |
| e.preventDefault(); |
| uploadZone.classList.add('active'); |
| }); |
| |
| uploadZone.addEventListener('dragleave', () => { |
| uploadZone.classList.remove('active'); |
| }); |
| |
| uploadZone.addEventListener('drop', (e) => { |
| e.preventDefault(); |
| uploadZone.classList.remove('active'); |
| |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Crambit/lgm" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |