// Contact — form + info function Contact() { const [form, setForm] = useState({ nombre: '', contacto: '', tipo: 'Tatuaje', estilo: 'Black & Grey', zona: 'Brazo', descripcion: '', website: '' }); const [sending, setSending] = useState(false); const [error, setError] = useState(''); const submitTimes = useRef([]); const change = (k) => (e) => setForm({ ...form, [k]: e.target.value }); const handleSubmit = (e) => { e.preventDefault(); // honeypot if (form.website) return; // rate limit const now = Date.now(); submitTimes.current = submitTimes.current.filter(t => now - t < 60000); if (submitTimes.current.length >= 3) { setError('Por favor espera un momento...'); return; } // validate if (form.nombre.trim().length < 3) { setError('Ingresa tu nombre (mínimo 3 caracteres).'); return; } setError(''); setSending(true); const n = sanitizeForm(form.nombre).slice(0, 60); const c = sanitizeForm(form.contacto).slice(0, 120); const d = sanitizeForm(form.descripcion); const extra = form.tipo === 'Tatuaje' ? ` Estilo: ${form.estilo}.` : ''; const msg = `Hola Edwin, soy ${n} (${c}). Me interesa: ${form.tipo}.${extra} Zona: ${form.zona}. ${d}`; submitTimes.current.push(now); setTimeout(() => { window.open(waLink(msg), '_blank', 'noopener,noreferrer'); setSending(false); }, 300); }; const infos = [ { icon: , label: 'WhatsApp', value: '+502 4666 4086', href: waLink('Hola Edwin, quiero agendar una cita') }, { icon: , label: 'Instagram', value: '@isfer502_tattoos', href: IG_URL }, { icon: , label: 'TikTok', value: '@isfer502', href: TT_URL }, { icon: , label: 'Ubicación', value: 'Hype Tattoo Collective, Quetzaltenango', href: MAP_URL }, { icon: , label: 'Horario', value: 'Lunes a Sábado · previa cita', href: null }, ]; return ( Contacto Agenda tu cita. ¿Listo para llevar arte en tu piel? {/* Left */} {infos.map((info, i) => { const Wrap = info.href ? 'a' : 'div'; return ( {info.icon} {info.label.toUpperCase()} {info.value} ); })} Respuesta rápida La mejor forma de contactarme es por WhatsApp. Respondo en menos de 2 horas. Escribir por WhatsApp {/* Right — form */} Nombre completo WhatsApp o Instagram Tipo Tatuaje Piercing Joyería Otro {form.tipo === 'Tatuaje' && ( Estilo Black & Grey Blackwork Fineline No sé aún )} Zona del cuerpo BrazoPierna EspaldaPecho OrejaOtro Describe tu idea {error && {error}} {sending ? 'Enviando…' : 'Enviar por WhatsApp'} Tu mensaje se abre en WhatsApp. No guardamos tus datos. ); } window.Contact = Contact;
¿Listo para llevar arte en tu piel?
La mejor forma de contactarme es por WhatsApp. Respondo en menos de 2 horas.
Tu mensaje se abre en WhatsApp. No guardamos tus datos.