remove hardcoded timeout by listening on transitions

really cool component by @anthonyshort that lets us remove hardcoded timeouts for waiting for transitions, looking to use overlay with a `.3s` transition instead and figured this would make a good fix