feat: use structured output, import CSV, bugfixes

This commit is contained in:
Vasily Zubarev
2025-03-21 18:42:14 +01:00
parent 33727a431e
commit f6dc617eae
35 changed files with 735 additions and 195 deletions

View File

@@ -6,6 +6,7 @@ import { FILE_ACCEPTED_MIMETYPES } from "@/lib/files"
import { Camera, Loader2 } from "lucide-react"
import { useRouter } from "next/navigation"
import { startTransition, useState } from "react"
import { FormError } from "../forms/error"
export default function DashboardDropZoneWidget() {
const router = useRouter()
@@ -65,7 +66,7 @@ export default function DashboardDropZoneWidget() {
upload receipts, invoices and any other documents for me to scan
</p>
)}
{uploadError && <p className="text-red-500">{uploadError}</p>}
{uploadError && <FormError>{uploadError}</FormError>}
</div>
</div>
</label>

View File

@@ -32,7 +32,7 @@ export async function StatsWidget({ filters }: { filters: TransactionFilters })
</CardHeader>
<CardContent>
{Object.entries(stats.totalIncomePerCurrency).map(([currency, total]) => (
<div key={currency} className="flex gap-2 items-center font-bold text-base first:text-2xl">
<div key={currency} className="flex gap-2 items-center font-bold text-base first:text-2xl text-green-500">
{formatCurrency(total, currency)}
</div>
))}
@@ -46,12 +46,7 @@ export async function StatsWidget({ filters }: { filters: TransactionFilters })
</CardHeader>
<CardContent>
{Object.entries(stats.totalExpensesPerCurrency).map(([currency, total]) => (
<div
key={currency}
className={`flex gap-2 items-center font-bold text-base first:text-2xl ${
total >= 0 ? "text-green-500" : "text-red-500"
}`}
>
<div key={currency} className="flex gap-2 items-center font-bold text-base first:text-2xl text-red-500">
{formatCurrency(total, currency)}
</div>
))}