component delete (client-side)