{data.data.map((item, index) => {
+ const category = item.category ?? fallbackCategory;
const Icon = (Icons[
- item.category.icon as keyof typeof Icons
+ category.icon as keyof typeof Icons
] || Icons.HelpCircle) as LucideIcon;
const percentageChange =
@@ -101,10 +112,10 @@ export function BreakdownCard({
: null;
const categoryColor = getCategoryColorClasses(
- item.category.color,
+ category.color,
);
const chartColor = categoryBarColor(
- item.category.color,
+ category.color,
index,
);
@@ -134,7 +145,7 @@ export function BreakdownCard({
- {item.category.name}
+ {category.name}
diff --git a/resources/js/hooks/use-cashflow-data.ts b/resources/js/hooks/use-cashflow-data.ts
index 06971f69..9e859a1d 100644
--- a/resources/js/hooks/use-cashflow-data.ts
+++ b/resources/js/hooks/use-cashflow-data.ts
@@ -30,8 +30,8 @@ export interface TrendDataPoint {
}
export interface BreakdownItem {
- category: Category;
- category_id: string;
+ category: Category | null;
+ category_id: string | null;
amount: number;
percentage: number;
previous_amount: number;
diff --git a/vitest.config.ts b/vitest.config.ts
index 9425f53a..2ef88467 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -1,9 +1,10 @@
+import { wayfinder } from '@laravel/vite-plugin-wayfinder';
import react from '@vitejs/plugin-react';
import { resolve } from 'path';
import { defineConfig } from 'vitest/config';
export default defineConfig({
- plugins: [react()],
+ plugins: [react(), wayfinder({ formVariants: true })],
test: {
environment: 'jsdom',
globals: true,