diff --git a/apps/marketing/src/app/components/HeroSection/HeroSection.tsx b/apps/marketing/src/app/components/HeroSection/HeroSection.tsx index e27e9aea2f6..01976e7fe12 100644 --- a/apps/marketing/src/app/components/HeroSection/HeroSection.tsx +++ b/apps/marketing/src/app/components/HeroSection/HeroSection.tsx @@ -1,7 +1,8 @@ "use client"; import { COMPANY } from "@superset/shared/constants"; -import { useState } from "react"; +import { useScroll } from "framer-motion"; +import { useRef, useState } from "react"; import { FaGithub } from "react-icons/fa"; import { DownloadButton } from "../DownloadButton"; import { WaitlistModal } from "../WaitlistModal"; @@ -10,64 +11,68 @@ import { TypewriterText } from "./components/TypewriterText"; export function HeroSection() { const [isWaitlistOpen, setIsWaitlistOpen] = useState(false); + const demoRef = useRef(null); + + const { scrollYProgress } = useScroll({ + target: demoRef, + offset: ["start 0.45", "start 0"], + }); return (
-
-
-
-
-
-

- - - +
+
+
+

+ + + - -

-

- Orchestrate a team of Claude Code, Codex, or any other coding - agents -

-
- -
- setIsWaitlistOpen(true)} - /> - -
+ }, + ]} + speed={40} + delay={600} + /> + +

+

+ Orchestrate swarms of Claude Code, Codex, etc. in parallel. + Works for any agents. Built for the AI era. +

-
- +
+ setIsWaitlistOpen(true)} /> +
+ +
+ +
+ {config.pulse && ( )} ); @@ -143,16 +143,16 @@ function WorkspaceItem({ }) { return (
{isActive && (
)}
{status === "working" ? ( - + ) : ( - + )} {status && status !== "working" && ( @@ -170,7 +170,7 @@ function WorkspaceItem({ {(add !== undefined || pr) && (
{add !== undefined && ( - + +{add} {del !== undefined && del > 0 && ( -{del} @@ -181,12 +181,12 @@ function WorkspaceItem({ )}
- + {branch} {pr && ( - - + + {pr} )} @@ -229,18 +229,18 @@ function FileChangeItem({ return (
{path}
{!isFolder && (add > 0 || del > 0) && ( - + {add > 0 && +{add}} {del > 0 && -{del}} @@ -260,51 +260,59 @@ interface AppMockupProps { } export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { - // Animation states based on activeDemo - // - "Use Any Agents": Highlight terminal area with agent output - // - "Create Parallel Branches": Highlight workspace sidebar with branches - // - "See Changes": Highlight file changes panel on right - // - "Open in Any IDE": Highlight top bar / open actions - return (
+ {/* Diagonal gradient glass border — bright on top-left & bottom-right corners */} +
{/* Window chrome */} -
+
-
-
-
+
+
+
- superset + superset
-
+
{/* Left sidebar */} -
+
{/* New Workspace button */} -
+
{/* Repository section */} -
+
- superset - (5) + superset + (5)
- - + +
@@ -320,9 +328,9 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { }} transition={{ duration: 0.3, ease: "easeOut" }} > -
+
- +
@@ -330,7 +338,7 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { new workspace
- + creating...
@@ -356,27 +364,27 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) {
{/* Ports section */} -
-
-
+
+
+
Ports
- 4 + 4
{PORTS.map((port) => ( -
-
+
+
{port.workspace} - +
{port.ports.map((p) => ( {p} @@ -390,12 +398,12 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { {/* Main content area */}
{/* Tab bar */} -
+
{/* Claude tab - always visible, active */} -
+
{activeDemo === "Create Parallel Branches" ? ( <> - + setup ) : ( @@ -403,17 +411,17 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { Claude claude )} - +
{/* Other agent tabs - shown when "Use Any Agents" is active */} codex - + gemini - + cursor - +
- - + +
{/* Terminal header */} -
- - - Terminal - +
+ + Terminal
- - + +
{/* Terminal content */} -
+
{/* Default terminal content */} {/* Claude ASCII art header */}
-
+
{` * ▐▛███▜▌ * * ▝▜█████▛▘ * * ▘▘ ▝▝ *`}
-
+
Claude Code @@ -617,7 +623,7 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { {/* Create Parallel Branches overlay */}
- + Setting up new parallel environment...
@@ -654,9 +660,9 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { {/* Right sidebar */} @@ -673,24 +679,22 @@ export function AppMockup({ activeDemo = "Use Any Agents" }: AppMockupProps) { }} > {/* Header */} -
- - Review Changes - -
- +
+ Review Changes +
+ #827
{/* Commit & Push section */} -
-
+
+
Commit message...