From 22a1052080f34705f8dd7f246c88aad87b654619 Mon Sep 17 00:00:00 2001 From: Omar Oughriss Date: Fri, 24 Oct 2025 17:05:54 +0200 Subject: [PATCH] Add Chat for each Folder --- app/dashboard/folders/page.tsx | 209 ++++++++++++++++++++------------- 1 file changed, 126 insertions(+), 83 deletions(-) diff --git a/app/dashboard/folders/page.tsx b/app/dashboard/folders/page.tsx index ee1f499..5579f72 100644 --- a/app/dashboard/folders/page.tsx +++ b/app/dashboard/folders/page.tsx @@ -14,6 +14,8 @@ import { SortAsc, SortDesc, X, + MessageSquare, + List, } from "lucide-react" import { FolderData, FolderCreated, FolderPrivateFields, setDefaultFolderRoles } from "@/lib/4nk/models/FolderData" import MessageBus from "@/lib/4nk/MessageBus" @@ -22,6 +24,7 @@ import UserStore from "@/lib/4nk/UserStore" import FolderModal from "@/components/4nk/FolderModal" import AuthModal from "@/components/4nk/AuthModal" import Iframe from "@/components/4nk/Iframe" +import FolderChat from "@/components/4nk/FolderChat" type FolderType = 'contrat' | 'projet' | 'rapport' | 'finance' | 'rh' | 'marketing' | 'autre'; @@ -32,6 +35,7 @@ export default function FoldersPage() { const [currentPath, setCurrentPath] = useState(["Racine"]) const [folderType, setFolderType] = useState(null); const [isModalOpen, setIsModalOpen] = useState(false); + const [activeTab, setActiveTab] = useState<"folders" | "chat">("folders"); // 4NK Integration states const [isConnected, setIsConnected] = useState(false) @@ -356,103 +360,142 @@ export default function FoldersPage() {
+ {activeTab === "folders" && ( + + )} +
+ + + {/* Tabs */} +
+
+
- {/* Search and filters */} -
-
- - setSearchTerm(e.target.value)} - className="pl-10" - /> + {/* Search and filters - only show for folders tab */} + {activeTab === "folders" && ( +
+
+ + setSearchTerm(e.target.value)} + className="pl-10" + /> +
+ +
+ +
- -
- -
-
+ )}
{/* Content */} -
- {loadingFolders ? ( -
-
-
-

Chargement des dossiers...

-
-
- ) : sortedFolders.length === 0 ? ( -
-
- -

Aucun dossier

-

- {searchTerm ? "Aucun dossier ne correspond à votre recherche." : "Commencez par créer votre premier dossier."} -

- {!searchTerm && ( - - )} -
-
- ) : ( -
- {/* Folder list */} -
- {sortedFolders.map((folder) => ( - - -
-
- -
-

{folder.name}

-

{folder.description}

-
- #{folder.folderNumber} - - - {new Date(folder.updated_at).toLocaleDateString()} - +
+ {activeTab === "folders" ? ( +
+ {loadingFolders ? ( +
+
+
+

Chargement des dossiers...

+
+
+ ) : sortedFolders.length === 0 ? ( +
+
+ +

Aucun dossier

+

+ {searchTerm ? "Aucun dossier ne correspond à votre recherche." : "Commencez par créer votre premier dossier."} +

+ {!searchTerm && ( + + )} +
+
+ ) : ( +
+ {/* Folder list */} +
+ {sortedFolders.map((folder) => ( + + +
+
+ +
+

{folder.name}

+

{folder.description}

+
+ #{folder.folderNumber} + + + {new Date(folder.updated_at).toLocaleDateString()} + +
+
+
+ +
+ {folder.notes.length > 0 && ( + {folder.notes.length} notes + )}
-
- -
- {folder.notes.length > 0 && ( - {folder.notes.length} notes - )} -
-
- - - ))} -
+ + + ))} +
+
+ )}
+ ) : ( + )}