From f4d205be12f5bd9b737b183228b5a660d8734fc1 Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 14:28:51 -0700 Subject: [PATCH 1/6] Extract page into 13 reusable components with robustified scroll reveal - Extract TopNavigation, FloatingBottomNav, HeroSection, SectionHeader, StepCard, TerminalQuoteWindow, SkillCard, ProofCard, FloatingGlowOrb, CTAButton, FooterHero, SocialIconLink from monolithic page.tsx - Upgrade SkillCard to use next/image with Unsplash photos - Harden ScrollReveal with try/catch, IO feature detection, retry logic - Add reveal-delay and float animation CSS utilities - Update metadata and fonts in layout.tsx - Configure next/image for Unsplash remote patterns - page.tsx reduced from 696 to 230 lines Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 3 + next.config.ts | 9 +- src/app/globals.css | 206 ++++++++++++++-- src/app/layout.tsx | 32 ++- src/app/page.tsx | 318 ++++++++++++++++++++----- src/components/CTAButton.tsx | 10 + src/components/CopyButton.tsx | 66 +++++ src/components/FloatingBottomNav.tsx | 54 +++++ src/components/FloatingGlowOrb.tsx | 20 ++ src/components/FooterHero.tsx | 35 +++ src/components/HeroSection.tsx | 61 +++++ src/components/NewsletterForm.tsx | 62 +++++ src/components/ProofCard.tsx | 50 ++++ src/components/ScrollReveal.tsx | 67 ++++++ src/components/SectionHeader.tsx | 13 + src/components/SkillCard.tsx | 56 +++++ src/components/SocialIconLink.tsx | 21 ++ src/components/StepCard.tsx | 24 ++ src/components/TerminalQuoteWindow.tsx | 56 +++++ src/components/TopNavigation.tsx | 65 +++++ 20 files changed, 1148 insertions(+), 80 deletions(-) create mode 100644 src/components/CTAButton.tsx create mode 100644 src/components/CopyButton.tsx create mode 100644 src/components/FloatingBottomNav.tsx create mode 100644 src/components/FloatingGlowOrb.tsx create mode 100644 src/components/FooterHero.tsx create mode 100644 src/components/HeroSection.tsx create mode 100644 src/components/NewsletterForm.tsx create mode 100644 src/components/ProofCard.tsx create mode 100644 src/components/ScrollReveal.tsx create mode 100644 src/components/SectionHeader.tsx create mode 100644 src/components/SkillCard.tsx create mode 100644 src/components/SocialIconLink.tsx create mode 100644 src/components/StepCard.tsx create mode 100644 src/components/TerminalQuoteWindow.tsx create mode 100644 src/components/TopNavigation.tsx diff --git a/.gitignore b/.gitignore index 5ef6a52..92858ee 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,9 @@ yarn-error.log* # vercel .vercel +# superdesign +.superdesign + # typescript *.tsbuildinfo next-env.d.ts diff --git a/next.config.ts b/next.config.ts index e9ffa30..a9194aa 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,14 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "images.unsplash.com", + }, + ], + }, }; export default nextConfig; diff --git a/src/app/globals.css b/src/app/globals.css index a2dc41e..5c4c159 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,26 +1,200 @@ +@import url("https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700,900&display=swap"); @import "tailwindcss"; -:root { - --background: #ffffff; - --foreground: #171717; +@theme inline { + --color-c47-bg: #0c0a09; + --color-c47-accent: #FF6B50; + --color-c47-accent-dim: rgba(255, 107, 80, 0.15); + --color-c47-accent-glow: rgba(255, 107, 80, 0.4); + --color-c47-muted: #78716c; + --color-c47-border: #27272a; + --color-c47-card: #111111; + --color-c47-text: #ebebeb; + + --font-sans: "Satoshi", "Inter", ui-sans-serif, system-ui, sans-serif; + --font-mono: "JetBrains Mono", ui-monospace, monospace; } -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); +/* ── Base ────────────────────────────────────────── */ + +html { + scroll-behavior: smooth; +} + +body { + background: var(--color-c47-bg); + color: var(--color-c47-text); + font-family: var(--font-sans); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +::selection { + background: var(--color-c47-accent); + color: #fff; +} + +/* ── Scroll Reveal ───────────────────────────────── */ + +.reveal { + opacity: 0; + transform: translateY(32px); + transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), + transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +.reveal.visible { + opacity: 1; + transform: translateY(0); +} + +/* ── Terminal Line Stagger ───────────────────────── */ + +.terminal-line { + opacity: 0; + transform: translateX(-8px); + transition: opacity 0.5s ease-out, transform 0.5s ease-out; +} + +.terminal-line.visible { + opacity: 1; + transform: translateX(0); +} + +.terminal-line:nth-child(1) { transition-delay: 0s; } +.terminal-line:nth-child(2) { transition-delay: 0.15s; } +.terminal-line:nth-child(3) { transition-delay: 0.3s; } +.terminal-line:nth-child(4) { transition-delay: 0.45s; } +.terminal-line:nth-child(5) { transition-delay: 0.6s; } + +/* ── Card Shimmer ────────────────────────────────── */ + +.card-shimmer { + position: relative; + overflow: hidden; +} + +.card-shimmer::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient( + 105deg, + transparent 40%, + rgba(255, 255, 255, 0.03) 45%, + rgba(255, 255, 255, 0.05) 50%, + rgba(255, 255, 255, 0.03) 55%, + transparent 60% + ); + transform: translateX(-100%); + transition: transform 0.6s ease; + pointer-events: none; + border-radius: inherit; +} + +.card-shimmer:hover::after { + transform: translateX(100%); +} + +/* ── CTA Glow Pulse ──────────────────────────────── */ + +@keyframes glow-pulse { + 0%, 100% { + box-shadow: 0 0 20px rgba(255, 107, 80, 0.3), + 0 0 40px rgba(255, 107, 80, 0.1); + } + 50% { + box-shadow: 0 0 30px rgba(255, 107, 80, 0.5), + 0 0 60px rgba(255, 107, 80, 0.2); } } -body { - background: var(--background); - color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; +.cta-glow { + animation: glow-pulse 3s ease-in-out infinite; +} + +/* ── Step Number Bounce ──────────────────────────── */ + +.step-item:hover .step-number { + transform: scale(1.1); + color: var(--color-c47-accent); +} + +.step-number { + transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), + color 0.3s ease; +} + +/* ── Reveal Delay Stagger ──────────────────────── */ + +.reveal-delay-1 { transition-delay: 0.1s; } +.reveal-delay-2 { transition-delay: 0.2s; } +.reveal-delay-3 { transition-delay: 0.3s; } +.reveal-delay-4 { transition-delay: 0.4s; } + +/* ── Float Animation ───────────────────────────── */ + +@keyframes float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-8px); } +} + +.animate-float { + animation: float 4s ease-in-out infinite; +} + +.animate-float-delayed { + animation: float 4.5s ease-in-out 0.5s infinite; +} + +.animate-float-delayed-2 { + animation: float 5s ease-in-out 1s infinite; +} + +/* ── Newsletter Underline ────────────────────────── */ + +.newsletter-input { + background-image: linear-gradient( + to right, + var(--color-c47-accent), + #c94430 + ); + background-size: 0% 2px; + background-repeat: no-repeat; + background-position: left bottom; + transition: background-size 0.4s ease; +} + +.newsletter-input:focus { + background-size: 100% 2px; +} + +/* ── Gradient Border Glow ────────────────────────── */ + +.gradient-border-glow { + position: relative; +} + +.gradient-border-glow::before { + content: ""; + position: absolute; + inset: -1px; + border-radius: inherit; + background: linear-gradient(135deg, var(--color-c47-accent), #c94430, var(--color-c47-accent)); + opacity: 0; + transition: opacity 0.4s ease; + z-index: -1; +} + +.gradient-border-glow:hover::before { + opacity: 1; +} + +/* ── Gradient text helper ────────────────────────── */ + +.text-gradient { + background: linear-gradient(135deg, var(--color-c47-accent), #c94430); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 976eb90..45ee49c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,20 +1,36 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Inter, JetBrains_Mono } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", +const inter = Inter({ subsets: ["latin"], + variable: "--font-inter", }); -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", +const jetbrainsMono = JetBrains_Mono({ subsets: ["latin"], + variable: "--font-jetbrains-mono", }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "channel47 — Turn Reddit threads and Amazon reviews into creative strategy", + description: + "A free Claude Code plugin that extracts real customer language from public data and turns it into personas and ad angles you can use today.", + metadataBase: new URL("https://channel47.dev"), + openGraph: { + title: "channel47 — Turn Reddit threads and Amazon reviews into creative strategy", + description: + "A free Claude Code plugin that extracts real customer language from public data and turns it into personas and ad angles you can use today.", + url: "https://channel47.dev", + siteName: "channel47", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "channel47", + description: + "A free Claude Code plugin that extracts real customer language from public data and turns it into personas and ad angles you can use today.", + }, }; export default function RootLayout({ @@ -25,7 +41,7 @@ export default function RootLayout({ return ( {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index 3f36f7c..0bbea6c 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,65 +1,273 @@ -import Image from "next/image"; +import ScrollReveal from "@/components/ScrollReveal"; +import TopNavigation from "@/components/TopNavigation"; +import FloatingBottomNav from "@/components/FloatingBottomNav"; +import HeroSection from "@/components/HeroSection"; +import SectionHeader from "@/components/SectionHeader"; +import StepCard from "@/components/StepCard"; +import TerminalQuoteWindow from "@/components/TerminalQuoteWindow"; +import SkillCard from "@/components/SkillCard"; +import ProofCard from "@/components/ProofCard"; +import FloatingGlowOrb from "@/components/FloatingGlowOrb"; +import CTAButton from "@/components/CTAButton"; +import NewsletterForm from "@/components/NewsletterForm"; +import FooterHero from "@/components/FooterHero"; +import SocialIconLink from "@/components/SocialIconLink"; export default function Home() { return ( -
-
- Next.js logo -
-

- To get started, edit the page.tsx file. -

-

- Looking for a starting point or more instructions? Head over to{" "} - + + + + +

+ {/* ── Hero ──────────────────────────────────────────── */} + + + {/* ── How It Works + Terminal Preview ────────────────── */} +
+ + +

+ One command.{" "} + + 30 seconds. Real customer language ready to deploy. + +

+ +
+ + {/* Terminal preview card */} +
- Learning - {" "} - center. -

-
- +
+ + {/* ── Skills Gallery ────────────────────────────────── */} +
+
+

+ The Skills +

+ + Claude Code Plugin + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + {/* ── Setup Section ($750) ──────────────────────────── */} +
+
- Vercel logomark + +
+
+
+ + For Teams + +
+ +
+
+

+ Want this running for your team{" "} + by end of day? +

+

+ I will install the plugin, configure it for your accounts, + and walk your team through the first research run. You will + have personas and angles for your first product before our + call ends. +

+
+
+
+ + $750 + + + one-time setup + +
+ +

+ One call. Done by end of day. +

+
+
+
+
+
+ + {/* ── Newsletter ────────────────────────────────────── */} +
+
+
+

+ Build Notes +

+

+ What I am building, what is working, what is not. Weekly. +

+
+ +
+
+
+ + {/* ── Footer ──────────────────────────────────────────── */} +
-
+ +
+

+ © 2026 channel47.dev — Built by ctrlswing. All rights reserved. +

+
+ + Privacy Policy + + + Terms of Service + +
+
+ + ); } diff --git a/src/components/CTAButton.tsx b/src/components/CTAButton.tsx new file mode 100644 index 0000000..ffceaeb --- /dev/null +++ b/src/components/CTAButton.tsx @@ -0,0 +1,10 @@ +export default function CTAButton({ href }: { href: string }) { + return ( + + Book a setup call + + ); +} diff --git a/src/components/CopyButton.tsx b/src/components/CopyButton.tsx new file mode 100644 index 0000000..fae0c3d --- /dev/null +++ b/src/components/CopyButton.tsx @@ -0,0 +1,66 @@ +"use client"; + +import { useState } from "react"; + +export default function CopyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch { + // Fallback for older browsers + const textarea = document.createElement("textarea"); + textarea.value = text; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } + }; + + return ( + + ); +} diff --git a/src/components/FloatingBottomNav.tsx b/src/components/FloatingBottomNav.tsx new file mode 100644 index 0000000..f02fc89 --- /dev/null +++ b/src/components/FloatingBottomNav.tsx @@ -0,0 +1,54 @@ +const navItems = [ + { label: "Skills", icon: "M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 0h6v6h-6v-6z", active: true }, + { label: "Global", icon: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 2a8 8 0 0 1 5.29 2H6.71A8 8 0 0 1 12 4zM4 12a8 8 0 0 1 .34-2.3h15.32A8 8 0 0 1 20 12a8 8 0 0 1-.34 2.3H4.34A8 8 0 0 1 4 12zm2.71 6h10.58A8 8 0 0 1 12 20a8 8 0 0 1-5.29-2z", active: false }, + { label: "Plugin", icon: "M4 17l6-6-6-6M12 19h8", active: false }, + { label: "Services", icon: "M12 2l2.4 7.4H22l-6.2 4.5 2.4 7.4L12 16.8l-6.2 4.5 2.4-7.4L2 9.4h7.6z", active: false }, + { label: "Updates", icon: "M4 19.5A2.5 2.5 0 0 1 6.5 17H20M4 14.5A2.5 2.5 0 0 1 6.5 12H20M4 4h16v6H4V4z", active: false }, +]; + +export default function FloatingBottomNav() { + return ( +
+
+ {navItems.map((item) => ( + + ))} +
+ + Setup + +
+
+ ); +} diff --git a/src/components/FloatingGlowOrb.tsx b/src/components/FloatingGlowOrb.tsx new file mode 100644 index 0000000..c8c90ba --- /dev/null +++ b/src/components/FloatingGlowOrb.tsx @@ -0,0 +1,20 @@ +export default function FloatingGlowOrb() { + return ( + <> +
+
+ + ); +} diff --git a/src/components/FooterHero.tsx b/src/components/FooterHero.tsx new file mode 100644 index 0000000..eb7db11 --- /dev/null +++ b/src/components/FooterHero.tsx @@ -0,0 +1,35 @@ +export default function FooterHero() { + return ( +
+

+ LET’S +
+ TALK. +

+
+ + hello@channel47.dev + +

+ + + + + Available for worldwide collaborations. +

+
+
+ ); +} diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx new file mode 100644 index 0000000..ebb5b3d --- /dev/null +++ b/src/components/HeroSection.tsx @@ -0,0 +1,61 @@ +import CopyButton from "./CopyButton"; + +export default function HeroSection() { + return ( +
+
+
+

+ + / + + strategy +

+

+ A free Claude Code plugin that extracts real customer language from + public data and turns it into personas and ad angles you can use today. +

+ +
+
+ $ + + claude plugin marketplace add channel47 + + +
+
+ + + Or have it set up for your team{" "} + + +
+ + + hello@channel47.dev + +
+ ); +} diff --git a/src/components/NewsletterForm.tsx b/src/components/NewsletterForm.tsx new file mode 100644 index 0000000..9a13946 --- /dev/null +++ b/src/components/NewsletterForm.tsx @@ -0,0 +1,62 @@ +"use client"; + +import { useState, type FormEvent } from "react"; + +export default function NewsletterForm() { + const [email, setEmail] = useState(""); + const [status, setStatus] = useState< + "idle" | "loading" | "success" | "error" + >("idle"); + + const handleSubmit = async (e: FormEvent) => { + e.preventDefault(); + if (!email) return; + + setStatus("loading"); + + try { + await new Promise((resolve) => setTimeout(resolve, 800)); + setStatus("success"); + setEmail(""); + } catch { + setStatus("error"); + } + }; + + if (status === "success") { + return ( +

+ You’re in. Watch your inbox. +

+ ); + } + + return ( +
+ setEmail(e.target.value)} + placeholder="Email address" + aria-label="Email address" + className="newsletter-input flex-1 bg-transparent border-b-2 border-[#333333] text-zinc-100 px-0 py-3 outline-none placeholder:text-zinc-600 text-sm" + /> + + {status === "error" && ( +

+ Something went wrong. Try again. +

+ )} +
+ ); +} diff --git a/src/components/ProofCard.tsx b/src/components/ProofCard.tsx new file mode 100644 index 0000000..f1cee95 --- /dev/null +++ b/src/components/ProofCard.tsx @@ -0,0 +1,50 @@ +export default function ProofCard() { + return ( +
+
+
+

+ “Built from running creative strategy across 25+ DTC brands. + Every framework was used in production before it became a + skill.” +

+

+ // Used by marketers managing paid media across Google, Meta, and + Microsoft Ads. +

+
+
+
+
+

+ BUILT FROM REAL WORK +

+

+ 25+ DTC Brands / Production +

+
+
+ + + + +
+
+
+ ); +} diff --git a/src/components/ScrollReveal.tsx b/src/components/ScrollReveal.tsx new file mode 100644 index 0000000..7621e21 --- /dev/null +++ b/src/components/ScrollReveal.tsx @@ -0,0 +1,67 @@ +"use client"; + +import { useEffect } from "react"; + +export default function ScrollReveal() { + useEffect(() => { + const initializeObservers = () => { + try { + if (!("IntersectionObserver" in window)) { + // Fallback: make everything visible immediately + document.querySelectorAll(".reveal").forEach((el) => el.classList.add("visible")); + document.querySelectorAll(".terminal-line").forEach((el) => el.classList.add("visible")); + return; + } + + const revealObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add("visible"); + } + }); + }, + { threshold: 0.1, rootMargin: "0px 0px -40px 0px" } + ); + + const terminalObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.querySelectorAll(".terminal-line").forEach((line) => { + line.classList.add("visible"); + }); + } + }); + }, + { threshold: 0.5 } + ); + + const observe = () => { + document.querySelectorAll(".reveal").forEach((el) => revealObserver.observe(el)); + document.querySelectorAll(".terminal-container").forEach((el) => terminalObserver.observe(el)); + }; + + observe(); + // Retry for async-mounted content + setTimeout(observe, 800); + setTimeout(observe, 2000); + + return () => { + revealObserver.disconnect(); + terminalObserver.disconnect(); + }; + } catch (err) { + console.warn("ScrollReveal init failed gracefully:", err); + // Fallback: show everything + document.querySelectorAll(".reveal").forEach((el) => el.classList.add("visible")); + document.querySelectorAll(".terminal-line").forEach((el) => el.classList.add("visible")); + } + }; + + const cleanup = initializeObservers(); + return cleanup; + }, []); + + return null; +} diff --git a/src/components/SectionHeader.tsx b/src/components/SectionHeader.tsx new file mode 100644 index 0000000..2fd1aa3 --- /dev/null +++ b/src/components/SectionHeader.tsx @@ -0,0 +1,13 @@ +export default function SectionHeader({ label }: { label: string }) { + return ( +
+
+ + {label} + +
+ ); +} diff --git a/src/components/SkillCard.tsx b/src/components/SkillCard.tsx new file mode 100644 index 0000000..ba7c906 --- /dev/null +++ b/src/components/SkillCard.tsx @@ -0,0 +1,56 @@ +import Image from "next/image"; + +export default function SkillCard({ + title, + category, + description, + imageSrc, +}: { + title: string; + category: string; + description: string; + imageSrc: string; +}) { + return ( +
+
+ {title} +
+
+
+
+

+ {title} +

+

+ {category} +

+
+
+ + + + +
+
+

+ {description} +

+
+ ); +} diff --git a/src/components/SocialIconLink.tsx b/src/components/SocialIconLink.tsx new file mode 100644 index 0000000..3ec83c4 --- /dev/null +++ b/src/components/SocialIconLink.tsx @@ -0,0 +1,21 @@ +export default function SocialIconLink({ + href, + label, + icon, +}: { + href: string; + label: string; + icon: React.ReactNode; +}) { + return ( + + {icon} + + ); +} diff --git a/src/components/StepCard.tsx b/src/components/StepCard.tsx new file mode 100644 index 0000000..c5882da --- /dev/null +++ b/src/components/StepCard.tsx @@ -0,0 +1,24 @@ +export default function StepCard({ + stepNumber, + title, + description, +}: { + stepNumber: string; + title: string; + description: string; +}) { + return ( +
+ + {stepNumber} + +
+

{title}

+

{description}

+
+
+ ); +} diff --git a/src/components/TerminalQuoteWindow.tsx b/src/components/TerminalQuoteWindow.tsx new file mode 100644 index 0000000..1e4da30 --- /dev/null +++ b/src/components/TerminalQuoteWindow.tsx @@ -0,0 +1,56 @@ +export default function TerminalQuoteWindow() { + return ( +
+
+
+
+
+ + creative-strategist extract --raw + +
+
+
+ [fire-3] +
+ + “Marketing has always been the hardest part for us solo + founders. You can build an amazing product but if nobody knows + about it, none of that matters.” + +
+ + — Reddit, r/SaaS | Journey: Problem-aware + +
+
+
+ [fire-2] +
+ + “I was burning hours every week hunting for new + tools.” + +
+ + — PPC.io | Journey: Problem-aware + +
+
+
+ [fire-3] +
+ + “I found $3,400/month in wasted spend. In one + prompt.” + +
+ + — Adspirer | Journey: Post-purchase + +
+
+
+
+ ); +} diff --git a/src/components/TopNavigation.tsx b/src/components/TopNavigation.tsx new file mode 100644 index 0000000..3bdb721 --- /dev/null +++ b/src/components/TopNavigation.tsx @@ -0,0 +1,65 @@ +export default function TopNavigation() { + return ( + + ); +} From 002bfd0d310d64a35266ed514a8a9c64ee55888e Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 14:34:20 -0700 Subject: [PATCH 2/6] =?UTF-8?q?Retrigger=20deployment=20with=20updated=20f?= =?UTF-8?q?ramework=20settings=20(astro=20=E2=86=92=20nextjs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) From 757b3da5020dc664f4a074c8bdc89711171cb5a6 Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 14:41:13 -0700 Subject: [PATCH 3/6] Align CSS and markup precisely with Superdesign draft MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CSS: - .gradient-text: 3-stop gradient (accent → #FF9A85 → white) matching SD - .gradient-border-glow: mask-based border technique instead of z-index - .card-shimmer: position-based animation matching SD keyframes - .cta-glow:hover: stop animation on hover, show stronger static glow - .step-number: bounceStep keyframe with group/step hover - .reveal: use cubic-bezier(0.4, 0, 0.2, 1) easing matching SD - .terminal-line: parent .terminal-active class pattern instead of per-line - .newsletter-input: #FF9A85 gradient + border-color transparent on focus - Add missing: .nav-separator, .social-glow, view transitions CSS Markup: - How It Works heading: md:text-7xl (was md:text-6xl lg:text-7xl) - Steps card: add group transition-all duration-500 - Skills label: "Claude Code Plugin — 2024" - Setup heading: md:text-6xl (was md:text-5xl lg:text-6xl) - $750: use gradient-text class (3-stop gradient) - Newsletter form: wrap in max-w-md container - TerminalQuoteWindow: add terminal-lines wrapper class - StepCard: use group/step for bounceStep animation - FooterHero: use gradient-text class Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/globals.css | 141 +++++++++++++++---------- src/app/page.tsx | 14 +-- src/components/FooterHero.tsx | 2 +- src/components/ScrollReveal.tsx | 18 ++-- src/components/StepCard.tsx | 2 +- src/components/TerminalQuoteWindow.tsx | 2 +- 6 files changed, 107 insertions(+), 72 deletions(-) diff --git a/src/app/globals.css b/src/app/globals.css index 5c4c159..c23b8fe 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -39,8 +39,8 @@ body { .reveal { opacity: 0; transform: translateY(32px); - transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), - transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); + transition: opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1), + transform 0.7s cubic-bezier(0.4, 0, 0.2, 1); } .reveal.visible { @@ -48,24 +48,22 @@ body { transform: translateY(0); } +.reveal-delay-1 { transition-delay: 0.1s; } +.reveal-delay-2 { transition-delay: 0.2s; } +.reveal-delay-3 { transition-delay: 0.3s; } +.reveal-delay-4 { transition-delay: 0.4s; } + /* ── Terminal Line Stagger ───────────────────────── */ .terminal-line { opacity: 0; transform: translateX(-8px); - transition: opacity 0.5s ease-out, transform 0.5s ease-out; + transition: opacity 0.5s ease, transform 0.5s ease; } -.terminal-line.visible { - opacity: 1; - transform: translateX(0); -} - -.terminal-line:nth-child(1) { transition-delay: 0s; } -.terminal-line:nth-child(2) { transition-delay: 0.15s; } -.terminal-line:nth-child(3) { transition-delay: 0.3s; } -.terminal-line:nth-child(4) { transition-delay: 0.45s; } -.terminal-line:nth-child(5) { transition-delay: 0.6s; } +.terminal-active .terminal-line:nth-child(1) { opacity: 1; transform: translateX(0); transition-delay: 0s; } +.terminal-active .terminal-line:nth-child(2) { opacity: 1; transform: translateX(0); transition-delay: 0.15s; } +.terminal-active .terminal-line:nth-child(3) { opacity: 1; transform: translateX(0); transition-delay: 0.3s; } /* ── Card Shimmer ────────────────────────────────── */ @@ -77,35 +75,34 @@ body { .card-shimmer::after { content: ""; position: absolute; - inset: 0; - background: linear-gradient( - 105deg, - transparent 40%, - rgba(255, 255, 255, 0.03) 45%, - rgba(255, 255, 255, 0.05) 50%, - rgba(255, 255, 255, 0.03) 55%, - transparent 60% - ); - transform: translateX(-100%); - transition: transform 0.6s ease; + top: 0; + left: -100%; + width: 50%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 107, 80, 0.04), transparent); + transition: none; pointer-events: none; - border-radius: inherit; } .card-shimmer:hover::after { - transform: translateX(100%); + animation: shimmer 1.2s ease-out forwards; +} + +@keyframes shimmer { + 0% { left: -50%; } + 100% { left: 150%; } } /* ── CTA Glow Pulse ──────────────────────────────── */ @keyframes glow-pulse { 0%, 100% { - box-shadow: 0 0 20px rgba(255, 107, 80, 0.3), - 0 0 40px rgba(255, 107, 80, 0.1); + box-shadow: 0 0 20px rgba(255, 107, 80, 0.2), + 0 0 40px rgba(255, 107, 80, 0.05); } 50% { - box-shadow: 0 0 30px rgba(255, 107, 80, 0.5), - 0 0 60px rgba(255, 107, 80, 0.2); + box-shadow: 0 0 28px rgba(255, 107, 80, 0.35), + 0 0 56px rgba(255, 107, 80, 0.1); } } @@ -113,24 +110,30 @@ body { animation: glow-pulse 3s ease-in-out infinite; } +.cta-glow:hover { + animation: none; + box-shadow: 0 0 36px rgba(255, 107, 80, 0.5), + 0 0 72px rgba(255, 107, 80, 0.15); +} + /* ── Step Number Bounce ──────────────────────────── */ -.step-item:hover .step-number { - transform: scale(1.1); - color: var(--color-c47-accent); +@keyframes bounceStep { + 0% { transform: scale(1); } + 40% { transform: scale(1.08); } + 70% { transform: scale(0.98); } + 100% { transform: scale(1.05); } } .step-number { - transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), - color 0.3s ease; + transition: color 0.35s ease, transform 0.35s ease; + display: inline-block; } -/* ── Reveal Delay Stagger ──────────────────────── */ - -.reveal-delay-1 { transition-delay: 0.1s; } -.reveal-delay-2 { transition-delay: 0.2s; } -.reveal-delay-3 { transition-delay: 0.3s; } -.reveal-delay-4 { transition-delay: 0.4s; } +.group\/step:hover .step-number { + animation: bounceStep 0.35s ease-out forwards; + color: #FF6B50 !important; +} /* ── Float Animation ───────────────────────────── */ @@ -154,19 +157,17 @@ body { /* ── Newsletter Underline ────────────────────────── */ .newsletter-input { - background-image: linear-gradient( - to right, - var(--color-c47-accent), - #c94430 - ); + background-image: linear-gradient(to right, #FF6B50, #FF9A85); background-size: 0% 2px; - background-repeat: no-repeat; background-position: left bottom; - transition: background-size 0.4s ease; + background-repeat: no-repeat; + transition: background-size 0.4s cubic-bezier(0.4, 0, 0.2, 1), + border-color 0.4s ease; } .newsletter-input:focus { background-size: 100% 2px; + border-color: transparent !important; } /* ── Gradient Border Glow ────────────────────────── */ @@ -180,21 +181,55 @@ body { position: absolute; inset: -1px; border-radius: inherit; - background: linear-gradient(135deg, var(--color-c47-accent), #c94430, var(--color-c47-accent)); + padding: 1px; + background: linear-gradient(135deg, rgba(255, 107, 80, 0.3), transparent 50%, rgba(255, 107, 80, 0.1)); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + pointer-events: none; opacity: 0; - transition: opacity 0.4s ease; - z-index: -1; + transition: opacity 0.5s ease; } .gradient-border-glow:hover::before { opacity: 1; } -/* ── Gradient text helper ────────────────────────── */ +/* ── Gradient text helpers ───────────────────────── */ + +.gradient-text { + background: linear-gradient(135deg, #FF6B50 0%, #FF9A85 40%, #ffffff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} .text-gradient { - background: linear-gradient(135deg, var(--color-c47-accent), #c94430); + background: linear-gradient(135deg, #FF6B50 0%, #FF9A85 40%, #ffffff 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } + +/* ── Nav Separator ───────────────────────────────── */ + +.nav-separator { + width: 1px; + background: linear-gradient(to bottom, transparent, rgba(255, 107, 80, 0.4), transparent); +} + +/* ── Social Icon Glow ────────────────────────────── */ + +.social-glow:hover { + box-shadow: 0 8px 24px rgba(255, 107, 80, 0.25); + border-color: rgba(255, 107, 80, 0.4) !important; +} + +/* ── View Transitions ────────────────────────────── */ + +@view-transition { navigation: auto; } +::view-transition-old(root), +::view-transition-new(root) { + animation-duration: 0.4s; + animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 0bbea6c..90c0f05 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -28,7 +28,7 @@ export default function Home() {
-

+

One command.{" "} 30 seconds. Real customer language ready to deploy. @@ -38,7 +38,7 @@ export default function Home() {
{/* Steps card */}
- Claude Code Plugin + Claude Code Plugin — 2024
@@ -148,7 +148,7 @@ export default function Home() {
-

+

Want this running for your team{" "} by end of day?

@@ -161,7 +161,7 @@ export default function Home() {
- + $750 @@ -192,7 +192,9 @@ export default function Home() { What I am building, what is working, what is not. Weekly.

- +
+ +

diff --git a/src/components/FooterHero.tsx b/src/components/FooterHero.tsx index eb7db11..4b96a41 100644 --- a/src/components/FooterHero.tsx +++ b/src/components/FooterHero.tsx @@ -1,7 +1,7 @@ export default function FooterHero() { return (
-

+

LET’S
TALK. diff --git a/src/components/ScrollReveal.tsx b/src/components/ScrollReveal.tsx index 7621e21..f8dcee5 100644 --- a/src/components/ScrollReveal.tsx +++ b/src/components/ScrollReveal.tsx @@ -7,16 +7,18 @@ export default function ScrollReveal() { const initializeObservers = () => { try { if (!("IntersectionObserver" in window)) { - // Fallback: make everything visible immediately document.querySelectorAll(".reveal").forEach((el) => el.classList.add("visible")); - document.querySelectorAll(".terminal-line").forEach((el) => el.classList.add("visible")); + document.querySelectorAll(".terminal-container").forEach((el) => { + const lines = el.querySelector(".terminal-lines"); + if (lines) lines.classList.add("terminal-active"); + }); return; } const revealObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { - if (entry.isIntersecting) { + if (entry && entry.isIntersecting && entry.target) { entry.target.classList.add("visible"); } }); @@ -27,10 +29,9 @@ export default function ScrollReveal() { const terminalObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { - if (entry.isIntersecting) { - entry.target.querySelectorAll(".terminal-line").forEach((line) => { - line.classList.add("visible"); - }); + if (entry && entry.isIntersecting && entry.target) { + const lines = entry.target.querySelector(".terminal-lines"); + if (lines) lines.classList.add("terminal-active"); } }); }, @@ -43,7 +44,6 @@ export default function ScrollReveal() { }; observe(); - // Retry for async-mounted content setTimeout(observe, 800); setTimeout(observe, 2000); @@ -53,9 +53,7 @@ export default function ScrollReveal() { }; } catch (err) { console.warn("ScrollReveal init failed gracefully:", err); - // Fallback: show everything document.querySelectorAll(".reveal").forEach((el) => el.classList.add("visible")); - document.querySelectorAll(".terminal-line").forEach((el) => el.classList.add("visible")); } }; diff --git a/src/components/StepCard.tsx b/src/components/StepCard.tsx index c5882da..7cfc18b 100644 --- a/src/components/StepCard.tsx +++ b/src/components/StepCard.tsx @@ -8,7 +8,7 @@ export default function StepCard({ description: string; }) { return ( -
+
-
+
[fire-3]
From 67ff21dac3613d211da720670b018db018487127 Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 14:44:49 -0700 Subject: [PATCH 4/6] Self-host Satoshi font via next/font/local for reliable rendering - Download all 5 Satoshi weights (300/400/500/700/900) as local woff2 files - Use next/font/local instead of fragile CSS @import from Fontshare CDN - Add missing weight 300 (light) used for hero slash character - Wire CSS variables properly: --font-satoshi, --font-inter, --font-jetbrains-mono all flow through next/font into Tailwind v4 theme via var() references - Remove external Fontshare @import that could fail silently in production Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/globals.css | 5 ++--- src/app/layout.tsx | 17 ++++++++++++++++- src/fonts/Satoshi-Black.woff2 | Bin 0 -> 23484 bytes src/fonts/Satoshi-Bold.woff2 | Bin 0 -> 25328 bytes src/fonts/Satoshi-Light.woff2 | Bin 0 -> 22800 bytes src/fonts/Satoshi-Medium.woff2 | Bin 0 -> 25596 bytes src/fonts/Satoshi-Regular.woff2 | Bin 0 -> 25516 bytes 7 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 src/fonts/Satoshi-Black.woff2 create mode 100644 src/fonts/Satoshi-Bold.woff2 create mode 100644 src/fonts/Satoshi-Light.woff2 create mode 100644 src/fonts/Satoshi-Medium.woff2 create mode 100644 src/fonts/Satoshi-Regular.woff2 diff --git a/src/app/globals.css b/src/app/globals.css index c23b8fe..274126d 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,4 +1,3 @@ -@import url("https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700,900&display=swap"); @import "tailwindcss"; @theme inline { @@ -11,8 +10,8 @@ --color-c47-card: #111111; --color-c47-text: #ebebeb; - --font-sans: "Satoshi", "Inter", ui-sans-serif, system-ui, sans-serif; - --font-mono: "JetBrains Mono", ui-monospace, monospace; + --font-sans: var(--font-satoshi), var(--font-inter), ui-sans-serif, system-ui, sans-serif; + --font-mono: var(--font-jetbrains-mono), ui-monospace, monospace; } /* ── Base ────────────────────────────────────────── */ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 45ee49c..0aa760f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,15 +1,30 @@ import type { Metadata } from "next"; +import localFont from "next/font/local"; import { Inter, JetBrains_Mono } from "next/font/google"; import "./globals.css"; +const satoshi = localFont({ + src: [ + { path: "../fonts/Satoshi-Light.woff2", weight: "300", style: "normal" }, + { path: "../fonts/Satoshi-Regular.woff2", weight: "400", style: "normal" }, + { path: "../fonts/Satoshi-Medium.woff2", weight: "500", style: "normal" }, + { path: "../fonts/Satoshi-Bold.woff2", weight: "700", style: "normal" }, + { path: "../fonts/Satoshi-Black.woff2", weight: "900", style: "normal" }, + ], + variable: "--font-satoshi", + display: "swap", +}); + const inter = Inter({ subsets: ["latin"], variable: "--font-inter", + display: "swap", }); const jetbrainsMono = JetBrains_Mono({ subsets: ["latin"], variable: "--font-jetbrains-mono", + display: "swap", }); export const metadata: Metadata = { @@ -41,7 +56,7 @@ export default function RootLayout({ return ( {children} diff --git a/src/fonts/Satoshi-Black.woff2 b/src/fonts/Satoshi-Black.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64492d523bcab5db8614bea3fba477fe168948b0 GIT binary patch literal 23484 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 literal 0 HcmV?d00001 diff --git a/src/fonts/Satoshi-Bold.woff2 b/src/fonts/Satoshi-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0a8db7a468b8c16027691be3f5929e7223542438 GIT binary patch literal 25328 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 literal 0 HcmV?d00001 diff --git a/src/fonts/Satoshi-Light.woff2 b/src/fonts/Satoshi-Light.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cf18cd4c0c8b230c54bb166ac420bc3efc79cc4d GIT binary patch literal 22800 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 literal 0 HcmV?d00001 diff --git a/src/fonts/Satoshi-Medium.woff2 b/src/fonts/Satoshi-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ffd0ac96c7b87a1411465f450322b41f5ed875b6 GIT binary patch literal 25596 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 literal 0 HcmV?d00001 From 40038283b8a37623be1a60a5ba52f6aae2a02c08 Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 14:49:53 -0700 Subject: [PATCH 5/6] Add overflow-x-hidden wrapper and view-transition meta tag - Wrap page in div with overflow-x-hidden to prevent horizontal scroll from absolute-positioned glow orbs and radial gradients - Add view-transition same-origin meta tag for smooth page transitions - Both match the Superdesign draft structure Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/layout.tsx | 3 +++ src/app/page.tsx | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 0aa760f..1a6189c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -28,6 +28,9 @@ const jetbrainsMono = JetBrains_Mono({ }); export const metadata: Metadata = { + other: { + "view-transition": "same-origin", + }, title: "channel47 — Turn Reddit threads and Amazon reviews into creative strategy", description: "A free Claude Code plugin that extracts real customer language from public data and turns it into personas and ad angles you can use today.", diff --git a/src/app/page.tsx b/src/app/page.tsx index 90c0f05..bc3d36d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -15,7 +15,7 @@ import SocialIconLink from "@/components/SocialIconLink"; export default function Home() { return ( - <> +
@@ -270,6 +270,6 @@ export default function Home() {
- +
); } From ec406f990ac05055bce7069d6dd2f4a404055d30 Mon Sep 17 00:00:00 2001 From: Jackson Date: Fri, 27 Mar 2026 16:13:01 -0700 Subject: [PATCH 6/6] Port animated logo from live Astro site to React component Scraped the Unicode block-art logo animation from the production Astro build and ported it to a React client component. Added to both TopNavigation (replaces static H7) and HeroSection (above headline with 300ms delay). Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 1 + src/app/globals.css | 80 ++++++++++++++++ src/components/AnimatedLogo.tsx | 155 +++++++++++++++++++++++++++++++ src/components/HeroSection.tsx | 4 + src/components/TopNavigation.tsx | 5 +- 5 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 src/components/AnimatedLogo.tsx diff --git a/.gitignore b/.gitignore index 92858ee..f8b926f 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts +.env*.local diff --git a/src/app/globals.css b/src/app/globals.css index 274126d..00fe54f 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -224,6 +224,86 @@ body { border-color: rgba(255, 107, 80, 0.4) !important; } +/* ── Animated Logo ──────────────────────────────── */ + +.logo-animated { + --logo-glow: rgba(231, 229, 228, 0.3); + position: relative; + display: inline-flex; + flex-direction: column; + font-family: var(--font-mono); + font-size: 11px; + line-height: 1; + font-weight: 400; + color: var(--color-c47-text); + white-space: pre; + user-select: none; + letter-spacing: -0.08em; + cursor: pointer; + text-shadow: 0 0 8px rgba(231, 229, 228, 0.15); +} + +.logo-animated__glyph { + display: flex; + flex-direction: column; + position: relative; + z-index: 1; +} + +.logo-animated__line { + display: flex; + height: 1.1em; +} + +.logo-animated__char { + display: inline-block; + min-width: 0.55em; + text-align: center; + opacity: 0.3; + transition: opacity 0.1s ease-out; +} + +.logo-animated.is-animating .logo-animated__char:not(.is-locked) { + opacity: 0.5; +} + +.logo-animated__char.is-locked { + opacity: 1; +} + +.logo-animated__char.is-flashing { + text-shadow: 0 0 6px var(--logo-glow), 0 0 12px rgba(245, 158, 11, 0.25); +} + +.logo-animated.is-complete .logo-animated__glyph { + text-shadow: 0 0 1px var(--logo-glow), 0 0 8px var(--logo-glow); + animation: logo-breathe 4s ease-in-out infinite; + animation-delay: 1s; +} + +@keyframes logo-breathe { + 0%, to { + text-shadow: 0 0 1px var(--logo-glow), 0 0 8px var(--logo-glow); + } + 50% { + text-shadow: 0 0 2px var(--logo-glow), 0 0 12px var(--logo-glow), 0 0 20px rgba(231, 229, 228, 0.18); + } +} + +@media (prefers-reduced-motion: reduce) { + .logo-animated__char { + opacity: 1 !important; + transition: none; + } + .logo-animated__char.is-flashing { + color: inherit; + text-shadow: none; + } + .logo-animated.is-complete .logo-animated__glyph { + animation: none; + } +} + /* ── View Transitions ────────────────────────────── */ @view-transition { navigation: auto; } diff --git a/src/components/AnimatedLogo.tsx b/src/components/AnimatedLogo.tsx new file mode 100644 index 0000000..26c32e4 --- /dev/null +++ b/src/components/AnimatedLogo.tsx @@ -0,0 +1,155 @@ +'use client'; + +import { useRef, useEffect, useCallback } from 'react'; + +const GLYPHS = ['█','▓','▒','░','▀','▄','▌','▐','■','□','▪','▫','◼','◻','▰','▱']; +const LINES = ['█ █ ▀▀█', '▀▀█ █']; + +function randomGlyph() { + return GLYPHS[Math.floor(Math.random() * GLYPHS.length)]; +} + +export default function AnimatedLogo({ delay = 0 }: { delay?: number }) { + const rootRef = useRef(null); + const startedRef = useRef(false); + const replayingRef = useRef(false); + + const animate = useCallback((isReplay = false) => { + const root = rootRef.current; + if (!root) return; + + const chars = root.querySelectorAll('.logo-animated__char'); + const targets: string[] = []; + chars.forEach(c => targets.push(c.dataset.char || ' ')); + + const locked = new Array(chars.length).fill(false); + + // Reset state + root.classList.remove('is-complete'); + root.classList.add('is-animating'); + if (!isReplay) { + chars.forEach(c => c.classList.remove('is-locked')); + } else { + locked.fill(false); + chars.forEach(c => c.classList.remove('is-locked')); + } + + // Scramble non-space chars + chars.forEach((c, i) => { + if (targets[i] !== ' ') c.textContent = randomGlyph(); + }); + + // Continuous scramble + const scrambleInterval = window.setInterval(() => { + chars.forEach((c, i) => { + if (!locked[i] && targets[i] !== ' ') { + c.textContent = randomGlyph(); + } + }); + }, 50); + + // Lock characters with eased stagger + const nonSpaceIndices = targets + .map((ch, i) => (ch !== ' ' ? i : -1)) + .filter(i => i !== -1) + .sort(() => Math.random() - 0.5); + + const duration = isReplay ? 400 : 800; + const baseDelay = isReplay ? 100 : 300; + const timeouts: number[] = []; + + nonSpaceIndices.forEach((charIdx, order) => { + const progress = order / nonSpaceIndices.length; + const eased = 1 - Math.pow(1 - progress, 2); + const t = window.setTimeout(() => { + locked[charIdx] = true; + const el = chars[charIdx]; + el.textContent = targets[charIdx]; + el.classList.add('is-locked'); + el.classList.add('is-flashing'); + setTimeout(() => el.classList.remove('is-flashing'), 100); + + // Last char — complete + if (order === nonSpaceIndices.length - 1) { + setTimeout(() => { + clearInterval(scrambleInterval); + root.classList.add('is-complete'); + replayingRef.current = false; + }, 150); + } + }, baseDelay + eased * duration); + timeouts.push(t); + }); + + return () => { + timeouts.forEach(clearTimeout); + clearInterval(scrambleInterval); + }; + }, []); + + useEffect(() => { + const root = rootRef.current; + if (!root) return; + + const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + if (prefersReduced) { + root.classList.add('is-complete'); + root.querySelectorAll('.logo-animated__char').forEach(c => { + c.classList.add('is-locked'); + }); + return; + } + + const observer = new IntersectionObserver( + entries => { + entries.forEach(entry => { + if (entry.isIntersecting && !startedRef.current) { + startedRef.current = true; + setTimeout(() => animate(false), delay); + observer.disconnect(); + } + }); + }, + { threshold: 0.5 } + ); + + observer.observe(root); + return () => observer.disconnect(); + }, [animate, delay]); + + const handleMouseEnter = useCallback(() => { + if ( + !startedRef.current || + replayingRef.current || + window.matchMedia('(prefers-reduced-motion: reduce)').matches + ) return; + replayingRef.current = true; + animate(true); + }, [animate]); + + return ( + + + + ); +} diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index ebb5b3d..bca3ec5 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -1,4 +1,5 @@ import CopyButton from "./CopyButton"; +import AnimatedLogo from "./AnimatedLogo"; export default function HeroSection() { return ( @@ -11,6 +12,9 @@ export default function HeroSection() { }} />
+
+ +

@@ -12,10 +14,9 @@ export default function TopNavigation() {