Components in our application is broken into 4 major types: elements, blocks, decorators, and containers.
Elements are the smallest of the bunch and are considered the building blocks of our application. The goal being that they make up the base of our component hierarchy. It's easier and scalable if our component hierarchy is built upon these reusable, highly maluable pieces. If we our baseline elements are unoppinionated, pure, stateless, functional components then it makes extending upwards a lot easier.