'use client'; import { Icon } from '@barev/ui'; import { useEffect, useState } from 'react'; import imgL from '../assets/flowers/l.jpg'; import imgM from '../assets/flowers/m.jpg'; import imgS from '../assets/flowers/s.jpg'; import { BotLink } from './client'; /** Цены за одну доставку; при еженедельной подписке — своя цена (≈ −10%) */ const PLANS = [ { id: 's', letter: 'S', name: 'Мини', stems: 10, stemsLabel: '9–11 стеблей', photo: imgS, alt: 'Букет S: розовые кустовые розы, белая альстромерия и эвкалипт в крафте', base: 9900, week: 8900, salon: '13–15 тыс. ֏', features: ['Сезонный микс от флориста', 'Для кухни или рабочего стола, ~35 см', 'Крафт-упаковка и подкормка'], }, { id: 'm', letter: 'M', name: 'Классика', stems: 16, stemsLabel: '15–17 стеблей', photo: imgM, alt: 'Букет M: персиковые пионовидные розы, сиреневая эустома и белые хризантемы в крафте', base: 14900, week: 13400, salon: '19–23 тыс. ֏', features: ['Сезонный микс с акцентными цветами', 'Для гостиной, ~45 см', 'Ваза к первому букету — остаётся у вас'], }, { id: 'l', letter: 'L', name: 'Пышный', stems: 27, stemsLabel: '25–30 стеблей', photo: imgL, alt: 'Букет L: розовые розы, белая гортензия, ранункулюсы и эустома в крафте', base: 22900, week: 20600, salon: '30–42 тыс. ֏', features: ['Эустома, пионовидные розы и другие премиальные сорта', 'Заметен с порога, ~55 см', 'Ваза к первому букету — остаётся у вас'], }, ] as const; const FREQ = [ { id: 'week', label: 'Каждую неделю', perMonth: 4.3 }, { id: 'biweek', label: 'Раз в 2 недели', perMonth: 2.15 }, { id: 'month', label: 'Раз в месяц', perMonth: 1 }, ] as const; type FreqId = (typeof FREQ)[number]['id']; const amd = (n: number) => `${Math.round(n).toLocaleString('ru-RU')} ֏`; const round10 = (n: number) => Math.round(n / 10) * 10; const round100 = (n: number) => Math.round(n / 100) * 100; /** Тарифы S/M/L как клубные карты главной; частота меняет цену и «≈ в месяц» */ export function FlowerPlans() { const [freq, setFreq] = useState('biweek'); const f = FREQ.find((x) => x.id === freq)!; return (

Выберите свой букет

Цена за одну доставку, доставка по Еревану уже включена. Без договоров: пауза и отмена в один клик.

{FREQ.map((x) => ( ))}
{PLANS.map((p) => { const price = freq === 'week' ? p.week : p.base; const monthly = price * f.perMonth; const saving = (p.base - p.week) * f.perMonth; return (
{p.id === 'm' && Выбирают чаще всего} {p.alt}
Barev Club · Цветы

{p.name}

{amd(price)} / букет
{p.stemsLabel} ≈ {amd(price / p.stems)} за стебель ≈ {amd(round10(monthly / 30))} в день

В салоне похожий букет — {p.salon} + доставка

    {p.features.map((x) => (
  • {x}
  • ))}

{freq === 'month' ? 'Одна доставка в месяц' : `≈ ${amd(round100(monthly))} в месяц`} {freq === 'week' && · экономия {amd(round100(saving))} в месяц}

Оформить {p.letter}
); })}

Оплата картой ArCa, Visa или Mastercard — за 2 дня до каждой доставки. Предоплаты за месяц нет.

); } /** Ближайшая доставка: через 2 дня, если оформить до 20:00, иначе через 3; в воскресенье не возим. Считается в браузере — страница кешируется */ export function NextDelivery() { const [text, setText] = useState<{ date: string; when: string } | null>(null); useEffect(() => { const now = new Date(); const early = now.getHours() < 20; const d = new Date(now); d.setDate(d.getDate() + (early ? 2 : 3)); if (d.getDay() === 0) d.setDate(d.getDate() + 1); setText({ date: d.toLocaleDateString('ru-RU', { weekday: 'long', day: 'numeric', month: 'long' }), when: early ? 'сегодня' : 'завтра' }); }, []); if (!text) return null; return (

Ближайшая доставка — {text.date}, если оформить {text.when} до 20:00

); }