// ─────────────────────────────────────────────────────────── // Huio Control Panel — Hụi Groups View (cp-groups-view.jsx) // ─────────────────────────────────────────────────────────── if (!window.CP_STYLES) throw new Error('[cp-groups-view] window.CP_STYLES not loaded'); function renderGroups({ lang = 'vi', t: rawT, appStyles: rawAppStyles, groups: rawGroups = [], setActiveGroupDetail, setGroupDetailTab, loadGroupDetails, }) { const appStyles = rawAppStyles || window.CP_STYLES || {}; const t = typeof rawT === 'function' ? rawT : (k) => k; const groups = Array.isArray(rawGroups) ? rawGroups : []; const vnd = window.vnd || ((v) => (v != null ? `${Number(v).toLocaleString('vi-VN')} ₫` : '0 ₫')); return (

{t('groups.title')}

{t('groups.sub')}

{/* Active hụi groups */}
{groups.map(g => ( { if (typeof setActiveGroupDetail === 'function') setActiveGroupDetail(g); if (typeof setGroupDetailTab === 'function') setGroupDetailTab('slots'); if (typeof loadGroupDetails === 'function') loadGroupDetails(g); }} id={`group-row-${g.id}`} > ))}
{t('groups.col.name')} {t('groups.col.organizer')} {t('groups.col.amount')} {t('groups.col.members')} {t('groups.col.period')} {t('groups.col.volume')} {t('groups.col.status')}
{g.name} {g.organizer} {vnd(g.amount)} {g.members} {t('groups.slots_count')} {g.period} {vnd(g.volume)} {t(`groups.status.${g.status}`)}
); } window.CpGroupsView = { renderGroups, };