From 1a1871f5f36e8490560955f802eccde50187a18f Mon Sep 17 00:00:00 2001 From: Web-serfer Date: Sun, 19 Apr 2026 22:57:29 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=BE=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/base/CTA.astro | 4 +- .../components/base/ConsultationModal.astro | 125 ++++--- .../components/services/PricingPlans.astro | 1 - frontend/src/pages/blog/index.astro | 1 + frontend/src/pages/blog/page/[page].astro | 1 + frontend/src/pages/blog/search.astro | 1 + .../src/pages/services/accident-help.astro | 6 - frontend/src/pages/services/appeal.astro | 6 - .../src/pages/services/blame-appeal.astro | 9 +- frontend/src/pages/services/casco.astro | 9 +- .../pages/services/court-representation.astro | 9 +- frontend/src/pages/services/damages.astro | 9 +- .../src/pages/services/decree-appeal.astro | 346 ++++++++++++++++++ .../src/pages/services/gibdd-review.astro | 9 +- frontend/src/pages/services/index.astro | 6 - .../pages/services/license-challenge.astro | 12 +- .../src/pages/services/license-return.astro | 8 +- frontend/src/pages/services/osago.astro | 9 +- 18 files changed, 429 insertions(+), 142 deletions(-) create mode 100644 frontend/src/pages/services/decree-appeal.astro diff --git a/frontend/src/components/base/CTA.astro b/frontend/src/components/base/CTA.astro index 89c334b..350a1d2 100644 --- a/frontend/src/components/base/CTA.astro +++ b/frontend/src/components/base/CTA.astro @@ -7,6 +7,7 @@ interface CTAProps { description: string; btnText?: string; btnHref?: string; + modalTarget?: string; variant?: 'default' | 'consultation'; } @@ -16,6 +17,7 @@ const { description, btnText, btnHref = "#contact", + modalTarget, variant = 'default' } = Astro.props as CTAProps; @@ -37,7 +39,7 @@ const iconPaths: Record = {

{title}

{description}

{btnText && ( - )} diff --git a/frontend/src/components/base/ConsultationModal.astro b/frontend/src/components/base/ConsultationModal.astro index 9108900..d1a9fb9 100644 --- a/frontend/src/components/base/ConsultationModal.astro +++ b/frontend/src/components/base/ConsultationModal.astro @@ -69,14 +69,18 @@ const title = 'Бесплатная консультация'; modal.classList.add('active'); modal.setAttribute('aria-hidden', 'false'); document.body.style.overflow = 'hidden'; + modal.removeAttribute('inert'); startAutoCloseTimer(); } function closeModal() { if (!modal) return; + document.activeElement?.blur(); modal.classList.remove('active'); modal.setAttribute('aria-hidden', 'true'); document.body.style.overflow = ''; + document.body.setAttribute('inert', ''); + setTimeout(() => document.body.removeAttribute('inert'), 100); resetAutoCloseTimer(); } @@ -175,22 +179,20 @@ const title = 'Бесплатная консультация'; })(); - diff --git a/frontend/src/components/services/PricingPlans.astro b/frontend/src/components/services/PricingPlans.astro index 397195e..6904372 100644 --- a/frontend/src/components/services/PricingPlans.astro +++ b/frontend/src/components/services/PricingPlans.astro @@ -48,7 +48,6 @@ const finalSectionDesc = sectionDesc || "Прозрачные цены без с - {plan.btnText} ))} diff --git a/frontend/src/pages/blog/index.astro b/frontend/src/pages/blog/index.astro index 6f25e3f..1b9731b 100644 --- a/frontend/src/pages/blog/index.astro +++ b/frontend/src/pages/blog/index.astro @@ -63,6 +63,7 @@ const formatDate = (date: string) => { categoryColor={post.categoryColor} date={formatDate(post.date)} readTime={post.readTime} + readmeTime={post.readmeTime} image={getPostImageUrl(post)} slug={`/blog/${post.slug}`} /> diff --git a/frontend/src/pages/blog/page/[page].astro b/frontend/src/pages/blog/page/[page].astro index 69bebf7..a4d4512 100644 --- a/frontend/src/pages/blog/page/[page].astro +++ b/frontend/src/pages/blog/page/[page].astro @@ -66,6 +66,7 @@ const formatDate = (date: string) => { categoryColor={post.categoryColor} date={formatDate(post.date)} readTime={post.readTime} + readmeTime={post.readmeTime} image={getPostImageUrl(post)} slug={`/blog/${post.slug}`} /> diff --git a/frontend/src/pages/blog/search.astro b/frontend/src/pages/blog/search.astro index b350b03..25ababf 100644 --- a/frontend/src/pages/blog/search.astro +++ b/frontend/src/pages/blog/search.astro @@ -78,6 +78,7 @@ const formatDate = (date: string) => { categoryColor={post.categoryColor} date={formatDate(post.date)} readTime={post.readTime} + readmeTime={post.readmeTime} image={getPostImageUrl(post)} slug={`/blog/${post.slug}`} /> diff --git a/frontend/src/pages/services/accident-help.astro b/frontend/src/pages/services/accident-help.astro index 84a65a5..c27cca6 100644 --- a/frontend/src/pages/services/accident-help.astro +++ b/frontend/src/pages/services/accident-help.astro @@ -182,12 +182,6 @@ const faqsData = [ sectionTitle="Частые вопросы" sectionDesc="Ответы на популярные вопросы о помощи при ДТП" /> - diff --git a/frontend/src/pages/services/appeal.astro b/frontend/src/pages/services/appeal.astro index ecb6855..5d4da58 100644 --- a/frontend/src/pages/services/appeal.astro +++ b/frontend/src/pages/services/appeal.astro @@ -182,12 +182,6 @@ const faqsData = [ sectionTitle="Частые вопросы" sectionDesc="Ответы на популярные вопросы об обжаловании судебных решений" /> - diff --git a/frontend/src/pages/services/blame-appeal.astro b/frontend/src/pages/services/blame-appeal.astro index 8652e9e..bd4c1eb 100644 --- a/frontend/src/pages/services/blame-appeal.astro +++ b/frontend/src/pages/services/blame-appeal.astro @@ -180,14 +180,7 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы об оспаривании вины" - /> - + sectionDesc="Ответы на популярные вопросы об оспаривании вины" /> diff --git a/frontend/src/pages/services/casco.astro b/frontend/src/pages/services/casco.astro index d705013..a94c6b0 100644 --- a/frontend/src/pages/services/casco.astro +++ b/frontend/src/pages/services/casco.astro @@ -180,14 +180,7 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы о спорах по КАСКО" - /> - + sectionDesc="Ответы на популярные вопросы о спорах по КАСКО" /> diff --git a/frontend/src/pages/services/court-representation.astro b/frontend/src/pages/services/court-representation.astro index cb6a81f..179d039 100644 --- a/frontend/src/pages/services/court-representation.astro +++ b/frontend/src/pages/services/court-representation.astro @@ -180,14 +180,7 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы о судебном представительстве" - /> - + sectionDesc="Ответы на популярные вопросы о судебном представительстве" /> diff --git a/frontend/src/pages/services/damages.astro b/frontend/src/pages/services/damages.astro index 97a272c..8990d4c 100644 --- a/frontend/src/pages/services/damages.astro +++ b/frontend/src/pages/services/damages.astro @@ -180,14 +180,7 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы о взыскании ущерба" - /> - + sectionDesc="Ответы на популярные вопросы о взыскании ущерба" /> diff --git a/frontend/src/pages/services/decree-appeal.astro b/frontend/src/pages/services/decree-appeal.astro new file mode 100644 index 0000000..8f4ac1f --- /dev/null +++ b/frontend/src/pages/services/decree-appeal.astro @@ -0,0 +1,346 @@ +--- +import Layout from '@layouts/Layout.astro'; +import { SITE_URL, COMPANY } from '@constants'; +import PageHero from "@components/base/PageHero.astro"; +import CTA from "@components/base/CTA.astro"; +import AboutTabs from '@components/services/AboutTabs.astro'; +import ArticlesList from '@components/services/ArticlesList.astro'; +import WorkSteps from '@components/services/WorkSteps.astro'; +import ServiceIncludes from '@components/services/ServiceIncludes.astro'; +import AdvantagesList from '@components/services/AdvantagesList.astro'; +import PricingPlans from '@components/services/PricingPlans.astro'; +import FaqList from '@components/services/FaqList.astro'; + +const aboutTabsData = { + problem: { + title: "Постановление — не приговор", + description: "Постановления по делам об административных правонарушениях часто содержат ошибки: неправильно квалифицируют действия, игнорируют смягчающие обстоятельства, назначают чрезмерное наказание.", + description2: "Обжалование постановления в суде — это реальный шанс отменить или изменить несправедливое решение. Мы используем все законные основания для защиты ваших прав.", + items: [ + "Неправильная квалификация правонарушения", + "Нарушение процедуры составления протокола", + "Неучтённые смягчающие обстоятельства" + ], + visualNumber: "40%", + visualLabel: "постановлений можно отменить", + visualNote: "При грамотном обжаловании — до 50% отмен", + barWidth: 40 + }, + approach: { + title: "Профессиональное обжалование", + description: "Мы анализируем каждое постановление на наличие нарушений: изучаем протокол, материалы дела, ищем ошибки в квалификации и процедуре.", + description2: "Наш опыт позволяет знать типичные ошибки инспекторов и судей, использовать это для отмены постановлений в суде.", + items: [ + { icon: "📋", title: "Анализ постановления", desc: "Изучаем документ на ошибки и нарушения" }, + { icon: "⚖️", title: "Подготовка жалобы", desc: "Составляем мотивированную жалобу в суд" }, + { icon: "👨‍⚖️", title: "Защита в суде", desc: "Представляем ваши интересы при рассмотрении жалобы" } + ], + steps: ["Анализ постановления", "Подготовка жалобы", "Подача в суд", "Рассмотрение дела", "Отмена/изменение постановления"] + }, + stats: { + bigStat: { number: 45, label: "Постановлений отменено", barWidth: 45 }, + stats: [ + { number: 180, label: "Успешно обжаловано", suffix: "+" }, + { number: 7, label: "Лет практики", suffix: "" }, + { number: 10, label: "Дней на обжалование", suffix: "" }, + { number: 100, label: "Возврат при неудаче", suffix: "%" } + ] + }, + guarantees: { + title: "Работаем на результат", + description: "Мы берёмся только за дела с реальными основаниями для отмены. После анализа постановления честно скажем о перспективах обжалования.", + description2: "Если есть нарушения — мы добьёмся отмены. Если нет — предложим альтернативные способы защиты. Оплата только при результате.", + items: [ + { title: "Бесплатный анализ", desc: "Анализируем постановление и оцениваем шансы" }, + { title: "Оплата за результат", desc: "Платите только после отмены постановления" }, + { title: "Договор", desc: "Фиксируем все условия юридически" }, + { title: "Возврат средств", desc: "Если жалоба отклонена — вернём деньги" } + ] + } +}; + +const articlesData = [ + { icon: "📜", title: "Ошибки в протоколе", desc: "Неправильное заполнение, отсутствие подписей, нарушения при составлении.", chance: "Высокий шанс" }, + { icon: "⚖️", title: "Неправильная квалификация", desc: "Инспектор неверно квалифицировал нарушение по статье КоАП.", chance: "Высокий шанс" }, + { icon: "📹", title: "Нет доказательств", desc: "Отсутствуют доказательства совершения правонарушения.", chance: "Высокий шанс" }, + { icon: "📋", title: "Смягчающие обстоятельства", desc: "Не учтены смягчающие обстоятельства при назначении наказания.", chance: "Средний шанс" }, + { icon: "🔍", title: "Нарушение прав", desc: "Вам не разъяснили права, не дали возможность объясниться.", chance: "Высокий шанс" }, + { icon: "⚠️", title: "Другие основания", desc: "Работаем с любыми основаниями для отмены — анализируем каждое дело.", chance: "Зависит от дела" } +]; + +const stepsData = [ + { number: "01", title: "Получение постановления", desc: "Пришлите копию постановления. Мы начнём анализ в тот же день." }, + { number: "02", title: "Анализ документа", desc: "Изучаем постановление, ищем ошибки и нарушения, оцениваем перспективы." }, + { number: "03", title: "Подготовка жалобы", desc: "Составляем мотивированную жалобу с правовой позицией." }, + { number: "04", title: "Подача в суд", desc: "Подаём жалобу в суд, отслеживаем рассмотрение." }, + { number: "05", title: "Отмена постановления", desc: "Добиваемся отмены или изменения постановления." } +]; + +const includesData = [ + { icon: "📄", title: "Анализ постановления", desc: "Изучаем документ на наличие ошибок" }, + { icon: "🔍", title: "Поиск оснований", desc: "Находим нарушения закона и процедуры" }, + { icon: "📝", title: "Жалоба в суд", desc: "Готовим мотивированную жалобу" }, + { icon: "👨‍⚖️", title: "Защита в суде", desc: "Представляем ваши интересы в суде" }, + { icon: "✅", title: "Результат", desc: "Отмена или изменение постановления" } +]; + +const advantagesData = [ + { number: "01", title: "Специализация на КоАП", desc: "Мы знаем тонкости Кодекса об административных правонарушениях." }, + { number: "02", title: "45% отменённых постановлений", desc: "Высокая статистика благодаря тщательному анализу." }, + { number: "03", title: "Знание практики судов", desc: "Знаем практику судов ХМАО и используем это для защиты." }, + { number: "04", title: "Без предоплаты", desc: "Оплата только после отмены постановления." }, + { number: "05", title: "Полное ведение дела", desc: "Вам не нужно ходить по судам. Мы делаем всё сами." }, + { number: "06", title: "Работа на результат", desc: "Если не отменим — вернём деньги по договору." } +]; + +const plansData = [ + { badge: "Экспресс", title: "Анализ постановления", price: "Бесплатно", features: ["Анализ документа", "Оценка перспектив", "Рекомендации", "Срочная консультация"], btnText: "Прислать постановление", btnClass: "" }, + { badge: "Стандарт", title: "Обжалование под ключ", price: "от 15 000 ₽", features: ["Всё из Экспресс", "Подготовка жалобы", "Подача в суд", "Представительство"], btnText: "Начать обжалование", btnClass: "gold", popular: true }, + { badge: "Премиум", title: "Сложные дела", price: "от 25 000 ₽", features: ["Всё из Стандарта", "Кассация", "Приоритетная работа", "Личный юрист"], btnText: "Обсудить дело", btnClass: "" } +]; + +const faqsData = [ + { question: "Сколько времени есть на обжалование?", answer: "На обжалование постановления даётся 10 дней с момента получения. Мы подаём жалобу в срок." }, + { question: "Можно ли обжаловать если срок прошёл?", answer: "Да, можно ходатайствовать о восстановлении срока при уважительных причинах. Мы подготовим документы." }, + { question: "Каковы шансы на отмену?", answer: "Статистика показывает, что до 45% постановлений могут быть отменены. Мы честно оценим после анализа." }, + { question: "Нужно ли присутствовать в суде?", answer: "Нет, мы работаем по доверенности. Ваше присутствие не требуется." }, + { question: "Что если жалобу отклонят?", answer: "Есть возможность подачи кассационной жалобы в вышестоящий суд. Мы продолжаем борьбу." }, + { question: "С чего начать?", answer: "Пришлите копию постановления. Мы проведём бесплатный анализ и скажем о шансах." } +]; +--- + + + + +
+ + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/services/gibdd-review.astro b/frontend/src/pages/services/gibdd-review.astro index f523b78..19b5a6f 100644 --- a/frontend/src/pages/services/gibdd-review.astro +++ b/frontend/src/pages/services/gibdd-review.astro @@ -180,14 +180,7 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы о разборе в ГИБДД" - /> - + sectionDesc="Ответы на популярные вопросы о разборе в ГИБДД" /> diff --git a/frontend/src/pages/services/index.astro b/frontend/src/pages/services/index.astro index 99b55a4..7d7f285 100644 --- a/frontend/src/pages/services/index.astro +++ b/frontend/src/pages/services/index.astro @@ -38,10 +38,4 @@ import ServiceCategories from "@components/services/ServiceCategories.astro"; totalPages={2} baseUrl="/services" /> - diff --git a/frontend/src/pages/services/license-challenge.astro b/frontend/src/pages/services/license-challenge.astro index da3227b..f6b2809 100644 --- a/frontend/src/pages/services/license-challenge.astro +++ b/frontend/src/pages/services/license-challenge.astro @@ -180,15 +180,9 @@ const faqsData = [ faqs={faqsData} sectionLabel="Вопросы" sectionTitle="Частые вопросы" - sectionDesc="Ответы на популярные вопросы о защите при составленном протоколе" - /> - - +sectionDesc="Ответы на популярные вопросы о защите при составленном протоколе" + /> +