Compare commits
2 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 20006164c4 | |||
|
|
09a5bd055e |
@@ -1,19 +1,19 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');
|
||||
@import "tailwindcss";
|
||||
@import "./styles/masks.css";
|
||||
@import "./styles/animations.css";
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #f8f9fb;
|
||||
--card: #ffffff;
|
||||
--foreground: #0B1F35;
|
||||
--primary-cta: #15479c;
|
||||
--primary-cta-text: #f8f9fb;
|
||||
--background: #0B1F35;
|
||||
--card: #112840;
|
||||
--foreground: #F8F9FB;
|
||||
--primary-cta: #C8A96B;
|
||||
--primary-cta-text: #0B1F35;
|
||||
--secondary-cta: #ffffff;
|
||||
--secondary-cta-text: #0B1F35;
|
||||
--accent: #C8A96B;
|
||||
--background-accent: #e2e8f0;
|
||||
--background-accent: #1a2a3a;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
@@ -88,8 +88,8 @@
|
||||
--color-background-accent: var(--background-accent);
|
||||
|
||||
/* Fonts */
|
||||
--font-sans: 'Figtree', sans-serif;
|
||||
--font-tight: "Inter Tight", sans-serif;
|
||||
--font-sans: 'Inter', sans-serif;
|
||||
--font-tight: "Playfair Display", serif;
|
||||
--font-mono: monospace;
|
||||
|
||||
/* Border Radius */
|
||||
|
||||
@@ -1,247 +1,33 @@
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import TeamDetailedCards from '@/components/sections/team/TeamDetailedCards';
|
||||
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 WhyUsSection from './HomePage/sections/WhyUs';
|
||||
import ReviewsSection from './HomePage/sections/Reviews';
|
||||
import ServicesSection from './HomePage/sections/Services';
|
||||
import TeamSection from './HomePage/sections/Team';
|
||||
import ProcessSection from './HomePage/sections/Process';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="Chicago's Most Trusted HVAC Experts"
|
||||
title="Complex Problems. Expert HVAC Solutions."
|
||||
description="For over 20 years, Chicago families and businesses have trusted us to handle the complex HVAC issues that others simply can't fix. Expert repair, installation, and maintenance, delivered with honesty and reliability."
|
||||
primaryButton={{
|
||||
text: "Schedule Service",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get Free Estimate",
|
||||
href: "#contact",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-worker-holding-hands-pockets-uniform-looking-cheerful-front-view_176474-21697.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="why-us" data-section="why-us">
|
||||
<SectionErrorBoundary name="why-us">
|
||||
<FeaturesBentoGrid
|
||||
tag="Why Customers Choose Us"
|
||||
title="The Team Chicago Trusts When Others Can't"
|
||||
description="We don't believe in quick fixes that fail later. We solve the problems others walk away from."
|
||||
features={[
|
||||
{
|
||||
title: "Difficult Problems Solved",
|
||||
description: "Expert diagnostics for complex heating and cooling issues that other contractors find impossible.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/question-mark-icon-solving-problem-solution-concept_53876-13887.jpg",
|
||||
},
|
||||
{
|
||||
title: "Honest Recommendations",
|
||||
description: "We prioritize repairs. We only recommend replacements when absolutely necessary to protect your budget.",
|
||||
imageSrc: "http://img.b2bpic.net/free-vector/coronavirus-prevention-icon-set-vector_53876-169066.jpg",
|
||||
},
|
||||
{
|
||||
title: "Reliable Communication",
|
||||
description: "Clear updates, transparent pricing, and professional technicians who show up exactly when promised.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chat-message-front-side_187299-39409.jpg",
|
||||
},
|
||||
{
|
||||
title: "24/7 Availability",
|
||||
description: "Emergency services ready when you need them most, keeping your home comfortable year-round.",
|
||||
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=a1q3r0",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<WhyUsSection />
|
||||
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialOverlayCards
|
||||
tag="Real Experiences"
|
||||
title="What Our Customers Say"
|
||||
description="Don't just take our word for it. Here is why Chicago trusts our team with their comfort."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Homeowner",
|
||||
company: "Chicago Resident",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-male-model-posing-outdoor_23-2148289284.jpg",
|
||||
},
|
||||
{
|
||||
name: "Mark D.",
|
||||
role: "Property Manager",
|
||||
company: "Chicago Rentals",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/mature-business-man-sitting-chair-with-arms-folded_171337-8336.jpg",
|
||||
},
|
||||
{
|
||||
name: "Elena R.",
|
||||
role: "Business Owner",
|
||||
company: "Local Boutique",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-friendly-asian-girl-smiling-serving-coffee-barista-giving-you-cup-coffee_1258-197388.jpg",
|
||||
},
|
||||
{
|
||||
name: "David K.",
|
||||
role: "Homeowner",
|
||||
company: "Evanston",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-short-curly-hair-colorful-shirt-smiling-broadly-hugging-herself-standing-green-wall_141793-29368.jpg",
|
||||
},
|
||||
{
|
||||
name: "Linda M.",
|
||||
role: "Business Owner",
|
||||
company: "Oak Park",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-senior-man-holding-smart-phone_23-2147935571.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ReviewsSection />
|
||||
|
||||
<div id="services" data-section="services">
|
||||
<SectionErrorBoundary name="services">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Expert HVAC Services"
|
||||
title="Comprehensive Heating & Cooling"
|
||||
description="From commercial rooftop units to residential furnace repairs, we do it all."
|
||||
items={[
|
||||
{
|
||||
title: "Furnace Repair",
|
||||
description: "Precision diagnostics for all furnace types.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-people-looking-laptop_23-2150171221.jpg",
|
||||
},
|
||||
{
|
||||
title: "AC Repair",
|
||||
description: "Cooling solutions that stand the test of the Chicago summer.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-female-working_23-2148836083.jpg",
|
||||
},
|
||||
{
|
||||
title: "HVAC Maintenance",
|
||||
description: "Preventive checks to extend the life of your equipment.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/seasoned-mechanic-removing-layer-dirt-from-blower-fan-prevent-damaging-ventilation-system-adept-repairman-cleaning-hvac-system-parts-stop-risk-overheating-close-up_482257-67998.jpg",
|
||||
},
|
||||
{
|
||||
title: "Emergency Service",
|
||||
description: "Available when you need help immediately.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/full-shot-woman-work-van_23-2149891032.jpg",
|
||||
},
|
||||
{
|
||||
title: "Commercial Support",
|
||||
description: "Rooftop units and full-facility management.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/ventilation-duct-building-roof_1387-548.jpg",
|
||||
},
|
||||
{
|
||||
title: "Heat Pumps",
|
||||
description: "Efficient modern solutions for home comfort.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-heat-pump-outside-home_23-2149250248.jpg",
|
||||
},
|
||||
{
|
||||
title: "System Installation",
|
||||
description: "Full HVAC system design and replacement.",
|
||||
href: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/zoom-close-up-shot-broken-external-air-conditioner-unit-with-protection-cover-removed-need-repair-with-damaged-electric-internal-components-faulty-wiring_482257-64975.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ServicesSection />
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamDetailedCards
|
||||
tag="Meet The Experts"
|
||||
title="The People Behind The Service"
|
||||
description="Our team of senior technicians brings over 15 years of experience to every job."
|
||||
members={[
|
||||
{
|
||||
name: "Tony",
|
||||
role: "Senior HVAC Technician",
|
||||
description: "15+ Years Experience. Specialist in furnace diagnostics and commercial roof systems.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-technician-grey-uniform-holding-toolbox-with-his-both-hands-looking-surprised_176474-35334.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah",
|
||||
role: "Lead Installer",
|
||||
description: "12+ Years Experience. Expert in energy-efficient heat pump installations.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-with-equipment_23-2149366625.jpg",
|
||||
},
|
||||
{
|
||||
name: "James",
|
||||
role: "Service Manager",
|
||||
description: "20+ Years Experience. Committed to excellent communication and service standards.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-businessman-face-portrait-wearing-suit_53876-148135.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TeamSection />
|
||||
|
||||
<div id="process" data-section="process">
|
||||
<SectionErrorBoundary name="process">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Process"
|
||||
title="Simple, Stress-Free Service"
|
||||
description="We believe in a clear, straightforward approach to your home comfort."
|
||||
features={[
|
||||
{
|
||||
title: "1. Schedule",
|
||||
description: "Book online or call us directly for a fast response.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/calendar-check-paper-front-side_187299-39612.jpg",
|
||||
},
|
||||
{
|
||||
title: "2. Diagnose",
|
||||
description: "We identify the root cause and walk you through every option.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/auto-repairman-talking-his-colleague-while-running-car-diagnostic-analyzing-data-workshop_637285-7676.jpg",
|
||||
},
|
||||
{
|
||||
title: "3. Approve",
|
||||
description: "Transparent, fair pricing provided before any work starts.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/clipboard-isolated-white_93675-131652.jpg",
|
||||
},
|
||||
{
|
||||
title: "4. Enjoy Comfort",
|
||||
description: "Expert repairs completed with professional care.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/large-couch-with-cushions-glass-table_1203-441.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ProcessSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Request Service"
|
||||
text="Comfort Starts With A Team You Can Trust. Call us now for immediate emergency support or schedule a consultation."
|
||||
primaryButton={{
|
||||
text: "Schedule Service",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get Free Estimate",
|
||||
href: "#contact",
|
||||
}}
|
||||
/>
|
||||
</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="Request Service"
|
||||
text="Comfort Starts With A Team You Can Trust. Call us now for immediate emergency support or schedule a consultation."
|
||||
primaryButton={{
|
||||
text: "Schedule Service",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Get Free Estimate",
|
||||
href: "#contact",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
23
src/pages/HomePage/sections/Hero.tsx
Normal file
23
src/pages/HomePage/sections/Hero.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 "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboard
|
||||
tag="⭐ 5.0 Rated | Open 24 Hours | Same-Day Service Available"
|
||||
title="Fast, Reliable Heating & Cooling Service When Your Home Needs a Hero"
|
||||
description="Same-day HVAC repairs, furnace service, AC help, and indoor comfort solutions with clear explanations and dependable results."
|
||||
primaryButton={{"href":"#contact","text":"Call Now: (708) 833-0306"}}
|
||||
secondaryButton={{"text":"Schedule Service","href":"#contact"}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/young-worker-holding-hands-pockets-uniform-looking-cheerful-front-view_176474-21697.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Process.tsx
Normal file
42
src/pages/HomePage/sections/Process.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "process" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ProcessSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="process" data-section="process">
|
||||
<SectionErrorBoundary name="process">
|
||||
<FeaturesBentoGrid
|
||||
tag="Our Process"
|
||||
title="Simple, Stress-Free Service"
|
||||
description="We believe in a clear, straightforward approach to your home comfort."
|
||||
features={[
|
||||
{
|
||||
title: "1. Schedule",
|
||||
description: "Book online or call us directly for a fast response.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/calendar-check-paper-front-side_187299-39612.jpg",
|
||||
},
|
||||
{
|
||||
title: "2. Diagnose",
|
||||
description: "We identify the root cause and walk you through every option.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/auto-repairman-talking-his-colleague-while-running-car-diagnostic-analyzing-data-workshop_637285-7676.jpg",
|
||||
},
|
||||
{
|
||||
title: "3. Approve",
|
||||
description: "Transparent, fair pricing provided before any work starts.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/clipboard-isolated-white_93675-131652.jpg",
|
||||
},
|
||||
{
|
||||
title: "4. Enjoy Comfort",
|
||||
description: "Expert repairs completed with professional care.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/large-couch-with-cushions-glass-table_1203-441.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Reviews.tsx
Normal file
21
src/pages/HomePage/sections/Reviews.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 "reviews" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ReviewsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialOverlayCards
|
||||
tag="Customer Love"
|
||||
title="What Our Customers Say"
|
||||
description="Don't just take our word for it. Here is why Chicago trusts our team with their comfort."
|
||||
testimonials={[{"rating":5,"name":"Sarah J.","imageSrc":"http://img.b2bpic.net/free-photo/young-male-model-posing-outdoor_23-2148289284.jpg","role":"Homeowner","company":"Chicago Resident"},{"name":"Mark D.","imageSrc":"http://img.b2bpic.net/free-photo/mature-business-man-sitting-chair-with-arms-folded_171337-8336.jpg","company":"Chicago Rentals","role":"Property Manager","rating":5},{"name":"Elena R.","company":"Local Boutique","role":"Business Owner","imageSrc":"http://img.b2bpic.net/free-photo/vertical-shot-friendly-asian-girl-smiling-serving-coffee-barista-giving-you-cup-coffee_1258-197388.jpg","rating":5}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/Services.tsx
Normal file
21
src/pages/HomePage/sections/Services.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 "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="Expert HVAC Services"
|
||||
title="Comprehensive Heating & Cooling"
|
||||
description="From commercial rooftop units to residential furnace repairs, we do it all."
|
||||
items={[{"imageSrc":"http://img.b2bpic.net/free-photo/medium-shot-people-looking-laptop_23-2150171221.jpg","description":"Fast furnace diagnostics and repairs to get your home warm again.","href":"#contact","title":"Heating Repair"},{"imageSrc":"http://img.b2bpic.net/free-photo/portrait-female-working_23-2148836083.jpg","description":"Reliable cooling service when your system stops working.","title":"AC Repair","href":"#contact"},{"title":"Furnace Service","href":"#contact","imageSrc":"http://img.b2bpic.net/free-photo/seasoned-mechanic-removing-layer-dirt-from-blower-fan-prevent-damaging-ventilation-system-adept-repairman-cleaning-hvac-system-parts-stop-risk-overheating-close-up_482257-67998.jpg","description":"Maintenance, repairs, and future recommendations to prevent breakdowns."},{"title":"Whole-Home Humidifiers","href":"#contact","imageSrc":"http://img.b2bpic.net/free-photo/full-shot-woman-work-van_23-2149891032.jpg","description":"Comfort upgrades installed with detailed, professional work."},{"title":"Emergency HVAC Service","href":"#contact","description":"Open 24 hours for urgent heating and cooling problems.","imageSrc":"http://img.b2bpic.net/free-photo/ventilation-duct-building-roof_1387-548.jpg"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
43
src/pages/HomePage/sections/Team.tsx
Normal file
43
src/pages/HomePage/sections/Team.tsx
Normal file
@@ -0,0 +1,43 @@
|
||||
// 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 TeamDetailedCards from '@/components/sections/team/TeamDetailedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TeamSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="team" data-section="team">
|
||||
<SectionErrorBoundary name="team">
|
||||
<TeamDetailedCards
|
||||
tag="Meet The Experts"
|
||||
title="The People Behind The Service"
|
||||
description="Our team of senior technicians brings over 15 years of experience to every job."
|
||||
members={[
|
||||
{
|
||||
name: "Tony",
|
||||
role: "Senior HVAC Technician",
|
||||
description: "15+ Years Experience. Specialist in furnace diagnostics and commercial roof systems.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-technician-grey-uniform-holding-toolbox-with-his-both-hands-looking-surprised_176474-35334.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah",
|
||||
role: "Lead Installer",
|
||||
description: "12+ Years Experience. Expert in energy-efficient heat pump installations.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-with-equipment_23-2149366625.jpg",
|
||||
},
|
||||
{
|
||||
name: "James",
|
||||
role: "Service Manager",
|
||||
description: "20+ Years Experience. Committed to excellent communication and service standards.",
|
||||
socialLinks: [],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-businessman-face-portrait-wearing-suit_53876-148135.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
21
src/pages/HomePage/sections/WhyUs.tsx
Normal file
21
src/pages/HomePage/sections/WhyUs.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 "why-us" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesBentoGrid from '@/components/sections/features/FeaturesBentoGrid';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function WhyUsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="why-us" data-section="why-us">
|
||||
<SectionErrorBoundary name="why-us">
|
||||
<FeaturesBentoGrid
|
||||
tag="Why Choose HVAC Heroes"
|
||||
title="The Team Chicago Trusts When Others Can't"
|
||||
description="We don't believe in quick fixes that fail later. We solve the problems others walk away from."
|
||||
features={[{"title":"Same-Day Response","imageSrc":"http://img.b2bpic.net/free-photo/question-mark-icon-solving-problem-solution-concept_53876-13887.jpg","description":"Customers love how quickly help arrives."},{"description":"No confusion — you understand the issue and the solution.","imageSrc":"http://img.b2bpic.net/free-vector/coronavirus-prevention-icon-set-vector_53876-169066.jpg","title":"Detailed Explanations"},{"description":"Careful service from start to finish.","imageSrc":"http://img.b2bpic.net/free-photo/chat-message-front-side_187299-39409.jpg","title":"Thorough Work"},{"description":"The goal is simple: get your home comfortable again.","imageSrc":"https://storage.googleapis.com/webild/default/no-image.jpg?id=a1q3r0","title":"Reliable Comfort"}]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user