// Prodz — Inbox: the single destination for every collab/job-call conversation // (brief §1.8). Shoutouts "Rispondi" and Network "Collab" both land here. function InboxList() { const { L } = useL(); const nav = useNav(); const { Avatar, Badge } = window.ProdzDesignSystem_d0b87b; const [filter, setFilter] = useStateS('all'); const convs = nav.conversations.filter((c) => filter === 'all' || c.kind === filter); const cat = [ { id: 'all', label: L('Tutte', 'All') }, { id: 'collab', label: 'Collab' }, { id: 'job', label: L('Job Call', 'Job Call') }, ]; return (

{L('Tutte le conversazioni di lavoro, in un unico posto.', 'Every work conversation, in one place.')}

{/* category filters */}
{cat.map((c) => { const n = c.id === 'all' ? nav.conversations.length : nav.conversations.filter((x) => x.kind === c.id).length; return ( ); })}
{convs.map((c) => { const p = c.person ? PEOPLE[c.person] : null; const name = p ? p.name : c.org; return ( ); })}
); } function ConversationDetail({ id }) { const { L } = useL(); const nav = useNav(); const { Avatar, Input } = window.ProdzDesignSystem_d0b87b; const c = nav.conversations.find((x) => x.id === id) || nav.conversations[0]; const p = c.person ? PEOPLE[c.person] : null; const name = p ? p.name : c.org; return (
{/* subject banner — the Collab Proposal / Job Call this conversation came from */}
{c.kind === 'job' ? L('Job Call', 'Job Call') : 'Collab Proposal'}
{tr(L, c.subject)}
{/* messages */}
{c.messages.map((m, i) =>
{!m.me && }
{tr(L, m.text)}
{m.card && }
{m.time}
)}
{/* composer */}
); } const convRow = { display: 'flex', alignItems: 'flex-start', gap: 12, width: '100%', padding: '12px 16px', background: 'none', border: 'none', borderBottom: '1px solid var(--border-hairline)', cursor: 'pointer', textAlign: 'left' }; Object.assign(window, { InboxList, ConversationDetail });