// ContactForm.jsx const { useState, useEffect, useRef } = React; const REVENUE_OPTS = [ 'Below €500k', '€500k - €1M', '€1M - €3M', '€3M - €5M', '€5M+', ]; const OFFER_OPTS = [ 'Operational Diagnostic (€2,500)', 'Fractional COO (€3k-€5k/mo)', 'Scale Accelerator (€10k-€20k)', 'Not sure yet', ]; var FORMSPREE_ID = 'mwvjvznl'; function ContactForm({ offer, setOffer }) { var initForm = { name: '', email: '', company: '', revenue: REVENUE_OPTS[0], challenge: '', }; const [form, setForm] = useState(initForm); const [submitted, setSubmitted] = useState(false); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [tab, setTab] = useState('form'); const calReady = useRef(false); const set = (k) => (e) => setForm(Object.assign({}, form, { [k]: e.target.value })); const submit = (e) => { e.preventDefault(); if (!form.name || !form.email) { setError('Please fill in your name and email.'); return; } setError(''); setLoading(true); var payload = Object.assign({}, form, { offer: offer }); var xhr = new XMLHttpRequest(); var url = 'https://formspree.io/f/' + FORMSPREE_ID; xhr.open('POST', url); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('Accept', 'application/json'); xhr.onload = function () { setLoading(false); if (xhr.status === 200) { setSubmitted(true); } else { setError('Something went wrong. Please try again.'); } }; xhr.onerror = function () { setLoading(false); setError('Network error. Please try again.'); }; xhr.send(JSON.stringify(payload)); }; useEffect(() => { if (calReady.current || !window.Cal) return; calReady.current = true; Cal.ns['30min']('inline', { elementOrSelector: '#my-cal-inline-30min', config: { layout: 'month_view', useSlotsViewOnSmallScreen: true, }, calLink: 'anyonecanscale/30min', }); Cal.ns['30min']('ui', { hideEventTypeDetails: false, layout: 'month_view', theme: 'dark', cssVarsPerTheme: { dark: { 'cal-brand': '#22C55E', 'cal-brand-emphasis': '#16A34A', 'cal-bg': '#0F1C2E', 'cal-bg-subtle': '#080E1A', 'cal-border': '#1E2D45', 'cal-border-emphasis': '#334155', 'cal-text': '#F1F5F9', 'cal-text-emphasis': '#F1F5F9', 'cal-text-muted': '#94A3B8', }, }, }); }, []); const Success = (
Thank you — your request has been received. We will be in touch within 24 hours.
); const revenueOpts = REVENUE_OPTS.map((o) => ( )); const offerOpts = OFFER_OPTS.map((o) => ( )); return (
{submitted ? Success : (