// application-form.jsx — Shared "Work with me" application form.
// Used by the home page enquiry section AND the dedicated service pages.
// Relies on the global (defined in nav-hero.jsx or page-chrome.jsx).
const APPLY_INTEREST = [
'The Content Retainer',
'Content Production',
'The Signature Day',
'A little of everything',
'Not sure yet — let’s talk',
];
const APPLY_INVESTMENT = [
'1K – 2K AED',
'2K – 3K AED',
'3K – 4K AED',
'4K – 5K AED',
'5K+ AED',
'Still figuring it out',
];
const APPLY_SOURCE = [
'Instagram',
'TikTok',
'Word of mouth',
'Google search',
'A brand I’ve worked with',
'Somewhere else',
];
const APPLY_BLANK = {
name: '', brand: '', email: '', handle: '',
interest: '', start: '', challenge: '', investment: '', source: '',
botcheck: false,
};
// Web3Forms — free, 250 submissions/month.
// Get an access key at https://web3forms.com (enter Lamia’s email, verify, copy the key).
const WEB3FORMS_KEY = '5b8cd53f-3b4c-40e9-af8e-1398a800a35d';
function ApplicationForm({
eyebrow = 'Apply now',
heading = <>Work with me.>,
intro = 'Tell me where your brand is and where you want it to go. Share a few details below and I’ll come back within 48 hours — usually with a short questionnaire and a discovery call.',
}) {
const [form, setForm] = React.useState(APPLY_BLANK);
const [sent, setSent] = React.useState(false);
const [error, setError] = React.useState(false);
const set = (k) => (e) => setForm((f) => ({ ...f, [k]: e.target.value }));
const submit = async (e) => {
e.preventDefault();
if (form.botcheck) return; // honeypot triggered — silent discard
setError(false);
try {
const res = await fetch('https://api.web3forms.com/submit', {
method: 'POST',
body: JSON.stringify({ ...form, access_key: WEB3FORMS_KEY }),
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
});
const data = await res.json();
if (data.success) {
setSent(true);
setTimeout(() => {
const el = document.querySelector('.form-success');
if (el) el.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, 60);
} else {
setError(true);
}
} catch (err) {
setError(true);
}
};
return (
{eyebrow}
{heading}
{intro}
{!sent ? (
) : (
Sent — Thank you
Talk soon, {form.name || 'friend'}.
Your application is in. I'll come back within 48 hours with next steps —
usually a short questionnaire and a discovery call.
)}
);
}
Object.assign(window, { ApplicationForm });