. However, for the sake of learning about Web Components, let's continue with the custom button element. note: While TypeScript adds a bit of complexity to the initial setup (yes this section is longish), it will pay off in the end with much tighter code. Let's see how this would look like when using our custom element: We just defined an onClick handler as function to our element. However, we can also use a get method to reflect the attribute to a property. We could have achieved the same thing by using a button element with some CSS. I’m listing it here since it’s a useful way to update on new web components from the Polymer team and provides some useful resources to read when starting with web components. They asked me to look into Web Components to find out whether their problem could be solved with them. That's why I think it was a good thought to start with the button component which is used later in the dropdown component. However, templates also play a crucial role in Web Components for defining the structure and style of it. Afterward, we do all necessary changes for the rendering imperatively. So far, we have mainly structured and styled our custom elements. However, the custom button element has helped us to grasp the concept of Web Components with a simple example. The last five years have seen an unprecedented level of innovation in web standards, mostly driven by the W3C/WHATWG and the ECMAScript Technical Committee (TC39): ECMAScript 6, 7, 8, 9 and beyond, Web components, Custom elements, Templates and slots, Shadow DOM, etc. Implementing a simple button component with a Web Component doesn't make much sense, because you could use a