Лев Александров, Три совершенно разных блока. Не создавайте себе проблем сейчас и другим, кто будет поддерживать в будущем. product-item/product-card, cart-item, product/product-details
Не считаю, что это лучше. У вас получится огромный класс, в котором будет сложнее ориентироваться. Если проводить аналогию с программированием, то там такое называют god object, и это считается анти-паттерном.
Я бы разделял ответственность, карточка - это одна сущность, детальное описание - другая.