Merge version_2_1781603480213 into main #1
@@ -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 ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> 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 (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardBrand
|
||||
brand="Погода в городе Шу"
|
||||
description="Точные данные о температуре, влажности и давлении. Актуальная информация для жителей Жамбылской области."
|
||||
primaryButton={{
|
||||
text: "Подробнее",
|
||||
href: "#details",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Контакты",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/beautiful-snow-covered-mountains-landscape-kashmir-state-india_1232-4811.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="current" data-section="current">
|
||||
<SectionErrorBoundary name="current">
|
||||
<AboutFeaturesSplit
|
||||
tag="Текущие данные"
|
||||
title="Погода сейчас"
|
||||
description="Температура воздуха: +25°C. Ощущается как +24°C. Ветер слабый, видимость отличная."
|
||||
items={[
|
||||
{
|
||||
icon: Droplets,
|
||||
title: "Влажность",
|
||||
description: "45%",
|
||||
},
|
||||
{
|
||||
icon: Wind,
|
||||
title: "Ветер",
|
||||
description: "3 м/с, С-З",
|
||||
},
|
||||
{
|
||||
icon: Gauge,
|
||||
title: "Давление",
|
||||
description: "758 мм рт. ст.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/3d-render-night-weather-icons-crescent-stars_107791-17714.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<CurrentSection />
|
||||
|
||||
<div id="week" data-section="week">
|
||||
<SectionErrorBoundary name="week">
|
||||
<FeaturesDetailedCards
|
||||
tag="Прогноз"
|
||||
title="Погода на неделю"
|
||||
description="Ежедневный прогноз для города Шу"
|
||||
items={[
|
||||
{
|
||||
title: "Пн 12.05",
|
||||
description: "+26°C / +15°C, Ясно",
|
||||
tags: [
|
||||
"Солнечно",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/20-spring-blue-color-icon-presentation_1142-26447.jpg",
|
||||
},
|
||||
{
|
||||
title: "Вт 13.05",
|
||||
description: "+24°C / +14°C, Переменная облачность",
|
||||
tags: [
|
||||
"Облачно",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-landscape_8327-194.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ср 14.05",
|
||||
description: "+22°C / +13°C, Небольшой дождь",
|
||||
tags: [
|
||||
"Дождь",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/blue-cloud-icon-technology-graphic_53876-14840.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<WeekSection />
|
||||
|
||||
<div id="month" data-section="month">
|
||||
<SectionErrorBoundary name="month">
|
||||
<FeaturesImageBento
|
||||
tag="Долгосрочный прогноз"
|
||||
title="Погода на месяц"
|
||||
description="Обзор температурных тенденций на май 2025 года в городе Шу."
|
||||
items={[
|
||||
{
|
||||
title: "Неделя 1",
|
||||
description: "Средняя +22°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/simple-3d-white-fluffy-clouds-pink-background_107791-15661.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 2",
|
||||
description: "Средняя +24°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/icons-set-about-weather_1057-2501.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 3",
|
||||
description: "Средняя +26°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/weather-icon-collection_1084-33.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 4",
|
||||
description: "Средняя +28°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/render-weather-icons-sun-clouds-fog-snow_107791-17456.jpg",
|
||||
},
|
||||
{
|
||||
title: "Экстремумы",
|
||||
description: "Макс +32°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-soft-clouds-sky-overcast-weather-icons_107791-17376.jpg",
|
||||
},
|
||||
{
|
||||
title: "Влажность",
|
||||
description: "Средняя 40%",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/digital-thermometer-isolated-white_23-2152013358.jpg",
|
||||
},
|
||||
{
|
||||
title: "Осадки",
|
||||
description: "Минимум в мае",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-with-sign-prevent-flu_1134-666.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MonthSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="Климат"
|
||||
title="Статистика региона"
|
||||
description="Климатические показатели Шу"
|
||||
metrics={[
|
||||
{
|
||||
value: "350",
|
||||
description: "Солнечных дней в году",
|
||||
},
|
||||
{
|
||||
value: "45%",
|
||||
description: "Средняя влажность",
|
||||
},
|
||||
{
|
||||
value: "250мм",
|
||||
description: "Средние осадки",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
<AlertsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Помощь"
|
||||
title="Часто задаваемые вопросы"
|
||||
description="Как читать наш прогноз погоды"
|
||||
items={[
|
||||
{
|
||||
question: "Откуда данные?",
|
||||
answer: "Мы берем данные из надежных метеорологических станций.",
|
||||
},
|
||||
{
|
||||
question: "Как часто обновляется прогноз?",
|
||||
answer: "Прогноз обновляется каждые 3 часа.",
|
||||
},
|
||||
{
|
||||
question: "Есть ли оповещения?",
|
||||
answer: "Да, подпишитесь на уведомления о резких переменах погоды.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Связь"
|
||||
text="Нужна более детальная информация или прогноз для бизнеса?"
|
||||
primaryButton={{
|
||||
text: "Написать нам",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Поддержка",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
88
src/pages/HomePage/sections/Alerts.tsx
Normal file
88
src/pages/HomePage/sections/Alerts.tsx
Normal file
@@ -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 (
|
||||
<section data-webild-section="alerts" id="alerts" className="relative w-full py-24 bg-background">
|
||||
<div className="w-content-width mx-auto px-6">
|
||||
<div className="flex flex-col items-center text-center mb-16">
|
||||
<ScrollReveal variant="fade">
|
||||
<Tag text="Оповещения" className="mb-4" />
|
||||
</ScrollReveal>
|
||||
<TextAnimation
|
||||
text="Штормовые предупреждения и отчеты"
|
||||
variant="fade-blur"
|
||||
tag="h2"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
|
||||
gradientText={false}
|
||||
/>
|
||||
<ScrollReveal variant="fade" delay={0.2}>
|
||||
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
|
||||
Оперативная информация о суровых погодных условиях и сообщения от жителей города Шу для вашей безопасности.
|
||||
</p>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||
{alerts.map((alert, index) => (
|
||||
<ScrollReveal variant="fade" key={index} delay={0.1 * index} className="h-full">
|
||||
<Card className="h-full flex flex-col overflow-hidden group">
|
||||
<div className="relative h-48 overflow-hidden">
|
||||
<ImageOrVideo
|
||||
imageSrc={alert.imageSrc}
|
||||
className="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||
/>
|
||||
<div className="absolute top-4 left-4 flex flex-wrap gap-2">
|
||||
{alert.tags.map((tag, i) => (
|
||||
<span key={i} className="px-2 py-1 text-xs font-medium bg-background/80 backdrop-blur-sm text-foreground rounded-theme">
|
||||
{tag}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div className="p-6 flex flex-col flex-grow">
|
||||
<div className="flex items-center gap-3 mb-4">
|
||||
<div className="p-2 bg-primary-cta/10 rounded-theme text-primary-cta">
|
||||
<alert.icon className="w-5 h-5" />
|
||||
</div>
|
||||
<h3 className="text-xl font-semibold text-foreground line-clamp-2">{alert.title}</h3>
|
||||
</div>
|
||||
<p className="text-muted-foreground flex-grow">{alert.description}</p>
|
||||
</div>
|
||||
</Card>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -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 (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Связь"
|
||||
text="Нужна более детальная информация или прогноз для бизнеса?"
|
||||
primaryButton={{
|
||||
text: "Написать нам",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Поддержка",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
39
src/pages/HomePage/sections/Current.tsx
Normal file
39
src/pages/HomePage/sections/Current.tsx
Normal file
@@ -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 (
|
||||
<div id="current" data-section="current">
|
||||
<SectionErrorBoundary name="current">
|
||||
<AboutFeaturesSplit
|
||||
tag="Текущие данные"
|
||||
title="Погода сейчас"
|
||||
description="Температура воздуха: +25°C. Ощущается как +24°C. Ветер слабый, видимость отличная."
|
||||
items={[
|
||||
{
|
||||
icon: Droplets,
|
||||
title: "Влажность",
|
||||
description: "45%",
|
||||
},
|
||||
{
|
||||
icon: Wind,
|
||||
title: "Ветер",
|
||||
description: "3 м/с, С-З",
|
||||
},
|
||||
{
|
||||
icon: Gauge,
|
||||
title: "Давление",
|
||||
description: "758 мм рт. ст.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/3d-render-night-weather-icons-crescent-stars_107791-17714.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -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 (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Помощь"
|
||||
title="Часто задаваемые вопросы"
|
||||
description="Как читать наш прогноз погоды"
|
||||
items={[
|
||||
{
|
||||
question: "Откуда данные?",
|
||||
answer: "Мы берем данные из надежных метеорологических станций.",
|
||||
},
|
||||
{
|
||||
question: "Как часто обновляется прогноз?",
|
||||
answer: "Прогноз обновляется каждые 3 часа.",
|
||||
},
|
||||
{
|
||||
question: "Есть ли оповещения?",
|
||||
answer: "Да, подпишитесь на уведомления о резких переменах погоды.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Hero.tsx
Normal file
28
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -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 (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardBrand
|
||||
brand="Погода в городе Шу"
|
||||
description="Точные данные о температуре, влажности и давлении. Актуальная информация для жителей Жамбылской области."
|
||||
primaryButton={{
|
||||
text: "Подробнее",
|
||||
href: "#details",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Контакты",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/beautiful-snow-covered-mountains-landscape-kashmir-state-india_1232-4811.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
34
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -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 (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsSimpleCards
|
||||
tag="Климат"
|
||||
title="Статистика региона"
|
||||
description="Климатические показатели Шу"
|
||||
metrics={[
|
||||
{
|
||||
value: "350",
|
||||
description: "Солнечных дней в году",
|
||||
},
|
||||
{
|
||||
value: "45%",
|
||||
description: "Средняя влажность",
|
||||
},
|
||||
{
|
||||
value: "250мм",
|
||||
description: "Средние осадки",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Month.tsx
Normal file
57
src/pages/HomePage/sections/Month.tsx
Normal file
@@ -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 (
|
||||
<div id="month" data-section="month">
|
||||
<SectionErrorBoundary name="month">
|
||||
<FeaturesImageBento
|
||||
tag="Долгосрочный прогноз"
|
||||
title="Погода на месяц"
|
||||
description="Обзор температурных тенденций на май 2025 года в городе Шу."
|
||||
items={[
|
||||
{
|
||||
title: "Неделя 1",
|
||||
description: "Средняя +22°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/simple-3d-white-fluffy-clouds-pink-background_107791-15661.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 2",
|
||||
description: "Средняя +24°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/icons-set-about-weather_1057-2501.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 3",
|
||||
description: "Средняя +26°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/weather-icon-collection_1084-33.jpg",
|
||||
},
|
||||
{
|
||||
title: "Неделя 4",
|
||||
description: "Средняя +28°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/render-weather-icons-sun-clouds-fog-snow_107791-17456.jpg",
|
||||
},
|
||||
{
|
||||
title: "Экстремумы",
|
||||
description: "Макс +32°C",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/white-soft-clouds-sky-overcast-weather-icons_107791-17376.jpg",
|
||||
},
|
||||
{
|
||||
title: "Влажность",
|
||||
description: "Средняя 40%",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/digital-thermometer-isolated-white_23-2152013358.jpg",
|
||||
},
|
||||
{
|
||||
title: "Осадки",
|
||||
description: "Минимум в мае",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-with-sign-prevent-flu_1134-666.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
46
src/pages/HomePage/sections/Week.tsx
Normal file
46
src/pages/HomePage/sections/Week.tsx
Normal file
@@ -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 (
|
||||
<div id="week" data-section="week">
|
||||
<SectionErrorBoundary name="week">
|
||||
<FeaturesDetailedCards
|
||||
tag="Прогноз"
|
||||
title="Погода на неделю"
|
||||
description="Ежедневный прогноз для города Шу"
|
||||
items={[
|
||||
{
|
||||
title: "Пн 12.05",
|
||||
description: "+26°C / +15°C, Ясно",
|
||||
tags: [
|
||||
"Солнечно",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/20-spring-blue-color-icon-presentation_1142-26447.jpg",
|
||||
},
|
||||
{
|
||||
title: "Вт 13.05",
|
||||
description: "+24°C / +14°C, Переменная облачность",
|
||||
tags: [
|
||||
"Облачно",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-landscape_8327-194.jpg",
|
||||
},
|
||||
{
|
||||
title: "Ср 14.05",
|
||||
description: "+22°C / +13°C, Небольшой дождь",
|
||||
tags: [
|
||||
"Дождь",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/blue-cloud-icon-technology-graphic_53876-14840.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user