import { useConfirm } from '@/providers/confirm-provider'; import { useAppState, PageMeta } from '@/providers/app-state-provider'; import { Menu, MenuItem } from '@/ui/menu'; import { Wrapper } from '@/ui/layout'; import { IconButton } from '@/ui/button'; import { MoreVerticalIcon, RestoreIcon, DeleteIcon, FavouritesIcon, FavouritedIcon, OpenInNewIcon, TrashIcon, } from '@blocksuite/icons'; import { toast } from '@/components/toast'; import { usePageHelper } from '@/hooks/use-page-helper'; export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { const { id, favorite } = pageMeta; const { openPage } = usePageHelper(); const { toggleFavoritePage, toggleDeletePage } = usePageHelper(); const { confirm } = useConfirm(); const OperationMenu = ( <> { toggleFavoritePage(id); toast(!favorite ? 'Removed to Favourites' : 'Added to Favourites'); }} icon={favorite ? : } > {favorite ? 'Remove' : 'Add'} to favourites { openPage(id); }} icon={} > Open in new tab { confirm({ title: 'Delete page?', content: `${pageMeta.title || 'Untitled'} will be moved to Trash`, confirmText: 'Delete', confirmType: 'danger', }).then(confirm => { confirm && toggleDeletePage(id); toast('Moved to Trash'); }); }} icon={} > Delete ); return ( ); }; export const TrashOperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => { const { id } = pageMeta; const { openPage } = usePageHelper(); const { getPageMeta } = useAppState(); const { toggleDeletePage, permanentlyDeletePage } = usePageHelper(); const { confirm } = useConfirm(); return ( { toggleDeletePage(id); toast(`${getPageMeta(id)?.title || 'Untitled'} restored`); openPage(id); }} > { confirm({ title: 'Delete permanently?', content: "Once deleted, you can't undo this action.", confirmText: 'Delete', confirmType: 'danger', }).then(confirm => { confirm && permanentlyDeletePage(id); toast('Permanently deleted'); }); }} > ); };