npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cuby-ui/core

v0.0.552

Published

Документ для кодовых агентов. Описывает публичный API пакета `@cuby-ui/core`, а также примеры использования.

Readme

Cuby UI - агентская документация (RU)

Документ для кодовых агентов. Описывает публичный API пакета @cuby-ui/core, а также примеры использования.

Критически важно:

  • Оверлеи (cui-dialogs, cui-alerts, cui-select, cui-context-menu) требуют наличия cui-root в DOM.
  • open() у CuiAlertService и CuiDialogService выполняется только после подписки на Observable.

Оглавление

Компоненты (Core)

Feature: CuiAccordionComponent (cui-accordion)

Описание: контейнер для набора cui-accordion-item, управляет только разметкой. Публичный API:

  • Модуль: CuiAccordionModule
  • Inputs: нет
  • Outputs: нет Пример:
<cui-accordion>
  <cui-accordion-item>Заголовок
    <ng-container cuiAccordionItemContent>Контент</ng-container>
  </cui-accordion-item>
</cui-accordion>

Feature: CuiAccordionItemComponent (cui-accordion-item)

Описание: элемент аккордеона с кнопкой переключения и скрываемым контентом. Публичный API:

  • Модуль: CuiAccordionModule
  • Inputs: isOpen: boolean (по умолчанию true)
  • Outputs: isOpenChange: EventEmitter<boolean>
  • Контент: тело передается через cuiAccordionItemContent Пример:
<cui-accordion-item [(isOpen)]="isOpen">
  Заголовок
  <ng-container cuiAccordionItemContent>Тело</ng-container>
</cui-accordion-item>

Feature: CuiAlertService

Описание: сервис для показа алертов поверх UI, построен на CuiPopoverService. Публичный API:

  • Методы: open(content: string, options?: Partial<CuiAlertOptions>), closeAll()
  • Опции: label, needAutoClose, isCloseable, position, resizing, status, mode
  • Типы: CuiAlertOptions, CuiAlertPosition, CuiAlertResizing
  • Константы/токены: CUI_ALERT_DEFAULT_OPTIONS, CUI_ALERT_OPTIONS, CUI_ALERTS, CUI_ALERT_CONTEXT Пример:
const alerts = inject(CuiAlertService);

alerts.open('Задача создана', {
  status: 'success',
  label: 'Готово',
  position: 'right',
}).subscribe();

Пример (переопределение дефолтов):

providers: [
  { provide: CUI_ALERT_OPTIONS, useValue: { position: 'center', needAutoClose: false } }
]

Feature: CuiAlertsComponent (cui-alerts)

Описание: контейнер для отрисовки списка алертов. Обычно не нужен напрямую, используется в cui-root. Публичный API:

  • Модуль: CuiAlertModule
  • Inputs/Outputs: нет Пример:
<cui-alerts></cui-alerts>

Feature: CuiAlertComponent (cui-alert)

Описание: рендер одного алерта, требует CUI_ALERT_CONTEXT. Обычно используется только контейнером. Публичный API:

  • Модуль: CuiAlertModule
  • Inputs/Outputs: нет Пример:
providers: [{ provide: CUI_ALERT_CONTEXT, useValue: alertContext }]

Feature: CuiBadgeComponent (cui-badge)

Описание: бейдж с цветом, размером и опциональной точкой. Публичный API:

  • Модуль: CuiBadgeModule
  • Inputs: color, size, isWithDot
  • color: light-blue | yellow | green | gray | dark-gray | red | violet
  • size: sm | md Пример:
<cui-badge color="green" size="md" [isWithDot]="true">Online</cui-badge>

Feature: CuiBannerComponent (cui-banner)

Описание: баннер для статуса/уведомлений с действием и закрытием. Публичный API:

  • Модуль: CuiBannerModule
  • Inputs: status, isCloseable, label, actionButtonText
  • Outputs: actionButtonClicked, closed
  • Типы: CuiBannerOptions, CuiBannerIconOptions
  • Константы/токены: CUI_BANNER_DEFAULT_OPTIONS, CUI_BANNER_OPTIONS Пример:
<cui-banner
  label="Сохранено"
  status="success"
  actionButtonText="Отменить"
  (actionButtonClicked)="onUndo()"
  (closed)="onDismiss()"
>
  Запись обновлена
</cui-banner>

Feature: CuiBreadcrumbsComponent (cui-breadcrumbs)

Описание: контейнер хлебных крошек, использует *cuiItem. Публичный API:

  • Модуль: CuiBreadcrumbsModule
  • Inputs/Outputs: нет Пример:
<cui-breadcrumbs>
  <a cuiBreadcrumb *cuiItem>Главная</a>
  <a cuiBreadcrumb *cuiItem>Каталог</a>
  <a cuiBreadcrumb *cuiItem>Товар</a>
</cui-breadcrumbs>

Feature: CuiBreadcrumbComponent ([cuiBreadcrumb])

Описание: элемент хлебных крошек (обычно a), стиль задается директивой. Публичный API:

  • Модуль: CuiBreadcrumbsModule
  • Inputs: isLast: boolean (если нужно вручную пометить последний) Пример:
<a cuiBreadcrumb *cuiItem [isLast]="true">Текущая</a>

Feature: CuiButtonComponent (button[cuiButton], a[cuiButton])

Описание: кнопка с набором appearance/size/shape и иконками. Публичный API:

  • Модуль: CuiButtonModule
  • Inputs: appearance, size, shape, disabled, isLoaderShown, icon, iconRight
  • appearance: action | secondary | outlined | outlined-gray | ghost | flat | destructive | link
  • size: xxs | xs | sm | md
  • Типы: CuiButtonOptions
  • Константы/токены: CUI_BUTTON_DEFAULT_OPTIONS, CUI_BUTTON_OPTIONS Пример:
<button
  cuiButton
  appearance="secondary"
  size="sm"
  icon="cuiIconPlus"
  [isLoaderShown]="isSaving"
>
  Создать
</button>

Feature: CuiButtonGroupComponent (cui-button-group)

Описание: группировка кнопок cuiButton в одну линию. Публичный API:

  • Модуль: CuiButtonGroupModule
  • Inputs/Outputs: нет Пример:
<cui-button-group>
  <button cuiButton icon="cuiIconPlus"></button>
  <button cuiButton icon="cuiIconCheck"></button>
</cui-button-group>

Feature: CuiCheckboxComponent (input[type="checkbox"][cuiCheckbox])

Описание: стилизованный checkbox, логика остается нативной. Публичный API:

  • Модуль: CuiCheckboxModule
  • Inputs/Outputs: нет Пример:
<input cuiCheckbox type="checkbox" [formControl]="flagControl">

Feature: CuiContextMenuComponent (cui-context-menu[items][target])

Описание: контекстное меню, привязанное к target, рендерится в cui-root. Публичный API:

  • Модуль: CuiContextMenuModule
  • Inputs: items: CuiContextMenuItem[], target: HTMLElement Пример:
<button cuiButton cuiElement #btn="elementRef">...</button>
<cui-context-menu [target]="btn.nativeElement" [items]="menuItems"></cui-context-menu>

Feature: CuiDialogService

Описание: сервис модальных диалогов. Контент может быть компонентом, шаблоном или строкой. Публичный API:

  • Методы: open(content, options?), closeAll()
  • Опции: size: 'xl' | 'auto', data, dismissible, injector
  • Типы: CuiDialogOptions, CuiDialogContext, CuiDialogSize
  • Константы/токены: CUI_DIALOG_DEFAULT_OPTIONS, CUI_DIALOG_OPTIONS, CUI_DIALOGS, CUI_DIALOG_CONTEXT Пример:
const dialogs = inject(CuiDialogService);

dialogs.open(ModalComponent, { size: 'xl', data: { id: 123 } })
  .subscribe(result => console.log(result));

Feature: CuiDialogsComponent (cui-dialogs)

Описание: контейнер для всех открытых диалогов. Обычно используется через cui-root. Публичный API:

  • Модуль: CuiDialogModule
  • Inputs/Outputs: нет Пример:
<cui-dialogs></cui-dialogs>

Feature: CuiDialogComponent (cui-dialog)

Описание: базовый компонент диалога, получает контекст из CUI_DIALOG_CONTEXT. Публичный API:

  • Модуль: CuiDialogModule
  • Inputs/Outputs: нет Пример:
const context = inject<CuiDialogContext<MyData>>(CUI_DIALOG_CONTEXT);
context.completeWith({ ok: true });

Feature: CuiDialogHeaderComponent (header[cuiDialogHeader][heading])

Описание: шапка диалога с заголовком (Polymorpheus) и кнопкой закрытия. Публичный API:

  • Модуль: CuiDialogModule
  • Inputs: heading, headingContext, subheading
  • Outputs: closed Пример:
<header
  cuiDialogHeader
  [heading]="'Редактирование'"
  [subheading]="'Поля обязательны'"
  (closed)="context.completeWith()"
></header>

Feature: CuiDialogActionsComponent (cui-dialog-actions)

Описание: контейнер для футера/кнопок диалога. Публичный API:

  • Модуль: CuiDialogModule
  • Inputs/Outputs: нет Пример:
<cui-dialog-actions>
  <button cuiButton>Сохранить</button>
  <button cuiButton appearance="secondary">Отмена</button>
</cui-dialog-actions>

Feature: CuiFormFieldComponent (cui-form-field)

Описание: обертка для поля формы, собирает cuiLabel, поле и cui-hint. Публичный API:

  • Модуль: CuiFormFieldModule
  • Inputs/Outputs: нет Пример:
<cui-form-field>
  <label cuiLabel for="name">Имя</label>
  <cui-input-text cuiTextFieldId="name"></cui-input-text>
  <cui-hint>Введите полное имя</cui-hint>
</cui-form-field>

Feature: CuiHintComponent (cui-hint)

Описание: текстовая подсказка под полем. Публичный API:

  • Модуль: CuiHintModule
  • Inputs: hintType: 'info' | 'error' Пример:
<cui-hint hintType="error">Поле обязательно</cui-hint>

Feature: CuiIconButtonComponent (button[cuiIconButton][icon], a[cuiIconButton][icon])

Описание: иконка-кнопка с цветом и hover цветом. Публичный API:

  • Модуль: CuiIconButtonModule
  • Inputs: icon, color, hoverColor Пример:
<button
  cuiIconButton
  icon="cuiIconTrash"
  color="var(--cui-danger)"
  hoverColor="var(--cui-red-600)"
></button>

Feature: CuiInputNumberComponent (cui-input-number)

Описание: числовой инпут с маской (maskito), поддерживает min/max/precision. Публичный API:

  • Модуль: CuiInputNumberModule
  • Inputs: precision, min, max
  • Значение: number | null через ControlValueAccessor Пример:
<cui-input-number
  [formControl]="priceControl"
  [precision]="2"
  [min]="0"
  [max]="9999"
  cuiTextFieldPlaceholder="Цена"
  cuiTextFieldIconLeft="cuiIconSearch"
></cui-input-number>

Feature: CuiInputPasswordComponent (cui-input-password)

Описание: парольный инпут с кнопкой показать/скрыть. Публичный API:

  • Модуль: CuiInputPasswordModule
  • Inputs: нет (используются cuiTextField* директивы) Пример:
<cui-input-password
  [formControl]="passwordControl"
  cuiTextFieldId="password"
  cuiTextFieldPlaceholder="Пароль"
></cui-input-password>

Feature: CuiInputTextComponent (cui-input-text)

Описание: текстовый инпут с кнопкой очистки. Публичный API:

  • Модуль: CuiInputModule (важно: имя модуля именно такое)
  • Inputs: нет (используются cuiTextField* директивы) Пример:
<cui-input-text
  [formControl]="searchControl"
  cuiTextFieldId="search"
  cuiTextFieldPlaceholder="Поиск"
  cuiTextFieldIconLeft="cuiIconSearch"
></cui-input-text>

Feature: CuiInputTimeComponent (cui-input-time)

Описание: ввод времени с маской, значение - CuiTime. Публичный API:

  • Модуль: CuiInputTimeModule
  • Inputs: mode: CuiTimeMode (по умолчанию HH:MM)
  • Типы: CuiInputTimeOptions
  • Константы/токены: CUI_INPUT_TIME_DEFAULT_OPTIONS, CUI_INPUT_TIME_OPTIONS Пример:
<cui-input-time
  [formControl]="timeControl"
  mode="HH:MM:SS"
  cuiTextFieldPlaceholder="Время"
></cui-input-time>

Feature: CuiLabelComponent (label[cuiLabel])

Описание: стилизованный label с возможностью показать звездочку. Публичный API:

  • Модуль: CuiLabelModule
  • Inputs: isRequired: boolean Пример:
<label cuiLabel [isRequired]="true" for="email">Email</label>

Feature: CuiNotificationComponent (cui-notification)

Описание: уведомление со статусом и иконкой, опционально с кнопкой закрытия. Публичный API:

  • Модуль: CuiNotificationModule
  • Inputs: status, mode, isCloseable
  • Outputs: closed
  • Типы: CuiNotificationOptions, CuiNotificationIcons, CuiNotificationIconOptions
  • Константы/токены: CUI_NOTIFICATION_DEFAULT_OPTIONS, CUI_NOTIFICATION_OPTIONS, CUI_NOTIFICATION_ICONS, CUI_NOTIFICATION_ICON_OPTIONS, CUI_NOTIFICATION_ICON_OPTIONS_DEFAULT_MODE, CUI_NOTIFICATION_ICON_OPTIONS_LIGHT_MODE Пример:
<cui-notification status="success" mode="light" [isCloseable]="true" (closed)="onClosed()">
  Успешно сохранено
</cui-notification>

Feature: CuiRadioComponent (input[type="radio"][cuiRadio])

Описание: стилизованный radio, логика остается нативной. Публичный API:

  • Модуль: CuiRadioModule
  • Inputs/Outputs: нет Пример:
<input cuiRadio type="radio" [formControl]="choiceControl" value="a">

Feature: CuiRootComponent (cui-root)

Описание: корневой контейнер UI, включает cui-dialogs и cui-alerts, устанавливает атрибут cuiTheme. Публичный API:

  • Модуль: CuiRootModule
  • Inputs/Outputs: нет
  • Константа: CUI_ROOT_SELECTOR Пример:
<cui-root>
  <app-root-content></app-root-content>
</cui-root>

Feature: CuiSelectComponent (cui-select[options])

Описание: селект с выпадающим списком, использует cui-root для оверлея. Публичный API:

  • Модуль: CuiSelectModule
  • Inputs: options: CuiOption[], defaultOptionText?: string
  • Значение: unknown через ControlValueAccessor Пример:
<cui-select
  [options]="statusOptions"
  [formControl]="statusControl"
  cuiTextFieldId="status"
  cuiTextFieldPlaceholder="Статус"
></cui-select>

Feature: CuiSvgComponent (cui-svg[icon])

Описание: рендер SVG по имени иконки или по сырому SVG string. Публичный API:

  • Модуль: CuiSvgModule
  • Inputs: icon, width, height, strokeWidth, color Пример:
<cui-svg icon="cuiIconCheck" [width]="16" [height]="16" color="var(--cui-success)"></cui-svg>

Feature: CuiTabsComponent (cui-tabs)

Описание: контейнер табов, управляет активным индексом. Публичный API:

  • Модуль: CuiTabsModule
  • Inputs: activeItemIndex: number
  • Outputs: activeItemIndexChange Пример:
<cui-tabs [(activeItemIndex)]="tabIndex">
  <button cuiTab>Общее</button>
  <button cuiTab>Настройки</button>
</cui-tabs>

Feature: CuiTabComponent (button[cuiTab])

Описание: кнопка таба, эмитит событие активации. Публичный API:

  • Модуль: CuiTabsModule
  • Inputs/Outputs: нет Пример:
<button cuiTab>Таб</button>

Feature: CuiTextareaComponent (textarea[cuiTextarea])

Описание: стилизованный textarea с авто-ресайзом. Публичный API:

  • Модуль: CuiTextareaModule
  • Inputs: rows, noBordersAndPaddings Пример:
<textarea
  cuiTextarea
  [rows]="3"
  [noBordersAndPaddings]="false"
  [cuiTextFieldIsError]="true"
></textarea>

Feature: CuiToggleComponent (input[type="checkbox"][cuiToggle])

Описание: стилизованный toggle на базе checkbox. Публичный API:

  • Модуль: CuiToggleModule
  • Inputs/Outputs: нет Пример:
<input cuiToggle type="checkbox" [formControl]="toggleControl">

Директивы (Core)

Feature: CuiTextFieldControllerModule

Описание: модуль с директивами управления полями (cuiTextField*). Экспортируется входными компонентами. Публичный API:

  • Экспортирует: CuiTextFieldIconLeftDirective, CuiTextFieldIdDirective, CuiTextFieldIsErrorDirective, CuiTextFieldPlaceholderDirective, CuiTextFieldSizeDirective Пример:
imports: [CuiTextFieldControllerModule]

Feature: CuiTextFieldIconLeftDirective ([cuiTextFieldIconLeft])

Описание: задает иконку слева для текстовых полей. Публичный API:

  • Input: cuiTextFieldIconLeft: CuiIcon Пример:
<cui-input-text cuiTextFieldIconLeft="cuiIconSearch"></cui-input-text>

Feature: CuiTextFieldIdDirective ([cuiTextFieldId])

Описание: прокидывает id внутрь поля. Публичный API:

  • Input: cuiTextFieldId: string Пример:
<cui-input-text cuiTextFieldId="search"></cui-input-text>

Feature: CuiTextFieldIsErrorDirective ([cuiTextFieldIsError])

Описание: задает состояние ошибки для поля. Публичный API:

  • Input: cuiTextFieldIsError: boolean Пример:
<cui-input-text [cuiTextFieldIsError]="hasError"></cui-input-text>

Feature: CuiTextFieldPlaceholderDirective ([cuiTextFieldPlaceholder])

Описание: задает placeholder для поля. Публичный API:

  • Input: cuiTextFieldPlaceholder: string Пример:
<cui-input-text cuiTextFieldPlaceholder="Введите текст"></cui-input-text>

Feature: CuiTextFieldSizeDirective ([cuiTextFieldSize])

Описание: задает размер поля. Публичный API:

  • Input: cuiTextFieldSize: 'sm' | 'md' Пример:
<cui-input-text cuiTextFieldSize="md"></cui-input-text>

Feature: CuiTextFieldController

Описание: класс, агрегирующий параметры из cuiTextField* директив. Пример:

const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
console.log(controller.size);

Feature: CUI_TEXT_FIELD_CONTROLLER и CUI_TEXT_FILED_CONTROLLER_PROVIDER

Описание: DI токен и провайдер, собирающие параметры из cuiTextField* директив в единый контроллер. Публичный API:

  • Токен: CUI_TEXT_FIELD_CONTROLLER
  • Провайдер: CUI_TEXT_FILED_CONTROLLER_PROVIDER
  • Токены директив: CUI_TEXT_FIELD_ICON_LEFT, CUI_TEXT_FIELD_ID, CUI_TEXT_FIELD_IS_ERROR, CUI_TEXT_FIELD_PLACEHOLDER, CUI_TEXT_FIELD_SIZE Пример:
const controller = inject(CUI_TEXT_FIELD_CONTROLLER);
console.log(controller.placeholder);

Сервисы (Core)

Feature: CuiThemeService

Описание: сервис темы, хранит состояние в localStorage и выставляет cuiTheme через CuiRootComponent. Публичный API:

  • Методы: next(theme: 'light' | 'dark'), switch()
  • Токены/константы: CUI_THEME, CUI_THEME_STORAGE_KEY, CUI_THEME_STORAGE_DEFAULT_KEY, CUI_DEFAULT_THEME Пример:
const theme = inject(CuiThemeService);
theme.switch();

Пример (дефолтная тема и ключ хранения):

providers: [
  { provide: CUI_THEME, useValue: 'dark' },
  { provide: CUI_THEME_STORAGE_KEY, useValue: 'myThemeKey' }
]

Интерфейсы и типы (Core)

Feature: CuiOption

Описание: модель опции для cui-select. Публичный API:

  • Поля: label: string, value: unknown, isDisabled?: boolean Пример:
const options: CuiOption[] = [
  { label: 'Active', value: 'active' },
  { label: 'Archived', value: 'archived', isDisabled: true }
];

Feature: CuiContextMenuItem

Описание: модель элемента контекстного меню. Публичный API:

  • Поля: label, icon?, color?, command? Пример:
const items: CuiContextMenuItem[] = [
  { label: 'Edit', icon: 'cuiIconEdit', command: () => onEdit() },
  { label: 'Delete', icon: 'cuiIconTrash', color: 'var(--cui-danger)' }
];

Feature: CuiAppearance* types

Описание: набор типов appearance для кнопок. Публичный API:

  • Значения: action | secondary | outlined | outlined-gray | ghost | flat | destructive | link Пример:
const appearance: CuiAppearanceAction = 'action';

Feature: CuiHintType

Описание: тип подсказки cui-hint. Публичный API:

  • Значения: info | error Пример:
const hintType: CuiHintType = 'error';

Feature: CuiPosition* types

Описание: позиции для алертов. Публичный API:

  • Значения: center | right Пример:
const position: CuiPositionCenter = 'center';

Feature: CuiResizing* types

Описание: режимы ресайза для алертов. Публичный API:

  • Значения: hug | fixed Пример:
const resizing: CuiResizingFixed = 'fixed';

Feature: CuiShapeRounded

Описание: shape тип для кнопок. Публичный API:

  • Значение: rounded Пример:
const shape: CuiShapeRounded = 'rounded';

Feature: CuiSize* types

Описание: типы размеров. Публичный API:

  • Значения: xxs | xs | sm | md Пример:
const size: CuiSizeSm = 'sm';

Feature: CuiStatus

Описание: статусы для уведомлений/баннеров. Публичный API:

  • Значения: success | info | alert | error Пример:
const status: CuiStatus = 'success';

Утилиты (Core)

Feature: cuiRemoveSpaces

Описание: удаляет все пробелы из строки. Публичный API:

  • Сигнатура: (value: string) => string Пример:
cuiRemoveSpaces('a b  c'); // "abc"

Feature: cuiReplace

Описание: безопасная замена всех вхождений подстроки. Публичный API:

  • Сигнатура: (value: string, search: string, replace: string) => string Пример:
cuiReplace('a.b.c', '.', '-'); // "a-b-c"

Темы и стили

Feature: CSS переменные темы

Описание: базовые и темные токены описаны в projects/core/styles/theme.scss. Темная тема задается через атрибут cuiTheme="dark". Пример:

:root {
  --cui-main-font: 'Inter', sans-serif;
}
[cuiTheme='dark'] {
  --cui-base-0: var(--cui-slate-900);
}

Feature: SCSS переменные и миксины

Описание: projects/core/styles/global.scss форвардит миксины и переменные (mixins/*, variables/*). Пример:

@use '@cuby-ui/core/styles/global' as cui;

.btn-reset {
  @include cui.cui-clear-button();
}

Рецепты (How-to)

Feature: Рецепт - показать alert

Описание: использовать CuiAlertService и убедиться, что есть cui-root. Пример:

const alerts = inject(CuiAlertService);
alerts.open('Все ок', { status: 'success', label: 'Готово' }).subscribe();

Feature: Рецепт - открыть диалог с данными

Описание: открыть компонент и прочитать data через CUI_DIALOG_CONTEXT. Пример:

dialogs.open(EditDialogComponent, { size: 'xl', data: { id: 42 } }).subscribe();
const context = inject<CuiDialogContext<{ id: number }>>(CUI_DIALOG_CONTEXT);
console.log(context.data.id);

Feature: Рецепт - использовать cui-select с ошибкой

Описание: задать опции и состояние ошибки через cuiTextFieldIsError. Пример:

<cui-select
  [options]="options"
  [formControl]="control"
  [cuiTextFieldIsError]="hasError"
></cui-select>

Feature: Рецепт - переопределить дефолтные опции кнопки

Описание: использовать CUI_BUTTON_OPTIONS в провайдерах. Пример:

providers: [
  { provide: CUI_BUTTON_OPTIONS, useValue: { appearance: 'secondary', size: 'md', shape: 'rounded' } }
]

Feature: Рецепт - переключение темы

Описание: вызвать switch() у CuiThemeService. Пример:

inject(CuiThemeService).switch();

Анти-паттерны

  • Анти-паттерн: использовать CuiAlertService.open() без подписки. Описание: Observable ленивый, без subscribe() алерт не создается.
  • Анти-паттерн: использовать cui-select или cui-context-menu без cui-root. Описание: оверлей некуда монтировать.
  • Анти-паттерн: передавать ElementRef вместо HTMLElement в target. Описание: компонент ожидает HTMLElement.
  • Анти-паттерн: передавать строку вместо CuiTime в cui-input-time. Описание: компонент ожидает CuiTime.

FAQ / типовые ошибки

  • Вопрос: почему не открывается диалог? Ответ: проверьте, что вы подписались на open() и в DOM есть cui-root.
  • Вопрос: почему не видно placeholder в cui-input-text? Ответ: используйте cuiTextFieldPlaceholder, а не нативный placeholder.
  • Вопрос: почему select не закрывается? Ответ: убедитесь, что есть cui-root и не блокируется событие клика снаружи.

Структура репозитория

  • projects/core - UI компоненты, стили, темы.
  • projects/cdk - утилиты, директивы, сервисы.
  • projects/icons - SVG иконки и типы.
  • projects/test - sandbox приложение с примерами.
  • angular.json - конфигурация Angular workspace.

Линт и форматирование

  • Явных конфигураций ESLint/Prettier в репозитории нет. Ориентируйтесь на текущий стиль файлов и типичные правила Angular/TypeScript.

Версии и совместимость

  • Angular: >=15.0.0
  • RxJS: >=7.0.0
  • @maskito/*: ^2.5.0 (input number/time)
  • @tinkoff/ng-polymorpheus: ^4.3.0 (dialog header)
  • Пакеты @cuby-ui/*: версия 0.0.177 (см. projects/*/package.json)