feat(pagadores): adicionar widget no dashboard e atualizar avatares

- Novo widget de pagadores no dashboard com resumo de transações
- Substituir avatares SVG por PNG com melhor qualidade
- Melhorar seção de pagador no diálogo de lançamentos
- Adicionar ação para buscar pagadores por nome
- Atualizar componentes de seleção (cartões, categorias, contas)
- Melhorias no layout de ajustes e relatórios

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-02-04 01:44:50 +00:00
parent 76702d770f
commit a70a83dd9d
61 changed files with 509 additions and 148 deletions

View File

@@ -1,7 +1,10 @@
import { readdir } from "node:fs/promises";
import path from "node:path";
import { eq } from "drizzle-orm";
import { PagadoresPage } from "@/components/pagadores/pagadores-page";
import { user } from "@/db/schema";
import { getUserId } from "@/lib/auth/server";
import { db } from "@/lib/db";
import { fetchPagadoresWithAccess } from "@/lib/pagadores/access";
import type { PagadorStatus } from "@/lib/pagadores/constants";
import {
@@ -44,11 +47,21 @@ const resolveStatus = (status: string | null): PagadorStatus => {
export default async function Page() {
const userId = await getUserId();
const [pagadorRows, avatarOptions] = await Promise.all([
const [pagadorRows, localAvatarOptions, userData] = await Promise.all([
fetchPagadoresWithAccess(userId),
loadAvatarOptions(),
db.query.user.findFirst({
columns: { image: true },
where: eq(user.id, userId),
}),
]);
// Incluir a imagem do Google nas opções se disponível
const userImage = userData?.image;
const avatarOptions = userImage
? [userImage, ...localAvatarOptions]
: localAvatarOptions;
const pagadoresData = pagadorRows
.map((pagador) => ({
id: pagador.id,