/* ============================================================ ADMIN · información del restaurante + reservas ============================================================ */ function BrandEditor() { const store = useStore(); const [confirm, confirmNode] = useConfirm(); const [f, setF] = useState(structuredClone(store.data.brand)); const set = (k,v) => setF(s => ({...s,[k]:v})); const dirty = JSON.stringify(f) !== JSON.stringify(store.data.brand); const onLogo = async (e) => { const file = e.target.files[0]; if (!file) return; try { const url = await store.fileToDataURL(file, 400, 0.85); set('logo', url); } catch { store.toast('No se pudo cargar el logo','err'); } }; return (
Datos de contacto, redes sociales, logo y reservas. Se muestran en la carta pública.
Las claves de cada persona se gestionan en Usuarios. Esta clave es solo la que usa el sitio para guardar en el servidor.
Activación rápida con EmailJS (sin servidor). Cuando un cliente reserva: recibe un correo de “solicitud recibida — pendiente” y a ti te llega un aviso. Apruebas o rechazas en Reservas y el cliente recibe automáticamente tu respuesta.
{'{{to_email}}'}, Subject = {'{{subject}}'}, Content = {'{{message}}'}.Los datos se guardan en este dispositivo/navegador. Exporta un respaldo con regularidad y úsalo para pasar la información a otro equipo.
Solicitudes recibidas desde la carta. {reservations.filter(r=>r.status==='nueva').length} nuevas.
Crea cuentas para tu equipo y define qué puede ver y editar cada perfil.