In my opinion, I do not think you are crazy. It depend and you are the only one that can answer the quesion. To help, here is some ramblings.
Design in IT is making comporomises here and there depending on business priorities and needs.
For example, are the business priorities maximum re-use, scalbility, performance, secutiy (in this order) ? In this case, because performace in near the bottom of the list of priorities, you would develop in true oo with mamimum abstraction. However, if the priories are in a different order, then your solution might be a bit different.
In the example you give, it seems to me that turning that functionality into a component enables re-use by less knowledgable people in the team and therefore enhances consistancy, and significantly reduces costs - no learning curve and minimum maintence.
So in the scheme of things, spending a little more time developing re-usable component is extremely usefull and helpful to the project in my opinion.
You should pat yourself on your back.