// 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 });