Идея заключается в отделении логики реиспользуемого компонента от интеграционной логики.
Модуль с реализацией должен возвращать конструктор, и ничего не должен знать про css/верстку. Модуль с интеграцией должен служить адаптером, между нашей версткой/css классами, в т.ч. блоко.
Конструктор реализции принимает словарь с параметрами компонента и словарь с элементами необходимыми для работы.
Выносится вся логика блоко-элемента в отдельный файл и размещается в репе xhh например в ../js/HH/Logic/
.
Вся остальная интеграционная составляющая в таком же виде переносится так же в репу xhh.
Механизм инициализации блоко-элемента делается идентичным с jsxComponents.
Фактически Блоко становится обычым компонентом с xsl/css примесью в интеграционном адаптере.
Так как мы будем иметь набор реиспользуемых независимых компонентов, логично их выделить в отдельную библиотеку, которую можно будет использовать на стороне.
Возможных реализаций несколько. Например, утилитой из xhh можно будет по-необходимости собирать HH/Logic и пушить с поддержкой версионности в отдельный репозиторий, и использоваться с CDN.
При довольно простом переводое с обычных компонентов на "имплементационные компоненты", появляется необходимость краткой документации компонентов, можно использовать JSDoc-подобные коментарии, с кратким описанием компонента и с автоматической сборкой документации со всех компонентов, плюс можно прикрутить плюшки в виде поиска мест использований компонента при сборке и последующим упоминанием в доке.