import { useState } from "react"; import { ApiClientError, apiClient } from "../api"; interface NoteType { id: string; name: string; } interface DeleteNoteTypeModalProps { isOpen: boolean; noteType: NoteType | null; onClose: () => void; onNoteTypeDeleted: () => void; } export function DeleteNoteTypeModal({ isOpen, noteType, onClose, onNoteTypeDeleted, }: DeleteNoteTypeModalProps) { const [error, setError] = useState(null); const [isDeleting, setIsDeleting] = useState(false); const handleClose = () => { setError(null); onClose(); }; const handleDelete = async () => { if (!noteType) return; setError(null); setIsDeleting(true); try { const res = await apiClient.rpc.api["note-types"][":id"].$delete({ param: { id: noteType.id }, }); await apiClient.handleResponse(res); onNoteTypeDeleted(); onClose(); } catch (err) { if (err instanceof ApiClientError) { setError(err.message); } else { setError("Failed to delete note type. Please try again."); } } finally { setIsDeleting(false); } }; if (!isOpen || !noteType) { return null; } return (
{ if (e.target === e.currentTarget) { handleClose(); } }} onKeyDown={(e) => { if (e.key === "Escape") { handleClose(); } }} >

Delete Note Type

{error && (
{error}
)}

Are you sure you want to delete{" "} {noteType.name}?

Note types with existing notes cannot be deleted. Remove all notes using this type first.

); }