It occurs to me that the vast majority of components for frameworks are purpose-built. And I need to point out – there's nothing wrong with that.
Obviously there is something behind this article.
I've been building components for CSS Blade, my new CSS Framework. Headers, footers, and alternate navigation.
The first component I worked on was a horizontal navigation bar I created several years ago. At first I was just converting it to work within the CSS Blade framework. When I first designed this horizontal navigation bar, I added support for multiple layers of drop downs. Why not add support for any type of HTML in the submenus? That would make it an optional megamenu, wouldn't it. And, I did that – now I have one single horizontal navigation bar. It provides a simple single line of links. Optionally, dropdowns. Optionally, any type of HTML: a megamenu. One CSS file, one (optional) javascript file. A multiuse horizontal navigation bar.
The footer was next. And far more difficult. Far too many variations. So no multi-purpose footer.
The fun part of all of this came next ... with the alternative navigation. I had a left side navigation panel that was so-so. I didn't use it much. I always wanted to add better icons, larger text. I also had an icon only side navigation panel. When you hover over any part, it expands to display text. Even has dropdowns. The icon side slider navigation panel was a lot better than my regular navigation panel. I decided to merge the two and now have a multi-use side navigation panel with one CSS file, and one javascript file.
Quite impressive, and as close to semantic HTML as you can get.
Any opportunity you have where a custom built multi-use solution is possible, do it. It's so much more useful and rewarding than a single-use purpose built solution.