From fdf2b09290c051d8ea3ad90168a2c3fdb8bcb40e Mon Sep 17 00:00:00 2001 From: Haileyesus Date: Sat, 7 Feb 2026 16:52:52 +0300 Subject: [PATCH] refactor(sidebar): integrate settings modal into SidebarModals and update props --- src/components/Sidebar.tsx | 33 ++++++++++++++---------- src/components/app/AppContent.tsx | 10 ------- src/components/sidebar/SidebarModals.tsx | 17 ++++++++++++ src/components/sidebar/types.ts | 3 +++ src/hooks/useProjectsState.ts | 5 ++++ 5 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 9e47e5b..dc70cf8 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -32,6 +32,9 @@ function Sidebar({ loadingProgress, onRefresh, onShowSettings, + showSettings, + settingsInitialTab, + onCloseSettings, isMobile, }: SidebarProps) { const { t } = useTranslation(['sidebar', 'common']); @@ -179,6 +182,23 @@ function Sidebar({ return ( <> + setShowNewProject(false)} + onProjectCreated={handleProjectCreated} + deleteConfirmation={deleteConfirmation} + onCancelDeleteProject={() => setDeleteConfirmation(null)} + onConfirmDeleteProject={confirmDeleteProject} + sessionDeleteConfirmation={sessionDeleteConfirmation} + onCancelDeleteSession={() => setSessionDeleteConfirmation(null)} + onConfirmDeleteSession={confirmDeleteSession} + t={t} + /> + {isSidebarCollapsed ? ( ) : ( <> - setShowNewProject(false)} - onProjectCreated={handleProjectCreated} - deleteConfirmation={deleteConfirmation} - onCancelDeleteProject={() => setDeleteConfirmation(null)} - onConfirmDeleteProject={confirmDeleteProject} - sessionDeleteConfirmation={sessionDeleteConfirmation} - onCancelDeleteSession={() => setSessionDeleteConfirmation(null)} - onConfirmDeleteSession={confirmDeleteSession} - t={t} - /> - )} - setShowSettings(false)} - projects={projects as any} - initialTab={settingsInitialTab} - /> ); } diff --git a/src/components/sidebar/SidebarModals.tsx b/src/components/sidebar/SidebarModals.tsx index bee8baf..b05951d 100644 --- a/src/components/sidebar/SidebarModals.tsx +++ b/src/components/sidebar/SidebarModals.tsx @@ -3,9 +3,15 @@ import { AlertTriangle, Trash2 } from 'lucide-react'; import type { TFunction } from 'i18next'; import { Button } from '../ui/button'; import ProjectCreationWizard from '../ProjectCreationWizard'; +import Settings from '../Settings'; +import type { Project } from '../../types/app'; import type { DeleteProjectConfirmation, SessionDeleteConfirmation } from './types'; type SidebarModalsProps = { + projects: Project[]; + showSettings: boolean; + settingsInitialTab: string; + onCloseSettings: () => void; showNewProject: boolean; onCloseNewProject: () => void; onProjectCreated: () => void; @@ -19,6 +25,10 @@ type SidebarModalsProps = { }; export default function SidebarModals({ + projects, + showSettings, + settingsInitialTab, + onCloseSettings, showNewProject, onCloseNewProject, onProjectCreated, @@ -41,6 +51,13 @@ export default function SidebarModals({ document.body, )} + + {deleteConfirmation && ReactDOM.createPortal(
diff --git a/src/components/sidebar/types.ts b/src/components/sidebar/types.ts index 6422ef1..ba5b38c 100644 --- a/src/components/sidebar/types.ts +++ b/src/components/sidebar/types.ts @@ -35,6 +35,9 @@ export type SidebarProps = { loadingProgress: LoadingProgress | null; onRefresh: () => Promise | void; onShowSettings: () => void; + showSettings: boolean; + settingsInitialTab: string; + onCloseSettings: () => void; isMobile: boolean; }; diff --git a/src/hooks/useProjectsState.ts b/src/hooks/useProjectsState.ts index 4eee49a..8bb4dd3 100644 --- a/src/hooks/useProjectsState.ts +++ b/src/hooks/useProjectsState.ts @@ -480,6 +480,9 @@ export function useProjectsState({ loadingProgress, onRefresh: handleSidebarRefresh, onShowSettings: () => setShowSettings(true), + showSettings, + settingsInitialTab, + onCloseSettings: () => setShowSettings(false), isMobile, }), [ @@ -493,8 +496,10 @@ export function useProjectsState({ isMobile, loadingProgress, projects, + settingsInitialTab, selectedProject, selectedSession, + showSettings, ], );