Merge version_2 into main #1

Merged
bender merged 5 commits from version_2 into main 2026-06-08 17:02:19 +00:00
5 changed files with 521 additions and 136 deletions

View File

@@ -0,0 +1,105 @@
"use client";
import React from "react";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import { Home, Settings, Users, LineChart, FileText, ShoppingBag } from "lucide-react"; // Example icons
export default function AdminDashboardPage() {
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="medium"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div className="flex h-screen bg-background">
{/* Sidebar */}
<aside className="w-64 bg-card p-4 shadow-lg flex flex-col">
<div className="text-2xl font-bold mb-8 text-foreground">Admin Panel</div>
<nav className="space-y-2">
<a href="/admin/dashboard" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<Home size={20} />
<span>Dashboard</span>
</a>
<a href="/admin/users" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<Users size={20} />
<span>Users</span>
</a>
<a href="/admin/products" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<ShoppingBag size={20} />
<span>Products</span>
</a>
<a href="/admin/orders" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<FileText size={20} />
<span>Orders</span>
</a>
<a href="/admin/analytics" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<LineChart size={20} />
<span>Analytics</span>
</a>
<a href="/admin/settings" className="flex items-center space-x-2 p-2 rounded-lg hover:bg-primary-cta hover:text-white transition-colors duration-200">
<Settings size={20} />
<span>Settings</span>
</a>
</nav>
</aside>
{/* Main Content Area */}
<main className="flex-1 p-8 overflow-y-auto">
<h1 className="text-4xl font-bold mb-8 text-foreground">Dashboard Overview</h1>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{/* Example Dashboard Cards */}
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-xl font-semibold mb-2 text-foreground">Total Sales</h2>
<p className="text-3xl font-bold text-primary-cta">$12,345</p>
<p className="text-sm text-foreground-lighter mt-2">Up 15% from last month</p>
</div>
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-xl font-semibold mb-2 text-foreground">New Users</h2>
<p className="text-3xl font-bold text-primary-cta">2,500</p>
<p className="text-sm text-foreground-lighter mt-2">Up 8% from last month</p>
</div>
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-xl font-semibold mb-2 text-foreground">Pending Orders</h2>
<p className="text-3xl font-bold text-primary-cta">128</p>
<p className="text-sm text-foreground-lighter mt-2">Requires immediate action</p>
</div>
</div>
<section className="mt-10">
<h2 className="text-3xl font-bold mb-6 text-foreground">Recent Activity</h2>
<div className="bg-card p-6 rounded-lg shadow-md">
<ul className="space-y-4">
<li className="flex justify-between items-center text-foreground-lighter">
<span>User 'Jane Doe' added a new product.</span>
<span className="text-sm text-foreground-muted">2 hours ago</span>
</li>
<li className="flex justify-between items-center text-foreground-lighter">
<span>Order #12345 has been processed.</span>
<span className="text-sm text-foreground-muted">5 hours ago</span>
</li>
<li className="flex justify-between items-center text-foreground-lighter">
<span>New user 'John Smith' registered.</span>
<span className="text-sm text-foreground-muted">1 day ago</span>
</li>
<li className="flex justify-between items-center text-foreground-lighter">
<span>Product 'HVAC Filter' updated inventory.</span>
<span className="text-sm text-foreground-muted">2 days ago</span>
</li>
</ul>
</div>
</section>
</main>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,217 @@
"use client";
import React, { useState } from "react";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import { Facebook, Instagram, Linkedin, MapPin, Mail, Phone, Twitter, Wrench } from "lucide-react";
export default function CompanyInfoPage() {
const [companyName, setCompanyName] = useState("AirPro HVAC");
const [ownerName, setOwnerName] = useState("John Doe");
const [phone, setPhone] = useState("(555) 987-6543");
const [whatsApp, setWhatsApp] = useState("+15559876543");
const [email, setEmail] = useState("info@airprohvac.com");
const [address, setAddress] = useState("123 Comfort St, Austin, TX 78701");
const [googleMaps, setGoogleMaps] = useState("https://maps.app.goo.gl/example");
const [facebook, setFacebook] = useState("https://facebook.com/airprohvac");
const [instagram, setInstagram] = useState("https://instagram.com/airprohvac");
const [twitter, setTwitter] = useState("https://twitter.com/airprohvac");
const [linkedin, setLinkedin] = useState("https://linkedin.com/company/airprohvac");
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
// In a real application, you would send this data to a backend API
console.log("Company Info Updated:", {
companyName,
ownerName,
phone,
whatsApp,
email,
address,
googleMaps,
facebook,
instagram,
twitter,
linkedin,
});
alert("Company information updated successfully!");
};
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="medium"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
brandName="AirPro HVAC"
navItems={[
{ name: "Services", id: "services" },
{ name: "About", id: "about" },
{ name: "Testimonials", id: "testimonials" },
{ name: "Contact", id: "contact" },
{ name: "Company Info", href: "/company-info" }
]}
button={{ text: "Get a Quote", href: "/#contact" }}
animateOnLoad={false}
/>
</div>
<div className="flex min-h-screen flex-col items-center justify-center p-8 lg:p-16 w-full">
<div className="w-full max-w-4xl rounded-lg bg-card p-6 shadow-xl">
<h1 className="mb-6 text-center text-4xl font-bold text-foreground">Company Information Management</h1>
<p className="mb-8 text-center text-lg text-foreground-lighter">Update your company's core details, contact information, and social media presence.</p>
<form onSubmit={handleSubmit} className="space-y-6">
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label htmlFor="companyName" className="mb-2 block text-sm font-medium text-foreground-lighter">Company Name</label>
<input
type="text"
id="companyName"
value={companyName}
onChange={(e) => setCompanyName(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
required
/>
</div>
<div>
<label htmlFor="ownerName" className="mb-2 block text-sm font-medium text-foreground-lighter">Owner Name</label>
<input
type="text"
id="ownerName"
value={ownerName}
onChange={(e) => setOwnerName(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
required
/>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label htmlFor="phone" className="mb-2 block text-sm font-medium text-foreground-lighter">Phone Number</label>
<input
type="tel"
id="phone"
value={phone}
onChange={(e) => setPhone(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
required
/>
</div>
<div>
<label htmlFor="whatsApp" className="mb-2 block text-sm font-medium text-foreground-lighter">WhatsApp Number</label>
<input
type="tel"
id="whatsApp"
value={whatsApp}
onChange={(e) => setWhatsApp(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
</div>
<div>
<label htmlFor="email" className="mb-2 block text-sm font-medium text-foreground-lighter">Email Address</label>
<input
type="email"
id="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
required
/>
</div>
<div>
<label htmlFor="address" className="mb-2 block text-sm font-medium text-foreground-lighter">Physical Address</label>
<input
type="text"
id="address"
value={address}
onChange={(e) => setAddress(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
required
/>
</div>
<div>
<label htmlFor="googleMaps" className="mb-2 block text-sm font-medium text-foreground-lighter">Google Maps Link</label>
<input
type="url"
id="googleMaps"
value={googleMaps}
onChange={(e) => setGoogleMaps(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label htmlFor="facebook" className="mb-2 block text-sm font-medium text-foreground-lighter">Facebook Profile</label>
<input
type="url"
id="facebook"
value={facebook}
onChange={(e) => setFacebook(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
<div>
<label htmlFor="instagram" className="mb-2 block text-sm font-medium text-foreground-lighter">Instagram Profile</label>
<input
type="url"
id="instagram"
value={instagram}
onChange={(e) => setInstagram(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
<div>
<label htmlFor="twitter" className="mb-2 block text-sm font-medium text-foreground-lighter">Twitter/X Profile</label>
<input
type="url"
id="twitter"
value={twitter}
onChange={(e) => setTwitter(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
<div>
<label htmlFor="linkedin" className="mb-2 block text-sm font-medium text-foreground-lighter">LinkedIn Profile</label>
<input
type="url"
id="linkedin"
value={linkedin}
onChange={(e) => setLinkedin(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-foreground shadow-sm focus:border-primary-cta focus:ring focus:ring-primary-cta focus:ring-opacity-50"
/>
</div>
</div>
<div className="flex justify-center">
<button
type="submit"
className="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 px-6 py-3 bg-primary-cta text-primary-cta-foreground hover:bg-primary-cta/90 shadow-lg"
>
<Wrench className="mr-2 h-5 w-5" /> Save Changes
</button>
</div>
</form>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

19
src/app/fabrics/page.tsx Normal file
View File

@@ -0,0 +1,19 @@
"use client";
import React from "react";
export default function FabricsPage() {
return (
<div className="min-h-screen flex items-center justify-center bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-gray-100">
<div className="p-8 bg-white dark:bg-gray-800 shadow-md rounded-lg text-center">
<h1 className="text-3xl font-bold mb-4">Fabric Catalog Management</h1>
<p className="text-lg">
This page will allow you to add, edit, delete, and reorder fabrics, as well as manage categories.
</p>
<p className="text-sm mt-2 text-gray-600 dark:text-gray-400">
(Under construction - functionality to be implemented)
</p>
</div>
</div>
);
}

View File

@@ -0,0 +1,115 @@
"use client";
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import HeroOverlay from "@/components/sections/hero/HeroOverlay";
import FooterMedia from "@/components/sections/footer/FooterMedia";
export default function MediaLibraryPage() {
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="medium"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingInline
brandName="AirPro HVAC"
navItems={[
{ name: "Services", href: "/#services" },
{ name: "About", href: "/#about" },
{ name: "Testimonials", href: "/#testimonials" },
{ name: "Contact", href: "/#contact" },
{ name: "Media Library", href: "/media-library" }
]}
button={{ text: "Get a Quote", href: "/#contact" }}
animateOnLoad={false}
/>
</div>
<div id="hero" data-section="hero">
<HeroOverlay
title="Media Library"
description="Manage your images and digital assets with ease. Upload, organize, optimize, and delete files securely."
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-1.jpg"
imageAlt="Digital assets management interface"
showDimOverlay={true}
/>
</div>
<div id="media-content" className="py-20 md:py-32 container">
<h2 className="text-3xl font-bold mb-8">Your Digital Assets</h2>
<div className="bg-card p-8 rounded-lg shadow-lg min-h-[400px]">
<p className="text-foreground/80 mb-4">
This section will feature image upload, bulk upload, folder management, image optimization, and delete functionality.
</p>
<div className="border border-dashed border-accent/50 p-10 text-center text-foreground/60 rounded-md">
<p>Drag & Drop files here or Click to Upload</p>
<button className="mt-4 px-6 py-3 bg-primary-cta text-primary-cta-foreground rounded-md hover:opacity-90 transition-opacity">
Browse Files
</button>
</div>
<div className="mt-8">
<h3 className="text-xl font-semibold mb-4">Folders</h3>
<ul className="list-disc pl-5">
<li>Campaign Images</li>
<li>Product Photos</li>
<li>Team Assets</li>
</ul>
<h3 className="text-xl font-semibold mt-8 mb-4">Recently Uploaded</h3>
<div className="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-4">
<div className="bg-background-accent p-4 rounded-md text-center">Image 1.jpg</div>
<div className="bg-background-accent p-4 rounded-md text-center">Image 2.png</div>
<div className="bg-background-accent p-4 rounded-md text-center">Logo.svg</div>
</div>
</div>
</div>
</div>
<div id="footer" data-section="footer">
<FooterMedia
logoText="AirPro HVAC"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-10.jpg"
imageAlt="HVAC technician inspecting equipment"
columns={[
{
title: "Services", items: [
{ label: "AC Installation", href: "/#services" },
{ label: "Heating Systems", href: "/#services" },
{ label: "Maintenance Plans", href: "/#services" },
{ label: "Emergency Repairs", href: "/#services" },
],
},
{
title: "Company", items: [
{ label: "About Us", href: "/#about" },
{ label: "Testimonials", href: "/#testimonials" },
{ label: "FAQ", href: "/#faq" },
{ label: "Contact", href: "/#contact" },
{ label: "Media Library", href: "/media-library" }
],
},
{
title: "Contact", items: [
{ label: "(555) 987-6543", href: "tel:5559876543" },
{ label: "info@airprohvac.com", href: "mailto:info@airprohvac.com" },
{ label: "Austin, TX" },
],
},
]}
copyrightText="© 2026 | AirPro HVAC"
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -3,7 +3,7 @@
import ReactLenis from "lenis/react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import HeroOverlay from "@/components/sections/hero/HeroOverlay";
import HeroBillboardDashboard from '@/components/sections/hero/HeroBillboardDashboard';
import MetricSplitMediaAbout from "@/components/sections/about/MetricSplitMediaAbout";
import FeatureCardOne from "@/components/sections/feature/FeatureCardOne";
import FeatureBorderGlow from "@/components/sections/feature/featureBorderGlow/FeatureBorderGlow";
@@ -12,7 +12,7 @@ import TestimonialCardThirteen from "@/components/sections/testimonial/Testimoni
import FaqSplitText from "@/components/sections/faq/FaqSplitText";
import ContactCTA from "@/components/sections/contact/ContactCTA";
import FooterMedia from "@/components/sections/footer/FooterMedia";
import { ShieldCheck, Wrench, DollarSign, Phone } from "lucide-react";
import { ShieldCheck, Wrench, DollarSign, Phone, LayoutDashboard, Users, Settings, HelpCircle, LogOut, Bell, PieChart, TrendingUp, DollarSign as DollarSignIcon } from "lucide-react";
export default function HvacPage() {
return (
@@ -44,23 +44,40 @@ export default function HvacPage() {
</div>
<div id="hero" data-section="hero">
<HeroOverlay
title="Your Comfort Is Our Priority"
description="Professional heating, ventilation, and air conditioning services for homes and businesses. From installations to emergency repairs, we keep your climate perfect year-round."
avatars={[
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-1.jpg", alt: "Client" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-2.jpg", alt: "Client" },
{ src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-3.jpg", alt: "Client" },
]}
avatarText="Trusted by 500+ clients"
<HeroBillboardDashboard
title="Manage Your HVAC Services"
description="Access your service history, schedule appointments, and view real-time system diagnostics all in one place. Your comfort, simplified."
background={{ variant: 'animated-grid' }}
buttons={[
{ text: "Schedule Service", href: "#contact" },
{ text: "Our Services", href: "#services" },
{ text: "Schedule New Service", href: "#contact" },
{ text: "View Plans", href: "#services" }
]}
buttonAnimation="slide-up"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-1.jpg"
imageAlt="HVAC technician performing system maintenance"
showDimOverlay={true}
dashboard={{
title: "Dashboard Overview", stats: [
{ title: "Total Services", values: [120, 110, 100], description: "This month", valueSuffix: "+" },
{ title: "Active Systems", values: [95, 90, 85], description: "Currently monitored", valueSuffix: "" },
{ title: "Pending Appointments", values: [7, 5, 3], description: "Upcoming schedule", valueSuffix: "" }
],
logoIcon: TrendingUp,
sidebarItems: [
{ icon: LayoutDashboard, active: true },
{ icon: Users },
{ icon: Settings },
{ icon: HelpCircle }
],
searchPlaceholder: "Search services...", buttons: [
{ text: "New Request", href: "#" }
],
chartTitle: "Revenue Overview", chartData: [
{ value: 20000 }, { value: 22000 }, { value: 18000 }, { value: 25000 }, { value: 21000 }, { value: 23000 }, { value: 26000 }, { value: 24000 }, { value: 27000 }, { value: 29000 }, { value: 28000 }, { value: 30000 }
],
listTitle: "Recent Activity", listItems: [
{ icon: DollarSignIcon, title: "Invoice #2024001 Paid", status: "Completed" },
{ icon: Bell, title: "System check scheduled", status: "Pending" },
{ icon: Wrench, title: "AC repair requested", status: "In Progress" }
],
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/dashboard-mockup.png", imageAlt: "HVAC Dashboard Mockup"
}}
/>
</div>
@@ -71,20 +88,14 @@ export default function HvacPage() {
description="AirPro HVAC has been keeping homes and businesses comfortable for nearly two decades. Our certified technicians deliver expert installations, maintenance, and repairs — backed by transparent pricing and a commitment to getting the job done right the first time."
metrics={[
{
value: "2,500+",
title: "Systems installed and serviced",
},
value: "2,500+", title: "Systems installed and serviced"},
{
value: "98%",
title: "Customer satisfaction rate",
},
value: "98%", title: "Customer satisfaction rate"},
]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-2.jpg"
imageAlt="Commercial HVAC units on rooftop"
mediaBadge={{
text: "Active Now",
avatarSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-3.jpg",
avatarAlt: "Technician"
text: "Active Now", avatarSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-3.jpg", avatarAlt: "Technician"
}}
mediaAnimation="slide-up"
metricsAnimation="slide-up"
@@ -99,41 +110,17 @@ export default function HvacPage() {
buttonAnimation="slide-up"
features={[
{
title: "AC Installation",
description: "Expert installation of high-efficiency air conditioning systems for homes and commercial spaces.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-4.jpg",
imageAlt: "AC installation service",
},
title: "AC Installation", description: "Expert installation of high-efficiency air conditioning systems for homes and commercial spaces.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-4.jpg", imageAlt: "AC installation service"},
{
title: "Heating Systems",
description: "Complete furnace and heat pump installations to keep you warm through every winter.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-5.jpg",
imageAlt: "Heating system service",
},
title: "Heating Systems", description: "Complete furnace and heat pump installations to keep you warm through every winter.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-5.jpg", imageAlt: "Heating system service"},
{
title: "Maintenance Plans",
description: "Preventative maintenance programs that extend the life of your system and reduce energy costs.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-6.jpg",
imageAlt: "HVAC maintenance",
},
title: "Maintenance Plans", description: "Preventative maintenance programs that extend the life of your system and reduce energy costs.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-6.jpg", imageAlt: "HVAC maintenance"},
{
title: "Emergency Repairs",
description: "24/7 emergency repair service — we respond fast when your system breaks down unexpectedly.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-7.jpg",
imageAlt: "Emergency HVAC repair",
},
title: "Emergency Repairs", description: "24/7 emergency repair service — we respond fast when your system breaks down unexpectedly.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-7.jpg", imageAlt: "Emergency HVAC repair"},
{
title: "Duct Cleaning",
description: "Professional duct cleaning to improve air quality and system efficiency throughout your property.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-8.jpg",
imageAlt: "Duct cleaning service",
},
title: "Duct Cleaning", description: "Professional duct cleaning to improve air quality and system efficiency throughout your property.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-8.jpg", imageAlt: "Duct cleaning service"},
{
title: "System Inspections",
description: "Thorough inspections with detailed reports and transparent recommendations — no hidden fees.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-9.jpg",
imageAlt: "HVAC system inspection",
},
title: "System Inspections", description: "Thorough inspections with detailed reports and transparent recommendations — no hidden fees.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-9.jpg", imageAlt: "HVAC system inspection"},
]}
gridVariant="uniform-all-items-equal"
uniformGridCustomHeightClasses="aspect-square"
@@ -150,19 +137,13 @@ export default function HvacPage() {
features={[
{
icon: ShieldCheck,
title: "Reliability & Trust",
description: "Looking for a dependable HVAC company? We arrive on time and do the job right.",
},
title: "Reliability & Trust", description: "Looking for a dependable HVAC company? We arrive on time and do the job right."},
{
icon: Wrench,
title: "Quality Workmanship",
description: "Our skilled technicians excel in various HVAC repairs, using only top-quality materials.",
},
title: "Quality Workmanship", description: "Our skilled technicians excel in various HVAC repairs, using only top-quality materials."},
{
icon: DollarSign,
title: "Fair & Transparent Pricing",
description: "No surprises here! We offer clear quotes and fair pricing for quality work.",
},
title: "Fair & Transparent Pricing", description: "No surprises here! We offer clear quotes and fair pricing for quality work."},
]}
textboxLayout="default"
animationType="slide-up"
@@ -174,29 +155,13 @@ export default function HvacPage() {
description="Our simple process from first call to finished job"
features={[
{
title: "Schedule a Call",
description: "Contact us by phone or online to describe your HVAC issue. We'll find a time that works for you.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-6.jpg",
imageAlt: "Scheduling a service call",
},
title: "Schedule a Call", description: "Contact us by phone or online to describe your HVAC issue. We'll find a time that works for you.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-6.jpg", imageAlt: "Scheduling a service call"},
{
title: "On-Site Diagnosis",
description: "A certified technician arrives on time, inspects your system, and explains the issue with a clear quote.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-7.jpg",
imageAlt: "Technician diagnosing HVAC system",
},
title: "On-Site Diagnosis", description: "A certified technician arrives on time, inspects your system, and explains the issue with a clear quote.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-7.jpg", imageAlt: "Technician diagnosing HVAC system"},
{
title: "Expert Repair or Install",
description: "We complete the work using premium parts and proven techniques — most jobs done same day.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-4.jpg",
imageAlt: "HVAC repair in progress",
},
title: "Expert Repair or Install", description: "We complete the work using premium parts and proven techniques — most jobs done same day.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-4.jpg", imageAlt: "HVAC repair in progress"},
{
title: "Quality Guarantee",
description: "We test everything before we leave and back all work with our satisfaction guarantee.",
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-8.jpg",
imageAlt: "Final quality check",
},
title: "Quality Guarantee", description: "We test everything before we leave and back all work with our satisfaction guarantee.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/hvac/img-8.jpg", imageAlt: "Final quality check"},
]}
textboxLayout="default"
useInvertedBackground={false}
@@ -207,32 +172,14 @@ export default function HvacPage() {
description="Hear from homeowners and businesses who trust AirPro HVAC."
testimonials={[
{
id: "1",
name: "James R.",
handle: "Homeowner, Austin TX",
testimonial: "AirPro replaced our entire AC system in one day. The crew was professional, clean, and the new unit runs quieter than anything we've had before. Highly recommend.",
rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-1.jpg",
imageAlt: "James R.",
},
id: "1", name: "James R.", handle: "Homeowner, Austin TX", testimonial: "AirPro replaced our entire AC system in one day. The crew was professional, clean, and the new unit runs quieter than anything we've had before. Highly recommend.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-1.jpg", imageAlt: "James R."},
{
id: "2",
name: "Linda M.",
handle: "Business Owner, Dallas TX",
testimonial: "We use AirPro for all three of our office locations. Their maintenance plans have saved us thousands in emergency repairs. Always on time, always honest.",
rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-2.jpg",
imageAlt: "Linda M.",
},
id: "2", name: "Linda M.", handle: "Business Owner, Dallas TX", testimonial: "We use AirPro for all three of our office locations. Their maintenance plans have saved us thousands in emergency repairs. Always on time, always honest.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-2.jpg", imageAlt: "Linda M."},
{
id: "3",
name: "Carlos D.",
handle: "Homeowner, Houston TX",
testimonial: "Our furnace broke down on the coldest night of the year. AirPro had someone at our door within two hours. Fixed it on the spot. Can't thank them enough.",
rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-3.jpg",
imageAlt: "Carlos D.",
},
id: "3", name: "Carlos D.", handle: "Homeowner, Houston TX", testimonial: "Our furnace broke down on the coldest night of the year. AirPro had someone at our door within two hours. Fixed it on the spot. Can't thank them enough.", rating: 5,
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/default/templates/web-agency-2/team-3.jpg", imageAlt: "Carlos D."},
]}
showRating={true}
animationType="slide-up"
@@ -250,30 +197,15 @@ export default function HvacPage() {
useInvertedBackground={false}
faqs={[
{
id: "1",
title: "Do you offer 24/7 emergency service?",
content: "Yes! We provide round-the-clock emergency HVAC service. If your system breaks down in the middle of the night or on a weekend, call us and a technician will be at your door as soon as possible.",
},
id: "1", title: "Do you offer 24/7 emergency service?", content: "Yes! We provide round-the-clock emergency HVAC service. If your system breaks down in the middle of the night or on a weekend, call us and a technician will be at your door as soon as possible."},
{
id: "2",
title: "How often should I service my HVAC system?",
content: "We recommend servicing your system at least twice a year — once before summer for cooling and once before winter for heating. Regular maintenance extends your system's life and keeps energy bills low.",
},
id: "2", title: "How often should I service my HVAC system?", content: "We recommend servicing your system at least twice a year — once before summer for cooling and once before winter for heating. Regular maintenance extends your system's life and keeps energy bills low."},
{
id: "3",
title: "What brands do you install and repair?",
content: "We work with all major HVAC brands including Carrier, Trane, Lennox, Daikin, Rheem, and more. Our technicians are trained and certified across multiple manufacturers.",
},
id: "3", title: "What brands do you install and repair?", content: "We work with all major HVAC brands including Carrier, Trane, Lennox, Daikin, Rheem, and more. Our technicians are trained and certified across multiple manufacturers."},
{
id: "4",
title: "Do you offer financing options?",
content: "Yes, we offer flexible financing plans for new installations and major repairs. Ask about our 0% interest options so you can stay comfortable without straining your budget.",
},
id: "4", title: "Do you offer financing options?", content: "Yes, we offer flexible financing plans for new installations and major repairs. Ask about our 0% interest options so you can stay comfortable without straining your budget."},
{
id: "5",
title: "How long does a typical installation take?",
content: "Most residential HVAC installations are completed in one day. Larger commercial projects may take 2-3 days depending on the scope. We'll give you an accurate timeline during your consultation.",
},
id: "5", title: "How long does a typical installation take?", content: "Most residential HVAC installations are completed in one day. Larger commercial projects may take 2-3 days depending on the scope. We'll give you an accurate timeline during your consultation."},
]}
/>
</div>
@@ -300,8 +232,7 @@ export default function HvacPage() {
imageAlt="HVAC technician inspecting equipment"
columns={[
{
title: "Services",
items: [
title: "Services", items: [
{ label: "AC Installation", href: "#services" },
{ label: "Heating Systems", href: "#services" },
{ label: "Maintenance Plans", href: "#services" },
@@ -309,8 +240,7 @@ export default function HvacPage() {
],
},
{
title: "Company",
items: [
title: "Company", items: [
{ label: "About Us", href: "#about" },
{ label: "Testimonials", href: "#testimonials" },
{ label: "FAQ", href: "#faq" },
@@ -318,8 +248,7 @@ export default function HvacPage() {
],
},
{
title: "Contact",
items: [
title: "Contact", items: [
{ label: "(555) 987-6543", href: "tel:5559876543" },
{ label: "info@airprohvac.com", href: "mailto:info@airprohvac.com" },
{ label: "Austin, TX" },
@@ -332,4 +261,4 @@ export default function HvacPage() {
</ReactLenis>
</ThemeProvider>
);
}
}