I think we are getting some really good examples of components which allows the user to "bring their own data type" in our code base right now, for example, our Tabs component.
It might look a bit confusing at first, but when you get used to it it's so much more lightweight and configurable.