From 8e5dc3758e12457d7f58e0a974184a13df2690f2 Mon Sep 17 00:00:00 2001 From: Nicholai Date: Tue, 20 Jan 2026 09:07:41 -0700 Subject: [PATCH] refactor(hero): refine aesthetics and add GSAP animations --- package.json | 1 + pnpm-lock.yaml | 8 +++ src/components/sections/Hero.astro | 104 ++++++++++++++++++----------- 3 files changed, 74 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index d6aa0ba..3b2c81e 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "astro": "^5.16.4", "dompurify": "^3.3.1", "framer-motion": "^12.26.2", + "gsap": "^3.14.2", "lunr": "^2.3.9", "marked": "^17.0.1", "react": "^19.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03519a2..987ffc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: framer-motion: specifier: ^12.26.2 version: 12.26.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + gsap: + specifier: ^3.14.2 + version: 3.14.2 lunr: specifier: ^2.3.9 version: 2.3.9 @@ -1994,6 +1997,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gsap@3.14.2: + resolution: {integrity: sha512-P8/mMxVLU7o4+55+1TCnQrPmgjPKnwkzkXOK1asnR9Jg2lna4tEY5qBJjMmAaOBDDZWtlRjBXjLa0w53G/uBLA==} + h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} @@ -5035,6 +5041,8 @@ snapshots: graceful-fs@4.2.11: {} + gsap@3.14.2: {} + h3@1.15.4: dependencies: cookie-es: 1.2.2 diff --git a/src/components/sections/Hero.astro b/src/components/sections/Hero.astro index 24592b2..f6640c2 100644 --- a/src/components/sections/Hero.astro +++ b/src/components/sections/Hero.astro @@ -15,7 +15,7 @@ const { headlineLine1, headlineLine2, portfolioYear, location, locationLabel, bi ---
-
+
@@ -26,7 +26,7 @@ const { headlineLine1, headlineLine2, portfolioYear, location, locationLabel, bi widths={[640, 1024, 1600]} sizes="(max-width: 768px) 100vw, 50vw" alt="Nicholai Vogel portrait" - class="w-full h-full object-cover object-center opacity-0 mix-blend-luminosity transition-opacity duration-[2500ms] ease-out delay-700 intro-element" + class="w-full h-full object-cover object-center opacity-0 mix-blend-luminosity intro-portrait" id="hero-portrait" loading="eager" decoding="sync" @@ -35,7 +35,7 @@ const { headlineLine1, headlineLine2, portfolioYear, location, locationLabel, bi
-