Merge version_2_1781549568391 into main #2
@@ -1,243 +1,35 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import PricingSplitCards from '@/components/sections/pricing/PricingSplitCards';
|
||||
import TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import { Award, Car, Users } 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 FleetSection from './HomePage/sections/Fleet';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import TrustLogosSection from './HomePage/sections/TrustLogos';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplit
|
||||
tag="Premium Dubai Rentals"
|
||||
title="Reliable Car Rentals in Dubai"
|
||||
description="Experience luxury and comfort with our wide range of premium vehicles. We offer daily, short-term, and long-term rental options tailored for your needs."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/971505301204",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Follow Instagram",
|
||||
href: "https://www.instagram.com/goldenluorentacar",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/businessman-walks-past-his-car_496169-2779.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
<TrustLogosSection />
|
||||
|
||||
<div id="fleet" data-section="fleet">
|
||||
<SectionErrorBoundary name="fleet">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Fleet"
|
||||
title="Explore Our Luxury Collection"
|
||||
description="From high-performance supercars to spacious SUVs, we have the perfect ride for every occasion."
|
||||
items={[
|
||||
{
|
||||
title: "Lamborghini Huracán",
|
||||
description: "High performance thrill machine.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-man-car-showroom_1303-22855.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mercedes-Benz G-Class",
|
||||
description: "Iconic luxury and power.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-ladies-going-out-car_132075-12211.jpg",
|
||||
},
|
||||
{
|
||||
title: "BMW 5 Series",
|
||||
description: "Executive class comfort.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-salesperson-car-showroom-standing-by-car_1303-22387.jpg",
|
||||
},
|
||||
{
|
||||
title: "Toyota Land Cruiser",
|
||||
description: "Supreme comfort and safety.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traveling-with-off-road-car_23-2151473001.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nissan Patrol",
|
||||
description: "The legend of the desert.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bohemian-personalities-going-adventure-together_23-2149623204.jpg",
|
||||
},
|
||||
{
|
||||
title: "Toyota Yaris",
|
||||
description: "Efficient city companion.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stack-coins-calculator-toy-car-pen-template_23-2147919134.jpg",
|
||||
},
|
||||
{
|
||||
title: "Airport Transfer",
|
||||
description: "Premium shuttle service.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/businesswoman-sitting-backseat-taxi_23-2149236699.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FleetSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingSplitCards
|
||||
tag="Rental Packages"
|
||||
title="Transparent Pricing"
|
||||
description="Choose from flexible rental plans that fit your schedule and budget."
|
||||
plans={[
|
||||
{
|
||||
tag: "Short-Term",
|
||||
price: "AED 250+",
|
||||
period: "/day",
|
||||
description: "Perfect for weekend getaways.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "https://wa.me/971505301204",
|
||||
},
|
||||
featuresTitle: "Included Perks",
|
||||
features: [
|
||||
"Comprehensive insurance",
|
||||
"24/7 roadside help",
|
||||
"Free delivery",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Long-Term",
|
||||
price: "Custom",
|
||||
period: "/mo",
|
||||
description: "Best value for extended stays.",
|
||||
primaryButton: {
|
||||
text: "Inquire Now",
|
||||
href: "https://wa.me/971505301204",
|
||||
},
|
||||
featuresTitle: "Advanced Benefits",
|
||||
features: [
|
||||
"Unlimited mileage",
|
||||
"Priority maintenance",
|
||||
"Dedicated manager",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Common Questions"
|
||||
title="Frequently Asked Questions"
|
||||
description="Get quick answers to common rental questions."
|
||||
items={[
|
||||
{
|
||||
question: "What documents are required?",
|
||||
answer: "Valid driving license, passport copy, and credit card.",
|
||||
},
|
||||
{
|
||||
question: "What are your business hours?",
|
||||
answer: "10:00 AM – 11:00 PM. Fridays are for walk-ins only.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver cars?",
|
||||
answer: "Yes, we provide doorstep delivery services across Dubai.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-using-mobile-phone-communication-online-application-standing-near-car-city-street-parking-outdoors-car-sharing-rental-service_158595-6723.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsIconCards
|
||||
tag="Our Impact"
|
||||
title="Why Choose Us"
|
||||
description="Trusted by hundreds of satisfied clients in Dubai."
|
||||
metrics={[
|
||||
{
|
||||
icon: Car,
|
||||
title: "Vehicles Served",
|
||||
value: "500+",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Happy Clients",
|
||||
value: "1200+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Years Experience",
|
||||
value: "10+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Clients Say"
|
||||
description="Read authentic experiences from our customers."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Tourist",
|
||||
quote: "Fantastic service! The car was brand new.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-family-buying-car_1303-13613.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark D.",
|
||||
role: "Businessman",
|
||||
quote: "Professional, on-time, and reliable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-uber-driver-giving-taxi-ride_23-2149241761.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Traveler",
|
||||
quote: "Golden Luo made my trip unforgettable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/family-having-fun-winter-roadtrip_23-2149314844.jpg",
|
||||
},
|
||||
{
|
||||
name: "Omar K.",
|
||||
role: "Resident",
|
||||
quote: "Best rental prices in Dubai, hands down.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-male-friends-drinking-beer-summer-terrace-pub_496169-2777.jpg",
|
||||
},
|
||||
{
|
||||
name: "Linda M.",
|
||||
role: "Visitor",
|
||||
quote: "Will definitely book with them again.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-holding-suitcase_23-2149901406.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Need Help?"
|
||||
text="Ready to rent? Reach out to us today for personalized support and bookings."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/971505301204",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Support",
|
||||
href: "tel:+971505301204",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
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="Need Help?"
|
||||
text="Ready to rent? Reach out to us today for personalized support and bookings."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/971505301204",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Call Support",
|
||||
href: "tel:+971505301204",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
35
src/pages/HomePage/sections/Faq.tsx
Normal file
35
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
// 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="Common Questions"
|
||||
title="Frequently Asked Questions"
|
||||
description="Get quick answers to common rental questions."
|
||||
items={[
|
||||
{
|
||||
question: "What documents are required?",
|
||||
answer: "Valid driving license, passport copy, and credit card.",
|
||||
},
|
||||
{
|
||||
question: "What are your business hours?",
|
||||
answer: "10:00 AM – 11:00 PM. Fridays are for walk-ins only.",
|
||||
},
|
||||
{
|
||||
question: "Do you deliver cars?",
|
||||
answer: "Yes, we provide doorstep delivery services across Dubai.",
|
||||
},
|
||||
]}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/woman-using-mobile-phone-communication-online-application-standing-near-car-city-street-parking-outdoors-car-sharing-rental-service_158595-6723.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Fleet.tsx
Normal file
64
src/pages/HomePage/sections/Fleet.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "fleet" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FleetSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="fleet" data-section="fleet">
|
||||
<SectionErrorBoundary name="fleet">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Fleet"
|
||||
title="Explore Our Luxury Collection"
|
||||
description="From high-performance supercars to spacious SUVs, we have the perfect ride for every occasion."
|
||||
items={[
|
||||
{
|
||||
title: "Lamborghini Huracán",
|
||||
description: "High performance thrill machine.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-man-car-showroom_1303-22855.jpg",
|
||||
},
|
||||
{
|
||||
title: "Mercedes-Benz G-Class",
|
||||
description: "Iconic luxury and power.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fashionable-ladies-going-out-car_132075-12211.jpg",
|
||||
},
|
||||
{
|
||||
title: "BMW 5 Series",
|
||||
description: "Executive class comfort.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/female-salesperson-car-showroom-standing-by-car_1303-22387.jpg",
|
||||
},
|
||||
{
|
||||
title: "Toyota Land Cruiser",
|
||||
description: "Supreme comfort and safety.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/traveling-with-off-road-car_23-2151473001.jpg",
|
||||
},
|
||||
{
|
||||
title: "Nissan Patrol",
|
||||
description: "The legend of the desert.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/bohemian-personalities-going-adventure-together_23-2149623204.jpg",
|
||||
},
|
||||
{
|
||||
title: "Toyota Yaris",
|
||||
description: "Efficient city companion.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/stack-coins-calculator-toy-car-pen-template_23-2147919134.jpg",
|
||||
},
|
||||
{
|
||||
title: "Airport Transfer",
|
||||
description: "Premium shuttle service.",
|
||||
href: "https://wa.me/971505301204",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/businesswoman-sitting-backseat-taxi_23-2149236699.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroSplit from '@/components/sections/hero/HeroSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroSplit
|
||||
tag="Premium Dubai Rentals"
|
||||
title="Reliable Car Rentals in Dubai"
|
||||
description="Experience luxury and comfort with our wide range of premium vehicles. We offer daily, short-term, and long-term rental options tailored for your needs."
|
||||
primaryButton={{
|
||||
text: "WhatsApp Us",
|
||||
href: "https://wa.me/971505301204",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Follow Instagram",
|
||||
href: "https://www.instagram.com/goldenluorentacar",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/businessman-walks-past-his-car_496169-2779.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
38
src/pages/HomePage/sections/Metrics.tsx
Normal file
38
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
// 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 MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
|
||||
import { Award, Car, Users } from "lucide-react";
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsIconCards
|
||||
tag="Our Impact"
|
||||
title="Why Choose Us"
|
||||
description="Trusted by hundreds of satisfied clients in Dubai."
|
||||
metrics={[
|
||||
{
|
||||
icon: Car,
|
||||
title: "Vehicles Served",
|
||||
value: "500+",
|
||||
},
|
||||
{
|
||||
icon: Users,
|
||||
title: "Happy Clients",
|
||||
value: "1200+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
title: "Years Experience",
|
||||
value: "10+",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
54
src/pages/HomePage/sections/Pricing.tsx
Normal file
54
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
// 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 PricingSplitCards from '@/components/sections/pricing/PricingSplitCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingSplitCards
|
||||
tag="Rental Packages"
|
||||
title="Transparent Pricing"
|
||||
description="Choose from flexible rental plans that fit your schedule and budget."
|
||||
plans={[
|
||||
{
|
||||
tag: "Short-Term",
|
||||
price: "AED 250+",
|
||||
period: "/day",
|
||||
description: "Perfect for weekend getaways.",
|
||||
primaryButton: {
|
||||
text: "Book Now",
|
||||
href: "https://wa.me/971505301204",
|
||||
},
|
||||
featuresTitle: "Included Perks",
|
||||
features: [
|
||||
"Comprehensive insurance",
|
||||
"24/7 roadside help",
|
||||
"Free delivery",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Long-Term",
|
||||
price: "Custom",
|
||||
period: "/mo",
|
||||
description: "Best value for extended stays.",
|
||||
primaryButton: {
|
||||
text: "Inquire Now",
|
||||
href: "https://wa.me/971505301204",
|
||||
},
|
||||
featuresTitle: "Advanced Benefits",
|
||||
features: [
|
||||
"Unlimited mileage",
|
||||
"Priority maintenance",
|
||||
"Dedicated manager",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// 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 TestimonialMarqueeCards from '@/components/sections/testimonial/TestimonialMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialMarqueeCards
|
||||
tag="Reviews"
|
||||
title="What Our Clients Say"
|
||||
description="Read authentic experiences from our customers."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Tourist",
|
||||
quote: "Fantastic service! The car was brand new.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-family-buying-car_1303-13613.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark D.",
|
||||
role: "Businessman",
|
||||
quote: "Professional, on-time, and reliable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/elegant-uber-driver-giving-taxi-ride_23-2149241761.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena V.",
|
||||
role: "Traveler",
|
||||
quote: "Golden Luo made my trip unforgettable.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/family-having-fun-winter-roadtrip_23-2149314844.jpg",
|
||||
},
|
||||
{
|
||||
name: "Omar K.",
|
||||
role: "Resident",
|
||||
quote: "Best rental prices in Dubai, hands down.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-male-friends-drinking-beer-summer-terrace-pub_496169-2777.jpg",
|
||||
},
|
||||
{
|
||||
name: "Linda M.",
|
||||
role: "Visitor",
|
||||
quote: "Will definitely book with them again.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-man-holding-suitcase_23-2149901406.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
51
src/pages/HomePage/sections/TrustLogos.tsx
Normal file
51
src/pages/HomePage/sections/TrustLogos.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import LoopCarousel from "@/components/ui/LoopCarousel";
|
||||
import { CreditCard, ShieldCheck, Award, CheckCircle2, Wallet } from "lucide-react";
|
||||
|
||||
export default function TrustLogosSection() {
|
||||
const items = [
|
||||
{ name: "Visa", icon: CreditCard },
|
||||
{ name: "Mastercard", icon: CreditCard },
|
||||
{ name: "American Express", icon: CreditCard },
|
||||
{ name: "Apple Pay", icon: Wallet },
|
||||
{ name: "Dubai RTA Approved", icon: ShieldCheck },
|
||||
{ name: "UAE Rent a Car Association", icon: Award },
|
||||
{ name: "Fully Insured", icon: CheckCircle2 },
|
||||
];
|
||||
|
||||
return (
|
||||
<section data-webild-section="trust-logos" id="trust-logos" className="relative w-full py-16 bg-background border-y border-foreground/5 overflow-hidden">
|
||||
<div className="w-content-width mx-auto px-6 mb-10 text-center">
|
||||
<ScrollReveal variant="fade">
|
||||
<span className="text-sm font-bold uppercase tracking-wider text-primary-cta mb-2 block">
|
||||
Book With Confidence
|
||||
</span>
|
||||
<TextAnimation
|
||||
text="Accepted Payments & Certifications"
|
||||
variant="fade-blur"
|
||||
tag="h2"
|
||||
className="text-2xl md:text-3xl font-bold text-foreground"
|
||||
gradientText={false}
|
||||
/>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
|
||||
<div className="w-full flex overflow-hidden">
|
||||
<LoopCarousel>
|
||||
<div className="flex items-center gap-16 px-8">
|
||||
{items.map((item, index) => {
|
||||
const Icon = item.icon;
|
||||
return (
|
||||
<div key={index} className="flex items-center gap-3 text-muted-foreground hover:text-primary-cta transition-colors duration-300">
|
||||
<Icon className="w-8 h-8" />
|
||||
<span className="text-xl font-semibold whitespace-nowrap">{item.name}</span>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</LoopCarousel>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user