angular-ui-kit - это пресет темы для primeng, а также storybook с демонстрацией и документацией используемых компонентов. Он позволяет быстро и легко строить новые интерфейсы в фирменном стиле CDEK.
- Установите пакет @cdek-it/angular-ui-kit
npm install @cdek-it/angular-ui-kit- Импортируйте пресет темы в ваш angular-проект
import Preset from '@cdek-it/angular-ui-kit/dist/theme.preset.ts';
export const appConfig: ApplicationConfig = {
providers: [
...,
provideAnimations(),
providePrimeNG({
theme: {
preset: Preset,
options: {
darkModeSelector: false,
cssLayer: false
}
}
})
]
};используйте в своём проекте
- Angular 20
- PrimeNG 20
- tailwindcss 3
- @tabler/icons-webfont 3
- Node 20
- ESlint
- Prettier
- Storybook 10
src/app- базовое angular-приложение. Может использоваться как плейграунд для разработки и отладки.src/stories- набор story с компонентами для storybook.src/prime-preset- пресет темы для primeng, а также токены.
- Установить зависимости
npm ci
- Запустить проект
npm run storybook
- Открыть в браузере по адресу http://localhost:6006
- В директории
src/stories/componentsсоздайте папку с вашим компонентом. - Реализуйте story со всеми показанными в figma состояниями компонента. Для референса можно использовать
button. - Убедитесь, что все состояния компонента выглядят верно. Если нет - смотрите раздел "[Правила доработки компонентов](#Правила доработки компонентов)" ниже.
- Создать pull request в
main, прикрепить его в задачу. Задачу отдать на ревью разработчикам и дизайнерам. В случае замечаний ориентируемся на пункт3выше.
Если компонент несоответствует дизайну в figma, то:
- Проверяем верность токенов. Если есть ошибки - сообщаем мейнтейнеру.
- Если токены верны, и проблему можно решить кастомизацией css - согласуем доработки с мейнтейнером.
- Если кастомизации css недостаточно, но можно решить проблему через шаблоны - согласуем доработки с мейнтейнером. Пример ниже.
Например, для
inputtextнужен крестик с очисткой. Непосредственно такой опции в primeng нет, но можно использоватьp-inputIconс иконкой крестика, и следующимsource-кодом в story:
// template
<p-inputIcon>
<input pInputText [(ngModel)]="value" placeholder="Input with clear icon" />
<i class="ti ti-cross" (click)="onClearClick()"></i>
</p-inputIcon>
// ts
onClearClick() {
this.value = '';
}
Важно, что бы в story был верный source-код, что бы разработчики могли просто его копировать и с минимальными доработками использовать у себя.
4. Если вариантов решения проблемы через способы выше нет - сообщаем мейнтейнеру. Далее будет подниматься вопрос о необходимости написания своего компонента.
todo будут разработаны при необходимости