I think what Tailwind actually needs is more abstractions, not to discourage the use of the sole abstraction @apply
I think what Tailwind actually needs is more abstractions, not to discourage the use of the sole abstraction @apply
There's plenty of ways to manage the bevy of classes you need. First step is making use of components to deduplicate stuff. Then in those components, use a library like class-variance-authority aka "cva()" which allows you to set up complex named presets for your components (like size="small" or color="primary" and things like that).
Like if you're already at the point of setting up stylesheets & classes with a pre-processor why would you do that and not say use scss with some mixins for the more complex reused parts? At that point any IDE plugin that knows CSS can give you completion and your compiled sources will look a lot like the written ones in the dev tools.
I tried building my own set of defaults, but eventually decided that just using the Tailwind ones is much easier.