From ef1fd7d9067a0742e862456558194fb257394255 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sat, 7 Feb 2026 19:13:40 -0500 Subject: [PATCH 1/3] feat: add schedule page with Cal.com embed for partnership calls --- app/schedule/page.tsx | 200 +++++++++++++++++++++++++++++++++++++++ components/cal-embed.tsx | 48 ++++++++++ 2 files changed, 248 insertions(+) create mode 100644 app/schedule/page.tsx create mode 100644 components/cal-embed.tsx diff --git a/app/schedule/page.tsx b/app/schedule/page.tsx new file mode 100644 index 0000000..40cb24a --- /dev/null +++ b/app/schedule/page.tsx @@ -0,0 +1,200 @@ +import type { Metadata } from "next"; +import { ArrowLeft } from "lucide-react"; +import Link from "next/link"; +import { CalEmbed } from "@/components/cal-embed"; +import { Footer } from "@/components/footer"; + +export const metadata: Metadata = { + title: "Schedule a Call — Code Brew", + description: + "Book a call with the Crafter Station team to discuss partnership opportunities with Code Brew.", +}; + +export default function SchedulePage() { + return ( +
+ {/* Film grain */} +
+ + {/* Ghost text */} +
CALL
+ +
+ {/* ════════════════════════════════════════ + HEADER + ════════════════════════════════════════ */} +
+
+ {/* Left — back + brand */} +
+ + + +
+
+ Code Brew +
+ + {/* Right — label */} + Schedule +
+
+ + {/* ════════════════════════════════════════ + INTRO + ════════════════════════════════════════ */} +
+
+ + {/* Corner brackets */} +
+
+ +
+
+ + Partnership Call + +
+ +
+

+ Let's Build +
+ Together +

+
+ +
+ +
+ +
+ +
+

+ Interested in partnering with Code Brew? Schedule a call with + the Crafter Station team to discuss sponsorship, venue + partnerships, or community collaborations across Latin America + and Spain. +

+
+
+
+ + {/* ════════════════════════════════════════ + WHAT TO EXPECT + ════════════════════════════════════════ */} +
+
+
+ What to Expect +
+ +
+ {[ + { + num: "01", + title: "Introduction", + desc: "Learn about Code Brew, our community, and our impact across cities", + }, + { + num: "02", + title: "Your Goals", + desc: "Share what you are looking for and how we can align with your brand", + }, + { + num: "03", + title: "Next Steps", + desc: "Define the partnership model and plan the first collaboration", + }, + ].map((item) => ( +
+ {item.num} +
+

+ {item.title} +

+

+ {item.desc} +

+
+
+ ))} +
+
+
+ + {/* ════════════════════════════════════════ + CALENDAR EMBED + ════════════════════════════════════════ */} +
+
+
+
+ Pick a Time +
+ 30 Min Call +
+ +
+ +
+
+
+ + {/* ════════════════════════════════════════ + ALTERNATIVE CONTACT + ════════════════════════════════════════ */} +
+
+ +
+ Prefer Another Way? + +

+ If the calendar doesn't work for you, feel free to reach out + directly via WhatsApp or through our community channels. +

+ + +
+
+ + {/* ════════════════════════════════════════ + FOOTER + ════════════════════════════════════════ */} +
+
+
+ ); +} diff --git a/components/cal-embed.tsx b/components/cal-embed.tsx new file mode 100644 index 0000000..fe7b7d4 --- /dev/null +++ b/components/cal-embed.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { useEffect, useRef, useState } from "react"; + +interface CalEmbedProps { + calLink?: string; + className?: string; +} + +export function CalEmbed({ + calLink = "codebrew/partnership", + className = "", +}: CalEmbedProps) { + const iframeRef = useRef(null); + const [isLoaded, setIsLoaded] = useState(false); + + useEffect(() => { + const iframe = iframeRef.current; + if (!iframe) return; + + const handleLoad = () => setIsLoaded(true); + iframe.addEventListener("load", handleLoad); + return () => iframe.removeEventListener("load", handleLoad); + }, []); + + return ( +
+ {/* Loading state */} + {!isLoaded && ( +
+
+ Loading Calendar... +
+ )} + +