| Aluno | Progresso | Status | Último acesso | Ações |
|---|---|---|---|---|
AS Ana Santos ana@email.com |
82% |
✓ Ativo | há 2 horas | |
CL Carlos Lima carlos@email.com |
45% |
⏳ Em pausa | há 3 dias | |
MF Maria Fontes maria@email.com |
100% |
✓ Concluído | hoje | |
PR Pedro Ramos pedro@email.com |
8% |
🔒 Expirado | há 1 mês |
| Aula | Módulo | Duração | Visualizações |
|---|---|---|---|
| Introdução ao character design | Módulo 1 | 12min | 234 |
| Proporções e anatomia básica | Módulo 1 | 18min | 198 |
| Expressões faciais | Módulo 2 | 22min | 165 |
| Posições e poses dinâmicas | Módulo 2 | 31min | 147 |
| Teoria de cores | Módulo 3 | 25min | 112 |
Design Tokens
Todas as variáveis CSS do sistema organizadas por categoria. Use sempre os tokens — nunca valores hardcoded.
Cores
| Swatch | Token | Valor | Uso |
|---|---|---|---|
--bg | #FDFCF8 | Fundo principal da página | |
--bg-alt | #F5F1E8 | Fundo alternativo, áreas de demo | |
--bg-dark | #1C1814 | Fundo escuro, sidebar, player | |
--bg-dark-alt | #252018 | Fundo escuro secundário, cards dark | |
--text | #1C1814 | Texto principal, headings | |
--text-2 | #3D3529 | Texto secundário, subtítulos | |
--text-muted | #6B6055 | Texto terciário, descrições | |
--text-light | #A09080 | Placeholders, hints, labels | |
--text-inv | #F5F1E8 | Texto em fundo escuro | |
--accent | #F5D000 | Amarelo primário, CTA, active states | |
--accent-dark | #C8AA00 | Amarelo hover/pressed, borders | |
--accent-soft | rgba(245,208,0,.12) | Fundo suave accent, active nav | |
--border | #E4DDD0 | Bordas em fundo claro | |
--border-dark | #2E2820 | Bordas em fundo escuro | |
--green | #22A06B | Sucesso, progresso completo | |
--red-soft | #C94040 | Erro, danger, alertas críticos | |
--blue | #2563EB | Info, links, estados intermediários |
Tipografia
| Token | Valor | Uso |
|---|---|---|
--font-brand | 'Bangers', cursive | Logo, títulos de impacto |
--font-head | 'Fredoka', sans-serif | Headings, botões, labels, UI |
--font-body | 'Nunito', sans-serif | Corpo de texto, descrições |
--font-mono | 'Courier New', monospace | Código, tokens, valores técnicos |
Border Radius
| Preview | Token | Valor | Uso |
|---|---|---|---|
--radius-sm | 0.5rem (8px) | Inputs, labels, code snippets | |
--radius-md | 0.875rem (14px) | Dropdowns, tooltips, alerts | |
--radius-lg | 1.25rem (20px) | Cards, tabelas, demo areas | |
--radius-xl | 1.75rem (28px) | Modais, blocos compostos | |
--radius-full | 999px | Botões pill, avatares, badges, toggles |
Sombras
| Preview | Token | Valor | Uso |
|---|---|---|---|
--shadow-xs | 0 1px 3px rgba(0,0,0,.06)… | Inputs em focus, badges | |
--shadow-sm | 0 2px 8px rgba(0,0,0,.06)… | Cards hover, navbar | |
--shadow-md | 0 4px 16px rgba(0,0,0,.07)… | Dropdowns, popovers | |
--shadow-lg | 0 8px 32px rgba(0,0,0,.09)… | Modais, toasts |
Easings
| Token | Valor | Uso |
|---|---|---|
--ease | cubic-bezier(.4,0,.2,1) | Transições gerais de UI, hover states |
--ease-out | cubic-bezier(0,0,.2,1) | Entradas de elementos, fade in |
--ease-spring | cubic-bezier(.34,1.4,.64,1) | Bounce em botões e interações diretas |
Guia de Uso
Regras de uso, hierarquias visuais, padrões de validação e exemplos de como usar cada componente corretamente.
Hierarquia de Botões
Cada página ou seção deve ter apenas um botão primário. Use a hierarquia para guiar o usuário pela ação mais importante.
Quando usar cada variante
- btn-primary (amarelo): A ação principal e mais importante da tela. Ex: "Continuar", "Matricular-se", "Salvar".
- btn-dark: Segunda ação importante, como CTA de marketing ou ação que acompanha o primário.
- btn-ghost: Ações secundárias, cancelar, "ver mais". Sem preenchimento para não competir com o primário.
- btn-danger: Ações destrutivas irreversíveis: excluir, remover acesso, cancelar plano.
- btn-link: Ações terciárias em texto, como "Esqueceu a senha?" ou links contextuais.
✓ Faça
Use um único botão primário por seção. Combine primary + ghost para ação principal + secundária.
✗ Não faça
Nunca coloque dois botões primários lado a lado. Não use botões danger para ações reversíveis.
Uso de Cores
Amarelo (--accent)
O amarelo é a cor de identidade do Fazdetoon. Use para CTAs principais, active states, progresso. Nunca use texto branco sobre amarelo — sempre use --text (quase preto) para garantir contraste.
Verde (--green)
Exclusivo para estados de sucesso, conclusão e progresso positivo. Não use decorativamente.
Vermelho (--red-soft)
Apenas para erros, estados danger e alertas críticos. Nunca use de forma decorativa.
Azul (--blue)
Estados informativos, links primários, status intermediários (ex: "Em andamento").
✓ Faça
Use --text (escuro) como cor de texto em elementos com fundo --accent. Mantenha contraste mínimo 4.5:1.
✗ Não faça
Nunca texto branco sobre amarelo. Não misture verde e vermelho no mesmo contexto semântico.
Validação de Formulários
Validação deve ser contextual e aparecer após o usuário interagir com o campo (on blur), não enquanto ele digita.
Padrão de erro
- Borda vermelha (
--red-soft) + glow suave no input - Ícone de alerta + mensagem abaixo do campo em
--red-soft - Mensagem clara e acionável: "Insira um e-mail válido" (não "Campo inválido")
Padrão de sucesso
- Borda verde (
--green) apenas em campos críticos (ex: senha forte) - Não use verde em todos os campos preenchidos — gera poluição visual
✓ Mensagem boa
"Insira um e-mail válido no formato usuario@exemplo.com"
✗ Mensagem ruim
"Erro no campo 3" ou "Formato inválido"
Acessibilidade
Contraste
- Texto normal: mínimo 4.5:1 (WCAG AA)
- Texto grande (+18px bold): mínimo 3:1
- Componentes interativos e foco: mínimo 3:1
Foco de teclado
- Nunca remova
outlinesem substituir por alternativa visível - Use
box-shadow: 0 0 0 3px --accent-softcomo indicador de foco - Todos os componentes interativos devem ser acessíveis via Tab
Semântica HTML
- Use
<button>para ações,<a>para navegação - Modais devem ter
role="dialog"earia-labelledby - Inputs sempre precisam de
<label>associado - Ícones decorativos:
aria-hidden="true"
Motion e Animações
Animações devem ser funcionais, não decorativas. Sempre respeite prefers-reduced-motion.
- Feedback de hover: 150–180ms com --ease
- Entradas de modais/toasts: 250ms com --ease-spring
- Saídas: mais rápidas que entradas (150–200ms)
- Skeleton shimmer: 1.5s linear infinite
- Nunca anime propriedades que causam reflow (width, height). Prefira transform e opacity
Componentes em Contexto Escuro
Alguns componentes têm variantes escuras para uso em seções com --bg-dark:
- btn-ghost-inv: Ghost com borda branca para fundos escuros
- card-dark: Card com fundo escuro alt e borda dark
- player-ctrl-btn: Controles semi-transparentes no player
✓ Faça
Use --text-inv para texto em fundos escuros. Use --border-dark para divisores em dark mode.
✗ Não faça
Não use --text (escuro) diretamente em fundos dark — perda total de legibilidade.
Changelog
Histórico de versões do Design System Fazdetoon.
🎉 Lançamento inicial do Design System
- Definição completa dos tokens: cores (17 variáveis), tipografia (4 famílias), espaçamento (escala de 4px), raios (5 valores), sombras (4 níveis), easings (3 curvas)
- Foundations: Cores, Tipografia, Espaçamento, Sombras & Raios, Ícones inline, Sistema de Motion
- Botões: 6 variantes (primary, dark, ghost, ghost-inv, danger, link), 4 tamanhos, estados completos (default, hover, disabled, loading), variante com ícone
- Inputs: 6 variantes (text, password com toggle, search, textarea, prefix, suffix), estados (default, focus, filled, disabled, error, success)
- Select & Menu: select nativo estilizado, dropdown custom com JS, combobox com avatar
- Checkbox & Radio: todos os estados incluindo indeterminate, grupos de seleção múltipla
- Toggle / Switch: off, on (accent), disabled com label
- Cards: 5 variantes (padrão, branco, dark, lesson card, stats card)
- Badges & Labels: 6 variantes de label, badges de notificação, status badges (Novo, Em breve, Concluído, Bloqueado), tags removíveis
- Avatares: 5 tamanhos (xs 24px a xl 80px), status dots (online/offline/busy), avatar group com sobreposição, fallback de iniciais
- Alertas: 4 variantes (success, warning, error, info) com borda colorida, ícone e botão de fechar
- Progress: barras lineares (4 estados), com label de percentual, progress ring circular em SVG, barra de curso estilizada
- Modais: 3 variantes (padrão, confirmação danger, formulário), backdrop click para fechar, animação de entrada
- Toast: 4 variantes (success, error, warning, info), auto-dismiss 3s, demo de botões interativos
- Tooltip: posições top e bottom, implementação pura CSS
- Tables: tabela completa com avatar+progress+badge+ações, variante striped, cabeçalho com indicador de ordenação
- Navegação: top navbar com glass effect, sidebar escura de membro, breadcrumb, tabs underline + pill
- Accordion: estilo FAQ borderless, estilo card boxed, ambos com JS para open/close
- Skeleton: 3 variantes (texto, card, lista) com animação shimmer CSS
- Empty State: 3 variantes (sem cursos, sem resultados, sem notificações)
- Paginação: padrão com ellipsis, versão simples anterior/próximo
- Bloco Dashboard: 4 stat cards, atividade recente, widget de progresso ring
- Bloco Player de Aula: dark, aspect-ratio 16/9, controles de play/pause/volume/fullscreen, scrubber, breadcrumb e navegação
- Bloco Card de Curso: 3 cards em grid com variantes (em andamento, novo, bloqueado)
- Bloco Sidebar Membro: dark sidebar com logo, nav com badges, rodapé de perfil
- Bloco Login / Auth: card completo com logo, email, senha, remember me, divider, OAuth
- Bloco Perfil: cover dark, avatar sobreposto, nome + badge, stats row
- Tab de Tokens: tabela completa de todas variáveis CSS com swatches e uso
- Tab de Guia de Uso: hierarquia de botões, regras de cor, validação de formulários, acessibilidade, motion
- Interatividade JS: tab switching, accordion, modais, toasts com auto-dismiss, dropdowns, toggle switch, password show/hide, sidebar collapse, copy-to-clipboard, skeleton shimmer, sidebar search filter
- Sidebar com IntersectionObserver para highlight automático ao rolar