I think this is a very important question: how generic can we reasonably expect to make a component?
From what I’ve seen, web UIs tend to be (by essence) very irregular, and as a consequence the potential for generalization is usually small. To our frustration, we have to accept duplicating code much more often than factoring it.