diff --git a/app/accounts/page.tsx b/app/accounts/page.tsx index b29d6d5..9c0ef58 100644 --- a/app/accounts/page.tsx +++ b/app/accounts/page.tsx @@ -1,22 +1,61 @@ "use client"; import { useState } from "react"; +import { + DndContext, + DragEndEvent, + DragOverlay, + DragStartEvent, + PointerSensor, + useSensor, + useSensors, + closestCenter, + useDroppable, +} from "@dnd-kit/core"; import { PageLayout, LoadingState, PageHeader } from "@/components/layout"; import { AccountCard, AccountEditDialog, AccountBulkActions, } from "@/components/accounts"; +import { + FolderEditDialog, +} from "@/components/folders"; import { useBankingData } from "@/lib/hooks"; -import { updateAccount, deleteAccount } from "@/lib/store-db"; +import { updateAccount, deleteAccount, addFolder, updateFolder, deleteFolder } from "@/lib/store-db"; import { Card, CardContent } from "@/components/ui/card"; -import { Building2, Folder } from "lucide-react"; -import type { Account } from "@/lib/types"; +import { Button } from "@/components/ui/button"; +import { Building2, Folder, Plus, List, LayoutGrid } from "lucide-react"; +import type { Account, Folder as FolderType } from "@/lib/types"; import { cn } from "@/lib/utils"; import { getAccountBalance } from "@/lib/account-utils"; +// Composant wrapper pour les zones de drop des dossiers +function FolderDropZone({ + folderId, + children, +}: { + folderId: string; + children: React.ReactNode; +}) { + const { setNodeRef, isOver } = useDroppable({ + id: `folder-${folderId}`, + }); + + return ( +
Solde total
@@ -190,122 +396,178 @@ export default function AccountsPage() { selectedCount={selectedAccounts.size} onDelete={handleBulkDelete} /> -+ Aucun compte dans ce dossier +
++ Glissez-déposez un compte ici pour l'ajouter +
+- {accountTypeLabels[account.type]} -
- {account.accountNumber && ( -- {account.accountNumber} -
+ {!compact && ( + <> ++ {accountTypeLabels[account.type]} +
+ {account.accountNumber && ( ++ {account.accountNumber} +
+ )} + > )}- Dernier import:{" "} - {new Date(account.lastImport).toLocaleDateString("fr-FR")} -
- )} - {account.externalUrl && ( - -+ Solde initial: {formatCurrency(account.initialBalance)} +
+ )} + {account.lastImport && ( ++ Dernier import:{" "} + {new Date(account.lastImport).toLocaleDateString("fr-FR")} +
+ )} + {account.externalUrl && ( + +