Merge version_1 into main #2

Merged
bender merged 2 commits from version_1 into main 2026-03-11 11:54:56 +00:00
2 changed files with 98 additions and 204 deletions

View File

@@ -2,14 +2,14 @@
import Link from "next/link";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import HeroBillboardScroll from "@/components/sections/hero/HeroBillboardScroll";
import FeatureCardEight from "@/components/sections/feature/FeatureCardEight";
import MediaAbout from "@/components/sections/about/MediaAbout";
import TestimonialCardFive from "@/components/sections/testimonial/TestimonialCardFive";
import FaqSplitMedia from "@/components/sections/faq/FaqSplitMedia";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import FooterLogoReveal from "@/components/sections/footer/FooterLogoReveal";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import HeroBillboardScroll from '@/components/sections/hero/HeroBillboardScroll';
import FeatureCardEight from '@/components/sections/feature/FeatureCardEight';
import MediaAbout from '@/components/sections/about/MediaAbout';
import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
import { Zap, Wind } from "lucide-react";
export default function HomePage() {
@@ -32,7 +32,7 @@ export default function HomePage() {
borderRadius="soft"
contentWidth="compact"
sizing="large"
background="blurBottom"
background="circleGradient"
cardStyle="layered-gradient"
primaryButtonStyle="flat"
secondaryButtonStyle="solid"
@@ -54,14 +54,13 @@ export default function HomePage() {
tag="Local HVAC Experts"
tagIcon={Zap}
tagAnimation="slide-up"
background={{ variant: "blurBottom" }}
background={{ variant: "animated-grid" }}
imageSrc="http://img.b2bpic.net/free-photo/pretty-sexy-smiling-woman-casual-outfit-sitting-living-room-listening-music-headphones-having-fun-home_285396-5058.jpg"
imageAlt="Professional HVAC air conditioning installation"
buttons={[
{ text: "Get a Quote", href: "/contact" },
{
text: "Call Now",
onClick: () => {
text: "Call Now", onClick: () => {
window.location.href = "tel:+61-2-1234-5678";
},
},
@@ -80,36 +79,24 @@ export default function HomePage() {
features={[
{
id: 1,
title: "Installation",
description:
"Professional air conditioning system installation with expert guidance and quality workmanship",
imageSrc:
"http://img.b2bpic.net/free-photo/close-up-ventilation-system_23-2149388960.jpg?_wi=1",
},
title: "Installation", description:
"Professional air conditioning system installation with expert guidance and quality workmanship", imageSrc:
"http://img.b2bpic.net/free-photo/close-up-ventilation-system_23-2149388960.jpg"},
{
id: 2,
title: "Repairs",
description:
"Fast, reliable repair service for air conditioning issues, including fixes for poor previous installations",
imageSrc:
"http://img.b2bpic.net/free-photo/meticulous-wiremen-expertly-refilling-freon-external-air-conditioner-while-using-manifold-measurement-device-closely-measure-pressure-hvac-system-ensuring-perfect-cooling-performance_482257-68069.jpg?_wi=1",
},
title: "Repairs", description:
"Fast, reliable repair service for air conditioning issues, including fixes for poor previous installations", imageSrc:
"http://img.b2bpic.net/free-photo/meticulous-wiremen-expertly-refilling-freon-external-air-conditioner-while-using-manifold-measurement-device-closely-measure-pressure-hvac-system-ensuring-perfect-cooling-performance_482257-68069.jpg"},
{
id: 3,
title: "Maintenance",
description:
"Regular servicing and maintenance to keep your system running efficiently all year round",
imageSrc:
"http://img.b2bpic.net/free-photo/serviceman-calibrating-barometer-meters_482257-91184.jpg?_wi=1",
},
title: "Maintenance", description:
"Regular servicing and maintenance to keep your system running efficiently all year round", imageSrc:
"http://img.b2bpic.net/free-photo/serviceman-calibrating-barometer-meters_482257-91184.jpg"},
{
id: 4,
title: "System Upgrades",
description:
"Modern system upgrades to improve efficiency and comfort in your home or business",
imageSrc:
"http://img.b2bpic.net/free-photo/smart-factory-mechanic-installing-automated-workflows-control-systems_482257-126170.jpg?_wi=1",
},
title: "System Upgrades", description:
"Modern system upgrades to improve efficiency and comfort in your home or business", imageSrc:
"http://img.b2bpic.net/free-photo/smart-factory-mechanic-installing-automated-workflows-control-systems_482257-126170.jpg"},
]}
textboxLayout="default"
useInvertedBackground={false}
@@ -122,7 +109,7 @@ export default function HomePage() {
title="About Grove Air Conditioning"
description="Based in Dulwich Hill, Sydney, Grove Air Conditioning is built on principles of honesty, professionalism, and reliability. Owner John brings years of expertise, honest advice, and quality workmanship to every project. We're known for fixing issues from poor previous installations and delivering exceptional service to Inner West Sydney."
tag="Local Dulwich Hill Business"
imageSrc="http://img.b2bpic.net/free-photo/plumber-covering-his-ears_1368-499.jpg?_wi=1"
imageSrc="http://img.b2bpic.net/free-photo/plumber-covering-his-ears_1368-499.jpg"
imageAlt="John, owner of Grove Air Conditioning"
buttons={[{ text: "Learn More", href: "/about" }]}
useInvertedBackground={true}
@@ -136,83 +123,35 @@ export default function HomePage() {
tag="Customer Reviews"
testimonials={[
{
id: "1",
name: "Kathy Unwin",
date: "Date: November 2024",
title: "Professional and Reliable Service",
quote:
"John was very knowledgeable, on time and very informative about the issues I had with my aircon. He was reliable and professional. I would highly recommend Grove Air Conditioning.",
tag: "Satisfied Customer",
avatarSrc:
"http://img.b2bpic.net/free-photo/mature-woman-smiling_1149-601.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/man-showing-new-home-his-surprised-happy-girlfriend_74855-10259.jpg?_wi=1",
},
id: "1", name: "Kathy Unwin", date: "Date: November 2024", title: "Professional and Reliable Service", quote:
"John was very knowledgeable, on time and very informative about the issues I had with my aircon. He was reliable and professional. I would highly recommend Grove Air Conditioning.", tag: "Satisfied Customer", avatarSrc:
"http://img.b2bpic.net/free-photo/mature-woman-smiling_1149-601.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/man-showing-new-home-his-surprised-happy-girlfriend_74855-10259.jpg"},
{
id: "2",
name: "Stuart Capel",
date: "Date: October 2024",
title: "Excellent Installation Quality",
quote:
"We recently used Grove Air Conditioning for the installation of a new aircon system for our apartment and could not be happier with both the service and the finished installation.",
tag: "Installation",
avatarSrc:
"http://img.b2bpic.net/free-photo/handsome-caucasian-man-with-beard-with-arms-crossed-gesture-relaxed-with-serious-expression-face-simple-natural-looking-camera_839833-13410.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/vertical-shot-man-trying-press-suitcase-close-zipper-packing-clothes-vacation-tourist-going-holiday-preparing-travelling-abroad_1258-314710.jpg?_wi=1",
},
id: "2", name: "Stuart Capel", date: "Date: October 2024", title: "Excellent Installation Quality", quote:
"We recently used Grove Air Conditioning for the installation of a new aircon system for our apartment and could not be happier with both the service and the finished installation.", tag: "Installation", avatarSrc:
"http://img.b2bpic.net/free-photo/handsome-caucasian-man-with-beard-with-arms-crossed-gesture-relaxed-with-serious-expression-face-simple-natural-looking-camera_839833-13410.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/vertical-shot-man-trying-press-suitcase-close-zipper-packing-clothes-vacation-tourist-going-holiday-preparing-travelling-abroad_1258-314710.jpg"},
{
id: "3",
name: "MAD Wholefoods",
date: "Date: September 2024",
title: "Years of Reliable Service",
quote:
"John has been servicing the air conditioning at our shop for years. Always punctual, courteous and professional. Highly recommended.",
tag: "Commercial Client",
avatarSrc:
"http://img.b2bpic.net/free-photo/medium-shot-man-looking-routes_23-2149155158.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/chef-with-uniform-utensil-kitchen_23-2148145551.jpg?_wi=1",
},
id: "3", name: "MAD Wholefoods", date: "Date: September 2024", title: "Years of Reliable Service", quote:
"John has been servicing the air conditioning at our shop for years. Always punctual, courteous and professional. Highly recommended.", tag: "Commercial Client", avatarSrc:
"http://img.b2bpic.net/free-photo/medium-shot-man-looking-routes_23-2149155158.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/chef-with-uniform-utensil-kitchen_23-2148145551.jpg"},
{
id: "4",
name: "Michael Zhang",
date: "Date: August 2024",
title: "Fixed Our System Perfectly",
quote:
"John identified and fixed the issues left by our previous installation. His attention to detail and technical knowledge were impressive. Highly trustworthy.",
tag: "Repair Customer",
avatarSrc:
"http://img.b2bpic.net/free-photo/high-angle-man-home-using-mobile_23-2148306608.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/medium-shot-man-working-with-drill_23-2149366711.jpg?_wi=1",
},
id: "4", name: "Michael Zhang", date: "Date: August 2024", title: "Fixed Our System Perfectly", quote:
"John identified and fixed the issues left by our previous installation. His attention to detail and technical knowledge were impressive. Highly trustworthy.", tag: "Repair Customer", avatarSrc:
"http://img.b2bpic.net/free-photo/high-angle-man-home-using-mobile_23-2148306608.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/medium-shot-man-working-with-drill_23-2149366711.jpg"},
{
id: "5",
name: "Sarah Mitchell",
date: "Date: July 2024",
title: "Outstanding Customer Service",
quote:
"From the first consultation to after-sales support, Grove Air Conditioning provides exceptional service. John's honesty about what we actually need sets him apart.",
tag: "Premium Service",
avatarSrc:
"http://img.b2bpic.net/free-photo/closeup-smiling-adult-woman-leaning-wall_1262-1759.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/lifestyle-people-office_23-2149173706.jpg?_wi=1",
},
id: "5", name: "Sarah Mitchell", date: "Date: July 2024", title: "Outstanding Customer Service", quote:
"From the first consultation to after-sales support, Grove Air Conditioning provides exceptional service. John's honesty about what we actually need sets him apart.", tag: "Premium Service", avatarSrc:
"http://img.b2bpic.net/free-photo/closeup-smiling-adult-woman-leaning-wall_1262-1759.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/lifestyle-people-office_23-2149173706.jpg"},
{
id: "6",
name: "David Park",
date: "Date: June 2024",
title: "Professional and Punctual",
quote:
"Reliable service every time. John always arrives on time and completes the work to the highest standard. We trust Grove Air Conditioning completely.",
tag: "Maintenance Client",
avatarSrc:
"http://img.b2bpic.net/free-photo/portrait-salesman-car-dealership_23-2148130114.jpg",
imageSrc:
"http://img.b2bpic.net/free-photo/meticulous-wiremen-expertly-refilling-freon-external-air-conditioner-while-using-manifold-measurement-device-closely-measure-pressure-hvac-system-ensuring-perfect-cooling-performance_482257-68069.jpg?_wi=2",
},
id: "6", name: "David Park", date: "Date: June 2024", title: "Professional and Punctual", quote:
"Reliable service every time. John always arrives on time and completes the work to the highest standard. We trust Grove Air Conditioning completely.", tag: "Maintenance Client", avatarSrc:
"http://img.b2bpic.net/free-photo/portrait-salesman-car-dealership_23-2148130114.jpg", imageSrc:
"http://img.b2bpic.net/free-photo/meticulous-wiremen-expertly-refilling-freon-external-air-conditioner-while-using-manifold-measurement-device-closely-measure-pressure-hvac-system-ensuring-perfect-cooling-performance_482257-68069.jpg"},
]}
textboxLayout="default"
useInvertedBackground={false}
@@ -224,47 +163,29 @@ export default function HomePage() {
title="Frequently Asked Questions"
description="Find answers to common questions about our air conditioning services"
tag="Help & Support"
imageSrc="http://img.b2bpic.net/free-photo/mechanic-repairing-car-workshop_329181-11836.jpg?_wi=1"
imageSrc="http://img.b2bpic.net/free-photo/mechanic-repairing-car-workshop_329181-11836.jpg"
imageAlt="HVAC technician working on air conditioning system"
mediaPosition="left"
mediaAnimation="slide-up"
faqs={[
{
id: "1",
title: "What areas do you service?",
content:
"We primarily service Inner West Sydney, including Dulwich Hill and surrounding suburbs. This is our local area of expertise where we've built strong relationships with our community.",
},
id: "1", title: "What areas do you service?", content:
"We primarily service Inner West Sydney, including Dulwich Hill and surrounding suburbs. This is our local area of expertise where we've built strong relationships with our community."},
{
id: "2",
title: "How often should I service my air conditioning?",
content:
"We recommend regular maintenance at least once per year, ideally before the summer season. Regular servicing keeps your system running efficiently and helps prevent costly repairs.",
},
id: "2", title: "How often should I service my air conditioning?", content:
"We recommend regular maintenance at least once per year, ideally before the summer season. Regular servicing keeps your system running efficiently and helps prevent costly repairs."},
{
id: "3",
title: "Can you fix issues from previous installations?",
content:
"Yes, this is one of our specialties. We identify and correct problems left by poor previous installations, ensuring your system operates safely and efficiently.",
},
id: "3", title: "Can you fix issues from previous installations?", content:
"Yes, this is one of our specialties. We identify and correct problems left by poor previous installations, ensuring your system operates safely and efficiently."},
{
id: "4",
title: "Do you offer warranties on installations?",
content:
"We provide comprehensive warranties on all our installation work. We'll discuss warranty details during your consultation to ensure you're fully protected.",
},
id: "4", title: "Do you offer warranties on installations?", content:
"We provide comprehensive warranties on all our installation work. We'll discuss warranty details during your consultation to ensure you're fully protected."},
{
id: "5",
title: "How quickly can you respond to repairs?",
content:
"We prioritize urgent repair requests and aim to respond within 24 hours for emergency situations. Contact us immediately if your system is not working.",
},
id: "5", title: "How quickly can you respond to repairs?", content:
"We prioritize urgent repair requests and aim to respond within 24 hours for emergency situations. Contact us immediately if your system is not working."},
{
id: "6",
title: "What's involved in a professional inspection?",
content:
"A professional inspection includes checking refrigerant levels, testing components, cleaning filters, checking electrical connections, and providing honest advice on any repairs or upgrades needed.",
},
id: "6", title: "What's involved in a professional inspection?", content:
"A professional inspection includes checking refrigerant levels, testing components, cleaning filters, checking electrical connections, and providing honest advice on any repairs or upgrades needed."},
]}
faqsAnimation="slide-up"
textboxLayout="default"
@@ -280,39 +201,25 @@ export default function HomePage() {
description="Contact Grove Air Conditioning today for a free consultation. Whether you need installation, repairs, maintenance, or system upgrades, we're here to help."
inputs={[
{
name: "fullName",
type: "text",
placeholder: "Your Full Name",
required: true,
name: "fullName", type: "text", placeholder: "Your Full Name", required: true,
},
{
name: "email",
type: "email",
placeholder: "Your Email Address",
required: true,
name: "email", type: "email", placeholder: "Your Email Address", required: true,
},
{
name: "phone",
type: "tel",
placeholder: "Your Phone Number",
required: true,
name: "phone", type: "tel", placeholder: "Your Phone Number", required: true,
},
{
name: "serviceType",
type: "text",
placeholder:
"Service Type (Installation/Repair/Maintenance/Upgrade)",
required: false,
name: "serviceType", type: "text", placeholder:
"Service Type (Installation/Repair/Maintenance/Upgrade)", required: false,
},
]}
textarea={{
name: "message",
placeholder: "Tell us about your air conditioning needs",
rows: 5,
name: "message", placeholder: "Tell us about your air conditioning needs", rows: 5,
required: true,
}}
useInvertedBackground={false}
imageSrc="http://img.b2bpic.net/free-photo/factory-worker-with-face-mask-feeling-ill-holding-his-head-pain-production-facility_637285-12061.jpg?_wi=1"
imageSrc="http://img.b2bpic.net/free-photo/factory-worker-with-face-mask-feeling-ill-holding-his-head-pain-production-facility_637285-12061.jpg"
imageAlt="Professional HVAC technician ready to assist"
mediaAnimation="slide-up"
mediaPosition="right"
@@ -324,13 +231,9 @@ export default function HomePage() {
<FooterLogoReveal
logoText="Grove Air Conditioning"
leftLink={{
text: "Privacy Policy",
href: "#",
}}
text: "Privacy Policy", href: "#"}}
rightLink={{
text: "Terms of Service",
href: "#",
}}
text: "Terms of Service", href: "#"}}
/>
</div>
</ThemeProvider>

View File

@@ -1,51 +1,42 @@
"use client";
import { memo } from "react";
import useSvgTextLogo from "./useSvgTextLogo";
import { cls } from "@/lib/utils";
import React from 'react';
interface SvgTextLogoProps {
logoText: string;
adjustHeightFactor?: number;
verticalAlign?: "top" | "center";
text: string;
className?: string;
fontSize?: number;
fontWeight?: string;
letterSpacing?: string;
dominantBaseline?: 'auto' | 'baseline' | 'middle' | 'hanging' | 'mathematical' | 'central';
}
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
logoText,
adjustHeightFactor,
verticalAlign = "top",
className = "",
}) {
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
export const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
text,
className = '',
fontSize = 32,
fontWeight = '700',
letterSpacing = '0',
dominantBaseline = 'middle',
}) => {
return (
<svg
ref={svgRef}
viewBox={viewBox}
className={cls("w-full", className)}
style={{ aspectRatio: aspectRatio }}
preserveAspectRatio="none"
role="img"
aria-label={`${logoText} logo`}
viewBox="0 0 200 60"
className={className}
xmlns="http://www.w3.org/2000/svg"
>
<text
ref={textRef}
x="0"
y={verticalAlign === "center" ? "50%" : "0"}
className="font-bold fill-current"
style={{
fontSize: "20px",
letterSpacing: "-0.02em",
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
}}
x="100"
y="30"
fontSize={fontSize}
fontWeight={fontWeight}
letterSpacing={letterSpacing}
textAnchor="middle"
dominantBaseline={dominantBaseline}
className="fill-current"
>
{logoText}
{text}
</text>
</svg>
);
});
};
SvgTextLogo.displayName = "SvgTextLogo";
export default SvgTextLogo;
export default SvgTextLogo;