// matrix-landing.jsx — отдельная страница «Матрица судьбы» в дизайн-системе Star Path. // Переиспользует LandingNav / Footer / landingStyles из landing.jsx (общая babel-область). // Воронка: free-calc по дате (/api/free/matrix) → email-лид (/api/free/lead) → // CTA на полный разбор (/order/new?product=matrix → guest-checkout). const mxMaskDate = (s) => { const d = (s || '').replace(/\D/g, '').slice(0, 8); const p = [d.slice(0, 2)]; if (d.length >= 3) p.push(d.slice(2, 4)); if (d.length >= 5) p.push(d.slice(4, 8)); return p.filter(Boolean).join('.'); }; const MX_SECTIONS = [ { n: '01', t: 'Ядро личности', d: 'Главный аркан и как тебя видят' }, { n: '02', t: 'Предназначение', d: 'Вектор реализации и смысл пути' }, { n: '03', t: 'Таланты', d: 'Врождённые сильные стороны' }, { n: '04', t: 'Деньги', d: 'Денежный канал и реализация в деле' }, { n: '05', t: 'Отношения', d: 'Как строишь близость и любовь' }, { n: '06', t: 'Кармическая задача', d: 'Главный урок души' }, { n: '07', t: 'Рекомендации', d: 'Конкретные практики по матрице' }, { n: '08', t: 'Октаграмма', d: 'Все 22 аркана на твоей карте' }, ]; const MatrixLanding = () => { const [dob, setDob] = React.useState(''); const [result, setResult] = React.useState(null); const [calculating, setCalculating] = React.useState(false); const [err, setErr] = React.useState(null); const [email, setEmail] = React.useState(''); const [leadConsent, setLeadConsent] = React.useState(false); const [leadSent, setLeadSent] = React.useState(false); const isoDob = () => { const m = (dob || '').match(/^(\d{1,2})[.\-/](\d{1,2})[.\-/](\d{4})$/); return m ? `${m[3]}-${m[2].padStart(2, '0')}-${m[1].padStart(2, '0')}` : ''; }; const calc = async () => { const iso = isoDob(); if (!iso) { setErr('Введи дату в формате ДД.ММ.ГГГГ'); return; } setErr(null); setCalculating(true); try { const r = await fetch('/api/free/matrix', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ born_date: iso }), }); const d = await r.json(); if (!r.ok) throw new Error(d.error || 'Не удалось рассчитать'); setResult(d); } catch (e) { setErr(e.message || 'Ошибка'); } finally { setCalculating(false); } }; const sendLead = async () => { if (!email.includes('@')) { setErr('Укажи корректный email'); return; } if (!leadConsent) { setErr('Подтверди согласие с условиями'); return; } setErr(null); try { await fetch('/api/free/lead', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email.trim(), kind: 'matrix', born_date: isoDob() }), }); } catch (_) { /* best-effort */ } setLeadSent(true); }; const goOrder = () => { window.location.href = '/order/new?product=matrix'; }; const inputStyle = { padding: '14px 16px', borderRadius: '10px', border: '1px solid var(--line)', background: 'rgba(255,255,255,0.03)', color: 'var(--ink-primary)', fontSize: '17px', textAlign: 'center', letterSpacing: '0.04em', width: '100%', }; // Карточка free-calc: либо форма, либо результат. const calcCard = (
{result.teaser}
Хочешь полный разбор всех 9 точек — предназначение, деньги, отношения, карма?
setEmail(e.target.value)} placeholder="email — пришлём детали" style={{ ...inputStyle, fontSize: '15px', letterSpacing: 0 }} /> > )} {leadSent &&Система самопознания на 22 арканах Таро. Без времени и места рождения — нужна только дата. Узнай свой главный аркан за минуту, а полный разбор раскроет предназначение, деньги и отношения.