// Каталог · Услуги — полный список с готовыми комбо в начале. // ── Иконки услуг (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.title}
{s.desc}
{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 ( <>
{/* Готовые комбо */}
{COMBOS.map((c, i) => )}
{/* 5 категорий */} {CATEGORIES.map((cat) => (
{cat.services.map((s, i) => )}
))}
); } Object.assign(window, { CatalogServices });