diff --git a/apps/web/app/(marketing)/page.tsx b/apps/web/app/(marketing)/page.tsx index c2d2ef8..734a5de 100644 --- a/apps/web/app/(marketing)/page.tsx +++ b/apps/web/app/(marketing)/page.tsx @@ -1,9 +1,9 @@ import { HeroStepRotator } from '@/components/hero-step-rotator'; import { JsonLd } from '@/components/json-ld'; import { ParticleHero } from '@/components/particle-hero'; +import { ScrollCue } from '@/components/scroll-cue'; import { StaticCodeBlock } from '@/components/static-code-block'; import { FAQ, faqJsonLd } from '@/lib/seo'; -import { ChevronDown } from 'lucide-react'; import Link from 'next/link'; const PROMPT_EXAMPLE = `Create an MCP server that searches our Notion workspace. @@ -99,7 +99,7 @@ export default function Landing() { for pointermove on window itself, so the ring still tracks the cursor through the content above. */} -
+
v0.1 — updated 2026-05-20 @@ -149,16 +149,12 @@ export default function Landing() {
- {/* Scroll cue — hints the video section sits directly below. */} - - see it run - - + {/* Scroll cue — fixed at the bottom of the loadscreen rather than + inside the hero, so it sits at the natural lower edge of the + first viewport regardless of how tall the hero ends up. Fades + out once the user has scrolled past the loadscreen. */} + {/* Flow video — full-width edge-to-edge under the hero. The clip shows the real flow (prompt → server schematic → live connection diff --git a/apps/web/components/hero-step-rotator.tsx b/apps/web/components/hero-step-rotator.tsx index fb8a40d..511ffee 100644 --- a/apps/web/components/hero-step-rotator.tsx +++ b/apps/web/components/hero-step-rotator.tsx @@ -109,23 +109,38 @@ export function HeroStepRotator() { return (
+ {/* Container is relative + has a min-height so the absolutely- + positioned cards inside (during the slide) overlap cleanly + without collapsing the layout. min-h is sized for the tallest + card (claude_desktop_config.json at 7 lines). */}
- + {/* Cursor-following glow — sits behind the content, additive. */} { + function onScroll() { + setVisible(window.scrollY < 80); + } + onScroll(); + window.addEventListener('scroll', onScroll, { passive: true }); + return () => window.removeEventListener('scroll', onScroll); + }, []); + + return ( + + see it run + + + ); +}