Modal component

Closes #5