| <!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> |