implement table reservation form with reCAPTCHA and email integration for Kitchener location
This commit is contained in:
parent
fc0eda905e
commit
e83a3d36db
@ -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}>
|
||||||
@ -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 }}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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: [
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -1,25 +1,25 @@
|
|||||||
export const LOCATION_CONFIG = {
|
export const LOCATION_CONFIG = {
|
||||||
city: "Burlington",
|
|
||||||
address: "1860 Appleby Line, Burlington, ON L7L 7H7",
|
|
||||||
phone: "289-313-9838",
|
|
||||||
phone_tel: "2893139838",
|
|
||||||
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",
|
|
||||||
meta_title: "Antalya Restaurant Burlington - 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.",
|
|
||||||
schema_address: {
|
|
||||||
"@type": "PostalAddress",
|
|
||||||
streetAddress: "1860 Appleby Line",
|
|
||||||
addressLocality: "Burlington",
|
|
||||||
addressRegion: "ON",
|
|
||||||
postalCode: "L7L 7H7",
|
|
||||||
addressCountry: "CA",
|
|
||||||
},
|
|
||||||
schema_telephone: "+1-289-313-9838",
|
|
||||||
other_location: {
|
|
||||||
city: "Kitchener",
|
city: "Kitchener",
|
||||||
address: "1187 Fischer-Hallman Rd #435, Kitchener, ON N2E 4H9",
|
address: "1187 Fischer-Hallman Rd #435, Kitchener, ON N2E 4H9",
|
||||||
phone: "519-581-6363",
|
phone: "519-581-6363",
|
||||||
phone_tel: "5195816363",
|
phone_tel: "5195816363",
|
||||||
|
email: "hello@antalyarestaurant.ca",
|
||||||
|
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 Kitchener - Authentic Turkish Cuisine",
|
||||||
|
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: {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
streetAddress: "1187 Fischer-Hallman Rd #435",
|
||||||
|
addressLocality: "Kitchener",
|
||||||
|
addressRegion: "ON",
|
||||||
|
postalCode: "N2E 4H9",
|
||||||
|
addressCountry: "CA",
|
||||||
|
},
|
||||||
|
schema_telephone: "+1-519-581-6363",
|
||||||
|
other_location: {
|
||||||
|
city: "Burlington",
|
||||||
|
address: "1860 Appleby Line, Burlington, ON L7L 7H7",
|
||||||
|
phone: "289-313-9838",
|
||||||
|
phone_tel: "2893139838",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user