Coming up with the right abstraction for a component is no easy work. It takes time. Sidebar took me a week of experimenting. Input-group, several days. Field, more than a week.
I build literally hundreds of examples and keep refining until the abstraction is right, the composition reads well, and it "feels good" to write.
Then you see it used in millions of apps and the same abstractions show up in other libraries, it makes all that work worth it.
Keep going.