// ─── K&N Elite — Admin (unified light) ─── const { useState } = React; const ADMIN_REQUESTS = [ { id: "R-1042", date: "24 Apr · 14:22", name: "María Fernández", phone: "+34 612 345 678", address: "Calle Serrano 42, Madrid", type: "valuation", status: "new", mgr: "—", lang: "ES" }, { id: "R-1041", date: "24 Apr · 13:58", name: "Ivan Petrov", phone: "+34 698 221 044", address: "Paseo de Gracia 89, Barcelona", type: "visit", status: "in_progress", mgr: "C. Tenorio", lang: "RU" }, { id: "R-1040", date: "24 Apr · 12:30", name: "Laura Giménez", phone: "+34 600 147 852", address: "Av. del Puerto 118, Valencia", type: "valuation", status: "in_progress", mgr: "L. Ramos", lang: "ES" }, { id: "R-1039", date: "24 Apr · 11:04", name: "Hans Müller", phone: "+49 170 444 888", address: "Calle Mayor 7, Alicante", type: "valuation", status: "done", mgr: "A. Vidal", lang: "EN" }, { id: "R-1038", date: "23 Apr · 19:41", name: "Olga Sokolova", phone: "+34 611 909 012", address: "Calle Velázquez 80, Madrid", type: "valuation", status: "new", mgr: "—", lang: "RU" }, { id: "R-1037", date: "23 Apr · 17:20", name: "Thomas Lefevre", phone: "+33 633 121 212", address: "Calle Alcalá 200, Madrid", type: "out", status: "new", mgr: "—", lang: "EN" }, { id: "R-1036", date: "23 Apr · 15:55", name: "Elena García", phone: "+34 622 334 455", address: "Calle Gran Vía 34, Madrid", type: "visit", status: "done", mgr: "C. Tenorio", lang: "ES" }, ]; function AdminShell({ onNav, tab, setTab, children }) { const { t } = useI18n(); return (
ADMIN · INTERNAL {[ { k: "requests", l: t("adm_requests") }, { k: "clients", l: t("adm_clients") }, { k: "properties", l: t("adm_properties") }, { k: "analytics", l: t("adm_analytics") }, { k: "users", l: t("adm_users") }, ].map(it => ( ))}
{children}
); } function AdminRequests({ onOpen }) { const { t } = useI18n(); const [filter, setFilter] = useState("all"); const [search, setSearch] = useState(""); const filtered = ADMIN_REQUESTS.filter(r => { if (filter !== "all" && r.status !== filter) return false; if (search && !(r.name.toLowerCase().includes(search.toLowerCase()) || r.address.toLowerCase().includes(search.toLowerCase()) || r.phone.includes(search))) return false; return true; }); const tone = { new: "var(--gold)", in_progress: "var(--warn)", done: "var(--ok)", error: "var(--err)" }; const lbl = { new: t("adm_st_new"), in_progress: t("adm_st_prog"), done: t("adm_st_done"), error: t("adm_st_err") }; const typeLbl = { valuation: t("adm_type_val"), visit: t("adm_type_visit"), out: t("adm_type_out") }; return (
01

{t("adm_requests")}

setSearch(e.target.value)} style={{ width: 320, minHeight: 44 }} />
{[{ k: "all", l: t("adm_all") }, { k: "new", l: t("adm_st_new") }, { k: "in_progress", l: t("adm_st_prog") }, { k: "done", l: t("adm_st_done") }].map(f => ( ))}
{t("adm_date")}
{t("adm_client")}
{t("adm_phone")}
{t("adm_address")}
{t("adm_type")}
{t("adm_status")}
{t("adm_mgr")}
{t("adm_lang")}
{filtered.map(r => (
onOpen(r)} style={{ display: "grid", gridTemplateColumns: "130px 1fr 1.1fr 1.5fr 100px 120px 120px 50px", padding: "18px 24px", borderBottom: "1px solid var(--ink-10)", fontSize: 13, cursor: "pointer", alignItems: "center", transition: "all .2s", }} onMouseEnter={e => e.currentTarget.style.background = "var(--gold-10)"} onMouseLeave={e => e.currentTarget.style.background = "transparent"}>
{r.date}
{r.name}
{r.phone}
{r.address}
{typeLbl[r.type]}
{lbl[r.status]}
{r.mgr}
{r.lang}
))}
); } function AdminRequestModal({ req, onClose }) { const { t } = useI18n(); if (!req) return null; return (
e.stopPropagation()} style={{ width: "min(880px, 94vw)", maxHeight: "90vh", overflow: "auto", background: "var(--paper)", animation: "scale-in .35s", borderRadius: 2, }}>
{req.id}

{req.name}

{t("adm_card_data")}
Phone: {req.phone}
Address: {req.address}
Language: {req.lang}
Area: 112 m² · 3 rooms · 2 baths
{t("adm_card_history")}
  • 14:22 · Received from form
  • 14:23 · Catastro matched
  • 14:24 · Auto-valuation ready
{t("adm_card_auto")}
Market: 305 000 €
Target: 325 000 – 340 000 €
{t("adm_card_adjust")}
{t("adm_card_notes")}