16 Commits

Author SHA1 Message Date
73e2bfa502 Switch to version 6: modified src/pages/HomePage.tsx 2026-05-07 15:11:41 +00:00
57cd74714f Switch to version 7: modified src/pages/HomePage.tsx 2026-05-07 15:08:53 +00:00
0a73303e6f Merge version_8_1778166408844 into main
Merge version_8_1778166408844 into main
2026-05-07 15:08:20 +00:00
kudinDmitriyUp
96c6d3547a feat: replace Why Choose Us section with numbered list 2026-05-07 15:07:59 +00:00
cde1406f2f Switch to version 6: modified src/pages/HomePage.tsx 2026-05-07 15:06:21 +00:00
887a2a1ee1 Merge version_7_1778166190952 into main
Merge version_7_1778166190952 into main
2026-05-07 15:04:53 +00:00
kudinDmitriyUp
6ea57ef6f4 feat: replace FeaturesIconCards with FeaturesAlternatingSplit for a less techy feel 2026-05-07 15:04:31 +00:00
2a6aa7ceee Merge version_6_1778166059116 into main
Merge version_6_1778166059116 into main
2026-05-07 15:02:30 +00:00
kudinDmitriyUp
5ce0f916ab feat: Replaced 'Why Choose Us' section with icon-based feature cards 2026-05-07 15:02:08 +00:00
e2c6d770f0 Merge version_5_1778165932959 into main
Merge version_5_1778165932959 into main
2026-05-07 15:00:30 +00:00
kudinDmitriyUp
4fae7e7d26 feat: Reposition hero USP cards around the central image 2026-05-07 15:00:10 +00:00
ebdbfe95c9 Merge version_4_1778165801395 into main
Merge version_4_1778165801395 into main
2026-05-07 14:58:15 +00:00
kudinDmitriyUp
9dc8496763 feat: Add glassmorphic USP cards to hero section 2026-05-07 14:57:54 +00:00
f058cdfd5e Merge version_3_1778165673277 into main
Merge version_3_1778165673277 into main
2026-05-07 14:56:01 +00:00
kudinDmitriyUp
7127d0a712 feat: add glassmorphic cards to hero section 2026-05-07 14:55:39 +00:00
31c616f52b Merge version_2_1778165499610 into main
Merge version_2_1778165499610 into main
2026-05-07 14:53:04 +00:00
3 changed files with 62 additions and 21 deletions

View File

@@ -4,6 +4,7 @@ import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo"; import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal"; import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup"; import AvatarGroup from "@/components/ui/AvatarGroup";
import { Clock, ShieldCheck, DollarSign } from "lucide-react";
type HeroBillboardProps = { type HeroBillboardProps = {
tag?: string; tag?: string;
@@ -26,6 +27,24 @@ const HeroBillboard = ({
imageSrc, imageSrc,
videoSrc, videoSrc,
}: HeroBillboardProps) => { }: HeroBillboardProps) => {
const usps = [
{
icon: Clock,
title: "24/7 Service",
description: "Always available for emergency repairs.",
},
{
icon: ShieldCheck,
title: "Certified Technicians",
description: "Expertise you can trust for every job.",
},
{
icon: DollarSign,
title: "Transparent Pricing",
description: "No hidden fees, just honest quotes.",
},
];
return ( return (
<section aria-label="Hero section" className="relative pt-25 pb-20 md:py-30 mb-20"> <section aria-label="Hero section" className="relative pt-25 pb-20 md:py-30 mb-20">
<HeroBackgroundSlot /> <HeroBackgroundSlot />
@@ -59,8 +78,25 @@ const HeroBillboard = ({
</div> </div>
</div> </div>
<ScrollReveal variant="fade-blur" delay={0.2} className="w-full p-3 xl:p-4 2xl:p-5 card rounded overflow-hidden"> <ScrollReveal variant="fade-blur" delay={0.2} className="relative w-full p-3 xl:p-4 2xl:p-5 card rounded overflow-hidden">
<ImageOrVideo imageSrc={imageSrc} videoSrc={videoSrc} className="aspect-4/5 md:aspect-video" /> <ImageOrVideo imageSrc={imageSrc} videoSrc={videoSrc} className="aspect-4/5 md:aspect-video" />
<div className="absolute inset-0 flex justify-center items-center">
{usps.map((usp, index) => (
<div
key={index}
className={`absolute bg-white/10 backdrop-blur-lg rounded-lg p-4 flex flex-col items-center justify-center text-center text-white border border-white/20
${index === 0 ? 'bottom-4 left-4' : ''}
${index === 1 ? 'top-4' : ''}
${index === 2 ? 'bottom-4 right-4' : ''}
`}
style={{ width: '200px', height: '150px' }}
>
<usp.icon className="w-8 h-8 mb-2" />
<h3 className="font-semibold text-lg">{usp.title}</h3>
<p className="text-sm">{usp.description}</p>
</div>
))}
</div>
</ScrollReveal> </ScrollReveal>
</div> </div>
</section> </section>

View File

@@ -36,6 +36,11 @@ const HeroOverlay = ({
videoSrc={videoSrc} videoSrc={videoSrc}
className="absolute inset-0 w-full h-full object-cover rounded-none" className="absolute inset-0 w-full h-full object-cover rounded-none"
/> />
<div className="absolute z-10 bottom-1/4 left-1/2 -translate-x-1/2 grid grid-cols-1 md:grid-cols-3 gap-4 p-4 w-full max-w-4xl">
{uspData.map((usp, index) => (
<GlassMorphicCard key={index} title={usp.title} description={usp.description} />
))}
</div>
<div <div
className="absolute z-10 w-[150vw] h-[150vw] left-0 bottom-0 -translate-x-1/2 translate-y-1/2 backdrop-blur mask-[radial-gradient(circle,black_20%,transparent_70%)]" className="absolute z-10 w-[150vw] h-[150vw] left-0 bottom-0 -translate-x-1/2 translate-y-1/2 backdrop-blur mask-[radial-gradient(circle,black_20%,transparent_70%)]"
@@ -43,11 +48,7 @@ const HeroOverlay = ({
/> />
<div className="relative z-10 w-content-width mx-auto pb-10 md:pb-25"> <div className="relative z-10 w-content-width mx-auto pb-10 md:pb-25">
<div className="absolute bottom-20 right-0 grid grid-cols-1 md:grid-cols-3 gap-4 p-4">
{uspData.map((usp, index) => (
<GlassMorphicCard key={index} title={usp.title} description={usp.description} />
))}
</div>
<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="flex flex-col gap-3 w-full md:w-6/10 lg:w-1/2 xl:w-45/100 2xl:w-4/10">
<span className="w-fit px-3 py-1 mb-1 text-sm card rounded">{tag}</span> <span className="w-fit px-3 py-1 mb-1 text-sm card rounded">{tag}</span>

View File

@@ -1,7 +1,8 @@
import AboutText from '@/components/sections/about/AboutText'; import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta'; import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple'; import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison'; import FeaturesIconCards from '@/components/sections/features/FeaturesIconCards';
import { Clock, ShieldCheck, DollarSign } from "lucide-react";
import HeroBillboard from '@/components/sections/hero/HeroBillboard'; import HeroBillboard from '@/components/sections/hero/HeroBillboard';
import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards'; import MetricsIconCards from '@/components/sections/metrics/MetricsIconCards';
import ProductVariantCards from '@/components/sections/product/ProductVariantCards'; import ProductVariantCards from '@/components/sections/product/ProductVariantCards';
@@ -57,23 +58,26 @@ export default function HomePage() {
</div> </div>
<div id="why-us" data-section="why-us"> <div id="why-us" data-section="why-us">
<FeaturesComparison <FeaturesIconCards
tag="Why Choose Us" tag="Why Choose Us"
title="Experience the Difference with Our HVAC Services" title="Experience the Difference with Our HVAC Services"
description="We stand out by prioritizing your comfort and budget. Our commitment to quality and transparency makes us the preferred choice for HVAC solutions in LA." description="We stand out by prioritizing your comfort and budget. Our commitment to quality and transparency makes us the preferred choice for HVAC solutions in LA."
negativeItems={[ features={[
"Hidden Fees & Surprises", {
"Unreliable & Untrained Technicians", icon: Clock,
"Slow Response Times in Emergencies", title: "24/7 Emergency Service",
"Outdated & Inefficient Equipment", description: "Reliable support when you need it most. Our team is available around the clock for urgent repairs.",
"Poor Communication & Follow-Up", },
]} {
positiveItems={[ icon: ShieldCheck,
"Transparent & Upfront Pricing", title: "Certified Technicians",
"Certified & Experienced Professionals", description: "Our experts are fully certified and continuously trained to handle all HVAC systems with precision.",
"24/7 Emergency Service Availability", },
"Energy-Efficient & Modern Solutions", {
"Clear & Timely Communication", icon: DollarSign,
title: "Transparent Pricing",
description: "No hidden fees, just honest and upfront pricing. We provide clear quotes before any work begins.",
},
]} ]}
/> />
</div> </div>