Merge version_2 into main #1
105
src/app/admin/dashboard/page.tsx
Normal file
105
src/app/admin/dashboard/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
217
src/app/company-info/page.tsx
Normal file
217
src/app/company-info/page.tsx
Normal 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
19
src/app/fabrics/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
115
src/app/media-library/page.tsx
Normal file
115
src/app/media-library/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
201
src/app/page.tsx
201
src/app/page.tsx
@@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user