10 Commits

Author SHA1 Message Date
23a5c052b3 Merge version_3 into main
Merge version_3 into main
2026-03-12 10:06:19 +00:00
619c4017f3 Update src/app/styles/variables.css 2026-03-12 10:06:15 +00:00
2d0d31c558 Update src/app/styles/base.css 2026-03-12 10:06:15 +00:00
e4a3628bf8 Update src/app/page.tsx 2026-03-12 10:06:15 +00:00
de25d1cae8 Update src/app/layout.tsx 2026-03-12 10:06:14 +00:00
200b2ef9b3 Update src/components/shared/SvgTextLogo/SvgTextLogo.tsx 2026-03-12 09:57:57 +00:00
74664236a3 Merge version_2 into main
Merge version_2 into main
2026-03-12 09:55:59 +00:00
4987347dbe Update src/app/styles/variables.css 2026-03-12 09:55:55 +00:00
5d3523849c Update src/app/page.tsx 2026-03-12 09:55:55 +00:00
7f95f19eb1 Merge version_1 into main
Merge version_1 into main
2026-03-12 09:55:34 +00:00
5 changed files with 69 additions and 65 deletions

View File

@@ -1,23 +1,25 @@
import type { Metadata } from "next";
import { Halant } from "next/font/google";
import { Inter } from "next/font/google";
import { Playfair_Display, Montserrat } from "next/font/google";
import "./globals.css";
import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag";
import { getVisualEditScript } from "@/utils/visual-edit-script";
import { Nunito_Sans } from "next/font/google";
const playfairDisplay = Playfair_Display({
variable: "--font-playfair-display", subsets: ["latin"],
weight: ["400", "500", "600", "700", "800", "900"],
});
const montserrat = Montserrat({
variable: "--font-montserrat", subsets: ["latin"],
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
});
export const metadata: Metadata = {
title: 'Aaron\'s Masonry - Expert Brick & Stone Work',
description: 'Professional masonry services including patios, chimneys, and retaining walls. 25+ years of trusted craftsmanship for residential and commercial projects.',
};
const nunitoSans = Nunito_Sans({
variable: "--font-nunito-sans", subsets: ["latin"],
});
export default function RootLayout({
children,
}: Readonly<{
@@ -26,7 +28,7 @@ export default function RootLayout({
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
<body className={`${nunitoSans.variable} antialiased`}>
<body className={`${playfairDisplay.variable} ${montserrat.variable} antialiased`}>
<Tag />
{children}
<script
@@ -38,4 +40,4 @@ export default function RootLayout({
</ServiceWrapper>
</html>
);
}
}

View File

@@ -44,9 +44,9 @@ export default function LandingPage() {
<div id="hero" data-section="hero">
<HeroSplit
title="Expert Masonry Craftsmanship for Your Home"
description="Transform your property with professional masonry services. From brick patios to chimney repairs, we deliver superior quality and lasting results."
tag="Quality & Reliability"
title="Timeless Masonry. Built to Last."
description="Elevate your property with premium masonry craftsmanship. From exquisite brick patios to meticulous chimney restoration, we deliver uncompromising quality and enduring results that stand the test of time."
tag="Luxury Craftsmanship"
tagIcon={Shield}
tagAnimation="slide-up"
background={{ variant: "glowing-orb" }}
@@ -55,8 +55,8 @@ export default function LandingPage() {
imagePosition="right"
mediaAnimation="slide-up"
buttons={[
{ text: "Get Your Free Quote", href: "contact" },
{ text: "View Our Work", href: "portfolio" }
{ text: "Discover Our Craftsmanship", href: "contact" },
{ text: "View Signature Collection", href: "portfolio" }
]}
buttonAnimation="slide-up"
/>
@@ -64,14 +64,14 @@ export default function LandingPage() {
<div id="about" data-section="about">
<MetricSplitMediaAbout
tag="About Aaron's Masonry"
tag="Our Heritage"
tagIcon={Award}
tagAnimation="slide-up"
title="Trusted Masonry Expert Since 1995"
description="With over 25 years of experience, Aaron's Masonry has become the trusted choice for residential and commercial masonry projects throughout the region. Our commitment to exceptional craftsmanship, attention to detail, and customer satisfaction sets us apart. Every project is treated with the care and precision it deserves."
title="Masonry Excellence Since 1995"
description="For nearly three decades, Aaron's Masonry has represented the pinnacle of residential and commercial masonry artistry. Our unwavering dedication to exceptional craftsmanship, meticulous attention to detail, and bespoke client experiences distinguishes us in the industry. Each project receives the refined care and technical precision that defines true luxury masonry work."
metrics={[
{ value: "25+", title: "Years of Experience" },
{ value: "1000+", title: "Satisfied Customers" }
{ value: "25+", title: "Years of Heritage" },
{ value: "1000+", title: "Luxury Projects" }
]}
imageSrc="http://img.b2bpic.net/free-photo/farmer-doing-his-job-close-up_23-2148579992.jpg"
imageAlt="Aaron's Masonry team"
@@ -83,19 +83,19 @@ export default function LandingPage() {
<div id="services" data-section="services">
<FeatureCardSixteen
title="Our Masonry Services"
description="We specialize in a wide range of masonry work designed to enhance and protect your property."
tag="Services"
title="Signature Masonry Services"
description="We specialize in premium masonry solutions designed to enhance property value and aesthetic sophistication."
tag="Luxury Services"
tagIcon={Wrench}
tagAnimation="slide-up"
negativeCard={{
items: [
"Cracked brick or mortar damage", "Deteriorating chimney condition", "Uneven or unstable surfaces", "Poor drainage around foundation"
"Deteriorated brick and mortar integrity", "Compromised chimney performance", "Uneven or unstable structural surfaces", "Inadequate drainage and water protection"
]
}}
positiveCard={{
items: [
"Expert brick and stone repair", "Professional chimney cleaning & maintenance", "Custom patio and walkway installation", "Retaining wall construction & restoration"
"Premium brick and stone restoration", "Expert chimney restoration & maintenance", "Bespoke patio and walkway design", "Retaining wall artistry & restoration"
]
}}
animationType="slide-up"
@@ -106,9 +106,9 @@ export default function LandingPage() {
<div id="portfolio" data-section="portfolio">
<ProductCardTwo
title="Featured Projects"
description="Explore our portfolio of completed masonry projects that showcase our expertise and attention to detail."
tag="Portfolio"
title="Signature Portfolio"
description="Discover our curated collection of premium masonry projects that showcase refined craftsmanship and architectural vision."
tag="Luxury Collection"
tagIcon={Image}
tagAnimation="slide-up"
textboxLayout="default"
@@ -117,15 +117,15 @@ export default function LandingPage() {
gridVariant="three-columns-all-equal-width"
products={[
{
id: "1", brand: "Residential", name: "Brick Patio & Walkway", price: "Custom Design", rating: 5,
id: "1", brand: "Residential", name: "Brick Patio & Walkway", price: "Bespoke Design", rating: 5,
reviewCount: "Completed", imageSrc: "http://img.b2bpic.net/free-photo/swimming-ocean-vacation-summer-chair_1203-4051.jpg", imageAlt: "Brick patio installation"
},
{
id: "2", brand: "Residential", name: "Chimney Repair & Restoration", price: "Expert Work", rating: 5,
id: "2", brand: "Residential", name: "Chimney Restoration", price: "Premium Restoration", rating: 5,
reviewCount: "Completed", imageSrc: "http://img.b2bpic.net/free-vector/house-interior-with-furniture-scenery_18591-52185.jpg", imageAlt: "Chimney restoration"
},
{
id: "3", brand: "Landscape", name: "Retaining Wall Installation", price: "Durable Build", rating: 5,
id: "3", brand: "Landscape", name: "Retaining Wall", price: "Luxury Build", rating: 5,
reviewCount: "Completed", imageSrc: "http://img.b2bpic.net/free-photo/wall-concrete-blocks_53876-64726.jpg", imageAlt: "Retaining wall project"
}
]}
@@ -134,25 +134,25 @@ export default function LandingPage() {
<div id="testimonials" data-section="testimonials">
<TestimonialCardFive
title="What Our Customers Say"
description="Read testimonials from satisfied homeowners who trusted us with their masonry projects."
tag="Testimonials"
title="Testimonials from Distinguished Clients"
description="Hear from discerning homeowners and property managers who entrusted Aaron's Masonry with their most valued spaces."
tag="Client Testimonials"
tagIcon={Star}
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
testimonials={[
{
id: "1", name: "Sarah Mitchell, Homeowner", date: "Date: 15 November 2024", title: "Exceptional Work and Professional Service", quote: "Aaron transformed our backyard with a beautiful brick patio. His attention to detail and professionalism were outstanding. We couldn't be happier with the results and would highly recommend him to anyone.", tag: "Patio Installation", avatarSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-girl-earphones-listening-music-smiling-walking-city-centre_1258-190814.jpg", avatarAlt: "Sarah Mitchell"
id: "1", name: "Sarah Mitchell, Homeowner", date: "Date: 15 November 2024", title: "Exceptional Artistry and Professionalism", quote: "Aaron transformed our outdoor sanctuary into a masterpiece. His meticulous attention to detail and refined professionalism were exemplary. The brick patio exceeds our highest expectations and we enthusiastically recommend him to discerning homeowners.", tag: "Patio Installation", avatarSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-girl-earphones-listening-music-smiling-walking-city-centre_1258-190814.jpg", avatarAlt: "Sarah Mitchell"
},
{
id: "2", name: "James Rodriguez, Property Manager", date: "Date: 22 October 2024", title: "Reliable and Expert Masonry Skills", quote: "We hired Aaron for chimney repair on our rental property. His crew was efficient, respectful, and completed the work to perfection. We've worked with several contractors, and Aaron stands out for his expertise.", tag: "Chimney Repair", avatarSrc: "http://img.b2bpic.net/free-photo/pensive-person-alone-corridor-serious_1262-1042.jpg", avatarAlt: "James Rodriguez"
id: "2", name: "James Rodriguez, Property Manager", date: "Date: 22 October 2024", title: "Sophisticated Expertise and Professionalism", quote: "We engaged Aaron for premium chimney restoration on our portfolio properties. His team demonstrated exceptional efficiency, respect for our space, and flawless execution. Among numerous contractors we've worked with, Aaron distinguishes himself through superior expertise and refined service.", tag: "Chimney Repair", avatarSrc: "http://img.b2bpic.net/free-photo/pensive-person-alone-corridor-serious_1262-1042.jpg", avatarAlt: "James Rodriguez"
},
{
id: "3", name: "Jennifer Thompson, Residential Client", date: "Date: 08 September 2024", title: "Outstanding Craftsmanship and Value", quote: "From the initial consultation to project completion, Aaron provided transparent communication and superior craftsmanship. Our stone walkway looks stunning and has already withstood harsh weather beautifully.", tag: "Walkway Project", avatarSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-working-office-travel-agency_23-2150433344.jpg", avatarAlt: "Jennifer Thompson"
id: "3", name: "Jennifer Thompson, Residential Client", date: "Date: 08 September 2024", title: "Unparalleled Craftsmanship and Value", quote: "From initial consultation through completion, Aaron provided transparent communication and superior craftsmanship. Our stone walkway is a testament to his artistry and has elegantly withstood challenging weather conditions with distinction.", tag: "Walkway Project", avatarSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-working-office-travel-agency_23-2150433344.jpg", avatarAlt: "Jennifer Thompson"
},
{
id: "4", name: "Michael Chen, Commercial Client", date: "Date: 31 August 2024", title: "Professional Results Every Time", quote: "We've used Aaron's services multiple times for our commercial properties. His team is punctual, professional, and always delivers excellent results. They're our go-to masonry contractor.", tag: "Commercial Work", avatarSrc: "http://img.b2bpic.net/free-photo/cheerful-attractive-dark-haired-latin-man-posing-kitchen_74855-7991.jpg", avatarAlt: "Michael Chen"
id: "4", name: "Michael Chen, Commercial Client", date: "Date: 31 August 2024", title: "Consistent Premium Performance", quote: "We've engaged Aaron's services for multiple commercial properties with consistently exceptional results. His team exemplifies punctuality, professionalism, and refined execution. They are our premier masonry partner for all commercial engagements.", tag: "Commercial Work", avatarSrc: "http://img.b2bpic.net/free-photo/cheerful-attractive-dark-haired-latin-man-posing-kitchen_74855-7991.jpg", avatarAlt: "Michael Chen"
}
]}
/>
@@ -160,9 +160,9 @@ export default function LandingPage() {
<div id="social-proof" data-section="social-proof">
<SocialProofOne
title="Trusted by Homeowners Across the Region"
description="Join hundreds of satisfied customers who have transformed their properties with Aaron's Masonry expertise."
tag="Reputation"
title="Trusted by Discerning Homeowners Throughout the Region"
description="Join a select community of satisfied clients who have elevated their properties with Aaron's Masonry premium expertise and refined craftsmanship."
tag="Distinguished Reputation"
tagIcon={CheckCircle}
tagAnimation="slide-up"
textboxLayout="default"
@@ -177,11 +177,11 @@ export default function LandingPage() {
<div id="contact" data-section="contact">
<ContactSplit
tag="Get Started"
tag="Premium Consultation"
tagIcon={Mail}
tagAnimation="slide-up"
title="Ready to Enhance Your Property?"
description="Contact us today for a free consultation and quote. We're ready to bring your masonry vision to life."
title="Elevate Your Property Today"
description="Connect with us for a complimentary consultation and bespoke masonry quote. We're prepared to bring your refined vision to life."
background={{ variant: "sparkles-gradient" }}
useInvertedBackground={false}
imageSrc="http://img.b2bpic.net/free-photo/people-working-their-office_23-2149196412.jpg"
@@ -189,8 +189,8 @@ export default function LandingPage() {
mediaAnimation="slide-up"
mediaPosition="right"
inputPlaceholder="Enter your email"
buttonText="Send Quote Request"
termsText="We respect your privacy. We'll only use your information to send your free masonry quote."
buttonText="Request Premium Quote"
termsText="We respect your privacy. Your information will be used exclusively to provide your complimentary masonry consultation and quote."
/>
</div>
@@ -203,4 +203,4 @@ export default function LandingPage() {
</div>
</ThemeProvider>
);
}
}

View File

@@ -11,7 +11,7 @@ html {
body {
background-color: var(--background);
color: var(--foreground);
font-family: var(--font-nunito-sans), sans-serif;
font-family: var(--font-montserrat);
position: relative;
min-height: 100vh;
overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4,
h5,
h6 {
font-family: var(--font-nunito-sans), sans-serif;
font-family: var(--font-playfair-display);
}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #ffffff;
--card: #f9f9f9;
--foreground: #000f06e6;
--primary-cta: #0a7039;
--background: #1a1a1a;
--card: #2a2a2a;
--foreground: #e8e8e8;
--primary-cta: #d4af37;
--primary-cta-text: #ffffff;
--secondary-cta: #f9f9f9;
--secondary-cta: #3a3a3a;
--secondary-cta-text: #000f06e6;
--accent: #e2e2e2;
--background-accent: #c4c4c4;
--accent: #d4af37;
--background-accent: #8b7355;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);

View File

@@ -6,6 +6,7 @@ interface SvgTextLogoProps {
fontSize?: number;
fontWeight?: number | string;
letterSpacing?: number;
fill?: string;
}
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
@@ -14,27 +15,28 @@ const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
fontSize = 48,
fontWeight = 700,
letterSpacing = 0,
fill = 'currentColor',
}) => {
const svgWidth = text.length * (fontSize * 0.6) + 40;
const svgHeight = fontSize + 20;
const textLength = text.length;
const charWidth = fontSize * 0.6;
const width = charWidth * textLength + letterSpacing * (textLength - 1);
const height = fontSize * 1.2;
return (
<svg
width={svgWidth}
height={svgHeight}
viewBox={`0 0 ${svgWidth} ${svgHeight}`}
viewBox={`0 0 ${width} ${height}`}
className={className}
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMidYMid meet"
>
<text
x="20"
y={fontSize + 5}
x="0"
y={fontSize}
fontSize={fontSize}
fontWeight={fontWeight}
fill={fill}
letterSpacing={letterSpacing}
fill="currentColor"
dominantBaseline="alphabetic"
textAnchor="start"
dominantBaseline="middle"
>
{text}
</text>