courageoustunes-com / index.html
Courageous2000's picture
make the image a slide of series of images - Follow Up Deployment
a16cdd6 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Courageous Music Player</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Poppins', sans-serif;
background-color: #0f172a;
color: #f8fafc;
}
.waveform {
height: 60px;
width: 100%;
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
mask-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 20" xmlns="http://www.w3.org/2000/svg"><path d="M0,10 Q5,15 10,10 T20,10 T30,10 T40,10 T50,10 T60,10 T70,10 T80,10 T90,10 T100,10" stroke="white" fill="none" stroke-width="2"/></svg>');
mask-size: 100% 100%;
mask-repeat: no-repeat;
}
.progress-bar {
height: 4px;
background-color: #334155;
}
.progress {
height: 100%;
background: linear-gradient(90deg, #3b82f6, #8b5cf6);
width: 0%;
transition: width 0.1s linear;
}
.album-art {
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
}
.playlist-item:hover {
background-color: #1e293b;
transform: translateX(4px);
}
.volume-slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 16px;
height: 16px;
border-radius: 50%;
background: #3b82f6;
cursor: pointer;
}
</style>
<style>
.slide-img {
opacity: 0;
transition: opacity 1s ease-in-out;
}
.slide-img.active {
opacity: 1;
}
</style>
</head>
<body class="min-h-screen">
<div class="container mx-auto px-4 py-8 max-w-6xl">
<header class="flex justify-between items-center mb-8">
<h1 class="text-3xl font-bold bg-gradient-to-r from-blue-500 to-purple-500 bg-clip-text text-transparent">CourageousTunes</h1>
<div class="flex items-center space-x-4">
<select id="quality-selector" class="bg-slate-800 text-white px-4 py-2 rounded-lg border border-slate-700 focus:outline-none focus:border-blue-500">
<option value="high">High Quality (320kbps)</option>
<option value="medium">Medium (192kbps)</option>
<option value="low">Low (128kbps)</option>
</select>
<button class="p-2 rounded-full bg-slate-800 hover:bg-slate-700 transition-colors">
<i data-feather="settings"></i>
</button>
</div>
</header>
<main>
<div class="grid grid-cols-1 lg:grid-cols-4 gap-8">
<!-- Player Section -->
<div class="lg:col-span-2 space-y-6" data-aos="fade-right">
<div class="bg-slate-800 rounded-2xl p-6 shadow-xl">
<div class="flex flex-col items-center">
<div class="album-art w-64 h-64 rounded-xl overflow-hidden mb-6 relative">
<img src="http://static.photos/music/640x360/1" alt="Album Art" class="w-full h-full object-cover absolute inset-0 slide-img active">
<img src="http://static.photos/music/640x360/2" alt="Album Art" class="w-full h-full object-cover absolute inset-0 slide-img">
<img src="http://static.photos/music/640x360/3" alt="Album Art" class="w-full h-full object-cover absolute inset-0 slide-img">
<img src="http://static.photos/music/640x360/4" alt="Album Art" class="w-full h-full object-cover absolute inset-0 slide-img">
</div>
<div class="text-center">
<h2 class="text-2xl font-semibold">Current Song</h2>
<p class="text-slate-400">Artist Name</p>
</div>
</div>
<div class="mt-8">
<div class="waveform mb-2"></div>
<div class="progress-bar rounded-full mb-4">
<div class="progress rounded-full"></div>
</div>
<div class="flex justify-between text-sm text-slate-400">
<span>0:00</span>
<span>3:45</span>
</div>
</div>
<div class="flex justify-center items-center mt-8 space-x-6">
<button class="p-3 rounded-full bg-slate-700 hover:bg-slate-600 transition-colors">
<i data-feather="skip-back"></i>
</button>
<button class="p-5 rounded-full bg-gradient-to-r from-blue-500 to-purple-500 hover:from-blue-600 hover:to-purple-600 transition-colors shadow-lg">
<i data-feather="play"></i>
</button>
<button class="p-3 rounded-full bg-slate-700 hover:bg-slate-600 transition-colors">
<i data-feather="skip-forward"></i>
</button>
</div>
<div class="flex items-center mt-6 space-x-4">
<i data-feather="volume-2" class="text-slate-400"></i>
<input type="range" min="0" max="100" value="80" class="volume-slider w-full h-1 bg-slate-700 rounded-full appearance-none">
</div>
</div>
</div>
<!-- Playlist Section -->
<div class="lg:col-span-1" data-aos="fade-left">
<div class="bg-slate-800 rounded-2xl p-6 shadow-xl h-full">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-semibold">Your Playlist</h2>
<button class="p-2 rounded-full bg-slate-700 hover:bg-slate-600 transition-colors">
<i data-feather="plus"></i>
</button>
</div>
<div class="space-y-2 max-h-96 overflow-y-auto pr-2">
<!-- Playlist Item -->
<div class="playlist-item flex items-center p-3 rounded-lg cursor-pointer transition-all bg-slate-700">
<div class="w-12 h-12 rounded-md overflow-hidden mr-3">
<img src="http://static.photos/music/200x200/1" alt="Album Cover" class="w-full h-full object-cover">
</div>
<div class="flex-1">
<h3 class="font-medium">Song Title 1</h3>
<p class="text-sm text-slate-400">Artist 1</p>
</div>
<span class="text-sm text-slate-400">3:45</span>
</div>
<!-- More playlist items -->
<div class="playlist-item flex items-center p-3 rounded-lg cursor-pointer transition-all hover:bg-slate-700">
<div class="w-12 h-12 rounded-md overflow-hidden mr-3">
<img src="http://static.photos/music/200x200/2" alt="Album Cover" class="w-full h-full object-cover">
</div>
<div class="flex-1">
<h3 class="font-medium">Song Title 2</h3>
<p class="text-sm text-slate-400">Artist 2</p>
</div>
<span class="text-sm text-slate-400">4:12</span>
</div>
<div class="playlist-item flex items-center p-3 rounded-lg cursor-pointer transition-all hover:bg-slate-700">
<div class="w-12 h-12 rounded-md overflow-hidden mr-3">
<img src="http://static.photos/music/200x200/3" alt="Album Cover" class="w-full h-full object-cover">
</div>
<div class="flex-1">
<h3 class="font-medium">Song Title 3</h3>
<p class="text-sm text-slate-400">Artist 3</p>
</div>
<span class="text-sm text-slate-400">2:58</span>
</div>
<div class="playlist-item flex items-center p-3 rounded-lg cursor-pointer transition-all hover:bg-slate-700">
<div class="w-12 h-12 rounded-md overflow-hidden mr-3">
<img src="http://static.photos/music/200x200/4" alt="Album Cover" class="w-full h-full object-cover">
</div>
<div class="flex-1">
<h3 class="font-medium">Song Title 4</h3>
<p class="text-sm text-slate-400">Artist 4</p>
</div>
<span class="text-sm text-slate-400">3:30</span>
</div>
<div class="playlist-item flex items-center p-3 rounded-lg cursor-pointer transition-all hover:bg-slate-700">
<div class="w-12 h-12 rounded-md overflow-hidden mr-3">
<img src="http://static.photos/music/200x200/5" alt="Album Cover" class="w-full h-full object-cover">
</div>
<div class="flex-1">
<h3 class="font-medium">Song Title 5</h3>
<p class="text-sm text-slate-400">Artist 5</p>
</div>
<span class="text-sm text-slate-400">5:21</span>
</div>
</div>
<div class="mt-6">
<label for="file-upload" class="flex items-center justify-center w-full p-3 bg-slate-700 rounded-lg cursor-pointer hover:bg-slate-600 transition-colors">
<i data-feather="upload" class="mr-2"></i>
<span>Add Music Files</span>
<input id="file-upload" type="file" class="hidden" accept="audio/*" multiple>
</label>
</div>
</div>
</div>
<!-- Library Section -->
<div class="lg:col-span-1" data-aos="fade-up">
<div class="bg-slate-800 rounded-2xl p-6 shadow-xl h-full">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-semibold">Library</h2>
<button class="p-2 rounded-full bg-slate-700 hover:bg-slate-600 transition-colors">
<i data-feather="folder"></i>
</button>
</div>
<div class="space-y-3">
<div class="bg-slate-700 rounded-lg p-3 cursor-pointer hover:bg-slate-600 transition-colors">
<div class="flex items-center justify-between">
<div>
<h3 class="font-medium">Recently Added</h3>
<p class="text-sm text-slate-400">23 songs</p>
</div>
<i data-feather="chevron-right" class="text-slate-400"></i>
</div>
</div>
<div class="bg-slate-700 rounded-lg p-3 cursor-pointer hover:bg-slate-600 transition-colors">
<div class="flex items-center justify-between">
<div>
<h3 class="font-medium">Favorites</h3>
<p class="text-sm text-slate-400">17 songs</p>
</div>
<i data-feather="chevron-right" class="text-slate-400"></i>
</div>
</div>
<div class="bg-slate-700 rounded-lg p-3 cursor-pointer hover:bg-slate-600 transition-colors">
<div class="flex items-center justify-between">
<div>
<h3 class="font-medium">High Quality</h3>
<p class="text-sm text-slate-400">45 songs</p>
</div>
<i data-feather="chevron-right" class="text-slate-400"></i>
</div>
</div>
<div class="bg-slate-700 rounded-lg p-3 cursor-pointer hover:bg-slate-600 transition-colors">
<div class="flex items-center justify-between">
<div>
<h3 class="font-medium">Offline</h3>
<p class="text-sm text-slate-400">89 songs</p>
</div>
<i data-feather="chevron-right" class="text-slate-400"></i>
</div>
</div>
<div class="bg-slate-700 rounded-lg p-3 cursor-pointer hover:bg-slate-600 transition-colors">
<div class="flex items-center justify-between">
<div>
<h3 class="font-medium">MP4 Videos</h3>
<p class="text-sm text-slate-400">12 songs</p>
</div>
<i data-feather="chevron-right" class="text-slate-400"></i>
</div>
</div>
</div>
<div class="mt-6 space-y-2">
<h3 class="text-sm font-medium text-slate-400 mb-2">Library Stats</h3>
<div class="flex justify-between text-sm">
<span class="text-slate-400">Total Songs:</span>
<span class="font-medium">186</span>
</div>
<div class="flex justify-between text-sm">
<span class="text-slate-400">Play Time:</span>
<span class="font-medium">12h 34m</span>
</div>
<div class="flex justify-between text-sm">
<span class="text-slate-400">Storage:</span>
<span class="font-medium">2.4 GB</span>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
<script>
AOS.init();
feather.replace();
// Simple player functionality
document.addEventListener('DOMContentLoaded', function() {
const playButton = document.querySelector('.bg-gradient-to-r');
const progressBar = document.querySelector('.progress');
let isPlaying = false;
let progress = 0;
let interval;
playButton.addEventListener('click', function() {
isPlaying = !isPlaying;
if (isPlaying) {
playButton.innerHTML = '<i data-feather="pause"></i>';
feather.replace();
// Simulate progress
interval = setInterval(() => {
if (progress >= 100) {
progress = 0;
isPlaying = false;
clearInterval(interval);
playButton.innerHTML = '<i data-feather="play"></i>';
feather.replace();
} else {
progress += 0.5;
progressBar.style.width = progress + '%';
}
}, 100);
} else {
clearInterval(interval);
playButton.innerHTML = '<i data-feather="play"></i>';
feather.replace();
}
});
// Image slideshow
let slideIndex = 0;
const slides = document.querySelectorAll('.slide-img');
setInterval(() => {
slides[slideIndex].classList.remove('active');
slideIndex = (slideIndex + 1) % slides.length;
slides[slideIndex].classList.add('active');
}, 3000);
// File upload handling
const fileUpload = document.getElementById('file-upload');
fileUpload.addEventListener('change', function(e) {
const files = e.target.files;
if (files.length > 0) {
alert(`Added ${files.length} music file(s) to your library!`);
// In a real app, you would process these files and add them to the playlist
}
});
});
</script>
// Simple player functionality
document.addEventListener('DOMContentLoaded', function() {
const playButton = document.querySelector('.bg-gradient-to-r');
const progressBar = document.querySelector('.progress');
let isPlaying = false;
let progress = 0;
let interval;
playButton.addEventListener('click', function() {
isPlaying = !isPlaying;
if (isPlaying) {
playButton.innerHTML = '<i data-feather="pause"></i>';
feather.replace();
// Simulate progress
interval = setInterval(() => {
if (progress >= 100) {
progress = 0;
isPlaying = false;
clearInterval(interval);
playButton.innerHTML = '<i data-feather="play"></i>';
feather.replace();
} else {
progress += 0.5;
progressBar.style.width = progress + '%';
}
}, 100);
} else {
clearInterval(interval);
playButton.innerHTML = '<i data-feather="play"></i>';
feather.replace();
}
});
// File upload handling
const fileUpload = document.getElementById('file-upload');
fileUpload.addEventListener('change', function(e) {
const files = e.target.files;
if (files.length > 0) {
alert(`Added ${files.length} music file(s) to your library!`);
// In a real app, you would process these files and add them to the playlist
}
});
});
</script>
</body>
</html>