An approach I like is to provide basic components (i.e. a toolkit) and higher order components that can be copied into the project as required. This allows maximal flexibility while also providing the possibility to DRY things up in your own codebase.
Tailwind and Tailwind components achieves this for example. Web components also come to mind.
Tailwind and Tailwind components achieves this for example. Web components also come to mind.