From dfae6bae2f4ce793ff08706ce3cca67c4b7b562a Mon Sep 17 00:00:00 2001 From: Evandro Fonseca Junior Date: Mon, 12 Jan 2026 16:44:37 -0300 Subject: [PATCH] feat(contact): enhance form submission and improve user experience - Updated the Contact component to include a WhatsApp integration for project requests, streamlining communication. - Improved form handling with clearer placeholder text and refined emoji-based message templates for better user engagement. - Adjusted submission delay for a more responsive user experience and enhanced button labeling for clarity. --- app/components/Contact.tsx | 98 +++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/app/components/Contact.tsx b/app/components/Contact.tsx index 0176481..867e4ed 100644 --- a/app/components/Contact.tsx +++ b/app/components/Contact.tsx @@ -1,12 +1,14 @@ "use client"; import React, { useState } from "react"; -import { motion } from "framer-motion"; // Ajustado para o padrão mais estável +import { motion } from "framer-motion"; import { Send, User, Mail, MessageSquare, Sparkles } from "lucide-react"; -// Importamos o componente original. -// Nota: Se o erro de tipo persistir, corrigiremos a interface aqui no wrapper. import { ShimmerButton as MagicShimmerButton } from "@/components/magicui/shimmer-button"; +// --- CONFIGURAÇÃO DE ENGENHARIA --- +// Substitua pelo seu número real: CódigoPaís + DDD + Número (sem espaços ou símbolos) +const WHATSAPP_NUMBER = "5547992742365"; + interface FormData { name: string; email: string; @@ -15,15 +17,12 @@ interface FormData { } /** - * Wrapper Component para corrigir o erro de tipagem TS2322 - * Aqui garantimos que o componente aceite as cores e tamanhos + * Wrapper Component: Resolve o erro de tipagem TS2322 (IntrinsicAttributes) + * Estendemos a interface para aceitar propriedades de estilo customizadas. */ -interface ExtendedShimmerProps { - children: React.ReactNode; - className?: string; +interface ExtendedShimmerProps extends React.ComponentProps { shimmerColor?: string; shimmerSize?: string; - onClick?: () => void; type?: "button" | "submit" | "reset"; disabled?: boolean; } @@ -39,9 +38,7 @@ const CustomShimmerButton = ({ @@ -63,10 +60,36 @@ export default function Contact() { e.preventDefault(); setIsSubmitting(true); - // Simulação de latência de rede (Princípio de UX Feedback) - await new Promise((resolve) => setTimeout(resolve, 1500)); + await new Promise((resolve) => setTimeout(resolve, 800)); - console.log("Payload de Engenharia enviado:", formData); + // Definimos os emojis via Unicode Escape para máxima compatibilidade + const icons = { + rocket: "\u{1F680}", + person: "\u{1F464}", + email: "\u{1F4E7}", + tools: "\u{1F6E0}", + chat: "\u{1F4AC}" + }; + + const messageTemplate = `${icons.rocket} *NOVA REQUISICAO DE PROJETO* + +*Origem:* Portfolio Profissional +*Prioridade:* Alta (Lead Qualificado) + +--- +${icons.person} *CLIENTE:* ${formData.name} +${icons.email} *EMAIL:* ${formData.email} +${icons.tools} *AREA:* ${formData.subject.toUpperCase()} + +${icons.chat} *DESCRICAO:* +"${formData.message}" +--- +_Mensagem gerada via Evandro.dev | Garuva, SC_`; + + const encodedMessage = encodeURIComponent(messageTemplate); + const whatsappUrl = `https://wa.me/${WHATSAPP_NUMBER}?text=${encodedMessage}`; + + window.open(whatsappUrl, "_blank", "noopener,noreferrer"); setIsSubmitting(false); }; @@ -79,7 +102,6 @@ export default function Contact() {
- {/* Nome */}
- {/* Email */}
- {/* Tipo de Requisição */}
- {/* Mensagem */}