From 5936aedd3d853514a31ebece23175255fb2415c3 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Mon, 31 Aug 2026 17:00:12 +1200 Subject: Initial commit --- components/buzz-marquee.tsx | 21 +++++ components/cta-band.tsx | 34 ++++++++ components/dashboard-mock.tsx | 133 ++++++++++++++++++++++++++++++ components/faq-list.tsx | 26 ++++++ components/glow-orbs.tsx | 14 ++++ components/logo.tsx | 61 ++++++++++++++ components/request-form.tsx | 145 ++++++++++++++++++++++++++++++++ components/section.tsx | 40 +++++++++ components/site-footer.tsx | 95 +++++++++++++++++++++ components/site-header.tsx | 130 +++++++++++++++++++++++++++++ components/solutions-tabs.tsx | 53 ++++++++++++ components/ui/accordion.tsx | 74 +++++++++++++++++ components/ui/badge.tsx | 52 ++++++++++++ components/ui/button.tsx | 59 +++++++++++++ components/ui/card.tsx | 103 +++++++++++++++++++++++ components/ui/dialog.tsx | 160 ++++++++++++++++++++++++++++++++++++ components/ui/input.tsx | 20 +++++ components/ui/label.tsx | 20 +++++ components/ui/navigation-menu.tsx | 168 ++++++++++++++++++++++++++++++++++++++ components/ui/separator.tsx | 25 ++++++ components/ui/sheet.tsx | 138 +++++++++++++++++++++++++++++++ components/ui/tabs.tsx | 82 +++++++++++++++++++ components/ui/textarea.tsx | 18 ++++ 23 files changed, 1671 insertions(+) create mode 100644 components/buzz-marquee.tsx create mode 100644 components/cta-band.tsx create mode 100644 components/dashboard-mock.tsx create mode 100644 components/faq-list.tsx create mode 100644 components/glow-orbs.tsx create mode 100644 components/logo.tsx create mode 100644 components/request-form.tsx create mode 100644 components/section.tsx create mode 100644 components/site-footer.tsx create mode 100644 components/site-header.tsx create mode 100644 components/solutions-tabs.tsx create mode 100644 components/ui/accordion.tsx create mode 100644 components/ui/badge.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/card.tsx create mode 100644 components/ui/dialog.tsx create mode 100644 components/ui/input.tsx create mode 100644 components/ui/label.tsx create mode 100644 components/ui/navigation-menu.tsx create mode 100644 components/ui/separator.tsx create mode 100644 components/ui/sheet.tsx create mode 100644 components/ui/tabs.tsx create mode 100644 components/ui/textarea.tsx (limited to 'components') diff --git a/components/buzz-marquee.tsx b/components/buzz-marquee.tsx new file mode 100644 index 0000000..6d9b33c --- /dev/null +++ b/components/buzz-marquee.tsx @@ -0,0 +1,21 @@ +import { allTerms } from "@/lib/buzz"; + +export function BuzzMarquee() { + const loop = [...allTerms, ...allTerms]; + return ( +
+
+
+
+ {loop.map((term, i) => ( + + {term} + + ))} +
+
+ ); +} diff --git a/components/cta-band.tsx b/components/cta-band.tsx new file mode 100644 index 0000000..cf00d62 --- /dev/null +++ b/components/cta-band.tsx @@ -0,0 +1,34 @@ +import Link from "next/link"; +import { buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; + +export function CtaBand({ + title = "Request access to The Agentic Cloud.", + body = "Invitation-based. An outcomes partner will assess whether your operating thesis, your lake, and our attention-free runtime are prepared to compound.", +}: { + title?: string; + body?: string; +}) { + return ( +
+
+
+
+
+

+ {title} +

+

+ {body} +

+
+ + Request access + +
+
+ ); +} diff --git a/components/dashboard-mock.tsx b/components/dashboard-mock.tsx new file mode 100644 index 0000000..e4407d4 --- /dev/null +++ b/components/dashboard-mock.tsx @@ -0,0 +1,133 @@ +export function DashboardMock() { + return ( +
+
+
+
+ + + +
+

+ Agentic operating surface +

+ + PPoE 94.2 + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AGENT + + + LAKE + + + MESH + + + SYNERGY + + +
+ +
+
+ ); +} + +function Metric({ label, value }: { label: string; value: string }) { + return ( +
+

+ {label} +

+

{value}

+
+ ); +} diff --git a/components/faq-list.tsx b/components/faq-list.tsx new file mode 100644 index 0000000..564df71 --- /dev/null +++ b/components/faq-list.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { faqs } from "@/lib/content"; + +export function FaqList() { + return ( + + {faqs.map((item) => ( + + + {item.q} + + + {item.a} + + + ))} + + ); +} diff --git a/components/glow-orbs.tsx b/components/glow-orbs.tsx new file mode 100644 index 0000000..f9a7072 --- /dev/null +++ b/components/glow-orbs.tsx @@ -0,0 +1,14 @@ +export function GlowOrbs() { + return ( +
+
+
+
+
+
+
+ ); +} diff --git a/components/logo.tsx b/components/logo.tsx new file mode 100644 index 0000000..a512203 --- /dev/null +++ b/components/logo.tsx @@ -0,0 +1,61 @@ +import { cn } from "@/lib/utils"; + +export function Logo({ + className, + markClassName, + wordmark = true, +}: { + className?: string; + markClassName?: string; + wordmark?: boolean; +}) { + return ( + + + + + + + + + + + {wordmark ? ( + + The Agentic Cloud + + ) : null} + + ); +} diff --git a/components/request-form.tsx b/components/request-form.tsx new file mode 100644 index 0000000..8f61337 --- /dev/null +++ b/components/request-form.tsx @@ -0,0 +1,145 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; + +const consumerDomains = [ + "gmail.com", + "yahoo.com", + "hotmail.com", + "outlook.com", + "icloud.com", + "aol.com", + "proton.me", + "protonmail.com", +]; + +type Status = "idle" | "loading" | "success" | "error"; + +export function RequestForm() { + const [status, setStatus] = useState("idle"); + const [error, setError] = useState(""); + + async function onSubmit(e: React.FormEvent) { + e.preventDefault(); + setError(""); + const form = e.currentTarget; + const data = new FormData(form); + const name = String(data.get("name") || "").trim(); + const email = String(data.get("email") || "").trim(); + const company = String(data.get("company") || "").trim(); + const role = String(data.get("role") || "").trim(); + const outcomes = String(data.get("outcomes") || "").trim(); + + if (!name || !email || !company || !role || !outcomes) { + setStatus("error"); + setError("Every field is required. Alignment begins with completeness."); + return; + } + + const domain = email.split("@")[1]?.toLowerCase(); + if (!domain || !email.includes("@")) { + setStatus("error"); + setError("Please provide an institutional email."); + return; + } + if (consumerDomains.includes(domain)) { + setStatus("error"); + setError( + "Consumer inboxes cannot attest PPoE. Please use your institutional email." + ); + return; + } + + setStatus("loading"); + await new Promise((r) => setTimeout(r, 900)); + setStatus("success"); + } + + if (status === "success") { + return ( +
+

+ Request received +

+

+ An outcomes partner will be in touch. +

+

+ Fit is a mutual decision. If your operating thesis, your lake, and + our fabric are prepared to compound, we will schedule a working + session — not a demo. +

+
+ ); + } + + return ( +
+ + + + +
+ +