diff --git a/app/[lang]/about/AboutClient.tsx b/app/[lang]/about/AboutClient.tsx new file mode 100644 index 0000000..ae4a81a --- /dev/null +++ b/app/[lang]/about/AboutClient.tsx @@ -0,0 +1,142 @@ +'use client' + +import { motion } from "framer-motion" +import Image from "next/image" +import { Check, Hotel, Star, Globe } from 'lucide-react' + + + +export default function AboutClient({ lang, dict }: { lang: string, dict: any }) { + const whyUs = [ + { title: dict.about.why['1'].t, desc: dict.about.why['1'].d }, + { title: dict.about.why['2'].t, desc: dict.about.why['2'].d }, + { title: dict.about.why['3'].t, desc: dict.about.why['3'].d }, + { title: dict.about.why['4'].t, desc: dict.about.why['4'].d } + ] + + const stats = [ + { icon: , value: '8+', label: 'Premium Room' }, + { icon: , value: '4.8', label: 'Guest Rating' }, + { icon: , value: '10+', label: 'Countries' } + ] + + return ( +
+ + + {/* HERO SECTION */} +
+
+ + {dict.about.title} + + + {dict.about.subtitle} + +
+
+ + {/* STORY & WHY US SECTION */} +
+
+ + {/* Left: Story */} + +

{dict.about.story.title}

+
+

{dict.about.story.p1}

+

{dict.about.story.p2}

+
+
+ + {/* Right: Why Us Card */} + +

{dict.about.why.title}

+
+ {whyUs.map((item, idx) => ( +
+
+ +
+
+

{item.title}

+

{item.desc}

+
+
+ ))} +
+
+
+
+ + {/* STATS SECTION */} +
+
+ {stats.map((stat, idx) => ( + +
+ {stat.icon} +
+
+

{stat.value}

+

{stat.label}

+
+
+ ))} +
+
+ + {/* VISION SECTION */} +
+
+ + {dict.about.vision.title} + + + {dict.about.vision.text} + +
+
+ + +
+ ) +} diff --git a/app/[lang]/about/page.tsx b/app/[lang]/about/page.tsx new file mode 100644 index 0000000..1903813 --- /dev/null +++ b/app/[lang]/about/page.tsx @@ -0,0 +1,18 @@ +import { getDictionary } from "@/dictionaries/get-dictionary" +import AboutClient from "./AboutClient" + +export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }) { + const { lang } = await params + const dict = await getDictionary(lang as 'en' | 'tr') + return { + title: `${dict.about.title} - Ayris Apart`, + description: dict.about.subtitle, + } +} + +export default async function AboutPage({ params }: { params: Promise<{ lang: string }> }) { + const { lang } = await params + const dict = await getDictionary(lang as 'en' | 'tr') + + return +} diff --git a/app/[lang]/contact/ContactClient.tsx b/app/[lang]/contact/ContactClient.tsx new file mode 100644 index 0000000..999dc10 --- /dev/null +++ b/app/[lang]/contact/ContactClient.tsx @@ -0,0 +1,184 @@ +'use client' + +import { motion } from "framer-motion" +import { Mail, Phone, MapPin, Clock, ArrowUpRight, MessageCircle } from 'lucide-react' +import Link from "next/link" + + + +const InstagramIcon = ({ size = 20 }: { size?: number }) => ( + + + + + +) + +export default function ContactClient({ lang, dict }: { lang: string, dict: any }) { + return ( +
+ + + {/* HERO SECTION */} +
+
+ + {dict.contact.title.split(' ')[0]}
{dict.contact.title.split(' ').slice(1).join(' ')} +
+
+
+ + {/* MINIMALIST INFO GRID */} +
+
+ + {/* Address */} + + +
+

{dict.contact.visit.t}

+

+ {dict.contact.visit.d} +

+ + {dict.contact.btn.map} + + +
+
+ + {/* Direct Connect */} + + +
+

{dict.contact.call.t}

+
+

+90 543 231 87 13

+

{dict.contact.call.d}

+
+ + {dict.contact.btn.call} + + +
+
+ + {/* Email */} + + +
+

{dict.contact.write.t}

+
+

hello@ayrisapart.com

+

{dict.contact.write.d}

+
+ + {dict.contact.btn.mail} + + +
+
+ + {/* WhatsApp */} + + +
+

{dict.contact.wa.t}

+

+ {dict.contact.wa.d} +

+ + {dict.contact.btn.wa} + + +
+
+ + {/* Instagram */} + + +
+

{dict.contact.ig.t}

+

+ {dict.contact.ig.d} +

+ + {dict.contact.btn.ig} + + +
+
+ + {/* Working Hours */} + + +
+

{dict.contact.hours.t}

+
+

{dict.contact.hours.d}

+

{dict.contact.hours.sub}

+
+
Open 24/7 for you
+
+
+
+
+ + {/* FULL WIDTH MAP SECTION */} +
+
+ +
+
+ + +
+ ) +} diff --git a/app/[lang]/contact/page.tsx b/app/[lang]/contact/page.tsx new file mode 100644 index 0000000..a44786d --- /dev/null +++ b/app/[lang]/contact/page.tsx @@ -0,0 +1,18 @@ +import { getDictionary } from "@/dictionaries/get-dictionary" +import ContactClient from "./ContactClient" + +export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }) { + const { lang } = await params + const dict = await getDictionary(lang as 'en' | 'tr') + return { + title: `${dict.contact.title} - Ayris Apart`, + description: dict.contact.subtitle, + } +} + +export default async function ContactPage({ params }: { params: Promise<{ lang: string }> }) { + const { lang } = await params + const dict = await getDictionary(lang as 'en' | 'tr') + + return +} diff --git a/app/[lang]/layout.tsx b/app/[lang]/layout.tsx new file mode 100644 index 0000000..cf42a68 --- /dev/null +++ b/app/[lang]/layout.tsx @@ -0,0 +1,49 @@ +import type { Metadata } from "next"; +import { Oranienbaum, Inter } from "next/font/google"; +import "../globals.css"; +import Navbar from "@/components/Navbar"; +import { getDictionary } from "@/dictionaries/get-dictionary"; +import Footer from "@/components/Footer"; + +const oranienbaum = Oranienbaum({ + subsets: ["latin", "latin-ext"], + weight: ["400"], + variable: "--font-oranienbaum", + display: "swap", +}); + +const inter = Inter({ + subsets: ["latin", "latin-ext"], + variable: "--font-inter", + display: "swap", +}); + +export const metadata: Metadata = { + title: "Ayris - Luxury Accommodation", + description: "Experience the ultimate comfort and luxury at Ayris.", +}; + +export async function generateStaticParams() { + return [{ lang: 'en' }, { lang: 'tr' }] +} + +export default async function RootLayout({ + children, + params, +}: { + children: React.ReactNode; + params: Promise<{ lang: string }>; +}) { + const { lang } = await params; + const dict = await getDictionary(lang as 'en' | 'tr'); + + return ( + + + + {children} +