Spaces:
Running
Running
make it look pretty, - Follow Up Deployment
Browse files- index.html +544 -379
index.html
CHANGED
@@ -3,424 +3,589 @@
|
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
-
<title>
|
7 |
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
-
<
|
9 |
-
<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/controls/OrbitControls.min.js"></script>
|
10 |
<style>
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
left: 0;
|
15 |
-
width: 100%;
|
16 |
-
height: 100%;
|
17 |
-
overflow: hidden;
|
18 |
}
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
}
|
25 |
|
26 |
-
.
|
|
|
|
|
|
|
|
|
27 |
transform: translateY(-5px);
|
28 |
-
|
29 |
}
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);
|
34 |
}
|
35 |
-
|
36 |
-
.control-btn {
|
37 |
transition: all 0.2s ease;
|
38 |
}
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
41 |
transform: scale(1.1);
|
42 |
-
|
43 |
}
|
44 |
-
|
45 |
-
|
46 |
-
.
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
.location-card {
|
59 |
-
min-width: 200px;
|
60 |
-
}
|
61 |
}
|
62 |
</style>
|
63 |
</head>
|
64 |
-
<body class="
|
65 |
-
<!--
|
66 |
-
<
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
</div>
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
<
|
80 |
-
<
|
81 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
</div>
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
</div>
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
</div>
|
105 |
-
|
106 |
-
|
107 |
-
<
|
108 |
-
|
|
|
|
|
|
|
|
|
109 |
</div>
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
</div>
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
</div>
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
</div>
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
</div>
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
<
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
</
|
143 |
-
<
|
144 |
-
<
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
</div>
|
148 |
</div>
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
</
|
158 |
-
|
159 |
-
|
160 |
-
<
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
166 |
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
|
167 |
-
</svg>
|
168 |
-
</button>
|
169 |
-
<button class="control-btn p-2 rounded-full bg-gray-800 bg-opacity-50">
|
170 |
-
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
171 |
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 5l-7 7 7 7" />
|
172 |
-
</svg>
|
173 |
-
</button>
|
174 |
-
<button class="control-btn p-2 rounded-full bg-blue-600">
|
175 |
-
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
176 |
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
177 |
-
</svg>
|
178 |
-
</button>
|
179 |
</div>
|
180 |
</div>
|
181 |
-
|
182 |
-
<!--
|
183 |
-
<
|
184 |
-
<div class="
|
185 |
-
<
|
186 |
-
|
187 |
-
|
188 |
-
<
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
<div>
|
199 |
-
<
|
200 |
-
<
|
|
|
|
|
|
|
|
|
|
|
201 |
</div>
|
202 |
<div>
|
203 |
-
<
|
204 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
</div>
|
206 |
</div>
|
207 |
</div>
|
208 |
-
</
|
209 |
-
|
210 |
<script>
|
211 |
-
//
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
// Create camera
|
221 |
-
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
|
222 |
-
camera.position.z = 2;
|
223 |
-
|
224 |
-
// Create renderer
|
225 |
-
renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
|
226 |
-
renderer.setSize(window.innerWidth, window.innerHeight);
|
227 |
-
document.getElementById('earth-container').appendChild(renderer.domElement);
|
228 |
-
|
229 |
-
// Add ambient light
|
230 |
-
const ambientLight = new THREE.AmbientLight(0x333333);
|
231 |
-
scene.add(ambientLight);
|
232 |
-
|
233 |
-
// Add directional light
|
234 |
-
const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
|
235 |
-
directionalLight.position.set(5, 3, 5);
|
236 |
-
scene.add(directionalLight);
|
237 |
-
|
238 |
-
// Create Earth
|
239 |
-
const earthGeometry = new THREE.SphereGeometry(1, 64, 64);
|
240 |
-
const earthMaterial = new THREE.MeshPhongMaterial({
|
241 |
-
map: new THREE.TextureLoader().load('https://threejs.org/examples/textures/planets/earth_atmos_2048.jpg'),
|
242 |
-
bumpMap: new THREE.TextureLoader().load('https://threejs.org/examples/textures/planets/earth_normal_2048.jpg'),
|
243 |
-
bumpScale: 0.05,
|
244 |
-
specularMap: new THREE.TextureLoader().load('https://threejs.org/examples/textures/planets/earth_specular_2048.jpg'),
|
245 |
-
specular: new THREE.Color('grey')
|
246 |
-
});
|
247 |
-
|
248 |
-
earth = new THREE.Mesh(earthGeometry, earthMaterial);
|
249 |
-
scene.add(earth);
|
250 |
-
|
251 |
-
// Create clouds
|
252 |
-
const cloudsGeometry = new THREE.SphereGeometry(1.01, 64, 64);
|
253 |
-
const cloudsMaterial = new THREE.MeshPhongMaterial({
|
254 |
-
map: new THREE.TextureLoader().load('https://threejs.org/examples/textures/planets/earth_clouds_1024.png'),
|
255 |
-
transparent: true,
|
256 |
-
opacity: 0.4
|
257 |
-
});
|
258 |
-
|
259 |
-
clouds = new THREE.Mesh(cloudsGeometry, cloudsMaterial);
|
260 |
-
scene.add(clouds);
|
261 |
-
|
262 |
-
// Add stars background
|
263 |
-
const starsGeometry = new THREE.BufferGeometry();
|
264 |
-
const starsMaterial = new THREE.PointsMaterial({
|
265 |
-
color: 0xffffff,
|
266 |
-
size: 0.05,
|
267 |
-
transparent: true
|
268 |
-
});
|
269 |
-
|
270 |
-
const starsVertices = [];
|
271 |
-
for (let i = 0; i < 5000; i++) {
|
272 |
-
const x = (Math.random() - 0.5) * 2000;
|
273 |
-
const y = (Math.random() - 0.5) * 2000;
|
274 |
-
const z = (Math.random() - 0.5) * 2000;
|
275 |
-
starsVertices.push(x, y, z);
|
276 |
-
}
|
277 |
-
|
278 |
-
starsGeometry.setAttribute('position', new THREE.Float32BufferAttribute(starsVertices, 3));
|
279 |
-
const stars = new THREE.Points(starsGeometry, starsMaterial);
|
280 |
-
scene.add(stars);
|
281 |
-
|
282 |
-
// Add orbit controls
|
283 |
-
controls = new THREE.OrbitControls(camera, renderer.domElement);
|
284 |
-
controls.enableZoom = true;
|
285 |
-
controls.enablePan = false;
|
286 |
-
controls.rotateSpeed = 0.5;
|
287 |
-
controls.minDistance = 1.5;
|
288 |
-
controls.maxDistance = 5;
|
289 |
-
|
290 |
-
// Handle window resize
|
291 |
-
window.addEventListener('resize', () => {
|
292 |
-
camera.aspect = window.innerWidth / window.innerHeight;
|
293 |
-
camera.updateProjectionMatrix();
|
294 |
-
renderer.setSize(window.innerWidth, window.innerHeight);
|
295 |
-
});
|
296 |
-
|
297 |
-
// Handle mouse events for manual rotation
|
298 |
-
renderer.domElement.addEventListener('mousedown', (e) => {
|
299 |
-
isDragging = true;
|
300 |
-
previousMousePosition = {
|
301 |
-
x: e.clientX,
|
302 |
-
y: e.clientY
|
303 |
-
};
|
304 |
-
});
|
305 |
-
|
306 |
-
renderer.domElement.addEventListener('mousemove', (e) => {
|
307 |
-
if (isDragging) {
|
308 |
-
const deltaMove = {
|
309 |
-
x: e.clientX - previousMousePosition.x,
|
310 |
-
y: e.clientY - previousMousePosition.y
|
311 |
-
};
|
312 |
-
|
313 |
-
earth.rotation.y += deltaMove.x * 0.01;
|
314 |
-
earth.rotation.x += deltaMove.y * 0.01;
|
315 |
-
clouds.rotation.y += deltaMove.x * 0.01;
|
316 |
-
clouds.rotation.x += deltaMove.y * 0.01;
|
317 |
-
|
318 |
-
previousMousePosition = {
|
319 |
-
x: e.clientX,
|
320 |
-
y: e.clientY
|
321 |
-
};
|
322 |
-
}
|
323 |
-
});
|
324 |
-
|
325 |
-
renderer.domElement.addEventListener('mouseup', () => {
|
326 |
-
isDragging = false;
|
327 |
-
});
|
328 |
-
|
329 |
-
renderer.domElement.addEventListener('mouseleave', () => {
|
330 |
-
isDragging = false;
|
331 |
-
});
|
332 |
-
|
333 |
-
// Animation loop
|
334 |
-
function animate() {
|
335 |
-
requestAnimationFrame(animate);
|
336 |
-
|
337 |
-
// Slow rotation when not interacting
|
338 |
-
if (!isDragging && !controls.enabled) {
|
339 |
-
earth.rotation.y += 0.001;
|
340 |
-
clouds.rotation.y += 0.0012; // Slightly faster for parallax effect
|
341 |
-
}
|
342 |
-
|
343 |
-
controls.update();
|
344 |
-
renderer.render(scene, camera);
|
345 |
-
}
|
346 |
-
|
347 |
-
animate();
|
348 |
-
}
|
349 |
-
|
350 |
-
// Handle location card clicks
|
351 |
-
document.querySelectorAll('.location-card').forEach(card => {
|
352 |
-
card.addEventListener('click', function() {
|
353 |
-
const lat = parseFloat(this.getAttribute('data-lat'));
|
354 |
-
const lng = parseFloat(this.getAttribute('data-lng'));
|
355 |
-
|
356 |
-
// Update location info panel
|
357 |
-
document.getElementById('location-name').textContent = this.querySelector('h3').textContent;
|
358 |
-
document.getElementById('location-country').textContent = this.querySelector('p').textContent;
|
359 |
-
document.getElementById('location-lat').textContent = lat.toFixed(4);
|
360 |
-
document.getElementById('location-lng').textContent = lng.toFixed(4);
|
361 |
-
|
362 |
-
// Sample description - in a real app, you'd fetch this from an API
|
363 |
-
const descriptions = {
|
364 |
-
"New York City": "The most populous city in the United States, known for its iconic skyline, Central Park, and cultural diversity.",
|
365 |
-
"Paris": "The capital of France, famous for the Eiffel Tower, Louvre Museum, and romantic atmosphere.",
|
366 |
-
"Tokyo": "Japan's bustling capital, blending ultramodern and traditional elements, from neon-lit skyscrapers to historic temples.",
|
367 |
-
"Sydney": "Australia's largest city, renowned for its harborfront Sydney Opera House and the Sydney Harbour Bridge.",
|
368 |
-
"Rio de Janeiro": "Brazil's second-largest city, known for its Carnival celebrations, samba music, and Christ the Redeemer statue.",
|
369 |
-
"New Delhi": "The capital of India, a historic city with a mix of ancient and modern architecture."
|
370 |
-
};
|
371 |
-
|
372 |
-
document.getElementById('location-desc').textContent = descriptions[this.querySelector('h3').textContent];
|
373 |
|
374 |
-
//
|
375 |
-
document.
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
const phi = (90 - lat) * (Math.PI / 180);
|
380 |
-
const theta = (lng + 180) * (Math.PI / 180);
|
381 |
-
|
382 |
-
// Calculate target position
|
383 |
-
const x = -Math.sin(phi) * Math.cos(theta);
|
384 |
-
const y = Math.cos(phi);
|
385 |
-
const z = Math.sin(phi) * Math.sin(theta);
|
386 |
-
|
387 |
-
// Animate camera to look at the point
|
388 |
-
const targetPosition = new THREE.Vector3(x, y, z);
|
389 |
-
const duration = 1000;
|
390 |
-
const startTime = Date.now();
|
391 |
-
|
392 |
-
function animateCamera() {
|
393 |
-
const currentTime = Date.now();
|
394 |
-
const elapsed = currentTime - startTime;
|
395 |
-
const progress = Math.min(elapsed / duration, 1);
|
396 |
-
|
397 |
-
// Smooth step interpolation
|
398 |
-
const smoothProgress = progress * progress * (3 - 2 * progress);
|
399 |
-
|
400 |
-
// Interpolate camera position
|
401 |
-
camera.position.x = THREE.MathUtils.lerp(camera.position.x, targetPosition.x * 2, smoothProgress);
|
402 |
-
camera.position.y = THREE.MathUtils.lerp(camera.position.y, targetPosition.y * 2, smoothProgress);
|
403 |
-
camera.position.z = THREE.MathUtils.lerp(camera.position.z, targetPosition.z * 2, smoothProgress);
|
404 |
-
|
405 |
-
// Make camera look at the earth center
|
406 |
-
camera.lookAt(0, 0, 0);
|
407 |
-
|
408 |
-
if (progress < 1) {
|
409 |
-
requestAnimationFrame(animateCamera);
|
410 |
-
}
|
411 |
-
}
|
412 |
-
|
413 |
-
animateCamera();
|
414 |
});
|
415 |
});
|
416 |
-
|
417 |
-
//
|
418 |
-
document.
|
419 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
420 |
});
|
421 |
-
|
422 |
-
//
|
423 |
-
document.addEventListener('DOMContentLoaded', initEarth);
|
424 |
</script>
|
425 |
<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=triton7777/earthview" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
426 |
</html>
|
|
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Gemini App Projects</title>
|
7 |
<script src="https://cdn.tailwindcss.com"></script>
|
8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
|
9 |
<style>
|
10 |
+
/* Density styles */
|
11 |
+
.density-compact .project-card {
|
12 |
+
min-height: 180px;
|
|
|
|
|
|
|
|
|
13 |
}
|
14 |
+
.density-compact .project-image-container {
|
15 |
+
height: 100px;
|
16 |
+
}
|
17 |
+
.density-compact .project-card p {
|
18 |
+
display: none;
|
19 |
+
}
|
20 |
+
.density-compact .project-card h3 {
|
21 |
+
font-size: 0.9rem;
|
22 |
+
margin-bottom: 0.25rem;
|
23 |
+
}
|
24 |
+
.density-normal .project-card {
|
25 |
+
min-height: 240px;
|
26 |
+
}
|
27 |
+
.density-normal .project-image-container {
|
28 |
+
height: 140px;
|
29 |
+
}
|
30 |
+
.density-spacious .project-card {
|
31 |
+
min-height: 300px;
|
32 |
+
}
|
33 |
+
.density-spacious .project-image-container {
|
34 |
+
height: 180px;
|
35 |
}
|
36 |
|
37 |
+
.project-card {
|
38 |
+
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
39 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
40 |
+
}
|
41 |
+
.project-card:hover {
|
42 |
transform: translateY(-5px);
|
43 |
+
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
|
44 |
}
|
45 |
+
.project-card:hover .project-image {
|
46 |
+
transform: scale(1.05);
|
47 |
+
transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
|
48 |
}
|
49 |
+
.category-chip {
|
|
|
50 |
transition: all 0.2s ease;
|
51 |
}
|
52 |
+
.category-chip:hover {
|
53 |
+
transform: translateY(-2px);
|
54 |
+
box-shadow: 0 4px 8px rgba(93, 93, 255, 0.2);
|
55 |
+
}
|
56 |
+
.like-btn:hover {
|
57 |
transform: scale(1.1);
|
58 |
+
color: #ff4757;
|
59 |
}
|
60 |
+
.dropdown:hover .dropdown-menu {
|
61 |
+
display: block;
|
62 |
+
animation: fadeIn 0.2s ease-in-out;
|
63 |
+
}
|
64 |
+
@keyframes fadeIn {
|
65 |
+
from { opacity: 0; transform: translateY(-10px); }
|
66 |
+
to { opacity: 1; transform: translateY(0); }
|
67 |
+
}
|
68 |
+
body {
|
69 |
+
background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%);
|
70 |
+
}
|
71 |
+
.hero-section {
|
72 |
+
background: linear-gradient(135deg, rgba(93,93,255,0.1) 0%, rgba(93,93,255,0.05) 100%);
|
|
|
|
|
|
|
|
|
73 |
}
|
74 |
</style>
|
75 |
</head>
|
76 |
+
<body class="text-white font-sans">
|
77 |
+
<!-- Navigation Bar -->
|
78 |
+
<nav class="bg-[#1a1a1a] border-b border-[#2d2d2d] sticky top-0 z-50">
|
79 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
80 |
+
<div class="flex justify-between h-16">
|
81 |
+
<div class="flex items-center">
|
82 |
+
<a href="#" class="flex items-center">
|
83 |
+
<i class="fas fa-gem text-indigo-600 text-2xl mr-2"></i>
|
84 |
+
<span class="text-xl font-bold text-gray-900">Gemini Apps</span>
|
85 |
+
</a>
|
86 |
+
</div>
|
87 |
+
<div class="hidden md:flex items-center space-x-8">
|
88 |
+
<a href="#" class="text-gray-900 hover:text-indigo-600 px-1 text-sm font-medium">Explore</a>
|
89 |
+
<a href="#" class="text-gray-900 hover:text-indigo-600 px-1 text-sm font-medium">Collections</a>
|
90 |
+
<a href="#" class="text-gray-900 hover:text-indigo-600 px-1 text-sm font-medium">Pricing</a>
|
91 |
+
<a href="#" class="text-gray-900 hover:text-indigo-600 px-1 text-sm font-medium">Docs</a>
|
92 |
+
</div>
|
93 |
+
<div class="flex items-center">
|
94 |
+
<div class="relative dropdown">
|
95 |
+
<button class="flex items-center text-gray-900 hover:text-indigo-600">
|
96 |
+
<i class="fas fa-search mr-2"></i>
|
97 |
+
<span class="hidden md:inline">Search</span>
|
98 |
+
</button>
|
99 |
+
<div class="dropdown-menu absolute hidden right-0 mt-2 w-64 bg-white rounded-md shadow-lg z-50">
|
100 |
+
<input type="text" placeholder="Search projects..." class="w-full px-4 py-2 rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
<button class="ml-4 px-4 py-2 bg-indigo-600 text-white rounded-md text-sm font-medium hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
104 |
+
Upload Project
|
105 |
+
</button>
|
106 |
+
<div class="ml-4 relative">
|
107 |
+
<button class="flex items-center text-gray-900 hover:text-indigo-600">
|
108 |
+
<i class="fas fa-user-circle text-xl"></i>
|
109 |
+
</button>
|
110 |
+
</div>
|
111 |
+
</div>
|
112 |
+
</div>
|
113 |
</div>
|
114 |
+
</nav>
|
115 |
+
|
116 |
+
<!-- Hero Section -->
|
117 |
+
<div class="hero-section border-b border-[#2d2d2d]">
|
118 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
119 |
+
<div class="text-center">
|
120 |
+
<h1 class="text-4xl md:text-5xl font-bold mb-4">Discover Amazing Gemini Projects</h1>
|
121 |
+
<p class="text-xl md:text-2xl mb-8">Explore, share, and collaborate on innovative applications built with Gemini</p>
|
122 |
+
<div class="flex justify-center">
|
123 |
+
<div class="relative w-full max-w-xl">
|
124 |
+
<input type="text" placeholder="Search for projects..." class="w-full px-6 py-4 rounded-full text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
125 |
+
<button class="absolute right-2 top-2 bg-indigo-600 text-white px-6 py-2 rounded-full hover:bg-indigo-700">
|
126 |
+
<i class="fas fa-search mr-2"></i> Search
|
127 |
+
</button>
|
128 |
+
</div>
|
129 |
+
</div>
|
130 |
+
</div>
|
131 |
</div>
|
132 |
+
</div>
|
133 |
+
|
134 |
+
<!-- Main Content -->
|
135 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
136 |
+
<!-- Categories -->
|
137 |
+
<div class="mb-8">
|
138 |
+
<h2 class="text-xl font-semibold mb-4">Categories</h2>
|
139 |
+
<div class="flex flex-wrap gap-4">
|
140 |
+
<a href="#" class="category-chip px-4 py-2 bg-gradient-to-r from-indigo-500 to-purple-600 rounded-full text-white text-sm font-medium hover:from-indigo-600 hover:to-purple-700">
|
141 |
+
<i class="fas fa-robot mr-2"></i> AI Assistants
|
142 |
+
</a>
|
143 |
+
<a href="#" class="category-chip px-4 py-2 bg-white/10 backdrop-blur-sm rounded-full border border-white/20 text-sm font-medium hover:bg-white/20 transition-all">
|
144 |
+
<i class="fas fa-chart-line mr-2"></i> Data Analysis
|
145 |
+
</a>
|
146 |
+
<a href="#" class="category-chip px-4 py-2 bg-white rounded-full shadow-sm text-sm font-medium hover:bg-gray-100 transition-all">
|
147 |
+
<i class="fas fa-language mr-2"></i> Language Models
|
148 |
+
</a>
|
149 |
+
<a href="#" class="category-chip px-4 py-2 bg-white rounded-full shadow-sm text-sm font-medium hover:bg-gray-100 transition-all">
|
150 |
+
<i class="fas fa-code mr-2"></i> Code Generation
|
151 |
+
</a>
|
152 |
+
<a href="#" class="category-chip px-4 py-2 bg-white rounded-full shadow-sm text-sm font-medium hover:bg-gray-100 transition-all">
|
153 |
+
<i class="fas fa-image mr-2"></i> Image Generation
|
154 |
+
</a>
|
155 |
+
<a href="#" class="category-chip px-4 py-2 bg-white rounded-full shadow-sm text-sm font-medium hover:bg-gray-100 transition-all">
|
156 |
+
<i class="fas fa-brain mr-2"></i> Cognitive Models
|
157 |
+
</a>
|
158 |
+
</div>
|
159 |
</div>
|
160 |
+
|
161 |
+
<!-- Filters, Sorting and Density -->
|
162 |
+
<div class="flex flex-col md:flex-row justify-between items-start md:items-center mb-8">
|
163 |
+
<div class="flex items-center mb-4 md:mb-0 space-x-4">
|
164 |
+
<div class="flex items-center">
|
165 |
+
<span class="text-sm font-medium mr-2">Filter:</span>
|
166 |
+
<select class="border border-gray-300 rounded-md px-3 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
167 |
+
<option>All Projects</option>
|
168 |
+
<option>Featured</option>
|
169 |
+
<option>Most Popular</option>
|
170 |
+
<option>Recently Added</option>
|
171 |
+
</select>
|
172 |
+
</div>
|
173 |
+
<div class="flex items-center">
|
174 |
+
<span class="text-sm font-medium mr-2">View:</span>
|
175 |
+
<div class="flex space-x-1 bg-[#2d2d2d] border border-[#3d3d3d] p-1 rounded-md">
|
176 |
+
<button class="density-btn p-2 rounded hover:bg-white transition-colors" data-density="compact" title="Compact view">
|
177 |
+
<i class="fas fa-grip-lines text-sm"></i>
|
178 |
+
</button>
|
179 |
+
<button class="density-btn p-2 rounded hover:bg-white transition-colors" data-density="normal" title="Normal view">
|
180 |
+
<i class="fas fa-th-large text-sm"></i>
|
181 |
+
</button>
|
182 |
+
<button class="density-btn p-2 rounded hover:bg-white transition-colors" data-density="spacious" title="Spacious view">
|
183 |
+
<i class="fas fa-th text-sm"></i>
|
184 |
+
</button>
|
185 |
+
</div>
|
186 |
+
</div>
|
187 |
</div>
|
188 |
+
<div class="flex items-center">
|
189 |
+
<span class="text-sm font-medium mr-2">Sort by:</span>
|
190 |
+
<select class="border border-gray-300 rounded-md px-3 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500">
|
191 |
+
<option>Most Popular</option>
|
192 |
+
<option>Newest</option>
|
193 |
+
<option>Most Downloads</option>
|
194 |
+
<option>Highest Rated</option>
|
195 |
+
</select>
|
196 |
</div>
|
197 |
+
</div>
|
198 |
+
|
199 |
+
<!-- Projects Grid -->
|
200 |
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 density-normal">
|
201 |
+
<!-- Project Card 1 -->
|
202 |
+
<div class="project-card bg-gradient-to-br from-[#2d2d2d] to-[#1e1e1e] rounded-xl overflow-hidden border border-[#3d3d3d]/50">
|
203 |
+
<div class="relative project-image-container overflow-hidden">
|
204 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
205 |
+
alt="AI Code Assistant"
|
206 |
+
class="project-image w-full h-full object-cover">
|
207 |
+
<div class="absolute top-2 right-2">
|
208 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
209 |
+
<i class="far fa-heart"></i>
|
210 |
+
</button>
|
211 |
+
</div>
|
212 |
+
</div>
|
213 |
+
<div class="p-4">
|
214 |
+
<div class="flex justify-between items-start mb-2">
|
215 |
+
<h3 class="font-semibold text-lg">Gemini Code Assistant</h3>
|
216 |
+
<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded">Featured</span>
|
217 |
+
</div>
|
218 |
+
<p class="text-gray-600 text-sm mb-3">An intelligent coding assistant that helps developers write better code faster with AI-powered suggestions.</p>
|
219 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
220 |
+
<div class="flex items-center">
|
221 |
+
<i class="fas fa-download mr-1"></i>
|
222 |
+
<span>1.2K</span>
|
223 |
+
</div>
|
224 |
+
<div class="flex items-center">
|
225 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
226 |
+
<span>4.8</span>
|
227 |
+
</div>
|
228 |
+
<div class="flex items-center">
|
229 |
+
<i class="fas fa-eye mr-1"></i>
|
230 |
+
<span>5.7K</span>
|
231 |
+
</div>
|
232 |
+
</div>
|
233 |
+
</div>
|
234 |
</div>
|
235 |
+
|
236 |
+
<!-- Project Card 2 -->
|
237 |
+
<div class="project-card bg-gradient-to-br from-white to-gray-50 rounded-xl overflow-hidden">
|
238 |
+
<div class="relative h-48 overflow-hidden">
|
239 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
240 |
+
alt="Content Generator"
|
241 |
+
class="project-image w-full h-full object-cover">
|
242 |
+
<div class="absolute top-2 right-2">
|
243 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
244 |
+
<i class="far fa-heart"></i>
|
245 |
+
</button>
|
246 |
+
</div>
|
247 |
+
</div>
|
248 |
+
<div class="p-4">
|
249 |
+
<div class="flex justify-between items-start mb-2">
|
250 |
+
<h3 class="font-semibold text-lg">Gemini Content Generator</h3>
|
251 |
+
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded">New</span>
|
252 |
+
</div>
|
253 |
+
<p class="text-gray-600 text-sm mb-3">Generate high-quality articles, blog posts, and marketing copy with just a few prompts.</p>
|
254 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
255 |
+
<div class="flex items-center">
|
256 |
+
<i class="fas fa-download mr-1"></i>
|
257 |
+
<span>892</span>
|
258 |
+
</div>
|
259 |
+
<div class="flex items-center">
|
260 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
261 |
+
<span>4.6</span>
|
262 |
+
</div>
|
263 |
+
<div class="flex items-center">
|
264 |
+
<i class="fas fa-eye mr-1"></i>
|
265 |
+
<span>3.2K</span>
|
266 |
+
</div>
|
267 |
+
</div>
|
268 |
+
</div>
|
269 |
</div>
|
270 |
+
|
271 |
+
<!-- Project Card 3 -->
|
272 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
273 |
+
<div class="relative h-48 overflow-hidden">
|
274 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
275 |
+
alt="Data Analyzer"
|
276 |
+
class="project-image w-full h-full object-cover">
|
277 |
+
<div class="absolute top-2 right-2">
|
278 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
279 |
+
<i class="far fa-heart"></i>
|
280 |
+
</button>
|
281 |
+
</div>
|
282 |
+
</div>
|
283 |
+
<div class="p-4">
|
284 |
+
<div class="flex justify-between items-start mb-2">
|
285 |
+
<h3 class="font-semibold text-lg">Gemini Data Analyzer</h3>
|
286 |
+
<span class="bg-purple-100 text-purple-800 text-xs px-2 py-1 rounded">Pro</span>
|
287 |
+
</div>
|
288 |
+
<p class="text-gray-600 text-sm mb-3">Transform raw data into actionable insights with AI-powered analysis and visualization tools.</p>
|
289 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
290 |
+
<div class="flex items-center">
|
291 |
+
<i class="fas fa-download mr-1"></i>
|
292 |
+
<span>2.5K</span>
|
293 |
+
</div>
|
294 |
+
<div class="flex items-center">
|
295 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
296 |
+
<span>4.9</span>
|
297 |
+
</div>
|
298 |
+
<div class="flex items-center">
|
299 |
+
<i class="fas fa-eye mr-1"></i>
|
300 |
+
<span>8.1K</span>
|
301 |
+
</div>
|
302 |
+
</div>
|
303 |
+
</div>
|
304 |
</div>
|
305 |
+
|
306 |
+
<!-- Project Card 4 -->
|
307 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
308 |
+
<div class="relative h-48 overflow-hidden">
|
309 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
310 |
+
alt="Image Creator"
|
311 |
+
class="project-image w-full h-full object-cover">
|
312 |
+
<div class="absolute top-2 right-2">
|
313 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
314 |
+
<i class="far fa-heart"></i>
|
315 |
+
</button>
|
316 |
+
</div>
|
317 |
+
</div>
|
318 |
+
<div class="p-4">
|
319 |
+
<div class="flex justify-between items-start mb-2">
|
320 |
+
<h3 class="font-semibold text-lg">Gemini Image Creator</h3>
|
321 |
+
<span class="bg-yellow-100 text-yellow-800 text-xs px-2 py-1 rounded">Popular</span>
|
322 |
+
</div>
|
323 |
+
<p class="text-gray-600 text-sm mb-3">Generate stunning images from text descriptions with advanced AI image generation capabilities.</p>
|
324 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
325 |
+
<div class="flex items-center">
|
326 |
+
<i class="fas fa-download mr-1"></i>
|
327 |
+
<span>3.7K</span>
|
328 |
+
</div>
|
329 |
+
<div class="flex items-center">
|
330 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
331 |
+
<span>4.7</span>
|
332 |
+
</div>
|
333 |
+
<div class="flex items-center">
|
334 |
+
<i class="fas fa-eye mr-1"></i>
|
335 |
+
<span>10.2K</span>
|
336 |
+
</div>
|
337 |
+
</div>
|
338 |
+
</div>
|
339 |
</div>
|
340 |
+
|
341 |
+
<!-- Project Card 5 -->
|
342 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
343 |
+
<div class="relative h-48 overflow-hidden">
|
344 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
345 |
+
alt="Chat Assistant"
|
346 |
+
class="project-image w-full h-full object-cover">
|
347 |
+
<div class="absolute top-2 right-2">
|
348 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
349 |
+
<i class="far fa-heart"></i>
|
350 |
+
</button>
|
351 |
+
</div>
|
352 |
+
</div>
|
353 |
+
<div class="p-4">
|
354 |
+
<div class="flex justify-between items-start mb-2">
|
355 |
+
<h3 class="font-semibold text-lg">Gemini Chat Assistant</h3>
|
356 |
+
<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded">Featured</span>
|
357 |
+
</div>
|
358 |
+
<p class="text-gray-600 text-sm mb-3">A conversational AI assistant that can answer questions, provide recommendations, and assist with tasks.</p>
|
359 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
360 |
+
<div class="flex items-center">
|
361 |
+
<i class="fas fa-download mr-1"></i>
|
362 |
+
<span>5.1K</span>
|
363 |
+
</div>
|
364 |
+
<div class="flex items-center">
|
365 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
366 |
+
<span>4.9</span>
|
367 |
+
</div>
|
368 |
+
<div class="flex items-center">
|
369 |
+
<i class="fas fa-eye mr-1"></i>
|
370 |
+
<span>12.4K</span>
|
371 |
+
</div>
|
372 |
+
</div>
|
373 |
+
</div>
|
374 |
+
</div>
|
375 |
+
|
376 |
+
<!-- Project Card 6 -->
|
377 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
378 |
+
<div class="relative project-image-container overflow-hidden">
|
379 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
380 |
+
alt="Language Translator"
|
381 |
+
class="project-image w-full h-full object-cover">
|
382 |
+
<div class="absolute top-2 right-2">
|
383 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
384 |
+
<i class="far fa-heart"></i>
|
385 |
+
</button>
|
386 |
+
</div>
|
387 |
+
</div>
|
388 |
+
<div class="p-4">
|
389 |
+
<div class="flex justify-between items-start mb-2">
|
390 |
+
<h3 class="font-semibold text-lg">Gemini Language Translator</h3>
|
391 |
+
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded">New</span>
|
392 |
+
</div>
|
393 |
+
<p class="text-gray-600 text-sm mb-3">Translate between 100+ languages with human-like accuracy and context awareness.</p>
|
394 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
395 |
+
<div class="flex items-center">
|
396 |
+
<i class="fas fa-download mr-1"></i>
|
397 |
+
<span>1.8K</span>
|
398 |
+
</div>
|
399 |
+
<div class="flex items-center">
|
400 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
401 |
+
<span>4.5</span>
|
402 |
+
</div>
|
403 |
+
<div class="flex items-center">
|
404 |
+
<i class="fas fa-eye mr-1"></i>
|
405 |
+
<span>6.3K</span>
|
406 |
+
</div>
|
407 |
+
</div>
|
408 |
+
</div>
|
409 |
+
</div>
|
410 |
+
|
411 |
+
<!-- Project Card 7 -->
|
412 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
413 |
+
<div class="relative project-image-container overflow-hidden">
|
414 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
415 |
+
alt="Video Summarizer"
|
416 |
+
class="project-image w-full h-full object-cover">
|
417 |
+
<div class="absolute top-2 right-2">
|
418 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
419 |
+
<i class="far fa-heart"></i>
|
420 |
+
</button>
|
421 |
+
</div>
|
422 |
+
</div>
|
423 |
+
<div class="p-4">
|
424 |
+
<div class="flex justify-between items-start mb-2">
|
425 |
+
<h3 class="font-semibold text-lg">Gemini Video Summarizer</h3>
|
426 |
+
<span class="bg-purple-100 text-purple-800 text-xs px-2 py-1 rounded">Pro</span>
|
427 |
+
</div>
|
428 |
+
<p class="text-gray-600 text-sm mb-3">Automatically generate concise summaries of long videos with key points and timestamps.</p>
|
429 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
430 |
+
<div class="flex items-center">
|
431 |
+
<i class="fas fa-download mr-1"></i>
|
432 |
+
<span>2.3K</span>
|
433 |
+
</div>
|
434 |
+
<div class="flex items-center">
|
435 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
436 |
+
<span>4.7</span>
|
437 |
+
</div>
|
438 |
+
<div class="flex items-center">
|
439 |
+
<i class="fas fa-eye mr-1"></i>
|
440 |
+
<span>7.5K</span>
|
441 |
+
</div>
|
442 |
+
</div>
|
443 |
+
</div>
|
444 |
+
</div>
|
445 |
+
<div class="project-card bg-white rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow">
|
446 |
+
<div class="relative h-48 overflow-hidden">
|
447 |
+
<img src="https://images.unsplash.com/photo-1620712943543-bcc4688e7485?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=500&q=80"
|
448 |
+
alt="Language Translator"
|
449 |
+
class="project-image w-full h-full object-cover">
|
450 |
+
<div class="absolute top-2 right-2">
|
451 |
+
<button class="like-btn bg-white bg-opacity-80 p-2 rounded-full text-gray-600 hover:text-red-500">
|
452 |
+
<i class="far fa-heart"></i>
|
453 |
+
</button>
|
454 |
+
</div>
|
455 |
+
</div>
|
456 |
+
<div class="p-4">
|
457 |
+
<div class="flex justify-between items-start mb-2">
|
458 |
+
<h3 class="font-semibold text-lg">Gemini Language Translator</h3>
|
459 |
+
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded">New</span>
|
460 |
+
</div>
|
461 |
+
<p class="text-gray-600 text-sm mb-3">Translate between 100+ languages with human-like accuracy and context awareness.</p>
|
462 |
+
<div class="flex items-center justify-between text-sm text-gray-500">
|
463 |
+
<div class="flex items-center">
|
464 |
+
<i class="fas fa-download mr-1"></i>
|
465 |
+
<span>1.8K</span>
|
466 |
+
</div>
|
467 |
+
<div class="flex items-center">
|
468 |
+
<i class="fas fa-star text-yellow-400 mr-1"></i>
|
469 |
+
<span>4.5</span>
|
470 |
+
</div>
|
471 |
+
<div class="flex items-center">
|
472 |
+
<i class="fas fa-eye mr-1"></i>
|
473 |
+
<span>6.3K</span>
|
474 |
+
</div>
|
475 |
+
</div>
|
476 |
+
</div>
|
477 |
</div>
|
478 |
</div>
|
479 |
+
|
480 |
+
<!-- Pagination -->
|
481 |
+
<div class="flex justify-center mt-10">
|
482 |
+
<nav class="flex items-center space-x-2">
|
483 |
+
<button class="px-3 py-1 rounded border border-gray-300 text-gray-700 hover:bg-gray-100">
|
484 |
+
<i class="fas fa-chevron-left"></i>
|
485 |
+
</button>
|
486 |
+
<button class="px-3 py-1 rounded bg-[#5d5dff] text-white">1</button>
|
487 |
+
<button class="px-3 py-1 rounded border border-gray-300 text-gray-700 hover:bg-gray-100">2</button>
|
488 |
+
<button class="px-3 py-1 rounded border border-gray-300 text-gray-700 hover:bg-gray-100">3</button>
|
489 |
+
<span class="px-2">...</span>
|
490 |
+
<button class="px-3 py-1 rounded border border-gray-300 text-gray-700 hover:bg-gray-100">8</button>
|
491 |
+
<button class="px-3 py-1 rounded border border-gray-300 text-gray-700 hover:bg-gray-100">
|
492 |
+
<i class="fas fa-chevron-right"></i>
|
493 |
+
</button>
|
494 |
+
</nav>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
495 |
</div>
|
496 |
</div>
|
497 |
+
|
498 |
+
<!-- Footer -->
|
499 |
+
<footer class="bg-[#1a1a1a] border-t border-[#2d2d2d] mt-16">
|
500 |
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
|
501 |
+
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
|
502 |
+
<div>
|
503 |
+
<h3 class="text-lg font-semibold mb-4">Gemini Apps</h3>
|
504 |
+
<p class="text-gray-600 text-sm">Empowering developers and creators with cutting-edge AI tools and applications.</p>
|
505 |
+
<div class="flex space-x-4 mt-4">
|
506 |
+
<a href="#" class="text-gray-600 hover:text-indigo-600"><i class="fab fa-twitter"></i></a>
|
507 |
+
<a href="#" class="text-gray-600 hover:text-indigo-600"><i class="fab fa-github"></i></a>
|
508 |
+
<a href="#" class="text-gray-600 hover:text-indigo-600"><i class="fab fa-discord"></i></a>
|
509 |
+
<a href="#" class="text-gray-600 hover:text-indigo-600"><i class="fab fa-youtube"></i></a>
|
510 |
+
</div>
|
511 |
+
</div>
|
512 |
+
<div>
|
513 |
+
<h3 class="text-lg font-semibold mb-4">Explore</h3>
|
514 |
+
<ul class="space-y-2">
|
515 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Featured Projects</a></li>
|
516 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Popular Apps</a></li>
|
517 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">New Releases</a></li>
|
518 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Collections</a></li>
|
519 |
+
</ul>
|
520 |
+
</div>
|
521 |
<div>
|
522 |
+
<h3 class="text-lg font-semibold mb-4">Resources</h3>
|
523 |
+
<ul class="space-y-2">
|
524 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Documentation</a></li>
|
525 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">API Reference</a></li>
|
526 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Tutorials</a></li>
|
527 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Community</a></li>
|
528 |
+
</ul>
|
529 |
</div>
|
530 |
<div>
|
531 |
+
<h3 class="text-lg font-semibold mb-4">Company</h3>
|
532 |
+
<ul class="space-y-2">
|
533 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">About Us</a></li>
|
534 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Careers</a></li>
|
535 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Blog</a></li>
|
536 |
+
<li><a href="#" class="text-gray-600 hover:text-indigo-600 text-sm">Contact</a></li>
|
537 |
+
</ul>
|
538 |
+
</div>
|
539 |
+
</div>
|
540 |
+
<div class="border-t border-gray-200 mt-10 pt-8 flex flex-col md:flex-row justify-between items-center">
|
541 |
+
<p class="text-gray-500 text-sm">© 2023 Gemini Apps. All rights reserved.</p>
|
542 |
+
<div class="flex space-x-6 mt-4 md:mt-0">
|
543 |
+
<a href="#" class="text-gray-500 hover:text-indigo-600 text-sm">Terms</a>
|
544 |
+
<a href="#" class="text-gray-500 hover:text-indigo-600 text-sm">Privacy</a>
|
545 |
+
<a href="#" class="text-gray-500 hover:text-indigo-600 text-sm">Cookies</a>
|
546 |
</div>
|
547 |
</div>
|
548 |
</div>
|
549 |
+
</footer>
|
550 |
+
|
551 |
<script>
|
552 |
+
// Density selector functionality
|
553 |
+
document.querySelectorAll('.density-btn').forEach(btn => {
|
554 |
+
btn.addEventListener('click', function() {
|
555 |
+
const grid = document.querySelector('.grid');
|
556 |
+
// Remove all density classes
|
557 |
+
grid.classList.remove('density-compact', 'density-normal', 'density-spacious');
|
558 |
+
// Add selected density class
|
559 |
+
grid.classList.add(`density-${this.dataset.density}`);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
|
561 |
+
// Update active state
|
562 |
+
document.querySelectorAll('.density-btn').forEach(b => {
|
563 |
+
b.classList.remove('bg-indigo-100', 'text-indigo-700');
|
564 |
+
});
|
565 |
+
this.classList.add('bg-indigo-100', 'text-indigo-700');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
566 |
});
|
567 |
});
|
568 |
+
|
569 |
+
// Set default to normal density
|
570 |
+
document.querySelector('.density-btn[data-density="normal"]').classList.add('bg-indigo-100', 'text-indigo-700');
|
571 |
+
|
572 |
+
// Simple like button functionality
|
573 |
+
document.querySelectorAll('.like-btn').forEach(button => {
|
574 |
+
button.addEventListener('click', function() {
|
575 |
+
const icon = this.querySelector('i');
|
576 |
+
if (icon.classList.contains('far')) {
|
577 |
+
icon.classList.remove('far');
|
578 |
+
icon.classList.add('fas');
|
579 |
+
icon.style.color = '#ef4444';
|
580 |
+
} else {
|
581 |
+
icon.classList.remove('fas');
|
582 |
+
icon.classList.add('far');
|
583 |
+
icon.style.color = '';
|
584 |
+
}
|
585 |
+
});
|
586 |
});
|
587 |
+
|
588 |
+
// Mobile menu toggle would go here if we had one
|
|
|
589 |
</script>
|
590 |
<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=triton7777/earthview" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
591 |
</html>
|