(and that's not sarcasm)
This makes me want to go back to the Tailwind days of `@apply` - usually we end up with crazy overcomplicated HTML markup because we want every part of the styling to be customizable, so you need to add in a way to add user classes to every HTML element. Or you could just define a reasonable HTML structure and let users go wild with `@apply`
What I do like about Shadcn, is that its components are yours to modify. In our case, it was easy to replace it with a sensible label+input combination.
I think this is necessary since we need to regularly modify components to suit our needs.. (I've dreamt of extending this kind of approach to libraries for a long time)
HOWEVER
there has been an elegant solution to this problem for 30 years - CSS
CSS tooling lags behind, but from a technical perspective CSS is superior to this component library approach in almost every way