"use client"; import { createContext, useContext, useEffect, useState } from "react"; import { AnimatePresence, motion } from "framer-motion"; import { ArrowRight, Check, Close } from "@/components/ui/icons"; /** * Global "Start a project" contact popup. Mount once * (in the root layout); open it from anywhere with the useContactModal() hook * or the below. The form is front-end only — wire submit * to your contact endpoint to actually deliver inquiries. */ const EASE = [0.21, 0.47, 0.32, 0.98]; const ContactModalContext = createContext(null); export function useContactModal() { return useContext(ContactModalContext) ?? { open: () => {}, close: () => {} }; } const SERVICES = [ "Web Development", "Mobile App Development", "Game Development", "UI/UX Design", "AI Solutions", "Cloud Services", "Dedicated Team", "Other", ]; const BUDGETS = ["< $10k", "$10k – $50k", "$50k – $100k", "$100k+"]; const COUNTRY_CODES = ["+1", "+91", "+44", "+61", "+49", "+971"]; const PERKS = [ "Reply within one business day", "100% confidential — NDA on request", "Work directly with senior engineers", "Free, no-obligation proposal", ]; const inputClass = "w-full rounded-xl border border-border bg-surface/60 px-4 py-3 text-sm text-foreground placeholder:text-muted-foreground/70 outline-none transition-colors duration-300 focus:border-primary focus:bg-surface"; function UploadIcon({ className = "h-5 w-5" }) { return ( ); } function Field({ label, children }) { return ( ); } function Modal({ onClose }) { const [form, setForm] = useState({ name: "", email: "", phone: "", service: "", message: "" }); const [budget, setBudget] = useState(""); const [cc, setCc] = useState("+1"); const [fileName, setFileName] = useState(""); const [sent, setSent] = useState(false); const [error, setError] = useState(""); const set = (k) => (e) => setForm((f) => ({ ...f, [k]: e.target.value })); useEffect(() => { window.lenis?.stop?.(); const onKey = (e) => e.key === "Escape" && onClose(); document.addEventListener("keydown", onKey); return () => { window.lenis?.start?.(); document.removeEventListener("keydown", onKey); }; }, [onClose]); const submit = (e) => { e.preventDefault(); if (!form.name.trim() || !form.email.trim()) { setError("Please add your name and email."); return; } setError(""); // TODO: POST { ...form, cc, budget, fileName } to your contact endpoint. setSent(true); }; return (
e.stopPropagation()} role="dialog" aria-modal="true" className="relative grid max-h-[92vh] w-full max-w-5xl overflow-hidden rounded-3xl border border-border bg-surface shadow-2xl shadow-black/50 md:grid-cols-[0.85fr_1.15fr]" > {/* Brand panel */}
Start a project

Let's build something great.

Tell us a little about your idea — we'll map the fastest, safest path to ship it.

    {PERKS.map((p) => (
  • {p}
  • ))}
{/* Form panel */}
{sent ? (

Message sent — thank you.

We'll get back to you within one business day.

) : ( <>
Start a project

Let's build something great.

Share your project's vision