Fala João, tudo bem?
Com base no código que você compartilhou vou comentar aqui o que observei que você pode tentar como solução para esse problema.
Vi que você criou um componente <Main /> para lidar com a renderização dos times e dos colaboradores.
<div className="App">
<Header />
<Form
times={times.map((time) => time.name)}
signInColaborator={(colaborator) => newColaborator(colaborator)}
/>
<Main />
</div>
E neste componente você está recebendo como props e tentando acessar os colaboradores através de props.colaborators.
export function Main(props) {
// ...
}
{props.colaborators.map((colaborator) => (
<Dev
name={colaborator.name}
office={colaborator.office}
desc={colaborator.desc}
image={colaborator.image}
></Dev>
))}
O problema aqui é que você não passou essa prop para o componente <Main />, então o React não entende essa declaração.
Outro ponto de melhoria está nos componentes <Main /> e <App/>, ambos possuem o array times como um código que se repete. Não é uma boa prática repetir códigos. Uma sugestão é permanecer com o array times no componente <App/> e passá-lo como também como uma prop ao componente <Main />.
Gostei que você percebeu que tanto o time como os colaboradores poderiam ser componentes separados e criou componentes para lidar com a responsabilidade de renderizar o que fosse preciso. Isso tá muito alinhado a um dos princípios de SOLID e boas práticas de escrita de código. Parabéns!
Espero ter ajudado! Grande abraço.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓