|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>StreamHub - Video Streaming Platform</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> |
|
|
|
|
|
.video-card:hover .video-overlay { |
|
|
opacity: 1; |
|
|
} |
|
|
.video-overlay { |
|
|
transition: opacity 0.3s ease; |
|
|
} |
|
|
.progress-bar { |
|
|
transition: width 0.3s ease; |
|
|
} |
|
|
.player-container { |
|
|
aspect-ratio: 16/9; |
|
|
} |
|
|
@media (max-width: 768px) { |
|
|
.sidebar { |
|
|
transform: translateX(-100%); |
|
|
transition: transform 0.3s ease; |
|
|
} |
|
|
.sidebar.open { |
|
|
transform: translateX(0); |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-gray-900 text-white"> |
|
|
|
|
|
<nav class="bg-gray-800 px-4 py-3 flex items-center justify-between sticky top-0 z-50"> |
|
|
<div class="flex items-center space-x-4"> |
|
|
<button id="mobile-menu-button" class="md:hidden text-xl"> |
|
|
<i class="fas fa-bars"></i> |
|
|
</button> |
|
|
<a href="#" class="text-2xl font-bold text-red-500">StreamHub</a> |
|
|
<div class="hidden md:flex space-x-6"> |
|
|
<a href="#" class="hover:text-red-400">Home</a> |
|
|
<a href="#" class="hover:text-red-400">Browse</a> |
|
|
<a href="#" class="hover:text-red-400">Live</a> |
|
|
<a href="#" class="hover:text-red-400">Library</a> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex items-center space-x-4"> |
|
|
<div class="relative hidden md:block"> |
|
|
<input type="text" placeholder="Search videos..." class="bg-gray-700 px-4 py-2 rounded-full w-64 focus:outline-none focus:ring-2 focus:ring-red-500"> |
|
|
<button class="absolute right-3 top-2 text-gray-400"> |
|
|
<i class="fas fa-search"></i> |
|
|
</button> |
|
|
</div> |
|
|
<button class="bg-red-600 hover:bg-red-700 px-4 py-2 rounded-md font-medium"> |
|
|
Upload |
|
|
</button> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex items-center justify-center cursor-pointer"> |
|
|
<i class="fas fa-user"></i> |
|
|
</div> |
|
|
</div> |
|
|
</nav> |
|
|
|
|
|
|
|
|
<div class="md:hidden px-4 py-2 bg-gray-800"> |
|
|
<div class="relative"> |
|
|
<input type="text" placeholder="Search videos..." class="bg-gray-700 px-4 py-2 rounded-full w-full focus:outline-none focus:ring-2 focus:ring-red-500"> |
|
|
<button class="absolute right-3 top-2 text-gray-400"> |
|
|
<i class="fas fa-search"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="sidebar" class="sidebar fixed md:static inset-y-0 left-0 w-64 bg-gray-800 p-4 z-40 md:translate-x-0"> |
|
|
<div class="flex flex-col space-y-6"> |
|
|
<div class="flex items-center space-x-2 mb-6"> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex items-center justify-center"> |
|
|
<i class="fas fa-user"></i> |
|
|
</div> |
|
|
<div> |
|
|
<p class="font-medium">John Doe</p> |
|
|
<p class="text-sm text-gray-400">Pro Member</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<h3 class="text-gray-400 uppercase text-xs font-bold mb-3">Menu</h3> |
|
|
<ul class="space-y-2"> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-home w-5"></i> <span>Home</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-fire w-5"></i> <span>Trending</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-compass w-5"></i> <span>Discover</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-video w-5"></i> <span>Subscriptions</span></a></li> |
|
|
</ul> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<h3 class="text-gray-400 uppercase text-xs font-bold mb-3">Library</h3> |
|
|
<ul class="space-y-2"> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-history w-5"></i> <span>History</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-clock w-5"></i> <span>Watch Later</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-thumbs-up w-5"></i> <span>Liked Videos</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-download w-5"></i> <span>Downloads</span></a></li> |
|
|
</ul> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<h3 class="text-gray-400 uppercase text-xs font-bold mb-3">Categories</h3> |
|
|
<ul class="space-y-2"> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-gamepad w-5"></i> <span>Gaming</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-music w-5"></i> <span>Music</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-newspaper w-5"></i> <span>News</span></a></li> |
|
|
<li><a href="#" class="flex items-center space-x-3 p-2 rounded hover:bg-gray-700"><i class="fas fa-lightbulb w-5"></i> <span>Learning</span></a></li> |
|
|
</ul> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<main class="md:ml-64 p-4 md:p-6"> |
|
|
|
|
|
<section class="mb-8"> |
|
|
<div class="player-container w-full bg-black rounded-lg overflow-hidden relative"> |
|
|
|
|
|
<div class="absolute inset-0 flex items-center justify-center"> |
|
|
<i class="fas fa-play text-6xl text-gray-500"></i> |
|
|
</div> |
|
|
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> |
|
|
<h2 class="text-2xl font-bold mb-2">Featured Video Title</h2> |
|
|
<div class="flex items-center space-x-4 text-sm"> |
|
|
<span>1.2M views</span> |
|
|
<span>•</span> |
|
|
<span>3 days ago</span> |
|
|
<span>•</span> |
|
|
<span class="flex items-center space-x-1"> |
|
|
<i class="fas fa-thumbs-up"></i> |
|
|
<span>45K</span> |
|
|
</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section> |
|
|
<h2 class="text-xl font-bold mb-4">Recommended For You</h2> |
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"> |
|
|
|
|
|
<div class="video-card bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Video thumbnail" class="w-full"> |
|
|
<div class="video-overlay absolute inset-0 bg-black bg-opacity-50 opacity-0 flex items-center justify-center"> |
|
|
<button class="bg-red-600 hover:bg-red-700 p-3 rounded-full"> |
|
|
<i class="fas fa-play"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="absolute bottom-2 right-2 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
10:45 |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<div class="flex space-x-3"> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex-shrink-0"></div> |
|
|
<div> |
|
|
<h3 class="font-medium line-clamp-2">How to build a video streaming platform with modern technologies</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">Tech Channel</p> |
|
|
<p class="text-gray-400 text-sm">120K views • 2 days ago</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="video-card bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Video thumbnail" class="w-full"> |
|
|
<div class="video-overlay absolute inset-0 bg-black bg-opacity-50 opacity-0 flex items-center justify-center"> |
|
|
<button class="bg-red-600 hover:bg-red-700 p-3 rounded-full"> |
|
|
<i class="fas fa-play"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="absolute bottom-2 right-2 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
22:15 |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<div class="flex space-x-3"> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex-shrink-0"></div> |
|
|
<div> |
|
|
<h3 class="font-medium line-clamp-2">The future of video streaming technologies and what's coming next</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">Future Tech</p> |
|
|
<p class="text-gray-400 text-sm">450K views • 1 week ago</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="video-card bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Video thumbnail" class="w-full"> |
|
|
<div class="video-overlay absolute inset-0 bg-black bg-opacity-50 opacity-0 flex items-center justify-center"> |
|
|
<button class="bg-red-600 hover:bg-red-700 p-3 rounded-full"> |
|
|
<i class="fas fa-play"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="absolute bottom-2 right-2 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
15:30 |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<div class="flex space-x-3"> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex-shrink-0"></div> |
|
|
<div> |
|
|
<h3 class="font-medium line-clamp-2">Optimizing video delivery with CDN and edge computing</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">DevOps Guide</p> |
|
|
<p class="text-gray-400 text-sm">89K views • 3 days ago</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="video-card bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Video thumbnail" class="w-full"> |
|
|
<div class="video-overlay absolute inset-0 bg-black bg-opacity-50 opacity-0 flex items-center justify-center"> |
|
|
<button class="bg-red-600 hover:bg-red-700 p-3 rounded-full"> |
|
|
<i class="fas fa-play"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="absolute bottom-2 right-2 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
08:22 |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<div class="flex space-x-3"> |
|
|
<div class="w-10 h-10 rounded-full bg-gray-600 flex-shrink-0"></div> |
|
|
<div> |
|
|
<h3 class="font-medium line-clamp-2">Building adaptive bitrate streaming for all devices</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">Streaming Tech</p> |
|
|
<p class="text-gray-400 text-sm">210K views • 5 days ago</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="mt-10"> |
|
|
<h2 class="text-xl font-bold mb-4">Live Now</h2> |
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"> |
|
|
|
|
|
<div class="bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Live thumbnail" class="w-full"> |
|
|
<div class="absolute inset-0 bg-gradient-to-t from-black to-transparent"></div> |
|
|
<div class="absolute top-2 left-2 bg-red-600 px-2 py-1 rounded text-xs font-bold"> |
|
|
LIVE |
|
|
</div> |
|
|
<div class="absolute bottom-2 left-2 flex items-center space-x-1 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
<i class="fas fa-eye"></i> |
|
|
<span>12.4K</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<h3 class="font-medium">Building a Streaming Platform - Day 3</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">Dev Streamer</p> |
|
|
<p class="text-gray-400 text-sm">Gaming • Programming</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-gray-800 rounded-lg overflow-hidden cursor-pointer transition-transform hover:scale-105"> |
|
|
<div class="relative"> |
|
|
<img src="https://via.placeholder.com/320x180" alt="Live thumbnail" class="w-full"> |
|
|
<div class="absolute inset-0 bg-gradient-to-t from-black to-transparent"></div> |
|
|
<div class="absolute top-2 left-2 bg-red-600 px-2 py-1 rounded text-xs font-bold"> |
|
|
LIVE |
|
|
</div> |
|
|
<div class="absolute bottom-2 left-2 flex items-center space-x-1 bg-black bg-opacity-70 px-2 py-1 rounded text-sm"> |
|
|
<i class="fas fa-eye"></i> |
|
|
<span>8.2K</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-3"> |
|
|
<h3 class="font-medium">Q&A About Video Encoding</h3> |
|
|
<p class="text-gray-400 text-sm mt-1">Video Expert</p> |
|
|
<p class="text-gray-400 text-sm">Education • Technology</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<div id="upload-modal" class="fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 hidden"> |
|
|
<div class="bg-gray-800 rounded-lg w-full max-w-2xl max-h-[90vh] overflow-y-auto"> |
|
|
<div class="p-6"> |
|
|
<div class="flex justify-between items-center mb-4"> |
|
|
<h2 class="text-xl font-bold">Upload Video</h2> |
|
|
<button id="close-upload" class="text-gray-400 hover:text-white"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="border-2 border-dashed border-gray-600 rounded-lg p-8 text-center mb-6"> |
|
|
<i class="fas fa-cloud-upload-alt text-4xl text-gray-400 mb-3"></i> |
|
|
<p class="mb-2">Drag and drop video files here</p> |
|
|
<p class="text-sm text-gray-400 mb-4">or</p> |
|
|
<button class="bg-red-600 hover:bg-red-700 px-6 py-2 rounded-md font-medium"> |
|
|
Select Files |
|
|
</button> |
|
|
<p class="text-xs text-gray-400 mt-3">MP4, WebM or AVI. Max 5GB.</p> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<label class="block text-sm font-medium mb-2">Title</label> |
|
|
<input type="text" class="w-full bg-gray-700 border border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-red-500"> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<label class="block text-sm font-medium mb-2">Description</label> |
|
|
<textarea class="w-full bg-gray-700 border border-gray-600 rounded-md px-4 py-2 h-24 focus:outline-none focus:ring-2 focus:ring-red-500"></textarea> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6"> |
|
|
<div> |
|
|
<label class="block text-sm font-medium mb-2">Visibility</label> |
|
|
<select class="w-full bg-gray-700 border border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-red-500"> |
|
|
<option>Public</option> |
|
|
<option>Unlisted</option> |
|
|
<option>Private</option> |
|
|
</select> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-sm font-medium mb-2">Category</label> |
|
|
<select class="w-full bg-gray-700 border border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-red-500"> |
|
|
<option>Technology</option> |
|
|
<option>Gaming</option> |
|
|
<option>Education</option> |
|
|
<option>Music</option> |
|
|
<option>Entertainment</option> |
|
|
</select> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<label class="block text-sm font-medium mb-2">Tags (comma separated)</label> |
|
|
<input type="text" class="w-full bg-gray-700 border border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-red-500" placeholder="streaming, tutorial, how-to"> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<label class="block text-sm font-medium mb-2">Thumbnail</label> |
|
|
<div class="flex space-x-4"> |
|
|
<div class="w-1/3 h-24 bg-gray-700 rounded-md flex items-center justify-center cursor-pointer"> |
|
|
<i class="fas fa-image text-gray-400"></i> |
|
|
</div> |
|
|
<div class="w-1/3 h-24 bg-gray-700 rounded-md flex items-center justify-center cursor-pointer"> |
|
|
<i class="fas fa-image text-gray-400"></i> |
|
|
</div> |
|
|
<div class="w-1/3 h-24 bg-gray-700 rounded-md flex items-center justify-center cursor-pointer"> |
|
|
<i class="fas fa-image text-gray-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-end space-x-3"> |
|
|
<button class="px-6 py-2 border border-gray-600 rounded-md font-medium hover:bg-gray-700"> |
|
|
Cancel |
|
|
</button> |
|
|
<button class="bg-red-600 hover:bg-red-700 px-6 py-2 rounded-md font-medium"> |
|
|
Upload |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="upload-progress" class="p-6 border-t border-gray-700 hidden"> |
|
|
<h3 class="font-medium mb-4">Uploading...</h3> |
|
|
<div class="w-full bg-gray-700 rounded-full h-2.5 mb-2"> |
|
|
<div class="progress-bar bg-red-600 h-2.5 rounded-full" style="width: 0%"></div> |
|
|
</div> |
|
|
<div class="flex justify-between text-sm text-gray-400"> |
|
|
<span>0%</span> |
|
|
<span>Processing...</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</main> |
|
|
|
|
|
|
|
|
<div id="video-player-modal" class="fixed inset-0 bg-black z-50 hidden"> |
|
|
<div class="absolute top-4 right-4 z-10"> |
|
|
<button id="close-player" class="text-white bg-black bg-opacity-50 rounded-full p-2 hover:bg-opacity-70"> |
|
|
<i class="fas fa-times"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="h-full flex flex-col"> |
|
|
<div class="flex-grow flex items-center justify-center"> |
|
|
<div class="w-full max-w-4xl px-4"> |
|
|
<div class="player-container w-full bg-black rounded-lg overflow-hidden relative"> |
|
|
|
|
|
<div class="absolute inset-0 flex items-center justify-center"> |
|
|
<i class="fas fa-play text-6xl text-gray-500"></i> |
|
|
</div> |
|
|
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> |
|
|
<div class="flex items-center justify-between"> |
|
|
<div> |
|
|
<h2 class="text-xl font-bold">Now Playing: Video Title</h2> |
|
|
<p class="text-sm text-gray-300">1.2M views • 3 days ago</p> |
|
|
</div> |
|
|
<div class="flex space-x-3"> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-thumbs-up"></i> 45K |
|
|
</button> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-thumbs-down"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-share"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mt-3 w-full bg-gray-700 rounded-full h-1.5"> |
|
|
<div class="bg-red-600 h-1.5 rounded-full" style="width: 35%"></div> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between mt-1 text-xs text-gray-400"> |
|
|
<span>5:22</span> |
|
|
<span>14:36</span> |
|
|
</div> |
|
|
|
|
|
<div class="flex justify-between mt-3"> |
|
|
<div class="flex space-x-4"> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-play"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-volume-up"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-closed-captioning"></i> |
|
|
</button> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-cog"></i> |
|
|
</button> |
|
|
</div> |
|
|
<button class="text-white hover:text-red-400"> |
|
|
<i class="fas fa-expand"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="bg-gray-900 p-4"> |
|
|
<div class="max-w-4xl mx-auto"> |
|
|
<div class="flex items-start space-x-4"> |
|
|
<div class="w-12 h-12 rounded-full bg-gray-700 flex-shrink-0"></div> |
|
|
<div class="flex-grow"> |
|
|
<div class="flex items-center justify-between"> |
|
|
<div> |
|
|
<h3 class="font-medium">Channel Name</h3> |
|
|
<p class="text-sm text-gray-400">1.5M subscribers</p> |
|
|
</div> |
|
|
<button class="bg-red-600 hover:bg-red-700 px-4 py-2 rounded-md font-medium text-sm"> |
|
|
Subscribe |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="mt-4 bg-gray-800 rounded-lg p-4"> |
|
|
<div class="flex items-center space-x-2 text-sm mb-2"> |
|
|
<span>45K views</span> |
|
|
<span>•</span> |
|
|
<span>3 days ago</span> |
|
|
</div> |
|
|
<p class="text-sm">This is the video description. It explains what the video is about and might include links or timestamps for different sections.</p> |
|
|
</div> |
|
|
|
|
|
<div class="mt-4"> |
|
|
<h4 class="font-medium mb-3">Comments (1,234)</h4> |
|
|
<div class="flex space-x-3 mb-4"> |
|
|
<div class="w-8 h-8 rounded-full bg-gray-700 flex-shrink-0"></div> |
|
|
<input type="text" placeholder="Add a comment..." class="bg-transparent border-b border-gray-700 w-full focus:outline-none focus:border-red-500"> |
|
|
</div> |
|
|
|
|
|
<div class="space-y-4"> |
|
|
|
|
|
<div class="flex space-x-3"> |
|
|
<div class="w-8 h-8 rounded-full bg-gray-700 flex-shrink-0"></div> |
|
|
<div> |
|
|
<div class="flex items-center space-x-2 text-sm"> |
|
|
<span class="font-medium">User123</span> |
|
|
<span class="text-gray-400">2 days ago</span> |
|
|
</div> |
|
|
<p class="text-sm mt-1">Great video! Very informative and well explained.</p> |
|
|
<div class="flex items-center space-x-4 mt-1 text-sm text-gray-400"> |
|
|
<button class="hover:text-white"> |
|
|
<i class="fas fa-thumbs-up"></i> 245 |
|
|
</button> |
|
|
<button class="hover:text-white"> |
|
|
<i class="fas fa-thumbs-down"></i> |
|
|
</button> |
|
|
<button class="hover:text-white"> |
|
|
Reply |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script> |
|
|
|
|
|
document.getElementById('mobile-menu-button').addEventListener('click', function() { |
|
|
document.getElementById('sidebar').classList.toggle('open'); |
|
|
}); |
|
|
|
|
|
|
|
|
const uploadButtons = document.querySelectorAll('button:contains("Upload")'); |
|
|
const uploadModal = document.getElementById('upload-modal'); |
|
|
const closeUpload = document.getElementById('close-upload'); |
|
|
|
|
|
uploadButtons.forEach(button => { |
|
|
button.addEventListener('click', function() { |
|
|
uploadModal.classList.remove('hidden'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
closeUpload.addEventListener('click', function() { |
|
|
uploadModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
const uploadBtn = uploadModal.querySelector('button:contains("Upload")'); |
|
|
uploadBtn.addEventListener('click', function() { |
|
|
const uploadProgress = document.getElementById('upload-progress'); |
|
|
const progressBar = uploadProgress.querySelector('.progress-bar'); |
|
|
|
|
|
uploadProgress.classList.remove('hidden'); |
|
|
uploadBtn.disabled = true; |
|
|
|
|
|
let progress = 0; |
|
|
const interval = setInterval(() => { |
|
|
progress += Math.random() * 10; |
|
|
if (progress >= 100) { |
|
|
progress = 100; |
|
|
clearInterval(interval); |
|
|
uploadProgress.querySelector('span:last-child').textContent = 'Processing complete!'; |
|
|
} |
|
|
progressBar.style.width = `${progress}%`; |
|
|
uploadProgress.querySelector('span:first-child').textContent = `${Math.round(progress)}%`; |
|
|
}, 500); |
|
|
}); |
|
|
|
|
|
|
|
|
const videoCards = document.querySelectorAll('.video-card'); |
|
|
const videoPlayerModal = document.getElementById('video-player-modal'); |
|
|
const closePlayer = document.getElementById('close-player'); |
|
|
|
|
|
videoCards.forEach(card => { |
|
|
card.addEventListener('click', function() { |
|
|
videoPlayerModal.classList.remove('hidden'); |
|
|
document.body.style.overflow = 'hidden'; |
|
|
}); |
|
|
}); |
|
|
|
|
|
closePlayer.addEventListener('click', function() { |
|
|
videoPlayerModal.classList.add('hidden'); |
|
|
document.body.style.overflow = ''; |
|
|
}); |
|
|
|
|
|
|
|
|
[uploadModal, videoPlayerModal].forEach(modal => { |
|
|
modal.addEventListener('click', function(e) { |
|
|
if (e.target === modal) { |
|
|
modal.classList.add('hidden'); |
|
|
document.body.style.overflow = ''; |
|
|
} |
|
|
}); |
|
|
}); |
|
|
</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=nmtalhp/streamhub" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |