import React, { useState } from 'react'; import { useModuleList } from '../../core/useModuleList'; import { createNotesAdapter } from '../../adapter'; import { NoteListItem } from '../../components/NoteListItem'; import { NoteDetailView } from '../../components/NoteDetailView'; import { CreateNoteModal } from '../../components/CreateNoteModal'; import { supabase } from '../../supabaseClient'; import { useKeycloakAuth } from '@micahgoodman/auth'; const NoteAdapter = createNotesAdapter(supabase); /** * Main notes page for standalone mode */ export function NotesPage() { const { user, signOut } = useKeycloakAuth(); const { items: notes, loading, error, refresh } = useModuleList(NoteAdapter); const [selectedId, setSelectedId] = useState(null); const [showCreate, setShowCreate] = useState(false); const selectedNote = notes.find(n => n.id === selectedId) || null; if (loading) { return (
Loading notes...
); } if (error) { return (

Error: {error}

); } return (
{/* Sidebar */}
{/* Header */}

Notes

{user?.email || 'User'}

{/* New Note Button */}
{/* Notes List */}
{notes.length === 0 ? (
No notes yet. Create your first note!
) : ( notes.map((note, index) => ( setSelectedId(note.id)} index={index} /> )) )}
{/* Detail View */}
{selectedNote ? ( { setSelectedId(null); refresh(); }} onShowToast={(msg) => { // Simple toast implementation const toast = document.createElement('div'); toast.textContent = msg; toast.style.cssText = ` position: fixed; bottom: 20px; right: 20px; background: #333; color: white; padding: 12px 20px; border-radius: 4px; z-index: 1000; `; document.body.appendChild(toast); setTimeout(() => toast.remove(), 3000); }} /> ) : (
Select a note to view details
)}
{/* Create Modal */} {showCreate && ( setShowCreate(false)} onCreate={() => { setShowCreate(false); refresh(); }} /> )}
); }