facelift: the scroll story - bento capabilities, dossier cards, series badges, GitOps receipt
02 Capabilities becomes a 4-col bento (Edge AI 2x2 flagship w/ magenta corner radial, Platform wide, magenta-flavoured security tile, Observability row-completer) driven by span/flavor fields in skills.ts. 03 Selected Work becomes dossier cards: house-style SVG thumbnails (per-project motif via DossierThumb), DOSSIER/00N corner tags, 'the argument' line from the outcome field, chip tags, mono meta footer. 04 Writing cards gain the security-series badge (data/series.ts) and sit three across. Section numbers glow cyan; a circuit divider (gradient hairlines + two diamonds) closes the hero. Footer opens with the GitOps receipt - git sha + build date baked at build time via lib/build-info.ts, zero runtime calls.
This commit is contained in:
@@ -1,12 +1,23 @@
|
||||
---
|
||||
import { site } from "../data/site";
|
||||
import { socials } from "../data/socials";
|
||||
import { buildInfo } from "../lib/build-info";
|
||||
const year = 2026; // build-stamped; bump via the build, not a runtime Date()
|
||||
const linkedinHref = socials.find((s) => s.label === "LinkedIn")?.href;
|
||||
const emailHref = socials.find((s) => s.label === "Email")?.href;
|
||||
---
|
||||
|
||||
<footer class="footer">
|
||||
<!-- the GitOps receipt — every value baked at build time, zero runtime calls -->
|
||||
<div class="container">
|
||||
<p class="footer__receipt mono" data-reveal>
|
||||
<span class="footer__receipt-label">RECEIPT</span>
|
||||
<span class="footer__rdot">·</span> HEAD <span class="footer__rval">{buildInfo.sha}</span>
|
||||
<span class="footer__rdot">·</span> built <span class="footer__rval">{buildInfo.builtAt}</span>
|
||||
<span class="footer__rdot">·</span> reconciled by <span class="footer__rval">ArgoCD</span>
|
||||
<span class="footer__rdot">·</span> <span class="footer__rok">✓ Synced · Healthy</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="container footer__inner">
|
||||
<div>
|
||||
<p class="mono footer__name">{site.name}</p>
|
||||
@@ -62,6 +73,37 @@ const emailHref = socials.find((s) => s.label === "Email")?.href;
|
||||
margin-top: var(--space-8);
|
||||
color: var(--text-dim);
|
||||
}
|
||||
.footer__receipt {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
font-size: 11px;
|
||||
letter-spacing: 0.04em;
|
||||
color: var(--text-faint);
|
||||
border: 1px solid var(--border-accent);
|
||||
border-radius: var(--radius-btn);
|
||||
background: var(--panel);
|
||||
backdrop-filter: var(--panel-blur);
|
||||
-webkit-backdrop-filter: var(--panel-blur);
|
||||
padding: 10px 14px;
|
||||
margin-bottom: var(--space-6);
|
||||
width: fit-content;
|
||||
max-width: 100%;
|
||||
}
|
||||
.footer__receipt-label {
|
||||
color: var(--accent);
|
||||
letter-spacing: 0.14em;
|
||||
}
|
||||
.footer__rdot {
|
||||
opacity: 0.5;
|
||||
}
|
||||
.footer__rval {
|
||||
color: var(--text-dim);
|
||||
}
|
||||
.footer__rok {
|
||||
color: var(--accent);
|
||||
}
|
||||
.footer__inner {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
Reference in New Issue
Block a user