2
respostas

[Dúvida] Como aplicar estilos adicionais a um componente de uma biblioteca externa?

Olá.

Essa é uma dúvida recorrente minha quando desenvolvo componentes e quero tentar reutilizá-los com alguma estilização adicional.

Neste curso, estamos desenvolvendo nossa biblioteca de componentes, que é então publicada no NPM e se torna uma biblioteca externa, que pode ser importada por outras aplicações.

No caso do desafio, criamos um componente CampoTexto, que é a junção de um input e uma label.

Suponha que criei uma aplicação e estou importando esse componente CampoTexto da biblioteca de componentes criada. Agora, nessa minha aplicação, quero adicionar estilos novos ao componente CampoTexto: quero definir uma largura para o input, colocar outra cor no placeholder e aumentar a margem entre a label e o input. Nesse caso, como eu faria para adicionar esses estilos ao componente, sem modificar a biblioteca de componentes? Existe alguma maneira de "injetar" CSS em um componente de biblioteca externa? Eu precisaria passar isso como props e alterar na biblioteca para o componente aceitar essas props? Se sim, como isso deveria ser feito?

Obrigado.

2 respostas

Opa Matheus, tudo bem?

Geralmente não é recomendado modificar diretamente a biblioteca para adicionar estilos específicos para sua aplicação. Um possível solução para esse caso é a de sobrescrever estilos com CSS, definindo estilos específicos para o componente CampoTexto em um arquivo CSS. Por exemplo:

/* No seu arquivo CSS */
.campo-texto {
  width: 200px;
}

.campo-texto input::placeholder {
  color: red;
}

.campo-texto label {
  margin-bottom: 10px;
}

Essa abordagem permite que você passe estilos específicos para o componente CampoTexto sem modificar a biblioteca de componentes.

Fico à disposição.

Tenha um bom dia e bons estudos.

Ei Gabriel, obrigado!

Eu costumava fazer assim, acessando a classe, mas isso acabou não funcionando quando comecei a utilizar CSS modules, e também agora com styled components, porque as classes são formadas por aqueles códigos esquisitos gerados automaticamente.

Eu estava procurando ver se haveria alguma solução passando esses estilos diretamente aos componentes, sem precisar ir "na mão" caçando os elementos que eu quero estilizar (que é o que eu costumo fazer como última opção). Fico imaginando se as bibliotecas de componentes tenham alguma solução pra isso.

Valeu!