Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ece391f6aa | |||
| ba1268ec51 | |||
| c74859b2d4 | |||
| a1a1de2964 | |||
| 45a83b7e83 | |||
| efb658dbe3 | |||
| 7b16d01144 | |||
| 1cb5e523b4 |
@@ -1,59 +1,23 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { Manrope } from "next/font/google";
|
|
||||||
import { Halant } from "next/font/google";
|
|
||||||
import { Inter } from "next/font/google";
|
import { Inter } from "next/font/google";
|
||||||
|
import "./styles/variables.css";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
|
||||||
import Tag from "@/tag/Tag";
|
|
||||||
|
|
||||||
const manrope = Manrope({
|
const inter = Inter({ subsets: ["latin"] });
|
||||||
variable: "--font-manrope", subsets: ["latin"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const halant = Halant({
|
|
||||||
variable: "--font-halant", subsets: ["latin"],
|
|
||||||
weight: ["300", "400", "500", "600", "700"],
|
|
||||||
});
|
|
||||||
|
|
||||||
const inter = Inter({
|
|
||||||
variable: "--font-inter", subsets: ["latin"],
|
|
||||||
});
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Mojito Roof | Professional Roof Cleaning Services", description: "Expert roof cleaning services for residential and commercial properties. Moss removal, gutter cleaning, and protective coatings. Trusted by thousands of homeowners across South Africa.", keywords: "roof cleaning, pressure washing, moss removal, gutter cleaning, roof maintenance, South Africa", metadataBase: new URL("https://mojitoroof.co.za"),
|
title: "Mojito Roof - Professional Roof Cleaning Services", description: "Expert roof cleaning services in South Africa. Fast, reliable, and trusted by thousands of homeowners."};
|
||||||
alternates: {
|
|
||||||
canonical: "https://mojitoroof.co.za"
|
|
||||||
},
|
|
||||||
robots: {
|
|
||||||
index: true,
|
|
||||||
follow: true
|
|
||||||
},
|
|
||||||
openGraph: {
|
|
||||||
title: "Mojito Roof | Professional Roof Cleaning Services", description: "Transform your roof with professional cleaning services. Free inspection, expert team, proven results.", url: "https://mojitoroof.co.za", siteName: "Mojito Roof", type: "website", images: [
|
|
||||||
{
|
|
||||||
url: "http://img.b2bpic.net/free-photo/roof-old-residential-building-village-museum-bucharest-romania_1268-21641.jpg", alt: "Professional Roof Cleaning by Mojito Roof"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: "summary_large_image", title: "Mojito Roof | Professional Roof Cleaning", description: "Expert roof cleaning and maintenance services. Get your free inspection today!", images: ["http://img.b2bpic.net/free-photo/roof-old-residential-building-village-museum-bucharest-romania_1268-21641.jpg"]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
children,
|
children,
|
||||||
}: Readonly<{
|
}: {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
}>) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en">
|
||||||
<ServiceWrapper>
|
<body className={inter.className}>
|
||||||
<body
|
{children}
|
||||||
className={`${manrope.variable} ${halant.variable} ${inter.variable} antialiased`}
|
|
||||||
>
|
|
||||||
<Tag />
|
|
||||||
{children}
|
|
||||||
|
|
||||||
<script
|
<script
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
@@ -1421,7 +1385,6 @@ export default function RootLayout({
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</body>
|
</body>
|
||||||
</ServiceWrapper>
|
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,15 +2,14 @@
|
|||||||
|
|
||||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||||
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
|
||||||
import HeroBillboardTestimonial from '@/components/sections/hero/HeroBillboardTestimonial';
|
import HeroCarouselLogo from '@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo';
|
||||||
import FeatureCardTwentyFive from '@/components/sections/feature/FeatureCardTwentyFive';
|
import FeatureCardTwentyFive from '@/components/sections/feature/FeatureCardTwentyFive';
|
||||||
import InlineImageSplitTextAbout from '@/components/sections/about/InlineImageSplitTextAbout';
|
|
||||||
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
||||||
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
|
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
|
||||||
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
|
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
|
||||||
import FaqBase from '@/components/sections/faq/FaqBase';
|
import FaqBase from '@/components/sections/faq/FaqBase';
|
||||||
import ContactText from '@/components/sections/contact/ContactText';
|
import ContactText from '@/components/sections/contact/ContactText';
|
||||||
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
|
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
|
||||||
import { Droplet, Leaf, Zap, Shield, Sparkles } from 'lucide-react';
|
import { Droplet, Leaf, Zap, Shield, Sparkles } from 'lucide-react';
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
@@ -43,25 +42,24 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="hero" data-section="hero">
|
<div id="hero" data-section="hero">
|
||||||
<HeroBillboardTestimonial
|
<HeroCarouselLogo
|
||||||
title="Professional Roof Cleaning Services"
|
logoText="Professional Roof Cleaning Services"
|
||||||
description="Restore your roof's beauty and extend its lifespan with Mojito Roof's expert cleaning services. Fast, reliable, and trusted by thousands of homeowners."
|
description="Restore your roof's beauty and extend its lifespan with Mojito Roof's expert cleaning services. Fast, reliable, and trusted by thousands of homeowners."
|
||||||
tag="Expert Service"
|
slides={[
|
||||||
tagIcon={Shield}
|
|
||||||
imageSrc="http://img.b2bpic.net/free-photo/roof-old-residential-building-village-museum-bucharest-romania_1268-21641.jpg?_wi=1"
|
|
||||||
imageAlt="Professional roof cleaning in action"
|
|
||||||
mediaAnimation="slide-up"
|
|
||||||
testimonials={[
|
|
||||||
{
|
{
|
||||||
name: "James Mitchell", handle: "Homeowner, Johannesburg", testimonial: "Transformed my roof in just one day. Professional team, excellent results!", rating: 5,
|
imageSrc: "http://img.b2bpic.net/free-photo/roof-old-residential-building-village-museum-bucharest-romania_1268-21641.jpg?_wi=1", imageAlt: "Professional roof cleaning service"
|
||||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-businessman-suit-looking-camera-meeting_1163-4654.jpg?_wi=1"
|
},
|
||||||
|
{
|
||||||
|
imageSrc: "http://img.b2bpic.net/free-photo/back-view-male-musician-roof-top-holding-electric-guitar_23-2148680355.jpg?_wi=1", imageAlt: "Trusted roof cleaning team"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageSrc: "http://img.b2bpic.net/free-photo/auto-mechanic-inflating-tire-with-air-compressor-street_651396-3561.jpg?_wi=1", imageAlt: "Expert roof cleaning equipment"
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
buttons={[
|
buttons={[
|
||||||
{ text: "Get Free Inspection", href: "#contact" },
|
{ text: "Get Free Inspection", href: "#contact" },
|
||||||
{ text: "Learn More", href: "#services" }
|
{ text: "Learn More", href: "#services" }
|
||||||
]}
|
]}
|
||||||
background={{ variant: "glowing-orb" }}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -127,16 +125,28 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="about" data-section="about">
|
<div id="about" data-section="about">
|
||||||
<InlineImageSplitTextAbout
|
<div className="py-20">
|
||||||
heading={[
|
<div className="max-w-6xl mx-auto px-4">
|
||||||
{ type: "text", content: "Why Choose" },
|
<h2 className="text-4xl md:text-5xl font-light mb-8">Why Choose Mojito Roof?</h2>
|
||||||
{ type: "text", content: "Mojito Roof?" }
|
<div className="space-y-6">
|
||||||
]}
|
<div className="border-b pb-6">
|
||||||
useInvertedBackground={false}
|
<h3 className="text-2xl font-medium mb-2">Quality</h3>
|
||||||
buttons={[
|
<p className="text-base opacity-90">We deliver exceptional results with professional-grade equipment and expert technicians trained in all roof types.</p>
|
||||||
{ text: "Get Started Today", href: "#contact" }
|
</div>
|
||||||
]}
|
<div className="border-b pb-6">
|
||||||
/>
|
<h3 className="text-2xl font-medium mb-2">Experience</h3>
|
||||||
|
<p className="text-base opacity-90">With 15+ years in the industry, we've successfully cleaned over 5,000 roofs across South Africa.</p>
|
||||||
|
</div>
|
||||||
|
<div className="pb-6">
|
||||||
|
<h3 className="text-2xl font-medium mb-2">Reliability</h3>
|
||||||
|
<p className="text-base opacity-90">Fully insured, licensed, and bonded. We maintain the highest standards of professionalism and punctuality.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button className="mt-8 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition">
|
||||||
|
Get Started Today
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="metrics" data-section="metrics">
|
<div id="metrics" data-section="metrics">
|
||||||
@@ -247,10 +257,11 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="footer" data-section="footer">
|
<div id="footer" data-section="footer">
|
||||||
<FooterBaseReveal
|
<FooterLogoEmphasis
|
||||||
|
logoText="Mojito Roof"
|
||||||
columns={[
|
columns={[
|
||||||
{
|
{
|
||||||
title: "Services", items: [
|
items: [
|
||||||
{ label: "Roof Washing", href: "#services" },
|
{ label: "Roof Washing", href: "#services" },
|
||||||
{ label: "Moss Removal", href: "#services" },
|
{ label: "Moss Removal", href: "#services" },
|
||||||
{ label: "Gutter Cleaning", href: "#services" },
|
{ label: "Gutter Cleaning", href: "#services" },
|
||||||
@@ -258,7 +269,7 @@ export default function LandingPage() {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Company", items: [
|
items: [
|
||||||
{ label: "About Us", href: "#about" },
|
{ label: "About Us", href: "#about" },
|
||||||
{ label: "Our Team", href: "#" },
|
{ label: "Our Team", href: "#" },
|
||||||
{ label: "Reviews", href: "#testimonials" },
|
{ label: "Reviews", href: "#testimonials" },
|
||||||
@@ -266,7 +277,7 @@ export default function LandingPage() {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Legal", items: [
|
items: [
|
||||||
{ label: "Privacy Policy", href: "#" },
|
{ label: "Privacy Policy", href: "#" },
|
||||||
{ label: "Terms of Service", href: "#" },
|
{ label: "Terms of Service", href: "#" },
|
||||||
{ label: "Warranty", href: "#" },
|
{ label: "Warranty", href: "#" },
|
||||||
@@ -274,7 +285,6 @@ export default function LandingPage() {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
copyrightText="© 2025 Mojito Roof. All rights reserved. Professional Roof Cleaning Services."
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
|
|||||||
Reference in New Issue
Block a user