Ng Icons — это библиотека и набор компонентов для фреймворка Angular, предоставляющие унифицированный интерфейс для использования SVG-иконок из разных коллекций. Проект ориентирован на облегчение работы разработчиков при интеграции множества наборов иконок в одно приложение: через общую API можно регистрировать наборы, подгружать отдельные символы и вставлять их в шаблоны компонентов Angular с минимальными настройками. Библиотека обычно реализует декларативный компонент для вставки иконок и служебные утилиты для управления загрузкой и оптимизации.
Исторически Ng Icons возник как ответ на потребность стандартизировать работу с иконками в экосистеме Angular, где встречаются разные форматы и поставщики (например, Font Awesome, Material Icons, Heroicons и прочие SVG-коллекции). Если о конкретных деталях реализации конкретного пакета информации недостаточно, это не мешает описать типовую функциональность: регистрация наборов по имени, динамический импорт SVG, настройка размеров и атрибутов, поддержка цвета через CSS и возможность серверной предзагрузки. Библиотека обычно интегрируется с системой сборки проекта и допускает работу с инлайновыми иконками для улучшения производительности.
- Унифицированный API: единый компонент/сервис для вставки и управления иконками из разных коллекций.
- Регистрация наборов: возможность регистрировать и помечать наборы иконок по имени для дальнейшего использования.
- Динамическая загрузка: подгрузка SVG по требованию, поддержка ленивой загрузки и кэширования.
- Интеграция с Angular: директивы/компоненты, совместимые с шаблонами и реактивными формами Angular.
- Настройка внешнего вида: параметры размера, веса, заполнения и контрастности, управляемые через входные свойства и CSS-переменные.
- Оптимизация: инлайнинг SVG для уменьшения числа запросов и возможность генерации спрайтов.
- Совместимость форматов: поддержка различных коллекций SVG с преобразованием имен и атрибутов.
- Типизация и автозаполнение: TypeScript-типизация для безопасного использования имён иконок и подсказок в IDE.
- Доступность: возможности для добавления ARIA-атрибутов и альтернативных описаний для улучшения доступности интерфейса.
- Расширяемость: плагиноподобная архитектура для добавления кастомных загрузчиков и трансформеров SVG.