"use client"; import { RiArrowRightLine, RiCalendarLine, RiHistoryLine, RiLineChartLine, } from "@remixicon/react"; import Link from "next/link"; import type { DashboardCategoryBreakdownItem } from "@/features/dashboard/categories/category-breakdown-helpers"; import { dashboardWidgetListStyles as styles } from "@/features/dashboard/components/dashboard-widget-list-styles"; import { PercentageChangeIndicator } from "@/features/dashboard/components/percentage-change-indicator"; import { CategoryIconBadge } from "@/shared/components/entity-avatar"; import MoneyValues from "@/shared/components/money-values"; import { WidgetEmptyState } from "@/shared/components/widgets/widget-empty-state"; import { formatPercentage } from "@/shared/utils/percentage"; import { formatPeriodForUrl } from "@/shared/utils/period"; type CategoryTrendsWidgetProps = { categories: DashboardCategoryBreakdownItem[]; period: string; }; export function CategoryTrendsWidget({ categories, period, }: CategoryTrendsWidgetProps) { const periodParam = formatPeriodForUrl(period); const trending = categories .filter((c) => c.percentageChange !== null && c.previousAmount > 0) .sort( (a, b) => Math.abs(b.percentageChange ?? 0) - Math.abs(a.percentageChange ?? 0), ) .slice(0, 10); if (trending.length === 0) { return ( } title="Dados insuficientes" description="As variações aparecem após lançamentos em dois meses consecutivos." /> ); } return ( ); }