diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 534a97b..cb63e87 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,49 +1,44 @@
import type { Metadata } from "next";
-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 halant = Halant({
- variable: "--font-halant", subsets: ["latin"],
- weight: ["300", "400", "500", "600", "700"],
-});
+import { ServiceWrapper } from "@/providers/serviceWrapper/ServiceWrapper";
+import { Tag } from "@/components/tag/Tag";
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
export const metadata: Metadata = {
- title: "MG Junk Removal | Professional Hauling Services", description: "Fast, reliable junk removal for residential, commercial, and construction debris. Damage-free guarantee. Transparent pricing. Quote in 15 minutes.", keywords: "junk removal, debris hauling, residential cleanup, commercial junk removal, construction cleanup, professional hauling", robots: {
- index: true,
- follow: true,
- },
- openGraph: {
- title: "MG Junk Removal | Professional Hauling Services", description: "Fast, reliable junk removal for residential, commercial, and construction debris. Damage-free guarantee. Transparent pricing. Quote in 15 minutes.", type: "website", siteName: "MG Junk Removal", images: [
- {
- url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AeF2nBkuTBNPSJvZN5m49LNtNg/uploaded-1772945874277-vt9q76uj.png", alt: "Professional junk removal truck"},
- ],
- },
- twitter: {
- card: "summary_large_image", title: "MG Junk Removal | Professional Hauling Services", description: "Fast, reliable junk removal for residential, commercial, and construction debris. Damage-free guarantee.", images: ["https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AeF2nBkuTBNPSJvZN5m49LNtNg/uploaded-1772945874277-vt9q76uj.png"],
- },
-};
+ title: "MG Junk Removal | Professional Service, Transparent Pricing", description: "Fast, reliable junk removal with upfront pricing and zero damage guarantee. Same-day quotes and professional crews."};
export default function RootLayout({
children,
-}: Readonly<{
+}: {
children: React.ReactNode;
-}>) {
+}) {
return (
-
-
+
+
+
+
+
{children}
-
+
+
-
);
}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 1083843..1137239 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -10,8 +10,55 @@ import TestimonialCardFifteen from "@/components/sections/testimonial/Testimonia
import ContactSplit from "@/components/sections/contact/ContactSplit";
import FooterMedia from "@/components/sections/footer/FooterMedia";
import { Truck, CheckCircle, Shield, Award, Clock, Star, Phone } from "lucide-react";
+import { useState } from "react";
export default function LandingPage() {
+ const [formData, setFormData] = useState({ email: "", name: "" });
+ const [submissionStatus, setSubmissionStatus] = useState<"idle" | "loading" | "success" | "error">("idle");
+ const [confirmationCode, setConfirmationCode] = useState(null);
+
+ const generateConfirmationCode = (): string => {
+ return Math.floor(100000 + Math.random() * 900000).toString();
+ };
+
+ const handleQuoteSubmit = async (email: string) => {
+ setFormData(prev => ({ ...prev, email }));
+ setSubmissionStatus("loading");
+
+ try {
+ const code = generateConfirmationCode();
+ setConfirmationCode(code);
+
+ // Extract first name from email if not already set
+ const firstName = formData.name || email.split("@")[0].split(".")[0];
+
+ const response = await fetch("https://formspree.io/f/xjkbygyp", {
+ method: "POST", headers: {
+ "Accept": "application/json", "Content-Type": "application/json"},
+ body: JSON.stringify({
+ email: email,
+ name: firstName,
+ message: `Quote Request from ${firstName}. Confirmation Code: ${code}`,
+ _subject: `MG Junk Removal Quote Request - ${code}`,
+ }),
+ });
+
+ if (response.ok) {
+ setSubmissionStatus("success");
+ // Reset form after 3 seconds
+ setTimeout(() => {
+ setFormData({ email: "", name: "" });
+ setSubmissionStatus("idle");
+ }, 3000);
+ } else {
+ setSubmissionStatus("error");
+ }
+ } catch (error) {
+ console.error("Form submission error:", error);
+ setSubmissionStatus("error");
+ }
+ };
+
return (
@@ -82,14 +126,11 @@ export default function LandingPage() {
tagAnimation="slide-up"
features={[
{
- id: "01", title: "Schedule", description: "Book online or call. Same-day or next-day availability. No long wait times.", imageSrc: "http://img.b2bpic.net/free-vector/medical-booking-application_23-2148558680.jpg", imageAlt: "Easy scheduling interface"
- },
+ id: "01", title: "Schedule", description: "Book online or call. Same-day or next-day availability. No long wait times.", imageSrc: "http://img.b2bpic.net/free-vector/medical-booking-application_23-2148558680.jpg", imageAlt: "Easy scheduling interface"},
{
- id: "02", title: "Upfront Quote", description: "15-minute phone assessment. Firm pricing. No hidden fees or surprises.", imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-bankruptcy-concept_23-2148493435.jpg", imageAlt: "Transparent pricing consultation"
- },
+ id: "02", title: "Upfront Quote", description: "15-minute phone assessment. Firm pricing. No hidden fees or surprises.", imageSrc: "http://img.b2bpic.net/free-vector/hand-drawn-bankruptcy-concept_23-2148493435.jpg", imageAlt: "Transparent pricing consultation"},
{
- id: "03", title: "Professional Haul", description: "Expert crew. Careful loading. Full cleanup. Damage-free guarantee.", imageSrc: "http://img.b2bpic.net/free-photo/african-american-activist-volunteering-tidy-forest-ecosystem_482257-93953.jpg", imageAlt: "Professional junk removal team at work"
- },
+ id: "03", title: "Professional Haul", description: "Expert crew. Careful loading. Full cleanup. Damage-free guarantee.", imageSrc: "http://img.b2bpic.net/free-photo/african-american-activist-volunteering-tidy-forest-ecosystem_482257-93953.jpg", imageAlt: "Professional junk removal team at work"},
]}
gridVariant="three-columns-all-equal-width"
animationType="slide-up"
@@ -149,23 +190,17 @@ export default function LandingPage() {
author="Robert Williams, Homeowner"
avatars={[
{
- src: "http://img.b2bpic.net/free-photo/handsome-business-man-wearing-suit-looking-camera-smiling-broadly-with-happy-face-standing-white-background_141793-54115.jpg", alt: "Customer testimonial avatar 1"
- },
+ src: "http://img.b2bpic.net/free-photo/handsome-business-man-wearing-suit-looking-camera-smiling-broadly-with-happy-face-standing-white-background_141793-54115.jpg", alt: "Customer testimonial avatar 1"},
{
- src: "http://img.b2bpic.net/free-photo/portrait-young-attractive-woman-elegant-hotel-cafeteria_657883-403.jpg", alt: "Customer testimonial avatar 2"
- },
+ src: "http://img.b2bpic.net/free-photo/portrait-young-attractive-woman-elegant-hotel-cafeteria_657883-403.jpg", alt: "Customer testimonial avatar 2"},
{
- src: "http://img.b2bpic.net/free-photo/close-up-portrait-young-bearded-man-white-shirt-jacket-posing-camera-with-broad-smile-isolated-gray_171337-629.jpg", alt: "Customer testimonial avatar 3"
- },
+ src: "http://img.b2bpic.net/free-photo/close-up-portrait-young-bearded-man-white-shirt-jacket-posing-camera-with-broad-smile-isolated-gray_171337-629.jpg", alt: "Customer testimonial avatar 3"},
{
- src: "http://img.b2bpic.net/free-vector/man-avatar-collection_24908-60247.jpg", alt: "Customer testimonial avatar 4"
- },
+ src: "http://img.b2bpic.net/free-vector/man-avatar-collection_24908-60247.jpg", alt: "Customer testimonial avatar 4"},
{
- src: "http://img.b2bpic.net/free-photo/young-beautiful-stylish-woman-with-natural-curly-hairstyle-smiling-positive-emotion-happy-isolated-white-background-summer-fashion-trend-hipster-style-looking-camera-green-vest_285396-2925.jpg", alt: "Customer testimonial avatar 5"
- },
+ src: "http://img.b2bpic.net/free-photo/young-beautiful-stylish-woman-with-natural-curly-hairstyle-smiling-positive-emotion-happy-isolated-white-background-summer-fashion-trend-hipster-style-looking-camera-green-vest_285396-2925.jpg", alt: "Customer testimonial avatar 5"},
{
- src: "http://img.b2bpic.net/free-photo/smart-looking-teacher_53876-23045.jpg", alt: "Customer testimonial avatar 6"
- },
+ src: "http://img.b2bpic.net/free-photo/smart-looking-teacher_53876-23045.jpg", alt: "Customer testimonial avatar 6"},
]}
ratingAnimation="slide-up"
avatarsAnimation="slide-up"
@@ -176,8 +211,8 @@ export default function LandingPage() {