From 6fa7cc6630ffc944ef40c53f6e2dd07d99b115a7 Mon Sep 17 00:00:00 2001 From: ayrisdev Date: Tue, 16 Jun 2026 19:17:37 +0300 Subject: [PATCH] first commit --- .gitignore | 2 +- app/[locale]/galeri/page.tsx | 40 +++++ app/[locale]/iletisim/page.tsx | 17 +++ app/[locale]/layout.tsx | 41 +++-- app/[locale]/odalar/[slug]/page.tsx | 50 +++++++ app/[locale]/odalar/page.tsx | 14 ++ app/[locale]/page.tsx | 57 ++----- app/globals.css | 223 ++++++++++++++++------------ components/contact-content.tsx | 107 +++++++++++++ components/footer.tsx | 82 ++++++++++ components/home/hero.tsx | 108 ++++++++++++++ components/home/newsletter.tsx | 51 +++++++ components/home/room-list.tsx | 116 +++++++++++++++ components/home/services.tsx | 107 +++++++++++++ components/navbar.tsx | 45 ++++++ components/theme-provider.tsx | 90 +++++++++++ components/theme-toggle.tsx | 54 +++++++ lib/mock-data.ts | 82 ++++++++++ messages/de.json | 46 ++++++ messages/en.json | 68 ++++++++- messages/ru.json | 46 ++++++ messages/tr.json | 68 ++++++++- next.config.ts | 1 + package-lock.json | 26 +++- package.json | 4 +- 25 files changed, 1378 insertions(+), 167 deletions(-) create mode 100644 app/[locale]/galeri/page.tsx create mode 100644 app/[locale]/iletisim/page.tsx create mode 100644 app/[locale]/odalar/[slug]/page.tsx create mode 100644 app/[locale]/odalar/page.tsx create mode 100644 components/contact-content.tsx create mode 100644 components/footer.tsx create mode 100644 components/home/hero.tsx create mode 100644 components/home/newsletter.tsx create mode 100644 components/home/room-list.tsx create mode 100644 components/home/services.tsx create mode 100644 components/navbar.tsx create mode 100644 components/theme-provider.tsx create mode 100644 components/theme-toggle.tsx create mode 100644 lib/mock-data.ts create mode 100644 messages/de.json create mode 100644 messages/ru.json diff --git a/.gitignore b/.gitignore index 5ef6a52..e36841c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ !.yarn/plugins !.yarn/releases !.yarn/versions - +/docs # testing /coverage diff --git a/app/[locale]/galeri/page.tsx b/app/[locale]/galeri/page.tsx new file mode 100644 index 0000000..0859d97 --- /dev/null +++ b/app/[locale]/galeri/page.tsx @@ -0,0 +1,40 @@ +import { setRequestLocale } from "next-intl/server"; +import Image from "next/image"; +import { mockData } from "@/lib/mock-data"; + +export default async function GaleriPage({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params; + setRequestLocale(locale); + + // Combine hero slides and accommodation images for a rich gallery + const allImages = [ + ...mockData.heroSlides.map((url, i) => ({ id: `slide-${i}`, url, title: "Kordon Apart" })), + ...mockData.accommodations.map(r => ({ id: r.id, url: r.image, title: r.name })) + ]; + + return ( +
+
+

Galeri

+

+ Kordon Apart'ın eşsiz atmosferini, mimarisini ve Fethiye'nin güzelliklerini keşfedin. +

+
+ +
+ {allImages.map((img) => ( +
+ {img.title} +
+
+ ))} +
+
+ ); +} diff --git a/app/[locale]/iletisim/page.tsx b/app/[locale]/iletisim/page.tsx new file mode 100644 index 0000000..8098af8 --- /dev/null +++ b/app/[locale]/iletisim/page.tsx @@ -0,0 +1,17 @@ +import { setRequestLocale, getTranslations } from 'next-intl/server'; +import { ContactContent } from '@/components/contact-content'; + +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params; + const t = await getTranslations({ locale, namespace: 'nav' }); + return { + title: `${t('contact')} - Kordon Apart`, + }; +} + +export default async function ContactPage({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params; + setRequestLocale(locale); + + return ; +} diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index e64a5e9..760ceb7 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -1,24 +1,28 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Inter, Montserrat } from "next/font/google"; import { NextIntlClientProvider } from 'next-intl'; import { getMessages, setRequestLocale } from 'next-intl/server'; import { notFound } from 'next/navigation'; import { routing } from '@/i18n/routing'; +import { Navbar } from '@/components/navbar'; +import { Footer } from '@/components/footer'; +import { ThemeProvider } from "@/components/theme-provider"; +import { Toaster } from "sonner"; import "../globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", +const inter = Inter({ + variable: "--font-inter", subsets: ["latin"], }); -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", +const montserrat = Montserrat({ + variable: "--font-montserrat", subsets: ["latin"], }); export const metadata: Metadata = { - title: "Boilerplate App", - description: "Next.js boilerplate with next-intl and NextAuth", + title: "Kordon Apart - Fethiye", + description: "Kordon Apart Fethiye / Merkez - Delüks ve Premium Apart Odalar", }; export function generateStaticParams() { @@ -44,12 +48,25 @@ export default async function RootLayout({ return ( - - - {children} - + + + + +
+ {children} +
+