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:
cesnimda
2026-07-04 01:20:46 +02:00
parent 2184a1892f
commit 1fce1b3cec
45 changed files with 1891 additions and 27 deletions
+15
View File
@@ -1,6 +1,21 @@
import type { Dictionary } from './dictionary';
export const en: Dictionary = {
hero: {
viewProjects: 'View projects',
},
home: {
skillsLabel: 'Skills',
skillsHeading: 'What I work with',
skillsIntro: 'A practical profile: business value, maintainability and dependable delivery.',
projectsLabel: 'Projects',
projectsHeading: 'Built, shipped and running',
experienceLabel: 'Experience',
experienceHeading: 'Where Ive worked',
aboutLabel: 'About',
earlierRoles: 'Earlier & alongside',
present: 'Present',
},
nav: {
home: 'Home',
projects: 'Projects',
+15
View File
@@ -12,6 +12,21 @@ import type { Dictionary } from './dictionary';
*/
export const no: Dictionary = {
hero: {
viewProjects: 'Se prosjekter',
},
home: {
skillsLabel: 'Kompetanse',
skillsHeading: 'Det jeg jobber med',
skillsIntro: 'En praktisk profil: forretningsverdi, vedlikeholdbarhet og pålitelig leveranse.',
projectsLabel: 'Prosjekter',
projectsHeading: 'Bygget, levert og i drift',
experienceLabel: 'Erfaring',
experienceHeading: 'Hvor jeg har jobbet',
aboutLabel: 'Om meg',
earlierRoles: 'Tidligere og ved siden av',
present: 'nå',
},
nav: {
home: 'Hjem',
projects: 'Prosjekter',
+15
View File
@@ -5,6 +5,21 @@
*/
export interface Dictionary {
hero: {
viewProjects: string;
};
home: {
skillsLabel: string;
skillsHeading: string;
skillsIntro: string;
projectsLabel: string;
projectsHeading: string;
experienceLabel: string;
experienceHeading: string;
aboutLabel: string;
earlierRoles: string;
present: string;
};
nav: {
home: string;
projects: string;