Спасибо, {data.name.split(' ')[0]}! Мы получили заявку на {data.direction}, {data.date} в {data.time}.
Администратор позвонит вам на номер {data.phone}.
) : (
<>
{[1, 2, 3].map((s) => (
= s ? 'is-done' : ''} ${step === s ? 'is-active' : ''}`}>
{s}
{s === 1 ? 'Направление' : s === 2 ? 'Дата и время' : 'Контакты'}
Спасибо! Мы получили {files.length} {pluralFiles(files.length)}. Координатор свяжется с вами на номер {data.phone} в течение 24 часов, чтобы подтвердить состав консилиума.
) : (
)}
);
};
// ============ HELPERS ============
function generateDates(count) {
const out = [];
const dows = ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ'];
const months = ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
const now = new Date();
for (let i = 0; i < count; i++) {
const d = new Date(now);
d.setDate(now.getDate() + i);
const day = d.getDate();
const month = months[d.getMonth()];
out.push({
iso: d.toISOString().slice(0, 10),
dow: dows[d.getDay()],
day,
month,
label: `${day} ${month}`,
});
}
return out;
}
function formatPhone(v) {
const digits = v.replace(/\D/g, '').slice(0, 11);
if (!digits) return '';
const d = digits.startsWith('8') ? '7' + digits.slice(1) : digits;
const p = d.padEnd(11, ' ').split('');
let out = '+' + p[0];
if (digits.length > 1) out += ' (' + p.slice(1, 4).join('').trim();
if (digits.length > 4) out += ') ' + p.slice(4, 7).join('').trim();
if (digits.length > 7) out += '-' + p.slice(7, 9).join('').trim();
if (digits.length > 9) out += '-' + p.slice(9, 11).join('').trim();
return out.trim();
}
function pluralFiles(n) {
const last = n % 10;
const teens = n % 100;
if (teens >= 11 && teens <= 14) return 'файлов';
if (last === 1) return 'файл';
if (last >= 2 && last <= 4) return 'файла';
return 'файлов';
}
Object.assign(window, { Modal, BookingModal, SecondOpinionModal });