import React, { useState, useEffect } from 'react'; import { Menu, X, ArrowRight, Star, Scissors, Info, ShoppingBag, Trash2, Check, Plus, Calendar, ShieldCheck, Image as ImageIcon, Upload, Instagram } from 'lucide-react'; const AgathaFernedaVogue = () => { const [isMenuOpen, setIsMenuOpen] = useState(false); const [scrolled, setScrolled] = useState(false); // Modal & Cart States const [selectedService, setSelectedService] = useState(null); const [activeStyle, setActiveStyle] = useState(null); const [cart, setCart] = useState([]); const [isCartOpen, setIsCartOpen] = useState(false); // Add-on State (Local selection inside modal) const [selectedAddOns, setSelectedAddOns] = useState([]); // Constants const WHATSAPP_NUMBER = "5519991970576"; // --- IMAGE SYSTEM CONFIGURATION --- const SITE_IMAGES = { hero: 'assets/hero.jpg', profile: 'assets/profile.jpg', bg_texture: 'assets/bg.jpg' }; // Helper para imagem com fallback (Tratamento visual quando não há foto) const ImageWithFallback = ({ src, alt, className, isHero = false }) => { const [error, setError] = useState(false); // Reset error state when src changes useEffect(() => { setError(false); }, [src]); if (error || !src) { if (isHero) { // Fallback específico para a Capa (Hero) return (
{/* Empty hero fallback for cleaner look */}
); } // Fallback padrão para Serviços - OTIMIZADO PARA LEITURA return (
Sem Foto

Nome exato do arquivo:

{src}
); } return ( {alt} setError(true)} /> ); }; // Handle scroll for navbar styling useEffect(() => { const handleScroll = () => { setScrolled(window.scrollY > 50); }; window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); // Reset active selections when service changes useEffect(() => { setActiveStyle(null); setSelectedAddOns([]); }, [selectedService]); const toggleMenu = () => setIsMenuOpen(!isMenuOpen); const toggleCart = () => setIsCartOpen(!isCartOpen); const scrollToSection = (id) => { const element = document.getElementById(id); if (element) { element.scrollIntoView({ behavior: 'smooth' }); } setIsMenuOpen(false); setActiveSection(id); }; // --- Logic Helpers --- const parsePrice = (priceStr) => { if (!priceStr || typeof priceStr !== 'string') return 0; const cleanStr = priceStr.toLowerCase().replace('r$', '').replace('*', '').replace('a partir de', '').trim(); if (isNaN(cleanStr.replace(',', '.'))) return 0; return parseFloat(cleanStr.replace(',', '.')); }; const toggleAddOn = (addOn) => { if (selectedAddOns.find(item => item.name === addOn.name)) { setSelectedAddOns(selectedAddOns.filter(item => item.name !== addOn.name)); } else { setSelectedAddOns([...selectedAddOns, addOn]); } }; const addToCart = (item, specificVariant = null) => { const parentId = Date.now(); // Add Main Service const mainItem = { id: parentId, name: specificVariant ? `${item.name}: ${specificVariant.name}` : item.name, price: specificVariant ? specificVariant.price : item.price, note: specificVariant ? specificVariant.unit : null, isAddOn: false }; let itemsToAdd = [mainItem]; // Add Selected Add-ons (if any) if (selectedAddOns.length > 0) { selectedAddOns.forEach((addOn, index) => { itemsToAdd.push({ id: parentId + index + 1, name: `+ ${addOn.name} (${item.name})`, price: addOn.price, note: 'Adicional', isAddOn: true }); }); } setCart([...cart, ...itemsToAdd]); setIsCartOpen(true); setSelectedAddOns([]); }; const removeFromCart = (itemId) => { setCart(cart.filter(item => item.id !== itemId)); }; const calculateTotal = () => { return cart.reduce((total, item) => total + parsePrice(item.price), 0); }; const checkoutWhatsApp = () => { const total = calculateTotal(); let message = "Olá, Agatha! ✨\n\nFiz uma seleção no site e gostaria de agendar:\n\n"; cart.forEach(item => { if (item.isAddOn) { message += ` ➕ *${item.name.replace(/^\+ /, '')}* - R$ ${item.price}\n`; } else { message += `▪️ *${item.name}*\n Valor: R$ ${item.price} ${item.note ? `(${item.note})` : ''}\n`; } }); message += `\n*Total Estimado: R$ ${total.toFixed(2).replace('.', ',')}*\n`; message += "\nPodemos verificar a disponibilidade?"; const url = `https://wa.me/${WHATSAPP_NUMBER}?text=${encodeURIComponent(message)}`; window.open(url, '_blank'); }; // --- Data Configuration --- const services = { nails: [ { id: 'fibra', image: 'assets/services/fibra.jpg', name: "Fibra de Vidro", price: "190,00", maintenance: "120,00", note: "Durabilidade de 4 a 5 meses.", description: "Arquitetura perfeita para suas unhas. Esculpidas fio a fio, proporcionam alongamento com resistência extrema e acabamento natural.", care: [ "Hidrate as cutículas diariamente.", "Respeite o prazo de manutenção (15 a 28 dias)." ] }, { id: 'gel', image: 'assets/services/banho_gel.jpg', name: "Banho de Gel", price: "130,00", maintenance: "100,00", note: "Estruturação sobre unha natural.", description: "Proteção estruturada sobre as unhas naturais. Permite o crescimento saudável sem quebras, garantindo brilho permanente.", care: [ "Não lixe as unhas em casa.", "Manutenção regular evita infiltrações." ] }, { id: 'blindagem', image: 'assets/services/blindagem.jpg', name: "Blindagem", price: "90,00", note: "Proteção leve.", description: "Camada de proteção para unhas naturais, ideal para evitar descamação e quebra, mantendo a flexibilidade natural da unha com maior resistência.", care: [ "Evite contato excessivo com produtos químicos.", "Ideal para quem quer deixar a unha crescer naturalmente." ] } ], // Removal Service removal: { id: 'remocao', image: 'assets/services/remocao.jpg', name: "Remoção Segura", price: "30,00*", note: "Consulte opções", description: "Procedimento técnico para retirada segura do material artificial, preservando a integridade da lâmina natural. Essencial para a saúde das suas unhas.", menu: [ { name: "Com Nova Aplicação", desc: "Valor exclusivo para quem fará uma nova aplicação no mesmo atendimento.", price: "30,00", image: 'assets/services/remocao_com_aplicacao.jpg' }, { name: "Sem Nova Aplicação", desc: "Remoção completa + Manicure Tradicional (Cutilagem e Esmaltação inclusas).", price: "70,00", image: 'assets/services/remocao_sem_aplicacao.jpg' } ], care: [ "Utilize óleos hidratantes na unha natural após a remoção.", "Evite contato imediato com produtos químicos fortes." ] }, // Special Nail Art Object nailArt: { id: 'nail_art', image: 'assets/services/nail_art.jpg', name: "Nail Art Collection", price: "20,00*", note: "Valor inicial base", description: "Transforme suas unhas em telas de expressão. Nossa curadoria artística oferece desde o minimalismo elegante até composições complexas.", menu: [ { name: "Alto Relevo", desc: "Texturas 3D e formas esculpidas.", price: "8,00", unit: "unidade", image: 'assets/services/nail_art_alto_relevo.jpg' }, { name: "Feito a Mão", desc: "Micropintura artística e traços finos.", price: "15,00", unit: "a partir de", image: 'assets/services/nail_art_feito_a_mao.jpg' }, { name: "Temáticas", desc: "Coleções sazonais e datas festivas.", price: "15,00", unit: "a partir de", image: 'assets/services/nail_art_tematicas.jpg' }, { name: "Pedrarias & Charms", desc: "Aplicação de cristais e joias.", price: "5,00", unit: "unidade", image: 'assets/services/nail_art_pedrarias.jpg' } ], care: ["Evite atrito intenso em artes com relevo."] }, basics: [ { id: 'manicure', image: 'assets/services/manicure.jpg', name: "Manicure Tradicional", price: "35,00", description: "O clássico ritual de cuidado. Cutilagem minuciosa e esmaltação com acabamento impecável.", addOns: [ { name: "Esmaltação em Gel", price: "40,00" } ], care: ["Mantenha a hidratação diária das mãos."] }, { id: 'pedicure', image: 'assets/services/pedicure.jpg', name: "Pedicure Tradicional", price: "45,00", description: "Saúde e estética para seus pés. Inclui tratamento de calosidades superficiais, corte técnico e esmaltação.", addOns: [ { name: "Esmaltação em Gel", price: "40,00" }, { name: "Spa dos Pés", price: "25,00", desc: "Momento relaxante e hidratação para pés ressecados." }, { name: "Plástica dos Pés", price: "35,00", desc: "Remoção de calosidade superficiais e rachaduras." } ], care: ["Use calçados confortáveis após o procedimento."] }, { id: 'combo', image: 'assets/services/combo.jpg', name: "Combo Mãos & Pés", price: "65,00", description: "A experiência completa de renovação. Otimize seu tempo cuidando de mãos e pés simultaneamente.", addOns: [ { name: "Esmaltação em Gel (Mãos)", price: "40,00" }, { name: "Esmaltação em Gel (Pés)", price: "40,00" }, { name: "Esmaltação em Gel (Completo)", price: "75,00" } ], care: ["Reserve ao menos 2 horas para este atendimento."] } ], face: [ { id: 'des_estrat', image: 'assets/services/design_estrategico.jpg', name: "Design Estratégico", price: "30,00", description: "Mapeamento geométrico para encontrar o formato de sobrancelha que valoriza seus traços naturais.", care: ["Evite cremes ou maquiagem na região por 2 horas."] }, { id: 'henna', image: 'assets/services/henna.jpg', name: "Design com Henna", price: "45,00", description: "Design estratégico finalizado com pigmentação temporária.", care: ["Não molhe as sobrancelhas nas primeiras 12 horas."] }, { id: 'brow', image: 'assets/services/brow_lamination.jpg', name: "Brow Lamination", price: "160,00", description: "Técnica russa de alinhamento dos fios. Cria um efeito volumoso e sofisticado.", care: ["Mantenha seco nas primeiras 24 horas."] }, { id: 'lash', image: 'assets/services/lash_lifting.jpg', name: "Lash Lifting", price: "120,00", description: "Curvatura e tintura dos cílios naturais.", care: ["Evite água e vapor nas primeiras 24 horas."] } ], packages: [ { name: "Essential", description: "2 Mãos + 2 Pés", price: "130,00", image: 'assets/services/pacote_essential.jpg' }, { name: "Premium", description: "4 Mãos + 2 Pés", price: "180,00", image: 'assets/services/pacote_premium.jpg' }, { name: "Gel Experience", description: "2 Mãos + 2 Pés (Gel)", price: "250,00", image: 'assets/services/pacote_gel_exp.jpg' } ] }; // Logic to determine display values const currentDisplayName = activeStyle ? activeStyle.name : (selectedService ? selectedService.name : ''); const currentDisplayPrice = activeStyle && activeStyle.price ? activeStyle.price : (selectedService ? selectedService.price : ''); const currentUnit = activeStyle && activeStyle.unit ? activeStyle.unit : ''; // Logic for Dynamic Image (Style > Service > Default) const currentImage = activeStyle && activeStyle.image ? activeStyle.image : (selectedService ? selectedService.image : ''); return (
{/* Google Fonts Import */} {/* Navigation */} {/* Mobile Menu */} {isMenuOpen && (
{['Perfil', 'Serviços', 'Pacotes', 'Etiqueta', 'Contato'].map((item) => ( ))}
)} {/* SHOPPING CART DRAWER */}
setIsCartOpen(false)} />

Sua Sacola

{cart.length === 0 ? (

Sua sacola está vazia

) : (
{cart.map((item) => (

{item.name}

R$ {item.price} {item.note && item.note !== 'Adicional' && ({item.note})}

))}
)}
Total Estimado R$ {calculateTotal().toFixed(2).replace('.', ',')}
{/* Service Detail Modal */} {selectedService && (
setSelectedService(null)} >

Agatha Ferneda

Edição 2026 Collection Piracicaba
{/* Left Column */}
{/* SERVICE IMAGE - Top of Left Column - WIDESCREEN ASPECT RATIO & DYNAMIC SOURCE */}
{/* Subtle editorial number overlay */} 0{Math.floor(Math.random() * 9) + 1}
Serviço em Destaque

{currentDisplayName}

Investimento

{currentDisplayPrice.includes('*') && !activeStyle ? ( a partir de ) : null}

{currentDisplayPrice === 'Consultar' ? 'Consultar' : `R$ ${currentDisplayPrice.replace('*', '')}`}

{currentUnit && ({currentUnit})}
{selectedService.maintenance && !activeStyle && (

Manutenção: R$ {selectedService.maintenance}

)}
{/* Right Column */}
{/* Description */}

A {selectedService.description}

{/* Add-ons for Basics (Esmaltação em Gel, Spa, Plástica) */} {selectedService.addOns && (

Adicionais Disponíveis

{selectedService.addOns.map((addon, idx) => { const isSelected = selectedAddOns.some(item => item.name === addon.name); return (
toggleAddOn(addon)} className={`flex justify-between items-start p-3 cursor-pointer border transition-all duration-300 ${isSelected ? 'border-black bg-white' : 'border-transparent hover:bg-white hover:border-black/10'}`} >
{isSelected && }
{addon.name} {addon.desc && ( {addon.desc} )}
+ R$ {addon.price}
); })}
)} {/* Nail Art / Removal Menu */} {selectedService.menu && (

Menu de Opções

{selectedService.menu.map((item, idx) => (
setActiveStyle(item)} className={`group cursor-pointer p-2 -ml-2 rounded transition-colors duration-300 ${activeStyle?.name === item.name ? 'bg-black/5' : 'hover:bg-black/5'}`} >
{item.name} {activeStyle?.name === item.name && }

{item.desc}

))}
{activeStyle && ( )}
)} {selectedService.care && (

Cuidados

    {selectedService.care.map((careItem, idx) => (
  • {careItem}
  • ))}
)}
pág. {Math.floor(Math.random() * 50) + 10}
)} {/* Hero Section */}
{/* Background Image Loading */} {/* Overlay to ensure text readability */}

Piracicaba — 2026

Agatha
Ferneda

Especialista em Nail Design

{/* Editor's Letter (Bio) */}
{/* Profile Image Loading */}
01

A Assinatura

Acreditamos que unhas não são apenas detalhes, mas a extensão da sua identidade. Com uma visão inovadora e 3 anos de expertise, a Agatha Ferneda Studio oferece mais do que um serviço: entregamos autoestima.

Nossa filosofia une a técnica precisa da fibra de vidro com a delicadeza de um acabamento natural. Um espaço onde o clássico encontra a sofisticação moderna.

A.F.
{/* Services - Interactive List */}

Serviços

Clique para ver detalhes
{/* Column 1 */}

Nails

{services.nails.map((item, idx) => (
setSelectedService(item)} className="group cursor-pointer" >

{item.name}

R$ {item.price}

{item.note}

Manutenção: R$ {item.maintenance}
))} {/* Nail Art */}
setSelectedService(services.nailArt)} className="pt-8 mt-8 border-t border-dashed border-black/10 opacity-70 cursor-pointer group hover:opacity-100 transition-opacity duration-300" >

Nail Art

a partir de R$ 20,00

Baby boomer, encapsulada, autoral.

{/* Removal - Added Here */}
setSelectedService(services.removal)} className="pt-8 mt-8 border-t border-dashed border-black/10 opacity-70 cursor-pointer group hover:opacity-100 transition-opacity duration-300" >

Remoção

a partir de R$ 30,00

Retirada segura do alongamento.

{/* Column 2 */}

Care & Face

{/* Manicure Section */}
{services.basics.map((item, idx) => (
setSelectedService(item)} className="flex flex-col mb-10 last:mb-0 cursor-pointer group" >
{item.name} R$ {item.price}
{item.addOns && (
Opção Gel (+ R$ 40/75)
)}
))}
{/* Face Section */}

Brow Bar

{services.face.map((item, idx) => (
setSelectedService(item)} className="flex justify-between items-center mb-6 border-b border-black/5 pb-2 last:border-0 cursor-pointer group hover:bg-gray-50/50 transition-colors" > {item.name}
R$ {item.price} Ver +
))}
{/* Packages */}

The Club

Planos de Assinatura

{services.packages.map((pkg, idx) => (

{pkg.name}

{pkg.description}

R$ {pkg.price} Mensal
{/* Add Package to Cart Overlay */}
))}
{/* Etiqueta */}

Protocolo

Pontualidade

Para garantir a excelência e a tranquilidade do seu atendimento, o cumprimento do horário é essencial. Toleramos atrasos de até 10 minutos. Após esse período, o procedimento poderá sofrer adaptações para não comprometer a agenda.

Atmosfera & Conforto

Nosso studio é um refúgio de calma projetado para o seu relaxamento e autocuidado. Temos um espaço acolhedor pronto para te receber — chegue e desfrute de um cappuccino especial enquanto se desconecta do mundo lá fora.

Manutenções Externas

Acolhemos manutenções de trabalhos realizados por outros profissionais exclusivamente sob análise técnica prévia. Isso garante que possamos entregar o padrão de excelência Agatha Ferneda sem comprometer a saúde das suas unhas.

Reserva & Compromisso

Para oficializar sua primeira experiência, solicitamos um sinal de 30% do valor.

Após a primeira visita, essa taxa é dispensada. No entanto, em caso de reagendamento de um horário já confirmado, será necessário um novo aporte de 30% para a readequação da agenda.

{/* Footer */}
); }; export default AgathaFernedaVogue;