5 Commits

Author SHA1 Message Date
fed3a0fc02 Update src/app/page.tsx 2026-03-04 10:58:42 +00:00
afd92a132e Merge version_2 into main
Merge version_2 into main
2026-03-04 10:34:30 +00:00
9e309dceba Update src/app/page.tsx 2026-03-04 10:34:25 +00:00
f8d1ef01d2 Update src/app/layout.tsx 2026-03-04 10:34:25 +00:00
903f0f2c76 Merge version_1 into main
Merge version_1 into main
2026-03-04 10:07:06 +00:00
2 changed files with 48 additions and 102 deletions

View File

@@ -6,43 +6,26 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
const mulish = Mulish({ const mulish = Mulish({
variable: "--font-mulish", variable: "--font-mulish", subsets: ["latin"],
subsets: ["latin"],
}); });
const inter = Inter({ const inter = Inter({
variable: "--font-inter", variable: "--font-inter", subsets: ["latin"],
subsets: ["latin"],
}); });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Kalkan Villa Rentals - Lüks Villa Kiralama", title: "Kalkan Villa Rentals - Lüks Villa Kiralama", description: "Kalkan'da özel havuzlu ve deniz manzaralı lüks villalar kiralayın. 50+ villa, güvenli ödeme, 24/7 destek. Akdeniz tatili için ideal seçim.", keywords: "Kalkan villa, villa kiralama, lüks konak, Türkiye deniz kenarı, tatil evi", metadataBase: new URL("https://kalkanvillarentals.com"),
description: "Kalkan'da özel havuzlu ve deniz manzaralı lüks villalar kiralayın. 50+ villa, güvenli ödeme, 24/7 destek. Akdeniz tatili için ideal seçim.",
keywords: "Kalkan villa, villa kiralama, lüks konak, Türkiye deniz kenarı, tatil evi",
metadataBase: new URL("https://kalkanvillarentals.com"),
alternates: { alternates: {
canonical: "https://kalkanvillarentals.com", canonical: "https://kalkanvillarentals.com"},
},
openGraph: { openGraph: {
title: "Kalkan Villa Rentals - Akdeniz'in En Seçkin Tatil Noktası", title: "Kalkan Villa Rentals - Akdeniz'in En Seçkin Tatil Noktası", description: "Kalkan'da konumlanan 50+ lüks villanın keyfini çıkartın. Özel havuz, deniz manzarası ve mükemmel hizmet.", url: "https://kalkanvillarentals.com", siteName: "Kalkan Villa Rentals", type: "website", images: [
description: "Kalkan'da konumlanan 50+ lüks villanın keyfini çıkartın. Özel havuz, deniz manzarası ve mükemmel hizmet.",
url: "https://kalkanvillarentals.com",
siteName: "Kalkan Villa Rentals",
type: "website",
images: [
{ {
url: "http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg", url: "http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg", alt: "Kalkan Lüksüs Villa - Deniz Manzarası"},
alt: "Kalkan Lüksüs Villa - Deniz Manzarası",
},
], ],
}, },
twitter: { twitter: {
card: "summary_large_image", card: "summary_large_image", title: "Kalkan Villa Rentals - Lüks Konak Tatili", description: "Akdeniz'in en güzel kıyısında villa tatili. Özel havuz, deniz manzarası, unlimited pleasure.", images: [
title: "Kalkan Villa Rentals - Lüks Konak Tatili", "http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg"],
description: "Akdeniz'in en güzel kıyısında villa tatili. Özel havuz, deniz manzarası, unlimited pleasure.",
images: [
"http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg",
],
}, },
robots: { robots: {
index: true, index: true,

View File

@@ -11,8 +11,11 @@ import FaqSplitText from "@/components/sections/faq/FaqSplitText";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm"; import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import FooterBase from "@/components/sections/footer/FooterBase"; import FooterBase from "@/components/sections/footer/FooterBase";
import { Home, Users, Star, Globe } from "lucide-react"; import { Home, Users, Star, Globe } from "lucide-react";
import { useState } from "react";
export default function HomePage() { export default function HomePage() {
const [selectedVillaId, setSelectedVillaId] = useState<string | null>(null);
const navItems = [ const navItems = [
{ name: "Anasayfa", id: "home" }, { name: "Anasayfa", id: "home" },
{ name: "Villalar", id: "villas" }, { name: "Villalar", id: "villas" },
@@ -22,14 +25,12 @@ export default function HomePage() {
]; ];
const navButton = { const navButton = {
text: "Rezervasyon Yap", text: "Rezervasyon Yap", href: "/villas"
href: "/villas",
}; };
const footerColumns = [ const footerColumns = [
{ {
title: "Villalar", title: "Villalar", items: [
items: [
{ label: "Tüm Villalar", href: "/villas" }, { label: "Tüm Villalar", href: "/villas" },
{ label: "Öne Çıkanlar", href: "#featured-villas" }, { label: "Öne Çıkanlar", href: "#featured-villas" },
{ label: "Kalkan Center", href: "/villas" }, { label: "Kalkan Center", href: "/villas" },
@@ -37,8 +38,7 @@ export default function HomePage() {
], ],
}, },
{ {
title: "Şirket", title: "Şirket", items: [
items: [
{ label: "Hakkımızda", href: "/about" }, { label: "Hakkımızda", href: "/about" },
{ label: "İletişim", href: "/contact" }, { label: "İletişim", href: "/contact" },
{ label: "Sık Sorulan Sorular", href: "/faq" }, { label: "Sık Sorulan Sorular", href: "/faq" },
@@ -46,8 +46,7 @@ export default function HomePage() {
], ],
}, },
{ {
title: "Yasal", title: "Yasal", items: [
items: [
{ label: "Gizlilik Politikası", href: "#" }, { label: "Gizlilik Politikası", href: "#" },
{ label: "Kullanım Şartları", href: "#" }, { label: "Kullanım Şartları", href: "#" },
{ label: "İptal Politikası", href: "#" }, { label: "İptal Politikası", href: "#" },
@@ -56,6 +55,15 @@ export default function HomePage() {
}, },
]; ];
const handleVillaClick = (villaId: string) => {
setSelectedVillaId(villaId);
// Scroll to contact section to show reservation activation
const contactSection = document.getElementById("contact");
if (contactSection) {
contactSection.scrollIntoView({ behavior: "smooth" });
}
};
return ( return (
<ThemeProvider <ThemeProvider
defaultButtonVariant="bounce-effect" defaultButtonVariant="bounce-effect"
@@ -87,7 +95,7 @@ export default function HomePage() {
imageSrc="http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg?_wi=1" imageSrc="http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg?_wi=1"
imageAlt="Kalkan'da Lüksüs Villa ve Deniz Manzarası" imageAlt="Kalkan'da Lüksüs Villa ve Deniz Manzarası"
buttons={[ buttons={[
{ text: "Villalara Göz At", href: "/villas" }, { text: "Şimdi Rezervasyon Yap", href: "/villas" },
{ text: "Daha Fazla Bilgi", href: "/about" }, { text: "Daha Fazla Bilgi", href: "/about" },
]} ]}
buttonAnimation="slide-up" buttonAnimation="slide-up"
@@ -102,25 +110,13 @@ export default function HomePage() {
tagAnimation="slide-up" tagAnimation="slide-up"
products={[ products={[
{ {
id: "villa-001", id: "villa-001", name: "Azure Dreams Villa", price: "₺12.500 / gün", imageSrc: "http://img.b2bpic.net/free-photo/luxury-poolside-experience-where-guests-bask-opulence-cabanas_1268-31113.jpg?_wi=1", imageAlt: "Azure Dreams Villa - Özel Havuzlu Lüks Konak", onProductClick: () => handleVillaClick("villa-001"),
name: "Azure Dreams Villa",
price: "₺12.500 / gün",
imageSrc: "http://img.b2bpic.net/free-photo/luxury-poolside-experience-where-guests-bask-opulence-cabanas_1268-31113.jpg?_wi=1",
imageAlt: "Azure Dreams Villa - Özel Havuzlu Lüks Konak",
}, },
{ {
id: "villa-002", id: "villa-002", name: "Mediterranean Pearl", price: "₺15.000 / gün", imageSrc: "http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18877.jpg?_wi=1", imageAlt: "Mediterranean Pearl - Sunset Terrace Villa", onProductClick: () => handleVillaClick("villa-002"),
name: "Mediterranean Pearl",
price: "₺15.000 / gün",
imageSrc: "http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18877.jpg?_wi=1",
imageAlt: "Mediterranean Pearl - Sunset Terrace Villa",
}, },
{ {
id: "villa-003", id: "villa-003", name: "Aegean Sunset", price: "₺18.500 / gün", imageSrc: "http://img.b2bpic.net/free-photo/modern-infinity-pool-perched-edge-cliff-overlooking-breathtaking-landscape_1268-31154.jpg?_wi=1", imageAlt: "Aegean Sunset - Private Pool & Sea View", onProductClick: () => handleVillaClick("villa-003"),
name: "Aegean Sunset",
price: "₺18.500 / gün",
imageSrc: "http://img.b2bpic.net/free-photo/modern-infinity-pool-perched-edge-cliff-overlooking-breathtaking-landscape_1268-31154.jpg?_wi=1",
imageAlt: "Aegean Sunset - Private Pool & Sea View",
}, },
]} ]}
gridVariant="three-columns-all-equal-width" gridVariant="three-columns-all-equal-width"
@@ -148,29 +144,13 @@ export default function HomePage() {
<TestimonialCardTwelve <TestimonialCardTwelve
testimonials={[ testimonials={[
{ {
id: "1", id: "1", name: "Sarah Johnson", imageSrc: "http://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg?_wi=1", imageAlt: "Sarah Johnson"},
name: "Sarah Johnson",
imageSrc: "http://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg?_wi=1",
imageAlt: "Sarah Johnson",
},
{ {
id: "2", id: "2", name: "Michael Chen", imageSrc: "http://img.b2bpic.net/free-photo/portrait-optimistic-businessman-formalwear_1262-3600.jpg?_wi=1", imageAlt: "Michael Chen"},
name: "Michael Chen",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-optimistic-businessman-formalwear_1262-3600.jpg?_wi=1",
imageAlt: "Michael Chen",
},
{ {
id: "3", id: "3", name: "Emma Rodriguez", imageSrc: "http://img.b2bpic.net/free-photo/happy-tourist-has-glad-expression-wears-fashionable-headgear_273609-25749.jpg?_wi=1", imageAlt: "Emma Rodriguez"},
name: "Emma Rodriguez",
imageSrc: "http://img.b2bpic.net/free-photo/happy-tourist-has-glad-expression-wears-fashionable-headgear_273609-25749.jpg?_wi=1",
imageAlt: "Emma Rodriguez",
},
{ {
id: "4", id: "4", name: "David Kim", imageSrc: "http://img.b2bpic.net/free-photo/happy-young-surfer-snapback-looking-smiling-cheerfully-after-winning-sports-contest-surfers-holding-his-white-surfboard-his-arm_273609-1551.jpg?_wi=1", imageAlt: "David Kim"},
name: "David Kim",
imageSrc: "http://img.b2bpic.net/free-photo/happy-young-surfer-snapback-looking-smiling-cheerfully-after-winning-sports-contest-surfers-holding-his-white-surfboard-his-arm_273609-1551.jpg?_wi=1",
imageAlt: "David Kim",
},
]} ]}
cardTitle="10.000'den fazla müşteri Kalkan Villa Rentals'ı tercih ediyor" cardTitle="10.000'den fazla müşteri Kalkan Villa Rentals'ı tercih ediyor"
cardTag="Müşteri Memnuniyeti" cardTag="Müşteri Memnuniyeti"
@@ -185,35 +165,17 @@ export default function HomePage() {
sideDescription="Kalkan villa kiralama hakkında bilmeniz gerekenler, rezervasyon sürecinden iptal politikasına kadar." sideDescription="Kalkan villa kiralama hakkında bilmeniz gerekenler, rezervasyon sürecinden iptal politikasına kadar."
faqs={[ faqs={[
{ {
id: "1", id: "1", title: "Rezervasyon nasıl yapılır?", content: "Web sitemizde villa seçin, tarihleri belirleyin ve fiyat tahmini alın. Daha sonra WhatsApp, telefon veya e-mail yoluyla rezervasyonunuzu tamamlayın. Ödeme yöntemi olarak havale, EFT veya Wise kullanabilirsiniz."},
title: "Rezervasyon nasıl yapılır?",
content: "Web sitemizde villa seçin, tarihleri belirleyin ve fiyat tahmini alın. Daha sonra WhatsApp, telefon veya e-mail yoluyla rezervasyonunuzu tamamlayın. Ödeme yöntemi olarak havale, EFT veya Wise kullanabilirsiniz.",
},
{ {
id: "2", id: "2", title: "İptal politikası nedir?", content: "Check-in tarihinden 30 gün öncesine kadar tam iade yapılır. 30-14 gün arası %50 iade, 14 gün içinde iade yapılmaz. Özel durumlarda lütfen iletişim kurunuz."},
title: "İptal politikası nedir?",
content: "Check-in tarihinden 30 gün öncesine kadar tam iade yapılır. 30-14 gün arası %50 iade, 14 gün içinde iade yapılmaz. Özel durumlarda lütfen iletişim kurunuz.",
},
{ {
id: "3", id: "3", title: "Fiyata neler dâhil?", content: "Günlük fiyata konaklama, temizlik, havuz bakım ve temel ekipmanlar dâhildir. Elektrik, su ve doğalgaz ücretleri ayrıca hesaplanır. Ek hizmetler (kook, halkı temizlik) ücretli sunulmaktadır."},
title: "Fiyata neler dâhil?",
content: "Günlük fiyata konaklama, temizlik, havuz bakım ve temel ekipmanlar dâhildir. Elektrik, su ve doğalgaz ücretleri ayrıca hesaplanır. Ek hizmetler (kook, halkı temizlik) ücretli sunulmaktadır.",
},
{ {
id: "4", id: "4", title: "Çocuklara special ücret var mı?", content: "3 yaşından küçük çocuklar konaklamada bahçıvanız, 3-12 yaş arası çocuklar için %20 indirim uygulanır. 12 yaş üstü misafirler tam fiyat ödenmektedir."},
title: "Çocuklara special ücret var mı?",
content: "3 yaşından küçük çocuklar konaklamada bahçıvanız, 3-12 yaş arası çocuklar için %20 indirim uygulanır. 12 yaş üstü misafirler tam fiyat ödenmektedir.",
},
{ {
id: "5", id: "5", title: "Check-in saati ne zaman?", content: "Standart check-in saati 15:00, check-out saati 11:00'dir. Erken check-in veya geç check-out için ücret tarifesine bakınız. Uygun olduğu durumlarda %25-50 indirimli ek saatler sunulur."},
title: "Check-in saati ne zaman?",
content: "Standart check-in saati 15:00, check-out saati 11:00'dir. Erken check-in veya geç check-out için ücret tarifesine bakınız. Uygun olduğu durumlarda %25-50 indirimli ek saatler sunulur.",
},
{ {
id: "6", id: "6", title: "Pet (hayvan) getirilebilir mi?", content: "Seçili villalarda evcil hayvanlar kabul edilir. Hayvan sahibi olan misafirlarımız, lütfen rezervasyon sırasında bilgi veriniz. Ek temizlik ücreti uygulanabilir."},
title: "Pet (hayvan) getirilebilir mi?",
content: "Seçili villalarda evcil hayvanlar kabul edilir. Hayvan sahibi olan misafirlarımız, lütfen rezervasyon sırasında bilgi veriniz. Ek temizlik ücreti uygulanabilir.",
},
]} ]}
faqsAnimation="slide-up" faqsAnimation="slide-up"
textPosition="left" textPosition="left"
@@ -223,25 +185,26 @@ export default function HomePage() {
<div id="contact" data-section="contact"> <div id="contact" data-section="contact">
<ContactSplitForm <ContactSplitForm
title="Bizimle İletişime Geçin" title={selectedVillaId ? `${selectedVillaId} için Rezervasyon` : "Bizimle İletişime Geçin"}
description="Kalkan villa kiralama hakkında sorularınız mı var? Bize e-mail gönderin veya doğrudan WhatsApp ile bağlantı kurun. 24 saat içinde yanıt alacaksınız." description={selectedVillaId ? "Seçtiğiniz villa için reservasyon bilgilerini giriniz. 24 saat içinde sizinle iletişime geçeceğiz." : "Kalkan villa kiralama hakkında sorularınız mı var? Bize e-mail gönderin veya doğrudan WhatsApp ile bağlantı kurun. 24 saat içinde yanıt alacaksınız."}
inputs={[ inputs={[
{ name: "name", type: "text", placeholder: "Adınız" }, { name: "name", type: "text", placeholder: "Adınız" },
{ name: "email", type: "email", placeholder: "E-mail Adresiniz" }, { name: "email", type: "email", placeholder: "E-mail Adresiniz" },
{ name: "phone", type: "tel", placeholder: "Telefon Numaranız (Opsiyonel)" }, { name: "phone", type: "tel", placeholder: "Telefon Numaranız (Opsiyonel)" },
]} ]}
textarea={{ textarea={{
name: "message", name: "message", placeholder: selectedVillaId ? "Rezervasyon talebiniz ve sorularınız..." : "Sorunuz veya talebiniz...", rows: 5,
placeholder: "Sorunuz veya talebiniz...",
rows: 5,
}} }}
useInvertedBackground={false} useInvertedBackground={false}
imageSrc="http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg?_wi=2" imageSrc="http://img.b2bpic.net/free-photo/scenic-view-sandy-beach-beach-with-sun-beds-umbrellas-open-against-sea-mountains-hotel-resort-tekirova-kemer-turkey_146671-18880.jpg?_wi=2"
imageAlt="Kalkan Villa Manzarası" imageAlt="Kalkan Villa Manzarası"
mediaAnimation="slide-up" mediaAnimation="slide-up"
mediaPosition="right" mediaPosition="right"
buttonText="Mesaj Gönder" buttonText={selectedVillaId ? "Rezervasyon Talebi Gönder" : "Mesaj Gönder"}
onSubmit={(data) => console.log("Form submitted:", data)} onSubmit={(data) => {
console.log("Form submitted:", { ...data, selectedVilla: selectedVillaId });
setSelectedVillaId(null);
}}
/> />
</div> </div>