// confirmation.jsx — Page 4: Booking Confirmation function ConfirmationPage({ navigate, formData, booking, tweaks, devMode }) { const dt = booking.time ? new Date(booking.time) : (booking.startTime ? new Date(booking.startTime) : null); const dateStr = dt ? dt.toLocaleDateString("ru-RU", { day: "numeric", month: "long", year: "numeric", weekday: "long" }) : "—"; const timeStr = dt ? dt.toLocaleTimeString("ru-RU", { hour: "2-digit", minute: "2-digit" }) : (booking.time || "—"); const [confirmContent, setConfirmContent] = React.useState(null); React.useEffect(() => { fetch("/api/confirmation-page") .then(r => r.ok ? r.json() : null) .then(d => { if (d) setConfirmContent(d); }) .catch(() => {}); }, []); const cc = confirmContent || {}; return (

{cc.heading || "Консультация забронирована!"}

{(() => { const tpl = cc.subheading || "Мы отправили детали встречи на {email}. До встречи!"; const parts = tpl.split("{email}"); if (parts.length === 1) return tpl; return <>{parts[0]}{formData.email || "вашу почту"}{parts[1]}; })()}

{/* Details + prep */}
Детали консультации

Подтверждение встречи

} label="Дата" value={{dateStr}}/> } label="Время" value={timeStr}/> } label="Формат" value="Онлайн"/> } label="Консультант" value={cc.consultant_name || "Денис Власин"}/>
Ссылка на встречу
Calendly пришлёт ссылку на ваш email
Что подготовить

{cc.prep_heading || "Перед консультацией"}

    {(cc.prep_bullets || [ "Ваше резюме / CV — мы уже получили", "Документы об образовании (если есть)", "Список ваших вопросов", "Блокнот и ручка, чтобы делать заметки", "Стабильное интернет-соединение", ]).map((b, i) => (
  • {b}
  • ))}
Если у вас изменятся планы {cc.cancellation_policy || "Пожалуйста, сообщите нам не позднее, чем за 24 часа — мы перенесём консультацию бесплатно."}
Есть вопросы? Напишите нам в Telegram — мы всегда на связи.
{devMode && (
)}
); } function DetailRow({ icon, label, value }) { return (
{icon}
{label} {value}
); } window.ConfirmationPage = ConfirmationPage;