Проблема
Исторически, svg-иконка обернута в div. Из-за этого, когда иконка попадает в инлайновый элемент (a, button, span, etc.), нарушается семантика дерева.
Решения
- Дать возможность переопределять корневой
div с помощью свойства Component. Плюсы: простое решение. Минусы: ухудшается DX.
- Заменить
div на span и динамически генерировать тег style с .Icon { display: 'block' } (div по умолчанию блочный и мы должны сохранить эту блочность). Плюсы: DX остаётся на прежнем уровне. Минусы: технически сложное решение.
- Вообще избавиться от корневого элемента и рисовать
svg. Плюсы: DX остаётся на прежнем уровне, компонент становится проще. Минусы: что-то может пойти не так.
Проблема
Исторически, svg-иконка обернута в
div. Из-за этого, когда иконка попадает в инлайновый элемент (a,button,span, etc.), нарушается семантика дерева.Решения
divс помощью свойстваComponent. Плюсы: простое решение. Минусы: ухудшается DX.divнаspanи динамически генерировать тегstyleс.Icon { display: 'block' }(divпо умолчанию блочный и мы должны сохранить эту блочность). Плюсы: DX остаётся на прежнем уровне. Минусы: технически сложное решение.svg. Плюсы: DX остаётся на прежнем уровне, компонент становится проще. Минусы: что-то может пойти не так.