Compare commits
3 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 70cc99eb1b | |||
|
|
eb52664b41 | ||
| 8d3d36d934 |
@@ -1,178 +1,38 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
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 FeaturesSection from './HomePage/sections/Features';
|
||||
import ProductsSection from './HomePage/sections/Products';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
import CertificationsSection from './HomePage/sections/Certifications';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroTiltedCards
|
||||
tag="Licensed & Insured Experts"
|
||||
title="Powering Your Future With Precision"
|
||||
description="Professional electrical services for residential and commercial clients. Quality workmanship, safety first."
|
||||
primaryButton={{
|
||||
text: "Get a Quote", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Our Services", href: "#features"}}
|
||||
items={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-electrician-works-with-tablet-near-electrical-panel-digital-control_169016-71089.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/notepad-supplies_23-2147710920.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-with-electrical-connecting-cab_169016-1474.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/electrician-installer-with-tool-his-hands-working-with-cable-construction-site_169016-5885.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-overalls-against-backdrop-emergency-lighting_169016-66832.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
<CertificationsSection />
|
||||
|
||||
<div id="features" data-section="features">
|
||||
<SectionErrorBoundary name="features">
|
||||
<FeaturesTaggedCards
|
||||
tag="Expert Solutions"
|
||||
title="Comprehensive Electrical Services"
|
||||
description="From emergency repairs to advanced smart home installations, we handle it all with professional care."
|
||||
items={[
|
||||
{
|
||||
tag: "Emergency", title: "24/7 Repairs", description: "Rapid response for all critical electrical emergencies.", primaryButton: {
|
||||
text: "Call Now", href: "#contact"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-with-electrical-connecting-cable_169016-18199.jpg"},
|
||||
{
|
||||
tag: "Smart Home", title: "Home Automation", description: "Full integration for lighting, climate, and security systems.", primaryButton: {
|
||||
text: "Learn More", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/electrical-technician-looking-focused-while-working-switchboard-with-fuses_169016-23922.jpg"},
|
||||
{
|
||||
tag: "Green Energy", title: "Solar Installation", description: "Sustainable energy solutions for residential solar power.", primaryButton: {
|
||||
text: "View Plans", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-with-white-helmet-near-solar-panel_1157-29992.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FeaturesSection />
|
||||
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Premium Components"
|
||||
title="Our Trusted Equipment"
|
||||
description="We only install high-quality, durable electrical components for your safety and convenience."
|
||||
items={[
|
||||
{ title: "Modern Switches", description: "Sleek finishes for every room", imageSrc: "http://img.b2bpic.net/free-photo/white-electric-socket_1339-4846.jpg" },
|
||||
{ title: "Smart Thermostats", description: "Efficient energy management", imageSrc: "http://img.b2bpic.net/free-photo/person-looking-mobile-phone-with-lighting-controlling-app-sitting-kitchen-house-with-automation-light-system-turning-bulb-using-voice-command_482257-2272.jpg" },
|
||||
{ title: "Security Cameras", description: "Full HD monitoring solutions", imageSrc: "http://img.b2bpic.net/free-photo/security-guard-workspace_23-2150321645.jpg" },
|
||||
{ title: "LED Lighting Kits", description: "Energy-efficient ambiance", imageSrc: "http://img.b2bpic.net/free-photo/sofa_1203-3069.jpg" },
|
||||
{ title: "Video Doorbells", description: "See who is at your door", imageSrc: "http://img.b2bpic.net/free-photo/senior-woman-using-smartphone-sitting-sofa_23-2149356606.jpg" },
|
||||
{ title: "EV Chargers", description: "Faster charging at home", imageSrc: "http://img.b2bpic.net/free-photo/close-view-electric-car-charging-station_1268-20909.jpg" },
|
||||
{ title: "Surge Protectors", description: "Protect your electronics", imageSrc: "http://img.b2bpic.net/free-photo/electrical-panel-with-fuses-contactors-closeup_169016-24158.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProductsSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Experience You Can Count On"
|
||||
description="Decades of service delivering safety and satisfaction across the region."
|
||||
metrics={[
|
||||
{
|
||||
value: "1500+", title: "Projects Completed", description: "Successfully finished residential and commercial tasks.", imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-using-electrical-connection-cable_169016-51895.jpg"},
|
||||
{
|
||||
value: "24/7", title: "Emergency Support", description: "Always there when you need urgent help.", imageSrc: "http://img.b2bpic.net/free-photo/different-electrical-tools-digital-tablet-wooden-background-flat-lay_169016-24603.jpg"},
|
||||
{
|
||||
value: "500+", title: "Happy Clients", description: "Trusted by hundreds of local homeowners.", imageSrc: "http://img.b2bpic.net/free-photo/woman-changing-ligh-tbulb_53876-48893.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="The Experts"
|
||||
title="Meet Our Certified Team"
|
||||
description="Qualified electricians dedicated to excellence and customer satisfaction."
|
||||
members={[
|
||||
{ name: "John Doe", role: "Master Electrician", imageSrc: "http://img.b2bpic.net/free-photo/young-bearded-handsome-builder-wearing-construction-uniform-cap-standing-with-arms-crossed-self-confident-smiling-isolated-orange-wall_141793-15716.jpg" },
|
||||
{ name: "Jane Smith", role: "Senior Technician", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-businessman-suit-looking-camera-meeting_1163-4654.jpg" },
|
||||
{ name: "Mike Johnson", role: "Automation Specialist", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-working-business-with-computer_482257-20185.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Client Voices"
|
||||
title="Why Clients Trust Us"
|
||||
description="See what our local partners and residents have to say about our electrical services."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Miller", role: "Homeowner", quote: "Fantastic service! Very thorough and friendly.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-girl-white-shirt-black-pants-looking-camera-happy-excited-holding-hands-her-head-sitting-chair-light-living-room_141793-94175.jpg"},
|
||||
{
|
||||
name: "David Clark", role: "Business Owner", quote: "Professional, efficient, and cost-effective.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiley-business-owner-with-document-medium-shot_23-2149434531.jpg"},
|
||||
{
|
||||
name: "Elena Ross", role: "Architect", quote: "Great attention to detail and modern solutions.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-moving-start-new-life-house-flat-man-hugs-his-lady-apartment-boxes_197531-1633.jpg"},
|
||||
{
|
||||
name: "George Brown", role: "Retired", quote: "Fixed my breaker in minutes! Life saver.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grandma-grandpa-cooking-together_52683-116807.jpg"},
|
||||
{
|
||||
name: "Alice Wong", role: "Homeowner", quote: "Very reliable team. Highly recommended.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-shot-modern-house-kitchen-dining-room_181624-2870.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Knowledge Hub"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to common concerns about our residential and commercial services."
|
||||
categories={[
|
||||
{
|
||||
name: "General", items: [
|
||||
{
|
||||
question: "Are you licensed?", answer: "Yes, we are fully licensed and insured."},
|
||||
{
|
||||
question: "What areas do you serve?", answer: "We serve the entire metro area."},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Emergency", items: [
|
||||
{
|
||||
question: "What is an emergency?", answer: "Power outages, exposed wires, sparking equipment."},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Ready to Start?"
|
||||
text="Get a free consultation for your next electrical project today."
|
||||
primaryButton={{
|
||||
text: "Contact Us", href: "mailto:hello@volttech.com"}}
|
||||
secondaryButton={{
|
||||
text: "View Plans", href: "#features"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
26
src/pages/HomePage/sections/Certifications.tsx
Normal file
26
src/pages/HomePage/sections/Certifications.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import { ShieldCheck, Award, CheckCircle, Zap } from "lucide-react";
|
||||
|
||||
export default function CertificationsSection() {
|
||||
return (
|
||||
<section data-webild-section="certifications" className="w-full py-8 bg-background-accent/10 border-y border-background-accent/20">
|
||||
<div className="w-content-width mx-auto flex flex-wrap justify-center items-center gap-8 md:gap-16 text-foreground">
|
||||
<div className="flex items-center gap-3">
|
||||
<Award className="w-6 h-6 text-primary-cta" />
|
||||
<span className="font-semibold text-sm md:text-base">Master Electrician</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-3">
|
||||
<ShieldCheck className="w-6 h-6 text-primary-cta" />
|
||||
<span className="font-semibold text-sm md:text-base">BBB Accredited</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-3">
|
||||
<CheckCircle className="w-6 h-6 text-primary-cta" />
|
||||
<span className="font-semibold text-sm md:text-base">ESA Licensed</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-3">
|
||||
<Zap className="w-6 h-6 text-primary-cta" />
|
||||
<span className="font-semibold text-sm md:text-base">Fully Insured</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
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="Ready to Start?"
|
||||
text="Get a free consultation for your next electrical project today."
|
||||
primaryButton={{
|
||||
text: "Contact Us", href: "mailto:hello@volttech.com"}}
|
||||
secondaryButton={{
|
||||
text: "View Plans", href: "#features"}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
36
src/pages/HomePage/sections/Faq.tsx
Normal file
36
src/pages/HomePage/sections/Faq.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 "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Knowledge Hub"
|
||||
title="Frequently Asked Questions"
|
||||
description="Answers to common concerns about our residential and commercial services."
|
||||
categories={[
|
||||
{
|
||||
name: "General", items: [
|
||||
{
|
||||
question: "Are you licensed?", answer: "Yes, we are fully licensed and insured."},
|
||||
{
|
||||
question: "What areas do you serve?", answer: "We serve the entire metro area."},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Emergency", items: [
|
||||
{
|
||||
question: "What is an emergency?", answer: "Power outages, exposed wires, sparking equipment."},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Features.tsx
Normal file
34
src/pages/HomePage/sections/Features.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 "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="Expert Solutions"
|
||||
title="Comprehensive Electrical Services"
|
||||
description="From emergency repairs to advanced smart home installations, we handle it all with professional care."
|
||||
items={[
|
||||
{
|
||||
tag: "Emergency", title: "24/7 Repairs", description: "Rapid response for all critical electrical emergencies.", primaryButton: {
|
||||
text: "Call Now", href: "#contact"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-with-electrical-connecting-cable_169016-18199.jpg"},
|
||||
{
|
||||
tag: "Smart Home", title: "Home Automation", description: "Full integration for lighting, climate, and security systems.", primaryButton: {
|
||||
text: "Learn More", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/electrical-technician-looking-focused-while-working-switchboard-with-fuses_169016-23922.jpg"},
|
||||
{
|
||||
tag: "Green Energy", title: "Solar Installation", description: "Sustainable energy solutions for residential solar power.", primaryButton: {
|
||||
text: "View Plans", href: "#"},
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/man-with-white-helmet-near-solar-panel_1157-29992.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
src/pages/HomePage/sections/Hero.tsx
Normal file
31
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
// 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 HeroTiltedCards from '@/components/sections/hero/HeroTiltedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroTiltedCards
|
||||
tag="Licensed & Insured Experts"
|
||||
title="Powering Your Future With Precision"
|
||||
description="Professional electrical services for residential and commercial clients. Quality workmanship, safety first."
|
||||
primaryButton={{
|
||||
text: "Get a Quote", href: "#contact"}}
|
||||
secondaryButton={{
|
||||
text: "Our Services", href: "#features"}}
|
||||
items={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/woman-electrician-works-with-tablet-near-electrical-panel-digital-control_169016-71089.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/notepad-supplies_23-2147710920.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-with-electrical-connecting-cab_169016-1474.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/electrician-installer-with-tool-his-hands-working-with-cable-construction-site_169016-5885.jpg" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-overalls-against-backdrop-emergency-lighting_169016-66832.jpg" },
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Metrics.tsx
Normal file
28
src/pages/HomePage/sections/Metrics.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 "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsMediaCards
|
||||
tag="Our Impact"
|
||||
title="Experience You Can Count On"
|
||||
description="Decades of service delivering safety and satisfaction across the region."
|
||||
metrics={[
|
||||
{
|
||||
value: "1500+", title: "Projects Completed", description: "Successfully finished residential and commercial tasks.", imageSrc: "http://img.b2bpic.net/free-photo/male-electrician-works-switchboard-using-electrical-connection-cable_169016-51895.jpg"},
|
||||
{
|
||||
value: "24/7", title: "Emergency Support", description: "Always there when you need urgent help.", imageSrc: "http://img.b2bpic.net/free-photo/different-electrical-tools-digital-tablet-wooden-background-flat-lay_169016-24603.jpg"},
|
||||
{
|
||||
value: "500+", title: "Happy Clients", description: "Trusted by hundreds of local homeowners.", imageSrc: "http://img.b2bpic.net/free-photo/woman-changing-ligh-tbulb_53876-48893.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Products.tsx
Normal file
29
src/pages/HomePage/sections/Products.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 "products" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProductsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="products" data-section="products">
|
||||
<SectionErrorBoundary name="products">
|
||||
<FeaturesImageBento
|
||||
tag="Premium Components"
|
||||
title="Our Trusted Equipment"
|
||||
description="We only install high-quality, durable electrical components for your safety and convenience."
|
||||
items={[
|
||||
{ title: "Modern Switches", description: "Sleek finishes for every room", imageSrc: "http://img.b2bpic.net/free-photo/white-electric-socket_1339-4846.jpg" },
|
||||
{ title: "Smart Thermostats", description: "Efficient energy management", imageSrc: "http://img.b2bpic.net/free-photo/person-looking-mobile-phone-with-lighting-controlling-app-sitting-kitchen-house-with-automation-light-system-turning-bulb-using-voice-command_482257-2272.jpg" },
|
||||
{ title: "Security Cameras", description: "Full HD monitoring solutions", imageSrc: "http://img.b2bpic.net/free-photo/security-guard-workspace_23-2150321645.jpg" },
|
||||
{ title: "LED Lighting Kits", description: "Energy-efficient ambiance", imageSrc: "http://img.b2bpic.net/free-photo/sofa_1203-3069.jpg" },
|
||||
{ title: "Video Doorbells", description: "See who is at your door", imageSrc: "http://img.b2bpic.net/free-photo/senior-woman-using-smartphone-sitting-sofa_23-2149356606.jpg" },
|
||||
{ title: "EV Chargers", description: "Faster charging at home", imageSrc: "http://img.b2bpic.net/free-photo/close-view-electric-car-charging-station_1268-20909.jpg" },
|
||||
{ title: "Surge Protectors", description: "Protect your electronics", imageSrc: "http://img.b2bpic.net/free-photo/electrical-panel-with-fuses-contactors-closeup_169016-24158.jpg" },
|
||||
]}
|
||||
/>
|
||||
</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 TeamOverlayCards from '@/components/sections/team/TeamOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamOverlayCards
|
||||
tag="The Experts"
|
||||
title="Meet Our Certified Team"
|
||||
description="Qualified electricians dedicated to excellence and customer satisfaction."
|
||||
members={[
|
||||
{ name: "John Doe", role: "Master Electrician", imageSrc: "http://img.b2bpic.net/free-photo/young-bearded-handsome-builder-wearing-construction-uniform-cap-standing-with-arms-crossed-self-confident-smiling-isolated-orange-wall_141793-15716.jpg" },
|
||||
{ name: "Jane Smith", role: "Senior Technician", imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-businessman-suit-looking-camera-meeting_1163-4654.jpg" },
|
||||
{ name: "Mike Johnson", role: "Automation Specialist", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-working-business-with-computer_482257-20185.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 TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Client Voices"
|
||||
title="Why Clients Trust Us"
|
||||
description="See what our local partners and residents have to say about our electrical services."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah Miller", role: "Homeowner", quote: "Fantastic service! Very thorough and friendly.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-girl-white-shirt-black-pants-looking-camera-happy-excited-holding-hands-her-head-sitting-chair-light-living-room_141793-94175.jpg"},
|
||||
{
|
||||
name: "David Clark", role: "Business Owner", quote: "Professional, efficient, and cost-effective.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiley-business-owner-with-document-medium-shot_23-2149434531.jpg"},
|
||||
{
|
||||
name: "Elena Ross", role: "Architect", quote: "Great attention to detail and modern solutions.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-moving-start-new-life-house-flat-man-hugs-his-lady-apartment-boxes_197531-1633.jpg"},
|
||||
{
|
||||
name: "George Brown", role: "Retired", quote: "Fixed my breaker in minutes! Life saver.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/grandma-grandpa-cooking-together_52683-116807.jpg"},
|
||||
{
|
||||
name: "Alice Wong", role: "Homeowner", quote: "Very reliable team. Highly recommended.", rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-shot-modern-house-kitchen-dining-room_181624-2870.jpg"},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user