implement table reservation form with reCAPTCHA and email integration for Kitchener location

This commit is contained in:
Alaguraj0361 2026-04-03 16:14:03 +05:30
parent fc0eda905e
commit e83a3d36db
5 changed files with 58 additions and 59 deletions

View File

@ -321,7 +321,7 @@ export default function ContactContent() {
viewport={{ once: true }} viewport={{ once: true }}
transition={{ duration: 0.8 }} transition={{ duration: 0.8 }}
> >
<div className={styles.locationCard}> {/* <div className={styles.locationCard}>
<div className={styles.iconWrapper}> <div className={styles.iconWrapper}>
<svg className={styles.icon} fill="none" stroke="currentColor" viewBox="0 0 24 24"> <svg className={styles.icon} fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" /> <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" />
@ -341,7 +341,7 @@ export default function ContactContent() {
</a> </a>
</div> </div>
</div> </div>
</div> </div> */}
<div className={styles.locationCard}> <div className={styles.locationCard}>
<div className={styles.iconWrapper}> <div className={styles.iconWrapper}>
@ -359,7 +359,7 @@ export default function ContactContent() {
</p> </p>
<a href="tel:5195816363" className={styles.locationSubtitle}> <a href="tel:5195816363" className={styles.locationSubtitle}>
Call Us: 519-581-6363 Call Us: 519-581-6363
</a> </a>
</div> </div>
</div> </div>
@ -386,7 +386,7 @@ export default function ContactContent() {
{/* Map */} {/* Map */}
<div className={styles.mapContainer}> <div className={styles.mapContainer}>
<iframe <iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2894.46026528!2d-79.7801!3d43.3875!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b5fcd79165b0f%3A0x9d76a7bc4fd95533!2s1860%20Appleby%20Line%2C%20Burlington%2C%20ON%20L7L%207H7%2C%20Canada!5e0!3m2!1sen!2sca!4v1712130000000!5m2!1sen!2sca" src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2899.70293155!2d-80.518!3d43.415!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882bf5fcd79165b0f%3A0x9d76a7bc4fd95533!2s1187%20Fischer-Hallman%20Rd%20%23435%2C%20Kitchener%2C%20ON%20N2E%204H9%2C%20Canada!5e0!3m2!1sen!2sca!4v1700000000000!5m2!1sen!2sca"
width="100%" width="100%"
height="900" height="900"
style={{ border: 0 }} style={{ border: 0 }}

View File

@ -50,7 +50,7 @@
.smallHeading { .smallHeading {
font-size: var(--small-text-size); font-size: var(--small-text-size);
color: var(--color-paragraph); color: #441109;
font-family: var(--font-lato); font-family: var(--font-lato);
font-weight: 600; font-weight: 600;
letter-spacing: 2px; letter-spacing: 2px;
@ -69,7 +69,7 @@
.formBlock { .formBlock {
background-color: #F5E6D3; background-color: #F5E6D3;
padding: 2.5rem; padding: 2.5rem;
border: 2px solid #b07c4b; border: 2px solid #441109;
} }
.title { .title {
@ -78,14 +78,14 @@
color: #5d4037; color: #5d4037;
margin-bottom: 1rem; margin-bottom: 1rem;
font-weight: 600; font-weight: 600;
border-bottom: 3px solid #c49c5c; border-bottom: 3px solid #441109;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
display: inline-block; display: inline-block;
} }
.subtitle { .subtitle {
font-size: var(--body-size); font-size: var(--body-size);
color: var(--color-alterparagraph) !important; color: #441109 !important;
line-height: 1.6; line-height: 1.6;
margin-bottom: 2rem; margin-bottom: 2rem;
font-family: var(--font-lato); font-family: var(--font-lato);
@ -111,7 +111,7 @@
.formLabel { .formLabel {
font-family: var(--font-lato); font-family: var(--font-lato);
color: var(--color-paragraph); color: #441109;
font-size: var(--small-text-size); font-size: var(--small-text-size);
font-weight: 600; font-weight: 600;
} }
@ -121,7 +121,7 @@
background: #fff; background: #fff;
border: 1px solid #d4c5b0; border: 1px solid #d4c5b0;
padding: 0.9rem; padding: 0.9rem;
color: var(--color-paragraph); color: #441109;
font-family: var(--font-lato); font-family: var(--font-lato);
font-size: var(--small-text-size); font-size: var(--small-text-size);
transition: border-color 0.3s; transition: border-color 0.3s;
@ -146,13 +146,13 @@
.charCount { .charCount {
font-size: var(--small-text-size); font-size: var(--small-text-size);
color: var(--color-alterparagraph) !important; color: #441109 !important;
text-align: right; text-align: right;
font-family: var(--font-lato); font-family: var(--font-lato);
} }
.submitButton { .submitButton {
background: #c49c5c; background: #441109;
border: none; border: none;
color: #fff; color: #fff;
padding: 15px 40px; padding: 15px 40px;
@ -168,7 +168,7 @@
} }
.submitButton:hover { .submitButton:hover {
background-color: #b08f4a; background-color: #441109;
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(197, 160, 89, 0.3); box-shadow: 0 4px 12px rgba(197, 160, 89, 0.3);
} }
@ -216,7 +216,7 @@
.locationCard { .locationCard {
background: #F5E6D3; background: #F5E6D3;
padding: 1.5rem; padding: 1.5rem;
border: 2px solid #b07c4b; border: 2px solid #441109;
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
gap: 1.5rem; gap: 1.5rem;
@ -228,7 +228,7 @@
} }
.iconWrapper { .iconWrapper {
background: #c49c5c; background: #441109;
width: 50px; width: 50px;
height: 50px; height: 50px;
border-radius: 50%; border-radius: 50%;
@ -251,14 +251,14 @@
.locationTitle { .locationTitle {
font-family: var(--font-playfair); font-family: var(--font-playfair);
font-size: var(--subheading-size); font-size: var(--subheading-size);
color: #5d4037; color: #441109;
margin-bottom: 10px; margin-bottom: 10px;
font-weight: 600; font-weight: 600;
} }
.locationSubtitle { .locationSubtitle {
font-size: var(--small-text-size); font-size: var(--small-text-size);
color: var(--color-alterparagraph) !important; color: #441109 !important;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
font-family: var(--font-lato); font-family: var(--font-lato);
} }
@ -273,11 +273,11 @@
.locationPhone { .locationPhone {
font-size: var(--subheading-size); font-size: var(--subheading-size);
font-weight: 600; font-weight: 600;
color: var(--color-paragraph); color: #441109;
} }
.mapContainer { .mapContainer {
border: 2px solid #b07c4b; border: 2px solid #441109;
overflow: hidden; overflow: hidden;
margin-top: 0.5rem; margin-top: 0.5rem;
} }

View File

@ -27,10 +27,10 @@ const dmSans = DM_Sans({
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL("https://antalya.metatronnest.com"), metadataBase: new URL("https://antalya.metatronnest.com"),
title: { title: {
default: "Antalya Restaurant Burlington - Authentic Turkish cuisine", default: "Antalya Restaurant Kitchener - Authentic Turkish cuisine",
template: "%s | Antalya Restaurant Burlington" template: "%s | Antalya Restaurant Kitchener"
}, },
description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Burlington. Enjoy our delicious kebabs, mezes, and desserts in a warm, inviting atmosphere.", description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Kitchener. Enjoy our delicious kebabs, mezes, and desserts in a warm, inviting atmosphere.",
keywords: ["Turkish restaurant", "Antalya restaurant", "Turkish cuisine", "kebabs", "meze", "dining", "authentic food", "halal food", "middle eastern food"], keywords: ["Turkish restaurant", "Antalya restaurant", "Turkish cuisine", "kebabs", "meze", "dining", "authentic food", "halal food", "middle eastern food"],
authors: [{ name: "Antalya Restaurant" }], authors: [{ name: "Antalya Restaurant" }],
creator: "Antalya Restaurant", creator: "Antalya Restaurant",
@ -47,10 +47,10 @@ export const metadata: Metadata = {
canonical: "./", canonical: "./",
}, },
openGraph: { openGraph: {
title: "Antalya Restaurant Burlington - Authentic Turkish Cuisine", title: "Antalya Restaurant Kitchener - Authentic Turkish Cuisine",
description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Burlington. From charcoal-grilled kebabs to handmade baklava.", description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Kitchener. From charcoal-grilled kebabs to handmade baklava.",
url: "https://burlington.antalyarestaurant.ca", url: "https://kitchener.antalyarestaurant.ca",
siteName: "Antalya Restaurant Burlington", siteName: "Antalya Restaurant Kitchener",
images: [ images: [
{ {
url: "/images/hero-bg.jpg", url: "/images/hero-bg.jpg",
@ -64,8 +64,8 @@ export const metadata: Metadata = {
}, },
twitter: { twitter: {
card: "summary_large_image", card: "summary_large_image",
title: "Antalya Restaurant Burlington - Authentic Turkish Cuisine", title: "Antalya Restaurant Kitchener - Authentic Turkish Cuisine",
description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Burlington.", description: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Kitchener.",
images: ["/images/hero-bg.jpg"], images: ["/images/hero-bg.jpg"],
}, },
}; };
@ -78,19 +78,19 @@ export default function RootLayout({
const jsonLd = { const jsonLd = {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "Restaurant", "@type": "Restaurant",
name: "Antalya Restaurant Burlington", name: "Antalya Restaurant Kitchener",
url: "https://burlington.antalyarestaurant.ca", url: "https://kitchener.antalyarestaurant.ca",
image: "https://burlington.antalyarestaurant.ca/images/hero-bg.jpg", image: "https://kitchener.antalyarestaurant.ca/images/hero-bg.jpg",
description: "Authentic Turkish cuisine featuring charcoal-grilled kebabs, fresh mezes, and traditional desserts at our Burlington location.", description: "Authentic Turkish cuisine featuring charcoal-grilled kebabs, fresh mezes, and traditional desserts at our Kitchener location.",
address: { address: {
"@type": "PostalAddress", "@type": "PostalAddress",
streetAddress: "1860 Appleby Line", streetAddress: "1187 Fischer-Hallman Rd #435",
addressLocality: "Burlington", addressLocality: "Kitchener",
addressRegion: "ON", addressRegion: "ON",
postalCode: "L7L 7H7", postalCode: "N2E 4H9",
addressCountry: "CA", addressCountry: "CA",
}, },
telephone: "+1-289-313-9838", telephone: "+1-519-581-6363",
servesCuisine: ["Turkish", "Middle Eastern", "Halal"], servesCuisine: ["Turkish", "Middle Eastern", "Halal"],
priceRange: "$$", priceRange: "$$",
openingHoursSpecification: [ openingHoursSpecification: [

View File

@ -13,7 +13,7 @@ export default function CallButton() {
// Check if catering page // Check if catering page
const isCateringPage = pathname === '/catering-services-ontario' || pathname?.startsWith('/catering-services-ontario/') const isCateringPage = pathname === '/catering-services-ontario' || pathname?.startsWith('/catering-services-ontario/')
// Logic for catering page (Email Button) // Catering page → email button
if (isCateringPage) { if (isCateringPage) {
return ( return (
<div className={styles.fixedWrapper}> <div className={styles.fixedWrapper}>
@ -28,7 +28,7 @@ export default function CallButton() {
) )
} }
// Logic for other pages (Dual Location Popup) // All other pages → Kitchener call popup
const toggleOpen = () => setIsOpen(!isOpen) const toggleOpen = () => setIsOpen(!isOpen)
return ( return (
@ -42,10 +42,6 @@ export default function CallButton() {
exit={{ opacity: 0, scale: 0.8, y: 10 }} exit={{ opacity: 0, scale: 0.8, y: 10 }}
transition={{ duration: 0.2 }} transition={{ duration: 0.2 }}
> >
<a href="tel:+12893139838" className={styles.menuItem}>
<span className={styles.locationName}>Burlington</span>
<span className={styles.phoneNumber}>289-313-9838</span>
</a>
<a href="tel:+15195816363" className={styles.menuItem}> <a href="tel:+15195816363" className={styles.menuItem}>
<span className={styles.locationName}>Kitchener</span> <span className={styles.locationName}>Kitchener</span>
<span className={styles.phoneNumber}>519-581-6363</span> <span className={styles.phoneNumber}>519-581-6363</span>
@ -57,7 +53,7 @@ export default function CallButton() {
<button <button
className={styles.callBtn} className={styles.callBtn}
onClick={toggleOpen} onClick={toggleOpen}
aria-label={isOpen ? "Close location menu" : "Show location numbers"} aria-label={isOpen ? 'Close location menu' : 'Call Antalya Kitchener'}
aria-expanded={isOpen} aria-expanded={isOpen}
> >
{isOpen ? ( {isOpen ? (
@ -68,7 +64,10 @@ export default function CallButton() {
viewBox="0 0 24 24" viewBox="0 0 24 24"
className={styles.icon} className={styles.icon}
> >
<path fill="currentColor" d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.05 12.05 0 0 0 .57 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.03 12.03 0 0 0 2.81.57A2 2 0 0 1 22 16.92z" /> <path
fill="currentColor"
d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.05 12.05 0 0 0 .57 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.03 12.03 0 0 0 2.81.57A2 2 0 0 1 22 16.92z"
/>
</svg> </svg>
)} )}
</button> </button>

View File

@ -1,25 +1,25 @@
export const LOCATION_CONFIG = { export const LOCATION_CONFIG = {
city: "Burlington", city: "Kitchener",
address: "1860 Appleby Line, Burlington, ON L7L 7H7", address: "1187 Fischer-Hallman Rd #435, Kitchener, ON N2E 4H9",
phone: "289-313-9838", phone: "519-581-6363",
phone_tel: "2893139838", phone_tel: "5195816363",
email: "hello@antalyarestaurant.ca", email: "hello@antalyarestaurant.ca",
map_embed: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2894.46026528!2d-79.7801!3d43.3875!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b5fcd79165b0f%3A0x9d76a7bc4fd95533!2s1860%20Appleby%20Line%2C%20Burlington%2C%20ON%20L7L%207H7%2C%20Canada!5e0!3m2!1sen!2sca!4v1700000000000!5m2!1sen!2sca", map_embed: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2899.70293155!2d-80.518!3d43.415!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882bf5fcd79165b0f%3A0x9d76a7bc4fd95533!2s1187%20Fischer-Hallman%20Rd%20%23435%2C%20Kitchener%2C%20ON%20N2E%204H9%2C%20Canada!5e0!3m2!1sen!2sca!4v1700000000000!5m2!1sen!2sca",
meta_title: "Antalya Restaurant Burlington - Authentic Turkish Cuisine", meta_title: "Antalya Restaurant Kitchener - Authentic Turkish Cuisine",
meta_desc: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Burlington. Enjoy our delicious kebabs, mezes, and desserts in a warm, inviting atmosphere.", meta_desc: "Experience the finest authentic Turkish cuisine at Antalya Restaurant Kitchener. Enjoy our delicious kebabs, mezes, and desserts in a warm, inviting atmosphere.",
schema_address: { schema_address: {
"@type": "PostalAddress", "@type": "PostalAddress",
streetAddress: "1860 Appleby Line", streetAddress: "1187 Fischer-Hallman Rd #435",
addressLocality: "Burlington", addressLocality: "Kitchener",
addressRegion: "ON", addressRegion: "ON",
postalCode: "L7L 7H7", postalCode: "N2E 4H9",
addressCountry: "CA", addressCountry: "CA",
}, },
schema_telephone: "+1-289-313-9838", schema_telephone: "+1-519-581-6363",
other_location: { other_location: {
city: "Kitchener", city: "Burlington",
address: "1187 Fischer-Hallman Rd #435, Kitchener, ON N2E 4H9", address: "1860 Appleby Line, Burlington, ON L7L 7H7",
phone: "519-581-6363", phone: "289-313-9838",
phone_tel: "5195816363", phone_tel: "2893139838",
} }
}; };