Onboarding / Deployment Scripts / Marketing updates

This commit is contained in:
2026-05-11 21:02:24 +12:00
parent a90dfb7c66
commit 955a563d14
110 changed files with 9803 additions and 937 deletions
+133
View File
@@ -0,0 +1,133 @@
<script lang="ts">
import { createEventDispatcher } from 'svelte';
import Icon from '$lib/components/Icon.svelte';
export let email = '';
const dispatch = createEventDispatcher<{ logout: void }>();
let loggingOut = false;
async function logout() {
loggingOut = true;
try {
const token = window.localStorage.getItem('gw_onboarding_session') ?? '';
if (token) {
await fetch('/api/auth/logout', {
method: 'POST',
headers: { Authorization: `Bearer ${token}` },
}).catch(() => { /* ignore network errors on logout */ });
}
} finally {
try { window.localStorage.removeItem('gw_onboarding_session'); } catch { /* ignore */ }
loggingOut = false;
dispatch('logout');
}
}
</script>
<footer class="ob-footer">
<div class="ob-footer-inner">
<div class="ob-footer-identity">
<Icon name="fas fa-circle-check" />
<span>Signed in as <strong>{email}</strong></span>
</div>
<button class="ob-footer-logout" on:click={logout} disabled={loggingOut}>
<Icon name="fas fa-right-from-bracket" />
{loggingOut ? 'Signing out…' : 'Sign out'}
</button>
</div>
<div class="ob-footer-copyright">
<a href="https://goodwalk.co.nz">goodwalk.co.nz</a>
<span>&middot;</span>
<span>&copy; {new Date().getFullYear()} Goodwalk. All rights reserved.</span>
</div>
</footer>
<style>
.ob-footer {
background: #213021;
margin-top: auto;
}
.ob-footer-inner {
max-width: 1120px;
margin: 0 auto;
padding: 0 28px;
height: 52px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.ob-footer-identity {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
color: rgba(255, 255, 255, 0.6);
}
.ob-footer-identity strong {
color: rgba(255, 255, 255, 0.9);
font-weight: 600;
}
.ob-footer-logout {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 7px 14px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.15);
background: transparent;
font-family: var(--font-head);
font-size: 12px;
font-weight: 700;
color: rgba(255, 255, 255, 0.7);
cursor: pointer;
transition: background 0.15s, color 0.15s;
}
.ob-footer-logout:hover {
background: rgba(255, 255, 255, 0.1);
color: #fff;
}
.ob-footer-copyright {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 10px 28px;
border-top: 1px solid rgba(255, 255, 255, 0.06);
font-size: 11px;
color: rgba(255, 255, 255, 0.25);
flex-wrap: wrap;
}
.ob-footer-copyright a {
color: rgba(255, 255, 255, 0.35);
text-decoration: none;
font-weight: 600;
}
.ob-footer-copyright a:hover {
color: rgba(255, 255, 255, 0.6);
}
@media (max-width: 768px) {
.ob-footer-inner {
padding: 0 18px;
}
.ob-footer-identity span {
display: none;
}
.ob-footer-copyright {
padding: 10px 18px;
}
}
</style>