/* Views: Feed, Faturamento, Jurídico, Gestão, Config */ const { useState:vS, useMemo:vM } = React; const canalCor = {Gestão:['#eef0f4','#3a4159'],RH:['#f5edde','#9a743b'],Jurídico:['#e6edf2','#3f6079'],Financeiro:['#e7f0ea','#3f7a57'],Geral:['#f3e6e3','#a8554a']}; const canPublish = (profile)=> profile.id==='ceo'||profile.id==='admin'; /* ============== FEED ============== */ function FeedView({profile,onToast}){ const [posts,setPosts]=vS(MX.feed.map(p=>({...p}))); const [canal,setCanal]=vS('Todos'); const [compose,setCompose]=vS(false); const canais=['Todos','Gestão','RH','Jurídico','Financeiro']; const list = canal==='Todos'?posts:posts.filter(p=>p.canal===canal); const toggle=(id,key)=>setPosts(posts.map(p=>{ if(p.id!==id) return p; const np={...p}; if(key==='reagiu'){ np.reagiu=!p.reagiu; np.likes=p.likes+(p.reagiu?-1:1); } if(key==='imp'){ np.imp=!p.imp; np.importante=p.importante+(p.imp?-1:1); } return np; })); return (
{canais.map(c=>( ))}
{canPublish(profile) && (
{profile.ini}
setCompose(true)}>Compartilhar um comunicado com a equipe…
)}
{list.map(p=>{ const [bg,fg]=canalCor[p.canal]||canalCor.Geral; return (
{p.ini}
{p.autor}
{p.tempo} · {p.audiencia}
{p.pinned && Fixado}
{p.canal}

{p.titulo}

{p.corpo}

{p.img &&
imagem · resultados-1o-semestre.jpg
} {p.anexo && (
{p.anexo}
)}
{p.lido} leram
); })}
{/* right rail */}
Engajamento
{[['Comunicados ativos','12'],['Taxa de leitura','87%'],['Não lidos por você','3']].map((x,i)=>(
{x[0]}{x[1]}
))}
Canais
{Object.entries(canalCor).filter(([k])=>k!=='Geral').map(([k,[bg,fg]])=>(
{k} {Math.floor(Math.random()*6)+2} posts
))}

Publicações segmentadas

Cada colaborador vê apenas o que é direcionado ao seu perfil e unidade. A leitura é registrada automaticamente.

{compose && setCompose(false)} onPublish={(np)=>{ setPosts([{...np,id:'new'+Date.now()},...posts]); setCompose(false); onToast('Publicação criada e enviada à audiência selecionada.'); }}/>}
); } function Composer({profile,onClose,onPublish}){ const [titulo,setTitulo]=vS(''); const [corpo,setCorpo]=vS(''); const [canal,setCanal]=vS('Gestão'); const [aud,setAud]=vS('todos'); const [unitsSel,setUnitsSel]=vS([]); const [agendar,setAgendar]=vS(false); const audMap={todos:'Todos os colaboradores',unidades:'Unidades selecionadas',perfis:'Perfis específicos',individual:'Usuários selecionados'}; const audDesc = aud==='unidades' && unitsSel.length? unitsSel.map(u=>MX.unitById(u).nome).join(', ') : audMap[aud]; return ( }>
{['Gestão','RH','Jurídico','Financeiro','Geral'].map(c=>( ))}
setTitulo(e.target.value)} placeholder="Ex: Resultados do 1º semestre"/>