Not really a comment on the PR, but this is a LOT of CSS for a demo.  In principle I'd like to avoid a lot of CSS and markup outside of the component itself.  I'll post an issue with some suggestions.