Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f456e7e09 | |||
| 8016d3e5da | |||
| 8fc04cdcaa | |||
| 49bf7b0974 | |||
| 70495d54c5 | |||
| 3eff696895 | |||
| 4eeffb9410 | |||
| 5fd1d1e9b3 |
@@ -1,54 +1,21 @@
|
||||
import type { Metadata } from "next";
|
||||
import { DM_Sans } from "next/font/google";
|
||||
import { Inter } from "next/font/google";
|
||||
import "./globals.css";
|
||||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||||
import Tag from "@/tag/Tag";
|
||||
|
||||
const dmSans = DM_Sans({
|
||||
variable: "--font-dm-sans", subsets: ["latin"],
|
||||
});
|
||||
|
||||
const inter = Inter({
|
||||
variable: "--font-inter", subsets: ["latin"],
|
||||
});
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Sun Hotels - Multi-Cuisine Restaurant Udumalaipettai", description: "Authentic multi-cuisine dining at Sun Hotels, Udumalaipettai. Specializing in Chettinad cuisine, spacious AC dining, free parking, and exceptional service. Reserve your table today.", keywords: "restaurant Udumalaipettai, Chettinad cuisine, multi-cuisine restaurant, authentic food, family dining, best restaurant Tamil Nadu", metadataBase: new URL("https://sunhotelsudumalaipettai.com"),
|
||||
alternates: {
|
||||
canonical: "https://sunhotelsudumalaipettai.com"
|
||||
},
|
||||
openGraph: {
|
||||
title: "Sun Hotels - Authentic Multi-Cuisine Restaurant", description: "Experience premium multi-cuisine dining with authentic Chettinad specialties, spacious ambience, and exceptional service at Sun Hotels in Udumalaipettai.", url: "https://sunhotelsudumalaipettai.com", siteName: "Sun Hotels", images: [
|
||||
{
|
||||
url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AX9aeiPEMX5CxW1d7qMul1H4jm/uploaded-1772728290259-kzbva66l.jpg", alt: "Sun Hotels restaurant exterior and dining experience"
|
||||
}
|
||||
],
|
||||
type: "website"
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image", title: "Sun Hotels - Udumalaipettai", description: "Multi-cuisine restaurant featuring authentic Chettinad dishes, spacious dining, and exceptional hospitality.", images: ["https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AX9aeiPEMX5CxW1d7qMul1H4jm/uploaded-1772728290259-kzbva66l.jpg"]
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true
|
||||
}
|
||||
title: "Sun Hotels - Multi-Cuisine Restaurant", description: "Authentic taste and comfortable dining at Sun Hotels, located at UKPM Square, Udumalaipettai. Experience Chettinad and multi-cuisine specialties."
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
}) {
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<ServiceWrapper>
|
||||
<body
|
||||
className={`${dmSans.variable} ${inter.variable} antialiased`}
|
||||
>
|
||||
<Tag />
|
||||
{children}
|
||||
|
||||
<html lang="en">
|
||||
<body className={inter.className}>{children}
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
@@ -1416,7 +1383,6 @@ export default function RootLayout({
|
||||
}}
|
||||
/>
|
||||
</body>
|
||||
</ServiceWrapper>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
}
|
||||
118
src/app/page.tsx
118
src/app/page.tsx
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay";
|
||||
import HeroBillboardTestimonial from "@/components/sections/hero/HeroBillboardTestimonial";
|
||||
@@ -25,9 +26,36 @@ import {
|
||||
Users,
|
||||
Flame,
|
||||
Star,
|
||||
CheckCircle,
|
||||
Calendar,
|
||||
Clock,
|
||||
Users as GuestIcon,
|
||||
Shield,
|
||||
} from "lucide-react";
|
||||
|
||||
export default function SunHotelsLanding() {
|
||||
const [reservationConfirmation, setReservationConfirmation] = useState<{
|
||||
show: boolean;
|
||||
data: Record<string, string> | null;
|
||||
}>({
|
||||
show: false,
|
||||
data: null,
|
||||
});
|
||||
|
||||
const handleReservationSubmit = (data: Record<string, string>) => {
|
||||
setReservationConfirmation({
|
||||
show: true,
|
||||
data,
|
||||
});
|
||||
};
|
||||
|
||||
const closeConfirmation = () => {
|
||||
setReservationConfirmation({
|
||||
show: false,
|
||||
data: null,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="icon-arrow"
|
||||
@@ -41,6 +69,91 @@ export default function SunHotelsLanding() {
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="bold"
|
||||
>
|
||||
{reservationConfirmation.show && reservationConfirmation.data && (
|
||||
<div className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4">
|
||||
<div className="w-full max-w-md rounded-3xl bg-white p-8 shadow-2xl">
|
||||
<div className="flex justify-center mb-6">
|
||||
<CheckCircle className="w-16 h-16 text-green-500" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-center mb-2 text-gray-900">
|
||||
Reservation Confirmed!
|
||||
</h2>
|
||||
<p className="text-center text-gray-600 mb-6">
|
||||
Thank you for booking with us. Your table is reserved.
|
||||
</p>
|
||||
<div className="bg-gray-50 rounded-2xl p-6 space-y-4 mb-6">
|
||||
<div className="flex items-start gap-3">
|
||||
<span className="text-gray-400 mt-1">👤</span>
|
||||
<div>
|
||||
<p className="text-sm text-gray-500">Guest Name</p>
|
||||
<p className="font-semibold text-gray-900">
|
||||
{reservationConfirmation.data.name}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<Calendar className="w-5 h-5 text-gray-400 mt-0.5" />
|
||||
<div>
|
||||
<p className="text-sm text-gray-500">Date</p>
|
||||
<p className="font-semibold text-gray-900">
|
||||
{new Date(reservationConfirmation.data.date).toLocaleDateString(
|
||||
"en-US", {
|
||||
weekday: "long", year: "numeric", month: "long", day: "numeric"}
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<Clock className="w-5 h-5 text-gray-400 mt-0.5" />
|
||||
<div>
|
||||
<p className="text-sm text-gray-500">Time</p>
|
||||
<p className="font-semibold text-gray-900">
|
||||
{reservationConfirmation.data.time}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<GuestIcon className="w-5 h-5 text-gray-400 mt-0.5" />
|
||||
<div>
|
||||
<p className="text-sm text-gray-500">Number of Guests</p>
|
||||
<p className="font-semibold text-gray-900">
|
||||
{reservationConfirmation.data.guests} {reservationConfirmation.data.guests === "1" ? "guest" : "guests"}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-start gap-3">
|
||||
<Phone className="w-5 h-5 text-gray-400 mt-0.5" />
|
||||
<div>
|
||||
<p className="text-sm text-gray-500">Contact Number</p>
|
||||
<p className="font-semibold text-gray-900">
|
||||
{reservationConfirmation.data.phone}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{reservationConfirmation.data.specialRequest && (
|
||||
<div className="border-t border-gray-200 pt-4 mt-4">
|
||||
<p className="text-sm text-gray-500 mb-2">Special Requests</p>
|
||||
<p className="text-sm text-gray-700">
|
||||
{reservationConfirmation.data.specialRequest}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="space-y-3">
|
||||
<p className="text-sm text-gray-600 text-center">
|
||||
A confirmation has been sent to your phone number. We look forward to serving you!
|
||||
</p>
|
||||
<button
|
||||
onClick={closeConfirmation}
|
||||
className="w-full bg-gradient-to-r from-orange-500 to-red-500 hover:from-orange-600 hover:to-red-600 text-white font-semibold py-3 rounded-full transition-all"
|
||||
>
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarLayoutFloatingOverlay
|
||||
brandName="Sun Hotels"
|
||||
@@ -198,7 +311,7 @@ export default function SunHotelsLanding() {
|
||||
<div id="reservation" data-section="reservation">
|
||||
<ContactSplitForm
|
||||
title="Reserve Your Table"
|
||||
description="Book your dining experience at Sun Hotels. We look forward to serving you authentic cuisine in a warm and welcoming atmosphere."
|
||||
description="Book your dining experience at Sun Hotels with instant SMS confirmation. Your reservation is guaranteed, and we look forward to serving you authentic cuisine in a warm and welcoming atmosphere."
|
||||
inputs={[
|
||||
{ name: "name", type: "text", placeholder: "Your Full Name", required: true },
|
||||
{ name: "phone", type: "tel", placeholder: "Phone Number", required: true },
|
||||
@@ -216,6 +329,7 @@ export default function SunHotelsLanding() {
|
||||
imageAlt="Elegant restaurant setting for reservations"
|
||||
mediaAnimation="slide-up"
|
||||
mediaPosition="right"
|
||||
onSubmit={handleReservationSubmit}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -265,4 +379,4 @@ export default function SunHotelsLanding() {
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user