Files
2026-06-03 03:59:46 +03:00

150 lines
5.3 KiB
TypeScript

"use client";
import { useTranslations } from 'next-intl';
import { motion } from 'framer-motion';
import Image from 'next/image';
import { Users, Check, Sparkles } from 'lucide-react';
export default function Accommodation() {
const t = useTranslations('Accommodation');
const openWhatsApp = () => {
const phone = process.env.NEXT_PUBLIC_WHATSAPP_NUMBER || '905000000000';
window.open(`https://wa.me/${phone}`, '_blank');
};
const rooms = [
{
id: 'standard',
image: 'https://picsum.photos/600/400?random=3',
capacity: 2,
features: t.raw('rooms.standard.features') as string[],
featured: false,
gradient: 'linear-gradient(135deg, #00BFA5, #00E5FF)',
},
{
id: 'sea_view',
image: 'https://picsum.photos/600/400?random=4',
capacity: 2,
features: t.raw('rooms.sea_view.features') as string[],
featured: true,
gradient: 'linear-gradient(135deg, #FF5A36, #FFA827)',
},
{
id: 'garden_suite',
image: 'https://picsum.photos/600/400?random=5',
capacity: 4,
features: t.raw('rooms.garden_suite.features') as string[],
featured: false,
gradient: 'linear-gradient(135deg, #00BFA5, #00E5FF)',
},
];
return (
<section id="accommodation" className="py-28 bg-sandy/25 text-midnight">
<div className="container mx-auto px-6 lg:px-12">
<div className="text-center max-w-3xl mx-auto mb-16">
<motion.span
initial={{ opacity: 0, y: 10 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="text-xs tracking-[0.4em] uppercase font-black text-coral mb-4 block"
>
Konaklama
</motion.span>
<motion.h2
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="font-heading text-5xl md:text-6xl font-black mb-6 text-midnight"
>
{t('title')}
</motion.h2>
<motion.p
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: 0.1 }}
className="text-lg text-midnight/60"
>
{t('description')}
</motion.p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{rooms.map((room, index) => (
<motion.div
key={room.id}
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: index * 0.1, duration: 0.6 }}
className={`relative rounded-3xl overflow-hidden bg-white shadow-lg hover:shadow-2xl transition-all duration-500 hover:-translate-y-1 ${
room.featured ? 'outline outline-2 outline-offset-2 outline-coral' : ''
}`}
>
{/* Featured badge */}
{room.featured && (
<div
className="absolute top-4 right-4 z-10 flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[11px] font-black text-white tracking-wider"
style={{ background: 'linear-gradient(135deg, #FF5A36, #FFA827)' }}
>
<Sparkles size={10} />
FEATURED
</div>
)}
{/* Image */}
<div className="relative h-52 w-full overflow-hidden">
<Image
src={room.image}
alt={t(`rooms.${room.id}.name`)}
fill
sizes="(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"
className="object-cover transition-transform duration-700 hover:scale-110"
/>
<div
className="absolute inset-0"
style={{ background: 'linear-gradient(to top, rgba(8,13,24,0.5), transparent)' }}
/>
</div>
{/* Content */}
<div className="p-7">
<h3 className="font-heading text-xl font-black mb-2 text-midnight">
{t(`rooms.${room.id}.name`)}
</h3>
<div className="flex items-center gap-2 text-midnight/45 mb-5 text-sm">
<Users size={14} />
<span>
{t('capacity')} {room.capacity} {t('person')}
</span>
</div>
<ul className="space-y-2 mb-7">
{room.features.map((feature, i) => (
<li key={i} className="flex items-center gap-2.5 text-sm text-midnight/65">
<Check size={13} className="text-aqua flex-shrink-0" />
<span>{feature}</span>
</li>
))}
</ul>
<button
onClick={openWhatsApp}
className="w-full py-3.5 rounded-2xl font-black text-sm text-white transition-all duration-300 hover:opacity-90 hover:scale-[1.02]"
style={{ background: room.gradient }}
>
{t('book_whatsapp')}
</button>
</div>
</motion.div>
))}
</div>
</div>
</section>
);
}