// Woodbury Resident — Announcements with read state. Registers window.RAnnouncements. (function () { const NS = window.WoodburyPropertiesDesignSystem_7290ca; const { Card, CardHeader, Button, Badge, IconTile } = NS; const TONES = { danger: ["var(--danger-bg)", "var(--danger)"], accent: ["rgba(194,125,72,0.14)", "var(--terracotta-600)"], success: ["var(--success-bg)", "var(--success)"], brand: ["var(--walnut-100)", "var(--walnut-700)"], }; function RAnnouncements() { const loading = window.WBRuseLoad(); const [items, setItems] = React.useState(window.WBR.announcements); const unread = items.filter((a) => a.unread).length; const markAll = () => { setItems((l) => l.map((a) => ({ ...a, unread: false }))); window.WBR.announcements = window.WBR.announcements.map((a) => ({ ...a, unread: false })); window.WBRToast("All announcements marked read"); }; const read = (id) => setItems((l) => l.map((a) => a.id === id ? { ...a, unread: false } : a)); return (
0 ? : null} /> {unread ? unread + " unread" : "All read"}} /> {loading ? : items.length === 0 ? ( ) : items.map((a, i) => { const tones = TONES[a.tone] || TONES.brand; return (
read(a.id)} style={{ display: "flex", gap: 14, padding: "18px 24px", borderTop: i ? "1px solid var(--border)" : "none", background: a.unread ? "var(--brand-tint)" : "transparent", cursor: a.unread ? "pointer" : "default" }}>
{a.title} {a.unread && }

{a.body}

{a.time}
); })}
); } window.RAnnouncements = RAnnouncements; })();