|
|
<!DOCTYPE html> |
|
|
<html lang="en" class="dark"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Gallery - TextTo3D Studio</title> |
|
|
<link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
|
|
<link rel="stylesheet" href="style.css"> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
|
|
<script src="https://unpkg.com/feather-icons"></script> |
|
|
<script> |
|
|
tailwind.config = { |
|
|
darkMode: 'class', |
|
|
theme: { |
|
|
extend: { |
|
|
colors: { |
|
|
'primary': { |
|
|
50: '#f0f9ff', |
|
|
100: '#e0f2fe', |
|
|
200: '#bae6fd', |
|
|
300: '#7dd3fc', |
|
|
400: '#38bdf8', |
|
|
500: '#0ea5e9', |
|
|
600: '#0284c7', |
|
|
700: '#0369a1', |
|
|
800: '#075985', |
|
|
900: '#0c4a6e', |
|
|
}, |
|
|
'secondary': { |
|
|
50: '#fdf4ff', |
|
|
100: '#fae8ff', |
|
|
200: '#f5d0fe', |
|
|
300: '#f0abfc', |
|
|
400: '#e879f9', |
|
|
500: '#d946ef', |
|
|
600: '#c026d3', |
|
|
700: '#a21caf', |
|
|
800: '#86198f', |
|
|
900: '#701a75', |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</head> |
|
|
<body class="bg-gray-900 text-white min-h-screen"> |
|
|
<custom-navbar></custom-navbar> |
|
|
|
|
|
<main class="px-4 py-12 lg:px-8"> |
|
|
<div class="mx-auto max-w-7xl"> |
|
|
|
|
|
<div class="text-center mb-12"> |
|
|
<h1 class="text-4xl font-bold bg-gradient-to-r from-primary-400 to-secondary-400 bg-clip-text text-transparent mb-4"> |
|
|
3D Design Gallery |
|
|
</h1> |
|
|
<p class="text-gray-300 max-w-2xl mx-auto"> |
|
|
Explore amazing 3D creations from our community. Get inspired and see what's possible with AI-powered design. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mb-8 flex flex-col md:flex-row gap-4 items-center justify-between"> |
|
|
<div class="flex gap-2 flex-wrap"> |
|
|
<button class="filter-btn px-4 py-2 bg-primary-500 text-white rounded-lg transition-all duration-200" data-filter="all"> |
|
|
All |
|
|
</button> |
|
|
<button class="filter-btn px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-lg transition-all duration-200" data-filter="architecture"> |
|
|
Architecture |
|
|
</button> |
|
|
<button class="filter-btn px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-lg transition-all duration-200" data-filter="product"> |
|
|
Products |
|
|
</button> |
|
|
<button class="filter-btn px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-lg transition-all duration-200" data-filter="character"> |
|
|
Characters |
|
|
</button> |
|
|
<button class="filter-btn px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-lg transition-all duration-200" data-filter="abstract"> |
|
|
Abstract |
|
|
</button> |
|
|
</div> |
|
|
<div class="relative"> |
|
|
<input |
|
|
type="text" |
|
|
placeholder="Search designs..." |
|
|
class="pl-10 pr-4 py-2 bg-gray-800 border border-gray-700 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent" |
|
|
> |
|
|
<i data-feather="search" class="absolute left-3 top-2.5 w-4 h-4 text-gray-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6" id="gallery-grid"> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="text-center mt-12"> |
|
|
<button id="load-more" class="px-8 py-3 bg-gradient-to-r from-primary-500 to-secondary-500 hover:from-primary-600 hover:to-secondary-600 text-white font-semibold rounded-lg transition-all duration-200 transform hover:scale-105"> |
|
|
Load More Designs |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</main> |
|
|
|
|
|
<custom-footer></custom-footer> |
|
|
|
|
|
<script src="components/navbar.js"></script> |
|
|
<script src="components/footer.js"></script> |
|
|
<script src="script.js"></script> |
|
|
<script> |
|
|
|
|
|
const galleryItems = [ |
|
|
{ id: 1, title: "Futuristic Skyscraper", category: "architecture", likes: 234, views: 1200, image: "http://static.photos/cityscape/640x360/1" }, |
|
|
{ id: 2, title: "Ergonomic Chair", category: "product", likes: 189, views: 890, image: "http://static.photos/workspace/640x360/2" }, |
|
|
{ id: 3, title: "Dragon Warrior", category: "character", likes: 456, views: 2300, image: "http://static.photos/abstract/640x360/3" }, |
|
|
{ id: 4, title: "Crystal Formation", category: "abstract", likes: 123, views: 560, image: "http://static.photos/minimal/640x360/4" }, |
|
|
{ id: 5, title: "Modern Villa", category: "architecture", likes: 345, views: 1800, image: "http://static/photos/office/640x360/5" }, |
|
|
{ id: 6, title: "Smart Watch", category: "product", likes: 267, views: 1340, image: "http://static/photos/technology/640x360/6" }, |
|
|
{ id: 7, title: "Space Explorer", category: "character", likes: 523, views: 2900, image: "http://static.photos/monochrome/640x360/7" }, |
|
|
{ id: 8, title: "Geometric Patterns", category: "abstract", likes: 98, views: 450, image: "http://static.photos/gradient/640x360/8" } |
|
|
]; |
|
|
|
|
|
function loadGalleryItems(filter = 'all') { |
|
|
const grid = document.getElementById('gallery-grid'); |
|
|
grid.innerHTML = ''; |
|
|
|
|
|
const filtered = filter === 'all' ? galleryItems : galleryItems.filter(item => item.category === filter); |
|
|
|
|
|
filtered.forEach(item => { |
|
|
const card = document.createElement('div'); |
|
|
card.className = 'bg-gray-800/50 backdrop-blur-sm rounded-xl overflow-hidden border border-gray-700 hover:border-primary-500/50 transition-all duration-300 group cursor-pointer'; |
|
|
card.innerHTML = ` |
|
|
<div class="relative overflow-hidden h-48"> |
|
|
<img src="${item.image}" alt="${item.title}" class="w-full h-full object-cover group-hover:scale-110 transition-transform duration-300"> |
|
|
<div class="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-end p-4"> |
|
|
<button class="px-4 py-2 bg-primary-500/90 backdrop-blur-sm rounded-lg text-sm font-medium transform translate-y-full group-hover:translate-y-0 transition-transform duration-300"> |
|
|
View in 3D |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
<div class="p-4"> |
|
|
<h3 class="font-semibold text-lg mb-2">${item.title}</h3> |
|
|
<div class="flex items-center justify-between text-sm text-gray-400"> |
|
|
<span class="capitalize">${item.category}</span> |
|
|
<div class="flex items-center gap-3"> |
|
|
<span class="flex items-center gap-1"> |
|
|
<i data-feather="heart" class="w-4 h-4"></i> |
|
|
${item.likes} |
|
|
</span> |
|
|
<span class="flex items-center gap-1"> |
|
|
<i data-feather="eye" class="w-4 h-4"></i> |
|
|
${item.views} |
|
|
</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
`; |
|
|
grid.appendChild(card); |
|
|
}); |
|
|
|
|
|
feather.replace(); |
|
|
} |
|
|
|
|
|
|
|
|
document.querySelectorAll('.filter-btn').forEach(btn => { |
|
|
btn.addEventListener('click', () => { |
|
|
document.querySelectorAll('.filter-btn').forEach(b => { |
|
|
b.classList.remove('bg-primary-500', 'text-white'); |
|
|
b.classList.add('bg-gray-700'); |
|
|
}); |
|
|
btn.classList.remove('bg-gray-700'); |
|
|
btn.classList.add('bg-primary-500', 'text-white'); |
|
|
loadGalleryItems(btn.dataset.filter); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
loadGalleryItems(); |
|
|
|
|
|
feather.replace(); |
|
|
</script> |
|
|
</body> |
|
|
</html> |