'use client' import { useState, useEffect } from 'react' import { AnimatedLogo } from '@/components/animated-logo' import { RollingPhrases } from '@/components/rolling-phrases' /** @description Premium services page with elegant layout and sophisticated design */ interface Service { id: string name: string description: string duration_minutes: number base_price: number category: string requires_dual_artist: boolean is_active: boolean } export default function ServiciosPage() { const [services, setServices] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { fetchServices() }, []) const fetchServices = async () => { try { const response = await fetch('/api/services') const data = await response.json() if (data.success) { setServices(data.services.filter((s: Service) => s.is_active)) } } catch (error) { console.error('Error fetching services:', error) } finally { setLoading(false) } } const formatCurrency = (amount: number) => { return new Intl.NumberFormat('es-MX', { style: 'currency', currency: 'MXN' }).format(amount) } const formatDuration = (minutes: number) => { const hours = Math.floor(minutes / 60) const mins = minutes % 60 if (hours > 0) { return mins > 0 ? `${hours}h ${mins}min` : `${hours}h` } return `${mins} min` } const getCategoryTitle = (category: string) => { const titles: Record = { core: 'CORE EXPERIENCES', nails: 'NAIL COUTURE', hair: 'HAIR FINISHING RITUALS', lashes: 'LASH & BROW RITUALS', brows: 'LASH & BROW RITUALS', events: 'EVENT EXPERIENCES', permanent: 'PERMANENT RITUALS' } return titles[category] || category } const getCategorySubtitle = (category: string) => { const subtitles: Record = { core: 'El corazón de Anchor 23', nails: 'Técnica invisible. Resultado impecable.', hair: 'Disponibles únicamente para clientas con experiencia Anchor el mismo día', lashes: 'Mirada definida con sutileza', brows: 'Mirada definida con sutileza', events: 'Agenda especial', permanent: 'Agenda limitada · Especialista certificada' } return subtitles[category] || '' } const getCategoryDescription = (category: string) => { const descriptions: Record = { core: 'Rituales conscientes donde el tiempo se desacelera. Cada experiencia está diseñada para mujeres que valoran el silencio, la atención absoluta y los resultados impecables.', nails: 'En Anchor 23 no eliges técnicas. Cada decisión se toma internamente para lograr un resultado elegante, duradero y natural. No ofrecemos servicios de mantenimiento ni correcciones.', hair: '', lashes: '', brows: '', events: 'Agenda especial para ocasiones selectas.', permanent: '' } return descriptions[category] || '' } const groupedServices = services.reduce((acc, service) => { if (!acc[service.category]) { acc[service.category] = [] } acc[service.category].push(service) return acc }, {} as Record) const categoryOrder = ['core', 'nails', 'hair', 'lashes', 'brows', 'events', 'permanent'] if (loading) { return (

Cargando servicios...

) } return ( <> {/* Hero Section - Simplified and Elegant */}
{/* Background Pattern */}

Nuestros Servicios

Experiencias diseñadas para mujeres que valoran el silencio, la atención absoluta y los resultados impecables.

{/* Philosophy Section */}

Nuestra Filosofía

Criterio antes que cantidad

Anchor 23 es un espacio privado donde el tiempo se desacelera. Aquí, cada experiencia está diseñada para mujeres que valoran el silencio, la atención absoluta y los resultados impecables.

No trabajamos con volumen. Trabajamos con intención.

Imagen Experiencias
{/* Services Catalog */}
{categoryOrder.map(category => { const categoryServices = groupedServices[category] if (!categoryServices || categoryServices.length === 0) return null return (
{/* Category Header */}

{getCategorySubtitle(category)}

{getCategoryTitle(category)}

{getCategoryDescription(category) && (

{getCategoryDescription(category)}

)}
{/* Service Cards Grid */}
{categoryServices.map((service) => (
{ e.currentTarget.style.borderColor = 'var(--mocha-taupe)' e.currentTarget.style.background = 'var(--bone-white)' }} onMouseLeave={(e) => { e.currentTarget.style.borderColor = 'transparent' e.currentTarget.style.background = 'var(--soft-cream)' }} > {/* Service Header */}

{service.name}

{service.description && (

{service.description}

)}
{/* Service Meta */}
{formatDuration(service.duration_minutes)}
{service.requires_dual_artist && ( Dual Artist )}
{/* Price and CTA */}

Desde

{formatCurrency(service.base_price)}

Reservar
))}
) })}
{/* Values Section */}

Lo que Define Anchor 23

{[ 'No ofrecemos retoques ni servicios aislados', 'No trabajamos con prisas', 'No explicamos de más' ].map((text, idx) => (

{text}

))}
{[ 'No negociamos estándares', 'Cada experiencia está pensada para durar, sentirse y recordarse' ].map((text, idx) => (

{text}

))}
{/* Final CTA */}

¿Lista para tu experiencia?

Reserva tu cita y descubre lo que significa una atención verdaderamente personalizada.

Reservar Ahora
) }