Skip to content

Commit fa6fe2e

Browse files
JeevantheDevclaude
andcommitted
feat: open Supademo popup on all demo buttons in landing page
Replace the three #demo anchor links (nav, hero CTA, player) with a SupademoButton client component that calls Supademo.open() on click. Script is loaded lazily via next/script. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1bb982a commit fa6fe2e

2 files changed

Lines changed: 57 additions & 24 deletions

File tree

app/page.tsx

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Link from "next/link";
44
import { getSupabaseServerClient } from "@/lib/supabase/server";
55
import { LandingBody } from "@/components/landing/LandingBody";
66
import { ChatMockup } from "@/components/landing/ChatMockup";
7+
import { SupademoNavButton, SupademoCTAButton, SupademoPlayer } from "@/components/landing/SupademoButton";
78
import releaseMng from "@/public/release-mng.svg";
89
import telegramChat from "@/public/telegramchat.jpg"
910
import demo from "@/public/demo.gif"
@@ -120,10 +121,7 @@ export default async function LandingPage() {
120121
>
121122
Sign In
122123
</Link>
123-
<a href="#demo" className="demo-btn">
124-
<span className="tri"></span>
125-
watch the demo
126-
</a>
124+
<SupademoNavButton />
127125
</div>
128126
</div>
129127
</header>
@@ -146,9 +144,7 @@ export default async function LandingPage() {
146144
<Link href="/login" className="btn-cta">
147145
Get Started →
148146
</Link>
149-
<a href="#demo" className="btn-cta ghost">
150-
See the demo
151-
</a>
147+
<SupademoCTAButton />
152148
</div>
153149
<div className="hero-caption">
154150
<span className="mono-label">scroll to see the four moves</span>
@@ -463,23 +459,7 @@ export default async function LandingPage() {
463459
</p>
464460
</div>
465461

466-
<div
467-
className="player"
468-
role="button"
469-
tabIndex={0}
470-
aria-label="Play 2-minute demo"
471-
>
472-
<div className="player-bg" aria-hidden="true"></div>
473-
<div className="player-center">
474-
<div className="play-circle" aria-hidden="true">
475-
<span className="play-tri"></span>
476-
</div>
477-
<span className="player-label">Play the 2-minute demo</span>
478-
</div>
479-
<span className="player-foot">
480-
runs in your browser <span className="dot">·</span> no signup
481-
</span>
482-
</div>
462+
<SupademoPlayer />
483463
</div>
484464
</section>
485465

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"use client";
2+
3+
import Script from "next/script";
4+
5+
const DEMO_ID = "cmq2mr4pr0xycqm6uu08slusj";
6+
7+
function openDemo() {
8+
(window as any).Supademo?.open(DEMO_ID);
9+
}
10+
11+
export function SupademoNavButton() {
12+
return (
13+
<>
14+
<Script src="https://script.supademo.com/supademo.js" strategy="lazyOnload" />
15+
<button type="button" className="demo-btn" onClick={openDemo}>
16+
<span className="tri"></span>
17+
watch the demo
18+
</button>
19+
</>
20+
);
21+
}
22+
23+
export function SupademoCTAButton() {
24+
return (
25+
<button type="button" className="btn-cta ghost" onClick={openDemo}>
26+
See the demo
27+
</button>
28+
);
29+
}
30+
31+
export function SupademoPlayer() {
32+
return (
33+
<div
34+
className="player"
35+
role="button"
36+
tabIndex={0}
37+
aria-label="Play 2-minute demo"
38+
onClick={openDemo}
39+
onKeyDown={(e) => e.key === "Enter" && openDemo()}
40+
>
41+
<div className="player-bg" aria-hidden="true"></div>
42+
<div className="player-center">
43+
<div className="play-circle" aria-hidden="true">
44+
<span className="play-tri"></span>
45+
</div>
46+
<span className="player-label">Play the 2-minute demo</span>
47+
</div>
48+
<span className="player-foot">
49+
runs in your browser <span className="dot">·</span> no signup
50+
</span>
51+
</div>
52+
);
53+
}

0 commit comments

Comments
 (0)