feat: core layout, UI atoms, homepage + behaviour modules
- UI atoms: Chip, Button, SplitCvButton, LangSwitch, ThemeToggle, Card, SectionLabel, TraceMotif, FramedImage - core: Base/Seo/Header/MobileNav/Footer/HintBar/SkipLink/ThemeScript - homepage sections: Hero, ProofStrip, SkillsGrid, ProjectCards, ExperienceTimeline, AboutTeaser, ContactBand + Homepage composition (EN/NO) - behaviour modules: theme, nav (overlay/hint/copy/header), observer (reveal/spy), lightbox, form — progressive enhancement, fail-silent - SEO head component: meta, hreflang from slug map, JSON-LD, OG references - move content data to src/data (avoid Astro reserved content-collection folder) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
---
|
||||
import type { ProfileVM } from '@lib/content';
|
||||
|
||||
interface Props {
|
||||
profile: ProfileVM;
|
||||
}
|
||||
const { profile } = Astro.props;
|
||||
---
|
||||
|
||||
<section class="mx-auto max-w-[--content-max] px-6" data-reveal>
|
||||
<ul class="grid grid-cols-2 gap-4 lg:grid-cols-4">
|
||||
{
|
||||
profile.proof.map((tile) => (
|
||||
<li class="rounded-md border border-line bg-surface-1 p-5">
|
||||
<p class="font-display text-[22px] font-semibold leading-tight text-ink">{tile.stat}</p>
|
||||
<p class="mt-2 font-mono text-mono-label font-medium uppercase tracking-[0.08em] text-ink-faint">
|
||||
{tile.label}
|
||||
</p>
|
||||
</li>
|
||||
))
|
||||
}
|
||||
</ul>
|
||||
</section>
|
||||
Reference in New Issue
Block a user