"use client"; import React, { useState, useEffect } from 'react'; import { Search, Plus, X, FileText, Calendar, Heart, Users } from 'lucide-react'; import { format } from 'date-fns'; import { fr } from 'date-fns/locale'; interface Note { id: string; title: string; lastModified: string; size: number; type: string; mime: string; etag: string; } interface NotesViewProps { onNoteSelect?: (note: Note) => void; currentFolder?: string; } export const NotesView: React.FC = ({ onNoteSelect, currentFolder = 'Notes' }) => { const [searchQuery, setSearchQuery] = useState(''); const [notes, setNotes] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchNotes = async () => { try { setLoading(true); const response = await fetch(`/api/nextcloud/files?folder=${currentFolder}`); if (!response.ok) { throw new Error('Failed to fetch notes'); } const data = await response.json(); setNotes(data); } catch (err) { console.error('Error fetching notes:', err); setNotes([]); } finally { setLoading(false); } }; fetchNotes(); }, [currentFolder]); const handleNewNote = () => { const newNote: Note = { id: Date.now().toString(), title: 'New Note', lastModified: new Date().toISOString(), size: 0, type: 'file', mime: 'text/markdown', etag: '' }; setNotes([newNote, ...notes]); onNoteSelect?.(newNote); }; const formatDate = (dateString: string) => { return format(new Date(dateString), 'EEEE d MMM yyyy, HH:mm', { locale: fr }); }; const getFolderIcon = (folder: string) => { switch (folder) { case 'Notes': return FileText; case 'Diary': return Calendar; case 'Health': return Heart; case 'Contacts': return Users; default: return FileText; } }; const Icon = getFolderIcon(currentFolder); return (
{/* Search Header */}
setSearchQuery(e.target.value)} placeholder="Rechercher des notes..." className="w-full pl-9 pr-4 py-2 bg-white border border-carnet-border rounded-md text-sm text-carnet-text-primary placeholder-carnet-text-muted focus:outline-none focus:ring-1 focus:ring-primary" /> {searchQuery && ( )}
{/* Folder Header */}
{currentFolder}
{/* Notes List */}
{loading ? (
) : notes.length === 0 ? (

Aucune note trouvée

) : ( notes.map((note) => (
onNoteSelect?.(note)} >
{note.title}
{formatDate(note.lastModified)} {note.size} bytes
)) )}
); };