Design System в контексте Angular — это не только набор UI-компонентов, но и целостная архитектура, объединяющая стили, поведение, доступность и анимации в единую систему.
Типовая дизайн-система в Angular включает:
Angular предоставляет инструменты, позволяющие реализовать всё это на уровне фреймворка.
Компоненты оформляются как изолированные, переиспользуемые модули:
@NgModule({
declarations: [ButtonComponent],
exports: [ButtonComponent]
})
export class UiButtonModule {}
Каждый компонент:
@Input)Такой подход позволяет подключать дизайн-систему как npm-пакет.
Токены — атомарные значения дизайна:
В Angular они реализуются через SCSS-переменные или CSS Custom Properties:
:root {
--color-primary: #1976d2;
--animation-fast: 150ms;
}
Использование токенов обеспечивает:
Angular хорошо сочетается с CSS-переменными для динамических тем:
document.documentElement.style
.setProperty('--color-primary', '#ff5722');
Темы могут переключаться:
Компоненты дизайн-системы не знают о конкретных значениях — они используют только токены.
Типографика описывается как иерархия ролей, а не конкретных размеров:
.text-title {
font-size: var(--font-size-xl);
font-weight: 600;
}
Компоненты оперируют ролями (title, body,
caption), что упрощает глобальные изменения.
Анимации становятся частью системы наравне с цветами и шрифтами:
animate('var(--animation-fast) cubic-bezier(0.4,0,0.2,1)')
Это устраняет хаотичность движений и делает интерфейс целостным.
Design System в Angular учитывает:
Angular CDK предоставляет базовые инструменты:
FocusMonitorA11yModuleLiveAnnouncerКомпоненты проектируются так, чтобы доступность была встроенным свойством, а не дополнительной опцией.
Дизайн-система сопровождается интерактивной документацией:
Часто используется Storybook, который органично интегрируется с Angular и позволяет демонстрировать компоненты вне приложения.
При росте проекта дизайн-система:
Angular-модули, строгая типизация и шаблонная система обеспечивают устойчивость дизайн-системы при долгосрочной эксплуатации.