'use client' import { useState } from 'react' import { Trash2 } from 'lucide-react' import { deleteList } from '@/lib/actions' import { useRouter } from 'next/navigation' import Modal from './Modal' import { useToast } from './ToastContainer' interface DeleteListButtonProps { listId: string listTitle: string itemCount: number redirectAfterDelete?: boolean } export default function DeleteListButton({ listId, listTitle, itemCount, redirectAfterDelete = false }: DeleteListButtonProps) { const router = useRouter() const { showToast } = useToast() const [isConfirmOpen, setIsConfirmOpen] = useState(false) const [isDeleting, setIsDeleting] = useState(false) const handleDelete = async () => { setIsDeleting(true) try { await deleteList(listId) showToast('List deleted successfully', 'success') setIsConfirmOpen(false) if (redirectAfterDelete) { router.push('/') } else { router.refresh() } } catch (err) { console.error('Failed to delete list:', err) showToast('Failed to delete list', 'error') } finally { setIsDeleting(false) } } return ( <> setIsConfirmOpen(true)} className="text-red-600 hover:text-red-700 active:text-red-800 transition-colors tap-target-sm hover:bg-red-50 active:bg-red-100 rounded-lg" aria-label="Delete list" > setIsConfirmOpen(false)} title="Delete List" > Are you sure you want to delete {listTitle}? {itemCount > 0 && ( This will permanently delete {itemCount} {itemCount === 1 ? 'item' : 'items'}. )} setIsConfirmOpen(false)} disabled={isDeleting} className="w-full sm:w-auto px-4 sm:px-5 py-3 text-gray-700 bg-gray-100 hover:bg-gray-200 active:bg-gray-300 rounded-lg transition-colors disabled:opacity-50 tap-target font-medium text-sm sm:text-base" > Cancel {isDeleting ? 'Deleting...' : 'Delete'} > ) }
Are you sure you want to delete {listTitle}?
This will permanently delete {itemCount} {itemCount === 1 ? 'item' : 'items'}.