| name | design-tokens-validator |
| description | Valida uso correto de design tokens do projeto Nossa Maternidade. Detecta cores hardcoded (#FFFFFF, rgba), spacing hardcoded, e sugere tokens corretos. Use ao revisar codigo de UI, criar componentes, ou validar design system. |
| allowed-tools | Read, Grep, Glob |
Design Tokens Validator
Proposito
Garantir que todo codigo de UI use os design tokens do projeto em vez de valores hardcoded.
Arquivo de Referencia
src/theme/tokens.ts - Contém todos os tokens do design system.
Regras de Validacao
1. Cores - SEMPRE usar useThemeColors()
// ❌ ERRADO - cores hardcoded
const styles = {
backgroundColor: '#FFFFFF',
color: 'rgba(0, 0, 0, 0.5)',
borderColor: 'white',
};
// ✅ CORRETO - usar hook de tema
import { useThemeColors } from '@/hooks/useTheme';
const colors = useThemeColors();
const styles = {
backgroundColor: colors.background.card,
color: colors.text.secondary,
borderColor: colors.border.light,
};
2. Spacing - SEMPRE usar Tokens.spacing
// ❌ ERRADO - numeros literais
const styles = {
padding: 16,
margin: 24,
gap: 8,
};
// ✅ CORRETO - usar tokens
import { Tokens } from '@/theme/tokens';
const styles = {
padding: Tokens.spacing['4'], // 16
margin: Tokens.spacing['6'], // 24
gap: Tokens.spacing['2'], // 8
};
3. Border Radius - SEMPRE usar Tokens.radius
// ❌ ERRADO
borderRadius: 12;
// ✅ CORRETO
borderRadius: Tokens.radius.lg; // 12
4. Typography - SEMPRE usar Tokens.typography ou TextStyles
// ❌ ERRADO
fontSize: 16,
fontWeight: '600',
// ✅ CORRETO
import { TextStyles } from '@/theme/tokens';
...TextStyles.bodyLarge
Patterns a Detectar
Usar Grep para buscar estes patterns:
- Cores hex:
#[0-9A-Fa-f]{3,8} - rgba/rgb:
rgba?\s*\( - Cores nomeadas em style:
color:\s*['"]?(white|black|red|blue) - Numeros em padding/margin:
(padding|margin):\s*\d+ - fontSize hardcoded:
fontSize:\s*\d+
Tokens Disponiveis
Spacing (multiplos de 4)
'0': 0,'1': 4,'2': 8,'3': 12,'4': 16'5': 20,'6': 24,'8': 32,'10': 40,'12': 48
Radius
sm: 4,md: 8,lg: 12,xl: 16,'2xl': 20full: 9999 (circular)
Cores do Tema (via useThemeColors)
background.canvas- fundo principalbackground.card- cardstext.primary- texto principaltext.secondary- texto secundarioprimary.main- cor primaria (rosa)secondary.main- cor secundaria (roxo)
Comando de Validacao
npm run validate:design
Checklist de Review
- Nenhuma cor hex hardcoded (#FFFFFF, #000000, etc)
- Nenhum rgba() ou rgb() hardcoded
- Nenhum numero literal em padding/margin/gap
- Nenhum fontSize hardcoded
- Todas as cores vem de useThemeColors()
- Todos os espacamentos vem de Tokens.spacing