CSS
Visão Geral
Este guia explica a arquitetura CSS/SCSS, organização de arquivos, convenções de nomenclatura, tokens de design e melhores práticas para construir componentes de UI sustentáveis e escaláveis no Raaghu Design System.
Estrutura de Organização de Arquivos
Estilos em Nível de Componente
Cada componente RDS segue uma estrutura rigorosa:
raaghu-elements/
├── rds-{component-name}/
│ ├── rds-{component-name}.tsx # Componente React
│ ├── rds-{component-name}.stories.tsx # Histórias do Storybook
│ └── rds-{component-name}.scss # Estilos específicos do componente
Estilos em Nível de Layout
raaghu-layouts/
├── rds-comp-{layout-name}/
│ ├── rds-comp-{layout-name}.tsx
│ ├── rds-comp-{layout-name}.stories.tsx
│ └── rds-comp-{layout-name}.css # Estilos específicos do layout
Estilos de Tema
raaghu-react-themes/
├── src/
│ └── styles/
│ ├── index.scss # Entrada principal do tema
│ ├── variables/
│ │ └── color-variables.scss # Tokens de cor
│ └── themes/
│ ├── light.scss # Tema claro
│ ├── dark.scss # Tema escuro
Convenções de Nomenclatura
BEM (Block Element Modifier) com Prefixo RDS
.rds-{component-name} { }
.rds-{component-name}__element { }
.rds-{component-name}--modifier { }
.rds-{component-name}__element--modifier { }
Exemplos
.rds-button { }
.rds-button__icon { }
.rds-button--primary { }
.rds-button--large { }
.rds-card { }
.rds-card__header { }
.rds-card--elevation-2 { }
Padrões de Estrutura SCSS
Modelo SCSS de Componente
.rds-{component-name} {
// Estilos base
display: block;
// Elementos
&__element {
// Estilos do elemento
}
// Modificadores
&--variant {
// Estilos da variante
}
// Estados
&:hover { }
&:focus { }
&:disabled { }
}
Uso de Tokens de Design
Use propriedades personalizadas CSS para cores, espaçamento, tipografia e elevação:
background-color: var(--rds-color-primary);
padding: var(--rds-spacing-md);
border-radius: var(--rds-border-radius);
box-shadow: var(--rds-elevation-2);
Checklist de Implementação
- O componente possui um arquivo
.scsscorrespondente - O SCSS usa a nomenclatura BEM com o prefixo
rds- - Os estilos incluem todas as variantes e estados necessários
- Tokens de design são usados para cores e espaçamento
- Os estados de acessibilidade são estilizados
- O componente é exportado no
index.tsdo pacote
Acessibilidade e Desempenho
- Inclua estados de foco para elementos interativos
- Garanta contraste de cor suficiente
- Suporte a leitores de tela com a classe
.sr-only - Minimize conflitos de especificidade CSS
- Evite aninhamento profundo (máximo de 3 níveis)
- Use seletores eficientes
Melhores Práticas
- Isolamento: Mantenha os estilos autocontidos por componente
- Consistência: Use padrões de nomenclatura e espaçamento estabelecidos
- Manutenibilidade: Documente estilos complexos, use nomes significativos
- Performance: Remova CSS não utilizado, use tree-shaking, minifique para produção
- Acessibilidade: Teste a navegação por teclado, contraste de cor e estados de foco
Ferramentas de Desenvolvimento
- SCSS IntelliSense
- Live Sass Compiler
- CSS Peek
- Prettier - Formatador de código
Configuração de Linting
{
"extends": ["stylelint-config-standard-scss"],
"rules": {
"selector-class-pattern": "^rds-[a-z]([a-z0-9-]+)?(__([a-z0-9]+-?)+)?(--([a-z0-9]+-?)+)?$"
}
}