Theming

Como usar e customizar temas no @ag/ui.

O @ag/ui usa CSS custom properties (variáveis CSS) para temas. Isso permite trocar completamente a aparência da aplicação com um único import, sem alterar nenhum componente.

Como funciona

O arquivo base (@ag/ui/styles.css) define a infraestrutura do Tailwind e mapeia as variáveis CSS para os tokens do design system via @theme inline. Os temas definem os valores dessas variáveis para os modos claro e escuro.

/* Estrutura simplificada */
@ag/ui/styles.css   → infraestrutura + tema default
@ag/ui/themes/*     → substitui as variáveis de cor

Temas disponíveis

TemaImportDescrição
default@ag/ui/themes/defaultPreto e branco neutro
agelina@ag/ui/themes/agelinaTons quentes com primário em laranja

Usando um tema

Importe o styles.css e em seguida o tema desejado no seu CSS global. O tema deve vir depois do styles.css para sobrescrever as variáveis padrão.

@import "tailwindcss";
@import "@ag/ui/styles.css";
@import "@ag/ui/themes/agelina";

Criando um tema customizado

Crie um arquivo CSS com as variáveis :root (modo claro) e .dark (modo escuro):

:root {
  --background: oklch(1 0 0);
  --foreground: oklch(0.145 0 0);
  --primary: oklch(0.6 0.2 250);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.97 0 0);
  --secondary-foreground: oklch(0.205 0 0);
  --muted: oklch(0.97 0 0);
  --muted-foreground: oklch(0.556 0 0);
  --accent: oklch(0.97 0 0);
  --accent-foreground: oklch(0.205 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --border: oklch(0.922 0 0);
  --input: oklch(0.922 0 0);
  --ring: oklch(0.6 0.2 250);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.145 0 0);
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.145 0 0);
  --radius: 0.5rem;

  /* Sidebar */
  --sidebar: oklch(0.985 0 0);
  --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-accent: oklch(0.97 0 0);
  --sidebar-accent-foreground: oklch(0.205 0 0);
  --sidebar-border: oklch(0.922 0 0);
  --sidebar-ring: oklch(0.6 0.2 250);
}

.dark {
  --background: oklch(0.145 0 0);
  --foreground: oklch(0.985 0 0);
  --primary: oklch(0.7 0.2 250);
  --primary-foreground: oklch(0.145 0 0);
  /* ... demais variáveis */
}

Depois importe no seu CSS global:

@import "tailwindcss";
@import "@ag/ui/styles.css";
@import "./themes/meu-tema.css";

Referência de variáveis

Cores base

VariávelDescrição
--backgroundFundo da página
--foregroundTexto principal
--primaryCor de destaque principal (botões, links)
--primary-foregroundTexto sobre primary
--secondaryCor secundária
--secondary-foregroundTexto sobre secondary
--mutedFundo de elementos discretos
--muted-foregroundTexto discreto
--accentHover e estados ativos
--accent-foregroundTexto sobre accent
--destructiveAções destrutivas (delete, erro)
--borderBordas
--inputFundo de inputs
--ringOutline de foco

Card e Popover

VariávelDescrição
--cardFundo do card
--card-foregroundTexto do card
--popoverFundo de popovers e dropdowns
--popover-foregroundTexto de popovers
VariávelDescrição
--sidebarFundo da sidebar
--sidebar-foregroundTexto da sidebar
--sidebar-accentHover dos itens da sidebar
--sidebar-accent-foregroundTexto no hover
--sidebar-borderBorda da sidebar
--sidebar-ringOutline de foco na sidebar

Forma e espaçamento

VariávelDescrição
--radiusRaio base dos componentes