Add dedicated edition pages (server, workstation, cloud)

- Add /server, /workstation, /cloud routes with per-page SEO titles
- Extract shared nav, footer, and waitlist form into partials
- Nav links to edition pages with active-state highlighting; swap About/Security order
- Waitlist form pre-checks the current edition and adds a Cloud option
- Add page-hero variant, edition switcher, and active-nav styles
- Responsive fixes: nav wraps at 540px, waitlist checkboxes wrap on narrow screens
This commit is contained in:
Blake Ridgway
2026-08-22 22:02:34 -05:00
parent 8ba41f7e3c
commit b8df82e383
9 changed files with 816 additions and 119 deletions

View File

@@ -0,0 +1,36 @@
{{define "footer"}}
<footer class="footer">
<div class="footer-grid">
<div class="footer-col">
<a href="/" class="footer-logo">Arcline Project</a>
<p>An open-source operating system for people who defend infrastructure. Hardened Debian base. Pre-configured security stack. Zero telemetry. Defense-ready.</p>
</div>
<div class="footer-col">
<h4>Editions</h4>
<ul>
<li><a href="/server">Server</a></li>
<li><a href="/workstation">Workstation</a></li>
<li><a href="/cloud">Cloud</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Project</h4>
<ul>
<li><a href="/#about">About</a></li>
<li><a href="/#contribute">Contribute</a></li>
<li><a href="https://git.arcline.it">Source Code</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Connect</h4>
<ul>
<li><a href="https://arcline.it">Arcline IT</a></li>
<li><a href="https://git.arcline.it">Git</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2026 Arcline IT LLC. GPL Licensed. No telemetry. No tracking.</p>
</div>
</footer>
{{end}}

View File

@@ -0,0 +1,47 @@
{{define "nav"}}
<a href="#main" class="skip-link">Skip to main content</a>
<header class="nav">
<div class="nav-inner">
<a href="/" class="logo">
<svg class="logo-icon" width="28" height="28" viewBox="0 0 32 32" fill="none">
<rect width="32" height="32" fill="#0b0c0e"/>
<path d="M5 27L16 5L27 27" fill="none" stroke="#f59e0b" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9 20H23" fill="none" stroke="#f59e0b" stroke-width="2.5" stroke-linecap="round"/>
</svg>
<span>Arcline Project</span>
</a>
<nav>
<a href="/server"{{if eq .Active "server"}} class="nav-active" aria-current="page"{{end}}>Server</a>
<a href="/workstation"{{if eq .Active "workstation"}} class="nav-active" aria-current="page"{{end}}>Workstation</a>
<a href="/cloud"{{if eq .Active "cloud"}} class="nav-active" aria-current="page"{{end}}>Cloud</a>
<a href="/#about">About</a>
<a href="/#security">Security</a>
<a href="/#contribute">Contribute</a>
<button
type="button"
data-theme-toggle
class="theme-toggle"
aria-label="Toggle theme"
title="Toggle light / dark mode"
>
<svg class="theme-icon theme-icon-light" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="5"/>
<line x1="12" y1="1" x2="12" y2="3"/>
<line x1="12" y1="21" x2="12" y2="23"/>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
<line x1="1" y1="12" x2="3" y2="12"/>
<line x1="21" y1="12" x2="23" y2="12"/>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
</svg>
<svg class="theme-icon theme-icon-dark" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/>
</svg>
</button>
<a href="#get-started" class="nav-cta">Get Started</a>
</nav>
</div>
</header>
{{end}}

View File

@@ -0,0 +1,34 @@
{{define "waitlistForm"}}
<form
hx-post="/partials/waitlist"
hx-target="#waitlist-result"
hx-swap="outerHTML"
class="waitlist-form"
>
<fieldset class="edition-checkboxes">
<legend>I'm interested in:</legend>
<label class="edition-checkbox">
<input type="checkbox" name="edition" value="server"{{if eq .Edition "server"}} checked{{end}}>
<span>Server</span>
</label>
<label class="edition-checkbox">
<input type="checkbox" name="edition" value="workstation"{{if eq .Edition "workstation"}} checked{{end}}>
<span>Workstation</span>
</label>
<label class="edition-checkbox">
<input type="checkbox" name="edition" value="cloud"{{if eq .Edition "cloud"}} checked{{end}}>
<span>Cloud</span>
</label>
</fieldset>
<input
type="email"
name="email"
placeholder="you@example.com"
required
class="input"
>
<button type="submit" class="btn">Get Early Access</button>
</form>
<div id="waitlist-result"></div>
<p class="waitlist-note">No spam. No tracking. We'll only email you when there's something to try.</p>
{{end}}