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:
@@ -7,25 +7,25 @@ import Image from 'next/image'
|
||||
|
||||
const images = [
|
||||
{
|
||||
src: "https://images.unsplash.com/photo-1541410950669-e771b058097d?q=80&w=2070&auto=format&fit=crop",
|
||||
w: 305, h: 225,
|
||||
src: "https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/1_cxfvrw.jpg",
|
||||
w: 305, h: 425,
|
||||
tx: -550, ty: -350,
|
||||
rotate: -2
|
||||
},
|
||||
{
|
||||
src: "https://images.unsplash.com/photo-1590490360182-c33d57733427?q=80&w=2100&auto=format&fit=crop",
|
||||
src: "https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/7_yuouc0.jpg",
|
||||
w: 325, h: 425,
|
||||
tx: 550, ty: -350,
|
||||
rotate: 1
|
||||
},
|
||||
{
|
||||
src: "https://images.unsplash.com/photo-1566665797739-1674de7a421a?q=80&w=2070&auto=format&fit=crop",
|
||||
src: "https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/2_dfrmwi.jpg",
|
||||
w: 385, h: 485,
|
||||
tx: -550, ty: 350,
|
||||
rotate: -1
|
||||
},
|
||||
{
|
||||
src: "https://images.unsplash.com/photo-1571896349842-33c89424de2d?q=80&w=2073&auto=format&fit=crop",
|
||||
src: "https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/8_kjih1z.jpg",
|
||||
w: 425, h: 365,
|
||||
tx: 550, ty: 350,
|
||||
rotate: 2
|
||||
@@ -81,7 +81,7 @@ export default function CallToAction({ lang, dict }: { lang: string, dict: any }
|
||||
>
|
||||
<div className={`relative shadow-2xl p-4 bg-white`} style={{ width: img.w, height: img.h }}>
|
||||
<div className="relative w-full h-full">
|
||||
<Image src={img.src} alt="Ayris" fill className="object-cover" />
|
||||
<Image src={img.src} alt="Ayris" fill sizes="(max-width: 768px) 100vw, 50vw" className="object-cover" />
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
+16
-24
@@ -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"
|
||||
/>
|
||||
|
||||
|
||||
+19
-28
@@ -16,10 +16,10 @@ export default function Footer({ lang, dict }: { lang: string, dict: any }) {
|
||||
</h2>
|
||||
<div className="space-y-4 pt-10 md:pt-0">
|
||||
<div className="flex items-center justify-end space-x-3 text-sm font-medium tracking-widest opacity-80">
|
||||
<Phone size={15} className="opacity-60" /> <span>+90 543 231 87 13</span>
|
||||
<Phone size={15} className="opacity-60" /> <span>+90 543 231 87 13 — +90 554 376 51 03</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-end space-x-3 text-sm font-medium tracking-widest opacity-80">
|
||||
<Mail size={15} className="opacity-60" /> <span>hello@ayrisapart.com</span>
|
||||
<Mail size={15} className="opacity-60" /> <span>bilgi@ayrisapart.com</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,12 +33,10 @@ export default function Footer({ lang, dict }: { lang: string, dict: any }) {
|
||||
{/* LEFT CONTENT (CTA) */}
|
||||
<div className="lg:col-span-5 space-y-10 max-w-sm">
|
||||
<p className="text-white/70 text-[17px] leading-relaxed">
|
||||
{lang === 'tr'
|
||||
? "Konaklamanızı bugün ayırtın ve Ören kıyılarında deniz kenarı lüksünü, nefes kesen manzaraları ve unutulmaz anları keşfedin."
|
||||
: "Book your stay today and discover seaside luxury, breathtaking views, and unforgettable moments on the shores of Oren."}
|
||||
{dict.footer.desc}
|
||||
</p>
|
||||
<Link
|
||||
href={`/${lang}/reservation`}
|
||||
href={`/${lang}/contact`}
|
||||
className="inline-flex items-center space-x-2 border-b border-white/40 pb-1 group hover:border-white transition-all"
|
||||
>
|
||||
<span className="text-[#C88C4B] text-xl transform group-hover:translate-x-1 transition-transform">↳</span>
|
||||
@@ -48,45 +46,37 @@ export default function Footer({ lang, dict }: { lang: string, dict: any }) {
|
||||
|
||||
{/* RIGHT LINKS */}
|
||||
<div className="lg:col-span-7">
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-12">
|
||||
<div className="grid grid-cols-2 md:grid-cols-3 gap-12">
|
||||
{/* EXPLORE */}
|
||||
<div className="space-y-8">
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">EXPLORE</h4>
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">{dict.footer.explore}</h4>
|
||||
<ul className="space-y-4 text-sm font-medium opacity-60 uppercase tracking-widest">
|
||||
<li><Link href={`/${lang}`} className="hover:opacity-100 transition-opacity">{dict.nav.home}</Link></li>
|
||||
<li><Link href={`/${lang}/about`} className="hover:opacity-100 transition-opacity">{dict.nav.about}</Link></li>
|
||||
<li><Link href={`/${lang}/news`} className="hover:opacity-100 transition-opacity">{dict.nav.news}</Link></li>
|
||||
<li><Link href={`/${lang}/suites`} className="hover:opacity-100 transition-opacity">{dict.nav.suites}</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* OTHERS */}
|
||||
<div className="space-y-8">
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">OTHERS</h4>
|
||||
<ul className="space-y-4 text-sm font-medium opacity-60 uppercase tracking-widest">
|
||||
<li><Link href={`/${lang}/services`} className="hover:opacity-100 transition-opacity">Services</Link></li>
|
||||
<li><Link href={`/${lang}/activities`} className="hover:opacity-100 transition-opacity">Activities</Link></li>
|
||||
<li><Link href={`/${lang}/gallery`} className="hover:opacity-100 transition-opacity">Gallery</Link></li>
|
||||
<li><Link href={`/${lang}/blog`} className="hover:opacity-100 transition-opacity">{dict.nav.news}</Link></li>
|
||||
<li><Link href={`/${lang}/contact`} className="hover:opacity-100 transition-opacity">{dict.nav.contact}</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* UTILITY */}
|
||||
{/* CONTACT */}
|
||||
<div className="space-y-8">
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">UTILITY</h4>
|
||||
<ul className="space-y-4 text-sm font-medium opacity-60 uppercase tracking-widest">
|
||||
<li><Link href={`/${lang}/license`} className="hover:opacity-100 transition-opacity">License</Link></li>
|
||||
<li><Link href={`/${lang}/404`} className="hover:opacity-100 transition-opacity">404</Link></li>
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">{dict.contact.title}</h4>
|
||||
<ul className="space-y-4 text-sm font-medium opacity-60 tracking-widest">
|
||||
<li>+90 543 231 87 13</li>
|
||||
<li>+90 554 376 51 03</li>
|
||||
<li>bilgi@ayrisapart.com</li>
|
||||
<li className="leading-relaxed">{dict.contact.visit.d}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* SOCIALS */}
|
||||
<div className="space-y-8">
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">SOCIALS</h4>
|
||||
<h4 className="text-[10px] font-bold tracking-[0.4em] opacity-40 uppercase">{dict.footer.socials}</h4>
|
||||
<ul className="space-y-4 text-sm font-medium opacity-60 uppercase tracking-widest">
|
||||
<li><a href="#" className="hover:opacity-100 transition-opacity">Instagram</a></li>
|
||||
<li><a href="https://instagram.com/ayrisapart" target="_blank" className="hover:opacity-100 transition-opacity">Instagram</a></li>
|
||||
<li><a href="#" className="hover:opacity-100 transition-opacity">Facebook</a></li>
|
||||
<li><a href="#" className="hover:opacity-100 transition-opacity">Twitter</a></li>
|
||||
<li><a href="#" className="hover:opacity-100 transition-opacity">WhatsApp</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -109,7 +99,8 @@ export default function Footer({ lang, dict }: { lang: string, dict: any }) {
|
||||
<Image
|
||||
src="/logo.png"
|
||||
alt="Ayris Apart Logo"
|
||||
fill
|
||||
fill
|
||||
sizes="200px"
|
||||
className="object-contain filter brightness-0 invert"
|
||||
/>
|
||||
</div>
|
||||
|
||||
+22
-22
@@ -8,48 +8,48 @@ import Image from 'next/image'
|
||||
const heroSlots = [
|
||||
{
|
||||
srcs: [
|
||||
'https://images.unsplash.com/photo-1582719478250-c89cae4dc85b?q=80&w=2070&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1566665797739-1674de7a421a?q=80&w=2070&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1590490360182-c33d57733427?q=80&w=2070&auto=format&fit=crop',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/1_cxfvrw.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/9_vym2pc.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/8_kjih1z.jpg',
|
||||
],
|
||||
rotate: -12,
|
||||
top: '15%',
|
||||
rotate: 15,
|
||||
top: '5%',
|
||||
left: '22%',
|
||||
size: 'w-48 h-64 md:w-64 md:h-80',
|
||||
delay: 0.2
|
||||
},
|
||||
{
|
||||
srcs: [
|
||||
'https://images.unsplash.com/photo-1544124499-58912cbddaad?q=80&w=2127&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?q=80&w=2127&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1571896349842-33c89424de2d?q=80&w=2127&auto=format&fit=crop',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/7_yuouc0.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/4_eeyoge.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/3_tolqzo.jpg',
|
||||
],
|
||||
rotate: 10,
|
||||
top: '10%',
|
||||
rotate: -15,
|
||||
top: '8%',
|
||||
left: '58%',
|
||||
size: 'w-52 h-64 md:w-72 md:h-80',
|
||||
delay: 0.4
|
||||
},
|
||||
{
|
||||
srcs: [
|
||||
'https://images.unsplash.com/photo-1507525428034-b723cf961d3e?q=80&w=2073&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1519046904884-53103b34b206?q=80&w=2073&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1506929199020-feee17651703?q=80&w=2073&auto=format&fit=crop',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/2_dfrmwi.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/5_mmcnjw.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/6_x44c4w.jpg',
|
||||
],
|
||||
rotate: -8,
|
||||
top: '65%',
|
||||
top: '60%',
|
||||
left: '18%',
|
||||
size: 'w-48 h-60 md:w-64 md:h-72',
|
||||
delay: 0.6
|
||||
},
|
||||
{
|
||||
srcs: [
|
||||
'https://images.unsplash.com/photo-1536935338218-422119932906?q=80&w=1964&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1618773928121-c32242e63f39?q=80&w=1964&auto=format&fit=crop',
|
||||
'https://images.unsplash.com/photo-1560185007-cde436f6a4d0?q=80&w=1964&auto=format&fit=crop',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/4_eeyoge.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641695/ayrisapart/hero/5_mmcnjw.jpg',
|
||||
'https://res.cloudinary.com/du7xohbct/image/upload/v1776641696/ayrisapart/hero/9_vym2pc.jpg',
|
||||
],
|
||||
rotate: 15,
|
||||
top: '72%',
|
||||
rotate: -8,
|
||||
top: '62%',
|
||||
left: '62%',
|
||||
size: 'w-52 h-64 md:w-72 md:h-88',
|
||||
delay: 0.8
|
||||
@@ -112,7 +112,7 @@ function FloatingSlot({ slot, idx }: { slot: typeof heroSlots[0], idx: number })
|
||||
|
||||
export default function Hero({ lang, dict }: { lang: string, dict: any }) {
|
||||
return (
|
||||
<section className="sticky top-0 z-[20] h-screen w-full bg-[#FAF7F0] flex items-center justify-center overflow-hidden">
|
||||
<section className="sticky top-30 z-[20] h-screen w-full bg-[#FAF7F0] flex items-center justify-center overflow-hidden">
|
||||
{/* BACKGROUND TEXT */}
|
||||
<motion.div
|
||||
initial={{ opacity: 0, scale: 0.95 }}
|
||||
@@ -120,7 +120,7 @@ export default function Hero({ lang, dict }: { lang: string, dict: any }) {
|
||||
transition={{ duration: 1.5, ease: [0.33, 1, 0.68, 1] }}
|
||||
className="relative z-10 w-full text-center px-4"
|
||||
>
|
||||
<h1 className="text-[14vw] leading-[0.8] font-serif tracking-[-0.04em] text-[#1A1A1A] uppercase select-none drop-shadow-sm">
|
||||
<h1 className="text-[18vw] leading-[0.8] font-serif tracking-[-0.04em] text-[#1F1C19] uppercase select-none drop-shadow-sm">
|
||||
{dict.hero.title}
|
||||
</h1>
|
||||
</motion.div>
|
||||
@@ -131,7 +131,7 @@ export default function Hero({ lang, dict }: { lang: string, dict: any }) {
|
||||
))}
|
||||
|
||||
{/* BOTTOM CONTENT */}
|
||||
<div className="absolute bottom-12 right-12 z-30 max-w-sm text-right flex flex-col items-end space-y-6">
|
||||
<div className="absolute bottom-36 right-12 z-30 max-w-sm text-right flex flex-col items-end space-y-6">
|
||||
<motion.p
|
||||
initial={{ opacity: 0, x: 20 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function Navbar({ lang, dict }: { lang: string, dict: any }) {
|
||||
const navLinks = [
|
||||
{ name: dict.nav.about, href: `/${lang}/about` },
|
||||
{ name: dict.nav.suites, href: `/${lang}/suites`, hasDropdown: true },
|
||||
{ name: dict.nav.news, href: `/${lang}/news` },
|
||||
{ name: dict.nav.news, href: `/${lang}/blog` },
|
||||
]
|
||||
|
||||
useEffect(() => {
|
||||
@@ -55,13 +55,13 @@ export default function Navbar({ lang, dict }: { lang: string, dict: any }) {
|
||||
initial={{ y: -100 }}
|
||||
animate={{ y: isVisible ? 0 : -100 }}
|
||||
transition={{ duration: 0.6, ease: [0.33, 1, 0.68, 1] }}
|
||||
className={`fixed top-0 left-0 right-0 z-[100] transition-all duration-500 flex justify-center py-4 px-6 md:px-12`}
|
||||
className={`fixed top-0 left-0 right-0 z-[100] transition-all duration-500 flex justify-center px-6 md:px-12`}
|
||||
>
|
||||
<div className={`w-full flex items-center justify-between bg-white rounded-[2px] transition-all duration-500 border border-[#1A1A1A]/5 ${isScrolled ? 'py-3 px-10' : 'py-5 px-12'}`}>
|
||||
<div className={`w-full mx-auto max-w-[1700px] flex items-center justify-between bg-white rounded-[2px] transition-all duration-500 border border-[#1F1C19]/5 ${isScrolled ? 'py-3 px-10' : 'py-5 px-12'}`}>
|
||||
{/* LOGO */}
|
||||
<Link href={`/${lang}`} className="flex items-center group">
|
||||
<span className="text-[24px] font-serif tracking-[0.25em] text-[#1A1A1A] uppercase">
|
||||
AYRIS APART
|
||||
<span className="text-[36px] font-serif font-bold text-[#1F1C19] ">
|
||||
AyrisApart
|
||||
</span>
|
||||
</Link>
|
||||
|
||||
@@ -71,7 +71,7 @@ export default function Navbar({ lang, dict }: { lang: string, dict: any }) {
|
||||
<Link
|
||||
key={link.name}
|
||||
href={link.href}
|
||||
className="group relative text-[11px] font-bold tracking-[0.35em] uppercase text-[#1A1A1A]/70 hover:text-[#1A1A1A] transition-colors overflow-hidden"
|
||||
className="group relative text-[18px] font-sans uppercase text-[#1F1C19] hover:text-[#1A1A1A] transition-colors overflow-hidden"
|
||||
>
|
||||
<span className="block">{link.name}</span>
|
||||
<span className="absolute bottom-0 left-0 w-full h-[1.5px] bg-[#C88C4B] transform scale-x-0 group-hover:scale-x-100 transition-transform duration-500 origin-left" />
|
||||
@@ -101,7 +101,7 @@ export default function Navbar({ lang, dict }: { lang: string, dict: any }) {
|
||||
href={`/${lang}/contact`}
|
||||
className="hidden lg:flex items-center space-x-3 group"
|
||||
>
|
||||
<span className="text-[11px] font-bold tracking-[0.35em] uppercase text-[#1A1A1A]">{dict.nav.contact}</span>
|
||||
<span className="text-[18px] font-bold uppercase text-[#1F1C19]">{dict.nav.contact}</span>
|
||||
<div className="w-10 h-10 rounded-full border border-[#1A1A1A]/10 flex items-center justify-center group-hover:bg-[#1A1A1A] group-hover:border-[#1A1A1A] transition-all duration-500">
|
||||
<ArrowRight size={16} className="text-[#1A1A1A] group-hover:text-white transition-colors" />
|
||||
</div>
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
import { motion } from 'framer-motion'
|
||||
|
||||
export default function QuoteSection() {
|
||||
export default function QuoteSection({ dict }: { dict: any }) {
|
||||
return (
|
||||
<section className="relative z-60 bg-[#FAF7F0] py-40 flex items-center justify-center text-center px-6">
|
||||
<section className="relative z-60 bg-[#FAF7F0] pt-20 flex items-center justify-center text-center px-6 ">
|
||||
<motion.h2
|
||||
initial={{ opacity: 0, y: 40 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
viewport={{ once: true }}
|
||||
transition={{ duration: 1.5, ease: [0.33, 1, 0.68, 1] }}
|
||||
className="text-4xl md:text-[80px] font-medium text-[#1A1A1A] leading-[1.1] max-w-5xl"
|
||||
className="text-4xl md:text-[80px] font-medium text-[#1A1A1A] leading-[1.1] max-w-5xl w-[800px] mx-auto"
|
||||
>
|
||||
Luxury stays designed for ocean lovers
|
||||
{dict.quote}
|
||||
</motion.h2>
|
||||
</section>
|
||||
)
|
||||
|
||||
@@ -12,12 +12,12 @@ export default function ShowcaseImage() {
|
||||
})
|
||||
|
||||
// Slightly increased scales for a better balance
|
||||
const scale = useTransform(scrollYProgress, [0, 0.4], [0.8, 1.0])
|
||||
const scale = useTransform(scrollYProgress, [0, 0.4], [0.1, 1.0])
|
||||
const opacity = useTransform(scrollYProgress, [0, 0.2], [0, 1])
|
||||
|
||||
return (
|
||||
<section ref={containerRef} className="relative z-60 bg-[#FAF7F0] pb-32">
|
||||
<div className="max-w-[1400px] mx-auto px-6 overflow-hidden">
|
||||
<div className=" mx-auto px-6 overflow-hidden">
|
||||
<motion.div
|
||||
style={{
|
||||
scale,
|
||||
@@ -26,9 +26,10 @@ export default function ShowcaseImage() {
|
||||
className="relative aspect-[16/9] w-full overflow-hidden shadow-xl rounded-sm"
|
||||
>
|
||||
<Image
|
||||
src="https://images.unsplash.com/photo-1571896349842-33c89424de2d?q=80&w=2080&auto=format&fit=crop"
|
||||
src="https://res.cloudinary.com/du7xohbct/image/upload/v1776642098/ayrisapart/hero/photo-1501696461415-6bd6660c6742_rkxjcu.avif"
|
||||
alt="Luxury Cave Pool Experience"
|
||||
fill
|
||||
sizes="(max-width: 768px) calc(100vw - 48px), calc(100vw - 48px)"
|
||||
className="object-cover"
|
||||
priority
|
||||
/>
|
||||
|
||||
@@ -22,9 +22,9 @@ export default function SuitesHighlights({ lang, dict }: { lang: string, dict: a
|
||||
{ id: 'arke', number: '03', name: dict.suites.s3.name, desc: dict.suites.s3.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606654/ayrisapart/Daire%203/photo_1_2024-04-05_16-06-09.jpg' },
|
||||
{ id: 'harpy', number: '04', name: dict.suites.s4.name, desc: dict.suites.s4.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606661/ayrisapart/Daire%204/photo_1_2024-04-05_16-07-01.jpg' },
|
||||
{ id: 'hydaspes', number: '05', name: dict.suites.s5.name, desc: dict.suites.s5.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606671/ayrisapart/Daire%205/photo_1_2024-05-04_15-32-44.jpg' },
|
||||
{ id: 'zephyrus', number: '06', name: dict.suites.s6.name, desc: dict.suites.s6.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606681/ayrisapart/Daire%206/photo_1_2024-05-04_15-32-44.jpg' },
|
||||
{ id: 'pothos', number: '07', name: dict.suites.s7.name, desc: dict.suites.s7.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606689/ayrisapart/Daire%207/photo_1_2024-05-04_15-33-34.jpg' },
|
||||
{ id: 'thaumas', number: '08', name: dict.suites.s8.name, desc: dict.suites.s8.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606696/ayrisapart/Daire%208/photo_1_2024-05-04_15-33-34.jpg' },
|
||||
{ id: 'zephyrus', number: '06', name: dict.suites.s6.name, desc: dict.suites.s6.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606681/ayrisapart/Daire%206/photo_1_2024-05-04_15-33-08.jpg' },
|
||||
{ id: 'pothos', number: '07', name: dict.suites.s7.name, desc: dict.suites.s7.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606689/ayrisapart/Daire%207/photo_8_2024-05-04_15-33-34.jpg' },
|
||||
{ id: 'thaumas', number: '08', name: dict.suites.s8.name, desc: dict.suites.s8.desc, image: 'https://res.cloudinary.com/du7xohbct/image/upload/v1776606696/ayrisapart/Daire%208/photo_9_2024-05-04_15-33-34.jpg' },
|
||||
]
|
||||
|
||||
return (
|
||||
@@ -100,6 +100,7 @@ function SuiteCard({ suite, index, lang, dict }: { suite: Suite, index: number,
|
||||
src={suite.image}
|
||||
alt={suite.name}
|
||||
fill
|
||||
sizes="(max-width: 768px) 100vw, 50vw"
|
||||
className="object-cover"
|
||||
/>
|
||||
</motion.div>
|
||||
|
||||
@@ -5,7 +5,7 @@ import Link from 'next/link'
|
||||
|
||||
export default function Welcome({ lang, dict }: { lang: string, dict: any }) {
|
||||
return (
|
||||
<section className="relative z-[70] bg-[#FAF7F0] mt-24 md:mt-32 rounded-t-[40px] md:rounded-t-[100px] py-32 md:py-48 px-6 md:px-12 flex flex-col items-center text-center shadow-[0_-40px_100px_rgba(0,0,0,0.1)] overflow-hidden">
|
||||
<section className="relative z-[70] bg-[#FAF7F0] mt-24 md:mt-32 rounded-t-[40px] md:rounded-t-[100px] py-16 md:py-8 px-6 md:px-12 flex flex-col items-center text-center shadow-[0_-40px_100px_rgba(0,0,0,0.1)] overflow-hidden">
|
||||
{/* Lotus/Floral Icon */}
|
||||
<motion.div
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
|
||||
Reference in New Issue
Block a user