Skip to content

Commit 11614a4

Browse files
committed
add email subscribe
1 parent 0c77752 commit 11614a4

3 files changed

Lines changed: 190 additions & 34 deletions

File tree

index.html

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>ZGM Firmware — Zephyr Gaming Mouse</title>
77
<meta name="description" content="ZGM is an open-source, wireless gaming mouse firmware built on Zephyr RTOS. Developed by Keychron for ultra-low power, high-performance gaming.">
8-
<link rel="icon" type="image/svg+xml" href="favicon.svg">
8+
<link rel="icon" type="image/svg+xml" href="doc/image assets/favicon.svg">
9+
<script async src="https://f.convertkit.com/ckjs/ck.5.js"></script>
910
<link rel="stylesheet" href="styles.css">
1011
<link rel="preconnect" href="https://fonts.googleapis.com">
1112
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
@@ -154,14 +155,43 @@ <h3>Built by Keychron</h3>
154155
</div>
155156
</section>
156157

157-
<!-- Call to Action -->
158+
<!-- Subscribe -->
158159
<section class="cta">
159160
<div class="container cta-container">
160-
<h2>Follow the development</h2>
161-
<p>ZGM is in early development. Star the repo, read the roadmap, or join the community to shape the future of open-source gaming mice.</p>
162-
<div class="cta-actions">
163-
<a href="https://github.com/Keychron/zgm" class="btn btn-primary" target="_blank" rel="noopener">View on GitHub</a>
164-
<a href="https://discord.com/invite/HAYbRrTsjN" class="btn btn-outline" target="_blank" rel="noopener">Join Discord</a>
161+
<div class="hero-subscribe hero-subscribe-centered">
162+
<div class="hero-subscribe-copy">
163+
<p class="hero-subscribe-eyebrow">Stay In The Loop</p>
164+
<h2>Get ZGM updates</h2>
165+
<p class="hero-subscribe-text">Product news and release updates.</p>
166+
</div>
167+
<form
168+
action="https://app.kit.com/forms/9315299/subscriptions"
169+
class="subscribe-form subscribe-form-centered seva-form formkit-form"
170+
method="post"
171+
data-sv-form="9315299"
172+
data-uid="ba32ad0d24"
173+
data-format="inline"
174+
data-version="5"
175+
data-options="{&quot;settings&quot;:{&quot;after_subscribe&quot;:{&quot;action&quot;:&quot;message&quot;,&quot;success_message&quot;:&quot;Success! Now check your email to confirm your subscription.&quot;,&quot;redirect_url&quot;:&quot;&quot;},&quot;analytics&quot;:{&quot;google&quot;:null,&quot;fathom&quot;:null,&quot;facebook&quot;:null,&quot;segment&quot;:null,&quot;pinterest&quot;:null,&quot;sparkloop&quot;:null,&quot;googletagmanager&quot;:null},&quot;modal&quot;:{&quot;trigger&quot;:&quot;timer&quot;,&quot;scroll_percentage&quot;:null,&quot;timer&quot;:5,&quot;devices&quot;:&quot;all&quot;,&quot;show_once_every&quot;:15},&quot;powered_by&quot;:{&quot;show&quot;:false,&quot;url&quot;:&quot;https://kit.com/features/forms?utm_campaign=poweredby&amp;utm_content=form&amp;utm_medium=referral&amp;utm_source=dynamic&quot;},&quot;recaptcha&quot;:{&quot;enabled&quot;:false},&quot;return_visitor&quot;:{&quot;action&quot;:&quot;show&quot;,&quot;custom_content&quot;:&quot;&quot;},&quot;slide_in&quot;:{&quot;display_in&quot;:&quot;bottom_right&quot;,&quot;trigger&quot;:&quot;timer&quot;,&quot;scroll_percentage&quot;:null,&quot;timer&quot;:5,&quot;devices&quot;:&quot;all&quot;,&quot;show_once_every&quot;:15},&quot;sticky_bar&quot;:{&quot;display_in&quot;:&quot;top&quot;,&quot;trigger&quot;:&quot;timer&quot;,&quot;scroll_percentage&quot;:null,&quot;timer&quot;:5,&quot;devices&quot;:&quot;all&quot;,&quot;show_once_every&quot;:15}},&quot;version&quot;:&quot;5&quot;}"
176+
min-width="400 500 600 700 800"
177+
>
178+
<ul class="formkit-alert formkit-alert-error" data-element="errors" data-group="alert"></ul>
179+
<label class="sr-only" for="email">Email address</label>
180+
<input
181+
id="email"
182+
name="email_address"
183+
class="formkit-input"
184+
type="email"
185+
placeholder="Enter your email"
186+
autocomplete="email"
187+
aria-label="Email Address"
188+
required
189+
>
190+
<button type="submit" class="btn btn-primary formkit-submit" data-element="submit">
191+
<span>Subscribe</span>
192+
</button>
193+
</form>
194+
<p class="hero-subscribe-note">No spam. Unsubscribe anytime.</p>
165195
</div>
166196
</div>
167197
</section>

styles.css

Lines changed: 153 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ a {
175175

176176
/* ===== Hero ===== */
177177
.hero {
178-
padding: 160px 0 100px;
178+
padding: 160px 0 72px;
179179
position: relative;
180180
overflow: hidden;
181181
}
@@ -233,6 +233,140 @@ a {
233233
flex-wrap: wrap;
234234
}
235235

236+
.hero-subscribe {
237+
margin-top: 28px;
238+
padding: 22px;
239+
border-radius: 18px;
240+
background:
241+
linear-gradient(180deg, color-mix(in srgb, var(--bg-card) 92%, transparent), color-mix(in srgb, var(--bg-secondary) 96%, transparent));
242+
border: 1px solid color-mix(in srgb, var(--accent) 18%, var(--border));
243+
box-shadow: 0 18px 44px color-mix(in srgb, var(--accent) 10%, transparent);
244+
}
245+
246+
.hero-subscribe-copy h2 {
247+
font-size: 1.2rem;
248+
font-weight: 700;
249+
margin-bottom: 6px;
250+
}
251+
252+
.hero-subscribe-eyebrow {
253+
font-size: 0.78rem;
254+
font-weight: 700;
255+
letter-spacing: 0.08em;
256+
text-transform: uppercase;
257+
color: var(--accent);
258+
margin-bottom: 8px;
259+
}
260+
261+
.hero-subscribe-text {
262+
color: var(--text-muted);
263+
font-size: 0.95rem;
264+
line-height: 1.65;
265+
}
266+
267+
.subscribe-form {
268+
display: flex;
269+
gap: 12px;
270+
margin-top: 18px;
271+
align-items: stretch;
272+
flex-wrap: wrap;
273+
}
274+
275+
.subscribe-form input {
276+
flex: 1;
277+
min-width: 0;
278+
padding: 12px 16px;
279+
border-radius: 10px;
280+
border: 1px solid var(--border);
281+
background: color-mix(in srgb, var(--bg) 82%, transparent);
282+
color: var(--text);
283+
font: inherit;
284+
transition: border-color var(--transition), box-shadow var(--transition), background var(--transition);
285+
}
286+
287+
.subscribe-form input::placeholder {
288+
color: var(--text-muted);
289+
}
290+
291+
.subscribe-form input:focus {
292+
outline: none;
293+
border-color: color-mix(in srgb, var(--accent) 70%, white 10%);
294+
box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 16%, transparent);
295+
}
296+
297+
.hero-subscribe-note {
298+
margin-top: 12px;
299+
font-size: 0.82rem;
300+
color: var(--text-muted);
301+
}
302+
303+
.formkit-alert {
304+
width: 100%;
305+
list-style: none;
306+
margin: 0 0 10px;
307+
padding: 10px 12px;
308+
border-radius: 10px;
309+
border: 1px solid transparent;
310+
font-size: 0.9rem;
311+
}
312+
313+
.formkit-alert:empty {
314+
display: none;
315+
}
316+
317+
.formkit-alert-error {
318+
color: #fda4af;
319+
background: rgba(127, 29, 29, 0.18);
320+
border-color: rgba(248, 113, 113, 0.28);
321+
}
322+
323+
.formkit-alert-success {
324+
color: #86efac;
325+
background: rgba(20, 83, 45, 0.2);
326+
border-color: rgba(74, 222, 128, 0.28);
327+
}
328+
329+
.formkit-submit {
330+
min-width: 210px;
331+
}
332+
333+
.formkit-submit span {
334+
display: inline-block;
335+
}
336+
337+
.hero-subscribe-centered {
338+
max-width: 760px;
339+
margin: 0 auto;
340+
text-align: center;
341+
}
342+
343+
.hero-subscribe-centered .hero-subscribe-text,
344+
.hero-subscribe-centered .hero-subscribe-note {
345+
max-width: 640px;
346+
margin-left: auto;
347+
margin-right: auto;
348+
}
349+
350+
.subscribe-form-centered {
351+
justify-content: center;
352+
}
353+
354+
.subscribe-form-centered input {
355+
max-width: 420px;
356+
}
357+
358+
.sr-only {
359+
position: absolute;
360+
width: 1px;
361+
height: 1px;
362+
padding: 0;
363+
margin: -1px;
364+
overflow: hidden;
365+
clip: rect(0, 0, 0, 0);
366+
white-space: nowrap;
367+
border: 0;
368+
}
369+
236370
.hero-visual {
237371
flex: 0 0 auto;
238372
position: relative;
@@ -306,7 +440,7 @@ a {
306440

307441
/* ===== Features ===== */
308442
.features {
309-
padding: 80px 0 100px;
443+
padding: 48px 0 56px;
310444
}
311445

312446
.features-grid {
@@ -355,40 +489,20 @@ a {
355489

356490
/* ===== CTA Section ===== */
357491
.cta {
358-
padding: 80px 0;
492+
padding: 40px 0 32px;
359493
}
360494

361495
.cta-container {
362-
text-align: center;
363-
padding: 64px 40px;
496+
padding: 40px 40px;
364497
border-radius: 20px;
365498
background: var(--bg-secondary);
366499
border: 1px solid var(--border);
367500
}
368501

369-
.cta h2 {
370-
font-size: 2rem;
371-
font-weight: 800;
372-
margin-bottom: 12px;
373-
}
374-
375-
.cta p {
376-
color: var(--text-muted);
377-
font-size: 1.05rem;
378-
margin-bottom: 32px;
379-
}
380-
381-
.cta-actions {
382-
display: flex;
383-
gap: 14px;
384-
justify-content: center;
385-
flex-wrap: wrap;
386-
}
387-
388502
/* ===== Footer ===== */
389503
.footer {
390504
border-top: 1px solid var(--border);
391-
padding: 60px 0 40px;
505+
padding: 40px 0 32px;
392506
}
393507

394508
.footer-grid {
@@ -486,7 +600,7 @@ a {
486600
}
487601

488602
.hero {
489-
padding: 120px 0 60px;
603+
padding: 120px 0 48px;
490604
}
491605

492606
.hero h1 {
@@ -497,6 +611,18 @@ a {
497611
font-size: 1rem;
498612
}
499613

614+
.subscribe-form {
615+
flex-direction: column;
616+
}
617+
618+
.subscribe-form .btn {
619+
width: 100%;
620+
}
621+
622+
.subscribe-form-centered input {
623+
max-width: none;
624+
}
625+
500626
.features-grid {
501627
grid-template-columns: 1fr;
502628
}
@@ -507,6 +633,6 @@ a {
507633
}
508634

509635
.cta-container {
510-
padding: 40px 24px;
636+
padding: 28px 20px;
511637
}
512638
}

0 commit comments

Comments
 (0)