import React from "react";
import { motion, useScroll, useTransform } from "framer-motion";
import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import {
Mail, Sparkles, Rocket, Cpu, Shield, MoveRight,
Sun, Moon, Map, Github, Linkedin, Twitter
} from "lucide-react";
/**
* Spidroid.com 2.0 – Single-file React page
* Tech: TailwindCSS, Framer Motion, shadcn/ui, lucide-react
*
* Notes:
* - Plug into Next.js 14/15 app route or CRA. Default export renders the whole landing.
* - Uses Tailwind utility classes; ensure Tailwind is enabled globally.
* - All content is placeholder copy structured for quick CMS swap.
*/
// ---- Small design tokens
const brand = {
red: "#FF3131",
blue: "#3A7BFF",
ink: "#0E0E10",
paper: "#F5F5F7",
};
function useParallax(yStart = -100, yEnd = 100) {
const { scrollYProgress } = useScroll();
const y = useTransform(scrollYProgress, [0, 1], [yStart, yEnd]);
return y;
}
const Nav = () => (
{[
{ label: "Solutions", href: "#solutions" },
{ label: "Roadmap", href: "#roadmap" },
{ label: "Team", href: "#team" },
{ label: "Careers", href: "#careers" },
{ label: "Contact", href: "#contact" },
].map((i) => (
{i.label}
))}
);
const ThemeToggle = () => {
const [dark, setDark] = React.useState(true);
React.useEffect(() => {
const root = document.documentElement;
if (dark) root.classList.add("dark");
else root.classList.remove("dark");
}, [dark]);
return (
);
};
const Hero = () => {
const y1 = useParallax(-40, 40);
const y2 = useParallax(20, -20);
return (
{/* Glow orbs */}
Enterprise‑grade by design
Building the Operating System of the Future
We ship frontier experiences across mobile, web and AI. From Horizon to Starry, our stack operationalizes ambition into outcomes.
{/* Futuristic visual panel */}
{/* Placeholder synthetic graphic */}
RED‑X Visor Engine
);
};
const SectionHeader = ({ eyebrow, title, copy }: { eyebrow: string; title: string; copy?: string }) => (
{eyebrow}
{title}
{copy &&
{copy}
}
);
const Solutions = () => (
{[
{
name: "Horizon",
tagline: "Next‑gen social OS for creators",
bullets: ["Modular posts", "Realtime feed", "AI assist"],
},
{
name: "Starry",
tagline: "Authentic connections. Signal over noise.",
bullets: ["Smart discovery", "Privacy‑first", "Creator tools"],
},
{
name: "Admin Dashboard",
tagline: "Cross‑platform command center",
bullets: ["Analytics", "Moderation", "Growth ops"],
},
].map((p) => (
{p.name}
Alpha
{p.tagline}
{p.bullets.map((b) => (
- {b}
))}
))}
);
const Roadmap = () => (
{[
{ q: "Q4 • 2025", t: "Horizon AI Co‑pilot", d: "On‑device inference for creation, moderation and safety." },
{ q: "Q1 • 2026", t: "Admin Command Center", d: "Unified analytics & growth operations across platforms." },
{ q: "Q3 • 2026", t: "Starry Global Launch", d: "Phased go‑to‑market across Africa, EU and U.S." },
{ q: "2027", t: "SpidroidOS Public Preview", d: "Convergent interface: mobile + ambient + web." },
].map((m, idx) => (
))}
);
const TeamCareers = () => (
{[1,2,3].map((i) => (
Vision Lead #{i}
Product & Systems
))}
{[
{ role: "Senior Android Engineer (Java)", tag: "Horizon" },
{ role: "Full‑Stack Engineer (Next.js)", tag: "Admin" },
{ role: "3D/Visual Designer", tag: "Brand" },
{ role: "Product Manager", tag: "Growth" },
].map((r) => (
))}
);
const Contact = () => (
);
const Footer = () => (
);
export default function SpidroidHomepage() {
return (
);
}