// ─── K&N Elite — Cabinet (vertical sidebar layout) ───
const { useState } = React;
function CabinetShell({ section, onSection, onNav, children }) {
const { t } = useI18n();
const items = [
{ k: "valuations", l: "Мои оценки", n: "01" },
{ k: "deal", l: "Статус сделки", n: "02" },
{ k: "docs", l: "Документы", n: "03" },
{ k: "messages", l: "Сообщения", n: "04" },
{ k: "settings", l: "Настройки", n: "05" },
];
return (
);
}
function CabinetValuations({ onOpen, onNav }) {
const items = [
{
id: 1,
addr: "Calle Serrano 42, Чамбери, Мадрид",
area: 112, rooms: 3,
photo: "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1200&q=80&auto=format&fit=crop",
status: "ready", date: "24 апреля 2026",
range: "325 000 – 340 000 €",
},
{
id: 2,
addr: "Paseo de Gracia 89, Барселона",
area: 145, rooms: 4,
photo: "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1200&q=80&auto=format&fit=crop",
status: "processing", date: "23 апреля 2026",
},
{
id: 3,
addr: "Calle Velázquez 80, Мадрид",
area: 98, rooms: 3,
photo: "https://images.unsplash.com/photo-1600585154526-990dced4db0d?w=1200&q=80&auto=format&fit=crop",
status: "needs_info", date: "22 апреля 2026",
},
];
const tone = { ready: "var(--ok)", processing: "var(--warn)", needs_info: "var(--err)" };
const lbl = { ready: "Готово", processing: "В работе", needs_info: "Нужна информация" };
return (
Раздел 01
Мои оценки
История всех оценок. Откройте любую, чтобы увидеть детальный отчёт с аналогами и рекомендациями.
{items.map(it => (
{lbl[it.status]}
{it.date}
{it.addr}
{it.area} м² · {it.rooms} комн.
{it.range &&
{it.range}
}
))}
);
}
function CabinetDeal() {
const stages = [
{ n: "01", t: "Подписание договора", done: true, date: "18 апр" },
{ n: "02", t: "Фотосъёмка и стейджинг", done: true, date: "21 апр" },
{ n: "03", t: "Публикация в базах", active: true, date: "с 24 апр" },
{ n: "04", t: "Показы и офферы", date: "—" },
{ n: "05", t: "Нотариус и передача ключей", date: "—" },
];
return (
Раздел 02
Статус сделки
Продажа Calle Serrano 42. Отслеживайте каждый этап в реальном времени.
В продаже · с 21 апреля
Calle Serrano 42, Чамбери
112 м² · 3 комнаты · выставлено за 335 000 €
Этапы сделки
{stages.map((s, i) => (
{s.n}
{s.t}
{s.date}
{s.done && ✓}
{s.active && }
))}
);
}
function CabinetDocs() {
const docs = [
{ n: "Договор-поручение на продажу.pdf", size: "284 КБ", date: "18 апр" },
{ n: "Nota simple — Calle Serrano 42.pdf", size: "156 КБ", date: "21 апр" },
{ n: "Фотосессия — 48 фото.zip", size: "68 МБ", date: "21 апр" },
{ n: "Отчёт об оценке.pdf", size: "1,2 МБ", date: "20 апр" },
];
return (
Раздел 03
Документы
Все документы по вашим сделкам и оценкам
{docs.map((d, i) => (
PDF
{d.n}
{d.size} · {d.date}
))}
);
}
function CabinetMessages() {
const msgs = [
{ from: "Carlos Tenorio", role: "Персональный менеджер", t: "Иван, завтра в 11:00 два показа подряд. Успеем?", time: "10 мин назад", unread: true },
{ from: "María González", role: "Фотограф", t: "Готовы материалы со съёмки. Прислать на почту?", time: "2 часа", unread: false },
{ from: "Офис K&N Elite", role: "", t: "Документы на подпись готовы. Ждём в офисе.", time: "вчера", unread: false },
];
return (
Раздел 04
Сообщения
{msgs.map((m, i) => (
{m.from[0]}
{m.from}
{m.role && {m.role}}
{m.t}
{m.time}
))}
);
}
function CabinetSettings() {
const [saved, setSaved] = useState(false);
return (
Раздел 05
Настройки
Приватность
);
}
Object.assign(window, {
CabinetShell, CabinetValuations, CabinetDeal, CabinetDocs, CabinetMessages, CabinetSettings,
});