styled-components Styled Components
Última atualização: 2026-11-03
styled-components Styled Components
O styled-components é a principal biblioteca de CSS-in-JS: você escreve CSS dentro do JavaScript com template literals marcados, e cada componente estilizado recebe um nome de classe único e seu próprio escopo. Estilos condicionais são derivados de props, e um tema é injetado através do ThemeProvider, para que um design system possa ser compartilhado em toda a aplicação em vez de ser espalhado por folhas de estilo.
| Grupo | Ecossistema |
|---|---|
| Tipo | Biblioteca |
| Desde | v6 |
ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.
📝 Sintaxe
npm install styled-components
import styled, { ThemeProvider } from 'styled-components'
const Button = styled.button`
background: ${p => (p.$variant === 'danger' ? '#dc2626' : '#2563eb')};
color: #fff; border: none; border-radius: 6px;
`
// Usage: <Button $variant="danger">Delete</Button>
// Theme: <ThemeProvider theme={{ fg: '#111' }}>…</ThemeProvider>
// Read the theme inside interpolation functions with props.theme
⚙️ Parâmetros
| styled tag template | O texto CSS dentro de styled.button`…`; as funções ${interpolation} podem ler props ou o tema para derivar estilos condicionais. |
|---|---|
| $variant and other transient props | Props que começam com $ participam apenas da lógica de estilização e nunca são encaminhadas ao DOM — o estilo recomendado na v6. |
| theme (ThemeProvider) | O objeto de tema distribuído via Context; todo componente estilizado pode lê-lo como props.theme dentro de suas funções de interpolação. |
Retorna:Sem valor de retorno — veja o exemplo para o uso de bibliotecas de terceiros.
▶ Exemplo
O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.
Saída:
Simulação: clicar no botão Switch theme faz a transição do fundo, do texto e da borda do card entre os temas claro e escuro com uma transição CSS de 0,3s, e a paleta do botão também acompanha o tema. Isso mostra a ideia de que o objeto de tema controla os estilos no CSS-in-JS; no styled-components real, o tema é fornecido pelo ThemeProvider.