import React, { useState, useEffect, useRef } from "react"; import { createRoot } from "react-dom/client"; import { GoogleGenAI } from "@google/genai"; // --- Configuration --- // Nota: Em um app real, o número do salão viria de uma config. const SALON_PHONE_NUMBER = "5512997335155"; // Exemplo const API_KEY = process.env.API_KEY; const ADMIN_PASSWORD = "242024Julio"; // --- Data Models --- interface Service { id: string; name: string; price: string; duration: string; description: string; image: string; // Emoji or Icon class for simplicity } interface Product { id: string; name: string; price: number; description: string; image: string; // URL da imagem } const SERVICES: Service[] = [ { id: "corte-fem", name: "Corte & Estilo", price: "A partir de R$180,00", duration: "60 min", description: "Lavagem, corte visagista e finalização.", image: "fa-scissors", }, { id: "mechas", name: "Mechas & Luzes", price: "A partir de R$350,00", duration: "180 min", description: "Técnicas de balayage, ombré ou luzes tradicionais.", image: "fa-wand-magic-sparkles", }, { id: "hidratacao", name: "Hidratação Profunda", price: "A partir de R$80,00", duration: "45 min", description: "Reconstrução capilar com produtos premium.", image: "fa-droplet", }, { id: "manicure", name: "Manicure & Pedicure", price: "A partir de R$80,00", duration: "60 min", description: "Cuidado completo para mãos ou pés.", image: "fa-hand-sparkles", }, ]; const INITIAL_PRODUCTS: Product[] = [ { id: "p1", name: "Kit Shampoo & Condicionador Premium", price: 189.90, description: "Manutenção diária para cabelos coloridos. Protege a cor e hidrata.", image: "https://images.unsplash.com/photo-1535585209827-a15fcdbc4c2d?q=80&w=2070&auto=format&fit=crop" }, { id: "p2", name: "Óleo Reparador de Pontas", price: 85.00, description: "Nutrição intensa e brilho instantâneo sem pesar.", image: "https://images.unsplash.com/photo-1620916566398-39f1143ab7be?q=80&w=1887&auto=format&fit=crop" }, { id: "p3", name: "Máscara de Reconstrução", price: 120.00, description: "Recupera a fibra capilar danificada em 5 minutos.", image: "https://images.unsplash.com/photo-1556228720-19cb731de486?q=80&w=1931&auto=format&fit=crop" } ]; const PROFESSIONALS = ["Gabriele Mira", "Suellen", "Qualquer Disponível"]; // --- Components --- function Notification({ message, type, onClose }: { message: string, type: 'error' | 'success', onClose: () => void }) { useEffect(() => { const timer = setTimeout(() => { onClose(); }, 2000); return () => clearTimeout(timer); }, [onClose]); return (
{message}
); } function Header({ setView, currentView }) { return (
setView("home")} style={{ cursor: "pointer", display: "flex", alignItems: "center", gap: "10px" }} >

Studio Gabriele Mira

); } function Hero({ onBookNow }) { return (

Realce sua beleza natural

Experiência premium em cuidados capilares e estética. Agende seu horário e transforme seu visual hoje mesmo.

); } function ServiceList({ onSelectService }) { return (

Nossos Serviços

{SERVICES.map((service) => (

{service.name}

{service.description}

{service.price} | {service.duration}
))}
); } function ProductForm({ product, onSave, onCancel }) { const [formData, setFormData] = useState({ id: product ? product.id : Date.now().toString(), name: product ? product.name : "", price: product ? product.price : 0, description: product ? product.description : "", image: product ? product.image : "" }); const handleChange = (e) => { const value = e.target.name === 'price' ? parseFloat(e.target.value) : e.target.value; setFormData({ ...formData, [e.target.name]: value }); }; return (

{product ? "Editar Produto" : "Novo Produto"}