alexnguyen commited on
Commit
83a96f0
·
verified ·
1 Parent(s): 297a67a

Create an e-commerce product landing page with hero image carousel, product features grid, size/color selector, customer reviews with star ratings, related products section, add to cart button, and shipping information.

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +91 -0
  3. components/navbar.js +104 -0
  4. index.html +361 -19
  5. script.js +104 -0
  6. style.css +67 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Glowgizmo Shiny Shopping Spectacle
3
- emoji: 💻
4
- colorFrom: gray
5
- colorTo: gray
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: GlowGizmo - Shiny Shopping Spectacle
3
+ colorFrom: pink
4
+ colorTo: green
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .footer-link:hover {
7
+ color: rgb(14, 165, 233);
8
+ }
9
+ .social-icon {
10
+ transition: all 0.3s ease;
11
+ }
12
+ .social-icon:hover {
13
+ transform: translateY(-3px);
14
+ color: rgb(14, 165, 233);
15
+ }
16
+ </style>
17
+ <footer class="bg-gray-900 text-white pt-16 pb-8">
18
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
19
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12">
20
+ <!-- Company Info -->
21
+ <div>
22
+ <h3 class="text-xl font-bold mb-4">GlowGizmo</h3>
23
+ <p class="text-gray-400 mb-6">Innovative technology for a brighter future.</p>
24
+ <div class="flex space-x-4">
25
+ <a href="#" class="social-icon text-gray-400 hover:text-white">
26
+ <i data-feather="facebook" class="w-5 h-5"></i>
27
+ </a>
28
+ <a href="#" class="social-icon text-gray-400 hover:text-white">
29
+ <i data-feather="twitter" class="w-5 h-5"></i>
30
+ </a>
31
+ <a href="#" class="social-icon text-gray-400 hover:text-white">
32
+ <i data-feather="instagram" class="w-5 h-5"></i>
33
+ </a>
34
+ <a href="#" class="social-icon text-gray-400 hover:text-white">
35
+ <i data-feather="youtube" class="w-5 h-5"></i>
36
+ </a>
37
+ </div>
38
+ </div>
39
+
40
+ <!-- Quick Links -->
41
+ <div>
42
+ <h4 class="text-sm font-semibold uppercase tracking-wider mb-6">Quick Links</h4>
43
+ <ul class="space-y-3">
44
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Home</a></li>
45
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Products</a></li>
46
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Features</a></li>
47
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Pricing</a></li>
48
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">About Us</a></li>
49
+ </ul>
50
+ </div>
51
+
52
+ <!-- Support -->
53
+ <div>
54
+ <h4 class="text-sm font-semibold uppercase tracking-wider mb-6">Support</h4>
55
+ <ul class="space-y-3">
56
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Contact Us</a></li>
57
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">FAQs</a></li>
58
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Shipping & Returns</a></li>
59
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Warranty</a></li>
60
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Product Support</a></li>
61
+ </ul>
62
+ </div>
63
+
64
+ <!-- Newsletter -->
65
+ <div>
66
+ <h4 class="text-sm font-semibold uppercase tracking-wider mb-6">Newsletter</h4>
67
+ <p class="text-gray-400 mb-4">Subscribe to get updates on new products and special offers.</p>
68
+ <form class="flex">
69
+ <input type="email" placeholder="Your email" class="flex-1 px-4 py-2 rounded-l-md focus:outline-none focus:ring-2 focus:ring-primary-500 text-gray-900">
70
+ <button type="submit" class="bg-primary-500 hover:bg-primary-600 px-4 py-2 rounded-r-md text-white font-medium">
71
+ <i data-feather="send" class="w-5 h-5"></i>
72
+ </button>
73
+ </form>
74
+ </div>
75
+ </div>
76
+
77
+ <div class="mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center">
78
+ <p class="text-gray-400 text-sm">© 2023 GlowGizmo. All rights reserved.</p>
79
+ <div class="flex space-x-6 mt-4 md:mt-0">
80
+ <a href="#" class="footer-link text-gray-400 hover:text-white text-sm">Privacy Policy</a>
81
+ <a href="#" class="footer-link text-gray-400 hover:text-white text-sm">Terms of Service</a>
82
+ <a href="#" class="footer-link text-gray-400 hover:text-white text-sm">Cookies</a>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </footer>
87
+ `;
88
+ }
89
+ }
90
+
91
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .navbar {
7
+ transition: background-color 0.3s ease;
8
+ }
9
+ .nav-link:hover {
10
+ color: rgb(14, 165, 233);
11
+ }
12
+ .mobile-menu {
13
+ transition: all 0.3s ease;
14
+ }
15
+ @media (min-width: 1024px) {
16
+ .nav-link::after {
17
+ content: '';
18
+ display: block;
19
+ width: 0;
20
+ height: 2px;
21
+ background: rgb(14, 165, 233);
22
+ transition: width 0.3s;
23
+ }
24
+ .nav-link:hover::after {
25
+ width: 100%;
26
+ }
27
+ }
28
+ </style>
29
+ <nav class="navbar bg-white shadow-sm sticky top-0 z-50">
30
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
31
+ <div class="flex justify-between h-16">
32
+ <div class="flex items-center">
33
+ <a href="/" class="flex-shrink-0 flex items-center">
34
+ <span class="text-xl font-bold text-primary-500">GlowGizmo</span>
35
+ </a>
36
+ <div class="hidden lg:ml-8 lg:flex lg:space-x-8">
37
+ <a href="/products" class="nav-link text-gray-900 hover:text-primary-500 inline-flex items-center px-1 pt-1 text-sm font-medium">Products</a>
38
+ <a href="/features" class="nav-link text-gray-500 hover:text-primary-500 inline-flex items-center px-1 pt-1 text-sm font-medium">Features</a>
39
+ <a href="/support" class="nav-link text-gray-500 hover:text-primary-500 inline-flex items-center px-1 pt-1 text-sm font-medium">Support</a>
40
+ <a href="/about" class="nav-link text-gray-500 hover:text-primary-500 inline-flex items-center px-1 pt-1 text-sm font-medium">About</a>
41
+ </div>
42
+ </div>
43
+ <div class="flex items-center">
44
+ <div class="hidden lg:ml-4 lg:flex lg:items-center">
45
+ <button class="p-1 text-gray-400 hover:text-primary-500">
46
+ <i data-feather="search" class="w-5 h-5"></i>
47
+ </button>
48
+ <button class="ml-4 p-1 text-gray-400 hover:text-primary-500">
49
+ <i data-feather="shopping-cart" class="w-5 h-5"></i>
50
+ </button>
51
+ <button class="ml-4 p-1 text-gray-400 hover:text-primary-500">
52
+ <i data-feather="user" class="w-5 h-5"></i>
53
+ </button>
54
+ </div>
55
+ <div class="-mr-2 flex items-center lg:hidden">
56
+ <button id="mobile-menu-button" class="p-2 rounded-md inline-flex items-center justify-center text-gray-400 hover:text-gray-500 hover:bg-gray-100">
57
+ <i data-feather="menu" class="w-6 h-6"></i>
58
+ </button>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Mobile menu -->
65
+ <div id="mobile-menu" class="mobile-menu hidden lg:hidden bg-white shadow-lg">
66
+ <div class="pt-2 pb-3 space-y-1">
67
+ <a href="/products" class="block pl-3 pr-4 py-2 border-l-4 border-primary-500 text-base font-medium text-primary-500 bg-primary-50">Products</a>
68
+ <a href="/features" class="block pl-3 pr-4 py-2 border-l-4 border-transparent text-base font-medium text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800">Features</a>
69
+ <a href="/support" class="block pl-3 pr-4 py-2 border-l-4 border-transparent text-base font-medium text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800">Support</a>
70
+ <a href="/about" class="block pl-3 pr-4 py-2 border-l-4 border-transparent text-base font-medium text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800">About</a>
71
+ </div>
72
+ <div class="pt-4 pb-3 border-t border-gray-200">
73
+ <div class="flex items-center px-4 space-x-4">
74
+ <button class="p-1 text-gray-400 hover:text-primary-500">
75
+ <i data-feather="search" class="w-5 h-5"></i>
76
+ </button>
77
+ <button class="p-1 text-gray-400 hover:text-primary-500">
78
+ <i data-feather="shopping-cart" class="w-5 h-5"></i>
79
+ </button>
80
+ <button class="p-1 text-gray-400 hover:text-primary-500">
81
+ <i data-feather="user" class="w-5 h-5"></i>
82
+ </button>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </nav>
87
+ <script>
88
+ document.addEventListener('DOMContentLoaded', function() {
89
+ const mobileMenuButton = this.shadowRoot.getElementById('mobile-menu-button');
90
+ const mobileMenu = this.shadowRoot.getElementById('mobile-menu');
91
+
92
+ if (mobileMenuButton && mobileMenu) {
93
+ mobileMenuButton.addEventListener('click', function() {
94
+ mobileMenu.classList.toggle('hidden');
95
+ feather.replace();
96
+ });
97
+ }
98
+ });
99
+ </script>
100
+ `;
101
+ }
102
+ }
103
+
104
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,361 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>GlowGizmo | Premium Tech Essentials</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ primary: {
17
+ 100: '#f0f9ff',
18
+ 500: '#0ea5e9',
19
+ 700: '#0369a1'
20
+ },
21
+ secondary: {
22
+ 100: '#f5f3ff',
23
+ 500: '#8b5cf6',
24
+ 700: '#6d28d9'
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ </script>
31
+ </head>
32
+ <body class="bg-gray-50">
33
+ <!-- Navbar Component -->
34
+ <script src="components/navbar.js"></script>
35
+ <custom-navbar></custom-navbar>
36
+
37
+ <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
38
+ <!-- Product Section -->
39
+ <section class="grid grid-cols-1 lg:grid-cols-2 gap-12">
40
+ <!-- Product Images Carousel -->
41
+ <div class="relative">
42
+ <div class="carousel-container relative overflow-hidden rounded-2xl shadow-xl h-96">
43
+ <div class="carousel-track flex transition-transform duration-300">
44
+ <div class="carousel-slide min-w-full">
45
+ <img src="http://static.photos/technology/1200x630/1" alt="Product Image 1" class="w-full h-full object-cover">
46
+ </div>
47
+ <div class="carousel-slide min-w-full">
48
+ <img src="http://static.photos/technology/1200x630/2" alt="Product Image 2" class="w-full h-full object-cover">
49
+ </div>
50
+ <div class="carousel-slide min-w-full">
51
+ <img src="http://static.photos/technology/1200x630/3" alt="Product Image 3" class="w-full h-full object-cover">
52
+ </div>
53
+ </div>
54
+ <button class="carousel-prev absolute left-4 top-1/2 -translate-y-1/2 bg-white p-2 rounded-full shadow-md hover:bg-primary-100">
55
+ <i data-feather="chevron-left"></i>
56
+ </button>
57
+ <button class="carousel-next absolute right-4 top-1/2 -translate-y-1/2 bg-white p-2 rounded-full shadow-md hover:bg-primary-100">
58
+ <i data-feather="chevron-right"></i>
59
+ </button>
60
+ <div class="carousel-dots flex justify-center space-x-2 absolute bottom-4 left-0 right-0">
61
+ <button class="w-3 h-3 rounded-full bg-white opacity-50 hover:opacity-100"></button>
62
+ <button class="w-3 h-3 rounded-full bg-white opacity-50 hover:opacity-100"></button>
63
+ <button class="w-3 h-3 rounded-full bg-white opacity-50 hover:opacity-100"></button>
64
+ </div>
65
+ </div>
66
+ </div>
67
+
68
+ <!-- Product Info -->
69
+ <div>
70
+ <h1 class="text-4xl font-bold text-gray-900 mb-2">GlowGizmo Pro X</h1>
71
+ <div class="flex items-center mb-4">
72
+ <div class="flex text-yellow-400 mr-2">
73
+ <i data-feather="star" class="w-5 h-5 fill-current"></i>
74
+ <i data-feather="star" class="w-5 h-5 fill-current"></i>
75
+ <i data-feather="star" class="w-5 h-5 fill-current"></i>
76
+ <i data-feather="star" class="w-5 h-5 fill-current"></i>
77
+ <i data-feather="star" class="w-5 h-5 fill-current text-gray-300"></i>
78
+ </div>
79
+ <span class="text-gray-600">(142 reviews)</span>
80
+ </div>
81
+
82
+ <p class="text-3xl font-semibold text-primary-500 mb-6">$349.99</p>
83
+
84
+ <p class="text-gray-700 mb-8">The GlowGizmo Pro X revolutionizes your daily routine with cutting-edge technology and elegant design. Experience seamless connectivity and unmatched performance.</p>
85
+
86
+ <!-- Color Selector -->
87
+ <div class="mb-6">
88
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Color</h3>
89
+ <div class="flex space-x-3">
90
+ <button class="w-10 h-10 rounded-full bg-black border-2 border-transparent hover:border-primary-500 focus:border-primary-500 focus:outline-none"></button>
91
+ <button class="w-10 h-10 rounded-full bg-blue-600 border-2 border-transparent hover:border-primary-500 focus:border-primary-500 focus:outline-none"></button>
92
+ <button class="w-10 h-10 rounded-full bg-gray-300 border-2 border-transparent hover:border-primary-500 focus:border-primary-500 focus:outline-none"></button>
93
+ <button class="w-10 h-10 rounded-full bg-white border-2 border-gray-300 hover:border-primary-500 focus:border-primary-500 focus:outline-none"></button>
94
+ </div>
95
+ </div>
96
+
97
+ <!-- Size Selector -->
98
+ <div class="mb-8">
99
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Size</h3>
100
+ <div class="grid grid-cols-4 gap-3">
101
+ <button class="py-2 px-4 border border-gray-300 rounded-md text-center hover:border-primary-500 hover:bg-primary-50 focus:outline-none focus:ring-2 focus:ring-primary-500">S</button>
102
+ <button class="py-2 px-4 border border-gray-300 rounded-md text-center hover:border-primary-500 hover:bg-primary-50 focus:outline-none focus:ring-2 focus:ring-primary-500">M</button>
103
+ <button class="py-2 px-4 border border-gray-300 rounded-md text-center bg-primary-100 border-primary-500 font-medium">L</button>
104
+ <button class="py-2 px-4 border border-gray-300 rounded-md text-center hover:border-primary-500 hover:bg-primary-50 focus:outline-none focus:ring-2 focus:ring-primary-500">XL</button>
105
+ </div>
106
+ </div>
107
+
108
+ <!-- Add to Cart -->
109
+ <div class="flex space-x-4 mb-8">
110
+ <div class="flex items-center border border-gray-300 rounded-md overflow-hidden">
111
+ <button class="px-3 py-2 bg-gray-100 hover:bg-gray-200 text-gray-600">-</button>
112
+ <span class="px-4 py-2">1</span>
113
+ <button class="px-3 py-2 bg-gray-100 hover:bg-gray-200 text-gray-600">+</button>
114
+ </div>
115
+ <button class="flex-1 bg-primary-500 hover:bg-primary-600 text-white py-3 px-6 rounded-md font-medium transition-colors flex items-center justify-center">
116
+ <i data-feather="shopping-cart" class="w-5 h-5 mr-2"></i>
117
+ Add to Cart
118
+ </button>
119
+ </div>
120
+
121
+ <!-- Shipping Info -->
122
+ <div class="bg-gray-50 p-4 rounded-lg">
123
+ <div class="flex items-start mb-2">
124
+ <i data-feather="truck" class="w-5 h-5 text-primary-500 mr-2 mt-0.5"></i>
125
+ <div>
126
+ <h4 class="font-medium text-gray-900">Free Shipping</h4>
127
+ <p class="text-gray-600 text-sm">Get free shipping on all orders over $50</p>
128
+ </div>
129
+ </div>
130
+ <div class="flex items-start">
131
+ <i data-feather="refresh-cw" class="w-5 h-5 text-primary-500 mr-2 mt-0.5"></i>
132
+ <div>
133
+ <h4 class="font-medium text-gray-900">Easy Returns</h4>
134
+ <p class="text-gray-600 text-sm">30-day return policy, no questions asked</p>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </section>
140
+
141
+ <!-- Product Features -->
142
+ <section class="mt-20">
143
+ <h2 class="text-2xl font-bold text-gray-900 mb-8">Product Features</h2>
144
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
145
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
146
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
147
+ <i data-feather="zap" class="w-6 h-6 text-primary-500"></i>
148
+ </div>
149
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Lightning Fast</h3>
150
+ <p class="text-gray-600">Powered by our latest processor for instant response and seamless multitasking.</p>
151
+ </div>
152
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
153
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
154
+ <i data-feather="battery" class="w-6 h-6 text-primary-500"></i>
155
+ </div>
156
+ <h3 class="text-lg font-medium text-gray-900 mb-2">All-Day Battery</h3>
157
+ <p class="text-gray-600">Up to 48 hours of battery life for uninterrupted use throughout your day.</p>
158
+ </div>
159
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
160
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
161
+ <i data-feather="cpu" class="w-6 h-6 text-primary-500"></i>
162
+ </div>
163
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Advanced Cooling</h3>
164
+ <p class="text-gray-600">Patented cooling system keeps your device at optimal temperature even under heavy load.</p>
165
+ </div>
166
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
167
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
168
+ <i data-feather="eye" class="w-6 h-6 text-primary-500"></i>
169
+ </div>
170
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Eye Comfort</h3>
171
+ <p class="text-gray-600">Blue light reduction technology for comfortable viewing even during extended use.</p>
172
+ </div>
173
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
174
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
175
+ <i data-feather="wifi" class="w-6 h-6 text-primary-500"></i>
176
+ </div>
177
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Ultra Connectivity</h3>
178
+ <p class="text-gray-600">Next-gen wireless technology for faster, more stable connections.</p>
179
+ </div>
180
+ <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow">
181
+ <div class="w-12 h-12 bg-primary-100 rounded-lg flex items-center justify-center mb-4">
182
+ <i data-feather="shield" class="w-6 h-6 text-primary-500"></i>
183
+ </div>
184
+ <h3 class="text-lg font-medium text-gray-900 mb-2">Military Grade</h3>
185
+ <p class="text-gray-600">Rugged design that meets military standards for durability and reliability.</p>
186
+ </div>
187
+ </div>
188
+ </section>
189
+
190
+ <!-- Customer Reviews -->
191
+ <section class="mt-20">
192
+ <div class="flex justify-between items-center mb-8">
193
+ <h2 class="text-2xl font-bold text-gray-900">Customer Reviews</h2>
194
+ <button class="text-primary-500 font-medium hover:text-primary-600">Write a Review</button>
195
+ </div>
196
+
197
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
198
+ <!-- Review 1 -->
199
+ <div class="bg-white p-6 rounded-xl shadow-sm">
200
+ <div class="flex items-center mb-4">
201
+ <div class="w-12 h-12 rounded-full bg-gray-200 mr-4 overflow-hidden">
202
+ <img src="http://static.photos/people/200x200/1" alt="Customer" class="w-full h-full object-cover">
203
+ </div>
204
+ <div>
205
+ <h4 class="font-medium text-gray-900">Alex Johnson</h4>
206
+ <div class="flex text-yellow-400">
207
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
208
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
209
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
210
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
211
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ <h3 class="font-medium text-gray-900 mb-2">Perfect for my needs</h3>
216
+ <p class="text-gray-600 mb-4">The GlowGizmo Pro X has exceeded all my expectations. The battery life is incredible and the performance is top-notch.</p>
217
+ <p class="text-gray-400 text-sm">Posted on March 15, 2023</p>
218
+ </div>
219
+
220
+ <!-- Review 2 -->
221
+ <div class="bg-white p-6 rounded-xl shadow-sm">
222
+ <div class="flex items-center mb-4">
223
+ <div class="w-12 h-12 rounded-full bg-gray-200 mr-4 overflow-hidden">
224
+ <img src="http://static.photos/people/200x200/2" alt="Customer" class="w-full h-full object-cover">
225
+ </div>
226
+ <div>
227
+ <h4 class="font-medium text-gray-900">Sarah Williams</h4>
228
+ <div class="flex text-yellow-400">
229
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
230
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
231
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
232
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
233
+ <i data-feather="star" class="w-4 h-4 fill-current text-gray-300"></i>
234
+ </div>
235
+ </div>
236
+ </div>
237
+ <h3 class="font-medium text-gray-900 mb-2">Great product with minor issues</h3>
238
+ <p class="text-gray-600 mb-4">Love the design and features, but the companion app could use some improvements.</p>
239
+ <p class="text-gray-400 text-sm">Posted on February 28, 2023</p>
240
+ </div>
241
+ </div>
242
+
243
+ <button class="mt-8 w-full py-3 border border-gray-300 rounded-md text-primary-500 font-medium hover:border-primary-500 hover:bg-primary-50 transition-colors">
244
+ View All 142 Reviews
245
+ </button>
246
+ </section>
247
+
248
+ <!-- Related Products -->
249
+ <section class="mt-20">
250
+ <h2 class="text-2xl font-bold text-gray-900 mb-8">You May Also Like</h2>
251
+ <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6">
252
+ <!-- Product 1 -->
253
+ <div class="bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-shadow">
254
+ <div class="relative h-48 bg-gray-100">
255
+ <img src="http://static.photos/technology/640x360/4" alt="Related Product" class="w-full h-full object-cover">
256
+ <button class="absolute top-3 right-3 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-md hover:bg-gray-100">
257
+ <i data-feather="heart" class="w-5 h-5 text-gray-600"></i>
258
+ </button>
259
+ </div>
260
+ <div class="p-4">
261
+ <h3 class="font-medium text-gray-900 mb-1">GlowGizmo Lite</h3>
262
+ <div class="flex text-yellow-400 mb-2">
263
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
264
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
265
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
266
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
267
+ <i data-feather="star" class="w-4 h-4 fill-current text-gray-300"></i>
268
+ </div>
269
+ <p class="text-primary-500 font-medium mb-3">$249.99</p>
270
+ <button class="w-full py-2 bg-primary-500 hover:bg-primary-600 text-white rounded-md text-sm font-medium transition-colors">
271
+ Add to Cart
272
+ </button>
273
+ </div>
274
+ </div>
275
+
276
+ <!-- Product 2 -->
277
+ <div class="bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-shadow">
278
+ <div class="relative h-48 bg-gray-100">
279
+ <img src="http://static.photos/technology/640x360/5" alt="Related Product" class="w-full h-full object-cover">
280
+ <button class="absolute top-3 right-3 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-md hover:bg-gray-100">
281
+ <i data-feather="heart" class="w-5 h-5 text-gray-600"></i>
282
+ </button>
283
+ </div>
284
+ <div class="p-4">
285
+ <h3 class="font-medium text-gray-900 mb-1">GlowGizmo Accessory Kit</h3>
286
+ <div class="flex text-yellow-400 mb-2">
287
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
288
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
289
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
290
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
291
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
292
+ </div>
293
+ <p class="text-primary-500 font-medium mb-3">$79.99</p>
294
+ <button class="w-full py-2 bg-primary-500 hover:bg-primary-600 text-white rounded-md text-sm font-medium transition-colors">
295
+ Add to Cart
296
+ </button>
297
+ </div>
298
+ </div>
299
+
300
+ <!-- Product 3 -->
301
+ <div class="bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-shadow">
302
+ <div class="relative h-48 bg-gray-100">
303
+ <img src="http://static.photos/technology/640x360/6" alt="Related Product" class="w-full h-full object-cover">
304
+ <button class="absolute top-3 right-3 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-md hover:bg-gray-100">
305
+ <i data-feather="heart" class="w-5 h-5 text-gray-600"></i>
306
+ </button>
307
+ </div>
308
+ <div class="p-4">
309
+ <h3 class="font-medium text-gray-900 mb-1">GlowGizmo Wireless Charger</h3>
310
+ <div class="flex text-yellow-400 mb-2">
311
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
312
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
313
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
314
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
315
+ <i data-feather="star" class="w-4 h-4 fill-current text-gray-300"></i>
316
+ </div>
317
+ <p class="text-primary-500 font-medium mb-3">$59.99</p>
318
+ <button class="w-full py-2 bg-primary-500 hover:bg-primary-600 text-white rounded-md text-sm font-medium transition-colors">
319
+ Add to Cart
320
+ </button>
321
+ </div>
322
+ </div>
323
+
324
+ <!-- Product 4 -->
325
+ <div class="bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-shadow">
326
+ <div class="relative h-48 bg-gray-100">
327
+ <img src="http://static.photos/technology/640x360/7" alt="Related Product" class="w-full h-full object-cover">
328
+ <button class="absolute top-3 right-3 w-10 h-10 bg-white rounded-full flex items-center justify-center shadow-md hover:bg-gray-100">
329
+ <i data-feather="heart" class="w-5 h-5 text-gray-600"></i>
330
+ </button>
331
+ </div>
332
+ <div class="p-4">
333
+ <h3 class="font-medium text-gray-900 mb-1">GlowGizmo Travel Case</h3>
334
+ <div class="flex text-yellow-400 mb-2">
335
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
336
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
337
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
338
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
339
+ <i data-feather="star" class="w-4 h-4 fill-current"></i>
340
+ </div>
341
+ <p class="text-primary-500 font-medium mb-3">$39.99</p>
342
+ <button class="w-full py-2 bg-primary-500 hover:bg-primary-600 text-white rounded-md text-sm font-medium transition-colors">
343
+ Add to Cart
344
+ </button>
345
+ </div>
346
+ </div>
347
+ </div>
348
+ </section>
349
+ </main>
350
+
351
+ <!-- Footer Component -->
352
+ <script src="components/footer.js"></script>
353
+ <custom-footer></custom-footer>
354
+
355
+ <script src="components/navbar.js"></script>
356
+ <script src="components/footer.js"></script>
357
+ <script src="script.js"></script>
358
+ <script>feather.replace();</script>
359
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
360
+ </body>
361
+ </html>
script.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ // Initialize carousel
3
+ const carouselTrack = document.querySelector('.carousel-track');
4
+ const carouselSlides = document.querySelectorAll('.carousel-slide');
5
+ const carouselDots = document.querySelectorAll('.carousel-dots button');
6
+ const prevBtn = document.querySelector('.carousel-prev');
7
+ const nextBtn = document.querySelector('.carousel-next');
8
+
9
+ let currentIndex = 0;
10
+ const slideCount = carouselSlides.length;
11
+
12
+ function updateCarousel() {
13
+ carouselTrack.style.transform = `translateX(-${currentIndex * 100}%)`;
14
+
15
+ // Update dots
16
+ carouselDots.forEach((dot, index) => {
17
+ dot.classList.toggle('opacity-100', index === currentIndex);
18
+ dot.classList.toggle('opacity-50', index !== currentIndex);
19
+ });
20
+ }
21
+
22
+ prevBtn.addEventListener('click', () => {
23
+ currentIndex = (currentIndex - 1 + slideCount) % slideCount;
24
+ updateCarousel();
25
+ });
26
+
27
+ nextBtn.addEventListener('click', () => {
28
+ currentIndex = (currentIndex + 1) % slideCount;
29
+ updateCarousel();
30
+ });
31
+
32
+ // Add click handlers for dots
33
+ carouselDots.forEach((dot, index) => {
34
+ dot.addEventListener('click', () => {
35
+ currentIndex = index;
36
+ updateCarousel();
37
+ });
38
+ });
39
+
40
+ // Auto-advance carousel every 5 seconds
41
+ setInterval(() => {
42
+ currentIndex = (currentIndex + 1) % slideCount;
43
+ updateCarousel();
44
+ }, 5000);
45
+
46
+ // Quantity selector functionality
47
+ const quantityDisplay = document.querySelector('.quantity-selector span');
48
+ const minusBtn = document.querySelector('.quantity-selector button:first-child');
49
+ const plusBtn = document.querySelector('.quantity-selector button:last-child');
50
+ let quantity = 1;
51
+
52
+ function updateQuantity() {
53
+ quantityDisplay.textContent = quantity;
54
+ }
55
+
56
+ minusBtn.addEventListener('click', () => {
57
+ if (quantity > 1) {
58
+ quantity--;
59
+ updateQuantity();
60
+ }
61
+ });
62
+
63
+ plusBtn.addEventListener('click', () => {
64
+ quantity++;
65
+ updateQuantity();
66
+ });
67
+
68
+ // Color selector functionality
69
+ const colorButtons = document.querySelectorAll('.color-selector button');
70
+ colorButtons.forEach(button => {
71
+ button.addEventListener('click', () => {
72
+ colorButtons.forEach(btn => btn.classList.remove('border-primary-500', 'ring-2', 'ring-primary-200'));
73
+ button.classList.add('border-primary-500', 'ring-2', 'ring-primary-200');
74
+ });
75
+ });
76
+
77
+ // Size selector functionality
78
+ const sizeButtons = document.querySelectorAll('.size-selector button');
79
+ sizeButtons.forEach(button => {
80
+ button.addEventListener('click', () => {
81
+ sizeButtons.forEach(btn => {
82
+ btn.classList.remove('bg-primary-100', 'border-primary-500', 'font-medium');
83
+ btn.classList.add('border-gray-300');
84
+ });
85
+ button.classList.add('bg-primary-100', 'border-primary-500', 'font-medium');
86
+ button.classList.remove('border-gray-300');
87
+ });
88
+ });
89
+
90
+ // Add to cart animation
91
+ const addToCartBtn = document.querySelector('.add-to-cart-btn');
92
+ if (addToCartBtn) {
93
+ addToCartBtn.addEventListener('click', function() {
94
+ // Animation effect
95
+ this.classList.add('animate-pulse');
96
+ setTimeout(() => {
97
+ this.classList.remove('animate-pulse');
98
+ }, 500);
99
+
100
+ // Here you would typically add your cart functionality
101
+ console.log('Product added to cart!');
102
+ });
103
+ }
104
+ });
style.css CHANGED
@@ -1,28 +1,76 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Custom Carousel Styles */
2
+ .carousel-container {
3
+ position: relative;
4
  }
5
 
6
+ .carousel-track {
7
+ display: flex;
8
+ height: 100%;
9
  }
10
 
11
+ .carousel-slide {
12
+ flex-shrink: 0;
13
+ width: 100%;
14
+ height: 100%;
 
15
  }
16
 
17
+ .carousel-prev, .carousel-next {
18
+ transition: all 0.3s ease;
 
 
 
 
19
  }
20
 
21
+ .carousel-prev:hover, .carousel-next:hover {
22
+ transform: translateY(-50%) scale(1.1);
23
  }
24
+
25
+ /* Quantity Selector Styles */
26
+ .quantity-selector button {
27
+ transition: background-color 0.2s ease;
28
+ }
29
+
30
+ .quantity-selector button:hover {
31
+ background-color: #e5e7eb;
32
+ }
33
+
34
+ /* Review Card Hover Effect */
35
+ .review-card:hover {
36
+ transform: translateY(-4px);
37
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
38
+ }
39
+
40
+ /* Smooth transitions for interactive elements */
41
+ button, .color-selector button, .size-selector button {
42
+ transition: all 0.2s ease;
43
+ }
44
+
45
+ /* Custom shadow for featured products */
46
+ .feature-card {
47
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
48
+ }
49
+
50
+ /* Animation for Add to Cart button */
51
+ @keyframes pulse {
52
+ 0% {
53
+ transform: scale(1);
54
+ }
55
+ 50% {
56
+ transform: scale(1.05);
57
+ }
58
+ 100% {
59
+ transform: scale(1);
60
+ }
61
+ }
62
+
63
+ .add-to-cart-btn:hover {
64
+ animation: pulse 1.5s infinite;
65
+ }
66
+
67
+ /* Responsive adjustments */
68
+ @media (max-width: 640px) {
69
+ .product-grid {
70
+ grid-template-columns: 1fr;
71
+ }
72
+
73
+ .feature-grid {
74
+ grid-template-columns: 1fr;
75
+ }
76
+ }