Files
claudecodeui/src/components/sidebar/view/subcomponents/SidebarContent.tsx
2026-02-18 07:32:39 +00:00

85 lines
2.3 KiB
TypeScript

import { ScrollArea } from '../../../ui/scroll-area';
import type { TFunction } from 'i18next';
import type { Project } from '../../../../types/app';
import type { ReleaseInfo } from '../../../../types/sharedTypes';
import SidebarFooter from './SidebarFooter';
import SidebarHeader from './SidebarHeader';
import SidebarProjectList, { type SidebarProjectListProps } from './SidebarProjectList';
type SidebarContentProps = {
isPWA: boolean;
isMobile: boolean;
isLoading: boolean;
projects: Project[];
searchFilter: string;
onSearchFilterChange: (value: string) => void;
onClearSearchFilter: () => void;
onRefresh: () => void;
isRefreshing: boolean;
onCreateProject: () => void;
onCollapseSidebar: () => void;
updateAvailable: boolean;
releaseInfo: ReleaseInfo | null;
latestVersion: string | null;
onShowVersionModal: () => void;
onShowSettings: () => void;
projectListProps: SidebarProjectListProps;
t: TFunction;
};
export default function SidebarContent({
isPWA,
isMobile,
isLoading,
projects,
searchFilter,
onSearchFilterChange,
onClearSearchFilter,
onRefresh,
isRefreshing,
onCreateProject,
onCollapseSidebar,
updateAvailable,
releaseInfo,
latestVersion,
onShowVersionModal,
onShowSettings,
projectListProps,
t,
}: SidebarContentProps) {
return (
<div
className="h-full flex flex-col bg-background/80 backdrop-blur-sm md:select-none md:w-72"
style={{}}
>
<SidebarHeader
isPWA={isPWA}
isMobile={isMobile}
isLoading={isLoading}
projectsCount={projects.length}
searchFilter={searchFilter}
onSearchFilterChange={onSearchFilterChange}
onClearSearchFilter={onClearSearchFilter}
onRefresh={onRefresh}
isRefreshing={isRefreshing}
onCreateProject={onCreateProject}
onCollapseSidebar={onCollapseSidebar}
t={t}
/>
<ScrollArea className="flex-1 md:px-1.5 md:py-2 overflow-y-auto overscroll-contain">
<SidebarProjectList {...projectListProps} />
</ScrollArea>
<SidebarFooter
updateAvailable={updateAvailable}
releaseInfo={releaseInfo}
latestVersion={latestVersion}
onShowVersionModal={onShowVersionModal}
onShowSettings={onShowSettings}
t={t}
/>
</div>
);
}