// Woodbury Operator — Portfolio (super-admin dashboard). Registers window.PortfolioScreen.
(function () {
const NS = window.WoodburyPropertiesDesignSystem_7290ca;
const { StatCard, Card, Button, Badge, Avatar, ProgressBar, SegmentedControl, Eyebrow, Modal, Input, Select, Textarea } = NS;
function KPI({ label, delta, deltaTone, value, unit, sub, children, onClick }) {
return (
{ e.currentTarget.style.transform = "translateY(-2px)"; e.currentTarget.style.boxShadow = "var(--shadow-md)"; } : undefined}
onMouseLeave={onClick ? (e) => { e.currentTarget.style.transform = "none"; e.currentTarget.style.boxShadow = "var(--shadow-card)"; } : undefined}>
{label}
{delta}
{value}
{unit && {unit}}
{children}
{sub &&
{sub}}
);
}
function PortfolioScreen() {
const D = window.WB_DATA;
const [modal, setModal] = React.useState(null); // 'alert' | 'add' | applicant obj
const [filter, setFilter] = React.useState("All");
const close = () => setModal(null);
const shown = D.applicants.filter((a) => filter === "All" ? true : filter === "Pending" ? a.status === "Pending" : a.status === "Verified");
return (
}
/>
window.WBNavigate&&window.WBNavigate('Properties')} />
window.WBNavigate&&window.WBNavigate('Maintenance')} />
window.WBNavigate&&window.WBNavigate('Properties')}>
window.WBNavigate&&window.WBNavigate('Screening')} />
Flagship Property
Featured Asset
Lashibi Townhouses
92% occupied
Premium Status
Screening & Tenancy Ledger
Active Portfolios
{["Applicant", "Phone", "Asset", "Status", "Action"].map((h, i) => (
{h}
))}
{shown.map((a, i) => (
{a.phone}
{a.asset}
{a.status === "Verified" ? Verified : Pending}
))}
{shown.length === 0 && No {filter.toLowerCase()} applicants.
}
Maintenance Action Checklist
8 open
{D.maintenance.map((m, i) => {
const dot = { danger: "var(--danger)", accent: "var(--terracotta-500)", success: "var(--success)", neutral: "var(--gray-300)" }[m.tone];
return (
{ window.WBFocus = { kind: "ticket", key: m.unit }; window.WBNavigate && window.WBNavigate("Maintenance"); }} style={{ display: "flex", gap: 14, padding: "14px 0", borderTop: i ? "1px solid var(--border)" : "none", cursor: "pointer", borderRadius: 8, transition: "background var(--dur-fast)" }} onMouseEnter={(e) => e.currentTarget.style.background = "var(--cream-50)"} onMouseLeave={(e) => e.currentTarget.style.background = "transparent"}>
{m.unit}
{m.badge && {m.badge}}
{m.meta}
);
})}
Expiring Leases Monitor
Kofi Mensah — Lashibi Townhouses
Lease ends 28 May 2026
28 days left365 total
Recent Documents
{D.documents.slice(0, 2).map((d) => (
window.WBNavigate && window.WBNavigate("Documents")} style={{ display: "flex", alignItems: "center", gap: 14, cursor: "pointer", padding: 6, borderRadius: 8, transition: "background var(--dur-fast)" }} onMouseEnter={(e) => e.currentTarget.style.background = "var(--cream-50)"} onMouseLeave={(e) => e.currentTarget.style.background = "transparent"}>
))}
{/* Send Alert modal */}
{/* Add Property modal */}
}>
{/* Applicant view modal */}
}>
{modal && typeof modal === "object" && (
{modal.status === "Verified" ? Verified : Pending}
)}
);
}
function Row({ label, value }) {
return (
{label}
{value}
);
}
window.PortfolioScreen = PortfolioScreen;
})();