feat(dashboard): tendências top 10 e padronização de espaçamento do inbox

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-04-11 22:43:38 +00:00
parent 9b8ac9f71f
commit fba9686fdb
3 changed files with 39 additions and 38 deletions

View File

@@ -24,7 +24,7 @@ export function CategoryTrendsWidget({
(a, b) =>
Math.abs(b.percentageChange ?? 0) - Math.abs(a.percentageChange ?? 0),
)
.slice(0, 6);
.slice(0, 10);
if (trending.length === 0) {
return (

View File

@@ -157,7 +157,7 @@ export function InboxWidget({
}
return (
<div className="space-y-1">
<div className="flex flex-col">
{snapshot.recentItems.map((item) => {
const displayName = item.parsedName ?? item.originalText.slice(0, 40);
const parsedAmount =
@@ -174,30 +174,37 @@ export function InboxWidget({
const displayLogo = logoSrc ?? DEFAULT_INBOX_APP_LOGO;
return (
<div key={item.id} className="-mx-2 rounded-md p-2">
<div className="flex items-center gap-2">
<div
key={item.id}
className="flex items-center justify-between py-1.5"
>
<div className="flex min-w-0 flex-1 items-center gap-2 py-1">
<Image
src={displayLogo}
alt={item.sourceAppName ?? ""}
width={36}
height={36}
className="size-9 shrink-0 rounded-full object-contain"
width={38}
height={38}
className="size-9.5 shrink-0 rounded-full object-contain"
unoptimized
/>
<div className="min-w-0 flex-1">
<div className="min-w-0">
<p className="truncate text-sm font-medium text-foreground">
{displayName}
</p>
<div className="flex items-center gap-2">
{item.sourceAppName && (
<span className="text-xs text-muted-foreground">
{item.sourceAppName}
</span>
)}
<span className="text-xs text-muted-foreground/60">
<div className="flex items-center gap-2 text-xs text-muted-foreground">
{item.sourceAppName && <span>{item.sourceAppName}</span>}
<span className="text-muted-foreground/60">
{relativeTime(item.createdAt)}
</span>
</div>
</div>
</div>
<div className="flex shrink-0 flex-col items-end">
{amount !== null && (
<MoneyValues className="font-medium" amount={amount} />
)}
<div className="flex items-center">
<Button
size="icon-sm"
@@ -222,12 +229,6 @@ export function InboxWidget({
</div>
</div>
</div>
{amount !== null && (
<MoneyValues className="font-medium" amount={amount} />
)}
</div>
</div>
);
})}

View File

@@ -163,7 +163,7 @@ export const widgetsConfig: WidgetConfig[] = [
{
id: "category-trends",
title: "Tendências de Categorias",
subtitle: "Top 6 maiores variações vs. mês anterior",
subtitle: "Top 10 maiores variações vs. mês anterior",
icon: <RiLineChartLine className="size-4" />,
component: ({ data }) => (
<CategoryTrendsWidget