import React from 'react' import { ContextMenu } from '../shared/ContextMenu' import FileImportModal from './FileImportModal' import ConfirmDialog from '../shared/ConfirmDialog' import { usePlacesSidebar, type PlacesSidebarProps } from './usePlacesSidebar' import { PlacesDropOverlay, PlacesHeader } from './PlacesSidebarHeader' import { PlacesSelectionBar } from './PlacesSidebarSelectionBar' import { PlacesList } from './PlacesSidebarList' import { MobileDayPickerSheet } from './PlacesSidebarMobileDayPicker' import { ListImportModal } from './PlacesSidebarListImportModal' const PlacesSidebar = React.memo(function PlacesSidebar(props: PlacesSidebarProps) { const S = usePlacesSidebar(props) const { sidebarDragOver, handleSidebarDragEnter, handleSidebarDragOver, handleSidebarDragLeave, handleSidebarDrop, selectMode, filtered, t, dayPickerPlace, listImportOpen, fileImportOpen, setFileImportOpen, sidebarDropFile, setSidebarDropFile, tripId, pushUndo, ctxMenu, isMobile, pendingDeleteIds, setPendingDeleteIds, onBulkDeleteConfirm, } = S return (
{sidebarDragOver && } {/* Kopfbereich */} {/* Anzahl / Auswahl-Leiste */} {selectMode ? ( ) : (
{filtered.length === 1 ? t('places.countSingular') : t('places.count', { count: filtered.length })}
)} {/* Liste */} {dayPickerPlace && } {listImportOpen && } { setFileImportOpen(false); setSidebarDropFile(null) }} tripId={tripId} pushUndo={pushUndo} initialFile={sidebarDropFile} /> {isMobile && ( setPendingDeleteIds(null)} onConfirm={() => { onBulkDeleteConfirm?.(pendingDeleteIds!); setPendingDeleteIds(null) }} message={t('trip.confirm.deletePlaces', { count: pendingDeleteIds?.length ?? 0 })} /> )}
) }) export default PlacesSidebar