// Woodbury Operator — Leases. Registers window.LeasesScreen. (function () { const NS = window.WoodburyPropertiesDesignSystem_7290ca; const { Card, CardHeader, Button, Badge, Avatar, StatCard, ProgressBar, Modal, Input, Select } = NS; const LEASES = [ { tenant: "Kofi Mensah", avatar: "../../assets/images/av-kofi.jpg", asset: "Lashibi Townhouses · House 1", ends: "28 May 2026", left: 28, total: 365, term: "12 months", tone: "danger" }, { tenant: "Ama Osei", avatar: "../../assets/images/av-ama.jpg", asset: "Cantonments City · Apt 5A", ends: "14 Sep 2026", left: 137, total: 365, term: "12 months", tone: "accent" }, { tenant: "Nana Adjei", avatar: "../../assets/images/av-nana.jpg", asset: "Onehive Tse Addo · Unit 101", ends: "02 Jan 2027", left: 247, total: 365, term: "24 months", tone: "success" }, { tenant: "Efua Asante", avatar: "../../assets/images/av-efua.jpg", asset: "Lashibi Townhouses · House 5", ends: "30 Apr 2026", left: 0, total: 365, term: "12 months", tone: "danger", notice: true }, ]; function LeasesScreen() { const [modal, setModal] = React.useState(null); // 'new' | {type:'renew'|'view', lease} const [nlProp, setNlProp] = React.useState(window.WB_SITES[0]); const [nlUnit, setNlUnit] = React.useState(""); const close = () => setModal(null); const openNew = () => { const p = window.WB_SITES[0]; setNlProp(p); const u = window.WBunitsFor(p, true); setNlUnit(u[0] || ""); setModal({ type: "new" }); }; return (
} />
window.WBNavigate&&window.WBNavigate("Leases")} label="Active Leases" value="114" icon="file-signature" iconTone="brand" /> window.WBNavigate&&window.WBNavigate("Leases")} label="Expiring < 30d" value="3" icon="calendar-clock" iconTone="danger" emphasis="danger" /> window.WBNavigate&&window.WBNavigate("Leases")} label="Renewals Pending" value="5" icon="refresh-cw" iconTone="accent" /> window.WBNavigate&&window.WBNavigate("Leases")} label="Avg. Term" value="14 mo" icon="calendar-days" iconTone="success" />
Filter} /> {LEASES.map((l, i) => (
{l.tenant}
{l.asset}
{l.notice ? "Notice given" : `${l.left} days left`}Ends {l.ends}
{l.term}
{l.left <= 30 && }
))}
{/* New lease */} }>
{ setNlProp(e.target.value); const u = window.WBunitsFor(e.target.value, true); setNlUnit(u[0] || ""); }} options={window.WB_SITES} containerStyle={{ flex: 1 }} />
{/* Renew */} }> {modal && modal.lease && (
Current lease ends {modal.lease.ends}.
)}
{/* View */} }> {modal && modal.lease && (
{[["Status", modal.lease.notice ? "Notice given" : "Active"], ["Term", modal.lease.term], ["Ends", modal.lease.ends], ["Days remaining", modal.lease.notice ? "—" : modal.lease.left]].map(([k, v]) => (
{k}{v}
))}
)}
); } window.LeasesScreen = LeasesScreen; })();