added changes ready to ship

This commit is contained in:
tusuii
2026-02-21 12:06:16 +05:30
parent 1788e364f1
commit 82077d38e6
39 changed files with 694 additions and 5600 deletions

View File

@@ -12,6 +12,7 @@ import { TaskDrawer, AddTaskModal } from './TaskDrawer';
import { DashboardPage } from './Dashboard';
import { TeamTasksPage, MembersPage } from './Pages';
import { ReportsPage } from './Reports';
import { NotificationProvider } from './NotificationContext';
import './index.css';
const PAGE_TITLES: Record<string, string> = {
@@ -242,56 +243,58 @@ export default function App() {
}
return (
<div className="app-shell">
<TopNavbar title={pageTitle} filterUser={filterUser} onFilterChange={setFilterUser}
searchQuery={searchQuery} onSearch={setSearchQuery} onNewTask={handleNewTask}
onOpenSidebar={() => setSidebarOpen(true)} users={users} />
<div className="app-body">
<Sidebar currentUser={currentUser} activePage={activePage} onNavigate={handleNavigate}
onSignOut={() => { setCurrentUser(null); setActivePage('calendar'); setActiveView('calendar'); setSidebarOpen(false); }}
isOpen={sidebarOpen} onClose={() => setSidebarOpen(false)} users={users} />
<div className="main-content">
{displayPage === 'calendar' && (
<CalendarView tasks={tasks} currentUser={currentUser} calMonth={calMonth} calView={calView}
onMonthChange={setCalMonth} onViewChange={setCalView} onTaskClick={handleTaskClick}
onDayClick={handleDayClick} filterUser={filterUser} searchQuery={searchQuery} users={users} />
)}
{displayPage === 'kanban' && (
<KanbanBoard tasks={tasks} currentUser={currentUser} onTaskClick={handleTaskClick}
onAddTask={handleKanbanAdd} onMoveTask={handleMoveTask} filterUser={filterUser} searchQuery={searchQuery} users={users} />
)}
{displayPage === 'list' && (
<ListView tasks={tasks} currentUser={currentUser} onTaskClick={handleTaskClick}
filterUser={filterUser} searchQuery={searchQuery} onToggleDone={handleToggleDone} users={users} />
)}
{displayPage === 'dashboard' && <DashboardPage tasks={tasks} currentUser={currentUser} users={users} />}
{displayPage === 'mytasks' && (
<ListView tasks={filteredMyTasks} currentUser={currentUser} onTaskClick={handleTaskClick}
filterUser={null} searchQuery={searchQuery} onToggleDone={handleToggleDone} users={users} />
)}
{displayPage === 'teamtasks' && <TeamTasksPage tasks={tasks} currentUser={currentUser} users={users} />}
{displayPage === 'reports' && <ReportsPage tasks={tasks} users={users} currentUser={currentUser} />}
{displayPage === 'members' && <MembersPage tasks={tasks} users={users} currentUser={currentUser} onAddUser={handleAddUser} onDeleteUser={handleDeleteUser} />}
</div>
</div>
{VIEW_PAGES.includes(activePage) && (
<BottomToggleBar activeView={activeView} onViewChange={handleViewChange} />
)}
{activeTask && <TaskDrawer task={activeTask} currentUser={currentUser} onClose={() => setActiveTask(null)} onUpdate={handleUpdateTask} onAddDependency={handleAddDep} onToggleDependency={handleToggleDep} onRemoveDependency={handleRemoveDep} users={users} />}
{showAddModal && <AddTaskModal onClose={() => setShowAddModal(false)} onAdd={handleAddTask} defaultDate={addModalDefaults.date} defaultStatus={addModalDefaults.status} users={users} currentUser={currentUser} />}
{quickAddDay && (
<div style={{ position: 'fixed', inset: 0, zIndex: 199 }} onClick={() => setQuickAddDay(null)}>
<div style={{ position: 'absolute', top: Math.min(quickAddDay.rect.top, window.innerHeight - 280), left: Math.min(quickAddDay.rect.left, window.innerWidth - 340) }}
onClick={e => e.stopPropagation()}>
<QuickAddPanel date={quickAddDay.date} onAdd={handleQuickAdd}
onOpenFull={() => { setAddModalDefaults({ date: quickAddDay.date }); setShowAddModal(true); setQuickAddDay(null); }}
onClose={() => setQuickAddDay(null)} users={users} />
<NotificationProvider userId={currentUser.id}>
<div className="app-shell">
<TopNavbar title={pageTitle} filterUser={filterUser} onFilterChange={setFilterUser}
searchQuery={searchQuery} onSearch={setSearchQuery} onNewTask={handleNewTask}
onOpenSidebar={() => setSidebarOpen(true)} users={users} />
<div className="app-body">
<Sidebar currentUser={currentUser} activePage={activePage} onNavigate={handleNavigate}
onSignOut={() => { setCurrentUser(null); setActivePage('calendar'); setActiveView('calendar'); setSidebarOpen(false); }}
isOpen={sidebarOpen} onClose={() => setSidebarOpen(false)} users={users} />
<div className="main-content">
{displayPage === 'calendar' && (
<CalendarView tasks={tasks} currentUser={currentUser} calMonth={calMonth} calView={calView}
onMonthChange={setCalMonth} onViewChange={setCalView} onTaskClick={handleTaskClick}
onDayClick={handleDayClick} filterUser={filterUser} searchQuery={searchQuery} users={users} />
)}
{displayPage === 'kanban' && (
<KanbanBoard tasks={tasks} currentUser={currentUser} onTaskClick={handleTaskClick}
onAddTask={handleKanbanAdd} onMoveTask={handleMoveTask} filterUser={filterUser} searchQuery={searchQuery} users={users} />
)}
{displayPage === 'list' && (
<ListView tasks={tasks} currentUser={currentUser} onTaskClick={handleTaskClick}
filterUser={filterUser} searchQuery={searchQuery} onToggleDone={handleToggleDone} users={users} />
)}
{displayPage === 'dashboard' && <DashboardPage tasks={tasks} currentUser={currentUser} users={users} />}
{displayPage === 'mytasks' && (
<ListView tasks={filteredMyTasks} currentUser={currentUser} onTaskClick={handleTaskClick}
filterUser={null} searchQuery={searchQuery} onToggleDone={handleToggleDone} users={users} />
)}
{displayPage === 'teamtasks' && <TeamTasksPage tasks={tasks} currentUser={currentUser} users={users} />}
{displayPage === 'reports' && <ReportsPage tasks={tasks} users={users} currentUser={currentUser} />}
{displayPage === 'members' && <MembersPage tasks={tasks} users={users} currentUser={currentUser} onAddUser={handleAddUser} onDeleteUser={handleDeleteUser} />}
</div>
</div>
)}
</div>
{VIEW_PAGES.includes(activePage) && (
<BottomToggleBar activeView={activeView} onViewChange={handleViewChange} />
)}
{activeTask && <TaskDrawer task={activeTask} currentUser={currentUser} onClose={() => setActiveTask(null)} onUpdate={handleUpdateTask} onAddDependency={handleAddDep} onToggleDependency={handleToggleDep} onRemoveDependency={handleRemoveDep} users={users} />}
{showAddModal && <AddTaskModal onClose={() => setShowAddModal(false)} onAdd={handleAddTask} defaultDate={addModalDefaults.date} defaultStatus={addModalDefaults.status} users={users} currentUser={currentUser} />}
{quickAddDay && (
<div style={{ position: 'fixed', inset: 0, zIndex: 199 }} onClick={() => setQuickAddDay(null)}>
<div style={{ position: 'absolute', top: Math.min(quickAddDay.rect.top, window.innerHeight - 280), left: Math.min(quickAddDay.rect.left, window.innerWidth - 340) }}
onClick={e => e.stopPropagation()}>
<QuickAddPanel date={quickAddDay.date} onAdd={handleQuickAdd}
onOpenFull={() => { setAddModalDefaults({ date: quickAddDay.date }); setShowAddModal(true); setQuickAddDay(null); }}
onClose={() => setQuickAddDay(null)} users={users} />
</div>
</div>
)}
</div>
</NotificationProvider>
);
}