Most UI kits let you pass any style as a prop — radius, size, color, or a wall of Tailwind classes, whatever you need. That flexibility is exactly the problem: it turns every component call into a one-off styling decision, and no two buttons end up the same. Let's talk about practices that prevent building an inconsistent, unmaintainable code base that won't scale.
The eternal pendulum swinging between BEM and atomic css forever. The best is to start with atomic and then extract a few BEM use cases as duplication emerges. Then you’ve got the best of both worlds.
Roughly half of css is extremely specific to one place and not worth extracting. The remainder though is actually important to the design system and is worth deduplicating and formalizing into BEM / variants. The trouble is when you try to BEM everything and end up with thousands of classes that are only used once.