Merge version_2_1781680198891 into main #4
@@ -1,22 +1,22 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
|
||||
@import "tailwindcss";
|
||||
@import "./styles/masks.css";
|
||||
@import "./styles/animations.css";
|
||||
|
||||
: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: #ffffff;
|
||||
--card: #f8f9fa;
|
||||
--foreground: #111827;
|
||||
--primary-cta: #000000;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #f3f4f6;
|
||||
--secondary-cta-text: #111827;
|
||||
--accent: #e5e7eb;
|
||||
--background-accent: #d1d5db;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
--radius: 0rem;
|
||||
|
||||
/* @layout/content-width/medium */
|
||||
--width-content-width: clamp(40rem, 72.5vw, 100rem);
|
||||
@@ -88,7 +88,7 @@
|
||||
--color-background-accent: var(--background-accent);
|
||||
|
||||
/* Fonts */
|
||||
--font-sans: 'Open Sans', sans-serif;
|
||||
--font-sans: 'Inter', sans-serif;
|
||||
--font-tight: "Inter Tight", sans-serif;
|
||||
--font-mono: monospace;
|
||||
|
||||
|
||||
@@ -1,169 +1,42 @@
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TeamGlassCards from '@/components/sections/team/TeamGlassCards';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
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 AboutSection from './HomePage/sections/About';
|
||||
import FeaturesSection from './HomePage/sections/Features';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import SocialProofSection from './HomePage/sections/SocialProof';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroCenteredLogos
|
||||
avatarsSrc={[
|
||||
"http://img.b2bpic.net/free-photo/young-cheerful-man-classic-black-jacket-white-shirt-happily-showing-ok-gesture-while-looking-camera-orange-background_574295-5835.jpg", "http://img.b2bpic.net/free-photo/pretty-student-girl-with-gathered-hair-make-up-relaxing-home-after-lectures-university-attractive-cheerful-young-woman-blue-dress-sitting-comfortable-couch-with-joyful-relaxed-smile_343059-2102.jpg", "http://img.b2bpic.net/free-photo/closeup-smiling-beautiful-adult-businesswoman_1262-1760.jpg", "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg"
|
||||
]}
|
||||
avatarText="Ponad 1000 zadowolonych klientów"
|
||||
title="Twój samochód w idealnym stanie"
|
||||
description="Profesjonalny detailing, zabezpieczenia ceramiczne i kompleksowa pielęgnacja w PolishIT Detailing."
|
||||
primaryButton={{ text: "Zobacz ofertę", href: "#services" }}
|
||||
secondaryButton={{ text: "Kontakt", href: "#contact" }}
|
||||
names={["Jan", "Anna", "Marek", "Ewa"]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-side-mirror-modern-white-cabriolet-car_181624-25257.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="O nas"
|
||||
title="Pasja do perfekcji"
|
||||
description="W PolishIT Detailing podchodzimy do każdego auta z najwyższą dbałością o detale. Wykorzystujemy tylko certyfikowane produkty."
|
||||
items={[
|
||||
{ icon: "Sparkles", title: "Najwyższa jakość", description: "Używamy tylko sprawdzonych środków chemicznych." },
|
||||
{ icon: "Shield", title: "Ochrona", description: "Zapewniamy ceramiczne zabezpieczenie lakieru." },
|
||||
{ icon: "Zap", title: "Szybkość", description: "Efekty, które zobaczysz natychmiast po odbiorze." }
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-polish-car-garage_1157-36588.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Nasze zalety"
|
||||
title="Dlaczego my?"
|
||||
description="Poznaj kluczowe aspekty naszej pracy."
|
||||
items={[
|
||||
{ tag: "Detailing", title: "Precyzja", description: "Każdy centymetr jest sprawdzany przez naszych fachowców.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-washing-service_23-2149212227.jpg" },
|
||||
{ tag: "Ochrona", title: "Ceramika", description: "Długotrwała ochrona przed warunkami atmosferycznymi.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/man-polishing-car-with-orbital-applicator_1303-30572.jpg" },
|
||||
{ tag: "Wnętrze", title: "Pranie tapicerki", description: "Dokładne czyszczenie i odświeżanie wnętrza pojazdu.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-interior-clean-up-service_23-2149212260.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Usługi"
|
||||
title="Co oferujemy?"
|
||||
description="Nasza pełna oferta detailingowa."
|
||||
items={[
|
||||
{ title: "Mycie ręczne", description: "Bezpieczne mycie z dbałością o lakier.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/bubbles-dark-water_23-2147933802.jpg" },
|
||||
{ title: "Polerowanie lakieru", description: "Usuwanie rys i wydobycie blasku.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193625.jpg" },
|
||||
{ title: "Powłoki ceramiczne", description: "Najwyższa ochrona lakieru.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/man-white-shirt-works-with-cement_1157-37360.jpg" },
|
||||
{ title: "Pranie wnętrza", description: "Głębokie oczyszczanie tkanin.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/man-looking-car-car-showroom_1303-14574.jpg" },
|
||||
{ title: "Detailing silnika", description: "Czyszczenie komory silnika.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/female-mechanic-pouring-oil-lubricant-into-car-engine_1170-1460.jpg" },
|
||||
{ title: "Przyciemnianie szyb", description: "Profesjonalna folia przyciemniająca.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/car-wrapping-with-foil-car-service_1303-32349.jpg" },
|
||||
{ title: "Detale skórzane", description: "Renowacja i konserwacja skóry.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/luggage-seen-from-rear-car-window_23-2150934324.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Cennik"
|
||||
title="Wybierz pakiet dla siebie"
|
||||
description="Elastyczne rozwiązania dla każdego pojazdu."
|
||||
plans={[
|
||||
{ tag: "Basic", price: "300 PLN", period: "jednorazowo", features: ["Mycie ręczne", "Odkurzanie", "Nabłyszczanie opon"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/man-s-hand-is-cleaning-waxing-car_1150-6113.jpg" },
|
||||
{ tag: "Premium", price: "800 PLN", period: "jednorazowo", features: ["Mycie detailingowe", "Polerowanie jednoetapowe", "Woskowanie premium"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/shaving-brush-spray-bottle-with-blurred-bottle_23-2148256969.jpg" },
|
||||
{ tag: "Expert", price: "1500 PLN", period: "jednorazowo", features: ["Pełny detailing", "Powłoka ceramiczna 1 rok", "Czyszczenie komory silnika"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22304.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamGlassCards
|
||||
tag="Zespół"
|
||||
title="Nasi specjaliści"
|
||||
description="Poznaj ekspertów, którzy dbają o Twój samochód."
|
||||
members={[
|
||||
{ name: "Marek Nowak", role: "Head Detailer", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193573.jpg" },
|
||||
{ name: "Anna Kowalska", role: "Specjalista ds. Powłok", imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-cleaning-his-home_23-2148112857.jpg" },
|
||||
{ name: "Tomasz Wiśniewski", role: "Technik wnętrz", imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-car-service-owner-with-arms-crossed-his-workshop_637285-9434.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="Zdecydowanie najlepszy detailing w mieście. Auto wygląda lepiej niż po wyjeździe z salonu!"
|
||||
rating={5}
|
||||
author="Katarzyna W."
|
||||
avatars={[
|
||||
{ name: "Katarzyna W.", imageSrc: "http://img.b2bpic.net/free-photo/blond-man-happy-expression_1194-2919.jpg" },
|
||||
{ name: "Marek T.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-with-long-brown-hair-black-t-shirt-white-jacket_613910-8245.jpg" },
|
||||
{ name: "Adam S.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-man-looking-photographer_23-2148398473.jpg" },
|
||||
{ name: "Ewa J.", imageSrc: "http://img.b2bpic.net/free-photo/stylish-businesswoman-with-glasses_23-2147989567.jpg" },
|
||||
{ name: "Robert B.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-smiling-woman-looking-camera_23-2148187139.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Partnerzy"
|
||||
title="Pracujemy na najlepszych produktach"
|
||||
description="Współpracujemy z liderami rynku detailingowego, aby zapewnić najwyższą jakość usług."
|
||||
names={["Meguiar's", "Gtechniq", "Sonax", "Chemical Guys", "Koch Chemie", "CarPro", "Fresso"]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<SocialProofSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="FAQ"
|
||||
title="Masz pytania?"
|
||||
description="Znajdź odpowiedzi na najczęstsze wątpliwości."
|
||||
items={[
|
||||
{ question: "Jak długo trwa pełny detailing?", answer: "Standardowo od 1 do 3 dni, w zależności od wybranego pakietu." },
|
||||
{ question: "Czy muszę zostawić auto?", answer: "Tak, większość usług wymaga pozostawienia pojazdu na cały proces." },
|
||||
{ question: "Czy używacie profesjonalnej chemii?", answer: "Oczywiście, stosujemy wyłącznie sprawdzone preparaty detailingowe." }
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-man-woman-talking_23-2150171287.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Kontakt"
|
||||
text="Umów swoje auto już dziś i poczuj różnicę."
|
||||
primaryButton={{ text: "Zadzwoń teraz", href: "tel:+48123456789" }}
|
||||
secondaryButton={{ text: "Napisz wiadomość", href: "mailto:kontakt@polishit.pl" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
26
src/pages/HomePage/sections/About.tsx
Normal file
26
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutFeaturesSplit
|
||||
tag="O nas"
|
||||
title="Pasja do perfekcji"
|
||||
description="W PolishIT Detailing podchodzimy do każdego auta z najwyższą dbałością o detale. Wykorzystujemy tylko certyfikowane produkty."
|
||||
items={[
|
||||
{ icon: "Sparkles", title: "Najwyższa jakość", description: "Używamy tylko sprawdzonych środków chemicznych." },
|
||||
{ icon: "Shield", title: "Ochrona", description: "Zapewniamy ceramiczne zabezpieczenie lakieru." },
|
||||
{ icon: "Zap", title: "Szybkość", description: "Efekty, które zobaczysz natychmiast po odbiorze." }
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/man-polish-car-garage_1157-36588.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Contact.tsx
Normal file
21
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
// 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="Kontakt"
|
||||
text="Umów swoje auto już dziś i poczuj różnicę."
|
||||
primaryButton={{ text: "Zadzwoń teraz", href: "tel:+48123456789" }}
|
||||
secondaryButton={{ text: "Napisz wiadomość", href: "mailto:kontakt@polishit.pl" }}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
26
src/pages/HomePage/sections/Faq.tsx
Normal file
26
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="FAQ"
|
||||
title="Masz pytania?"
|
||||
description="Znajdź odpowiedzi na najczęstsze wątpliwości."
|
||||
items={[
|
||||
{ question: "Jak długo trwa pełny detailing?", answer: "Standardowo od 1 do 3 dni, w zależności od wybranego pakietu." },
|
||||
{ question: "Czy muszę zostawić auto?", answer: "Tak, większość usług wymaga pozostawienia pojazdu na cały proces." },
|
||||
{ question: "Czy używacie profesjonalnej chemii?", answer: "Oczywiście, stosujemy wyłącznie sprawdzone preparaty detailingowe." }
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-man-woman-talking_23-2150171287.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Features.tsx
Normal file
25
src/pages/HomePage/sections/Features.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "features" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FeaturesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Nasze zalety"
|
||||
title="Dlaczego my?"
|
||||
description="Poznaj kluczowe aspekty naszej pracy."
|
||||
items={[
|
||||
{ tag: "Detailing", title: "Precyzja", description: "Każdy centymetr jest sprawdzany przez naszych fachowców.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-washing-service_23-2149212227.jpg" },
|
||||
{ tag: "Ochrona", title: "Ceramika", description: "Długotrwała ochrona przed warunkami atmosferycznymi.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/man-polishing-car-with-orbital-applicator_1303-30572.jpg" },
|
||||
{ tag: "Wnętrze", title: "Pranie tapicerki", description: "Dokładne czyszczenie i odświeżanie wnętrza pojazdu.", primaryButton: { text: "Więcej", href: "#services" }, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-interior-clean-up-service_23-2149212260.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Hero.tsx
Normal file
27
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroCenteredLogos
|
||||
avatarsSrc={[
|
||||
"http://img.b2bpic.net/free-photo/young-cheerful-man-classic-black-jacket-white-shirt-happily-showing-ok-gesture-while-looking-camera-orange-background_574295-5835.jpg", "http://img.b2bpic.net/free-photo/pretty-student-girl-with-gathered-hair-make-up-relaxing-home-after-lectures-university-attractive-cheerful-young-woman-blue-dress-sitting-comfortable-couch-with-joyful-relaxed-smile_343059-2102.jpg", "http://img.b2bpic.net/free-photo/closeup-smiling-beautiful-adult-businesswoman_1262-1760.jpg", "http://img.b2bpic.net/free-photo/very-good-smiling-brunette-woman-shows-ok-okay-hand-sign-looking-satisfied-recommend-great-deal-pleased-with-quality-standing-white-background_176420-46695.jpg"
|
||||
]}
|
||||
avatarText="Ponad 1000 zadowolonych klientów"
|
||||
title="Twój samochód w idealnym stanie"
|
||||
description="Profesjonalny detailing, zabezpieczenia ceramiczne i kompleksowa pielęgnacja w PolishIT Detailing."
|
||||
primaryButton={{ text: "Zobacz ofertę", href: "#services" }}
|
||||
secondaryButton={{ text: "Kontakt", href: "#contact" }}
|
||||
names={["Jan", "Anna", "Marek", "Ewa"]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/closeup-shot-side-mirror-modern-white-cabriolet-car_181624-25257.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Pricing.tsx
Normal file
25
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Cennik"
|
||||
title="Wybierz pakiet dla siebie"
|
||||
description="Elastyczne rozwiązania dla każdego pojazdu."
|
||||
plans={[
|
||||
{ tag: "Basic", price: "300 PLN", period: "jednorazowo", features: ["Mycie ręczne", "Odkurzanie", "Nabłyszczanie opon"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/man-s-hand-is-cleaning-waxing-car_1150-6113.jpg" },
|
||||
{ tag: "Premium", price: "800 PLN", period: "jednorazowo", features: ["Mycie detailingowe", "Polerowanie jednoetapowe", "Woskowanie premium"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/shaving-brush-spray-bottle-with-blurred-bottle_23-2148256969.jpg" },
|
||||
{ tag: "Expert", price: "1500 PLN", period: "jednorazowo", features: ["Pełny detailing", "Powłoka ceramiczna 1 rok", "Czyszczenie komory silnika"], primaryButton: { text: "Wybierz", href: "#contact" }, imageSrc: "http://img.b2bpic.net/free-photo/car-wash-detailing-station_1303-22304.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Services.tsx
Normal file
29
src/pages/HomePage/sections/Services.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// 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="Usługi"
|
||||
title="Co oferujemy?"
|
||||
description="Nasza pełna oferta detailingowa."
|
||||
items={[
|
||||
{ title: "Mycie ręczne", description: "Bezpieczne mycie z dbałością o lakier.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/bubbles-dark-water_23-2147933802.jpg" },
|
||||
{ title: "Polerowanie lakieru", description: "Usuwanie rys i wydobycie blasku.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193625.jpg" },
|
||||
{ title: "Powłoki ceramiczne", description: "Najwyższa ochrona lakieru.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/man-white-shirt-works-with-cement_1157-37360.jpg" },
|
||||
{ title: "Pranie wnętrza", description: "Głębokie oczyszczanie tkanin.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/man-looking-car-car-showroom_1303-14574.jpg" },
|
||||
{ title: "Detailing silnika", description: "Czyszczenie komory silnika.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/female-mechanic-pouring-oil-lubricant-into-car-engine_1170-1460.jpg" },
|
||||
{ title: "Przyciemnianie szyb", description: "Profesjonalna folia przyciemniająca.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/car-wrapping-with-foil-car-service_1303-32349.jpg" },
|
||||
{ title: "Detale skórzane", description: "Renowacja i konserwacja skóry.", href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/luggage-seen-from-rear-car-window_23-2150934324.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/SocialProof.tsx
Normal file
21
src/pages/HomePage/sections/SocialProof.tsx
Normal file
@@ -0,0 +1,21 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "social-proof" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function SocialProofSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="social-proof" data-section="social-proof">
|
||||
<SectionErrorBoundary name="social-proof">
|
||||
<SocialProofMarquee
|
||||
tag="Partnerzy"
|
||||
title="Pracujemy na najlepszych produktach"
|
||||
description="Współpracujemy z liderami rynku detailingowego, aby zapewnić najwyższą jakość usług."
|
||||
names={["Meguiar's", "Gtechniq", "Sonax", "Chemical Guys", "Koch Chemie", "CarPro", "Fresso"]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
25
src/pages/HomePage/sections/Team.tsx
Normal file
25
src/pages/HomePage/sections/Team.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "team" section.
|
||||
|
||||
import React from 'react';
|
||||
import TeamGlassCards from '@/components/sections/team/TeamGlassCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamGlassCards
|
||||
tag="Zespół"
|
||||
title="Nasi specjaliści"
|
||||
description="Poznaj ekspertów, którzy dbają o Twój samochód."
|
||||
members={[
|
||||
{ name: "Marek Nowak", role: "Head Detailer", imageSrc: "http://img.b2bpic.net/free-photo/close-up-car-care-process_23-2149193573.jpg" },
|
||||
{ name: "Anna Kowalska", role: "Specjalista ds. Powłok", imageSrc: "http://img.b2bpic.net/free-photo/portrait-man-cleaning-his-home_23-2148112857.jpg" },
|
||||
{ name: "Tomasz Wiśniewski", role: "Technik wnętrz", imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-car-service-owner-with-arms-crossed-his-workshop_637285-9434.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Testimonials.tsx
Normal file
27
src/pages/HomePage/sections/Testimonials.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 "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialTrustCard
|
||||
quote="Zdecydowanie najlepszy detailing w mieście. Auto wygląda lepiej niż po wyjeździe z salonu!"
|
||||
rating={5}
|
||||
author="Katarzyna W."
|
||||
avatars={[
|
||||
{ name: "Katarzyna W.", imageSrc: "http://img.b2bpic.net/free-photo/blond-man-happy-expression_1194-2919.jpg" },
|
||||
{ name: "Marek T.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-woman-with-long-brown-hair-black-t-shirt-white-jacket_613910-8245.jpg" },
|
||||
{ name: "Adam S.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-confident-man-looking-photographer_23-2148398473.jpg" },
|
||||
{ name: "Ewa J.", imageSrc: "http://img.b2bpic.net/free-photo/stylish-businesswoman-with-glasses_23-2147989567.jpg" },
|
||||
{ name: "Robert B.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-smiling-woman-looking-camera_23-2148187139.jpg" }
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user