feat(v1.4.0): design system semântico, correções de revalidação e melhorias de UX

- Adicionar tokens semânticos de estado (success, warning, info) no globals.css
- Migrar ~60+ componentes de cores hardcoded do Tailwind para tokens semânticos
- Unificar 3 arrays duplicados de cores de categorias em importação única
- Corrigir widgets de boleto/fatura que não atualizavam após pagamento
  (actions de fatura e antecipação não invalidavam cache do dashboard)
- Corrigir scroll em listas Popover+Command (modal prop)
- Adicionar link "detalhes" no card de orçamento para página da categoria
- Adicionar indicadores de tendência coloridos nos cards de métricas
- Estender cores de chart de 6 para 10
- Normalizar dark mode e remover tokens não utilizados

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-02-07 15:14:59 +00:00
parent 390754c0e8
commit f50261208a
60 changed files with 324 additions and 305 deletions

View File

@@ -193,7 +193,7 @@ export function PagadorInfoCard({
</span>
</>
) : (
<span className="text-xs font-medium text-amber-600">
<span className="text-xs font-medium text-warning">
Acesso somente leitura
</span>
)}
@@ -247,7 +247,7 @@ export function PagadorInfoCard({
<InfoItem
label="Aviso"
value={
<span className="text-[13px] text-amber-700">
<span className="text-[13px] text-warning">
Cadastre um e-mail para permitir o envio automático.
</span>
}
@@ -397,7 +397,7 @@ export function PagadorInfoCard({
<div className="grid gap-2 sm:grid-cols-2">
<div>
<p className="text-xs text-muted-foreground">Pagos</p>
<p className="text-sm font-semibold text-green-600">
<p className="text-sm font-semibold text-success">
{formatCurrency(summary.boletoStats.paidAmount)}{" "}
<span className="text-xs font-normal">
({summary.boletoStats.paidCount})
@@ -408,7 +408,7 @@ export function PagadorInfoCard({
<p className="text-xs text-muted-foreground">
Pendentes
</p>
<p className="text-sm font-semibold text-amber-600">
<p className="text-sm font-semibold text-warning">
{formatCurrency(summary.boletoStats.pendingAmount)}{" "}
<span className="text-xs font-normal">
({summary.boletoStats.pendingCount})

View File

@@ -86,7 +86,7 @@ function StatusRow({ label, amount, count, percent, tone }: StatusRowProps) {
amount={amount}
className={cn(
"text-xl font-semibold",
tone === "success" ? "text-emerald-600" : "text-amber-600",
tone === "success" ? "text-success" : "text-warning",
)}
/>
<div className="flex items-center justify-between text-xs text-muted-foreground">
@@ -95,7 +95,7 @@ function StatusRow({ label, amount, count, percent, tone }: StatusRowProps) {
<div
className={cn(
"h-full rounded-full",
tone === "success" ? "bg-emerald-500" : "bg-amber-500",
tone === "success" ? "bg-success" : "bg-warning",
)}
style={{ width: `${clampedPercent}%` }}
/>