How would you architect a reusable component library to ensure consistency across different product teams?