Categorias de Addons
Themes
Como criar temas visuais personalizados, paletas de cores e estilos para a interface do Pandhora.
Themes (Temas & Customização Visual)
Os addons da categoria Themes permitem personalizar completamente a estética visual do Pandhora — definindo paletas de cores para modos Claro (Light) e Escuro (Dark), contrastes, bordas e tipografia.
O Pandhora adota o padrão de design system baseado em Tokens CSS (compatível com Tailwind CSS e shadcn/ui), tornando a criação de novos temas simples e declarativa.
🎨 Estrutura de um Tema
Um tema exporta as variáveis de cores correspondentes aos papéis de interface:
export interface ThemeDefinition {
id: string
name: string
version: string
description?: string
author?: string
colors: {
light: Record<string, string>
dark: Record<string, string>
}
}
💻 Exemplo de Implementação de Tema
import type { IAddon, AddonContext } from '@pandhora/sdk'
export default class CyberpunkThemeAddon implements IAddon {
public id = 'cyberpunk-theme'
public name = 'Cyberpunk Neon Theme'
public version = '1.0.0'
public description = 'Tema com estética cyberpunk e cores neon vibrantes'
public theme = {
id: 'cyberpunk',
name: 'Cyberpunk Neon',
colors: {
light: {
'--background': '0 0% 100%',
'--foreground': '240 10% 3.9%',
'--primary': '326 100% 50%', // Pink Neon
'--primary-foreground': '0 0% 98%',
'--card': '0 0% 100%',
'--card-foreground': '240 10% 3.9%',
'--border': '240 5.9% 90%',
},
dark: {
'--background': '260 25% 8%', // Roxo Escuro Profundo
'--foreground': '180 100% 95%', // Ciano Claro
'--primary': '180 100% 50%', // Ciano Neon
'--primary-foreground': '260 25% 8%',
'--card': '260 20% 12%',
'--card-foreground': '180 100% 95%',
'--border': '260 20% 20%',
},
},
}
public async onActivate(context: AddonContext): Promise<void> {
console.log('[Theme] Tema Cyberpunk carregado com sucesso!')
}
public async onDeactivate(): Promise<void> {
console.log('[Theme] Tema Cyberpunk desativado.')
}
}
⚙️ Como o Pandhora Aplica os Temas
- Quando o usuário seleciona o tema nas preferências do Pandhora, o Core injeta dinamicamente as variáveis CSS na raiz do DOM (
:rootou classe.dark). - Todos os componentes da interface (Time Bar, Listas de Tarefas, Modais e Menus) atualizam suas cores instantaneamente sem necessidade de recarregar a janela.