Merge version_2_1781416076002 into main #2
@@ -1,181 +1,36 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
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 ServicesSection from './HomePage/sections/Services';
|
||||
import WorkshopSection from './HomePage/sections/Workshop';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
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">
|
||||
<HeroSplitMediaGrid
|
||||
tag="Samsun's Trusted Mechanic"
|
||||
title="Professional Auto Repair Services"
|
||||
description="Keeping your vehicle performing at its best with reliable, transparent, and expert automotive care in Samsun."
|
||||
primaryButton={{
|
||||
text: "Book Appointment", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Our Services", href: "#services"}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/handsome-man-blue-uniform-checks-car_1157-31499.jpg"},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-electric-car_23-2149146253.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="Poyraz Oto is dedicated to providing honest and high-quality car maintenance for the Samsun community. With years of experience and state-of-the-art diagnostic tools, we ensure every vehicle leaves our shop in perfect condition."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesArrowCards
|
||||
tag="Expertise"
|
||||
title="Our Specialized Auto Services"
|
||||
description="From routine oil changes to complex electronic repairs, we cover all aspects of vehicle maintenance."
|
||||
items={[
|
||||
{
|
||||
title: "Advanced Diagnostics", tags: [
|
||||
"Technology", "Repair"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/car-engine_1373-569.jpg"},
|
||||
{
|
||||
title: "Preventive Maintenance", tags: [
|
||||
"Safety", "Engine"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-repairing-car-workshop_329181-11819.jpg"},
|
||||
{
|
||||
title: "Brake & Suspension", tags: [
|
||||
"Safety", "Repair"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-changing-brake-discs-car-service_1303-26910.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="workshop" data-section="workshop">
|
||||
<SectionErrorBoundary name="workshop">
|
||||
<FeaturesImageBento
|
||||
tag="Comprehensive"
|
||||
title="Our Workshop Highlights"
|
||||
description="Complete care for your vehicle's mechanical and electrical systems."
|
||||
items={[
|
||||
{
|
||||
title: "Tire Balancing", description: "Precision wheel alignment.", imageSrc: "http://img.b2bpic.net/free-photo/modern-automobile-mechanic-composition_23-2147881684.jpg"},
|
||||
{
|
||||
title: "Electrical Systems", description: "Computerized troubleshooting.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-man-working-bike_23-2149039023.jpg"},
|
||||
{
|
||||
title: "Suspension Work", description: "Smooth ride assurance.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-woman-repairing-car_23-2150171262.jpg"},
|
||||
{
|
||||
title: "Climate Control", description: "AC system repairs.", imageSrc: "http://img.b2bpic.net/free-photo/woman-hand-turning-car-air-conditioning-system-car-air-conditioner-off-button-close-up-view_657921-553.jpg"},
|
||||
{
|
||||
title: "Engine Tuning", description: "Optimized performance.", imageSrc: "http://img.b2bpic.net/free-photo/male-mechanic-working-his-workshop_23-2148970737.jpg"},
|
||||
{
|
||||
title: "Exhaust Repair", description: "Efficiency and safety.", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-fixing-undercarriage-with-wrench_7502-4429.jpg"},
|
||||
{
|
||||
title: "Detailing", description: "Vehicle rejuvenation.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-washing-service_23-2149212196.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<WorkshopSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Maintenance"
|
||||
title="Service Packages"
|
||||
description="Affordable maintenance plans for your peace of mind."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard", price: "500 TL", description: "Essential oil and filter change.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Engine Oil", "Oil Filter", "Checkup"],
|
||||
},
|
||||
{
|
||||
tag: "Complete", price: "1200 TL", description: "Comprehensive seasonal checkup.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Standard Plus", "Brake Check", "AC Clean"],
|
||||
},
|
||||
{
|
||||
tag: "Premium", price: "2500 TL", description: "Top-to-bottom vehicle restoration.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Complete Plus", "Suspension", "Tires"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Feedback"
|
||||
title="Our Happy Customers"
|
||||
description="See why Samsun trusts Poyraz Oto."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ahmet Y.", role: "Driver", company: "Local Customer", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-auto-repairman-shaking-hands-with-his-customers-workshop_637285-7786.jpg"},
|
||||
{
|
||||
name: "Ayşe K.", role: "Employee", company: "Samsun Corp", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/charismatic-man-holding-car-keys-showing-thumbs-up_158595-4217.jpg"},
|
||||
{
|
||||
name: "Mehmet D.", role: "Student", company: "Local Customer", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-giving-keys-car-customer_329181-11862.jpg"},
|
||||
{
|
||||
name: "Fatma S.", role: "Teacher", company: "Samsun Local", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/client-vehicle-distributor-checkup_482257-115279.jpg"},
|
||||
{
|
||||
name: "Can B.", role: "Worker", company: "Local Business", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-customer-signing-document-workshop_329181-11872.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Q&A"
|
||||
title="Common Questions"
|
||||
description="We are here to answer your common questions regarding our automotive services."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer warranty?", answer: "Yes, we provide a 6-month warranty on all mechanical repairs."},
|
||||
{
|
||||
question: "Can I leave my car overnight?", answer: "Yes, our workshop is secure and monitored 24/7."},
|
||||
{
|
||||
question: "What payment methods do you accept?", answer: "We accept cash, credit cards, and bank transfers."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Visit Us"
|
||||
text="Ready to get your car serviced in Samsun? Book your appointment today and experience our expert service."
|
||||
primaryButton={{
|
||||
text: "Call Now", href: "tel:+905550000000"}}
|
||||
secondaryButton={{
|
||||
text: "Email Us", href: "mailto:info@poyrazotosamsun.com"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
18
src/pages/HomePage/sections/About.tsx
Normal file
18
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
// 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 AboutText from '@/components/sections/about/AboutText';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="Poyraz Oto is dedicated to providing honest and high-quality car maintenance for the Samsun community. With years of experience and state-of-the-art diagnostic tools, we ensure every vehicle leaves our shop in perfect condition."
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Contact.tsx
Normal file
23
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
// 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="Visit Us"
|
||||
text="Ready to get your car serviced in Samsun? Book your appointment today and experience our expert service."
|
||||
primaryButton={{
|
||||
text: "Call Now", href: "tel:+905550000000"}}
|
||||
secondaryButton={{
|
||||
text: "Email Us", href: "mailto:info@poyrazotosamsun.com"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Faq.tsx
Normal file
28
src/pages/HomePage/sections/Faq.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 "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="Q&A"
|
||||
title="Common Questions"
|
||||
description="We are here to answer your common questions regarding our automotive services."
|
||||
items={[
|
||||
{
|
||||
question: "Do you offer warranty?", answer: "Yes, we provide a 6-month warranty on all mechanical repairs."},
|
||||
{
|
||||
question: "Can I leave my car overnight?", answer: "Yes, our workshop is secure and monitored 24/7."},
|
||||
{
|
||||
question: "What payment methods do you accept?", answer: "We accept cash, credit cards, and bank transfers."},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
166
src/pages/HomePage/sections/Hero.tsx
Normal file
166
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,166 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import { useEffect, useState } from "react";
|
||||
import { Star } from "lucide-react";
|
||||
import { motion, AnimatePresence } from "motion/react";
|
||||
import { cls } from "@/lib/utils";
|
||||
import Button from "@/components/ui/Button";
|
||||
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
|
||||
const primaryButton = {
|
||||
href: "#contact",
|
||||
text: "Book Appointment"
|
||||
};
|
||||
const secondaryButton = {
|
||||
href: "#services",
|
||||
text: "Our Services"
|
||||
};
|
||||
const testimonials = [
|
||||
{
|
||||
imageSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=150&h=150&fit=crop&crop=faces",
|
||||
text: "Best auto repair shop in Samsun! They fixed my engine issues quickly and the price was very reasonable.",
|
||||
name: "Ahmet Yılmaz",
|
||||
handle: "@ahmety",
|
||||
rating: 5
|
||||
},
|
||||
{
|
||||
name: "Ayşe Demir",
|
||||
handle: "@aysed",
|
||||
rating: 5,
|
||||
imageSrc: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=faces",
|
||||
text: "Very professional and trustworthy. I always bring my car here for regular maintenance."
|
||||
},
|
||||
{
|
||||
name: "Mehmet Kaya",
|
||||
handle: "@mehmetk",
|
||||
rating: 5,
|
||||
imageSrc: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=faces",
|
||||
text: "Great service and friendly staff. They explained everything clearly before starting the repair."
|
||||
}
|
||||
];
|
||||
|
||||
type Testimonial = {
|
||||
name: string;
|
||||
handle: string;
|
||||
text: string;
|
||||
rating: number;
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
type HeroOverlayTestimonialProps = {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
secondaryButton: { text: string; href: string };
|
||||
testimonials: Testimonial[];
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
const INTERVAL = 5000;
|
||||
|
||||
const HeroInline = () => {
|
||||
const [currentIndex, setCurrentIndex] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
if (testimonials.length <= 1) return;
|
||||
|
||||
const interval = setInterval(() => {
|
||||
setCurrentIndex((prev) => (prev + 1) % testimonials.length);
|
||||
}, INTERVAL);
|
||||
return () => clearInterval(interval);
|
||||
}, [currentIndex, testimonials.length]);
|
||||
|
||||
const testimonial = testimonials[currentIndex];
|
||||
|
||||
return (
|
||||
<section
|
||||
aria-label="Hero section"
|
||||
className="relative w-full h-svh overflow-hidden flex flex-col justify-start mb-20"
|
||||
>
|
||||
<HeroBackgroundSlot />
|
||||
<ImageOrVideo
|
||||
imageSrc={"http://img.b2bpic.net/free-photo/handsome-man-blue-uniform-checks-car_1157-31499.jpg"}
|
||||
className="absolute inset-0 w-full h-full object-cover rounded-none"
|
||||
/>
|
||||
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-background/80 via-background/50 to-background" />
|
||||
<div
|
||||
className="absolute z-10 w-[150vw] h-[150vw] left-0 top-0 -translate-x-1/2 -translate-y-1/2 backdrop-blur mask-[radial-gradient(circle,black_20%,transparent_70%)]"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
|
||||
<div className="relative z-10 w-content-width mx-auto pt-35">
|
||||
<div className="flex flex-col gap-3 w-full md:w-6/10 lg:w-1/2 xl:w-45/100 2xl:w-4/10">
|
||||
<div className="w-fit px-3 py-1 mb-1 text-sm card rounded">
|
||||
<p>{"Samsun's Trusted Mechanic"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Professional Auto Repair Services"}
|
||||
variant="fade-blur"
|
||||
gradientText={true}
|
||||
tag="h1"
|
||||
className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-white text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"Keeping your vehicle performing at its best with reliable, transparent, and expert automotive care in Samsun."}
|
||||
variant="fade-blur"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="text-lg md:text-xl text-white leading-snug text-balance"
|
||||
/>
|
||||
|
||||
<div className="flex flex-wrap gap-3 mt-2 md:mt-3">
|
||||
<Button text={primaryButton.text} href={primaryButton.href} variant="primary"/>
|
||||
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary"animationDelay={0.1} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<AnimatePresence mode="wait">
|
||||
<motion.div
|
||||
key={currentIndex}
|
||||
initial={{ opacity: 0, y: 10 }}
|
||||
animate={{ opacity: 1, y: 0 }}
|
||||
exit={{ opacity: 0, y: -10 }}
|
||||
transition={{ duration: 0.3 }}
|
||||
className="absolute z-10 bottom-4 left-4 right-4 p-3 xl:p-4 2xl:p-5 card rounded flex flex-col gap-3 xl:gap-4 2xl:gap-5 md:left-auto md:bottom-6 md:right-6 md:max-w-25/100 2xl:max-w-2/10"
|
||||
>
|
||||
<div className="flex gap-1.5">
|
||||
{Array.from({ length: 5 }).map((_, index) => (
|
||||
<Star
|
||||
key={index}
|
||||
className={cls("size-5 text-accent", index < testimonial.rating ? "fill-accent" : "fill-transparent")}
|
||||
strokeWidth={1.5}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
||||
<p className="text-lg leading-snug text-balance">{testimonial.text}</p>
|
||||
|
||||
<div className="flex items-center gap-3">
|
||||
<ImageOrVideo
|
||||
imageSrc={testimonial.imageSrc}
|
||||
videoSrc={testimonial.videoSrc}
|
||||
className="size-10 md:size-11 2xl:size-12 rounded-full object-cover"
|
||||
/>
|
||||
<div className="flex flex-col">
|
||||
<span className="text-base text-foreground leading-snug font-medium">{testimonial.name}</span>
|
||||
<span className="text-base text-foreground/75 leading-snug">{testimonial.handle}</span>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
</AnimatePresence>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<div data-webild-section="hero" id="hero">
|
||||
<HeroInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Pricing.tsx
Normal file
40
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// 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 PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingLayeredCards
|
||||
tag="Maintenance"
|
||||
title="Service Packages"
|
||||
description="Affordable maintenance plans for your peace of mind."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard", price: "500 TL", description: "Essential oil and filter change.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Engine Oil", "Oil Filter", "Checkup"],
|
||||
},
|
||||
{
|
||||
tag: "Complete", price: "1200 TL", description: "Comprehensive seasonal checkup.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Standard Plus", "Brake Check", "AC Clean"],
|
||||
},
|
||||
{
|
||||
tag: "Premium", price: "2500 TL", description: "Top-to-bottom vehicle restoration.", primaryButton: {
|
||||
text: "Select", href: "#contact"},
|
||||
features: [
|
||||
"Complete Plus", "Suspension", "Tires"],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Services.tsx
Normal file
34
src/pages/HomePage/sections/Services.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 "services" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ServicesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesArrowCards
|
||||
tag="Expertise"
|
||||
title="Our Specialized Auto Services"
|
||||
description="From routine oil changes to complex electronic repairs, we cover all aspects of vehicle maintenance."
|
||||
items={[
|
||||
{
|
||||
title: "Advanced Diagnostics", tags: [
|
||||
"Technology", "Repair"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/car-engine_1373-569.jpg"},
|
||||
{
|
||||
title: "Preventive Maintenance", tags: [
|
||||
"Safety", "Engine"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-repairing-car-workshop_329181-11819.jpg"},
|
||||
{
|
||||
title: "Brake & Suspension", tags: [
|
||||
"Safety", "Repair"],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-changing-brake-discs-car-service_1303-26910.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Testimonials.tsx
Normal file
37
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// 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 TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialOverlayCards
|
||||
tag="Feedback"
|
||||
title="Our Happy Customers"
|
||||
description="See why Samsun trusts Poyraz Oto."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ahmet Y.", role: "Driver", company: "Local Customer", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/happy-auto-repairman-shaking-hands-with-his-customers-workshop_637285-7786.jpg"},
|
||||
{
|
||||
name: "Ayşe K.", role: "Employee", company: "Samsun Corp", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/charismatic-man-holding-car-keys-showing-thumbs-up_158595-4217.jpg"},
|
||||
{
|
||||
name: "Mehmet D.", role: "Student", company: "Local Customer", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-giving-keys-car-customer_329181-11862.jpg"},
|
||||
{
|
||||
name: "Fatma S.", role: "Teacher", company: "Samsun Local", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/client-vehicle-distributor-checkup_482257-115279.jpg"},
|
||||
{
|
||||
name: "Can B.", role: "Worker", company: "Local Business", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mechanic-customer-signing-document-workshop_329181-11872.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Workshop.tsx
Normal file
36
src/pages/HomePage/sections/Workshop.tsx
Normal file
@@ -0,0 +1,36 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "workshop" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function WorkshopSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="workshop" data-section="workshop">
|
||||
<SectionErrorBoundary name="workshop">
|
||||
<FeaturesImageBento
|
||||
tag="Comprehensive"
|
||||
title="Our Workshop Highlights"
|
||||
description="Complete care for your vehicle's mechanical and electrical systems."
|
||||
items={[
|
||||
{
|
||||
title: "Tire Balancing", description: "Precision wheel alignment.", imageSrc: "http://img.b2bpic.net/free-photo/modern-automobile-mechanic-composition_23-2147881684.jpg"},
|
||||
{
|
||||
title: "Electrical Systems", description: "Computerized troubleshooting.", imageSrc: "http://img.b2bpic.net/free-photo/close-up-young-man-working-bike_23-2149039023.jpg"},
|
||||
{
|
||||
title: "Suspension Work", description: "Smooth ride assurance.", imageSrc: "http://img.b2bpic.net/free-photo/top-view-woman-repairing-car_23-2150171262.jpg"},
|
||||
{
|
||||
title: "Climate Control", description: "AC system repairs.", imageSrc: "http://img.b2bpic.net/free-photo/woman-hand-turning-car-air-conditioning-system-car-air-conditioner-off-button-close-up-view_657921-553.jpg"},
|
||||
{
|
||||
title: "Engine Tuning", description: "Optimized performance.", imageSrc: "http://img.b2bpic.net/free-photo/male-mechanic-working-his-workshop_23-2148970737.jpg"},
|
||||
{
|
||||
title: "Exhaust Repair", description: "Efficiency and safety.", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-fixing-undercarriage-with-wrench_7502-4429.jpg"},
|
||||
{
|
||||
title: "Detailing", description: "Vehicle rejuvenation.", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-car-washing-service_23-2149212196.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user