From a7eb0af1fb42efaab4c048cb4d07a2ee784c5121 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Tue, 16 Jun 2026 09:52:44 +0000 Subject: [PATCH] Bob AI: Added severe weather alerts section --- src/pages/HomePage.tsx | 222 +++--------------------- src/pages/HomePage/sections/Alerts.tsx | 88 ++++++++++ src/pages/HomePage/sections/Contact.tsx | 27 +++ src/pages/HomePage/sections/Current.tsx | 39 +++++ src/pages/HomePage/sections/Faq.tsx | 34 ++++ src/pages/HomePage/sections/Hero.tsx | 28 +++ src/pages/HomePage/sections/Metrics.tsx | 34 ++++ src/pages/HomePage/sections/Month.tsx | 57 ++++++ src/pages/HomePage/sections/Week.tsx | 46 +++++ 9 files changed, 377 insertions(+), 198 deletions(-) create mode 100644 src/pages/HomePage/sections/Alerts.tsx create mode 100644 src/pages/HomePage/sections/Contact.tsx create mode 100644 src/pages/HomePage/sections/Current.tsx create mode 100644 src/pages/HomePage/sections/Faq.tsx create mode 100644 src/pages/HomePage/sections/Hero.tsx create mode 100644 src/pages/HomePage/sections/Metrics.tsx create mode 100644 src/pages/HomePage/sections/Month.tsx create mode 100644 src/pages/HomePage/sections/Week.tsx diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx index 125584b..72329a0 100644 --- a/src/pages/HomePage.tsx +++ b/src/pages/HomePage.tsx @@ -1,209 +1,35 @@ -import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit'; -import ContactCta from '@/components/sections/contact/ContactCta'; -import FaqSimple from '@/components/sections/faq/FaqSimple'; -import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards'; -import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento'; -import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand'; -import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards'; -import { Droplets, Gauge, Wind } from "lucide-react"; -import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; +// AUTO-GENERATED shell by per-section-migrate. +// Section bodies live in .//sections/.tsx. Edit the section +// files directly. Non-block content (wrappers, non-inlinable sections) is +// preserved inline; extracted section blocks become refs. -export default function HomePage() { +import React from 'react'; +import HeroSection from './HomePage/sections/Hero'; +import CurrentSection from './HomePage/sections/Current'; +import WeekSection from './HomePage/sections/Week'; +import MonthSection from './HomePage/sections/Month'; +import MetricsSection from './HomePage/sections/Metrics'; +import FaqSection from './HomePage/sections/Faq'; +import ContactSection from './HomePage/sections/Contact'; + + +import AlertsSection from './HomePage/sections/Alerts';export default function HomePage(): React.JSX.Element { return ( - <> -
- - - -
+<> + -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ + -
- - - -
+ -
- - - -
+ ); } diff --git a/src/pages/HomePage/sections/Alerts.tsx b/src/pages/HomePage/sections/Alerts.tsx new file mode 100644 index 0000000..9ccf7aa --- /dev/null +++ b/src/pages/HomePage/sections/Alerts.tsx @@ -0,0 +1,88 @@ +import { motion } from "motion/react"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ScrollReveal from "@/components/ui/ScrollReveal"; +import Tag from "@/components/ui/Tag"; +import Card from "@/components/ui/Card"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import { AlertTriangle, CloudRain, CloudFog } from "lucide-react"; + +export default function AlertsSection() { + const alerts = [ + { + title: "Штормовое предупреждение: Усиление ветра", + description: "Ожидается порывистый ветер до 20-25 м/с. Рекомендуется избегать нахождения под деревьями и шаткими конструкциями.", + imageSrc: "https://images.unsplash.com/photo-1527482797697-8795b05a13fe?auto=format&fit=crop&q=80&w=800", + tags: ["Шторм", "Сегодня"], + icon: AlertTriangle + }, + { + title: "Отчет сообщества: Сильный ливень в центре", + description: "Пользователи сообщают о сильном ливне и подтоплении некоторых улиц в центральной части города. Планируйте маршрут заранее.", + imageSrc: "https://images.unsplash.com/photo-1515694346937-94d85e41e6f0?auto=format&fit=crop&q=80&w=800", + tags: ["Осадки", "Отчет жителей"], + icon: CloudRain + }, + { + title: "Предупреждение о тумане на трассе", + description: "Видимость на трассе Шу - Тараз снижена до 50 метров из-за густого тумана. Будьте осторожны за рулем.", + imageSrc: "https://images.unsplash.com/photo-1485236715568-ddc5ee6ca227?auto=format&fit=crop&q=80&w=800", + tags: ["Туман", "Трасса"], + icon: CloudFog + } + ]; + + return ( +
+
+
+ + + + + +

+ Оперативная информация о суровых погодных условиях и сообщения от жителей города Шу для вашей безопасности. +

+
+
+ +
+ {alerts.map((alert, index) => ( + + +
+ +
+ {alert.tags.map((tag, i) => ( + + {tag} + + ))} +
+
+
+
+
+ +
+

{alert.title}

+
+

{alert.description}

+
+
+
+ ))} +
+
+
+ ); +} \ No newline at end of file diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx new file mode 100644 index 0000000..fe46fde --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -0,0 +1,27 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "contact" section. + +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ContactSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Current.tsx b/src/pages/HomePage/sections/Current.tsx new file mode 100644 index 0000000..0abec8f --- /dev/null +++ b/src/pages/HomePage/sections/Current.tsx @@ -0,0 +1,39 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "current" section. + +import React from 'react'; +import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit'; +import { Droplets, Gauge, Wind } from "lucide-react"; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function CurrentSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Faq.tsx b/src/pages/HomePage/sections/Faq.tsx new file mode 100644 index 0000000..9b9c11f --- /dev/null +++ b/src/pages/HomePage/sections/Faq.tsx @@ -0,0 +1,34 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "faq" section. + +import React from 'react'; +import FaqSimple from '@/components/sections/faq/FaqSimple'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function FaqSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx new file mode 100644 index 0000000..f942ffc --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,28 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "hero" section. + +import React from 'react'; +import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function HeroSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Metrics.tsx b/src/pages/HomePage/sections/Metrics.tsx new file mode 100644 index 0000000..fe84e3c --- /dev/null +++ b/src/pages/HomePage/sections/Metrics.tsx @@ -0,0 +1,34 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "metrics" section. + +import React from 'react'; +import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function MetricsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Month.tsx b/src/pages/HomePage/sections/Month.tsx new file mode 100644 index 0000000..f0a3322 --- /dev/null +++ b/src/pages/HomePage/sections/Month.tsx @@ -0,0 +1,57 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "month" section. + +import React from 'react'; +import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function MonthSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Week.tsx b/src/pages/HomePage/sections/Week.tsx new file mode 100644 index 0000000..7b197dd --- /dev/null +++ b/src/pages/HomePage/sections/Week.tsx @@ -0,0 +1,46 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "week" section. + +import React from 'react'; +import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function WeekSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} -- 2.49.1