WillemVH commited on
Commit
884b0e4
·
verified ·
1 Parent(s): a0df41f

can you make a site for a brand called "Chowder" that looks really modern and minimalistic, black background, white text and #626344 (olive green) for anything else.. also it is a tech store so have a shopping cart and checkout and that stuff. also make it so that it has like a grainy gradient background and might win the apple design awards... but dont mention that part in the website... also have alot of the text be rather informal like.. "this is a cool store that i suggest you buy from" and stuff like that.. but no keyboard slang like "bs" and stuff... also we started in 2024 so yeah............

Browse files
Files changed (7) hide show
  1. README.md +8 -5
  2. components/footer.js +142 -0
  3. components/navbar.js +100 -0
  4. components/product-card.js +133 -0
  5. index.html +98 -19
  6. script.js +36 -0
  7. style.css +39 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Chowder Tech Sleek Grainy Olive Code
3
- emoji: 🏢
4
- colorFrom: purple
5
- colorTo: blue
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: Chowder Tech - Sleek & Grainy Olive Code
3
+ colorFrom: green
4
+ colorTo: gray
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,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ background: rgba(0, 0, 0, 0.9);
9
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
10
+ }
11
+
12
+ .footer-container {
13
+ max-width: 1200px;
14
+ margin: 0 auto;
15
+ padding: 3rem 2rem;
16
+ }
17
+
18
+ .footer-grid {
19
+ display: grid;
20
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
21
+ gap: 2rem;
22
+ }
23
+
24
+ .footer-column h3 {
25
+ font-size: 1rem;
26
+ font-weight: 600;
27
+ margin-bottom: 1.5rem;
28
+ color: #626344;
29
+ text-transform: uppercase;
30
+ letter-spacing: 0.05em;
31
+ }
32
+
33
+ .footer-column ul {
34
+ list-style: none;
35
+ padding: 0;
36
+ margin: 0;
37
+ }
38
+
39
+ .footer-column li {
40
+ margin-bottom: 0.75rem;
41
+ }
42
+
43
+ .footer-column a {
44
+ color: rgba(255, 255, 255, 0.7);
45
+ text-decoration: none;
46
+ transition: color 0.2s;
47
+ }
48
+
49
+ .footer-column a:hover {
50
+ color: #626344;
51
+ }
52
+
53
+ .footer-bottom {
54
+ margin-top: 3rem;
55
+ padding-top: 2rem;
56
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
57
+ display: flex;
58
+ flex-direction: column;
59
+ align-items: center;
60
+ gap: 1rem;
61
+ text-align: center;
62
+ }
63
+
64
+ .social-links {
65
+ display: flex;
66
+ gap: 1rem;
67
+ }
68
+
69
+ .social-links a {
70
+ color: white;
71
+ opacity: 0.7;
72
+ transition: opacity 0.2s;
73
+ }
74
+
75
+ .social-links a:hover {
76
+ opacity: 1;
77
+ color: #626344;
78
+ }
79
+
80
+ .copyright {
81
+ color: rgba(255, 255, 255, 0.5);
82
+ font-size: 0.875rem;
83
+ }
84
+
85
+ @media (max-width: 768px) {
86
+ .footer-grid {
87
+ grid-template-columns: 1fr;
88
+ }
89
+ }
90
+ </style>
91
+ <div class="footer-container">
92
+ <div class="footer-grid">
93
+ <div class="footer-column">
94
+ <h3>Shop</h3>
95
+ <ul>
96
+ <li><a href="#">All Products</a></li>
97
+ <li><a href="#">New Arrivals</a></li>
98
+ <li><a href="#">Best Sellers</a></li>
99
+ <li><a href="#">Deals</a></li>
100
+ </ul>
101
+ </div>
102
+ <div class="footer-column">
103
+ <h3>Help</h3>
104
+ <ul>
105
+ <li><a href="#">Contact Us</a></li>
106
+ <li><a href="#">Shipping</a></li>
107
+ <li><a href="#">Returns</a></li>
108
+ <li><a href="#">FAQ</a></li>
109
+ </ul>
110
+ </div>
111
+ <div class="footer-column">
112
+ <h3>About</h3>
113
+ <ul>
114
+ <li><a href="#">Our Story</a></li>
115
+ <li><a href="#">Sustainability</a></li>
116
+ <li><a href="#">Careers</a></li>
117
+ <li><a href="#">Press</a></li>
118
+ </ul>
119
+ </div>
120
+ <div class="footer-column">
121
+ <h3>Legal</h3>
122
+ <ul>
123
+ <li><a href="#">Terms</a></li>
124
+ <li><a href="#">Privacy</a></li>
125
+ <li><a href="#">Cookies</a></li>
126
+ </ul>
127
+ </div>
128
+ </div>
129
+ <div class="footer-bottom">
130
+ <div class="social-links">
131
+ <a href="#"><i data-feather="twitter"></i></a>
132
+ <a href="#"><i data-feather="instagram"></i></a>
133
+ <a href="#"><i data-feather="facebook"></i></a>
134
+ </div>
135
+ <p class="copyright">© 2024 Chowder. We just got started.</p>
136
+ </div>
137
+ </div>
138
+ `;
139
+ }
140
+ }
141
+
142
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ position: sticky;
9
+ top: 0;
10
+ z-index: 50;
11
+ backdrop-filter: blur(10px);
12
+ background-color: rgba(0, 0, 0, 0.8);
13
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
14
+ }
15
+
16
+ nav {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ align-items: center;
20
+ padding: 1.5rem 2rem;
21
+ max-width: 100%;
22
+ margin: 0 auto;
23
+ }
24
+
25
+ .logo {
26
+ font-weight: 700;
27
+ font-size: 1.5rem;
28
+ color: white;
29
+ text-decoration: none;
30
+ }
31
+
32
+ .nav-links {
33
+ display: flex;
34
+ gap: 2rem;
35
+ align-items: center;
36
+ }
37
+
38
+ .nav-links a {
39
+ color: white;
40
+ text-decoration: none;
41
+ transition: color 0.2s;
42
+ font-weight: 500;
43
+ }
44
+
45
+ .nav-links a:hover {
46
+ color: #626344;
47
+ }
48
+
49
+ .cart-btn {
50
+ position: relative;
51
+ background: none;
52
+ border: none;
53
+ color: white;
54
+ cursor: pointer;
55
+ padding: 0.5rem;
56
+ }
57
+
58
+ .cart-count {
59
+ position: absolute;
60
+ top: -0.25rem;
61
+ right: -0.25rem;
62
+ background-color: #626344;
63
+ color: black;
64
+ border-radius: 9999px;
65
+ width: 1.25rem;
66
+ height: 1.25rem;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ font-size: 0.75rem;
71
+ font-weight: bold;
72
+ }
73
+
74
+ @media (max-width: 768px) {
75
+ nav {
76
+ padding: 1rem;
77
+ }
78
+
79
+ .nav-links {
80
+ gap: 1rem;
81
+ }
82
+ }
83
+ </style>
84
+ <nav>
85
+ <a href="/" class="logo">CHOWDER</a>
86
+ <div class="nav-links">
87
+ <a href="#products">Products</a>
88
+ <a href="#">About</a>
89
+ <a href="#">Contact</a>
90
+ <button class="cart-btn" onclick="toggleCart()">
91
+ <i data-feather="shopping-cart"></i>
92
+ <span class="cart-count"></span>
93
+ </button>
94
+ </div>
95
+ </nav>
96
+ `;
97
+ }
98
+ }
99
+
100
+ customElements.define('custom-navbar', CustomNavbar);
components/product-card.js ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomProduct extends HTMLElement {
2
+ static get observedAttributes() {
3
+ return ['title', 'price', 'image', 'category'];
4
+ }
5
+
6
+ constructor() {
7
+ super();
8
+ this.attachShadow({ mode: 'open' });
9
+ }
10
+
11
+ connectedCallback() {
12
+ this.render();
13
+ }
14
+
15
+ attributeChangedCallback(name, oldValue, newValue) {
16
+ this.render();
17
+ }
18
+
19
+ render() {
20
+ const title = this.getAttribute('title') || 'Product';
21
+ const price = this.getAttribute('price') || '0';
22
+ const image = this.getAttribute('image') || '';
23
+ const category = this.getAttribute('category') || '';
24
+ const description = this.innerHTML.trim();
25
+
26
+ this.shadowRoot.innerHTML = `
27
+ <style>
28
+ :host {
29
+ display: block;
30
+ --order: ${Math.floor(Math.random() * 3)};
31
+ }
32
+
33
+ .product-card {
34
+ background: rgba(255, 255, 255, 0.03);
35
+ border-radius: 0.75rem;
36
+ overflow: hidden;
37
+ transition: transform 0.3s, box-shadow 0.3s;
38
+ height: 100%;
39
+ display: flex;
40
+ flex-direction: column;
41
+ }
42
+
43
+ .product-card:hover {
44
+ transform: translateY(-4px);
45
+ box-shadow: 0 10px 25px -5px rgba(98, 99, 68, 0.2);
46
+ }
47
+
48
+ .product-image {
49
+ width: 100%;
50
+ height: 200px;
51
+ object-fit: cover;
52
+ }
53
+
54
+ .product-content {
55
+ padding: 1.5rem;
56
+ flex-grow: 1;
57
+ display: flex;
58
+ flex-direction: column;
59
+ }
60
+
61
+ .product-category {
62
+ color: #626344;
63
+ font-size: 0.875rem;
64
+ font-weight: 500;
65
+ margin-bottom: 0.5rem;
66
+ text-transform: uppercase;
67
+ letter-spacing: 0.05em;
68
+ }
69
+
70
+ .product-title {
71
+ font-size: 1.25rem;
72
+ font-weight: 600;
73
+ margin-bottom: 0.75rem;
74
+ }
75
+
76
+ .product-description {
77
+ color: rgba(255, 255, 255, 0.7);
78
+ font-size: 0.9375rem;
79
+ line-height: 1.5;
80
+ margin-bottom: 1.5rem;
81
+ flex-grow: 1;
82
+ }
83
+
84
+ .product-footer {
85
+ display: flex;
86
+ justify-content: space-between;
87
+ align-items: center;
88
+ margin-top: auto;
89
+ }
90
+
91
+ .product-price {
92
+ font-size: 1.25rem;
93
+ font-weight: 600;
94
+ }
95
+
96
+ .add-to-cart {
97
+ background: #626344;
98
+ color: black;
99
+ border: none;
100
+ padding: 0.5rem 1rem;
101
+ border-radius: 0.375rem;
102
+ font-weight: 500;
103
+ cursor: pointer;
104
+ transition: background-color 0.2s;
105
+ }
106
+
107
+ .add-to-cart:hover {
108
+ background-color: rgba(98, 99, 68, 0.9);
109
+ }
110
+ </style>
111
+ <div class="product-card">
112
+ <img src="${image}" alt="${title}" class="product-image">
113
+ <div class="product-content">
114
+ <span class="product-category">${category}</span>
115
+ <h3 class="product-title">${title}</h3>
116
+ <p class="product-description">${description}</p>
117
+ <div class="product-footer">
118
+ <span class="product-price">$${price}</span>
119
+ <button class="add-to-cart" onclick="addToCart({
120
+ title: '${title}',
121
+ price: ${price},
122
+ image: '${image}'
123
+ })">
124
+ Add to Cart
125
+ </button>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ `;
130
+ }
131
+ }
132
+
133
+ customElements.define('custom-product', CustomProduct);
index.html CHANGED
@@ -1,19 +1,98 @@
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>Chowder | Tech That Doesn't Suck</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script>
10
+ tailwind.config = {
11
+ theme: {
12
+ extend: {
13
+ colors: {
14
+ olive: '#626344'
15
+ }
16
+ }
17
+ }
18
+ }
19
+ </script>
20
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
21
+ <script src="https://unpkg.com/feather-icons"></script>
22
+ <script src="components/navbar.js"></script>
23
+ <script src="components/product-card.js"></script>
24
+ <script src="components/footer.js"></script>
25
+ </head>
26
+ <body class="bg-black text-white font-sans antialiased">
27
+ <custom-navbar></custom-navbar>
28
+
29
+ <main class="min-h-screen grain-bg">
30
+ <!-- Hero Section -->
31
+ <section class="py-20 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
32
+ <div class="text-center space-y-6">
33
+ <h1 class="text-5xl md:text-7xl font-bold tracking-tight">Tech That Doesn't Suck</h1>
34
+ <p class="text-xl md:text-2xl text-olive max-w-3xl mx-auto">
35
+ We started in 2024 because honestly, most tech stores are boring as hell. Here's something better.
36
+ </p>
37
+ <a href="#products" class="inline-block px-8 py-3 bg-olive hover:bg-opacity-90 text-black font-medium rounded-full transition-all">
38
+ Browse Stuff
39
+ </a>
40
+ </div>
41
+ </section>
42
+
43
+ <!-- Products Grid -->
44
+ <section id="products" class="py-16 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto">
45
+ <h2 class="text-3xl font-bold mb-10 text-center">Things You Might Actually Want</h2>
46
+ <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8">
47
+ <custom-product
48
+ title="The Good Headphones"
49
+ price="199"
50
+ image="http://static.photos/technology/1200x630/25"
51
+ category="Audio">
52
+ Noise canceling so good you'll forget your coworkers exist.
53
+ </custom-product>
54
+
55
+ <custom-product
56
+ title="The Fast Charger"
57
+ price="49"
58
+ image="http://static.photos/technology/1200x630/42"
59
+ category="Accessories">
60
+ Charges your phone stupid fast. Like, really stupid fast.
61
+ </custom-product>
62
+
63
+ <custom-product
64
+ title="The Nice Keyboard"
65
+ price="149"
66
+ image="http://static.photos/technology/1200x630/13"
67
+ category="Peripherals">
68
+ Clicky, tactile, and won't make you hate typing.
69
+ </custom-product>
70
+ </div>
71
+ </section>
72
+
73
+ <!-- About Section -->
74
+ <section class="py-20 px-4 sm:px-6 lg:px-8 max-w-4xl mx-auto text-center">
75
+ <h2 class="text-3xl font-bold mb-6">Why Chowder Exists</h2>
76
+ <p class="text-lg leading-relaxed mb-8">
77
+ Look, shopping for tech usually feels like doing taxes. We're here to change that.
78
+ No jargon, no nonsense - just good products we'd actually use ourselves.
79
+ </p>
80
+ <div class="inline-flex items-center space-x-2 text-olive">
81
+ <span>Est. 2024</span>
82
+ <span>•</span>
83
+ <span>Made by humans</span>
84
+ <span>•</span>
85
+ <span>Not evil (probably)</span>
86
+ </div>
87
+ </section>
88
+ </main>
89
+
90
+ <custom-footer></custom-footer>
91
+
92
+ <script>
93
+ feather.replace();
94
+ </script>
95
+ <script src="script.js"></script>
96
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
97
+ </body>
98
+ </html>
script.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Initialize cart functionality
2
+ let cart = [];
3
+
4
+ document.addEventListener('DOMContentLoaded', () => {
5
+ // Cart count update
6
+ updateCartCount();
7
+
8
+ // Smooth scrolling for anchor links
9
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
10
+ anchor.addEventListener('click', function (e) {
11
+ e.preventDefault();
12
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
13
+ behavior: 'smooth'
14
+ });
15
+ });
16
+ });
17
+ });
18
+
19
+ function addToCart(product) {
20
+ cart.push(product);
21
+ updateCartCount();
22
+ // In a real app, you'd probably show a notification here
23
+ }
24
+
25
+ function updateCartCount() {
26
+ const cartCountElements = document.querySelectorAll('.cart-count');
27
+ cartCountElements.forEach(el => {
28
+ el.textContent = cart.length > 0 ? cart.length : '';
29
+ });
30
+ }
31
+
32
+ // Simple cart toggle (would be expanded in a real app)
33
+ function toggleCart() {
34
+ console.log("Cart would open now with", cart.length, "items");
35
+ // In reality, you'd show a modal or sidebar with cart items
36
+ }
style.css CHANGED
@@ -1,28 +1,49 @@
 
 
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
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
2
+
3
  body {
4
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
5
+ }
6
+
7
+ .grain-bg {
8
+ background:
9
+ radial-gradient(ellipse at 20% 50%, rgba(98, 99, 68, 0.15) 0%, transparent 50%),
10
+ radial-gradient(ellipse at 80% 50%, rgba(98, 99, 68, 0.15) 0%, transparent 50%),
11
+ url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E"),
12
+ #000000;
13
+ }
14
+
15
+ /* Smooth scroll behavior */
16
+ html {
17
+ scroll-behavior: smooth;
18
+ }
19
+
20
+ /* Custom selection color */
21
+ ::selection {
22
+ background: #626344;
23
+ color: white;
24
  }
25
 
26
+ /* Custom scrollbar */
27
+ ::-webkit-scrollbar {
28
+ width: 8px;
29
  }
30
 
31
+ ::-webkit-scrollbar-track {
32
+ background: #111;
 
 
 
33
  }
34
 
35
+ ::-webkit-scrollbar-thumb {
36
+ background: #626344;
37
+ border-radius: 4px;
 
 
 
38
  }
39
 
40
+ /* Animation for product cards */
41
+ @keyframes fadeIn {
42
+ from { opacity: 0; transform: translateY(10px); }
43
+ to { opacity: 1; transform: translateY(0); }
44
  }
45
+
46
+ product-card {
47
+ animation: fadeIn 0.6s ease-out forwards;
48
+ animation-delay: calc(var(--order) * 0.1s);
49
+ }