diff --git a/src/app/library/page.tsx b/src/app/library/page.tsx index 9c40b2b..3eb923e 100644 --- a/src/app/library/page.tsx +++ b/src/app/library/page.tsx @@ -1,8 +1,8 @@ 'use client'; import DeleteChat from '@/components/DeleteChat'; -import { cn, formatTimeDifference } from '@/lib/utils'; -import { BookOpenText, ClockIcon, Delete, ScanEye } from 'lucide-react'; +import { formatTimeDifference } from '@/lib/utils'; +import { BookOpenText, ClockIcon, FileText, Globe2Icon } from 'lucide-react'; import Link from 'next/link'; import { useEffect, useState } from 'react'; @@ -10,7 +10,8 @@ export interface Chat { id: string; title: string; createdAt: string; - focusMode: string; + sources: string[]; + files: { fileId: string; name: string }[]; } const Page = () => { @@ -37,74 +38,137 @@ const Page = () => { fetchChats(); }, []); - return loading ? ( -
- -
- ) : ( + return (
-
-
- -

Library

-
-
-
- {chats.length === 0 && ( -
-

- No chats found. -

-
- )} - {chats.length > 0 && ( -
- {chats.map((chat, i) => ( -
- +
+
+ +
+

- {chat.title} - -
-
- -

- {formatTimeDifference(new Date(), chat.createdAt)} Ago -

-
- + Library +

+
+ Past chats, sources, and uploads.
- ))} +
+ +
+ + + {loading + ? 'Loading…' + : `${chats.length} ${chats.length === 1 ? 'chat' : 'chats'}`} + +
+
+
+ + {loading ? ( +
+ +
+ ) : chats.length === 0 ? ( +
+
+ +
+

+ No chats found. +

+

+ + Start a new chat + {' '} + to see it listed here. +

+
+ ) : ( +
+
+ {chats.map((chat, index) => { + const sourcesLabel = + chat.sources.length === 0 + ? null + : chat.sources.length <= 2 + ? chat.sources + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(', ') + : `${chat.sources + .slice(0, 2) + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(', ')} + ${chat.sources.length - 2}`; + + return ( +
+
+ + {chat.title} + +
+ +
+
+ +
+ + + {formatTimeDifference(new Date(), chat.createdAt)} Ago + + + {sourcesLabel && ( + + + {sourcesLabel} + + )} + {chat.files.length > 0 && ( + + + {chat.files.length}{' '} + {chat.files.length === 1 ? 'file' : 'files'} + + )} +
+
+ ); + })} +
)}