15 Commits

Author SHA1 Message Date
61ff4bcdb3 Update src/app/page.tsx 2026-04-21 06:36:17 +00:00
fb52ee3aa0 Update src/app/page.tsx 2026-04-21 06:35:38 +00:00
3669221751 Update src/app/page.tsx 2026-04-21 06:35:04 +00:00
c81e9b8754 Update src/app/page.tsx 2026-04-21 06:34:34 +00:00
546c44496c Update src/app/styles/variables.css 2026-04-21 06:34:05 +00:00
466d28de20 Update src/app/page.tsx 2026-04-21 06:34:04 +00:00
13bd064585 Update src/app/page.tsx 2026-04-21 06:29:19 +00:00
31f16f952c Update src/app/page.tsx 2026-04-21 06:28:51 +00:00
4c171b2814 Update src/app/styles/base.css 2026-04-21 06:26:20 +00:00
f66c76d6dd Update src/app/page.tsx 2026-04-21 06:26:19 +00:00
7e4fc10a4a Update src/app/layout.tsx 2026-04-21 06:26:19 +00:00
0ebfb80967 Merge version_1 into main
Merge version_1 into main
2026-04-20 21:16:03 +00:00
b846966cd7 Merge version_1 into main
Merge version_1 into main
2026-04-20 21:15:34 +00:00
1e634f7bd3 Merge version_1 into main
Merge version_1 into main
2026-04-20 21:15:01 +00:00
b4ee76c555 Merge version_1 into main
Merge version_1 into main
2026-04-20 21:14:26 +00:00
4 changed files with 152 additions and 204 deletions

View File

@@ -7,6 +7,7 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
import { getVisualEditScript } from "@/utils/visual-edit-script"; import { getVisualEditScript } from "@/utils/visual-edit-script";
import { Source_Sans_3 } from "next/font/google"; import { Source_Sans_3 } from "next/font/google";
import { Playfair_Display, Inter } from "next/font/google";
@@ -23,10 +24,9 @@ export const metadata: Metadata = {
}, },
}; };
const sourceSans3 = Source_Sans_3({
variable: "--font-source-sans-3", const playfair = Playfair_Display({ variable: "--font-playfair", subsets: ["latin"] });
subsets: ["latin"], const inter = Inter({ variable: "--font-inter", subsets: ["latin"] });
});
export default function RootLayout({ export default function RootLayout({
children, children,
@@ -36,7 +36,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${sourceSans3.variable} antialiased`}> <body className={`${playfair.variable} ${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -17,212 +17,160 @@ export default function LandingPage() {
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="text-shift" defaultButtonVariant="text-shift"
defaultTextAnimation="background-highlight" defaultTextAnimation="reveal-blur"
borderRadius="pill" borderRadius="soft"
contentWidth="small" contentWidth="medium"
sizing="largeSmall" sizing="largeSizeMediumTitles"
background="aurora" background="noiseDiagonalGradient"
cardStyle="inset" cardStyle="outline"
primaryButtonStyle="primary-glow" primaryButtonStyle="shadow"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="glass"
headingFontWeight="light" headingFontWeight="semibold"
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
<NavbarStyleCentered <NavbarStyleCentered
navItems={[ navItems={[
{ name: "Home", id: "#hero" }, { name: "Home", id: "hero" },
{ name: "Services", id: "#services" }, { name: "Services", id: "services" },
{ name: "Reviews", id: "#testimonials" }, { name: "Reviews", id: "testimonials" },
{ name: "Contact", id: "#contact" }, { name: "Contact", id: "contact" },
]} ]}
brandName="Astra Roofing" brandName="Astra Roofing"
/> />
</div> </div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroSplitTestimonial <HeroSplitTestimonial
useInvertedBackground={false} title="Roofing Done Right — First Time, Every Time"
background={{ variant: "gradient-bars" }} description="Trusted local roofing specialists delivering premium workmanship across Walsall and surrounding areas. 5.0 Rated Local Roofing Service. 24/7 Availability."
title="Roofing Done Right — First Time, Every Time" testimonials={[
description="Trusted local roofing specialists delivering premium workmanship across Walsall and surrounding areas. 5.0 Rated Local Roofing Service. 24/7 Availability." { name: "Adrian S.", handle: "Local Client", testimonial: "Friendly, professional and competitively priced. The standard of workmanship is first class.", rating: 5 },
testimonials={[ { name: "Verified Customer", handle: "Local Client", testimonial: "Michael quickly identified the issue and fixed our roof leak properly. Honest, knowledgeable and affordable.", rating: 5 },
{ name: "Adrian S.", handle: "Local Client", testimonial: "Friendly, professional and competitively priced. The standard of workmanship is first class.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-working-roof_23-2149343653.jpg?_wi=1", imageAlt: "luxury roof craftsmanship closeup" }, { name: "Local Client", handle: "Local Client", testimonial: "Expertise second to none. Explained everything clearly and delivered exactly what was promised.", rating: 5 }
{ name: "Verified Customer", handle: "Local Client", testimonial: "Michael quickly identified the issue and fixed our roof leak properly. Honest, knowledgeable and affordable.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/man-walking-roof_1321-1040.jpg?_wi=1", imageAlt: "luxury roof craftsmanship closeup" }, ]}
{ name: "Local Client", handle: "Local Client", testimonial: "Expertise second to none. Explained everything clearly and delivered exactly what was promised.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/beautiful-wooden-house-with-dark-roof_23-2149343705.jpg?_wi=1", imageAlt: "luxury roof craftsmanship closeup" }, buttons={[
{ name: "Sarah J.", handle: "Homeowner", testimonial: "Exceptional service from start to finish. Highly recommended.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/young-asian-technician-man-standing-talking-smartphone-long-rows-photovoltaic-solar-panels-copy-space_1150-57278.jpg", imageAlt: "luxury roof craftsmanship closeup" }, { text: "Get a Free Quote", href: "#contact" },
{ name: "Mark D.", handle: "Walsall Resident", testimonial: "Professional, punctual, and high quality work. Will use again.", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/smiley-couple-seeing-new-house-with-realtor_23-2148895440.jpg?_wi=1", imageAlt: "luxury roof craftsmanship closeup" }, { text: "Call Now: 01922 645993", href: "tel:01922645993" },
]} ]}
buttons={[ imageSrc="http://img.b2bpic.net/free-photo/medium-shot-man-working-roof_23-2149343653.jpg?_wi=2"
{ text: "Get a Free Quote", href: "#contact" }, imageAlt="Astra Roofing luxury craftsmanship"
{ text: "Call Now: 01922 645993", href: "tel:01922645993" }, mediaAnimation="slide-up"
]} background={{ variant: "gradient-bars" }}
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-man-working-roof_23-2149343653.jpg?_wi=2" />
imageAlt="Astra Roofing luxury craftsmanship" </div>
mediaAnimation="slide-up"
avatars={[
{ src: "http://img.b2bpic.net/free-photo/man-working-roof-medium-shot_23-2149343644.jpg", alt: "Man working on roof medium shot" },
{ src: "http://img.b2bpic.net/free-photo/full-shot-worker-with-helmet-working-roof_23-2149343663.jpg", alt: "Full shot worker with helmet working on roof" },
{ src: "http://img.b2bpic.net/free-photo/beautiful-wooden-house-with-big-windows_23-2149343704.jpg", alt: "Beautiful wooden house with big windows" },
{ src: "http://img.b2bpic.net/free-photo/beautiful-wooden-modern-house_23-2149343652.jpg", alt: "Beautiful wooden modern house" },
{ src: "http://img.b2bpic.net/free-photo/high-angle-beautiful-roof-wooden-house_23-2149343706.jpg", alt: "High angle beautiful roof on wooden house" },
]}
marqueeItems={[
{ type: "text", text: "Walsall's Trusted Roofers" },
{ type: "text", text: "5-Star Rated Service" },
{ type: "text", text: "24/7 Emergency Repairs" },
{ type: "text", text: "Insurance Approved" },
{ type: "text", text: "Free Quote Available" },
]}
/>
</div>
<div id="services" data-section="services"> <div id="services" data-section="services">
<FeatureCardTen <FeatureCardTen
animationType="slide-up" animationType="slide-up"
textboxLayout="split" textboxLayout="split"
useInvertedBackground={false} useInvertedBackground={false}
features={[ features={[
{ {
title: "Roof Repairs", description: "Leaks, damaged tiles, storm damage — fixed properly, not patched temporarily.", media: { title: "Roof Repairs", description: "Leaks, damaged tiles, storm damage — fixed properly, not patched temporarily.", media: { imageSrc: "http://img.b2bpic.net/free-photo/man-walking-roof_1321-1040.jpg?_wi=2", imageAlt: "Roof repairs" },
imageSrc: "http://img.b2bpic.net/free-photo/man-walking-roof_1321-1040.jpg?_wi=2", imageAlt: "Roof repairs" items: [{ icon: Shield, text: "Permanent solutions" }, { icon: Zap, text: "Fast response" }],
}, reverse: false,
items: [ },
{ icon: CheckCircle, text: "Leaks fixed" }, {
{ icon: Shield, text: "Storm damage" }, title: "New Roof Installations", description: "Built to last using high-quality materials and expert workmanship.", media: { imageSrc: "http://img.b2bpic.net/free-photo/beautiful-wooden-house-with-dark-roof_23-2149343705.jpg?_wi=2", imageAlt: "New roof installation" },
{ icon: CheckCircle, text: "Permanent solutions" }, items: [{ icon: Home, text: "New builds" }, { icon: Award, text: "Quality materials" }],
], reverse: true,
reverse: false, },
}, {
{ title: "Flat Roofing", description: "Durable, weather-resistant flat roofing systems installed with precision.", media: { imageSrc: "http://img.b2bpic.net/free-photo/smiley-couple-seeing-new-house-with-realtor_23-2148895440.jpg?_wi=2", imageAlt: "Flat roofing" },
title: "New Roof Installations", description: "Built to last using high-quality materials and expert workmanship for new property developments.", media: { items: [{ icon: Layers, text: "Weather resistant" }, { icon: CheckCircle, text: "Precision install" }],
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-wooden-house-with-dark-roof_23-2149343705.jpg?_wi=2", imageAlt: "New roof installation" reverse: false,
}, }
items: [ ]}
{ icon: Home, text: "New builds" }, title="Complete Roofing Solutions"
{ icon: Award, text: "Quality materials" }, description="Premium roofing services tailored to your property needs with precision and durability."
{ icon: Zap, text: "Expert fitting" }, />
], </div>
reverse: true,
},
{
title: "Flat Roofing", description: "Durable, weather-resistant flat roofing systems installed with precision by our team.", media: {
imageSrc: "http://img.b2bpic.net/free-photo/smiley-couple-seeing-new-house-with-realtor_23-2148895440.jpg?_wi=2", imageAlt: "Flat roofing system"
},
items: [
{ icon: Layers, text: "Weather resistant" },
{ icon: Shield, text: "Durable systems" },
{ icon: CheckCircle, text: "Precision install" },
],
reverse: false,
},
]}
title="Complete Roofing Solutions"
description="Premium roofing services tailored to your property needs with precision and durability."
/>
</div>
<div id="why-astra" data-section="why-astra"> <div id="why-astra" data-section="why-astra">
<SplitAbout <SplitAbout
textboxLayout="split" title="The Astra Standard"
useInvertedBackground={false} description="We don't just fix roofs; we build lasting relationships through superior local service."
title="The Astra Standard" bulletPoints={[
description="We don't just fix roofs; we build lasting relationships through superior local service." { title: "5-Star Rated Local Business", description: "Trusted by hundreds of homeowners in Walsall.", icon: Award },
bulletPoints={[ { title: "Transparent Pricing", description: "No hidden costs, no surprises — just honest quotes.", icon: CheckCircle },
{ title: "5-Star Rated Local Business", description: "Trusted by hundreds of homeowners in Walsall." }, { title: "Expert Craftsmanship", description: "Built to last — Not just quick fixes.", icon: Shield },
{ title: "Transparent Pricing", description: "No hidden costs, no surprises — just honest quotes." }, ]}
{ title: "Highly Skilled Craftsmanship", description: "Our team are master roofers with years of experience." }, imageSrc="http://img.b2bpic.net/free-photo/modern-country-houses-construction_1385-17.jpg"
]} imageAlt="Craftsmanship at work"
imageSrc="http://img.b2bpic.net/free-photo/modern-country-houses-construction_1385-17.jpg" mediaAnimation="blur-reveal"
imageAlt="Craftsmanship at work" textboxLayout="split"
mediaAnimation="blur-reveal" useInvertedBackground={false}
/> />
</div> </div>
<div id="testimonials" data-section="testimonials"> <div id="testimonials" data-section="testimonials">
<TestimonialCardFive <TestimonialCardFive
textboxLayout="default" textboxLayout="default"
useInvertedBackground={true} useInvertedBackground={true}
testimonials={[ testimonials={[
{ id: "1", name: "Adrian S.", date: "Oct 2023", title: "First Class Work", quote: "Friendly, professional and competitively priced. The standard of workmanship is first class.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/smiley-couple-seeing-new-house-with-realtor_23-2148895440.jpg" }, { id: "1", name: "Adrian S.", date: "Oct 2023", title: "First Class Work", quote: "Friendly, professional and competitively priced. The standard of workmanship is first class.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/smiley-couple-seeing-new-house-with-realtor_23-2148895440.jpg" },
{ id: "2", name: "Verified Customer", date: "Sept 2023", title: "Honest & Affordable", quote: "Michael quickly identified the issue and fixed our roof leak properly. Honest, knowledgeable and affordable.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/beautiful-women-works-garden_1157-24617.jpg" }, { id: "2", name: "Verified Customer", date: "Sept 2023", title: "Honest & Affordable", quote: "Michael quickly identified the issue and fixed our roof leak properly. Honest, knowledgeable and affordable.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/beautiful-women-works-garden_1157-24617.jpg" }
{ id: "3", name: "Local Client", date: "Aug 2023", title: "Expertise Second to None", quote: "Expertise second to none. Explained everything clearly and delivered exactly what was promised.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/man-sitting-near-house-looking-camera_259150-59313.jpg" }, ]}
{ id: "4", name: "Sarah J.", date: "July 2023", title: "Great Experience", quote: "Exceptional service from start to finish. Highly recommended to anyone in Walsall.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/financial-independent-woman-buying-new-house_23-2149571925.jpg" }, title="Trusted by Local Homeowners"
{ id: "5", name: "Mark D.", date: "June 2023", title: "Reliable", quote: "Professional, punctual, and high quality work. Will use again.", tag: "Verified", avatarSrc: "http://img.b2bpic.net/free-photo/portrait-braless-woman-outdoors-cafe_23-2150501203.jpg" }, description="Our customers choose Astra Roofing because we combine honest advice, fair pricing, and exceptional craftsmanship."
]} />
title="Trusted by Local Homeowners" </div>
description="Our customers choose Astra Roofing because we combine honest advice, fair pricing, and exceptional craftsmanship."
/>
</div>
<div id="process" data-section="process"> <div id="process" data-section="process">
<MetricCardFourteen <MetricCardFourteen
useInvertedBackground={false} useInvertedBackground={false}
title="A Simple, Professional Process" title="A Simple, Professional Process"
tag="How we work" tag="Our Process"
metrics={[ metrics={[
{ id: "m1", value: "1", description: "Get in Touch - Request a free, no-obligation quote online or over the phone." }, { id: "m1", value: "1", description: "Get in Touch - Call or request a quote online" },
{ id: "m2", value: "2", description: "Roof Inspection - We perform a full assessment to find the root cause of your roofing issues." }, { id: "m2", value: "2", description: "Roof Inspection - We assess the issue properly" },
{ id: "m3", value: "3", description: "Clear Quote - We provide a detailed, fixed price quote with no surprises." }, { id: "m3", value: "3", description: "Clear Quote - No hidden costs, no surprises" },
{ id: "m4", value: "4", description: "Expert Workmanship - Completed to the highest industry standards by our expert team." }, { id: "m4", value: "4", description: "Expert Workmanship - Completed to the highest standard" },
]} ]}
metricsAnimation="slide-up" metricsAnimation="slide-up"
/> />
</div> </div>
<div id="local-focus" data-section="local-focus"> <div id="local-focus" data-section="local-focus">
<FaqDouble <FaqDouble
textboxLayout="split" textboxLayout="split"
useInvertedBackground={true} useInvertedBackground={true}
faqs={[ faqs={[
{ id: "l1", title: "Where are you based?", content: "We are located at 312 Sutton Rd, Walsall WS5 3BD and serve all surrounding areas." }, { id: "l1", title: "Where are you based?", content: "312 Sutton Rd, Walsall WS5 3BD" },
{ id: "l2", title: "Are you available weekends?", content: "We operate 24 hours a day, 7 days a week to handle emergency roofing issues." }, { id: "l2", title: "Availability", content: "We are open 24 hours a day for emergency support." },
{ id: "l3", title: "Do you provide free quotes?", content: "Yes, all our quotes are free and carry no-obligation to proceed." }, ]}
]} title="Proudly Serving Walsall"
title="Proudly Serving Walsall" description="Based on Sutton Road, Astra Roofing Limited is your local roofing expert."
description="Based on Sutton Road, Astra Roofing Limited is your local roofing expert." faqsAnimation="slide-up"
faqsAnimation="slide-up" />
/> </div>
</div>
<div id="contact" data-section="contact"> <div id="contact" data-section="contact">
<ContactCTA <ContactCTA
useInvertedBackground={false} useInvertedBackground={false}
background={{ variant: "plain" }} background={{ variant: "plain" }}
tag="Contact Us" tag="Contact Us"
title="Got a Leak or Roofing Issue?" title="Got a Leak or Roofing Issue?"
description="Don't wait until it gets worse. Small problems turn into expensive repairs fast. Call us today for professional roofing advice." description="Don't wait until it gets worse. Small problems turn into expensive repairs fast."
buttons={[ buttons={[
{ text: "Get a Free Quote", href: "#" }, { text: "Get a Free Quote", href: "#" },
{ text: "Call Now: 01922 645993", href: "tel:01922645993" }, { text: "Call Now: 01922 645993", href: "tel:01922645993" },
]} ]}
/> />
</div> </div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterBaseReveal <FooterBaseReveal
logoText="Astra Roofing Limited" logoText="Astra Roofing Limited"
columns={[ columns={[
{ { title: "Quick Links", items: [{ label: "Home", href: "#hero" }, { label: "Services", href: "#services" }, { label: "Reviews", href: "#testimonials" }, { label: "Contact", href: "#contact" }] },
title: "Company", items: [ { title: "Contact", items: [{ label: "01922 645993", href: "tel:01922645993" }, { label: "Walsall", href: "#" }, { label: "Open 24/7", href: "#" }] },
{ label: "Home", href: "#hero" }, ]}
{ label: "Services", href: "#services" }, copyrightText="© 2025 Astra Roofing Limited"
{ label: "Reviews", href: "#testimonials" }, />
{ label: "Contact", href: "#contact" }, </div>
],
},
{
title: "Contact", items: [
{ label: "01922 645993", href: "tel:01922645993" },
{ label: "Walsall Office", href: "#" },
{ label: "Open 24 Hours", href: "#" },
],
},
]}
copyrightText="© 2024 Astra Roofing Limited."
/>
</div>
</ReactLenis> </ReactLenis>
</ThemeProvider> </ThemeProvider>
); );
} }

View File

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

View File

@@ -10,7 +10,7 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #ffffff; --background: #FFFFFF;
--card: #f9f9f9; --card: #f9f9f9;
--foreground: #111111; --foreground: #111111;
--primary-cta: #C8A96A; --primary-cta: #C8A96A;