feat: i18n fixes, blog rename, footer cleanup, and contact info update

- Rename /news route to /blog across all pages, links, and sitemap
- Fix hardcoded English text in Experiences, QuoteSection, and Footer
  by wiring all content through the TR/EN dictionaries
- Clean up Footer: remove non-existent page links, add contact column
- Update contact info: new phone numbers, bilgi@ email, No:71 address,
  Instagram @ayrisapart link
- Add suppressHydrationWarning to <body> to silence browser-extension
  attribute mismatch errors
- Add sizes prop to all fill-mode Next.js Image components

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 18:05:30 +03:00
co-authored by Claude Sonnet 4.6
parent 433252a05d
commit 40b4434a7b
34 changed files with 2864 additions and 509 deletions
+16 -24
View File
@@ -4,34 +4,25 @@ import { motion, AnimatePresence } from 'framer-motion'
import Image from 'next/image'
import { useState } from 'react'
const experiences = [
{
title: "Infinity Pool",
description: "Swim towards the horizon in our stunning heated infinity pool, overlooking the turquoise expanse of the Aegean Sea.",
image: "https://images.unsplash.com/photo-1576013551627-0cfde316be70?q=80&w=1974&auto=format&fit=crop"
},
{
title: "Snorkeling",
description: "Discover vibrant marine life, swim through crystal-clear waters, and experience the wonder of ocean.",
image: "https://images.unsplash.com/photo-1544551763-46a013bb70d5?q=80&w=2070&auto=format&fit=crop"
},
{
title: "Paddle boarding",
description: "Balance your soul and body while gliding over calm morning waves on our premium paddle boards.",
image: "https://images.unsplash.com/photo-1517176641128-052478950337?q=80&w=1974&auto=format&fit=crop"
},
{
title: "Fishing trips",
description: "Join our local experts for an authentic Mediterranean fishing experience at sunrise.",
image: "https://images.unsplash.com/photo-1524704652723-21444983944d?q=80&w=1974&auto=format&fit=crop"
}
const experienceImages = [
"https://res.cloudinary.com/du7xohbct/image/upload/v1776642503/ayrisapart/experiences/akbuk_cjfyan.jpg",
"https://res.cloudinary.com/du7xohbct/image/upload/v1776642502/ayrisapart/experiences/oren_d2pxcy.jpg",
"https://res.cloudinary.com/du7xohbct/image/upload/v1776642501/ayrisapart/experiences/alatepe_oawu3z.jpg",
"https://res.cloudinary.com/du7xohbct/image/upload/v1776642492/ayrisapart/experiences/cokertme_d5qfiw.jpg",
]
export default function Experiences() {
export default function Experiences({ dict }: { dict: any }) {
const [hoveredIdx, setHoveredIdx] = useState<number | null>(null)
const experiences = [
{ title: dict.experiences.e1.title, description: dict.experiences.e1.desc, image: experienceImages[0] },
{ title: dict.experiences.e2.title, description: dict.experiences.e2.desc, image: experienceImages[1] },
{ title: dict.experiences.e3.title, description: dict.experiences.e3.desc, image: experienceImages[2] },
{ title: dict.experiences.e4.title, description: dict.experiences.e4.desc, image: experienceImages[3] },
]
return (
<section className="relative z-60 bg-[#FAF7F0] py-32 px-6 md:px-12">
<section className="relative z-60 bg-[#FAF7F0] ">
<div className="max-w-[1400px] mx-auto space-y-20">
<div className="text-center space-y-4">
<motion.h2
@@ -41,7 +32,7 @@ export default function Experiences() {
transition={{ duration: 1.2, ease: [0.33, 1, 0.68, 1] }}
className="text-4xl md:text-[64px] font-medium text-[#1A1A1A] leading-tight"
>
Discover experiences <br /> beyond the shore
{dict.experiences.title}
</motion.h2>
</div>
@@ -67,6 +58,7 @@ export default function Experiences() {
src={exp.image}
alt={exp.title}
fill
sizes="(max-width: 768px) 100vw, 33vw"
className="object-cover transition-transform duration-1000 group-hover:scale-110"
/>