Merge version_2_1781605481785 into main #1

Merged
bender merged 11 commits from version_2_1781605481785 into main 2026-06-16 10:28:47 +00:00
12 changed files with 322 additions and 317 deletions

View File

@@ -42,7 +42,7 @@ export default function Layout() {
<SiteBackgroundSlot />
<SectionErrorBoundary name="navbar">
<NavbarFloating
logo="Piter Nails"
logo="Старт"
ctaButton={{
text: "Записаться",
href: "#booking",
@@ -56,36 +56,40 @@ export default function Layout() {
<FooterBasic
columns={[
{
title: "Студия",
title: "Центр",
items: [
{
label: "О нас",
href: "#",
href: "#why-us",
},
{
label: "Мастера",
href: "#",
label: "Программы",
href: "#services",
},
{
label: "Галерея",
href: "#gallery",
},
],
},
{
title: "Услуги",
title: "Информация",
items: [
{
label: "Маникюр",
href: "#",
label: "Отзывы",
href: "#testimonials",
},
{
label: "Педикюр",
href: "#",
label: "Контакты",
href: "#contacts",
},
],
},
{
title: "Контакты",
title: "Социальные сети",
items: [
{
label: "Instagram",
label: "ВКонтакте",
href: "#",
},
{
@@ -95,7 +99,7 @@ export default function Layout() {
],
},
]}
leftText="© 2024 Piter Nails. Все права защищены."
leftText="© 2024 Образовательный центр «Старт». Все права защищены."
rightText="Политика конфиденциальности"
/>
</SectionErrorBoundary>

View File

@@ -5,15 +5,15 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #f5faff;
--card: #ffffff;
--foreground: #001122;
--primary-cta: #15479c;
--primary-cta-text: #f5faff;
--secondary-cta: #ffffff;
--secondary-cta-text: #001122;
--accent: #a8cce8;
--background-accent: #7ba3cf;
--background: #0F1115;
--card: rgba(255, 255, 255, 0.03);
--foreground: #ffffff;
--primary-cta: #D4AF37;
--primary-cta-text: #0F1115;
--secondary-cta: rgba(255, 255, 255, 0.1);
--secondary-cta-text: #ffffff;
--accent: #007AFF;
--background-accent: #8A2BE2;
/* @layout/border-radius/rounded */
--radius: 0.5rem;

View File

@@ -1,308 +1,39 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroBillboardBrand from '@/components/sections/hero/HeroBillboardBrand';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
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 AdvantagesSection from './HomePage/sections/Advantages';
import ServicesSection from './HomePage/sections/Services';
import GallerySection from './HomePage/sections/Gallery';
import WhyUsSection from './HomePage/sections/WhyUs';
import TestimonialsSection from './HomePage/sections/Testimonials';
import PromotionSection from './HomePage/sections/Promotion';
import BookingSection from './HomePage/sections/Booking';
import ContactsSection from './HomePage/sections/Contacts';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboardBrand
brand="Маникюр и педикюр, которые хочется рассматривать"
description="Безупречный сервис, стерильность и идеальный результат в Piter Nails"
primaryButton={{
text: "Записаться онлайн",
href: "#booking",
}}
secondaryButton={{
text: "Посмотреть работы",
href: "#gallery",
}}
imageSrc="http://img.b2bpic.net/free-photo/close-up-woman-holding-flower_23-2148749792.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="advantages" data-section="advantages">
<SectionErrorBoundary name="advantages">
<MetricsFeatureCards
tag="Наши стандарты"
title="Почему выбирают нас"
description="Мы создаем безупречный сервис в Санкт-Петербурге."
metrics={[
{
value: "100%",
title: "Стерильность",
features: [
"Три этапа обработки",
"Крафт-пакеты",
"Безопасность",
],
},
{
value: "5+",
title: "Опыт мастеров",
features: [
"Профильное обучение",
"Повышение квалификации",
"Профессионализм",
],
},
{
value: "5000+",
title: "Довольных клиентов",
features: [
"Регулярные визиты",
"Доверие",
"Высокий NPS",
],
},
{
value: "1 мин",
title: "Запись онлайн",
features: [
"Удобный виджет",
"24/7 доступ",
"Без ожидания",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<AdvantagesSection />
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesRevealCardsBento
tag="Наши услуги"
title="Популярные направления"
description="Выбирайте идеальный уход для ваших рук и ног."
items={[
{
title: "Маникюр + гель-лак",
description: "Классический уход с покрытием",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-using-hand-sanitizer_23-2148694562.jpg",
},
{
title: "Педикюр",
description: "Профессиональный уход за стопами",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/nail-art-professional-working-client-nails_23-2149265946.jpg",
},
{
title: "Наращивание ногтей",
description: "Любая длина и форма",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/nail-hygiene-care-cutting-cuticles_23-2148766595.jpg",
},
{
title: "Дизайн ногтей",
description: "Авторские рисунки и декорации",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-female-manicure-pink-t-shirt-with-black-gloves-black-mask-doing-manicure-with-hesitated-expression-blue_140725-24227.jpg",
},
{
title: "Укрепление ногтей",
description: "Для здоровья и прочности",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/manicure-process-closeup_1385-275.jpg",
},
{
title: "Комплекс 4 руки",
description: "Максимальная скорость и комфорт",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-friends-with-beautiful-manicures_23-2149975473.jpg",
},
{
title: "SPA уход",
description: "Парафинотерапия и питание",
href: "#booking",
imageSrc: "http://img.b2bpic.net/free-photo/hands-with-colorful-nails_23-2149921709.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ServicesSection />
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesMediaCarousel
tag="Портфолио"
title="Наши работы"
description="Вдохновляйтесь эстетикой в каждом движении."
items={[
{
title: "Маникюр",
description: "Эстетика",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-woman-with-flowers_23-2148341372.jpg",
},
{
title: "Педикюр",
description: "Стиль",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249961.jpg",
},
{
title: "Дизайн",
description: "Тренды",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-attractive-female-white-shirt-holding-different-manicure-accessories-with-smile-green-surface_140725-64181.jpg",
},
{
title: "Классика",
description: "Безупречность",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/african-american-woman-applying-hairdresser-hairstylist-beauty-saloon_627829-4642.jpg",
},
{
title: "Наращивание",
description: "Изящность",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/view-human-hands_23-2149512269.jpg",
},
{
title: "Декор",
description: "Акцент",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-with-colorful-manicure_23-2149311575.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<GallerySection />
<div id="why-us" data-section="why-us">
<SectionErrorBoundary name="why-us">
<FaqSplitMedia
tag="О студии"
title="Почему выбирают Piter Nails"
description="Мы создаем комфорт, который хочется повторить."
items={[
{
question: "Безопасность и стерильность",
answer: "Строгое соблюдение СанПиН, только одноразовые расходники.",
},
{
question: "Качественные материалы",
answer: "Премиум бренды, стойкость до 4 недель.",
},
{
question: "Удобное расположение",
answer: "Санкт-Петербург, пр. Просвещения, 46 к.1",
},
{
question: "Комфортная атмосфера",
answer: "Кофе, чай, уютная зона ожидания.",
},
{
question: "Гарантия качества",
answer: "Бесплатная коррекция в течение 7 дней.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/girls-showing-her-stylish-manicure-holding-thair-fingers-black-handbag_132075-12048.jpg"
/>
</SectionErrorBoundary>
</div>
<WhyUsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Отзывы"
title="Что говорят наши клиенты"
description="5000+ довольных улыбок в Piter Nails."
testimonials={[
{
name: "Алена",
role: "Постоянный клиент",
quote: "Лучший маникюр в районе! Очень уютно.",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-cute-girl-looking-away_23-2148436134.jpg",
},
{
name: "Ольга",
role: "Бизнес-леди",
quote: "Делала комплекс в 4 руки, супер быстро и качественно.",
imageSrc: "http://img.b2bpic.net/free-photo/two-happy-male-female-business-people-showing-thumbs-up-outdoors_1262-12567.jpg",
},
{
name: "Мария",
role: "Студентка",
quote: "Дизайн как в Pinterest, я в восторге!",
imageSrc: "http://img.b2bpic.net/free-photo/happy-cute-woman-portrait-outdoor_624325-1864.jpg",
},
{
name: "Елена",
role: "Клиент",
quote: "Безупречная стерильность, всегда возвращаюсь.",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-happy-smiling-woman-showing-copy-space_93675-133221.jpg",
},
{
name: "Анна",
role: "Клиент",
quote: "Самый красивый салон, сервис на высшем уровне.",
imageSrc: "http://img.b2bpic.net/free-photo/male-female-friends-getting-manicure-together_23-2150285913.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="promotion" data-section="promotion">
<SectionErrorBoundary name="promotion">
<ContactCta
tag="Специальное предложение"
text="Скидка 15% на первое посещение студии Piter Nails"
primaryButton={{
text: "Получить скидку",
href: "#booking",
}}
secondaryButton={{
text: "Узнать подробнее",
href: "#contacts",
}}
/>
</SectionErrorBoundary>
</div>
<PromotionSection />
<div id="booking" data-section="booking">
<SectionErrorBoundary name="booking">
<ContactCta
tag="Запись онлайн"
text="Готовы сделать маникюр мечты?"
primaryButton={{
text: "Записаться через WhatsApp",
href: "https://wa.me/79000000000",
}}
secondaryButton={{
text: "Записаться через Telegram",
href: "https://t.me/piter_nails",
}}
/>
</SectionErrorBoundary>
</div>
<BookingSection />
<div id="contacts" data-section="contacts">
<SectionErrorBoundary name="contacts">
<ContactCta
tag="Наши контакты"
text="СПб, пр. Просвещения, 46 к.1 | +7 (900) 000-00-00"
primaryButton={{
text: "Построить маршрут",
href: "https://yandex.ru/maps",
}}
secondaryButton={{
text: "Наш Instagram",
href: "https://instagram.com",
}}
/>
</SectionErrorBoundary>
</div>
<ContactsSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "advantages" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AdvantagesSection(): React.JSX.Element {
return (
<div id="advantages" data-section="advantages">
<SectionErrorBoundary name="advantages">
<MetricsFeatureCards
tag="Преимущества"
title="Стандарты образования"
description="Мы создаем премиальную образовательную среду для развития будущих лидеров."
metrics={[{"features":["Персональные траектории","Раскрытие талантов","Внимание к деталям"],"title":"Индивидуальный подход","value":"100%"},{"features":["Высшая категория","Современные методики","Постоянное развитие"],"title":"Опытные педагоги","value":"10+ лет"},{"features":["Критическое мышление","Эмоциональный интеллект","Soft skills"],"value":"21 век","title":"Навыки будущего"},{"features":["Охрана 24/7","Экологичные материалы","Психологический комфорт"],"title":"Безопасная среда","value":"24/7"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "booking" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function BookingSection(): React.JSX.Element {
return (
<div id="booking" data-section="booking">
<SectionErrorBoundary name="booking">
<ContactCta
tag="Консультация"
text="Запишитесь на первое занятие уже сегодня"
primaryButton={{"href":"https://wa.me/79000000000","text":"Написать в WhatsApp"}}
secondaryButton={{"text":"Написать в Telegram","href":"https://t.me/start_edu"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contacts" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactsSection(): React.JSX.Element {
return (
<div id="contacts" data-section="contacts">
<SectionErrorBoundary name="contacts">
<ContactCta
tag="Контакты"
text="Санкт-Петербург, проспект Просвещения, 33 к.1 | +7 (812) 000-00-00"
primaryButton={{"href":"https://yandex.ru/maps","text":"Построить маршрут"}}
secondaryButton={{"href":"https://vk.com","text":"Мы ВКонтакте"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,100 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import type { LucideIcon } from "lucide-react";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import LoopCarousel from "@/components/ui/LoopCarousel";
import Button from "@/components/ui/Button";
import { useButtonClick } from "@/hooks/useButtonClick";
import { resolveIcon } from "@/utils/resolve-icon";
const items = [
{
title: "Маникюр",
description: "Эстетика",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/pretty-young-woman-with-flowers_23-2148341372.jpg"
},
{
title: "Педикюр",
description: "Стиль",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-beauty-nail-art_23-2149249961.jpg"
},
{
title: "Дизайн",
description: "Тренды",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-attractive-female-white-shirt-holding-different-manicure-accessories-with-smile-green-surface_140725-64181.jpg"
},
{
title: "Классика",
description: "Безупречность",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/african-american-woman-applying-hairdresser-hairstylist-beauty-saloon_627829-4642.jpg"
},
{
title: "Наращивание",
description: "Изящность",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/view-human-hands_23-2149512269.jpg"
},
{
title: "Декор",
description: "Акцент",
buttonIcon: "Star",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-with-colorful-manicure_23-2149311575.jpg"
}
];
type FeatureItem = {
title: string;
description: string;
buttonIcon: string | LucideIcon;
buttonHref?: string;
buttonOnClick?: () => void;
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
interface FeaturesMediaCarouselProps {
tag: string;
title: string;
description: string;
primaryButton?: { text: string; href: string };
secondaryButton?: { text: string; href: string };
items: FeatureItem[];
}
const FeatureMediaCarouselCard = ({ item }: { item: FeatureItem }) => {
const handleClick = useButtonClick(item.buttonHref, item.buttonOnClick);
const Icon = resolveIcon(item.buttonIcon);
return (
<div id="gallery" data-section="gallery" className="relative w-full py-24 bg-background">
<div className="max-w-6xl mx-auto px-6">
<div className="text-center mb-16">
<span className="inline-block py-1 px-3 rounded-full bg-primary-cta/10 text-primary-cta text-sm font-medium mb-4">
Пространство
</span>
<h2 className="text-4xl md:text-5xl font-bold text-foreground mb-6">Галерея центра</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
Современные классы, зоны отдыха и творческие пространства.
</p>
</div>
<div className="columns-1 md:columns-2 lg:columns-3 gap-4 space-y-4">
{[
"https://images.unsplash.com/photo-1503676260728-1c00da094a0b?q=80&w=2022&auto=format&fit=crop",
"https://images.unsplash.com/photo-1509062522246-3755977927d7?q=80&w=2132&auto=format&fit=crop",
"https://images.unsplash.com/photo-1513364776144-60967b0f800f?q=80&w=2071&auto=format&fit=crop",
"https://images.unsplash.com/photo-1546410531-bea5aadcb6ce?q=80&w=2062&auto=format&fit=crop",
"https://images.unsplash.com/photo-1529333166437-7750a6dd5a70?q=80&w=2069&auto=format&fit=crop",
"https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?q=80&w=2070&auto=format&fit=crop"
].map((src, i) => (
<div key={i} className="break-inside-avoid overflow-hidden rounded-2xl">
<img src={src} alt={`Gallery image ${i + 1}`} className="w-full h-auto object-cover hover:scale-105 transition-transform duration-500" />
</div>
))}
</div>
</div>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// 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={{"href":"#booking","text":"Записаться на пробное занятие"}}
secondaryButton={{"href":"#services","text":"Посмотреть программы"}}
imageSrc="https://picsum.photos/seed/634825388/1200/800"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "promotion" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PromotionSection(): React.JSX.Element {
return (
<div id="promotion" data-section="promotion">
<SectionErrorBoundary name="promotion">
<ContactCta
tag="Специальное предложение"
text="Бесплатное пробное занятие и диагностика навыков вашего ребёнка"
primaryButton={{"href":"#booking","text":"Записаться на пробное занятие"}}
secondaryButton={{"href":"#services","text":"Посмотреть программы"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "services" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ServicesSection(): React.JSX.Element {
return (
<div id="services" data-section="services">
<SectionErrorBoundary name="services">
<FeaturesRevealCardsBento
tag="Направления"
title="Образовательные программы"
description="Комплексные программы для гармоничного развития вашего ребёнка."
items={[{"imageSrc":"https://images.unsplash.com/photo-1503676260728-1c00da094a0b?q=80&w=2022&auto=format&fit=crop","href":"#booking","description":"Комплексная подготовка к первому классу","title":"Подготовка к школе"},{"imageSrc":"https://images.unsplash.com/photo-1509062522246-3755977927d7?q=80&w=2132&auto=format&fit=crop","title":"Развитие интеллекта","href":"#booking","description":"Ментальная арифметика и скорочтение"},{"title":"Творческие программы","href":"#booking","description":"Арт-студия и театральное мастерство","imageSrc":"https://images.unsplash.com/photo-1513364776144-60967b0f800f?q=80&w=2071&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1546410531-bea5aadcb6ce?q=80&w=2062&auto=format&fit=crop","title":"Иностранные языки","href":"#booking","description":"Английский с носителями языка"},{"imageSrc":"https://images.unsplash.com/photo-1529333166437-7750a6dd5a70?q=80&w=2069&auto=format&fit=crop","href":"#booking","description":"Шахматы и программирование","title":"Логика и мышление"},{"href":"#booking","description":"Робототехника и финансовая грамотность","title":"Дополнительные занятия","imageSrc":"https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?q=80&w=2070&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1514068574489-503a8eb91592?q=80&w=2111&auto=format&fit=crop","href":"#booking","description":"Спортивные секции и танцы","title":"Физическое развитие"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Отзывы"
title="Отзывы родителей"
description="Истории успеха наших учеников и отзывы родителей."
testimonials={[{"imageSrc":"https://images.unsplash.com/photo-1544005313-94ddf0286df2?q=80&w=1976&auto=format&fit=crop","role":"Мама ученика 2 класса","quote":"Мой сын стал намного увереннее в себе и полюбил учиться. Спасибо педагогам за индивидуальный подход!","name":"Елена Смирнова"},{"quote":"Отличный центр! Дочь с удовольствием ходит на робототехнику и английский. Результаты превзошли ожидания.","name":"Алексей Иванов","role":"Папа ученицы 5 класса","imageSrc":"https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?q=80&w=1974&auto=format&fit=crop"},{"imageSrc":"https://images.unsplash.com/photo-1534528741775-53994a69daeb?q=80&w=1964&auto=format&fit=crop","role":"Мама дошкольника","quote":"Подготовка к школе на высшем уровне. Ребенок пошел в первый класс полностью готовым и с огромным желанием учиться.","name":"Мария Петрова"},{"name":"Дмитрий Соколов","quote":"Современные методики и прекрасная атмосфера. Дети не просто учатся, они развиваются как личности.","imageSrc":"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=1974&auto=format&fit=crop","role":"Папа учеников 3 и 6 классов"},{"name":"Анна Кузнецова","quote":"Лучший образовательный центр в городе. Профессиональные педагоги и очень комфортные условия для детей.","role":"Мама ученицы 8 класса","imageSrc":"https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?q=80&w=1964&auto=format&fit=crop"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "why-us" section.
import React from 'react';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function WhyUsSection(): React.JSX.Element {
return (
<div id="why-us" data-section="why-us">
<SectionErrorBoundary name="why-us">
<FaqSplitMedia
tag="О центре"
title="Почему родители выбирают нас"
description="Мы создаем среду, в которой дети раскрывают свой потенциал и становятся лидерами."
items={[{"answer":"Уникальные методики, разработанные экспертами в области детской психологии и педагогики.","question":"Качество образования"},{"question":"Безопасность","answer":"Закрытая территория, видеонаблюдение, пропускная система и экологичные материалы."},{"answer":"Наши ученики побеждают в олимпиадах и поступают в лучшие школы города.","question":"Результаты"},{"question":"Комфорт","answer":"Современные классы, зоны отдыха и эргономичная мебель для правильной осанки."},{"question":"Развитие личности","answer":"Мы развиваем не только интеллект, но и эмоциональный интеллект, лидерские качества и soft skills."}]}
imageSrc="https://picsum.photos/seed/1297150003/1200/800"
/>
</SectionErrorBoundary>
</div>
);
}