Comment by Aldipower
Do not reinvent the wheel. Build components on top of an existing component library such as Material UI for example. This way you can utilize an already existing and known approach and ecosystem and just need to extend it to your needs.
Second this. Libraries like Material UI are battle tested and cover the vast majority of components you’re going to need. You can extend or theme them to match your needs and often include a built in design system. The likelihood of building something better from scratch are low.