I've extracted the modal, but left the link as is because it's used slightly differently across files.