// Каталог · Услуги — полный список с готовыми комбо в начале.
// ── Иконки услуг (Lucide-style, контурные) ──────────────────────────
const sIco = (paths, vb = '0 0 24 24') => ({ size = 28, stroke = 1.5 } = {}) => (
);
// Аудит и исследование
const SIcoSearchDoc = sIco(<>
>);
const SIcoCompare = sIco(<>
>);
const SIcoReelSearch = sIco(<>
>);
const SIcoClipboardCheck = sIco(<>
>);
// Брендирование
const SIcoBook = sIco(<>
>);
const SIcoLayout = sIco(<>
>);
const SIcoCover = sIco(<>
>);
const SIcoPostDesign = sIco(<>
>);
const SIcoStoryDesign = sIco(<>
>);
// Контент-пакеты
const SIcoText = sIco(<>
>);
const SIcoStack = sIco(<>
>);
const SIcoCalendar = sIco(<>
>);
const SIcoReel = sIco(<>
>);
const SIcoStories = sIco(<>
>);
const SIcoArticle = sIco(<>
>);
const SIcoMail = sIco(<>
>);
// Маркетинговые кампании
const SIcoTarget = sIco(<>
>);
const SIcoWarmup = sIco(<>
>);
const SIcoMegaphone = sIco(<>
>);
const SIcoGift = sIco(<>
>);
const SIcoShield = sIco(<>
>);
// Прочие
const SIcoReport = sIco(<>
>);
const SIcoUsers = sIco(<>
>);
const SIcoStar = sIco(<>
>);
const SIcoChat = sIco(<>
>);
// Комбо
const SIcoCombo1 = sIco(<>
>);
const SIcoCombo2 = sIco(<>
>);
const SIcoCombo3 = sIco(<>
>);
const SIcoCheck = sIco(<>>, '0 0 24 24');
// ── Данные ──────────────────────────────────────────────────────────
const COMBOS = [
{
Icon: SIcoCombo1, title: 'Старт под ключ',
desc: 'Аудит + Брендбук + 30 постов',
oldPrice: '24 000', price: '19 900', badge: '−17%',
},
{
Icon: SIcoCombo2, title: 'Реанимация',
desc: 'Анализ + Контент-стратегия + 50 постов',
oldPrice: '32 000', price: '24 900', badge: '−22%',
},
{
Icon: SIcoCombo3, title: 'Лаунч-кампания',
desc: 'Брендбук + Контент-план + Запуск + 60 постов',
oldPrice: '42 000', price: '34 900', badge: '−17%',
},
];
const CATEGORIES = [
{
id: 'audit', title: 'Аудит и исследование',
services: [
{ Icon: SIcoSearchDoc, title: 'Аудит VK-сообщества', desc: 'Парсинг группы, ER, контент, частота. Отчёт в PDF', price: '3 500' },
{ Icon: SIcoCompare, title: 'Анализ конкурентов в нише', desc: 'Топ-3 групп, метрики, рекомендации по позиционированию', price: '4 900', inPlan: true },
{ Icon: SIcoReelSearch, title: 'Анализ Reels-конкурентов', desc: '5 топовых видео в нише, разбор хука, темпа и CTA', price: '5 900' },
{ Icon: SIcoClipboardCheck, title: 'Аудит контент-плана клиента', desc: 'Анализ текущего контента, метрики, точки роста', price: '3 900' },
],
},
{
id: 'brand', title: 'Брендирование и дизайн',
services: [
{ Icon: SIcoBook, title: 'Создание брендбука', desc: 'Профиль бренда, гайд, рубрикатор и примеры постов', price: '12 000' },
{ Icon: SIcoLayout, title: 'Оформление сообщества VK', desc: 'Обложка, аватар, закреп, карточки товаров, баннеры', price: '6 500' },
{ Icon: SIcoCover, title: 'Шапка и аватары для соцсетей', desc: 'Комплект для VK и Telegram, адаптированные размеры', price: '3 200' },
{ Icon: SIcoPostDesign, title: 'Дизайн поста (1 единица)', desc: 'Один пост-карточка с текстом и изображением', price: '1 200' },
{ Icon: SIcoStoryDesign, title: 'Дизайн истории (1 единица)', desc: 'Одна сторис со статичным или анимированным дизайном', price: '800' },
],
},
{
id: 'content', title: 'Контент-пакеты',
services: [
{ Icon: SIcoText, title: 'Текст поста (1 шт)', desc: 'Один пост: тема, тон, призыв к действию', price: '600' },
{ Icon: SIcoStack, title: 'Серия постов «10 шт»', desc: '10 связанных постов под кампанию, адаптация под площадки', price: '4 800' },
{ Icon: SIcoCalendar, title: 'Контент-план на месяц', desc: '30 постов с расписанием, тонами и форматами', price: '5 900' },
{ Icon: SIcoReel, title: 'Сценарий Reels', desc: 'Полный сценарий 15–30 секунд с раскадровкой', price: '2 400' },
{ Icon: SIcoStories, title: 'Сценарий сторис (5 шт)', desc: 'Серия из 5 связанных историй с воронкой', price: '1 900' },
{ Icon: SIcoArticle, title: 'Лонгрид-статья', desc: 'Подробный материал на 4–6 тысяч знаков с заголовками', price: '3 500' },
{ Icon: SIcoMail, title: 'Email-рассылка', desc: 'Текст письма + структура + призыв, адаптация под сегменты', price: '2 800' },
],
},
{
id: 'campaigns', title: 'Маркетинговые кампании',
services: [
{ Icon: SIcoTarget, title: 'Запуск таргета VK', desc: 'Настройка кабинета, 3 креатива, тестовые сегменты', price: '7 500' },
{ Icon: SIcoWarmup, title: 'Прогрев перед запуском', desc: 'Серия постов и сторис, прогрев аудитории за 7–10 дней', price: '9 800' },
{ Icon: SIcoMegaphone, title: 'Промокампания (пост + истории + рилс)', desc: 'Комплект форматов под одну акцию с единой механикой', price: '8 400' },
{ Icon: SIcoGift, title: 'Конкурс / Розыгрыш', desc: 'Механика, тексты, визуалы, регламент подведения итогов', price: '5 600' },
{ Icon: SIcoShield, title: 'Анти-кризис в комментариях', desc: 'Тактика ответа, шаблоны, мониторинг 7 дней', price: '4 200' },
],
},
{
id: 'misc', title: 'Прочие сервисы',
services: [
{ Icon: SIcoReport, title: 'Ежемесячный отчёт для клиента', desc: 'PDF с метриками публикаций и рекомендациями', price: '1 500', inPlan: true },
{ Icon: SIcoUsers, title: 'Парсинг аудитории VK', desc: '500–1000 потенциальных подписчиков по фильтрам', price: '2 400' },
{ Icon: SIcoStar, title: 'Сбор отзывов с конкурентов', desc: 'До 50 отзывов с разбором тональности и тегов', price: '3 100' },
{ Icon: SIcoChat, title: 'Консультация по SMM (1 час)', desc: 'Звонок-сессия со специалистом, ответы на ваши вопросы', price: '3 500' },
],
},
];
// ── Маленькие хелперы ───────────────────────────────────────────────
function pluralRu(n, forms) {
const mod10 = n % 10, mod100 = n % 100;
if (mod10 === 1 && mod100 !== 11) return forms[0];
if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) return forms[1];
return forms[2];
}
const usl = (n) => `${n} ${pluralRu(n, ['услуга', 'услуги', 'услуг'])}`;
const kombo = (n) => `${n} ${pluralRu(n, ['комбо', 'комбо', 'комбо'])}`;
function SectionHeader({ title, count, kind = 'усл' }) {
return (
{title}
{kind === 'комбо' ? kombo(count) : usl(count)}
);
}
// ── Карточка услуги ────────────────────────────────────────────────
function ServiceCard({ s }) {
const isMobile = window.useIsMobile ? window.useIsMobile() : false;
return (
{s.price} ₽
{s.inPlan && (
включено в тарифы
)}
);
}
// ── Карточка комбо ──────────────────────────────────────────────────
function ComboCard({ c }) {
const isMobile = window.useIsMobile ? window.useIsMobile() : false;
return (
{c.badge}
{c.title}
{c.desc}
{c.oldPrice} ₽
{c.price} ₽
);
}
// ── Главная страница услуг ──────────────────────────────────────────
function CatalogServices() {
const isMobile = window.useIsMobile ? window.useIsMobile() : false;
const gridCols = isMobile ? '1fr' : 'repeat(3, minmax(0, 1fr))';
return (
<>
{/* Готовые комбо */}
{/* 5 категорий */}
{CATEGORIES.map((cat) => (
{cat.services.map((s, i) => )}
))}
>
);
}
Object.assign(window, { CatalogServices });