Merge version_5_1776679382705 into main #4
61
src/App.tsx
61
src/App.tsx
@@ -3,7 +3,7 @@ import ContactSplitEmail from '@/components/sections/contact/ContactSplitEmail';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
|
||||
import FooterSimpleMedia from '@/components/sections/footer/FooterSimpleMedia';
|
||||
import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';
|
||||
import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi';
|
||||
import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards';
|
||||
import RecentWorks from '@/components/sections/works/RecentWorks';
|
||||
import NavbarCentered from '@/components/ui/NavbarCentered';
|
||||
@@ -51,39 +51,32 @@ export default function App() {
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroBillboardCarousel
|
||||
tag="Trusted Plumbing Services"
|
||||
title="Your Local Plumbing Experts"
|
||||
description="24/7 emergency plumbing solutions, professional repairs, and expert maintenance for your home or business."
|
||||
primaryButton={{
|
||||
text: "Schedule Service",
|
||||
href: "#contact",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "View Our Services",
|
||||
href: "#services",
|
||||
}}
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/plumbing-professional-doing-his-job_23-2150721531.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-fixing-kitchen-sink_53876-146184.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-male-car-mechanic-car-repair-shop_23-2150367540.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/water-tap-prevention-concentrated-man-leaning-water-faucet-touching-spout-pipe_259150-58276.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-builders-work-clothes-thoughtfully-looking-sketch-plan-with-tools-background-workshop_574295-1618.jpg",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/male-plumber-working-with-client-fix-kitchen-problems_23-2150990680.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<HeroSplitKpi
|
||||
title="Your Local Plumbing Experts"
|
||||
description="24/7 emergency plumbing solutions, professional repairs, and expert maintenance for your home or business."
|
||||
primaryButton={{
|
||||
text: "Schedule Service",
|
||||
href: "#contact",
|
||||
}}
|
||||
kpis={[
|
||||
{
|
||||
value: "15+",
|
||||
label: "Years of Excellence",
|
||||
},
|
||||
{
|
||||
value: "5,000+",
|
||||
label: "Projects Completed",
|
||||
},
|
||||
{
|
||||
value: "98%",
|
||||
label: "Client Satisfaction",
|
||||
},
|
||||
{
|
||||
value: "24/7",
|
||||
label: "Emergency Service",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="features-comp" data-section="features-comp">
|
||||
|
||||
48
src/components/sections/hero/HeroSplitKpi.tsx
Normal file
48
src/components/sections/hero/HeroSplitKpi.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
import Button from "@/components/ui/Button";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
|
||||
type HeroSplitKpiProps = {
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
kpis: { value: string; label: string }[];
|
||||
};
|
||||
|
||||
const HeroSplitKpi = ({ title, description, primaryButton, kpis }: HeroSplitKpiProps) => {
|
||||
return (
|
||||
<section
|
||||
aria-label="Hero section"
|
||||
className="flex items-center w-full min-h-svh py-25"
|
||||
>
|
||||
<div className="grid md:grid-cols-2 gap-12 items-center w-content-width mx-auto">
|
||||
<div className="flex flex-col items-start gap-4 text-left">
|
||||
<TextAnimation
|
||||
text={title}
|
||||
variant="slide-up"
|
||||
tag="h1"
|
||||
className="text-6xl font-medium text-balance"
|
||||
/>
|
||||
<TextAnimation
|
||||
text={description}
|
||||
variant="slide-up"
|
||||
tag="p"
|
||||
className="text-lg leading-tight text-balance"
|
||||
/>
|
||||
<div className="mt-2">
|
||||
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" animate />
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-8">
|
||||
{kpis.map((kpi) => (
|
||||
<div key={kpi.label} className="flex flex-col items-start p-6 card rounded-lg">
|
||||
<span className="text-5xl font-bold">{kpi.value}</span>
|
||||
<span className="text-lg">{kpi.label}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default HeroSplitKpi;
|
||||
Reference in New Issue
Block a user