import React, { useState, useEffect } from "react"; // Установите здесь дату и время старта продажи в формате ISO (в часовом поясе владельца). // Пример: '2025-11-25T09:00:00-05:00' (America/New_York) const SALE_START_ISO = '2025-11-25T00:00:00-05:00'; export default function MarathonLanding() { const [now, setNow] = useState(new Date()); useEffect(() => { const t = setInterval(() => setNow(new Date()), 1000); return () => clearInterval(t); }, []); const saleStart = new Date(SALE_START_ISO); const diffMs = now - saleStart; // Ценообразование по логике, предоставленной пользователем: // 0–48 часов: 990₽ // 48 часов–5 дней: 1490₽ // дальше: 1990₽ const hoursFromStart = diffMs / (1000 * 60 * 60); let currentPrice = 1990; let priceLabel = '1990₽ — стандартная цена'; if (hoursFromStart >= 0 && hoursFromStart <= 48) { currentPrice = 990; priceLabel = '990₽ — первые 48 часов'; } else if (hoursFromStart > 48 && hoursFromStart <= 24 * 5) { currentPrice = 1490; priceLabel = '1490₽ — в течение 5 дней после акции'; } function formatTimeLeft(ms) { if (ms <= 0) return '0d 0h 0m 0s'; const s = Math.floor(ms / 1000); const days = Math.floor(s / 86400); const hours = Math.floor((s % 86400) / 3600); const minutes = Math.floor((s % 3600) / 60); const seconds = s % 60; return `${days}d ${hours}h ${minutes}m ${seconds}s`; } // Таймер до конца текущего прайс-диапазона let rangeEnd = saleStart.getTime() + 48 * 3600 * 1000; // по умолчанию конец 48 часов if (hoursFromStart > 48 && hoursFromStart <= 24 * 5) { rangeEnd = saleStart.getTime() + 24 * 3600 * 1000 * 5; // 5 дней } else if (hoursFromStart < 0) { rangeEnd = saleStart.getTime(); // продажа ещё не стартовала } const timeLeftMs = rangeEnd - now.getTime(); // Простейшая валидация формы — на стороне клиента только демонстрация const [form, setForm] = useState({ name: '', email: '' }); const [sent, setSent] = useState(false); function submit(e) { e.preventDefault(); // Здесь нужно подключить платеж/CRM. Сейчас — мок. setSent(true); setTimeout(() => alert(`Спасибо, ${form.name}! Вы выбрали тариф ${currentPrice}₽ (демо).`), 100); } return (
Марафон Стройности 2.0
{/* HERO */}

Марафон Стройности 2.0

Комплексная обновлённая программа: питание, тренировки, медитации, поддержка эксперта — и доступ навсегда.

  • ✔️ Готовое питание + список продуктов
  • ✔️ Тренировки с тренером (видео)
  • ✔️ Медитации и мотивация
  • ✔️ Вебинары с экспертом + запись
  • ✔️ Обратная связь, Доступ навсегда
Таймер: {hoursFromStart < 0 ? 'Продажа начнётся: ' + new Date(saleStart).toLocaleString() : formatTimeLeft(timeLeftMs)}
{/* Placeholder для видео/иллюстрации */}
Видео-презентация
Короткое заставочное видео эксперта (вставьте своё).
100+
участниц
4–8 кг
средний результат
Навсегда
доступ к материалам
{/* PROGRAM */}

Что входит в программу

Кому подходит марафон

  • — Тем, кто хочет похудеть спокойно и без жёстких диет
  • — Тем, кто хочет привычки, а не временный результат
  • — Тем, кто ценит поддержку тренера и эксперта

Гарантии и обещания

Мы даём рабочую систему, проверенную на практике. Возврат обсуждается в первые 7 дней — подробно в договоре.

{/* PRICING */}

Цена и тарифы

Выберите подходящий момент — цена меняется автоматически.

Текущая цена
{currentPrice}₽
{priceLabel}
{/* TESTIMONIALS */}

Отзывы участников

{/* FAQ + Signup */}

Частые вопросы

Сколько длится марафон?
Основной курс рассчитан на 4 недели. Доступ к материалам сохраняется навсегда.
Подойдёт ли мне программа, если я новичок?
Да. Все тренировки содержат модификации для новичков и для продвинутых.
Можно ли вернуть деньги?
Политика возврата обсуждается индивидуально (рекомендуем указать 7-дневный пробный период в договоре).

Запись на марафон

{sent ? (
Заявка принята. Проверьте почту для инструкции по оплате (демо).
) : (
setForm({ ...form, name: e.target.value })} required className="mt-1 w-full rounded border p-2" />
setForm({ ...form, email: e.target.value })} required className="mt-1 w-full rounded border p-2" />
Безопасная оплата, все данные защищены.
)}
{/* FOOTER */}
© {new Date().getFullYear()} Марафон Стройности • Все права защищены
Политика возврата • Договор оферты • Контакты
); } function FeatureCard({ title, desc }) { return (

{title}

{desc}

); } function PriceCard({ title, price, sub, active }) { return (
{title}
{price}
{sub}
); } function Testimonial({ name, text }) { return (
{name}

“{text}”

); }
Made on
Tilda