
¿Qué os parece gestionar las variantes de los estilos con data-attributes?
Por ejemplo, si quieres un botón más pequeño, en lugar de aplicar la clase "small" la idea sería aplicar en el HTML data-state="small".
La ventaja es que se puede seleccionar mejor con Javascript.
Obviamente luego tendrías que meter los estilos para ese estado usado data-attributes también:
button[data-state='small'] { ... }
Por un lado me gusta porque queda claro qué clases son de estado pero por otro lado da más pereza y tienes que escribir más código.