I do quite like this implementation as a web component.