'use client' import { useState } from 'react' import { AnimatedLogo } from '@/components/animated-logo' import { RollingPhrases } from '@/components/rolling-phrases' import { Crown, Star, Award, Diamond } from 'lucide-react' import { getDeviceType, sendWebhookPayload } from '@/lib/webhook' /** @description Membership tiers page component displaying exclusive membership options and application forms. */ export default function MembresiasPage() { const [formData, setFormData] = useState({ membership_id: '', nombre: '', email: '', telefono: '', mensaje: '' }) const [isSubmitting, setIsSubmitting] = useState(false) const [submitted, setSubmitted] = useState(false) const [showThankYou, setShowThankYou] = useState(false) const [submitError, setSubmitError] = useState(null) const tiers = [ { id: 'gold', name: 'GOLD TIER', icon: Star, description: 'Acceso curado y acompañamiento continuo.', price: '$2,500 MXN', period: '/mes', benefits: [ 'Prioridad de agenda en experiencias Anchor', 'Beauty Concierge para asesoría y coordinación de rituales', 'Acceso a horarios preferentes', 'Consulta de belleza mensual', 'Producto curado de cortesía mensual', 'Invitación anticipada a experiencias privadas' ] }, { id: 'black', name: 'BLACK TIER', icon: Award, description: 'Privilegios premium y atención extendida.', price: '$5,000 MXN', period: '/mes', benefits: [ 'Prioridad absoluta de agenda (sin listas de espera)', 'Beauty Concierge dedicado con seguimiento integral', 'Acceso a espacios privados y bloques extendidos', 'Dos rituales complementarios curados al mes', 'Set de productos premium trimestral', 'Acceso VIP a eventos cerrados' ] }, { id: 'vip', name: 'VIP TIER', icon: Crown, description: 'Acceso total y curaduría absoluta.', price: '$10,000 MXN', period: '/mes', featured: true, benefits: [ 'Acceso inmediato y sin restricciones de agenda', 'Beauty Concierge exclusivo + estilista asignado', 'Experiencias personalizadas ilimitadas (agenda privada)', 'Acceso a instalaciones fuera de horario', 'Evento privado anual para la member + 5 invitadas', 'Curaduría integral de rituales, productos y experiencias' ] } ] const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) setSubmitError(null) const payload = { form: 'memberships', membership_id: formData.membership_id, nombre: formData.nombre, email: formData.email, telefono: formData.telefono, mensaje: formData.mensaje, timestamp_utc: new Date().toISOString(), device_type: getDeviceType() } try { await sendWebhookPayload(payload) setSubmitted(true) setShowThankYou(true) window.setTimeout(() => setShowThankYou(false), 3500) setFormData({ membership_id: '', nombre: '', email: '', telefono: '', mensaje: '' }) } catch (error) { setSubmitError('No pudimos enviar tu solicitud. Intenta de nuevo.') } finally { setIsSubmitting(false) } } const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value }) } const handleApply = (tierId: string) => { setFormData((prev) => ({ ...prev, membership_id: tierId })) document.getElementById('application-form')?.scrollIntoView({ behavior: 'smooth' }) } return ( <>

Membresías

Anchor:23

Imagen Membresías Hero

Nota operativa

Las membresías no sustituyen el valor de las experiencias.

No existen descuentos ni negociaciones de estándar. Los beneficios se centran en tiempo, acceso, privacidad y criterio.

ANCHOR 23. Un espacio privado donde el tiempo se desacelera. No trabajamos con volumen. Trabajamos con intención.

ANCHOR 23 · MEMBRESÍAS

{tiers.map((tier) => { const Icon = tier.icon return (
{tier.featured && (
Más Popular
)}

{tier.name}

{tier.description}

Las membresías no ofrecen descuentos. Otorgan acceso prioritario, servicios plus y Beauty Concierge dedicado.

{tier.price}
{tier.period}
    {tier.benefits.map((benefit, index) => (
  • {benefit}
  • ))}
) })}

Solicitud de Membresía

{submitted ? (

Solicitud Recibida

Gracias por tu interés. Nuestro equipo revisará tu solicitud y te contactará pronto para completar el proceso.

) : (
{formData.membership_id && (
Membresía Seleccionada: {tiers.find(t => t.id === formData.membership_id)?.name}
)}