diff --git a/src/app/notes/page.tsx b/src/app/notes/page.tsx new file mode 100644 index 0000000..1759980 --- /dev/null +++ b/src/app/notes/page.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react'; +import { Sidebar } from '@/components/Sidebar'; +import { NoteList } from '@/components/NoteList'; +import { AddNoteButton } from '@/components/AddNoteButton'; +import { NewNoteModal } from '@/components/NewNoteModal'; + +function NotesPage() { + const [notes, setNotes] = useState([]); + const [isModalOpen, setIsModalOpen] = useState(false); + + const handleSelectNote = (noteId: string) => { + // Handle note selection + }; + + const handleAddNote = () => { + setIsModalOpen(true); + }; + + const handleSaveNote = (title: string, content: string) => { + // Handle saving the new note + setIsModalOpen(false); + }; + + const handleCloseModal = () => { + setIsModalOpen(false); + }; + + return ( +
+ +
+

Notes

+ + + +
+
+ ); +} + +export default NotesPage; diff --git a/src/components/AddNoteButton.tsx b/src/components/AddNoteButton.tsx new file mode 100644 index 0000000..1fc137b --- /dev/null +++ b/src/components/AddNoteButton.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +interface AddNoteButtonProps { + onClick: () => void; +} + +export function AddNoteButton({ onClick }: AddNoteButtonProps) { + return ( + + ); +} diff --git a/src/components/Modal.tsx b/src/components/Modal.tsx new file mode 100644 index 0000000..ea39e65 --- /dev/null +++ b/src/components/Modal.tsx @@ -0,0 +1,23 @@ +import React, { ReactNode } from 'react'; + +interface ModalProps { + isOpen: boolean; + onClose: () => void; + children: ReactNode; +} + +export function Modal({ isOpen, onClose, children }: ModalProps) { + if (!isOpen) return null; + + return ( +
+
e.stopPropagation()}> + {children} +
+
+ ); +} diff --git a/src/components/NewNoteModal.tsx b/src/components/NewNoteModal.tsx new file mode 100644 index 0000000..60c3d53 --- /dev/null +++ b/src/components/NewNoteModal.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Modal } from '@/components/Modal'; +import { NoteForm } from '@/components/NoteForm'; + +interface NewNoteModalProps { + isOpen: boolean; + onClose: () => void; + onSaveNote: (title: string, content: string) => void; +} + +export function NewNoteModal({ isOpen, onClose, onSaveNote }: NewNoteModalProps) { + return ( + + × +

Create New Note

+ +
+ ); +} diff --git a/src/components/NoteForm.tsx b/src/components/NoteForm.tsx new file mode 100644 index 0000000..53bf189 --- /dev/null +++ b/src/components/NoteForm.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react'; + +interface NoteFormProps { + onSave: (title: string, content: string) => void; +} + +export function NoteForm({ onSave }: NoteFormProps) { + const [title, setTitle] = useState(''); + const [content, setContent] = useState(''); + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault(); + onSave(title, content); + setTitle(''); + setContent(''); + }; + + return ( +
+ setTitle(e.target.value)} + /> +