🎨 Guia de criação de temas
Conheça o esquema JSON de temas do ForcedSkin e as regras dos campos de paleta — crie paletas para qualquer site e envie para a comunidade.
Início rápido
Escolha um modo
Decida se o tema será executado em light (paletas claras) ou dark (paletas escuras).
Preencha as cores
Siga a especificação de campos abaixo — no mínimo, todas as chaves obrigatórias devem estar no JSON.
Enviar para revisão
Na página Temas , clique em “Enviar tema”. Os admins aprovam antes de aparecer para todos.
Campos de cor
Todas as entradas da paleta devem ser strings hex (#RRGGBB) ou valores CSS rgba(...).
backgroundObrigatórioFundo principal da página — temas claros tendem ao branco, temas escuros a neutros profundos. Variável CSS: --color-background
Exemplo: #F8FFF8 / #101410
foregroundObrigatórioTexto principal — contraste legível com o fundo. Variável CSS: --color-foreground
Exemplo: #2C3E2C / #E0E0E0
surfaceObrigatórioPreenchimento de cartão/painel/contêiner — um pouco acima do fundo. Variável CSS: --color-surface
Exemplo: #F0FFF0 / #1E221E
surfaceMutedOpcionalHovers atenuados/subcontêineres um degrau abaixo de surface. Variável CSS: --color-surface-muted
Exemplo: #F5FDF5 / #161816
borderObrigatórioFiletes e divisórias — em geral cinzas de baixa saturação / tons semitransparentes. Variável CSS: --color-border
Exemplo: #D8E8D8 / #333633
mutedObrigatórioTexto secundário e placeholders. Variável CSS: --color-muted
Exemplo: #6C7E6C / #A0A0A0
primaryObrigatórioRampa principal da marca para botões/links/foco — pode ser cor única ou rampa (50–950). Exige pelo menos os tons 500/600/700. Mapeia para as variáveis CSS --color-primary- mais tokens de tom (50–950)
Exemplo: { "500": "#4CAF50", "600": "#43A047", "700": "#388E3C" }
secondaryOpcionalRampas de destaque secundárias para chips/botões ghost — estrutura igual à primary — mapeia para --color-secondary- mais tokens de tom
Exemplo: { "500": "#AAA", ... }
accentOpcionalDestaques, badges e cores de ênfase — estrutura igual à primary — mapeia para --color-accent- mais tokens de tom
Exemplo: { "500": "#FFEB3B", ... }
varsOpcionalPropriedades CSS personalizadas arbitrárias — as chaves omitem “--”; os valores são aplicados literalmente em :root
Exemplo: { "custom-radius": "8px" }
Rampas de cor
As chaves JSON primary, secondary e accent aceitam cada um dos dois estilos abaixo:
Compacto (três tons principais)
{
"primary": {
"500": "#4CAF50",
"600": "#43A047",
"700": "#388E3C"
}
}O motor promove o tom 500 como matiz padrão; 600/700 cobrem os estados hover/ativo.
Rampa completa (50 → 950, onze pontos)
{
"primary": {
"50": "#E8F5E9",
"100": "#C8E6C9",
...
"500": "#4CAF50",
...
"950": "#0F3D12"
}
}Publicar a rampa completa gera transições tonais mais suaves em todos os lugares.
Exemplos completos
🌿 Exemplo claro (light-mint)
{
"background": "#F8FFF8",
"foreground": "#2C3E2C",
"surface": "#F0FFF0",
"surfaceMuted": "#F5FDF5",
"border": "#D8E8D8",
"muted": "#6C7E6C",
"primary": {
"50": "#E8F5E9",
"100": "#C8E6C9",
"200": "#A5D6A7",
"300": "#81C784",
"400": "#66BB6A",
"500": "#4CAF50",
"600": "#43A047",
"700": "#388E3C",
"800": "#2E7D32",
"900": "#1B5E20",
"950": "#0F3D12"
},
"secondary": {
"500": "#AAAAAA",
"600": "#999999",
"700": "#777777"
},
"accent": {
"500": "#FFEB3B",
"600": "#FDD835",
"700": "#FBC02D"
}
}🌑 Exemplo escuro (dark-forest)
{
"background": "#101410",
"foreground": "#E0E0E0",
"surface": "#1E221E",
"surfaceMuted": "#161816",
"border": "#333633",
"muted": "#A0A0A0",
"primary": {
"500": "#4A9B6B",
"600": "#3F855C",
"700": "#346F4D"
}
}Variáveis personalizadas (vars)
Se os tokens padrão não forem suficientes, adicione variáveis CSS extras em um nó vars — omita o prefixo -- em cada chave.
{
"background": "#101010",
"foreground": "#E0E0E0",
...
"vars": {
"radius-card": "16px",
"shadow-card": "0 2px 12px rgba(0,0,0,0.4)"
}
}Regras de slug (name)
- Apenas letras ASCII minúsculas, dígitos e hífen (
a-z 0-9 -). - Prefira pares concisos “modo-estilo”, como “dark-ocean” ou “light-sakura”.
- Os slugs devem ser únicos globalmente — não podem mudar após a publicação, então confira antes.
- Comprimento máximo de 50 caracteres.
Envio e revisão
🔐 Entre antes de enviar.
⏳ Os envios entram na fila de revisão — a equipe costuma responder em 1 a 3 dias úteis.
✅ Temas aprovados aparecem na loja para todos favoritarem.
❌ Cores inválidas, nomes em conflito ou violações de política serão rejeitados — exclua e envie uma versão corrigida.
🚫 Sem código malicioso, conteúdo de ódio ou paletas claramente infratoras.
Pronto? Vá à loja de temas e publique sua paleta.
🎨 Enviar um tema