From bc67d9fd28b1d2e618121efdcbbb93e6b5c89e89 Mon Sep 17 00:00:00 2001 From: Chris Veleris Date: Wed, 9 Jul 2025 22:53:05 +0300 Subject: [PATCH] Make all templates consistent --- frontend/components/Areas.tsx | 12 +- frontend/components/Inbox/InboxItems.tsx | 230 ++++++++++++----------- frontend/components/Notes.tsx | 12 +- frontend/components/Projects.tsx | 6 +- frontend/components/Tags.tsx | 12 +- frontend/components/Tasks.tsx | 2 +- 6 files changed, 136 insertions(+), 138 deletions(-) diff --git a/frontend/components/Areas.tsx b/frontend/components/Areas.tsx index 06cb545..858d0f6 100644 --- a/frontend/components/Areas.tsx +++ b/frontend/components/Areas.tsx @@ -107,13 +107,11 @@ const Areas: React.FC = () => {
{/* Areas Header */} -
-
- -

- {t('areas.title')} -

-
+
+ +

+ {t('areas.title')} +

{/* Areas List */} diff --git a/frontend/components/Inbox/InboxItems.tsx b/frontend/components/Inbox/InboxItems.tsx index 066ce5a..8f524af 100644 --- a/frontend/components/Inbox/InboxItems.tsx +++ b/frontend/components/Inbox/InboxItems.tsx @@ -336,136 +336,140 @@ const InboxItems: React.FC = () => { return ; } - if (inboxItems.length === 0) { - return ( -
- -

{t('inbox.empty')}

-

{t('inbox.emptyDescription')}

-
- ); - } - return ( -
-
- -

{t('inbox.title')}

-
+
+
+
+ +

{t('inbox.title')}

+
-

- {t( - 'taskViews.inbox', - "Inbox is where all uncategorized tasks are located. Tasks that have not been assigned to a project or don't have a due date will appear here. This is your 'brain dump' area where you can quickly note down tasks and organize them later." +

+ {t( + 'taskViews.inbox', + "Inbox is where all uncategorized tasks are located. Tasks that have not been assigned to a project or don't have a due date will appear here. This is your 'brain dump' area where you can quickly note down tasks and organize them later." + )} +

+ + {inboxItems.length === 0 ? ( +
+ +

+ {t('inbox.empty')} +

+

+ {t('inbox.emptyDescription')} +

+
+ ) : ( +
+ {inboxItems.map((item) => ( + + ))} +
)} -

-
- {inboxItems.map((item) => ( - - ))} -
- - {/* Task Modal - Always render it but control visibility with isOpen */} - {/* Add error boundary protection for modal rendering */} - {(() => { - try { - return ( - { - setIsTaskModalOpen(false); - setTaskToEdit(null); - }} - task={ - taskToEdit || { - name: '', - status: 'not_started', - priority: 'medium', - } - } - onSave={handleSaveTask} - onDelete={async () => {}} // No need to delete since it's a new task - projects={Array.isArray(projects) ? projects : []} - onCreateProject={handleCreateProject} - /> - ); - } catch (error) { - console.error('TaskModal rendering error:', error); - return null; - } - })()} - - {/* Project Modal - Only render when needed to prevent infinite loops */} - {isProjectModalOpen && - (() => { + {/* Task Modal - Always render it but control visibility with isOpen */} + {/* Add error boundary protection for modal rendering */} + {(() => { try { return ( - { - setIsProjectModalOpen(false); - setProjectToEdit(null); + setIsTaskModalOpen(false); + setTaskToEdit(null); }} - onSave={handleSaveProject} - project={projectToEdit || undefined} - areas={[]} + task={ + taskToEdit || { + name: '', + status: 'not_started', + priority: 'medium', + } + } + onSave={handleSaveTask} + onDelete={async () => {}} // No need to delete since it's a new task + projects={Array.isArray(projects) ? projects : []} + onCreateProject={handleCreateProject} /> ); } catch (error) { - console.error('ProjectModal rendering error:', error); + console.error('TaskModal rendering error:', error); return null; } })()} - {/* Note Modal - Always render it but control visibility with isOpen */} - {(() => { - try { - return ( - { - setIsNoteModalOpen(false); - setNoteToEdit(null); - }} - onSave={handleSaveNote} - note={noteToEdit} - projects={Array.isArray(projects) ? projects : []} - onCreateProject={handleCreateProject} - /> - ); - } catch (error) { - console.error('NoteModal rendering error:', error); - return null; - } - })()} + {/* Project Modal - Only render when needed to prevent infinite loops */} + {isProjectModalOpen && + (() => { + try { + return ( + { + setIsProjectModalOpen(false); + setProjectToEdit(null); + }} + onSave={handleSaveProject} + project={projectToEdit || undefined} + areas={[]} + /> + ); + } catch (error) { + console.error('ProjectModal rendering error:', error); + return null; + } + })()} - {/* Edit Inbox Item Modal */} - {isEditModalOpen && itemToEdit !== null && ( - { - setIsEditModalOpen(false); - setItemToEdit(null); - }} - onSave={async () => {}} // Not used in edit mode - initialText={ - inboxItems.find((item) => item.id === itemToEdit) - ?.content || '' + {/* Note Modal - Always render it but control visibility with isOpen */} + {(() => { + try { + return ( + { + setIsNoteModalOpen(false); + setNoteToEdit(null); + }} + onSave={handleSaveNote} + note={noteToEdit} + projects={Array.isArray(projects) ? projects : []} + onCreateProject={handleCreateProject} + /> + ); + } catch (error) { + console.error('NoteModal rendering error:', error); + return null; } - editMode={true} - onEdit={handleSaveEditedItem} - /> - )} + })()} + + {/* Edit Inbox Item Modal */} + {isEditModalOpen && itemToEdit !== null && ( + { + setIsEditModalOpen(false); + setItemToEdit(null); + }} + onSave={async () => {}} // Not used in edit mode + initialText={ + inboxItems.find((item) => item.id === itemToEdit) + ?.content || '' + } + editMode={true} + onEdit={handleSaveEditedItem} + /> + )} +
); }; diff --git a/frontend/components/Notes.tsx b/frontend/components/Notes.tsx index 814d294..bebd98f 100644 --- a/frontend/components/Notes.tsx +++ b/frontend/components/Notes.tsx @@ -181,13 +181,11 @@ const Notes: React.FC = () => {
{/* Notes Header */} -
-
- -

- {t('notes.title')} -

-
+
+ +

+ {t('notes.title')} +

{/* Search Bar with Icon */} diff --git a/frontend/components/Projects.tsx b/frontend/components/Projects.tsx index 30ae49f..21f082d 100644 --- a/frontend/components/Projects.tsx +++ b/frontend/components/Projects.tsx @@ -232,10 +232,10 @@ const Projects: React.FC = () => { return (
-
+
- -

+ +

{t('projects.title')}

diff --git a/frontend/components/Tags.tsx b/frontend/components/Tags.tsx index 4c6bdd4..303c870 100644 --- a/frontend/components/Tags.tsx +++ b/frontend/components/Tags.tsx @@ -216,13 +216,11 @@ const Tags: React.FC = () => {
{/* Tags Header */} -
-
- -

- Tags -

-
+
+ +

+ Tags +

{/* Search Bar with Icon */} diff --git a/frontend/components/Tasks.tsx b/frontend/components/Tasks.tsx index 027703a..fd010f3 100644 --- a/frontend/components/Tasks.tsx +++ b/frontend/components/Tasks.tsx @@ -270,7 +270,7 @@ const Tasks: React.FC = () => { return (
-
+
{IconComponent && (