Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d719b73990 | |||
| bf08646a08 | |||
| 3747a0d4c3 | |||
| 8994b4d62a | |||
| c0354b9b68 | |||
| f569363e20 | |||
| 7008c6c631 |
@@ -1,55 +1,20 @@
|
||||
import type { Metadata } from "next";
|
||||
import { Raleway } from "next/font/google";
|
||||
import { Halant } from "next/font/google";
|
||||
import { Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
|
||||
const raleway = Raleway({
|
||||
variable: "--font-raleway", subsets: ["latin"],
|
||||
});
|
||||
|
||||
const halant = Halant({
|
||||
variable: "--font-halant", subsets: ["latin"],
|
||||
weight: ["300", "400", "500", "600", "700"],
|
||||
});
|
||||
|
||||
const inter = Inter({
|
||||
variable: "--font-inter", subsets: ["latin"],
|
||||
});
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Ozarks Roofing LLC | Professional Roofing Services", description: "Expert residential and commercial roofing services in the Ozarks. 25+ years of quality installations, repairs, and maintenance. Family-owned and fully insured.", keywords: "roofing, roof repair, roof replacement, Ozarks, Springfield MO, residential roofing, commercial roofing, contractor", openGraph: {
|
||||
title: "Ozarks Roofing LLC | Professional Roofing Services", description: "Expert residential and commercial roofing services in the Ozarks. 25+ years of quality installations, repairs, and maintenance.", type: "website", siteName: "Ozarks Roofing LLC", images: [
|
||||
{
|
||||
url: "http://img.b2bpic.net/free-photo/worker-with-level-building-roof-house_23-2148748855.jpg", alt: "Professional roofing services by Ozarks Roofing LLC"
|
||||
}
|
||||
]
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Ozarks Roofing LLC | Professional Roofing Services", description: "Expert residential and commercial roofing services in the Ozarks. 25+ years of quality installations, repairs, and maintenance.", images: ["http://img.b2bpic.net/free-photo/worker-with-level-building-roof-house_23-2148748855.jpg"]
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true
|
||||
}
|
||||
};
|
||||
title: "Ozarks Roofing LLC | Expert Roofing Solutions", description: "Professional roofing services for Ozarks homes and businesses. Expert installations, repairs, and inspections with 25+ years of trusted service."};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
}) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body
|
||||
className={`${raleway.variable} ${halant.variable} ${inter.variable} antialiased`}
|
||||
>
|
||||
<Tag />
|
||||
{children}
|
||||
|
||||
<html lang="en">
|
||||
<body className={inter.className}>{children}
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
@@ -1417,7 +1382,6 @@ export default function RootLayout({
|
||||
}}
|
||||
/>
|
||||
</body>
|
||||
</ServiceWrapper>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
111
src/app/page.tsx
111
src/app/page.tsx
@@ -11,8 +11,34 @@ import ContactSplit from '@/components/sections/contact/ContactSplit';
|
||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||
import { ThemeProvider } from '@/providers/themeProvider/ThemeProvider';
|
||||
import { Shield, Home, Award, CheckCircle, Zap, Facebook, Linkedin, Phone } from 'lucide-react';
|
||||
import { useState } from 'react';
|
||||
|
||||
export default function LandingPage() {
|
||||
const [formData, setFormData] = useState({
|
||||
phoneNumber: '',
|
||||
email: '',
|
||||
workType: '',
|
||||
});
|
||||
|
||||
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {
|
||||
const { name, value } = e.target;
|
||||
setFormData((prev) => ({
|
||||
...prev,
|
||||
[name]: value,
|
||||
}));
|
||||
};
|
||||
|
||||
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
console.log('Quote form submitted:', formData);
|
||||
// Handle form submission here
|
||||
setFormData({
|
||||
phoneNumber: '',
|
||||
email: '',
|
||||
workType: '',
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="elastic-effect"
|
||||
@@ -174,10 +200,89 @@ export default function LandingPage() {
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<div className="w-full py-20 px-6 md:px-10">
|
||||
<div className="w-full max-w-2xl mx-auto">
|
||||
<div className="mb-12 text-center">
|
||||
<h2 className="text-3xl md:text-5xl font-bold mb-4">Get Your Free Quote</h2>
|
||||
<p className="text-lg text-gray-600 mb-8">
|
||||
Fill out the form below to receive a personalized quote for your roofing needs. Our team will contact you within 24 hours.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form onSubmit={handleSubmit} className="bg-card rounded-lg p-8 shadow-lg border border-accent">
|
||||
<div className="mb-6">
|
||||
<label htmlFor="phoneNumber" className="block text-sm font-medium mb-2">
|
||||
Phone Number <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<input
|
||||
type="tel"
|
||||
id="phoneNumber"
|
||||
name="phoneNumber"
|
||||
value={formData.phoneNumber}
|
||||
onChange={handleInputChange}
|
||||
placeholder="(555) 123-4567"
|
||||
required
|
||||
className="w-full px-4 py-3 border border-accent rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-cta"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="mb-6">
|
||||
<label htmlFor="email" className="block text-sm font-medium mb-2">
|
||||
Email Address <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<input
|
||||
type="email"
|
||||
id="email"
|
||||
name="email"
|
||||
value={formData.email}
|
||||
onChange={handleInputChange}
|
||||
placeholder="your@email.com"
|
||||
required
|
||||
className="w-full px-4 py-3 border border-accent rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-cta"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="mb-8">
|
||||
<label htmlFor="workType" className="block text-sm font-medium mb-2">
|
||||
Type of Work Needed <span className="text-red-500">*</span>
|
||||
</label>
|
||||
<select
|
||||
id="workType"
|
||||
name="workType"
|
||||
value={formData.workType}
|
||||
onChange={handleInputChange}
|
||||
required
|
||||
className="w-full px-4 py-3 border border-accent rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-cta"
|
||||
>
|
||||
<option value="">Select a service...</option>
|
||||
<option value="inspection">Roof Inspection</option>
|
||||
<option value="repair">Roof Repair</option>
|
||||
<option value="replacement">Roof Replacement</option>
|
||||
<option value="installation">New Installation</option>
|
||||
<option value="maintenance">Maintenance</option>
|
||||
<option value="emergency">Emergency Repair</option>
|
||||
<option value="other">Other</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
className="w-full bg-primary-cta text-white font-semibold py-3 rounded-lg hover:opacity-90 transition-opacity"
|
||||
>
|
||||
Get Your Free Quote
|
||||
</button>
|
||||
|
||||
<p className="text-xs text-gray-500 text-center mt-4">
|
||||
Your information is secure and will only be used to provide you with a quote.
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ContactSplit
|
||||
tag="Ready to Get Started?"
|
||||
title="Schedule Your Free Roof Inspection Today"
|
||||
description="Don't wait for roof problems to become expensive emergencies. Contact Ozarks Roofing LLC for a comprehensive evaluation and personalized recommendations."
|
||||
description="Small roof issues can become costly within weeks. Schedule your free inspection now to protect your investment and catch problems early."
|
||||
tagIcon={Phone}
|
||||
background={{ variant: "sparkles-gradient" }}
|
||||
useInvertedBackground={false}
|
||||
@@ -186,8 +291,8 @@ export default function LandingPage() {
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
inputPlaceholder="Enter your email address"
|
||||
buttonText="Get Free Quote"
|
||||
termsText="We'll contact you within 24 hours to confirm your inspection appointment. Your information is secure and never shared."
|
||||
buttonText="Get Free Consultation"
|
||||
termsText="Same-day consultation offered. Your information is secure and never shared."
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user