VibeCodingStudio's picture
Initial DeepSite commit
48182f5 verified
Raw
History Blame Contribute Delete
13.4 kB
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ArtVerse - Creative Gallery</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/lucide@latest"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
colors: {
dark: '#0f0f0f',
card: '#1a1a1a',
accent: '#00c8b3',
'accent-hover': '#00b09d'
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
}
}
}
}
</script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
body { font-family: 'Inter', sans-serif; }
.artwork-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
}
@media (max-width: 640px) {
.artwork-grid { grid-template-columns: 1fr; }
}
.masonry-item { break-inside: avoid; margin-bottom: 1.5rem; }
.hover-overlay {
background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
}
.like-anim { animation: heartBeat 0.3s ease; }
@keyframes heartBeat {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.2); }
}
.fade-in { animation: fadeIn 0.5s ease-in; }
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.loading-skeleton {
background: linear-gradient(90deg, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
</style>
</head>
<body class="bg-dark text-gray-100 min-h-screen">
<!-- Navigation -->
<nav class="fixed top-0 w-full bg-dark/95 backdrop-blur-md border-b border-gray-800 z-50">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex items-center justify-between h-16">
<div class="flex items-center gap-8">
<a href="#" class="flex items-center gap-2 text-2xl font-bold text-white">
<i data-lucide="palette" class="text-accent"></i>
<span>ArtVerse</span>
</a>
<div class="hidden md:flex items-center gap-6 text-sm">
<a href="#" class="hover:text-accent transition-colors">Browse</a>
<a href="#" class="hover:text-accent transition-colors">Watch</a>
<a href="#" class="hover:text-accent transition-colors">Community</a>
<a href="#" class="hover:text-accent transition-colors">Shop</a>
</div>
</div>
<div class="flex items-center gap-4">
<div class="relative hidden sm:block">
<input type="text"
id="searchInput"
placeholder="Search artworks..."
class="bg-card border border-gray-700 rounded-full px-4 py-1.5 pl-10 text-sm focus:outline-none focus:border-accent w-64 transition-all">
<i data-lucide="search" class="absolute left-3 top-2 w-4 h-4 text-gray-400"></i>
</div>
<button id="themeToggle" class="p-2 hover:bg-card rounded-full transition-colors">
<i data-lucide="moon" class="w-5 h-5"></i>
</button>
<button class="bg-accent hover:bg-accent-hover text-dark font-semibold px-4 py-1.5 rounded-full text-sm transition-colors">
Submit
</button>
<div class="w-8 h-8 rounded-full bg-gradient-to-br from-accent to-blue-500 cursor-pointer"></div>
</div>
</div>
</div>
</nav>
<!-- Main Content -->
<main class="pt-24 pb-12 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
<!-- Hero Section -->
<div class="mb-12 text-center fade-in">
<h1 class="text-4xl md:text-6xl font-bold mb-4 bg-gradient-to-r from-white to-gray-400 bg-clip-text text-transparent">
Discover Amazing Art
</h1>
<p class="text-gray-400 text-lg max-w-2xl mx-auto">
Join the world's largest art community and share your creativity with millions of artists and art enthusiasts.
</p>
</div>
<!-- Filters -->
<div class="flex flex-wrap items-center justify-center gap-3 mb-8 fade-in" style="animation-delay: 0.1s">
<button class="filter-btn active px-4 py-2 rounded-full bg-accent text-dark font-medium text-sm transition-all" data-category="all">
All
</button>
<button class="filter-btn px-4 py-2 rounded-full bg-card border border-gray-700 hover:border-accent text-sm transition-all" data-category="digital">
Digital Art
</button>
<button class="filter-btn px-4 py-2 rounded-full bg-card border border-gray-700 hover:border-accent text-sm transition-all" data-category="traditional">
Traditional
</button>
<button class="filter-btn px-4 py-2 rounded-full bg-card border border-gray-700 hover:border-accent text-sm transition-all" data-category="photography">
Photography
</button>
<button class="filter-btn px-4 py-2 rounded-full bg-card border border-gray-700 hover:border-accent text-sm transition-all" data-category="3d">
3D & Fractal
</button>
<button class="filter-btn px-4 py-2 rounded-full bg-card border border-gray-700 hover:border-accent text-sm transition-all" data-category="anime">
Anime & Manga
</button>
</div>
<!-- Sort Options -->
<div class="flex justify-between items-center mb-6 fade-in" style="animation-delay: 0.2s">
<span class="text-gray-400 text-sm" id="resultCount">Showing 12 artworks</span>
<select id="sortSelect" class="bg-card border border-gray-700 rounded-lg px-3 py-1.5 text-sm focus:outline-none focus:border-accent cursor-pointer">
<option value="newest">Newest First</option>
<option value="popular">Most Popular</option>
<option value="comments">Most Commented</option>
</select>
</div>
<!-- Gallery Grid -->
<div id="gallery" class="artwork-grid fade-in" style="animation-delay: 0.3s">
<!-- Artworks will be injected here by JavaScript -->
</div>
<!-- Loading State (hidden by default) -->
<div id="loadingState" class="hidden py-12">
<div class="flex justify-center items-center gap-2">
<div class="w-3 h-3 bg-accent rounded-full animate-bounce"></div>
<div class="w-3 h-3 bg-accent rounded-full animate-bounce" style="animation-delay: 0.1s"></div>
<div class="w-3 h-3 bg-accent rounded-full animate-bounce" style="animation-delay: 0.2s"></div>
</div>
<p class="text-center text-gray-400 mt-4 text-sm">Loading amazing artworks...</p>
</div>
<!-- Load More -->
<div class="mt-12 text-center">
<button id="loadMoreBtn" class="px-8 py-3 bg-card border border-gray-700 hover:border-accent rounded-full text-sm font-medium transition-all hover:scale-105">
Load More Artworks
</button>
</div>
</main>
<!-- Image Modal -->
<div id="imageModal" class="fixed inset-0 bg-black/95 z-[60] hidden overflow-y-auto">
<div class="min-h-screen px-4 text-center">
<button id="closeModal" class="fixed top-4 right-4 p-2 hover:bg-white/10 rounded-full transition-colors z-50">
<i data-lucide="x" class="w-8 h-8"></i>
</button>
<div class="inline-block w-full max-w-6xl my-8 text-left align-middle transition-all transform bg-card rounded-lg shadow-2xl overflow-hidden" id="modalContent">
<div class="grid md:grid-cols-3 gap-0">
<!-- Image Section -->
<div class="md:col-span-2 bg-black flex items-center justify-center p-4 md:p-8">
<img id="modalImage" src="" alt="" class="max-h-[80vh] w-auto object-contain rounded-lg shadow-2xl">
</div>
<!-- Info Section -->
<div class="p-6 md:p-8 border-l border-gray-800">
<div class="flex items-start justify-between mb-4">
<div>
<h2 id="modalTitle" class="text-2xl font-bold mb-1"></h2>
<p id="modalCategory" class="text-accent text-sm"></p>
</div>
<div class="flex gap-2">
<button id="modalLikeBtn" class="p-2 hover:bg-white/10 rounded-full transition-colors group">
<i data-lucide="heart" class="w-6 h-6 group-hover:text-red-500 transition-colors"></i>
</button>
<button class="p-2 hover:bg-white/10 rounded-full transition-colors">
<i data-lucide="bookmark" class="w-6 h-6"></i>
</button>
<button class="p-2 hover:bg-white/10 rounded-full transition-colors">
<i data-lucide="share-2" class="w-6 h-6"></i>
</button>
</div>
</div>
<div class="flex items-center gap-3 mb-6 pb-6 border-b border-gray-800">
<img id="modalAvatar" src="" class="w-12 h-12 rounded-full bg-gray-700">
<div class="flex-1">
<h3 id="modalArtist" class="font-semibold hover:text-accent cursor-pointer transition-colors"></h3>
<p class="text-xs text-gray-400">Professional Digital Artist</p>
</div>
<button class="px-4 py-1.5 bg-accent text-dark text-sm font-semibold rounded-full hover:bg-accent-hover transition-colors">
Watch
</button>
</div>
<div class="space-y-4 mb-6">
<div class="flex items-center gap-4 text-sm text-gray-400">
<span class="flex items-center gap-1">
<i data-lucide="eye" class="w-4 h-4"></i>
<span id="modalViews"></span>
</span>
<span class="flex items-center gap-1">
<i data-lucide="message-circle" class="w-4 h-4"></i>
<span id="modalComments"></span>
</span>
<span class="flex items-center gap-1">
<i data-lucide="heart" class="w-4 h-4"></i>
<span id="modalLikes"></span>
</span>
</div>
<p id="modalDescription" class="text-gray-300 leading-relaxed text-sm"></p>
</div>
<div class="flex flex-wrap gap-2 mb-6" id="modalTags">
<!-- Tags injected here -->
</div>
<button class="w-full py-3 bg-accent text-dark font-semibold rounded-lg hover:bg-accent-hover transition-colors flex items-center justify-center gap-2">
<i data-lucide="download" class="w-5 h-5"></i>
Download Full Size
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Toast Notification -->
<div id="toast" class="fixed bottom-4 right-4 bg-accent text-dark px-6 py-3 rounded-lg shadow-lg transform translate-y-20 opacity-0 transition-all duration-300 z-50 font-medium flex items-center gap-2">
<i data-lucide="check-circle" class="w-5 h-5"></i>
<span id="toastMessage">Action successful!</span>
</div>
<script src="script.js"></script>
<script src="https://deepsite.hf.co/deepsite-badge.js"></script>
</body>
</html>