import type { Selection } from './useSelection'; import { Archive, ArchiveRestore, Heart, Plus, Trash2, Undo2, X } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { useAlbums } from './usePhotosData'; import { useAssetActions } from './useAssetActions'; // The bar that replaces the header once anything is selected — Immich does the same, and it keeps the // destructive buttons off screen entirely until they have something to act on. type SelectionBarProps = { selection: Selection; /** Trash swaps the whole action set: restore and delete-forever, not favorite and archive. */ inTrash?: boolean; /** When viewing one album, offer "remove from album" alongside the library-wide actions. */ albumId?: string; /** Currently in the archive view, so the archive button should read "unarchive". */ archived?: boolean; }; export const SelectionBar = ({ selection, inTrash = false, albumId, archived = false }: SelectionBarProps) => { const { ids, count, clear, selectAll } = selection; const { setFavorite, setArchived, trash, restore, deleteForever, addToAlbum, removeFromAlbum, createAlbum } = useAssetActions(); const { data: albums } = useAlbums(); const run = (action: () => void) => { action(); clear(); }; return (