4 Commits

Author SHA1 Message Date
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
2 changed files with 38 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup";
import { Clock, ShieldCheck, DollarSign } from "lucide-react";
type HeroBillboardProps = {
tag?: string;
@@ -26,6 +27,24 @@ const HeroBillboard = ({
imageSrc,
videoSrc,
}: 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 (
<section aria-label="Hero section" className="relative pt-25 pb-20 md:py-30 mb-20">
<HeroBackgroundSlot />
@@ -59,8 +78,20 @@ const HeroBillboard = ({
</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" />
<div className="absolute inset-0 grid grid-cols-1 md:grid-cols-3 gap-4 p-4 md:p-6">
{usps.map((usp, index) => (
<div
key={index}
className="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"
>
<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>
</div>
</section>

View File

@@ -36,6 +36,11 @@ const HeroOverlay = ({
videoSrc={videoSrc}
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
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="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">
<span className="w-fit px-3 py-1 mb-1 text-sm card rounded">{tag}</span>