@ncim/sdk 0.2.9 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ncim-sdk-ncim-sdk-Cxn6UL5k.mjs → ncim-sdk-ncim-sdk-DmQ2diWe.mjs} +962 -955
- package/fesm2022/ncim-sdk-ncim-sdk-DmQ2diWe.mjs.map +1 -0
- package/fesm2022/{ncim-sdk-sso-callback-fr4RiMHN.mjs → ncim-sdk-sso-callback-BKf_tW_o.mjs} +2 -2
- package/fesm2022/{ncim-sdk-sso-callback-fr4RiMHN.mjs.map → ncim-sdk-sso-callback-BKf_tW_o.mjs.map} +1 -1
- package/fesm2022/{ncim-sdk-sso-error-zjdDcsz_.mjs → ncim-sdk-sso-error-DvXH8oug.mjs} +2 -2
- package/fesm2022/{ncim-sdk-sso-error-zjdDcsz_.mjs.map → ncim-sdk-sso-error-DvXH8oug.mjs.map} +1 -1
- package/fesm2022/ncim-sdk-ui.mjs +954 -978
- package/fesm2022/ncim-sdk-ui.mjs.map +1 -1
- package/fesm2022/ncim-sdk.mjs +1 -1
- package/package.json +1 -1
- package/types/ncim-sdk-features.d.ts +1 -1
- package/types/ncim-sdk-ui.d.ts +84 -92
- package/types/ncim-sdk.d.ts +87 -92
- package/fesm2022/ncim-sdk-ncim-sdk-Cxn6UL5k.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ncim-sdk-ui.mjs","sources":["../../../../libs/ui-components/src/lib/shared/atoms/icon/icon.ts","../../../../libs/ui-components/src/lib/shared/atoms/icon/icon.html","../../../../libs/ui-components/src/lib/shared/organisms/complete-training/complete-training.ts","../../../../libs/ui-components/src/lib/shared/organisms/complete-training/complete-training.html","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.ts","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.html","../../../../libs/ui-components/src/lib/shared/organisms/logout-modal/logout-modal.ts","../../../../libs/ui-components/src/lib/shared/organisms/logout-modal/logout-modal.html","../../../../libs/ui-components/src/lib/shared/templates/base-sidebar-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/dashboard-layout/dashboard-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/dashboard-layout/dashboard-layout.html","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.constants.ts","../../../../libs/ui-components/src/lib/shared/atoms/copy-right/copy-right.ts","../../../../libs/ui-components/src/lib/shared/atoms/copy-right/copy-right.html","../../../../libs/ui-components/src/lib/shared/templates/auth-layout/auth-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/auth-layout/auth-layout.html","../../../../libs/ui-components/src/lib/shared/templates/settings-layout/settings-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/settings-layout/settings-layout.html","../../../../libs/ui-components/src/lib/shared/molecules/otp-input/otp-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/otp-input/otp-input.html","../../../../libs/ui-components/src/lib/shared/atoms/button/button.ts","../../../../libs/ui-components/src/lib/shared/atoms/button/button.html","../../../../libs/ui-components/src/lib/shared/atoms/divider/divider.ts","../../../../libs/ui-components/src/lib/shared/atoms/divider/divider.html","../../../../libs/ui-components/src/lib/shared/molecules/stepper/stepper.ts","../../../../libs/ui-components/src/lib/shared/molecules/stepper/stepper.html","../../../../libs/ui-components/src/lib/shared/templates/register-layout/register-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/register-layout/register-layout.html","../../../../libs/ui-components/src/lib/shared/molecules/option-group/option-group.ts","../../../../libs/ui-components/src/lib/shared/molecules/option-group/option-group.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-button/radio-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-button/radio-button.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/selection-button/selection-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/selection-button/selection-button.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-group.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-group.html","../../../../libs/ui-components/src/lib/shared/atoms/progress-bar/progress-bar.ts","../../../../libs/ui-components/src/lib/shared/atoms/progress-bar/progress-bar.html","../../../../libs/ui-components/src/lib/shared/atoms/circular-progress/circular-progress.ts","../../../../libs/ui-components/src/lib/shared/atoms/circular-progress/circular-progress.html","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs-inkbar-rtl.directive.ts","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs.ts","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs.html","../../../../libs/ui-components/src/lib/shared/molecules/tab-panel/tab-panel.ts","../../../../libs/ui-components/src/lib/shared/molecules/tab-panel/tab-panel.html","../../../../libs/ui-components/src/lib/shared/molecules/form-select/form-select.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-select/form-select.html","../../../../libs/ui-components/src/lib/shared/molecules/form-multi-select/form-multi-select.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-multi-select/form-multi-select.html","../../../../libs/ui-components/src/lib/shared/molecules/form-text-field/form-text-field.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-text-field/form-text-field.html","../../../../libs/ui-components/src/lib/shared/molecules/form-date-picker/form-date-picker.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-date-picker/form-date-picker.html","../../../../libs/ui-components/src/lib/shared/atoms/form-checkbox-radio/form-checkbox-radio.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-checkbox-radio/form-checkbox-radio.html","../../../../libs/ui-components/src/lib/shared/molecules/form-input/form-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-input/form-input.html","../../../../libs/ui-components/src/lib/shared/organisms/filter-form/filter-form.ts","../../../../libs/ui-components/src/lib/shared/organisms/filter-form/filter-form.html","../../../../libs/ui-components/src/lib/shared/molecules/package-feature-card/package-feature-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/package-feature-card/package-feature-card.html","../../../../libs/ui-components/src/lib/shared/molecules/bullet-list/bullet-list.ts","../../../../libs/ui-components/src/lib/shared/molecules/bullet-list/bullet-list.html","../../../../libs/ui-components/src/lib/shared/atoms/checkbox/checkbox.ts","../../../../libs/ui-components/src/lib/shared/atoms/checkbox/checkbox.html","../../../../libs/ui-components/src/lib/shared/organisms/cards-statistics/cards-statistics.ts","../../../../libs/ui-components/src/lib/shared/organisms/cards-statistics/cards-statistics.html","../../../../libs/ui-components/src/lib/shared/molecules/captcha-input/captcha-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/captcha-input/captcha-input.html","../../../../libs/ui-components/src/lib/shared/molecules/entity-type-card/entity-type-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/entity-type-card/entity-type-card.html","../../../../libs/ui-components/src/lib/shared/molecules/entity-info-card/entity-info-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/entity-info-card/entity-info-card.html","../../../../libs/ui-components/src/lib/shared/molecules/summary-card/summary-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/summary-card/summary-card.html","../../../../libs/ui-components/src/lib/shared/molecules/license-status-card/license-status-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/license-status-card/license-status-card.html","../../../../libs/ui-components/src/lib/shared/molecules/stats-analytics-card/stats-analytics-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/stats-analytics-card/stats-analytics-card.html","../../../../libs/ui-components/src/lib/shared/organisms/ai-chating/ai-chating.ts","../../../../libs/ui-components/src/lib/shared/organisms/ai-chating/ai-chating.html","../../../../libs/ui-components/src/lib/shared/molecules/clipboard-button/clipboard-button.ts","../../../../libs/ui-components/src/lib/shared/molecules/clipboard-button/clipboard-button.html","../../../../libs/ui-components/src/lib/shared/organisms/contested-violation/contested-violation.ts","../../../../libs/ui-components/src/lib/shared/organisms/contested-violation/contested-violation.html","../../../../libs/ui-components/src/lib/shared/atoms/form-label/form-label.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-label/form-label.html","../../../../libs/ui-components/src/lib/shared/atoms/range-bar/range-bar.ts","../../../../libs/ui-components/src/lib/shared/atoms/range-bar/range-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/searchable-users-list/searchable-users-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/searchable-users-list/searchable-users-list.html","../../../../libs/ui-components/src/lib/shared/organisms/basic-card/basic-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/basic-card/basic-card.html","../../../../libs/ui-components/src/lib/shared/organisms/request-header/request-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/request-header/request-header.html","../../../../libs/ui-components/src/lib/shared/organisms/request-details-card/request-details-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/request-details-card/request-details-card.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-header/violation-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-header/violation-header.html","../../../../libs/ui-components/src/lib/shared/organisms/attachments/attachments.ts","../../../../libs/ui-components/src/lib/shared/organisms/attachments/attachments.html","../../../../libs/ui-components/src/lib/shared/organisms/criteria-section/criteria-section.ts","../../../../libs/ui-components/src/lib/shared/organisms/criteria-section/criteria-section.html","../../../../libs/ui-components/src/lib/shared/organisms/violation.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-info-card/violation-info-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-info-card/violation-info-card.html","../../../../libs/ui-components/src/lib/shared/atoms/tooltip/tooltip.ts","../../../../libs/ui-components/src/lib/shared/atoms/tooltip/tooltip.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-summary-card/violation-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-summary-card/violation-summary-card.html","../../../../libs/ui-components/src/lib/shared/atoms/penalty-badge/penalty-badge.ts","../../../../libs/ui-components/src/lib/shared/atoms/penalty-badge/penalty-badge.html","../../../../libs/ui-components/src/lib/shared/atoms/dga-tag/dga-tag.ts","../../../../libs/ui-components/src/lib/shared/atoms/dga-tag/dga-tag.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-timeline/violation-timeline.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-timeline/violation-timeline.html","../../../../libs/ui-components/src/lib/shared/organisms/visit-details/visit-details.ts","../../../../libs/ui-components/src/lib/shared/organisms/visit-details/visit-details.html","../../../../libs/ui-components/src/lib/shared/organisms/inspection-summary-card/inspection-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/inspection-summary-card/inspection-summary-card.html","../../../../libs/ui-components/src/lib/shared/molecules/icon-card/icon-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/icon-card/icon-card.html","../../../../libs/ui-components/src/lib/shared/atoms/form-error/form-error.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-error/form-error.html","../../../../libs/ui-components/src/lib/shared/atoms/skeleton/skeleton.ts","../../../../libs/ui-components/src/lib/shared/atoms/skeleton/skeleton.html","../../../../libs/ui-components/src/lib/shared/atoms/spinner/spinner.ts","../../../../libs/ui-components/src/lib/shared/atoms/spinner/spinner.html","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-error-display/sso-error-display.ts","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-error-display/sso-error-display.html","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-callback-view/sso-callback-view.ts","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-callback-view/sso-callback-view.html","../../../../libs/ui-components/src/lib/shared/organisms/icons-document/icons-document.ts","../../../../libs/ui-components/src/lib/shared/organisms/icons-document/icons-document.html","../../../../libs/ui-components/src/lib/shared/organisms/entity-summary-card/entity-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/entity-summary-card/entity-summary-card.html","../../../../libs/ui-components/src/lib/shared/molecules/category-tile/category-tile.ts","../../../../libs/ui-components/src/lib/shared/molecules/category-tile/category-tile.html","../../../../libs/ui-components/src/lib/shared/organisms/create-category-tile/create-category-tile.ts","../../../../libs/ui-components/src/lib/shared/organisms/create-category-tile/create-category-tile.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart-legend/chart-legend.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart-legend/chart-legend.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/line-chart/line-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/line-chart/line-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/area-chart/area-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/area-chart/area-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/donut-chart/donut-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/donut-chart/donut-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/pie-chart/pie-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/pie-chart/pie-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/gauge-chart/gauge-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/gauge-chart/gauge-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/scale-indicator/scale-indicator.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/scale-indicator/scale-indicator.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/sparkline/sparkline.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/sparkline/sparkline.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/map-view/map-view.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/map-view/map-view.html","../../../../libs/ui-components/src/lib/shared/organisms/store-locations/store-locations.ts","../../../../libs/ui-components/src/lib/shared/organisms/store-locations/store-locations.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/bar-chart/bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/bar-chart/bar-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-gauge/multi-segment-gauge.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-gauge/multi-segment-gauge.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-gauge/stat-gauge.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-gauge/stat-gauge.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/ring-chart/ring-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/ring-chart/ring-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stacked-distribution-chart/stacked-distribution-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stacked-distribution-chart/stacked-distribution-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-ring/stat-ring.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-ring/stat-ring.html","../../../../libs/ui-components/src/lib/shared/molecules/breadcrumb/breadcrumb.ts","../../../../libs/ui-components/src/lib/shared/molecules/breadcrumb/breadcrumb.html","../../../../libs/ui-components/src/lib/shared/organisms/page-header/page-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-header/page-header.html","../../../../libs/ui-components/src/lib/shared/molecules/card/card.ts","../../../../libs/ui-components/src/lib/shared/molecules/card/card.html","../../../../libs/ui-components/src/lib/shared/molecules/accordion/accordion.ts","../../../../libs/ui-components/src/lib/shared/molecules/accordion/accordion.html","../../../../libs/ui-components/src/lib/shared/molecules/progress-card/progress-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/progress-card/progress-card.html","../../../../libs/ui-components/src/lib/shared/molecules/nav-card/nav-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/nav-card/nav-card.html","../../../../libs/ui-components/src/lib/shared/molecules/content-block/content-block.ts","../../../../libs/ui-components/src/lib/shared/molecules/content-block/content-block.html","../../../../libs/ui-components/src/lib/shared/organisms/related-cards-list/related-cards-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/related-cards-list/related-cards-list.html","../../../../libs/ui-components/src/lib/shared/organisms/nav-cards-list/nav-cards-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/nav-cards-list/nav-cards-list.html","../../../../libs/ui-components/src/lib/shared/organisms/feedback-section/feedback-section.ts","../../../../libs/ui-components/src/lib/shared/organisms/feedback-section/feedback-section.html","../../../../libs/ui-components/src/lib/shared/organisms/article-detail/article-detail.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-detail/article-detail.html","../../../../libs/ui-components/src/lib/shared/organisms/article-layout/article-layout.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-layout/article-layout.html","../../../../libs/ui-components/src/lib/shared/organisms/resources-list/resources-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/resources-list/resources-list.html","../../../../libs/ui-components/src/lib/shared/organisms/article-sidebar/article-sidebar.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-sidebar/article-sidebar.html","../../../../libs/ui-components/src/lib/shared/organisms/empty-state/empty-state.ts","../../../../libs/ui-components/src/lib/shared/organisms/empty-state/empty-state.html","../../../../libs/ui-components/src/lib/shared/organisms/cards-list-page/cards-list-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/cards-list-page/cards-list-page.html","../../../../libs/ui-components/src/lib/shared/organisms/article-page/article-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-page/article-page.html","../../../../libs/ui-components/src/lib/shared/molecules/info-row/info-row.ts","../../../../libs/ui-components/src/lib/shared/molecules/info-row/info-row.html","../../../../libs/ui-components/src/lib/shared/organisms/page-not-found/page-not-found.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-not-found/page-not-found.html","../../../../libs/ui-components/src/lib/shared/organisms/page-error/page-error.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-error/page-error.html","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/enums/columns.enum.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/utils/nested-path.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/pipes/nested-value.pipe.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/pipes/status-config.pipe.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/directives/custom-cols.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/grid-table.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/grid-table.html","../../../../libs/ui-components/src/lib/shared/organisms/notification-list/notification-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/notification-list/notification-list.html","../../../../libs/ui-components/src/lib/shared/molecules/video-player/video-player.ts","../../../../libs/ui-components/src/lib/shared/molecules/video-player/video-player.html","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup.ts","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup.html","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup-modal-base/popup-modal-base.ts","../../../../libs/ui-components/src/lib/shared/organisms/save-filter-popup/save-filter-popup.ts","../../../../libs/ui-components/src/lib/shared/organisms/save-filter-popup/save-filter-popup.html","../../../../libs/ui-components/src/lib/shared/molecules/quick-filter-bar/quick-filter-bar.ts","../../../../libs/ui-components/src/lib/shared/molecules/quick-filter-bar/quick-filter-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/selectable-list-with-search/selectable-list-with-search.ts","../../../../libs/ui-components/src/lib/shared/organisms/selectable-list-with-search/selectable-list-with-search.html","../../../../libs/ui-components/src/lib/shared/molecules/global-loading-bar/global-loading-bar.ts","../../../../libs/ui-components/src/lib/shared/molecules/global-loading-bar/global-loading-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/image-picker/image-picker.ts","../../../../libs/ui-components/src/lib/shared/organisms/image-picker/image-picker.html","../../../../libs/ui-components/src/lib/shared/atoms/button-with-selection-count/button-with-selection-count.ts","../../../../libs/ui-components/src/lib/shared/atoms/button-with-selection-count/button-with-selection-count.html","../../../../libs/ui-components/src/lib/shared/organisms/profile-hero/profile-hero.ts","../../../../libs/ui-components/src/lib/shared/organisms/profile-hero/profile-hero.html","../../../../libs/ui-components/src/lib/shared/organisms/file-upload/file-upload.ts","../../../../libs/ui-components/src/lib/shared/organisms/file-upload/file-upload.html","../../../../libs/ui-components/src/lib/shared/molecules/copy-number/copy-number.ts","../../../../libs/ui-components/src/lib/shared/molecules/copy-number/copy-number.html","../../../../libs/ui-components/src/lib/shared/atoms/export-pdf-button/export-pdf-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/export-pdf-button/export-pdf-button.html","../../../../libs/ui-components/src/lib/shared/organisms/export-pdf-container/export-pdf-container.ts","../../../../libs/ui-components/src/lib/shared/organisms/export-pdf-container/export-pdf-container.html","../../../../libs/ui-components/src/lib/models/dashboard.models.ts","../../../../libs/ui-components/src/lib/shared/organisms/status-page/status-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/status-page/status-page.html","../../../../libs/ui-components/src/lib/shared/molecules/api-error-state/api-error-state.ts","../../../../libs/ui-components/src/lib/shared/molecules/api-error-state/api-error-state.html","../../../../libs/ui-components/src/lib/shared/molecules/stamp/stamp.ts","../../../../libs/ui-components/src/lib/shared/molecules/stamp/stamp.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-bar-chart/multi-segment-bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-bar-chart/multi-segment-bar-chart.html","../../../../libs/ui-components/src/lib/shared/atoms/form-password-toggle/form-password-toggle.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-password-toggle/form-password-toggle.html","../../../../libs/ui-components/src/lib/shared/molecules/support-contact-card/support-contact-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/support-contact-card/support-contact-card.html","../../../../libs/ncim-sdk-ui.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\n\n@Component({\n selector: 'ncim-icon',\n templateUrl: './icon.html',\n styleUrl: './icon.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AngularSvgIconModule],\n host: {\n '[style.width.px]': 'size()',\n '[style.height.px]': 'height() || size()',\n },\n})\nexport class Icon {\n name = input<string>('');\n size = input<number>(24);\n height = input<number | null>();\n\n iconSrc = computed(() => this.getIconSrc());\n\n private getIconSrc(): string {\n if (!this.name()) {\n return '';\n }\n return `assets/ncim-icons/${this.name()}.svg`;\n }\n}\n","@if (iconSrc()) {\n <svg-icon class=\"ncim-icon\" [class]=\"'ncim-icon ' + (name() || '')\" [src]=\"iconSrc()\"></svg-icon>\n}\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { ProgressBar } from '@libs/ui-components/shared/atoms/progress-bar/progress-bar';\n\n@Component({\n selector: 'ncim-complete-training',\n templateUrl: './complete-training.html',\n styleUrl: './complete-training.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, ProgressBar],\n})\nexport class CompleteTraining {\n readonly illustration = input<string>('');\n readonly title = input<string>('');\n readonly description = input<string>('');\n readonly progress = input<number>(0);\n readonly buttonLabel = input<string>('');\n\n readonly nextStep = output<void>();\n}\n","<div class=\"complete-training\">\n @if (illustration()) {\n <div class=\"complete-training__illustration\">\n <img [src]=\"illustration()\" alt=\"\" aria-hidden=\"true\" class=\"complete-training__img\" />\n </div>\n }\n\n <div class=\"complete-training__content\">\n @if (title()) {\n <h3 class=\"complete-training__title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"complete-training__description\">{{ description() }}</p>\n }\n </div>\n\n <div class=\"complete-training__progress-wrapper\">\n <ncim-progress-bar [showThumb]=\"false\" [progress]=\"progress()\" [max]=\"100\" />\n </div>\n\n <ncim-button variant=\"black\" size=\"mini\" [fullWidth]=\"true\" (click)=\"nextStep.emit()\" class=\"complete-training__button\">\n {{ buttonLabel() }}\n </ncim-button>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n DestroyRef,\n effect,\n input,\n output,\n signal,\n model,\n inject,\n} from '@angular/core';\nimport { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavSection, SidebarBrand } from './sidebar.models';\nimport { Icon } from '../../atoms/icon/icon';\nimport { CompleteTraining } from '../../organisms/complete-training/complete-training';\n\n@Component({\n selector: 'ncim-sidebar',\n imports: [RouterLink, RouterLinkActive, TranslateModule, Icon, CompleteTraining],\n templateUrl: './sidebar.html',\n styleUrl: './sidebar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sidebar {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n\n // Inputs\n brand = input<SidebarBrand>({ title: 'SIDEBAR.BRAND' });\n sections = input<NavSection[]>([]);\n notificationCount = input<number>(99);\n userAvatar = input<string | null>(null);\n showCompleteTraining = input<boolean>(true);\n showAppsMenu = input<boolean>(true);\n activeActionId = input<string | null>(null);\n\n // Models\n isOpen = model<boolean>(false);\n panelOpen = model<boolean>(false);\n\n // Outputs\n footerActionClick = output<string>();\n menuToggle = output<void>();\n\n // State\n protected readonly expandedItems = signal<Set<string>>(new Set());\n\n constructor() {\n const syncExpandedFromRoute = (): void => {\n const sections = this.sections();\n const url = this.router.url;\n const toExpand = new Set<string>();\n for (const section of sections) {\n for (const item of section.items) {\n if (item.children?.some(child => url.startsWith(child.route))) {\n toExpand.add(item.label);\n }\n }\n }\n if (toExpand.size > 0) {\n this.expandedItems.update(() => toExpand);\n }\n };\n\n effect(() => {\n this.sections();\n syncExpandedFromRoute();\n });\n\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => syncExpandedFromRoute());\n\n syncExpandedFromRoute();\n }\n\n protected toggleExpand(label: string): void {\n this.expandedItems.update(set => {\n const newSet = new Set(set);\n if (newSet.has(label)) {\n newSet.delete(label);\n } else {\n newSet.add(label);\n }\n return newSet;\n });\n }\n\n protected isExpanded(label: string): boolean {\n return this.expandedItems().has(label);\n }\n\n protected onFooterAction(actionId: string): void {\n this.footerActionClick.emit(actionId);\n }\n\n protected close(): void {\n this.isOpen.set(false);\n }\n}\n","<!-- Overlay backdrop (mobile only) -->\n<button\n class=\"sidebar-overlay\"\n [class.sidebar-overlay--visible]=\"isOpen()\"\n (click)=\"close()\"\n (keydown.escape)=\"close()\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'ARIA.CLOSE_SIDEBAR' | translate\"\n></button>\n\n<aside class=\"sidebar\" [class.sidebar--open]=\"isOpen()\" [class.sidebar--panel-hidden]=\"!panelOpen()\">\n <!-- Icon strip (right side) -->\n <div class=\"sidebar__strip\">\n <div class=\"sidebar__strip-top\">\n @if (showAppsMenu()) {\n <button class=\"sidebar__menu-toggle\" [attr.aria-label]=\"'ARIA.TOGGLE_MENU' | translate\" (click)=\"menuToggle.emit()\">\n <ncim-icon name=\"menu\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'layers'\"\n [attr.aria-label]=\"'ARIA.LAYERS' | translate\"\n (click)=\"onFooterAction('layers')\"\n >\n <ncim-icon name=\"layers\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'dashboard'\"\n [attr.aria-label]=\"'ARIA.DASHBOARD' | translate\"\n (click)=\"onFooterAction('dashboard')\"\n >\n <ncim-icon name=\"widget\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'documents'\"\n [attr.aria-label]=\"'ARIA.DOCUMENTS' | translate\"\n (click)=\"onFooterAction('documents')\"\n >\n <ncim-icon name=\"note-stack\" [size]=\"24\" />\n </button>\n\n <div class=\"sidebar__strip-separator\"></div>\n } @else {\n <button class=\"sidebar__ncim-logo\" (click)=\"onFooterAction('layers')\">\n <img src=\"core/assets/images/ncim-logo.svg\" alt=\"ncim-logo\" />\n </button>\n }\n </div>\n\n <div class=\"sidebar__strip-actions\">\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--notification\"\n [attr.aria-label]=\"'ARIA.NOTIFICATIONS' | translate\"\n (click)=\"onFooterAction('notifications')\"\n >\n <ncim-icon name=\"bell\" [size]=\"24\" />\n @if (notificationCount() > 0) {\n <span class=\"sidebar__badge\">{{ notificationCount() > 99 ? '99' : notificationCount() }}</span>\n }\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'settings'\"\n [attr.aria-label]=\"'ARIA.SETTINGS' | translate\"\n (click)=\"onFooterAction('settings')\"\n >\n <ncim-icon name=\"cog\" [size]=\"24\" />\n </button>\n\n @if (userAvatar(); as avatar) {\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--avatar\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'profile'\"\n [attr.aria-label]=\"'ARIA.PROFILE' | translate\"\n (click)=\"onFooterAction('profile')\"\n >\n <img class=\"sidebar__avatar\" [src]=\"avatar\" alt=\"User avatar\" />\n </button>\n } @else {\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--avatar\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'profile'\"\n [attr.aria-label]=\"'ARIA.PROFILE' | translate\"\n (click)=\"onFooterAction('profile')\"\n >\n <ncim-icon name=\"user\" [size]=\"24\" />\n </button>\n }\n\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--logout\"\n [attr.aria-label]=\"'ARIA.LOGOUT' | translate\"\n (click)=\"onFooterAction('logout')\"\n >\n <ncim-icon name=\"logout\" [size]=\"24\" />\n </button>\n </div>\n </div>\n\n <!-- Navigation panel (left side) -->\n <div class=\"sidebar__panel\">\n <nav class=\"sidebar__nav\">\n <div class=\"sidebar__header\">\n <h2 class=\"sidebar__title\">{{ brand().title | translate }}</h2>\n <h2 class=\"sidebar__role\">{{ brand().role ?? 'PROFILE.ROLE' | translate }}</h2>\n </div>\n\n @for (section of sections(); track section.title) {\n <div class=\"sidebar__section\">\n <span class=\"sidebar__section-title\">{{ section.title | translate }}</span>\n\n <ul class=\"sidebar__menu\">\n @for (item of section.items; track item.label) {\n <li class=\"sidebar__menu-item\" [class.sidebar__menu-item--expanded]=\"item.children && isExpanded(item.label)\">\n @if (item.children) {\n <button class=\"sidebar__link\" [class.sidebar__link--expanded]=\"isExpanded(item.label)\" (click)=\"toggleExpand(item.label)\">\n <span class=\"sidebar__icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\" />\n </span>\n <span class=\"sidebar__label\">{{ item.label | translate }}</span>\n <ncim-icon\n class=\"sidebar__chevron\"\n [class.sidebar__chevron--open]=\"isExpanded(item.label)\"\n name=\"chevronDown\"\n [size]=\"16\"\n />\n </button>\n\n @if (isExpanded(item.label)) {\n <ul class=\"sidebar__submenu\">\n @for (child of item.children; track child.route) {\n <li class=\"sidebar__submenu-item\">\n <a\n class=\"sidebar__submenu-link\"\n [routerLink]=\"child.route\"\n routerLinkActive=\"sidebar__submenu-link--active\"\n (click)=\"close()\"\n >\n {{ child.label | translate }}\n </a>\n </li>\n }\n </ul>\n }\n } @else {\n <a class=\"sidebar__link\" [routerLink]=\"item.route\" routerLinkActive=\"sidebar__link--active\" (click)=\"close()\">\n <span class=\"sidebar__icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\" />\n </span>\n <span class=\"sidebar__label\">{{ item.label | translate }}</span>\n @if (item.badge) {\n <span class=\"sidebar__item-badge\">{{ item.badge }} {{ 'SIDEBAR.ITEMS.VIOLATIONS_BADGE' | translate }}</span>\n }\n </a>\n }\n </li>\n }\n </ul>\n </div>\n }\n </nav>\n\n @if (showCompleteTraining()) {\n <div class=\"sidebar__complete-training\">\n <ncim-complete-training\n illustration=\"core/assets/images/complete-training.svg\"\n [title]=\"'COMPLETE_TRAINING.TITLE' | translate\"\n [description]=\"'COMPLETE_TRAINING.DESCRIPTION' | translate\"\n [progress]=\"65\"\n [buttonLabel]=\"'COMPLETE_TRAINING.BUTTON_LABEL' | translate\"\n />\n </div>\n }\n </div>\n</aside>\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { Popup } from '@libs/ui-components/shared/molecules/popup/popup';\nimport { PopupModalBase } from '@libs/ui-components/shared/molecules/popup/popup-modal-base/popup-modal-base';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-logout-modal',\n templateUrl: './logout-modal.html',\n styleUrl: './logout-modal.scss',\n imports: [Popup, NcimButton, Icon, TranslatePipe],\n})\nexport class LogoutModal extends PopupModalBase {\n readonly confirmed = output<void>();\n\n protected onConfirm(): void {\n this.confirmed.emit();\n this.closeModal();\n }\n}\n","<ncim-popup [open]=\"isOpen()\" size=\"small\" width=\"520px\">\n <div class=\"logout-modal\">\n <div class=\"logout-modal__illustration\" aria-hidden=\"true\">\n <ncim-icon name=\"logout-popup\" [size]=\"122\" />\n </div>\n\n <h2 class=\"logout-modal__title\">{{ 'LOGOUT_MODAL.TITLE' | translate }}</h2>\n <p class=\"logout-modal__description\">{{ 'LOGOUT_MODAL.DESCRIPTION' | translate }}</p>\n </div>\n\n <div popupFooter class=\"logout-modal__actions\">\n <ncim-button variant=\"black\" [fullWidth]=\"true\" (click)=\"onConfirm()\">\n {{ 'LOGOUT_MODAL.CONFIRM' | translate }}\n </ncim-button>\n <ncim-button variant=\"neutral\" [fullWidth]=\"true\" (click)=\"closeModal()\">\n {{ 'LOGOUT_MODAL.BACK' | translate }}\n </ncim-button>\n </div>\n</ncim-popup>\n","import { signal } from '@angular/core';\n\n/** Shared sidebar toggle and footer action logic for layouts. */\nexport abstract class BaseSidebarLayout {\n readonly sidebarOpen = signal(false);\n\n toggleSidebar(): void {\n this.sidebarOpen.update(open => !open);\n }\n\n onFooterAction(_actionId: string): void {\n // Override in subclass to handle footer actions (logout, settings, etc.)\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\nimport { filter, map } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ROUTE_PATHS } from '@libs/core/constants';\nimport { Sidebar } from '../sidebar/sidebar';\nimport { Icon } from '../../atoms/icon/icon';\nimport { LogoutModal } from '../../organisms/logout-modal/logout-modal';\nimport { BaseSidebarLayout } from '../base-sidebar-layout';\nimport { NavSection, SidebarBrand } from '../sidebar/sidebar.models';\n\ntype MenuKey = 'main' | 'settings' | null;\n\n/** Main app shell with sidebar and router outlet. Dumb/presentational — receives all config via inputs. */\n@Component({\n selector: 'ncim-dashboard-layout',\n imports: [RouterOutlet, Sidebar, Icon, TranslateModule, LogoutModal],\n templateUrl: './dashboard-layout.html',\n styleUrl: './dashboard-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DashboardLayout extends BaseSidebarLayout {\n // Inputs\n readonly sectionsMap = input<Record<string, NavSection[]>>({});\n readonly brand = input<SidebarBrand>({ title: 'SIDEBAR.BRAND' });\n readonly userAvatar = input<string | null>(null);\n readonly notificationCount = input<number>(0);\n readonly showCompleteTraining = input<boolean>(true);\n readonly showAppsMenu = input<boolean>(true);\n\n // Outputs — parent (smart container) handles navigation and logout logic\n readonly footerNavigate = output<string>();\n readonly logoutConfirmed = output<void>();\n\n private readonly router = inject(Router);\n protected readonly logoutModal = viewChild.required(LogoutModal);\n\n private readonly currentUrl = toSignal(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => (event as NavigationEnd).urlAfterRedirects)\n ),\n { initialValue: this.router.url }\n );\n\n private readonly activeMenuKey = signal<MenuKey>('main');\n\n constructor() {\n super();\n this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => (event as NavigationEnd).urlAfterRedirects)\n )\n .subscribe(url => {\n if (url.includes(ROUTE_PATHS.SETTINGS)) {\n this.activeMenuKey.set('settings');\n } else {\n this.activeMenuKey.set('main');\n }\n });\n\n // Handle initial state\n const currentUrl = this.router.url;\n if (currentUrl.includes(ROUTE_PATHS.SETTINGS)) {\n this.activeMenuKey.set('settings');\n }\n }\n\n private readonly lastOpenKey = signal<'main' | 'settings'>('main');\n\n readonly isPanelOpen = computed(() => this.activeMenuKey() !== null);\n\n readonly panelSections = computed(() => {\n const key = this.activeMenuKey();\n return key ? (this.sectionsMap()[key] ?? []) : [];\n });\n\n readonly activeActionId = computed(() => {\n const url = this.currentUrl();\n if (url.includes(ROUTE_PATHS.SETTINGS)) {\n return 'settings';\n }\n if (url.includes(ROUTE_PATHS.SETTINGS_PROFILE)) {\n return 'profile';\n }\n return 'layers';\n });\n\n override onFooterAction(actionId: string): void {\n if (actionId === 'logout') {\n this.logoutModal().openModal();\n } else if (actionId === 'layers' || actionId === 'dashboard') {\n this.lastOpenKey.set('main');\n this.activeMenuKey.set('main');\n this.router.navigateByUrl(ROUTE_PATHS.DASHBOARD_HOME);\n } else if (actionId === 'settings') {\n this.lastOpenKey.set('settings');\n this.activeMenuKey.set('settings');\n this.router.navigateByUrl(ROUTE_PATHS.SETTINGS_USERS_AND_ROLES);\n } else {\n // Navigation actions (profile, dashboard, documents, notifications, etc.)\n this.footerNavigate.emit(actionId);\n }\n }\n\n protected togglePanel(): void {\n const cur = this.activeMenuKey();\n if (cur) {\n this.lastOpenKey.set(cur);\n this.activeMenuKey.set(null);\n } else {\n this.activeMenuKey.set(this.lastOpenKey());\n }\n }\n\n protected onLogoutConfirmed(): void {\n this.logoutConfirmed.emit();\n }\n}\n","<div class=\"dashboard-layout\" [class.dashboard-layout--sidebar-collapsed]=\"!isPanelOpen()\">\n <!-- Mobile header with hamburger -->\n <header class=\"dashboard-layout__mobile-header\">\n <button class=\"dashboard-layout__hamburger\" (click)=\"toggleSidebar()\" [attr.aria-label]=\"'ARIA.TOGGLE_MENU' | translate\">\n <ncim-icon name=\"menu\" [size]=\"24\" />\n </button>\n </header>\n\n <ncim-sidebar\n [isOpen]=\"sidebarOpen()\"\n (isOpenChange)=\"sidebarOpen.set($event)\"\n [panelOpen]=\"isPanelOpen()\"\n [brand]=\"brand()\"\n [sections]=\"panelSections()\"\n [notificationCount]=\"notificationCount()\"\n [userAvatar]=\"userAvatar()\"\n [activeActionId]=\"activeActionId()\"\n [showCompleteTraining]=\"showCompleteTraining()\"\n (menuToggle)=\"togglePanel()\"\n (footerActionClick)=\"onFooterAction($event)\"\n [showAppsMenu]=\"showAppsMenu()\"\n />\n\n <main class=\"dashboard-layout__content\">\n <router-outlet />\n </main>\n</div>\n\n<ncim-logout-modal (confirmed)=\"onLogoutConfirmed()\" />\n","export const NAV_ROUTES = {\n DASHBOARD_HOME: '/dashboard/home',\n REGULATORY_DASHBOARD: '/dashboard/regulatory-dashboard',\n VIOLATIONS: '/dashboard/violations',\n OBJECTIONS: '/dashboard/objections',\n COMPLIANCE_PROGRAM: '/dashboard/compliance-program',\n SMART_ADVISOR: '/dashboard/smart-advisor',\n KNOWLEDGE_CENTER: '/dashboard/knowledge-center',\n SUPPORTER: '/dashboard/supporter',\n SETTINGS_USERS_AND_ROLES: '/dashboard/user-management/users-and-roles',\n SETTINGS_SYSTEM: '/dashboard/user-management/system-settings',\n} as const;\n\nexport enum NavSectionKey {\n BASICS = 'SIDEBAR.SECTIONS.BASICS',\n HELP = 'SIDEBAR.SECTIONS.HELP',\n}\n\nexport enum NavItemKey {\n HOME = 'SIDEBAR.ITEMS.HOME',\n REGULATORY_DASHBOARD = 'SIDEBAR.ITEMS.REGULATORY_DASHBOARD',\n VIOLATIONS = 'SIDEBAR.ITEMS.VIOLATIONS',\n OBJECTIONS = 'SIDEBAR.ITEMS.OBJECTIONS',\n LICENSES = 'SIDEBAR.ITEMS.LICENSES',\n COMPLIANCE_PROGRAM = 'SIDEBAR.ITEMS.COMPLIANCE_PROGRAM',\n SMART_ADVISOR = 'SIDEBAR.ITEMS.SMART_ADVISOR',\n KNOWLEDGE_CENTER = 'SIDEBAR.ITEMS.KNOWLEDGE_CENTER',\n SUPPORTER = 'SIDEBAR.ITEMS.SUPPORTER',\n USERS_ROLES = 'USERS_ROLES.TITLE',\n SYSTEM_SETTINGS = 'SIDEBAR.ITEMS.SYSTEM_SETTINGS',\n MY_FACILITIES = 'SIDEBAR.ITEMS.MY_FACILITIES',\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-copy-right',\n imports: [TranslateModule],\n templateUrl: './copy-right.html',\n styleUrl: './copy-right.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopyRight {}\n","<footer class=\"copy-right\">\n {{ 'AUTH.FOOTER' | translate }}\n</footer>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CopyRight } from '../../atoms/copy-right/copy-right';\nimport { Icon } from '../../atoms/icon/icon';\n\n/** Centered layout for login, forgot-password, OTP, reset-password. */\n@Component({\n selector: 'ncim-auth-layout',\n imports: [TranslateModule, CopyRight, Icon],\n templateUrl: './auth-layout.html',\n styleUrl: './auth-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthLayout {\n readonly width = input<'small' | 'full'>('small');\n}\n","<div class=\"auth-layout\" [class.auth-layout--full]=\"width() === 'full'\">\n <header class=\"auth-layout__header\">\n <ncim-icon name=\"logo\" [size]=\"200\" [height]=\"48\" class=\"auth-layout__logo\" />\n </header>\n\n <main class=\"auth-layout__main\">\n <div class=\"auth-layout__card\">\n <ng-content></ng-content>\n </div>\n </main>\n\n <footer class=\"auth-layout__footer\">\n <ncim-copy-right />\n </footer>\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconName } from '@libs/core/enums';\nimport { BaseSidebarLayout } from '../base-sidebar-layout';\n\n/** Item for settings sidebar navigation. */\nexport interface SettingsNavItem {\n label: string;\n route: string;\n icon?: IconName;\n}\n\n/** App shell for settings area (profile, users & roles) with sidebar. */\n@Component({\n selector: 'ncim-settings-layout',\n imports: [RouterOutlet, TranslateModule],\n templateUrl: './settings-layout.html',\n styleUrl: './settings-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SettingsLayout extends BaseSidebarLayout {}\n","<div class=\"settings-layout\">\n <main class=\"settings-layout__content\">\n <router-outlet />\n </main>\n</div>\n","import {\n Component,\n signal,\n viewChildren,\n ElementRef,\n input,\n inject,\n computed,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ERROR_KEYS, VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { FormError } from '@libs/ui-components/shared/atoms/form-error/form-error';\n\n@Component({\n selector: 'ncim-otp-input',\n imports: [FormError],\n templateUrl: './otp-input.html',\n styleUrl: './otp-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpInput implements ControlValueAccessor {\n readonly length = input<number>(VALIDATION_LENGTHS.OTP);\n readonly submitted = input<boolean>(false);\n\n readonly digits = signal<string[]>(Array(VALIDATION_LENGTHS.OTP).fill(''));\n readonly disabled = signal(false);\n readonly touched = signal(false);\n readonly focused = signal(false);\n readonly inputs = viewChildren<ElementRef>('otpInput');\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n readonly errorKey = computed<string>(() => {\n // Read digits signal to create reactive dependency — control.errors is not a signal,\n // so without this, the computed won't re-run when the user types and validity changes.\n this.digits();\n\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n if (control.hasError('required')) {\n return ERROR_KEYS.REQUIRED;\n }\n if (control.hasError('minlength')) {\n return ERROR_KEYS.INVALID_FORMAT;\n }\n\n return '';\n });\n\n readonly showError = computed<boolean>(\n () => !!this.errorKey() && ((this.touched() && !this.focused()) || this.submitted())\n );\n\n onDigitInput(event: Event, index: number): void {\n const input = event.target as HTMLInputElement;\n const value = input.value.replace(/\\D/g, '');\n\n const updated = [...this.digits()];\n updated[index] = value.charAt(value.length - 1) || '';\n this.digits.set(updated);\n\n input.value = updated[index];\n\n if (updated[index] && index < this.length() - 1) {\n const inputEls = this.inputs();\n inputEls[index + 1]?.nativeElement.focus();\n }\n\n this.emitValue();\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.touched.set(true);\n this.onTouched();\n }\n\n onKeyDown(event: KeyboardEvent, index: number): void {\n if (event.key === 'Backspace') {\n const updated = [...this.digits()];\n if (!updated[index] && index > 0) {\n const inputEls = this.inputs();\n inputEls[index - 1]?.nativeElement.focus();\n updated[index - 1] = '';\n this.digits.set(updated);\n this.emitValue();\n }\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasteData = event.clipboardData?.getData('text')?.replace(/\\D/g, '') ?? '';\n const updated = [...this.digits()];\n\n for (let i = 0; i < Math.min(pasteData.length, this.length()); i++) {\n updated[i] = pasteData[i];\n }\n\n this.digits.set(updated);\n this.emitValue();\n\n const inputEls = this.inputs();\n const focusIdx = Math.min(pasteData.length, this.length() - 1);\n inputEls[focusIdx]?.nativeElement.focus();\n }\n\n writeValue(value: string): void {\n if (value) {\n const arr = value.split('').slice(0, this.length());\n while (arr.length < this.length()) {\n arr.push('');\n }\n this.digits.set(arr);\n } else {\n this.digits.set(Array(this.length()).fill(''));\n this.touched.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private emitValue(): void {\n const value = this.digits().join('');\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"otp-input\" (paste)=\"onPaste($event)\">\n <!-- track $index: OTP digit positions are fixed -->\n @for (digit of digits(); track $index) {\n <input\n #otpInput\n class=\"otp-input__field\"\n [class.otp-input__field--error]=\"showError()\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [value]=\"digit\"\n [disabled]=\"disabled()\"\n placeholder=\"-\"\n (input)=\"onDigitInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n</div>\n\n<ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-button',\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon],\n})\nexport class NcimButton {\n readonly variant = input<'primary' | 'black' | 'neutral' | 'secondary' | 'transparent' | 'outline' | 'link'>(\n 'primary'\n );\n\n readonly type = input<'button' | 'submit'>('button');\n readonly fullWidth = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly size = input<'compact' | 'mini' | 'extra-small' | 'small-icon-only' | 'small' | 'medium' | 'large'>(\n 'medium'\n );\n\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('start');\n readonly iconSize = input<number>(20);\n}\n","<button\n class=\"btn\"\n [class.btn--primary]=\"variant() === 'primary'\"\n [class.btn--secondary]=\"variant() === 'secondary'\"\n [class.btn--black]=\"variant() === 'black'\"\n [class.btn--neutral]=\"variant() === 'neutral'\"\n [class.btn--transparent]=\"variant() === 'transparent'\"\n [class.btn--outline]=\"variant() === 'outline'\"\n [class.btn--link]=\"variant() === 'link'\"\n [class.btn--full-width]=\"fullWidth()\"\n [class.btn--loading]=\"loading()\"\n [class.btn--compact]=\"size() === 'compact'\"\n [class.btn--mini]=\"size() === 'mini'\"\n [class.btn--extra-small]=\"size() === 'extra-small'\"\n [class.btn--small-icon-only]=\"size() === 'small-icon-only'\"\n [class.btn--small]=\"size() === 'small'\"\n [class.btn--medium]=\"size() === 'medium'\"\n [class.btn--large]=\"size() === 'large'\"\n [type]=\"type()\"\n [disabled]=\"disabled() || loading()\"\n>\n @if (loading()) {\n <span class=\"btn__spinner\"></span>\n }\n @if (icon() && iconPosition() === 'start') {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n <ng-content></ng-content>\n @if (icon() && iconPosition() === 'end') {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n</button>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-divider',\n templateUrl: './divider.html',\n styleUrl: './divider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Divider {\n readonly text = input<string>('');\n}\n","<div class=\"divider\">\n <span class=\"divider__line\"></span>\n @if (text()) {\n <span class=\"divider__text\">{{ text() }}</span>\n }\n <span class=\"divider__line\"></span>\n</div>\n","import { Component, input, output, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface StepItem {\n id: string;\n label?: string;\n state: 'completed' | 'active' | 'upcoming' | 'disabled';\n}\n\n@Component({\n selector: 'ncim-stepper',\n imports: [TranslateModule, Icon],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stepper {\n readonly steps = input.required<StepItem[]>();\n readonly variant = input<'steps' | 'progress' | 'pills'>('steps');\n readonly linear = input<boolean>(true);\n readonly width = input<number>(100);\n\n readonly stepChange = output<string>();\n\n readonly progressPercentage = computed(() => {\n const items = this.steps();\n if (items.length === 0) {\n return 0;\n }\n const completedCount = items.filter(s => s.state === 'completed').length;\n const activeCount = items.filter(s => s.state === 'active').length;\n return Math.min(100, ((completedCount + activeCount) / items.length) * 100);\n });\n\n onStepClick(step: StepItem): void {\n if (step.state === 'disabled' || step.state === 'active') {\n return;\n }\n if (this.linear() && step.state === 'upcoming') {\n return;\n }\n this.stepChange.emit(step.id);\n }\n}\n","@if (variant() === 'pills') {\n <div class=\"stepper-pills\" role=\"progressbar\" [attr.aria-valuenow]=\"progressPercentage()\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n @for (step of steps(); track step.id) {\n <div\n class=\"stepper-pills__segment\"\n [style.width.px]=\"width()\"\n [class.stepper-pills__segment--active]=\"step.state === 'active'\"\n [class.stepper-pills__segment--completed]=\"step.state === 'completed'\"\n [class.stepper-pills__segment--upcoming]=\"step.state === 'upcoming'\"\n ></div>\n }\n </div>\n} @else if (variant() === 'progress') {\n <div class=\"stepper-progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progressPercentage()\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"stepper-progress__fill\" [style.width.%]=\"progressPercentage()\"></div>\n </div>\n} @else {\n <nav class=\"stepper\" role=\"navigation\" [attr.aria-label]=\"'ARIA.PROGRESS' | translate\">\n <ol class=\"stepper__list\">\n @for (step of steps(); track step.id; let idx = $index; let last = $last) {\n <li\n class=\"stepper__item\"\n [class.stepper__item--completed]=\"step.state === 'completed'\"\n [class.stepper__item--active]=\"step.state === 'active'\"\n [class.stepper__item--upcoming]=\"step.state === 'upcoming'\"\n [class.stepper__item--disabled]=\"step.state === 'disabled'\"\n >\n <button\n class=\"stepper__circle\"\n type=\"button\"\n [disabled]=\"step.state === 'disabled' || step.state === 'active' || (linear() && step.state === 'upcoming')\"\n [attr.aria-current]=\"step.state === 'active' ? 'step' : null\"\n (click)=\"onStepClick(step)\"\n >\n @if (step.state === 'completed') {\n <ncim-icon class=\"stepper__check\" name=\"check\" [size]=\"16\" />\n } @else {\n <span class=\"stepper__number\">{{ idx + 1 }}</span>\n }\n </button>\n\n @if (step.label) {\n <span class=\"stepper__label\">{{ step.label | translate }}</span>\n }\n\n @if (!last) {\n <div class=\"stepper__connector\" [class.stepper__connector--completed]=\"step.state === 'completed'\"></div>\n }\n </li>\n }\n </ol>\n </nav>\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CopyRight } from '../../atoms/copy-right/copy-right';\nimport { Stepper, StepItem } from '../../molecules/stepper/stepper';\n\n@Component({\n selector: 'ncim-register-layout',\n imports: [TranslateModule, CopyRight, Stepper],\n templateUrl: './register-layout.html',\n styleUrl: './register-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterLayout {\n readonly sidebarTitle = input<string>('');\n readonly sidebarDescription = input<string>('');\n readonly sidebarImage = input<string>('assets/images/register.png');\n readonly steps = input<StepItem[]>([]);\n readonly stepperVariant = input<'steps' | 'progress'>('steps');\n readonly linear = input<boolean>(true);\n\n readonly stepChange = output<string>();\n}\n","<div class=\"register-layout\">\n <aside class=\"register-layout__sidebar\">\n <div class=\"register-layout__sidebar-content\">\n <div class=\"register-layout__illustration\">\n <img [src]=\"sidebarImage()\" [alt]=\"sidebarTitle()\" />\n </div>\n <h2 class=\"register-layout__sidebar-title\">{{ sidebarTitle() }}</h2>\n <p class=\"register-layout__sidebar-desc\">{{ sidebarDescription() }}</p>\n <img src=\"assets/images/bg-side.png\" class=\"register-layout__sidebar-bg\" alt=\"\" srcset=\"\" />\n </div>\n </aside>\n\n <main class=\"register-layout__main\">\n <div class=\"register-layout__content\">\n <header class=\"register-layout__header\">\n @if (steps().length > 0) {\n <ncim-stepper [steps]=\"steps()\" [variant]=\"stepperVariant()\" [linear]=\"linear()\" (stepChange)=\"stepChange.emit($event)\" />\n }\n </header>\n\n <div class=\"register-layout__step-container\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <footer class=\"register-layout__footer\">\n <ncim-copy-right />\n </footer>\n </main>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy, signal, forwardRef, computed } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ERROR_KEYS } from '@libs/core/constants';\nimport { FormError } from '@libs/ui-components/shared/atoms/form-error/form-error';\nimport { FormLabel } from '@libs/ui-components/shared/atoms/form-label/form-label';\n\nexport interface OptionItem {\n value: string;\n label?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ncim-option-group',\n imports: [FormError, FormLabel],\n templateUrl: './option-group.html',\n styleUrl: './option-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OptionGroup),\n multi: true,\n },\n ],\n})\nexport class OptionGroup implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly options = input.required<OptionItem[]>();\n readonly columns = input<number>(4);\n\n readonly selectedValue = input<string | null>(null);\n readonly submitted = input<boolean>(false);\n readonly selectionChange = output<string>();\n\n readonly disabled = signal(false);\n readonly touched = signal(false);\n readonly value = signal<string | null>(null);\n\n readonly activeValue = computed(() => this.value() ?? this.selectedValue());\n readonly errorKey = ERROR_KEYS.REQUIRED;\n\n readonly showError = computed<boolean>(\n () => !this.value() && !this.activeValue() && (this.touched() || this.submitted())\n );\n\n private onChange: (value: string | null) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n onSelect(option: OptionItem): void {\n if (!option.disabled && !this.disabled()) {\n this.value.set(option.value);\n this.selectionChange.emit(option.value);\n this.onChange(option.value);\n this.touched.set(true);\n this.onTouched();\n }\n }\n\n writeValue(value: string | null): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<div class=\"option-group\">\n <ncim-form-label [text]=\"label()\" />\n\n <div class=\"option-group__options\" [class.option-group__options--error]=\"showError()\" [style.--option-cols]=\"columns()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"option-group__option\"\n [class.option-group__option--selected]=\"activeValue() === option.value\"\n [class.option-group__option--disabled]=\"option.disabled || disabled()\"\n [disabled]=\"option.disabled || disabled()\"\n (click)=\"onSelect(option)\"\n >\n {{ option.label || option.value }}\n </button>\n }\n </div>\n\n <ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, linkedSignal, output, signal } from '@angular/core';\n\n@Component({\n selector: 'ncim-radio-button',\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioButton {\n readonly value = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly checked = input<boolean | undefined>(undefined);\n readonly valueChange = output<string>();\n readonly isChecked = linkedSignal(() => this.checked());\n readonly isDisabled = linkedSignal<boolean>(() => this.disabled());\n readonly name = signal<string>('');\n\n readonly inputId = signal(`ncim-radio-${crypto.randomUUID?.() ?? Math.random().toString(16).slice(2)}`);\n\n readonly ariaChecked = computed(() => (this.isChecked() ? 'true' : 'false'));\n readonly ariaDisabled = computed(() => (this.isDisabled() ? 'true' : 'false'));\n\n onRadioChange(): void {\n if (this.isDisabled()) {\n return;\n }\n this.valueChange.emit(this.value());\n }\n}\n","<label\n class=\"ncim-radio-button\"\n [class.ncim-radio-button--checked]=\"isChecked()\"\n [class.ncim-radio-button--disabled]=\"isDisabled()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n>\n <span class=\"ncim-radio-button__content\">\n <span class=\"ncim-radio-button__control\">\n <input\n class=\"ncim-radio-button__native\"\n type=\"radio\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onRadioChange()\"\n />\n\n <span class=\"ncim-radio-button__outer\" aria-hidden=\"true\">\n <span class=\"ncim-radio-button__inner\" aria-hidden=\"true\"></span>\n </span>\n </span>\n <span class=\"ncim-radio-button__label\">\n <ng-content />\n </span>\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, forwardRef, input, linkedSignal, output, signal } from '@angular/core';\nimport { RadioButton } from '../radio-button/radio-button';\n\n@Component({\n selector: 'ncim-selection-button',\n templateUrl: './selection-button.html',\n styleUrl: './selection-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: RadioButton,\n useExisting: forwardRef(() => SelectionButton),\n },\n ],\n})\nexport class SelectionButton extends RadioButton {\n readonly size = input<'small' | 'medium' | 'large'>('medium');\n readonly variant = input<'primary' | 'secondary' | 'outline'>('outline');\n}\n","<label\n class=\"option-button\"\n [class.option-button--small]=\"size() === 'small'\"\n [class.option-button--medium]=\"size() === 'medium'\"\n [class.option-button--large]=\"size() === 'large'\"\n [class.option-button--primary]=\"variant() === 'primary'\"\n [class.option-button--secondary]=\"variant() === 'secondary'\"\n [class.option-button--outline]=\"variant() === 'outline'\"\n [class.option-button--selected]=\"isChecked()\"\n [class.option-button--disabled]=\"isDisabled()\"\n>\n <input\n [id]=\"name() + '_' + value()\"\n type=\"radio\"\n class=\"option-button__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onRadioChange()\"\n />\n <div class=\"option-button__content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { RadioButton } from './radio-button/radio-button';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ncim-radio-group',\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup implements ControlValueAccessor, AfterContentInit {\n private readonly cdr = inject(ChangeDetectorRef);\n\n private optionButtons = contentChildren(RadioButton);\n\n readonly name = input<string>(`ncim-radio-group-${nextUniqueId++}`);\n readonly disabled = input<boolean>(false);\n readonly valueChange = output<string>();\n\n private selectedValue = signal<string | undefined>(undefined);\n\n private onChange: (value: string) => void = noop;\n private onTouched: () => void = () => noop;\n\n ngAfterContentInit(): void {\n this.optionButtons()?.forEach(button => {\n (button.valueChange as unknown as { subscribe: (fn: (v: string) => void) => void }).subscribe((value: string) =>\n this.handleValueChange(value)\n );\n });\n\n this.syncChildrenState();\n }\n\n writeValue(value: string): void {\n this.selectedValue.set(value);\n this.syncChildrenState();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private handleValueChange(value: string): void {\n this.selectedValue.set(value);\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n this.syncChildrenState();\n }\n\n private syncChildrenState(): void {\n if (!this.optionButtons) {\n return;\n }\n\n const groupName = this.name();\n const currentValue = this.selectedValue();\n const isDisabled = this.disabled();\n this.optionButtons().forEach(button => {\n button.name.set?.(groupName);\n const isChecked = button.value() === currentValue;\n button.isChecked.set?.(isChecked);\n if (isDisabled) {\n button.isDisabled.set?.(true);\n }\n });\n\n this.cdr.markForCheck();\n }\n}\n","<ng-content></ng-content>\n","import { Component, input, computed, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { LanguageService } from '@libs/core/services';\n\n@Component({\n selector: 'ncim-progress-bar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBar {\n private readonly languageService = inject(LanguageService);\n\n /** Matches app language: Arabic → rtl (fill from the right), English → ltr (fill from the left). */\n readonly barDir = computed(() => (this.languageService.isRtl() ? 'rtl' : 'ltr'));\n\n readonly progress = input<number>(0);\n readonly max = input<number>(100);\n readonly color = input<string>('var(--color-primary)');\n readonly showLabel = input<boolean>(false);\n /** Rounded knob at the leading edge of the fill (design system default: on). */\n readonly showThumb = input<boolean>(true);\n\n readonly percentage = computed(() => {\n const maxValue = this.max();\n return maxValue > 0 ? Math.min(100, (this.progress() / maxValue) * 100) : 0;\n });\n\n readonly roundedPercentage = computed(() => Math.round(this.percentage()));\n}\n","<div\n class=\"progress-bar\"\n [attr.dir]=\"barDir()\"\n [attr.aria-valuenow]=\"progress()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max()\"\n role=\"progressbar\"\n>\n <div class=\"progress-bar__track\">\n <div class=\"progress-bar__fill\" [style.width.%]=\"percentage()\" [style.background]=\"color()\"></div>\n </div>\n @if (showThumb()) {\n <span\n class=\"progress-bar__thumb\"\n [style.--progress-bar-thumb-position]=\"percentage() + '%'\"\n [style.background]=\"color()\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (showLabel()) {\n <span class=\"progress-bar__label\">{{ roundedPercentage() }}%</span>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-circular-progress',\n imports: [TranslateModule],\n templateUrl: './circular-progress.html',\n styleUrl: './circular-progress.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CircularProgress {\n /** Current step (1-based). */\n readonly current = input<number>(1);\n /** Total steps. */\n readonly total = input<number>(4);\n /** Size in pixels. */\n readonly size = input<number>(48);\n /** Stroke width of the ring. */\n readonly strokeWidth = input<number>(4);\n /** Color of the progress segment. */\n readonly progressColor = input<string>('#1f2937');\n /** Color of the background ring. */\n readonly trackColor = input<string>('#e5e7eb');\n /** Custom label (e.g. \"1 من 4\"). If not set, uses current/total. */\n readonly label = input<string>('');\n\n readonly percentage = computed(() => {\n const c = this.current();\n const t = this.total();\n return t > 0 ? Math.min(100, (c / t) * 100) : 0;\n });\n\n readonly displayLabel = computed(() => this.label() || '');\n\n /** Translation params for COMMON.STEP_OF. */\n readonly stepOfParams = computed(() => ({\n current: this.current(),\n total: this.total(),\n }));\n\n /** SVG circle circumference for stroke-dasharray. */\n readonly circumference = computed(() => {\n const r = (this.size() - this.strokeWidth()) / 2;\n return 2 * Math.PI * r;\n });\n\n readonly strokeDashOffset = computed(() => {\n const pct = this.percentage() / 100;\n return this.circumference() * (1 - pct);\n });\n\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly viewBox = computed(() => `0 0 ${this.size()} ${this.size()}`);\n readonly center = computed(() => this.size() / 2);\n\n /** Label font size scales with circle size for readability. */\n readonly labelFontSize = computed(() => Math.max(10, Math.round(this.size() * 0.22)));\n}\n","<div\n class=\"circular-progress\"\n [style.width.px]=\"size()\"\n [style.height.px]=\"size()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"current()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"total()\"\n [attr.aria-label]=\"displayLabel()\"\n>\n <svg class=\"circular-progress__svg\" [attr.viewBox]=\"viewBox()\" [attr.width]=\"size()\" [attr.height]=\"size()\">\n <!-- Background track -->\n <circle\n class=\"circular-progress__track\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"trackColor()\"\n fill=\"none\"\n />\n <!-- Progress segment (clockwise from top) -->\n <circle\n class=\"circular-progress__fill\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"progressColor()\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"strokeDashOffset()\"\n [attr.transform]=\"'rotate(-90 ' + center() + ' ' + center() + ')'\"\n />\n </svg>\n <span class=\"circular-progress__label\" [style.font-size.px]=\"labelFontSize()\">\n @if (label()) {\n {{ displayLabel() }}\n } @else {\n {{ 'COMMON.STEP_OF' | translate: stepOfParams() }}\n }\n </span>\n</div>\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Injector, inject, afterNextRender } from '@angular/core';\n\nconst INKBAR_SELECTOR = '.p-tablist-active-bar';\nconst TABLIST_SELECTOR = '.p-tablist-tab-list';\n\n/**\n * Fixes PrimeNG tabs active bar (inkbar) positioning in RTL.\n * PrimeNG uses `left` which misaligns in RTL; we recalculate using `inset-inline-start`.\n */\n@Directive({\n selector: '[ncimTabsInkbarRtl]',\n host: {},\n})\nexport class TabsInkbarRtlDirective implements AfterViewInit {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n ngAfterViewInit(): void {\n afterNextRender(\n () => {\n this.setupInkbarSync();\n },\n { injector: this.injector }\n );\n }\n\n private setupInkbarSync(): void {\n const host = this.el.nativeElement as HTMLElement;\n const sync = (): void => {\n const inkbar = host.querySelector(INKBAR_SELECTOR) as HTMLElement | null;\n const tablist = host.querySelector(TABLIST_SELECTOR) as HTMLElement | null;\n if (!inkbar || !tablist || !this.isRtl()) {\n return;\n }\n\n const left = parseFloat(inkbar.style.left);\n const width = parseFloat(inkbar.style.width) || inkbar.offsetWidth;\n if (Number.isNaN(left)) {\n return;\n }\n\n const containerWidth = tablist.offsetWidth;\n // In RTL, inset-inline-start is from the right; recalc so bar aligns under the tab\n const insetInlineStart = containerWidth - left - width;\n inkbar.style.left = '';\n inkbar.style.right = '';\n inkbar.style.insetInlineStart = `${insetInlineStart}px`;\n inkbar.style.insetInlineEnd = 'auto';\n };\n\n // Sync when inkbar appears or updates\n const observer = new MutationObserver(() => {\n sync();\n });\n\n const observe = (): void => {\n const inkbar = host.querySelector(INKBAR_SELECTOR);\n if (inkbar) {\n observer.observe(inkbar, { attributes: true, attributeFilter: ['style'] });\n sync();\n }\n };\n\n // Initial observe - inkbar may not exist yet\n const checkInterval = setInterval(() => {\n const inkbar = host.querySelector(INKBAR_SELECTOR);\n if (inkbar) {\n clearInterval(checkInterval);\n observe();\n }\n }, 50);\n\n // Stop checking after 2s and cleanup observer on destroy\n setTimeout(() => clearInterval(checkInterval), 2000);\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n\n private isRtl(): boolean {\n const el = this.el.nativeElement as HTMLElement;\n return (\n document.documentElement.dir === 'rtl' ||\n document.documentElement.getAttribute('lang') === 'ar' ||\n getComputedStyle(el).direction === 'rtl'\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, input, linkedSignal, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Tab as PrimeTab, TabList as PrimeTabList, Tabs as PrimeTabs } from 'primeng/tabs';\nimport { TabsInkbarRtlDirective } from './tabs-inkbar-rtl.directive';\n\nexport interface TabItem {\n id: string;\n label: string;\n disabled?: boolean;\n icon?: string;\n badge?: string | number;\n}\n\n@Component({\n selector: 'ncim-tabs',\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslatePipe, PrimeTabs, PrimeTabList, PrimeTab],\n hostDirectives: [TabsInkbarRtlDirective],\n})\nexport class Tabs {\n readonly items = input.required<TabItem[]>();\n readonly activeId = input<string>('');\n readonly variant = input<'default' | 'pills' | 'underline'>('default');\n readonly size = input<'small' | 'medium' | 'large'>('medium');\n readonly justify = input<'start' | 'center' | 'end' | 'between'>('between');\n readonly tabChange = output<string>();\n readonly underlineStyle = input<'full' | 'text'>('full');\n\n protected readonly activeValue = linkedSignal<string | number | undefined>(() => this.activeId() || undefined);\n\n protected onValueChange(value: string | number | undefined): void {\n if (value !== undefined) {\n this.tabChange.emit(String(value));\n }\n }\n}\n","<div\n class=\"tabs\"\n [class.tabs--default]=\"variant() === 'default'\"\n [class.tabs--pills]=\"variant() === 'pills'\"\n [class.tabs--underline]=\"variant() === 'underline'\"\n [class.tabs--small]=\"size() === 'small'\"\n [class.tabs--medium]=\"size() === 'medium'\"\n [class.tabs--large]=\"size() === 'large'\"\n [class.tabs--justify-start]=\"justify() === 'start'\"\n [class.tabs--justify-center]=\"justify() === 'center'\"\n [class.tabs--justify-end]=\"justify() === 'end'\"\n [class.tabs--justify-between]=\"justify() === 'between'\"\n [class.tabs--underline-text]=\"underlineStyle() === 'text'\"\n>\n <p-tabs [(value)]=\"activeValue\" (valueChange)=\"onValueChange($event)\">\n <p-tablist>\n @for (tab of items(); track tab.id) {\n <p-tab [value]=\"tab.id\" [disabled]=\"tab.disabled ?? false\">\n @if (tab.icon) {\n <span class=\"tabs__tab-icon\">{{ tab.icon }}</span>\n }\n <span class=\"tabs__tab-label\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span class=\"tabs__tab-badge\">{{ tab.badge }}</span>\n }\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"tabs__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-tab-panel',\n templateUrl: './tab-panel.html',\n styleUrl: './tab-panel.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabPanel {\n readonly id = input.required<string>();\n readonly activeId = input<string>('');\n readonly title = input<string>('');\n\n readonly isActive = computed(() => this.activeId() === this.id());\n}\n","<div\n class=\"tab-panel\"\n [class.tab-panel--active]=\"isActive()\"\n [attr.id]=\"'tab-' + id()\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + id()\"\n [attr.aria-hidden]=\"!isActive()\"\n>\n @if (isActive()) {\n <ng-content></ng-content>\n }\n</div>\n","import { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport {\n Component,\n input,\n output,\n model,\n computed,\n inject,\n ChangeDetectionStrategy,\n effect,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FieldSize } from '../form-input/form-input.types';\nimport { SelectOption } from './select-option.interface';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\n\n@Component({\n selector: 'ncim-form-select',\n imports: [IconFieldModule, InputIconModule, Icon, SelectModule],\n templateUrl: './form-select.html',\n styleUrl: './form-select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormSelect implements ControlValueAccessor {\n private readonly translate = inject(TranslateService);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** Reference to the inner p-select (one is rendered at a time via @if icon). */\n private readonly pSelectRef = viewChild(Select);\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n // Sync value() to PrimeNG Select without using ngModel (avoids NG01203).\n effect(() => {\n const v = this.value() ?? '';\n this.pSelectRef()?.updateModel(v);\n });\n }\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n readonly value = model<string>('');\n readonly options = input<SelectOption[]>([]);\n readonly disabled = model<boolean>(false);\n readonly placeholder = input<string>('');\n readonly size = input<FieldSize>('medium');\n readonly appendToBody = input<boolean>(true);\n\n /** PrimeNG icon class e.g. 'pi pi-chevron-down'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the select. Defaults to 'end'. */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /**\n * Track active language as a signal so computed options re-evaluate on language change.\n * startWith ensures an initial value is emitted immediately.\n */\n private readonly currentLang = toSignal(\n this.translate.onLangChange.pipe(startWith({ lang: this.translate.currentLang })),\n { initialValue: { lang: this.translate.getCurrentLang() } }\n );\n\n /** PrimeNG size: 'small' | 'large' | undefined (medium maps to undefined) */\n protected readonly selectSize = computed<'small' | 'large' | undefined>(() => {\n const s = this.size();\n return s === 'medium' ? undefined : s;\n });\n\n /** Translated placeholder — re-evaluates when language changes */\n protected readonly translatedPlaceholder = computed(() => {\n this.currentLang(); // track language signal\n const ph = this.placeholder();\n return ph ? this.translate.instant(ph) : this.translate.instant('COMMON.CHOOSE');\n });\n\n protected readonly appendTarget = computed<'body' | 'self'>(() => (this.appendToBody() ? 'body' : 'self'));\n\n /** Translated options + placeholder as first item — re-evaluates when language changes */\n protected readonly optionsWithPlaceholder = computed<SelectOption[]>(() => {\n this.currentLang(); // track language signal\n const translated = this.options().map(opt => ({\n value: opt.value,\n label: this.translate.instant(opt.label),\n disabled: opt.disabled ?? false,\n }));\n return [{ value: '', label: this.translatedPlaceholder(), disabled: true }, ...translated];\n });\n\n readonly valueChange = output<string>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onValueChange(val: string | null | undefined): void {\n const next = val ?? '';\n this.value.set(next);\n this.valueChange.emit(next);\n this.onChange(next);\n this.onTouched();\n }\n\n writeValue(value: string | null | undefined): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-select\n class=\"form-select\"\n [options]=\"optionsWithPlaceholder()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n [appendTo]=\"appendTarget()\"\n fluid\n />\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n <p-select\n class=\"form-select\"\n [options]=\"optionsWithPlaceholder()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n fluid\n [appendTo]=\"appendTarget()\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, linkedSignal, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport type { SelectOption } from '../form-select/select-option.interface';\nimport type { FieldSize } from '../form-input/form-input.types';\n\n@Component({\n selector: 'ncim-form-multi-select',\n imports: [IconFieldModule, InputIconModule, Icon, FormsModule, MultiSelectModule],\n templateUrl: './form-multi-select.html',\n styleUrl: './form-multi-select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormMultiSelect {\n private readonly translate = inject(TranslateService);\n\n readonly value = input<string[]>([]);\n readonly options = input<SelectOption[]>([]);\n readonly disabled = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly size = input<FieldSize>('medium');\n readonly filter = input<boolean>(true);\n readonly showSelectAll = input<boolean>(false);\n /** 'comma' = no chips, selections shown as text; checkmarks only in dropdown */\n readonly display = input<'comma' | 'chip'>('comma');\n readonly maxSelectedLabels = input<number>(3);\n\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('end');\n\n private readonly currentLang = toSignal(\n this.translate.onLangChange.pipe(startWith({ lang: this.translate.currentLang })),\n { initialValue: { lang: this.translate.getCurrentLang() } }\n );\n\n protected readonly selectSize = computed<'small' | 'large' | undefined>(() => {\n const s = this.size();\n return s === 'medium' ? undefined : s;\n });\n\n protected readonly selectedValues = linkedSignal(() => this.value() ?? []);\n\n protected readonly translatedPlaceholder = computed(() => {\n this.currentLang();\n const ph = this.placeholder();\n return ph ? this.translate.instant(ph) : this.translate.instant('COMMON.CHOOSE');\n });\n\n protected readonly translatedOptions = computed<SelectOption[]>(() => {\n this.currentLang();\n return this.options().map(opt => ({\n value: opt.value,\n label: this.translate.instant(opt.label),\n }));\n });\n\n readonly valueChange = output<string[]>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onValueChange(val: string[] | null | undefined): void {\n const next = val ?? [];\n this.selectedValues.set(next);\n this.valueChange.emit(next);\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-multiSelect\n class=\"form-multi-select\"\n [options]=\"translatedOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n [filter]=\"filter()\"\n [showToggleAll]=\"showSelectAll()\"\n [display]=\"display()\"\n [maxSelectedLabels]=\"maxSelectedLabels()\"\n [ngModel]=\"selectedValues()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n appendTo=\"body\"\n fluid\n />\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n <p-multiSelect\n class=\"form-multi-select\"\n [options]=\"translatedOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n [filter]=\"filter()\"\n [display]=\"display()\"\n [maxSelectedLabels]=\"maxSelectedLabels()\"\n [ngModel]=\"selectedValues()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n fluid\n appendTo=\"body\"\n />\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport {\n ArabicOnlyDirective,\n EnglishOnlyDirective,\n NumbersOnlyDirective,\n PhoneOnlyDirective,\n TrimInputDirective,\n} from '@libs/core/directives';\nimport { FieldSize, InputFilter, RestrictInput } from '../form-input/form-input.types';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nconst NON_DIGITS = /\\D/g;\nconst LEADING_SPACES = /^\\s+/;\nconst COMMAS = /,/g;\n\nconst INPUT_FILTERS: Record<NonNullable<InputFilter>, (value: string) => string> = {\n numeric: (value: string) => value.replace(NON_DIGITS, ''),\n phone: (value: string) => value.replace(NON_DIGITS, '').slice(0, VALIDATION_LENGTHS.MOBILE),\n noComma: (value: string) => value.replace(COMMAS, ''),\n};\n\n@Component({\n selector: 'ncim-form-text-field',\n imports: [\n IconFieldModule,\n InputIconModule,\n Icon,\n ArabicOnlyDirective,\n EnglishOnlyDirective,\n NumbersOnlyDirective,\n PhoneOnlyDirective,\n TrimInputDirective,\n ],\n templateUrl: './form-text-field.html',\n styleUrl: './form-text-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormTextField {\n readonly value = input<string>('');\n readonly type = input<string>('text');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly size = input<FieldSize>('medium');\n readonly inputMode = input<string | null>(null);\n readonly minLength = input<number | null>(null);\n readonly maxLength = input<number | null>(VALIDATION_LENGTHS.MAX_LENGTH_255);\n readonly hasToggle = input<boolean>(false);\n readonly autocomplete = input<string>('off');\n readonly filter = input<InputFilter>(null);\n readonly restrictInput = input<RestrictInput>(null);\n\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n readonly valueChange = output<string>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.stripLeadingSpaces(inputEl);\n const value = this.applyFilter(inputEl);\n this.valueChange.emit(value);\n }\n\n onPaste(event: ClipboardEvent): void {\n const activeFilter = this.filter();\n if (!activeFilter) {\n return;\n }\n\n event.preventDefault();\n const inputEl = event.target as HTMLInputElement;\n const pasted = event.clipboardData?.getData('text') ?? '';\n const filterFn = INPUT_FILTERS[activeFilter];\n\n const before = inputEl.value.slice(0, inputEl.selectionStart ?? 0);\n const after = inputEl.value.slice(inputEl.selectionEnd ?? 0);\n const merged = filterFn(before + pasted + after);\n const nextCursor = filterFn(before + pasted).length;\n\n inputEl.value = merged;\n inputEl.setSelectionRange(nextCursor, nextCursor);\n this.valueChange.emit(merged);\n }\n\n private stripLeadingSpaces(inputEl: HTMLInputElement): void {\n const stripped = inputEl.value.replace(LEADING_SPACES, '');\n if (stripped !== inputEl.value) {\n inputEl.value = stripped;\n }\n }\n\n private applyFilter(inputEl: HTMLInputElement): string {\n const activeFilter = this.filter();\n if (!activeFilter) {\n return inputEl.value;\n }\n\n const filterFn = INPUT_FILTERS[activeFilter];\n const filtered = filterFn(inputEl.value);\n\n if (filtered !== inputEl.value) {\n const cursorPos = inputEl.selectionStart ?? 0;\n const filteredBeforeCursor = filterFn(inputEl.value.slice(0, cursorPos));\n inputEl.value = filtered;\n const nextCursor = Math.min(filteredBeforeCursor.length, filtered.length);\n inputEl.setSelectionRange(nextCursor, nextCursor);\n }\n\n return filtered;\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (icon() && iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n @switch (restrictInput()) {\n @case ('arabicOnly') {\n <input\n ncimArabicOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('englishOnly') {\n <input\n ncimEnglishOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('numbersOnly') {\n <input\n ncimNumbersOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('phoneOnly') {\n <input\n ncimPhoneOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('trimInput') {\n <input\n ncimTrimInput\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @default {\n <input\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n }\n\n @if (icon() && iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n @switch (restrictInput()) {\n @case ('arabicOnly') {\n <input\n ncimArabicOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('englishOnly') {\n <input\n ncimEnglishOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('numbersOnly') {\n <input\n ncimNumbersOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('phoneOnly') {\n <input\n ncimPhoneOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('trimInput') {\n <input\n ncimTrimInput\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @default {\n <input\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n }\n}\n","import { Component, input, output, viewChild, computed, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DatePicker, DatePickerModule } from 'primeng/datepicker';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { IconFieldModule } from 'primeng/iconfield';\n\n@Component({\n selector: 'ncim-form-date-picker',\n imports: [FormsModule, DatePickerModule, Icon, InputIconModule, IconFieldModule],\n templateUrl: './form-date-picker.html',\n styleUrl: './form-date-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormDatePicker {\n private readonly datePicker = viewChild.required<DatePicker>('datePicker');\n private readonly typedDraft = signal<string | null>(null);\n\n readonly value = input<string>('');\n readonly rangeValue = input<string[]>([]);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly dateFormat = input<string>('dd/mm/yy');\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n /**\n * Where to attach the calendar overlay. Use `'body'` inside modals/scroll containers to avoid clipping.\n * Matches PrimeNG `p-datepicker` `appendTo` (e.g. `'body'`, `'self'`, or an `HTMLElement`).\n */\n readonly appendTo = input<HTMLElement | 'body' | 'self' | null | undefined>(undefined);\n readonly selectionMode = input<'single' | 'multiple' | 'range' | undefined>('single');\n readonly showDropdownIcon = input<boolean>(false);\n\n readonly valueChange = output<string>();\n readonly rangeValueChange = output<string[]>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Resolved ngModel value — string[] for range mode, string for single */\n readonly calendarModel = computed<string | string[]>(() =>\n this.selectionMode() === 'range' ? this.rangeValue() : (this.typedDraft() ?? this.value())\n );\n\n handleChange(value: string | string[] | Date | Date[] | null | undefined): void {\n if (this.selectionMode() === 'range') {\n if (value == null) {\n return;\n }\n const normalizedRange = Array.isArray(value)\n ? value.map(item => this.toDateString(item)).filter(item => !!item)\n : [this.toDateString(value)].filter(item => !!item);\n // PrimeNG emits a plain string when only the first date is picked in range mode.\n // Wrap it so rangeValueChange always fires and the parent model stays in sync.\n this.rangeValueChange.emit([normalizedRange[0] ?? '', normalizedRange[1] ?? '']);\n } else {\n if (value == null) {\n return;\n }\n\n const resolvedValue = this.toDateString(Array.isArray(value) ? (value[0] ?? '') : value);\n if (!this.isStrictValidDateInput(resolvedValue)) {\n return;\n }\n this.typedDraft.set(null);\n this.valueChange.emit(resolvedValue);\n }\n }\n\n onInput(event: Event): void {\n if (this.selectionMode() === 'range') {\n return;\n }\n let rawValue = this.extractInputValue(event);\n if (rawValue === null) {\n return;\n }\n\n const previousDraft = this.typedDraft() ?? this.value();\n const isManualSlashInput = event instanceof InputEvent && event.inputType === 'insertText' && event.data === '/';\n if (isManualSlashInput && previousDraft) {\n const base = previousDraft.replace(/\\/+$/, '');\n if (!rawValue || rawValue === '/' || rawValue === base) {\n rawValue = `${base}/`;\n }\n }\n\n const typedValue = this.normalizeTypedDate(rawValue);\n this.typedDraft.set(typedValue);\n this.updateInputElementValue(event, typedValue);\n if (!typedValue) {\n this.typedDraft.set(null);\n this.valueChange.emit('');\n return;\n }\n\n if (this.isStrictValidDateInput(typedValue)) {\n this.typedDraft.set(null);\n this.valueChange.emit(typedValue);\n }\n\n const isPasteEvent = event instanceof InputEvent && event.inputType === 'insertFromPaste';\n if (isPasteEvent && this.isStrictValidDateInput(typedValue)) {\n this.closeOverlay();\n }\n }\n\n onBlur(): void {\n if (this.selectionMode() !== 'range') {\n const inputEl = this.datePicker().inputfieldViewChild?.nativeElement as HTMLInputElement | undefined;\n const typedValue = this.normalizeTypedDate(inputEl?.value ?? '');\n if (inputEl && inputEl.value !== typedValue) {\n inputEl.value = typedValue;\n }\n if (!typedValue) {\n this.typedDraft.set(null);\n this.valueChange.emit('');\n } else if (this.isStrictValidDateInput(typedValue)) {\n this.typedDraft.set(null);\n this.valueChange.emit(typedValue);\n }\n }\n this.blurEvent.emit();\n }\n\n openCalendar(): void {\n this.datePicker().toggle();\n }\n\n private extractInputValue(event: Event): string | null {\n const target = event.target as HTMLInputElement | null;\n if (target && typeof target.value === 'string') {\n return target.value;\n }\n const inputEl = this.datePicker().inputfieldViewChild?.nativeElement as HTMLInputElement | undefined;\n return inputEl?.value ?? null;\n }\n\n private normalizeTypedDate(raw: string): string {\n if (!raw) {\n return '';\n }\n\n if (raw.includes('/')) {\n const [dayPart = '', monthPart = '', yearPart = ''] = raw.split('/').slice(0, 3);\n const day = this.normalizeDayOrMonthPart(dayPart, 31);\n const month = this.normalizeMonthWithSingleDigitSupport(monthPart);\n const year = yearPart.replace(/\\D/g, '').slice(0, 4);\n const separatorCount = (raw.match(/\\//g) ?? []).length;\n let normalized = day;\n\n if (separatorCount >= 1 || month) {\n normalized += `/${month}`;\n }\n if (separatorCount >= 2 || year) {\n normalized += `/${year}`;\n }\n\n return normalized;\n }\n\n const digitsOnly = raw.replace(/\\D/g, '').slice(0, 8);\n if (!digitsOnly) {\n return '';\n }\n\n const day = this.normalizeDayOrMonthPart(digitsOnly.slice(0, 2), 31);\n const monthStartDigit = digitsOnly.slice(2, 3);\n const autoPadSingleDigitMonth = monthStartDigit !== '' && Number(monthStartDigit) > 1;\n const month = autoPadSingleDigitMonth\n ? `0${monthStartDigit}`\n : this.normalizeDayOrMonthPart(digitsOnly.slice(2, 4), 12);\n const year = autoPadSingleDigitMonth ? digitsOnly.slice(3, 7) : digitsOnly.slice(4, 8);\n\n return [day, month, year].filter(Boolean).join('/');\n }\n\n private updateInputElementValue(event: Event, value: string): void {\n const target = event.target as HTMLInputElement | null;\n if (target && target.value !== value) {\n target.value = value;\n }\n }\n\n private toDateString(value: string | Date): string {\n if (typeof value === 'string') {\n return this.normalizeTypedDate(value);\n }\n return this.formatDate(value);\n }\n\n private formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = String(date.getFullYear());\n return `${day}/${month}/${year}`;\n }\n\n private normalizeDayOrMonthPart(value: string, maxValue: number): string {\n const digits = value.replace(/\\D/g, '').slice(0, 2);\n if (!digits) {\n return '';\n }\n if (digits.length < 2) {\n return digits;\n }\n const bounded = Math.min(Number(digits), maxValue);\n return String(bounded).padStart(2, '0');\n }\n\n private normalizeMonthWithSingleDigitSupport(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 2);\n if (!digits) {\n return '';\n }\n if (digits.length === 1) {\n return Number(digits) > 1 ? `0${digits}` : digits;\n }\n const bounded = Math.min(Number(digits), 12);\n return String(bounded).padStart(2, '0');\n }\n\n private isStrictValidDateInput(raw: string): boolean {\n const value = raw.trim();\n const dmy = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(value);\n if (!dmy) {\n return false;\n }\n\n const day = Number(dmy[1]);\n const month = Number(dmy[2]);\n let year = Number(dmy[3]);\n\n if (dmy[3].length === 2) {\n year = year <= 29 ? 2000 + year : 1900 + year;\n }\n\n if (month < 1 || month > 12 || day < 1 || day > 31) {\n return false;\n }\n\n const candidate = new Date(year, month - 1, day);\n if (candidate.getFullYear() !== year || candidate.getMonth() !== month - 1 || candidate.getDate() !== day) {\n return false;\n }\n\n const min = this.minDate();\n if (min) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate()).getTime();\n if (candidate.getTime() < minStart) {\n return false;\n }\n }\n\n const max = this.maxDate();\n if (max) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate(), 23, 59, 59, 999).getTime();\n if (candidate.getTime() > maxEnd) {\n return false;\n }\n }\n\n return true;\n }\n\n private closeOverlay(): void {\n const picker = this.datePicker() as DatePicker & {\n hideOverlay?: () => void;\n overlayVisible?: boolean;\n };\n picker.hideOverlay?.();\n }\n}\n","<div class=\"date-picker\" [class.date-picker--dropdown]=\"showDropdownIcon()\">\n @if (icon()) {\n <p-iconfield>\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-datepicker\n #datePicker\n class=\"date-picker__field\"\n styleClass=\"date-picker__primeng\"\n inputStyleClass=\"date-picker__input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [dataType]=\"'string'\"\n [dateFormat]=\"dateFormat()\"\n [keepInvalid]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"appendTo()\"\n [ngModel]=\"$any(calendarModel())\"\n [selectionMode]=\"selectionMode()\"\n (onSelect)=\"handleChange($event)\"\n (onInput)=\"onInput($event)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"onBlur()\"\n ></p-datepicker>\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n @if (showDropdownIcon()) {\n <!-- <p-inputicon class=\"chevron-down\">\n <ncim-icon [name]=\"'chevron-down'\" [size]=\"25\" />\n </p-inputicon> -->\n }\n </p-iconfield>\n } @else {\n <p-datepicker\n #datePicker\n class=\"date-picker__field\"\n styleClass=\"date-picker__primeng\"\n inputStyleClass=\"date-picker__input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [dataType]=\"'string'\"\n [dateFormat]=\"dateFormat()\"\n [keepInvalid]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"appendTo()\"\n [ngModel]=\"$any(calendarModel())\"\n [selectionMode]=\"selectionMode()\"\n (onSelect)=\"handleChange($event)\"\n (onInput)=\"onInput($event)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"onBlur()\"\n ></p-datepicker>\n }\n</div>\n","import { Component, input, model, signal, computed, ChangeDetectionStrategy, AfterViewInit } from '@angular/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { INPUT_TYPES, InputType } from '@libs/core/enums';\nimport { FormTextField } from '../../molecules/form-text-field/form-text-field';\nimport { FieldSize } from '../../molecules/form-input/form-input.types';\n\nexport interface FieldOption {\n label: string;\n value: string;\n count?: number;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ncim-form-checkbox-radio',\n imports: [CheckboxModule, RadioButtonModule, FormsModule, TranslatePipe, FormTextField],\n templateUrl: './form-checkbox-radio.html',\n styleUrl: './form-checkbox-radio.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormCheckboxRadio implements AfterViewInit {\n // ── Inputs ────────────────────────────────────────────────────────────────\n\n readonly type = input.required<InputType>();\n readonly options = input<FieldOption[]>([]);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly layout = input<'vertical' | 'horizontal'>('vertical');\n readonly size = input<FieldSize>('medium');\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Required for radio groups so the browser groups the inputs correctly */\n readonly name = input<string>(`field-${Math.random().toString(36).slice(2, 8)}`);\n\n // ── Value models ──────────────────────────────────────────────────────────\n\n /** radio: single selected value */\n readonly value = model<string>('');\n\n /** checkbox / checkbox-search: array of selected values */\n readonly multiValue = model<string[]>([]);\n\n // ── Internal ──────────────────────────────────────────────────────────────\n\n readonly searchQuery = signal('');\n\n // ── Computed ──────────────────────────────────────────────────────────────\n\n readonly isRadio = computed(() => this.type() === INPUT_TYPES.RADIO);\n readonly isCheckboxSearch = computed(() => this.type() === INPUT_TYPES.CHECKBOX_SEARCH);\n\n readonly filteredOptions = computed(() => {\n if (!this.isCheckboxSearch()) {\n return this.options();\n }\n const q = this.searchQuery().trim().toLowerCase();\n if (!q) {\n return this.options();\n }\n return this.options().filter(o => o.label.toLowerCase().includes(q));\n });\n\n // ── Event handlers ────────────────────────────────────────────────────────\n\n onSearchInput(value: string): void {\n this.searchQuery.set(value);\n }\n\n onCheckboxChange(selected: string[]): void {\n this.multiValue.set(selected);\n }\n\n onRadioChange(selected: string): void {\n this.value.set(selected);\n }\n\n ngAfterViewInit(): void {\n // Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n // Add 'implements AfterViewInit' to the class.\n console.warn(this.type());\n }\n}\n","@if (isCheckboxSearch()) {\n <!-- Wrap in the same bordered wrapper form-input uses so border + icon appear -->\n <div class=\"form-input__wrapper fcr__search-wrapper\">\n <ncim-form-text-field\n type=\"text\"\n [value]=\"searchQuery()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onSearchInput($event)\"\n />\n </div>\n}\n\n@if (isRadio()) {\n <!-- ── Radio group ────────────────────────────────────────────────────── -->\n <ul class=\"fcr__list\" [class.fcr__list--horizontal]=\"layout() === 'horizontal'\" role=\"radiogroup\">\n @for (option of options(); track option.value) {\n <li class=\"fcr__item\">\n <p-radiobutton\n [value]=\"option.value\"\n [name]=\"name()\"\n [ngModel]=\"value()\"\n [disabled]=\"disabled() || !!option.disabled\"\n [inputId]=\"name() + '-' + option.value\"\n (ngModelChange)=\"onRadioChange($event)\"\n />\n <label [for]=\"name() + '-' + option.value\" class=\"fcr__label\">\n <span class=\"fcr__label-text\">{{ option.label }}</span>\n @if (option.count && option.count !== null) {\n <span class=\"fcr__count\">({{ option.count }})</span>\n }\n </label>\n </li>\n }\n </ul>\n} @else {\n <!-- ── Checkbox group (plain or with search filter) ──────────────────── -->\n <ul class=\"fcr__list\" [class.fcr__list--horizontal]=\"layout() === 'horizontal'\">\n @for (option of filteredOptions(); track option.value) {\n <li class=\"fcr__item\">\n <p-checkbox\n [value]=\"option.value\"\n [ngModel]=\"multiValue()\"\n [disabled]=\"disabled() || !!option.disabled\"\n [inputId]=\"name() + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange($event)\"\n />\n <label [for]=\"name() + '-' + option.value\" class=\"fcr__label\">\n <span class=\"fcr__label-text\">{{ option.label }}</span>\n @if (option.count !== null) {\n <span class=\"fcr__count\">({{ option.count }})</span>\n }\n </label>\n </li>\n }\n\n @if (isCheckboxSearch() && filteredOptions().length === 0) {\n <li class=\"fcr__empty\">{{ 'FILTER.NO_RESULTS' | translate }}</li>\n }\n </ul>\n}\n","import {\n Component,\n input,\n model,\n signal,\n inject,\n computed,\n ChangeDetectionStrategy,\n DestroyRef,\n afterNextRender,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { type InputType, INPUT_TYPES } from '@libs/core/enums';\nimport { ERROR_KEYS, VALIDATION_LENGTHS, PHONE_CONFIG } from '@libs/core/constants';\nimport { FormError } from '@libs/ui-components/shared/atoms/form-error/form-error';\nimport { FormLabel } from '@libs/ui-components/shared/atoms/form-label/form-label';\nimport { FormPasswordToggle } from '@libs/ui-components/shared/atoms/form-password-toggle/form-password-toggle';\nimport { FormSelect } from '../form-select/form-select';\nimport { FormMultiSelect } from '../form-multi-select/form-multi-select';\nimport { SelectOption } from '../form-select/select-option.interface';\nimport { FormTextField } from '../form-text-field/form-text-field';\nimport { FormDatePicker } from '../form-date-picker/form-date-picker';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { FormCheckboxRadio } from '../../atoms/form-checkbox-radio/form-checkbox-radio';\nimport { FieldSize, InputFilter, RestrictInput } from './form-input.types';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport type { SelectOption };\n\n@Component({\n selector: 'ncim-form-input',\n imports: [\n FormError,\n FormLabel,\n FormPasswordToggle,\n FormSelect,\n FormMultiSelect,\n FormTextField,\n FormDatePicker,\n Icon,\n FormCheckboxRadio,\n TranslatePipe,\n ],\n templateUrl: './form-input.html',\n styleUrl: './form-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormInput implements ControlValueAccessor {\n readonly phoneConfig = PHONE_CONFIG;\n\n readonly label = input<string>('');\n readonly subText = input<string>('');\n readonly placeholder = input<string>('');\n readonly type = input<InputType>(INPUT_TYPES.TEXT);\n readonly size = input<FieldSize>('medium');\n readonly submitted = input<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n /** When true, date picker overlay is appended to `document.body` (avoids clipping inside popups/dialogs). */\n readonly dateAppendToBody = input<boolean>(false);\n readonly dateSelectionMode = input<'single' | 'multiple' | 'range' | undefined>(undefined);\n readonly dateShowDropdownIcon = input<boolean>(false);\n readonly dateFormat = input<string>('dd/mm/yy');\n readonly rows = input<number>(4);\n readonly layout = input<'vertical' | 'horizontal'>('vertical');\n readonly radioName = input<string>(`field-${Math.random().toString(36).slice(2, 8)}`);\n readonly selectShowFilter = input<boolean>(true);\n readonly selectAppendToBody = input<boolean>(true);\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input. Defaults to 'end'. */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Restricts input via core directives (arabicOnly, englishOnly, numbersOnly, phoneOnly, trimInput). */\n readonly restrictInput = input<RestrictInput>(null);\n\n /** Optional filter override for text input sanitization (e.g. 'noComma'). */\n readonly filterOverride = input<InputFilter>(null);\n\n /** Overrides the default maxlength on the HTML input element (does not affect validator logic). */\n readonly maxLengthOverride = input<number | null>(null);\n\n /** Per-field error message overrides: maps a validator error key to an i18n translation key.\n * Example: [errorMessages]=\"{ pattern: 'ENTITIES.ERRORS.INVALID_NATIONAL_NUMBER' }\" */\n readonly errorMessages = input<Record<string, string>>({});\n\n readonly value = model<string>('');\n readonly multiValue = model<string[]>([]);\n readonly showPassword = signal(false);\n readonly disabled = model<boolean>(false);\n readonly focused = signal(false);\n readonly touched = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** Incremented on control `statusChanges` so cross-field validators trigger `errorKey` re-evaluation. */\n private readonly errorVersion = signal(0);\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n afterNextRender(() => {\n const ctrl = this.ngControl?.control;\n if (ctrl) {\n ctrl.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.errorVersion.update(v => v + 1));\n }\n });\n }\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n readonly isPassword = computed(() => this.type() === INPUT_TYPES.PASSWORD);\n readonly isSelect = computed(() => this.type() === INPUT_TYPES.SELECT);\n readonly isMultiSelect = computed(() => this.type() === INPUT_TYPES.MULTISELECT);\n readonly isPhone = computed(() => this.type() === INPUT_TYPES.PHONE);\n readonly isDate = computed(() => this.type() === INPUT_TYPES.DATE);\n readonly isDateTime = computed(() => this.type() === INPUT_TYPES.DATETIME);\n readonly isDatePicker = computed(() => this.isDate() || this.isDateTime());\n\n readonly datePickerAppendTo = computed<HTMLElement | 'body' | 'self' | null | undefined>(() =>\n this.dateAppendToBody() ? 'body' : undefined\n );\n\n readonly isTextarea = computed(() => this.type() === INPUT_TYPES.TEXTAREA);\n readonly isCheckboxRadio = computed(\n () =>\n this.type() === INPUT_TYPES.CHECKBOX ||\n this.type() === INPUT_TYPES.RADIO ||\n this.type() === INPUT_TYPES.CHECKBOX_SEARCH\n );\n\n readonly maxLength = computed(() => {\n if (this.type() === INPUT_TYPES.NUMBER) {\n return VALIDATION_LENGTHS.MAX_LENGTH_10;\n }\n if (this.isPhone()) {\n return VALIDATION_LENGTHS.MOBILE;\n }\n return VALIDATION_LENGTHS.MAX_LENGTH_255;\n });\n\n readonly inputType = computed(() => {\n if (this.isPassword()) {\n return this.showPassword() ? 'text' : 'password';\n }\n if (this.isPhone()) {\n return 'tel';\n }\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'text';\n }\n if (this.type() === INPUT_TYPES.DATETIME) {\n return 'datetime-local';\n }\n return this.type();\n });\n\n readonly inputMode = computed(() => {\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'numeric';\n }\n if (this.isPhone()) {\n return 'tel';\n }\n return null;\n });\n\n readonly autocomplete = computed(() => (this.isPhone() ? 'tel' : 'off'));\n\n readonly inputFilter = computed(() => {\n const override = this.filterOverride();\n if (override) {\n return override;\n }\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'numeric';\n }\n if (this.isPhone()) {\n return 'phone';\n }\n return null;\n });\n\n private static readonly ERROR_MAP: Record<string, string> = {\n required: ERROR_KEYS.REQUIRED,\n email: ERROR_KEYS.INVALID_EMAIL,\n min: ERROR_KEYS.MIN_VALUE,\n max: ERROR_KEYS.MAX_VALUE,\n identityInvalid: ERROR_KEYS.IDENTITY_INVALID,\n idNumberInvalid: ERROR_KEYS.IDENTITY_INVALID,\n invalidEmail: ERROR_KEYS.INVALID_EMAIL,\n invalidPhone: ERROR_KEYS.INVALID_PHONE,\n invalidPhoneSa05: ERROR_KEYS.INVALID_PHONE_SA_05,\n invalidUrl: ERROR_KEYS.INVALID_URL,\n invalidIban: ERROR_KEYS.INVALID_IBAN,\n invalidCrNumber: ERROR_KEYS.INVALID_CR_NUMBER,\n invalidShortAddress: ERROR_KEYS.INVALID_SHORT_ADDRESS,\n passwordMismatch: ERROR_KEYS.PASSWORD_MISMATCH,\n confirmationMismatch: ERROR_KEYS.CONFIRMATION_MISMATCH,\n weakPassword: ERROR_KEYS.WEAK_PASSWORD,\n numbersOnly: ERROR_KEYS.NUMBERS_ONLY,\n lettersOnly: ERROR_KEYS.LETTERS_ONLY,\n arabicOnly: ERROR_KEYS.ARABIC_ONLY,\n englishOnly: ERROR_KEYS.ENGLISH_ONLY,\n alphanumericOnly: ERROR_KEYS.ALPHANUMERIC_ONLY,\n noWhitespace: ERROR_KEYS.WHITESPACE_ONLY,\n dateBeforeMin: ERROR_KEYS.DATE_BEFORE_MIN,\n dateAfterMax: ERROR_KEYS.DATE_AFTER_MAX,\n percentageExceedsTotal: ERROR_KEYS.PERCENTAGE_EXCEEDS_TOTAL,\n stageTakes100: ERROR_KEYS.STAGE_TAKES_100,\n totalLessThan100: ERROR_KEYS.TOTAL_LESS_THAN_100,\n };\n\n readonly errorKey = computed<string>(() => {\n this.value();\n this.errorVersion();\n\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n const errorNames = Object.keys(control.errors);\n const isNumber = this.type() === INPUT_TYPES.NUMBER;\n\n for (const errorName of errorNames) {\n if (this.errorMessages()[errorName]) {\n return this.errorMessages()[errorName];\n }\n if (errorName === 'minlength') {\n if (this.isPassword()) {\n return ERROR_KEYS.PASSWORD_MIN_LENGTH;\n }\n if (isNumber) {\n return ERROR_KEYS.IDENTITY_MIN_LENGTH;\n }\n return ERROR_KEYS.MIN_LENGTH;\n }\n if (errorName === 'maxlength') {\n return isNumber ? ERROR_KEYS.IDENTITY_MAX_LENGTH : ERROR_KEYS.MAX_LENGTH;\n }\n if (errorName === 'pattern') {\n return isNumber ? ERROR_KEYS.IDENTITY_INVALID : ERROR_KEYS.INVALID_FORMAT;\n }\n if (FormInput.ERROR_MAP[errorName]) {\n return FormInput.ERROR_MAP[errorName];\n }\n }\n\n return '';\n });\n\n readonly showError = computed<boolean>(\n () => !!this.errorKey() && ((this.touched() && !this.focused()) || this.submitted())\n );\n\n togglePassword(): void {\n this.showPassword.update(v => !v);\n }\n\n onInput(value: string): void {\n this.updateValue(value);\n }\n\n onDateChange(value: string): void {\n this.updateValue(value);\n }\n\n onSelectChange(value: string): void {\n this.updateValue(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onRadioChange(value: string): void {\n this.updateValue(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onCheckboxChange(value: string[]): void {\n this.multiValue.set(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onMultiSelectChange(value: string[]): void {\n this.multiValue.set(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n private updateValue(value: string): void {\n this.value.set(value);\n this.onChange(value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.touched.set(true);\n this.onTouched();\n }\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n this.touched.set(false);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<ncim-form-label [text]=\"label() | translate\" [subText]=\"subText() | translate\" />\n\n<div\n class=\"form-input__wrapper\"\n [class.form-input__wrapper]=\"!isCheckboxRadio()\"\n [class.test]=\"!isCheckboxRadio()\"\n [class.form-input__wrapper--focused]=\"focused()\"\n [class.form-input__wrapper--disabled]=\"disabled()\"\n [class.form-input__wrapper--error]=\"showError()\"\n [class.form-input__wrapper--has-toggle]=\"isPassword()\"\n [class.form-input__wrapper--textarea]=\"isTextarea()\"\n [class.is-ltr]=\"isPhone()\"\n [class.form-input__wrapper--small]=\"size() === 'small'\"\n [class.form-input__wrapper--medium]=\"size() === 'medium'\"\n [class.form-input__wrapper--large]=\"size() === 'large'\"\n [class.form-input__wrapper--borderless]=\"isCheckboxRadio()\"\n>\n @if (isSelect()) {\n <ncim-form-select\n [value]=\"value()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [appendToBody]=\"selectAppendToBody()\"\n />\n } @else if (isMultiSelect()) {\n <ncim-form-multi-select\n [value]=\"multiValue()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onMultiSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [filter]=\"selectShowFilter()\"\n />\n } @else if (isDatePicker()) {\n <ncim-form-date-picker\n [value]=\"value()\"\n [rangeValue]=\"multiValue()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"datePickerAppendTo()\"\n [selectionMode]=\"dateSelectionMode() ?? 'single'\"\n [dateFormat]=\"dateFormat()\"\n (valueChange)=\"onDateChange($event)\"\n (rangeValueChange)=\"onMultiSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n [showDropdownIcon]=\"dateShowDropdownIcon()\"\n />\n } @else if (isTextarea()) {\n <textarea\n class=\"form-input__textarea\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxLength()\"\n (input)=\"onInput($any($event).target.value)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else if (isCheckboxRadio()) {\n <ncim-form-checkbox-radio\n [type]=\"type()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [layout]=\"layout()\"\n [name]=\"radioName()\"\n [value]=\"value()\"\n [multiValue]=\"multiValue()\"\n (valueChange)=\"onRadioChange($event)\"\n (multiValueChange)=\"onCheckboxChange($event)\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n />\n } @else {\n @if (isPhone()) {\n <div class=\"form-input__countrycode\" aria-hidden=\"true\">\n <ncim-icon [name]=\"phoneConfig.FLAG_ICON\" [size]=\"18\" />\n <span>{{ phoneConfig.COUNTRY_CODE }}</span>\n </div>\n }\n\n <ncim-form-text-field\n [type]=\"inputType()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [inputMode]=\"inputMode()\"\n [maxLength]=\"maxLength()\"\n [hasToggle]=\"isPassword()\"\n [autocomplete]=\"autocomplete()\"\n [filter]=\"inputFilter()\"\n [restrictInput]=\"restrictInput()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onInput($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n />\n }\n\n @if (isPassword()) {\n <ncim-form-password-toggle [showPassword]=\"showPassword()\" (togglePassword)=\"togglePassword()\" />\n }\n</div>\n\n<ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n","import {\n Component,\n input,\n output,\n computed,\n effect,\n linkedSignal,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { QuickFilterBar } from '@libs/ui-components/shared/molecules/quick-filter-bar/quick-filter-bar';\nimport type { QuickFilterTag } from '@libs/ui-components/shared/molecules/quick-filter-bar/quick-filter-bar.models';\nimport { INPUT_TYPES, type InputType } from '@libs/core/enums';\nimport { FilterFieldConfig, FilterFieldType, FilterFormConfig } from './filter-field-config.interface';\nexport type { FilterFieldConfig, FilterFieldType, FilterFormConfig } from './filter-field-config.interface';\n\ntype FieldValue = any | string | string[];\ntype FilterValues = Record<string, FieldValue>;\nconst MULTI_TYPES = new Set<string>(['checkbox', 'checkbox-search', 'multiselect', 'date-range']);\n\n@Component({\n selector: 'ncim-filter-form',\n imports: [FormInput, QuickFilterBar, TranslatePipe],\n templateUrl: './filter-form.html',\n styleUrl: './filter-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterForm implements OnDestroy {\n readonly config = input.required<FilterFormConfig>();\n readonly quickFilterTitle = input<string>('');\n readonly quickFilterCounter = input<number>(0);\n\n readonly filterChange = output<FilterValues>();\n readonly filterSubmit = output<FilterValues>();\n readonly filterReset = output<void>();\n readonly saveFilterClick = output<void>();\n\n readonly model = linkedSignal<FilterValues>(() =>\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig): [string, FieldValue] => [f.key, this.defaultFor(f)])\n )\n );\n\n readonly showReset = computed(() => this.config().showReset ?? true);\n readonly showSubmit = computed(() => this.config().showSubmit ?? false);\n readonly showQuickFilterBar = computed(() => this.config().showQuickFilterBar ?? false);\n readonly showSaveFilter = computed(() => this.config().showSaveFilter ?? true);\n readonly showClearAll = computed(() => this.config().showClearAll ?? true);\n readonly showRemoveOnTag = computed(() => this.config().showRemoveOnTag ?? false);\n readonly quickFilterTagGap = computed(() => this.config().quickFilterTagGap ?? '');\n readonly quickFilterRowJustify = computed(() => this.config().quickFilterRowJustify ?? 'space-between');\n readonly showDivider = computed(() => this.config().showDivider ?? false);\n\n readonly gridTemplateColumns = computed(() => {\n const cfg = this.config();\n if (cfg.columns != null) {\n return `repeat(${cfg.columns}, minmax(0, 1fr))`;\n }\n return cfg.fields.map(f => f.width ?? '1fr').join(' ');\n });\n\n readonly hasActiveFilters = computed(() =>\n Object.values(this.model()).some(v => (Array.isArray(v) ? v.length > 0 : v !== ''))\n );\n\n readonly fieldStringValues = computed<Record<string, string>>(() =>\n Object.fromEntries(Object.entries(this.model()).map(([k, v]) => [k, typeof v === 'string' ? v : '']))\n );\n\n readonly fieldMultiValues = computed<Record<string, string[]>>(() =>\n Object.fromEntries(Object.entries(this.model()).map(([k, v]) => [k, Array.isArray(v) ? v : []]))\n );\n\n readonly activeFilterTags = computed((): QuickFilterTag[] =>\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .flatMap(f => {\n const v = this.model()[f.key];\n if (f.type === 'date-range') {\n if (!Array.isArray(v) || !(v as string[]).some(Boolean)) {\n return [];\n }\n const validDates = (v as string[]).filter(Boolean);\n return [{ key: f.key, label: f.label ?? f.placeholder ?? f.key, value: validDates.join(' - '), count: 1 }];\n }\n if (Array.isArray(v)) {\n if (v.length === 0) {\n return [];\n }\n const displayValues = v.map(sel => f.options?.find(o => o.value === sel)?.label ?? sel);\n return [\n { key: f.key, label: f.label ?? f.placeholder ?? f.key, value: '', values: displayValues, count: v.length },\n ];\n }\n if (!v) {\n return [];\n }\n const displayValue = f.type === 'select' ? (f.options?.find(o => o.value === v)?.label ?? v) : v;\n return [{ key: f.key, label: f.label ?? f.placeholder ?? f.key, value: displayValue, count: 1 }];\n })\n );\n\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(() => {\n const values = this.model();\n const debounceMs = this.config().debounceMs ?? 300;\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n this._debounceTimer = setTimeout(() => this.filterChange.emit(values), debounceMs);\n });\n }\n\n ngOnDestroy(): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n }\n\n // ── Helpers ────────────────────────────────────────────────────────────────\n\n isMultiField(field: FilterFieldConfig): boolean {\n return MULTI_TYPES.has(field.type);\n }\n\n resolveInputType(field: FilterFieldConfig): InputType {\n const map: Record<string, InputType> = {\n text: INPUT_TYPES.TEXT,\n search: INPUT_TYPES.TEXT,\n select: INPUT_TYPES.SELECT,\n multiselect: INPUT_TYPES.MULTISELECT,\n date: INPUT_TYPES.DATE,\n datetime: INPUT_TYPES.DATETIME,\n number: INPUT_TYPES.NUMBER,\n checkbox: INPUT_TYPES.CHECKBOX,\n 'checkbox-search': INPUT_TYPES.CHECKBOX_SEARCH,\n radio: INPUT_TYPES.RADIO,\n 'date-range': INPUT_TYPES.DATE,\n };\n return map[field.type] ?? INPUT_TYPES.TEXT;\n }\n\n stringValue(field: FilterFieldConfig): string {\n const v = this.model()[field.key];\n return typeof v === 'string' ? v : '';\n }\n\n multiValue(field: FilterFieldConfig): string[] {\n const v = this.model()[field.key];\n return Array.isArray(v) ? v : [];\n }\n\n // ── Events ─────────────────────────────────────────────────────────────────\n\n onFieldChange(key: string, value: string): void {\n const field = this.config().fields.find(f => f.key === key);\n const sanitized = field?.type === 'text' || field?.type === 'search' ? this.sanitizeText(value) : value;\n this.model.update(current => ({ ...current, [key]: sanitized }));\n }\n\n private sanitizeText(value: string): string {\n return value\n .replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/javascript\\s*:/gi, '')\n .replace(/on\\w+\\s*=/gi, '')\n .replace(/[<>]/g, '')\n .replace(/,/g, '');\n }\n\n onMultiChange(key: string, value: string[]): void {\n this.model.update(current => ({ ...current, [key]: value }));\n }\n\n onSubmit(): void {\n this.filterSubmit.emit(this.model());\n }\n\n onReset(): void {\n this.model.set(\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig) => [f.key, this.defaultFor(f)])\n )\n );\n this.filterReset.emit();\n }\n\n onClearAll(): void {\n this.model.set(\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig): [string, FieldValue] => [f.key, MULTI_TYPES.has(f.type) ? [] : ''])\n )\n );\n this.filterReset.emit();\n }\n\n onFilterTagClick(tag: QuickFilterTag): void {\n if (!tag.key) {\n return;\n }\n const field = this.config().fields.find(f => f.key === tag.key);\n if (field?.type === 'date-range') {\n this.model.update(current => ({ ...current, [tag.key!]: [] }));\n } else if (field && this.isMultiField(field)) {\n // tag.value holds the display label of the specific badge clicked — find raw value and remove it\n const removeVal = field.options?.find(o => o.label === tag.value)?.value ?? tag.value;\n this.model.update(current => ({\n ...current,\n [tag.key!]: (current[tag.key!] as string[]).filter(v => v !== removeVal),\n }));\n } else {\n this.model.update(current => ({ ...current, [tag.key!]: '' }));\n }\n }\n\n private defaultFor(f: FilterFieldConfig): FieldValue {\n if (MULTI_TYPES.has(f.type)) {\n try {\n return f.defaultValue ? JSON.parse(f.defaultValue) : [];\n } catch {\n return [];\n }\n }\n return f.defaultValue ?? '';\n }\n}\n","<form class=\"filter-form\" (submit)=\"$event.preventDefault(); onSubmit()\">\n <div class=\"filter-form__grid\" [style.grid-template-columns]=\"gridTemplateColumns()\">\n @for (field of config().fields; track field.key) {\n <div class=\"filter-form__cell\" [style.grid-column]=\"config().columns != null ? 'span ' + (field.colspan ?? 1) : ''\">\n @if (field.type === 'divider') {\n <hr class=\"filter-form__divider my-2\" />\n } @else if (isMultiField(field)) {\n <ncim-form-input\n [type]=\"resolveInputType(field)\"\n [label]=\"field.label ?? ''\"\n [subText]=\"field.subLabel ?? ''\"\n [placeholder]=\"field.placeholder ?? ''\"\n [icon]=\"field.icon ?? ''\"\n [iconPosition]=\"field.iconPosition ?? 'end'\"\n [options]=\"field.options ?? []\"\n [layout]=\"field.layout ?? 'vertical'\"\n [radioName]=\"field.radioName ?? ''\"\n [disabled]=\"field.disabled ?? false\"\n [dateSelectionMode]=\"field.type === 'date-range' ? 'range' : 'single'\"\n [dateShowDropdownIcon]=\"true\"\n [selectShowFilter]=\"false\"\n [multiValue]=\"fieldMultiValues()[field.key]\"\n (multiValueChange)=\"onMultiChange(field.key, $event)\"\n />\n } @else {\n <ncim-form-input\n [type]=\"resolveInputType(field)\"\n [label]=\"field.label ?? ''\"\n [subText]=\"field.subLabel ?? ''\"\n [placeholder]=\"field.placeholder ?? ''\"\n [icon]=\"field.icon ?? ''\"\n [iconPosition]=\"field.iconPosition ?? 'end'\"\n [options]=\"field.options ?? []\"\n [disabled]=\"field.disabled ?? false\"\n [filterOverride]=\"field.inputFilter ?? null\"\n [value]=\"fieldStringValues()[field.key]\"\n (valueChange)=\"onFieldChange(field.key, $event)\"\n />\n }\n </div>\n }\n </div>\n\n @if (showSubmit() || showReset()) {\n <div class=\"filter-form__actions\">\n @if (showSubmit()) {\n <button type=\"submit\" class=\"filter-form__btn filter-form__btn--primary\">\n {{ 'FILTER.APPLY' | translate }}\n </button>\n }\n @if (showReset()) {\n <button type=\"button\" class=\"filter-form__btn filter-form__btn--ghost\" [disabled]=\"!hasActiveFilters()\" (click)=\"onReset()\">\n {{ 'FILTER.RESET' | translate }}\n </button>\n }\n </div>\n }\n\n @if (showQuickFilterBar() && hasActiveFilters()) {\n <ncim-quick-filter-bar\n [activeFilters]=\"activeFilterTags()\"\n [showSaveFilter]=\"showSaveFilter()\"\n [showClearAll]=\"showClearAll()\"\n [title]=\"quickFilterTitle()\"\n [showRemoveButton]=\"showRemoveOnTag()\"\n [tagGap]=\"quickFilterTagGap()\"\n [rowJustify]=\"quickFilterRowJustify()\"\n (saveFilterClick)=\"saveFilterClick.emit()\"\n (clearAllClick)=\"onClearAll()\"\n (filterTagClick)=\"onFilterTagClick($event)\"\n [quickFilterCounter]=\"quickFilterCounter()\"\n />\n }\n</form>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { PHONE_CONFIG } from '@libs/core/constants';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-package-feature-card',\n imports: [TranslatePipe, Icon],\n templateUrl: './package-feature-card.html',\n styleUrl: './package-feature-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PackageFeatureCard {\n title = input<string>('');\n description = input<string>('');\n popular = input<boolean>(false);\n special = input<boolean>(false);\n price = input<string | number | null>(null);\n period = input<'monthly' | 'yearly'>('yearly');\n}\n","<div class=\"package__card\">\n <div class=\"package__header\">\n <div>\n <h3 class=\"package__title\">\n <span> {{ title() }}</span>\n @if (popular()) {\n <span class=\"package__badge\">{{ 'AUTH.REGISTER.PACKAGE_POPULAR' | translate }}</span>\n }\n @if (special()) {\n <span class=\"package__badge package__badge--secondary\">{{ 'AUTH.REGISTER.PACKAGE_SPECIAL' | translate }}</span>\n }\n </h3>\n <p class=\"package__description\">{{ description() }}</p>\n </div>\n\n <div>\n @if (price()) {\n <div class=\"price\">\n <span class=\"price__value\">{{ price() }}</span>\n <ncim-icon name=\"sar-icon\" [size]=\"22\" />\n <span class=\"price__period\">/{{ (period() === 'monthly' ? 'COMMON.MONTHLY' : 'COMMON.YEARLY') | translate }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"package__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"package__confirmation\">\n <ng-content select=\"[confirmation]\"></ng-content>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-bullet-list',\n imports: [TranslatePipe, Icon],\n templateUrl: './bullet-list.html',\n styleUrl: './bullet-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BulletList {\n items = input.required<string[]>();\n maxColumns = input<number>(1);\n}\n","<ul class=\"bullet-list\" [style.grid-template-columns]=\"'repeat(' + maxColumns() + ', 1fr)'\">\n <!-- track $index: list order is fixed, items have no stable id -->\n @for (item of items(); track $index) {\n <li class=\"bullet-list__item\">\n <ncim-icon name=\"checked\" [size]=\"15\" class=\"bullet-list__icon\" />\n <span>{{ item | translate }}</span>\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, input, output, signal } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-checkbox',\n imports: [Icon],\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Checkbox implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly inputId = input<string | undefined>(undefined);\n readonly checked = signal(false);\n readonly disabled = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostBinding('class.disabled') get disabledClass() {\n return this.disabled();\n }\n\n changed = output<boolean>();\n\n private onChange: (value: boolean) => void = noop;\n private onTouched: () => void = () => noop;\n\n onToggle(): void {\n if (this.disabled()) {\n return;\n }\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.changed.emit(newValue);\n }\n\n writeValue(value: boolean): void {\n this.checked.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<label class=\"checkbox__label\">\n <input type=\"checkbox\" class=\"checkbox__input\" [id]=\"inputId()\" [checked]=\"checked()\" [disabled]=\"disabled()\" (change)=\"onToggle()\" />\n <span class=\"checkbox__box\">\n <ncim-icon name=\"check\" [size]=\"12\" class=\"checkbox__icon\" />\n </span>\n <span class=\"checkbox__text\">{{ label() }}</span>\n</label>\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { LOADING_DELAY_MS } from '@libs/core/constants';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { Skeleton } from '@libs/ui-components/shared/atoms/skeleton/skeleton';\n\n@Component({\n selector: 'ncim-cards-statistics',\n imports: [Icon, Skeleton],\n templateUrl: './cards-statistics.html',\n styleUrl: './cards-statistics.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardsStatistics {\n readonly title = input<string>('');\n readonly totalNumber = input<number | string>(0);\n readonly icon = input.required<string>();\n readonly iconColor = input<string>('');\n readonly iconBackgroundColor = input<string>('');\n readonly trendPercentage = input<number>(0);\n readonly trendLabel = input<string>('');\n readonly bgImage = input<string>('');\n readonly progressIcon = input<string>('arrowUp');\n readonly loading = input(false);\n readonly loadingDelay = input(LOADING_DELAY_MS);\n\n readonly showSkeleton = signal(true);\n\n constructor() {\n effect(() => {\n const isLoading = this.loading();\n const delay = this.loadingDelay();\n\n if (isLoading) {\n this.showSkeleton.set(true);\n return;\n }\n\n const timer = setTimeout(() => {\n this.showSkeleton.set(false);\n }, delay);\n\n return () => clearTimeout(timer);\n });\n }\n}\n","<div class=\"card-statistics\">\n @if (showSkeleton()) {\n <div class=\"card-content card-statistics__skeleton\">\n <ncim-skeleton variant=\"header\" [width]=\"'60%'\" [height]=\"'20px'\" />\n <ncim-skeleton variant=\"header\" [width]=\"'40%'\" [height]=\"'28px'\" />\n <div class=\"card-footer-row\">\n <ncim-skeleton variant=\"text\" [width]=\"'80px'\" [height]=\"'20px'\" />\n <ncim-skeleton variant=\"circular\" [width]=\"'48px'\" [height]=\"'48px'\" />\n </div>\n </div>\n } @else {\n <div class=\"card-content\">\n <h3 class=\"card-title\">{{ title() }}</h3>\n <div class=\"card-value\">{{ totalNumber() }}</div>\n\n <div class=\"card-footer-row\">\n <div class=\"trend-container\">\n <span class=\"trend-label\">{{ trendLabel() }}</span>\n <span class=\"trend-value\">{{ trendPercentage() }}%</span>\n <div class=\"trend-indicator\" [class.positive]=\"trendPercentage() > 0\" [class.negative]=\"trendPercentage() < 0\">\n <ncim-icon [name]=\"progressIcon()\" [size]=\"19\" />\n </div>\n </div>\n\n <div\n class=\"icon-wrapper\"\n [class.icon-wrapper--tinted]=\"iconBackgroundColor()\"\n [style.background-color]=\"iconBackgroundColor() || undefined\"\n [style.color]=\"iconColor()\"\n >\n <ncim-icon [name]=\"icon()\" [size]=\"150\" />\n </div>\n </div>\n </div>\n\n @if (bgImage()) {\n <div class=\"bg-shape\" [style.background-image]=\"'url(' + bgImage() + ')'\"></div>\n }\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { FormInput } from '../form-input/form-input';\nimport { FormLabel } from '@libs/ui-components/shared/atoms/form-label/form-label';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-captcha-input',\n imports: [TranslateModule, ReactiveFormsModule, FormInput, FormLabel, Icon],\n templateUrl: './captcha-input.html',\n styleUrl: './captcha-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaptchaInput {\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly imageSrc = input.required<string>();\n readonly submitted = input<boolean>(false);\n readonly control = input.required<FormControl<string | null>>();\n\n readonly refresh = output<void>();\n}\n","<div class=\"captcha-input\">\n <ncim-form-label [text]=\"label()\" />\n\n <div class=\"captcha-input__group\">\n <div class=\"captcha-input__container\">\n <div class=\"captcha-input__image\">\n <img [src]=\"imageSrc()\" alt=\"Verification Code\" />\n <button type=\"button\" class=\"captcha-input__refresh\" (click)=\"refresh.emit()\">\n <ncim-icon name=\"refresh\" [size]=\"34\" />\n </button>\n </div>\n <ncim-form-input [placeholder]=\"placeholder()\" [formControl]=\"control()\" [submitted]=\"submitted()\" />\n </div>\n </div>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-entity-type-card',\n imports: [TranslateModule, Icon],\n templateUrl: './entity-type-card.html',\n styleUrl: './entity-type-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntityTypeCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly icon = input.required<IconName>();\n readonly isSelected = input<boolean>(false);\n readonly selectionMade = output<void>();\n readonly isDisabled = input<boolean>(false);\n}\n","<div\n class=\"entity-type-card\"\n [class.entity-type-card--selected]=\"isSelected()\"\n [class.entity-type-card--disabled]=\"isDisabled()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n role=\"button\"\n (click)=\"!isDisabled() && selectionMade.emit()\"\n (keydown.enter)=\"!isDisabled() && selectionMade.emit()\"\n (keydown.space)=\"$event.preventDefault(); !isDisabled() && selectionMade.emit()\"\n>\n <div class=\"entity-type-card__content\">\n <h3 class=\"entity-type-card__title\">{{ title() | translate }}</h3>\n <p class=\"entity-type-card__desc\">{{ description() | translate }}</p>\n </div>\n <div class=\"entity-type-card__icon-container\">\n <ncim-icon [name]=\"icon()\" [size]=\"30\" class=\"entity-type-card__icon\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport type EntityInfoCardBadgeTone = 'success' | 'info';\n\n@Component({\n selector: 'ncim-entity-info-card',\n imports: [TranslateModule, Icon],\n templateUrl: './entity-info-card.html',\n styleUrl: './entity-info-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'entity-info-card-host',\n },\n})\nexport class EntityInfoCard {\n /** i18n key for the top pill (e.g. office role label). */\n readonly labelKey = input.required<string>();\n /** i18n key for the primary title (company / office name). */\n readonly nameKey = input.required<string>();\n /** i18n key for the ID line label (e.g. commercial register / national ID). */\n readonly idLabelKey = input.required<string>();\n /** Raw identifier value (digits); not passed through translate. */\n readonly idValue = input.required<string>();\n /** Optional image URL for logo; when set, overrides `iconName`. */\n readonly logoSrc = input<string | null>(null);\n /** Accessible label for logo image (plain text, not a key). */\n readonly logoAlt = input<string>('');\n /** Icon when `logoSrc` is not set. */\n readonly iconName = input<IconName>('building-logo');\n /** Icon size inside the framed logo area (px). */\n readonly iconSize = input<number>(40);\n /** Pill background: mint (supervising) vs light blue (designer). */\n readonly badgeTone = input<EntityInfoCardBadgeTone>('success');\n}\n","<article class=\"entity-info-card\" [class.entity-info-card--badge-info]=\"badgeTone() === 'info'\">\n <div class=\"entity-info-card__badge-wrap\">\n <span class=\"entity-info-card__badge\">{{ labelKey() | translate }}</span>\n </div>\n\n <div class=\"entity-info-card__main\">\n <div class=\"entity-info-card__logo\">\n @if (logoSrc()) {\n <img class=\"entity-info-card__logo-img\" [src]=\"logoSrc()!\" [alt]=\"logoAlt()\" width=\"64\" height=\"64\" loading=\"lazy\" />\n } @else {\n <ncim-icon [name]=\"iconName()\" [size]=\"iconSize()\" />\n }\n </div>\n\n <div class=\"entity-info-card__copy\">\n <h3 class=\"entity-info-card__name\">{{ nameKey() | translate }}</h3>\n <p class=\"entity-info-card__id\">\n <span class=\"entity-info-card__id-label\">{{ idLabelKey() | translate }}</span>\n <span class=\"entity-info-card__id-value\" dir=\"ltr\">{{ idValue() }}</span>\n </p>\n </div>\n </div>\n</article>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-summary-card',\n imports: [Icon],\n templateUrl: './summary-card.html',\n styleUrl: './summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SummaryCard {\n readonly icon = input.required<IconName>();\n readonly label = input.required<string>();\n readonly value = input.required<string>();\n readonly subValue = input<string>('');\n}\n","<div class=\"summary-card\">\n <div class=\"summary-card__icon\">\n <ncim-icon [name]=\"icon()\" [size]=\"30\" />\n </div>\n <div class=\"summary-card__info\">\n <span class=\"summary-card__label\">{{ label() }}</span>\n <div class=\"summary-card__value\">\n <span>{{ value() }}</span>\n @if (subValue()) {\n <span class=\"summary-card__sub-value\">{{ subValue() }}</span>\n }\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-license-status-card',\n imports: [TranslateModule],\n templateUrl: './license-status-card.html',\n styleUrl: './license-status-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'license-status-card-host',\n },\n})\nexport class LicenseStatusCard {\n /** Display text for the status pill (pass translated string from parent). */\n readonly status = input.required<string>();\n /** Date segment for the issued line (translated / formatted). */\n readonly issueDate = input.required<string>();\n readonly licenseNumber = input.required<string>();\n readonly city = input.required<string>();\n readonly municipality = input.required<string>();\n readonly expiryDate = input.required<string>();\n\n /** i18n key for \"Issued {{date}}\" style line; date is passed as `issueDate`. */\n readonly issuedLineKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.ISSUED_LINE');\n\n readonly licenseNumberLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.CONSTRUCTION_LICENSE_NUMBER_LABEL');\n\n readonly amanahLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.AMANAH');\n readonly municipalityLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.MUNICIPALITY');\n readonly expiresLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.EXPIRES');\n\n /** Watermark image URL (served from app `core/assets`). */\n readonly watermarkSrc = input<string>('core/assets/images/license-card-watermark.svg');\n}\n","<article class=\"license-status-card\">\n <div class=\"license-status-card__watermark\" aria-hidden=\"true\">\n <!-- <img [src]=\"watermarkSrc()\" width=\"420\" height=\"220\" alt=\"\" /> -->\n </div>\n\n <div class=\"license-status-card__inner\">\n <header class=\"license-status-card__header\">\n <p class=\"license-status-card__issued\">\n {{ issuedLineKey() | translate: { date: issueDate() } }}\n </p>\n <span class=\"license-status-card__badge\">{{ status() | translate }}</span>\n </header>\n\n <div class=\"license-status-card__number-block\">\n <span class=\"license-status-card__number-label\">{{ licenseNumberLabelKey() | translate }}</span>\n <strong class=\"license-status-card__number-value\">{{ licenseNumber() }}</strong>\n </div>\n\n <footer class=\"license-status-card__meta\">\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ amanahLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ city() }}</strong>\n </div>\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ municipalityLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ municipality() }}</strong>\n </div>\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ expiresLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ expiryDate() }}</strong>\n </div>\n </footer>\n </div>\n</article>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CHART_COLORS } from '@libs/core/constants';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { Sparkline } from '@libs/ui-components/shared/organisms/charts/sparkline/sparkline';\n\n@Component({\n selector: 'ncim-stats-analytics-card',\n imports: [Icon, Sparkline],\n templateUrl: './stats-analytics-card.html',\n styleUrl: './stats-analytics-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'stats-analytics-card-host',\n },\n})\nexport class StatsAnalyticsCard {\n /** Card heading (pass translated string from parent). */\n readonly title = input<string>('');\n /** Optional action label (e.g. “All reports”) on the same row as the title (LTR: link left, title right). */\n readonly titleLinkText = input<string>('');\n readonly value = input<number | string>(0);\n /** Shown after the main value, e.g. 8.2 for \"8.2%\". Omit when null to hide the percentage. */\n readonly percentage = input<number | null>(null);\n readonly trend = input<'up' | 'down'>('up');\n /** Short label after the percentage (e.g. \"New\" / \"جديدة\"). */\n readonly trendLabel = input<string>('');\n /** When false, hides the trend arrow (e.g. compact KPI row). */\n readonly showTrendIcon = input(true);\n /** Sparkline series; omit or pass [] to hide the chart area. */\n readonly chartData = input<readonly number[]>([]);\n\n readonly chartColor = input<string>(CHART_COLORS.reportRateGreen);\n /** Figma chart box height; composed from spacing scale (40 + 6 px). */\n readonly chartHeight = input<number>(40 + 6);\n readonly chartLineWidth = input<number>(2);\n readonly chartSmooth = input(true);\n readonly chartShowArea = input(true);\n /** Sparkline ↔ text gap: `sm` 12px (first KPI card), `md` 16px (second). */\n readonly surfaceGap = input<'sm' | 'md'>('md');\n\n readonly trendIcon = computed(() => (this.trend() === 'up' ? 'trend-up-arrow' : 'trend-down-arrow'));\n\n readonly showChart = computed(() => this.chartData().length > 0);\n\n /** Mutable series for `ncim-sparkline` — satisfies template assignability to `number[]`. */\n readonly sparklineData = computed((): number[] => [...this.chartData()]);\n readonly titleLinkUrl = input<string>('');\n readonly titleLinkTarget = input<string>('_blank');\n readonly percentageLabel = input<string>('');\n readonly percentageValue = input<number>(0);\n}\n","<article class=\"stats-analytics-card\">\n <div\n class=\"stats-analytics-card__surface\"\n dir=\"ltr\"\n [class.stats-analytics-card__surface--no-chart]=\"!showChart()\"\n [class.stats-analytics-card__surface--no-trend]=\"percentage() == null\"\n [class.stats-analytics-card__surface--gap-sm]=\"surfaceGap() === 'sm'\"\n >\n <div class=\"stats-analytics-card__stack\">\n <div class=\"stats-analytics-card__header\" [class.stats-analytics-card__header--no-link]=\"!titleLinkText()\">\n @if (titleLinkText()) {\n <a\n class=\"stats-analytics-card__link\"\n [href]=\"titleLinkUrl() || '#'\"\n [attr.target]=\"titleLinkUrl() ? titleLinkTarget() : null\"\n [attr.rel]=\"titleLinkUrl() ? 'noopener noreferrer' : null\"\n >\n {{ titleLinkText() }}\n </a>\n }\n <h3 class=\"stats-analytics-card__title\">{{ title() }}</h3>\n </div>\n\n <div class=\"stats-analytics-card__bottom\" [class.stats-analytics-card__bottom--no-chart]=\"!showChart()\">\n @if (showChart()) {\n <div class=\"stats-analytics-card__chart\" aria-hidden=\"true\">\n <ncim-sparkline\n [data]=\"sparklineData()\"\n [height]=\"chartHeight()\"\n [color]=\"chartColor()\"\n [lineWidth]=\"chartLineWidth()\"\n [showArea]=\"chartShowArea()\"\n [smooth]=\"chartSmooth()\"\n />\n </div>\n }\n\n <div class=\"stats-analytics-card__body\">\n <div class=\"stats-analytics-card__metric\">\n @if (percentage() != null) {\n <div class=\"stats-analytics-card__trend\">\n <span class=\"stats-analytics-card__trend-label\">{{ trendLabel() }}</span>\n <span class=\"stats-analytics-card__trend-percent\">{{ percentage() }}%</span>\n </div>\n }\n <div class=\"stats-analytics-card__value-row\">\n <span class=\"stats-analytics-card__value\">{{ value() }}</span>\n @if (showTrendIcon()) {\n <ncim-icon [name]=\"trendIcon()\" [size]=\"24\" />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</article>\n","import { Component, input, output, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@libs/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface AIChatAction {\n type: string;\n icon: string;\n}\n\n@Component({\n selector: 'ncim-ai-chating',\n imports: [Icon, TranslateModule],\n templateUrl: './ai-chating.html',\n styleUrl: './ai-chating.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AiChating {\n readonly recommendationText = input<string>('');\n readonly recommendationLinkText = input<string>('');\n readonly recommendationLinkUrl = input<string>('');\n readonly actions = input<AIChatAction[]>([]);\n readonly environment = inject(ENVIRONMENT);\n\n readonly actionClick = output<string>();\n\n onAction(action: AIChatAction | string) {\n const type = typeof action === 'string' ? action : action.type;\n this.actionClick.emit(type);\n }\n}\n","<div class=\"aiCating\">\n <div class=\"aiCating__footer\">\n <div class=\"aiCating__recommendation\">\n <span class=\"recommendation-icon\">\n <ncim-icon name=\"aiIcon\" [size]=\"70\"></ncim-icon>\n </span>\n <div class=\"aiCating__recommendation-text\">\n {{ recommendationText() }}\n @if (!environment.hasUnderDevelopmentFeatures) {\n <a [href]=\"recommendationLinkUrl()\" class=\"aiCating__recommendation-link\">\n {{ recommendationLinkText() | translate }}\n </a>\n } @else {\n <span>\n {{ recommendationLinkText() | translate }}\n </span>\n }\n\n <div class=\"aiCating__actions\">\n <div class=\"aiCating__actions-feedback\">\n @if (actions() && actions().length >= 2) {\n <button class=\"action-btn action-btn--icon\" (click)=\"onAction(actions()[0])\">\n <ncim-icon [name]=\"actions()[0].icon\" [size]=\"15\"></ncim-icon>\n </button>\n <button class=\"action-btn action-btn--icon\" (click)=\"onAction(actions()[1])\">\n <ncim-icon [name]=\"actions()[1].icon\" [size]=\"15\"></ncim-icon>\n </button>\n }\n </div>\n @if (actions() && actions().length >= 3) {\n <button class=\"action-btn action-btn--chat\" (click)=\"onAction(actions()[2].type)\">\n <span><ncim-icon [name]=\"actions()[2].icon\" [size]=\"15\"></ncim-icon></span>\n <span>{{ 'NOTES.ACTIONS.CHAT' | translate }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, signal, inject, DestroyRef } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Icon } from '../../atoms/icon/icon';\n\nconst COPY_FEEDBACK_MS = 700;\n\n@Component({\n selector: 'ncim-clipboard-button',\n imports: [Icon],\n templateUrl: './clipboard-button.html',\n styleUrl: './clipboard-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClipboardButton {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly value = input.required<string>();\n readonly size = input<number>(16);\n\n readonly copied = output<void>();\n readonly isCopied = signal(false);\n\n async copy(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.value());\n this.isCopied.set(true);\n this.copied.emit();\n timer(COPY_FEEDBACK_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.isCopied.set(false));\n } catch {\n // Clipboard API not available\n }\n }\n}\n","<button type=\"button\" class=\"clipboard-button\" (click)=\"copy()\" [attr.aria-label]=\"isCopied() ? 'Copied' : 'Copy to clipboard'\">\n @if (isCopied()) {\n <span class=\"clipboard-button__check\">✓</span>\n } @else {\n <ncim-icon name=\"copy\" [size]=\"size()\" />\n }\n</button>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\nimport { ICONS } from '@libs/core/constants';\n\nexport interface ContestedViolationStatus {\n label: string;\n color: 'warning' | 'success' | 'danger' | 'neutral';\n /** Optional custom text & indicator color — overrides the CSS modifier class */\n textColor?: string;\n /** Optional custom background color — overrides the CSS modifier class */\n backgroundColor?: string;\n}\n\nexport interface ContestedViolationData {\n title: string;\n violationId: string;\n date: string;\n status: ContestedViolationStatus;\n description: string;\n entity: string;\n penalty: string;\n}\n\n@Component({\n selector: 'ncim-contested-violation',\n imports: [TranslateModule, ClipboardButton],\n templateUrl: './contested-violation.html',\n styleUrl: './contested-violation.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContestedViolation {\n data = input.required<ContestedViolationData>();\n detailsClick = output<void>();\n\n readonly ICONS = ICONS;\n\n onDetailsClick() {\n this.detailsClick.emit();\n }\n}\n","<div class=\"contested-violation\">\n <!-- Header -->\n <div class=\"contested-violation__header\">\n <div class=\"\">\n <div class=\"contested-violation__header-start\">\n <h3 class=\"contested-violation__title\">{{ data().title | translate }}</h3>\n <span\n class=\"status-badge status-badge--{{ data().status.color }}\"\n [style.color]=\"data().status.textColor ?? null\"\n [style.background-color]=\"data().status.backgroundColor ?? null\"\n >\n <div\n class=\"status-badge__status-indicator status-badge__status-indicator--{{ data().status.color }}\"\n [style.background-color]=\"data().status.textColor ?? null\"\n ></div>\n {{ data().status.label | translate }}\n </span>\n </div>\n <div class=\"\">\n <span class=\"contested-violation__id\">\n {{ data().violationId }}\n <ncim-clipboard-button [value]=\"data().violationId\" [size]=\"16\" />\n </span>\n </div>\n </div>\n\n <div class=\"contested-violation__header-end\">\n <span class=\"contested-violation__issued-label\">{{ 'CONTESTED_VIOLATION.ISSUED_BY' | translate }}</span>\n <span class=\"contested-violation__date\">{{ data().date }}</span>\n </div>\n </div>\n\n <!-- Description Box -->\n <div class=\"contested-violation__description-box\">\n <p class=\"contested-violation__description\">\n <strong>{{ 'CONTESTED_VIOLATION.VIOLATION' | translate }}:</strong> {{ data().description }}\n </p>\n </div>\n\n <div class=\"contested-violation__footer-wrapper\">\n <!-- Details Grid -->\n <div class=\"contested-violation__details\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">{{ 'CONTESTED_VIOLATION.VIOLATING_ENTITY' | translate }}</span>\n <span class=\"detail-value\">{{ data().entity | translate }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">{{ 'CONTESTED_VIOLATION.PENALTY' | translate }}</span>\n <span class=\"detail-value\">{{ data().penalty | translate }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"contested-violation__footer\">\n <button class=\"details-btn\" (click)=\"onDetailsClick()\">{{ 'CONTESTED_VIOLATION.MORE_DETAILS' | translate }}</button>\n </div>\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-form-label',\n templateUrl: './form-label.html',\n styleUrl: './form-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormLabel {\n readonly text = input.required<string>();\n readonly subText = input<string>();\n}\n","@if (text()) {\n <span class=\"form-label\">{{ text() }}</span>\n}\n@if (subText()) {\n <span class=\"form-label__sub text-secondary\">{{ subText() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { SliderModule } from 'primeng/slider';\nimport { noop } from 'rxjs';\nimport { FormLabel } from '../form-label/form-label';\n\n@Component({\n selector: 'ncim-range-bar',\n templateUrl: './range-bar.html',\n styleUrl: './range-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SliderModule, FormsModule, FormLabel],\n})\nexport class RangeBar implements ControlValueAccessor {\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly showValues = input<boolean>(true);\n\n readonly value = input<number | [number, number]>([0, 100]);\n readonly valueChange = output<number | [number, number]>();\n\n protected readonly internalValue = signal<number | [number, number]>(this.value());\n protected readonly isRange = computed(() => Array.isArray(this.internalValue()));\n protected startValue = computed(() =>\n this.isRange() ? (this.internalValue() as [number, number])[0] : this.internalValue()\n );\n\n protected endValue = computed(() => (this.internalValue() as [number, number])[1]);\n\n protected isDisabled = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: number | [number, number]): void {\n if (value !== undefined && value !== null) {\n this.internalValue.set(value);\n }\n }\n\n registerOnChange(fn: (value: number | [number, number]) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n protected onChange() {\n this.onChangeFn(this.internalValue());\n this.valueChange.emit(this.internalValue());\n }\n\n protected onTouched() {\n this.onTouchedFn();\n }\n\n private onChangeFn: (value: number | [number, number]) => void = noop;\n private onTouchedFn: () => void = noop;\n}\n","<div class=\"range-bar\">\n <ncim-form-label [text]=\"label()\" />\n <div class=\"range-bar__wrapper\">\n @if (showValues()) {\n <span class=\"range-bar__value\">\n {{ startValue() }}\n </span>\n }\n <p-slider\n class=\"range-bar__slider\"\n [(ngModel)]=\"internalValue\"\n [range]=\"isRange()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled() || isDisabled()\"\n (onChange)=\"onChange()\"\n (onSlideEnd)=\"onTouched()\"\n />\n @if (showValues() && isRange()) {\n <span class=\"range-bar__value\">\n {{ endValue() }}\n </span>\n }\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, computed, input, output, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface SearchableUserListItem {\n id: string;\n name: string;\n}\n\n@Component({\n selector: 'ncim-searchable-users-list',\n imports: [TranslateModule, Icon],\n templateUrl: './searchable-users-list.html',\n styleUrl: './searchable-users-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchableUsersList {\n readonly title = input<string>('');\n readonly users = input<SearchableUserListItem[]>([]);\n readonly searchPlaceholder = input<string>('بحث');\n\n readonly deleteUser = output<SearchableUserListItem>();\n\n protected readonly searchQuery = signal('');\n\n protected readonly filteredUsers = computed(() => {\n const users = this.users();\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) {\n return users;\n }\n return users.filter(u => u.name?.toLowerCase().includes(query ?? false));\n });\n\n protected onSearchInput(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n }\n\n protected onDeleteClick(user: SearchableUserListItem): void {\n this.deleteUser.emit(user);\n }\n}\n","<!--TODO: share the ui/functional for searching with `selectable-list-with-search` component-->\n<div class=\"users-list\">\n @if (title()) {\n <h3 class=\"users-list__title\">{{ title() }}</h3>\n }\n <div class=\"users-list__search\">\n <span class=\"users-list__search-icon\" aria-hidden=\"true\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </span>\n\n <input\n type=\"text\"\n class=\"users-list__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <ul class=\"users-list__items\" role=\"list\">\n @for (user of filteredUsers(); track user.id) {\n <li class=\"users-list__item\">\n <div class=\"users-list__card\">\n <span class=\"users-list__avatar\" aria-hidden=\"true\">\n <ncim-icon name=\"user-placeholder\" [size]=\"20\" />\n </span>\n <div class=\"users-list__content\">\n <div class=\"users-list__name\">{{ user.name }}</div>\n </div>\n <button type=\"button\" class=\"users-list__delete\" (click)=\"onDeleteClick(user)\" [attr.aria-label]=\"'Delete ' + user.id\">\n <ncim-icon name=\"trash-bin\" [size]=\"20\" />\n </button>\n </div>\n </li>\n } @empty {\n <li class=\"users-list__empty\">{{ 'COMMON.NO_RESULTS' | translate }}</li>\n }\n </ul>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ncim-basic-card',\n imports: [CommonModule, TranslateModule],\n templateUrl: './basic-card.html',\n styleUrl: './basic-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.basic-card-host--full-width]': 'fullWidth()',\n },\n})\nexport class BasicCard {\n label = input.required<string>();\n value = input.required<string>();\n fullWidth = input(false);\n /** `field`: label/value row inside a parent panel (no own surface); `card`: standalone padded tile. */\n layout = input<'card' | 'field'>('card');\n}\n","<div class=\"basic-card\" [class.basic-card--field]=\"layout() === 'field'\">\n <span class=\"basic-card__label\">{{ label() | translate }}</span>\n <span class=\"basic-card__value\">{{ value() | translate }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface RequestStatus {\n label: string;\n color: 'warning' | 'success' | 'danger' | 'neutral';\n}\n\nexport interface RequestHeaderMetaItem {\n label: string;\n value: string;\n icon: string;\n}\n\n@Component({\n selector: 'ncim-request-header',\n standalone: true,\n imports: [CommonModule, TranslateModule, Icon],\n templateUrl: './request-header.html',\n styleUrl: './request-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequestHeader {\n title = input.required<string>();\n requestId = input.required<string>();\n status = input.required<RequestStatus>();\n metaItems = input<RequestHeaderMetaItem[]>([]);\n data = input<string>();\n}\n","<div class=\"request-header\">\n <div class=\"request-header__row\">\n <div class=\"request-header__start\">\n <div class=\"request-header__container\">\n <div class=\"request-header__title-row\">\n <h3 class=\"request-header__title\">{{ title() | translate }}</h3>\n <span class=\"status-badge status-badge--{{ status().color }}\">\n <div class=\"status-badge__status-indicator\"></div>\n {{ status().label | translate }}\n </span>\n </div>\n @if (data()) {\n <div class=\"request-header__data\">\n <span class=\"request-header__data-label\">{{ 'COMMON.CREATION_DATE' | translate }} </span>\n <span class=\"request-header__data-value\">{{ data() }}</span>\n </div>\n }\n </div>\n <div class=\"request-header__id-row\">\n <span class=\"request-header__id\">\n #{{ requestId() }}\n <ncim-icon name=\"copy\" [size]=\"16\" class=\"cursor-pointer\"></ncim-icon>\n </span>\n </div>\n </div>\n </div>\n\n @if (metaItems().length) {\n <div class=\"request-header__meta-row\">\n @for (item of metaItems(); track item.label) {\n <div class=\"request-header__meta-item\">\n <div class=\"request-header__meta-label-group\">\n <ncim-icon [name]=\"item.icon\" [size]=\"18\" class=\"request-header__meta-icon\"></ncim-icon>\n <span class=\"request-header__meta-label\">{{ item.label | translate }}</span>\n </div>\n <span class=\"request-header__meta-value\">{{ item.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RequestHeader, type RequestStatus, type RequestHeaderMetaItem } from '../request-header/request-header';\n\n@Component({\n selector: 'ncim-request-details-card',\n standalone: true,\n imports: [CommonModule, RequestHeader],\n templateUrl: './request-details-card.html',\n styleUrl: './request-details-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequestDetailsCard {\n title = input.required<string>();\n requestId = input.required<string>();\n status = input.required<RequestStatus>();\n metaItems = input<RequestHeaderMetaItem[]>([]);\n data = input<string>();\n}\n","<div class=\"request-details-card\">\n <ncim-request-header [title]=\"title()\" [requestId]=\"requestId()\" [status]=\"status()\" [metaItems]=\"metaItems()\" [data]=\"data()\" />\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\nexport interface ViolationBreadcrumbItem {\n label: string;\n url?: string;\n}\n\nexport interface ActionButton {\n label: string;\n icon: string;\n action: string;\n disabled?: boolean;\n /** When true, shows a spinner on this button and disables it. */\n loading?: boolean;\n}\n\n@Component({\n selector: 'ncim-violation-header',\n imports: [TranslateModule, NcimButton],\n templateUrl: './violation-header.html',\n styleUrl: './violation-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationHeader {\n readonly title = input<string>('');\n readonly breadcrumbs = input<ViolationBreadcrumbItem[]>([]);\n readonly actions = input<ActionButton[]>([]);\n readonly actionClick = output<string>();\n readonly data = input<string>();\n\n onActionClick(action: string) {\n this.actionClick.emit(action);\n }\n}\n","<div class=\"violation-header\">\n <div class=\"violation-header__top\">\n <h1 class=\"violation-header__title\">{{ title() }}</h1>\n\n <div class=\"violation-header__breadcrumbs\">\n <span class=\"violation-header__breadcrumb-item\">{{ breadcrumbs()[0]?.label | translate }}</span>\n @for (item of breadcrumbs().slice(1); track item.label) {\n <span class=\"violation-header__separator\">/</span>\n <span class=\"violation-header__breadcrumb-item\">{{ item.label | translate }}</span>\n }\n </div>\n </div>\n\n @if (actions() && actions().length > 0) {\n <div class=\"violation-header__actions no-pdf\">\n @for (button of actions(); track button.action; let i = $index) {\n <ncim-button\n [variant]=\"i === actions().length - 1 ? 'black' : 'secondary'\"\n [size]=\"'small'\"\n [fullWidth]=\"false\"\n [icon]=\"button.icon\"\n [disabled]=\"(button.disabled || button.loading) ?? false\"\n [iconPosition]=\"'start'\"\n [iconSize]=\"20\"\n [loading]=\"button.loading ?? false\"\n (click)=\"onActionClick(button.action)\"\n >\n @if (button.label) {\n <span class=\"violation-header__action-label\">{{ button.label | translate }}</span>\n }\n </ncim-button>\n }\n @if (data()) {\n <div class=\"violation-header__data\">\n <span class=\"violation-header__data-label\">{{ 'COMMON.LAST_UPDATE' | translate }} </span>\n\n <span class=\"violation-header__data-value\">{{ data() }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { ImgFallbackDirective } from '@libs/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface Attachment {\n id: string;\n name: string;\n type?: 'pdf' | 'image';\n url: string;\n previewUrl?: string; // For images\n}\n\n@Component({\n selector: 'ncim-attachments',\n imports: [TranslateModule, Icon, ImgFallbackDirective],\n templateUrl: './attachments.html',\n styleUrl: './attachments.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Attachments {\n attachments = input<Attachment[]>([]);\n title = input<string>('CRITERIA.ATTACHMENTS');\n downloadFile = output<string>();\n violation = input<boolean>(true);\n /** When true, PDF rows use a responsive 2-column grid (license-style layout). */\n twoColumnGrid = input<boolean>(false);\n /** Icon asset under assets/ncim-icons (e.g. stack, pdf). */\n pdfIconName = input<string>('stack');\n pdfIconSize = input<number>(32);\n\n getAttachmentType(attachment: Attachment): 'pdf' | 'image' {\n if (attachment.type) {\n return attachment.type;\n }\n\n const ext = attachment.name.split('.').pop()?.toLowerCase() || '';\n return ext === 'pdf' || ext === 'docx' || ext === 'doc' ? 'pdf' : 'image';\n }\n\n onDownload(fileId: string): void {\n this.downloadFile.emit(fileId);\n }\n}\n","<div class=\"attachments\" [class.attachments--grid-2]=\"twoColumnGrid()\">\n <h5 class=\"attachments__title\">{{ title() | translate }}</h5>\n\n <!-- PDF Files -->\n <div class=\"attachments__grid\">\n @for (file of attachments(); track file.id) {\n @if (getAttachmentType(file) === 'pdf') {\n <div class=\"attachments__item {{ violation() ? 'violation' : 'not-violation' }}\">\n <div class=\"attachments__file\">\n <div class=\"file-preview file-preview--pdf\">\n <span class=\"attachments__file-icon\">\n <ncim-icon [name]=\"pdfIconName()\" [size]=\"pdfIconSize()\" />\n </span>\n </div>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n <button type=\"button\" class=\"download-btn\" (click)=\"onDownload(file.id)\">\n <ncim-icon name=\"download2\" [size]=\"20\"></ncim-icon>\n </button>\n </div>\n }\n }\n </div>\n\n <!-- Image Files -->\n <div class=\"attachments__grid\">\n @for (file of attachments(); track file.id) {\n @if (getAttachmentType(file) === 'image') {\n <div class=\"attachments__item\">\n <div class=\"file-preview file-preview--image\">\n <img [src]=\"file.url\" [alt]=\"file.name\" class=\"image-preview\" ncimImgFallback />\n <button type=\"button\" class=\"download-btn\" (click)=\"onDownload(file.id)\">\n <ncim-icon name=\"album-02\" [size]=\"20\"></ncim-icon>\n </button>\n </div>\n </div>\n }\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AccordionModule } from 'primeng/accordion';\nimport { Icon } from '../../atoms/icon/icon';\nimport { AiChating } from '../ai-chating/ai-chating';\nimport { Attachments, type Attachment } from '../attachments/attachments';\n\nexport interface InspectorObservation {\n reason?: string;\n notes: string;\n attachments: Attachment[];\n}\n\nexport interface Recommendation {\n text: string;\n linkText: string;\n linkUrl: string;\n actions: { type: 'like' | 'dislike' | 'chat'; label?: string; icon: string }[];\n}\n\nexport interface CriteriaItem {\n id: number;\n title: string;\n tag: string;\n status?: 'success' | 'warning' | 'info' | 'danger';\n score: string; // e.g. '12/2'\n description: string;\n inspectorObservation: InspectorObservation;\n}\n\nexport interface CriteriaSectionData {\n title: string;\n criteria: CriteriaItem[];\n}\n\n@Component({\n selector: 'ncim-criteria-section',\n imports: [TranslateModule, AccordionModule, Icon, AiChating, Attachments],\n templateUrl: './criteria-section.html',\n styleUrl: './criteria-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CriteriaSection {\n criteriaData = input<CriteriaSectionData | null>(null);\n recommendation = input<Recommendation | null>(null);\n actionClick = output<string>();\n downloadFile = output<string>();\n aiActionClick = output<string>();\n activeAccordionIndex = input<number>(0);\n\n onActionClick(actionType: string) {\n this.actionClick.emit(actionType);\n }\n\n onDownload(fileId: string) {\n this.downloadFile.emit(fileId);\n }\n\n onAiAction(actionType: string) {\n this.aiActionClick.emit(actionType);\n }\n}\n","@if (criteriaData(); as data) {\n <div class=\"criteria-section\">\n @if (data.title) {\n <h3 class=\"criteria-section__main-title\">{{ data.title | translate }}</h3>\n }\n\n @for (item of data.criteria; track item.id; let i = $index) {\n <div class=\"criteria-card\">\n <!-- Header -->\n <div class=\"criteria-card__header\">\n <div class=\"criteria-card__header-end\">\n <ncim-icon name=\"layers-2\" [size]=\"20\" class=\"criteria-card__icon\"></ncim-icon>\n <h4 class=\"criteria-card__title\">{{ item.title }}</h4>\n <span class=\"criteria-card__score\">{{ item.score }}</span>\n </div>\n <div class=\"criteria-card__header-start\">\n <span\n class=\"criteria-card__tag\"\n [class.criteria-card__tag--success]=\"item.status === 'success'\"\n [class.criteria-card__tag--warning]=\"item.status === 'warning'\"\n [class.criteria-card__tag--info]=\"item.status === 'info'\"\n >\n {{ item.tag | translate }}\n </span>\n </div>\n </div>\n\n <!-- Description -->\n <p class=\"criteria-card__description\">{{ item.description }}</p>\n\n <!-- Violated Item -->\n\n <!-- Inspector Observation Accordion -->\n <div class=\"criteria-card__accordion\" [class.criteria-card__accordion--active]=\"activeAccordionIndex() === 0\">\n @if (item.inspectorObservation.attachments && item.inspectorObservation.attachments.length > 0) {\n <p-accordion [value]=\"activeAccordionIndex()\">\n <p-accordion-panel [value]=\"i\">\n <p-accordion-header>\n <div class=\"criteria-card__accordion-header-content\">\n @if (activeAccordionIndex() === 0) {\n <ncim-icon name=\"grean-file\" [size]=\"18\" class=\"criteria-card__accordion-icon\"></ncim-icon>\n } @else {\n <ncim-icon name=\"folder\" [size]=\"18\" class=\"criteria-card__accordion-icon-inactive\"></ncim-icon>\n }\n <span class=\"criteria-card__accordion-title\">{{ 'CRITERIA.SHOW_DOCUMENTATION' | translate }}</span>\n </div>\n </p-accordion-header>\n <p-accordion-content>\n <div class=\"criteria-card__accordion-content\">\n <!-- Reason -->\n @if (item.inspectorObservation.reason) {\n <div class=\"criteria-card__notes mb-3\">\n <h5 class=\"criteria-card__section-title\">{{ 'السبب' }}</h5>\n <p class=\"criteria-card__notes-text\">{{ item.inspectorObservation.reason }}</p>\n </div>\n }\n\n @if (item.inspectorObservation.notes) {\n <div class=\"criteria-card__notes\">\n <h5 class=\"criteria-card__section-title\">{{ 'CRITERIA.OBSERVATIONS' | translate }}</h5>\n <p class=\"criteria-card__notes-text\">{{ item.inspectorObservation.notes }}</p>\n </div>\n }\n\n @if (item.inspectorObservation.attachments && item.inspectorObservation.attachments.length > 0) {\n <ncim-attachments [attachments]=\"item.inspectorObservation.attachments\" (downloadFile)=\"onDownload($event)\" />\n }\n </div>\n @if (recommendation(); as rec) {\n <ncim-ai-chating\n class=\"no-pdf\"\n [recommendationText]=\"rec.text\"\n [recommendationLinkText]=\"rec.linkText\"\n [recommendationLinkUrl]=\"rec.linkUrl\"\n [actions]=\"rec.actions\"\n (actionClick)=\"onAiAction($event)\"\n />\n }\n </p-accordion-content>\n </p-accordion-panel>\n </p-accordion>\n }\n </div>\n </div>\n }\n </div>\n}\n","/**\n * Returns the provided value if defined, otherwise the default.\n * Used for merging optional label overrides with defaults in violation components.\n */\nexport function mergeWithDefaults<T>(provided: T | undefined, defaults: T): T {\n return provided ?? defaults;\n}\n\n/**\n * Configuration for correction period display.\n */\nexport interface CorrectionPeriodConfig {\n barColor: string;\n textColor: string;\n iconName: string;\n}\n\n/**\n * Returns correction period configuration based on completion progress percentage.\n * Green (< 25%) → orange (< 75%) → red (>= 75%).\n */\nexport function getCorrectionPeriodConfig(progressPercent: number): CorrectionPeriodConfig {\n if (progressPercent < 25) {\n return {\n barColor: 'var(--color-progress-green)',\n textColor: 'var(--color-primary)',\n iconName: 'hourglass-green',\n };\n }\n if (progressPercent < 75) {\n return {\n barColor: 'var(--color-progress-orange)',\n textColor: 'var(--color-progress-orange)',\n iconName: 'hourglass-orange',\n };\n }\n return {\n barColor: 'var(--color-progress-red)',\n textColor: 'var(--color-progress-red)',\n iconName: 'hourglass-red',\n };\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { ENVIRONMENT } from '@libs/core/environments';\nimport { LocalizedDatePipe, ReplacePipe, ImgFallbackDirective } from '@libs/core';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ViolationBusiness, ViolationCorrectionPeriod, ViolationFine } from '@libs/core/models/violation.models';\nimport { mergeWithDefaults } from '../violation.utils';\n\nexport enum ViolationStatusType {\n PendingPayment = 1,\n Paid,\n ConfirmedViolation,\n UnderAppeal,\n}\n\nexport interface ViolationStatus {\n label: string;\n type: any;\n /** Optional custom text & dot color — overrides the CSS class color */\n color?: string;\n /** Optional custom background color — overrides the CSS class background */\n backgroundColor?: string;\n}\n\nexport interface ViolationInfoLabels {\n title?: string;\n violatorLabel?: string;\n nationalNumberLabel?: string;\n activityLabel?: string;\n entityLabel?: string;\n createdDateLabel?: string;\n referenceNumberLabel?: string;\n}\n\nexport interface Violation {\n id: number;\n entity: string;\n fine: ViolationFine;\n business: ViolationBusiness;\n correctionPeriod: ViolationCorrectionPeriod;\n /** ISO date string e.g. '2025-11-03' */\n date: string;\n status: ViolationStatus;\n}\n\nexport interface ViolationInfo {\n violationNumber: string;\n referenceNumber: string;\n status: ViolationStatus;\n entityName: string;\n entityLogo: string;\n location: string;\n emirate: string;\n activity: string;\n nationalNumber: string;\n createdDate: Date;\n labels?: ViolationInfoLabels;\n violation?: boolean;\n applicant?: string;\n violatorName?: string;\n}\n\n@Component({\n selector: 'ncim-violation-info-card',\n imports: [LocalizedDatePipe, ReplacePipe, ClipboardButton, TranslateModule, ImgFallbackDirective],\n templateUrl: './violation-info-card.html',\n styleUrl: './violation-info-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationInfoCard {\n readonly violationInfo = input<ViolationInfo | null>(null);\n readonly environment = inject(ENVIRONMENT);\n readonly copied = output<string>();\n\n private readonly defaultLabels: ViolationInfoLabels = {\n title: 'بيانات المخالفة',\n violatorLabel: 'المخالف',\n nationalNumberLabel: 'رقم السجل الوطني',\n activityLabel: 'النشاط',\n entityLabel: 'الجهة المخالفة',\n createdDateLabel: 'أحدثت',\n };\n\n readonly labels = computed(() => mergeWithDefaults(this.violationInfo()?.labels, this.defaultLabels));\n}\n","@if (violationInfo(); as info) {\n <div class=\"violation-info-card\">\n <!-- Top Header Section -->\n <div class=\"violation-info-card__header-section\">\n <!-- Right Side: Title & ID -->\n <div class=\"violation-info-card__header-right\">\n <div class=\"violation-info-card__title-row\">\n <h3 class=\"violation-info-card__title\">{{ labels().title | translate }}</h3>\n <div\n class=\"violation-info-card__status violation-info-card__status--{{ info.status.type }}\"\n [style.color]=\"info.status.color ?? null\"\n [style.background-color]=\"info.status.backgroundColor ?? null\"\n >\n <span class=\"violation-info-card__status-dot\" [style.background-color]=\"info.status.color ?? null\"></span>\n <span class=\"violation-info-card__status-text\">{{ info.status.label }}</span>\n </div>\n </div>\n <div class=\"violation-info-card__violation-id\">\n <span class=\"violation-info-card__violation-id-text\" dir=\"ltr\">#{{ info.violationNumber }}</span>\n <ncim-clipboard-button [value]=\"info.violationNumber\" [size]=\"16\" (copied)=\"copied.emit(info.violationNumber)\" />\n </div>\n </div>\n\n <!-- Left Side: Meta Info (Date & Reference) -->\n <div class=\"violation-info-card__header-left\">\n <div class=\"violation-info-card__meta-row\">\n @if (labels().referenceNumberLabel && info.referenceNumber) {\n <div class=\"violation-info-card__meta-group\">\n <span class=\"violation-info-card__meta-label\">{{ labels().referenceNumberLabel | translate }}</span>\n <span class=\"violation-info-card__meta-value\" dir=\"ltr\">#{{ info.referenceNumber }}</span>\n <ncim-clipboard-button [value]=\"info.referenceNumber\" [size]=\"12\" (copied)=\"copied.emit(info.referenceNumber)\" />\n </div>\n <span class=\"violation-info-card__meta-separator\">|</span>\n }\n <div class=\"violation-info-card__meta-group\">\n <span class=\"violation-info-card__meta-label\">{{ labels().createdDateLabel | translate }}</span>\n <span class=\"violation-info-card__meta-value\">{{ info.createdDate | localizedDate: 'long' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"violation-info-card__divider\"></div>\n\n <div class=\"violation-info-card__container\">\n <!-- Right Side (Entity Info) -->\n <div class=\"violation-info-card__entity-section\">\n <div class=\"violation-info-card__entity-details\">\n @if (info.entityName) {\n <span class=\"violation-info-card__label\">{{ labels().entityLabel | translate }}</span>\n <h4 class=\"violation-info-card__entity-name\">{{ info.entityName }}</h4>\n }\n <div class=\"violation-info-card__location\">\n @if (info.emirate) {\n <span class=\"violation-info-card__location-text\"\n >{{ 'VIOLATION_INFO.MUNICIPALITY' | translate }}\n <span class=\"violation-info-card__content\">{{\n info.emirate | replace: ('VIOLATION_INFO.MUNICIPALITY' | translate)\n }}</span></span\n >\n }\n @if (info.location) {\n <span class=\"violation-info-card__location-text\"\n >{{ 'VIOLATION_INFO.SECRETARIAT' | translate }}\n <span class=\"violation-info-card__content\">{{\n info.location | replace: ('VIOLATION_INFO.SECRETARIAT' | translate)\n }}</span></span\n >\n }\n </div>\n </div>\n <span class=\"violation-info-card__entity-logo\">\n <img [src]=\"info.entityLogo\" [alt]=\"info.entityName\" ncimImgFallback class=\"\" />\n </span>\n </div>\n\n <!-- Left Side (Violator Info) -->\n <div class=\"violation-info-card__violator-section\">\n <!-- Row 1: Violator Name -->\n @if (info.applicant || info.violatorName || info.entityName) {\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().violatorLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--{{ info.violation ? 'highlight' : '' }}\">{{\n info.applicant ?? info.violatorName ?? info.entityName\n }}</span>\n </div>\n }\n @if (info.violation) {\n <!-- Row 2: National ID -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().nationalNumberLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--badge\">{{ info.nationalNumber }}</span>\n </div>\n <!-- Row 3: Activity -->\n @if (!environment.hasUnderDevelopmentFeatures) {\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().activityLabel | translate }}</span>\n <span class=\"violation-info-card__value\">{{ info.activity }}</span>\n </div>\n }\n } @else {\n <!-- Row 3: Activity -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().activityLabel | translate }}</span>\n <span class=\"violation-info-card__value\">{{ info.activity }}</span>\n </div>\n <!-- Row 2: National ID -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().nationalNumberLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--badge\">{{ info.nationalNumber }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Tooltip as PrimeNgTooltip } from 'primeng/tooltip';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n selector: 'ncim-tooltip',\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PrimeNgTooltip],\n})\nexport class Tooltip {\n readonly text = input.required<string>();\n readonly position = input<TooltipPosition>('top');\n readonly disabled = input<boolean>(false);\n /** Z-index for the tooltip overlay. Default 1100. */\n readonly zIndex = input<string>('1100');\n}\n","<span\n class=\"ncim-tooltip__trigger\"\n [pTooltip]=\"text()\"\n [tooltipPosition]=\"position()\"\n [tooltipDisabled]=\"disabled()\"\n appendTo=\"body\"\n [tooltipZIndex]=\"zIndex()\"\n>\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { ProgressBar } from '../../atoms/progress-bar/progress-bar';\nimport { Tooltip } from '../../atoms/tooltip/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { mergeWithDefaults, getCorrectionPeriodConfig } from '../violation.utils';\n\nexport interface ViolationSummaryLabels {\n violationDegreeLabel?: string; // \"درجة المخالفة\"\n repeatCountLabel?: string; // \"مرات تكرار المخالفة\" (updated from \"الوحدات\" based on old code vs new design)\n unitsLabel?: string; // \"الوحدات\"\n progressLabel?: string;\n dayLabel?: string;\n typeOfObjectionLabel?: string; // \"نوع الاعتراض\"\n}\n\nexport interface ViolationSummary {\n title?: string;\n violationDegree?: string; // e.g. \"جسيمة\"\n violationType?: string; // Used for Repeat Count in design mapping? Or is this legacy? Let's keep it as is from design: \"المرة الثانية\" -> Repeat Count\n repeatCount?: string; // e.g. \"المرة الثانية\"\n units?: string; // e.g. \"3 رخص\"\n daysRemaining?: number;\n totalDays?: number;\n progressLabel?: string;\n endDate?: Date;\n labels?: ViolationSummaryLabels;\n typeOfObjection?: string; // \"نوع الاعتراض\"\n}\n\n@Component({\n selector: 'ncim-violation-summary-card',\n imports: [LocalizedDatePipe, Icon, TranslateModule, ProgressBar, Tooltip],\n templateUrl: './violation-summary-card.html',\n styleUrl: './violation-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationSummaryCard {\n readonly summary = input<ViolationSummary | null>(null);\n\n private readonly defaultLabels: ViolationSummaryLabels = {\n violationDegreeLabel: 'VIOLATION_INFO.VIOLATION_DEGREE_LABEL',\n repeatCountLabel: 'VIOLATION_INFO.REPEAT_COUNT_LABEL',\n unitsLabel: 'VIOLATION_INFO.UNITS_LABEL',\n progressLabel: 'VIOLATION_INFO.PROGRESS_LABEL',\n dayLabel: 'VIOLATION_INFO.DAY_LABEL',\n typeOfObjectionLabel: 'VIOLATION_INFO.OBJECTION_TYPE_LABEL',\n };\n\n readonly labels = computed<ViolationSummaryLabels>(() =>\n mergeWithDefaults(this.summary()?.labels, this.defaultLabels)\n );\n\n readonly calculatedDaysRemaining = computed<number>(() => this.summary()?.daysRemaining ?? 0);\n\n readonly calculatedTotalDays = computed<number | null>(() => this.summary()?.totalDays ?? null);\n\n readonly progressPercentage = computed<number>(() => {\n const total = this.calculatedTotalDays();\n\n if (!total) {\n return 0;\n }\n\n const remaining = this.calculatedDaysRemaining();\n if (total <= 0) {\n return 100;\n }\n const percentage = ((total - remaining) / total) * 100;\n return Math.min(Math.max(percentage, 0), 100);\n });\n\n readonly progressConfig = computed(() => getCorrectionPeriodConfig(this.progressPercentage()));\n\n readonly progressColor = computed(() => this.progressConfig().barColor);\n\n readonly progressTextColor = computed(() => this.progressConfig().textColor);\n\n readonly progressIconName = computed(() => this.progressConfig().iconName);\n}\n","@if (summary(); as data) {\n <div class=\"violation-summary-card\">\n <h3 class=\"violation-summary-card__title\">{{ data.title | translate }}</h3>\n\n <div class=\"violation-summary-card__content\">\n <!-- Violation Degree -->\n @if (data.violationDegree) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().violationDegreeLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().violationDegreeLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value violation-summary-card__row-value--badge\">{{\n data.violationDegree | translate\n }}</span>\n </div>\n }\n <!-- Repeat Count -->\n @if (data.repeatCount) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().repeatCountLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().repeatCountLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.repeatCount }}</span>\n </div>\n }\n <!-- Units -->\n @if (data.units) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().unitsLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().unitsLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.units | translate }}</span>\n </div>\n }\n @if (data.typeOfObjection) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().typeOfObjectionLabel | translate }}</span>\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.typeOfObjection | translate }}</span>\n </div>\n }\n\n <!-- Dashed Divider + Progress Section -->\n @if (calculatedTotalDays()) {\n <div class=\"violation-summary-card__divider\"></div>\n\n <div class=\"violation-summary-card__progress-section\">\n <div class=\"violation-summary-card__progress-info\">\n <h4 class=\"violation-summary-card__progress-label\">{{ labels().progressLabel | translate }}</h4>\n\n @if (data.endDate) {\n <span class=\"violation-summary-card__progress-date\">\n <span class=\"violation-summary-card__progress-status-label\">{{ 'VIOLATION_INFO.DEADLINE' | translate }}: </span>\n <span class=\"violation-summary-card__progress-status-date\">{{ data.endDate | localizedDate: 'long' }}</span>\n </span>\n }\n </div>\n\n <div class=\"violation-summary-card__progress-status\">\n <span class=\"violation-summary-card__progress-days\" [style.color]=\"progressTextColor()\">\n <ncim-icon [name]=\"progressIconName()\" [size]=\"16\" class=\"violation-summary-card__progress-icon\"></ncim-icon>\n <span class=\"violation-summary-card__days-number\">{{ calculatedDaysRemaining() }}</span>\n <span class=\"violation-summary-card__days-text\">{{ labels().dayLabel | translate }}</span>\n </span>\n <ncim-progress-bar\n [showThumb]=\"false\"\n class=\"violation-summary-card__progress-bar\"\n [progress]=\"progressPercentage()\"\n [max]=\"100\"\n [color]=\"progressColor()\"\n />\n </div>\n </div>\n }\n </div>\n <ng-content></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../icon/icon';\nimport { mergeWithDefaults } from '../../organisms/violation.utils';\nimport { CommonModule } from '@angular/common';\n\nexport interface PenaltyBadgeLabels {\n title?: string; // \"العقوبة التبعية\"\n durationLabel?: string; // \"مدة\"\n fineLabel?: string; // \"غرامة مالية بقيمة\"\n objectionText?: string; // \"هل لديك اعتراض على المخالفة؟\"\n objectionLink?: string; // \"تقديم اعتراض\"\n deadlineLabel?: string; // \"تنتهي مهلة الاعتراض خلال\"\n}\n\nexport interface PenaltyInfo {\n penaltyType?: string;\n duration?: string;\n amount?: number;\n stampText?: string;\n stampDate?: Date;\n objectionDeadline?: string; // e.g., \"14 days\"\n objectionEndDate?: Date;\n labels?: PenaltyBadgeLabels;\n state?: boolean;\n image?: string;\n successMessage?: string;\n resolution?: string;\n}\n\n@Component({\n selector: 'ncim-penalty-badge',\n imports: [LocalizedDatePipe, Icon, TranslateModule, CommonModule],\n templateUrl: './penalty-badge.html',\n styleUrl: './penalty-badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PenaltyBadge {\n penalty = input<PenaltyInfo | null>(null);\n customStamp = input<boolean>();\n objectionLinkClick = output<void>();\n\n defaultLabels: PenaltyBadgeLabels = {\n title: 'العقوبة التبعية',\n durationLabel: 'مدة',\n fineLabel: 'غرامة مالية بقيمة',\n objectionText: 'هل لديك اعتراض على المخالفة؟',\n objectionLink: 'تقديم اعتراض',\n deadlineLabel: 'تنتهي مهلة الاعتراض خلال',\n };\n\n get labels(): PenaltyBadgeLabels {\n return mergeWithDefaults(this.penalty()?.labels, this.defaultLabels);\n }\n}\n","@if (penalty(); as data) {\n <div class=\"penalty-badge__{{ data.state ? 'success' : 'error' }}\">\n <div class=\"penalty-badge__header--{{ data.state ? 'success' : 'error' }}\">\n <div class=\"{{ data.state ? '' : 'penalty-badge__status-indicator--error' }}\"></div>\n <h3 class=\"penalty-badge__title\">{{ labels.title | translate }}</h3>\n </div>\n\n <!-- Stamp: always prefer ng-content if customStamp is set -->\n <div class=\"penalty-badge__stamp-wrapper penalty-badge__stamp-wrapper--{{ data.state ? 'success' : '' }}\">\n @if (customStamp()) {\n <ng-content select=\"[stamp]\"></ng-content>\n } @else {\n <div class=\"stamp\">\n <img class=\"penalty-badge__stamp-image\" [src]=\"data.image\" alt=\"\" />\n </div>\n }\n </div>\n\n @if (data.state) {\n <div class=\"penalty-badge__message penalty-badge__message--success\">\n <p class=\"penalty-badge__message-text\">{{ data.successMessage }}</p>\n <p class=\"penalty-badge__resolution\">{{ data.resolution }}</p>\n </div>\n } @else {\n <!-- Penalty List -->\n <div class=\"penalty-badge__list\">\n <div class=\"penalty-badge__list-item\">\n <span class=\"penalty-badge__item-label\">{{ data.penaltyType | translate }}</span>\n <span class=\"penalty-badge__item-value\">{{ labels.durationLabel | translate }} {{ data.duration }}</span>\n </div>\n <div class=\"penalty-badge__list-item\">\n <span class=\"penalty-badge__item-label\">{{ labels.fineLabel | translate }}</span>\n <span class=\"penalty-badge__item-value penalty-badge__item-value--amount\">\n {{ data.amount }}\n <ncim-icon name=\"sar\" [size]=\"20\"></ncim-icon>\n </span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"penalty-badge__footer\">\n <div class=\"penalty-badge__objection-text\">\n {{ labels.objectionText | translate }}\n <a class=\"penalty-badge__objection-link\" (click)=\"objectionLinkClick.emit()\">{{ labels.objectionLink | translate }}</a>\n </div>\n <span class=\"penalty-badge__objection-deadline\">\n {{ labels.deadlineLabel | translate }}: {{ data.objectionDeadline }} - {{ data.objectionEndDate | localizedDate: 'long' }}\n </span>\n </div>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type DgaTagVariant = 'neutral' | 'success' | 'danger' | 'warning' | 'info' | 'purple';\nexport type DgaTagStyle = 'subtle' | 'inverted' | 'outline';\nexport type DgaTagSize = 'default' | 'sm' | 'xs';\n\n@Component({\n selector: 'ncim-dga-tag',\n templateUrl: './dga-tag.html',\n styleUrl: './dga-tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DgaTag {\n readonly variant = input<DgaTagVariant>('neutral');\n readonly style = input<DgaTagStyle>('subtle');\n readonly size = input<DgaTagSize>('default');\n readonly textDark = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n\n readonly tagClasses = computed(() => {\n const v = this.variant();\n const s = this.style();\n const size = this.size();\n const classes: string[] = ['dga-tag'];\n if (size !== 'default') {\n classes.push(`dga-tag-${size}`);\n }\n classes.push(`dga-tag-status-${s}`);\n classes.push(`dga-tag-${v}`);\n if (this.textDark()) {\n classes.push('text-dark');\n }\n return classes.join(' ');\n });\n}\n","<span [class]=\"tagClasses()\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface TimelineStep {\n /** Label or i18n key for the step */\n label: string;\n /** Date for formatting. Ignored when dateDisplay is set. */\n date: Date;\n /** Whether this step is the active/latest one */\n isActive?: boolean;\n /** Optional pre-formatted date string. When set, used instead of date pipe. */\n dateDisplay?: string;\n}\n\nexport interface TimelineData {\n title: string;\n timelineSteps: TimelineStep[];\n}\n\n@Component({\n selector: 'ncim-violation-timeline',\n imports: [LocalizedDatePipe, TranslateModule],\n templateUrl: './violation-timeline.html',\n styleUrl: './violation-timeline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationTimeline {\n timeline = input<TimelineData | null>(null);\n}\n","@if (timeline(); as data) {\n <div class=\"violation-timeline\">\n <div class=\"violation-timeline__header\">\n <h4 class=\"violation-timeline__title\">{{ data.title | translate }}</h4>\n </div>\n\n <div class=\"violation-timeline__list\">\n @for (step of data.timelineSteps; track step.label; let i = $index) {\n <div class=\"violation-timeline__item\" [class.violation-timeline__item--active]=\"step.isActive ?? i === 0\">\n <div class=\"violation-timeline__marker\"></div>\n <div class=\"violation-timeline__content\">\n <div class=\"violation-timeline__text\">{{ step.label | translate }}</div>\n <div class=\"violation-timeline__date\">{{ step.dateDisplay ?? (step.date | localizedDate: 'dateTimeFull') }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\n\nexport interface Permit {\n title: string;\n number: string;\n startDate: string;\n endDate: string;\n status: 'valid' | 'expiring' | 'expired';\n statusLabel: string;\n}\n\nexport interface VisitDetailsData {\n visitNumber: string;\n visitDate: string;\n supervisionType: string;\n licenseStatus: 'valid' | 'expired' | string;\n licenseStatusLabel: string;\n permits: Permit[];\n}\n\n@Component({\n selector: 'ncim-visit-details',\n imports: [TranslateModule, Icon, ClipboardButton],\n templateUrl: './visit-details.html',\n styleUrl: './visit-details.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VisitDetails {\n data = input.required<VisitDetailsData>();\n}\n","<div class=\"visit-details\">\n <div class=\"visit-details__header\">\n <h3 class=\"visit-details__title\">{{ 'VISIT_DETAILS.TITLE' | translate }}</h3>\n </div>\n\n <div class=\"visit-details__info-grid\">\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"layers\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.VISIT_NUMBER' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span dir=\"ltr\">{{ data().visitNumber }}</span>\n <ncim-clipboard-button [value]=\"data().visitNumber\" [size]=\"18\" />\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"calendar-minus\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.VISIT_DATE' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span>{{ data().visitDate }}</span>\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"layers\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.SUPERVISION_TYPE' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span>{{ data().supervisionType }}</span>\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"calendar-plus\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.LICENSE_STATUS' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span class=\"visit-details__badge\" [class]=\"'visit-details__badge--' + data().licenseStatus\">\n {{ data().licenseStatusLabel | translate }}\n </span>\n </div>\n </div>\n </div>\n\n @if (data().permits && data().permits.length > 0) {\n <div class=\"visit-details__divider\"></div>\n\n <div class=\"visit-details__permits-header\">\n <h4 class=\"visit-details__permits-title\">{{ 'VISIT_DETAILS.PERMITS_AT_VISIT' | translate }}</h4>\n <span class=\"visit-details__permits-count\">{{ data().permits.length }}</span>\n </div>\n\n <div class=\"visit-details__permits-grid\">\n @for (permit of data().permits; track permit.number) {\n <div class=\"permit-card\">\n <div class=\"permit-card__header\">\n <h5 class=\"permit-card__title\">{{ permit.title }}</h5>\n <span class=\"permit-card__badge\" [class]=\"'permit-card__badge--' + permit.status\">\n {{ permit.statusLabel | translate }}\n </span>\n </div>\n\n <div class=\"permit-card__body\">\n <div class=\"permit-card__number\">\n <span dir=\"ltr\">{{ permit.number }}</span>\n <ncim-clipboard-button [value]=\"permit.number\" [size]=\"16\" />\n </div>\n <div class=\"permit-card__dates\">{{ permit.startDate }} - {{ permit.endDate }}</div>\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\n/**\n * Represents a single status box within the summary card.\n */\nexport interface SummaryStatusItem {\n /** Label for the status (e.g., 'ممتثل') */\n label: string;\n /** Numerical value to display */\n value: number;\n /** Status type for styling: 'success' | 'warning' | 'info' | 'danger' */\n status: 'success' | 'warning' | 'info' | 'danger';\n /** Icon name from the ncim-icon set */\n icon: string;\n}\n\n/**\n * Complete data structure for the Inspection Summary Card.\n */\nexport interface InspectionSummaryData {\n itemsCount: string | null | undefined;\n /** Main card title (e.g., 'نتيجة الفحص الفني') */\n title: string;\n /** Total items count */\n totalCount: number;\n /** Label for total items (e.g., 'بند') */\n totalCountLabel: string;\n /** List of individual status summaries */\n stats: SummaryStatusItem[];\n /** Latest approval/visit date */\n approvalDate: string;\n}\n\n@Component({\n selector: 'ncim-inspection-summary-card',\n standalone: true,\n imports: [CommonModule, TranslateModule, Icon],\n templateUrl: './inspection-summary-card.html',\n styleUrl: './inspection-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InspectionSummaryCard {\n data = input<InspectionSummaryData | null>(null);\n}\n","@if (data(); as summary) {\n <div class=\"sidebar-card\">\n <div class=\"sidebar-card__header\">\n <h3 class=\"sidebar-card__title\">{{ summary.title | translate }}</h3>\n <span class=\"sidebar-card__subtitle\">\n {{ 'LICENSE_DETAILS.SUMMARY_COUNT' | translate }}\n <strong class=\"sidebar-card__subtitle__count\">{{ summary.totalCount }}</strong\n >{{ 'LICENSE_DETAILS.ITEMS_COUNT' | translate }}</span\n >\n </div>\n\n <div class=\"status-grid\">\n @for (item of summary.stats; track item.label) {\n <div class=\"status-box\" [class]=\"'status-box--' + item.status\">\n <ncim-icon [name]=\"item.icon\" [size]=\"16\" class=\"status-box__icon\"></ncim-icon>\n <div class=\"status-box__header\">\n <span class=\"status-box__label\">{{ item.label | translate }}</span>\n </div>\n <span class=\"status-box__value\">{{ item.value }}</span>\n </div>\n }\n </div>\n\n <div class=\"sidebar-card__footer\">{{ 'LICENSE_DETAILS.TECH_REPORT.APPROVAL_DATE_PREFIX' | translate }} {{ summary.approvalDate }}</div>\n </div>\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-icon-card',\n imports: [TranslateModule, Icon],\n templateUrl: './icon-card.html',\n styleUrl: './icon-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconCard {\n readonly title = input.required<string>();\n readonly subTitle = input<string>('');\n readonly icon = input.required<IconName>();\n readonly backgroundColor = input<string>('#8B2942');\n readonly iconSize = input<number>(40);\n readonly isSelected = input<boolean>(false);\n readonly isDisabled = input<boolean>(false);\n readonly useTranslate = input<boolean>(true);\n readonly clickable = input<boolean>(false);\n\n readonly clicked = output<void>();\n\n onSpaceKey(event: Event): void {\n if (this.clickable() && !this.isDisabled()) {\n event.preventDefault();\n this.clicked.emit();\n }\n }\n}\n","<div\n class=\"icon-card\"\n [style.--icon-card-bg]=\"backgroundColor()\"\n [class.icon-card--selected]=\"isSelected()\"\n [class.icon-card--disabled]=\"isDisabled()\"\n [class.icon-card--clickable]=\"clickable() && !isDisabled()\"\n [attr.tabindex]=\"clickable() && !isDisabled() ? 0 : null\"\n [attr.role]=\"clickable() ? 'button' : null\"\n (click)=\"clickable() && !isDisabled() && clicked.emit()\"\n (keydown.enter)=\"clickable() && !isDisabled() && clicked.emit()\"\n (keydown.space)=\"onSpaceKey($event)\"\n>\n <div class=\"icon-card__icon-wrap\">\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" class=\"icon-card__icon\" />\n </div>\n <h3 class=\"icon-card__title\">\n @if (useTranslate()) {\n {{ title() | translate }}\n } @else {\n {{ title() }}\n }\n </h3>\n @if (subTitle()) {\n <p class=\"icon-card__subtitle\">\n @if (useTranslate()) {\n {{ subTitle() | translate }}\n } @else {\n {{ subTitle() }}\n }\n </p>\n }\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-form-error',\n imports: [TranslateModule],\n templateUrl: './form-error.html',\n styleUrl: './form-error.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormError {\n readonly show = input.required<boolean>();\n readonly messageKey = input.required<string>();\n readonly id = input<string | null>(null);\n}\n","@if (show()) {\n <span class=\"form-error\" role=\"alert\" [attr.id]=\"id()\">{{ messageKey() | translate }}</span>\n}\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport type SkeletonVariant =\n | 'text'\n | 'circular'\n | 'rectangular'\n | 'rounded'\n | 'avatar'\n | 'button'\n | 'chip'\n | 'card'\n | 'image'\n | 'header'\n | 'paragraph'\n | 'divider'\n | 'badge'\n | 'input';\nexport type SkeletonAnimation = 'pulse' | 'wave' | 'none';\n\n@Component({\n selector: 'ncim-skeleton',\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule],\n})\nexport class Skeleton {\n /** Shape variant of the skeleton */\n readonly variant = input<SkeletonVariant>('text');\n\n /** Animation style */\n readonly animation = input<SkeletonAnimation>('wave');\n\n /** Width — accepts any CSS value (px, %, rem, etc.). Defaults to 100% for most variants. */\n readonly width = input<string>('');\n\n /** Height — accepts any CSS value. Auto-calculated for text variant if not set. */\n readonly height = input<string>('');\n\n /** Border radius — override the variant's default radius */\n readonly borderRadius = input<string>('');\n\n /** Number of skeleton lines to render (useful for paragraph placeholders) */\n readonly count = input<number>(1);\n\n /** Gap between repeated lines */\n readonly gap = input<string>('12px');\n\n /** Whether the last line in a multi-line skeleton should be shorter */\n readonly shrinkLastLine = input<boolean>(true);\n\n /** Custom aspect ratio (e.g. '16/9', '1/1') — sets height automatically via CSS */\n readonly aspectRatio = input<string>('');\n\n /** Lines array derived from count */\n readonly lines = computed(() => Array.from({ length: this.count() }, (_, i) => i));\n\n /** Whether this is a multi-line skeleton */\n readonly isMultiLine = computed(() => this.count() > 1);\n\n /** Computed inline styles for the skeleton element */\n readonly skeletonStyles = computed(() => {\n const styles: Record<string, string> = {};\n\n const w = this.width();\n const h = this.height();\n const br = this.borderRadius();\n const ar = this.aspectRatio();\n\n if (w) {\n styles['width'] = w;\n }\n if (h) {\n styles['height'] = h;\n }\n if (br) {\n styles['border-radius'] = br;\n }\n if (ar) {\n styles['aspect-ratio'] = ar;\n }\n\n return styles;\n });\n\n /** Computed container styles (gap for multi-line) */\n readonly containerStyles = computed(() => {\n const styles: Record<string, string> = {};\n if (this.isMultiLine()) {\n styles['gap'] = this.gap();\n }\n return styles;\n });\n\n /** Whether a specific line is the last and should shrink */\n isLastLine(index: number): boolean {\n return this.shrinkLastLine() && this.isMultiLine() && index === this.count() - 1;\n }\n}\n","<div\n class=\"skeleton-container\"\n [class.skeleton-container--multi]=\"isMultiLine()\"\n [style]=\"containerStyles()\"\n role=\"status\"\n [attr.aria-label]=\"'ARIA.LOADING_CONTENT' | translate\"\n>\n @for (i of lines(); track i) {\n <span\n class=\"skeleton\"\n [class.skeleton--text]=\"variant() === 'text'\"\n [class.skeleton--circular]=\"variant() === 'circular'\"\n [class.skeleton--rectangular]=\"variant() === 'rectangular'\"\n [class.skeleton--rounded]=\"variant() === 'rounded'\"\n [class.skeleton--avatar]=\"variant() === 'avatar'\"\n [class.skeleton--button]=\"variant() === 'button'\"\n [class.skeleton--chip]=\"variant() === 'chip'\"\n [class.skeleton--card]=\"variant() === 'card'\"\n [class.skeleton--image]=\"variant() === 'image'\"\n [class.skeleton--header]=\"variant() === 'header'\"\n [class.skeleton--paragraph]=\"variant() === 'paragraph'\"\n [class.skeleton--divider]=\"variant() === 'divider'\"\n [class.skeleton--badge]=\"variant() === 'badge'\"\n [class.skeleton--input]=\"variant() === 'input'\"\n [class.skeleton--pulse]=\"animation() === 'pulse'\"\n [class.skeleton--wave]=\"animation() === 'wave'\"\n [class.skeleton--no-animation]=\"animation() === 'none'\"\n [class.skeleton--last]=\"isLastLine(i)\"\n [style]=\"skeletonStyles()\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"sr-only\">{{ 'COMMON.LOADING' | translate }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Indeterminate loading spinner. Use for loading states (e.g. SSO redirect, form submission).\n */\n@Component({\n selector: 'ncim-spinner',\n templateUrl: './spinner.html',\n styleUrl: './spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Spinner {\n /** Size in pixels. Default 48. */\n readonly size = input<number>(48);\n}\n","<div class=\"ncim-spinner\" role=\"status\" aria-hidden=\"true\" [style.width.px]=\"size()\" [style.height.px]=\"size()\"></div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '@libs/ui-components/shared/templates/auth-layout/auth-layout';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n/**\n * Presentational component for SSO error display.\n * Receives all data via inputs — no route, router, or business logic.\n *\n * Use from a smart container that reads route params and passes the data.\n */\n@Component({\n selector: 'ncim-sso-error-display',\n imports: [AuthLayout, Icon, NcimButton, RouterLink, TranslateModule],\n templateUrl: './sso-error-display.html',\n styleUrl: './sso-error-display.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SsoErrorDisplay {\n /** SSO error code (e.g. 'access_denied'). */\n readonly errorCode = input.required<string>();\n\n /** Server-provided description, or null to use errorMessageKey. */\n readonly errorDescription = input<string | null>(null);\n\n /** i18n key for message when errorDescription is null (e.g. AUTH.SSO.ERROR.CODES.access_denied). */\n readonly errorMessageKey = input.required<string>();\n\n /** Whether to show the error code badge. */\n readonly showCodeBadge = input<boolean>(false);\n\n /** Whether to show the \"Try Again\" retry button (for recoverable errors). */\n readonly showRetryButton = input<boolean>(false);\n\n /** Router path for the \"Back to login\" link. */\n readonly loginPath = input.required<string>();\n\n /** i18n key for the page title. */\n readonly titleKey = input<string>('AUTH.SSO.ERROR.TITLE');\n\n /** i18n key for the code label. */\n readonly codeLabelKey = input<string>('AUTH.SSO.ERROR.CODE_LABEL');\n\n /** i18n key for the back button. */\n readonly backToLoginKey = input<string>('AUTH.SSO.ERROR.BACK_TO_LOGIN');\n\n /** i18n key for the retry button. */\n readonly retryLabelKey = input<string>('AUTH.SSO.ERROR.RETRY');\n\n /** Emitted when the user clicks the retry button. */\n readonly retryClick = output<void>();\n}\n","<ncim-auth-layout>\n <section class=\"ncim-sso-error-display\" role=\"alert\" [attr.aria-label]=\"titleKey() | translate\">\n <div class=\"ncim-sso-error-display__icon-wrapper\" aria-hidden=\"true\">\n <ncim-icon name=\"warning\" [size]=\"64\" />\n </div>\n <h1 class=\"ncim-sso-error-display__title\">{{ titleKey() | translate }}</h1>\n <p class=\"ncim-sso-error-display__message\" aria-live=\"polite\">\n {{ errorDescription() ?? (errorMessageKey() | translate) }}\n </p>\n @if (showCodeBadge()) {\n <div class=\"ncim-sso-error-display__code-badge\">\n <span class=\"ncim-sso-error-display__code-label\">{{ codeLabelKey() | translate }}</span>\n <code class=\"ncim-sso-error-display__code-value\">{{ errorCode() }}</code>\n </div>\n }\n <div class=\"ncim-sso-error-display__actions\">\n @if (showRetryButton()) {\n <ncim-button type=\"button\" variant=\"secondary\" [fullWidth]=\"false\" (click)=\"retryClick.emit()\">\n {{ retryLabelKey() | translate }}\n </ncim-button>\n }\n <ncim-button variant=\"black\" [fullWidth]=\"false\" [routerLink]=\"loginPath()\">\n {{ backToLoginKey() | translate }}\n </ncim-button>\n </div>\n </section>\n</ncim-auth-layout>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '@libs/ui-components/shared/templates/auth-layout/auth-layout';\nimport { Spinner } from '@libs/ui-components/shared/atoms/spinner/spinner';\n\n/**\n * Presentational component for SSO callback loading state.\n * Shows spinner and redirect message — no redirect logic.\n *\n * Use from a smart container that handles the actual redirect.\n */\n@Component({\n selector: 'ncim-sso-callback-view',\n imports: [AuthLayout, Spinner, TranslateModule],\n templateUrl: './sso-callback-view.html',\n styleUrl: './sso-callback-view.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SsoCallbackView {\n /** i18n key for the title (e.g. \"Redirecting...\"). */\n readonly titleKey = input<string>('AUTH.SSO.REDIRECTING');\n\n /** i18n key for the description message. */\n readonly messageKey = input<string>('AUTH.SSO.REDIRECTING_DESC');\n\n /** Spinner size in pixels. */\n readonly spinnerSize = input<number>(48);\n}\n","<ncim-auth-layout>\n <div class=\"ncim-sso-callback-view\" role=\"status\" aria-live=\"polite\">\n <ncim-spinner [size]=\"spinnerSize()\" />\n <h2 class=\"ncim-sso-callback-view__title\">{{ titleKey() | translate }}</h2>\n <p class=\"ncim-sso-callback-view__message\">{{ messageKey() | translate }}</p>\n </div>\n</ncim-auth-layout>\n","import { Component, ChangeDetectionStrategy, computed, inject, signal } from '@angular/core';\nimport { GENERATED_ICON_NAMES } from '@libs/core/constants';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\ninterface IconItem {\n name: string;\n displayName: string;\n}\n\n@Component({\n selector: 'ncim-icons-document',\n imports: [Icon, ToastModule, TranslateModule],\n templateUrl: './icons-document.html',\n styleUrl: './icons-document.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService],\n})\nexport class IconsDocument {\n private readonly messageService = inject(MessageService);\n readonly searchTerm = signal('');\n\n readonly icons: IconItem[] = GENERATED_ICON_NAMES.map(name => ({\n name,\n displayName: this.toDisplayName(name),\n }));\n\n readonly filteredIcons = computed(() => {\n const query = this.searchTerm().trim().toLowerCase();\n\n if (!query) {\n return this.icons;\n }\n\n return this.icons.filter(icon => {\n const iconName = icon.name.toLowerCase();\n const displayName = icon.displayName.toLowerCase();\n return iconName.includes(query) || displayName.includes(query);\n });\n });\n\n onSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n this.searchTerm.set(target.value);\n }\n\n copyToClipboard(iconName: string): void {\n navigator.clipboard.writeText(iconName).then(() => {\n this.messageService.add({\n severity: 'success',\n summary: 'Copied!',\n detail: `Icon name \"${iconName}\" copied to clipboard`,\n life: 2000,\n });\n });\n }\n\n private toDisplayName(iconName: string): string {\n return iconName\n .replace(/[-_]+/g, ' ')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/\\s+/g, ' ')\n .trim()\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n}\n","<p-toast position=\"top-center\" />\n\n<div class=\"icons-document\">\n <div class=\"icons-document__header\">\n <h1 class=\"icons-document__title\">{{ 'ICONS_DOCUMENT.TITLE' | translate }}</h1>\n <p class=\"icons-document__description\">{{ 'ICONS_DOCUMENT.DESCRIPTION' | translate }}</p>\n <p class=\"icons-document__sync-note\">{{ 'ICONS_DOCUMENT.SYNC_NOTE' | translate }}</p>\n </div>\n\n <div class=\"icons-document__search-wrapper\">\n <input\n class=\"icons-document__search-input\"\n type=\"search\"\n [value]=\"searchTerm()\"\n [placeholder]=\"'ICONS_DOCUMENT.SEARCH_PLACEHOLDER' | translate\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <div class=\"icons-document__grid\">\n @if (filteredIcons().length) {\n @for (icon of filteredIcons(); track icon.name) {\n <div class=\"icon-card\" (click)=\"copyToClipboard(icon.name)\">\n <div class=\"icon-card__copy-hint\">\n <ncim-icon name=\"copy\" [size]=\"14\" />\n </div>\n <div class=\"icon-card__icon\">\n <ncim-icon [name]=\"icon.name\" [size]=\"32\" />\n </div>\n <div class=\"icon-card__name\">{{ icon.displayName }}</div>\n <div class=\"icon-card__code\">{{ icon.name }}</div>\n </div>\n }\n } @else {\n <p class=\"icons-document__empty\">{{ 'ICONS_DOCUMENT.NO_RESULTS' | translate }}</p>\n }\n </div>\n</div>\n","import { NgOptimizedImage } from '@angular/common';\nimport { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { CategoryTile } from '@libs/ui-components/shared/molecules/category-tile/category-tile';\n\n/** Sector shape for entity summary card; compatible with RegulatedSectorType from features. */\nexport interface EntitySummarySector {\n id: string | number;\n name: string;\n label: string;\n icon: string;\n routerLink?: string;\n}\n\n@Component({\n selector: 'ncim-entity-summary-card',\n imports: [NgOptimizedImage, CategoryTile, NcimButton, TranslatePipe],\n templateUrl: './entity-summary-card.html',\n styleUrl: './entity-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntitySummaryCard {\n readonly logo = input.required<string>();\n readonly name = input.required<string>();\n readonly description = input.required<string>();\n readonly sectors = input.required<EntitySummarySector[]>();\n readonly sectorClick = output<string>();\n readonly infoClick = output<void>();\n}\n","<div class=\"entity-summary-card__inner\">\n <div class=\"entity-summary-card__header\">\n <div class=\"entity-summary-card__content\">\n <img [ngSrc]=\"logo()\" width=\"78\" height=\"78\" alt=\"entity icon\" class=\"entity-summary-card__icon\" />\n <div class=\"entity-summary-card__info\">\n <h2 class=\"entity-summary-card__name\">{{ name() }}</h2>\n <p class=\"entity-summary-card__description\">{{ description() }}</p>\n </div>\n </div>\n\n <div class=\"entity-summary-card__actions\">\n <ncim-button (click)=\"infoClick.emit()\" [iconSize]=\"24\" variant=\"neutral\" size=\"small-icon-only\" icon=\"info\" />\n <ncim-button [iconSize]=\"24\" variant=\"neutral\" size=\"small-icon-only\" icon=\"settings\" />\n </div>\n </div>\n <div class=\"entity-summary-card__body\">\n @for (sector of sectors(); track sector.id) {\n <ncim-category-tile\n (click)=\"sectorClick.emit(sector.name)\"\n [routerLink]=\"sector.routerLink\"\n [label]=\"sector.label | translate\"\n [icon]=\"sector.icon\"\n />\n }\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-category-tile',\n imports: [Icon, RouterLink],\n templateUrl: './category-tile.html',\n styleUrl: './category-tile.scss',\n})\nexport class CategoryTile {\n readonly icon = input.required<string>();\n readonly label = input.required<string>();\n readonly routerLink = input<string>();\n readonly description = input<string | null>(null);\n readonly variant = input<'wide' | 'narrow'>('wide');\n}\n","<button\n class=\"category-tile\"\n [class.category-tile--narrow]=\"variant() === 'narrow'\"\n [class.category-tile--wide]=\"variant() === 'wide'\"\n [routerLink]=\"routerLink()\"\n>\n <div class=\"category-tile__content\">\n <ncim-icon [name]=\"icon()\" [size]=\"50\" />\n <div class=\"category-tile__info\">\n <h3 class=\"category-tile__label\">{{ label() }}</h3>\n @if (description()) {\n <p class=\"category-tile__description\">{{ description() }}</p>\n }\n </div>\n </div>\n <ncim-icon class=\"category-tile__arrow\" name=\"regularArrowLeft\" [size]=\"16\" />\n</button>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-create-category-tile',\n imports: [NcimButton],\n templateUrl: './create-category-tile.html',\n styleUrl: './create-category-tile.scss',\n})\nexport class CreateCategoryTile {\n title = input.required<string>();\n description = input.required<string>();\n createButtonLabel = input.required<string>();\n createClick = output<void>();\n}\n","<div class=\"tile\">\n <div class=\"tile__border\"></div>\n <div class=\"tile__content\">\n <h3 class=\"tile__title\">{{ title() }}</h3>\n <p class=\"tile__description\">{{ description() }}</p>\n </div>\n\n <div class=\"tile__action\">\n <ncim-button size=\"extra-small\" variant=\"black\" icon=\"plus\" [iconSize]=\"20\" (click)=\"createClick.emit()\">\n {{ createButtonLabel() }}\n </ncim-button>\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ChartLegendItem } from '../chart.models';\n\n@Component({\n selector: 'ncim-chart-legend',\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n /** List of legend items to display */\n readonly items = input<ChartLegendItem[]>([]);\n\n /** Layout direction */\n readonly direction = input<'row' | 'column'>('row');\n\n /** Size of the color marker in pixels */\n readonly iconSize = input<number>(14);\n\n /** Font size of the labels in pixels */\n readonly fontSize = input<number>(14);\n\n /** Gap between legend items in pixels */\n readonly gap = input<number>(10);\n\n /** Gap between marker and label in pixels */\n readonly itemGap = input<number>(8);\n\n /** Flex justify content alignment */\n readonly justifyContent = input<string>('flex-start');\n}\n","<div class=\"chart-legend\" [style.gap.px]=\"gap()\" [style.flex-direction]=\"direction()\" [style.justify-content]=\"justifyContent()\">\n @for (item of items(); track item.name) {\n <div class=\"chart-legend__item\" [style.gap.px]=\"itemGap()\">\n <div\n class=\"chart-legend__marker\"\n [style.background-color]=\"item.color\"\n [style.width.px]=\"iconSize()\"\n [style.height.px]=\"iconSize()\"\n ></div>\n <span class=\"chart-legend__label\" [style.font-size.px]=\"fontSize()\">{{ item.name }}</span>\n </div>\n }\n</div>\n","import type { EChartsOption, TooltipComponentOption } from 'echarts';\nimport type { EChartTooltipParam } from './chart.models';\n\n/** Base text style used across all charts. */\nexport const CHART_TEXT_STYLE: EChartsOption['textStyle'] = {\n fontFamily: 'IBM Plex Sans Arabic',\n};\n\n/** Base tooltip styling shared by all chart components. */\nexport const CHART_TOOLTIP_BASE: Pick<\n TooltipComponentOption,\n 'backgroundColor' | 'borderColor' | 'borderWidth' | 'padding' | 'textStyle' | 'extraCssText' | 'confine'\n> = {\n backgroundColor: '#fff',\n borderColor: '#eee',\n borderWidth: 1,\n padding: [10, 14],\n textStyle: { color: '#333', fontSize: 12 },\n extraCssText: 'box-shadow: 0 2px 8px rgba(0,0,0,0.1); border-radius: 8px;',\n confine: true,\n};\n\n/** Shared axis label style for bar/line/area charts. */\nexport const CHART_AXIS_LABEL_STYLE = {\n color: '#999',\n fontSize: 11,\n} as const;\n\n/** Shared split line style for grid charts. */\nexport const CHART_SPLIT_LINE_STYLE = {\n show: true,\n lineStyle: { type: 'dashed' as const, color: '#eee' },\n} as const;\n\n/** Base grid config for axis-based charts (bar, line, area). */\nexport const CHART_GRID_BASE: EChartsOption['grid'] = {\n left: 0,\n right: 8,\n top: 10,\n bottom: 0,\n containLabel: true,\n};\n\nexport interface CategoryXAxisOptions {\n showLabels?: boolean;\n boundaryGap?: boolean;\n labelInterval?: number;\n}\n\n/** Build shared xAxis config for category charts. */\nexport function buildCategoryXAxis(categories: string[], options?: CategoryXAxisOptions): EChartsOption['xAxis'] {\n const { showLabels = true, boundaryGap = false, labelInterval } = options ?? {};\n return {\n type: 'category',\n data: categories,\n boundaryGap,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n show: showLabels,\n ...CHART_AXIS_LABEL_STYLE,\n ...(labelInterval !== undefined && { interval: labelInterval }),\n },\n };\n}\n\n/** Build shared yAxis config for value charts (RTL position). */\nexport function buildValueYAxis(showGrid = true): EChartsOption['yAxis'] {\n return {\n type: 'value',\n position: 'right',\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: showGrid ? CHART_SPLIT_LINE_STYLE : { show: false },\n axisLabel: { ...CHART_AXIS_LABEL_STYLE, margin: 20 },\n };\n}\n\n/** Formatter for axis-triggered tooltips (bar, line, area charts). */\nexport function formatAxisTooltip(params: unknown): string {\n const items = (Array.isArray(params) ? params : [params]) as EChartTooltipParam[];\n let str = `<div style=\"margin-bottom: 8px; font-weight: 600;\">${items[0]?.axisValueLabel ?? items[0]?.name ?? ''}</div>`;\n items.forEach((item: EChartTooltipParam) => {\n if (item.value === null) {\n return;\n }\n str += `\n <div style=\"display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 4px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${item.marker}\n <span style=\"color: #666;\">${item.seriesName}</span>\n </div>\n <span style=\"font-weight: 600; color: #333;\">${item.value}</span>\n </div>`;\n });\n return str;\n}\n\n/** Formatter for item-triggered tooltips (pie, donut) with optional value suffix. */\nexport function formatItemTooltip(params: unknown, valueSuffix = ''): string {\n const p = params as EChartTooltipParam;\n return `\n <div style=\"display: flex; align-items: center; justify-content: space-between; gap: 16px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${p.marker}\n <span style=\"color: #666;\">${p.name}</span>\n </div>\n <span style=\"font-weight: 600; color: #333;\">${p.value}${valueSuffix}</span>\n </div>`;\n}\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartLineSeriesData, ChartLegendItem } from '../chart.models';\nimport {\n CHART_TEXT_STYLE,\n CHART_TOOLTIP_BASE,\n CHART_GRID_BASE,\n formatAxisTooltip,\n buildCategoryXAxis,\n buildValueYAxis,\n} from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-line-chart',\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class LineChart {\n /** Array of series data to display */\n readonly series = input<ChartLineSeriesData[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<string[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Whether to show the area fill under lines */\n readonly showArea = input<boolean>(true);\n\n /** Whether to show smooth curves */\n readonly smooth = input<boolean>(true);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show grid lines */\n readonly showGrid = input<boolean>(true);\n\n /** Whether to show X-axis labels */\n readonly showXAxisLabels = input<boolean>(false);\n\n /** Index of data point to highlight with a vertical bar (-1 for none) */\n readonly highlightIndex = input<number>(-1);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.series().map(s => ({ name: s.name, color: s.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const seriesData = this.series();\n const cats = this.categories();\n const smooth = this.smooth();\n const showArea = this.showArea();\n const showGrid = this.showGrid();\n const showXAxisLabels = this.showXAxisLabels();\n const hlIndex = this.highlightIndex();\n\n // ... (rest is fine, I will splice at legend)\n\n const lineSeries = seriesData.map((s, idx) => ({\n // ... logic same as existing ...\n name: s.name,\n type: 'line' as const,\n data: s.data,\n smooth,\n symbol: 'none',\n lineStyle: { width: 2, color: s.color },\n itemStyle: { color: s.color },\n areaStyle: showArea\n ? {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${s.color ?? '#5470c6'}33` },\n { offset: 1, color: `${s.color ?? '#5470c6'}05` },\n ]),\n }\n : undefined,\n markPoint:\n hlIndex >= 0 && idx === 0\n ? {\n data: [\n {\n coord: [hlIndex, s.data[hlIndex]] as [number, number],\n symbol: 'circle',\n symbolSize: 14,\n itemStyle: {\n color: '#fff',\n borderColor: s.accentColor ?? s.color ?? '#66BB9B',\n borderWidth: 3,\n shadowColor: 'rgba(0,0,0,0.1)',\n shadowBlur: 4,\n },\n },\n ],\n }\n : undefined,\n }));\n\n const barSeries =\n hlIndex >= 0 && seriesData.length > 0\n ? [\n {\n type: 'bar' as const,\n data: cats.map((_, i) => (i === hlIndex ? seriesData[0].data[hlIndex] : null)),\n barWidth: 30,\n itemStyle: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n {\n offset: 0,\n color: `${seriesData[0].accentColor ?? seriesData[0].color ?? '#66BB9B'}50`,\n },\n {\n offset: 1,\n color: `${seriesData[0].accentColor ?? seriesData[0].color ?? '#66BB9B'}08`,\n },\n ]),\n borderRadius: [4, 4, 0, 0],\n },\n z: 0,\n silent: true,\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n legend: { show: false },\n grid: CHART_GRID_BASE,\n xAxis: buildCategoryXAxis(cats, { showLabels: showXAxisLabels, boundaryGap: false }),\n yAxis: buildValueYAxis(showGrid),\n series: [...barSeries, ...lineSeries] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"line-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"line-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"line-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatAxisTooltip } from '../chart.utils';\n\n@Component({\n selector: 'ncim-area-chart',\n templateUrl: './area-chart.html',\n styleUrl: './area-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class AreaChart {\n /** Data points for the chart */\n readonly data = input<number[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<string[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number>(200);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Start color of the gradient (green area) */\n readonly startColor = input<string>('#8BC34A');\n\n /** End color of the gradient (red area) */\n readonly endColor = input<string>('#E57373');\n\n /** Whether to show smooth curves */\n readonly smooth = input<boolean>(true);\n\n /** Tooltip formatter label — falls back to the translated CHARTS.AREA_CHART.TOOLTIP_LABEL key */\n readonly tooltipLabel = input<string>('');\n\n /** Index of the highlighted point (-1 for none) */\n readonly highlightIndex = input<number>(-1);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const dataPoints = this.data();\n const cats = this.categories();\n const start = this.startColor();\n const end = this.endColor();\n const smooth = this.smooth();\n const hlIndex = this.highlightIndex();\n const label = this.tooltipLabel();\n\n const markPointData =\n hlIndex >= 0 && hlIndex < dataPoints.length\n ? [\n {\n name: 'highlight',\n coord: [hlIndex, dataPoints[hlIndex]] as [number, number],\n symbol: 'circle',\n symbolSize: 18,\n itemStyle: {\n color: end,\n borderColor: '#fff',\n borderWidth: 4,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 10,\n },\n label: {\n show: true,\n position: 'top' as const,\n distance: 5,\n formatter: `{date|${cats[hlIndex]}}\\n{status|${label}}`,\n backgroundColor: '#fff',\n borderRadius: 16,\n padding: [10, 20],\n shadowBlur: 20,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetY: 10,\n rich: {\n date: {\n color: '#6B7280',\n fontSize: 13,\n fontWeight: 600,\n align: 'center' as const,\n padding: [0, 0, 6, 0],\n fontFamily: 'IBM Plex Sans Arabic',\n },\n status: {\n color: end,\n fontSize: 16,\n fontWeight: 700,\n align: 'center' as const,\n fontFamily: 'IBM Plex Sans Arabic',\n },\n },\n },\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n grid: {\n left: 0,\n right: 0,\n top: 80,\n bottom: 0,\n containLabel: false,\n },\n xAxis: {\n type: 'category',\n data: cats,\n show: false,\n boundaryGap: false,\n },\n yAxis: {\n type: 'value',\n show: false,\n },\n series: [\n {\n type: 'line' as const,\n data: dataPoints,\n smooth,\n symbol: 'none',\n areaStyle: {\n color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [\n { offset: 0, color: `${end}40` },\n { offset: 1, color: `${start}40` },\n ]),\n },\n lineStyle: {\n width: 2,\n color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [\n { offset: 0, color: end },\n { offset: 1, color: start },\n ]),\n },\n markPoint: {\n data: markPointData,\n },\n },\n ],\n };\n });\n}\n","<div class=\"area-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div echarts [options]=\"chartOptions()\" class=\"area-chart__canvas\"></div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\n\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-donut-chart',\n templateUrl: './donut-chart.html',\n styleUrl: './donut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class DonutChart {\n /** Data items for the donut rings */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Center text (main value) */\n readonly centerValue = input<string | number | null>(null);\n\n /** Center sub label */\n readonly centerLabel = input<string | null>(null);\n\n /** Inner radius percentage */\n readonly innerRadius = input<string>('65%');\n\n /** Outer radius percentage */\n readonly outerRadius = input<string>('80%');\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show the gap between items */\n readonly showGap = input<boolean>(true);\n\n /** Start angle of the donut */\n readonly startAngle = input<number>(90);\n\n /** Total value for computing arc proportions */\n readonly total = input<number>(0);\n\n /**\n * Maximum value per ring — each ring's arc = (value / maxRingValue) x 360.\n * If 0, the max value from the data is used.\n */\n readonly maxRingValue = input<number>(0);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.data().map(item => ({ name: item.name, color: item.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n const centerVal = this.centerValue();\n const centerLbl = this.centerLabel();\n const startAngle = this.startAngle();\n\n // Each ring's arc length = (value / max) x 360\n const maxVal = this.maxRingValue() || Math.max(...items.map(i => i.value), 1);\n\n // Ring sizing\n const ringWidth = 8;\n const radiusStep = 10;\n const baseRadius = 85;\n\n // Calculate offset percentage to center the dashed line within the 8px ring\n // Assuming height constrains the chart (standard for donuts), calculate px to %\n // Subtract estimated legend height to get closer to actual chart radius for cleaner px->% conversion\n const h = (this.height() || 300) - (this.showLegend() ? 60 : 0);\n const rPx = h / 2;\n const offsetPx = ringWidth / 2;\n const offsetPct = rPx > 0 ? (offsetPx / rPx) * 100 : 5; // Default ~5% if invalid\n\n const rings = items.map((_, i) => ({\n radius: baseRadius - i * radiusStep,\n }));\n\n // Dashed circle radii (aligned with ring centers)\n const dashedRingSeries = rings.map(ring => {\n const r = ring.radius - offsetPct;\n return {\n type: 'pie' as const,\n radius: [`${r}%`, `${r}%`],\n center: ['50%', '50%'],\n silent: true,\n animation: false,\n label: { show: false },\n labelLine: { show: false },\n data: [\n {\n value: 1,\n itemStyle: {\n color: 'transparent',\n borderColor: '#e0e0e0',\n borderWidth: 1,\n borderType: [4, 15],\n },\n },\n ],\n z: 1,\n };\n });\n\n const gaugeSeries: EChartsOption['series'] = items.map((item, i) => {\n const proportion = Math.min(item.value / maxVal, 1);\n const sweepAngle = proportion * 340; // leave a small gap for aesthetics\n const arcStart = startAngle;\n const arcEnd = startAngle - sweepAngle;\n\n return {\n type: 'gauge' as const,\n z: 2,\n startAngle: arcStart,\n endAngle: arcEnd,\n radius: `${rings[i].radius}%`,\n center: ['50%', '50%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n lineStyle: {\n width: ringWidth,\n color: [[1, item.color || '#ccc']],\n },\n roundCap: true,\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n detail: { show: false },\n title: { show: false },\n data: [\n {\n value: 0,\n name: item.name,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 4,\n borderType: 'solid',\n },\n },\n ],\n };\n });\n\n const graphic: EChartsOption['graphic'] =\n centerVal !== null && centerVal !== ''\n ? [\n {\n type: 'group' as const,\n left: 'center',\n top: 'center',\n children: [\n {\n type: 'text' as const,\n style: {\n text: String(centerVal),\n fontSize: 40,\n fontWeight: 'bold' as const,\n fill: '#333',\n y: -14,\n },\n },\n {\n type: 'text' as const,\n style: {\n text: centerLbl ?? undefined,\n fontSize: 14,\n fill: '#999',\n y: 24,\n },\n },\n ],\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n graphic,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: formatItemTooltip,\n },\n legend: {\n show: false,\n },\n series: [...dashedRingSeries, ...gaugeSeries] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"donut-chart\" [style.height.px]=\"height()\">\n <div class=\"donut-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"donut-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-pie-chart',\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class PieChart {\n /** Data items for the pie segments */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number>(300);\n\n /** Radius percentage */\n readonly radius = input<string>('75%');\n\n /** Whether to show percentage labels inside slices */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Start angle of the pie */\n readonly startAngle = input<number>(90);\n\n /** Whether to show a small hole in the center */\n readonly showCenterHole = input<boolean>(false);\n\n /** Inner radius percentage (if center hole is shown) */\n readonly innerRadius = input<string>('1%');\n\n /** Border radius of each pie slice in pixels */\n readonly itemRadius = input<number>(4);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.data().map(item => ({ name: item.name, color: item.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n const radius = this.radius();\n const innerRadius = this.innerRadius();\n const showLabels = this.showLabels();\n const startAngle = this.startAngle();\n const centerHole = this.showCenterHole();\n const itemRadius = this.itemRadius();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: (params: unknown) => formatItemTooltip(params, '%'),\n },\n legend: {\n show: false,\n },\n series: [\n {\n type: 'pie',\n radius: centerHole ? [innerRadius, radius] : radius,\n center: ['50%', '50%'],\n startAngle,\n avoidLabelOverlap: true,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 2,\n borderRadius: itemRadius,\n },\n label: showLabels\n ? {\n show: true,\n position: 'inside' as const,\n formatter: '{c}%',\n fontSize: 14,\n fontWeight: 'bold' as const,\n color: '#fff',\n }\n : { show: false },\n emphasis: {\n scaleSize: 4,\n },\n labelLine: { show: false },\n data: items.map(item => ({\n name: item.name,\n value: item.value,\n itemStyle: item.color ? { color: item.color } : undefined,\n })),\n },\n ],\n };\n });\n}\n","<div class=\"pie-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"pie-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"pie-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n@Component({\n selector: 'ncim-gauge-chart',\n templateUrl: './gauge-chart.html',\n styleUrl: './gauge-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class GaugeChart {\n /** Current value (0-100) */\n readonly value = input<number>(0);\n\n /** Chart height in pixels */\n readonly height = input<number>(250);\n\n /** Chart width in pixels (optional) */\n readonly width = input<number | null>(null);\n\n /** Main color for the filled portion */\n readonly color = input<string>('#F5A623');\n\n /** Background color for the unfilled portion */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n /** Label text below the percentage */\n readonly label = input<string>('');\n\n /** Whether to show the percentage text */\n readonly showValue = input<boolean>(true);\n\n /** Start angle of the gauge */\n readonly startAngle = input<number>(180);\n\n /** End angle of the gauge */\n readonly endAngle = input<number>(0);\n\n /**\n * Whether the layout is right-to-left.\n * In RTL mode the chart text is hidden and rendered as an overlay to avoid mirroring.\n */\n readonly isRtl = input<boolean>(false);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const val = this.value();\n const fillColor = this.color();\n const bgColor = this.backgroundColor();\n const showVal = this.showValue();\n const label = this.label();\n const isRtl = this.isRtl();\n const startAngle = this.startAngle();\n const endAngle = this.endAngle();\n\n // Hide chart text in RTL; we render it as overlay to avoid mirroring\n const showChartText = !isRtl;\n\n // Ensure ratio is between 0 and 1\n const ratio = Math.max(0, Math.min(val / 100, 1));\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle,\n endAngle,\n radius: '100%',\n center: ['50%', '55%'],\n min: 0,\n max: 100,\n splitNumber: 40,\n pointer: { show: false },\n axisLine: {\n lineStyle: {\n width: 0,\n color: [\n [ratio, fillColor],\n [1, bgColor],\n ],\n },\n },\n splitLine: {\n show: true,\n length: 22,\n distance: 0,\n lineStyle: {\n width: 4,\n color: 'auto',\n cap: 'round',\n },\n },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: {\n show: showChartText && !!label,\n offsetCenter: [0, '0%'],\n fontSize: 14,\n color: '#666',\n align: 'center',\n },\n detail: {\n show: showChartText && showVal,\n offsetCenter: [0, '-20%'],\n fontSize: 36,\n fontWeight: 'bold',\n color: '#333',\n align: 'center',\n formatter: `%${val}`,\n },\n data: [{ value: val, name: label }],\n },\n ],\n };\n });\n}\n","<div class=\"gauge-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"gauge-chart__canvas\" [class.gauge-chart__canvas--rtl]=\"isRtl()\">\n <div echarts [options]=\"chartOptions()\" class=\"gauge-chart__canvas-inner\"></div>\n </div>\n @if (isRtl() && showValue()) {\n <div class=\"gauge-chart__label-overlay\" aria-hidden=\"true\">\n <span class=\"gauge-chart__value\">%{{ value() }}</span>\n @if (label()) {\n <span class=\"gauge-chart__label\">{{ label() }}</span>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\n\nexport interface ScaleIndicatorLabels {\n low: string;\n mid: string;\n high: string;\n}\n\n@Component({\n selector: 'ncim-scale-indicator',\n templateUrl: './scale-indicator.html',\n styleUrl: './scale-indicator.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScaleIndicator {\n /** Title displayed above the scale */\n readonly title = input<string>('');\n\n /** Current value (used when start/end not provided, for backward compat) */\n readonly value = input<number>(50);\n\n /** Scale minimum (full track range) */\n readonly min = input<number>(0);\n\n /** Scale maximum (full track range) */\n readonly max = input<number>(100);\n\n /** Highlighted range start (when provided with end, shows range bar instead of thumb) */\n readonly start = input<number | undefined>(undefined);\n\n /** Highlighted range end (when provided with start, shows range bar instead of thumb) */\n readonly end = input<number | undefined>(undefined);\n\n /** Labels for the three segments (right-to-left in RTL: high, mid, low) */\n readonly labels = input<ScaleIndicatorLabels>({\n low: 'في تحسّن',\n mid: 'ضمن النطاق',\n high: 'بحاجة لمعالجة',\n });\n\n /** Active indicator color */\n readonly activeColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F0F0F0');\n\n readonly barHeight = input<number>(8);\n\n private readonly rangeScale = computed(() => {\n const minVal = this.min();\n const maxVal = this.max();\n const range = maxVal - minVal;\n return range <= 0 ? 1 : range;\n });\n\n /** Range mode: start and end provided. Single-value mode: use value. */\n readonly isRangeMode = computed(() => {\n const s = this.start();\n const e = this.end();\n return s !== undefined && e !== undefined;\n });\n\n /** Start and end positions as percentage (0–100), normalized so start ≤ end */\n readonly rangePercent = computed(() => {\n const minVal = this.min();\n const scale = this.rangeScale();\n const toPercent = (v: number) => Math.max(0, Math.min(100, ((v - minVal) / scale) * 100));\n if (this.isRangeMode()) {\n const s = toPercent(this.start()!);\n const e = toPercent(this.end()!);\n return { start: Math.min(s, e), end: Math.max(s, e) };\n }\n const p = toPercent(this.value());\n return { start: p, end: p };\n });\n\n /** Start position as percentage (0–100) */\n readonly rangeStartPercent = computed(() => this.rangePercent().start);\n\n /** End position as percentage (0–100) */\n readonly rangeEndPercent = computed(() => this.rangePercent().end);\n\n /** Range width as percentage (min 4% when start=end for visibility) */\n readonly rangeWidthPercent = computed(() => {\n const w = this.rangeEndPercent() - this.rangeStartPercent();\n return w <= 0 ? 4 : w;\n });\n\n /** Thumb position (for single-value mode, backward compat) */\n readonly thumbPercent = computed(() => this.rangeStartPercent());\n}\n","<div class=\"scale-indicator\">\n @if (title()) {\n <h4 class=\"scale-indicator__title\">{{ title() }}</h4>\n }\n\n <div class=\"scale-indicator__track\">\n <div class=\"scale-indicator__segment\"></div>\n <div class=\"scale-indicator__segment\"></div>\n <div class=\"scale-indicator__segment\"></div>\n\n @if (isRangeMode()) {\n <div\n class=\"scale-indicator__range\"\n [style.left.%]=\"rangeStartPercent()\"\n [style.width.%]=\"rangeWidthPercent()\"\n [style.background-color]=\"activeColor()\"\n ></div>\n } @else {\n <div\n class=\"scale-indicator__thumb\"\n [style.height.px]=\"barHeight()\"\n [style.left.%]=\"thumbPercent()\"\n [style.background-color]=\"activeColor()\"\n ></div>\n }\n </div>\n\n <div class=\"scale-indicator__labels\">\n <span class=\"scale-indicator__label\">{{ labels().high }}</span>\n <span class=\"scale-indicator__label\">{{ labels().mid }}</span>\n <span class=\"scale-indicator__label\">{{ labels().low }}</span>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface HorizontalBarItem {\n label: string;\n value: number;\n maxValue?: number;\n color?: string;\n}\n\ninterface ComputedBarItem extends HorizontalBarItem {\n percentage: number;\n barColor: string;\n segmentFills: number[];\n}\n\n@Component({\n selector: 'ncim-horizontal-bar-chart',\n templateUrl: './horizontal-bar-chart.html',\n styleUrl: './horizontal-bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon],\n})\nexport class HorizontalBarChart {\n /** Data items for horizontal bars */\n readonly data = input<HorizontalBarItem[]>([]);\n\n /** Maximum value for all bars (auto-calculated if not provided) */\n readonly maxValue = input<number>(100);\n\n /** Whether to show value labels */\n readonly showValues = input<boolean>(true);\n\n /** Default bar color (used when item has no color) */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F0F0F0');\n\n /** Bar height in pixels */\n readonly barHeight = input<number>(8);\n\n /** Gap between bars in pixels */\n readonly gap = input<number>(20);\n\n /** Number of segments per bar */\n readonly segments = input<number>(3);\n\n readonly computedItems = computed<ComputedBarItem[]>(() => {\n const items = this.data();\n const max = this.maxValue();\n const segmentCount = this.segments();\n const segmentWidth = 100 / segmentCount;\n\n return items.map(item => {\n const percentage = max > 0 ? Math.min(100, (item.value / (item.maxValue ?? max)) * 100) : 0;\n\n const segmentFills = Array.from({ length: segmentCount }, (_, i) => {\n const segStart = i * segmentWidth;\n const segEnd = (i + 1) * segmentWidth;\n\n if (percentage >= segEnd) {\n return 100;\n }\n if (percentage <= segStart) {\n return 0;\n }\n return ((percentage - segStart) / segmentWidth) * 100;\n });\n\n return {\n ...item,\n percentage,\n barColor: item.color ?? this.defaultColor(),\n segmentFills,\n };\n });\n });\n}\n","<div class=\"horizontal-bar-chart\">\n @for (item of computedItems(); track item.label) {\n <div class=\"horizontal-bar-chart__item\" [style.margin-bottom.px]=\"gap()\">\n <div class=\"horizontal-bar-chart__header\">\n <span class=\"horizontal-bar-chart__label\">{{ item.label }}</span>\n @if (showValues()) {\n <span class=\"horizontal-bar-chart__value\" [style.color]=\"item.barColor\">\n {{ item.value }}\n <ncim-icon name=\"chevronLeft\" [size]=\"18\" [style.color]=\"item.barColor\"></ncim-icon>\n </span>\n }\n </div>\n <div class=\"horizontal-bar-chart__segments\">\n @for (fill of item.segmentFills; track $index) {\n <div class=\"horizontal-bar-chart__segment\" [style.height.px]=\"barHeight()\" [style.background-color]=\"trackColor()\">\n <div class=\"horizontal-bar-chart__fill\" [style.width.%]=\"fill\" [style.background-color]=\"item.barColor\"></div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-sparkline',\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class Sparkline {\n /** Data points for the sparkline */\n readonly data = input<readonly number[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number>(40);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Line color */\n readonly color = input<string>('#E57373');\n\n /** Whether to show area fill */\n readonly showArea = input<boolean>(true);\n\n /** Line width */\n readonly lineWidth = input<number>(1.5);\n\n /** Whether to use smooth curves */\n readonly smooth = input<boolean>(true);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const dataPoints = this.data();\n /** ECharts series `data` is typed as mutable; input may be ReadonlyArray. */\n const seriesData = [...dataPoints];\n const lineColor = this.color();\n const smooth = this.smooth();\n const showArea = this.showArea();\n const width = this.lineWidth();\n\n return {\n grid: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n xAxis: {\n type: 'category',\n show: false,\n boundaryGap: false,\n data: seriesData.map((_, i) => i),\n },\n yAxis: {\n type: 'value',\n show: false,\n },\n series: [\n {\n type: 'line' as const,\n data: seriesData,\n smooth,\n symbol: 'none',\n lineStyle: {\n width,\n color: lineColor,\n },\n areaStyle: showArea\n ? {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${lineColor}30` },\n { offset: 1, color: `${lineColor}05` },\n ]),\n }\n : undefined,\n },\n ],\n };\n });\n}\n","<div class=\"sparkline\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div echarts [options]=\"chartOptions()\" class=\"sparkline__canvas\"></div>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n afterNextRender,\n OnDestroy,\n viewChild,\n ElementRef,\n inject,\n effect,\n signal,\n HostListener,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport type { Map as LeafletMap, LayerGroup } from 'leaflet';\nimport { MarkerStatus, TrendDirection, MapLegendStatus } from '@libs/core/enums';\nimport { MAP_CONFIG, MAP_LEGEND_CONFIG, MAP_ACTION_ICONS, REGEX } from '@libs/core/constants';\nimport type { MapMarkerData, MapMarkerBadgeIcon } from '../chart.models';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nconst MARKER_ICON_SIZE = 14;\n\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\n\nfunction escapeHtml(text: string): string {\n return text.replace(REGEX.HTML_ESCAPE, char => HTML_ESCAPE_MAP[char]);\n}\n\nconst STATUS_TO_BADGE: Record<MarkerStatus, MapLegendStatus> = {\n [MarkerStatus.WARNING]: MapLegendStatus.UNCORRECTED_VIOLATION,\n [MarkerStatus.ERROR]: MapLegendStatus.UNCORRECTED_VIOLATION,\n [MarkerStatus.INFO]: MapLegendStatus.CORRECTION_PERIOD,\n [MarkerStatus.SUCCESS]: MapLegendStatus.LICENSE_EXPIRING,\n};\n\nconst LEGEND_ITEMS = Object.values(MapLegendStatus).map(status => ({\n icon: MAP_LEGEND_CONFIG[status].icon,\n labelKey: MAP_LEGEND_CONFIG[status].labelKey,\n}));\n\n@Component({\n selector: 'ncim-map-view',\n templateUrl: './map-view.html',\n styleUrl: './map-view.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, Icon],\n})\nexport class MapView implements OnDestroy {\n readonly markers = input<MapMarkerData[]>([]);\n readonly centerLat = input<number>(MAP_CONFIG.defaultCenter.lat);\n readonly centerLng = input<number>(MAP_CONFIG.defaultCenter.lng);\n readonly zoom = input<number>(MAP_CONFIG.defaultZoom);\n readonly height = input<number>(400);\n\n private readonly http = inject(HttpClient);\n private readonly doc = inject(DOCUMENT);\n private readonly translate = inject(TranslateService);\n private readonly mapContainer = viewChild<ElementRef<HTMLDivElement>>('mapContainer');\n private map: LeafletMap | null = null;\n private markerLayer: LayerGroup | null = null;\n private leaflet: typeof import('leaflet') | null = null;\n private readonly mapReady = signal(false);\n private iconCache = new Map<string, string>();\n\n readonly legendItems = LEGEND_ITEMS;\n readonly legendOpen = signal(false);\n private readonly legendPopup = viewChild<ElementRef<HTMLElement>>('legendPopup');\n private readonly legendBtn = viewChild<ElementRef<HTMLButtonElement>>('legendBtn');\n\n constructor() {\n afterNextRender(() => this.initMap());\n\n effect(() => {\n const ready = this.mapReady();\n const currentMarkers = this.markers();\n const lat = this.centerLat();\n const lng = this.centerLng();\n const z = this.zoom();\n\n if (!ready || !this.map || !this.leaflet) {\n return;\n }\n\n this.map.setView([lat, lng], z);\n this.updateMarkers(this.leaflet, currentMarkers);\n });\n }\n\n ngOnDestroy(): void {\n this.map?.remove();\n this.map = null;\n this.markerLayer = null;\n this.leaflet = null;\n }\n\n toggleLegend(): void {\n this.legendOpen.update(v => !v);\n }\n\n closeLegend(): void {\n this.legendOpen.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.legendOpen()) {\n return;\n }\n const target = event.target as Node;\n const popup = this.legendPopup()?.nativeElement;\n const btn = this.legendBtn()?.nativeElement;\n if (popup?.contains(target) || btn?.contains(target)) {\n return;\n }\n this.closeLegend();\n }\n\n private injectLeafletCss(): void {\n if (this.doc.querySelector('link[data-lazy-bundle=\"leaflet\"]')) {\n return;\n }\n const preload = this.doc.querySelector<HTMLLinkElement>('link[rel=\"preload\"][href*=\"leaflet\"]');\n const link = this.doc.createElement('link');\n link.rel = 'stylesheet';\n link.setAttribute('data-lazy-bundle', 'leaflet');\n link.href = preload ? preload.href : 'leaflet.css';\n this.doc.head.appendChild(link);\n }\n\n private async initMap(): Promise<void> {\n this.injectLeafletCss();\n const leafletModule = await import('leaflet');\n const L = (leafletModule as { default?: typeof import('leaflet') }).default ?? leafletModule;\n\n const container = this.mapContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n const iconNames = [\n ...Object.values(MapLegendStatus).map(s => MAP_LEGEND_CONFIG[s].icon),\n MAP_ACTION_ICONS.briefcase.icon,\n MAP_ACTION_ICONS.time.icon,\n ];\n await this.preloadIcons([...new Set(iconNames)]);\n\n this.map = L.map(container, {\n center: [this.centerLat(), this.centerLng()],\n zoom: this.zoom(),\n zoomControl: true,\n attributionControl: false,\n });\n\n L.tileLayer(MAP_CONFIG.tileUrl, { maxZoom: MAP_CONFIG.maxZoom }).addTo(this.map);\n\n this.markerLayer = L.layerGroup().addTo(this.map);\n this.leaflet = L;\n this.mapReady.set(true);\n }\n\n private async preloadIcons(iconNames: string[]): Promise<void> {\n await Promise.all(\n iconNames.map(async name => {\n if (!this.iconCache.has(name)) {\n const svg = await this.loadIcon(name);\n this.iconCache.set(name, svg);\n }\n })\n );\n }\n\n private async loadIcon(name: string): Promise<string> {\n try {\n return await firstValueFrom(this.http.get(`assets/ncim-icons/${name}.svg`, { responseType: 'text' }));\n } catch {\n return '';\n }\n }\n\n private sizedIcon(name: string, size: number = MARKER_ICON_SIZE, useCurrentColor = false): string {\n const svg = this.iconCache.get(name) || '';\n if (!svg) {\n return '';\n }\n let result = svg.replace('<svg ', `<svg width=\"${size}\" height=\"${size}\" `);\n if (useCurrentColor) {\n result = result.replace(/fill=\"#[0-9a-fA-F]+\"/g, 'fill=\"currentColor\"');\n }\n return result;\n }\n\n private updateMarkers(L: typeof import('leaflet'), markerData: MapMarkerData[]): void {\n if (!this.markerLayer) {\n return;\n }\n\n this.markerLayer.clearLayers();\n\n for (const marker of markerData) {\n const icon = L.divIcon({\n className: '',\n html: this.buildMarkerHtml(marker),\n iconSize: MAP_CONFIG.markerSize,\n iconAnchor: MAP_CONFIG.markerAnchor,\n });\n\n L.marker([marker.lat, marker.lng], { icon }).addTo(this.markerLayer);\n }\n }\n\n private buildMarkerHtml(marker: MapMarkerData): string {\n const isUp = marker.trendDirection === TrendDirection.UP;\n const trendClass = isUp ? 'map-marker--trend-up' : 'map-marker--trend-down';\n const scoreClass = marker.score >= MAP_CONFIG.scoreThreshold ? 'map-marker--score-high' : 'map-marker--score-low';\n\n const badgeStatus =\n marker.statusBadgeIcon ??\n STATUS_TO_BADGE[marker.statusType ?? MarkerStatus.INFO] ??\n MapLegendStatus.CORRECTION_PERIOD;\n const badge = MAP_LEGEND_CONFIG[badgeStatus];\n const statusIconSvg = this.sizedIcon(badge.icon, 16, true);\n const statusLabel = marker.statusKey ? this.translate.instant(marker.statusKey) : (marker.statusText ?? '');\n const statusHtml =\n statusLabel !== ''\n ? `<div class=\"map-marker__status\" style=\"background:${badge.bg}\">\n <span class=\"map-marker__status-icon\" style=\"color:${badge.color}\">${statusIconSvg}</span>\n <span>${escapeHtml(statusLabel)}</span>\n </div>`\n : '';\n\n const showBriefcaseAction = badgeStatus !== MapLegendStatus.UPCOMING_VISIT;\n const showTimeAction = badgeStatus !== MapLegendStatus.LICENSE_EXPIRING;\n const briefcaseHtml = showBriefcaseAction\n ? `<span class=\"map-marker__action-icon map-marker__action-icon--briefcase\" style=\"background:${MAP_ACTION_ICONS.briefcase.bg};color:${MAP_ACTION_ICONS.briefcase.color}\">${this.sizedIcon(MAP_ACTION_ICONS.briefcase.icon, 14, true)}</span>`\n : '';\n const timeHtml = showTimeAction\n ? `<span class=\"map-marker__action-icon map-marker__action-icon--time\" style=\"background:${MAP_ACTION_ICONS.time.bg};color:${MAP_ACTION_ICONS.time.color}\">${this.sizedIcon(MAP_ACTION_ICONS.time.icon, 14, true)}</span>`\n : '';\n const actionsHtml =\n briefcaseHtml || timeHtml ? `<div class=\"map-marker__actions\">${briefcaseHtml}${timeHtml}</div>` : '';\n\n return `\n <div class=\"map-marker\">\n <div class=\"map-marker__top\">\n <div class=\"map-marker__info\">\n <div class=\"map-marker__title\">${escapeHtml(marker.title)}</div>\n <div class=\"map-marker__subtitle\">${escapeHtml(marker.subtitle)}</div>\n </div>\n <div class=\"map-marker__score-box\">\n <span class=\"map-marker__score ${scoreClass}\">${escapeHtml(String(marker.score))}</span>\n <span class=\"map-marker__trend ${trendClass}\">\n ${escapeHtml(String(marker.trendValue ?? ''))}<span>${isUp ? '↑' : '↓'} </span>\n </span>\n </div>\n </div>\n\n <div class=\"map-marker__divider\"></div>\n\n <div class=\"map-marker__bottom\">\n ${statusHtml}\n ${actionsHtml}\n </div>\n\n <div class=\"map-marker__pointer\"></div>\n </div>\n `;\n }\n}\n","<div class=\"map-view__wrapper\" [style.height.px]=\"height()\">\n <div class=\"map-view\" #mapContainer></div>\n\n <button\n type=\"button\"\n class=\"map-view__legend-btn\"\n #legendBtn\n [attr.aria-label]=\"'REGULATORY_DASHBOARD.MAP_LEGEND' | translate\"\n [attr.aria-expanded]=\"legendOpen()\"\n (click)=\"toggleLegend()\"\n >\n <span class=\"map-view__legend-btn-inner\">\n @if (!legendOpen()) {\n <ncim-icon name=\"help-circle\" [size]=\"20\"></ncim-icon>\n }\n @if (legendOpen()) {\n <ncim-icon name=\"close\" [size]=\"20\"></ncim-icon>\n }\n </span>\n </button>\n\n @if (legendOpen()) {\n <div class=\"map-view__legend-popup\" #legendPopup>\n <h3 class=\"map-view__legend-title\">{{ 'REGULATORY_DASHBOARD.MAP_LEGEND_TITLE' | translate }}</h3>\n <ul class=\"map-view__legend-list\">\n @for (item of legendItems; track item.labelKey) {\n <li class=\"map-view__legend-item\">\n <span class=\"map-view__legend-icon\" [class]=\"'map-view__legend-icon--' + item.icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\"></ncim-icon>\n </span>\n <span class=\"map-view__legend-label\">{{ item.labelKey | translate }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MapView } from '@libs/ui-components/shared/organisms/charts/map-view/map-view';\nimport { MAP_MARKERS } from '@libs/ui-components/models/dashboard.models';\nimport type { MapMarkerData } from '@libs/ui-components/shared/organisms/charts/chart.models';\n\n@Component({\n selector: 'ncim-store-locations',\n imports: [MapView, TranslateModule],\n templateUrl: './store-locations.html',\n styleUrl: './store-locations.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StoreLocations {\n readonly showHeader = input(true);\n readonly height = input(400);\n readonly zoom = input(6);\n readonly centerLat = input(24.7136);\n readonly centerLng = input(46.6753);\n readonly markers = input<MapMarkerData[]>(MAP_MARKERS);\n}\n","<div class=\"store-locations\">\n <div class=\"store-locations__card\">\n @if (showHeader()) {\n <div class=\"store-locations__header\">\n <h3 class=\"store-locations__title\">{{ 'DASHBOARD_WIDGETS.STORE_LOCATIONS' | translate }}</h3>\n </div>\n }\n <div class=\"store-locations__map\" [class.store-locations__map--flush]=\"!showHeader()\">\n <ncim-map-view [markers]=\"markers()\" [centerLat]=\"centerLat()\" [centerLng]=\"centerLng()\" [zoom]=\"zoom()\" [height]=\"height()\" />\n </div>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartLegendItem } from '../chart.models';\nimport {\n CHART_TEXT_STYLE,\n CHART_TOOLTIP_BASE,\n CHART_GRID_BASE,\n formatAxisTooltip,\n buildCategoryXAxis,\n buildValueYAxis,\n} from '../chart.utils';\n\nexport interface BarSeriesData {\n name: string;\n data: number[];\n color?: string;\n stack?: string;\n}\n\nexport interface OverlayLineSeries {\n name: string;\n data: number[];\n color?: string;\n}\n\n@Component({\n selector: 'ncim-bar-chart',\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class BarChart {\n /** Array of bar series data to display */\n readonly series = input<BarSeriesData[]>([]);\n\n /** Optional line series to overlay on top of bars */\n readonly overlayLineSeries = input<OverlayLineSeries[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<any[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Bar width in pixels */\n readonly barWidth = input<number | string>(12);\n\n /** Bar border radius */\n readonly borderRadius = input<number>(4);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show grid lines */\n readonly showGrid = input<boolean>(true);\n\n readonly legendItems = computed<ChartLegendItem[]>(() => [\n ...this.series().map(s => ({ name: s.name, color: s.color || '#999' })),\n ...this.overlayLineSeries().map(s => ({ name: s.name, color: s.color || '#999' })),\n ]);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const seriesData = this.series();\n const overlayLines = this.overlayLineSeries();\n const cats = this.categories();\n const bWidth = this.barWidth();\n const bRadius = this.borderRadius();\n const showGrid = this.showGrid();\n const hasOverlay = overlayLines.length > 0;\n\n const barSeries = seriesData.map(s => ({\n name: s.name,\n type: 'bar' as const,\n data: s.data,\n stack: s.stack,\n barWidth: bWidth,\n barMaxWidth: bWidth,\n ...(hasOverlay ? { barGap: '0%', barCategoryGap: '40%' } : {}),\n itemStyle: {\n color: s.color,\n borderRadius: s.stack ? 0 : ([bRadius, bRadius, 0, 0] as [number, number, number, number]),\n },\n }));\n\n // Phantom bars match every overlay line series so ECharts doesn't\n // split the available bar width across real + phantom slots.\n // They are transparent and non-interactive.\n const phantomBars = hasOverlay\n ? overlayLines.map(s => ({\n name: `__phantom__${s.name}`,\n type: 'bar' as const,\n data: cats.map(() => null as unknown as number),\n barWidth: bWidth,\n barMaxWidth: bWidth,\n barGap: '0%',\n barCategoryGap: '40%',\n itemStyle: { color: 'transparent' },\n silent: true,\n legendHoverLink: false,\n emphasis: { disabled: true },\n }))\n : [];\n\n const lineSeriesOptions = overlayLines.map(s => ({\n name: s.name,\n type: 'line' as const,\n data: s.data,\n smooth: true,\n symbol: 'none',\n lineStyle: { width: 2, color: s.color },\n itemStyle: { color: s.color },\n areaStyle: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${s.color ?? '#F5C842'}30` },\n { offset: 1, color: `${s.color ?? '#F5C842'}05` },\n ]),\n },\n }));\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n legend: { show: false },\n grid: CHART_GRID_BASE,\n xAxis: buildCategoryXAxis(cats, { boundaryGap: true, labelInterval: 0 }),\n yAxis: buildValueYAxis(showGrid),\n series: [...barSeries, ...phantomBars, ...lineSeriesOptions] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"bar-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"bar-chart__body\">\n <div echarts [options]=\"chartOptions()\" class=\"bar-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div class=\"bar-chart__legend\">\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n@Component({\n selector: 'ncim-multi-segment-gauge',\n templateUrl: './multi-segment-gauge.html',\n styleUrl: './multi-segment-gauge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class MultiSegmentGauge {\n /** Segments to display on the gauge arc */\n readonly segments = input<ChartSeriesItem[]>([]);\n\n /** Label shown above the center value */\n readonly centerLabel = input<string>('');\n\n /** Value displayed in the center of the gauge */\n readonly centerValue = input<string | number | null>(null);\n\n /** Whether to show a legend below the chart */\n readonly showLegend = input<boolean>(true);\n\n /** Chart canvas height in pixels */\n readonly height = input<number>(180);\n\n /** Color for the unfilled portion of the arc */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.segments().map(s => ({ name: s.name, color: s.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.segments();\n const bgColor = this.backgroundColor();\n const total = items.reduce((sum, s) => sum + s.value, 0) || 1;\n\n // Build color-stop array proportional to each segment's value\n let cumulative = 0;\n const colorStops: [number, string][] = [];\n\n for (const item of items) {\n cumulative += item.value / total;\n colorStops.push([Math.min(cumulative, 1), item.color || '#999']);\n }\n\n if (cumulative < 1) {\n colorStops.push([1, bgColor]);\n }\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n radius: '90%',\n center: ['50%', '78%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: 18,\n color: colorStops,\n },\n },\n splitLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: { show: false },\n data: [{ value: 0 }],\n },\n ],\n };\n });\n}\n","<div class=\"ncim-multi-segment-gauge\">\n <div class=\"ncim-multi-segment-gauge__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-multi-segment-gauge__canvas\"></div>\n\n @if (centerValue() !== null) {\n <div class=\"ncim-multi-segment-gauge__overlay\" aria-hidden=\"true\">\n @if (centerLabel()) {\n <span class=\"ncim-multi-segment-gauge__center-label\">{{ centerLabel() }}</span>\n }\n <span class=\"ncim-multi-segment-gauge__center-value\">{{ centerValue() }}</span>\n </div>\n }\n </div>\n\n @if (showLegend() && legendItems().length) {\n <div class=\"ncim-multi-segment-gauge__legend\">\n @for (item of legendItems(); track item.name) {\n <div class=\"ncim-multi-segment-gauge__legend-item\">\n <span class=\"ncim-multi-segment-gauge__legend-label\">{{ item.name }}</span>\n <div class=\"ncim-multi-segment-gauge__legend-dot\" [style.background-color]=\"item.color\"></div>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n/** A single stat row displayed below the gauge */\nexport interface StatGaugeRow {\n label: string;\n value: string | number;\n}\n\n@Component({\n selector: 'ncim-stat-gauge',\n templateUrl: './stat-gauge.html',\n styleUrl: './stat-gauge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class StatGauge {\n /** Current (numerator) value, e.g. 120 */\n readonly value = input<number>(0);\n\n /** Total (denominator) value, e.g. 300 */\n readonly total = input<number>(100);\n\n /** Subtitle shown below the percentage, e.g. \"120 من 300 مستخدم\" */\n readonly subtitle = input<string>('');\n\n /** Stat rows displayed below the gauge */\n readonly stats = input<StatGaugeRow[]>([]);\n\n /** Color for the filled portion of the arc */\n readonly color = input<string>('#7B5EA7');\n\n /** Color for the unfilled portion of the arc */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n /** Chart canvas height in pixels */\n readonly height = input<number>(160);\n\n readonly percentage = computed<number>(() => {\n const t = this.total();\n return t > 0 ? Math.round((this.value() / t) * 100) : 0;\n });\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const ratio = Math.max(0, Math.min(this.percentage() / 100, 1));\n const fillColor = this.color();\n const bgColor = this.backgroundColor();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n radius: '90%',\n center: ['50%', '78%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: 18,\n color: [\n [ratio, fillColor],\n [1, bgColor],\n ],\n },\n },\n splitLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: { show: false },\n data: [{ value: 0 }],\n },\n ],\n };\n });\n}\n","<div class=\"ncim-stat-gauge\">\n <div class=\"ncim-stat-gauge__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-stat-gauge__canvas\"></div>\n\n <div class=\"ncim-stat-gauge__overlay\" aria-hidden=\"true\">\n <span class=\"ncim-stat-gauge__percentage\">{{ percentage() }}%</span>\n @if (subtitle()) {\n <span class=\"ncim-stat-gauge__subtitle\">{{ subtitle() }}</span>\n }\n </div>\n </div>\n\n @if (stats().length) {\n <div class=\"ncim-stat-gauge__stats\">\n @for (row of stats(); track row.label) {\n <div class=\"ncim-stat-gauge__stat-row\">\n <span class=\"ncim-stat-gauge__stat-label\">{{ row.label }}</span>\n <span class=\"ncim-stat-gauge__stat-value\">{{ row.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartSeriesItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\n\n/** Legend item that includes a displayable value */\nexport interface RingChartLegendItem {\n name: string;\n color: string;\n value: string | number;\n}\n\n@Component({\n selector: 'ncim-ring-chart',\n templateUrl: './ring-chart.html',\n styleUrl: './ring-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class RingChart {\n /** Data items for the ring segments */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Label displayed above the center value */\n readonly centerLabel = input<string | null>(null);\n\n /** Value displayed in the center of the ring */\n readonly centerValue = input<string | number | null>(null);\n\n /** Inner radius of the ring */\n readonly innerRadius = input<string>('55%');\n\n /** Outer radius of the ring */\n readonly outerRadius = input<string>('80%');\n\n /** Whether to show the legend below the chart */\n readonly showLegend = input<boolean>(true);\n\n /** Chart height in pixels */\n readonly height = input<number>(260);\n\n /** Start angle of the ring */\n readonly startAngle = input<number>(90);\n\n readonly legendItems = computed<RingChartLegendItem[]>(() =>\n this.data().map(item => ({\n name: item.name,\n color: item.color || '#999',\n value: item.value,\n }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: formatItemTooltip,\n },\n legend: { show: false },\n series: [\n {\n type: 'pie',\n radius: [this.innerRadius(), this.outerRadius()],\n center: ['50%', '50%'],\n startAngle: this.startAngle(),\n avoidLabelOverlap: true,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 2,\n borderRadius: 8,\n },\n label: { show: false },\n labelLine: { show: false },\n emphasis: { scaleSize: 4 },\n data: items.map(item => ({\n name: item.name,\n value: item.value,\n itemStyle: item.color ? { color: item.color } : undefined,\n })),\n },\n ],\n };\n });\n}\n","<div class=\"ncim-ring-chart\">\n <div class=\"ncim-ring-chart__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-ring-chart__canvas\"></div>\n\n @if (centerValue() !== null) {\n <div class=\"ncim-ring-chart__overlay\" aria-hidden=\"true\">\n @if (centerLabel()) {\n <span class=\"ncim-ring-chart__center-label\">{{ centerLabel() }}</span>\n }\n <span class=\"ncim-ring-chart__center-value\">{{ centerValue() }}</span>\n </div>\n }\n </div>\n\n @if (showLegend() && legendItems().length) {\n <div class=\"ncim-ring-chart__legend\">\n @for (item of legendItems(); track item.name) {\n <div class=\"ncim-ring-chart__legend-row\">\n <span class=\"ncim-ring-chart__legend-name\">{{ item.name }}</span>\n <div class=\"ncim-ring-chart__legend-marker\" [style.background-color]=\"item.color\"></div>\n <span class=\"ncim-ring-chart__legend-value\">{{ item.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\nexport interface StackedDistributionChartItem {\n label: string;\n value: number;\n barValue?: number;\n color?: string;\n patterned?: boolean;\n /** Number of sub-segments to divide this item into in the bar. Defaults to 1. */\n segments?: number;\n}\n\ninterface ComputedStackedDistributionChartItem extends StackedDistributionChartItem {\n color: string;\n normalizedValue: number;\n percentage: number;\n subSegments: number[];\n}\n\n@Component({\n selector: 'ncim-stacked-distribution-chart',\n templateUrl: './stacked-distribution-chart.html',\n styleUrl: './stacked-distribution-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedDistributionChart {\n private readonly el = inject(ElementRef);\n\n /** Segments rendered in the distribution bar and legend rows */\n readonly data = input<StackedDistributionChartItem[]>([]);\n\n /** Segment height in pixels */\n readonly barHeight = input<number>(44);\n\n /** Gap between top bar segments in pixels */\n readonly segmentGap = input<number>(8);\n\n /** Gap between legend rows in pixels */\n readonly rowGap = input<number>(20);\n\n /** Marker size in pixels */\n readonly markerSize = input<number>(24);\n\n /** Fallback color when an item does not provide one */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Placeholder color used when there is no positive data */\n readonly emptyColor = input<string>('#E5E7EB');\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n readonly total = computed<number>(() =>\n this.data().reduce((sum, item) => sum + Math.max(item.barValue ?? item.value, 0), 0)\n );\n\n readonly computedItems = computed<ComputedStackedDistributionChartItem[]>(() => {\n const total = this.total();\n\n return this.data().map(item => {\n const val = Math.max(item.barValue ?? item.value, 0);\n const percentage = total > 0 ? (val / total) * 100 : 0;\n const segmentCount = Math.max(item.segments ?? 1, 1);\n\n // Divide the normalized value across sub-segments\n const subSegments = Array(segmentCount).fill(val / segmentCount);\n\n return {\n ...item,\n color: item.color ?? this.defaultColor(),\n normalizedValue: val,\n percentage,\n subSegments,\n };\n });\n });\n\n readonly ariaLabel = computed<string>(() => {\n const items = this.computedItems();\n\n if (!items.length || !this.total()) {\n return 'Distribution chart';\n }\n\n const summary = items.map(item => `${item.label}: ${item.value} (${Math.round(item.percentage)}%)`).join(', ');\n\n return `Distribution chart. ${summary}`;\n });\n}\n","<div class=\"stacked-distribution-chart\">\n <div\n class=\"stacked-distribution-chart__bar\"\n [style.height.px]=\"barHeight()\"\n [style.gap.px]=\"segmentGap()\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @if (total() > 0 && computedItems().length) {\n @for (item of computedItems(); track item.label; let itemFirst = $first; let itemLast = $last) {\n @for (val of item.subSegments; track $index; let subFirst = $first; let subLast = $last) {\n <div\n class=\"stacked-distribution-chart__segment\"\n [class.stacked-distribution-chart__segment--first]=\"itemFirst && subFirst\"\n [class.stacked-distribution-chart__segment--last]=\"itemLast && subLast\"\n [class.stacked-distribution-chart__segment--patterned]=\"item.patterned\"\n [style.flex-grow]=\"val\"\n [style.background-color]=\"item.color\"\n [attr.aria-hidden]=\"true\"\n ></div>\n }\n }\n } @else {\n <div\n class=\"stacked-distribution-chart__segment stacked-distribution-chart__segment--first stacked-distribution-chart__segment--last\"\n [style.background-color]=\"emptyColor()\"\n [attr.aria-hidden]=\"true\"\n ></div>\n }\n </div>\n\n <div class=\"stacked-distribution-chart__legend\" [style.row-gap.px]=\"rowGap()\" role=\"list\">\n @for (item of computedItems(); track item.label) {\n <div class=\"stacked-distribution-chart__row\" role=\"listitem\">\n <div class=\"stacked-distribution-chart__meta\">\n <span\n class=\"stacked-distribution-chart__marker\"\n [style.background-color]=\"item.color\"\n [style.inline-size.px]=\"markerSize()\"\n [style.block-size.px]=\"markerSize()\"\n [attr.aria-hidden]=\"true\"\n ></span>\n <span class=\"stacked-distribution-chart__label\">{{ item.label }}</span>\n </div>\n\n <span class=\"stacked-distribution-chart__value\">{{ item.value }}</span>\n </div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ncim-stat-ring',\n templateUrl: './stat-ring.html',\n styleUrl: './stat-ring.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatRing {\n private readonly el = inject(ElementRef);\n\n /** Center label shown above the value */\n readonly label = input<string>('');\n\n /** Center value shown inside the ring */\n readonly value = input<string | number>(0);\n\n /** Progress arc length as a percentage (can exceed 100) */\n readonly progress = input<number>(0);\n\n /** Ring size in pixels */\n readonly size = input<number>(124);\n\n /** Progress arc stroke width in pixels */\n readonly strokeWidth = input<number>(12);\n\n /** Background track stroke width in pixels */\n readonly trackStrokeWidth = input<number>(8);\n\n /** Progress arc color (fallback if gradient is not used) */\n readonly color = input<string>('#B596D5');\n\n /** Start color for the linear gradient */\n readonly gradientStartColor = input<string>('#7B5EA7');\n\n /** End color for the linear gradient */\n readonly gradientEndColor = input<string>('#B596D5');\n\n /** Background ring color */\n readonly trackColor = input<string>('#F3F4F6');\n\n /**\n * Rotation of the progress arc in degrees.\n * Default is 0 (Right/3 o'clock).\n */\n readonly startAngle = input<number>(0);\n\n /** Whether to use a linear gradient for the progress arc */\n readonly useGradient = input<boolean>(true);\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n readonly gradientId = signal(`stat-ring-gradient-${Math.random().toString(36).substring(2, 9)}`);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n /** Final RTL status (prop override or detected) */\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n /** Normalized progress (can exceed 100) */\n readonly normalizedProgress = computed<number>(() => Math.max(0, this.progress()));\n\n /** Radius calculation based on the largest stroke to avoid clipping */\n readonly radius = computed<number>(() => {\n const maxStroke = Math.max(this.strokeWidth(), this.trackStrokeWidth());\n return (this.size() - maxStroke) / 2;\n });\n\n readonly center = computed<number>(() => this.size() / 2);\n readonly circumference = computed<number>(() => 2 * Math.PI * this.radius());\n\n /**\n * Calculate stroke dash offset.\n */\n readonly strokeDashOffset = computed<number>(() => {\n const p = this.normalizedProgress();\n return this.circumference() * (1 - p / 100);\n });\n\n readonly viewBox = computed<string>(() => `0 0 ${this.size()} ${this.size()}`);\n}\n","<div class=\"stat-ring\" [style.width.px]=\"size()\" [style.height.px]=\"size()\">\n <svg\n class=\"stat-ring__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n role=\"img\"\n [attr.aria-label]=\"label() + ' ' + value()\"\n >\n @if (useGradient()) {\n <defs>\n <linearGradient [id]=\"gradientId()\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" [attr.stop-color]=\"gradientStartColor()\" />\n <stop offset=\"100%\" [attr.stop-color]=\"gradientEndColor()\" />\n </linearGradient>\n </defs>\n }\n\n <circle\n class=\"stat-ring__track\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"trackStrokeWidth()\"\n [attr.stroke]=\"trackColor()\"\n fill=\"none\"\n />\n <circle\n class=\"stat-ring__fill\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"useGradient() ? 'url(#' + gradientId() + ')' : color()\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"strokeDashOffset()\"\n [attr.transform]=\"'rotate(' + startAngle() + ' ' + center() + ' ' + center() + ')'\"\n fill=\"none\"\n />\n </svg>\n\n <div class=\"stat-ring__content\" aria-hidden=\"true\">\n @if (label()) {\n <span class=\"stat-ring__label\">{{ label() }}</span>\n }\n <span class=\"stat-ring__value\">{{ value() }}</span>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/api';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\nexport interface BreadcrumbItem {\n label?: string;\n url?: string;\n icon?: string;\n command?: () => void;\n translateKey?: string; // Translation key for i18n (use when label should be translated)\n}\n\n@Component({\n selector: 'ncim-breadcrumb',\n imports: [BreadcrumbModule, TranslateModule],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ncim-breadcrumb',\n role: 'navigation',\n '[attr.aria-label]': '\"Breadcrumb\"',\n '[attr.dir]': 'rtl() ? \"rtl\" : \"ltr\"',\n },\n})\nexport class Breadcrumb {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n readonly translateService = inject(TranslateService);\n\n readonly items = input.required<BreadcrumbItem[]>();\n readonly home = input<BreadcrumbItem | null>(null);\n readonly showHomeIcon = input<boolean>(true);\n readonly rtl = input<boolean>(this.translateService.getCurrentLang() === 'ar');\n readonly separatorItem = input<string>('/');\n\n readonly itemClicked = output<BreadcrumbItem>();\n\n private readonly langChange = signal(0);\n\n constructor() {\n this.translateService.onLangChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.langChange.update(v => v + 1));\n }\n\n readonly menuItems = computed<MenuItem[]>(() => {\n this.langChange(); // React to lang changes\n const router = this.router;\n return this.items().map(item => ({\n label: item.translateKey ? this.translateService.instant(item.translateKey) : item.label,\n icon: item.icon,\n command: () => {\n if (item.url) {\n router.navigateByUrl(item.url);\n }\n if (item.command) {\n item.command();\n }\n this.itemClicked.emit(item);\n },\n }));\n });\n\n readonly homeMenuItem = computed<MenuItem | undefined>(() => {\n this.langChange(); // React to lang changes\n const router = this.router;\n const homeItem = this.home();\n if (!homeItem) {\n return this.showHomeIcon()\n ? {\n icon: 'pi pi-home',\n label: this.translateService.instant('SIDEBAR.ITEMS.HOME'),\n command: () => router.navigateByUrl('/'),\n }\n : undefined;\n }\n\n return {\n label: homeItem.translateKey ? this.translateService.instant(homeItem.translateKey) : homeItem.label,\n icon: homeItem.icon || (this.showHomeIcon() ? 'pi pi-home' : undefined),\n command: () => {\n if (homeItem.url) {\n router.navigateByUrl(homeItem.url);\n }\n homeItem.command?.();\n },\n };\n });\n\n onBreadcrumbItemClick(event: { originalEvent: Event; item: MenuItem }): void {\n const clickedItem = this.findOriginalItem(event.item);\n if (clickedItem) {\n if (clickedItem.command) {\n clickedItem.command();\n }\n this.itemClicked.emit(clickedItem);\n }\n }\n\n private findOriginalItem(menuItem: MenuItem): BreadcrumbItem | null {\n const homeItem = this.home();\n if (homeItem) {\n const homeLabel = homeItem.translateKey ? this.translateService.instant(homeItem.translateKey) : homeItem.label;\n if (menuItem.label === homeLabel) {\n return homeItem;\n }\n }\n\n if (!homeItem && menuItem.icon === 'pi pi-home') {\n return {\n label: this.translateService.instant('SIDEBAR.ITEMS.HOME'),\n url: '/',\n };\n }\n\n return (\n this.items().find(item => {\n const itemLabel = item.translateKey ? this.translateService.instant(item.translateKey) : item.label;\n return itemLabel === menuItem.label;\n }) || null\n );\n }\n}\n","<p-breadcrumb [model]=\"menuItems()\" [home]=\"homeMenuItem()\" styleClass=\"breadcrumb\" (onItemClick)=\"onBreadcrumbItemClick($event)\">\n @if (separatorItem()) {\n <ng-template #separator>\n <span class=\"breadcrumb-separator\">{{ separatorItem() }}</span>\n </ng-template>\n }\n</p-breadcrumb>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Breadcrumb, BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\n\n@Component({\n selector: 'ncim-page-header',\n imports: [TranslateModule, Breadcrumb],\n templateUrl: './page-header.html',\n styleUrl: './page-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageHeader {\n readonly titleKey = input<string>('');\n readonly title = input<string>('');\n readonly breadcrumbItems = input<BreadcrumbItem[]>([]);\n readonly showBreadcrumb = input<boolean>(true);\n}\n","<header class=\"page-header\">\n @if (titleKey() || title()) {\n <h1 class=\"page-header__title\">\n @if (titleKey()) {\n {{ titleKey() | translate }}\n } @else {\n {{ title() }}\n }\n </h1>\n }\n @if (showBreadcrumb() && breadcrumbItems().length) {\n <ncim-breadcrumb [items]=\"breadcrumbItems()\" class=\"page-header__breadcrumb\" />\n }\n</header>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-card',\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {}\n","<div class=\"card\">\n <ng-content />\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { AccordionModule } from 'primeng/accordion';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface AccordionItem {\n questionKey: string;\n answerKey: string;\n}\n\n@Component({\n selector: 'ncim-accordion',\n imports: [AccordionModule, TranslateModule],\n templateUrl: './accordion.html',\n styleUrl: './accordion.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n readonly items = input.required<AccordionItem[]>();\n readonly titleKey = input<string>('');\n}\n","<div class=\"accordion\">\n @if (titleKey()) {\n <h6 class=\"accordion__title\">{{ titleKey() | translate }}</h6>\n }\n <p-accordion [value]=\"[0]\" [multiple]=\"true\">\n @for (item of items(); track item.questionKey; let i = $index) {\n <p-accordion-panel [value]=\"i\">\n <p-accordion-header>\n <span>{{ item.questionKey | translate }}</span>\n </p-accordion-header>\n <p-accordion-content>\n <p>{{ item.answerKey | translate }}</p>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { ProgressBar } from '@libs/ui-components/shared/atoms/progress-bar/progress-bar';\n\n@Component({\n selector: 'ncim-progress-card',\n imports: [TranslateModule, NcimButton, ProgressBar],\n templateUrl: './progress-card.html',\n styleUrl: './progress-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCard {\n readonly titleKey = input<string>('');\n readonly descriptionKey = input<string>('');\n readonly buttonKey = input<string>('');\n readonly progress = input<number>(0);\n readonly illustrationSrc = input<string>('');\n\n readonly nextStep = output<void>();\n}\n","<div class=\"progress-card\">\n @if (titleKey()) {\n <h4 class=\"progress-card__title\">{{ titleKey() | translate }}</h4>\n }\n @if (illustrationSrc()) {\n <div class=\"progress-card__illustration\">\n <img [src]=\"illustrationSrc()\" alt=\"\" loading=\"lazy\" />\n </div>\n }\n @if (descriptionKey()) {\n <p class=\"progress-card__desc\">{{ descriptionKey() | translate }}</p>\n }\n <ncim-progress-bar [progress]=\"progress()\" [max]=\"100\" />\n @if (buttonKey()) {\n <ncim-button variant=\"black\" size=\"medium\" [fullWidth]=\"true\" (click)=\"nextStep.emit()\">\n {{ buttonKey() | translate }}\n </ncim-button>\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-nav-card',\n imports: [RouterLink, Icon],\n templateUrl: './nav-card.html',\n styleUrl: './nav-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly thumbnailSrc = input<string>('');\n readonly route = input<string | string[] | null>(null);\n readonly compact = input<boolean>(false);\n\n readonly cardClick = output<void>();\n}\n","@if (route(); as r) {\n <a class=\"nav-card\" [class.nav-card--compact]=\"compact()\" [routerLink]=\"r\" (click)=\"cardClick.emit()\">\n <span class=\"nav-card__arrow\" aria-hidden=\"true\">\n <ncim-icon name=\"chevronRight\" [size]=\"15\" />\n </span>\n <div class=\"nav-card__content\">\n <h3 class=\"nav-card__title\">{{ title() }}</h3>\n <p class=\"nav-card__description\">{{ description() }}</p>\n </div>\n <div class=\"nav-card__thumbnail\">\n @if (thumbnailSrc()) {\n <img [src]=\"thumbnailSrc()\" [alt]=\"title()\" loading=\"lazy\" />\n }\n <ncim-icon name=\"play\" [size]=\"47\" class=\"nav-card__play-icon\" />\n <span class=\"nav-card__play\" aria-hidden=\"true\"></span>\n </div>\n </a>\n} @else {\n <div class=\"nav-card\" [class.nav-card--compact]=\"compact()\" (click)=\"cardClick.emit()\" role=\"button\" tabindex=\"0\">\n <span class=\"nav-card__arrow\" aria-hidden=\"true\">\n <ncim-icon name=\"chevronRight\" [size]=\"15\" />\n </span>\n <div class=\"nav-card__content\">\n <h3 class=\"nav-card__title\">{{ title() }}</h3>\n <p class=\"nav-card__description\">{{ description() }}</p>\n </div>\n <div class=\"nav-card__thumbnail\">\n @if (thumbnailSrc()) {\n <img [src]=\"thumbnailSrc()\" [alt]=\"title()\" loading=\"lazy\" />\n }\n <ncim-icon name=\"play\" [size]=\"47\" class=\"nav-card__play-icon\" />\n <span class=\"nav-card__play\" aria-hidden=\"true\"></span>\n </div>\n </div>\n}\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-content-block',\n imports: [TranslateModule],\n templateUrl: './content-block.html',\n styleUrl: './content-block.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentBlock {\n readonly contentKey = input.required<string>();\n}\n","<div class=\"content-block\">\n <p class=\"content-block__body\">{{ contentKey() | translate }}</p>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavCard } from '@libs/ui-components/shared/molecules/nav-card/nav-card';\n\nexport interface RelatedCardItem {\n title?: string;\n titleKey?: string;\n description?: string;\n descriptionKey?: string;\n thumbnailSrc?: string;\n route: string | string[];\n}\n\n@Component({\n selector: 'ncim-related-cards-list',\n imports: [TranslateModule, NavCard],\n templateUrl: './related-cards-list.html',\n styleUrl: './related-cards-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RelatedCardsList {\n readonly items = input.required<RelatedCardItem[]>();\n readonly titleKey = input<string>('');\n}\n","<div class=\"related-cards\">\n @if (titleKey()) {\n <h4 class=\"related-cards__title\">{{ titleKey() | translate }}</h4>\n }\n <div class=\"related-cards__list\">\n @for (item of items(); track item.titleKey || item.title) {\n <ncim-nav-card\n [title]=\"item.titleKey ? (item.titleKey | translate) : (item.title ?? '')\"\n [description]=\"item.descriptionKey ? (item.descriptionKey | translate) : (item.description ?? '')\"\n [thumbnailSrc]=\"item.thumbnailSrc || ''\"\n [route]=\"item.route\"\n [compact]=\"true\"\n />\n }\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavCard } from '@libs/ui-components/shared/molecules/nav-card/nav-card';\n\nexport interface NavCardItem {\n slug: string;\n titleKey: string;\n descriptionKey: string;\n thumbnailSrc: string;\n}\n\n@Component({\n selector: 'ncim-nav-cards-list',\n imports: [TranslateModule, NavCard],\n templateUrl: './nav-cards-list.html',\n styleUrl: './nav-cards-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavCardsList {\n readonly items = input.required<NavCardItem[]>();\n readonly getItemRoute = input.required<(slug: string) => string[]>();\n}\n","<div class=\"nav-cards-list\">\n @for (item of items(); track item.slug) {\n <ncim-nav-card\n [title]=\"item.titleKey | translate\"\n [description]=\"item.descriptionKey | translate\"\n [thumbnailSrc]=\"item.thumbnailSrc\"\n [route]=\"getItemRoute()(item.slug)\"\n />\n }\n</div>\n","import { Component, input, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n@Component({\n selector: 'ncim-feedback-section',\n imports: [TranslateModule, NcimButton],\n templateUrl: './feedback-section.html',\n styleUrl: './feedback-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeedbackSection {\n readonly questionKey = input<string>('KNOWLEDGE.WAS_HELPFUL');\n readonly yesKey = input<string>('COMMON.YES');\n readonly noKey = input<string>('COMMON.NO');\n\n readonly feedback = output<'yes' | 'no'>();\n\n readonly selected = signal<'yes' | 'no' | null>(null);\n\n onYes(): void {\n this.selected.set('yes');\n this.feedback.emit('yes');\n }\n\n onNo(): void {\n this.selected.set('no');\n this.feedback.emit('no');\n }\n}\n","<div class=\"feedback\">\n <p class=\"feedback__question\">{{ questionKey() | translate }}</p>\n <div class=\"feedback__buttons\">\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"false\" (click)=\"onYes()\" [disabled]=\"selected() !== null\">\n {{ yesKey() | translate }}\n </ncim-button>\n <ncim-button variant=\"neutral\" size=\"small\" [fullWidth]=\"false\" (click)=\"onNo()\" [disabled]=\"selected() !== null\">\n {{ noKey() | translate }}\n </ncim-button>\n </div>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VideoPlayer } from '@libs/ui-components/shared/molecules/video-player/video-player';\nimport { ContentBlock } from '@libs/ui-components/shared/molecules/content-block/content-block';\nimport { FeedbackSection } from '../feedback-section/feedback-section';\nimport { AccordionItem } from '@libs/ui-components/shared/molecules/accordion/accordion';\n\n@Component({\n selector: 'ncim-article-detail',\n imports: [TranslateModule, VideoPlayer, ContentBlock, FeedbackSection],\n templateUrl: './article-detail.html',\n styleUrl: './article-detail.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleDetail {\n readonly videoSrc = input.required<string>();\n readonly titleKey = input.required<string>();\n readonly contentKey = input.required<string>();\n readonly accordionItems = input<AccordionItem[]>([]);\n readonly accordionTitleKey = input<string>('');\n\n readonly feedback = output<'yes' | 'no'>();\n}\n","<div class=\"article-detail\">\n <div class=\"article-detail__video\">\n <ncim-video-player [src]=\"videoSrc()\" [title]=\"titleKey() | translate\" />\n </div>\n\n <ncim-content-block [contentKey]=\"contentKey()\" />\n\n <ncim-feedback-section (feedback)=\"feedback.emit($event)\" />\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-article-layout',\n templateUrl: './article-layout.html',\n styleUrl: './article-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleLayout {}\n","<div class=\"article-layout\">\n <div class=\"article-layout__main\">\n <ng-content select=\"[data-main]\" />\n </div>\n <aside class=\"article-layout__sidebar\">\n <ng-content select=\"[data-sidebar]\" />\n </aside>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport interface ResourceItem {\n label?: string;\n labelKey?: string;\n url: string;\n icon?: string;\n}\n\n@Component({\n selector: 'ncim-resources-list',\n imports: [TranslateModule, Icon],\n templateUrl: './resources-list.html',\n styleUrl: './resources-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResourcesList {\n readonly items = input.required<ResourceItem[]>();\n readonly titleKey = input<string>('KNOWLEDGE.RESOURCES');\n}\n","<div class=\"resources\">\n <h4 class=\"resources__title\">{{ titleKey() | translate }}</h4>\n <ul class=\"resources__list\">\n @for (item of items(); track item.url) {\n <li>\n <a [href]=\"item.url\" target=\"_blank\" rel=\"noopener\" download class=\"resources__link\">\n <ncim-icon [name]=\"item.icon || 'pdf'\" [size]=\"20\" />\n <span class=\"resources__label\">{{ item.labelKey ? (item.labelKey | translate) : (item.label ?? '') }}</span>\n <ncim-icon name=\"download-small\" [size]=\"20\" />\n </a>\n </li>\n }\n </ul>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ResourcesList, type ResourceItem } from '../resources-list/resources-list';\nimport { RelatedCardsList, type RelatedCardItem } from '../related-cards-list/related-cards-list';\n\n@Component({\n selector: 'ncim-article-sidebar',\n imports: [ResourcesList, RelatedCardsList],\n templateUrl: './article-sidebar.html',\n styleUrl: './article-sidebar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleSidebar {\n readonly resources = input.required<ResourceItem[]>();\n readonly relatedItems = input.required<RelatedCardItem[]>();\n readonly resourcesTitleKey = input<string>('KNOWLEDGE.RESOURCES');\n readonly relatedTitleKey = input<string>('');\n}\n","<div class=\"article-sidebar\">\n <ncim-resources-list [items]=\"resources()\" [titleKey]=\"resourcesTitleKey()\" />\n <ncim-related-cards-list [items]=\"relatedItems()\" [titleKey]=\"relatedTitleKey()\" />\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-empty-state',\n imports: [TranslatePipe, Icon],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n /** Translation key for the title (e.g. COMMON.NO_DATA). Used when title is not provided. */\n readonly titleKey = input<string>();\n\n /** Plain text for the title. When provided, overrides titleKey. */\n readonly title = input<string>();\n\n /** Optional translation key for subtitle/description. Used when subtitle is not provided. */\n readonly subtitleKey = input<string>();\n\n /** Plain text for the subtitle. When provided, overrides subtitleKey. */\n readonly subtitle = input<string>();\n\n /**\n * Illustration image URL. Defaults to the shared empty.svg asset.\n * When truthy, renders an <img> instead of the icon.\n * Pass an empty string to disable the image and fall back to the icon input.\n */\n readonly imageSrc = input<string>('assets/ncim-icons/empty.svg');\n\n /** Accessible alt text for the illustration. Defaults to empty (decorative). */\n readonly imageAlt = input<string>('');\n\n /** Icon name from ncim icon set — used only when imageSrc is empty. */\n readonly icon = input<string>('search');\n\n /** Size in pixels applied to both the illustration width and icon size. */\n readonly iconSize = input<number>(160);\n\n /** Compact variant for inline use (e.g. inside cards, smaller padding) */\n readonly compact = input(false);\n}\n","<div class=\"empty-state\" [class.empty-state--compact]=\"compact()\" role=\"status\" aria-live=\"polite\">\n <figure class=\"empty-state__icon\" aria-hidden=\"true\">\n @if (imageSrc()) {\n <img class=\"empty-state__image\" [src]=\"imageSrc()\" [alt]=\"imageAlt()\" [style.width.px]=\"iconSize()\" />\n } @else {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n </figure>\n <h3 class=\"empty-state__title\">{{ title() ?? (titleKey() | translate) }}</h3>\n @if (subtitle() ?? subtitleKey()) {\n <p class=\"empty-state__subtitle\">{{ subtitle() ?? (subtitleKey() | translate) }}</p>\n }\n <ng-content />\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PageHeader } from '../page-header/page-header';\nimport { NavCardsList, type NavCardItem } from '../nav-cards-list/nav-cards-list';\nimport { EmptyState } from '../empty-state/empty-state';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\n\n@Component({\n selector: 'ncim-cards-list-page',\n imports: [TranslateModule, PageHeader, NavCardsList, EmptyState],\n templateUrl: './cards-list-page.html',\n styleUrl: './cards-list-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardsListPage {\n readonly titleKey = input.required<string>();\n readonly breadcrumbItems = input.required<BreadcrumbItem[]>();\n readonly items = input.required<NavCardItem[]>();\n readonly getItemRoute = input.required<(slug: string) => string[]>();\n}\n","<div class=\"cards-list-page\">\n <ncim-page-header [titleKey]=\"titleKey()\" [breadcrumbItems]=\"breadcrumbItems()\" />\n @if (items().length) {\n <ncim-nav-cards-list class=\"cards-list-page__list\" [items]=\"items()\" [getItemRoute]=\"getItemRoute()\" />\n } @else {\n <ncim-empty-state titleKey=\"COMMON.NO_DATA\" subtitleKey=\"COMMON.NO_FILTER_RESULTS\" icon=\"search\" />\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PageHeader } from '../page-header/page-header';\nimport { Card } from '@libs/ui-components/shared/molecules/card/card';\nimport { ArticleLayout } from '../article-layout/article-layout';\nimport { ArticleDetail } from '../article-detail/article-detail';\nimport { ArticleSidebar } from '../article-sidebar/article-sidebar';\nimport { SupportContactCard } from '@libs/ui-components/shared/molecules/support-contact-card/support-contact-card';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport {\n Accordion as FaqAccordion,\n type AccordionItem,\n} from '@libs/ui-components/shared/molecules/accordion/accordion';\nimport type { ResourceItem } from '../resources-list/resources-list';\nimport type { RelatedCardItem } from '../related-cards-list/related-cards-list';\n\n@Component({\n selector: 'ncim-article-page',\n imports: [\n TranslateModule,\n PageHeader,\n Card,\n ArticleLayout,\n ArticleDetail,\n ArticleSidebar,\n SupportContactCard,\n FaqAccordion,\n ],\n templateUrl: './article-page.html',\n styleUrl: './article-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticlePage {\n readonly titleKey = input.required<string>();\n readonly breadcrumbItems = input.required<BreadcrumbItem[]>();\n readonly videoSrc = input.required<string>();\n readonly contentKey = input.required<string>();\n readonly accordionItems = input<AccordionItem[]>([]);\n readonly accordionTitleKey = input<string>('');\n readonly resources = input.required<ResourceItem[]>();\n readonly relatedItems = input.required<RelatedCardItem[]>();\n readonly relatedTitleKey = input<string>('');\n\n readonly feedback = output<'yes' | 'no'>();\n readonly newTicket = output<void>();\n}\n","<ncim-page-header [titleKey]=\"titleKey()\" [breadcrumbItems]=\"breadcrumbItems()\" />\n<ncim-article-layout>\n <ncim-card data-main>\n <ncim-article-detail\n [videoSrc]=\"videoSrc()\"\n [titleKey]=\"titleKey()\"\n [contentKey]=\"contentKey()\"\n [accordionItems]=\"accordionItems()\"\n [accordionTitleKey]=\"accordionTitleKey()\"\n (feedback)=\"feedback.emit($event)\"\n />\n </ncim-card>\n <div class=\"mt-20\" data-main>\n <ncim-card>\n @if (accordionItems().length) {\n <ncim-accordion [items]=\"accordionItems()\" [titleKey]=\"accordionTitleKey()\" />\n }\n </ncim-card>\n </div>\n <div class=\"mt-20\" data-main>\n <ncim-support-contact-card\n [title]=\"'KNOWLEDGE.SUPPORT_TITLE' | translate\"\n [description]=\"'KNOWLEDGE.SUPPORT_DESC' | translate\"\n [buttonLabel]=\"'KNOWLEDGE.NEW_TICKET' | translate\"\n (newTicket)=\"newTicket.emit()\"\n />\n </div>\n <ncim-article-sidebar\n data-sidebar\n [resources]=\"resources()\"\n [relatedItems]=\"relatedItems()\"\n [relatedTitleKey]=\"relatedTitleKey()\"\n ></ncim-article-sidebar>\n</ncim-article-layout>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\n\n@Component({\n selector: 'ncim-info-row',\n templateUrl: './info-row.html',\n styleUrl: './info-row.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfoRow {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly editLabel = input<string>('تعديل');\n readonly showEdit = input<boolean>(true);\n\n readonly editClick = output<void>();\n}\n","<div class=\"info-row\">\n <div class=\"info-row__content\">\n <span class=\"info-row__title\">{{ title() }}</span>\n <span class=\"info-row__description\">{{ description() }}</span>\n </div>\n\n @if (showEdit()) {\n <button class=\"info-row__edit-btn\" type=\"button\" (click)=\"editClick.emit()\">\n {{ editLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-page-not-found',\n imports: [TranslateModule, EmptyState, NcimButton],\n templateUrl: './page-not-found.html',\n styleUrl: './page-not-found.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageNotFound {\n /** i18n key for the empty-state title. */\n readonly titleKey = input.required<string>();\n\n /** i18n key for the empty-state subtitle/description. */\n readonly subtitleKey = input<string | undefined>(undefined);\n\n /** Icon name from the ncim icon set shown in the empty-state. */\n readonly icon = input<string>('fill-worring');\n\n /** i18n key for the back button label. Defaults to COMMON.BACK. */\n readonly backLabelKey = input<string>('COMMON.BACK');\n\n /** Emitted when the user clicks the back button. */\n readonly back = output<void>();\n}\n","<div class=\"ncim-page-not-found\">\n <ncim-empty-state [titleKey]=\"titleKey()\" [subtitleKey]=\"subtitleKey()\" [icon]=\"icon()\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"back.emit()\">\n {{ backLabelKey() | translate }}\n </ncim-button>\n </ncim-empty-state>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-page-error',\n imports: [TranslateModule, EmptyState, NcimButton],\n templateUrl: './page-error.html',\n styleUrl: './page-error.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageError {\n /** i18n key for the error title. */\n readonly titleKey = input.required<string>();\n\n /** i18n key for the optional subtitle/description. */\n readonly subtitleKey = input<string | undefined>(undefined);\n\n /** Icon name from the ncim icon set. */\n readonly icon = input<string>('fill-worring');\n\n /** i18n key for the retry button label. Defaults to COMMON.RETRY. */\n readonly retryLabelKey = input<string>('COMMON.RETRY');\n\n /** Emitted when the user clicks the retry button. */\n readonly retry = output<void>();\n}\n","<div class=\"ncim-page-error\">\n <ncim-empty-state [titleKey]=\"titleKey()\" [subtitleKey]=\"subtitleKey()\" [icon]=\"icon()\">\n <ncim-button variant=\"outline\" [fullWidth]=\"false\" (click)=\"retry.emit()\">\n {{ retryLabelKey() | translate }}\n </ncim-button>\n </ncim-empty-state>\n</div>\n","export enum ColumnsEnum {\n TOGGLE = 'toggle',\n TEXT = 'text',\n CUSTOM = 'custom',\n BUTTON = 'button',\n LINK = 'link',\n COMMAND = 'command',\n CHECKBOX = 'checkbox',\n STATUS = 'status',\n PROGRESS = 'progress',\n BADGE = 'badge',\n MULTILINE = 'multiline',\n MENU = 'menu',\n DATE = 'date',\n HASH_ID = 'hashId',\n}\n","const pathCache = new Map<string, string[]>();\n\n/** Resolve dot-separated path to segments (cached). */\nexport function resolvePath(path: string): string[] {\n let segments = pathCache.get(path);\n if (!segments) {\n segments = path.split('.');\n pathCache.set(path, segments);\n }\n return segments;\n}\n\n/** Get value at nested path in object. */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const segments = resolvePath(path);\n let current: unknown = obj;\n for (const segment of segments) {\n if (current == null || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getNestedValue } from '../utils/nested-path.utils';\n\n@Pipe({ name: 'nestedValue' })\nexport class NestedValuePipe implements PipeTransform {\n transform(obj: Record<string, unknown>, path: string | undefined): unknown {\n return path ? getNestedValue(obj, path) : undefined;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StatusConfig } from '../grid-table.models';\nimport { getNestedValue } from '../utils/nested-path.utils';\n\nconst DEFAULT_STATUS: StatusConfig = { label: '', color: 'var(--color-text-muted)' };\n\n@Pipe({ name: 'statusConfig' })\nexport class StatusConfigPipe implements PipeTransform {\n transform(\n obj: Record<string, unknown>,\n field: string | undefined,\n statusMap?: Record<string, StatusConfig>\n ): StatusConfig {\n if (!field) {\n return DEFAULT_STATUS;\n }\n const value = getNestedValue(obj, field);\n const key = String(value ?? '');\n return statusMap?.[key] ?? { label: key, color: 'var(--color-text-muted)' };\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[ncimCustomCol]',\n})\nexport class CustomColsDirective {\n readonly ncimCustomCol = input.required<string>();\n\n readonly templateRef = inject(TemplateRef<any>);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule, ButtonSeverity } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ColumnsEnum } from './enums/columns.enum';\nimport { ToggleSwitch } from 'primeng/toggleswitch';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { ToastModule } from 'primeng/toast';\nimport { MenuItem, MessageService } from 'primeng/api';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { NestedValuePipe } from './pipes/nested-value.pipe';\nimport { StatusConfigPipe } from './pipes/status-config.pipe';\nimport { CustomColsDirective } from './directives/custom-cols';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { LocalizedDatePipe } from '@libs/core';\nimport { resolvePath } from './utils/nested-path.utils';\nimport { DgaTag } from '../../atoms/dga-tag/dga-tag';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { Icon } from '../../atoms/icon/icon';\nimport { Skeleton } from '../../atoms/skeleton/skeleton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { MenuModule } from 'primeng/menu';\nimport { LOADING_DELAY_MS } from '@libs/core/constants';\nimport type { StatusConfig } from './grid-table.models';\n\nexport type GridRow = Record<string, unknown>;\n\n/** Emitted by GridTable when the user clicks a sortable column header. */\nexport interface GridSortEvent {\n field: string;\n order: 'asc' | 'desc';\n}\nexport type { StatusConfig } from './grid-table.models';\n\n/** Emitted by GridTable when paginator page changes. */\nexport interface GridPageEvent {\n page: number;\n rows: number;\n first: number;\n}\n\nexport interface ProgressConfig {\n value: number;\n max: number;\n label: string;\n color?: string;\n}\n\nexport type GridActionType = 'link' | 'command' | 'menu';\n\nexport interface GridAction<T extends GridRow = GridRow> {\n type: Exclude<GridActionType, 'menu'>;\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n link?: (row: T) => string;\n command?: (row: T) => void;\n}\n\nexport interface GridAction<T extends GridRow = GridRow> {\n type: Exclude<GridActionType, 'menu'>;\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n link?: (row: T) => string;\n command?: (row: T) => void;\n}\n\nexport interface GridMenuItem<T extends GridRow = GridRow> {\n label?: string;\n icon?: string;\n command?: (row: T) => void;\n class?: string;\n separator?: boolean;\n}\n\nexport interface GridMenuAction<T extends GridRow = GridRow> {\n type: 'menu';\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n items: GridMenuItem<T>[];\n}\n\nexport type GridColumnAction<T extends GridRow = GridRow> = GridAction<T> | GridMenuAction<T>;\n\nexport interface GridColumn<T extends GridRow = GridRow> {\n header: string;\n isSorted: boolean;\n field?: string;\n type?: ColumnsEnum;\n display?: any;\n onChange?: (row: any, ...args: any[]) => void;\n actions?: GridColumnAction<T>[];\n statusMap?: Record<string, StatusConfig>;\n progressField?: string;\n getProgress?: (row: any) => ProgressConfig;\n getBadgeColor?: (row: any) => string;\n columnDef?: string;\n cellValue?: (row: any) => any;\n pipeArgs?: any;\n cssStyle?: string;\n}\n\n@Component({\n selector: 'ncim-grid-table',\n imports: [\n FormsModule,\n TranslateModule,\n TableModule,\n ToggleSwitch,\n DatePickerModule,\n ButtonModule,\n ToastModule,\n CheckboxModule,\n NestedValuePipe,\n StatusConfigPipe,\n DgaTag,\n EmptyState,\n NgTemplateOutlet,\n Icon,\n Skeleton,\n TooltipModule,\n MenuModule,\n CommonModule,\n LocalizedDatePipe,\n ],\n templateUrl: './grid-table.html',\n styleUrl: './grid-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService],\n})\nexport class GridTable<T extends GridRow = GridRow> {\n private readonly router = inject(Router);\n\n readonly showSelect = input(false);\n readonly btnLabel = input('Add new Card');\n readonly selectedItems = model<T[]>([]);\n readonly searchPipeKey = input('_id');\n readonly data = input<T[]>([]);\n readonly columns = input.required<GridColumn<T>[]>();\n readonly showAddButton = input<boolean>(false);\n readonly loading = input(false);\n readonly loadingDelay = input(LOADING_DELAY_MS);\n readonly rows = input(10);\n readonly rowsPerPageOptions = input<number[]>([10, 20, 50]);\n /**\n * When false, the footer paginator is hidden (e.g. static read-only tables with few rows).\n */\n readonly pagination = input(true);\n readonly lazy = input(false);\n readonly totalRecords = input(0);\n readonly first = input(0);\n readonly tableMinWidth = input('60rem');\n\n /** When provided with emptyStateTitleKey, shows ncim-empty-state with icon in empty table body */\n readonly emptyStateIcon = input<string>();\n readonly emptyStateTitleKey = input<string>();\n readonly emptyStateSubtitleKey = input<string>();\n /** When true, shows an error state instead of empty state in the table body */\n readonly error = input(false);\n\n /**\n * Active sort field — restores the sort arrow after a loading cycle.\n * Must match the `field` property of the sorted column.\n */\n readonly sortField = input<string>();\n\n /**\n * Active sort direction — restores the sort arrow after a loading cycle.\n * Pass the same value emitted by sortChange.\n */\n readonly sortOrder = input<'asc' | 'desc'>();\n\n /** PrimeNG expects 1 (asc) / -1 (desc). Converts from the string union. */\n readonly primeNgSortOrder = computed(() => (this.sortOrder() === 'desc' ? -1 : 1));\n\n /**\n * Optional row-click navigation.\n * Provide a function that returns an absolute route string for the given row,\n * or `null` / `undefined` to make a specific row non-navigable.\n *\n * @example\n * [rowRoute]=\"(row) => '/dashboard/violations/violation-details/' + row['id']\"\n */\n readonly rowRoute = input<(row: T) => string | null | undefined>();\n\n readonly hasRowRoute = computed(() => !!this.rowRoute());\n\n /** True when skeleton should be shown (loading or within delay after loading ends) */\n readonly showSkeleton = signal(true);\n\n private lastPageEvent: GridPageEvent | null = null;\n\n constructor() {\n effect(() => {\n const isLoading = this.loading();\n const delay = this.loadingDelay();\n\n if (isLoading) {\n this.showSkeleton.set(true);\n return;\n }\n\n const timer = setTimeout(() => {\n this.showSkeleton.set(false);\n }, delay);\n\n return () => clearTimeout(timer);\n });\n }\n\n readonly addActionEvent = output<{ show: boolean }>();\n readonly searchQuery = output<unknown>();\n readonly selectItems = output<T[]>();\n /** Fires when a sortable column header is clicked — use this to call the API with updated sort params. */\n readonly sortChange = output<GridSortEvent>();\n /** Fires when paginator page changes. */\n readonly pageChange = output<GridPageEvent>();\n\n customColumnTemplates = contentChildren(CustomColsDirective);\n\n protected readonly ColumnsEnum = ColumnsEnum;\n\n readonly normalizedColumns = computed(() =>\n this.columns().map(col => ({\n ...col,\n isSorted: col.isSorted || false,\n type: col.type || ColumnsEnum.TEXT,\n }))\n );\n\n readonly globalFilterFields = computed(() =>\n this.columns()\n .map(col => col.field)\n .filter((f): f is string => !!f)\n );\n\n /** Skeleton uses same columns and row count as table (data length or rows per page) */\n readonly skeletonRows = computed(() => {\n const dataArr = this.data() ?? [];\n const rowsPerPage = this.rows();\n const count = dataArr.length > 0 ? Math.min(dataArr.length, rowsPerPage) : rowsPerPage;\n return Array.from({ length: count }, (_, i) => i);\n });\n\n readonly showPaginator = computed(\n () => this.pagination() && (this.lazy() ? this.totalRecords() > 0 : this.data().length > 0)\n );\n\n /** Varying widths for skeleton cells to mimic table layout */\n colWidth(index: number): string {\n const widths = ['100%', '85%', '70%', '90%', '75%', '95%'];\n return widths[index % widths.length];\n }\n\n setNestedValue(obj: T, path: string | undefined, value: unknown): void {\n if (!path) {\n return;\n }\n const segments = resolvePath(path);\n let current: GridRow = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const next = current[segments[i]];\n if (next == null || typeof next !== 'object') {\n return;\n }\n current = next as GridRow;\n }\n current[segments[segments.length - 1]] = value;\n }\n\n // Helper to get custom template for a column\n getCustomTemplate(columnDef: string | undefined) {\n if (!columnDef) {\n return null;\n }\n const template = this.customColumnTemplates().find(t => t.ncimCustomCol() === columnDef);\n return template?.templateRef || null;\n }\n\n /**\n * Get the cell value using priority:\n * 1. cellValue function (most flexible)\n * 2. field path with NestedValuePipe\n * 3. null/undefined\n */\n getCellValue(row: any, column: GridColumn) {\n if (column.cellValue) {\n return column.cellValue(row);\n }\n }\n\n /** Called by PrimeNG (customSort=true) — maps PrimeNG order (1/-1) to 'asc'/'desc'. */\n onTableSort(event: { field: string; order: number }): void {\n if (!event.field) {\n return;\n }\n this.sortChange.emit({ field: event.field, order: event.order === 1 ? 'asc' : 'desc' });\n }\n\n onRowClick(row: T, event: MouseEvent): void {\n const fn = this.rowRoute();\n if (!fn) {\n return;\n }\n // Ignore clicks originating from interactive elements inside the cell\n if ((event.target as HTMLElement).closest('button, a, input, p-toggleswitch, p-checkbox, .p-menu')) {\n return;\n }\n const route = fn(row);\n if (!route) {\n return;\n }\n void this.router.navigateByUrl(route);\n }\n\n onSelectChange(items: T[]): void {\n this.selectItems.emit(items);\n }\n\n onPage(event: { first?: number | null; rows?: number | null; page?: number | null }): void {\n this.pageChange.emit({\n first: event.first ?? 0,\n rows: event.rows ?? this.rows(),\n page: (event.page ?? 0) + 1,\n });\n }\n\n onLazyLoad(event: { first?: number | null; rows?: number | null }): void {\n const first = event.first ?? 0;\n const rows = event.rows ?? this.rows();\n const page = Math.floor(first / rows) + 1;\n\n const last = this.lastPageEvent;\n if (last?.page === page && last?.rows === rows && last?.first === first) {\n return;\n }\n\n this.lastPageEvent = { first, rows, page };\n this.pageChange.emit({ first, rows, page });\n }\n\n onFilterList(query: unknown): void {\n this.searchQuery.emit(query);\n }\n\n addActionEmit(): void {\n this.addActionEvent.emit({ show: true });\n }\n\n buildMenuItems(action: GridMenuAction<T>, row: T): MenuItem[] {\n return action.items.map(item => ({\n label: item.label,\n icon: item.icon,\n separator: item.separator,\n linkClass: item.class,\n command: () => item.command?.(row),\n }));\n }\n\n isMenuAction(action: GridColumnAction<T>): action is GridMenuAction<T> {\n return action.type === 'menu';\n }\n}\n","@if (normalizedColumns().length) {\n @if (showSkeleton()) {\n <div class=\"grid-table\">\n <table class=\"grid-table__skeleton-table\">\n <thead>\n <tr>\n @if (showSelect()) {\n <th class=\"grid-table__th\">\n <ncim-skeleton variant=\"rectangular\" [width]=\"'20px'\" [height]=\"'20px'\" />\n </th>\n }\n @for (col of normalizedColumns(); track $index) {\n <th class=\"grid-table__th\">\n <ncim-skeleton variant=\"text\" [width]=\"'80px'\" [height]=\"'20px'\" />\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of skeletonRows(); track $index) {\n <tr class=\"grid-table__row\">\n @if (showSelect()) {\n <td class=\"grid-table__td\">\n <ncim-skeleton variant=\"rectangular\" [width]=\"'20px'\" [height]=\"'20px'\" />\n </td>\n }\n @for (col of normalizedColumns(); track $index) {\n <td class=\"grid-table__td\">\n <ncim-skeleton variant=\"text\" [width]=\"colWidth($index)\" [height]=\"'16px'\" />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"grid-table\">\n <!-- Rows-per-page dropdown appended to body so it is not clipped by overflow/scroll containers -->\n <p-table\n #dt1\n [value]=\"data()\"\n [tableStyle]=\"{ 'min-width': tableMinWidth() }\"\n paginatorDropdownAppendTo=\"body\"\n [paginator]=\"showPaginator()\"\n [lazy]=\"lazy()\"\n [totalRecords]=\"lazy() ? totalRecords() : data().length\"\n [first]=\"first()\"\n [rows]=\"rows()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [(selection)]=\"selectedItems\"\n (selectionChange)=\"onSelectChange($event)\"\n (onPage)=\"!lazy() && onPage($event)\"\n (onLazyLoad)=\"lazy() && onLazyLoad($event)\"\n [selectionPageOnly]=\"true\"\n [showFirstLastIcon]=\"false\"\n [customSort]=\"true\"\n [sortField]=\"sortField() ?? ''\"\n [sortOrder]=\"primeNgSortOrder()\"\n (onSort)=\"onTableSort($event)\"\n >\n <ng-template pTemplate=\"sorticon\" let-sortOrder>\n @switch (sortOrder) {\n @case (0) {\n <ncim-icon name=\"sort-direction\" [size]=\"16\"></ncim-icon>\n }\n @case (1) {\n <ncim-icon name=\"sort-up\" [size]=\"16\"></ncim-icon>\n }\n @case (-1) {\n <ncim-icon name=\"sort-down\" [size]=\"16\"></ncim-icon>\n }\n }\n </ng-template>\n\n @if (showAddButton()) {\n <ng-template #caption>\n <div class=\"grid-table__caption\">\n <p-button severity=\"success\" [label]=\"btnLabel() | translate\" icon=\"pi pi-plus\" size=\"small\" (click)=\"addActionEmit()\" />\n </div>\n </ng-template>\n }\n\n <ng-template #header>\n <tr>\n @if (showSelect()) {\n <th class=\"grid-table__th\">\n <p-tableHeaderCheckbox />\n </th>\n }\n\n @for (column of normalizedColumns(); track $index) {\n <th class=\"grid-table__th\" [pSortableColumn]=\"column.field\">\n <div class=\"d-flex justify-content-between\">\n {{ column.header | translate }}\n @if (column.isSorted) {\n <p-sortIcon [field]=\"column.field\"></p-sortIcon>\n }\n </div>\n </th>\n }\n </tr>\n </ng-template>\n\n <ng-template #body let-row>\n <tr class=\"grid-table__row\" [class.grid-table__row--clickable]=\"hasRowRoute()\" (click)=\"onRowClick(row, $event)\">\n @if (showSelect()) {\n <td class=\"grid-table__td\">\n <p-tableCheckbox [value]=\"row\" />\n </td>\n }\n\n @for (column of normalizedColumns(); track $index) {\n <td class=\"grid-table__td\" [style]=\"column.cssStyle\" [class.grid-table__td--status]=\"column.type === ColumnsEnum.STATUS\">\n @switch (column.type) {\n @case (ColumnsEnum.TEXT) {\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n }\n\n @case (ColumnsEnum.MULTILINE) {\n <div class=\"grid-table__multiline\">\n @if (column.display) {\n <!--\n NOTE: If column.display(row) returns an already-rendered HTML string\n you are responsible for translating inside that function.\n If it returns a plain translation key, use the translate pipe instead of innerHTML.\n -->\n <div [innerHTML]=\"column.display(row)\"></div>\n } @else {\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n }\n </div>\n }\n\n @case (ColumnsEnum.DATE) {\n <span class=\"date\">{{\n (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field))\n | localizedDate: column.pipeArgs || 'long'\n }}</span>\n }\n\n @case (ColumnsEnum.HASH_ID) {\n <span class=\"hash-id\">#{{ column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field) }}</span>\n }\n\n @case (ColumnsEnum.BADGE) {\n <!--\n Badge pill — expects column.getBadgeColor?(row) to return a hex/CSS color.\n The pill background is auto-derived as a 15%-opacity tint of that color.\n Usage in column config:\n type: ColumnsEnum.BADGE,\n getBadgeColor: (row) => row.statusColor, // e.g. '#B91C1C'\n cellValue: (row) => row.statusLabel // translation key or translated string\n -->\n <div class=\"grid-table__badge-pill\" [style.--badge-color]=\"column.getBadgeColor?.(row)\">\n <span class=\"grid-table__badge-dot\"></span>\n <span class=\"grid-table__badge-label\">\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n </span>\n </div>\n }\n\n @case (ColumnsEnum.STATUS) {\n @let status = row | statusConfig: column.field : column.statusMap;\n @if (status.variant) {\n <ncim-dga-tag [variant]=\"status.variant\" [style]=\"'subtle'\" [size]=\"'sm'\" [ariaLabel]=\"status.label | translate\">\n {{ status.label | translate }}\n </ncim-dga-tag>\n } @else {\n <span\n class=\"grid-table__status\"\n [style.background]=\"status.bgColor ?? 'color-mix(in srgb, ' + (status.color ?? '') + ' 10%, transparent)'\"\n [style.color]=\"status.color\"\n >\n <span class=\"grid-table__status-dot\" [style.background-color]=\"status.color\"></span>\n {{ status.label | translate }}\n </span>\n }\n }\n\n @case (ColumnsEnum.PROGRESS) {\n <!--\n Progress bar — expects column.getProgress?(row) to return:\n {\n value: number, // days remaining (current)\n max: number, // total days\n color: string, // bar fill color e.g. '#F97316'\n label: string // translation key e.g. 'PROGRESS.DAYS_LEFT' or pre-translated string\n }\n -->\n @if (column.getProgress) {\n @let progress = column.getProgress(row);\n <div class=\"grid-table__progress-wrapper\">\n <div\n class=\"grid-table__progress-container\"\n [style.background]=\"'color-mix(in srgb, ' + progress.color + ' 10%, transparent)'\"\n >\n <div\n class=\"grid-table__progress-bar\"\n [style.width.%]=\"(progress.value / progress.max) * 100\"\n [style.background-color]=\"progress.color\"\n ></div>\n </div>\n <div class=\"grid-table__progress-label\">{{ progress.label | translate }}</div>\n </div>\n }\n }\n\n @case (ColumnsEnum.CUSTOM) {\n @if (getCustomTemplate(column.columnDef)) {\n <ng-container\n *ngTemplateOutlet=\"getCustomTemplate(column.columnDef); context: { $implicit: row, column: column }\"\n ></ng-container>\n } @else {\n <span class=\"text-muted\">No template found for {{ column.columnDef }}</span>\n }\n }\n\n @case (ColumnsEnum.TOGGLE) {\n <p-toggleswitch\n [ngModel]=\"row | nestedValue: column.field\"\n (onChange)=\"setNestedValue(row, column.field, $event.checked); column.onChange?.(row)\"\n />\n }\n\n @case (ColumnsEnum.CHECKBOX) {\n <p-checkbox\n [(ngModel)]=\"selectedItems\"\n (onChange)=\"column?.onChange?.(row, $event)\"\n [inputId]=\"row[searchPipeKey()]\"\n name=\"group\"\n [value]=\"row\"\n />\n }\n\n @case (ColumnsEnum.BUTTON) {\n <div class=\"grid-table__actions\">\n @for (action of column.actions; track $index) {\n @if (action.type === 'link') {\n <a\n [href]=\"action.link?.(row)\"\n class=\"grid-table__action-btn\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n target=\"_blank\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </a>\n } @else if (action.type === 'command') {\n <button\n type=\"button\"\n class=\"grid-table__action-btn\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n (click)=\"action.command?.(row)\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @case (ColumnsEnum.MENU) {\n <div class=\"grid-table__actions\">\n @for (action of column.actions; track $index) {\n @if (action.type === 'menu') {\n <p-menu\n #menu\n [model]=\"buildMenuItems(action, row)\"\n [popup]=\"true\"\n appendTo=\"body\"\n [autoZIndex]=\"true\"\n [styleClass]=\"'table-actions'\"\n >\n <ng-template pTemplate=\"item\" let-item>\n <a pRipple class=\"grid-action cursor-pointer\" [class]=\"item.linkClass\">\n @if (item.icon) {\n <ncim-icon [name]=\"item.icon\" [size]=\"16\" />\n }\n <span class=\"ms-2\">{{ item.label | translate }}</span>\n </a>\n </ng-template>\n </p-menu>\n <button\n type=\"button\"\n class=\"grid-table__action-btn grid-table__action-btn--menu\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n (click)=\"menu.toggle($event)\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </button>\n }\n }\n </div>\n }\n }\n </td>\n }\n </tr>\n </ng-template>\n\n <ng-template #emptymessage>\n <tr>\n <td class=\"grid-table__empty\" [attr.colspan]=\"normalizedColumns().length\">\n @if (error()) {\n <ncim-empty-state titleKey=\"COMMON.LOAD_ERROR\" icon=\"error-state\" [compact]=\"true\" [iconSize]=\"120\" />\n } @else if (emptyStateIcon() && emptyStateTitleKey()) {\n <ncim-empty-state\n [titleKey]=\"emptyStateTitleKey()!\"\n [subtitleKey]=\"emptyStateSubtitleKey()\"\n [icon]=\"emptyStateIcon()!\"\n [compact]=\"true\"\n [iconSize]=\"120\"\n />\n } @else {\n {{ 'COMMON.NO_DATA' | translate }}\n }\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n}\n","import { Component, input, output, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Notification, NotificationFilter, NotificationAction } from './notification-list.models';\nimport { DrawerModule } from 'primeng/drawer';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-notification-list',\n templateUrl: './notification-list.html',\n styleUrl: './notification-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DrawerModule, TranslateModule, Icon],\n})\nexport class NotificationListComponent {\n // Inputs\n readonly visible = input.required<boolean>();\n readonly notifications = input.required<Notification[]>();\n readonly position = input<'left' | 'right'>('right');\n readonly rtl = input<boolean>(false);\n\n // Outputs\n readonly visibleChange = output<boolean>();\n readonly notificationClick = output<Notification>();\n readonly markAsRead = output<string>();\n readonly markAllAsRead = output<void>();\n\n // State\n readonly activeFilter = signal<NotificationFilter>('all');\n\n // Computed\n readonly filteredNotifications = computed(() => {\n const filter = this.activeFilter();\n const allNotifications = this.notifications();\n\n if (filter === 'unread') {\n return allNotifications.filter(n => !n.isRead);\n }\n return allNotifications;\n });\n\n readonly unreadCount = computed(() => this.notifications().filter(n => !n.isRead).length);\n\n readonly hasUnread = computed(() => this.unreadCount() > 0);\n\n // Methods\n setFilter(filter: NotificationFilter): void {\n this.activeFilter.set(filter);\n }\n\n onVisibleChange(visible: boolean): void {\n this.visibleChange.emit(visible);\n }\n\n onNotificationClick(notification: Notification): void {\n this.notificationClick.emit(notification);\n if (!notification.isRead) {\n this.markAsRead.emit(notification.id);\n }\n }\n\n onActionClick(event: Event, action: NotificationAction): void {\n event.stopPropagation();\n action.action();\n }\n\n onMarkAllAsRead(): void {\n if (this.hasUnread()) {\n this.markAllAsRead.emit();\n }\n }\n\n getNotificationIcon(notification: Notification): string {\n if (notification.icon) {\n return notification.icon;\n }\n\n const iconMap: Record<string, string> = {\n monitoring: 'activity-background',\n commercial: 'new-office-background',\n objection: 'hold-background',\n violation: 'hold-background',\n info: 'alarm-clock-background',\n warning: 'alert-background',\n success: 'settings-background',\n };\n\n return iconMap[notification.type] || 'pi-bell';\n }\n\n private static readonly CATEGORY_KEY_MAP: Record<string, string> = {\n 'monitoring-board': 'NOTIFICATIONS.CATEGORY.MONITORING_BOARD',\n 'regulatory-dashboard': 'NOTIFICATIONS.CATEGORY.MONITORING_BOARD',\n violations: 'NOTIFICATIONS.CATEGORY.VIOLATIONS',\n objections: 'NOTIFICATIONS.CATEGORY.OBJECTIONS',\n general: 'NOTIFICATIONS.CATEGORY.GENERAL',\n };\n\n /** Returns days elapsed since the given date (for use with translate pipe in template). */\n protected getDaysAgo(date: Date): number {\n return Math.floor((Date.now() - date.getTime()) / (1000 * 60 * 60 * 24));\n }\n\n /** Returns the i18n key for the given category (for use with translate pipe in template). */\n protected getCategoryI18nKey(category: string): string {\n return NotificationListComponent.CATEGORY_KEY_MAP[category] ?? category;\n }\n\n trackByNotificationId(index: number, notification: Notification): string {\n return notification.id;\n }\n}\n","<p-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"onVisibleChange($event)\"\n [position]=\"position()\"\n [baseZIndex]=\"10000\"\n styleClass=\"notification-drawer\"\n [dir]=\"rtl() ? 'rtl' : 'ltr'\"\n [modal]=\"true\"\n [dismissible]=\"true\"\n [showCloseIcon]=\"true\"\n role=\"dialog\"\n aria-labelledby=\"notification-drawer-title\"\n aria-describedby=\"notification-drawer-description\"\n>\n <ng-template pTemplate=\"header\">\n <header class=\"notification-header\">\n <h2 id=\"notification-drawer-title\" class=\"notification-title\">{{ 'NOTIFICATIONS.TITLE' | translate }}</h2>\n @if (hasUnread()) {\n <button class=\"mark-all-read-btn\" (click)=\"onMarkAllAsRead()\" type=\"button\">\n <span>{{ 'NOTIFICATIONS.MARK_ALL_READ' | translate }}</span>\n </button>\n }\n </header>\n </ng-template>\n\n <section class=\"notification-content\" id=\"notification-drawer-description\">\n <!-- Filter Navigation -->\n <nav class=\"notification-tabs\" [attr.aria-label]=\"'NOTIFICATIONS.FILTER_LABEL' | translate\">\n <button\n class=\"tab-button\"\n [class.active]=\"activeFilter() === 'all'\"\n (click)=\"setFilter('all')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeFilter() === 'all'\"\n [attr.aria-controls]=\"'notification-panel-all'\"\n [id]=\"'tab-all'\"\n type=\"button\"\n >\n {{ 'NOTIFICATIONS.ALL' | translate }}\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeFilter() === 'unread'\"\n (click)=\"setFilter('unread')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeFilter() === 'unread'\"\n [attr.aria-controls]=\"'notification-panel-unread'\"\n [id]=\"'tab-unread'\"\n type=\"button\"\n >\n {{ 'NOTIFICATIONS.UNREAD' | translate }}\n @if (unreadCount() > 0) {\n <span class=\"unread-badge\" [attr.aria-label]=\"'NOTIFICATIONS.UNREAD_COUNT' | translate: { count: unreadCount() }\">\n {{ unreadCount() }}\n </span>\n }\n </button>\n </nav>\n\n <!-- Notifications List -->\n <main\n class=\"notifications-list\"\n role=\"feed\"\n [attr.aria-busy]=\"false\"\n [attr.aria-labelledby]=\"activeFilter() === 'all' ? 'tab-all' : 'tab-unread'\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n @if (filteredNotifications().length === 0) {\n <section class=\"empty-state\" role=\"status\" aria-live=\"polite\">\n <figure class=\"empty-icon\" aria-hidden=\"true\">\n <ncim-icon name=\"bell\" [size]=\"20\" [height]=\"20\"></ncim-icon>\n </figure>\n <p class=\"empty-message\">\n {{ (activeFilter() === 'unread' ? 'NOTIFICATIONS.EMPTY_UNREAD' : 'NOTIFICATIONS.EMPTY_ALL') | translate }}\n </p>\n </section>\n } @else {\n @for (notification of filteredNotifications(); track trackByNotificationId($index, notification)) {\n <article\n class=\"notification-item\"\n [class.unread]=\"!notification.isRead\"\n [attr.data-type]=\"notification.type\"\n (click)=\"onNotificationClick(notification)\"\n tabindex=\"0\"\n (keydown.enter)=\"onNotificationClick(notification)\"\n (keydown.space)=\"onNotificationClick(notification)\"\n [attr.aria-label]=\"\n notification.title +\n '. ' +\n (notification.isRead ? ('NOTIFICATIONS.READ' | translate) : ('NOTIFICATIONS.UNREAD_DOT' | translate))\n \"\n [attr.aria-describedby]=\"'notification-desc-' + notification.id\"\n >\n <figure class=\"notification-icon\" aria-hidden=\"true\">\n <ncim-icon [name]=\"getNotificationIcon(notification)\" [size]=\"38\" [height]=\"38\"></ncim-icon>\n </figure>\n\n <div class=\"notification-body\">\n <header>\n <h3 class=\"notification-item-title\">{{ notification.title }}</h3>\n <p class=\"notification-meta\">\n <time class=\"notification-date\" [attr.datetime]=\"notification.date.toISOString()\">\n @let days = getDaysAgo(notification.date);\n @if (days === 0) {\n {{ 'NOTIFICATIONS.DATE.TODAY' | translate }}\n } @else if (days === 1) {\n {{ 'NOTIFICATIONS.DATE.YESTERDAY' | translate }}\n } @else if (days < 7) {\n {{ 'NOTIFICATIONS.DATE.DAYS_AGO' | translate: { days: days } }}\n } @else {\n {{ notification.date.toLocaleDateString() }}\n }\n </time>\n <span class=\"notification-separator\" aria-hidden=\"true\">•</span>\n <span class=\"notification-category\">\n {{ getCategoryI18nKey(notification.category) | translate }}\n </span>\n </p>\n </header>\n\n @if (notification.subject) {\n <div class=\"notification-subject\">\n <h3 class=\"notification-subject__label\">{{ notification.subject }}</h3>\n\n <p [id]=\"'notification-desc-' + notification.id\" class=\"notification-description\">\n {{ notification.description }}\n </p>\n </div>\n } @else {\n <p [id]=\"'notification-desc-' + notification.id\" class=\"notification-description\">\n {{ notification.description }}\n </p>\n }\n\n @if (notification.actions && notification.actions.length > 0) {\n <nav class=\"notification-actions\" [attr.aria-label]=\"'NOTIFICATIONS.ACTIONS_LABEL' | translate\">\n <!-- track $index: action config has no stable id -->\n @for (action of notification.actions; track $index) {\n <button\n class=\"action-button\"\n [class.primary]=\"action.variant === 'primary'\"\n [class.secondary]=\"action.variant === 'secondary'\"\n (click)=\"onActionClick($event, action)\"\n type=\"button\"\n [attr.aria-label]=\"action.label\"\n >\n {{ action.label }}\n </button>\n }\n </nav>\n }\n </div>\n <aside class=\"notification-indicator\" aria-hidden=\"true\">\n @if (!notification.isRead) {\n <output class=\"unread-dot\" [attr.aria-label]=\"'NOTIFICATIONS.UNREAD_DOT' | translate\"></output>\n }\n </aside>\n </article>\n }\n }\n </main>\n </section>\n</p-drawer>\n","import { Component, input, computed, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { VgCoreModule } from '@videogular/ngx-videogular/core';\nimport { VgControlsModule } from '@videogular/ngx-videogular/controls';\nimport { VgOverlayPlayModule } from '@videogular/ngx-videogular/overlay-play';\nimport { VgBufferingModule } from '@videogular/ngx-videogular/buffering';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport type VideoSourceType = 'embed' | 'html5';\n\n@Component({\n selector: 'ncim-video-player',\n imports: [VgCoreModule, VgControlsModule, VgOverlayPlayModule, VgBufferingModule, Icon],\n templateUrl: './video-player.html',\n styleUrl: './video-player.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoPlayer {\n private readonly sanitizer = inject(DomSanitizer);\n\n readonly src = input.required<string>();\n readonly poster = input<string>('');\n readonly title = input<string>('');\n readonly autoplay = input<boolean>(false);\n\n readonly embedStarted = signal(false);\n readonly isPlaying = signal(false);\n\n startEmbed(): void {\n this.embedStarted.set(true);\n }\n\n onVideoPlay(): void {\n this.isPlaying.set(true);\n }\n\n onVideoPause(): void {\n this.isPlaying.set(false);\n }\n\n /** YouTube/Vimeo → embed, else HTML5 */\n readonly sourceType = computed<VideoSourceType>(() => {\n const url = this.src().toLowerCase();\n return url.includes('youtube.com') || url.includes('youtu.be/') || url.includes('vimeo.com/') ? 'embed' : 'html5';\n });\n\n /** Embed URL for YouTube/Vimeo iframe */\n readonly embedUrl = computed<string>(() => {\n const url = this.src();\n const ytMatch = url.match(/(?:youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=)|youtu\\.be\\/)([a-zA-Z0-9_-]+)/);\n if (ytMatch) {\n return `https://www.youtube.com/embed/${ytMatch[1]}`;\n }\n const vimeoMatch = url.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n if (vimeoMatch) {\n return `https://player.vimeo.com/video/${vimeoMatch[1]}`;\n }\n return this.src();\n });\n\n readonly safeEmbedUrl = computed(() => {\n const url = this.embedUrl();\n const autoplayUrl = url.includes('?') ? `${url}&autoplay=1` : `${url}?autoplay=1`;\n return this.sanitizer.bypassSecurityTrustResourceUrl(autoplayUrl);\n });\n\n readonly videoType = computed<string>(() => {\n const url = this.src().toLowerCase();\n if (url.includes('.webm')) {\n return 'video/webm';\n }\n if (url.includes('.ogg') || url.includes('.ogv')) {\n return 'video/ogg';\n }\n return 'video/mp4';\n });\n}\n","<div class=\"video-player\">\n @if (sourceType() === 'embed') {\n @if (!embedStarted()) {\n <button class=\"video-player__overlay\" type=\"button\" (click)=\"startEmbed()\">\n <ncim-icon name=\"play\" [size]=\"47\" />\n </button>\n } @else {\n <iframe\n class=\"video-player__iframe\"\n [src]=\"safeEmbedUrl()\"\n [attr.title]=\"title()\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n allow=\"autoplay\"\n ></iframe>\n }\n } @else {\n <vg-player>\n <video\n [vgMedia]=\"$any(media)\"\n #media\n [poster]=\"poster()\"\n [attr.title]=\"title()\"\n preload=\"auto\"\n [attr.autoplay]=\"autoplay() ? true : null\"\n (play)=\"onVideoPlay()\"\n (pause)=\"onVideoPause()\"\n >\n <source [src]=\"src()\" [type]=\"videoType()\" />\n </video>\n <vg-buffering></vg-buffering>\n @if (!isPlaying()) {\n <div class=\"video-player__overlay\" (click)=\"media.play()\">\n <ncim-icon name=\"play\" [size]=\"47\" />\n </div>\n }\n <vg-controls>\n <vg-play-pause></vg-play-pause>\n <vg-scrub-bar>\n <vg-scrub-bar-current-time></vg-scrub-bar-current-time>\n <vg-scrub-bar-buffering-time></vg-scrub-bar-buffering-time>\n </vg-scrub-bar>\n <vg-time-display vgProperty=\"current\" vgFormat=\"mm:ss\"></vg-time-display>\n <vg-time-display vgProperty=\"total\" vgFormat=\"mm:ss\"></vg-time-display>\n <vg-mute></vg-mute>\n <vg-volume></vg-volume>\n <vg-fullscreen></vg-fullscreen>\n </vg-controls>\n </vg-player>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { DialogModule } from 'primeng/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ncim-popup',\n templateUrl: './popup.html',\n styleUrl: './popup.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon, DialogModule, TranslatePipe, CommonModule],\n})\nexport class Popup {\n readonly open = input<boolean>(false);\n readonly title = input<string>('');\n readonly footerBorder = input<boolean>(false);\n readonly footerStyle = input<boolean>(true);\n readonly showCloseButton = input<boolean>(true);\n readonly showBackButton = input<boolean>(false);\n readonly largeHeader = input<boolean>(false);\n readonly closeOnBackdropClick = input<boolean>(true);\n readonly size = input<'small' | 'medium' | 'large' | 'extra-large'>('medium');\n readonly width = input<string>('');\n\n readonly dismissed = output<void>();\n readonly backClicked = output<void>();\n\n protected readonly titleId = `ncim-popup-title-${Math.random().toString(36).slice(2, 11)}`;\n\n protected readonly dialogStyle = computed(() => {\n const maxWidthMap: Record<string, string> = {\n small: '400px',\n medium: '560px',\n large: '720px',\n 'extra-large': '940px',\n };\n return { width: '100%', maxWidth: maxWidthMap[this.size()] };\n });\n\n /**\n * Guard against double-emission: when the close button is clicked,\n * `close()` emits `dismissed` directly. PrimeNG then hides the dialog\n * and fires `onHide` — we skip that second emission.\n */\n private _closedByButton = false;\n\n /** Called by the × button in the header. */\n close(): void {\n this._closedByButton = true;\n this.dismissed.emit();\n }\n\n /**\n * Called by PrimeNG when the dialog hides — covers dismissableMask\n * (backdrop click) and ESC key. The close-button path is guarded above.\n */\n onHide(): void {\n if (!this._closedByButton) {\n this.dismissed.emit();\n }\n this._closedByButton = false;\n }\n\n back(): void {\n this.backClicked.emit();\n }\n}\n","<p-dialog\n [visible]=\"open()\"\n (onHide)=\"onHide()\"\n [modal]=\"true\"\n [dismissableMask]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnBackdropClick()\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [closable]=\"false\"\n [showHeader]=\"false\"\n [style]=\"dialogStyle()\"\n styleClass=\"ncim-popup-dialog\"\n>\n <div class=\"popup__header\" [class.popup__header--large]=\"largeHeader()\">\n <div class=\"popup__header-main\">\n @if (showBackButton()) {\n <button type=\"button\" class=\"popup__header-button back\" (click)=\"back()\" [attr.aria-label]=\"'COMMON.BACK' | translate\">\n <ncim-icon name=\"chevronLeft\" [size]=\"20\" />\n </button>\n }\n @if (title()) {\n <div class=\"popup-title__area\">\n <h2 [id]=\"titleId\" class=\"popup__title\">{{ title() }}</h2>\n <ng-content select=\"[subTitle]\"></ng-content>\n </div>\n }\n </div>\n @if (showCloseButton()) {\n <button type=\"button\" class=\"popup__header-button\" (click)=\"close()\" [attr.aria-label]=\"'COMMON.CLOSE' | translate\">\n <ncim-icon name=\"close\" [size]=\"20\" />\n </button>\n }\n </div>\n\n <div class=\"popup__body\" [attr.aria-labelledby]=\"title() ? titleId : null\">\n <ng-content></ng-content>\n </div>\n\n <div [ngClass]=\"{ popup__footer: footerStyle() }\" [class.popup__footer--border]=\"footerBorder()\">\n <ng-content select=\"[popupFooter]\"></ng-content>\n </div>\n</p-dialog>\n","import {\n Component,\n output,\n signal,\n viewChild,\n AfterViewInit,\n DestroyRef,\n inject,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Popup } from '@libs/ui-components/shared/molecules/popup/popup';\n\n@Component({ changeDetection: ChangeDetectionStrategy.OnPush, template: '' })\nexport abstract class PopupModalBase<T = unknown> implements AfterViewInit {\n protected readonly destroyRef = inject(DestroyRef);\n readonly modalData = signal<T | null>(null);\n\n readonly isOpen = signal(false);\n readonly popup = viewChild.required(Popup);\n readonly dismissed = output<void>();\n\n openModal(data?: T): void {\n if (data != null) {\n this.modalData.set(data);\n }\n this.isOpen.set(true);\n }\n\n closeModal(): void {\n this.isOpen.set(false);\n }\n\n ngAfterViewInit(): void {\n outputToObservable(this.popup().dismissed)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.closeModal();\n this.dismissed.emit();\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { Popup } from '@libs/ui-components/shared/molecules/popup/popup';\nimport { PopupModalBase } from '@libs/ui-components/shared/molecules/popup/popup-modal-base/popup-modal-base';\n\n@Component({\n selector: 'ncim-save-filter-popup',\n templateUrl: './save-filter-popup.html',\n styleUrl: './save-filter-popup.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Popup, NcimButton, FormInput, ReactiveFormsModule, TranslateModule],\n})\nexport class SaveFilterPopup extends PopupModalBase {\n readonly mode = input<'add' | 'edit'>('add');\n readonly initialTitle = input<string>('');\n readonly saveLoading = input<boolean>(false);\n\n readonly saved = output<{ title: string }>();\n readonly deleted = output<void>();\n\n readonly form = new FormGroup({\n title: new FormControl('', [Validators.required]),\n });\n\n readonly isEditMode = computed(() => this.mode() === 'edit');\n readonly saveAttempted = signal(false);\n readonly isSubmitting = signal(false);\n\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n super();\n // Reset all state when popup closes; patch initial title when it opens\n effect(() => {\n if (!this.isOpen()) {\n this.cancelClose();\n this.saveAttempted.set(false);\n this.isSubmitting.set(false);\n this.form.reset();\n return;\n }\n this.form.patchValue({ title: this.initialTitle() ?? '' });\n });\n\n this.destroyRef.onDestroy(() => this.cancelClose());\n }\n\n onSave(): void {\n this.saveAttempted.set(true);\n if (!this.form.valid) {\n return;\n }\n const title = this.form.get('title')?.value ?? '';\n this.isSubmitting.set(true);\n this.saved.emit({ title });\n this.closeTimer = setTimeout(() => this.closeModal(), 1000);\n }\n\n onDelete(): void {\n this.deleted.emit();\n this.closeModal();\n }\n\n private cancelClose(): void {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n}\n","<ncim-popup\n [open]=\"isOpen()\"\n [title]=\"'REGULATORY_DASHBOARD.SAVE_FILTER' | translate\"\n [showCloseButton]=\"true\"\n [closeOnBackdropClick]=\"true\"\n size=\"small\"\n>\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\" class=\"save-filter-popup__form\">\n <ncim-form-input\n formControlName=\"title\"\n [label]=\"'REGULATORY_DASHBOARD.FILTER_TITLE' | translate\"\n [placeholder]=\"'REGULATORY_DASHBOARD.FILTER_TITLE' | translate\"\n [submitted]=\"saveAttempted()\"\n />\n </form>\n\n <div popupFooter class=\"save-filter-popup__footer\">\n <div class=\"save-filter-popup__actions\">\n <ncim-button\n class=\"save-filter-popup__action-btn\"\n variant=\"black\"\n [fullWidth]=\"true\"\n type=\"button\"\n [loading]=\"isSubmitting() || saveLoading()\"\n (click)=\"onSave()\"\n >\n {{ 'COMMON.SAVE' | translate }}\n </ncim-button>\n <ncim-button class=\"save-filter-popup__action-btn\" variant=\"neutral\" [fullWidth]=\"true\" type=\"button\" (click)=\"closeModal()\">\n {{ 'COMMON.BACK' | translate }}\n </ncim-button>\n </div>\n @if (isEditMode()) {\n <ncim-button class=\"save-filter-popup__delete\" variant=\"outline\" [fullWidth]=\"false\" size=\"small\" type=\"button\" (click)=\"onDelete()\">\n {{ 'REGULATORY_DASHBOARD.DELETE_FILTER' | translate }}\n </ncim-button>\n }\n </div>\n</ncim-popup>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport type { QuickFilterTag } from './quick-filter-bar.models';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\n@Component({\n selector: 'ncim-quick-filter-bar',\n templateUrl: './quick-filter-bar.html',\n styleUrl: './quick-filter-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, TranslateModule, Icon],\n})\nexport class QuickFilterBar {\n readonly activeFilters = input<QuickFilterTag[]>([]);\n readonly showSaveFilter = input<boolean>(true);\n readonly showClearAll = input<boolean>(true);\n readonly quickFilterCounter = input<number>(0);\n /** Dynamic title rendered as plain text (caller handles translation) */\n readonly title = input<string>('');\n /** CSS gap value for the tags row (e.g. \"8px\", \"var(--space-sm)\"). Defaults to SCSS variable. */\n readonly tagGap = input<string>('');\n /** Show an × remove button on each tag */\n readonly showRemoveButton = input<boolean>(false);\n /** justify-content for the row containing tags + actions. Defaults to 'space-between'. */\n readonly rowJustify = input<string>('space-between');\n\n readonly saveFilterClick = output<void>();\n readonly clearAllClick = output<void>();\n readonly filterTagClick = output<QuickFilterTag>();\n}\n","<!-- @if (quickFilterCounter()) {\n <div class=\"quick-filter-bar__results\">\n <span class=\"quick-filter-bar__results-count\">\n {{ 'SHARED.RESULTS_COUNT' | translate: { count: quickFilterCounter() } }}\n </span>\n </div>\n} -->\n\n<div class=\"quick-filter-bar\">\n @if (title()) {\n <div class=\"quick-filter-bar__title w-100\">{{ title() }}</div>\n }\n\n <div class=\"quick-filter-bar__row\" [style.justify-content]=\"rowJustify()\">\n <div class=\"quick-filter-bar__tags\" [style.gap]=\"tagGap() || null\">\n @for (tag of activeFilters(); track tag.key ?? $index) {\n @if (tag.values && tag.values.length > 0) {\n <div class=\"quick-filter-bar__tag-group quick-filter-bar__tag\">\n {{ tag.label | translate }} ({{ tag.count }}):\n @for (val of tag.values; track $index) {\n <div\n role=\"button\"\n tabindex=\"0\"\n (click)=\"filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\"\n (keydown.enter)=\"filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\"\n (keydown.space)=\"\n $event.preventDefault(); filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\n \"\n [attr.aria-label]=\"tag.label + ': ' + (val ?? '')\"\n >\n <span\n >{{ val ?? '' | translate }}\n @if (showRemoveButton()) {\n <button\n type=\"button\"\n class=\"quick-filter-bar__tag-remove\"\n (click)=\"\n $event.stopPropagation(); filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\n \"\n [attr.aria-label]=\"'Remove filter ' + (val ?? '')\"\n >\n <ncim-icon name=\"remove\" [size]=\"20\" />\n </button>\n }\n </span>\n </div>\n }\n </div>\n } @else {\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"quick-filter-bar__tag\"\n (click)=\"filterTagClick.emit(tag)\"\n (keydown.enter)=\"filterTagClick.emit(tag)\"\n (keydown.space)=\"$event.preventDefault(); filterTagClick.emit(tag)\"\n [attr.aria-label]=\"tag.label + ': ' + tag.value\"\n >\n {{ tag.label | translate }} ({{ tag.count }}):\n <span\n >{{ tag.value | translate }}\n @if (showRemoveButton()) {\n <button\n type=\"button\"\n class=\"quick-filter-bar__tag-remove\"\n (click)=\"$event.stopPropagation(); filterTagClick.emit(tag)\"\n [attr.aria-label]=\"'Remove filter ' + tag.label\"\n >\n <ncim-icon name=\"remove\" [size]=\"20\" />\n </button>\n }\n </span>\n </div>\n }\n } @empty {\n <div class=\"quick-filter-bar__empty\">{{ 'REGULATORY_DASHBOARD.NO_ACTIVE_FILTERS' | translate }}</div>\n }\n </div>\n\n <div class=\"quick-filter-bar__actions\">\n @if (showSaveFilter()) {\n <ncim-button variant=\"neutral\" [fullWidth]=\"false\" size=\"small\" icon=\"bookmark\" [iconSize]=\"18\" (click)=\"saveFilterClick.emit()\">\n {{ 'REGULATORY_DASHBOARD.SAVE_FILTER' | translate }}\n </ncim-button>\n }\n @if (showClearAll() && activeFilters().length > 0) {\n <ncim-button\n class=\"quick-filter-bar__clear\"\n variant=\"outline\"\n [fullWidth]=\"false\"\n size=\"medium\"\n icon=\"trash-icon-fill\"\n [iconSize]=\"20\"\n (click)=\"clearAllClick.emit()\"\n >\n {{ 'REGULATORY_DASHBOARD.CLEAR_ALL' | translate }}\n </ncim-button>\n }\n </div>\n </div>\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n contentChild,\n TemplateRef,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { SelectableListItem } from './selectable-list-with-search.models';\n\n@Component({\n selector: 'ncim-selectable-list-with-search',\n templateUrl: './selectable-list-with-search.html',\n styleUrl: './selectable-list-with-search.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgTemplateOutlet],\n})\nexport class SelectableListWithSearch {\n readonly title = input<string>('');\n readonly items = input<SelectableListItem[]>([]);\n readonly itemTemplate = contentChild<\n TemplateRef<{ $implicit: SelectableListItem; index: number }> | null | undefined\n >(TemplateRef);\n\n readonly selectedValues = input<string[]>([]);\n readonly variant = input<'primary' | 'black'>('primary');\n readonly searchPlaceholder = input<string>('Search');\n readonly multiSelect = input<boolean>(true);\n readonly rtl = input<boolean>(false); // TODO control the checkbox location with @if instead\n\n readonly selectionChange = output<string[]>();\n\n protected readonly searchQuery = signal('');\n\n protected readonly filteredItems = computed(() => {\n const items = this.items();\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) {\n return items;\n }\n return items.filter(\n item => item.label.toLowerCase().includes(query) || (item.subLabel?.toLowerCase().includes(query) ?? false)\n );\n });\n\n protected readonly selectedSet = computed(() => new Set(this.selectedValues()));\n\n protected isSelected(value: string): boolean {\n return this.selectedSet().has(value);\n }\n\n protected onSearchInput(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n }\n\n protected toggleItem(item: SelectableListItem): void {\n if (item.disabled) {\n return;\n }\n const current = this.selectedValues();\n const isSelected = current.includes(item.value);\n let next: string[];\n\n if (this.multiSelect()) {\n if (isSelected) {\n next = current.filter(v => v !== item.value);\n } else {\n next = [...current, item.value];\n }\n } else {\n next = isSelected ? [] : [item.value];\n }\n\n this.selectionChange.emit(next);\n }\n}\n","<div\n [class.selectable-list--primary]=\"variant() === 'primary'\"\n [class.selectable-list--black]=\"variant() === 'black'\"\n class=\"selectable-list\"\n>\n @if (title()) {\n <h3 class=\"selectable-list__title\">{{ title() }}</h3>\n }\n\n <div class=\"selectable-list__search\">\n <span class=\"selectable-list__search-icon\" aria-hidden=\"true\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </span>\n <input\n type=\"text\"\n class=\"selectable-list__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <ul class=\"selectable-list__items\" role=\"list\">\n @for (item of filteredItems(); track item.value; let i = $index) {\n <li class=\"selectable-list__item\">\n <button\n type=\"button\"\n class=\"selectable-list__item-btn\"\n [class.selectable-list__item-btn--selected]=\"isSelected(item.value)\"\n [class.selectable-list__item-btn--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n (click)=\"toggleItem(item)\"\n >\n @if (!rtl()) {\n <span class=\"selectable-list__checkbox\" [class.selectable-list__checkbox--checked]=\"isSelected(item.value)\">\n @if (isSelected(item.value)) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n }\n <span class=\"selectable-list__item-content\">\n @if (!itemTemplate()) {\n <span class=\"selectable-list__item-label\">{{ item.label }}</span>\n @if (item.subLabel) {\n <span class=\"selectable-list__item-sublabel\">{{ item.subLabel }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n }\n </span>\n @if (rtl()) {\n <span class=\"selectable-list__checkbox\" [class.selectable-list__checkbox--checked]=\"isSelected(item.value)\">\n @if (isSelected(item.value)) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n }\n </button>\n </li>\n } @empty {\n <li class=\"selectable-list__empty\">{{ 'COMMON.NO_RESULTS' | translate }}</li>\n }\n </ul>\n</div>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { LoadingService } from '@libs/core/services';\n\n/**\n * Thin animated progress bar fixed to the top of the viewport.\n * Automatically visible whenever the LoadingService reports in-flight HTTP requests.\n */\n@Component({\n selector: 'ncim-global-loading-bar',\n templateUrl: './global-loading-bar.html',\n styleUrl: './global-loading-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GlobalLoadingBar {\n protected readonly loading = inject(LoadingService);\n}\n","@if (loading.isLoading()) {\n <div class=\"ncim-global-loading-bar\" role=\"progressbar\" aria-label=\"Loading\" aria-busy=\"true\">\n <div class=\"ncim-global-loading-bar__track\"></div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nexport type ImagePickerErrorType = 'type' | 'size';\n\n@Component({\n selector: 'ncim-image-picker',\n imports: [Icon, TranslatePipe],\n templateUrl: './image-picker.html',\n styleUrl: './image-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ImagePicker),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ImagePicker),\n multi: true,\n },\n ],\n})\nexport class ImagePicker implements ControlValueAccessor, Validator {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly placeholder = input('');\n readonly disabled = input(false);\n readonly required = input(false);\n readonly maxSizeMb = input(5);\n readonly value = input<string | File | null>(null);\n\n readonly fileSelected = output<File>();\n readonly cleared = output<void>();\n readonly validationError = output<ImagePickerErrorType>();\n\n readonly dragging = signal(false);\n readonly previewUrl = signal<string | null>(null);\n readonly error = signal<ImagePickerErrorType | null>(null);\n protected readonly isTouched = signal(false);\n\n readonly showRequiredError = computed(\n () => this.required() && !this.previewUrl() && !this.error() && this.isTouched()\n );\n\n private objectUrl: string | null = null;\n private readonly cvdDisabled = signal(false);\n\n readonly isDisabled = computed(() => this.disabled() || this.cvdDisabled());\n\n private onChange: (value: File | string | null) => void = () => {\n /* registered by Angular forms */\n };\n\n private onTouchedFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n private onValidatorChangeFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n constructor() {\n effect(() => this.handleValueChange(this.value()));\n this.destroyRef.onDestroy(() => this.clearPreview());\n }\n\n // ControlValueAccessor\n\n writeValue(value: string | File | null): void {\n this.handleValueChange(value);\n }\n\n registerOnChange(fn: (value: File | string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvdDisabled.set(isDisabled);\n }\n\n // Validator\n\n validate(_control: AbstractControl): ValidationErrors | null {\n if (this.required() && !this.previewUrl()) {\n return { required: true };\n }\n if (this.error() === 'type') {\n return { imageType: true };\n }\n if (this.error() === 'size') {\n return { imageSize: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n // Public methods\n\n openFile(fileInput: HTMLInputElement): void {\n if (this.isDisabled()) {\n return;\n }\n this.error.set(null);\n fileInput.click();\n }\n\n onFileChange(event: Event): void {\n const el = event.target as HTMLInputElement;\n const file = el.files?.[0] ?? null;\n this.handleIncomingFile(file);\n el.value = '';\n }\n\n onDrop(e: DragEvent): void {\n e.preventDefault();\n this.dragging.set(false);\n if (this.isDisabled()) {\n return;\n }\n const file = e.dataTransfer?.files?.[0] ?? null;\n this.handleIncomingFile(file);\n }\n\n onDragOver(e: DragEvent): void {\n e.preventDefault();\n if (!this.isDisabled()) {\n this.dragging.set(true);\n }\n }\n\n onDragLeave(e: DragEvent): void {\n e.preventDefault();\n this.dragging.set(false);\n }\n\n clear(e: Event): void {\n e.stopPropagation();\n this.clearPreview();\n this.error.set(null);\n this.markTouched();\n this.onChange(null);\n this.onValidatorChangeFn();\n this.cleared.emit();\n }\n\n // Private helpers\n\n private markTouched(): void {\n this.isTouched.set(true);\n this.onTouchedFn();\n }\n\n private handleValueChange(v: string | File | null): void {\n this.clearPreview();\n if (!v) {\n return;\n }\n if (v instanceof File) {\n this.setPreview(v);\n } else {\n this.previewUrl.set(v);\n }\n }\n\n private setPreview(file: File): void {\n this.clearPreview();\n this.objectUrl = URL.createObjectURL(file);\n this.previewUrl.set(this.objectUrl);\n }\n\n private clearPreview(): void {\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n this.objectUrl = null;\n }\n this.previewUrl.set(null);\n }\n\n private handleIncomingFile(file: File | null): void {\n if (!file) {\n return;\n }\n if (!file.type.startsWith('image/')) {\n this.error.set('type');\n this.markTouched();\n this.onValidatorChangeFn();\n this.validationError.emit('type');\n return;\n }\n if (file.size > this.maxSizeMb() * 1024 * 1024) {\n this.error.set('size');\n this.markTouched();\n this.onValidatorChangeFn();\n this.validationError.emit('size');\n return;\n }\n this.error.set(null);\n this.setPreview(file);\n this.onChange(file);\n this.markTouched();\n this.onValidatorChangeFn();\n this.fileSelected.emit(file);\n }\n}\n","<div\n class=\"image-picker\"\n [class.image-picker--disabled]=\"isDisabled()\"\n [class.image-picker--has-image]=\"!!previewUrl()\"\n [class.image-picker--error]=\"!!error()\"\n>\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n class=\"image-picker__file-input\"\n (change)=\"onFileChange($event)\"\n [disabled]=\"isDisabled()\"\n />\n\n <div\n class=\"image-picker__preview\"\n [class.image-picker__preview--dragging]=\"dragging()\"\n [style.background-image]=\"previewUrl() ? 'url(' + previewUrl() + ')' : 'none'\"\n role=\"button\"\n [tabindex]=\"isDisabled() ? -1 : 0\"\n [attr.aria-label]=\"'IMAGE_PICKER.CHOOSE' | translate\"\n [attr.aria-disabled]=\"isDisabled()\"\n (click)=\"openFile(fileInput)\"\n (keydown.enter)=\"openFile(fileInput)\"\n (keydown.space)=\"$event.preventDefault(); openFile(fileInput)\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n @if (previewUrl()) {\n <div class=\"image-picker__overlay\" aria-hidden=\"true\">\n <ncim-icon name=\"camera\" [size]=\"16\" />\n </div>\n <button type=\"button\" class=\"image-picker__clear-btn\" [attr.aria-label]=\"'IMAGE_PICKER.REMOVE' | translate\" (click)=\"clear($event)\">\n <ncim-icon name=\"close\" [size]=\"12\" />\n </button>\n } @else {\n <div class=\"image-picker__camera-btn\" aria-hidden=\"true\">\n <ncim-icon name=\"camera\" [size]=\"16\" />\n </div>\n }\n\n @if (!previewUrl() && placeholder()) {\n <div class=\"image-picker__placeholder\">\n {{ placeholder() }}\n </div>\n }\n </div>\n\n @if (error()) {\n <p class=\"image-picker__error\" role=\"alert\">\n @switch (error()) {\n @case ('type') {\n {{ 'IMAGE_PICKER.ERROR_TYPE' | translate }}\n }\n @case ('size') {\n {{ 'IMAGE_PICKER.ERROR_SIZE' | translate: { mb: maxSizeMb() } }}\n }\n }\n </p>\n } @else if (showRequiredError()) {\n <p class=\"image-picker__error\" role=\"alert\">\n {{ 'IMAGE_PICKER.ERROR_REQUIRED' | translate }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n output,\n signal,\n computed,\n model,\n effect,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { FormError } from '../form-error/form-error';\nimport { FormLabel } from '../form-label/form-label';\nimport { Icon } from '../icon/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ERROR_KEYS } from '@libs/core/constants';\n\n@Component({\n selector: 'ncim-button-with-selection-count',\n imports: [FormError, FormLabel, Icon, TranslatePipe],\n templateUrl: './button-with-selection-count.html',\n styleUrl: './button-with-selection-count.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonWithSelectionCount implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly submitted = input<boolean>(false);\n readonly text = input<string>();\n\n readonly clicked = output<void>();\n\n readonly value = input<any[]>([]);\n readonly touched = signal(false);\n\n readonly displayCount = computed(() => this.value().length);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n this.onChange(this.value());\n });\n }\n\n private onChange: (value: any[]) => void = noop;\n private onTouched: () => void = noop;\n\n readonly errorKey = computed<string>(() => {\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n if (control.errors['minSelected']) {\n return ERROR_KEYS.AT_LEAST_ONE_OPTION_REQUIRED;\n }\n\n const firstError = Object.keys(control.errors)[0];\n return firstError || '';\n });\n\n readonly showError = computed<boolean>(() => !!this.errorKey() && (this.touched() || this.submitted()));\n\n onButtonClick(): void {\n this.touched.set(true);\n this.onTouched();\n this.clicked.emit();\n }\n\n writeValue: (value: any[]) => void = noop;\n\n registerOnChange(fn: (value: any[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"button-with-selection-count\">\n <ncim-form-label [text]=\"label()\" />\n <button\n type=\"button\"\n class=\"button-with-selection-count__trigger\"\n [class.button-with-selection-count__trigger--error]=\"showError()\"\n (click)=\"onButtonClick()\"\n >\n <span class=\"button-with-selection-count__value\">{{ text() | translate: { count: displayCount() } }}</span>\n <ncim-icon name=\"chevronLeft\" [size]=\"20\" class=\"button-with-selection-count__chevron\" />\n </button>\n <ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'ncim-profile-hero',\n imports: [],\n templateUrl: './profile-hero.html',\n styleUrl: './profile-hero.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProfileHero {\n name = input<string>('');\n role = input<string>('');\n avatarUrl = input<string>('');\n}\n","<!-- <div class=\"profile-hero\">\n <div class=\"profile-hero__avatar-ring\">\n <div class=\"profile-hero__avatar\">\n <ncim-icon name=\"user\" [size]=\"40\" />\n </div>\n </div>\n <span class=\"profile-hero__name\">{{ name() }}</span>\n <span class=\"profile-hero__role\">{{ role() }}</span>\n</div>\n -->\n\n<div class=\"profile__hero\">\n <div class=\"profile__hero-center\">\n <div class=\"profile__avatar-ring\">\n <div\n class=\"profile__avatar\"\n [style]=\"avatarUrl() ? 'background: url(' + avatarUrl() + ')lightgray -18.488px -17.182px / 133.565% 200.507%' : ''\"\n ></div>\n </div>\n <span class=\"profile__hero-name\">{{ name() }}</span>\n <span class=\"profile__hero-role\">{{ role() }}</span>\n </div>\n</div>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\nexport interface UploadedFile {\n id: string;\n file: File;\n name: string;\n sizeFormatted: string;\n}\n\nexport type RejectionReason = 'size' | 'type' | 'duplicate' | 'max_files';\n\nexport interface RejectedFile {\n name: string;\n reason: RejectionReason;\n}\n\n@Component({\n selector: 'ncim-file-upload',\n imports: [TranslateModule, Icon, NcimButton],\n templateUrl: './file-upload.html',\n styleUrl: './file-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n ],\n})\nexport class FileUpload implements ControlValueAccessor, Validator {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly maxSizeMB = input<number>(2);\n readonly acceptedTypes = input<string[]>(['jpg', 'png', 'pdf']);\n readonly multiple = input<boolean>(true);\n readonly maxFiles = input<number>(10);\n readonly required = input<boolean>(false);\n\n readonly filesChanged = output<File[]>();\n readonly filesRejected = output<RejectedFile[]>();\n\n readonly isDragOver = signal(false);\n readonly uploadedFiles = signal<UploadedFile[]>([]);\n readonly rejectedFiles = signal<RejectedFile[]>([]);\n protected readonly isTouched = signal(false);\n\n readonly showRequiredError = computed(() => this.required() && this.uploadedFiles().length === 0 && this.isTouched());\n\n readonly typesString = computed(() =>\n this.acceptedTypes()\n .map(t => `.${t}`)\n .join(', ')\n );\n\n readonly acceptAttr = computed(() =>\n this.acceptedTypes()\n .map(t => `.${t}`)\n .join(',')\n );\n\n /** Stored reference so removeEventListener can target the same function */\n private readonly boundFileHandler = (event: Event) => this.onFileSelected(event);\n private fileInputEl: HTMLInputElement | null = null;\n\n private onChangeFn: (files: File[]) => void = () => {\n /* registered by Angular forms */\n };\n\n private onTouchedFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n private onValidatorChangeFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n constructor() {\n afterNextRender(() => {\n const el = document.createElement('input');\n el.type = 'file';\n el.style.display = 'none';\n el.accept = this.acceptAttr();\n if (this.multiple()) {\n el.multiple = true;\n }\n el.addEventListener('change', this.boundFileHandler);\n document.body.appendChild(el);\n this.fileInputEl = el;\n\n this.destroyRef.onDestroy(() => {\n el.removeEventListener('change', this.boundFileHandler);\n el.remove();\n });\n });\n }\n\n // ControlValueAccessor\n\n writeValue(files: File[] | null): void {\n if (!files || files.length === 0) {\n this.uploadedFiles.set([]);\n return;\n }\n const mapped: UploadedFile[] = files.map(f => ({\n id: `${Date.now()}-${Math.random()}`,\n file: f,\n name: f.name,\n sizeFormatted: this.formatSize(f.size),\n }));\n this.uploadedFiles.set(mapped);\n }\n\n registerOnChange(fn: (files: File[]) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // reserved for future disabled-state support\n }\n\n // Validator\n\n validate(_control: AbstractControl): ValidationErrors | null {\n if (this.required() && this.uploadedFiles().length === 0) {\n return { required: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n // Public methods\n\n openFilePicker(): void {\n this.rejectedFiles.set([]);\n this.fileInputEl?.click();\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(false);\n const files = event.dataTransfer?.files;\n if (files) {\n this.processFiles(Array.from(files));\n }\n }\n\n removeFile(id: string): void {\n this.uploadedFiles.update(files => files.filter(f => f.id !== id));\n this.notifyChange();\n }\n\n dismissRejected(): void {\n this.rejectedFiles.set([]);\n }\n\n // Private helpers\n\n private markTouched(): void {\n this.isTouched.set(true);\n this.onTouchedFn();\n }\n\n private notifyChange(): void {\n const files = this.uploadedFiles().map(f => f.file);\n this.onChangeFn(files);\n this.onValidatorChangeFn();\n this.filesChanged.emit(files);\n }\n\n private onFileSelected(event: Event): void {\n const target = event.target as HTMLInputElement;\n if (target.files) {\n this.processFiles(Array.from(target.files));\n target.value = '';\n }\n }\n\n private processFiles(files: File[]): void {\n const maxBytes = this.maxSizeMB() * 1024 * 1024;\n const allowed = this.acceptedTypes().map(t => t.toLowerCase());\n const existing = this.uploadedFiles();\n const rejected: RejectedFile[] = [];\n const valid: UploadedFile[] = [];\n\n for (const file of files) {\n const ext = file.name.split('.').pop()?.toLowerCase() ?? '';\n\n if (!allowed.includes(ext)) {\n rejected.push({ name: file.name, reason: 'type' });\n continue;\n }\n if (file.size > maxBytes) {\n rejected.push({ name: file.name, reason: 'size' });\n continue;\n }\n const isDuplicate = existing.some(e => e.name === file.name && e.file.size === file.size);\n if (isDuplicate) {\n rejected.push({ name: file.name, reason: 'duplicate' });\n continue;\n }\n\n valid.push({\n id: `${Date.now()}-${Math.random()}`,\n file,\n name: file.name,\n sizeFormatted: this.formatSize(file.size),\n });\n }\n\n let newList: UploadedFile[];\n\n if (this.multiple()) {\n newList = [...existing, ...valid];\n const overflow = newList.length - this.maxFiles();\n if (overflow > 0) {\n const trimmed = valid.slice(0, valid.length - overflow);\n const overflowFiles = valid.slice(valid.length - overflow);\n overflowFiles.forEach(f => rejected.push({ name: f.name, reason: 'max_files' }));\n newList = [...existing, ...trimmed];\n }\n } else {\n newList = valid.slice(0, 1);\n }\n\n this.uploadedFiles.set(newList);\n this.rejectedFiles.set(rejected);\n this.markTouched();\n\n if (rejected.length > 0) {\n this.filesRejected.emit(rejected);\n }\n\n this.notifyChange();\n }\n\n private formatSize(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n}\n","<div class=\"file-upload\">\n <!-- Drop zone -->\n <div\n class=\"file-upload__dropzone\"\n [class.file-upload__dropzone--active]=\"isDragOver()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"'FILE_UPLOAD.DRAG_DROP' | translate\"\n (keydown.enter)=\"openFilePicker()\"\n (keydown.space)=\"openFilePicker()\"\n >\n <div class=\"file-upload__icon\">\n <ncim-icon name=\"fileUpload\" [size]=\"24\" />\n </div>\n\n <p class=\"file-upload__title\">\n {{ 'FILE_UPLOAD.DRAG_DROP' | translate }}\n </p>\n\n <p class=\"file-upload__hint\">\n {{ 'FILE_UPLOAD.SIZE_HINT' | translate: { size: maxSizeMB(), types: typesString() } }}\n </p>\n\n <ncim-button class=\"file-upload__button\" variant=\"secondary\" [fullWidth]=\"false\" size=\"small\" (click)=\"openFilePicker()\">\n {{ 'FILE_UPLOAD.BROWSE' | translate }}\n </ncim-button>\n </div>\n\n <!-- Uploaded files list -->\n @if (uploadedFiles().length > 0) {\n <ul class=\"file-upload__list\" role=\"list\">\n @for (file of uploadedFiles(); track file.id) {\n <li class=\"file-upload__item\">\n <div class=\"file-upload__item-info\">\n <span class=\"file-upload__item-check\">\n <ncim-icon name=\"feedback\" [size]=\"16\" />\n </span>\n <span class=\"file-upload__item-name\">{{ file.name }}</span>\n </div>\n <ncim-icon name=\"close\" [size]=\"16\" (click)=\"removeFile(file.id)\"></ncim-icon>\n <!-- <ncim-button\n variant=\"outline\"\n [fullWidth]=\"false\"\n size=\"small-icon-only\"\n icon=\"close\"\n [iconSize]=\"16\"\n [attr.aria-label]=\"'FILE_UPLOAD.REMOVE_FILE' | translate\"\n (click)=\"removeFile(file.id)\"\n /> -->\n </li>\n }\n </ul>\n }\n\n <!-- Required error -->\n @if (showRequiredError()) {\n <p class=\"file-upload__error\" role=\"alert\">\n {{ 'FILE_UPLOAD.ERROR_REQUIRED' | translate }}\n </p>\n }\n\n <!-- Rejected files feedback -->\n @if (rejectedFiles().length > 0) {\n <div class=\"file-upload__rejected\" role=\"alert\">\n <div class=\"file-upload__rejected-header\">\n <ncim-icon name=\"alertCircle\" [size]=\"16\" />\n <span>{{ 'FILE_UPLOAD.REJECTED_TITLE' | translate }}</span>\n <button\n type=\"button\"\n class=\"file-upload__rejected-dismiss\"\n [attr.aria-label]=\"'COMMON.DISMISS' | translate\"\n (click)=\"dismissRejected()\"\n >\n <ncim-icon name=\"close\" [size]=\"14\" />\n </button>\n </div>\n <ul class=\"file-upload__rejected-list\" role=\"list\">\n @for (rejected of rejectedFiles(); track rejected.name) {\n <li class=\"file-upload__rejected-item\">\n <span class=\"file-upload__rejected-name\">{{ rejected.name }}</span>\n <span class=\"file-upload__rejected-reason\">\n @switch (rejected.reason) {\n @case ('size') {\n {{ 'FILE_UPLOAD.REJECTED_SIZE' | translate: { size: maxSizeMB() } }}\n }\n @case ('type') {\n {{ 'FILE_UPLOAD.REJECTED_TYPE' | translate }}\n }\n @case ('duplicate') {\n {{ 'FILE_UPLOAD.REJECTED_DUPLICATE' | translate }}\n }\n @case ('max_files') {\n {{ 'FILE_UPLOAD.REJECTED_MAX_FILES' | translate: { max: maxFiles() } }}\n }\n }\n </span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, signal, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { timer } from 'rxjs';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\n\nconst COPY_FEEDBACK_MS = 2_000;\n\n@Component({\n selector: 'ncim-copy-number',\n imports: [Icon],\n templateUrl: './copy-number.html',\n styleUrl: './copy-number.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopyNumber {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly value = input.required<string>();\n readonly iconSize = input<number>(20);\n\n readonly copied = signal(false);\n\n async copy(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.value());\n this.copied.set(true);\n timer(COPY_FEEDBACK_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.copied.set(false));\n } catch {\n // Clipboard write failed silently\n }\n }\n}\n","<button type=\"button\" class=\"copy-number\" (click)=\"copy()\">\n <span class=\"copy-number__text\">{{ value() }}</span>\n @if (copied()) {\n <span class=\"copy-number__copied-indicator\">✓</span>\n }\n <ncim-icon name=\"clipboard\" [size]=\"iconSize()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NcimButton } from '../button/button';\n\n/**\n * Dumb atom: a button that emits a `clicked` event when the user triggers PDF export.\n * Contains no service logic — the parent decides what to export and when.\n */\n@Component({\n selector: 'ncim-export-pdf-button',\n templateUrl: './export-pdf-button.html',\n styleUrl: './export-pdf-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, TranslatePipe],\n})\nexport class ExportPdfButton {\n /** Translation key for the button label. */\n readonly labelKey = input<string>('COMMON.EXPORT_PDF');\n\n /** When true, shows a spinner and disables the button. */\n readonly loading = input<boolean>(false);\n\n /** When true, disables the button entirely. */\n readonly disabled = input<boolean>(false);\n\n /** Button style variant. */\n readonly variant = input<'primary' | 'outline'>('primary');\n\n /** Emitted when the user clicks the export button. */\n readonly clicked = output<void>();\n}\n","<ncim-button\n [variant]=\"variant()\"\n [loading]=\"loading()\"\n [disabled]=\"disabled() || loading()\"\n [fullWidth]=\"false\"\n size=\"small\"\n icon=\"pdf\"\n iconPosition=\"start\"\n (click)=\"clicked.emit()\"\n>\n {{ labelKey() | translate }}\n</ncim-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ExportPdfOptions, ExportPdfService } from '@libs/core';\n\n/**\n * Smart organism: wraps any content region and provides PDF export capability.\n * The export button lives in the parent — wire it via a template reference variable.\n *\n * The filename can be provided in two ways:\n * 1. Static input: `[filename]=\"'violations-report'\"`\n * 2. At call time: `pdfContainer.triggerExport('violations-report')`\n * — the call-time value takes priority over the input.\n *\n * Usage:\n * ```html\n * <ncim-export-pdf-container #pdfContainer [filename]=\"reportName()\"\n * (exportComplete)=\"onPdfReady()\">\n * <ncim-page-header titleKey=\"VIOLATIONS.TITLE\" />\n * <ncim-grid-table [columns]=\"cols()\" [data]=\"rows()\" />\n * </ncim-export-pdf-container>\n *\n * <ncim-export-pdf-button\n * [loading]=\"pdfContainer.loading()\"\n * (clicked)=\"pdfContainer.triggerExport()\"\n * />\n * ```\n */\n@Component({\n selector: 'ncim-export-pdf-container',\n templateUrl: './export-pdf-container.html',\n styleUrl: './export-pdf-container.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExportPdfContainer {\n private readonly exportService = inject(ExportPdfService);\n private readonly contentRef = viewChild.required<ElementRef<HTMLElement>>('exportContent');\n\n /**\n * Default PDF filename (without extension).\n * Can be overridden per-call by passing a name to `triggerExport()`.\n */\n readonly filename = input<string>('export');\n\n /**\n * When true, generates multi-page A4 PDF with page numbers.\n * When false (default), generates a single-page PDF whose height\n * exactly matches the content — no white space at the bottom.\n */\n readonly pageNumbers = input<boolean>(false);\n\n /** Emitted when export starts. */\n readonly exportStarted = output<void>();\n\n /** Emitted when PDF has been saved successfully. */\n readonly exportComplete = output<void>();\n\n /** Emitted with an error message if PDF generation fails. */\n readonly exportError = output<string>();\n\n /** True while PDF generation is in progress. Bind to button's [loading] input. */\n readonly loading = signal(false);\n\n /**\n * Triggers PDF export.\n *\n * @param filename - Optional filename override from the parent. When provided,\n * takes priority over the `[filename]` input. Useful when the\n * name depends on runtime data (e.g. entity name, current date).\n * @param options - Optional PDF options (orientation, scale, pageNumbers, jpegQuality).\n *\n * @example\n * // Static name from input\n * pdfContainer.triggerExport()\n *\n * // Dynamic name from parent\n * pdfContainer.triggerExport(`violation-${this.id()}-report`)\n *\n * // With options\n * pdfContainer.triggerExport('report', { orientation: 'landscape', jpegQuality: 0.85 })\n */\n async triggerExport(filename?: string, options?: ExportPdfOptions): Promise<void> {\n if (this.loading()) {\n return;\n }\n\n const resolvedFilename = filename ?? this.filename();\n\n // Merge component-level defaults with call-time overrides.\n // pageNumbers input on the component sets the default; caller can still override.\n const resolvedOptions: ExportPdfOptions = {\n pageNumbers: this.pageNumbers(),\n ...options,\n };\n\n this.loading.set(true);\n this.exportStarted.emit();\n\n try {\n await this.exportService.generate(this.contentRef().nativeElement, resolvedFilename, resolvedOptions);\n this.exportComplete.emit();\n } catch (err) {\n const message = err instanceof Error ? err.message : 'PDF export failed';\n this.exportError.emit(message);\n } finally {\n this.loading.set(false);\n }\n }\n}\n","<div #exportContent class=\"ncim-export-pdf-container\">\n <ng-content />\n</div>\n","import { CHART_COLORS } from '@libs/core/constants';\nimport { MarkerStatus, TrendDirection } from '@libs/core/enums';\nimport { BarSeriesData } from '../shared/organisms/charts/bar-chart/bar-chart';\nimport { ChartLineSeriesData, ChartSeriesItem, MapMarkerData } from '../shared/organisms/charts/chart.models';\nimport { HorizontalBarItem } from '../shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart';\nimport { ScaleIndicatorLabels } from '../shared/organisms/charts/scale-indicator/scale-indicator';\n\n// ── Interfaces ──\n\nexport interface LicenseComplianceStats {\n name: string;\n id: string;\n city: string;\n trendData: number[];\n value: number;\n isUp: boolean;\n lastVisit: string;\n color: string;\n}\n\nexport interface ScaleIndicatorConfig {\n title: string;\n value: number;\n activeColor: string;\n labels?: ScaleIndicatorLabels;\n /** Scale range min (default 0) */\n min?: number;\n /** Scale range max (default 100) */\n max?: number;\n /** Highlighted range start (with end, shows range bar) */\n start?: number;\n /** Highlighted range end (with start, shows range bar) */\n end?: number;\n}\n\n// ── Market Cards ──\n\nexport const MARKET_CARDS: LicenseComplianceStats[] = [\n {\n name: 'سوق التجارة - حي الخليج',\n id: 'A-10179192',\n city: 'الرياض',\n trendData: [10, 15, 12, 18, 14, 22, 25, 30],\n value: 30,\n isUp: false,\n lastVisit: '01 أغسطس 2024 - وزارة الصناعة',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي الياسمين',\n id: 'A-10179193',\n city: 'الرياض',\n trendData: [10, 12, 15, 20, 35, 40, 60, 99],\n value: 99,\n isUp: true,\n lastVisit: '10 أكتوبر 2024 - وزارة المالية',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الملك فهد',\n id: 'A-10179194',\n city: 'الرياض',\n trendData: [20, 25, 30, 28, 40, 60, 75, 80],\n value: 80,\n isUp: false,\n lastVisit: '28 سبتمبر 2024 - وزارة البلديات',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي المربع',\n id: 'A-10179195',\n city: 'الرياض',\n trendData: [10, 12, 20, 18, 25, 40, 60, 80],\n value: 80,\n isUp: true,\n lastVisit: '01 أغسطس 2024 - وزارة الصناعة',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الروضة',\n id: 'A-10179196',\n city: 'جدة',\n trendData: [15, 18, 22, 28, 35, 42, 55, 72],\n value: 72,\n isUp: true,\n lastVisit: '15 سبتمبر 2024 - وزارة البلديات',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الشفا',\n id: 'A-10179197',\n city: 'الرياض',\n trendData: [45, 42, 38, 35, 30, 25, 22, 18],\n value: 18,\n isUp: false,\n lastVisit: '22 أكتوبر 2024 - وزارة الصحة',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي الفيصلية',\n id: 'A-10179198',\n city: 'الدمام',\n trendData: [30, 35, 40, 45, 50, 55, 65, 70],\n value: 70,\n isUp: true,\n lastVisit: '05 نوفمبر 2024 - وزارة التنمية',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي العزيزية',\n id: 'A-10179199',\n city: 'مكة المكرمة',\n trendData: [20, 25, 30, 28, 35, 40, 38, 45],\n value: 45,\n isUp: true,\n lastVisit: '12 أكتوبر 2024 - وزارة البلديات',\n color: CHART_COLORS.orange,\n },\n {\n name: 'سوق التجارة - حي النخيل',\n id: 'A-10179200',\n city: 'الرياض',\n trendData: [60, 58, 55, 52, 48, 45, 42, 38],\n value: 38,\n isUp: false,\n lastVisit: '18 سبتمبر 2024 - وزارة الصناعة',\n color: CHART_COLORS.red,\n },\n];\n\n// ── Compliance vs Violations ──\n\nexport const COMPLIANCE_VS_VIOLATIONS_SERIES: ChartLineSeriesData[] = [\n { name: 'درجة الامتثال', data: [35, 34, 33, 30, 25, 35, 42, 38], color: CHART_COLORS.greenLight },\n { name: 'عدد المخالفات', data: [30, 28, 25, 33, 40, 32, 25, 30], color: CHART_COLORS.redLight },\n];\n\nexport const COMPLIANCE_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس'];\n\n// ── Compliance Trend by Item ──\n\nexport const COMPLIANCE_TREND_SERIES: ChartLineSeriesData[] = [\n { name: 'النظافة العامة', data: [20, 25, 30, 35, 40, 50, 25, 30], color: CHART_COLORS.greenLight },\n { name: 'السلامة', data: [30, 28, 25, 22, 20, 23, 26, 28], color: CHART_COLORS.purple },\n { name: 'الغذاء', data: [40, 42, 45, 50, 48, 45, 40, 35], color: CHART_COLORS.redLight },\n { name: 'التراخيص', data: [10, 12, 15, 18, 20, 22, 25, 28], color: CHART_COLORS.yellow },\n];\n\n// ── Stacked Bar (Violations Distribution) ──\n\nexport const STACKED_BAR_SERIES: BarSeriesData[] = [\n { name: 'الصحة', data: [10, 20, 15, 30, 10, 20], color: CHART_COLORS.blue, stack: 'total' },\n { name: 'التراخيص', data: [20, 10, 25, 20, 15, 30], color: CHART_COLORS.redSoft, stack: 'total' },\n { name: 'السلامة', data: [30, 40, 30, 20, 40, 30], color: CHART_COLORS.greenLeaf, stack: 'total' },\n];\n\nexport const BAR_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو'];\n\n// ── Grouped Bar (Compliance Change) ──\n\nexport const GROUPED_BAR_SERIES: BarSeriesData[] = [\n { name: 'الامتثال', data: [60, 80, 70, 90, 85, 95], color: CHART_COLORS.greenLight },\n { name: 'عدد المخالفات', data: [40, 20, 30, 10, 15, 5], color: CHART_COLORS.redLight },\n];\n\n// ── Inspection Results by Category ──\n\nexport const INSPECTION_SERIES: ChartLineSeriesData[] = [\n { name: 'التراخيص', data: [30, 35, 38, 36, 28, 18], color: CHART_COLORS.redLight },\n { name: 'الغذاء', data: [32, 30, 28, 25, 20, 25], color: CHART_COLORS.greenLight },\n { name: 'السلامة', data: [22, 18, 30, 45, 52, 32], color: CHART_COLORS.purple },\n { name: 'النظافة العامة', data: [28, 32, 30, 35, 38, 25], color: CHART_COLORS.greenTeal },\n];\n\nexport const INSPECTION_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو'];\n\n// ── Monthly Compliance Rate ──\n\nexport const MONTHLY_COMPLIANCE_SERIES: ChartLineSeriesData[] = [\n { name: 'معدل الامتثال', data: [53, 48, 45, 29, 92, 57], color: CHART_COLORS.green },\n];\n\n// ── Risk Trend (Area Chart) ──\n\nexport const AREA_CHART_DATA: number[] = [45, 50, 92, 31, 34, 15, 20, 28, 35, 30, 28, 42, 45];\n\nexport const AREA_CHART_CATEGORIES: string[] = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n '',\n];\n\n// ── Visits by Authority (Donut) ──\n\nexport const DONUT_CHART_DATA: ChartSeriesItem[] = [\n { name: 'وزارة الصحة', value: 5, color: CHART_COLORS.greenLight },\n { name: 'وزارة البلديات والإسكان', value: 20, color: CHART_COLORS.redLight },\n { name: 'وزارة التنمية والموارد البشرية', value: 18, color: CHART_COLORS.yellow },\n];\n\n// ── Distribution by Region (Pie) ──\n\nexport const PIE_CHART_DATA: ChartSeriesItem[] = [\n { name: 'الرياض', value: 40, color: CHART_COLORS.greenLight },\n { name: 'الدمام', value: 34, color: CHART_COLORS.yellow },\n { name: 'جدة', value: 16, color: CHART_COLORS.redLight },\n];\n\n// ── Visit Readiness (Gauge) ──\n\nexport const GAUGE_VALUE = 20;\n\n// ── Scale Indicators ──\n\nexport const SCALE_INDICATORS: ScaleIndicatorConfig[] = [\n {\n title: 'الالتزام بمواعيد التراخيص',\n value: 50,\n activeColor: CHART_COLORS.green,\n start: 10,\n end: 30,\n },\n {\n title: 'فعالية تصحيح المخالفات',\n value: 50,\n activeColor: CHART_COLORS.green,\n start: 40,\n end: 60,\n },\n {\n title: 'معدل تكرار المخالفات',\n value: 50,\n activeColor: CHART_COLORS.green,\n labels: { low: 'منخفض', mid: 'متوسط', high: 'مرتفع' },\n start: 70,\n end: 100,\n },\n];\n\n// ── Compliance Criteria (Horizontal Bar) ──\n\nexport const HORIZONTAL_BAR_DATA: HorizontalBarItem[] = [\n { label: 'التراخيص واللوحات', value: 80, color: CHART_COLORS.green },\n { label: 'النظافة العامة للمرافق', value: 70, color: CHART_COLORS.green },\n { label: 'سلامة الغذاء والتحضير', value: 74, color: CHART_COLORS.orange },\n { label: 'التخزين وسلسلة التبريد', value: 33, color: CHART_COLORS.red },\n { label: 'العاملون', value: 75, color: CHART_COLORS.green },\n];\n\n// ── Map Markers ──\n\nexport const MAP_MARKERS: MapMarkerData[] = [\n {\n lat: 24.7136,\n lng: 46.6753,\n title: 'سوق التجارة - الوشام',\n subtitle: 'حي النزهة',\n score: 82,\n violations: 1,\n trendValue: 13,\n trendDirection: TrendDirection.UP,\n statusText: 'مخالفة غير مصححة',\n statusType: MarkerStatus.WARNING,\n },\n {\n lat: 24.708,\n lng: 46.66,\n title: 'سوق التجارة - الوشام',\n subtitle: 'حي النزهة',\n score: 82,\n violations: 1,\n trendValue: 13,\n trendDirection: TrendDirection.UP,\n statusText: 'ترخيص قارب على الانتهاء',\n statusType: MarkerStatus.INFO,\n },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '../../templates/auth-layout/auth-layout';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport type StatusPageVariant = 'error' | 'warning' | 'info' | 'success' | 'neutral';\n\n/**\n * Generic full-page status component for error, maintenance, permission, and empty states.\n *\n * Place action buttons (anchors, router links, retry buttons) via `ng-content`.\n *\n * @example\n * <ncim-status-page icon=\"shield\" iconVariant=\"error\" code=\"403\"\n * titleKey=\"STATUS_PAGES.403.TITLE\" subtitleKey=\"STATUS_PAGES.403.SUBTITLE\">\n * <ncim-button label=\"Back to Home\" (click)=\"goHome()\" />\n * </ncim-status-page>\n */\n@Component({\n selector: 'ncim-status-page',\n imports: [AuthLayout, Icon, TranslateModule],\n templateUrl: './status-page.html',\n styleUrl: './status-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusPage {\n /** Icon name from the ncim icon set. */\n readonly icon = input<string>('warning');\n\n /** Background/foreground color variant for the icon wrapper. */\n readonly iconVariant = input<StatusPageVariant>('neutral');\n\n /** Optional image URL. When provided, renders an <img> instead of the icon wrapper. */\n readonly imageSrc = input<string | undefined>(undefined);\n\n /** Alt text for the image (accessibility). Defaults to empty string for decorative images. */\n readonly imageAlt = input<string>('');\n\n /** Optional HTTP status code displayed as a badge (e.g. '403', '404'). */\n readonly code = input<string | undefined>(undefined);\n\n /** Required i18n key for the page title. */\n readonly titleKey = input.required<string>();\n\n /** Optional i18n key for the descriptive subtitle. */\n readonly subtitleKey = input<string | undefined>(undefined);\n}\n","<ncim-auth-layout width=\"small\">\n <section class=\"ncim-status-page\" role=\"main\" aria-labelledby=\"ncim-status-page-title\">\n @if (code()) {\n <span class=\"ncim-status-page__code-badge\">{{ code() }}</span>\n }\n\n @if (imageSrc()) {\n <img class=\"ncim-status-page__image\" [src]=\"imageSrc()!\" [alt]=\"imageAlt()\" aria-hidden=\"true\" />\n } @else {\n <div class=\"ncim-status-page__icon-wrapper\" [class]=\"'ncim-status-page__icon-wrapper--' + iconVariant()\">\n <ncim-icon [name]=\"icon()\" [size]=\"56\" />\n </div>\n }\n\n <h1 id=\"ncim-status-page-title\" class=\"ncim-status-page__title\">\n {{ titleKey() | translate }}\n </h1>\n\n @if (subtitleKey()) {\n <p class=\"ncim-status-page__subtitle\">\n {{ subtitleKey()! | translate }}\n </p>\n }\n\n <div class=\"ncim-status-page__actions\">\n <ng-content />\n </div>\n </section>\n</ncim-auth-layout>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { NcimButton } from '../../atoms/button/button';\n\n/**\n * Inline error state for data-loading failures inside tables, cards, and sections.\n *\n * @example\n * @if (tableError()) {\n * <ncim-api-error-state (retry)=\"loadData()\" />\n * }\n */\n@Component({\n selector: 'ncim-api-error-state',\n imports: [Icon, NcimButton, TranslateModule],\n templateUrl: './api-error-state.html',\n styleUrl: './api-error-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ApiErrorState {\n /** Custom i18n title key. Defaults to STATUS_PAGES.API_ERROR.TITLE. */\n readonly titleKey = input<string>('STATUS_PAGES.API_ERROR.TITLE');\n\n /** Custom i18n subtitle key. Defaults to STATUS_PAGES.API_ERROR.SUBTITLE. */\n readonly subtitleKey = input<string>('STATUS_PAGES.API_ERROR.SUBTITLE');\n\n /** Show the retry button. */\n readonly retryable = input<boolean>(true);\n\n /** Emitted when the user clicks retry. */\n readonly retry = output<void>();\n}\n","<div class=\"ncim-api-error-state\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"ncim-api-error-state__icon-wrapper\">\n <ncim-icon name=\"alert-01\" [size]=\"32\" />\n </div>\n\n <p class=\"ncim-api-error-state__title\">{{ titleKey() | translate }}</p>\n <p class=\"ncim-api-error-state__subtitle\">{{ subtitleKey() | translate }}</p>\n\n @if (retryable()) {\n <ncim-button variant=\"outline\" size=\"small\" [fullWidth]=\"false\" (click)=\"retry.emit()\">\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </ncim-button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ncim-stamp',\n templateUrl: './stamp.html',\n styleUrl: './stamp.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stamp {\n readonly color = input<string>('');\n readonly title = input<string>('Text Here');\n readonly id = input<string>('id');\n readonly date = input<string>('date');\n}\n","<div class=\"d-flex flex-column align-items-center stamp\" [style.color]=\"color()\">\n <svg width=\"190\" height=\"40\" viewBox=\"0 0 94 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M33.2342 1.98749C34.3705 1.6819 35.4967 1.3299 36.6455 1.07751C41.4755 0.0192528 46.3665 -0.226352 51.2802 0.195817C56.9043 0.679104 62.2923 2.12218 67.4194 4.49787C73.0741 7.11804 78.0577 10.6878 82.3682 15.1947C86.1036 19.1006 89.1072 23.5136 91.4013 28.4099C91.5561 28.7403 91.8283 29.0561 91.5019 29.4817C91.3686 29.656 91.4296 29.9808 91.3957 30.2898C91.6815 30.2717 91.9175 30.257 92.2361 30.2366C92.7376 31.6073 93.2448 32.9892 93.7779 34.447C93.0878 34.447 92.5038 34.4764 91.9277 34.4266C91.7786 34.4142 91.5911 34.1799 91.5222 34.0067C90.8365 32.2796 90.2537 30.506 89.4765 28.823C88.8101 27.3799 87.9652 26.0138 87.1361 24.6522C83.221 18.2201 78.0543 13.0205 71.67 9.04439C66.6559 5.92283 61.2373 3.83802 55.4279 2.76392C52.2392 2.17424 49.0278 1.98409 45.7893 1.9807C43.6364 1.97844 41.515 2.24215 39.4129 2.59641C37.3074 2.9518 35.2064 3.42151 33.1653 4.04627C31.1083 4.6767 29.0988 5.49274 27.1198 6.34613C24.4574 7.49606 21.995 9.0161 19.6161 10.6776C18.0358 11.7811 16.5572 13.0069 15.1532 14.3176C14.681 14.759 14.2834 14.9616 13.7073 14.6028C13.617 14.5462 13.4984 14.5337 13.3651 14.493C12.9957 14.9333 13.2295 15.4324 13.1911 15.893C13.1798 16.0243 13.1742 16.1896 13.0951 16.2756C12.3778 17.0701 11.6447 17.85 10.8755 18.6796C10.5095 18.2846 10.1119 18.4634 9.88373 18.7894C9.77529 18.9433 9.98313 19.3202 10.0724 19.6994C8.13967 22.1362 6.30638 24.8242 4.89781 27.7704C3.9998 29.6492 3.23509 31.5937 2.42406 33.5132C2.2919 33.8268 2.06485 33.9422 1.80731 34.1335C1.23462 34.5602 0.664187 34.2659 2.85882e-07 34.4628C0.320798 33.5359 0.591895 32.6881 0.907044 31.8563C3.29269 25.5656 6.80678 19.988 11.4572 15.1302C14.8098 11.6272 18.6006 8.6924 22.8139 6.30426C23.0387 6.17636 23.2838 6.05526 23.5346 6.00659C24.0271 5.91151 24.5738 5.95 24.733 5.29128C24.7477 5.22903 24.8855 5.19281 24.9691 5.15093C27.5299 3.87989 30.1798 2.83522 32.919 2.01579C33.0252 1.98409 33.1416 1.98183 33.2523 1.96599C33.2251 2.01126 33.1924 2.05427 33.1721 2.10294C33.1009 2.26818 33.0342 2.43456 32.9653 2.60094C33.1336 2.64508 33.3279 2.76279 33.4646 2.71638C33.6623 2.64847 33.8182 2.45946 33.9921 2.32251C33.8871 2.20367 33.8012 2.04182 33.6702 1.97957C33.5505 1.92411 33.3799 1.97957 33.2319 1.98409L33.2342 1.98749ZM27.1492 5.83681C27.5875 5.4701 28.0314 5.10905 28.4482 4.71971C28.473 4.69707 28.3104 4.353 28.1827 4.30886C27.8235 4.18436 26.8295 4.70273 26.6544 5.05359C26.4511 5.46218 26.6025 5.71684 27.1492 5.83681ZM36.8409 1.99315C37.4294 2.41645 38.0292 2.4572 38.4415 2.04295C38.5917 1.89242 38.6855 1.56872 38.6335 1.36952C38.5974 1.23596 38.2608 1.10806 38.0574 1.10693C37.478 1.10467 37.1086 1.46119 36.8409 1.99315ZM1.75761 31.4477C2.33934 31.6831 2.77761 31.5642 2.85555 31.1059C2.88718 30.9236 2.71661 30.5999 2.54831 30.5128C2.27269 30.3702 1.86831 30.8614 1.75761 31.4477ZM48.62 1.49967C48.8019 1.28237 48.9589 1.15673 49.0154 0.994883C49.0357 0.936028 48.7929 0.691554 48.707 0.709664C48.5376 0.74475 48.3941 0.904337 48.2405 1.01186C48.3433 1.14428 48.4461 1.27671 48.62 1.49967Z\"\n />\n <path\n d=\"M87.4625 34.4062C86.4888 34.5035 86.4944 34.5013 86.168 33.6807C85.9669 33.1748 85.7579 32.67 85.5332 32.1743C85.3231 31.7091 85.0248 31.2586 85.689 30.678C84.6521 30.7493 84.5561 30.0283 84.2533 29.5009C83.5609 28.2944 82.8629 27.0913 82.219 25.9764C82.2969 25.6719 82.3613 25.4207 82.4257 25.1683C82.1738 25.1151 81.9219 25.063 81.574 24.9895C80.6783 23.8735 79.7249 22.6149 78.6981 21.4208C75.4664 17.6609 71.6779 14.5654 67.3222 12.2112C65.4449 11.1971 63.4489 10.4037 61.5004 9.52313C61.1661 9.3726 60.808 9.29337 60.991 8.78631C61.0181 8.71161 60.8905 8.58032 60.834 8.47506C60.7346 8.54071 60.6092 8.58711 60.5437 8.67766C60.4691 8.77839 60.4488 8.91874 60.3776 9.11794C59.7688 8.80103 58.9725 8.94251 58.637 8.33585C58.2089 8.30869 57.8587 8.3268 57.5266 8.25889C55.8413 7.91594 54.1605 7.5515 52.4854 7.19497C52.5814 6.93805 52.6898 6.65057 52.8005 6.35516C68.2078 8.18532 82.2834 19.4945 87.4625 34.4062Z\"\n />\n <path\n d=\"M12.885 24.032C12.8342 23.749 12.7901 23.5 12.745 23.2499C12.5891 23.4423 12.4479 23.6483 12.2728 23.8215C12.1327 23.9596 11.952 24.0558 11.6899 24.0773C12.013 23.6381 12.3281 23.1933 12.6602 22.7621C15.2741 19.3723 18.3228 16.4341 21.7973 13.9384C22.0707 13.7415 22.3022 13.6317 22.6547 13.7641C23.0703 13.9203 23.5086 13.9475 23.8554 13.4438C23.6961 13.2989 23.5267 13.145 23.2816 12.922C32.0674 7.27992 41.6258 5.10456 51.9805 6.25449C51.4971 6.67439 51.1096 7.1441 50.3077 7.07393C43.7177 6.48991 37.3481 7.47572 31.2078 9.92159C26.7347 11.7031 22.6942 14.2033 19.0649 17.3746C18.8604 17.5535 18.5645 17.6327 18.3024 17.7379C17.9636 17.8738 17.6292 17.9836 17.7072 18.4725C17.7241 18.5766 17.6021 18.7226 17.5129 18.82C16.4115 20.0288 15.3644 21.2953 14.1727 22.4078C13.643 22.9024 13.486 23.6313 12.8873 24.0343L12.885 24.032Z\"\n />\n <path\n d=\"M11.2406 24.711C11.5094 25.5622 11.8799 24.9363 12.3283 24.8593C12.0392 25.2928 11.7929 25.6606 11.5501 26.0239C11.34 25.9889 11.1468 25.9572 10.7978 25.8983C11.3388 26.703 10.7978 27.192 10.4905 27.7432C10.1426 28.3668 9.88846 29.0708 9.42985 29.5971C8.91929 30.1834 8.84361 30.9134 8.51377 31.5506C8.17039 32.2161 7.90832 32.9258 7.62819 33.623C7.27915 34.4934 7.28819 34.4956 6.26367 34.4039C7.50055 30.9666 9.15198 27.7749 11.2394 24.7099L11.2406 24.711Z\"\n />\n </svg>\n\n <div class=\"fsc-8 id-text\">{{ id() }}</div>\n\n <svg class=\"top-line\" width=\"75\" height=\"3\" viewBox=\"0 0 61 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M60.8533 1.94789L1.61584e-08 1.94789L3.4757e-10 0.0418993C0.198804 0.0328447 0.41455 0.0136037 0.630298 0.0136037C15.0865 0.0158672 29.5439 0.0203952 44.0001 0.0215269C49.3949 0.0215269 54.7909 0.0237902 60.1857 2.1931e-05C60.7392 -0.00224172 60.9165 0.1664 60.8612 0.700619C60.8205 1.08883 60.8533 1.48497 60.8533 1.94789ZM43.842 1.013C44.0961 0.773057 44.2622 0.614602 44.4293 0.457279C44.3006 0.348624 44.1447 0.13018 44.0464 0.153948C43.8239 0.207144 43.6285 0.379182 43.4229 0.502551C43.5347 0.639501 43.6465 0.77645 43.8408 1.01413L43.842 1.013Z\"\n />\n </svg>\n\n <div class=\"fsc-20 fw-bold title\">{{ title() }}</div>\n\n <svg class=\"bottom-line\" width=\"75\" height=\"3\" viewBox=\"0 0 61 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1.66277e-08 2.00446L3.56782e-10 0.0430098C0.215748 0.0328234 0.414551 0.0135813 0.613355 0.0135813C20.4836 0.0124493 40.355 0.0147133 60.2252 -4.9959e-07C60.7934 -5.04303e-07 60.9109 0.181089 60.8951 0.705122C60.8555 1.99766 60.8793 2.00446 59.5859 2.00446C43.0287 2.00446 26.4726 2.00219 9.91535 2.00106C6.85196 2.00106 3.78857 2.00333 0.725183 2.00446C0.503788 2.00446 0.282392 2.00446 1.66277e-08 2.00446ZM20.9072 1.93315C21.6866 1.31857 21.7521 1.05599 21.3229 0.368975C20.5141 0.702862 20.3492 1.28235 20.9072 1.93315ZM9.86001 1.55852C10.2395 1.35932 10.7467 1.33442 10.6586 0.771903C10.6428 0.670039 10.191 0.511587 10.0351 0.584023C9.64991 0.762851 9.5618 1.11032 9.86001 1.55852ZM15.2288 1.01298C15.2898 1.03222 15.3508 1.05033 15.4118 1.06957C15.4853 0.911117 15.6581 0.702865 15.6084 0.605528C15.5338 0.458392 15.3068 0.388218 15.1441 0.286354C15.1046 0.327099 15.0651 0.367841 15.0267 0.409719C15.0944 0.611183 15.1611 0.811517 15.2288 1.01298Z\"\n />\n </svg>\n\n <div class=\"fsc-8 date-text\">{{ date() }}</div>\n\n <svg class=\"bottom-border\" width=\"190\" height=\"40\" viewBox=\"0 0 94 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M31.5929 32.0177C31.8674 31.8094 32.0786 31.6815 32.248 31.5095C32.3678 31.3884 32.4276 31.2096 32.5146 31.0568C32.3271 30.9538 32.1249 30.7455 31.9555 30.7693C31.6347 30.8157 31.2924 30.9413 31.0304 31.1315C30.4916 31.5219 30.007 31.5186 29.3835 31.2775C23.3696 28.9527 18.0053 25.5946 13.2995 21.1884C10.5434 18.6079 8.10914 15.7478 6.0217 12.5956C5.98104 12.5345 5.94941 12.4666 5.93359 12.4383C6.49273 12.1123 7.04057 11.7943 7.5534 11.4944C8.73041 12.9929 9.91081 14.6227 11.2211 16.1394C17.1062 22.9495 24.358 27.6919 32.9382 30.3901C33.4928 30.5644 34.0621 30.6957 34.6145 30.8757C34.9455 30.9832 35.3657 30.9153 35.4278 31.5095C35.4594 31.8162 35.8886 31.7472 36.188 31.5751C36.3664 31.4721 36.6161 31.3827 36.8058 31.4223C40.4069 32.1818 44.043 32.5417 47.7231 32.493C47.9445 32.4897 48.1829 32.6357 48.3885 32.7545C48.7375 32.956 49.0334 33.0239 49.2831 32.6119C49.3362 32.5247 49.4672 32.4444 49.57 32.4331C50.6532 32.3165 51.7388 32.2135 52.8231 32.1128C52.9304 32.1026 53.0705 32.0992 53.1462 32.1569C53.4546 32.3946 53.6387 32.2576 53.9222 32.0584C54.1922 31.8694 54.5898 31.8468 54.9366 31.7868C60.5121 30.8338 65.7364 28.9154 70.6139 26.0519C77.4071 22.0633 82.8573 16.6917 87.0152 10.0004C87.5009 9.21828 87.9448 8.41129 88.4317 7.57488C88.8395 7.80464 89.2145 7.69825 89.3466 7.25684C89.4042 7.0633 89.1851 6.78713 89.0812 6.52341C89.8775 4.51556 90.71 2.40245 91.5628 0.298397C91.6148 0.171633 91.8272 0.0426093 91.9717 0.0335547C92.5139 0.00186374 93.0584 0.0211064 93.7282 0.0211063C93.3792 1.03182 93.0539 1.97349 92.7161 2.95139C92.41 2.85744 92.1502 2.77822 91.8396 2.68201C91.6442 3.25471 91.5967 3.7663 91.8949 4.29712C91.974 4.4386 91.9819 4.68307 91.9164 4.83587C90.0549 9.16735 87.6048 13.14 84.59 16.7585C80.6094 21.5359 75.8957 25.4294 70.4501 28.4253C65.9555 30.8972 61.2034 32.6866 56.1463 33.5524C53.615 33.9859 51.0407 34.1647 48.4856 34.4534C48.2823 34.476 48.0744 34.4568 47.8745 34.4568C47.6271 33.6362 47.5096 33.6226 46.7777 34.0946C46.4693 34.2938 46.0661 34.4647 45.7114 34.4545C40.9909 34.3289 36.3676 33.5909 31.8685 32.132C31.803 32.1105 31.7409 32.0788 31.5906 32.0154L31.5929 32.0177ZM80.2943 19.6616C80.9246 19.8891 81.3199 19.777 81.3956 19.2971C81.425 19.1115 81.2487 18.7901 81.0771 18.6995C80.815 18.5626 80.3869 19.0991 80.2943 19.6616ZM84.6194 14.0613C84.3641 14.445 84.1811 14.6612 84.0783 14.9113C84.0501 14.9815 84.3347 15.2645 84.3483 15.2565C84.6115 15.0811 84.8656 14.8864 85.0882 14.6635C85.1051 14.6465 84.8679 14.3783 84.6194 14.0625L84.6194 14.0613ZM28.9565 29.5243C28.5148 29.522 28.1274 29.5662 28.0144 30.0438C28.0042 30.0857 28.3499 30.2928 28.5205 30.2815C28.9339 30.252 29.1926 30.0472 28.9565 29.5243ZM60.8002 31.0183L60.8465 31.3035C61.1119 31.3318 61.3785 31.3601 61.6439 31.3884L61.7196 30.5622C61.662 30.5305 61.6033 30.4999 61.5457 30.4682C61.2972 30.6516 61.0487 30.8338 60.8002 31.0172L60.8002 31.0183Z\"\n />\n <path\n d=\"M80.6059 10.7405L80.6059 11.5713C80.746 11.6018 80.885 11.6324 81.051 11.6698C81.0205 11.7377 81.0024 11.8112 80.9606 11.8644C79.1364 14.222 77.0828 16.36 74.8135 18.2875C72.5115 20.2422 70.0411 21.9557 67.3787 23.3852C66.9483 23.6161 66.5168 23.8448 66.0752 24.0519C65.7115 24.2217 65.394 24.5193 64.9016 24.2239C64.7276 24.1198 64.2441 24.3088 64.0431 24.5069C62.4447 26.0937 60.2873 26.3778 58.2891 27.0218C57.731 27.2017 57.1199 27.2074 56.5427 27.3376C55.7114 27.5254 54.8981 27.8095 54.0599 27.9555C50.8825 28.5101 47.679 28.7082 44.4586 28.4909C43.1404 28.4015 41.8199 28.2883 40.513 28.0936C39.1587 27.891 37.8088 27.6273 36.4805 27.2979C35.1702 26.9742 33.8723 26.5792 32.5981 26.1333C31.324 25.6885 30.06 25.1962 28.8344 24.6291C23.7638 22.2851 19.2986 19.0866 15.4603 15.0143C13.1413 12.5537 11.1194 9.87129 9.44875 6.92856C9.294 6.65579 9.21606 6.29926 9.22396 5.98575C9.233 5.62923 9.11214 5.44361 8.82748 5.25799C8.57898 5.09614 8.31353 4.8743 8.19267 4.61512C7.50476 3.13809 6.85752 1.64182 6.18994 0.137632C7.14104 -0.114764 7.22802 -0.0683602 7.53187 0.688828C11.3238 10.1395 17.6426 17.3787 26.5233 22.3315C33.2262 26.0699 40.4566 27.7892 48.1128 27.5492C56.9652 27.2719 64.9705 24.4627 72.1026 19.1805C72.4866 18.8953 72.9475 18.7063 73.3044 18.3939C74.1313 17.6684 74.9547 16.9327 75.707 16.1325C77.2523 14.4914 78.7501 12.8061 80.266 11.1378C80.3518 11.0427 80.432 10.942 80.6037 10.7383L80.6059 10.7405Z\"\n />\n <path\n d=\"M6.85423 10.2731C6.30525 10.6387 5.78113 10.9873 5.21974 11.3597C3.03176 7.8601 1.28771 4.11491 0 0.0256371C0.672094 0.0256371 1.27867 0.0120535 1.88299 0.0380854C1.98578 0.0426127 2.13376 0.198804 2.17216 0.31425C3.3311 3.82855 4.94864 7.12668 6.85423 10.289C6.86326 10.3037 6.861 10.3252 6.85197 10.272L6.85423 10.2731Z\"\n />\n <path\n d=\"M87.5858 0.0369151C86.8267 1.71767 86.1365 3.27732 85.417 4.82226C85.1154 5.46853 84.7664 6.09329 84.4026 6.70787C84.2682 6.93536 84.0265 7.09609 83.8458 7.29755C83.7384 7.41639 83.5803 7.55221 83.5724 7.6869C83.5272 8.47012 83.1386 8.95 82.4496 9.31672C81.878 9.62117 81.3935 10.0886 80.7417 10.581C81.3799 9.62344 81.9436 8.80061 82.4846 7.96306C83.9982 5.62019 85.2622 3.1449 86.2258 0.528128C86.4822 -0.16681 86.9408 0.0516287 87.5869 0.0369151L87.5858 0.0369151Z\"\n />\n </svg>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\nexport interface MultiSegmentBarItem {\n label: string;\n value: number;\n maxValue: number;\n color?: string;\n}\n\n@Component({\n selector: 'ncim-multi-segment-bar-chart',\n templateUrl: './multi-segment-bar-chart.html',\n styleUrl: './multi-segment-bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiSegmentBarChart {\n private readonly el = inject(ElementRef);\n\n /** Data items for the bar chart */\n readonly data = input<MultiSegmentBarItem[]>([]);\n\n /** Bar height in pixels */\n readonly barHeight = input<number>(44);\n\n /** Number of segments to divide the bar into */\n readonly segmentCount = input<number>(3);\n\n /** Gap between bar segments in pixels */\n readonly segmentGap = input<number>(4);\n\n /** Gap between bar rows in pixels */\n readonly rowGap = input<number>(24);\n\n /** Default bar color if not provided in item */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F2F4F7');\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n readonly computedBars = computed(() => {\n const items = this.data();\n const sc = this.segmentCount();\n const segmentWidth = 100 / sc;\n\n return items.map(item => {\n const percentage = item.maxValue > 0 ? Math.min(100, (item.value / item.maxValue) * 100) : 0;\n\n const segments = Array.from({ length: sc }, (_, i) => {\n const segStart = i * segmentWidth;\n const segEnd = (i + 1) * segmentWidth;\n\n let fill = 0;\n if (percentage >= segEnd) {\n fill = 100;\n } else if (percentage > segStart) {\n fill = ((percentage - segStart) / segmentWidth) * 100;\n }\n\n return { fill };\n });\n\n return {\n ...item,\n color: item.color ?? this.defaultColor(),\n segments,\n };\n });\n });\n}\n","<div class=\"multi-segment-bar-chart\" [style.row-gap.px]=\"rowGap()\">\n @for (bar of computedBars(); track bar.label) {\n <div class=\"multi-segment-bar-chart__item\">\n <!-- Segmented Bar -->\n <div class=\"multi-segment-bar-chart__bar\" [style.height.px]=\"barHeight()\" [style.gap.px]=\"segmentGap()\">\n @for (seg of bar.segments; track $index; let first = $first; let last = $last) {\n <div\n class=\"multi-segment-bar-chart__segment\"\n [class.multi-segment-bar-chart__segment--first]=\"first\"\n [class.multi-segment-bar-chart__segment--last]=\"last\"\n [style.background-color]=\"trackColor()\"\n >\n <div class=\"multi-segment-bar-chart__fill\" [style.width.%]=\"seg.fill\" [style.background-color]=\"bar.color\"></div>\n </div>\n }\n </div>\n\n <!-- Info Row -->\n <div class=\"multi-segment-bar-chart__row\">\n <div class=\"multi-segment-bar-chart__meta\">\n <span class=\"multi-segment-bar-chart__marker\" [style.background-color]=\"bar.color\" [attr.aria-hidden]=\"true\"></span>\n <span class=\"multi-segment-bar-chart__label\">{{ bar.label }}</span>\n </div>\n <span class=\"multi-segment-bar-chart__value\">{{ bar.value }}</span>\n </div>\n </div>\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-form-password-toggle',\n imports: [Icon, TranslateModule],\n templateUrl: './form-password-toggle.html',\n styleUrl: './form-password-toggle.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormPasswordToggle {\n readonly showPassword = input.required<boolean>();\n readonly togglePassword = output<void>();\n}\n","<button\n type=\"button\"\n class=\"password-toggle\"\n (click)=\"togglePassword.emit()\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'ARIA.TOGGLE_PASSWORD' | translate\"\n>\n @if (showPassword()) {\n <ncim-icon name=\"eyeOff\" [size]=\"20\" />\n } @else {\n <ncim-icon name=\"eye\" [size]=\"20\" />\n }\n</button>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n@Component({\n selector: 'ncim-support-contact-card',\n imports: [NcimButton],\n templateUrl: './support-contact-card.html',\n styleUrl: './support-contact-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupportContactCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly buttonLabel = input.required<string>();\n readonly visible = input<boolean>(true);\n\n readonly newTicket = output<void>();\n}\n","@if (visible()) {\n <div class=\"support-contact-card__inner\">\n <div class=\"support-contact-card__content\">\n <h2 class=\"support-contact-card__title\">{{ title() }}</h2>\n <p class=\"support-contact-card__description\">{{ description() }}</p>\n </div>\n <div class=\"support-contact-card__actions\">\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"true\" class=\"support-contact-card__button\" (click)=\"newTicket.emit()\">\n {{ buttonLabel() }}\n </ncim-button>\n </div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './ncim-sdk-ui-entry';\n"],"names":["NcimButton","ProgressBar","i1","PopupModalBase","Popup","Icon","FormError","FormLabel","i1.TabsInkbarRtlDirective","PrimeTabs","PrimeTabList","PrimeTab","i3","i2","i4","FormPasswordToggle","FormInput","QuickFilterBar","Skeleton","Sparkline","COPY_FEEDBACK_MS","ENVIRONMENT","PrimeNgTooltip","LocalizedDatePipe","AuthLayout","Spinner","CategoryTile","MAP_MARKERS","MapView","Breadcrumb","NavCard","VideoPlayer","ContentBlock","Card","SupportContactCard","FaqAccordion","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ncim-sdk-ui.mjs","sources":["../../../../libs/ui-components/src/lib/shared/atoms/icon/icon.ts","../../../../libs/ui-components/src/lib/shared/atoms/icon/icon.html","../../../../libs/ui-components/src/lib/shared/atoms/button/button.ts","../../../../libs/ui-components/src/lib/shared/atoms/button/button.html","../../../../libs/ui-components/src/lib/shared/atoms/progress-bar/progress-bar.ts","../../../../libs/ui-components/src/lib/shared/atoms/progress-bar/progress-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/complete-training/complete-training.ts","../../../../libs/ui-components/src/lib/shared/organisms/complete-training/complete-training.html","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.ts","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.html","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup.ts","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup.html","../../../../libs/ui-components/src/lib/shared/molecules/popup/popup-modal-base/popup-modal-base.ts","../../../../libs/ui-components/src/lib/shared/organisms/logout-modal/logout-modal.ts","../../../../libs/ui-components/src/lib/shared/organisms/logout-modal/logout-modal.html","../../../../libs/ui-components/src/lib/shared/templates/base-sidebar-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/dashboard-layout/dashboard-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/dashboard-layout/dashboard-layout.html","../../../../libs/ui-components/src/lib/shared/templates/sidebar/sidebar.constants.ts","../../../../libs/ui-components/src/lib/shared/atoms/copy-right/copy-right.ts","../../../../libs/ui-components/src/lib/shared/atoms/copy-right/copy-right.html","../../../../libs/ui-components/src/lib/shared/templates/auth-layout/auth-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/auth-layout/auth-layout.html","../../../../libs/ui-components/src/lib/shared/templates/settings-layout/settings-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/settings-layout/settings-layout.html","../../../../libs/ui-components/src/lib/shared/atoms/form-error/form-error.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-error/form-error.html","../../../../libs/ui-components/src/lib/shared/molecules/otp-input/otp-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/otp-input/otp-input.html","../../../../libs/ui-components/src/lib/shared/atoms/divider/divider.ts","../../../../libs/ui-components/src/lib/shared/atoms/divider/divider.html","../../../../libs/ui-components/src/lib/shared/molecules/stepper/stepper.ts","../../../../libs/ui-components/src/lib/shared/molecules/stepper/stepper.html","../../../../libs/ui-components/src/lib/shared/templates/register-layout/register-layout.ts","../../../../libs/ui-components/src/lib/shared/templates/register-layout/register-layout.html","../../../../libs/ui-components/src/lib/shared/atoms/form-label/form-label.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-label/form-label.html","../../../../libs/ui-components/src/lib/shared/molecules/option-group/option-group.ts","../../../../libs/ui-components/src/lib/shared/molecules/option-group/option-group.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-button/radio-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-button/radio-button.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/selection-button/selection-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/selection-button/selection-button.html","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-group.ts","../../../../libs/ui-components/src/lib/shared/atoms/radio-group/radio-group.html","../../../../libs/ui-components/src/lib/shared/atoms/circular-progress/circular-progress.ts","../../../../libs/ui-components/src/lib/shared/atoms/circular-progress/circular-progress.html","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs-inkbar-rtl.directive.ts","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs.ts","../../../../libs/ui-components/src/lib/shared/molecules/tabs/tabs.html","../../../../libs/ui-components/src/lib/shared/molecules/tab-panel/tab-panel.ts","../../../../libs/ui-components/src/lib/shared/molecules/tab-panel/tab-panel.html","../../../../libs/ui-components/src/lib/shared/atoms/form-password-toggle/form-password-toggle.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-password-toggle/form-password-toggle.html","../../../../libs/ui-components/src/lib/shared/molecules/form-select/form-select.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-select/form-select.html","../../../../libs/ui-components/src/lib/shared/molecules/form-multi-select/form-multi-select.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-multi-select/form-multi-select.html","../../../../libs/ui-components/src/lib/shared/molecules/form-text-field/form-text-field.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-text-field/form-text-field.html","../../../../libs/ui-components/src/lib/shared/molecules/form-date-picker/form-date-picker.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-date-picker/form-date-picker.html","../../../../libs/ui-components/src/lib/shared/atoms/form-checkbox-radio/form-checkbox-radio.ts","../../../../libs/ui-components/src/lib/shared/atoms/form-checkbox-radio/form-checkbox-radio.html","../../../../libs/ui-components/src/lib/shared/molecules/form-input/form-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/form-input/form-input.html","../../../../libs/ui-components/src/lib/shared/molecules/quick-filter-bar/quick-filter-bar.ts","../../../../libs/ui-components/src/lib/shared/molecules/quick-filter-bar/quick-filter-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/filter-form/filter-form.ts","../../../../libs/ui-components/src/lib/shared/organisms/filter-form/filter-form.html","../../../../libs/ui-components/src/lib/shared/molecules/package-feature-card/package-feature-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/package-feature-card/package-feature-card.html","../../../../libs/ui-components/src/lib/shared/molecules/bullet-list/bullet-list.ts","../../../../libs/ui-components/src/lib/shared/molecules/bullet-list/bullet-list.html","../../../../libs/ui-components/src/lib/shared/atoms/checkbox/checkbox.ts","../../../../libs/ui-components/src/lib/shared/atoms/checkbox/checkbox.html","../../../../libs/ui-components/src/lib/shared/atoms/skeleton/skeleton.ts","../../../../libs/ui-components/src/lib/shared/atoms/skeleton/skeleton.html","../../../../libs/ui-components/src/lib/shared/organisms/cards-statistics/cards-statistics.ts","../../../../libs/ui-components/src/lib/shared/organisms/cards-statistics/cards-statistics.html","../../../../libs/ui-components/src/lib/shared/molecules/captcha-input/captcha-input.ts","../../../../libs/ui-components/src/lib/shared/molecules/captcha-input/captcha-input.html","../../../../libs/ui-components/src/lib/shared/molecules/entity-type-card/entity-type-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/entity-type-card/entity-type-card.html","../../../../libs/ui-components/src/lib/shared/molecules/entity-info-card/entity-info-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/entity-info-card/entity-info-card.html","../../../../libs/ui-components/src/lib/shared/molecules/summary-card/summary-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/summary-card/summary-card.html","../../../../libs/ui-components/src/lib/shared/molecules/license-status-card/license-status-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/license-status-card/license-status-card.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/sparkline/sparkline.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/sparkline/sparkline.html","../../../../libs/ui-components/src/lib/shared/molecules/stats-analytics-card/stats-analytics-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/stats-analytics-card/stats-analytics-card.html","../../../../libs/ui-components/src/lib/shared/organisms/ai-chating/ai-chating.ts","../../../../libs/ui-components/src/lib/shared/organisms/ai-chating/ai-chating.html","../../../../libs/ui-components/src/lib/shared/molecules/clipboard-button/clipboard-button.ts","../../../../libs/ui-components/src/lib/shared/molecules/clipboard-button/clipboard-button.html","../../../../libs/ui-components/src/lib/shared/organisms/contested-violation/contested-violation.ts","../../../../libs/ui-components/src/lib/shared/organisms/contested-violation/contested-violation.html","../../../../libs/ui-components/src/lib/shared/atoms/range-bar/range-bar.ts","../../../../libs/ui-components/src/lib/shared/atoms/range-bar/range-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/searchable-users-list/searchable-users-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/searchable-users-list/searchable-users-list.html","../../../../libs/ui-components/src/lib/shared/organisms/basic-card/basic-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/basic-card/basic-card.html","../../../../libs/ui-components/src/lib/shared/organisms/request-header/request-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/request-header/request-header.html","../../../../libs/ui-components/src/lib/shared/organisms/request-details-card/request-details-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/request-details-card/request-details-card.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-header/violation-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-header/violation-header.html","../../../../libs/ui-components/src/lib/shared/organisms/attachments/attachments.ts","../../../../libs/ui-components/src/lib/shared/organisms/attachments/attachments.html","../../../../libs/ui-components/src/lib/shared/organisms/criteria-section/criteria-section.ts","../../../../libs/ui-components/src/lib/shared/organisms/criteria-section/criteria-section.html","../../../../libs/ui-components/src/lib/shared/organisms/violation.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-info-card/violation-info-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-info-card/violation-info-card.html","../../../../libs/ui-components/src/lib/shared/atoms/tooltip/tooltip.ts","../../../../libs/ui-components/src/lib/shared/atoms/tooltip/tooltip.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-summary-card/violation-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-summary-card/violation-summary-card.html","../../../../libs/ui-components/src/lib/shared/atoms/penalty-badge/penalty-badge.ts","../../../../libs/ui-components/src/lib/shared/atoms/penalty-badge/penalty-badge.html","../../../../libs/ui-components/src/lib/shared/atoms/dga-tag/dga-tag.ts","../../../../libs/ui-components/src/lib/shared/atoms/dga-tag/dga-tag.html","../../../../libs/ui-components/src/lib/shared/organisms/violation-timeline/violation-timeline.ts","../../../../libs/ui-components/src/lib/shared/organisms/violation-timeline/violation-timeline.html","../../../../libs/ui-components/src/lib/shared/organisms/visit-details/visit-details.ts","../../../../libs/ui-components/src/lib/shared/organisms/visit-details/visit-details.html","../../../../libs/ui-components/src/lib/shared/organisms/inspection-summary-card/inspection-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/inspection-summary-card/inspection-summary-card.html","../../../../libs/ui-components/src/lib/shared/molecules/icon-card/icon-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/icon-card/icon-card.html","../../../../libs/ui-components/src/lib/shared/atoms/spinner/spinner.ts","../../../../libs/ui-components/src/lib/shared/atoms/spinner/spinner.html","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-error-display/sso-error-display.ts","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-error-display/sso-error-display.html","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-callback-view/sso-callback-view.ts","../../../../libs/ui-components/src/lib/shared/organisms/sso/sso-callback-view/sso-callback-view.html","../../../../libs/ui-components/src/lib/shared/organisms/icons-document/icons-document.ts","../../../../libs/ui-components/src/lib/shared/organisms/icons-document/icons-document.html","../../../../libs/ui-components/src/lib/shared/molecules/category-tile/category-tile.ts","../../../../libs/ui-components/src/lib/shared/molecules/category-tile/category-tile.html","../../../../libs/ui-components/src/lib/shared/organisms/entity-summary-card/entity-summary-card.ts","../../../../libs/ui-components/src/lib/shared/organisms/entity-summary-card/entity-summary-card.html","../../../../libs/ui-components/src/lib/shared/organisms/create-category-tile/create-category-tile.ts","../../../../libs/ui-components/src/lib/shared/organisms/create-category-tile/create-category-tile.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart-legend/chart-legend.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart-legend/chart-legend.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/chart.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/line-chart/line-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/line-chart/line-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/area-chart/area-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/area-chart/area-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/donut-chart/donut-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/donut-chart/donut-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/pie-chart/pie-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/pie-chart/pie-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/gauge-chart/gauge-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/gauge-chart/gauge-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/scale-indicator/scale-indicator.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/scale-indicator/scale-indicator.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/map-view/map-view.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/map-view/map-view.html","../../../../libs/ui-components/src/lib/models/dashboard.models.ts","../../../../libs/ui-components/src/lib/shared/organisms/store-locations/store-locations.ts","../../../../libs/ui-components/src/lib/shared/organisms/store-locations/store-locations.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/bar-chart/bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/bar-chart/bar-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-gauge/multi-segment-gauge.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-gauge/multi-segment-gauge.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-gauge/stat-gauge.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-gauge/stat-gauge.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/ring-chart/ring-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/ring-chart/ring-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stacked-distribution-chart/stacked-distribution-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stacked-distribution-chart/stacked-distribution-chart.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-ring/stat-ring.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/stat-ring/stat-ring.html","../../../../libs/ui-components/src/lib/shared/molecules/breadcrumb/breadcrumb.ts","../../../../libs/ui-components/src/lib/shared/molecules/breadcrumb/breadcrumb.html","../../../../libs/ui-components/src/lib/shared/organisms/page-header/page-header.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-header/page-header.html","../../../../libs/ui-components/src/lib/shared/molecules/card/card.ts","../../../../libs/ui-components/src/lib/shared/molecules/card/card.html","../../../../libs/ui-components/src/lib/shared/molecules/accordion/accordion.ts","../../../../libs/ui-components/src/lib/shared/molecules/accordion/accordion.html","../../../../libs/ui-components/src/lib/shared/molecules/progress-card/progress-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/progress-card/progress-card.html","../../../../libs/ui-components/src/lib/shared/molecules/nav-card/nav-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/nav-card/nav-card.html","../../../../libs/ui-components/src/lib/shared/molecules/content-block/content-block.ts","../../../../libs/ui-components/src/lib/shared/molecules/content-block/content-block.html","../../../../libs/ui-components/src/lib/shared/organisms/related-cards-list/related-cards-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/related-cards-list/related-cards-list.html","../../../../libs/ui-components/src/lib/shared/organisms/nav-cards-list/nav-cards-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/nav-cards-list/nav-cards-list.html","../../../../libs/ui-components/src/lib/shared/molecules/video-player/video-player.ts","../../../../libs/ui-components/src/lib/shared/molecules/video-player/video-player.html","../../../../libs/ui-components/src/lib/shared/organisms/feedback-section/feedback-section.ts","../../../../libs/ui-components/src/lib/shared/organisms/feedback-section/feedback-section.html","../../../../libs/ui-components/src/lib/shared/organisms/article-detail/article-detail.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-detail/article-detail.html","../../../../libs/ui-components/src/lib/shared/organisms/article-layout/article-layout.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-layout/article-layout.html","../../../../libs/ui-components/src/lib/shared/organisms/resources-list/resources-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/resources-list/resources-list.html","../../../../libs/ui-components/src/lib/shared/organisms/article-sidebar/article-sidebar.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-sidebar/article-sidebar.html","../../../../libs/ui-components/src/lib/shared/organisms/empty-state/empty-state.ts","../../../../libs/ui-components/src/lib/shared/organisms/empty-state/empty-state.html","../../../../libs/ui-components/src/lib/shared/organisms/cards-list-page/cards-list-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/cards-list-page/cards-list-page.html","../../../../libs/ui-components/src/lib/shared/molecules/support-contact-card/support-contact-card.ts","../../../../libs/ui-components/src/lib/shared/molecules/support-contact-card/support-contact-card.html","../../../../libs/ui-components/src/lib/shared/organisms/article-page/article-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/article-page/article-page.html","../../../../libs/ui-components/src/lib/shared/molecules/info-row/info-row.ts","../../../../libs/ui-components/src/lib/shared/molecules/info-row/info-row.html","../../../../libs/ui-components/src/lib/shared/organisms/page-not-found/page-not-found.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-not-found/page-not-found.html","../../../../libs/ui-components/src/lib/shared/organisms/page-error/page-error.ts","../../../../libs/ui-components/src/lib/shared/organisms/page-error/page-error.html","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/enums/columns.enum.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/utils/nested-path.utils.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/pipes/nested-value.pipe.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/pipes/status-config.pipe.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/directives/custom-cols.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/grid-table.ts","../../../../libs/ui-components/src/lib/shared/organisms/grid-table/grid-table.html","../../../../libs/ui-components/src/lib/shared/organisms/notification-list/notification-list.ts","../../../../libs/ui-components/src/lib/shared/organisms/notification-list/notification-list.html","../../../../libs/ui-components/src/lib/shared/organisms/save-filter-popup/save-filter-popup.ts","../../../../libs/ui-components/src/lib/shared/organisms/save-filter-popup/save-filter-popup.html","../../../../libs/ui-components/src/lib/shared/organisms/selectable-list-with-search/selectable-list-with-search.ts","../../../../libs/ui-components/src/lib/shared/organisms/selectable-list-with-search/selectable-list-with-search.html","../../../../libs/ui-components/src/lib/shared/molecules/global-loading-bar/global-loading-bar.ts","../../../../libs/ui-components/src/lib/shared/molecules/global-loading-bar/global-loading-bar.html","../../../../libs/ui-components/src/lib/shared/organisms/image-picker/image-picker.ts","../../../../libs/ui-components/src/lib/shared/organisms/image-picker/image-picker.html","../../../../libs/ui-components/src/lib/shared/atoms/button-with-selection-count/button-with-selection-count.ts","../../../../libs/ui-components/src/lib/shared/atoms/button-with-selection-count/button-with-selection-count.html","../../../../libs/ui-components/src/lib/shared/organisms/profile-hero/profile-hero.ts","../../../../libs/ui-components/src/lib/shared/organisms/profile-hero/profile-hero.html","../../../../libs/ui-components/src/lib/shared/organisms/file-upload/file-upload.ts","../../../../libs/ui-components/src/lib/shared/organisms/file-upload/file-upload.html","../../../../libs/ui-components/src/lib/shared/molecules/copy-number/copy-number.ts","../../../../libs/ui-components/src/lib/shared/molecules/copy-number/copy-number.html","../../../../libs/ui-components/src/lib/shared/atoms/export-pdf-button/export-pdf-button.ts","../../../../libs/ui-components/src/lib/shared/atoms/export-pdf-button/export-pdf-button.html","../../../../libs/ui-components/src/lib/shared/organisms/export-pdf-container/export-pdf-container.ts","../../../../libs/ui-components/src/lib/shared/organisms/export-pdf-container/export-pdf-container.html","../../../../libs/ui-components/src/lib/shared/organisms/status-page/status-page.ts","../../../../libs/ui-components/src/lib/shared/organisms/status-page/status-page.html","../../../../libs/ui-components/src/lib/shared/molecules/api-error-state/api-error-state.ts","../../../../libs/ui-components/src/lib/shared/molecules/api-error-state/api-error-state.html","../../../../libs/ui-components/src/lib/shared/molecules/stamp/stamp.ts","../../../../libs/ui-components/src/lib/shared/molecules/stamp/stamp.html","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-bar-chart/multi-segment-bar-chart.ts","../../../../libs/ui-components/src/lib/shared/organisms/charts/multi-segment-bar-chart/multi-segment-bar-chart.html","../../../../libs/ncim-sdk-ui.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\n\n@Component({\n selector: 'ncim-icon',\n templateUrl: './icon.html',\n styleUrl: './icon.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AngularSvgIconModule],\n host: {\n '[style.width.px]': 'size()',\n '[style.height.px]': 'height() || size()',\n },\n})\nexport class Icon {\n name = input<string>('');\n size = input<number>(24);\n height = input<number | null>();\n\n iconSrc = computed(() => this.getIconSrc());\n\n private getIconSrc(): string {\n if (!this.name()) {\n return '';\n }\n return `assets/ncim-icons/${this.name()}.svg`;\n }\n}\n","@if (iconSrc()) {\n <svg-icon class=\"ncim-icon\" [class]=\"'ncim-icon ' + (name() || '')\" [src]=\"iconSrc()\"></svg-icon>\n}\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-button',\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon],\n})\nexport class NcimButton {\n readonly variant = input<'primary' | 'black' | 'neutral' | 'secondary' | 'transparent' | 'outline' | 'link'>(\n 'primary'\n );\n\n readonly type = input<'button' | 'submit'>('button');\n readonly fullWidth = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly size = input<'compact' | 'mini' | 'extra-small' | 'small-icon-only' | 'small' | 'medium' | 'large'>(\n 'medium'\n );\n\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('start');\n readonly iconSize = input<number>(20);\n}\n","<button\n class=\"btn\"\n [class.btn--primary]=\"variant() === 'primary'\"\n [class.btn--secondary]=\"variant() === 'secondary'\"\n [class.btn--black]=\"variant() === 'black'\"\n [class.btn--neutral]=\"variant() === 'neutral'\"\n [class.btn--transparent]=\"variant() === 'transparent'\"\n [class.btn--outline]=\"variant() === 'outline'\"\n [class.btn--link]=\"variant() === 'link'\"\n [class.btn--full-width]=\"fullWidth()\"\n [class.btn--loading]=\"loading()\"\n [class.btn--compact]=\"size() === 'compact'\"\n [class.btn--mini]=\"size() === 'mini'\"\n [class.btn--extra-small]=\"size() === 'extra-small'\"\n [class.btn--small-icon-only]=\"size() === 'small-icon-only'\"\n [class.btn--small]=\"size() === 'small'\"\n [class.btn--medium]=\"size() === 'medium'\"\n [class.btn--large]=\"size() === 'large'\"\n [type]=\"type()\"\n [disabled]=\"disabled() || loading()\"\n>\n @if (loading()) {\n <span class=\"btn__spinner\"></span>\n }\n @if (icon() && iconPosition() === 'start') {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n <ng-content></ng-content>\n @if (icon() && iconPosition() === 'end') {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n</button>\n","import { Component, input, computed, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { LanguageService } from '@libs/core/services';\n\n@Component({\n selector: 'ncim-progress-bar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBar {\n private readonly languageService = inject(LanguageService);\n\n /** Matches app language: Arabic → rtl (fill from the right), English → ltr (fill from the left). */\n readonly barDir = computed(() => (this.languageService.isRtl() ? 'rtl' : 'ltr'));\n\n readonly progress = input<number>(0);\n readonly max = input<number>(100);\n readonly color = input<string>('var(--color-primary)');\n readonly showLabel = input<boolean>(false);\n /** Rounded knob at the leading edge of the fill (design system default: on). */\n readonly showThumb = input<boolean>(true);\n\n readonly percentage = computed(() => {\n const maxValue = this.max();\n return maxValue > 0 ? Math.min(100, (this.progress() / maxValue) * 100) : 0;\n });\n\n readonly roundedPercentage = computed(() => Math.round(this.percentage()));\n}\n","<div\n class=\"progress-bar\"\n [attr.dir]=\"barDir()\"\n [attr.aria-valuenow]=\"progress()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max()\"\n role=\"progressbar\"\n>\n <div class=\"progress-bar__track\">\n <div class=\"progress-bar__fill\" [style.width.%]=\"percentage()\" [style.background]=\"color()\"></div>\n </div>\n @if (showThumb()) {\n <span\n class=\"progress-bar__thumb\"\n [style.--progress-bar-thumb-position]=\"percentage() + '%'\"\n [style.background]=\"color()\"\n aria-hidden=\"true\"\n ></span>\n }\n @if (showLabel()) {\n <span class=\"progress-bar__label\">{{ roundedPercentage() }}%</span>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { NcimButton } from '../../atoms/button/button';\nimport { ProgressBar } from '../../atoms/progress-bar/progress-bar';\n\n@Component({\n selector: 'ncim-complete-training',\n templateUrl: './complete-training.html',\n styleUrl: './complete-training.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, ProgressBar],\n})\nexport class CompleteTraining {\n readonly illustration = input<string>('');\n readonly title = input<string>('');\n readonly description = input<string>('');\n readonly progress = input<number>(0);\n readonly buttonLabel = input<string>('');\n\n readonly nextStep = output<void>();\n}\n","<div class=\"complete-training\">\n @if (illustration()) {\n <div class=\"complete-training__illustration\">\n <img [src]=\"illustration()\" alt=\"\" aria-hidden=\"true\" class=\"complete-training__img\" />\n </div>\n }\n\n <div class=\"complete-training__content\">\n @if (title()) {\n <h3 class=\"complete-training__title\">{{ title() }}</h3>\n }\n @if (description()) {\n <p class=\"complete-training__description\">{{ description() }}</p>\n }\n </div>\n\n <div class=\"complete-training__progress-wrapper\">\n <ncim-progress-bar [showThumb]=\"false\" [progress]=\"progress()\" [max]=\"100\" />\n </div>\n\n <ncim-button variant=\"black\" size=\"mini\" [fullWidth]=\"true\" (click)=\"nextStep.emit()\" class=\"complete-training__button\">\n {{ buttonLabel() }}\n </ncim-button>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n DestroyRef,\n effect,\n input,\n output,\n signal,\n model,\n inject,\n} from '@angular/core';\nimport { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavSection, SidebarBrand } from './sidebar.models';\nimport { Icon } from '../../atoms/icon/icon';\nimport { CompleteTraining } from '../../organisms/complete-training/complete-training';\n\n@Component({\n selector: 'ncim-sidebar',\n imports: [RouterLink, RouterLinkActive, TranslateModule, Icon, CompleteTraining],\n templateUrl: './sidebar.html',\n styleUrl: './sidebar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Sidebar {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n\n // Inputs\n brand = input<SidebarBrand>({ title: 'SIDEBAR.BRAND' });\n sections = input<NavSection[]>([]);\n notificationCount = input<number>(99);\n userAvatar = input<string | null>(null);\n showCompleteTraining = input<boolean>(true);\n showAppsMenu = input<boolean>(true);\n activeActionId = input<string | null>(null);\n\n // Models\n isOpen = model<boolean>(false);\n panelOpen = model<boolean>(false);\n\n // Outputs\n footerActionClick = output<string>();\n menuToggle = output<void>();\n\n // State\n protected readonly expandedItems = signal<Set<string>>(new Set());\n\n constructor() {\n const syncExpandedFromRoute = (): void => {\n const sections = this.sections();\n const url = this.router.url;\n const toExpand = new Set<string>();\n for (const section of sections) {\n for (const item of section.items) {\n if (item.children?.some(child => url.startsWith(child.route))) {\n toExpand.add(item.label);\n }\n }\n }\n if (toExpand.size > 0) {\n this.expandedItems.update(() => toExpand);\n }\n };\n\n effect(() => {\n this.sections();\n syncExpandedFromRoute();\n });\n\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => syncExpandedFromRoute());\n\n syncExpandedFromRoute();\n }\n\n protected toggleExpand(label: string): void {\n this.expandedItems.update(set => {\n const newSet = new Set(set);\n if (newSet.has(label)) {\n newSet.delete(label);\n } else {\n newSet.add(label);\n }\n return newSet;\n });\n }\n\n protected isExpanded(label: string): boolean {\n return this.expandedItems().has(label);\n }\n\n protected onFooterAction(actionId: string): void {\n this.footerActionClick.emit(actionId);\n }\n\n protected close(): void {\n this.isOpen.set(false);\n }\n}\n","<!-- Overlay backdrop (mobile only) -->\n<button\n class=\"sidebar-overlay\"\n [class.sidebar-overlay--visible]=\"isOpen()\"\n (click)=\"close()\"\n (keydown.escape)=\"close()\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'ARIA.CLOSE_SIDEBAR' | translate\"\n></button>\n\n<aside class=\"sidebar\" [class.sidebar--open]=\"isOpen()\" [class.sidebar--panel-hidden]=\"!panelOpen()\">\n <!-- Icon strip (right side) -->\n <div class=\"sidebar__strip\">\n <div class=\"sidebar__strip-top\">\n @if (showAppsMenu()) {\n <button class=\"sidebar__menu-toggle\" [attr.aria-label]=\"'ARIA.TOGGLE_MENU' | translate\" (click)=\"menuToggle.emit()\">\n <ncim-icon name=\"menu\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'layers'\"\n [attr.aria-label]=\"'ARIA.LAYERS' | translate\"\n (click)=\"onFooterAction('layers')\"\n >\n <ncim-icon name=\"layers\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'dashboard'\"\n [attr.aria-label]=\"'ARIA.DASHBOARD' | translate\"\n (click)=\"onFooterAction('dashboard')\"\n >\n <ncim-icon name=\"widget\" [size]=\"24\" />\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'documents'\"\n [attr.aria-label]=\"'ARIA.DOCUMENTS' | translate\"\n (click)=\"onFooterAction('documents')\"\n >\n <ncim-icon name=\"note-stack\" [size]=\"24\" />\n </button>\n\n <div class=\"sidebar__strip-separator\"></div>\n } @else {\n <button class=\"sidebar__ncim-logo\" (click)=\"onFooterAction('layers')\">\n <img src=\"core/assets/images/ncim-logo.svg\" alt=\"ncim-logo\" />\n </button>\n }\n </div>\n\n <div class=\"sidebar__strip-actions\">\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--notification\"\n [attr.aria-label]=\"'ARIA.NOTIFICATIONS' | translate\"\n (click)=\"onFooterAction('notifications')\"\n >\n <ncim-icon name=\"bell\" [size]=\"24\" />\n @if (notificationCount() > 0) {\n <span class=\"sidebar__badge\">{{ notificationCount() > 99 ? '99' : notificationCount() }}</span>\n }\n </button>\n\n <button\n class=\"sidebar__strip-btn\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'settings'\"\n [attr.aria-label]=\"'ARIA.SETTINGS' | translate\"\n (click)=\"onFooterAction('settings')\"\n >\n <ncim-icon name=\"cog\" [size]=\"24\" />\n </button>\n\n @if (userAvatar(); as avatar) {\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--avatar\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'profile'\"\n [attr.aria-label]=\"'ARIA.PROFILE' | translate\"\n (click)=\"onFooterAction('profile')\"\n >\n <img class=\"sidebar__avatar\" [src]=\"avatar\" alt=\"User avatar\" />\n </button>\n } @else {\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--avatar\"\n [class.sidebar__strip-btn--active]=\"activeActionId() === 'profile'\"\n [attr.aria-label]=\"'ARIA.PROFILE' | translate\"\n (click)=\"onFooterAction('profile')\"\n >\n <ncim-icon name=\"user\" [size]=\"24\" />\n </button>\n }\n\n <button\n class=\"sidebar__strip-btn sidebar__strip-btn--logout\"\n [attr.aria-label]=\"'ARIA.LOGOUT' | translate\"\n (click)=\"onFooterAction('logout')\"\n >\n <ncim-icon name=\"logout\" [size]=\"24\" />\n </button>\n </div>\n </div>\n\n <!-- Navigation panel (left side) -->\n <div class=\"sidebar__panel\">\n <nav class=\"sidebar__nav\">\n <div class=\"sidebar__header\">\n <h2 class=\"sidebar__title\">{{ brand().title | translate }}</h2>\n <h2 class=\"sidebar__role\">{{ brand().role ?? 'PROFILE.ROLE' | translate }}</h2>\n </div>\n\n @for (section of sections(); track section.title) {\n <div class=\"sidebar__section\">\n <span class=\"sidebar__section-title\">{{ section.title | translate }}</span>\n\n <ul class=\"sidebar__menu\">\n @for (item of section.items; track item.label) {\n <li class=\"sidebar__menu-item\" [class.sidebar__menu-item--expanded]=\"item.children && isExpanded(item.label)\">\n @if (item.children) {\n <button class=\"sidebar__link\" [class.sidebar__link--expanded]=\"isExpanded(item.label)\" (click)=\"toggleExpand(item.label)\">\n <span class=\"sidebar__icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\" />\n </span>\n <span class=\"sidebar__label\">{{ item.label | translate }}</span>\n <ncim-icon\n class=\"sidebar__chevron\"\n [class.sidebar__chevron--open]=\"isExpanded(item.label)\"\n name=\"chevronDown\"\n [size]=\"16\"\n />\n </button>\n\n @if (isExpanded(item.label)) {\n <ul class=\"sidebar__submenu\">\n @for (child of item.children; track child.route) {\n <li class=\"sidebar__submenu-item\">\n <a\n class=\"sidebar__submenu-link\"\n [routerLink]=\"child.route\"\n routerLinkActive=\"sidebar__submenu-link--active\"\n (click)=\"close()\"\n >\n {{ child.label | translate }}\n </a>\n </li>\n }\n </ul>\n }\n } @else {\n <a class=\"sidebar__link\" [routerLink]=\"item.route\" routerLinkActive=\"sidebar__link--active\" (click)=\"close()\">\n <span class=\"sidebar__icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\" />\n </span>\n <span class=\"sidebar__label\">{{ item.label | translate }}</span>\n @if (item.badge) {\n <span class=\"sidebar__item-badge\">{{ item.badge }} {{ 'SIDEBAR.ITEMS.VIOLATIONS_BADGE' | translate }}</span>\n }\n </a>\n }\n </li>\n }\n </ul>\n </div>\n }\n </nav>\n\n @if (showCompleteTraining()) {\n <div class=\"sidebar__complete-training\">\n <ncim-complete-training\n illustration=\"core/assets/images/complete-training.svg\"\n [title]=\"'COMPLETE_TRAINING.TITLE' | translate\"\n [description]=\"'COMPLETE_TRAINING.DESCRIPTION' | translate\"\n [progress]=\"65\"\n [buttonLabel]=\"'COMPLETE_TRAINING.BUTTON_LABEL' | translate\"\n />\n </div>\n }\n </div>\n</aside>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { DialogModule } from 'primeng/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ncim-popup',\n templateUrl: './popup.html',\n styleUrl: './popup.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon, DialogModule, TranslatePipe, CommonModule],\n})\nexport class Popup {\n readonly open = input<boolean>(false);\n readonly title = input<string>('');\n readonly footerBorder = input<boolean>(false);\n readonly footerStyle = input<boolean>(true);\n readonly showCloseButton = input<boolean>(true);\n readonly showBackButton = input<boolean>(false);\n readonly largeHeader = input<boolean>(false);\n readonly closeOnBackdropClick = input<boolean>(true);\n readonly size = input<'small' | 'medium' | 'large' | 'extra-large'>('medium');\n readonly width = input<string>('');\n\n readonly dismissed = output<void>();\n readonly backClicked = output<void>();\n\n protected readonly titleId = `ncim-popup-title-${Math.random().toString(36).slice(2, 11)}`;\n\n protected readonly dialogStyle = computed(() => {\n const maxWidthMap: Record<string, string> = {\n small: '400px',\n medium: '560px',\n large: '720px',\n 'extra-large': '940px',\n };\n return { width: '100%', maxWidth: maxWidthMap[this.size()] };\n });\n\n /**\n * Guard against double-emission: when the close button is clicked,\n * `close()` emits `dismissed` directly. PrimeNG then hides the dialog\n * and fires `onHide` — we skip that second emission.\n */\n private _closedByButton = false;\n\n /** Called by the × button in the header. */\n close(): void {\n this._closedByButton = true;\n this.dismissed.emit();\n }\n\n /**\n * Called by PrimeNG when the dialog hides — covers dismissableMask\n * (backdrop click) and ESC key. The close-button path is guarded above.\n */\n onHide(): void {\n if (!this._closedByButton) {\n this.dismissed.emit();\n }\n this._closedByButton = false;\n }\n\n back(): void {\n this.backClicked.emit();\n }\n}\n","<p-dialog\n [visible]=\"open()\"\n (onHide)=\"onHide()\"\n [modal]=\"true\"\n [dismissableMask]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnBackdropClick()\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [closable]=\"false\"\n [showHeader]=\"false\"\n [style]=\"dialogStyle()\"\n styleClass=\"ncim-popup-dialog\"\n>\n <div class=\"popup__header\" [class.popup__header--large]=\"largeHeader()\">\n <div class=\"popup__header-main\">\n @if (showBackButton()) {\n <button type=\"button\" class=\"popup__header-button back\" (click)=\"back()\" [attr.aria-label]=\"'COMMON.BACK' | translate\">\n <ncim-icon name=\"chevronLeft\" [size]=\"20\" />\n </button>\n }\n @if (title()) {\n <div class=\"popup-title__area\">\n <h2 [id]=\"titleId\" class=\"popup__title\">{{ title() }}</h2>\n <ng-content select=\"[subTitle]\"></ng-content>\n </div>\n }\n </div>\n @if (showCloseButton()) {\n <button type=\"button\" class=\"popup__header-button\" (click)=\"close()\" [attr.aria-label]=\"'COMMON.CLOSE' | translate\">\n <ncim-icon name=\"close\" [size]=\"20\" />\n </button>\n }\n </div>\n\n <div class=\"popup__body\" [attr.aria-labelledby]=\"title() ? titleId : null\">\n <ng-content></ng-content>\n </div>\n\n <div [ngClass]=\"{ popup__footer: footerStyle() }\" [class.popup__footer--border]=\"footerBorder()\">\n <ng-content select=\"[popupFooter]\"></ng-content>\n </div>\n</p-dialog>\n","import {\n Component,\n output,\n signal,\n viewChild,\n AfterViewInit,\n DestroyRef,\n inject,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Popup } from '../popup';\n\n@Component({ changeDetection: ChangeDetectionStrategy.OnPush, template: '' })\nexport abstract class PopupModalBase<T = unknown> implements AfterViewInit {\n protected readonly destroyRef = inject(DestroyRef);\n readonly modalData = signal<T | null>(null);\n\n readonly isOpen = signal(false);\n readonly popup = viewChild.required(Popup);\n readonly dismissed = output<void>();\n\n openModal(data?: T): void {\n if (data != null) {\n this.modalData.set(data);\n }\n this.isOpen.set(true);\n }\n\n closeModal(): void {\n this.isOpen.set(false);\n }\n\n ngAfterViewInit(): void {\n outputToObservable(this.popup().dismissed)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.closeModal();\n this.dismissed.emit();\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { NcimButton } from '../../atoms/button/button';\nimport { Icon } from '../../atoms/icon/icon';\nimport { Popup } from '../../molecules/popup/popup';\nimport { PopupModalBase } from '../../molecules/popup/popup-modal-base/popup-modal-base';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-logout-modal',\n templateUrl: './logout-modal.html',\n styleUrl: './logout-modal.scss',\n imports: [Popup, NcimButton, Icon, TranslatePipe],\n})\nexport class LogoutModal extends PopupModalBase {\n readonly confirmed = output<void>();\n\n protected onConfirm(): void {\n this.confirmed.emit();\n this.closeModal();\n }\n}\n","<ncim-popup [open]=\"isOpen()\" size=\"small\" width=\"520px\">\n <div class=\"logout-modal\">\n <div class=\"logout-modal__illustration\" aria-hidden=\"true\">\n <ncim-icon name=\"logout-popup\" [size]=\"122\" />\n </div>\n\n <h2 class=\"logout-modal__title\">{{ 'LOGOUT_MODAL.TITLE' | translate }}</h2>\n <p class=\"logout-modal__description\">{{ 'LOGOUT_MODAL.DESCRIPTION' | translate }}</p>\n </div>\n\n <div popupFooter class=\"logout-modal__actions\">\n <ncim-button variant=\"black\" [fullWidth]=\"true\" (click)=\"onConfirm()\">\n {{ 'LOGOUT_MODAL.CONFIRM' | translate }}\n </ncim-button>\n <ncim-button variant=\"neutral\" [fullWidth]=\"true\" (click)=\"closeModal()\">\n {{ 'LOGOUT_MODAL.BACK' | translate }}\n </ncim-button>\n </div>\n</ncim-popup>\n","import { signal } from '@angular/core';\n\n/** Shared sidebar toggle and footer action logic for layouts. */\nexport abstract class BaseSidebarLayout {\n readonly sidebarOpen = signal(false);\n\n toggleSidebar(): void {\n this.sidebarOpen.update(open => !open);\n }\n\n onFooterAction(_actionId: string): void {\n // Override in subclass to handle footer actions (logout, settings, etc.)\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterOutlet } from '@angular/router';\nimport { filter, map } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ROUTE_PATHS } from '@libs/core/constants';\nimport { Sidebar } from '../sidebar/sidebar';\nimport { Icon } from '../../atoms/icon/icon';\nimport { LogoutModal } from '../../organisms/logout-modal/logout-modal';\nimport { BaseSidebarLayout } from '../base-sidebar-layout';\nimport { NavSection, SidebarBrand } from '../sidebar/sidebar.models';\n\ntype MenuKey = 'main' | 'settings' | null;\n\n/** Main app shell with sidebar and router outlet. Dumb/presentational — receives all config via inputs. */\n@Component({\n selector: 'ncim-dashboard-layout',\n imports: [RouterOutlet, Sidebar, Icon, TranslateModule, LogoutModal],\n templateUrl: './dashboard-layout.html',\n styleUrl: './dashboard-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DashboardLayout extends BaseSidebarLayout {\n // Inputs\n readonly sectionsMap = input<Record<string, NavSection[]>>({});\n readonly brand = input<SidebarBrand>({ title: 'SIDEBAR.BRAND' });\n readonly userAvatar = input<string | null>(null);\n readonly notificationCount = input<number>(0);\n readonly showCompleteTraining = input<boolean>(true);\n readonly showAppsMenu = input<boolean>(true);\n\n // Outputs — parent (smart container) handles navigation and logout logic\n readonly footerNavigate = output<string>();\n readonly logoutConfirmed = output<void>();\n\n private readonly router = inject(Router);\n protected readonly logoutModal = viewChild.required(LogoutModal);\n\n private readonly currentUrl = toSignal(\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => (event as NavigationEnd).urlAfterRedirects)\n ),\n { initialValue: this.router.url }\n );\n\n private readonly activeMenuKey = signal<MenuKey>('main');\n\n constructor() {\n super();\n this.router.events\n .pipe(\n filter(event => event instanceof NavigationEnd),\n map(event => (event as NavigationEnd).urlAfterRedirects)\n )\n .subscribe(url => {\n if (url.includes(ROUTE_PATHS.SETTINGS)) {\n this.activeMenuKey.set('settings');\n } else {\n this.activeMenuKey.set('main');\n }\n });\n\n // Handle initial state\n const currentUrl = this.router.url;\n if (currentUrl.includes(ROUTE_PATHS.SETTINGS)) {\n this.activeMenuKey.set('settings');\n }\n }\n\n private readonly lastOpenKey = signal<'main' | 'settings'>('main');\n\n readonly isPanelOpen = computed(() => this.activeMenuKey() !== null);\n\n readonly panelSections = computed(() => {\n const key = this.activeMenuKey();\n return key ? (this.sectionsMap()[key] ?? []) : [];\n });\n\n readonly activeActionId = computed(() => {\n const url = this.currentUrl();\n if (url.includes(ROUTE_PATHS.SETTINGS)) {\n return 'settings';\n }\n if (url.includes(ROUTE_PATHS.SETTINGS_PROFILE)) {\n return 'profile';\n }\n return 'layers';\n });\n\n override onFooterAction(actionId: string): void {\n if (actionId === 'logout') {\n this.logoutModal().openModal();\n } else if (actionId === 'layers' || actionId === 'dashboard') {\n this.lastOpenKey.set('main');\n this.activeMenuKey.set('main');\n this.router.navigateByUrl(ROUTE_PATHS.DASHBOARD_HOME);\n } else if (actionId === 'settings') {\n this.lastOpenKey.set('settings');\n this.activeMenuKey.set('settings');\n this.router.navigateByUrl(ROUTE_PATHS.SETTINGS_USERS_AND_ROLES);\n } else {\n // Navigation actions (profile, dashboard, documents, notifications, etc.)\n this.footerNavigate.emit(actionId);\n }\n }\n\n protected togglePanel(): void {\n const cur = this.activeMenuKey();\n if (cur) {\n this.lastOpenKey.set(cur);\n this.activeMenuKey.set(null);\n } else {\n this.activeMenuKey.set(this.lastOpenKey());\n }\n }\n\n protected onLogoutConfirmed(): void {\n this.logoutConfirmed.emit();\n }\n}\n","<div class=\"dashboard-layout\" [class.dashboard-layout--sidebar-collapsed]=\"!isPanelOpen()\">\n <!-- Mobile header with hamburger -->\n <header class=\"dashboard-layout__mobile-header\">\n <button class=\"dashboard-layout__hamburger\" (click)=\"toggleSidebar()\" [attr.aria-label]=\"'ARIA.TOGGLE_MENU' | translate\">\n <ncim-icon name=\"menu\" [size]=\"24\" />\n </button>\n </header>\n\n <ncim-sidebar\n [isOpen]=\"sidebarOpen()\"\n (isOpenChange)=\"sidebarOpen.set($event)\"\n [panelOpen]=\"isPanelOpen()\"\n [brand]=\"brand()\"\n [sections]=\"panelSections()\"\n [notificationCount]=\"notificationCount()\"\n [userAvatar]=\"userAvatar()\"\n [activeActionId]=\"activeActionId()\"\n [showCompleteTraining]=\"showCompleteTraining()\"\n (menuToggle)=\"togglePanel()\"\n (footerActionClick)=\"onFooterAction($event)\"\n [showAppsMenu]=\"showAppsMenu()\"\n />\n\n <main class=\"dashboard-layout__content\">\n <router-outlet />\n </main>\n</div>\n\n<ncim-logout-modal (confirmed)=\"onLogoutConfirmed()\" />\n","export const NAV_ROUTES = {\n DASHBOARD_HOME: '/dashboard/home',\n REGULATORY_DASHBOARD: '/dashboard/regulatory-dashboard',\n VIOLATIONS: '/dashboard/violations',\n OBJECTIONS: '/dashboard/objections',\n COMPLIANCE_PROGRAM: '/dashboard/compliance-program',\n SMART_ADVISOR: '/dashboard/smart-advisor',\n KNOWLEDGE_CENTER: '/dashboard/knowledge-center',\n SUPPORTER: '/dashboard/supporter',\n SETTINGS_USERS_AND_ROLES: '/dashboard/user-management/users-and-roles',\n SETTINGS_SYSTEM: '/dashboard/user-management/system-settings',\n} as const;\n\nexport enum NavSectionKey {\n BASICS = 'SIDEBAR.SECTIONS.BASICS',\n HELP = 'SIDEBAR.SECTIONS.HELP',\n}\n\nexport enum NavItemKey {\n HOME = 'SIDEBAR.ITEMS.HOME',\n REGULATORY_DASHBOARD = 'SIDEBAR.ITEMS.REGULATORY_DASHBOARD',\n VIOLATIONS = 'SIDEBAR.ITEMS.VIOLATIONS',\n OBJECTIONS = 'SIDEBAR.ITEMS.OBJECTIONS',\n LICENSES = 'SIDEBAR.ITEMS.LICENSES',\n COMPLIANCE_PROGRAM = 'SIDEBAR.ITEMS.COMPLIANCE_PROGRAM',\n SMART_ADVISOR = 'SIDEBAR.ITEMS.SMART_ADVISOR',\n KNOWLEDGE_CENTER = 'SIDEBAR.ITEMS.KNOWLEDGE_CENTER',\n SUPPORTER = 'SIDEBAR.ITEMS.SUPPORTER',\n USERS_ROLES = 'USERS_ROLES.TITLE',\n SYSTEM_SETTINGS = 'SIDEBAR.ITEMS.SYSTEM_SETTINGS',\n MY_FACILITIES = 'SIDEBAR.ITEMS.MY_FACILITIES',\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-copy-right',\n imports: [TranslateModule],\n templateUrl: './copy-right.html',\n styleUrl: './copy-right.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopyRight {}\n","<footer class=\"copy-right\">\n {{ 'AUTH.FOOTER' | translate }}\n</footer>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CopyRight } from '../../atoms/copy-right/copy-right';\nimport { Icon } from '../../atoms/icon/icon';\n\n/** Centered layout for login, forgot-password, OTP, reset-password. */\n@Component({\n selector: 'ncim-auth-layout',\n imports: [TranslateModule, CopyRight, Icon],\n templateUrl: './auth-layout.html',\n styleUrl: './auth-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthLayout {\n readonly width = input<'small' | 'full'>('small');\n}\n","<div class=\"auth-layout\" [class.auth-layout--full]=\"width() === 'full'\">\n <header class=\"auth-layout__header\">\n <ncim-icon name=\"logo\" [size]=\"200\" [height]=\"48\" class=\"auth-layout__logo\" />\n </header>\n\n <main class=\"auth-layout__main\">\n <div class=\"auth-layout__card\">\n <ng-content></ng-content>\n </div>\n </main>\n\n <footer class=\"auth-layout__footer\">\n <ncim-copy-right />\n </footer>\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { IconName } from '@libs/core/enums';\nimport { BaseSidebarLayout } from '../base-sidebar-layout';\n\n/** Item for settings sidebar navigation. */\nexport interface SettingsNavItem {\n label: string;\n route: string;\n icon?: IconName;\n}\n\n/** App shell for settings area (profile, users & roles) with sidebar. */\n@Component({\n selector: 'ncim-settings-layout',\n imports: [RouterOutlet, TranslateModule],\n templateUrl: './settings-layout.html',\n styleUrl: './settings-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SettingsLayout extends BaseSidebarLayout {}\n","<div class=\"settings-layout\">\n <main class=\"settings-layout__content\">\n <router-outlet />\n </main>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-form-error',\n imports: [TranslateModule],\n templateUrl: './form-error.html',\n styleUrl: './form-error.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormError {\n readonly show = input.required<boolean>();\n readonly messageKey = input.required<string>();\n readonly id = input<string | null>(null);\n}\n","@if (show()) {\n <span class=\"form-error\" role=\"alert\" [attr.id]=\"id()\">{{ messageKey() | translate }}</span>\n}\n","import {\n Component,\n signal,\n viewChildren,\n ElementRef,\n input,\n inject,\n computed,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { ERROR_KEYS, VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { FormError } from '../../atoms/form-error/form-error';\n\n@Component({\n selector: 'ncim-otp-input',\n imports: [FormError],\n templateUrl: './otp-input.html',\n styleUrl: './otp-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpInput implements ControlValueAccessor {\n readonly length = input<number>(VALIDATION_LENGTHS.OTP);\n readonly submitted = input<boolean>(false);\n\n readonly digits = signal<string[]>(Array(VALIDATION_LENGTHS.OTP).fill(''));\n readonly disabled = signal(false);\n readonly touched = signal(false);\n readonly focused = signal(false);\n readonly inputs = viewChildren<ElementRef>('otpInput');\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n readonly errorKey = computed<string>(() => {\n // Read digits signal to create reactive dependency — control.errors is not a signal,\n // so without this, the computed won't re-run when the user types and validity changes.\n this.digits();\n\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n if (control.hasError('required')) {\n return ERROR_KEYS.REQUIRED;\n }\n if (control.hasError('minlength')) {\n return ERROR_KEYS.INVALID_FORMAT;\n }\n\n return '';\n });\n\n readonly showError = computed<boolean>(\n () => !!this.errorKey() && ((this.touched() && !this.focused()) || this.submitted())\n );\n\n onDigitInput(event: Event, index: number): void {\n const input = event.target as HTMLInputElement;\n const value = input.value.replace(/\\D/g, '');\n\n const updated = [...this.digits()];\n updated[index] = value.charAt(value.length - 1) || '';\n this.digits.set(updated);\n\n input.value = updated[index];\n\n if (updated[index] && index < this.length() - 1) {\n const inputEls = this.inputs();\n inputEls[index + 1]?.nativeElement.focus();\n }\n\n this.emitValue();\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.touched.set(true);\n this.onTouched();\n }\n\n onKeyDown(event: KeyboardEvent, index: number): void {\n if (event.key === 'Backspace') {\n const updated = [...this.digits()];\n if (!updated[index] && index > 0) {\n const inputEls = this.inputs();\n inputEls[index - 1]?.nativeElement.focus();\n updated[index - 1] = '';\n this.digits.set(updated);\n this.emitValue();\n }\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasteData = event.clipboardData?.getData('text')?.replace(/\\D/g, '') ?? '';\n const updated = [...this.digits()];\n\n for (let i = 0; i < Math.min(pasteData.length, this.length()); i++) {\n updated[i] = pasteData[i];\n }\n\n this.digits.set(updated);\n this.emitValue();\n\n const inputEls = this.inputs();\n const focusIdx = Math.min(pasteData.length, this.length() - 1);\n inputEls[focusIdx]?.nativeElement.focus();\n }\n\n writeValue(value: string): void {\n if (value) {\n const arr = value.split('').slice(0, this.length());\n while (arr.length < this.length()) {\n arr.push('');\n }\n this.digits.set(arr);\n } else {\n this.digits.set(Array(this.length()).fill(''));\n this.touched.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n private emitValue(): void {\n const value = this.digits().join('');\n this.onChange(value);\n this.onTouched();\n }\n}\n","<div class=\"otp-input\" (paste)=\"onPaste($event)\">\n <!-- track $index: OTP digit positions are fixed -->\n @for (digit of digits(); track $index) {\n <input\n #otpInput\n class=\"otp-input__field\"\n [class.otp-input__field--error]=\"showError()\"\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [value]=\"digit\"\n [disabled]=\"disabled()\"\n placeholder=\"-\"\n (input)=\"onDigitInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n</div>\n\n<ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-divider',\n templateUrl: './divider.html',\n styleUrl: './divider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Divider {\n readonly text = input<string>('');\n}\n","<div class=\"divider\">\n <span class=\"divider__line\"></span>\n @if (text()) {\n <span class=\"divider__text\">{{ text() }}</span>\n }\n <span class=\"divider__line\"></span>\n</div>\n","import { Component, input, output, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface StepItem {\n id: string;\n label?: string;\n state: 'completed' | 'active' | 'upcoming' | 'disabled';\n}\n\n@Component({\n selector: 'ncim-stepper',\n imports: [TranslateModule, Icon],\n templateUrl: './stepper.html',\n styleUrl: './stepper.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stepper {\n readonly steps = input.required<StepItem[]>();\n readonly variant = input<'steps' | 'progress' | 'pills'>('steps');\n readonly linear = input<boolean>(true);\n readonly width = input<number>(100);\n\n readonly stepChange = output<string>();\n\n readonly progressPercentage = computed(() => {\n const items = this.steps();\n if (items.length === 0) {\n return 0;\n }\n const completedCount = items.filter(s => s.state === 'completed').length;\n const activeCount = items.filter(s => s.state === 'active').length;\n return Math.min(100, ((completedCount + activeCount) / items.length) * 100);\n });\n\n onStepClick(step: StepItem): void {\n if (step.state === 'disabled' || step.state === 'active') {\n return;\n }\n if (this.linear() && step.state === 'upcoming') {\n return;\n }\n this.stepChange.emit(step.id);\n }\n}\n","@if (variant() === 'pills') {\n <div class=\"stepper-pills\" role=\"progressbar\" [attr.aria-valuenow]=\"progressPercentage()\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n @for (step of steps(); track step.id) {\n <div\n class=\"stepper-pills__segment\"\n [style.width.px]=\"width()\"\n [class.stepper-pills__segment--active]=\"step.state === 'active'\"\n [class.stepper-pills__segment--completed]=\"step.state === 'completed'\"\n [class.stepper-pills__segment--upcoming]=\"step.state === 'upcoming'\"\n ></div>\n }\n </div>\n} @else if (variant() === 'progress') {\n <div class=\"stepper-progress\" role=\"progressbar\" [attr.aria-valuenow]=\"progressPercentage()\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"stepper-progress__fill\" [style.width.%]=\"progressPercentage()\"></div>\n </div>\n} @else {\n <nav class=\"stepper\" role=\"navigation\" [attr.aria-label]=\"'ARIA.PROGRESS' | translate\">\n <ol class=\"stepper__list\">\n @for (step of steps(); track step.id; let idx = $index; let last = $last) {\n <li\n class=\"stepper__item\"\n [class.stepper__item--completed]=\"step.state === 'completed'\"\n [class.stepper__item--active]=\"step.state === 'active'\"\n [class.stepper__item--upcoming]=\"step.state === 'upcoming'\"\n [class.stepper__item--disabled]=\"step.state === 'disabled'\"\n >\n <button\n class=\"stepper__circle\"\n type=\"button\"\n [disabled]=\"step.state === 'disabled' || step.state === 'active' || (linear() && step.state === 'upcoming')\"\n [attr.aria-current]=\"step.state === 'active' ? 'step' : null\"\n (click)=\"onStepClick(step)\"\n >\n @if (step.state === 'completed') {\n <ncim-icon class=\"stepper__check\" name=\"check\" [size]=\"16\" />\n } @else {\n <span class=\"stepper__number\">{{ idx + 1 }}</span>\n }\n </button>\n\n @if (step.label) {\n <span class=\"stepper__label\">{{ step.label | translate }}</span>\n }\n\n @if (!last) {\n <div class=\"stepper__connector\" [class.stepper__connector--completed]=\"step.state === 'completed'\"></div>\n }\n </li>\n }\n </ol>\n </nav>\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CopyRight } from '../../atoms/copy-right/copy-right';\nimport { Stepper, StepItem } from '../../molecules/stepper/stepper';\n\n@Component({\n selector: 'ncim-register-layout',\n imports: [TranslateModule, CopyRight, Stepper],\n templateUrl: './register-layout.html',\n styleUrl: './register-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterLayout {\n readonly sidebarTitle = input<string>('');\n readonly sidebarDescription = input<string>('');\n readonly sidebarImage = input<string>('assets/images/register.png');\n readonly steps = input<StepItem[]>([]);\n readonly stepperVariant = input<'steps' | 'progress'>('steps');\n readonly linear = input<boolean>(true);\n\n readonly stepChange = output<string>();\n}\n","<div class=\"register-layout\">\n <aside class=\"register-layout__sidebar\">\n <div class=\"register-layout__sidebar-content\">\n <div class=\"register-layout__illustration\">\n <img [src]=\"sidebarImage()\" [alt]=\"sidebarTitle()\" />\n </div>\n <h2 class=\"register-layout__sidebar-title\">{{ sidebarTitle() }}</h2>\n <p class=\"register-layout__sidebar-desc\">{{ sidebarDescription() }}</p>\n <img src=\"assets/images/bg-side.png\" class=\"register-layout__sidebar-bg\" alt=\"\" srcset=\"\" />\n </div>\n </aside>\n\n <main class=\"register-layout__main\">\n <div class=\"register-layout__content\">\n <header class=\"register-layout__header\">\n @if (steps().length > 0) {\n <ncim-stepper [steps]=\"steps()\" [variant]=\"stepperVariant()\" [linear]=\"linear()\" (stepChange)=\"stepChange.emit($event)\" />\n }\n </header>\n\n <div class=\"register-layout__step-container\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <footer class=\"register-layout__footer\">\n <ncim-copy-right />\n </footer>\n </main>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-form-label',\n templateUrl: './form-label.html',\n styleUrl: './form-label.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormLabel {\n readonly text = input.required<string>();\n readonly subText = input<string>();\n}\n","@if (text()) {\n <span class=\"form-label\">{{ text() }}</span>\n}\n@if (subText()) {\n <span class=\"form-label__sub text-secondary\">{{ subText() }}</span>\n}\n","import { Component, input, output, ChangeDetectionStrategy, signal, forwardRef, computed } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ERROR_KEYS } from '@libs/core/constants';\nimport { FormError } from '../../atoms/form-error/form-error';\nimport { FormLabel } from '../../atoms/form-label/form-label';\n\nexport interface OptionItem {\n value: string;\n label?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ncim-option-group',\n imports: [FormError, FormLabel],\n templateUrl: './option-group.html',\n styleUrl: './option-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OptionGroup),\n multi: true,\n },\n ],\n})\nexport class OptionGroup implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly options = input.required<OptionItem[]>();\n readonly columns = input<number>(4);\n\n readonly selectedValue = input<string | null>(null);\n readonly submitted = input<boolean>(false);\n readonly selectionChange = output<string>();\n\n readonly disabled = signal(false);\n readonly touched = signal(false);\n readonly value = signal<string | null>(null);\n\n readonly activeValue = computed(() => this.value() ?? this.selectedValue());\n readonly errorKey = ERROR_KEYS.REQUIRED;\n\n readonly showError = computed<boolean>(\n () => !this.value() && !this.activeValue() && (this.touched() || this.submitted())\n );\n\n private onChange: (value: string | null) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n onSelect(option: OptionItem): void {\n if (!option.disabled && !this.disabled()) {\n this.value.set(option.value);\n this.selectionChange.emit(option.value);\n this.onChange(option.value);\n this.touched.set(true);\n this.onTouched();\n }\n }\n\n writeValue(value: string | null): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<div class=\"option-group\">\n <ncim-form-label [text]=\"label()\" />\n\n <div class=\"option-group__options\" [class.option-group__options--error]=\"showError()\" [style.--option-cols]=\"columns()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"option-group__option\"\n [class.option-group__option--selected]=\"activeValue() === option.value\"\n [class.option-group__option--disabled]=\"option.disabled || disabled()\"\n [disabled]=\"option.disabled || disabled()\"\n (click)=\"onSelect(option)\"\n >\n {{ option.label || option.value }}\n </button>\n }\n </div>\n\n <ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, linkedSignal, output, signal } from '@angular/core';\n\n@Component({\n selector: 'ncim-radio-button',\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioButton {\n readonly value = input.required<string>();\n readonly disabled = input<boolean>(false);\n readonly checked = input<boolean | undefined>(undefined);\n readonly valueChange = output<string>();\n readonly isChecked = linkedSignal(() => this.checked());\n readonly isDisabled = linkedSignal<boolean>(() => this.disabled());\n readonly name = signal<string>('');\n\n readonly inputId = signal(`ncim-radio-${crypto.randomUUID?.() ?? Math.random().toString(16).slice(2)}`);\n\n readonly ariaChecked = computed(() => (this.isChecked() ? 'true' : 'false'));\n readonly ariaDisabled = computed(() => (this.isDisabled() ? 'true' : 'false'));\n\n onRadioChange(): void {\n if (this.isDisabled()) {\n return;\n }\n this.valueChange.emit(this.value());\n }\n}\n","<label\n class=\"ncim-radio-button\"\n [class.ncim-radio-button--checked]=\"isChecked()\"\n [class.ncim-radio-button--disabled]=\"isDisabled()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-disabled]=\"ariaDisabled()\"\n>\n <span class=\"ncim-radio-button__content\">\n <span class=\"ncim-radio-button__control\">\n <input\n class=\"ncim-radio-button__native\"\n type=\"radio\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onRadioChange()\"\n />\n\n <span class=\"ncim-radio-button__outer\" aria-hidden=\"true\">\n <span class=\"ncim-radio-button__inner\" aria-hidden=\"true\"></span>\n </span>\n </span>\n <span class=\"ncim-radio-button__label\">\n <ng-content />\n </span>\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, forwardRef, input, linkedSignal, output, signal } from '@angular/core';\nimport { RadioButton } from '../radio-button/radio-button';\n\n@Component({\n selector: 'ncim-selection-button',\n templateUrl: './selection-button.html',\n styleUrl: './selection-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: RadioButton,\n useExisting: forwardRef(() => SelectionButton),\n },\n ],\n})\nexport class SelectionButton extends RadioButton {\n readonly size = input<'small' | 'medium' | 'large'>('medium');\n readonly variant = input<'primary' | 'secondary' | 'outline'>('outline');\n}\n","<label\n class=\"option-button\"\n [class.option-button--small]=\"size() === 'small'\"\n [class.option-button--medium]=\"size() === 'medium'\"\n [class.option-button--large]=\"size() === 'large'\"\n [class.option-button--primary]=\"variant() === 'primary'\"\n [class.option-button--secondary]=\"variant() === 'secondary'\"\n [class.option-button--outline]=\"variant() === 'outline'\"\n [class.option-button--selected]=\"isChecked()\"\n [class.option-button--disabled]=\"isDisabled()\"\n>\n <input\n [id]=\"name() + '_' + value()\"\n type=\"radio\"\n class=\"option-button__input\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onRadioChange()\"\n />\n <div class=\"option-button__content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { RadioButton } from './radio-button/radio-button';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ncim-radio-group',\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroup),\n multi: true,\n },\n ],\n})\nexport class RadioGroup implements ControlValueAccessor, AfterContentInit {\n private readonly cdr = inject(ChangeDetectorRef);\n\n private optionButtons = contentChildren(RadioButton);\n\n readonly name = input<string>(`ncim-radio-group-${nextUniqueId++}`);\n readonly disabled = input<boolean>(false);\n readonly valueChange = output<string>();\n\n private selectedValue = signal<string | undefined>(undefined);\n\n private onChange: (value: string) => void = noop;\n private onTouched: () => void = () => noop;\n\n ngAfterContentInit(): void {\n this.optionButtons()?.forEach(button => {\n (button.valueChange as unknown as { subscribe: (fn: (v: string) => void) => void }).subscribe((value: string) =>\n this.handleValueChange(value)\n );\n });\n\n this.syncChildrenState();\n }\n\n writeValue(value: string): void {\n this.selectedValue.set(value);\n this.syncChildrenState();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n private handleValueChange(value: string): void {\n this.selectedValue.set(value);\n this.onChange(value);\n this.onTouched();\n this.valueChange.emit(value);\n this.syncChildrenState();\n }\n\n private syncChildrenState(): void {\n if (!this.optionButtons) {\n return;\n }\n\n const groupName = this.name();\n const currentValue = this.selectedValue();\n const isDisabled = this.disabled();\n this.optionButtons().forEach(button => {\n button.name.set?.(groupName);\n const isChecked = button.value() === currentValue;\n button.isChecked.set?.(isChecked);\n if (isDisabled) {\n button.isDisabled.set?.(true);\n }\n });\n\n this.cdr.markForCheck();\n }\n}\n","<ng-content></ng-content>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-circular-progress',\n imports: [TranslateModule],\n templateUrl: './circular-progress.html',\n styleUrl: './circular-progress.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CircularProgress {\n /** Current step (1-based). */\n readonly current = input<number>(1);\n /** Total steps. */\n readonly total = input<number>(4);\n /** Size in pixels. */\n readonly size = input<number>(48);\n /** Stroke width of the ring. */\n readonly strokeWidth = input<number>(4);\n /** Color of the progress segment. */\n readonly progressColor = input<string>('#1f2937');\n /** Color of the background ring. */\n readonly trackColor = input<string>('#e5e7eb');\n /** Custom label (e.g. \"1 من 4\"). If not set, uses current/total. */\n readonly label = input<string>('');\n\n readonly percentage = computed(() => {\n const c = this.current();\n const t = this.total();\n return t > 0 ? Math.min(100, (c / t) * 100) : 0;\n });\n\n readonly displayLabel = computed(() => this.label() || '');\n\n /** Translation params for COMMON.STEP_OF. */\n readonly stepOfParams = computed(() => ({\n current: this.current(),\n total: this.total(),\n }));\n\n /** SVG circle circumference for stroke-dasharray. */\n readonly circumference = computed(() => {\n const r = (this.size() - this.strokeWidth()) / 2;\n return 2 * Math.PI * r;\n });\n\n readonly strokeDashOffset = computed(() => {\n const pct = this.percentage() / 100;\n return this.circumference() * (1 - pct);\n });\n\n readonly radius = computed(() => (this.size() - this.strokeWidth()) / 2);\n readonly viewBox = computed(() => `0 0 ${this.size()} ${this.size()}`);\n readonly center = computed(() => this.size() / 2);\n\n /** Label font size scales with circle size for readability. */\n readonly labelFontSize = computed(() => Math.max(10, Math.round(this.size() * 0.22)));\n}\n","<div\n class=\"circular-progress\"\n [style.width.px]=\"size()\"\n [style.height.px]=\"size()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"current()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"total()\"\n [attr.aria-label]=\"displayLabel()\"\n>\n <svg class=\"circular-progress__svg\" [attr.viewBox]=\"viewBox()\" [attr.width]=\"size()\" [attr.height]=\"size()\">\n <!-- Background track -->\n <circle\n class=\"circular-progress__track\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"trackColor()\"\n fill=\"none\"\n />\n <!-- Progress segment (clockwise from top) -->\n <circle\n class=\"circular-progress__fill\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"progressColor()\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"strokeDashOffset()\"\n [attr.transform]=\"'rotate(-90 ' + center() + ' ' + center() + ')'\"\n />\n </svg>\n <span class=\"circular-progress__label\" [style.font-size.px]=\"labelFontSize()\">\n @if (label()) {\n {{ displayLabel() }}\n } @else {\n {{ 'COMMON.STEP_OF' | translate: stepOfParams() }}\n }\n </span>\n</div>\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Injector, inject, afterNextRender } from '@angular/core';\n\nconst INKBAR_SELECTOR = '.p-tablist-active-bar';\nconst TABLIST_SELECTOR = '.p-tablist-tab-list';\n\n/**\n * Fixes PrimeNG tabs active bar (inkbar) positioning in RTL.\n * PrimeNG uses `left` which misaligns in RTL; we recalculate using `inset-inline-start`.\n */\n@Directive({\n selector: '[ncimTabsInkbarRtl]',\n host: {},\n})\nexport class TabsInkbarRtlDirective implements AfterViewInit {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n ngAfterViewInit(): void {\n afterNextRender(\n () => {\n this.setupInkbarSync();\n },\n { injector: this.injector }\n );\n }\n\n private setupInkbarSync(): void {\n const host = this.el.nativeElement as HTMLElement;\n const sync = (): void => {\n const inkbar = host.querySelector(INKBAR_SELECTOR) as HTMLElement | null;\n const tablist = host.querySelector(TABLIST_SELECTOR) as HTMLElement | null;\n if (!inkbar || !tablist || !this.isRtl()) {\n return;\n }\n\n const left = parseFloat(inkbar.style.left);\n const width = parseFloat(inkbar.style.width) || inkbar.offsetWidth;\n if (Number.isNaN(left)) {\n return;\n }\n\n const containerWidth = tablist.offsetWidth;\n // In RTL, inset-inline-start is from the right; recalc so bar aligns under the tab\n const insetInlineStart = containerWidth - left - width;\n inkbar.style.left = '';\n inkbar.style.right = '';\n inkbar.style.insetInlineStart = `${insetInlineStart}px`;\n inkbar.style.insetInlineEnd = 'auto';\n };\n\n // Sync when inkbar appears or updates\n const observer = new MutationObserver(() => {\n sync();\n });\n\n const observe = (): void => {\n const inkbar = host.querySelector(INKBAR_SELECTOR);\n if (inkbar) {\n observer.observe(inkbar, { attributes: true, attributeFilter: ['style'] });\n sync();\n }\n };\n\n // Initial observe - inkbar may not exist yet\n const checkInterval = setInterval(() => {\n const inkbar = host.querySelector(INKBAR_SELECTOR);\n if (inkbar) {\n clearInterval(checkInterval);\n observe();\n }\n }, 50);\n\n // Stop checking after 2s and cleanup observer on destroy\n setTimeout(() => clearInterval(checkInterval), 2000);\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n\n private isRtl(): boolean {\n const el = this.el.nativeElement as HTMLElement;\n return (\n document.documentElement.dir === 'rtl' ||\n document.documentElement.getAttribute('lang') === 'ar' ||\n getComputedStyle(el).direction === 'rtl'\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, input, linkedSignal, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Tab as PrimeTab, TabList as PrimeTabList, Tabs as PrimeTabs } from 'primeng/tabs';\nimport { TabsInkbarRtlDirective } from './tabs-inkbar-rtl.directive';\n\nexport interface TabItem {\n id: string;\n label: string;\n disabled?: boolean;\n icon?: string;\n badge?: string | number;\n}\n\n@Component({\n selector: 'ncim-tabs',\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslatePipe, PrimeTabs, PrimeTabList, PrimeTab],\n hostDirectives: [TabsInkbarRtlDirective],\n})\nexport class Tabs {\n readonly items = input.required<TabItem[]>();\n readonly activeId = input<string>('');\n readonly variant = input<'default' | 'pills' | 'underline'>('default');\n readonly size = input<'small' | 'medium' | 'large'>('medium');\n readonly justify = input<'start' | 'center' | 'end' | 'between'>('between');\n readonly tabChange = output<string>();\n readonly underlineStyle = input<'full' | 'text'>('full');\n\n protected readonly activeValue = linkedSignal<string | number | undefined>(() => this.activeId() || undefined);\n\n protected onValueChange(value: string | number | undefined): void {\n if (value !== undefined) {\n this.tabChange.emit(String(value));\n }\n }\n}\n","<div\n class=\"tabs\"\n [class.tabs--default]=\"variant() === 'default'\"\n [class.tabs--pills]=\"variant() === 'pills'\"\n [class.tabs--underline]=\"variant() === 'underline'\"\n [class.tabs--small]=\"size() === 'small'\"\n [class.tabs--medium]=\"size() === 'medium'\"\n [class.tabs--large]=\"size() === 'large'\"\n [class.tabs--justify-start]=\"justify() === 'start'\"\n [class.tabs--justify-center]=\"justify() === 'center'\"\n [class.tabs--justify-end]=\"justify() === 'end'\"\n [class.tabs--justify-between]=\"justify() === 'between'\"\n [class.tabs--underline-text]=\"underlineStyle() === 'text'\"\n>\n <p-tabs [(value)]=\"activeValue\" (valueChange)=\"onValueChange($event)\">\n <p-tablist>\n @for (tab of items(); track tab.id) {\n <p-tab [value]=\"tab.id\" [disabled]=\"tab.disabled ?? false\">\n @if (tab.icon) {\n <span class=\"tabs__tab-icon\">{{ tab.icon }}</span>\n }\n <span class=\"tabs__tab-label\">{{ tab.label | translate }}</span>\n @if (tab.badge) {\n <span class=\"tabs__tab-badge\">{{ tab.badge }}</span>\n }\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n\n <div class=\"tabs__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-tab-panel',\n templateUrl: './tab-panel.html',\n styleUrl: './tab-panel.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabPanel {\n readonly id = input.required<string>();\n readonly activeId = input<string>('');\n readonly title = input<string>('');\n\n readonly isActive = computed(() => this.activeId() === this.id());\n}\n","<div\n class=\"tab-panel\"\n [class.tab-panel--active]=\"isActive()\"\n [attr.id]=\"'tab-' + id()\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"'tab-' + id()\"\n [attr.aria-hidden]=\"!isActive()\"\n>\n @if (isActive()) {\n <ng-content></ng-content>\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-form-password-toggle',\n imports: [Icon, TranslateModule],\n templateUrl: './form-password-toggle.html',\n styleUrl: './form-password-toggle.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormPasswordToggle {\n readonly showPassword = input.required<boolean>();\n readonly togglePassword = output<void>();\n}\n","<button\n type=\"button\"\n class=\"password-toggle\"\n (click)=\"togglePassword.emit()\"\n tabindex=\"-1\"\n [attr.aria-label]=\"'ARIA.TOGGLE_PASSWORD' | translate\"\n>\n @if (showPassword()) {\n <ncim-icon name=\"eyeOff\" [size]=\"20\" />\n } @else {\n <ncim-icon name=\"eye\" [size]=\"20\" />\n }\n</button>\n","import { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport {\n Component,\n input,\n output,\n model,\n computed,\n inject,\n ChangeDetectionStrategy,\n effect,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Select, SelectModule } from 'primeng/select';\nimport { FieldSize } from '../form-input/form-input.types';\nimport { SelectOption } from './select-option.interface';\nimport { Icon } from '../../atoms/icon/icon';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\n\n@Component({\n selector: 'ncim-form-select',\n imports: [IconFieldModule, InputIconModule, Icon, SelectModule],\n templateUrl: './form-select.html',\n styleUrl: './form-select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormSelect implements ControlValueAccessor {\n private readonly translate = inject(TranslateService);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** Reference to the inner p-select (one is rendered at a time via @if icon). */\n private readonly pSelectRef = viewChild(Select);\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n // Sync value() to PrimeNG Select without using ngModel (avoids NG01203).\n effect(() => {\n const v = this.value() ?? '';\n this.pSelectRef()?.updateModel(v);\n });\n }\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n readonly value = model<string>('');\n readonly options = input<SelectOption[]>([]);\n readonly disabled = model<boolean>(false);\n readonly placeholder = input<string>('');\n readonly size = input<FieldSize>('medium');\n readonly appendToBody = input<boolean>(true);\n\n /** PrimeNG icon class e.g. 'pi pi-chevron-down'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the select. Defaults to 'end'. */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /**\n * Track active language as a signal so computed options re-evaluate on language change.\n * startWith ensures an initial value is emitted immediately.\n */\n private readonly currentLang = toSignal(\n this.translate.onLangChange.pipe(startWith({ lang: this.translate.currentLang })),\n { initialValue: { lang: this.translate.getCurrentLang() } }\n );\n\n /** PrimeNG size: 'small' | 'large' | undefined (medium maps to undefined) */\n protected readonly selectSize = computed<'small' | 'large' | undefined>(() => {\n const s = this.size();\n return s === 'medium' ? undefined : s;\n });\n\n /** Translated placeholder — re-evaluates when language changes */\n protected readonly translatedPlaceholder = computed(() => {\n this.currentLang(); // track language signal\n const ph = this.placeholder();\n return ph ? this.translate.instant(ph) : this.translate.instant('COMMON.CHOOSE');\n });\n\n protected readonly appendTarget = computed<'body' | 'self'>(() => (this.appendToBody() ? 'body' : 'self'));\n\n /** Translated options + placeholder as first item — re-evaluates when language changes */\n protected readonly optionsWithPlaceholder = computed<SelectOption[]>(() => {\n this.currentLang(); // track language signal\n const translated = this.options().map(opt => ({\n value: opt.value,\n label: this.translate.instant(opt.label),\n disabled: opt.disabled ?? false,\n }));\n return [{ value: '', label: this.translatedPlaceholder(), disabled: true }, ...translated];\n });\n\n readonly valueChange = output<string>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onValueChange(val: string | null | undefined): void {\n const next = val ?? '';\n this.value.set(next);\n this.valueChange.emit(next);\n this.onChange(next);\n this.onTouched();\n }\n\n writeValue(value: string | null | undefined): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-select\n class=\"form-select\"\n [options]=\"optionsWithPlaceholder()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n [appendTo]=\"appendTarget()\"\n fluid\n />\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n <p-select\n class=\"form-select\"\n [options]=\"optionsWithPlaceholder()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n fluid\n [appendTo]=\"appendTarget()\"\n />\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, linkedSignal, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { startWith } from 'rxjs';\nimport { Icon } from '../../atoms/icon/icon';\nimport type { SelectOption } from '../form-select/select-option.interface';\nimport type { FieldSize } from '../form-input/form-input.types';\n\n@Component({\n selector: 'ncim-form-multi-select',\n imports: [IconFieldModule, InputIconModule, Icon, FormsModule, MultiSelectModule],\n templateUrl: './form-multi-select.html',\n styleUrl: './form-multi-select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormMultiSelect {\n private readonly translate = inject(TranslateService);\n\n readonly value = input<string[]>([]);\n readonly options = input<SelectOption[]>([]);\n readonly disabled = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly size = input<FieldSize>('medium');\n readonly filter = input<boolean>(true);\n readonly showSelectAll = input<boolean>(false);\n /** 'comma' = no chips, selections shown as text; checkmarks only in dropdown */\n readonly display = input<'comma' | 'chip'>('comma');\n readonly maxSelectedLabels = input<number>(3);\n\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('end');\n\n private readonly currentLang = toSignal(\n this.translate.onLangChange.pipe(startWith({ lang: this.translate.currentLang })),\n { initialValue: { lang: this.translate.getCurrentLang() } }\n );\n\n protected readonly selectSize = computed<'small' | 'large' | undefined>(() => {\n const s = this.size();\n return s === 'medium' ? undefined : s;\n });\n\n protected readonly selectedValues = linkedSignal(() => this.value() ?? []);\n\n protected readonly translatedPlaceholder = computed(() => {\n this.currentLang();\n const ph = this.placeholder();\n return ph ? this.translate.instant(ph) : this.translate.instant('COMMON.CHOOSE');\n });\n\n protected readonly translatedOptions = computed<SelectOption[]>(() => {\n this.currentLang();\n return this.options().map(opt => ({\n value: opt.value,\n label: this.translate.instant(opt.label),\n }));\n });\n\n readonly valueChange = output<string[]>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onValueChange(val: string[] | null | undefined): void {\n const next = val ?? [];\n this.selectedValues.set(next);\n this.valueChange.emit(next);\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-multiSelect\n class=\"form-multi-select\"\n [options]=\"translatedOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n [filter]=\"filter()\"\n [showToggleAll]=\"showSelectAll()\"\n [display]=\"display()\"\n [maxSelectedLabels]=\"maxSelectedLabels()\"\n [ngModel]=\"selectedValues()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n appendTo=\"body\"\n fluid\n />\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n <p-multiSelect\n class=\"form-multi-select\"\n [options]=\"translatedOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"translatedPlaceholder()\"\n [disabled]=\"disabled()\"\n [size]=\"selectSize()\"\n [filter]=\"filter()\"\n [display]=\"display()\"\n [maxSelectedLabels]=\"maxSelectedLabels()\"\n [ngModel]=\"selectedValues()\"\n (onChange)=\"onValueChange($event.value)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"blurEvent.emit()\"\n fluid\n appendTo=\"body\"\n />\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport {\n ArabicOnlyDirective,\n EnglishOnlyDirective,\n NumbersOnlyDirective,\n PhoneOnlyDirective,\n TrimInputDirective,\n} from '@libs/core/directives';\nimport { FieldSize, InputFilter, RestrictInput } from '../form-input/form-input.types';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { Icon } from '../../atoms/icon/icon';\n\nconst NON_DIGITS = /\\D/g;\nconst LEADING_SPACES = /^\\s+/;\nconst COMMAS = /,/g;\n\nconst INPUT_FILTERS: Record<NonNullable<InputFilter>, (value: string) => string> = {\n numeric: (value: string) => value.replace(NON_DIGITS, ''),\n phone: (value: string) => value.replace(NON_DIGITS, '').slice(0, VALIDATION_LENGTHS.MOBILE),\n noComma: (value: string) => value.replace(COMMAS, ''),\n};\n\n@Component({\n selector: 'ncim-form-text-field',\n imports: [\n IconFieldModule,\n InputIconModule,\n Icon,\n ArabicOnlyDirective,\n EnglishOnlyDirective,\n NumbersOnlyDirective,\n PhoneOnlyDirective,\n TrimInputDirective,\n ],\n templateUrl: './form-text-field.html',\n styleUrl: './form-text-field.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormTextField {\n readonly value = input<string>('');\n readonly type = input<string>('text');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly size = input<FieldSize>('medium');\n readonly inputMode = input<string | null>(null);\n readonly minLength = input<number | null>(null);\n readonly maxLength = input<number | null>(VALIDATION_LENGTHS.MAX_LENGTH_255);\n readonly hasToggle = input<boolean>(false);\n readonly autocomplete = input<string>('off');\n readonly filter = input<InputFilter>(null);\n readonly restrictInput = input<RestrictInput>(null);\n\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n readonly valueChange = output<string>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n\n onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.stripLeadingSpaces(inputEl);\n const value = this.applyFilter(inputEl);\n this.valueChange.emit(value);\n }\n\n onPaste(event: ClipboardEvent): void {\n const activeFilter = this.filter();\n if (!activeFilter) {\n return;\n }\n\n event.preventDefault();\n const inputEl = event.target as HTMLInputElement;\n const pasted = event.clipboardData?.getData('text') ?? '';\n const filterFn = INPUT_FILTERS[activeFilter];\n\n const before = inputEl.value.slice(0, inputEl.selectionStart ?? 0);\n const after = inputEl.value.slice(inputEl.selectionEnd ?? 0);\n const merged = filterFn(before + pasted + after);\n const nextCursor = filterFn(before + pasted).length;\n\n inputEl.value = merged;\n inputEl.setSelectionRange(nextCursor, nextCursor);\n this.valueChange.emit(merged);\n }\n\n private stripLeadingSpaces(inputEl: HTMLInputElement): void {\n const stripped = inputEl.value.replace(LEADING_SPACES, '');\n if (stripped !== inputEl.value) {\n inputEl.value = stripped;\n }\n }\n\n private applyFilter(inputEl: HTMLInputElement): string {\n const activeFilter = this.filter();\n if (!activeFilter) {\n return inputEl.value;\n }\n\n const filterFn = INPUT_FILTERS[activeFilter];\n const filtered = filterFn(inputEl.value);\n\n if (filtered !== inputEl.value) {\n const cursorPos = inputEl.selectionStart ?? 0;\n const filteredBeforeCursor = filterFn(inputEl.value.slice(0, cursorPos));\n inputEl.value = filtered;\n const nextCursor = Math.min(filteredBeforeCursor.length, filtered.length);\n inputEl.setSelectionRange(nextCursor, nextCursor);\n }\n\n return filtered;\n }\n}\n","@if (icon()) {\n <p-iconfield\n [class.field__icon-start]=\"icon() && iconPosition() === 'start'\"\n [class.field__icon-end]=\"icon() && iconPosition() === 'end'\"\n >\n @if (icon() && iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n @switch (restrictInput()) {\n @case ('arabicOnly') {\n <input\n ncimArabicOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('englishOnly') {\n <input\n ncimEnglishOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('numbersOnly') {\n <input\n ncimNumbersOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('phoneOnly') {\n <input\n ncimPhoneOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @case ('trimInput') {\n <input\n ncimTrimInput\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n @default {\n <input\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.minlength]=\"minLength()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n pInputText\n />\n }\n }\n\n @if (icon() && iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n </p-iconfield>\n} @else {\n @switch (restrictInput()) {\n @case ('arabicOnly') {\n <input\n ncimArabicOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('englishOnly') {\n <input\n ncimEnglishOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('numbersOnly') {\n <input\n ncimNumbersOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('phoneOnly') {\n <input\n ncimPhoneOnly\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @case ('trimInput') {\n <input\n ncimTrimInput\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n @default {\n <input\n class=\"field\"\n [class.field--large]=\"size() === 'large'\"\n [class.field--has-toggle]=\"hasToggle()\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [attr.inputmode]=\"inputMode()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n (input)=\"onInput($event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"focusEvent.emit()\"\n (blur)=\"blurEvent.emit()\"\n />\n }\n }\n}\n","import { Component, input, output, viewChild, computed, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DatePicker, DatePickerModule } from 'primeng/datepicker';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { Icon } from '../../atoms/icon/icon';\nimport { IconFieldModule } from 'primeng/iconfield';\n\n@Component({\n selector: 'ncim-form-date-picker',\n imports: [FormsModule, DatePickerModule, Icon, InputIconModule, IconFieldModule],\n templateUrl: './form-date-picker.html',\n styleUrl: './form-date-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormDatePicker {\n private readonly datePicker = viewChild.required<DatePicker>('datePicker');\n private readonly typedDraft = signal<string | null>(null);\n\n readonly value = input<string>('');\n readonly rangeValue = input<string[]>([]);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly dateFormat = input<string>('dd/mm/yy');\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n /**\n * Where to attach the calendar overlay. Use `'body'` inside modals/scroll containers to avoid clipping.\n * Matches PrimeNG `p-datepicker` `appendTo` (e.g. `'body'`, `'self'`, or an `HTMLElement`).\n */\n readonly appendTo = input<HTMLElement | 'body' | 'self' | null | undefined>(undefined);\n readonly selectionMode = input<'single' | 'multiple' | 'range' | undefined>('single');\n readonly showDropdownIcon = input<boolean>(false);\n\n readonly valueChange = output<string>();\n readonly rangeValueChange = output<string[]>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Resolved ngModel value — string[] for range mode, string for single */\n readonly calendarModel = computed<string | string[]>(() =>\n this.selectionMode() === 'range' ? this.rangeValue() : (this.typedDraft() ?? this.value())\n );\n\n handleChange(value: string | string[] | Date | Date[] | null | undefined): void {\n if (this.selectionMode() === 'range') {\n if (value == null) {\n return;\n }\n const normalizedRange = Array.isArray(value)\n ? value.map(item => this.toDateString(item)).filter(item => !!item)\n : [this.toDateString(value)].filter(item => !!item);\n // PrimeNG emits a plain string when only the first date is picked in range mode.\n // Wrap it so rangeValueChange always fires and the parent model stays in sync.\n this.rangeValueChange.emit([normalizedRange[0] ?? '', normalizedRange[1] ?? '']);\n } else {\n if (value == null) {\n return;\n }\n\n const resolvedValue = this.toDateString(Array.isArray(value) ? (value[0] ?? '') : value);\n if (!this.isStrictValidDateInput(resolvedValue)) {\n return;\n }\n this.typedDraft.set(null);\n this.valueChange.emit(resolvedValue);\n }\n }\n\n onInput(event: Event): void {\n if (this.selectionMode() === 'range') {\n return;\n }\n let rawValue = this.extractInputValue(event);\n if (rawValue === null) {\n return;\n }\n\n const previousDraft = this.typedDraft() ?? this.value();\n const isManualSlashInput = event instanceof InputEvent && event.inputType === 'insertText' && event.data === '/';\n if (isManualSlashInput && previousDraft) {\n const base = previousDraft.replace(/\\/+$/, '');\n if (!rawValue || rawValue === '/' || rawValue === base) {\n rawValue = `${base}/`;\n }\n }\n\n const typedValue = this.normalizeTypedDate(rawValue);\n this.typedDraft.set(typedValue);\n this.updateInputElementValue(event, typedValue);\n if (!typedValue) {\n this.typedDraft.set(null);\n this.valueChange.emit('');\n return;\n }\n\n if (this.isStrictValidDateInput(typedValue)) {\n this.typedDraft.set(null);\n this.valueChange.emit(typedValue);\n }\n\n const isPasteEvent = event instanceof InputEvent && event.inputType === 'insertFromPaste';\n if (isPasteEvent && this.isStrictValidDateInput(typedValue)) {\n this.closeOverlay();\n }\n }\n\n onBlur(): void {\n if (this.selectionMode() !== 'range') {\n const inputEl = this.datePicker().inputfieldViewChild?.nativeElement as HTMLInputElement | undefined;\n const typedValue = this.normalizeTypedDate(inputEl?.value ?? '');\n if (inputEl && inputEl.value !== typedValue) {\n inputEl.value = typedValue;\n }\n if (!typedValue) {\n this.typedDraft.set(null);\n this.valueChange.emit('');\n } else if (this.isStrictValidDateInput(typedValue)) {\n this.typedDraft.set(null);\n this.valueChange.emit(typedValue);\n }\n }\n this.blurEvent.emit();\n }\n\n openCalendar(): void {\n this.datePicker().toggle();\n }\n\n private extractInputValue(event: Event): string | null {\n const target = event.target as HTMLInputElement | null;\n if (target && typeof target.value === 'string') {\n return target.value;\n }\n const inputEl = this.datePicker().inputfieldViewChild?.nativeElement as HTMLInputElement | undefined;\n return inputEl?.value ?? null;\n }\n\n private normalizeTypedDate(raw: string): string {\n if (!raw) {\n return '';\n }\n\n if (raw.includes('/')) {\n const [dayPart = '', monthPart = '', yearPart = ''] = raw.split('/').slice(0, 3);\n const day = this.normalizeDayOrMonthPart(dayPart, 31);\n const month = this.normalizeMonthWithSingleDigitSupport(monthPart);\n const year = yearPart.replace(/\\D/g, '').slice(0, 4);\n const separatorCount = (raw.match(/\\//g) ?? []).length;\n let normalized = day;\n\n if (separatorCount >= 1 || month) {\n normalized += `/${month}`;\n }\n if (separatorCount >= 2 || year) {\n normalized += `/${year}`;\n }\n\n return normalized;\n }\n\n const digitsOnly = raw.replace(/\\D/g, '').slice(0, 8);\n if (!digitsOnly) {\n return '';\n }\n\n const day = this.normalizeDayOrMonthPart(digitsOnly.slice(0, 2), 31);\n const monthStartDigit = digitsOnly.slice(2, 3);\n const autoPadSingleDigitMonth = monthStartDigit !== '' && Number(monthStartDigit) > 1;\n const month = autoPadSingleDigitMonth\n ? `0${monthStartDigit}`\n : this.normalizeDayOrMonthPart(digitsOnly.slice(2, 4), 12);\n const year = autoPadSingleDigitMonth ? digitsOnly.slice(3, 7) : digitsOnly.slice(4, 8);\n\n return [day, month, year].filter(Boolean).join('/');\n }\n\n private updateInputElementValue(event: Event, value: string): void {\n const target = event.target as HTMLInputElement | null;\n if (target && target.value !== value) {\n target.value = value;\n }\n }\n\n private toDateString(value: string | Date): string {\n if (typeof value === 'string') {\n return this.normalizeTypedDate(value);\n }\n return this.formatDate(value);\n }\n\n private formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = String(date.getFullYear());\n return `${day}/${month}/${year}`;\n }\n\n private normalizeDayOrMonthPart(value: string, maxValue: number): string {\n const digits = value.replace(/\\D/g, '').slice(0, 2);\n if (!digits) {\n return '';\n }\n if (digits.length < 2) {\n return digits;\n }\n const bounded = Math.min(Number(digits), maxValue);\n return String(bounded).padStart(2, '0');\n }\n\n private normalizeMonthWithSingleDigitSupport(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 2);\n if (!digits) {\n return '';\n }\n if (digits.length === 1) {\n return Number(digits) > 1 ? `0${digits}` : digits;\n }\n const bounded = Math.min(Number(digits), 12);\n return String(bounded).padStart(2, '0');\n }\n\n private isStrictValidDateInput(raw: string): boolean {\n const value = raw.trim();\n const dmy = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(value);\n if (!dmy) {\n return false;\n }\n\n const day = Number(dmy[1]);\n const month = Number(dmy[2]);\n let year = Number(dmy[3]);\n\n if (dmy[3].length === 2) {\n year = year <= 29 ? 2000 + year : 1900 + year;\n }\n\n if (month < 1 || month > 12 || day < 1 || day > 31) {\n return false;\n }\n\n const candidate = new Date(year, month - 1, day);\n if (candidate.getFullYear() !== year || candidate.getMonth() !== month - 1 || candidate.getDate() !== day) {\n return false;\n }\n\n const min = this.minDate();\n if (min) {\n const minStart = new Date(min.getFullYear(), min.getMonth(), min.getDate()).getTime();\n if (candidate.getTime() < minStart) {\n return false;\n }\n }\n\n const max = this.maxDate();\n if (max) {\n const maxEnd = new Date(max.getFullYear(), max.getMonth(), max.getDate(), 23, 59, 59, 999).getTime();\n if (candidate.getTime() > maxEnd) {\n return false;\n }\n }\n\n return true;\n }\n\n private closeOverlay(): void {\n const picker = this.datePicker() as DatePicker & {\n hideOverlay?: () => void;\n overlayVisible?: boolean;\n };\n picker.hideOverlay?.();\n }\n}\n","<div class=\"date-picker\" [class.date-picker--dropdown]=\"showDropdownIcon()\">\n @if (icon()) {\n <p-iconfield>\n @if (iconPosition() === 'start') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n\n <p-datepicker\n #datePicker\n class=\"date-picker__field\"\n styleClass=\"date-picker__primeng\"\n inputStyleClass=\"date-picker__input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [dataType]=\"'string'\"\n [dateFormat]=\"dateFormat()\"\n [keepInvalid]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"appendTo()\"\n [ngModel]=\"$any(calendarModel())\"\n [selectionMode]=\"selectionMode()\"\n (onSelect)=\"handleChange($event)\"\n (onInput)=\"onInput($event)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"onBlur()\"\n ></p-datepicker>\n\n @if (iconPosition() === 'end') {\n <p-inputicon>\n <ncim-icon [name]=\"icon()\" [size]=\"20\" />\n </p-inputicon>\n }\n @if (showDropdownIcon()) {\n <!-- <p-inputicon class=\"chevron-down\">\n <ncim-icon [name]=\"'chevron-down'\" [size]=\"25\" />\n </p-inputicon> -->\n }\n </p-iconfield>\n } @else {\n <p-datepicker\n #datePicker\n class=\"date-picker__field\"\n styleClass=\"date-picker__primeng\"\n inputStyleClass=\"date-picker__input\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [dataType]=\"'string'\"\n [dateFormat]=\"dateFormat()\"\n [keepInvalid]=\"true\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"appendTo()\"\n [ngModel]=\"$any(calendarModel())\"\n [selectionMode]=\"selectionMode()\"\n (onSelect)=\"handleChange($event)\"\n (onInput)=\"onInput($event)\"\n (onFocus)=\"focusEvent.emit()\"\n (onBlur)=\"onBlur()\"\n ></p-datepicker>\n }\n</div>\n","import { Component, input, model, signal, computed, ChangeDetectionStrategy, AfterViewInit } from '@angular/core';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { INPUT_TYPES, InputType } from '@libs/core/enums';\nimport { FormTextField } from '../../molecules/form-text-field/form-text-field';\nimport { FieldSize } from '../../molecules/form-input/form-input.types';\n\nexport interface FieldOption {\n label: string;\n value: string;\n count?: number;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ncim-form-checkbox-radio',\n imports: [CheckboxModule, RadioButtonModule, FormsModule, TranslatePipe, FormTextField],\n templateUrl: './form-checkbox-radio.html',\n styleUrl: './form-checkbox-radio.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormCheckboxRadio implements AfterViewInit {\n // ── Inputs ────────────────────────────────────────────────────────────────\n\n readonly type = input.required<InputType>();\n readonly options = input<FieldOption[]>([]);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly layout = input<'vertical' | 'horizontal'>('vertical');\n readonly size = input<FieldSize>('medium');\n readonly icon = input<string>('');\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Required for radio groups so the browser groups the inputs correctly */\n readonly name = input<string>(`field-${Math.random().toString(36).slice(2, 8)}`);\n\n // ── Value models ──────────────────────────────────────────────────────────\n\n /** radio: single selected value */\n readonly value = model<string>('');\n\n /** checkbox / checkbox-search: array of selected values */\n readonly multiValue = model<string[]>([]);\n\n // ── Internal ──────────────────────────────────────────────────────────────\n\n readonly searchQuery = signal('');\n\n // ── Computed ──────────────────────────────────────────────────────────────\n\n readonly isRadio = computed(() => this.type() === INPUT_TYPES.RADIO);\n readonly isCheckboxSearch = computed(() => this.type() === INPUT_TYPES.CHECKBOX_SEARCH);\n\n readonly filteredOptions = computed(() => {\n if (!this.isCheckboxSearch()) {\n return this.options();\n }\n const q = this.searchQuery().trim().toLowerCase();\n if (!q) {\n return this.options();\n }\n return this.options().filter(o => o.label.toLowerCase().includes(q));\n });\n\n // ── Event handlers ────────────────────────────────────────────────────────\n\n onSearchInput(value: string): void {\n this.searchQuery.set(value);\n }\n\n onCheckboxChange(selected: string[]): void {\n this.multiValue.set(selected);\n }\n\n onRadioChange(selected: string): void {\n this.value.set(selected);\n }\n\n ngAfterViewInit(): void {\n // Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\n // Add 'implements AfterViewInit' to the class.\n console.warn(this.type());\n }\n}\n","@if (isCheckboxSearch()) {\n <!-- Wrap in the same bordered wrapper form-input uses so border + icon appear -->\n <div class=\"form-input__wrapper fcr__search-wrapper\">\n <ncim-form-text-field\n type=\"text\"\n [value]=\"searchQuery()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onSearchInput($event)\"\n />\n </div>\n}\n\n@if (isRadio()) {\n <!-- ── Radio group ────────────────────────────────────────────────────── -->\n <ul class=\"fcr__list\" [class.fcr__list--horizontal]=\"layout() === 'horizontal'\" role=\"radiogroup\">\n @for (option of options(); track option.value) {\n <li class=\"fcr__item\">\n <p-radiobutton\n [value]=\"option.value\"\n [name]=\"name()\"\n [ngModel]=\"value()\"\n [disabled]=\"disabled() || !!option.disabled\"\n [inputId]=\"name() + '-' + option.value\"\n (ngModelChange)=\"onRadioChange($event)\"\n />\n <label [for]=\"name() + '-' + option.value\" class=\"fcr__label\">\n <span class=\"fcr__label-text\">{{ option.label }}</span>\n @if (option.count && option.count !== null) {\n <span class=\"fcr__count\">({{ option.count }})</span>\n }\n </label>\n </li>\n }\n </ul>\n} @else {\n <!-- ── Checkbox group (plain or with search filter) ──────────────────── -->\n <ul class=\"fcr__list\" [class.fcr__list--horizontal]=\"layout() === 'horizontal'\">\n @for (option of filteredOptions(); track option.value) {\n <li class=\"fcr__item\">\n <p-checkbox\n [value]=\"option.value\"\n [ngModel]=\"multiValue()\"\n [disabled]=\"disabled() || !!option.disabled\"\n [inputId]=\"name() + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange($event)\"\n />\n <label [for]=\"name() + '-' + option.value\" class=\"fcr__label\">\n <span class=\"fcr__label-text\">{{ option.label }}</span>\n @if (option.count !== null) {\n <span class=\"fcr__count\">({{ option.count }})</span>\n }\n </label>\n </li>\n }\n\n @if (isCheckboxSearch() && filteredOptions().length === 0) {\n <li class=\"fcr__empty\">{{ 'FILTER.NO_RESULTS' | translate }}</li>\n }\n </ul>\n}\n","import {\n Component,\n input,\n model,\n signal,\n inject,\n computed,\n ChangeDetectionStrategy,\n DestroyRef,\n afterNextRender,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { type InputType, INPUT_TYPES } from '@libs/core/enums';\nimport { ERROR_KEYS, VALIDATION_LENGTHS, PHONE_CONFIG } from '@libs/core/constants';\nimport { FormError } from '../../atoms/form-error/form-error';\nimport { FormLabel } from '../../atoms/form-label/form-label';\nimport { FormPasswordToggle } from '../../atoms/form-password-toggle/form-password-toggle';\nimport { FormSelect } from '../form-select/form-select';\nimport { FormMultiSelect } from '../form-multi-select/form-multi-select';\nimport { SelectOption } from '../form-select/select-option.interface';\nimport { FormTextField } from '../form-text-field/form-text-field';\nimport { FormDatePicker } from '../form-date-picker/form-date-picker';\nimport { Icon } from '../../atoms/icon/icon';\nimport { FormCheckboxRadio } from '../../atoms/form-checkbox-radio/form-checkbox-radio';\nimport { FieldSize, InputFilter, RestrictInput } from './form-input.types';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nexport type { SelectOption };\n\n@Component({\n selector: 'ncim-form-input',\n imports: [\n FormError,\n FormLabel,\n FormPasswordToggle,\n FormSelect,\n FormMultiSelect,\n FormTextField,\n FormDatePicker,\n Icon,\n FormCheckboxRadio,\n TranslatePipe,\n ],\n templateUrl: './form-input.html',\n styleUrl: './form-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormInput implements ControlValueAccessor {\n readonly phoneConfig = PHONE_CONFIG;\n\n readonly label = input<string>('');\n readonly subText = input<string>('');\n readonly placeholder = input<string>('');\n readonly type = input<InputType>(INPUT_TYPES.TEXT);\n readonly size = input<FieldSize>('medium');\n readonly submitted = input<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n /** When true, date picker overlay is appended to `document.body` (avoids clipping inside popups/dialogs). */\n readonly dateAppendToBody = input<boolean>(false);\n readonly dateSelectionMode = input<'single' | 'multiple' | 'range' | undefined>(undefined);\n readonly dateShowDropdownIcon = input<boolean>(false);\n readonly dateFormat = input<string>('dd/mm/yy');\n readonly rows = input<number>(4);\n readonly layout = input<'vertical' | 'horizontal'>('vertical');\n readonly radioName = input<string>(`field-${Math.random().toString(36).slice(2, 8)}`);\n readonly selectShowFilter = input<boolean>(true);\n readonly selectAppendToBody = input<boolean>(true);\n /** PrimeNG icon class e.g. 'pi pi-search'. Empty string means no icon. */\n readonly icon = input<string>('');\n\n /** Whether the icon appears before or after the input. Defaults to 'end'. */\n readonly iconPosition = input<'start' | 'end'>('end');\n\n /** Restricts input via core directives (arabicOnly, englishOnly, numbersOnly, phoneOnly, trimInput). */\n readonly restrictInput = input<RestrictInput>(null);\n\n /** Optional filter override for text input sanitization (e.g. 'noComma'). */\n readonly filterOverride = input<InputFilter>(null);\n\n /** Overrides the default maxlength on the HTML input element (does not affect validator logic). */\n readonly maxLengthOverride = input<number | null>(null);\n\n /** Per-field error message overrides: maps a validator error key to an i18n translation key.\n * Example: [errorMessages]=\"{ pattern: 'ENTITIES.ERRORS.INVALID_NATIONAL_NUMBER' }\" */\n readonly errorMessages = input<Record<string, string>>({});\n\n readonly value = model<string>('');\n readonly multiValue = model<string[]>([]);\n readonly showPassword = signal(false);\n readonly disabled = model<boolean>(false);\n readonly focused = signal(false);\n readonly touched = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private readonly destroyRef = inject(DestroyRef);\n\n /** Incremented on control `statusChanges` so cross-field validators trigger `errorKey` re-evaluation. */\n private readonly errorVersion = signal(0);\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n afterNextRender(() => {\n const ctrl = this.ngControl?.control;\n if (ctrl) {\n ctrl.statusChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.errorVersion.update(v => v + 1));\n }\n });\n }\n\n private onChange: (value: string) => void = () => {\n // noop — replaced by registerOnChange\n };\n\n private onTouched: () => void = () => {\n // noop — replaced by registerOnTouched\n };\n\n readonly isPassword = computed(() => this.type() === INPUT_TYPES.PASSWORD);\n readonly isSelect = computed(() => this.type() === INPUT_TYPES.SELECT);\n readonly isMultiSelect = computed(() => this.type() === INPUT_TYPES.MULTISELECT);\n readonly isPhone = computed(() => this.type() === INPUT_TYPES.PHONE);\n readonly isDate = computed(() => this.type() === INPUT_TYPES.DATE);\n readonly isDateTime = computed(() => this.type() === INPUT_TYPES.DATETIME);\n readonly isDatePicker = computed(() => this.isDate() || this.isDateTime());\n\n readonly datePickerAppendTo = computed<HTMLElement | 'body' | 'self' | null | undefined>(() =>\n this.dateAppendToBody() ? 'body' : undefined\n );\n\n readonly isTextarea = computed(() => this.type() === INPUT_TYPES.TEXTAREA);\n readonly isCheckboxRadio = computed(\n () =>\n this.type() === INPUT_TYPES.CHECKBOX ||\n this.type() === INPUT_TYPES.RADIO ||\n this.type() === INPUT_TYPES.CHECKBOX_SEARCH\n );\n\n readonly maxLength = computed(() => {\n if (this.type() === INPUT_TYPES.NUMBER) {\n return VALIDATION_LENGTHS.MAX_LENGTH_10;\n }\n if (this.isPhone()) {\n return VALIDATION_LENGTHS.MOBILE;\n }\n return VALIDATION_LENGTHS.MAX_LENGTH_255;\n });\n\n readonly inputType = computed(() => {\n if (this.isPassword()) {\n return this.showPassword() ? 'text' : 'password';\n }\n if (this.isPhone()) {\n return 'tel';\n }\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'text';\n }\n if (this.type() === INPUT_TYPES.DATETIME) {\n return 'datetime-local';\n }\n return this.type();\n });\n\n readonly inputMode = computed(() => {\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'numeric';\n }\n if (this.isPhone()) {\n return 'tel';\n }\n return null;\n });\n\n readonly autocomplete = computed(() => (this.isPhone() ? 'tel' : 'off'));\n\n readonly inputFilter = computed(() => {\n const override = this.filterOverride();\n if (override) {\n return override;\n }\n if (this.type() === INPUT_TYPES.NUMBER) {\n return 'numeric';\n }\n if (this.isPhone()) {\n return 'phone';\n }\n return null;\n });\n\n private static readonly ERROR_MAP: Record<string, string> = {\n required: ERROR_KEYS.REQUIRED,\n email: ERROR_KEYS.INVALID_EMAIL,\n min: ERROR_KEYS.MIN_VALUE,\n max: ERROR_KEYS.MAX_VALUE,\n identityInvalid: ERROR_KEYS.IDENTITY_INVALID,\n idNumberInvalid: ERROR_KEYS.IDENTITY_INVALID,\n invalidEmail: ERROR_KEYS.INVALID_EMAIL,\n invalidPhone: ERROR_KEYS.INVALID_PHONE,\n invalidPhoneSa05: ERROR_KEYS.INVALID_PHONE_SA_05,\n invalidUrl: ERROR_KEYS.INVALID_URL,\n invalidIban: ERROR_KEYS.INVALID_IBAN,\n invalidCrNumber: ERROR_KEYS.INVALID_CR_NUMBER,\n invalidShortAddress: ERROR_KEYS.INVALID_SHORT_ADDRESS,\n passwordMismatch: ERROR_KEYS.PASSWORD_MISMATCH,\n confirmationMismatch: ERROR_KEYS.CONFIRMATION_MISMATCH,\n weakPassword: ERROR_KEYS.WEAK_PASSWORD,\n numbersOnly: ERROR_KEYS.NUMBERS_ONLY,\n lettersOnly: ERROR_KEYS.LETTERS_ONLY,\n arabicOnly: ERROR_KEYS.ARABIC_ONLY,\n englishOnly: ERROR_KEYS.ENGLISH_ONLY,\n alphanumericOnly: ERROR_KEYS.ALPHANUMERIC_ONLY,\n noWhitespace: ERROR_KEYS.WHITESPACE_ONLY,\n dateBeforeMin: ERROR_KEYS.DATE_BEFORE_MIN,\n dateAfterMax: ERROR_KEYS.DATE_AFTER_MAX,\n percentageExceedsTotal: ERROR_KEYS.PERCENTAGE_EXCEEDS_TOTAL,\n stageTakes100: ERROR_KEYS.STAGE_TAKES_100,\n totalLessThan100: ERROR_KEYS.TOTAL_LESS_THAN_100,\n };\n\n readonly errorKey = computed<string>(() => {\n this.value();\n this.errorVersion();\n\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n const errorNames = Object.keys(control.errors);\n const isNumber = this.type() === INPUT_TYPES.NUMBER;\n\n for (const errorName of errorNames) {\n if (this.errorMessages()[errorName]) {\n return this.errorMessages()[errorName];\n }\n if (errorName === 'minlength') {\n if (this.isPassword()) {\n return ERROR_KEYS.PASSWORD_MIN_LENGTH;\n }\n if (isNumber) {\n return ERROR_KEYS.IDENTITY_MIN_LENGTH;\n }\n return ERROR_KEYS.MIN_LENGTH;\n }\n if (errorName === 'maxlength') {\n return isNumber ? ERROR_KEYS.IDENTITY_MAX_LENGTH : ERROR_KEYS.MAX_LENGTH;\n }\n if (errorName === 'pattern') {\n return isNumber ? ERROR_KEYS.IDENTITY_INVALID : ERROR_KEYS.INVALID_FORMAT;\n }\n if (FormInput.ERROR_MAP[errorName]) {\n return FormInput.ERROR_MAP[errorName];\n }\n }\n\n return '';\n });\n\n readonly showError = computed<boolean>(\n () => !!this.errorKey() && ((this.touched() && !this.focused()) || this.submitted())\n );\n\n togglePassword(): void {\n this.showPassword.update(v => !v);\n }\n\n onInput(value: string): void {\n this.updateValue(value);\n }\n\n onDateChange(value: string): void {\n this.updateValue(value);\n }\n\n onSelectChange(value: string): void {\n this.updateValue(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onRadioChange(value: string): void {\n this.updateValue(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onCheckboxChange(value: string[]): void {\n this.multiValue.set(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n onMultiSelectChange(value: string[]): void {\n this.multiValue.set(value);\n this.touched.set(true);\n this.onTouched();\n }\n\n private updateValue(value: string): void {\n this.value.set(value);\n this.onChange(value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.touched.set(true);\n this.onTouched();\n }\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n this.touched.set(false);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<ncim-form-label [text]=\"label() | translate\" [subText]=\"subText() | translate\" />\n\n<div\n class=\"form-input__wrapper\"\n [class.form-input__wrapper]=\"!isCheckboxRadio()\"\n [class.test]=\"!isCheckboxRadio()\"\n [class.form-input__wrapper--focused]=\"focused()\"\n [class.form-input__wrapper--disabled]=\"disabled()\"\n [class.form-input__wrapper--error]=\"showError()\"\n [class.form-input__wrapper--has-toggle]=\"isPassword()\"\n [class.form-input__wrapper--textarea]=\"isTextarea()\"\n [class.is-ltr]=\"isPhone()\"\n [class.form-input__wrapper--small]=\"size() === 'small'\"\n [class.form-input__wrapper--medium]=\"size() === 'medium'\"\n [class.form-input__wrapper--large]=\"size() === 'large'\"\n [class.form-input__wrapper--borderless]=\"isCheckboxRadio()\"\n>\n @if (isSelect()) {\n <ncim-form-select\n [value]=\"value()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [appendToBody]=\"selectAppendToBody()\"\n />\n } @else if (isMultiSelect()) {\n <ncim-form-multi-select\n [value]=\"multiValue()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onMultiSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [filter]=\"selectShowFilter()\"\n />\n } @else if (isDatePicker()) {\n <ncim-form-date-picker\n [value]=\"value()\"\n [rangeValue]=\"multiValue()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [appendTo]=\"datePickerAppendTo()\"\n [selectionMode]=\"dateSelectionMode() ?? 'single'\"\n [dateFormat]=\"dateFormat()\"\n (valueChange)=\"onDateChange($event)\"\n (rangeValueChange)=\"onMultiSelectChange($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n [showDropdownIcon]=\"dateShowDropdownIcon()\"\n />\n } @else if (isTextarea()) {\n <textarea\n class=\"form-input__textarea\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n [attr.maxlength]=\"maxLength()\"\n (input)=\"onInput($any($event).target.value)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n } @else if (isCheckboxRadio()) {\n <ncim-form-checkbox-radio\n [type]=\"type()\"\n [options]=\"options()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [layout]=\"layout()\"\n [name]=\"radioName()\"\n [value]=\"value()\"\n [multiValue]=\"multiValue()\"\n (valueChange)=\"onRadioChange($event)\"\n (multiValueChange)=\"onCheckboxChange($event)\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n />\n } @else {\n @if (isPhone()) {\n <div class=\"form-input__countrycode\" aria-hidden=\"true\">\n <ncim-icon [name]=\"phoneConfig.FLAG_ICON\" [size]=\"18\" />\n <span>{{ phoneConfig.COUNTRY_CODE }}</span>\n </div>\n }\n\n <ncim-form-text-field\n [type]=\"inputType()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder() | translate\"\n [disabled]=\"disabled()\"\n [size]=\"size()\"\n [inputMode]=\"inputMode()\"\n [maxLength]=\"maxLength()\"\n [hasToggle]=\"isPassword()\"\n [autocomplete]=\"autocomplete()\"\n [filter]=\"inputFilter()\"\n [restrictInput]=\"restrictInput()\"\n [icon]=\"icon()\"\n [iconPosition]=\"iconPosition()\"\n (valueChange)=\"onInput($event)\"\n (focusEvent)=\"onFocus()\"\n (blurEvent)=\"onBlur()\"\n />\n }\n\n @if (isPassword()) {\n <ncim-form-password-toggle [showPassword]=\"showPassword()\" (togglePassword)=\"togglePassword()\" />\n }\n</div>\n\n<ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\nimport type { QuickFilterTag } from './quick-filter-bar.models';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-quick-filter-bar',\n templateUrl: './quick-filter-bar.html',\n styleUrl: './quick-filter-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, TranslateModule, Icon],\n})\nexport class QuickFilterBar {\n readonly activeFilters = input<QuickFilterTag[]>([]);\n readonly showSaveFilter = input<boolean>(true);\n readonly showClearAll = input<boolean>(true);\n readonly quickFilterCounter = input<number>(0);\n /** Dynamic title rendered as plain text (caller handles translation) */\n readonly title = input<string>('');\n /** CSS gap value for the tags row (e.g. \"8px\", \"var(--space-sm)\"). Defaults to SCSS variable. */\n readonly tagGap = input<string>('');\n /** Show an × remove button on each tag */\n readonly showRemoveButton = input<boolean>(false);\n /** justify-content for the row containing tags + actions. Defaults to 'space-between'. */\n readonly rowJustify = input<string>('space-between');\n\n readonly saveFilterClick = output<void>();\n readonly clearAllClick = output<void>();\n readonly filterTagClick = output<QuickFilterTag>();\n}\n","<!-- @if (quickFilterCounter()) {\n <div class=\"quick-filter-bar__results\">\n <span class=\"quick-filter-bar__results-count\">\n {{ 'SHARED.RESULTS_COUNT' | translate: { count: quickFilterCounter() } }}\n </span>\n </div>\n} -->\n\n<div class=\"quick-filter-bar\">\n @if (title()) {\n <div class=\"quick-filter-bar__title w-100\">{{ title() }}</div>\n }\n\n <div class=\"quick-filter-bar__row\" [style.justify-content]=\"rowJustify()\">\n <div class=\"quick-filter-bar__tags\" [style.gap]=\"tagGap() || null\">\n @for (tag of activeFilters(); track tag.key ?? $index) {\n @if (tag.values && tag.values.length > 0) {\n <div class=\"quick-filter-bar__tag-group quick-filter-bar__tag\">\n {{ tag.label | translate }} ({{ tag.count }}):\n @for (val of tag.values; track $index) {\n <div\n role=\"button\"\n tabindex=\"0\"\n (click)=\"filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\"\n (keydown.enter)=\"filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\"\n (keydown.space)=\"\n $event.preventDefault(); filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\n \"\n [attr.aria-label]=\"tag.label + ': ' + (val ?? '')\"\n >\n <span\n >{{ val ?? '' | translate }}\n @if (showRemoveButton()) {\n <button\n type=\"button\"\n class=\"quick-filter-bar__tag-remove\"\n (click)=\"\n $event.stopPropagation(); filterTagClick.emit({ key: tag.key, label: tag.label, count: 1, value: val ?? '' })\n \"\n [attr.aria-label]=\"'Remove filter ' + (val ?? '')\"\n >\n <ncim-icon name=\"remove\" [size]=\"20\" />\n </button>\n }\n </span>\n </div>\n }\n </div>\n } @else {\n <div\n role=\"button\"\n tabindex=\"0\"\n class=\"quick-filter-bar__tag\"\n (click)=\"filterTagClick.emit(tag)\"\n (keydown.enter)=\"filterTagClick.emit(tag)\"\n (keydown.space)=\"$event.preventDefault(); filterTagClick.emit(tag)\"\n [attr.aria-label]=\"tag.label + ': ' + tag.value\"\n >\n {{ tag.label | translate }} ({{ tag.count }}):\n <span\n >{{ tag.value | translate }}\n @if (showRemoveButton()) {\n <button\n type=\"button\"\n class=\"quick-filter-bar__tag-remove\"\n (click)=\"$event.stopPropagation(); filterTagClick.emit(tag)\"\n [attr.aria-label]=\"'Remove filter ' + tag.label\"\n >\n <ncim-icon name=\"remove\" [size]=\"20\" />\n </button>\n }\n </span>\n </div>\n }\n } @empty {\n <div class=\"quick-filter-bar__empty\">{{ 'REGULATORY_DASHBOARD.NO_ACTIVE_FILTERS' | translate }}</div>\n }\n </div>\n\n <div class=\"quick-filter-bar__actions\">\n @if (showSaveFilter()) {\n <ncim-button variant=\"neutral\" [fullWidth]=\"false\" size=\"small\" icon=\"bookmark\" [iconSize]=\"18\" (click)=\"saveFilterClick.emit()\">\n {{ 'REGULATORY_DASHBOARD.SAVE_FILTER' | translate }}\n </ncim-button>\n }\n @if (showClearAll() && activeFilters().length > 0) {\n <ncim-button\n class=\"quick-filter-bar__clear\"\n variant=\"outline\"\n [fullWidth]=\"false\"\n size=\"medium\"\n icon=\"trash-icon-fill\"\n [iconSize]=\"20\"\n (click)=\"clearAllClick.emit()\"\n >\n {{ 'REGULATORY_DASHBOARD.CLEAR_ALL' | translate }}\n </ncim-button>\n }\n </div>\n </div>\n</div>\n","import {\n Component,\n input,\n output,\n computed,\n effect,\n linkedSignal,\n ChangeDetectionStrategy,\n OnDestroy,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\nimport { FormInput } from '../../molecules/form-input/form-input';\nimport { QuickFilterBar } from '../../molecules/quick-filter-bar/quick-filter-bar';\nimport type { QuickFilterTag } from '../../molecules/quick-filter-bar/quick-filter-bar.models';\nimport { INPUT_TYPES, type InputType } from '@libs/core/enums';\nimport { FilterFieldConfig, FilterFieldType, FilterFormConfig } from './filter-field-config.interface';\nexport type { FilterFieldConfig, FilterFieldType, FilterFormConfig } from './filter-field-config.interface';\n\ntype FieldValue = any | string | string[];\ntype FilterValues = Record<string, FieldValue>;\nconst MULTI_TYPES = new Set<string>(['checkbox', 'checkbox-search', 'multiselect', 'date-range']);\n\n@Component({\n selector: 'ncim-filter-form',\n imports: [FormInput, QuickFilterBar, TranslatePipe],\n templateUrl: './filter-form.html',\n styleUrl: './filter-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterForm implements OnDestroy {\n readonly config = input.required<FilterFormConfig>();\n readonly quickFilterTitle = input<string>('');\n readonly quickFilterCounter = input<number>(0);\n\n readonly filterChange = output<FilterValues>();\n readonly filterSubmit = output<FilterValues>();\n readonly filterReset = output<void>();\n readonly saveFilterClick = output<void>();\n\n readonly model = linkedSignal<FilterValues>(() =>\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig): [string, FieldValue] => [f.key, this.defaultFor(f)])\n )\n );\n\n readonly showReset = computed(() => this.config().showReset ?? true);\n readonly showSubmit = computed(() => this.config().showSubmit ?? false);\n readonly showQuickFilterBar = computed(() => this.config().showQuickFilterBar ?? false);\n readonly showSaveFilter = computed(() => this.config().showSaveFilter ?? true);\n readonly showClearAll = computed(() => this.config().showClearAll ?? true);\n readonly showRemoveOnTag = computed(() => this.config().showRemoveOnTag ?? false);\n readonly quickFilterTagGap = computed(() => this.config().quickFilterTagGap ?? '');\n readonly quickFilterRowJustify = computed(() => this.config().quickFilterRowJustify ?? 'space-between');\n readonly showDivider = computed(() => this.config().showDivider ?? false);\n\n readonly gridTemplateColumns = computed(() => {\n const cfg = this.config();\n if (cfg.columns != null) {\n return `repeat(${cfg.columns}, minmax(0, 1fr))`;\n }\n return cfg.fields.map(f => f.width ?? '1fr').join(' ');\n });\n\n readonly hasActiveFilters = computed(() =>\n Object.values(this.model()).some(v => (Array.isArray(v) ? v.length > 0 : v !== ''))\n );\n\n readonly fieldStringValues = computed<Record<string, string>>(() =>\n Object.fromEntries(Object.entries(this.model()).map(([k, v]) => [k, typeof v === 'string' ? v : '']))\n );\n\n readonly fieldMultiValues = computed<Record<string, string[]>>(() =>\n Object.fromEntries(Object.entries(this.model()).map(([k, v]) => [k, Array.isArray(v) ? v : []]))\n );\n\n readonly activeFilterTags = computed((): QuickFilterTag[] =>\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .flatMap(f => {\n const v = this.model()[f.key];\n if (f.type === 'date-range') {\n if (!Array.isArray(v) || !(v as string[]).some(Boolean)) {\n return [];\n }\n const validDates = (v as string[]).filter(Boolean);\n return [{ key: f.key, label: f.label ?? f.placeholder ?? f.key, value: validDates.join(' - '), count: 1 }];\n }\n if (Array.isArray(v)) {\n if (v.length === 0) {\n return [];\n }\n const displayValues = v.map(sel => f.options?.find(o => o.value === sel)?.label ?? sel);\n return [\n { key: f.key, label: f.label ?? f.placeholder ?? f.key, value: '', values: displayValues, count: v.length },\n ];\n }\n if (!v) {\n return [];\n }\n const displayValue = f.type === 'select' ? (f.options?.find(o => o.value === v)?.label ?? v) : v;\n return [{ key: f.key, label: f.label ?? f.placeholder ?? f.key, value: displayValue, count: 1 }];\n })\n );\n\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n effect(() => {\n const values = this.model();\n const debounceMs = this.config().debounceMs ?? 300;\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n this._debounceTimer = setTimeout(() => this.filterChange.emit(values), debounceMs);\n });\n }\n\n ngOnDestroy(): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n }\n\n // ── Helpers ────────────────────────────────────────────────────────────────\n\n isMultiField(field: FilterFieldConfig): boolean {\n return MULTI_TYPES.has(field.type);\n }\n\n resolveInputType(field: FilterFieldConfig): InputType {\n const map: Record<string, InputType> = {\n text: INPUT_TYPES.TEXT,\n search: INPUT_TYPES.TEXT,\n select: INPUT_TYPES.SELECT,\n multiselect: INPUT_TYPES.MULTISELECT,\n date: INPUT_TYPES.DATE,\n datetime: INPUT_TYPES.DATETIME,\n number: INPUT_TYPES.NUMBER,\n checkbox: INPUT_TYPES.CHECKBOX,\n 'checkbox-search': INPUT_TYPES.CHECKBOX_SEARCH,\n radio: INPUT_TYPES.RADIO,\n 'date-range': INPUT_TYPES.DATE,\n };\n return map[field.type] ?? INPUT_TYPES.TEXT;\n }\n\n stringValue(field: FilterFieldConfig): string {\n const v = this.model()[field.key];\n return typeof v === 'string' ? v : '';\n }\n\n multiValue(field: FilterFieldConfig): string[] {\n const v = this.model()[field.key];\n return Array.isArray(v) ? v : [];\n }\n\n // ── Events ─────────────────────────────────────────────────────────────────\n\n onFieldChange(key: string, value: string): void {\n const field = this.config().fields.find(f => f.key === key);\n const sanitized = field?.type === 'text' || field?.type === 'search' ? this.sanitizeText(value) : value;\n this.model.update(current => ({ ...current, [key]: sanitized }));\n }\n\n private sanitizeText(value: string): string {\n return value\n .replace(/<script[\\s\\S]*?>[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/javascript\\s*:/gi, '')\n .replace(/on\\w+\\s*=/gi, '')\n .replace(/[<>]/g, '')\n .replace(/,/g, '');\n }\n\n onMultiChange(key: string, value: string[]): void {\n this.model.update(current => ({ ...current, [key]: value }));\n }\n\n onSubmit(): void {\n this.filterSubmit.emit(this.model());\n }\n\n onReset(): void {\n this.model.set(\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig) => [f.key, this.defaultFor(f)])\n )\n );\n this.filterReset.emit();\n }\n\n onClearAll(): void {\n this.model.set(\n Object.fromEntries(\n this.config()\n .fields.filter(f => f.type !== 'divider')\n .map((f: FilterFieldConfig): [string, FieldValue] => [f.key, MULTI_TYPES.has(f.type) ? [] : ''])\n )\n );\n this.filterReset.emit();\n }\n\n onFilterTagClick(tag: QuickFilterTag): void {\n if (!tag.key) {\n return;\n }\n const field = this.config().fields.find(f => f.key === tag.key);\n if (field?.type === 'date-range') {\n this.model.update(current => ({ ...current, [tag.key!]: [] }));\n } else if (field && this.isMultiField(field)) {\n // tag.value holds the display label of the specific badge clicked — find raw value and remove it\n const removeVal = field.options?.find(o => o.label === tag.value)?.value ?? tag.value;\n this.model.update(current => ({\n ...current,\n [tag.key!]: (current[tag.key!] as string[]).filter(v => v !== removeVal),\n }));\n } else {\n this.model.update(current => ({ ...current, [tag.key!]: '' }));\n }\n }\n\n private defaultFor(f: FilterFieldConfig): FieldValue {\n if (MULTI_TYPES.has(f.type)) {\n try {\n return f.defaultValue ? JSON.parse(f.defaultValue) : [];\n } catch {\n return [];\n }\n }\n return f.defaultValue ?? '';\n }\n}\n","<form class=\"filter-form\" (submit)=\"$event.preventDefault(); onSubmit()\">\n <div class=\"filter-form__grid\" [style.grid-template-columns]=\"gridTemplateColumns()\">\n @for (field of config().fields; track field.key) {\n <div class=\"filter-form__cell\" [style.grid-column]=\"config().columns != null ? 'span ' + (field.colspan ?? 1) : ''\">\n @if (field.type === 'divider') {\n <hr class=\"filter-form__divider my-2\" />\n } @else if (isMultiField(field)) {\n <ncim-form-input\n [type]=\"resolveInputType(field)\"\n [label]=\"field.label ?? ''\"\n [subText]=\"field.subLabel ?? ''\"\n [placeholder]=\"field.placeholder ?? ''\"\n [icon]=\"field.icon ?? ''\"\n [iconPosition]=\"field.iconPosition ?? 'end'\"\n [options]=\"field.options ?? []\"\n [layout]=\"field.layout ?? 'vertical'\"\n [radioName]=\"field.radioName ?? ''\"\n [disabled]=\"field.disabled ?? false\"\n [dateSelectionMode]=\"field.type === 'date-range' ? 'range' : 'single'\"\n [dateShowDropdownIcon]=\"true\"\n [selectShowFilter]=\"false\"\n [multiValue]=\"fieldMultiValues()[field.key]\"\n (multiValueChange)=\"onMultiChange(field.key, $event)\"\n />\n } @else {\n <ncim-form-input\n [type]=\"resolveInputType(field)\"\n [label]=\"field.label ?? ''\"\n [subText]=\"field.subLabel ?? ''\"\n [placeholder]=\"field.placeholder ?? ''\"\n [icon]=\"field.icon ?? ''\"\n [iconPosition]=\"field.iconPosition ?? 'end'\"\n [options]=\"field.options ?? []\"\n [disabled]=\"field.disabled ?? false\"\n [filterOverride]=\"field.inputFilter ?? null\"\n [value]=\"fieldStringValues()[field.key]\"\n (valueChange)=\"onFieldChange(field.key, $event)\"\n />\n }\n </div>\n }\n </div>\n\n @if (showSubmit() || showReset()) {\n <div class=\"filter-form__actions\">\n @if (showSubmit()) {\n <button type=\"submit\" class=\"filter-form__btn filter-form__btn--primary\">\n {{ 'FILTER.APPLY' | translate }}\n </button>\n }\n @if (showReset()) {\n <button type=\"button\" class=\"filter-form__btn filter-form__btn--ghost\" [disabled]=\"!hasActiveFilters()\" (click)=\"onReset()\">\n {{ 'FILTER.RESET' | translate }}\n </button>\n }\n </div>\n }\n\n @if (showQuickFilterBar() && hasActiveFilters()) {\n <ncim-quick-filter-bar\n [activeFilters]=\"activeFilterTags()\"\n [showSaveFilter]=\"showSaveFilter()\"\n [showClearAll]=\"showClearAll()\"\n [title]=\"quickFilterTitle()\"\n [showRemoveButton]=\"showRemoveOnTag()\"\n [tagGap]=\"quickFilterTagGap()\"\n [rowJustify]=\"quickFilterRowJustify()\"\n (saveFilterClick)=\"saveFilterClick.emit()\"\n (clearAllClick)=\"onClearAll()\"\n (filterTagClick)=\"onFilterTagClick($event)\"\n [quickFilterCounter]=\"quickFilterCounter()\"\n />\n }\n</form>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { PHONE_CONFIG } from '@libs/core/constants';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-package-feature-card',\n imports: [TranslatePipe, Icon],\n templateUrl: './package-feature-card.html',\n styleUrl: './package-feature-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PackageFeatureCard {\n title = input<string>('');\n description = input<string>('');\n popular = input<boolean>(false);\n special = input<boolean>(false);\n price = input<string | number | null>(null);\n period = input<'monthly' | 'yearly'>('yearly');\n}\n","<div class=\"package__card\">\n <div class=\"package__header\">\n <div>\n <h3 class=\"package__title\">\n <span> {{ title() }}</span>\n @if (popular()) {\n <span class=\"package__badge\">{{ 'AUTH.REGISTER.PACKAGE_POPULAR' | translate }}</span>\n }\n @if (special()) {\n <span class=\"package__badge package__badge--secondary\">{{ 'AUTH.REGISTER.PACKAGE_SPECIAL' | translate }}</span>\n }\n </h3>\n <p class=\"package__description\">{{ description() }}</p>\n </div>\n\n <div>\n @if (price()) {\n <div class=\"price\">\n <span class=\"price__value\">{{ price() }}</span>\n <ncim-icon name=\"sar-icon\" [size]=\"22\" />\n <span class=\"price__period\">/{{ (period() === 'monthly' ? 'COMMON.MONTHLY' : 'COMMON.YEARLY') | translate }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"package__body\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"package__confirmation\">\n <ng-content select=\"[confirmation]\"></ng-content>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-bullet-list',\n imports: [TranslatePipe, Icon],\n templateUrl: './bullet-list.html',\n styleUrl: './bullet-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BulletList {\n items = input.required<string[]>();\n maxColumns = input<number>(1);\n}\n","<ul class=\"bullet-list\" [style.grid-template-columns]=\"'repeat(' + maxColumns() + ', 1fr)'\">\n <!-- track $index: list order is fixed, items have no stable id -->\n @for (item of items(); track $index) {\n <li class=\"bullet-list__item\">\n <ncim-icon name=\"checked\" [size]=\"15\" class=\"bullet-list__icon\" />\n <span>{{ item | translate }}</span>\n </li>\n }\n</ul>\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, input, output, signal } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'ncim-checkbox',\n imports: [Icon],\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Checkbox implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly inputId = input<string | undefined>(undefined);\n readonly checked = signal(false);\n readonly disabled = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n @HostBinding('class.disabled') get disabledClass() {\n return this.disabled();\n }\n\n changed = output<boolean>();\n\n private onChange: (value: boolean) => void = noop;\n private onTouched: () => void = () => noop;\n\n onToggle(): void {\n if (this.disabled()) {\n return;\n }\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.changed.emit(newValue);\n }\n\n writeValue(value: boolean): void {\n this.checked.set(value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","<label class=\"checkbox__label\">\n <input type=\"checkbox\" class=\"checkbox__input\" [id]=\"inputId()\" [checked]=\"checked()\" [disabled]=\"disabled()\" (change)=\"onToggle()\" />\n <span class=\"checkbox__box\">\n <ncim-icon name=\"check\" [size]=\"12\" class=\"checkbox__icon\" />\n </span>\n <span class=\"checkbox__text\">{{ label() }}</span>\n</label>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport type SkeletonVariant =\n | 'text'\n | 'circular'\n | 'rectangular'\n | 'rounded'\n | 'avatar'\n | 'button'\n | 'chip'\n | 'card'\n | 'image'\n | 'header'\n | 'paragraph'\n | 'divider'\n | 'badge'\n | 'input';\nexport type SkeletonAnimation = 'pulse' | 'wave' | 'none';\n\n@Component({\n selector: 'ncim-skeleton',\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule],\n})\nexport class Skeleton {\n /** Shape variant of the skeleton */\n readonly variant = input<SkeletonVariant>('text');\n\n /** Animation style */\n readonly animation = input<SkeletonAnimation>('wave');\n\n /** Width — accepts any CSS value (px, %, rem, etc.). Defaults to 100% for most variants. */\n readonly width = input<string>('');\n\n /** Height — accepts any CSS value. Auto-calculated for text variant if not set. */\n readonly height = input<string>('');\n\n /** Border radius — override the variant's default radius */\n readonly borderRadius = input<string>('');\n\n /** Number of skeleton lines to render (useful for paragraph placeholders) */\n readonly count = input<number>(1);\n\n /** Gap between repeated lines */\n readonly gap = input<string>('12px');\n\n /** Whether the last line in a multi-line skeleton should be shorter */\n readonly shrinkLastLine = input<boolean>(true);\n\n /** Custom aspect ratio (e.g. '16/9', '1/1') — sets height automatically via CSS */\n readonly aspectRatio = input<string>('');\n\n /** Lines array derived from count */\n readonly lines = computed(() => Array.from({ length: this.count() }, (_, i) => i));\n\n /** Whether this is a multi-line skeleton */\n readonly isMultiLine = computed(() => this.count() > 1);\n\n /** Computed inline styles for the skeleton element */\n readonly skeletonStyles = computed(() => {\n const styles: Record<string, string> = {};\n\n const w = this.width();\n const h = this.height();\n const br = this.borderRadius();\n const ar = this.aspectRatio();\n\n if (w) {\n styles['width'] = w;\n }\n if (h) {\n styles['height'] = h;\n }\n if (br) {\n styles['border-radius'] = br;\n }\n if (ar) {\n styles['aspect-ratio'] = ar;\n }\n\n return styles;\n });\n\n /** Computed container styles (gap for multi-line) */\n readonly containerStyles = computed(() => {\n const styles: Record<string, string> = {};\n if (this.isMultiLine()) {\n styles['gap'] = this.gap();\n }\n return styles;\n });\n\n /** Whether a specific line is the last and should shrink */\n isLastLine(index: number): boolean {\n return this.shrinkLastLine() && this.isMultiLine() && index === this.count() - 1;\n }\n}\n","<div\n class=\"skeleton-container\"\n [class.skeleton-container--multi]=\"isMultiLine()\"\n [style]=\"containerStyles()\"\n role=\"status\"\n [attr.aria-label]=\"'ARIA.LOADING_CONTENT' | translate\"\n>\n @for (i of lines(); track i) {\n <span\n class=\"skeleton\"\n [class.skeleton--text]=\"variant() === 'text'\"\n [class.skeleton--circular]=\"variant() === 'circular'\"\n [class.skeleton--rectangular]=\"variant() === 'rectangular'\"\n [class.skeleton--rounded]=\"variant() === 'rounded'\"\n [class.skeleton--avatar]=\"variant() === 'avatar'\"\n [class.skeleton--button]=\"variant() === 'button'\"\n [class.skeleton--chip]=\"variant() === 'chip'\"\n [class.skeleton--card]=\"variant() === 'card'\"\n [class.skeleton--image]=\"variant() === 'image'\"\n [class.skeleton--header]=\"variant() === 'header'\"\n [class.skeleton--paragraph]=\"variant() === 'paragraph'\"\n [class.skeleton--divider]=\"variant() === 'divider'\"\n [class.skeleton--badge]=\"variant() === 'badge'\"\n [class.skeleton--input]=\"variant() === 'input'\"\n [class.skeleton--pulse]=\"animation() === 'pulse'\"\n [class.skeleton--wave]=\"animation() === 'wave'\"\n [class.skeleton--no-animation]=\"animation() === 'none'\"\n [class.skeleton--last]=\"isLastLine(i)\"\n [style]=\"skeletonStyles()\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"sr-only\">{{ 'COMMON.LOADING' | translate }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, effect, input, signal } from '@angular/core';\nimport { LOADING_DELAY_MS } from '@libs/core/constants';\nimport { Icon } from '../../atoms/icon/icon';\nimport { Skeleton } from '../../atoms/skeleton/skeleton';\n\n@Component({\n selector: 'ncim-cards-statistics',\n imports: [Icon, Skeleton],\n templateUrl: './cards-statistics.html',\n styleUrl: './cards-statistics.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardsStatistics {\n readonly title = input<string>('');\n readonly totalNumber = input<number | string>(0);\n readonly icon = input.required<string>();\n readonly iconColor = input<string>('');\n readonly iconBackgroundColor = input<string>('');\n readonly trendPercentage = input<number>(0);\n readonly trendLabel = input<string>('');\n readonly bgImage = input<string>('');\n readonly progressIcon = input<string>('arrowUp');\n readonly loading = input(false);\n readonly loadingDelay = input(LOADING_DELAY_MS);\n\n readonly showSkeleton = signal(true);\n\n constructor() {\n effect(() => {\n const isLoading = this.loading();\n const delay = this.loadingDelay();\n\n if (isLoading) {\n this.showSkeleton.set(true);\n return;\n }\n\n const timer = setTimeout(() => {\n this.showSkeleton.set(false);\n }, delay);\n\n return () => clearTimeout(timer);\n });\n }\n}\n","<div class=\"card-statistics\">\n @if (showSkeleton()) {\n <div class=\"card-content card-statistics__skeleton\">\n <ncim-skeleton variant=\"header\" [width]=\"'60%'\" [height]=\"'20px'\" />\n <ncim-skeleton variant=\"header\" [width]=\"'40%'\" [height]=\"'28px'\" />\n <div class=\"card-footer-row\">\n <ncim-skeleton variant=\"text\" [width]=\"'80px'\" [height]=\"'20px'\" />\n <ncim-skeleton variant=\"circular\" [width]=\"'48px'\" [height]=\"'48px'\" />\n </div>\n </div>\n } @else {\n <div class=\"card-content\">\n <h3 class=\"card-title\">{{ title() }}</h3>\n <div class=\"card-value\">{{ totalNumber() }}</div>\n\n <div class=\"card-footer-row\">\n <div class=\"trend-container\">\n <span class=\"trend-label\">{{ trendLabel() }}</span>\n <span class=\"trend-value\">{{ trendPercentage() }}%</span>\n <div class=\"trend-indicator\" [class.positive]=\"trendPercentage() > 0\" [class.negative]=\"trendPercentage() < 0\">\n <ncim-icon [name]=\"progressIcon()\" [size]=\"19\" />\n </div>\n </div>\n\n <div\n class=\"icon-wrapper\"\n [class.icon-wrapper--tinted]=\"iconBackgroundColor()\"\n [style.background-color]=\"iconBackgroundColor() || undefined\"\n [style.color]=\"iconColor()\"\n >\n <ncim-icon [name]=\"icon()\" [size]=\"150\" />\n </div>\n </div>\n </div>\n\n @if (bgImage()) {\n <div class=\"bg-shape\" [style.background-image]=\"'url(' + bgImage() + ')'\"></div>\n }\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ReactiveFormsModule, FormControl } from '@angular/forms';\nimport { FormInput } from '../form-input/form-input';\nimport { FormLabel } from '../../atoms/form-label/form-label';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-captcha-input',\n imports: [TranslateModule, ReactiveFormsModule, FormInput, FormLabel, Icon],\n templateUrl: './captcha-input.html',\n styleUrl: './captcha-input.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaptchaInput {\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly imageSrc = input.required<string>();\n readonly submitted = input<boolean>(false);\n readonly control = input.required<FormControl<string | null>>();\n\n readonly refresh = output<void>();\n}\n","<div class=\"captcha-input\">\n <ncim-form-label [text]=\"label()\" />\n\n <div class=\"captcha-input__group\">\n <div class=\"captcha-input__container\">\n <div class=\"captcha-input__image\">\n <img [src]=\"imageSrc()\" alt=\"Verification Code\" />\n <button type=\"button\" class=\"captcha-input__refresh\" (click)=\"refresh.emit()\">\n <ncim-icon name=\"refresh\" [size]=\"34\" />\n </button>\n </div>\n <ncim-form-input [placeholder]=\"placeholder()\" [formControl]=\"control()\" [submitted]=\"submitted()\" />\n </div>\n </div>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-entity-type-card',\n imports: [TranslateModule, Icon],\n templateUrl: './entity-type-card.html',\n styleUrl: './entity-type-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntityTypeCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly icon = input.required<IconName>();\n readonly isSelected = input<boolean>(false);\n readonly selectionMade = output<void>();\n readonly isDisabled = input<boolean>(false);\n}\n","<div\n class=\"entity-type-card\"\n [class.entity-type-card--selected]=\"isSelected()\"\n [class.entity-type-card--disabled]=\"isDisabled()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n role=\"button\"\n (click)=\"!isDisabled() && selectionMade.emit()\"\n (keydown.enter)=\"!isDisabled() && selectionMade.emit()\"\n (keydown.space)=\"$event.preventDefault(); !isDisabled() && selectionMade.emit()\"\n>\n <div class=\"entity-type-card__content\">\n <h3 class=\"entity-type-card__title\">{{ title() | translate }}</h3>\n <p class=\"entity-type-card__desc\">{{ description() | translate }}</p>\n </div>\n <div class=\"entity-type-card__icon-container\">\n <ncim-icon [name]=\"icon()\" [size]=\"30\" class=\"entity-type-card__icon\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport type EntityInfoCardBadgeTone = 'success' | 'info';\n\n@Component({\n selector: 'ncim-entity-info-card',\n imports: [TranslateModule, Icon],\n templateUrl: './entity-info-card.html',\n styleUrl: './entity-info-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'entity-info-card-host',\n },\n})\nexport class EntityInfoCard {\n /** i18n key for the top pill (e.g. office role label). */\n readonly labelKey = input.required<string>();\n /** i18n key for the primary title (company / office name). */\n readonly nameKey = input.required<string>();\n /** i18n key for the ID line label (e.g. commercial register / national ID). */\n readonly idLabelKey = input.required<string>();\n /** Raw identifier value (digits); not passed through translate. */\n readonly idValue = input.required<string>();\n /** Optional image URL for logo; when set, overrides `iconName`. */\n readonly logoSrc = input<string | null>(null);\n /** Accessible label for logo image (plain text, not a key). */\n readonly logoAlt = input<string>('');\n /** Icon when `logoSrc` is not set. */\n readonly iconName = input<IconName>('building-logo');\n /** Icon size inside the framed logo area (px). */\n readonly iconSize = input<number>(40);\n /** Pill background: mint (supervising) vs light blue (designer). */\n readonly badgeTone = input<EntityInfoCardBadgeTone>('success');\n}\n","<article class=\"entity-info-card\" [class.entity-info-card--badge-info]=\"badgeTone() === 'info'\">\n <div class=\"entity-info-card__badge-wrap\">\n <span class=\"entity-info-card__badge\">{{ labelKey() | translate }}</span>\n </div>\n\n <div class=\"entity-info-card__main\">\n <div class=\"entity-info-card__logo\">\n @if (logoSrc()) {\n <img class=\"entity-info-card__logo-img\" [src]=\"logoSrc()!\" [alt]=\"logoAlt()\" width=\"64\" height=\"64\" loading=\"lazy\" />\n } @else {\n <ncim-icon [name]=\"iconName()\" [size]=\"iconSize()\" />\n }\n </div>\n\n <div class=\"entity-info-card__copy\">\n <h3 class=\"entity-info-card__name\">{{ nameKey() | translate }}</h3>\n <p class=\"entity-info-card__id\">\n <span class=\"entity-info-card__id-label\">{{ idLabelKey() | translate }}</span>\n <span class=\"entity-info-card__id-value\" dir=\"ltr\">{{ idValue() }}</span>\n </p>\n </div>\n </div>\n</article>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-summary-card',\n imports: [Icon],\n templateUrl: './summary-card.html',\n styleUrl: './summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SummaryCard {\n readonly icon = input.required<IconName>();\n readonly label = input.required<string>();\n readonly value = input.required<string>();\n readonly subValue = input<string>('');\n}\n","<div class=\"summary-card\">\n <div class=\"summary-card__icon\">\n <ncim-icon [name]=\"icon()\" [size]=\"30\" />\n </div>\n <div class=\"summary-card__info\">\n <span class=\"summary-card__label\">{{ label() }}</span>\n <div class=\"summary-card__value\">\n <span>{{ value() }}</span>\n @if (subValue()) {\n <span class=\"summary-card__sub-value\">{{ subValue() }}</span>\n }\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-license-status-card',\n imports: [TranslateModule],\n templateUrl: './license-status-card.html',\n styleUrl: './license-status-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'license-status-card-host',\n },\n})\nexport class LicenseStatusCard {\n /** Display text for the status pill (pass translated string from parent). */\n readonly status = input.required<string>();\n /** Date segment for the issued line (translated / formatted). */\n readonly issueDate = input.required<string>();\n readonly licenseNumber = input.required<string>();\n readonly city = input.required<string>();\n readonly municipality = input.required<string>();\n readonly expiryDate = input.required<string>();\n\n /** i18n key for \"Issued {{date}}\" style line; date is passed as `issueDate`. */\n readonly issuedLineKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.ISSUED_LINE');\n\n readonly licenseNumberLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.CONSTRUCTION_LICENSE_NUMBER_LABEL');\n\n readonly amanahLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.AMANAH');\n readonly municipalityLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.MUNICIPALITY');\n readonly expiresLabelKey = input<string>('LICENSE_DETAILS.LICENSE_INFO.EXPIRES');\n\n /** Watermark image URL (served from app `core/assets`). */\n readonly watermarkSrc = input<string>('core/assets/images/license-card-watermark.svg');\n}\n","<article class=\"license-status-card\">\n <div class=\"license-status-card__watermark\" aria-hidden=\"true\">\n <!-- <img [src]=\"watermarkSrc()\" width=\"420\" height=\"220\" alt=\"\" /> -->\n </div>\n\n <div class=\"license-status-card__inner\">\n <header class=\"license-status-card__header\">\n <p class=\"license-status-card__issued\">\n {{ issuedLineKey() | translate: { date: issueDate() } }}\n </p>\n <span class=\"license-status-card__badge\">{{ status() | translate }}</span>\n </header>\n\n <div class=\"license-status-card__number-block\">\n <span class=\"license-status-card__number-label\">{{ licenseNumberLabelKey() | translate }}</span>\n <strong class=\"license-status-card__number-value\">{{ licenseNumber() }}</strong>\n </div>\n\n <footer class=\"license-status-card__meta\">\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ amanahLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ city() }}</strong>\n </div>\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ municipalityLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ municipality() }}</strong>\n </div>\n <div class=\"license-status-card__meta-item\">\n <span class=\"license-status-card__meta-label\">{{ expiresLabelKey() | translate }}</span>\n <strong class=\"license-status-card__meta-value\">{{ expiryDate() }}</strong>\n </div>\n </footer>\n </div>\n</article>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-sparkline',\n templateUrl: './sparkline.html',\n styleUrl: './sparkline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class Sparkline {\n /** Data points for the sparkline */\n readonly data = input<readonly number[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number>(40);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Line color */\n readonly color = input<string>('#E57373');\n\n /** Whether to show area fill */\n readonly showArea = input<boolean>(true);\n\n /** Line width */\n readonly lineWidth = input<number>(1.5);\n\n /** Whether to use smooth curves */\n readonly smooth = input<boolean>(true);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const dataPoints = this.data();\n /** ECharts series `data` is typed as mutable; input may be ReadonlyArray. */\n const seriesData = [...dataPoints];\n const lineColor = this.color();\n const smooth = this.smooth();\n const showArea = this.showArea();\n const width = this.lineWidth();\n\n return {\n grid: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n xAxis: {\n type: 'category',\n show: false,\n boundaryGap: false,\n data: seriesData.map((_, i) => i),\n },\n yAxis: {\n type: 'value',\n show: false,\n },\n series: [\n {\n type: 'line' as const,\n data: seriesData,\n smooth,\n symbol: 'none',\n lineStyle: {\n width,\n color: lineColor,\n },\n areaStyle: showArea\n ? {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${lineColor}30` },\n { offset: 1, color: `${lineColor}05` },\n ]),\n }\n : undefined,\n },\n ],\n };\n });\n}\n","<div class=\"sparkline\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div echarts [options]=\"chartOptions()\" class=\"sparkline__canvas\"></div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CHART_COLORS } from '@libs/core/constants';\nimport { Icon } from '../../atoms/icon/icon';\nimport { Sparkline } from '../../organisms/charts/sparkline/sparkline';\n\n@Component({\n selector: 'ncim-stats-analytics-card',\n imports: [Icon, Sparkline],\n templateUrl: './stats-analytics-card.html',\n styleUrl: './stats-analytics-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'stats-analytics-card-host',\n },\n})\nexport class StatsAnalyticsCard {\n /** Card heading (pass translated string from parent). */\n readonly title = input<string>('');\n /** Optional action label (e.g. “All reports”) on the same row as the title (LTR: link left, title right). */\n readonly titleLinkText = input<string>('');\n readonly value = input<number | string>(0);\n /** Shown after the main value, e.g. 8.2 for \"8.2%\". Omit when null to hide the percentage. */\n readonly percentage = input<number | null>(null);\n readonly trend = input<'up' | 'down'>('up');\n /** Short label after the percentage (e.g. \"New\" / \"جديدة\"). */\n readonly trendLabel = input<string>('');\n /** When false, hides the trend arrow (e.g. compact KPI row). */\n readonly showTrendIcon = input(true);\n /** Sparkline series; omit or pass [] to hide the chart area. */\n readonly chartData = input<readonly number[]>([]);\n\n readonly chartColor = input<string>(CHART_COLORS.reportRateGreen);\n /** Figma chart box height; composed from spacing scale (40 + 6 px). */\n readonly chartHeight = input<number>(40 + 6);\n readonly chartLineWidth = input<number>(2);\n readonly chartSmooth = input(true);\n readonly chartShowArea = input(true);\n /** Sparkline ↔ text gap: `sm` 12px (first KPI card), `md` 16px (second). */\n readonly surfaceGap = input<'sm' | 'md'>('md');\n\n readonly trendIcon = computed(() => (this.trend() === 'up' ? 'trend-up-arrow' : 'trend-down-arrow'));\n\n readonly showChart = computed(() => this.chartData().length > 0);\n\n /** Mutable series for `ncim-sparkline` — satisfies template assignability to `number[]`. */\n readonly sparklineData = computed((): number[] => [...this.chartData()]);\n readonly titleLinkUrl = input<string>('');\n readonly titleLinkTarget = input<string>('_blank');\n readonly percentageLabel = input<string>('');\n readonly percentageValue = input<number>(0);\n}\n","<article class=\"stats-analytics-card\">\n <div\n class=\"stats-analytics-card__surface\"\n dir=\"ltr\"\n [class.stats-analytics-card__surface--no-chart]=\"!showChart()\"\n [class.stats-analytics-card__surface--no-trend]=\"percentage() == null\"\n [class.stats-analytics-card__surface--gap-sm]=\"surfaceGap() === 'sm'\"\n >\n <div class=\"stats-analytics-card__stack\">\n <div class=\"stats-analytics-card__header\" [class.stats-analytics-card__header--no-link]=\"!titleLinkText()\">\n @if (titleLinkText()) {\n <a\n class=\"stats-analytics-card__link\"\n [href]=\"titleLinkUrl() || '#'\"\n [attr.target]=\"titleLinkUrl() ? titleLinkTarget() : null\"\n [attr.rel]=\"titleLinkUrl() ? 'noopener noreferrer' : null\"\n >\n {{ titleLinkText() }}\n </a>\n }\n <h3 class=\"stats-analytics-card__title\">{{ title() }}</h3>\n </div>\n\n <div class=\"stats-analytics-card__bottom\" [class.stats-analytics-card__bottom--no-chart]=\"!showChart()\">\n @if (showChart()) {\n <div class=\"stats-analytics-card__chart\" aria-hidden=\"true\">\n <ncim-sparkline\n [data]=\"sparklineData()\"\n [height]=\"chartHeight()\"\n [color]=\"chartColor()\"\n [lineWidth]=\"chartLineWidth()\"\n [showArea]=\"chartShowArea()\"\n [smooth]=\"chartSmooth()\"\n />\n </div>\n }\n\n <div class=\"stats-analytics-card__body\">\n <div class=\"stats-analytics-card__metric\">\n @if (percentage() != null) {\n <div class=\"stats-analytics-card__trend\">\n <span class=\"stats-analytics-card__trend-label\">{{ trendLabel() }}</span>\n <span class=\"stats-analytics-card__trend-percent\">{{ percentage() }}%</span>\n </div>\n }\n <div class=\"stats-analytics-card__value-row\">\n <span class=\"stats-analytics-card__value\">{{ value() }}</span>\n @if (showTrendIcon()) {\n <ncim-icon [name]=\"trendIcon()\" [size]=\"24\" />\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</article>\n","import { Component, input, output, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { ENVIRONMENT } from '@libs/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface AIChatAction {\n type: string;\n icon: string;\n}\n\n@Component({\n selector: 'ncim-ai-chating',\n imports: [Icon, TranslateModule],\n templateUrl: './ai-chating.html',\n styleUrl: './ai-chating.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AiChating {\n readonly recommendationText = input<string>('');\n readonly recommendationLinkText = input<string>('');\n readonly recommendationLinkUrl = input<string>('');\n readonly actions = input<AIChatAction[]>([]);\n readonly environment = inject(ENVIRONMENT);\n\n readonly actionClick = output<string>();\n\n onAction(action: AIChatAction | string) {\n const type = typeof action === 'string' ? action : action.type;\n this.actionClick.emit(type);\n }\n}\n","<div class=\"aiCating\">\n <div class=\"aiCating__footer\">\n <div class=\"aiCating__recommendation\">\n <span class=\"recommendation-icon\">\n <ncim-icon name=\"aiIcon\" [size]=\"70\"></ncim-icon>\n </span>\n <div class=\"aiCating__recommendation-text\">\n {{ recommendationText() }}\n @if (!environment.hasUnderDevelopmentFeatures) {\n <a [href]=\"recommendationLinkUrl()\" class=\"aiCating__recommendation-link\">\n {{ recommendationLinkText() | translate }}\n </a>\n } @else {\n <span>\n {{ recommendationLinkText() | translate }}\n </span>\n }\n\n <div class=\"aiCating__actions\">\n <div class=\"aiCating__actions-feedback\">\n @if (actions() && actions().length >= 2) {\n <button class=\"action-btn action-btn--icon\" (click)=\"onAction(actions()[0])\">\n <ncim-icon [name]=\"actions()[0].icon\" [size]=\"15\"></ncim-icon>\n </button>\n <button class=\"action-btn action-btn--icon\" (click)=\"onAction(actions()[1])\">\n <ncim-icon [name]=\"actions()[1].icon\" [size]=\"15\"></ncim-icon>\n </button>\n }\n </div>\n @if (actions() && actions().length >= 3) {\n <button class=\"action-btn action-btn--chat\" (click)=\"onAction(actions()[2].type)\">\n <span><ncim-icon [name]=\"actions()[2].icon\" [size]=\"15\"></ncim-icon></span>\n <span>{{ 'NOTES.ACTIONS.CHAT' | translate }}</span>\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, signal, inject, DestroyRef } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Icon } from '../../atoms/icon/icon';\n\nconst COPY_FEEDBACK_MS = 700;\n\n@Component({\n selector: 'ncim-clipboard-button',\n imports: [Icon],\n templateUrl: './clipboard-button.html',\n styleUrl: './clipboard-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClipboardButton {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly value = input.required<string>();\n readonly size = input<number>(16);\n\n readonly copied = output<void>();\n readonly isCopied = signal(false);\n\n async copy(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.value());\n this.isCopied.set(true);\n this.copied.emit();\n timer(COPY_FEEDBACK_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.isCopied.set(false));\n } catch {\n // Clipboard API not available\n }\n }\n}\n","<button type=\"button\" class=\"clipboard-button\" (click)=\"copy()\" [attr.aria-label]=\"isCopied() ? 'Copied' : 'Copy to clipboard'\">\n @if (isCopied()) {\n <span class=\"clipboard-button__check\">✓</span>\n } @else {\n <ncim-icon name=\"copy\" [size]=\"size()\" />\n }\n</button>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\nimport { ICONS } from '@libs/core/constants';\n\nexport interface ContestedViolationStatus {\n label: string;\n color: 'warning' | 'success' | 'danger' | 'neutral';\n /** Optional custom text & indicator color — overrides the CSS modifier class */\n textColor?: string;\n /** Optional custom background color — overrides the CSS modifier class */\n backgroundColor?: string;\n}\n\nexport interface ContestedViolationData {\n title: string;\n violationId: string;\n date: string;\n status: ContestedViolationStatus;\n description: string;\n entity: string;\n penalty: string;\n}\n\n@Component({\n selector: 'ncim-contested-violation',\n imports: [TranslateModule, ClipboardButton],\n templateUrl: './contested-violation.html',\n styleUrl: './contested-violation.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContestedViolation {\n data = input.required<ContestedViolationData>();\n detailsClick = output<void>();\n\n readonly ICONS = ICONS;\n\n onDetailsClick() {\n this.detailsClick.emit();\n }\n}\n","<div class=\"contested-violation\">\n <!-- Header -->\n <div class=\"contested-violation__header\">\n <div class=\"\">\n <div class=\"contested-violation__header-start\">\n <h3 class=\"contested-violation__title\">{{ data().title | translate }}</h3>\n <span\n class=\"status-badge status-badge--{{ data().status.color }}\"\n [style.color]=\"data().status.textColor ?? null\"\n [style.background-color]=\"data().status.backgroundColor ?? null\"\n >\n <div\n class=\"status-badge__status-indicator status-badge__status-indicator--{{ data().status.color }}\"\n [style.background-color]=\"data().status.textColor ?? null\"\n ></div>\n {{ data().status.label | translate }}\n </span>\n </div>\n <div class=\"\">\n <span class=\"contested-violation__id\">\n {{ data().violationId }}\n <ncim-clipboard-button [value]=\"data().violationId\" [size]=\"16\" />\n </span>\n </div>\n </div>\n\n <div class=\"contested-violation__header-end\">\n <span class=\"contested-violation__issued-label\">{{ 'CONTESTED_VIOLATION.ISSUED_BY' | translate }}</span>\n <span class=\"contested-violation__date\">{{ data().date }}</span>\n </div>\n </div>\n\n <!-- Description Box -->\n <div class=\"contested-violation__description-box\">\n <p class=\"contested-violation__description\">\n <strong>{{ 'CONTESTED_VIOLATION.VIOLATION' | translate }}:</strong> {{ data().description }}\n </p>\n </div>\n\n <div class=\"contested-violation__footer-wrapper\">\n <!-- Details Grid -->\n <div class=\"contested-violation__details\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">{{ 'CONTESTED_VIOLATION.VIOLATING_ENTITY' | translate }}</span>\n <span class=\"detail-value\">{{ data().entity | translate }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">{{ 'CONTESTED_VIOLATION.PENALTY' | translate }}</span>\n <span class=\"detail-value\">{{ data().penalty | translate }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"contested-violation__footer\">\n <button class=\"details-btn\" (click)=\"onDetailsClick()\">{{ 'CONTESTED_VIOLATION.MORE_DETAILS' | translate }}</button>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { SliderModule } from 'primeng/slider';\nimport { noop } from 'rxjs';\nimport { FormLabel } from '../form-label/form-label';\n\n@Component({\n selector: 'ncim-range-bar',\n templateUrl: './range-bar.html',\n styleUrl: './range-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SliderModule, FormsModule, FormLabel],\n})\nexport class RangeBar implements ControlValueAccessor {\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly label = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly showValues = input<boolean>(true);\n\n readonly value = input<number | [number, number]>([0, 100]);\n readonly valueChange = output<number | [number, number]>();\n\n protected readonly internalValue = signal<number | [number, number]>(this.value());\n protected readonly isRange = computed(() => Array.isArray(this.internalValue()));\n protected startValue = computed(() =>\n this.isRange() ? (this.internalValue() as [number, number])[0] : this.internalValue()\n );\n\n protected endValue = computed(() => (this.internalValue() as [number, number])[1]);\n\n protected isDisabled = signal(false);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: number | [number, number]): void {\n if (value !== undefined && value !== null) {\n this.internalValue.set(value);\n }\n }\n\n registerOnChange(fn: (value: number | [number, number]) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n protected onChange() {\n this.onChangeFn(this.internalValue());\n this.valueChange.emit(this.internalValue());\n }\n\n protected onTouched() {\n this.onTouchedFn();\n }\n\n private onChangeFn: (value: number | [number, number]) => void = noop;\n private onTouchedFn: () => void = noop;\n}\n","<div class=\"range-bar\">\n <ncim-form-label [text]=\"label()\" />\n <div class=\"range-bar__wrapper\">\n @if (showValues()) {\n <span class=\"range-bar__value\">\n {{ startValue() }}\n </span>\n }\n <p-slider\n class=\"range-bar__slider\"\n [(ngModel)]=\"internalValue\"\n [range]=\"isRange()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled() || isDisabled()\"\n (onChange)=\"onChange()\"\n (onSlideEnd)=\"onTouched()\"\n />\n @if (showValues() && isRange()) {\n <span class=\"range-bar__value\">\n {{ endValue() }}\n </span>\n }\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, computed, input, output, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface SearchableUserListItem {\n id: string;\n name: string;\n}\n\n@Component({\n selector: 'ncim-searchable-users-list',\n imports: [TranslateModule, Icon],\n templateUrl: './searchable-users-list.html',\n styleUrl: './searchable-users-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchableUsersList {\n readonly title = input<string>('');\n readonly users = input<SearchableUserListItem[]>([]);\n readonly searchPlaceholder = input<string>('بحث');\n\n readonly deleteUser = output<SearchableUserListItem>();\n\n protected readonly searchQuery = signal('');\n\n protected readonly filteredUsers = computed(() => {\n const users = this.users();\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) {\n return users;\n }\n return users.filter(u => u.name?.toLowerCase().includes(query ?? false));\n });\n\n protected onSearchInput(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n }\n\n protected onDeleteClick(user: SearchableUserListItem): void {\n this.deleteUser.emit(user);\n }\n}\n","<!--TODO: share the ui/functional for searching with `selectable-list-with-search` component-->\n<div class=\"users-list\">\n @if (title()) {\n <h3 class=\"users-list__title\">{{ title() }}</h3>\n }\n <div class=\"users-list__search\">\n <span class=\"users-list__search-icon\" aria-hidden=\"true\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </span>\n\n <input\n type=\"text\"\n class=\"users-list__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <ul class=\"users-list__items\" role=\"list\">\n @for (user of filteredUsers(); track user.id) {\n <li class=\"users-list__item\">\n <div class=\"users-list__card\">\n <span class=\"users-list__avatar\" aria-hidden=\"true\">\n <ncim-icon name=\"user-placeholder\" [size]=\"20\" />\n </span>\n <div class=\"users-list__content\">\n <div class=\"users-list__name\">{{ user.name }}</div>\n </div>\n <button type=\"button\" class=\"users-list__delete\" (click)=\"onDeleteClick(user)\" [attr.aria-label]=\"'Delete ' + user.id\">\n <ncim-icon name=\"trash-bin\" [size]=\"20\" />\n </button>\n </div>\n </li>\n } @empty {\n <li class=\"users-list__empty\">{{ 'COMMON.NO_RESULTS' | translate }}</li>\n }\n </ul>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ncim-basic-card',\n imports: [CommonModule, TranslateModule],\n templateUrl: './basic-card.html',\n styleUrl: './basic-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.basic-card-host--full-width]': 'fullWidth()',\n },\n})\nexport class BasicCard {\n label = input.required<string>();\n value = input.required<string>();\n fullWidth = input(false);\n /** `field`: label/value row inside a parent panel (no own surface); `card`: standalone padded tile. */\n layout = input<'card' | 'field'>('card');\n}\n","<div class=\"basic-card\" [class.basic-card--field]=\"layout() === 'field'\">\n <span class=\"basic-card__label\">{{ label() | translate }}</span>\n <span class=\"basic-card__value\">{{ value() | translate }}</span>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface RequestStatus {\n label: string;\n color: 'warning' | 'success' | 'danger' | 'neutral';\n}\n\nexport interface RequestHeaderMetaItem {\n label: string;\n value: string;\n icon: string;\n}\n\n@Component({\n selector: 'ncim-request-header',\n standalone: true,\n imports: [CommonModule, TranslateModule, Icon],\n templateUrl: './request-header.html',\n styleUrl: './request-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequestHeader {\n title = input.required<string>();\n requestId = input.required<string>();\n status = input.required<RequestStatus>();\n metaItems = input<RequestHeaderMetaItem[]>([]);\n data = input<string>();\n}\n","<div class=\"request-header\">\n <div class=\"request-header__row\">\n <div class=\"request-header__start\">\n <div class=\"request-header__container\">\n <div class=\"request-header__title-row\">\n <h3 class=\"request-header__title\">{{ title() | translate }}</h3>\n <span class=\"status-badge status-badge--{{ status().color }}\">\n <div class=\"status-badge__status-indicator\"></div>\n {{ status().label | translate }}\n </span>\n </div>\n @if (data()) {\n <div class=\"request-header__data\">\n <span class=\"request-header__data-label\">{{ 'COMMON.CREATION_DATE' | translate }} </span>\n <span class=\"request-header__data-value\">{{ data() }}</span>\n </div>\n }\n </div>\n <div class=\"request-header__id-row\">\n <span class=\"request-header__id\">\n #{{ requestId() }}\n <ncim-icon name=\"copy\" [size]=\"16\" class=\"cursor-pointer\"></ncim-icon>\n </span>\n </div>\n </div>\n </div>\n\n @if (metaItems().length) {\n <div class=\"request-header__meta-row\">\n @for (item of metaItems(); track item.label) {\n <div class=\"request-header__meta-item\">\n <div class=\"request-header__meta-label-group\">\n <ncim-icon [name]=\"item.icon\" [size]=\"18\" class=\"request-header__meta-icon\"></ncim-icon>\n <span class=\"request-header__meta-label\">{{ item.label | translate }}</span>\n </div>\n <span class=\"request-header__meta-value\">{{ item.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RequestHeader, type RequestStatus, type RequestHeaderMetaItem } from '../request-header/request-header';\n\n@Component({\n selector: 'ncim-request-details-card',\n standalone: true,\n imports: [CommonModule, RequestHeader],\n templateUrl: './request-details-card.html',\n styleUrl: './request-details-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RequestDetailsCard {\n title = input.required<string>();\n requestId = input.required<string>();\n status = input.required<RequestStatus>();\n metaItems = input<RequestHeaderMetaItem[]>([]);\n data = input<string>();\n}\n","<div class=\"request-details-card\">\n <ncim-request-header [title]=\"title()\" [requestId]=\"requestId()\" [status]=\"status()\" [metaItems]=\"metaItems()\" [data]=\"data()\" />\n\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\n\nexport interface ViolationBreadcrumbItem {\n label: string;\n url?: string;\n}\n\nexport interface ActionButton {\n label: string;\n icon: string;\n action: string;\n disabled?: boolean;\n /** When true, shows a spinner on this button and disables it. */\n loading?: boolean;\n}\n\n@Component({\n selector: 'ncim-violation-header',\n imports: [TranslateModule, NcimButton],\n templateUrl: './violation-header.html',\n styleUrl: './violation-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationHeader {\n readonly title = input<string>('');\n readonly breadcrumbs = input<ViolationBreadcrumbItem[]>([]);\n readonly actions = input<ActionButton[]>([]);\n readonly actionClick = output<string>();\n readonly data = input<string>();\n\n onActionClick(action: string) {\n this.actionClick.emit(action);\n }\n}\n","<div class=\"violation-header\">\n <div class=\"violation-header__top\">\n <h1 class=\"violation-header__title\">{{ title() }}</h1>\n\n <div class=\"violation-header__breadcrumbs\">\n <span class=\"violation-header__breadcrumb-item\">{{ breadcrumbs()[0]?.label | translate }}</span>\n @for (item of breadcrumbs().slice(1); track item.label) {\n <span class=\"violation-header__separator\">/</span>\n <span class=\"violation-header__breadcrumb-item\">{{ item.label | translate }}</span>\n }\n </div>\n </div>\n\n @if (actions() && actions().length > 0) {\n <div class=\"violation-header__actions no-pdf\">\n @for (button of actions(); track button.action; let i = $index) {\n <ncim-button\n [variant]=\"i === actions().length - 1 ? 'black' : 'secondary'\"\n [size]=\"'small'\"\n [fullWidth]=\"false\"\n [icon]=\"button.icon\"\n [disabled]=\"(button.disabled || button.loading) ?? false\"\n [iconPosition]=\"'start'\"\n [iconSize]=\"20\"\n [loading]=\"button.loading ?? false\"\n (click)=\"onActionClick(button.action)\"\n >\n @if (button.label) {\n <span class=\"violation-header__action-label\">{{ button.label | translate }}</span>\n }\n </ncim-button>\n }\n @if (data()) {\n <div class=\"violation-header__data\">\n <span class=\"violation-header__data-label\">{{ 'COMMON.LAST_UPDATE' | translate }} </span>\n\n <span class=\"violation-header__data-value\">{{ data() }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { ImgFallbackDirective } from '@libs/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface Attachment {\n id: string;\n name: string;\n type?: 'pdf' | 'image';\n url: string;\n previewUrl?: string; // For images\n}\n\n@Component({\n selector: 'ncim-attachments',\n imports: [TranslateModule, Icon, ImgFallbackDirective],\n templateUrl: './attachments.html',\n styleUrl: './attachments.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Attachments {\n attachments = input<Attachment[]>([]);\n title = input<string>('CRITERIA.ATTACHMENTS');\n downloadFile = output<string>();\n violation = input<boolean>(true);\n /** When true, PDF rows use a responsive 2-column grid (license-style layout). */\n twoColumnGrid = input<boolean>(false);\n /** Icon asset under assets/ncim-icons (e.g. stack, pdf). */\n pdfIconName = input<string>('stack');\n pdfIconSize = input<number>(32);\n\n getAttachmentType(attachment: Attachment): 'pdf' | 'image' {\n if (attachment.type) {\n return attachment.type;\n }\n\n const ext = attachment.name.split('.').pop()?.toLowerCase() || '';\n return ext === 'pdf' || ext === 'docx' || ext === 'doc' ? 'pdf' : 'image';\n }\n\n onDownload(fileId: string): void {\n this.downloadFile.emit(fileId);\n }\n}\n","<div class=\"attachments\" [class.attachments--grid-2]=\"twoColumnGrid()\">\n <h5 class=\"attachments__title\">{{ title() | translate }}</h5>\n\n <!-- PDF Files -->\n <div class=\"attachments__grid\">\n @for (file of attachments(); track file.id) {\n @if (getAttachmentType(file) === 'pdf') {\n <div class=\"attachments__item {{ violation() ? 'violation' : 'not-violation' }}\">\n <div class=\"attachments__file\">\n <div class=\"file-preview file-preview--pdf\">\n <span class=\"attachments__file-icon\">\n <ncim-icon [name]=\"pdfIconName()\" [size]=\"pdfIconSize()\" />\n </span>\n </div>\n <span class=\"file-name\">{{ file.name }}</span>\n </div>\n <button type=\"button\" class=\"download-btn\" (click)=\"onDownload(file.id)\">\n <ncim-icon name=\"download2\" [size]=\"20\"></ncim-icon>\n </button>\n </div>\n }\n }\n </div>\n\n <!-- Image Files -->\n <div class=\"attachments__grid\">\n @for (file of attachments(); track file.id) {\n @if (getAttachmentType(file) === 'image') {\n <div class=\"attachments__item\">\n <div class=\"file-preview file-preview--image\">\n <img [src]=\"file.url\" [alt]=\"file.name\" class=\"image-preview\" ncimImgFallback />\n <button type=\"button\" class=\"download-btn\" (click)=\"onDownload(file.id)\">\n <ncim-icon name=\"album-02\" [size]=\"20\"></ncim-icon>\n </button>\n </div>\n </div>\n }\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AccordionModule } from 'primeng/accordion';\nimport { Icon } from '../../atoms/icon/icon';\nimport { AiChating } from '../ai-chating/ai-chating';\nimport { Attachments, type Attachment } from '../attachments/attachments';\n\nexport interface InspectorObservation {\n reason?: string;\n notes: string;\n attachments: Attachment[];\n}\n\nexport interface Recommendation {\n text: string;\n linkText: string;\n linkUrl: string;\n actions: { type: 'like' | 'dislike' | 'chat'; label?: string; icon: string }[];\n}\n\nexport interface CriteriaItem {\n id: number;\n title: string;\n tag: string;\n status?: 'success' | 'warning' | 'info' | 'danger';\n score: string; // e.g. '12/2'\n description: string;\n inspectorObservation: InspectorObservation;\n}\n\nexport interface CriteriaSectionData {\n title: string;\n criteria: CriteriaItem[];\n}\n\n@Component({\n selector: 'ncim-criteria-section',\n imports: [TranslateModule, AccordionModule, Icon, AiChating, Attachments],\n templateUrl: './criteria-section.html',\n styleUrl: './criteria-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CriteriaSection {\n criteriaData = input<CriteriaSectionData | null>(null);\n recommendation = input<Recommendation | null>(null);\n actionClick = output<string>();\n downloadFile = output<string>();\n aiActionClick = output<string>();\n activeAccordionIndex = input<number>(0);\n\n onActionClick(actionType: string) {\n this.actionClick.emit(actionType);\n }\n\n onDownload(fileId: string) {\n this.downloadFile.emit(fileId);\n }\n\n onAiAction(actionType: string) {\n this.aiActionClick.emit(actionType);\n }\n}\n","@if (criteriaData(); as data) {\n <div class=\"criteria-section\">\n @if (data.title) {\n <h3 class=\"criteria-section__main-title\">{{ data.title | translate }}</h3>\n }\n\n @for (item of data.criteria; track item.id; let i = $index) {\n <div class=\"criteria-card\">\n <!-- Header -->\n <div class=\"criteria-card__header\">\n <div class=\"criteria-card__header-end\">\n <ncim-icon name=\"layers-2\" [size]=\"20\" class=\"criteria-card__icon\"></ncim-icon>\n <h4 class=\"criteria-card__title\">{{ item.title }}</h4>\n <span class=\"criteria-card__score\">{{ item.score }}</span>\n </div>\n <div class=\"criteria-card__header-start\">\n <span\n class=\"criteria-card__tag\"\n [class.criteria-card__tag--success]=\"item.status === 'success'\"\n [class.criteria-card__tag--warning]=\"item.status === 'warning'\"\n [class.criteria-card__tag--info]=\"item.status === 'info'\"\n >\n {{ item.tag | translate }}\n </span>\n </div>\n </div>\n\n <!-- Description -->\n <p class=\"criteria-card__description\">{{ item.description }}</p>\n\n <!-- Violated Item -->\n\n <!-- Inspector Observation Accordion -->\n <div class=\"criteria-card__accordion\" [class.criteria-card__accordion--active]=\"activeAccordionIndex() === 0\">\n @if (item.inspectorObservation.attachments && item.inspectorObservation.attachments.length > 0) {\n <p-accordion [value]=\"activeAccordionIndex()\">\n <p-accordion-panel [value]=\"i\">\n <p-accordion-header>\n <div class=\"criteria-card__accordion-header-content\">\n @if (activeAccordionIndex() === 0) {\n <ncim-icon name=\"grean-file\" [size]=\"18\" class=\"criteria-card__accordion-icon\"></ncim-icon>\n } @else {\n <ncim-icon name=\"folder\" [size]=\"18\" class=\"criteria-card__accordion-icon-inactive\"></ncim-icon>\n }\n <span class=\"criteria-card__accordion-title\">{{ 'CRITERIA.SHOW_DOCUMENTATION' | translate }}</span>\n </div>\n </p-accordion-header>\n <p-accordion-content>\n <div class=\"criteria-card__accordion-content\">\n <!-- Reason -->\n @if (item.inspectorObservation.reason) {\n <div class=\"criteria-card__notes mb-3\">\n <h5 class=\"criteria-card__section-title\">{{ 'السبب' }}</h5>\n <p class=\"criteria-card__notes-text\">{{ item.inspectorObservation.reason }}</p>\n </div>\n }\n\n @if (item.inspectorObservation.notes) {\n <div class=\"criteria-card__notes\">\n <h5 class=\"criteria-card__section-title\">{{ 'CRITERIA.OBSERVATIONS' | translate }}</h5>\n <p class=\"criteria-card__notes-text\">{{ item.inspectorObservation.notes }}</p>\n </div>\n }\n\n @if (item.inspectorObservation.attachments && item.inspectorObservation.attachments.length > 0) {\n <ncim-attachments [attachments]=\"item.inspectorObservation.attachments\" (downloadFile)=\"onDownload($event)\" />\n }\n </div>\n @if (recommendation(); as rec) {\n <ncim-ai-chating\n class=\"no-pdf\"\n [recommendationText]=\"rec.text\"\n [recommendationLinkText]=\"rec.linkText\"\n [recommendationLinkUrl]=\"rec.linkUrl\"\n [actions]=\"rec.actions\"\n (actionClick)=\"onAiAction($event)\"\n />\n }\n </p-accordion-content>\n </p-accordion-panel>\n </p-accordion>\n }\n </div>\n </div>\n }\n </div>\n}\n","/**\n * Returns the provided value if defined, otherwise the default.\n * Used for merging optional label overrides with defaults in violation components.\n */\nexport function mergeWithDefaults<T>(provided: T | undefined, defaults: T): T {\n return provided ?? defaults;\n}\n\n/**\n * Configuration for correction period display.\n */\nexport interface CorrectionPeriodConfig {\n barColor: string;\n textColor: string;\n iconName: string;\n}\n\n/**\n * Returns correction period configuration based on completion progress percentage.\n * Green (< 25%) → orange (< 75%) → red (>= 75%).\n */\nexport function getCorrectionPeriodConfig(progressPercent: number): CorrectionPeriodConfig {\n if (progressPercent < 25) {\n return {\n barColor: 'var(--color-progress-green)',\n textColor: 'var(--color-primary)',\n iconName: 'hourglass-green',\n };\n }\n if (progressPercent < 75) {\n return {\n barColor: 'var(--color-progress-orange)',\n textColor: 'var(--color-progress-orange)',\n iconName: 'hourglass-orange',\n };\n }\n return {\n barColor: 'var(--color-progress-red)',\n textColor: 'var(--color-progress-red)',\n iconName: 'hourglass-red',\n };\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { ENVIRONMENT } from '@libs/core/environments';\nimport { LocalizedDatePipe, ReplacePipe, ImgFallbackDirective } from '@libs/core';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ViolationBusiness, ViolationCorrectionPeriod, ViolationFine } from '@libs/core/models/violation.models';\nimport { mergeWithDefaults } from '../violation.utils';\n\nexport enum ViolationStatusType {\n PendingPayment = 1,\n Paid,\n ConfirmedViolation,\n UnderAppeal,\n}\n\nexport interface ViolationStatus {\n label: string;\n type: any;\n /** Optional custom text & dot color — overrides the CSS class color */\n color?: string;\n /** Optional custom background color — overrides the CSS class background */\n backgroundColor?: string;\n}\n\nexport interface ViolationInfoLabels {\n title?: string;\n violatorLabel?: string;\n nationalNumberLabel?: string;\n activityLabel?: string;\n entityLabel?: string;\n createdDateLabel?: string;\n referenceNumberLabel?: string;\n}\n\nexport interface Violation {\n id: number;\n entity: string;\n fine: ViolationFine;\n business: ViolationBusiness;\n correctionPeriod: ViolationCorrectionPeriod;\n /** ISO date string e.g. '2025-11-03' */\n date: string;\n status: ViolationStatus;\n}\n\nexport interface ViolationInfo {\n violationNumber: string;\n referenceNumber: string;\n status: ViolationStatus;\n entityName: string;\n entityLogo: string;\n location: string;\n emirate: string;\n activity: string;\n nationalNumber: string;\n createdDate: Date;\n labels?: ViolationInfoLabels;\n violation?: boolean;\n applicant?: string;\n violatorName?: string;\n}\n\n@Component({\n selector: 'ncim-violation-info-card',\n imports: [LocalizedDatePipe, ReplacePipe, ClipboardButton, TranslateModule, ImgFallbackDirective],\n templateUrl: './violation-info-card.html',\n styleUrl: './violation-info-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationInfoCard {\n readonly violationInfo = input<ViolationInfo | null>(null);\n readonly environment = inject(ENVIRONMENT);\n readonly copied = output<string>();\n\n private readonly defaultLabels: ViolationInfoLabels = {\n title: 'بيانات المخالفة',\n violatorLabel: 'المخالف',\n nationalNumberLabel: 'رقم السجل الوطني',\n activityLabel: 'النشاط',\n entityLabel: 'الجهة المخالفة',\n createdDateLabel: 'أحدثت',\n };\n\n readonly labels = computed(() => mergeWithDefaults(this.violationInfo()?.labels, this.defaultLabels));\n}\n","@if (violationInfo(); as info) {\n <div class=\"violation-info-card\">\n <!-- Top Header Section -->\n <div class=\"violation-info-card__header-section\">\n <!-- Right Side: Title & ID -->\n <div class=\"violation-info-card__header-right\">\n <div class=\"violation-info-card__title-row\">\n <h3 class=\"violation-info-card__title\">{{ labels().title | translate }}</h3>\n <div\n class=\"violation-info-card__status violation-info-card__status--{{ info.status.type }}\"\n [style.color]=\"info.status.color ?? null\"\n [style.background-color]=\"info.status.backgroundColor ?? null\"\n >\n <span class=\"violation-info-card__status-dot\" [style.background-color]=\"info.status.color ?? null\"></span>\n <span class=\"violation-info-card__status-text\">{{ info.status.label }}</span>\n </div>\n </div>\n <div class=\"violation-info-card__violation-id\">\n <span class=\"violation-info-card__violation-id-text\" dir=\"ltr\">#{{ info.violationNumber }}</span>\n <ncim-clipboard-button [value]=\"info.violationNumber\" [size]=\"16\" (copied)=\"copied.emit(info.violationNumber)\" />\n </div>\n </div>\n\n <!-- Left Side: Meta Info (Date & Reference) -->\n <div class=\"violation-info-card__header-left\">\n <div class=\"violation-info-card__meta-row\">\n @if (labels().referenceNumberLabel && info.referenceNumber) {\n <div class=\"violation-info-card__meta-group\">\n <span class=\"violation-info-card__meta-label\">{{ labels().referenceNumberLabel | translate }}</span>\n <span class=\"violation-info-card__meta-value\" dir=\"ltr\">#{{ info.referenceNumber }}</span>\n <ncim-clipboard-button [value]=\"info.referenceNumber\" [size]=\"12\" (copied)=\"copied.emit(info.referenceNumber)\" />\n </div>\n <span class=\"violation-info-card__meta-separator\">|</span>\n }\n <div class=\"violation-info-card__meta-group\">\n <span class=\"violation-info-card__meta-label\">{{ labels().createdDateLabel | translate }}</span>\n <span class=\"violation-info-card__meta-value\">{{ info.createdDate | localizedDate: 'long' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"violation-info-card__divider\"></div>\n\n <div class=\"violation-info-card__container\">\n <!-- Right Side (Entity Info) -->\n <div class=\"violation-info-card__entity-section\">\n <div class=\"violation-info-card__entity-details\">\n @if (info.entityName) {\n <span class=\"violation-info-card__label\">{{ labels().entityLabel | translate }}</span>\n <h4 class=\"violation-info-card__entity-name\">{{ info.entityName }}</h4>\n }\n <div class=\"violation-info-card__location\">\n @if (info.emirate) {\n <span class=\"violation-info-card__location-text\"\n >{{ 'VIOLATION_INFO.MUNICIPALITY' | translate }}\n <span class=\"violation-info-card__content\">{{\n info.emirate | replace: ('VIOLATION_INFO.MUNICIPALITY' | translate)\n }}</span></span\n >\n }\n @if (info.location) {\n <span class=\"violation-info-card__location-text\"\n >{{ 'VIOLATION_INFO.SECRETARIAT' | translate }}\n <span class=\"violation-info-card__content\">{{\n info.location | replace: ('VIOLATION_INFO.SECRETARIAT' | translate)\n }}</span></span\n >\n }\n </div>\n </div>\n <span class=\"violation-info-card__entity-logo\">\n <img [src]=\"info.entityLogo\" [alt]=\"info.entityName\" ncimImgFallback class=\"\" />\n </span>\n </div>\n\n <!-- Left Side (Violator Info) -->\n <div class=\"violation-info-card__violator-section\">\n <!-- Row 1: Violator Name -->\n @if (info.applicant || info.violatorName || info.entityName) {\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().violatorLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--{{ info.violation ? 'highlight' : '' }}\">{{\n info.applicant ?? info.violatorName ?? info.entityName\n }}</span>\n </div>\n }\n @if (info.violation) {\n <!-- Row 2: National ID -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().nationalNumberLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--badge\">{{ info.nationalNumber }}</span>\n </div>\n <!-- Row 3: Activity -->\n @if (!environment.hasUnderDevelopmentFeatures) {\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().activityLabel | translate }}</span>\n <span class=\"violation-info-card__value\">{{ info.activity }}</span>\n </div>\n }\n } @else {\n <!-- Row 3: Activity -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().activityLabel | translate }}</span>\n <span class=\"violation-info-card__value\">{{ info.activity }}</span>\n </div>\n <!-- Row 2: National ID -->\n <div class=\"violation-info-card__row\">\n <span class=\"violation-info-card__label\">{{ labels().nationalNumberLabel | translate }}</span>\n <span class=\"violation-info-card__value violation-info-card__value--badge\">{{ info.nationalNumber }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Tooltip as PrimeNgTooltip } from 'primeng/tooltip';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n selector: 'ncim-tooltip',\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PrimeNgTooltip],\n})\nexport class Tooltip {\n readonly text = input.required<string>();\n readonly position = input<TooltipPosition>('top');\n readonly disabled = input<boolean>(false);\n /** Z-index for the tooltip overlay. Default 1100. */\n readonly zIndex = input<string>('1100');\n}\n","<span\n class=\"ncim-tooltip__trigger\"\n [pTooltip]=\"text()\"\n [tooltipPosition]=\"position()\"\n [tooltipDisabled]=\"disabled()\"\n appendTo=\"body\"\n [tooltipZIndex]=\"zIndex()\"\n>\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { ProgressBar } from '../../atoms/progress-bar/progress-bar';\nimport { Tooltip } from '../../atoms/tooltip/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { mergeWithDefaults, getCorrectionPeriodConfig } from '../violation.utils';\n\nexport interface ViolationSummaryLabels {\n violationDegreeLabel?: string; // \"درجة المخالفة\"\n repeatCountLabel?: string; // \"مرات تكرار المخالفة\" (updated from \"الوحدات\" based on old code vs new design)\n unitsLabel?: string; // \"الوحدات\"\n progressLabel?: string;\n dayLabel?: string;\n typeOfObjectionLabel?: string; // \"نوع الاعتراض\"\n}\n\nexport interface ViolationSummary {\n title?: string;\n violationDegree?: string; // e.g. \"جسيمة\"\n violationType?: string; // Used for Repeat Count in design mapping? Or is this legacy? Let's keep it as is from design: \"المرة الثانية\" -> Repeat Count\n repeatCount?: string; // e.g. \"المرة الثانية\"\n units?: string; // e.g. \"3 رخص\"\n daysRemaining?: number;\n totalDays?: number;\n progressLabel?: string;\n endDate?: Date;\n labels?: ViolationSummaryLabels;\n typeOfObjection?: string; // \"نوع الاعتراض\"\n}\n\n@Component({\n selector: 'ncim-violation-summary-card',\n imports: [LocalizedDatePipe, Icon, TranslateModule, ProgressBar, Tooltip],\n templateUrl: './violation-summary-card.html',\n styleUrl: './violation-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationSummaryCard {\n readonly summary = input<ViolationSummary | null>(null);\n\n private readonly defaultLabels: ViolationSummaryLabels = {\n violationDegreeLabel: 'VIOLATION_INFO.VIOLATION_DEGREE_LABEL',\n repeatCountLabel: 'VIOLATION_INFO.REPEAT_COUNT_LABEL',\n unitsLabel: 'VIOLATION_INFO.UNITS_LABEL',\n progressLabel: 'VIOLATION_INFO.PROGRESS_LABEL',\n dayLabel: 'VIOLATION_INFO.DAY_LABEL',\n typeOfObjectionLabel: 'VIOLATION_INFO.OBJECTION_TYPE_LABEL',\n };\n\n readonly labels = computed<ViolationSummaryLabels>(() =>\n mergeWithDefaults(this.summary()?.labels, this.defaultLabels)\n );\n\n readonly calculatedDaysRemaining = computed<number>(() => this.summary()?.daysRemaining ?? 0);\n\n readonly calculatedTotalDays = computed<number | null>(() => this.summary()?.totalDays ?? null);\n\n readonly progressPercentage = computed<number>(() => {\n const total = this.calculatedTotalDays();\n\n if (!total) {\n return 0;\n }\n\n const remaining = this.calculatedDaysRemaining();\n if (total <= 0) {\n return 100;\n }\n const percentage = ((total - remaining) / total) * 100;\n return Math.min(Math.max(percentage, 0), 100);\n });\n\n readonly progressConfig = computed(() => getCorrectionPeriodConfig(this.progressPercentage()));\n\n readonly progressColor = computed(() => this.progressConfig().barColor);\n\n readonly progressTextColor = computed(() => this.progressConfig().textColor);\n\n readonly progressIconName = computed(() => this.progressConfig().iconName);\n}\n","@if (summary(); as data) {\n <div class=\"violation-summary-card\">\n <h3 class=\"violation-summary-card__title\">{{ data.title | translate }}</h3>\n\n <div class=\"violation-summary-card__content\">\n <!-- Violation Degree -->\n @if (data.violationDegree) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().violationDegreeLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().violationDegreeLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value violation-summary-card__row-value--badge\">{{\n data.violationDegree | translate\n }}</span>\n </div>\n }\n <!-- Repeat Count -->\n @if (data.repeatCount) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().repeatCountLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().repeatCountLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.repeatCount }}</span>\n </div>\n }\n <!-- Units -->\n @if (data.units) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().unitsLabel | translate }}</span>\n <ncim-tooltip [text]=\"labels().unitsLabel | translate\" position=\"top\">\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </ncim-tooltip>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.units | translate }}</span>\n </div>\n }\n @if (data.typeOfObjection) {\n <div class=\"violation-summary-card__row\">\n <div class=\"violation-summary-card__row-label-group\">\n <span class=\"violation-summary-card__row-label\">{{ labels().typeOfObjectionLabel | translate }}</span>\n <ncim-icon name=\"information-circle\" [size]=\"16\" class=\"violation-summary-card__row-icon\"></ncim-icon>\n </div>\n <span class=\"violation-summary-card__row-value\">{{ data.typeOfObjection | translate }}</span>\n </div>\n }\n\n <!-- Dashed Divider + Progress Section -->\n @if (calculatedTotalDays()) {\n <div class=\"violation-summary-card__divider\"></div>\n\n <div class=\"violation-summary-card__progress-section\">\n <div class=\"violation-summary-card__progress-info\">\n <h4 class=\"violation-summary-card__progress-label\">{{ labels().progressLabel | translate }}</h4>\n\n @if (data.endDate) {\n <span class=\"violation-summary-card__progress-date\">\n <span class=\"violation-summary-card__progress-status-label\">{{ 'VIOLATION_INFO.DEADLINE' | translate }}: </span>\n <span class=\"violation-summary-card__progress-status-date\">{{ data.endDate | localizedDate: 'long' }}</span>\n </span>\n }\n </div>\n\n <div class=\"violation-summary-card__progress-status\">\n <span class=\"violation-summary-card__progress-days\" [style.color]=\"progressTextColor()\">\n <ncim-icon [name]=\"progressIconName()\" [size]=\"16\" class=\"violation-summary-card__progress-icon\"></ncim-icon>\n <span class=\"violation-summary-card__days-number\">{{ calculatedDaysRemaining() }}</span>\n <span class=\"violation-summary-card__days-text\">{{ labels().dayLabel | translate }}</span>\n </span>\n <ncim-progress-bar\n [showThumb]=\"false\"\n class=\"violation-summary-card__progress-bar\"\n [progress]=\"progressPercentage()\"\n [max]=\"100\"\n [color]=\"progressColor()\"\n />\n </div>\n </div>\n }\n </div>\n <ng-content></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../icon/icon';\nimport { mergeWithDefaults } from '../../organisms/violation.utils';\nimport { CommonModule } from '@angular/common';\n\nexport interface PenaltyBadgeLabels {\n title?: string; // \"العقوبة التبعية\"\n durationLabel?: string; // \"مدة\"\n fineLabel?: string; // \"غرامة مالية بقيمة\"\n objectionText?: string; // \"هل لديك اعتراض على المخالفة؟\"\n objectionLink?: string; // \"تقديم اعتراض\"\n deadlineLabel?: string; // \"تنتهي مهلة الاعتراض خلال\"\n}\n\nexport interface PenaltyInfo {\n penaltyType?: string;\n duration?: string;\n amount?: number;\n stampText?: string;\n stampDate?: Date;\n objectionDeadline?: string; // e.g., \"14 days\"\n objectionEndDate?: Date;\n labels?: PenaltyBadgeLabels;\n state?: boolean;\n image?: string;\n successMessage?: string;\n resolution?: string;\n}\n\n@Component({\n selector: 'ncim-penalty-badge',\n imports: [LocalizedDatePipe, Icon, TranslateModule, CommonModule],\n templateUrl: './penalty-badge.html',\n styleUrl: './penalty-badge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PenaltyBadge {\n penalty = input<PenaltyInfo | null>(null);\n customStamp = input<boolean>();\n objectionLinkClick = output<void>();\n\n defaultLabels: PenaltyBadgeLabels = {\n title: 'العقوبة التبعية',\n durationLabel: 'مدة',\n fineLabel: 'غرامة مالية بقيمة',\n objectionText: 'هل لديك اعتراض على المخالفة؟',\n objectionLink: 'تقديم اعتراض',\n deadlineLabel: 'تنتهي مهلة الاعتراض خلال',\n };\n\n get labels(): PenaltyBadgeLabels {\n return mergeWithDefaults(this.penalty()?.labels, this.defaultLabels);\n }\n}\n","@if (penalty(); as data) {\n <div class=\"penalty-badge__{{ data.state ? 'success' : 'error' }}\">\n <div class=\"penalty-badge__header--{{ data.state ? 'success' : 'error' }}\">\n <div class=\"{{ data.state ? '' : 'penalty-badge__status-indicator--error' }}\"></div>\n <h3 class=\"penalty-badge__title\">{{ labels.title | translate }}</h3>\n </div>\n\n <!-- Stamp: always prefer ng-content if customStamp is set -->\n <div class=\"penalty-badge__stamp-wrapper penalty-badge__stamp-wrapper--{{ data.state ? 'success' : '' }}\">\n @if (customStamp()) {\n <ng-content select=\"[stamp]\"></ng-content>\n } @else {\n <div class=\"stamp\">\n <img class=\"penalty-badge__stamp-image\" [src]=\"data.image\" alt=\"\" />\n </div>\n }\n </div>\n\n @if (data.state) {\n <div class=\"penalty-badge__message penalty-badge__message--success\">\n <p class=\"penalty-badge__message-text\">{{ data.successMessage }}</p>\n <p class=\"penalty-badge__resolution\">{{ data.resolution }}</p>\n </div>\n } @else {\n <!-- Penalty List -->\n <div class=\"penalty-badge__list\">\n <div class=\"penalty-badge__list-item\">\n <span class=\"penalty-badge__item-label\">{{ data.penaltyType | translate }}</span>\n <span class=\"penalty-badge__item-value\">{{ labels.durationLabel | translate }} {{ data.duration }}</span>\n </div>\n <div class=\"penalty-badge__list-item\">\n <span class=\"penalty-badge__item-label\">{{ labels.fineLabel | translate }}</span>\n <span class=\"penalty-badge__item-value penalty-badge__item-value--amount\">\n {{ data.amount }}\n <ncim-icon name=\"sar\" [size]=\"20\"></ncim-icon>\n </span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"penalty-badge__footer\">\n <div class=\"penalty-badge__objection-text\">\n {{ labels.objectionText | translate }}\n <a class=\"penalty-badge__objection-link\" (click)=\"objectionLinkClick.emit()\">{{ labels.objectionLink | translate }}</a>\n </div>\n <span class=\"penalty-badge__objection-deadline\">\n {{ labels.deadlineLabel | translate }}: {{ data.objectionDeadline }} - {{ data.objectionEndDate | localizedDate: 'long' }}\n </span>\n </div>\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type DgaTagVariant = 'neutral' | 'success' | 'danger' | 'warning' | 'info' | 'purple';\nexport type DgaTagStyle = 'subtle' | 'inverted' | 'outline';\nexport type DgaTagSize = 'default' | 'sm' | 'xs';\n\n@Component({\n selector: 'ncim-dga-tag',\n templateUrl: './dga-tag.html',\n styleUrl: './dga-tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DgaTag {\n readonly variant = input<DgaTagVariant>('neutral');\n readonly style = input<DgaTagStyle>('subtle');\n readonly size = input<DgaTagSize>('default');\n readonly textDark = input<boolean>(false);\n readonly ariaLabel = input<string | null>(null);\n\n readonly tagClasses = computed(() => {\n const v = this.variant();\n const s = this.style();\n const size = this.size();\n const classes: string[] = ['dga-tag'];\n if (size !== 'default') {\n classes.push(`dga-tag-${size}`);\n }\n classes.push(`dga-tag-status-${s}`);\n classes.push(`dga-tag-${v}`);\n if (this.textDark()) {\n classes.push('text-dark');\n }\n return classes.join(' ');\n });\n}\n","<span [class]=\"tagClasses()\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { LocalizedDatePipe } from '@libs/core/pipes/localized-date.pipe';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface TimelineStep {\n /** Label or i18n key for the step */\n label: string;\n /** Date for formatting. Ignored when dateDisplay is set. */\n date: Date;\n /** Whether this step is the active/latest one */\n isActive?: boolean;\n /** Optional pre-formatted date string. When set, used instead of date pipe. */\n dateDisplay?: string;\n}\n\nexport interface TimelineData {\n title: string;\n timelineSteps: TimelineStep[];\n}\n\n@Component({\n selector: 'ncim-violation-timeline',\n imports: [LocalizedDatePipe, TranslateModule],\n templateUrl: './violation-timeline.html',\n styleUrl: './violation-timeline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViolationTimeline {\n timeline = input<TimelineData | null>(null);\n}\n","@if (timeline(); as data) {\n <div class=\"violation-timeline\">\n <div class=\"violation-timeline__header\">\n <h4 class=\"violation-timeline__title\">{{ data.title | translate }}</h4>\n </div>\n\n <div class=\"violation-timeline__list\">\n @for (step of data.timelineSteps; track step.label; let i = $index) {\n <div class=\"violation-timeline__item\" [class.violation-timeline__item--active]=\"step.isActive ?? i === 0\">\n <div class=\"violation-timeline__marker\"></div>\n <div class=\"violation-timeline__content\">\n <div class=\"violation-timeline__text\">{{ step.label | translate }}</div>\n <div class=\"violation-timeline__date\">{{ step.dateDisplay ?? (step.date | localizedDate: 'dateTimeFull') }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { ClipboardButton } from '../../molecules/clipboard-button/clipboard-button';\n\nexport interface Permit {\n title: string;\n number: string;\n startDate: string;\n endDate: string;\n status: 'valid' | 'expiring' | 'expired';\n statusLabel: string;\n}\n\nexport interface VisitDetailsData {\n visitNumber: string;\n visitDate: string;\n supervisionType: string;\n licenseStatus: 'valid' | 'expired' | string;\n licenseStatusLabel: string;\n permits: Permit[];\n}\n\n@Component({\n selector: 'ncim-visit-details',\n imports: [TranslateModule, Icon, ClipboardButton],\n templateUrl: './visit-details.html',\n styleUrl: './visit-details.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VisitDetails {\n data = input.required<VisitDetailsData>();\n}\n","<div class=\"visit-details\">\n <div class=\"visit-details__header\">\n <h3 class=\"visit-details__title\">{{ 'VISIT_DETAILS.TITLE' | translate }}</h3>\n </div>\n\n <div class=\"visit-details__info-grid\">\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"layers\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.VISIT_NUMBER' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span dir=\"ltr\">{{ data().visitNumber }}</span>\n <ncim-clipboard-button [value]=\"data().visitNumber\" [size]=\"18\" />\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"calendar-minus\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.VISIT_DATE' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span>{{ data().visitDate }}</span>\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"layers\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.SUPERVISION_TYPE' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span>{{ data().supervisionType }}</span>\n </div>\n </div>\n\n <div class=\"visit-details__info-item\">\n <div class=\"visit-details__info-label\">\n <ncim-icon name=\"calendar-plus\" [size]=\"18\"></ncim-icon>\n <span>{{ 'VISIT_DETAILS.LICENSE_STATUS' | translate }}</span>\n </div>\n <div class=\"visit-details__info-value\">\n <span class=\"visit-details__badge\" [class]=\"'visit-details__badge--' + data().licenseStatus\">\n {{ data().licenseStatusLabel | translate }}\n </span>\n </div>\n </div>\n </div>\n\n @if (data().permits && data().permits.length > 0) {\n <div class=\"visit-details__divider\"></div>\n\n <div class=\"visit-details__permits-header\">\n <h4 class=\"visit-details__permits-title\">{{ 'VISIT_DETAILS.PERMITS_AT_VISIT' | translate }}</h4>\n <span class=\"visit-details__permits-count\">{{ data().permits.length }}</span>\n </div>\n\n <div class=\"visit-details__permits-grid\">\n @for (permit of data().permits; track permit.number) {\n <div class=\"permit-card\">\n <div class=\"permit-card__header\">\n <h5 class=\"permit-card__title\">{{ permit.title }}</h5>\n <span class=\"permit-card__badge\" [class]=\"'permit-card__badge--' + permit.status\">\n {{ permit.statusLabel | translate }}\n </span>\n </div>\n\n <div class=\"permit-card__body\">\n <div class=\"permit-card__number\">\n <span dir=\"ltr\">{{ permit.number }}</span>\n <ncim-clipboard-button [value]=\"permit.number\" [size]=\"16\" />\n </div>\n <div class=\"permit-card__dates\">{{ permit.startDate }} - {{ permit.endDate }}</div>\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\n/**\n * Represents a single status box within the summary card.\n */\nexport interface SummaryStatusItem {\n /** Label for the status (e.g., 'ممتثل') */\n label: string;\n /** Numerical value to display */\n value: number;\n /** Status type for styling: 'success' | 'warning' | 'info' | 'danger' */\n status: 'success' | 'warning' | 'info' | 'danger';\n /** Icon name from the ncim-icon set */\n icon: string;\n}\n\n/**\n * Complete data structure for the Inspection Summary Card.\n */\nexport interface InspectionSummaryData {\n itemsCount: string | null | undefined;\n /** Main card title (e.g., 'نتيجة الفحص الفني') */\n title: string;\n /** Total items count */\n totalCount: number;\n /** Label for total items (e.g., 'بند') */\n totalCountLabel: string;\n /** List of individual status summaries */\n stats: SummaryStatusItem[];\n /** Latest approval/visit date */\n approvalDate: string;\n}\n\n@Component({\n selector: 'ncim-inspection-summary-card',\n standalone: true,\n imports: [CommonModule, TranslateModule, Icon],\n templateUrl: './inspection-summary-card.html',\n styleUrl: './inspection-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InspectionSummaryCard {\n data = input<InspectionSummaryData | null>(null);\n}\n","@if (data(); as summary) {\n <div class=\"sidebar-card\">\n <div class=\"sidebar-card__header\">\n <h3 class=\"sidebar-card__title\">{{ summary.title | translate }}</h3>\n <span class=\"sidebar-card__subtitle\">\n {{ 'LICENSE_DETAILS.SUMMARY_COUNT' | translate }}\n <strong class=\"sidebar-card__subtitle__count\">{{ summary.totalCount }}</strong\n >{{ 'LICENSE_DETAILS.ITEMS_COUNT' | translate }}</span\n >\n </div>\n\n <div class=\"status-grid\">\n @for (item of summary.stats; track item.label) {\n <div class=\"status-box\" [class]=\"'status-box--' + item.status\">\n <ncim-icon [name]=\"item.icon\" [size]=\"16\" class=\"status-box__icon\"></ncim-icon>\n <div class=\"status-box__header\">\n <span class=\"status-box__label\">{{ item.label | translate }}</span>\n </div>\n <span class=\"status-box__value\">{{ item.value }}</span>\n </div>\n }\n </div>\n\n <div class=\"sidebar-card__footer\">{{ 'LICENSE_DETAILS.TECH_REPORT.APPROVAL_DATE_PREFIX' | translate }} {{ summary.approvalDate }}</div>\n </div>\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { IconName } from '@libs/core/enums';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-icon-card',\n imports: [TranslateModule, Icon],\n templateUrl: './icon-card.html',\n styleUrl: './icon-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconCard {\n readonly title = input.required<string>();\n readonly subTitle = input<string>('');\n readonly icon = input.required<IconName>();\n readonly backgroundColor = input<string>('#8B2942');\n readonly iconSize = input<number>(40);\n readonly isSelected = input<boolean>(false);\n readonly isDisabled = input<boolean>(false);\n readonly useTranslate = input<boolean>(true);\n readonly clickable = input<boolean>(false);\n\n readonly clicked = output<void>();\n\n onSpaceKey(event: Event): void {\n if (this.clickable() && !this.isDisabled()) {\n event.preventDefault();\n this.clicked.emit();\n }\n }\n}\n","<div\n class=\"icon-card\"\n [style.--icon-card-bg]=\"backgroundColor()\"\n [class.icon-card--selected]=\"isSelected()\"\n [class.icon-card--disabled]=\"isDisabled()\"\n [class.icon-card--clickable]=\"clickable() && !isDisabled()\"\n [attr.tabindex]=\"clickable() && !isDisabled() ? 0 : null\"\n [attr.role]=\"clickable() ? 'button' : null\"\n (click)=\"clickable() && !isDisabled() && clicked.emit()\"\n (keydown.enter)=\"clickable() && !isDisabled() && clicked.emit()\"\n (keydown.space)=\"onSpaceKey($event)\"\n>\n <div class=\"icon-card__icon-wrap\">\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" class=\"icon-card__icon\" />\n </div>\n <h3 class=\"icon-card__title\">\n @if (useTranslate()) {\n {{ title() | translate }}\n } @else {\n {{ title() }}\n }\n </h3>\n @if (subTitle()) {\n <p class=\"icon-card__subtitle\">\n @if (useTranslate()) {\n {{ subTitle() | translate }}\n } @else {\n {{ subTitle() }}\n }\n </p>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/**\n * Indeterminate loading spinner. Use for loading states (e.g. SSO redirect, form submission).\n */\n@Component({\n selector: 'ncim-spinner',\n templateUrl: './spinner.html',\n styleUrl: './spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Spinner {\n /** Size in pixels. Default 48. */\n readonly size = input<number>(48);\n}\n","<div class=\"ncim-spinner\" role=\"status\" aria-hidden=\"true\" [style.width.px]=\"size()\" [style.height.px]=\"size()\"></div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '../../../templates/auth-layout/auth-layout';\nimport { Icon } from '../../../atoms/icon/icon';\nimport { NcimButton } from '../../../atoms/button/button';\n\n/**\n * Presentational component for SSO error display.\n * Receives all data via inputs — no route, router, or business logic.\n *\n * Use from a smart container that reads route params and passes the data.\n */\n@Component({\n selector: 'ncim-sso-error-display',\n imports: [AuthLayout, Icon, NcimButton, RouterLink, TranslateModule],\n templateUrl: './sso-error-display.html',\n styleUrl: './sso-error-display.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SsoErrorDisplay {\n /** SSO error code (e.g. 'access_denied'). */\n readonly errorCode = input.required<string>();\n\n /** Server-provided description, or null to use errorMessageKey. */\n readonly errorDescription = input<string | null>(null);\n\n /** i18n key for message when errorDescription is null (e.g. AUTH.SSO.ERROR.CODES.access_denied). */\n readonly errorMessageKey = input.required<string>();\n\n /** Whether to show the error code badge. */\n readonly showCodeBadge = input<boolean>(false);\n\n /** Whether to show the \"Try Again\" retry button (for recoverable errors). */\n readonly showRetryButton = input<boolean>(false);\n\n /** Router path for the \"Back to login\" link. */\n readonly loginPath = input.required<string>();\n\n /** i18n key for the page title. */\n readonly titleKey = input<string>('AUTH.SSO.ERROR.TITLE');\n\n /** i18n key for the code label. */\n readonly codeLabelKey = input<string>('AUTH.SSO.ERROR.CODE_LABEL');\n\n /** i18n key for the back button. */\n readonly backToLoginKey = input<string>('AUTH.SSO.ERROR.BACK_TO_LOGIN');\n\n /** i18n key for the retry button. */\n readonly retryLabelKey = input<string>('AUTH.SSO.ERROR.RETRY');\n\n /** Emitted when the user clicks the retry button. */\n readonly retryClick = output<void>();\n}\n","<ncim-auth-layout>\n <section class=\"ncim-sso-error-display\" role=\"alert\" [attr.aria-label]=\"titleKey() | translate\">\n <div class=\"ncim-sso-error-display__icon-wrapper\" aria-hidden=\"true\">\n <ncim-icon name=\"warning\" [size]=\"64\" />\n </div>\n <h1 class=\"ncim-sso-error-display__title\">{{ titleKey() | translate }}</h1>\n <p class=\"ncim-sso-error-display__message\" aria-live=\"polite\">\n {{ errorDescription() ?? (errorMessageKey() | translate) }}\n </p>\n @if (showCodeBadge()) {\n <div class=\"ncim-sso-error-display__code-badge\">\n <span class=\"ncim-sso-error-display__code-label\">{{ codeLabelKey() | translate }}</span>\n <code class=\"ncim-sso-error-display__code-value\">{{ errorCode() }}</code>\n </div>\n }\n <div class=\"ncim-sso-error-display__actions\">\n @if (showRetryButton()) {\n <ncim-button type=\"button\" variant=\"secondary\" [fullWidth]=\"false\" (click)=\"retryClick.emit()\">\n {{ retryLabelKey() | translate }}\n </ncim-button>\n }\n <ncim-button variant=\"black\" [fullWidth]=\"false\" [routerLink]=\"loginPath()\">\n {{ backToLoginKey() | translate }}\n </ncim-button>\n </div>\n </section>\n</ncim-auth-layout>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '../../../templates/auth-layout/auth-layout';\nimport { Spinner } from '../../../atoms/spinner/spinner';\n\n/**\n * Presentational component for SSO callback loading state.\n * Shows spinner and redirect message — no redirect logic.\n *\n * Use from a smart container that handles the actual redirect.\n */\n@Component({\n selector: 'ncim-sso-callback-view',\n imports: [AuthLayout, Spinner, TranslateModule],\n templateUrl: './sso-callback-view.html',\n styleUrl: './sso-callback-view.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SsoCallbackView {\n /** i18n key for the title (e.g. \"Redirecting...\"). */\n readonly titleKey = input<string>('AUTH.SSO.REDIRECTING');\n\n /** i18n key for the description message. */\n readonly messageKey = input<string>('AUTH.SSO.REDIRECTING_DESC');\n\n /** Spinner size in pixels. */\n readonly spinnerSize = input<number>(48);\n}\n","<ncim-auth-layout>\n <div class=\"ncim-sso-callback-view\" role=\"status\" aria-live=\"polite\">\n <ncim-spinner [size]=\"spinnerSize()\" />\n <h2 class=\"ncim-sso-callback-view__title\">{{ titleKey() | translate }}</h2>\n <p class=\"ncim-sso-callback-view__message\">{{ messageKey() | translate }}</p>\n </div>\n</ncim-auth-layout>\n","import { Component, ChangeDetectionStrategy, computed, inject, signal } from '@angular/core';\nimport { GENERATED_ICON_NAMES } from '@libs/core/constants';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule } from 'primeng/toast';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\ninterface IconItem {\n name: string;\n displayName: string;\n}\n\n@Component({\n selector: 'ncim-icons-document',\n imports: [Icon, ToastModule, TranslateModule],\n templateUrl: './icons-document.html',\n styleUrl: './icons-document.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService],\n})\nexport class IconsDocument {\n private readonly messageService = inject(MessageService);\n readonly searchTerm = signal('');\n\n readonly icons: IconItem[] = GENERATED_ICON_NAMES.map(name => ({\n name,\n displayName: this.toDisplayName(name),\n }));\n\n readonly filteredIcons = computed(() => {\n const query = this.searchTerm().trim().toLowerCase();\n\n if (!query) {\n return this.icons;\n }\n\n return this.icons.filter(icon => {\n const iconName = icon.name.toLowerCase();\n const displayName = icon.displayName.toLowerCase();\n return iconName.includes(query) || displayName.includes(query);\n });\n });\n\n onSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n\n this.searchTerm.set(target.value);\n }\n\n copyToClipboard(iconName: string): void {\n navigator.clipboard.writeText(iconName).then(() => {\n this.messageService.add({\n severity: 'success',\n summary: 'Copied!',\n detail: `Icon name \"${iconName}\" copied to clipboard`,\n life: 2000,\n });\n });\n }\n\n private toDisplayName(iconName: string): string {\n return iconName\n .replace(/[-_]+/g, ' ')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/\\s+/g, ' ')\n .trim()\n .replace(/\\b\\w/g, char => char.toUpperCase());\n }\n}\n","<p-toast position=\"top-center\" />\n\n<div class=\"icons-document\">\n <div class=\"icons-document__header\">\n <h1 class=\"icons-document__title\">{{ 'ICONS_DOCUMENT.TITLE' | translate }}</h1>\n <p class=\"icons-document__description\">{{ 'ICONS_DOCUMENT.DESCRIPTION' | translate }}</p>\n <p class=\"icons-document__sync-note\">{{ 'ICONS_DOCUMENT.SYNC_NOTE' | translate }}</p>\n </div>\n\n <div class=\"icons-document__search-wrapper\">\n <input\n class=\"icons-document__search-input\"\n type=\"search\"\n [value]=\"searchTerm()\"\n [placeholder]=\"'ICONS_DOCUMENT.SEARCH_PLACEHOLDER' | translate\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <div class=\"icons-document__grid\">\n @if (filteredIcons().length) {\n @for (icon of filteredIcons(); track icon.name) {\n <div class=\"icon-card\" (click)=\"copyToClipboard(icon.name)\">\n <div class=\"icon-card__copy-hint\">\n <ncim-icon name=\"copy\" [size]=\"14\" />\n </div>\n <div class=\"icon-card__icon\">\n <ncim-icon [name]=\"icon.name\" [size]=\"32\" />\n </div>\n <div class=\"icon-card__name\">{{ icon.displayName }}</div>\n <div class=\"icon-card__code\">{{ icon.name }}</div>\n </div>\n }\n } @else {\n <p class=\"icons-document__empty\">{{ 'ICONS_DOCUMENT.NO_RESULTS' | translate }}</p>\n }\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-category-tile',\n imports: [Icon, RouterLink],\n templateUrl: './category-tile.html',\n styleUrl: './category-tile.scss',\n})\nexport class CategoryTile {\n readonly icon = input.required<string>();\n readonly label = input.required<string>();\n readonly routerLink = input<string>();\n readonly description = input<string | null>(null);\n readonly variant = input<'wide' | 'narrow'>('wide');\n}\n","<button\n class=\"category-tile\"\n [class.category-tile--narrow]=\"variant() === 'narrow'\"\n [class.category-tile--wide]=\"variant() === 'wide'\"\n [routerLink]=\"routerLink()\"\n>\n <div class=\"category-tile__content\">\n <ncim-icon [name]=\"icon()\" [size]=\"50\" />\n <div class=\"category-tile__info\">\n <h3 class=\"category-tile__label\">{{ label() }}</h3>\n @if (description()) {\n <p class=\"category-tile__description\">{{ description() }}</p>\n }\n </div>\n </div>\n <ncim-icon class=\"category-tile__arrow\" name=\"regularArrowLeft\" [size]=\"16\" />\n</button>\n","import { NgOptimizedImage } from '@angular/common';\nimport { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\nimport { CategoryTile } from '../../molecules/category-tile/category-tile';\n\n/** Sector shape for entity summary card; compatible with RegulatedSectorType from features. */\nexport interface EntitySummarySector {\n id: string | number;\n name: string;\n label: string;\n icon: string;\n routerLink?: string;\n}\n\n@Component({\n selector: 'ncim-entity-summary-card',\n imports: [NgOptimizedImage, CategoryTile, NcimButton, TranslatePipe],\n templateUrl: './entity-summary-card.html',\n styleUrl: './entity-summary-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntitySummaryCard {\n readonly logo = input.required<string>();\n readonly name = input.required<string>();\n readonly description = input.required<string>();\n readonly sectors = input.required<EntitySummarySector[]>();\n readonly sectorClick = output<string>();\n readonly infoClick = output<void>();\n}\n","<div class=\"entity-summary-card__inner\">\n <div class=\"entity-summary-card__header\">\n <div class=\"entity-summary-card__content\">\n <img [ngSrc]=\"logo()\" width=\"78\" height=\"78\" alt=\"entity icon\" class=\"entity-summary-card__icon\" />\n <div class=\"entity-summary-card__info\">\n <h2 class=\"entity-summary-card__name\">{{ name() }}</h2>\n <p class=\"entity-summary-card__description\">{{ description() }}</p>\n </div>\n </div>\n\n <div class=\"entity-summary-card__actions\">\n <ncim-button (click)=\"infoClick.emit()\" [iconSize]=\"24\" variant=\"neutral\" size=\"small-icon-only\" icon=\"info\" />\n <ncim-button [iconSize]=\"24\" variant=\"neutral\" size=\"small-icon-only\" icon=\"settings\" />\n </div>\n </div>\n <div class=\"entity-summary-card__body\">\n @for (sector of sectors(); track sector.id) {\n <ncim-category-tile\n (click)=\"sectorClick.emit(sector.name)\"\n [routerLink]=\"sector.routerLink\"\n [label]=\"sector.label | translate\"\n [icon]=\"sector.icon\"\n />\n }\n </div>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ncim-create-category-tile',\n imports: [NcimButton],\n templateUrl: './create-category-tile.html',\n styleUrl: './create-category-tile.scss',\n})\nexport class CreateCategoryTile {\n title = input.required<string>();\n description = input.required<string>();\n createButtonLabel = input.required<string>();\n createClick = output<void>();\n}\n","<div class=\"tile\">\n <div class=\"tile__border\"></div>\n <div class=\"tile__content\">\n <h3 class=\"tile__title\">{{ title() }}</h3>\n <p class=\"tile__description\">{{ description() }}</p>\n </div>\n\n <div class=\"tile__action\">\n <ncim-button size=\"extra-small\" variant=\"black\" icon=\"plus\" [iconSize]=\"20\" (click)=\"createClick.emit()\">\n {{ createButtonLabel() }}\n </ncim-button>\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ChartLegendItem } from '../chart.models';\n\n@Component({\n selector: 'ncim-chart-legend',\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegend {\n /** List of legend items to display */\n readonly items = input<ChartLegendItem[]>([]);\n\n /** Layout direction */\n readonly direction = input<'row' | 'column'>('row');\n\n /** Size of the color marker in pixels */\n readonly iconSize = input<number>(14);\n\n /** Font size of the labels in pixels */\n readonly fontSize = input<number>(14);\n\n /** Gap between legend items in pixels */\n readonly gap = input<number>(10);\n\n /** Gap between marker and label in pixels */\n readonly itemGap = input<number>(8);\n\n /** Flex justify content alignment */\n readonly justifyContent = input<string>('flex-start');\n}\n","<div class=\"chart-legend\" [style.gap.px]=\"gap()\" [style.flex-direction]=\"direction()\" [style.justify-content]=\"justifyContent()\">\n @for (item of items(); track item.name) {\n <div class=\"chart-legend__item\" [style.gap.px]=\"itemGap()\">\n <div\n class=\"chart-legend__marker\"\n [style.background-color]=\"item.color\"\n [style.width.px]=\"iconSize()\"\n [style.height.px]=\"iconSize()\"\n ></div>\n <span class=\"chart-legend__label\" [style.font-size.px]=\"fontSize()\">{{ item.name }}</span>\n </div>\n }\n</div>\n","import type { EChartsOption, TooltipComponentOption } from 'echarts';\nimport type { EChartTooltipParam } from './chart.models';\n\n/** Base text style used across all charts. */\nexport const CHART_TEXT_STYLE: EChartsOption['textStyle'] = {\n fontFamily: 'IBM Plex Sans Arabic',\n};\n\n/** Base tooltip styling shared by all chart components. */\nexport const CHART_TOOLTIP_BASE: Pick<\n TooltipComponentOption,\n 'backgroundColor' | 'borderColor' | 'borderWidth' | 'padding' | 'textStyle' | 'extraCssText' | 'confine'\n> = {\n backgroundColor: '#fff',\n borderColor: '#eee',\n borderWidth: 1,\n padding: [10, 14],\n textStyle: { color: '#333', fontSize: 12 },\n extraCssText: 'box-shadow: 0 2px 8px rgba(0,0,0,0.1); border-radius: 8px;',\n confine: true,\n};\n\n/** Shared axis label style for bar/line/area charts. */\nexport const CHART_AXIS_LABEL_STYLE = {\n color: '#999',\n fontSize: 11,\n} as const;\n\n/** Shared split line style for grid charts. */\nexport const CHART_SPLIT_LINE_STYLE = {\n show: true,\n lineStyle: { type: 'dashed' as const, color: '#eee' },\n} as const;\n\n/** Base grid config for axis-based charts (bar, line, area). */\nexport const CHART_GRID_BASE: EChartsOption['grid'] = {\n left: 0,\n right: 8,\n top: 10,\n bottom: 0,\n containLabel: true,\n};\n\nexport interface CategoryXAxisOptions {\n showLabels?: boolean;\n boundaryGap?: boolean;\n labelInterval?: number;\n}\n\n/** Build shared xAxis config for category charts. */\nexport function buildCategoryXAxis(categories: string[], options?: CategoryXAxisOptions): EChartsOption['xAxis'] {\n const { showLabels = true, boundaryGap = false, labelInterval } = options ?? {};\n return {\n type: 'category',\n data: categories,\n boundaryGap,\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n show: showLabels,\n ...CHART_AXIS_LABEL_STYLE,\n ...(labelInterval !== undefined && { interval: labelInterval }),\n },\n };\n}\n\n/** Build shared yAxis config for value charts (RTL position). */\nexport function buildValueYAxis(showGrid = true): EChartsOption['yAxis'] {\n return {\n type: 'value',\n position: 'right',\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: showGrid ? CHART_SPLIT_LINE_STYLE : { show: false },\n axisLabel: { ...CHART_AXIS_LABEL_STYLE, margin: 20 },\n };\n}\n\n/** Formatter for axis-triggered tooltips (bar, line, area charts). */\nexport function formatAxisTooltip(params: unknown): string {\n const items = (Array.isArray(params) ? params : [params]) as EChartTooltipParam[];\n let str = `<div style=\"margin-bottom: 8px; font-weight: 600;\">${items[0]?.axisValueLabel ?? items[0]?.name ?? ''}</div>`;\n items.forEach((item: EChartTooltipParam) => {\n if (item.value === null) {\n return;\n }\n str += `\n <div style=\"display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 4px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${item.marker}\n <span style=\"color: #666;\">${item.seriesName}</span>\n </div>\n <span style=\"font-weight: 600; color: #333;\">${item.value}</span>\n </div>`;\n });\n return str;\n}\n\n/** Formatter for item-triggered tooltips (pie, donut) with optional value suffix. */\nexport function formatItemTooltip(params: unknown, valueSuffix = ''): string {\n const p = params as EChartTooltipParam;\n return `\n <div style=\"display: flex; align-items: center; justify-content: space-between; gap: 16px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n ${p.marker}\n <span style=\"color: #666;\">${p.name}</span>\n </div>\n <span style=\"font-weight: 600; color: #333;\">${p.value}${valueSuffix}</span>\n </div>`;\n}\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartLineSeriesData, ChartLegendItem } from '../chart.models';\nimport {\n CHART_TEXT_STYLE,\n CHART_TOOLTIP_BASE,\n CHART_GRID_BASE,\n formatAxisTooltip,\n buildCategoryXAxis,\n buildValueYAxis,\n} from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-line-chart',\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class LineChart {\n /** Array of series data to display */\n readonly series = input<ChartLineSeriesData[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<string[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Whether to show the area fill under lines */\n readonly showArea = input<boolean>(true);\n\n /** Whether to show smooth curves */\n readonly smooth = input<boolean>(true);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show grid lines */\n readonly showGrid = input<boolean>(true);\n\n /** Whether to show X-axis labels */\n readonly showXAxisLabels = input<boolean>(false);\n\n /** Index of data point to highlight with a vertical bar (-1 for none) */\n readonly highlightIndex = input<number>(-1);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.series().map(s => ({ name: s.name, color: s.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const seriesData = this.series();\n const cats = this.categories();\n const smooth = this.smooth();\n const showArea = this.showArea();\n const showGrid = this.showGrid();\n const showXAxisLabels = this.showXAxisLabels();\n const hlIndex = this.highlightIndex();\n\n // ... (rest is fine, I will splice at legend)\n\n const lineSeries = seriesData.map((s, idx) => ({\n // ... logic same as existing ...\n name: s.name,\n type: 'line' as const,\n data: s.data,\n smooth,\n symbol: 'none',\n lineStyle: { width: 2, color: s.color },\n itemStyle: { color: s.color },\n areaStyle: showArea\n ? {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${s.color ?? '#5470c6'}33` },\n { offset: 1, color: `${s.color ?? '#5470c6'}05` },\n ]),\n }\n : undefined,\n markPoint:\n hlIndex >= 0 && idx === 0\n ? {\n data: [\n {\n coord: [hlIndex, s.data[hlIndex]] as [number, number],\n symbol: 'circle',\n symbolSize: 14,\n itemStyle: {\n color: '#fff',\n borderColor: s.accentColor ?? s.color ?? '#66BB9B',\n borderWidth: 3,\n shadowColor: 'rgba(0,0,0,0.1)',\n shadowBlur: 4,\n },\n },\n ],\n }\n : undefined,\n }));\n\n const barSeries =\n hlIndex >= 0 && seriesData.length > 0\n ? [\n {\n type: 'bar' as const,\n data: cats.map((_, i) => (i === hlIndex ? seriesData[0].data[hlIndex] : null)),\n barWidth: 30,\n itemStyle: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n {\n offset: 0,\n color: `${seriesData[0].accentColor ?? seriesData[0].color ?? '#66BB9B'}50`,\n },\n {\n offset: 1,\n color: `${seriesData[0].accentColor ?? seriesData[0].color ?? '#66BB9B'}08`,\n },\n ]),\n borderRadius: [4, 4, 0, 0],\n },\n z: 0,\n silent: true,\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n legend: { show: false },\n grid: CHART_GRID_BASE,\n xAxis: buildCategoryXAxis(cats, { showLabels: showXAxisLabels, boundaryGap: false }),\n yAxis: buildValueYAxis(showGrid),\n series: [...barSeries, ...lineSeries] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"line-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"line-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"line-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatAxisTooltip } from '../chart.utils';\n\n@Component({\n selector: 'ncim-area-chart',\n templateUrl: './area-chart.html',\n styleUrl: './area-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class AreaChart {\n /** Data points for the chart */\n readonly data = input<number[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<string[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number>(200);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Start color of the gradient (green area) */\n readonly startColor = input<string>('#8BC34A');\n\n /** End color of the gradient (red area) */\n readonly endColor = input<string>('#E57373');\n\n /** Whether to show smooth curves */\n readonly smooth = input<boolean>(true);\n\n /** Tooltip formatter label — falls back to the translated CHARTS.AREA_CHART.TOOLTIP_LABEL key */\n readonly tooltipLabel = input<string>('');\n\n /** Index of the highlighted point (-1 for none) */\n readonly highlightIndex = input<number>(-1);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const dataPoints = this.data();\n const cats = this.categories();\n const start = this.startColor();\n const end = this.endColor();\n const smooth = this.smooth();\n const hlIndex = this.highlightIndex();\n const label = this.tooltipLabel();\n\n const markPointData =\n hlIndex >= 0 && hlIndex < dataPoints.length\n ? [\n {\n name: 'highlight',\n coord: [hlIndex, dataPoints[hlIndex]] as [number, number],\n symbol: 'circle',\n symbolSize: 18,\n itemStyle: {\n color: end,\n borderColor: '#fff',\n borderWidth: 4,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 10,\n },\n label: {\n show: true,\n position: 'top' as const,\n distance: 5,\n formatter: `{date|${cats[hlIndex]}}\\n{status|${label}}`,\n backgroundColor: '#fff',\n borderRadius: 16,\n padding: [10, 20],\n shadowBlur: 20,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetY: 10,\n rich: {\n date: {\n color: '#6B7280',\n fontSize: 13,\n fontWeight: 600,\n align: 'center' as const,\n padding: [0, 0, 6, 0],\n fontFamily: 'IBM Plex Sans Arabic',\n },\n status: {\n color: end,\n fontSize: 16,\n fontWeight: 700,\n align: 'center' as const,\n fontFamily: 'IBM Plex Sans Arabic',\n },\n },\n },\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n grid: {\n left: 0,\n right: 0,\n top: 80,\n bottom: 0,\n containLabel: false,\n },\n xAxis: {\n type: 'category',\n data: cats,\n show: false,\n boundaryGap: false,\n },\n yAxis: {\n type: 'value',\n show: false,\n },\n series: [\n {\n type: 'line' as const,\n data: dataPoints,\n smooth,\n symbol: 'none',\n areaStyle: {\n color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [\n { offset: 0, color: `${end}40` },\n { offset: 1, color: `${start}40` },\n ]),\n },\n lineStyle: {\n width: 2,\n color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [\n { offset: 0, color: end },\n { offset: 1, color: start },\n ]),\n },\n markPoint: {\n data: markPointData,\n },\n },\n ],\n };\n });\n}\n","<div class=\"area-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div echarts [options]=\"chartOptions()\" class=\"area-chart__canvas\"></div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\n\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-donut-chart',\n templateUrl: './donut-chart.html',\n styleUrl: './donut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class DonutChart {\n /** Data items for the donut rings */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Center text (main value) */\n readonly centerValue = input<string | number | null>(null);\n\n /** Center sub label */\n readonly centerLabel = input<string | null>(null);\n\n /** Inner radius percentage */\n readonly innerRadius = input<string>('65%');\n\n /** Outer radius percentage */\n readonly outerRadius = input<string>('80%');\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show the gap between items */\n readonly showGap = input<boolean>(true);\n\n /** Start angle of the donut */\n readonly startAngle = input<number>(90);\n\n /** Total value for computing arc proportions */\n readonly total = input<number>(0);\n\n /**\n * Maximum value per ring — each ring's arc = (value / maxRingValue) x 360.\n * If 0, the max value from the data is used.\n */\n readonly maxRingValue = input<number>(0);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.data().map(item => ({ name: item.name, color: item.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n const centerVal = this.centerValue();\n const centerLbl = this.centerLabel();\n const startAngle = this.startAngle();\n\n // Each ring's arc length = (value / max) x 360\n const maxVal = this.maxRingValue() || Math.max(...items.map(i => i.value), 1);\n\n // Ring sizing\n const ringWidth = 8;\n const radiusStep = 10;\n const baseRadius = 85;\n\n // Calculate offset percentage to center the dashed line within the 8px ring\n // Assuming height constrains the chart (standard for donuts), calculate px to %\n // Subtract estimated legend height to get closer to actual chart radius for cleaner px->% conversion\n const h = (this.height() || 300) - (this.showLegend() ? 60 : 0);\n const rPx = h / 2;\n const offsetPx = ringWidth / 2;\n const offsetPct = rPx > 0 ? (offsetPx / rPx) * 100 : 5; // Default ~5% if invalid\n\n const rings = items.map((_, i) => ({\n radius: baseRadius - i * radiusStep,\n }));\n\n // Dashed circle radii (aligned with ring centers)\n const dashedRingSeries = rings.map(ring => {\n const r = ring.radius - offsetPct;\n return {\n type: 'pie' as const,\n radius: [`${r}%`, `${r}%`],\n center: ['50%', '50%'],\n silent: true,\n animation: false,\n label: { show: false },\n labelLine: { show: false },\n data: [\n {\n value: 1,\n itemStyle: {\n color: 'transparent',\n borderColor: '#e0e0e0',\n borderWidth: 1,\n borderType: [4, 15],\n },\n },\n ],\n z: 1,\n };\n });\n\n const gaugeSeries: EChartsOption['series'] = items.map((item, i) => {\n const proportion = Math.min(item.value / maxVal, 1);\n const sweepAngle = proportion * 340; // leave a small gap for aesthetics\n const arcStart = startAngle;\n const arcEnd = startAngle - sweepAngle;\n\n return {\n type: 'gauge' as const,\n z: 2,\n startAngle: arcStart,\n endAngle: arcEnd,\n radius: `${rings[i].radius}%`,\n center: ['50%', '50%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n lineStyle: {\n width: ringWidth,\n color: [[1, item.color || '#ccc']],\n },\n roundCap: true,\n },\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n detail: { show: false },\n title: { show: false },\n data: [\n {\n value: 0,\n name: item.name,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 4,\n borderType: 'solid',\n },\n },\n ],\n };\n });\n\n const graphic: EChartsOption['graphic'] =\n centerVal !== null && centerVal !== ''\n ? [\n {\n type: 'group' as const,\n left: 'center',\n top: 'center',\n children: [\n {\n type: 'text' as const,\n style: {\n text: String(centerVal),\n fontSize: 40,\n fontWeight: 'bold' as const,\n fill: '#333',\n y: -14,\n },\n },\n {\n type: 'text' as const,\n style: {\n text: centerLbl ?? undefined,\n fontSize: 14,\n fill: '#999',\n y: 24,\n },\n },\n ],\n },\n ]\n : [];\n\n return {\n textStyle: CHART_TEXT_STYLE,\n graphic,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: formatItemTooltip,\n },\n legend: {\n show: false,\n },\n series: [...dashedRingSeries, ...gaugeSeries] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"donut-chart\" [style.height.px]=\"height()\">\n <div class=\"donut-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"donut-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\nimport type { EChartsOption } from 'echarts';\n\n@Component({\n selector: 'ncim-pie-chart',\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class PieChart {\n /** Data items for the pie segments */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number>(300);\n\n /** Radius percentage */\n readonly radius = input<string>('75%');\n\n /** Whether to show percentage labels inside slices */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Start angle of the pie */\n readonly startAngle = input<number>(90);\n\n /** Whether to show a small hole in the center */\n readonly showCenterHole = input<boolean>(false);\n\n /** Inner radius percentage (if center hole is shown) */\n readonly innerRadius = input<string>('1%');\n\n /** Border radius of each pie slice in pixels */\n readonly itemRadius = input<number>(4);\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.data().map(item => ({ name: item.name, color: item.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n const radius = this.radius();\n const innerRadius = this.innerRadius();\n const showLabels = this.showLabels();\n const startAngle = this.startAngle();\n const centerHole = this.showCenterHole();\n const itemRadius = this.itemRadius();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: (params: unknown) => formatItemTooltip(params, '%'),\n },\n legend: {\n show: false,\n },\n series: [\n {\n type: 'pie',\n radius: centerHole ? [innerRadius, radius] : radius,\n center: ['50%', '50%'],\n startAngle,\n avoidLabelOverlap: true,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 2,\n borderRadius: itemRadius,\n },\n label: showLabels\n ? {\n show: true,\n position: 'inside' as const,\n formatter: '{c}%',\n fontSize: 14,\n fontWeight: 'bold' as const,\n color: '#fff',\n }\n : { show: false },\n emphasis: {\n scaleSize: 4,\n },\n labelLine: { show: false },\n data: items.map(item => ({\n name: item.name,\n value: item.value,\n itemStyle: item.color ? { color: item.color } : undefined,\n })),\n },\n ],\n };\n });\n}\n","<div class=\"pie-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"pie-chart__wrapper\">\n <div echarts [options]=\"chartOptions()\" class=\"pie-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div>\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n@Component({\n selector: 'ncim-gauge-chart',\n templateUrl: './gauge-chart.html',\n styleUrl: './gauge-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class GaugeChart {\n /** Current value (0-100) */\n readonly value = input<number>(0);\n\n /** Chart height in pixels */\n readonly height = input<number>(250);\n\n /** Chart width in pixels (optional) */\n readonly width = input<number | null>(null);\n\n /** Main color for the filled portion */\n readonly color = input<string>('#F5A623');\n\n /** Background color for the unfilled portion */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n /** Label text below the percentage */\n readonly label = input<string>('');\n\n /** Whether to show the percentage text */\n readonly showValue = input<boolean>(true);\n\n /** Start angle of the gauge */\n readonly startAngle = input<number>(180);\n\n /** End angle of the gauge */\n readonly endAngle = input<number>(0);\n\n /**\n * Whether the layout is right-to-left.\n * In RTL mode the chart text is hidden and rendered as an overlay to avoid mirroring.\n */\n readonly isRtl = input<boolean>(false);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const val = this.value();\n const fillColor = this.color();\n const bgColor = this.backgroundColor();\n const showVal = this.showValue();\n const label = this.label();\n const isRtl = this.isRtl();\n const startAngle = this.startAngle();\n const endAngle = this.endAngle();\n\n // Hide chart text in RTL; we render it as overlay to avoid mirroring\n const showChartText = !isRtl;\n\n // Ensure ratio is between 0 and 1\n const ratio = Math.max(0, Math.min(val / 100, 1));\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle,\n endAngle,\n radius: '100%',\n center: ['50%', '55%'],\n min: 0,\n max: 100,\n splitNumber: 40,\n pointer: { show: false },\n axisLine: {\n lineStyle: {\n width: 0,\n color: [\n [ratio, fillColor],\n [1, bgColor],\n ],\n },\n },\n splitLine: {\n show: true,\n length: 22,\n distance: 0,\n lineStyle: {\n width: 4,\n color: 'auto',\n cap: 'round',\n },\n },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: {\n show: showChartText && !!label,\n offsetCenter: [0, '0%'],\n fontSize: 14,\n color: '#666',\n align: 'center',\n },\n detail: {\n show: showChartText && showVal,\n offsetCenter: [0, '-20%'],\n fontSize: 36,\n fontWeight: 'bold',\n color: '#333',\n align: 'center',\n formatter: `%${val}`,\n },\n data: [{ value: val, name: label }],\n },\n ],\n };\n });\n}\n","<div class=\"gauge-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"gauge-chart__canvas\" [class.gauge-chart__canvas--rtl]=\"isRtl()\">\n <div echarts [options]=\"chartOptions()\" class=\"gauge-chart__canvas-inner\"></div>\n </div>\n @if (isRtl() && showValue()) {\n <div class=\"gauge-chart__label-overlay\" aria-hidden=\"true\">\n <span class=\"gauge-chart__value\">%{{ value() }}</span>\n @if (label()) {\n <span class=\"gauge-chart__label\">{{ label() }}</span>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\n\nexport interface ScaleIndicatorLabels {\n low: string;\n mid: string;\n high: string;\n}\n\n@Component({\n selector: 'ncim-scale-indicator',\n templateUrl: './scale-indicator.html',\n styleUrl: './scale-indicator.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScaleIndicator {\n /** Title displayed above the scale */\n readonly title = input<string>('');\n\n /** Current value (used when start/end not provided, for backward compat) */\n readonly value = input<number>(50);\n\n /** Scale minimum (full track range) */\n readonly min = input<number>(0);\n\n /** Scale maximum (full track range) */\n readonly max = input<number>(100);\n\n /** Highlighted range start (when provided with end, shows range bar instead of thumb) */\n readonly start = input<number | undefined>(undefined);\n\n /** Highlighted range end (when provided with start, shows range bar instead of thumb) */\n readonly end = input<number | undefined>(undefined);\n\n /** Labels for the three segments (right-to-left in RTL: high, mid, low) */\n readonly labels = input<ScaleIndicatorLabels>({\n low: 'في تحسّن',\n mid: 'ضمن النطاق',\n high: 'بحاجة لمعالجة',\n });\n\n /** Active indicator color */\n readonly activeColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F0F0F0');\n\n readonly barHeight = input<number>(8);\n\n private readonly rangeScale = computed(() => {\n const minVal = this.min();\n const maxVal = this.max();\n const range = maxVal - minVal;\n return range <= 0 ? 1 : range;\n });\n\n /** Range mode: start and end provided. Single-value mode: use value. */\n readonly isRangeMode = computed(() => {\n const s = this.start();\n const e = this.end();\n return s !== undefined && e !== undefined;\n });\n\n /** Start and end positions as percentage (0–100), normalized so start ≤ end */\n readonly rangePercent = computed(() => {\n const minVal = this.min();\n const scale = this.rangeScale();\n const toPercent = (v: number) => Math.max(0, Math.min(100, ((v - minVal) / scale) * 100));\n if (this.isRangeMode()) {\n const s = toPercent(this.start()!);\n const e = toPercent(this.end()!);\n return { start: Math.min(s, e), end: Math.max(s, e) };\n }\n const p = toPercent(this.value());\n return { start: p, end: p };\n });\n\n /** Start position as percentage (0–100) */\n readonly rangeStartPercent = computed(() => this.rangePercent().start);\n\n /** End position as percentage (0–100) */\n readonly rangeEndPercent = computed(() => this.rangePercent().end);\n\n /** Range width as percentage (min 4% when start=end for visibility) */\n readonly rangeWidthPercent = computed(() => {\n const w = this.rangeEndPercent() - this.rangeStartPercent();\n return w <= 0 ? 4 : w;\n });\n\n /** Thumb position (for single-value mode, backward compat) */\n readonly thumbPercent = computed(() => this.rangeStartPercent());\n}\n","<div class=\"scale-indicator\">\n @if (title()) {\n <h4 class=\"scale-indicator__title\">{{ title() }}</h4>\n }\n\n <div class=\"scale-indicator__track\">\n <div class=\"scale-indicator__segment\"></div>\n <div class=\"scale-indicator__segment\"></div>\n <div class=\"scale-indicator__segment\"></div>\n\n @if (isRangeMode()) {\n <div\n class=\"scale-indicator__range\"\n [style.left.%]=\"rangeStartPercent()\"\n [style.width.%]=\"rangeWidthPercent()\"\n [style.background-color]=\"activeColor()\"\n ></div>\n } @else {\n <div\n class=\"scale-indicator__thumb\"\n [style.height.px]=\"barHeight()\"\n [style.left.%]=\"thumbPercent()\"\n [style.background-color]=\"activeColor()\"\n ></div>\n }\n </div>\n\n <div class=\"scale-indicator__labels\">\n <span class=\"scale-indicator__label\">{{ labels().high }}</span>\n <span class=\"scale-indicator__label\">{{ labels().mid }}</span>\n <span class=\"scale-indicator__label\">{{ labels().low }}</span>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon } from '../../../atoms/icon/icon';\n\nexport interface HorizontalBarItem {\n label: string;\n value: number;\n maxValue?: number;\n color?: string;\n}\n\ninterface ComputedBarItem extends HorizontalBarItem {\n percentage: number;\n barColor: string;\n segmentFills: number[];\n}\n\n@Component({\n selector: 'ncim-horizontal-bar-chart',\n templateUrl: './horizontal-bar-chart.html',\n styleUrl: './horizontal-bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Icon],\n})\nexport class HorizontalBarChart {\n /** Data items for horizontal bars */\n readonly data = input<HorizontalBarItem[]>([]);\n\n /** Maximum value for all bars (auto-calculated if not provided) */\n readonly maxValue = input<number>(100);\n\n /** Whether to show value labels */\n readonly showValues = input<boolean>(true);\n\n /** Default bar color (used when item has no color) */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F0F0F0');\n\n /** Bar height in pixels */\n readonly barHeight = input<number>(8);\n\n /** Gap between bars in pixels */\n readonly gap = input<number>(20);\n\n /** Number of segments per bar */\n readonly segments = input<number>(3);\n\n readonly computedItems = computed<ComputedBarItem[]>(() => {\n const items = this.data();\n const max = this.maxValue();\n const segmentCount = this.segments();\n const segmentWidth = 100 / segmentCount;\n\n return items.map(item => {\n const percentage = max > 0 ? Math.min(100, (item.value / (item.maxValue ?? max)) * 100) : 0;\n\n const segmentFills = Array.from({ length: segmentCount }, (_, i) => {\n const segStart = i * segmentWidth;\n const segEnd = (i + 1) * segmentWidth;\n\n if (percentage >= segEnd) {\n return 100;\n }\n if (percentage <= segStart) {\n return 0;\n }\n return ((percentage - segStart) / segmentWidth) * 100;\n });\n\n return {\n ...item,\n percentage,\n barColor: item.color ?? this.defaultColor(),\n segmentFills,\n };\n });\n });\n}\n","<div class=\"horizontal-bar-chart\">\n @for (item of computedItems(); track item.label) {\n <div class=\"horizontal-bar-chart__item\" [style.margin-bottom.px]=\"gap()\">\n <div class=\"horizontal-bar-chart__header\">\n <span class=\"horizontal-bar-chart__label\">{{ item.label }}</span>\n @if (showValues()) {\n <span class=\"horizontal-bar-chart__value\" [style.color]=\"item.barColor\">\n {{ item.value }}\n <ncim-icon name=\"chevronLeft\" [size]=\"18\" [style.color]=\"item.barColor\"></ncim-icon>\n </span>\n }\n </div>\n <div class=\"horizontal-bar-chart__segments\">\n @for (fill of item.segmentFills; track $index) {\n <div class=\"horizontal-bar-chart__segment\" [style.height.px]=\"barHeight()\" [style.background-color]=\"trackColor()\">\n <div class=\"horizontal-bar-chart__fill\" [style.width.%]=\"fill\" [style.background-color]=\"item.barColor\"></div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n afterNextRender,\n OnDestroy,\n viewChild,\n ElementRef,\n inject,\n effect,\n signal,\n HostListener,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport type { Map as LeafletMap, LayerGroup } from 'leaflet';\nimport { MarkerStatus, TrendDirection, MapLegendStatus } from '@libs/core/enums';\nimport { MAP_CONFIG, MAP_LEGEND_CONFIG, MAP_ACTION_ICONS, REGEX } from '@libs/core/constants';\nimport type { MapMarkerData, MapMarkerBadgeIcon } from '../chart.models';\nimport { firstValueFrom } from 'rxjs';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Icon } from '../../../atoms/icon/icon';\n\nconst MARKER_ICON_SIZE = 14;\n\nconst HTML_ESCAPE_MAP: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\n\nfunction escapeHtml(text: string): string {\n return text.replace(REGEX.HTML_ESCAPE, char => HTML_ESCAPE_MAP[char]);\n}\n\nconst STATUS_TO_BADGE: Record<MarkerStatus, MapLegendStatus> = {\n [MarkerStatus.WARNING]: MapLegendStatus.UNCORRECTED_VIOLATION,\n [MarkerStatus.ERROR]: MapLegendStatus.UNCORRECTED_VIOLATION,\n [MarkerStatus.INFO]: MapLegendStatus.CORRECTION_PERIOD,\n [MarkerStatus.SUCCESS]: MapLegendStatus.LICENSE_EXPIRING,\n};\n\nconst LEGEND_ITEMS = Object.values(MapLegendStatus).map(status => ({\n icon: MAP_LEGEND_CONFIG[status].icon,\n labelKey: MAP_LEGEND_CONFIG[status].labelKey,\n}));\n\n@Component({\n selector: 'ncim-map-view',\n templateUrl: './map-view.html',\n styleUrl: './map-view.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, Icon],\n})\nexport class MapView implements OnDestroy {\n readonly markers = input<MapMarkerData[]>([]);\n readonly centerLat = input<number>(MAP_CONFIG.defaultCenter.lat);\n readonly centerLng = input<number>(MAP_CONFIG.defaultCenter.lng);\n readonly zoom = input<number>(MAP_CONFIG.defaultZoom);\n readonly height = input<number>(400);\n\n private readonly http = inject(HttpClient);\n private readonly doc = inject(DOCUMENT);\n private readonly translate = inject(TranslateService);\n private readonly mapContainer = viewChild<ElementRef<HTMLDivElement>>('mapContainer');\n private map: LeafletMap | null = null;\n private markerLayer: LayerGroup | null = null;\n private leaflet: typeof import('leaflet') | null = null;\n private readonly mapReady = signal(false);\n private iconCache = new Map<string, string>();\n\n readonly legendItems = LEGEND_ITEMS;\n readonly legendOpen = signal(false);\n private readonly legendPopup = viewChild<ElementRef<HTMLElement>>('legendPopup');\n private readonly legendBtn = viewChild<ElementRef<HTMLButtonElement>>('legendBtn');\n\n constructor() {\n afterNextRender(() => this.initMap());\n\n effect(() => {\n const ready = this.mapReady();\n const currentMarkers = this.markers();\n const lat = this.centerLat();\n const lng = this.centerLng();\n const z = this.zoom();\n\n if (!ready || !this.map || !this.leaflet) {\n return;\n }\n\n this.map.setView([lat, lng], z);\n this.updateMarkers(this.leaflet, currentMarkers);\n });\n }\n\n ngOnDestroy(): void {\n this.map?.remove();\n this.map = null;\n this.markerLayer = null;\n this.leaflet = null;\n }\n\n toggleLegend(): void {\n this.legendOpen.update(v => !v);\n }\n\n closeLegend(): void {\n this.legendOpen.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.legendOpen()) {\n return;\n }\n const target = event.target as Node;\n const popup = this.legendPopup()?.nativeElement;\n const btn = this.legendBtn()?.nativeElement;\n if (popup?.contains(target) || btn?.contains(target)) {\n return;\n }\n this.closeLegend();\n }\n\n private injectLeafletCss(): void {\n if (this.doc.querySelector('link[data-lazy-bundle=\"leaflet\"]')) {\n return;\n }\n const preload = this.doc.querySelector<HTMLLinkElement>('link[rel=\"preload\"][href*=\"leaflet\"]');\n const link = this.doc.createElement('link');\n link.rel = 'stylesheet';\n link.setAttribute('data-lazy-bundle', 'leaflet');\n link.href = preload ? preload.href : 'leaflet.css';\n this.doc.head.appendChild(link);\n }\n\n private async initMap(): Promise<void> {\n this.injectLeafletCss();\n const leafletModule = await import('leaflet');\n const L = (leafletModule as { default?: typeof import('leaflet') }).default ?? leafletModule;\n\n const container = this.mapContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n const iconNames = [\n ...Object.values(MapLegendStatus).map(s => MAP_LEGEND_CONFIG[s].icon),\n MAP_ACTION_ICONS.briefcase.icon,\n MAP_ACTION_ICONS.time.icon,\n ];\n await this.preloadIcons([...new Set(iconNames)]);\n\n this.map = L.map(container, {\n center: [this.centerLat(), this.centerLng()],\n zoom: this.zoom(),\n zoomControl: true,\n attributionControl: false,\n });\n\n L.tileLayer(MAP_CONFIG.tileUrl, { maxZoom: MAP_CONFIG.maxZoom }).addTo(this.map);\n\n this.markerLayer = L.layerGroup().addTo(this.map);\n this.leaflet = L;\n this.mapReady.set(true);\n }\n\n private async preloadIcons(iconNames: string[]): Promise<void> {\n await Promise.all(\n iconNames.map(async name => {\n if (!this.iconCache.has(name)) {\n const svg = await this.loadIcon(name);\n this.iconCache.set(name, svg);\n }\n })\n );\n }\n\n private async loadIcon(name: string): Promise<string> {\n try {\n return await firstValueFrom(this.http.get(`assets/ncim-icons/${name}.svg`, { responseType: 'text' }));\n } catch {\n return '';\n }\n }\n\n private sizedIcon(name: string, size: number = MARKER_ICON_SIZE, useCurrentColor = false): string {\n const svg = this.iconCache.get(name) || '';\n if (!svg) {\n return '';\n }\n let result = svg.replace('<svg ', `<svg width=\"${size}\" height=\"${size}\" `);\n if (useCurrentColor) {\n result = result.replace(/fill=\"#[0-9a-fA-F]+\"/g, 'fill=\"currentColor\"');\n }\n return result;\n }\n\n private updateMarkers(L: typeof import('leaflet'), markerData: MapMarkerData[]): void {\n if (!this.markerLayer) {\n return;\n }\n\n this.markerLayer.clearLayers();\n\n for (const marker of markerData) {\n const icon = L.divIcon({\n className: '',\n html: this.buildMarkerHtml(marker),\n iconSize: MAP_CONFIG.markerSize,\n iconAnchor: MAP_CONFIG.markerAnchor,\n });\n\n L.marker([marker.lat, marker.lng], { icon }).addTo(this.markerLayer);\n }\n }\n\n private buildMarkerHtml(marker: MapMarkerData): string {\n const isUp = marker.trendDirection === TrendDirection.UP;\n const trendClass = isUp ? 'map-marker--trend-up' : 'map-marker--trend-down';\n const scoreClass = marker.score >= MAP_CONFIG.scoreThreshold ? 'map-marker--score-high' : 'map-marker--score-low';\n\n const badgeStatus =\n marker.statusBadgeIcon ??\n STATUS_TO_BADGE[marker.statusType ?? MarkerStatus.INFO] ??\n MapLegendStatus.CORRECTION_PERIOD;\n const badge = MAP_LEGEND_CONFIG[badgeStatus];\n const statusIconSvg = this.sizedIcon(badge.icon, 16, true);\n const statusLabel = marker.statusKey ? this.translate.instant(marker.statusKey) : (marker.statusText ?? '');\n const statusHtml =\n statusLabel !== ''\n ? `<div class=\"map-marker__status\" style=\"background:${badge.bg}\">\n <span class=\"map-marker__status-icon\" style=\"color:${badge.color}\">${statusIconSvg}</span>\n <span>${escapeHtml(statusLabel)}</span>\n </div>`\n : '';\n\n const showBriefcaseAction = badgeStatus !== MapLegendStatus.UPCOMING_VISIT;\n const showTimeAction = badgeStatus !== MapLegendStatus.LICENSE_EXPIRING;\n const briefcaseHtml = showBriefcaseAction\n ? `<span class=\"map-marker__action-icon map-marker__action-icon--briefcase\" style=\"background:${MAP_ACTION_ICONS.briefcase.bg};color:${MAP_ACTION_ICONS.briefcase.color}\">${this.sizedIcon(MAP_ACTION_ICONS.briefcase.icon, 14, true)}</span>`\n : '';\n const timeHtml = showTimeAction\n ? `<span class=\"map-marker__action-icon map-marker__action-icon--time\" style=\"background:${MAP_ACTION_ICONS.time.bg};color:${MAP_ACTION_ICONS.time.color}\">${this.sizedIcon(MAP_ACTION_ICONS.time.icon, 14, true)}</span>`\n : '';\n const actionsHtml =\n briefcaseHtml || timeHtml ? `<div class=\"map-marker__actions\">${briefcaseHtml}${timeHtml}</div>` : '';\n\n return `\n <div class=\"map-marker\">\n <div class=\"map-marker__top\">\n <div class=\"map-marker__info\">\n <div class=\"map-marker__title\">${escapeHtml(marker.title)}</div>\n <div class=\"map-marker__subtitle\">${escapeHtml(marker.subtitle)}</div>\n </div>\n <div class=\"map-marker__score-box\">\n <span class=\"map-marker__score ${scoreClass}\">${escapeHtml(String(marker.score))}</span>\n <span class=\"map-marker__trend ${trendClass}\">\n ${escapeHtml(String(marker.trendValue ?? ''))}<span>${isUp ? '↑' : '↓'} </span>\n </span>\n </div>\n </div>\n\n <div class=\"map-marker__divider\"></div>\n\n <div class=\"map-marker__bottom\">\n ${statusHtml}\n ${actionsHtml}\n </div>\n\n <div class=\"map-marker__pointer\"></div>\n </div>\n `;\n }\n}\n","<div class=\"map-view__wrapper\" [style.height.px]=\"height()\">\n <div class=\"map-view\" #mapContainer></div>\n\n <button\n type=\"button\"\n class=\"map-view__legend-btn\"\n #legendBtn\n [attr.aria-label]=\"'REGULATORY_DASHBOARD.MAP_LEGEND' | translate\"\n [attr.aria-expanded]=\"legendOpen()\"\n (click)=\"toggleLegend()\"\n >\n <span class=\"map-view__legend-btn-inner\">\n @if (!legendOpen()) {\n <ncim-icon name=\"help-circle\" [size]=\"20\"></ncim-icon>\n }\n @if (legendOpen()) {\n <ncim-icon name=\"close\" [size]=\"20\"></ncim-icon>\n }\n </span>\n </button>\n\n @if (legendOpen()) {\n <div class=\"map-view__legend-popup\" #legendPopup>\n <h3 class=\"map-view__legend-title\">{{ 'REGULATORY_DASHBOARD.MAP_LEGEND_TITLE' | translate }}</h3>\n <ul class=\"map-view__legend-list\">\n @for (item of legendItems; track item.labelKey) {\n <li class=\"map-view__legend-item\">\n <span class=\"map-view__legend-icon\" [class]=\"'map-view__legend-icon--' + item.icon\">\n <ncim-icon [name]=\"item.icon\" [size]=\"20\"></ncim-icon>\n </span>\n <span class=\"map-view__legend-label\">{{ item.labelKey | translate }}</span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { CHART_COLORS } from '@libs/core/constants';\nimport { MarkerStatus, TrendDirection } from '@libs/core/enums';\nimport { BarSeriesData } from '../shared/organisms/charts/bar-chart/bar-chart';\nimport { ChartLineSeriesData, ChartSeriesItem, MapMarkerData } from '../shared/organisms/charts/chart.models';\nimport { HorizontalBarItem } from '../shared/organisms/charts/horizontal-bar-chart/horizontal-bar-chart';\nimport { ScaleIndicatorLabels } from '../shared/organisms/charts/scale-indicator/scale-indicator';\n\n// ── Interfaces ──\n\nexport interface LicenseComplianceStats {\n name: string;\n id: string;\n city: string;\n trendData: number[];\n value: number;\n isUp: boolean;\n lastVisit: string;\n color: string;\n}\n\nexport interface ScaleIndicatorConfig {\n title: string;\n value: number;\n activeColor: string;\n labels?: ScaleIndicatorLabels;\n /** Scale range min (default 0) */\n min?: number;\n /** Scale range max (default 100) */\n max?: number;\n /** Highlighted range start (with end, shows range bar) */\n start?: number;\n /** Highlighted range end (with start, shows range bar) */\n end?: number;\n}\n\n// ── Market Cards ──\n\nexport const MARKET_CARDS: LicenseComplianceStats[] = [\n {\n name: 'سوق التجارة - حي الخليج',\n id: 'A-10179192',\n city: 'الرياض',\n trendData: [10, 15, 12, 18, 14, 22, 25, 30],\n value: 30,\n isUp: false,\n lastVisit: '01 أغسطس 2024 - وزارة الصناعة',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي الياسمين',\n id: 'A-10179193',\n city: 'الرياض',\n trendData: [10, 12, 15, 20, 35, 40, 60, 99],\n value: 99,\n isUp: true,\n lastVisit: '10 أكتوبر 2024 - وزارة المالية',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الملك فهد',\n id: 'A-10179194',\n city: 'الرياض',\n trendData: [20, 25, 30, 28, 40, 60, 75, 80],\n value: 80,\n isUp: false,\n lastVisit: '28 سبتمبر 2024 - وزارة البلديات',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي المربع',\n id: 'A-10179195',\n city: 'الرياض',\n trendData: [10, 12, 20, 18, 25, 40, 60, 80],\n value: 80,\n isUp: true,\n lastVisit: '01 أغسطس 2024 - وزارة الصناعة',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الروضة',\n id: 'A-10179196',\n city: 'جدة',\n trendData: [15, 18, 22, 28, 35, 42, 55, 72],\n value: 72,\n isUp: true,\n lastVisit: '15 سبتمبر 2024 - وزارة البلديات',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي الشفا',\n id: 'A-10179197',\n city: 'الرياض',\n trendData: [45, 42, 38, 35, 30, 25, 22, 18],\n value: 18,\n isUp: false,\n lastVisit: '22 أكتوبر 2024 - وزارة الصحة',\n color: CHART_COLORS.red,\n },\n {\n name: 'سوق التجارة - حي الفيصلية',\n id: 'A-10179198',\n city: 'الدمام',\n trendData: [30, 35, 40, 45, 50, 55, 65, 70],\n value: 70,\n isUp: true,\n lastVisit: '05 نوفمبر 2024 - وزارة التنمية',\n color: CHART_COLORS.green,\n },\n {\n name: 'سوق التجارة - حي العزيزية',\n id: 'A-10179199',\n city: 'مكة المكرمة',\n trendData: [20, 25, 30, 28, 35, 40, 38, 45],\n value: 45,\n isUp: true,\n lastVisit: '12 أكتوبر 2024 - وزارة البلديات',\n color: CHART_COLORS.orange,\n },\n {\n name: 'سوق التجارة - حي النخيل',\n id: 'A-10179200',\n city: 'الرياض',\n trendData: [60, 58, 55, 52, 48, 45, 42, 38],\n value: 38,\n isUp: false,\n lastVisit: '18 سبتمبر 2024 - وزارة الصناعة',\n color: CHART_COLORS.red,\n },\n];\n\n// ── Compliance vs Violations ──\n\nexport const COMPLIANCE_VS_VIOLATIONS_SERIES: ChartLineSeriesData[] = [\n { name: 'درجة الامتثال', data: [35, 34, 33, 30, 25, 35, 42, 38], color: CHART_COLORS.greenLight },\n { name: 'عدد المخالفات', data: [30, 28, 25, 33, 40, 32, 25, 30], color: CHART_COLORS.redLight },\n];\n\nexport const COMPLIANCE_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس'];\n\n// ── Compliance Trend by Item ──\n\nexport const COMPLIANCE_TREND_SERIES: ChartLineSeriesData[] = [\n { name: 'النظافة العامة', data: [20, 25, 30, 35, 40, 50, 25, 30], color: CHART_COLORS.greenLight },\n { name: 'السلامة', data: [30, 28, 25, 22, 20, 23, 26, 28], color: CHART_COLORS.purple },\n { name: 'الغذاء', data: [40, 42, 45, 50, 48, 45, 40, 35], color: CHART_COLORS.redLight },\n { name: 'التراخيص', data: [10, 12, 15, 18, 20, 22, 25, 28], color: CHART_COLORS.yellow },\n];\n\n// ── Stacked Bar (Violations Distribution) ──\n\nexport const STACKED_BAR_SERIES: BarSeriesData[] = [\n { name: 'الصحة', data: [10, 20, 15, 30, 10, 20], color: CHART_COLORS.blue, stack: 'total' },\n { name: 'التراخيص', data: [20, 10, 25, 20, 15, 30], color: CHART_COLORS.redSoft, stack: 'total' },\n { name: 'السلامة', data: [30, 40, 30, 20, 40, 30], color: CHART_COLORS.greenLeaf, stack: 'total' },\n];\n\nexport const BAR_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو'];\n\n// ── Grouped Bar (Compliance Change) ──\n\nexport const GROUPED_BAR_SERIES: BarSeriesData[] = [\n { name: 'الامتثال', data: [60, 80, 70, 90, 85, 95], color: CHART_COLORS.greenLight },\n { name: 'عدد المخالفات', data: [40, 20, 30, 10, 15, 5], color: CHART_COLORS.redLight },\n];\n\n// ── Inspection Results by Category ──\n\nexport const INSPECTION_SERIES: ChartLineSeriesData[] = [\n { name: 'التراخيص', data: [30, 35, 38, 36, 28, 18], color: CHART_COLORS.redLight },\n { name: 'الغذاء', data: [32, 30, 28, 25, 20, 25], color: CHART_COLORS.greenLight },\n { name: 'السلامة', data: [22, 18, 30, 45, 52, 32], color: CHART_COLORS.purple },\n { name: 'النظافة العامة', data: [28, 32, 30, 35, 38, 25], color: CHART_COLORS.greenTeal },\n];\n\nexport const INSPECTION_CATEGORIES: string[] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو'];\n\n// ── Monthly Compliance Rate ──\n\nexport const MONTHLY_COMPLIANCE_SERIES: ChartLineSeriesData[] = [\n { name: 'معدل الامتثال', data: [53, 48, 45, 29, 92, 57], color: CHART_COLORS.green },\n];\n\n// ── Risk Trend (Area Chart) ──\n\nexport const AREA_CHART_DATA: number[] = [45, 50, 92, 31, 34, 15, 20, 28, 35, 30, 28, 42, 45];\n\nexport const AREA_CHART_CATEGORIES: string[] = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n '',\n];\n\n// ── Visits by Authority (Donut) ──\n\nexport const DONUT_CHART_DATA: ChartSeriesItem[] = [\n { name: 'وزارة الصحة', value: 5, color: CHART_COLORS.greenLight },\n { name: 'وزارة البلديات والإسكان', value: 20, color: CHART_COLORS.redLight },\n { name: 'وزارة التنمية والموارد البشرية', value: 18, color: CHART_COLORS.yellow },\n];\n\n// ── Distribution by Region (Pie) ──\n\nexport const PIE_CHART_DATA: ChartSeriesItem[] = [\n { name: 'الرياض', value: 40, color: CHART_COLORS.greenLight },\n { name: 'الدمام', value: 34, color: CHART_COLORS.yellow },\n { name: 'جدة', value: 16, color: CHART_COLORS.redLight },\n];\n\n// ── Visit Readiness (Gauge) ──\n\nexport const GAUGE_VALUE = 20;\n\n// ── Scale Indicators ──\n\nexport const SCALE_INDICATORS: ScaleIndicatorConfig[] = [\n {\n title: 'الالتزام بمواعيد التراخيص',\n value: 50,\n activeColor: CHART_COLORS.green,\n start: 10,\n end: 30,\n },\n {\n title: 'فعالية تصحيح المخالفات',\n value: 50,\n activeColor: CHART_COLORS.green,\n start: 40,\n end: 60,\n },\n {\n title: 'معدل تكرار المخالفات',\n value: 50,\n activeColor: CHART_COLORS.green,\n labels: { low: 'منخفض', mid: 'متوسط', high: 'مرتفع' },\n start: 70,\n end: 100,\n },\n];\n\n// ── Compliance Criteria (Horizontal Bar) ──\n\nexport const HORIZONTAL_BAR_DATA: HorizontalBarItem[] = [\n { label: 'التراخيص واللوحات', value: 80, color: CHART_COLORS.green },\n { label: 'النظافة العامة للمرافق', value: 70, color: CHART_COLORS.green },\n { label: 'سلامة الغذاء والتحضير', value: 74, color: CHART_COLORS.orange },\n { label: 'التخزين وسلسلة التبريد', value: 33, color: CHART_COLORS.red },\n { label: 'العاملون', value: 75, color: CHART_COLORS.green },\n];\n\n// ── Map Markers ──\n\nexport const MAP_MARKERS: MapMarkerData[] = [\n {\n lat: 24.7136,\n lng: 46.6753,\n title: 'سوق التجارة - الوشام',\n subtitle: 'حي النزهة',\n score: 82,\n violations: 1,\n trendValue: 13,\n trendDirection: TrendDirection.UP,\n statusText: 'مخالفة غير مصححة',\n statusType: MarkerStatus.WARNING,\n },\n {\n lat: 24.708,\n lng: 46.66,\n title: 'سوق التجارة - الوشام',\n subtitle: 'حي النزهة',\n score: 82,\n violations: 1,\n trendValue: 13,\n trendDirection: TrendDirection.UP,\n statusText: 'ترخيص قارب على الانتهاء',\n statusType: MarkerStatus.INFO,\n },\n];\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MapView } from '../charts/map-view/map-view';\nimport { MAP_MARKERS } from '../../../models/dashboard.models';\nimport type { MapMarkerData } from '../charts/chart.models';\n\n@Component({\n selector: 'ncim-store-locations',\n imports: [MapView, TranslateModule],\n templateUrl: './store-locations.html',\n styleUrl: './store-locations.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StoreLocations {\n readonly showHeader = input(true);\n readonly height = input(400);\n readonly zoom = input(6);\n readonly centerLat = input(24.7136);\n readonly centerLng = input(46.6753);\n readonly markers = input<MapMarkerData[]>(MAP_MARKERS);\n}\n","<div class=\"store-locations\">\n <div class=\"store-locations__card\">\n @if (showHeader()) {\n <div class=\"store-locations__header\">\n <h3 class=\"store-locations__title\">{{ 'DASHBOARD_WIDGETS.STORE_LOCATIONS' | translate }}</h3>\n </div>\n }\n <div class=\"store-locations__map\" [class.store-locations__map--flush]=\"!showHeader()\">\n <ncim-map-view [markers]=\"markers()\" [centerLat]=\"centerLat()\" [centerLng]=\"centerLng()\" [zoom]=\"zoom()\" [height]=\"height()\" />\n </div>\n </div>\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartLegend } from '../chart-legend/chart-legend';\nimport { ChartLegendItem } from '../chart.models';\nimport {\n CHART_TEXT_STYLE,\n CHART_TOOLTIP_BASE,\n CHART_GRID_BASE,\n formatAxisTooltip,\n buildCategoryXAxis,\n buildValueYAxis,\n} from '../chart.utils';\n\nexport interface BarSeriesData {\n name: string;\n data: number[];\n color?: string;\n stack?: string;\n}\n\nexport interface OverlayLineSeries {\n name: string;\n data: number[];\n color?: string;\n}\n\n@Component({\n selector: 'ncim-bar-chart',\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective, ChartLegend],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class BarChart {\n /** Array of bar series data to display */\n readonly series = input<BarSeriesData[]>([]);\n\n /** Optional line series to overlay on top of bars */\n readonly overlayLineSeries = input<OverlayLineSeries[]>([]);\n\n /** X-axis category labels */\n readonly categories = input<any[]>([]);\n\n /** Chart height in pixels */\n readonly height = input<number | null>(300);\n\n /** Chart width in pixels */\n readonly width = input<number | null>(null);\n\n /** Bar width in pixels */\n readonly barWidth = input<number | string>(12);\n\n /** Bar border radius */\n readonly borderRadius = input<number>(4);\n\n /** Whether to show legend */\n readonly showLegend = input<boolean>(true);\n\n /** Whether to show grid lines */\n readonly showGrid = input<boolean>(true);\n\n readonly legendItems = computed<ChartLegendItem[]>(() => [\n ...this.series().map(s => ({ name: s.name, color: s.color || '#999' })),\n ...this.overlayLineSeries().map(s => ({ name: s.name, color: s.color || '#999' })),\n ]);\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const seriesData = this.series();\n const overlayLines = this.overlayLineSeries();\n const cats = this.categories();\n const bWidth = this.barWidth();\n const bRadius = this.borderRadius();\n const showGrid = this.showGrid();\n const hasOverlay = overlayLines.length > 0;\n\n const barSeries = seriesData.map(s => ({\n name: s.name,\n type: 'bar' as const,\n data: s.data,\n stack: s.stack,\n barWidth: bWidth,\n barMaxWidth: bWidth,\n ...(hasOverlay ? { barGap: '0%', barCategoryGap: '40%' } : {}),\n itemStyle: {\n color: s.color,\n borderRadius: s.stack ? 0 : ([bRadius, bRadius, 0, 0] as [number, number, number, number]),\n },\n }));\n\n // Phantom bars match every overlay line series so ECharts doesn't\n // split the available bar width across real + phantom slots.\n // They are transparent and non-interactive.\n const phantomBars = hasOverlay\n ? overlayLines.map(s => ({\n name: `__phantom__${s.name}`,\n type: 'bar' as const,\n data: cats.map(() => null as unknown as number),\n barWidth: bWidth,\n barMaxWidth: bWidth,\n barGap: '0%',\n barCategoryGap: '40%',\n itemStyle: { color: 'transparent' },\n silent: true,\n legendHoverLink: false,\n emphasis: { disabled: true },\n }))\n : [];\n\n const lineSeriesOptions = overlayLines.map(s => ({\n name: s.name,\n type: 'line' as const,\n data: s.data,\n smooth: true,\n symbol: 'none',\n lineStyle: { width: 2, color: s.color },\n itemStyle: { color: s.color },\n areaStyle: {\n color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: `${s.color ?? '#F5C842'}30` },\n { offset: 1, color: `${s.color ?? '#F5C842'}05` },\n ]),\n },\n }));\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'axis',\n ...CHART_TOOLTIP_BASE,\n formatter: formatAxisTooltip,\n },\n legend: { show: false },\n grid: CHART_GRID_BASE,\n xAxis: buildCategoryXAxis(cats, { boundaryGap: true, labelInterval: 0 }),\n yAxis: buildValueYAxis(showGrid),\n series: [...barSeries, ...phantomBars, ...lineSeriesOptions] as EChartsOption['series'],\n };\n });\n}\n","<div class=\"bar-chart\" [style.height.px]=\"height()\" [style.width.px]=\"width()\">\n <div class=\"bar-chart__body\">\n <div echarts [options]=\"chartOptions()\" class=\"bar-chart__canvas\"></div>\n </div>\n @if (showLegend()) {\n <div class=\"bar-chart__legend\">\n <ncim-chart-legend [items]=\"legendItems()\" [justifyContent]=\"'start'\" />\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartSeriesItem, ChartLegendItem } from '../chart.models';\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n@Component({\n selector: 'ncim-multi-segment-gauge',\n templateUrl: './multi-segment-gauge.html',\n styleUrl: './multi-segment-gauge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class MultiSegmentGauge {\n /** Segments to display on the gauge arc */\n readonly segments = input<ChartSeriesItem[]>([]);\n\n /** Label shown above the center value */\n readonly centerLabel = input<string>('');\n\n /** Value displayed in the center of the gauge */\n readonly centerValue = input<string | number | null>(null);\n\n /** Whether to show a legend below the chart */\n readonly showLegend = input<boolean>(true);\n\n /** Chart canvas height in pixels */\n readonly height = input<number>(180);\n\n /** Color for the unfilled portion of the arc */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n readonly legendItems = computed<ChartLegendItem[]>(() =>\n this.segments().map(s => ({ name: s.name, color: s.color || '#999' }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.segments();\n const bgColor = this.backgroundColor();\n const total = items.reduce((sum, s) => sum + s.value, 0) || 1;\n\n // Build color-stop array proportional to each segment's value\n let cumulative = 0;\n const colorStops: [number, string][] = [];\n\n for (const item of items) {\n cumulative += item.value / total;\n colorStops.push([Math.min(cumulative, 1), item.color || '#999']);\n }\n\n if (cumulative < 1) {\n colorStops.push([1, bgColor]);\n }\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n radius: '90%',\n center: ['50%', '78%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: 18,\n color: colorStops,\n },\n },\n splitLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: { show: false },\n data: [{ value: 0 }],\n },\n ],\n };\n });\n}\n","<div class=\"ncim-multi-segment-gauge\">\n <div class=\"ncim-multi-segment-gauge__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-multi-segment-gauge__canvas\"></div>\n\n @if (centerValue() !== null) {\n <div class=\"ncim-multi-segment-gauge__overlay\" aria-hidden=\"true\">\n @if (centerLabel()) {\n <span class=\"ncim-multi-segment-gauge__center-label\">{{ centerLabel() }}</span>\n }\n <span class=\"ncim-multi-segment-gauge__center-value\">{{ centerValue() }}</span>\n </div>\n }\n </div>\n\n @if (showLegend() && legendItems().length) {\n <div class=\"ncim-multi-segment-gauge__legend\">\n @for (item of legendItems(); track item.name) {\n <div class=\"ncim-multi-segment-gauge__legend-item\">\n <span class=\"ncim-multi-segment-gauge__legend-label\">{{ item.name }}</span>\n <div class=\"ncim-multi-segment-gauge__legend-dot\" [style.background-color]=\"item.color\"></div>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { CHART_TEXT_STYLE } from '../chart.utils';\n\n/** A single stat row displayed below the gauge */\nexport interface StatGaugeRow {\n label: string;\n value: string | number;\n}\n\n@Component({\n selector: 'ncim-stat-gauge',\n templateUrl: './stat-gauge.html',\n styleUrl: './stat-gauge.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class StatGauge {\n /** Current (numerator) value, e.g. 120 */\n readonly value = input<number>(0);\n\n /** Total (denominator) value, e.g. 300 */\n readonly total = input<number>(100);\n\n /** Subtitle shown below the percentage, e.g. \"120 من 300 مستخدم\" */\n readonly subtitle = input<string>('');\n\n /** Stat rows displayed below the gauge */\n readonly stats = input<StatGaugeRow[]>([]);\n\n /** Color for the filled portion of the arc */\n readonly color = input<string>('#7B5EA7');\n\n /** Color for the unfilled portion of the arc */\n readonly backgroundColor = input<string>('#E8E8E8');\n\n /** Chart canvas height in pixels */\n readonly height = input<number>(160);\n\n readonly percentage = computed<number>(() => {\n const t = this.total();\n return t > 0 ? Math.round((this.value() / t) * 100) : 0;\n });\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const ratio = Math.max(0, Math.min(this.percentage() / 100, 1));\n const fillColor = this.color();\n const bgColor = this.backgroundColor();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n radius: '90%',\n center: ['50%', '78%'],\n min: 0,\n max: 1,\n pointer: { show: false },\n axisLine: {\n roundCap: true,\n lineStyle: {\n width: 18,\n color: [\n [ratio, fillColor],\n [1, bgColor],\n ],\n },\n },\n splitLine: { show: false },\n axisTick: { show: false },\n axisLabel: { show: false },\n title: { show: false },\n detail: { show: false },\n data: [{ value: 0 }],\n },\n ],\n };\n });\n}\n","<div class=\"ncim-stat-gauge\">\n <div class=\"ncim-stat-gauge__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-stat-gauge__canvas\"></div>\n\n <div class=\"ncim-stat-gauge__overlay\" aria-hidden=\"true\">\n <span class=\"ncim-stat-gauge__percentage\">{{ percentage() }}%</span>\n @if (subtitle()) {\n <span class=\"ncim-stat-gauge__subtitle\">{{ subtitle() }}</span>\n }\n </div>\n </div>\n\n @if (stats().length) {\n <div class=\"ncim-stat-gauge__stats\">\n @for (row of stats(); track row.label) {\n <div class=\"ncim-stat-gauge__stat-row\">\n <span class=\"ncim-stat-gauge__stat-label\">{{ row.label }}</span>\n <span class=\"ncim-stat-gauge__stat-value\">{{ row.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport type { EChartsOption } from 'echarts';\n\nimport { ChartSeriesItem } from '../chart.models';\nimport { CHART_TEXT_STYLE, CHART_TOOLTIP_BASE, formatItemTooltip } from '../chart.utils';\n\n/** Legend item that includes a displayable value */\nexport interface RingChartLegendItem {\n name: string;\n color: string;\n value: string | number;\n}\n\n@Component({\n selector: 'ncim-ring-chart',\n templateUrl: './ring-chart.html',\n styleUrl: './ring-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n})\nexport class RingChart {\n /** Data items for the ring segments */\n readonly data = input<ChartSeriesItem[]>([]);\n\n /** Label displayed above the center value */\n readonly centerLabel = input<string | null>(null);\n\n /** Value displayed in the center of the ring */\n readonly centerValue = input<string | number | null>(null);\n\n /** Inner radius of the ring */\n readonly innerRadius = input<string>('55%');\n\n /** Outer radius of the ring */\n readonly outerRadius = input<string>('80%');\n\n /** Whether to show the legend below the chart */\n readonly showLegend = input<boolean>(true);\n\n /** Chart height in pixels */\n readonly height = input<number>(260);\n\n /** Start angle of the ring */\n readonly startAngle = input<number>(90);\n\n readonly legendItems = computed<RingChartLegendItem[]>(() =>\n this.data().map(item => ({\n name: item.name,\n color: item.color || '#999',\n value: item.value,\n }))\n );\n\n readonly chartOptions = computed<EChartsOption>(() => {\n const items = this.data();\n\n return {\n textStyle: CHART_TEXT_STYLE,\n tooltip: {\n trigger: 'item',\n ...CHART_TOOLTIP_BASE,\n formatter: formatItemTooltip,\n },\n legend: { show: false },\n series: [\n {\n type: 'pie',\n radius: [this.innerRadius(), this.outerRadius()],\n center: ['50%', '50%'],\n startAngle: this.startAngle(),\n avoidLabelOverlap: true,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 2,\n borderRadius: 8,\n },\n label: { show: false },\n labelLine: { show: false },\n emphasis: { scaleSize: 4 },\n data: items.map(item => ({\n name: item.name,\n value: item.value,\n itemStyle: item.color ? { color: item.color } : undefined,\n })),\n },\n ],\n };\n });\n}\n","<div class=\"ncim-ring-chart\">\n <div class=\"ncim-ring-chart__canvas-wrap\" [style.height.px]=\"height()\">\n <div echarts [options]=\"chartOptions()\" class=\"ncim-ring-chart__canvas\"></div>\n\n @if (centerValue() !== null) {\n <div class=\"ncim-ring-chart__overlay\" aria-hidden=\"true\">\n @if (centerLabel()) {\n <span class=\"ncim-ring-chart__center-label\">{{ centerLabel() }}</span>\n }\n <span class=\"ncim-ring-chart__center-value\">{{ centerValue() }}</span>\n </div>\n }\n </div>\n\n @if (showLegend() && legendItems().length) {\n <div class=\"ncim-ring-chart__legend\">\n @for (item of legendItems(); track item.name) {\n <div class=\"ncim-ring-chart__legend-row\">\n <span class=\"ncim-ring-chart__legend-name\">{{ item.name }}</span>\n <div class=\"ncim-ring-chart__legend-marker\" [style.background-color]=\"item.color\"></div>\n <span class=\"ncim-ring-chart__legend-value\">{{ item.value }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\nexport interface StackedDistributionChartItem {\n label: string;\n value: number;\n barValue?: number;\n color?: string;\n patterned?: boolean;\n /** Number of sub-segments to divide this item into in the bar. Defaults to 1. */\n segments?: number;\n}\n\ninterface ComputedStackedDistributionChartItem extends StackedDistributionChartItem {\n color: string;\n normalizedValue: number;\n percentage: number;\n subSegments: number[];\n}\n\n@Component({\n selector: 'ncim-stacked-distribution-chart',\n templateUrl: './stacked-distribution-chart.html',\n styleUrl: './stacked-distribution-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedDistributionChart {\n private readonly el = inject(ElementRef);\n\n /** Segments rendered in the distribution bar and legend rows */\n readonly data = input<StackedDistributionChartItem[]>([]);\n\n /** Segment height in pixels */\n readonly barHeight = input<number>(44);\n\n /** Gap between top bar segments in pixels */\n readonly segmentGap = input<number>(8);\n\n /** Gap between legend rows in pixels */\n readonly rowGap = input<number>(20);\n\n /** Marker size in pixels */\n readonly markerSize = input<number>(24);\n\n /** Fallback color when an item does not provide one */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Placeholder color used when there is no positive data */\n readonly emptyColor = input<string>('#E5E7EB');\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n readonly total = computed<number>(() =>\n this.data().reduce((sum, item) => sum + Math.max(item.barValue ?? item.value, 0), 0)\n );\n\n readonly computedItems = computed<ComputedStackedDistributionChartItem[]>(() => {\n const total = this.total();\n\n return this.data().map(item => {\n const val = Math.max(item.barValue ?? item.value, 0);\n const percentage = total > 0 ? (val / total) * 100 : 0;\n const segmentCount = Math.max(item.segments ?? 1, 1);\n\n // Divide the normalized value across sub-segments\n const subSegments = Array(segmentCount).fill(val / segmentCount);\n\n return {\n ...item,\n color: item.color ?? this.defaultColor(),\n normalizedValue: val,\n percentage,\n subSegments,\n };\n });\n });\n\n readonly ariaLabel = computed<string>(() => {\n const items = this.computedItems();\n\n if (!items.length || !this.total()) {\n return 'Distribution chart';\n }\n\n const summary = items.map(item => `${item.label}: ${item.value} (${Math.round(item.percentage)}%)`).join(', ');\n\n return `Distribution chart. ${summary}`;\n });\n}\n","<div class=\"stacked-distribution-chart\">\n <div\n class=\"stacked-distribution-chart__bar\"\n [style.height.px]=\"barHeight()\"\n [style.gap.px]=\"segmentGap()\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @if (total() > 0 && computedItems().length) {\n @for (item of computedItems(); track item.label; let itemFirst = $first; let itemLast = $last) {\n @for (val of item.subSegments; track $index; let subFirst = $first; let subLast = $last) {\n <div\n class=\"stacked-distribution-chart__segment\"\n [class.stacked-distribution-chart__segment--first]=\"itemFirst && subFirst\"\n [class.stacked-distribution-chart__segment--last]=\"itemLast && subLast\"\n [class.stacked-distribution-chart__segment--patterned]=\"item.patterned\"\n [style.flex-grow]=\"val\"\n [style.background-color]=\"item.color\"\n [attr.aria-hidden]=\"true\"\n ></div>\n }\n }\n } @else {\n <div\n class=\"stacked-distribution-chart__segment stacked-distribution-chart__segment--first stacked-distribution-chart__segment--last\"\n [style.background-color]=\"emptyColor()\"\n [attr.aria-hidden]=\"true\"\n ></div>\n }\n </div>\n\n <div class=\"stacked-distribution-chart__legend\" [style.row-gap.px]=\"rowGap()\" role=\"list\">\n @for (item of computedItems(); track item.label) {\n <div class=\"stacked-distribution-chart__row\" role=\"listitem\">\n <div class=\"stacked-distribution-chart__meta\">\n <span\n class=\"stacked-distribution-chart__marker\"\n [style.background-color]=\"item.color\"\n [style.inline-size.px]=\"markerSize()\"\n [style.block-size.px]=\"markerSize()\"\n [attr.aria-hidden]=\"true\"\n ></span>\n <span class=\"stacked-distribution-chart__label\">{{ item.label }}</span>\n </div>\n\n <span class=\"stacked-distribution-chart__value\">{{ item.value }}</span>\n </div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\n@Component({\n selector: 'ncim-stat-ring',\n templateUrl: './stat-ring.html',\n styleUrl: './stat-ring.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatRing {\n private readonly el = inject(ElementRef);\n\n /** Center label shown above the value */\n readonly label = input<string>('');\n\n /** Center value shown inside the ring */\n readonly value = input<string | number>(0);\n\n /** Progress arc length as a percentage (can exceed 100) */\n readonly progress = input<number>(0);\n\n /** Ring size in pixels */\n readonly size = input<number>(124);\n\n /** Progress arc stroke width in pixels */\n readonly strokeWidth = input<number>(12);\n\n /** Background track stroke width in pixels */\n readonly trackStrokeWidth = input<number>(8);\n\n /** Progress arc color (fallback if gradient is not used) */\n readonly color = input<string>('#B596D5');\n\n /** Start color for the linear gradient */\n readonly gradientStartColor = input<string>('#7B5EA7');\n\n /** End color for the linear gradient */\n readonly gradientEndColor = input<string>('#B596D5');\n\n /** Background ring color */\n readonly trackColor = input<string>('#F3F4F6');\n\n /**\n * Rotation of the progress arc in degrees.\n * Default is 0 (Right/3 o'clock).\n */\n readonly startAngle = input<number>(0);\n\n /** Whether to use a linear gradient for the progress arc */\n readonly useGradient = input<boolean>(true);\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n readonly gradientId = signal(`stat-ring-gradient-${Math.random().toString(36).substring(2, 9)}`);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n /** Final RTL status (prop override or detected) */\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n /** Normalized progress (can exceed 100) */\n readonly normalizedProgress = computed<number>(() => Math.max(0, this.progress()));\n\n /** Radius calculation based on the largest stroke to avoid clipping */\n readonly radius = computed<number>(() => {\n const maxStroke = Math.max(this.strokeWidth(), this.trackStrokeWidth());\n return (this.size() - maxStroke) / 2;\n });\n\n readonly center = computed<number>(() => this.size() / 2);\n readonly circumference = computed<number>(() => 2 * Math.PI * this.radius());\n\n /**\n * Calculate stroke dash offset.\n */\n readonly strokeDashOffset = computed<number>(() => {\n const p = this.normalizedProgress();\n return this.circumference() * (1 - p / 100);\n });\n\n readonly viewBox = computed<string>(() => `0 0 ${this.size()} ${this.size()}`);\n}\n","<div class=\"stat-ring\" [style.width.px]=\"size()\" [style.height.px]=\"size()\">\n <svg\n class=\"stat-ring__svg\"\n [attr.viewBox]=\"viewBox()\"\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n role=\"img\"\n [attr.aria-label]=\"label() + ' ' + value()\"\n >\n @if (useGradient()) {\n <defs>\n <linearGradient [id]=\"gradientId()\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" [attr.stop-color]=\"gradientStartColor()\" />\n <stop offset=\"100%\" [attr.stop-color]=\"gradientEndColor()\" />\n </linearGradient>\n </defs>\n }\n\n <circle\n class=\"stat-ring__track\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"trackStrokeWidth()\"\n [attr.stroke]=\"trackColor()\"\n fill=\"none\"\n />\n <circle\n class=\"stat-ring__fill\"\n [attr.cx]=\"center()\"\n [attr.cy]=\"center()\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke]=\"useGradient() ? 'url(#' + gradientId() + ')' : color()\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"strokeDashOffset()\"\n [attr.transform]=\"'rotate(' + startAngle() + ' ' + center() + ' ' + center() + ')'\"\n fill=\"none\"\n />\n </svg>\n\n <div class=\"stat-ring__content\" aria-hidden=\"true\">\n @if (label()) {\n <span class=\"stat-ring__label\">{{ label() }}</span>\n }\n <span class=\"stat-ring__value\">{{ value() }}</span>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/api';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\nexport interface BreadcrumbItem {\n label?: string;\n url?: string;\n icon?: string;\n command?: () => void;\n translateKey?: string; // Translation key for i18n (use when label should be translated)\n}\n\n@Component({\n selector: 'ncim-breadcrumb',\n imports: [BreadcrumbModule, TranslateModule],\n templateUrl: './breadcrumb.html',\n styleUrl: './breadcrumb.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ncim-breadcrumb',\n role: 'navigation',\n '[attr.aria-label]': '\"Breadcrumb\"',\n '[attr.dir]': 'rtl() ? \"rtl\" : \"ltr\"',\n },\n})\nexport class Breadcrumb {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n readonly translateService = inject(TranslateService);\n\n readonly items = input.required<BreadcrumbItem[]>();\n readonly home = input<BreadcrumbItem | null>(null);\n readonly showHomeIcon = input<boolean>(true);\n readonly rtl = input<boolean>(this.translateService.getCurrentLang() === 'ar');\n readonly separatorItem = input<string>('/');\n\n readonly itemClicked = output<BreadcrumbItem>();\n\n private readonly langChange = signal(0);\n\n constructor() {\n this.translateService.onLangChange\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.langChange.update(v => v + 1));\n }\n\n readonly menuItems = computed<MenuItem[]>(() => {\n this.langChange(); // React to lang changes\n const router = this.router;\n return this.items().map(item => ({\n label: item.translateKey ? this.translateService.instant(item.translateKey) : item.label,\n icon: item.icon,\n command: () => {\n if (item.url) {\n router.navigateByUrl(item.url);\n }\n if (item.command) {\n item.command();\n }\n this.itemClicked.emit(item);\n },\n }));\n });\n\n readonly homeMenuItem = computed<MenuItem | undefined>(() => {\n this.langChange(); // React to lang changes\n const router = this.router;\n const homeItem = this.home();\n if (!homeItem) {\n return this.showHomeIcon()\n ? {\n icon: 'pi pi-home',\n label: this.translateService.instant('SIDEBAR.ITEMS.HOME'),\n command: () => router.navigateByUrl('/'),\n }\n : undefined;\n }\n\n return {\n label: homeItem.translateKey ? this.translateService.instant(homeItem.translateKey) : homeItem.label,\n icon: homeItem.icon || (this.showHomeIcon() ? 'pi pi-home' : undefined),\n command: () => {\n if (homeItem.url) {\n router.navigateByUrl(homeItem.url);\n }\n homeItem.command?.();\n },\n };\n });\n\n onBreadcrumbItemClick(event: { originalEvent: Event; item: MenuItem }): void {\n const clickedItem = this.findOriginalItem(event.item);\n if (clickedItem) {\n if (clickedItem.command) {\n clickedItem.command();\n }\n this.itemClicked.emit(clickedItem);\n }\n }\n\n private findOriginalItem(menuItem: MenuItem): BreadcrumbItem | null {\n const homeItem = this.home();\n if (homeItem) {\n const homeLabel = homeItem.translateKey ? this.translateService.instant(homeItem.translateKey) : homeItem.label;\n if (menuItem.label === homeLabel) {\n return homeItem;\n }\n }\n\n if (!homeItem && menuItem.icon === 'pi pi-home') {\n return {\n label: this.translateService.instant('SIDEBAR.ITEMS.HOME'),\n url: '/',\n };\n }\n\n return (\n this.items().find(item => {\n const itemLabel = item.translateKey ? this.translateService.instant(item.translateKey) : item.label;\n return itemLabel === menuItem.label;\n }) || null\n );\n }\n}\n","<p-breadcrumb [model]=\"menuItems()\" [home]=\"homeMenuItem()\" styleClass=\"breadcrumb\" (onItemClick)=\"onBreadcrumbItemClick($event)\">\n @if (separatorItem()) {\n <ng-template #separator>\n <span class=\"breadcrumb-separator\">{{ separatorItem() }}</span>\n </ng-template>\n }\n</p-breadcrumb>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Breadcrumb, BreadcrumbItem } from '../../molecules/breadcrumb/breadcrumb';\n\n@Component({\n selector: 'ncim-page-header',\n imports: [TranslateModule, Breadcrumb],\n templateUrl: './page-header.html',\n styleUrl: './page-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageHeader {\n readonly titleKey = input<string>('');\n readonly title = input<string>('');\n readonly breadcrumbItems = input<BreadcrumbItem[]>([]);\n readonly showBreadcrumb = input<boolean>(true);\n}\n","<header class=\"page-header\">\n @if (titleKey() || title()) {\n <h1 class=\"page-header__title\">\n @if (titleKey()) {\n {{ titleKey() | translate }}\n } @else {\n {{ title() }}\n }\n </h1>\n }\n @if (showBreadcrumb() && breadcrumbItems().length) {\n <ncim-breadcrumb [items]=\"breadcrumbItems()\" class=\"page-header__breadcrumb\" />\n }\n</header>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-card',\n templateUrl: './card.html',\n styleUrl: './card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card {}\n","<div class=\"card\">\n <ng-content />\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { AccordionModule } from 'primeng/accordion';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface AccordionItem {\n questionKey: string;\n answerKey: string;\n}\n\n@Component({\n selector: 'ncim-accordion',\n imports: [AccordionModule, TranslateModule],\n templateUrl: './accordion.html',\n styleUrl: './accordion.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n readonly items = input.required<AccordionItem[]>();\n readonly titleKey = input<string>('');\n}\n","<div class=\"accordion\">\n @if (titleKey()) {\n <h6 class=\"accordion__title\">{{ titleKey() | translate }}</h6>\n }\n <p-accordion [value]=\"[0]\" [multiple]=\"true\">\n @for (item of items(); track item.questionKey; let i = $index) {\n <p-accordion-panel [value]=\"i\">\n <p-accordion-header>\n <span>{{ item.questionKey | translate }}</span>\n </p-accordion-header>\n <p-accordion-content>\n <p>{{ item.answerKey | translate }}</p>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\nimport { ProgressBar } from '../../atoms/progress-bar/progress-bar';\n\n@Component({\n selector: 'ncim-progress-card',\n imports: [TranslateModule, NcimButton, ProgressBar],\n templateUrl: './progress-card.html',\n styleUrl: './progress-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressCard {\n readonly titleKey = input<string>('');\n readonly descriptionKey = input<string>('');\n readonly buttonKey = input<string>('');\n readonly progress = input<number>(0);\n readonly illustrationSrc = input<string>('');\n\n readonly nextStep = output<void>();\n}\n","<div class=\"progress-card\">\n @if (titleKey()) {\n <h4 class=\"progress-card__title\">{{ titleKey() | translate }}</h4>\n }\n @if (illustrationSrc()) {\n <div class=\"progress-card__illustration\">\n <img [src]=\"illustrationSrc()\" alt=\"\" loading=\"lazy\" />\n </div>\n }\n @if (descriptionKey()) {\n <p class=\"progress-card__desc\">{{ descriptionKey() | translate }}</p>\n }\n <ncim-progress-bar [progress]=\"progress()\" [max]=\"100\" />\n @if (buttonKey()) {\n <ncim-button variant=\"black\" size=\"medium\" [fullWidth]=\"true\" (click)=\"nextStep.emit()\">\n {{ buttonKey() | translate }}\n </ncim-button>\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-nav-card',\n imports: [RouterLink, Icon],\n templateUrl: './nav-card.html',\n styleUrl: './nav-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly thumbnailSrc = input<string>('');\n readonly route = input<string | string[] | null>(null);\n readonly compact = input<boolean>(false);\n\n readonly cardClick = output<void>();\n}\n","@if (route(); as r) {\n <a class=\"nav-card\" [class.nav-card--compact]=\"compact()\" [routerLink]=\"r\" (click)=\"cardClick.emit()\">\n <span class=\"nav-card__arrow\" aria-hidden=\"true\">\n <ncim-icon name=\"chevronRight\" [size]=\"15\" />\n </span>\n <div class=\"nav-card__content\">\n <h3 class=\"nav-card__title\">{{ title() }}</h3>\n <p class=\"nav-card__description\">{{ description() }}</p>\n </div>\n <div class=\"nav-card__thumbnail\">\n @if (thumbnailSrc()) {\n <img [src]=\"thumbnailSrc()\" [alt]=\"title()\" loading=\"lazy\" />\n }\n <ncim-icon name=\"play\" [size]=\"47\" class=\"nav-card__play-icon\" />\n <span class=\"nav-card__play\" aria-hidden=\"true\"></span>\n </div>\n </a>\n} @else {\n <div class=\"nav-card\" [class.nav-card--compact]=\"compact()\" (click)=\"cardClick.emit()\" role=\"button\" tabindex=\"0\">\n <span class=\"nav-card__arrow\" aria-hidden=\"true\">\n <ncim-icon name=\"chevronRight\" [size]=\"15\" />\n </span>\n <div class=\"nav-card__content\">\n <h3 class=\"nav-card__title\">{{ title() }}</h3>\n <p class=\"nav-card__description\">{{ description() }}</p>\n </div>\n <div class=\"nav-card__thumbnail\">\n @if (thumbnailSrc()) {\n <img [src]=\"thumbnailSrc()\" [alt]=\"title()\" loading=\"lazy\" />\n }\n <ncim-icon name=\"play\" [size]=\"47\" class=\"nav-card__play-icon\" />\n <span class=\"nav-card__play\" aria-hidden=\"true\"></span>\n </div>\n </div>\n}\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-content-block',\n imports: [TranslateModule],\n templateUrl: './content-block.html',\n styleUrl: './content-block.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContentBlock {\n readonly contentKey = input.required<string>();\n}\n","<div class=\"content-block\">\n <p class=\"content-block__body\">{{ contentKey() | translate }}</p>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavCard } from '../../molecules/nav-card/nav-card';\n\nexport interface RelatedCardItem {\n title?: string;\n titleKey?: string;\n description?: string;\n descriptionKey?: string;\n thumbnailSrc?: string;\n route: string | string[];\n}\n\n@Component({\n selector: 'ncim-related-cards-list',\n imports: [TranslateModule, NavCard],\n templateUrl: './related-cards-list.html',\n styleUrl: './related-cards-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RelatedCardsList {\n readonly items = input.required<RelatedCardItem[]>();\n readonly titleKey = input<string>('');\n}\n","<div class=\"related-cards\">\n @if (titleKey()) {\n <h4 class=\"related-cards__title\">{{ titleKey() | translate }}</h4>\n }\n <div class=\"related-cards__list\">\n @for (item of items(); track item.titleKey || item.title) {\n <ncim-nav-card\n [title]=\"item.titleKey ? (item.titleKey | translate) : (item.title ?? '')\"\n [description]=\"item.descriptionKey ? (item.descriptionKey | translate) : (item.description ?? '')\"\n [thumbnailSrc]=\"item.thumbnailSrc || ''\"\n [route]=\"item.route\"\n [compact]=\"true\"\n />\n }\n </div>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavCard } from '../../molecules/nav-card/nav-card';\n\nexport interface NavCardItem {\n slug: string;\n titleKey: string;\n descriptionKey: string;\n thumbnailSrc: string;\n}\n\n@Component({\n selector: 'ncim-nav-cards-list',\n imports: [TranslateModule, NavCard],\n templateUrl: './nav-cards-list.html',\n styleUrl: './nav-cards-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavCardsList {\n readonly items = input.required<NavCardItem[]>();\n readonly getItemRoute = input.required<(slug: string) => string[]>();\n}\n","<div class=\"nav-cards-list\">\n @for (item of items(); track item.slug) {\n <ncim-nav-card\n [title]=\"item.titleKey | translate\"\n [description]=\"item.descriptionKey | translate\"\n [thumbnailSrc]=\"item.thumbnailSrc\"\n [route]=\"getItemRoute()(item.slug)\"\n />\n }\n</div>\n","import { Component, input, computed, inject, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { VgCoreModule } from '@videogular/ngx-videogular/core';\nimport { VgControlsModule } from '@videogular/ngx-videogular/controls';\nimport { VgOverlayPlayModule } from '@videogular/ngx-videogular/overlay-play';\nimport { VgBufferingModule } from '@videogular/ngx-videogular/buffering';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport type VideoSourceType = 'embed' | 'html5';\n\n@Component({\n selector: 'ncim-video-player',\n imports: [VgCoreModule, VgControlsModule, VgOverlayPlayModule, VgBufferingModule, Icon],\n templateUrl: './video-player.html',\n styleUrl: './video-player.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VideoPlayer {\n private readonly sanitizer = inject(DomSanitizer);\n\n readonly src = input.required<string>();\n readonly poster = input<string>('');\n readonly title = input<string>('');\n readonly autoplay = input<boolean>(false);\n\n readonly embedStarted = signal(false);\n readonly isPlaying = signal(false);\n\n startEmbed(): void {\n this.embedStarted.set(true);\n }\n\n onVideoPlay(): void {\n this.isPlaying.set(true);\n }\n\n onVideoPause(): void {\n this.isPlaying.set(false);\n }\n\n /** YouTube/Vimeo → embed, else HTML5 */\n readonly sourceType = computed<VideoSourceType>(() => {\n const url = this.src().toLowerCase();\n return url.includes('youtube.com') || url.includes('youtu.be/') || url.includes('vimeo.com/') ? 'embed' : 'html5';\n });\n\n /** Embed URL for YouTube/Vimeo iframe */\n readonly embedUrl = computed<string>(() => {\n const url = this.src();\n const ytMatch = url.match(/(?:youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=)|youtu\\.be\\/)([a-zA-Z0-9_-]+)/);\n if (ytMatch) {\n return `https://www.youtube.com/embed/${ytMatch[1]}`;\n }\n const vimeoMatch = url.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n if (vimeoMatch) {\n return `https://player.vimeo.com/video/${vimeoMatch[1]}`;\n }\n return this.src();\n });\n\n readonly safeEmbedUrl = computed(() => {\n const url = this.embedUrl();\n const autoplayUrl = url.includes('?') ? `${url}&autoplay=1` : `${url}?autoplay=1`;\n return this.sanitizer.bypassSecurityTrustResourceUrl(autoplayUrl);\n });\n\n readonly videoType = computed<string>(() => {\n const url = this.src().toLowerCase();\n if (url.includes('.webm')) {\n return 'video/webm';\n }\n if (url.includes('.ogg') || url.includes('.ogv')) {\n return 'video/ogg';\n }\n return 'video/mp4';\n });\n}\n","<div class=\"video-player\">\n @if (sourceType() === 'embed') {\n @if (!embedStarted()) {\n <button class=\"video-player__overlay\" type=\"button\" (click)=\"startEmbed()\">\n <ncim-icon name=\"play\" [size]=\"47\" />\n </button>\n } @else {\n <iframe\n class=\"video-player__iframe\"\n [src]=\"safeEmbedUrl()\"\n [attr.title]=\"title()\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen\n allow=\"autoplay\"\n ></iframe>\n }\n } @else {\n <vg-player>\n <video\n [vgMedia]=\"$any(media)\"\n #media\n [poster]=\"poster()\"\n [attr.title]=\"title()\"\n preload=\"auto\"\n [attr.autoplay]=\"autoplay() ? true : null\"\n (play)=\"onVideoPlay()\"\n (pause)=\"onVideoPause()\"\n >\n <source [src]=\"src()\" [type]=\"videoType()\" />\n </video>\n <vg-buffering></vg-buffering>\n @if (!isPlaying()) {\n <div class=\"video-player__overlay\" (click)=\"media.play()\">\n <ncim-icon name=\"play\" [size]=\"47\" />\n </div>\n }\n <vg-controls>\n <vg-play-pause></vg-play-pause>\n <vg-scrub-bar>\n <vg-scrub-bar-current-time></vg-scrub-bar-current-time>\n <vg-scrub-bar-buffering-time></vg-scrub-bar-buffering-time>\n </vg-scrub-bar>\n <vg-time-display vgProperty=\"current\" vgFormat=\"mm:ss\"></vg-time-display>\n <vg-time-display vgProperty=\"total\" vgFormat=\"mm:ss\"></vg-time-display>\n <vg-mute></vg-mute>\n <vg-volume></vg-volume>\n <vg-fullscreen></vg-fullscreen>\n </vg-controls>\n </vg-player>\n }\n</div>\n","import { Component, input, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-feedback-section',\n imports: [TranslateModule, NcimButton],\n templateUrl: './feedback-section.html',\n styleUrl: './feedback-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FeedbackSection {\n readonly questionKey = input<string>('KNOWLEDGE.WAS_HELPFUL');\n readonly yesKey = input<string>('COMMON.YES');\n readonly noKey = input<string>('COMMON.NO');\n\n readonly feedback = output<'yes' | 'no'>();\n\n readonly selected = signal<'yes' | 'no' | null>(null);\n\n onYes(): void {\n this.selected.set('yes');\n this.feedback.emit('yes');\n }\n\n onNo(): void {\n this.selected.set('no');\n this.feedback.emit('no');\n }\n}\n","<div class=\"feedback\">\n <p class=\"feedback__question\">{{ questionKey() | translate }}</p>\n <div class=\"feedback__buttons\">\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"false\" (click)=\"onYes()\" [disabled]=\"selected() !== null\">\n {{ yesKey() | translate }}\n </ncim-button>\n <ncim-button variant=\"neutral\" size=\"small\" [fullWidth]=\"false\" (click)=\"onNo()\" [disabled]=\"selected() !== null\">\n {{ noKey() | translate }}\n </ncim-button>\n </div>\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VideoPlayer } from '../../molecules/video-player/video-player';\nimport { ContentBlock } from '../../molecules/content-block/content-block';\nimport { FeedbackSection } from '../feedback-section/feedback-section';\nimport { AccordionItem } from '../../molecules/accordion/accordion';\n\n@Component({\n selector: 'ncim-article-detail',\n imports: [TranslateModule, VideoPlayer, ContentBlock, FeedbackSection],\n templateUrl: './article-detail.html',\n styleUrl: './article-detail.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleDetail {\n readonly videoSrc = input.required<string>();\n readonly titleKey = input.required<string>();\n readonly contentKey = input.required<string>();\n readonly accordionItems = input<AccordionItem[]>([]);\n readonly accordionTitleKey = input<string>('');\n\n readonly feedback = output<'yes' | 'no'>();\n}\n","<div class=\"article-detail\">\n <div class=\"article-detail__video\">\n <ncim-video-player [src]=\"videoSrc()\" [title]=\"titleKey() | translate\" />\n </div>\n\n <ncim-content-block [contentKey]=\"contentKey()\" />\n\n <ncim-feedback-section (feedback)=\"feedback.emit($event)\" />\n</div>\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'ncim-article-layout',\n templateUrl: './article-layout.html',\n styleUrl: './article-layout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleLayout {}\n","<div class=\"article-layout\">\n <div class=\"article-layout__main\">\n <ng-content select=\"[data-main]\" />\n </div>\n <aside class=\"article-layout__sidebar\">\n <ng-content select=\"[data-sidebar]\" />\n </aside>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport interface ResourceItem {\n label?: string;\n labelKey?: string;\n url: string;\n icon?: string;\n}\n\n@Component({\n selector: 'ncim-resources-list',\n imports: [TranslateModule, Icon],\n templateUrl: './resources-list.html',\n styleUrl: './resources-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResourcesList {\n readonly items = input.required<ResourceItem[]>();\n readonly titleKey = input<string>('KNOWLEDGE.RESOURCES');\n}\n","<div class=\"resources\">\n <h4 class=\"resources__title\">{{ titleKey() | translate }}</h4>\n <ul class=\"resources__list\">\n @for (item of items(); track item.url) {\n <li>\n <a [href]=\"item.url\" target=\"_blank\" rel=\"noopener\" download class=\"resources__link\">\n <ncim-icon [name]=\"item.icon || 'pdf'\" [size]=\"20\" />\n <span class=\"resources__label\">{{ item.labelKey ? (item.labelKey | translate) : (item.label ?? '') }}</span>\n <ncim-icon name=\"download-small\" [size]=\"20\" />\n </a>\n </li>\n }\n </ul>\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ResourcesList, type ResourceItem } from '../resources-list/resources-list';\nimport { RelatedCardsList, type RelatedCardItem } from '../related-cards-list/related-cards-list';\n\n@Component({\n selector: 'ncim-article-sidebar',\n imports: [ResourcesList, RelatedCardsList],\n templateUrl: './article-sidebar.html',\n styleUrl: './article-sidebar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticleSidebar {\n readonly resources = input.required<ResourceItem[]>();\n readonly relatedItems = input.required<RelatedCardItem[]>();\n readonly resourcesTitleKey = input<string>('KNOWLEDGE.RESOURCES');\n readonly relatedTitleKey = input<string>('');\n}\n","<div class=\"article-sidebar\">\n <ncim-resources-list [items]=\"resources()\" [titleKey]=\"resourcesTitleKey()\" />\n <ncim-related-cards-list [items]=\"relatedItems()\" [titleKey]=\"relatedTitleKey()\" />\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-empty-state',\n imports: [TranslatePipe, Icon],\n templateUrl: './empty-state.html',\n styleUrl: './empty-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyState {\n /** Translation key for the title (e.g. COMMON.NO_DATA). Used when title is not provided. */\n readonly titleKey = input<string>();\n\n /** Plain text for the title. When provided, overrides titleKey. */\n readonly title = input<string>();\n\n /** Optional translation key for subtitle/description. Used when subtitle is not provided. */\n readonly subtitleKey = input<string>();\n\n /** Plain text for the subtitle. When provided, overrides subtitleKey. */\n readonly subtitle = input<string>();\n\n /**\n * Illustration image URL. Defaults to the shared empty.svg asset.\n * When truthy, renders an <img> instead of the icon.\n * Pass an empty string to disable the image and fall back to the icon input.\n */\n readonly imageSrc = input<string>('assets/ncim-icons/empty.svg');\n\n /** Accessible alt text for the illustration. Defaults to empty (decorative). */\n readonly imageAlt = input<string>('');\n\n /** Icon name from ncim icon set — used only when imageSrc is empty. */\n readonly icon = input<string>('search');\n\n /** Size in pixels applied to both the illustration width and icon size. */\n readonly iconSize = input<number>(160);\n\n /** Compact variant for inline use (e.g. inside cards, smaller padding) */\n readonly compact = input(false);\n}\n","<div class=\"empty-state\" [class.empty-state--compact]=\"compact()\" role=\"status\" aria-live=\"polite\">\n <figure class=\"empty-state__icon\" aria-hidden=\"true\">\n @if (imageSrc()) {\n <img class=\"empty-state__image\" [src]=\"imageSrc()\" [alt]=\"imageAlt()\" [style.width.px]=\"iconSize()\" />\n } @else {\n <ncim-icon [name]=\"icon()\" [size]=\"iconSize()\" />\n }\n </figure>\n <h3 class=\"empty-state__title\">{{ title() ?? (titleKey() | translate) }}</h3>\n @if (subtitle() ?? subtitleKey()) {\n <p class=\"empty-state__subtitle\">{{ subtitle() ?? (subtitleKey() | translate) }}</p>\n }\n <ng-content />\n</div>\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PageHeader } from '../page-header/page-header';\nimport { NavCardsList, type NavCardItem } from '../nav-cards-list/nav-cards-list';\nimport { EmptyState } from '../empty-state/empty-state';\nimport type { BreadcrumbItem } from '../../molecules/breadcrumb/breadcrumb';\n\n@Component({\n selector: 'ncim-cards-list-page',\n imports: [TranslateModule, PageHeader, NavCardsList, EmptyState],\n templateUrl: './cards-list-page.html',\n styleUrl: './cards-list-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardsListPage {\n readonly titleKey = input.required<string>();\n readonly breadcrumbItems = input.required<BreadcrumbItem[]>();\n readonly items = input.required<NavCardItem[]>();\n readonly getItemRoute = input.required<(slug: string) => string[]>();\n}\n","<div class=\"cards-list-page\">\n <ncim-page-header [titleKey]=\"titleKey()\" [breadcrumbItems]=\"breadcrumbItems()\" />\n @if (items().length) {\n <ncim-nav-cards-list class=\"cards-list-page__list\" [items]=\"items()\" [getItemRoute]=\"getItemRoute()\" />\n } @else {\n <ncim-empty-state titleKey=\"COMMON.NO_DATA\" subtitleKey=\"COMMON.NO_FILTER_RESULTS\" icon=\"search\" />\n }\n</div>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-support-contact-card',\n imports: [NcimButton],\n templateUrl: './support-contact-card.html',\n styleUrl: './support-contact-card.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupportContactCard {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly buttonLabel = input.required<string>();\n readonly visible = input<boolean>(true);\n\n readonly newTicket = output<void>();\n}\n","@if (visible()) {\n <div class=\"support-contact-card__inner\">\n <div class=\"support-contact-card__content\">\n <h2 class=\"support-contact-card__title\">{{ title() }}</h2>\n <p class=\"support-contact-card__description\">{{ description() }}</p>\n </div>\n <div class=\"support-contact-card__actions\">\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"true\" class=\"support-contact-card__button\" (click)=\"newTicket.emit()\">\n {{ buttonLabel() }}\n </ncim-button>\n </div>\n </div>\n}\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PageHeader } from '../page-header/page-header';\nimport { Card } from '../../molecules/card/card';\nimport { ArticleLayout } from '../article-layout/article-layout';\nimport { ArticleDetail } from '../article-detail/article-detail';\nimport { ArticleSidebar } from '../article-sidebar/article-sidebar';\nimport { SupportContactCard } from '../../molecules/support-contact-card/support-contact-card';\nimport type { BreadcrumbItem } from '../../molecules/breadcrumb/breadcrumb';\nimport {\n Accordion as FaqAccordion,\n type AccordionItem,\n} from '../../molecules/accordion/accordion';\nimport type { ResourceItem } from '../resources-list/resources-list';\nimport type { RelatedCardItem } from '../related-cards-list/related-cards-list';\n\n@Component({\n selector: 'ncim-article-page',\n imports: [\n TranslateModule,\n PageHeader,\n Card,\n ArticleLayout,\n ArticleDetail,\n ArticleSidebar,\n SupportContactCard,\n FaqAccordion,\n ],\n templateUrl: './article-page.html',\n styleUrl: './article-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ArticlePage {\n readonly titleKey = input.required<string>();\n readonly breadcrumbItems = input.required<BreadcrumbItem[]>();\n readonly videoSrc = input.required<string>();\n readonly contentKey = input.required<string>();\n readonly accordionItems = input<AccordionItem[]>([]);\n readonly accordionTitleKey = input<string>('');\n readonly resources = input.required<ResourceItem[]>();\n readonly relatedItems = input.required<RelatedCardItem[]>();\n readonly relatedTitleKey = input<string>('');\n\n readonly feedback = output<'yes' | 'no'>();\n readonly newTicket = output<void>();\n}\n","<ncim-page-header [titleKey]=\"titleKey()\" [breadcrumbItems]=\"breadcrumbItems()\" />\n<ncim-article-layout>\n <ncim-card data-main>\n <ncim-article-detail\n [videoSrc]=\"videoSrc()\"\n [titleKey]=\"titleKey()\"\n [contentKey]=\"contentKey()\"\n [accordionItems]=\"accordionItems()\"\n [accordionTitleKey]=\"accordionTitleKey()\"\n (feedback)=\"feedback.emit($event)\"\n />\n </ncim-card>\n <div class=\"mt-20\" data-main>\n <ncim-card>\n @if (accordionItems().length) {\n <ncim-accordion [items]=\"accordionItems()\" [titleKey]=\"accordionTitleKey()\" />\n }\n </ncim-card>\n </div>\n <div class=\"mt-20\" data-main>\n <ncim-support-contact-card\n [title]=\"'KNOWLEDGE.SUPPORT_TITLE' | translate\"\n [description]=\"'KNOWLEDGE.SUPPORT_DESC' | translate\"\n [buttonLabel]=\"'KNOWLEDGE.NEW_TICKET' | translate\"\n (newTicket)=\"newTicket.emit()\"\n />\n </div>\n <ncim-article-sidebar\n data-sidebar\n [resources]=\"resources()\"\n [relatedItems]=\"relatedItems()\"\n [relatedTitleKey]=\"relatedTitleKey()\"\n ></ncim-article-sidebar>\n</ncim-article-layout>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\n\n@Component({\n selector: 'ncim-info-row',\n templateUrl: './info-row.html',\n styleUrl: './info-row.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InfoRow {\n readonly title = input.required<string>();\n readonly description = input.required<string>();\n readonly editLabel = input<string>('تعديل');\n readonly showEdit = input<boolean>(true);\n\n readonly editClick = output<void>();\n}\n","<div class=\"info-row\">\n <div class=\"info-row__content\">\n <span class=\"info-row__title\">{{ title() }}</span>\n <span class=\"info-row__description\">{{ description() }}</span>\n </div>\n\n @if (showEdit()) {\n <button class=\"info-row__edit-btn\" type=\"button\" (click)=\"editClick.emit()\">\n {{ editLabel() }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-page-not-found',\n imports: [TranslateModule, EmptyState, NcimButton],\n templateUrl: './page-not-found.html',\n styleUrl: './page-not-found.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageNotFound {\n /** i18n key for the empty-state title. */\n readonly titleKey = input.required<string>();\n\n /** i18n key for the empty-state subtitle/description. */\n readonly subtitleKey = input<string | undefined>(undefined);\n\n /** Icon name from the ncim icon set shown in the empty-state. */\n readonly icon = input<string>('fill-worring');\n\n /** i18n key for the back button label. Defaults to COMMON.BACK. */\n readonly backLabelKey = input<string>('COMMON.BACK');\n\n /** Emitted when the user clicks the back button. */\n readonly back = output<void>();\n}\n","<div class=\"ncim-page-not-found\">\n <ncim-empty-state [titleKey]=\"titleKey()\" [subtitleKey]=\"subtitleKey()\" [icon]=\"icon()\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"back.emit()\">\n {{ backLabelKey() | translate }}\n </ncim-button>\n </ncim-empty-state>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { NcimButton } from '../../atoms/button/button';\n\n@Component({\n selector: 'ncim-page-error',\n imports: [TranslateModule, EmptyState, NcimButton],\n templateUrl: './page-error.html',\n styleUrl: './page-error.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageError {\n /** i18n key for the error title. */\n readonly titleKey = input.required<string>();\n\n /** i18n key for the optional subtitle/description. */\n readonly subtitleKey = input<string | undefined>(undefined);\n\n /** Icon name from the ncim icon set. */\n readonly icon = input<string>('fill-worring');\n\n /** i18n key for the retry button label. Defaults to COMMON.RETRY. */\n readonly retryLabelKey = input<string>('COMMON.RETRY');\n\n /** Emitted when the user clicks the retry button. */\n readonly retry = output<void>();\n}\n","<div class=\"ncim-page-error\">\n <ncim-empty-state [titleKey]=\"titleKey()\" [subtitleKey]=\"subtitleKey()\" [icon]=\"icon()\">\n <ncim-button variant=\"outline\" [fullWidth]=\"false\" (click)=\"retry.emit()\">\n {{ retryLabelKey() | translate }}\n </ncim-button>\n </ncim-empty-state>\n</div>\n","export enum ColumnsEnum {\n TOGGLE = 'toggle',\n TEXT = 'text',\n CUSTOM = 'custom',\n BUTTON = 'button',\n LINK = 'link',\n COMMAND = 'command',\n CHECKBOX = 'checkbox',\n STATUS = 'status',\n PROGRESS = 'progress',\n BADGE = 'badge',\n MULTILINE = 'multiline',\n MENU = 'menu',\n DATE = 'date',\n HASH_ID = 'hashId',\n}\n","const pathCache = new Map<string, string[]>();\n\n/** Resolve dot-separated path to segments (cached). */\nexport function resolvePath(path: string): string[] {\n let segments = pathCache.get(path);\n if (!segments) {\n segments = path.split('.');\n pathCache.set(path, segments);\n }\n return segments;\n}\n\n/** Get value at nested path in object. */\nexport function getNestedValue(obj: Record<string, unknown>, path: string): unknown {\n const segments = resolvePath(path);\n let current: unknown = obj;\n for (const segment of segments) {\n if (current == null || typeof current !== 'object') {\n return undefined;\n }\n current = (current as Record<string, unknown>)[segment];\n }\n return current;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getNestedValue } from '../utils/nested-path.utils';\n\n@Pipe({ name: 'nestedValue' })\nexport class NestedValuePipe implements PipeTransform {\n transform(obj: Record<string, unknown>, path: string | undefined): unknown {\n return path ? getNestedValue(obj, path) : undefined;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StatusConfig } from '../grid-table.models';\nimport { getNestedValue } from '../utils/nested-path.utils';\n\nconst DEFAULT_STATUS: StatusConfig = { label: '', color: 'var(--color-text-muted)' };\n\n@Pipe({ name: 'statusConfig' })\nexport class StatusConfigPipe implements PipeTransform {\n transform(\n obj: Record<string, unknown>,\n field: string | undefined,\n statusMap?: Record<string, StatusConfig>\n ): StatusConfig {\n if (!field) {\n return DEFAULT_STATUS;\n }\n const value = getNestedValue(obj, field);\n const key = String(value ?? '');\n return statusMap?.[key] ?? { label: key, color: 'var(--color-text-muted)' };\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: 'ng-template[ncimCustomCol]',\n})\nexport class CustomColsDirective {\n readonly ncimCustomCol = input.required<string>();\n\n readonly templateRef = inject(TemplateRef<any>);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule, ButtonSeverity } from 'primeng/button';\nimport { TableModule } from 'primeng/table';\nimport { ColumnsEnum } from './enums/columns.enum';\nimport { ToggleSwitch } from 'primeng/toggleswitch';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { ToastModule } from 'primeng/toast';\nimport { MenuItem, MessageService } from 'primeng/api';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { NestedValuePipe } from './pipes/nested-value.pipe';\nimport { StatusConfigPipe } from './pipes/status-config.pipe';\nimport { CustomColsDirective } from './directives/custom-cols';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { LocalizedDatePipe } from '@libs/core';\nimport { resolvePath } from './utils/nested-path.utils';\nimport { DgaTag } from '../../atoms/dga-tag/dga-tag';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { Icon } from '../../atoms/icon/icon';\nimport { Skeleton } from '../../atoms/skeleton/skeleton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { MenuModule } from 'primeng/menu';\nimport { LOADING_DELAY_MS } from '@libs/core/constants';\nimport type { StatusConfig } from './grid-table.models';\n\nexport type GridRow = Record<string, unknown>;\n\n/** Emitted by GridTable when the user clicks a sortable column header. */\nexport interface GridSortEvent {\n field: string;\n order: 'asc' | 'desc';\n}\nexport type { StatusConfig } from './grid-table.models';\n\n/** Emitted by GridTable when paginator page changes. */\nexport interface GridPageEvent {\n page: number;\n rows: number;\n first: number;\n}\n\nexport interface ProgressConfig {\n value: number;\n max: number;\n label: string;\n color?: string;\n}\n\nexport type GridActionType = 'link' | 'command' | 'menu';\n\nexport interface GridAction<T extends GridRow = GridRow> {\n type: Exclude<GridActionType, 'menu'>;\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n link?: (row: T) => string;\n command?: (row: T) => void;\n}\n\nexport interface GridAction<T extends GridRow = GridRow> {\n type: Exclude<GridActionType, 'menu'>;\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n link?: (row: T) => string;\n command?: (row: T) => void;\n}\n\nexport interface GridMenuItem<T extends GridRow = GridRow> {\n label?: string;\n icon?: string;\n command?: (row: T) => void;\n class?: string;\n separator?: boolean;\n}\n\nexport interface GridMenuAction<T extends GridRow = GridRow> {\n type: 'menu';\n label: string;\n icon?: string;\n iconOnly?: boolean;\n severity?: ButtonSeverity;\n items: GridMenuItem<T>[];\n}\n\nexport type GridColumnAction<T extends GridRow = GridRow> = GridAction<T> | GridMenuAction<T>;\n\nexport interface GridColumn<T extends GridRow = GridRow> {\n header: string;\n isSorted: boolean;\n field?: string;\n type?: ColumnsEnum;\n display?: any;\n onChange?: (row: any, ...args: any[]) => void;\n actions?: GridColumnAction<T>[];\n statusMap?: Record<string, StatusConfig>;\n progressField?: string;\n getProgress?: (row: any) => ProgressConfig;\n getBadgeColor?: (row: any) => string;\n columnDef?: string;\n cellValue?: (row: any) => any;\n pipeArgs?: any;\n cssStyle?: string;\n}\n\n@Component({\n selector: 'ncim-grid-table',\n imports: [\n FormsModule,\n TranslateModule,\n TableModule,\n ToggleSwitch,\n DatePickerModule,\n ButtonModule,\n ToastModule,\n CheckboxModule,\n NestedValuePipe,\n StatusConfigPipe,\n DgaTag,\n EmptyState,\n NgTemplateOutlet,\n Icon,\n Skeleton,\n TooltipModule,\n MenuModule,\n CommonModule,\n LocalizedDatePipe,\n ],\n templateUrl: './grid-table.html',\n styleUrl: './grid-table.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MessageService],\n})\nexport class GridTable<T extends GridRow = GridRow> {\n private readonly router = inject(Router);\n\n readonly showSelect = input(false);\n readonly btnLabel = input('Add new Card');\n readonly selectedItems = model<T[]>([]);\n readonly searchPipeKey = input('_id');\n readonly data = input<T[]>([]);\n readonly columns = input.required<GridColumn<T>[]>();\n readonly showAddButton = input<boolean>(false);\n readonly loading = input(false);\n readonly loadingDelay = input(LOADING_DELAY_MS);\n readonly rows = input(10);\n readonly rowsPerPageOptions = input<number[]>([10, 20, 50]);\n /**\n * When false, the footer paginator is hidden (e.g. static read-only tables with few rows).\n */\n readonly pagination = input(true);\n readonly lazy = input(false);\n readonly totalRecords = input(0);\n readonly first = input(0);\n readonly tableMinWidth = input('60rem');\n\n /** When provided with emptyStateTitleKey, shows ncim-empty-state with icon in empty table body */\n readonly emptyStateIcon = input<string>();\n readonly emptyStateTitleKey = input<string>();\n readonly emptyStateSubtitleKey = input<string>();\n /** When true, shows an error state instead of empty state in the table body */\n readonly error = input(false);\n\n /**\n * Active sort field — restores the sort arrow after a loading cycle.\n * Must match the `field` property of the sorted column.\n */\n readonly sortField = input<string>();\n\n /**\n * Active sort direction — restores the sort arrow after a loading cycle.\n * Pass the same value emitted by sortChange.\n */\n readonly sortOrder = input<'asc' | 'desc'>();\n\n /** PrimeNG expects 1 (asc) / -1 (desc). Converts from the string union. */\n readonly primeNgSortOrder = computed(() => (this.sortOrder() === 'desc' ? -1 : 1));\n\n /**\n * Optional row-click navigation.\n * Provide a function that returns an absolute route string for the given row,\n * or `null` / `undefined` to make a specific row non-navigable.\n *\n * @example\n * [rowRoute]=\"(row) => '/dashboard/violations/violation-details/' + row['id']\"\n */\n readonly rowRoute = input<(row: T) => string | null | undefined>();\n\n readonly hasRowRoute = computed(() => !!this.rowRoute());\n\n /** True when skeleton should be shown (loading or within delay after loading ends) */\n readonly showSkeleton = signal(true);\n\n private lastPageEvent: GridPageEvent | null = null;\n\n constructor() {\n effect(() => {\n const isLoading = this.loading();\n const delay = this.loadingDelay();\n\n if (isLoading) {\n this.showSkeleton.set(true);\n return;\n }\n\n const timer = setTimeout(() => {\n this.showSkeleton.set(false);\n }, delay);\n\n return () => clearTimeout(timer);\n });\n }\n\n readonly addActionEvent = output<{ show: boolean }>();\n readonly searchQuery = output<unknown>();\n readonly selectItems = output<T[]>();\n /** Fires when a sortable column header is clicked — use this to call the API with updated sort params. */\n readonly sortChange = output<GridSortEvent>();\n /** Fires when paginator page changes. */\n readonly pageChange = output<GridPageEvent>();\n\n customColumnTemplates = contentChildren(CustomColsDirective);\n\n protected readonly ColumnsEnum = ColumnsEnum;\n\n readonly normalizedColumns = computed(() =>\n this.columns().map(col => ({\n ...col,\n isSorted: col.isSorted || false,\n type: col.type || ColumnsEnum.TEXT,\n }))\n );\n\n readonly globalFilterFields = computed(() =>\n this.columns()\n .map(col => col.field)\n .filter((f): f is string => !!f)\n );\n\n /** Skeleton uses same columns and row count as table (data length or rows per page) */\n readonly skeletonRows = computed(() => {\n const dataArr = this.data() ?? [];\n const rowsPerPage = this.rows();\n const count = dataArr.length > 0 ? Math.min(dataArr.length, rowsPerPage) : rowsPerPage;\n return Array.from({ length: count }, (_, i) => i);\n });\n\n readonly showPaginator = computed(\n () => this.pagination() && (this.lazy() ? this.totalRecords() > 0 : this.data().length > 0)\n );\n\n /** Varying widths for skeleton cells to mimic table layout */\n colWidth(index: number): string {\n const widths = ['100%', '85%', '70%', '90%', '75%', '95%'];\n return widths[index % widths.length];\n }\n\n setNestedValue(obj: T, path: string | undefined, value: unknown): void {\n if (!path) {\n return;\n }\n const segments = resolvePath(path);\n let current: GridRow = obj;\n for (let i = 0; i < segments.length - 1; i++) {\n const next = current[segments[i]];\n if (next == null || typeof next !== 'object') {\n return;\n }\n current = next as GridRow;\n }\n current[segments[segments.length - 1]] = value;\n }\n\n // Helper to get custom template for a column\n getCustomTemplate(columnDef: string | undefined) {\n if (!columnDef) {\n return null;\n }\n const template = this.customColumnTemplates().find(t => t.ncimCustomCol() === columnDef);\n return template?.templateRef || null;\n }\n\n /**\n * Get the cell value using priority:\n * 1. cellValue function (most flexible)\n * 2. field path with NestedValuePipe\n * 3. null/undefined\n */\n getCellValue(row: any, column: GridColumn) {\n if (column.cellValue) {\n return column.cellValue(row);\n }\n }\n\n /** Called by PrimeNG (customSort=true) — maps PrimeNG order (1/-1) to 'asc'/'desc'. */\n onTableSort(event: { field: string; order: number }): void {\n if (!event.field) {\n return;\n }\n this.sortChange.emit({ field: event.field, order: event.order === 1 ? 'asc' : 'desc' });\n }\n\n onRowClick(row: T, event: MouseEvent): void {\n const fn = this.rowRoute();\n if (!fn) {\n return;\n }\n // Ignore clicks originating from interactive elements inside the cell\n if ((event.target as HTMLElement).closest('button, a, input, p-toggleswitch, p-checkbox, .p-menu')) {\n return;\n }\n const route = fn(row);\n if (!route) {\n return;\n }\n void this.router.navigateByUrl(route);\n }\n\n onSelectChange(items: T[]): void {\n this.selectItems.emit(items);\n }\n\n onPage(event: { first?: number | null; rows?: number | null; page?: number | null }): void {\n this.pageChange.emit({\n first: event.first ?? 0,\n rows: event.rows ?? this.rows(),\n page: (event.page ?? 0) + 1,\n });\n }\n\n onLazyLoad(event: { first?: number | null; rows?: number | null }): void {\n const first = event.first ?? 0;\n const rows = event.rows ?? this.rows();\n const page = Math.floor(first / rows) + 1;\n\n const last = this.lastPageEvent;\n if (last?.page === page && last?.rows === rows && last?.first === first) {\n return;\n }\n\n this.lastPageEvent = { first, rows, page };\n this.pageChange.emit({ first, rows, page });\n }\n\n onFilterList(query: unknown): void {\n this.searchQuery.emit(query);\n }\n\n addActionEmit(): void {\n this.addActionEvent.emit({ show: true });\n }\n\n buildMenuItems(action: GridMenuAction<T>, row: T): MenuItem[] {\n return action.items.map(item => ({\n label: item.label,\n icon: item.icon,\n separator: item.separator,\n linkClass: item.class,\n command: () => item.command?.(row),\n }));\n }\n\n isMenuAction(action: GridColumnAction<T>): action is GridMenuAction<T> {\n return action.type === 'menu';\n }\n}\n","@if (normalizedColumns().length) {\n @if (showSkeleton()) {\n <div class=\"grid-table\">\n <table class=\"grid-table__skeleton-table\">\n <thead>\n <tr>\n @if (showSelect()) {\n <th class=\"grid-table__th\">\n <ncim-skeleton variant=\"rectangular\" [width]=\"'20px'\" [height]=\"'20px'\" />\n </th>\n }\n @for (col of normalizedColumns(); track $index) {\n <th class=\"grid-table__th\">\n <ncim-skeleton variant=\"text\" [width]=\"'80px'\" [height]=\"'20px'\" />\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of skeletonRows(); track $index) {\n <tr class=\"grid-table__row\">\n @if (showSelect()) {\n <td class=\"grid-table__td\">\n <ncim-skeleton variant=\"rectangular\" [width]=\"'20px'\" [height]=\"'20px'\" />\n </td>\n }\n @for (col of normalizedColumns(); track $index) {\n <td class=\"grid-table__td\">\n <ncim-skeleton variant=\"text\" [width]=\"colWidth($index)\" [height]=\"'16px'\" />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"grid-table\">\n <!-- Rows-per-page dropdown appended to body so it is not clipped by overflow/scroll containers -->\n <p-table\n #dt1\n [value]=\"data()\"\n [tableStyle]=\"{ 'min-width': tableMinWidth() }\"\n paginatorDropdownAppendTo=\"body\"\n [paginator]=\"showPaginator()\"\n [lazy]=\"lazy()\"\n [totalRecords]=\"lazy() ? totalRecords() : data().length\"\n [first]=\"first()\"\n [rows]=\"rows()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [(selection)]=\"selectedItems\"\n (selectionChange)=\"onSelectChange($event)\"\n (onPage)=\"!lazy() && onPage($event)\"\n (onLazyLoad)=\"lazy() && onLazyLoad($event)\"\n [selectionPageOnly]=\"true\"\n [showFirstLastIcon]=\"false\"\n [customSort]=\"true\"\n [sortField]=\"sortField() ?? ''\"\n [sortOrder]=\"primeNgSortOrder()\"\n (onSort)=\"onTableSort($event)\"\n >\n <ng-template pTemplate=\"sorticon\" let-sortOrder>\n @switch (sortOrder) {\n @case (0) {\n <ncim-icon name=\"sort-direction\" [size]=\"16\"></ncim-icon>\n }\n @case (1) {\n <ncim-icon name=\"sort-up\" [size]=\"16\"></ncim-icon>\n }\n @case (-1) {\n <ncim-icon name=\"sort-down\" [size]=\"16\"></ncim-icon>\n }\n }\n </ng-template>\n\n @if (showAddButton()) {\n <ng-template #caption>\n <div class=\"grid-table__caption\">\n <p-button severity=\"success\" [label]=\"btnLabel() | translate\" icon=\"pi pi-plus\" size=\"small\" (click)=\"addActionEmit()\" />\n </div>\n </ng-template>\n }\n\n <ng-template #header>\n <tr>\n @if (showSelect()) {\n <th class=\"grid-table__th\">\n <p-tableHeaderCheckbox />\n </th>\n }\n\n @for (column of normalizedColumns(); track $index) {\n <th class=\"grid-table__th\" [pSortableColumn]=\"column.field\">\n <div class=\"d-flex justify-content-between\">\n {{ column.header | translate }}\n @if (column.isSorted) {\n <p-sortIcon [field]=\"column.field\"></p-sortIcon>\n }\n </div>\n </th>\n }\n </tr>\n </ng-template>\n\n <ng-template #body let-row>\n <tr class=\"grid-table__row\" [class.grid-table__row--clickable]=\"hasRowRoute()\" (click)=\"onRowClick(row, $event)\">\n @if (showSelect()) {\n <td class=\"grid-table__td\">\n <p-tableCheckbox [value]=\"row\" />\n </td>\n }\n\n @for (column of normalizedColumns(); track $index) {\n <td class=\"grid-table__td\" [style]=\"column.cssStyle\" [class.grid-table__td--status]=\"column.type === ColumnsEnum.STATUS\">\n @switch (column.type) {\n @case (ColumnsEnum.TEXT) {\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n }\n\n @case (ColumnsEnum.MULTILINE) {\n <div class=\"grid-table__multiline\">\n @if (column.display) {\n <!--\n NOTE: If column.display(row) returns an already-rendered HTML string\n you are responsible for translating inside that function.\n If it returns a plain translation key, use the translate pipe instead of innerHTML.\n -->\n <div [innerHTML]=\"column.display(row)\"></div>\n } @else {\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n }\n </div>\n }\n\n @case (ColumnsEnum.DATE) {\n <span class=\"date\">{{\n (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field))\n | localizedDate: column.pipeArgs || 'long'\n }}</span>\n }\n\n @case (ColumnsEnum.HASH_ID) {\n <span class=\"hash-id\">#{{ column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field) }}</span>\n }\n\n @case (ColumnsEnum.BADGE) {\n <!--\n Badge pill — expects column.getBadgeColor?(row) to return a hex/CSS color.\n The pill background is auto-derived as a 15%-opacity tint of that color.\n Usage in column config:\n type: ColumnsEnum.BADGE,\n getBadgeColor: (row) => row.statusColor, // e.g. '#B91C1C'\n cellValue: (row) => row.statusLabel // translation key or translated string\n -->\n <div class=\"grid-table__badge-pill\" [style.--badge-color]=\"column.getBadgeColor?.(row)\">\n <span class=\"grid-table__badge-dot\"></span>\n <span class=\"grid-table__badge-label\">\n {{ (column.cellValue ? column.cellValue(row) : (row | nestedValue: column.field)) | translate }}\n </span>\n </div>\n }\n\n @case (ColumnsEnum.STATUS) {\n @let status = row | statusConfig: column.field : column.statusMap;\n @if (status.variant) {\n <ncim-dga-tag [variant]=\"status.variant\" [style]=\"'subtle'\" [size]=\"'sm'\" [ariaLabel]=\"status.label | translate\">\n {{ status.label | translate }}\n </ncim-dga-tag>\n } @else {\n <span\n class=\"grid-table__status\"\n [style.background]=\"status.bgColor ?? 'color-mix(in srgb, ' + (status.color ?? '') + ' 10%, transparent)'\"\n [style.color]=\"status.color\"\n >\n <span class=\"grid-table__status-dot\" [style.background-color]=\"status.color\"></span>\n {{ status.label | translate }}\n </span>\n }\n }\n\n @case (ColumnsEnum.PROGRESS) {\n <!--\n Progress bar — expects column.getProgress?(row) to return:\n {\n value: number, // days remaining (current)\n max: number, // total days\n color: string, // bar fill color e.g. '#F97316'\n label: string // translation key e.g. 'PROGRESS.DAYS_LEFT' or pre-translated string\n }\n -->\n @if (column.getProgress) {\n @let progress = column.getProgress(row);\n <div class=\"grid-table__progress-wrapper\">\n <div\n class=\"grid-table__progress-container\"\n [style.background]=\"'color-mix(in srgb, ' + progress.color + ' 10%, transparent)'\"\n >\n <div\n class=\"grid-table__progress-bar\"\n [style.width.%]=\"(progress.value / progress.max) * 100\"\n [style.background-color]=\"progress.color\"\n ></div>\n </div>\n <div class=\"grid-table__progress-label\">{{ progress.label | translate }}</div>\n </div>\n }\n }\n\n @case (ColumnsEnum.CUSTOM) {\n @if (getCustomTemplate(column.columnDef)) {\n <ng-container\n *ngTemplateOutlet=\"getCustomTemplate(column.columnDef); context: { $implicit: row, column: column }\"\n ></ng-container>\n } @else {\n <span class=\"text-muted\">No template found for {{ column.columnDef }}</span>\n }\n }\n\n @case (ColumnsEnum.TOGGLE) {\n <p-toggleswitch\n [ngModel]=\"row | nestedValue: column.field\"\n (onChange)=\"setNestedValue(row, column.field, $event.checked); column.onChange?.(row)\"\n />\n }\n\n @case (ColumnsEnum.CHECKBOX) {\n <p-checkbox\n [(ngModel)]=\"selectedItems\"\n (onChange)=\"column?.onChange?.(row, $event)\"\n [inputId]=\"row[searchPipeKey()]\"\n name=\"group\"\n [value]=\"row\"\n />\n }\n\n @case (ColumnsEnum.BUTTON) {\n <div class=\"grid-table__actions\">\n @for (action of column.actions; track $index) {\n @if (action.type === 'link') {\n <a\n [href]=\"action.link?.(row)\"\n class=\"grid-table__action-btn\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n target=\"_blank\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </a>\n } @else if (action.type === 'command') {\n <button\n type=\"button\"\n class=\"grid-table__action-btn\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n (click)=\"action.command?.(row)\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @case (ColumnsEnum.MENU) {\n <div class=\"grid-table__actions\">\n @for (action of column.actions; track $index) {\n @if (action.type === 'menu') {\n <p-menu\n #menu\n [model]=\"buildMenuItems(action, row)\"\n [popup]=\"true\"\n appendTo=\"body\"\n [autoZIndex]=\"true\"\n [styleClass]=\"'table-actions'\"\n >\n <ng-template pTemplate=\"item\" let-item>\n <a pRipple class=\"grid-action cursor-pointer\" [class]=\"item.linkClass\">\n @if (item.icon) {\n <ncim-icon [name]=\"item.icon\" [size]=\"16\" />\n }\n <span class=\"ms-2\">{{ item.label | translate }}</span>\n </a>\n </ng-template>\n </p-menu>\n <button\n type=\"button\"\n class=\"grid-table__action-btn grid-table__action-btn--menu\"\n [class.grid-table__action-btn--icon-only]=\"action.iconOnly\"\n [class]=\"action.severity ? 'severity-' + action.severity : ''\"\n [pTooltip]=\"action.iconOnly ? (action.label | translate) : ''\"\n tooltipPosition=\"top\"\n (click)=\"menu.toggle($event)\"\n >\n @if (action.icon) {\n <ncim-icon [name]=\"action.icon\" [size]=\"20\" />\n }\n @if (!action.iconOnly) {\n <span>{{ action.label | translate }}</span>\n }\n </button>\n }\n }\n </div>\n }\n }\n </td>\n }\n </tr>\n </ng-template>\n\n <ng-template #emptymessage>\n <tr>\n <td class=\"grid-table__empty\" [attr.colspan]=\"normalizedColumns().length\">\n @if (error()) {\n <ncim-empty-state titleKey=\"COMMON.LOAD_ERROR\" icon=\"error-state\" [compact]=\"true\" [iconSize]=\"120\" />\n } @else if (emptyStateIcon() && emptyStateTitleKey()) {\n <ncim-empty-state\n [titleKey]=\"emptyStateTitleKey()!\"\n [subtitleKey]=\"emptyStateSubtitleKey()\"\n [icon]=\"emptyStateIcon()!\"\n [compact]=\"true\"\n [iconSize]=\"120\"\n />\n } @else {\n {{ 'COMMON.NO_DATA' | translate }}\n }\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n }\n}\n","import { Component, input, output, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Notification, NotificationFilter, NotificationAction } from './notification-list.models';\nimport { DrawerModule } from 'primeng/drawer';\nimport { Icon } from '../../atoms/icon/icon';\n\n@Component({\n selector: 'ncim-notification-list',\n templateUrl: './notification-list.html',\n styleUrl: './notification-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DrawerModule, TranslateModule, Icon],\n})\nexport class NotificationListComponent {\n // Inputs\n readonly visible = input.required<boolean>();\n readonly notifications = input.required<Notification[]>();\n readonly position = input<'left' | 'right'>('right');\n readonly rtl = input<boolean>(false);\n\n // Outputs\n readonly visibleChange = output<boolean>();\n readonly notificationClick = output<Notification>();\n readonly markAsRead = output<string>();\n readonly markAllAsRead = output<void>();\n\n // State\n readonly activeFilter = signal<NotificationFilter>('all');\n\n // Computed\n readonly filteredNotifications = computed(() => {\n const filter = this.activeFilter();\n const allNotifications = this.notifications();\n\n if (filter === 'unread') {\n return allNotifications.filter(n => !n.isRead);\n }\n return allNotifications;\n });\n\n readonly unreadCount = computed(() => this.notifications().filter(n => !n.isRead).length);\n\n readonly hasUnread = computed(() => this.unreadCount() > 0);\n\n // Methods\n setFilter(filter: NotificationFilter): void {\n this.activeFilter.set(filter);\n }\n\n onVisibleChange(visible: boolean): void {\n this.visibleChange.emit(visible);\n }\n\n onNotificationClick(notification: Notification): void {\n this.notificationClick.emit(notification);\n if (!notification.isRead) {\n this.markAsRead.emit(notification.id);\n }\n }\n\n onActionClick(event: Event, action: NotificationAction): void {\n event.stopPropagation();\n action.action();\n }\n\n onMarkAllAsRead(): void {\n if (this.hasUnread()) {\n this.markAllAsRead.emit();\n }\n }\n\n getNotificationIcon(notification: Notification): string {\n if (notification.icon) {\n return notification.icon;\n }\n\n const iconMap: Record<string, string> = {\n monitoring: 'activity-background',\n commercial: 'new-office-background',\n objection: 'hold-background',\n violation: 'hold-background',\n info: 'alarm-clock-background',\n warning: 'alert-background',\n success: 'settings-background',\n };\n\n return iconMap[notification.type] || 'pi-bell';\n }\n\n private static readonly CATEGORY_KEY_MAP: Record<string, string> = {\n 'monitoring-board': 'NOTIFICATIONS.CATEGORY.MONITORING_BOARD',\n 'regulatory-dashboard': 'NOTIFICATIONS.CATEGORY.MONITORING_BOARD',\n violations: 'NOTIFICATIONS.CATEGORY.VIOLATIONS',\n objections: 'NOTIFICATIONS.CATEGORY.OBJECTIONS',\n general: 'NOTIFICATIONS.CATEGORY.GENERAL',\n };\n\n /** Returns days elapsed since the given date (for use with translate pipe in template). */\n protected getDaysAgo(date: Date): number {\n return Math.floor((Date.now() - date.getTime()) / (1000 * 60 * 60 * 24));\n }\n\n /** Returns the i18n key for the given category (for use with translate pipe in template). */\n protected getCategoryI18nKey(category: string): string {\n return NotificationListComponent.CATEGORY_KEY_MAP[category] ?? category;\n }\n\n trackByNotificationId(index: number, notification: Notification): string {\n return notification.id;\n }\n}\n","<p-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"onVisibleChange($event)\"\n [position]=\"position()\"\n [baseZIndex]=\"10000\"\n styleClass=\"notification-drawer\"\n [dir]=\"rtl() ? 'rtl' : 'ltr'\"\n [modal]=\"true\"\n [dismissible]=\"true\"\n [showCloseIcon]=\"true\"\n role=\"dialog\"\n aria-labelledby=\"notification-drawer-title\"\n aria-describedby=\"notification-drawer-description\"\n>\n <ng-template pTemplate=\"header\">\n <header class=\"notification-header\">\n <h2 id=\"notification-drawer-title\" class=\"notification-title\">{{ 'NOTIFICATIONS.TITLE' | translate }}</h2>\n @if (hasUnread()) {\n <button class=\"mark-all-read-btn\" (click)=\"onMarkAllAsRead()\" type=\"button\">\n <span>{{ 'NOTIFICATIONS.MARK_ALL_READ' | translate }}</span>\n </button>\n }\n </header>\n </ng-template>\n\n <section class=\"notification-content\" id=\"notification-drawer-description\">\n <!-- Filter Navigation -->\n <nav class=\"notification-tabs\" [attr.aria-label]=\"'NOTIFICATIONS.FILTER_LABEL' | translate\">\n <button\n class=\"tab-button\"\n [class.active]=\"activeFilter() === 'all'\"\n (click)=\"setFilter('all')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeFilter() === 'all'\"\n [attr.aria-controls]=\"'notification-panel-all'\"\n [id]=\"'tab-all'\"\n type=\"button\"\n >\n {{ 'NOTIFICATIONS.ALL' | translate }}\n </button>\n <button\n class=\"tab-button\"\n [class.active]=\"activeFilter() === 'unread'\"\n (click)=\"setFilter('unread')\"\n role=\"tab\"\n [attr.aria-selected]=\"activeFilter() === 'unread'\"\n [attr.aria-controls]=\"'notification-panel-unread'\"\n [id]=\"'tab-unread'\"\n type=\"button\"\n >\n {{ 'NOTIFICATIONS.UNREAD' | translate }}\n @if (unreadCount() > 0) {\n <span class=\"unread-badge\" [attr.aria-label]=\"'NOTIFICATIONS.UNREAD_COUNT' | translate: { count: unreadCount() }\">\n {{ unreadCount() }}\n </span>\n }\n </button>\n </nav>\n\n <!-- Notifications List -->\n <main\n class=\"notifications-list\"\n role=\"feed\"\n [attr.aria-busy]=\"false\"\n [attr.aria-labelledby]=\"activeFilter() === 'all' ? 'tab-all' : 'tab-unread'\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n @if (filteredNotifications().length === 0) {\n <section class=\"empty-state\" role=\"status\" aria-live=\"polite\">\n <figure class=\"empty-icon\" aria-hidden=\"true\">\n <ncim-icon name=\"bell\" [size]=\"20\" [height]=\"20\"></ncim-icon>\n </figure>\n <p class=\"empty-message\">\n {{ (activeFilter() === 'unread' ? 'NOTIFICATIONS.EMPTY_UNREAD' : 'NOTIFICATIONS.EMPTY_ALL') | translate }}\n </p>\n </section>\n } @else {\n @for (notification of filteredNotifications(); track trackByNotificationId($index, notification)) {\n <article\n class=\"notification-item\"\n [class.unread]=\"!notification.isRead\"\n [attr.data-type]=\"notification.type\"\n (click)=\"onNotificationClick(notification)\"\n tabindex=\"0\"\n (keydown.enter)=\"onNotificationClick(notification)\"\n (keydown.space)=\"onNotificationClick(notification)\"\n [attr.aria-label]=\"\n notification.title +\n '. ' +\n (notification.isRead ? ('NOTIFICATIONS.READ' | translate) : ('NOTIFICATIONS.UNREAD_DOT' | translate))\n \"\n [attr.aria-describedby]=\"'notification-desc-' + notification.id\"\n >\n <figure class=\"notification-icon\" aria-hidden=\"true\">\n <ncim-icon [name]=\"getNotificationIcon(notification)\" [size]=\"38\" [height]=\"38\"></ncim-icon>\n </figure>\n\n <div class=\"notification-body\">\n <header>\n <h3 class=\"notification-item-title\">{{ notification.title }}</h3>\n <p class=\"notification-meta\">\n <time class=\"notification-date\" [attr.datetime]=\"notification.date.toISOString()\">\n @let days = getDaysAgo(notification.date);\n @if (days === 0) {\n {{ 'NOTIFICATIONS.DATE.TODAY' | translate }}\n } @else if (days === 1) {\n {{ 'NOTIFICATIONS.DATE.YESTERDAY' | translate }}\n } @else if (days < 7) {\n {{ 'NOTIFICATIONS.DATE.DAYS_AGO' | translate: { days: days } }}\n } @else {\n {{ notification.date.toLocaleDateString() }}\n }\n </time>\n <span class=\"notification-separator\" aria-hidden=\"true\">•</span>\n <span class=\"notification-category\">\n {{ getCategoryI18nKey(notification.category) | translate }}\n </span>\n </p>\n </header>\n\n @if (notification.subject) {\n <div class=\"notification-subject\">\n <h3 class=\"notification-subject__label\">{{ notification.subject }}</h3>\n\n <p [id]=\"'notification-desc-' + notification.id\" class=\"notification-description\">\n {{ notification.description }}\n </p>\n </div>\n } @else {\n <p [id]=\"'notification-desc-' + notification.id\" class=\"notification-description\">\n {{ notification.description }}\n </p>\n }\n\n @if (notification.actions && notification.actions.length > 0) {\n <nav class=\"notification-actions\" [attr.aria-label]=\"'NOTIFICATIONS.ACTIONS_LABEL' | translate\">\n <!-- track $index: action config has no stable id -->\n @for (action of notification.actions; track $index) {\n <button\n class=\"action-button\"\n [class.primary]=\"action.variant === 'primary'\"\n [class.secondary]=\"action.variant === 'secondary'\"\n (click)=\"onActionClick($event, action)\"\n type=\"button\"\n [attr.aria-label]=\"action.label\"\n >\n {{ action.label }}\n </button>\n }\n </nav>\n }\n </div>\n <aside class=\"notification-indicator\" aria-hidden=\"true\">\n @if (!notification.isRead) {\n <output class=\"unread-dot\" [attr.aria-label]=\"'NOTIFICATIONS.UNREAD_DOT' | translate\"></output>\n }\n </aside>\n </article>\n }\n }\n </main>\n </section>\n</p-drawer>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NcimButton } from '../../atoms/button/button';\nimport { FormInput } from '../../molecules/form-input/form-input';\nimport { Popup } from '../../molecules/popup/popup';\nimport { PopupModalBase } from '../../molecules/popup/popup-modal-base/popup-modal-base';\n\n@Component({\n selector: 'ncim-save-filter-popup',\n templateUrl: './save-filter-popup.html',\n styleUrl: './save-filter-popup.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [Popup, NcimButton, FormInput, ReactiveFormsModule, TranslateModule],\n})\nexport class SaveFilterPopup extends PopupModalBase {\n readonly mode = input<'add' | 'edit'>('add');\n readonly initialTitle = input<string>('');\n readonly saveLoading = input<boolean>(false);\n\n readonly saved = output<{ title: string }>();\n readonly deleted = output<void>();\n\n readonly form = new FormGroup({\n title: new FormControl('', [Validators.required]),\n });\n\n readonly isEditMode = computed(() => this.mode() === 'edit');\n readonly saveAttempted = signal(false);\n readonly isSubmitting = signal(false);\n\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n super();\n // Reset all state when popup closes; patch initial title when it opens\n effect(() => {\n if (!this.isOpen()) {\n this.cancelClose();\n this.saveAttempted.set(false);\n this.isSubmitting.set(false);\n this.form.reset();\n return;\n }\n this.form.patchValue({ title: this.initialTitle() ?? '' });\n });\n\n this.destroyRef.onDestroy(() => this.cancelClose());\n }\n\n onSave(): void {\n this.saveAttempted.set(true);\n if (!this.form.valid) {\n return;\n }\n const title = this.form.get('title')?.value ?? '';\n this.isSubmitting.set(true);\n this.saved.emit({ title });\n this.closeTimer = setTimeout(() => this.closeModal(), 1000);\n }\n\n onDelete(): void {\n this.deleted.emit();\n this.closeModal();\n }\n\n private cancelClose(): void {\n if (this.closeTimer !== null) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n}\n","<ncim-popup\n [open]=\"isOpen()\"\n [title]=\"'REGULATORY_DASHBOARD.SAVE_FILTER' | translate\"\n [showCloseButton]=\"true\"\n [closeOnBackdropClick]=\"true\"\n size=\"small\"\n>\n <form [formGroup]=\"form\" (ngSubmit)=\"onSave()\" class=\"save-filter-popup__form\">\n <ncim-form-input\n formControlName=\"title\"\n [label]=\"'REGULATORY_DASHBOARD.FILTER_TITLE' | translate\"\n [placeholder]=\"'REGULATORY_DASHBOARD.FILTER_TITLE' | translate\"\n [submitted]=\"saveAttempted()\"\n />\n </form>\n\n <div popupFooter class=\"save-filter-popup__footer\">\n <div class=\"save-filter-popup__actions\">\n <ncim-button\n class=\"save-filter-popup__action-btn\"\n variant=\"black\"\n [fullWidth]=\"true\"\n type=\"button\"\n [loading]=\"isSubmitting() || saveLoading()\"\n (click)=\"onSave()\"\n >\n {{ 'COMMON.SAVE' | translate }}\n </ncim-button>\n <ncim-button class=\"save-filter-popup__action-btn\" variant=\"neutral\" [fullWidth]=\"true\" type=\"button\" (click)=\"closeModal()\">\n {{ 'COMMON.BACK' | translate }}\n </ncim-button>\n </div>\n @if (isEditMode()) {\n <ncim-button class=\"save-filter-popup__delete\" variant=\"outline\" [fullWidth]=\"false\" size=\"small\" type=\"button\" (click)=\"onDelete()\">\n {{ 'REGULATORY_DASHBOARD.DELETE_FILTER' | translate }}\n </ncim-button>\n }\n </div>\n</ncim-popup>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n contentChild,\n TemplateRef,\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type { SelectableListItem } from './selectable-list-with-search.models';\n\n@Component({\n selector: 'ncim-selectable-list-with-search',\n templateUrl: './selectable-list-with-search.html',\n styleUrl: './selectable-list-with-search.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgTemplateOutlet],\n})\nexport class SelectableListWithSearch {\n readonly title = input<string>('');\n readonly items = input<SelectableListItem[]>([]);\n readonly itemTemplate = contentChild<\n TemplateRef<{ $implicit: SelectableListItem; index: number }> | null | undefined\n >(TemplateRef);\n\n readonly selectedValues = input<string[]>([]);\n readonly variant = input<'primary' | 'black'>('primary');\n readonly searchPlaceholder = input<string>('Search');\n readonly multiSelect = input<boolean>(true);\n readonly rtl = input<boolean>(false); // TODO control the checkbox location with @if instead\n\n readonly selectionChange = output<string[]>();\n\n protected readonly searchQuery = signal('');\n\n protected readonly filteredItems = computed(() => {\n const items = this.items();\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) {\n return items;\n }\n return items.filter(\n item => item.label.toLowerCase().includes(query) || (item.subLabel?.toLowerCase().includes(query) ?? false)\n );\n });\n\n protected readonly selectedSet = computed(() => new Set(this.selectedValues()));\n\n protected isSelected(value: string): boolean {\n return this.selectedSet().has(value);\n }\n\n protected onSearchInput(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n }\n\n protected toggleItem(item: SelectableListItem): void {\n if (item.disabled) {\n return;\n }\n const current = this.selectedValues();\n const isSelected = current.includes(item.value);\n let next: string[];\n\n if (this.multiSelect()) {\n if (isSelected) {\n next = current.filter(v => v !== item.value);\n } else {\n next = [...current, item.value];\n }\n } else {\n next = isSelected ? [] : [item.value];\n }\n\n this.selectionChange.emit(next);\n }\n}\n","<div\n [class.selectable-list--primary]=\"variant() === 'primary'\"\n [class.selectable-list--black]=\"variant() === 'black'\"\n class=\"selectable-list\"\n>\n @if (title()) {\n <h3 class=\"selectable-list__title\">{{ title() }}</h3>\n }\n\n <div class=\"selectable-list__search\">\n <span class=\"selectable-list__search-icon\" aria-hidden=\"true\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </span>\n <input\n type=\"text\"\n class=\"selectable-list__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n\n <ul class=\"selectable-list__items\" role=\"list\">\n @for (item of filteredItems(); track item.value; let i = $index) {\n <li class=\"selectable-list__item\">\n <button\n type=\"button\"\n class=\"selectable-list__item-btn\"\n [class.selectable-list__item-btn--selected]=\"isSelected(item.value)\"\n [class.selectable-list__item-btn--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n (click)=\"toggleItem(item)\"\n >\n @if (!rtl()) {\n <span class=\"selectable-list__checkbox\" [class.selectable-list__checkbox--checked]=\"isSelected(item.value)\">\n @if (isSelected(item.value)) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n }\n <span class=\"selectable-list__item-content\">\n @if (!itemTemplate()) {\n <span class=\"selectable-list__item-label\">{{ item.label }}</span>\n @if (item.subLabel) {\n <span class=\"selectable-list__item-sublabel\">{{ item.subLabel }}</span>\n }\n } @else {\n <ng-container [ngTemplateOutlet]=\"itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n }\n </span>\n @if (rtl()) {\n <span class=\"selectable-list__checkbox\" [class.selectable-list__checkbox--checked]=\"isSelected(item.value)\">\n @if (isSelected(item.value)) {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n }\n </button>\n </li>\n } @empty {\n <li class=\"selectable-list__empty\">{{ 'COMMON.NO_RESULTS' | translate }}</li>\n }\n </ul>\n</div>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { LoadingService } from '@libs/core/services';\n\n/**\n * Thin animated progress bar fixed to the top of the viewport.\n * Automatically visible whenever the LoadingService reports in-flight HTTP requests.\n */\n@Component({\n selector: 'ncim-global-loading-bar',\n templateUrl: './global-loading-bar.html',\n styleUrl: './global-loading-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GlobalLoadingBar {\n protected readonly loading = inject(LoadingService);\n}\n","@if (loading.isLoading()) {\n <div class=\"ncim-global-loading-bar\" role=\"progressbar\" aria-label=\"Loading\" aria-busy=\"true\">\n <div class=\"ncim-global-loading-bar__track\"></div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport type ImagePickerErrorType = 'type' | 'size';\n\n@Component({\n selector: 'ncim-image-picker',\n imports: [Icon, TranslatePipe],\n templateUrl: './image-picker.html',\n styleUrl: './image-picker.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ImagePicker),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ImagePicker),\n multi: true,\n },\n ],\n})\nexport class ImagePicker implements ControlValueAccessor, Validator {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly placeholder = input('');\n readonly disabled = input(false);\n readonly required = input(false);\n readonly maxSizeMb = input(5);\n readonly value = input<string | File | null>(null);\n\n readonly fileSelected = output<File>();\n readonly cleared = output<void>();\n readonly validationError = output<ImagePickerErrorType>();\n\n readonly dragging = signal(false);\n readonly previewUrl = signal<string | null>(null);\n readonly error = signal<ImagePickerErrorType | null>(null);\n protected readonly isTouched = signal(false);\n\n readonly showRequiredError = computed(\n () => this.required() && !this.previewUrl() && !this.error() && this.isTouched()\n );\n\n private objectUrl: string | null = null;\n private readonly cvdDisabled = signal(false);\n\n readonly isDisabled = computed(() => this.disabled() || this.cvdDisabled());\n\n private onChange: (value: File | string | null) => void = () => {\n /* registered by Angular forms */\n };\n\n private onTouchedFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n private onValidatorChangeFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n constructor() {\n effect(() => this.handleValueChange(this.value()));\n this.destroyRef.onDestroy(() => this.clearPreview());\n }\n\n // ControlValueAccessor\n\n writeValue(value: string | File | null): void {\n this.handleValueChange(value);\n }\n\n registerOnChange(fn: (value: File | string | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.cvdDisabled.set(isDisabled);\n }\n\n // Validator\n\n validate(_control: AbstractControl): ValidationErrors | null {\n if (this.required() && !this.previewUrl()) {\n return { required: true };\n }\n if (this.error() === 'type') {\n return { imageType: true };\n }\n if (this.error() === 'size') {\n return { imageSize: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n // Public methods\n\n openFile(fileInput: HTMLInputElement): void {\n if (this.isDisabled()) {\n return;\n }\n this.error.set(null);\n fileInput.click();\n }\n\n onFileChange(event: Event): void {\n const el = event.target as HTMLInputElement;\n const file = el.files?.[0] ?? null;\n this.handleIncomingFile(file);\n el.value = '';\n }\n\n onDrop(e: DragEvent): void {\n e.preventDefault();\n this.dragging.set(false);\n if (this.isDisabled()) {\n return;\n }\n const file = e.dataTransfer?.files?.[0] ?? null;\n this.handleIncomingFile(file);\n }\n\n onDragOver(e: DragEvent): void {\n e.preventDefault();\n if (!this.isDisabled()) {\n this.dragging.set(true);\n }\n }\n\n onDragLeave(e: DragEvent): void {\n e.preventDefault();\n this.dragging.set(false);\n }\n\n clear(e: Event): void {\n e.stopPropagation();\n this.clearPreview();\n this.error.set(null);\n this.markTouched();\n this.onChange(null);\n this.onValidatorChangeFn();\n this.cleared.emit();\n }\n\n // Private helpers\n\n private markTouched(): void {\n this.isTouched.set(true);\n this.onTouchedFn();\n }\n\n private handleValueChange(v: string | File | null): void {\n this.clearPreview();\n if (!v) {\n return;\n }\n if (v instanceof File) {\n this.setPreview(v);\n } else {\n this.previewUrl.set(v);\n }\n }\n\n private setPreview(file: File): void {\n this.clearPreview();\n this.objectUrl = URL.createObjectURL(file);\n this.previewUrl.set(this.objectUrl);\n }\n\n private clearPreview(): void {\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n this.objectUrl = null;\n }\n this.previewUrl.set(null);\n }\n\n private handleIncomingFile(file: File | null): void {\n if (!file) {\n return;\n }\n if (!file.type.startsWith('image/')) {\n this.error.set('type');\n this.markTouched();\n this.onValidatorChangeFn();\n this.validationError.emit('type');\n return;\n }\n if (file.size > this.maxSizeMb() * 1024 * 1024) {\n this.error.set('size');\n this.markTouched();\n this.onValidatorChangeFn();\n this.validationError.emit('size');\n return;\n }\n this.error.set(null);\n this.setPreview(file);\n this.onChange(file);\n this.markTouched();\n this.onValidatorChangeFn();\n this.fileSelected.emit(file);\n }\n}\n","<div\n class=\"image-picker\"\n [class.image-picker--disabled]=\"isDisabled()\"\n [class.image-picker--has-image]=\"!!previewUrl()\"\n [class.image-picker--error]=\"!!error()\"\n>\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n class=\"image-picker__file-input\"\n (change)=\"onFileChange($event)\"\n [disabled]=\"isDisabled()\"\n />\n\n <div\n class=\"image-picker__preview\"\n [class.image-picker__preview--dragging]=\"dragging()\"\n [style.background-image]=\"previewUrl() ? 'url(' + previewUrl() + ')' : 'none'\"\n role=\"button\"\n [tabindex]=\"isDisabled() ? -1 : 0\"\n [attr.aria-label]=\"'IMAGE_PICKER.CHOOSE' | translate\"\n [attr.aria-disabled]=\"isDisabled()\"\n (click)=\"openFile(fileInput)\"\n (keydown.enter)=\"openFile(fileInput)\"\n (keydown.space)=\"$event.preventDefault(); openFile(fileInput)\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n >\n @if (previewUrl()) {\n <div class=\"image-picker__overlay\" aria-hidden=\"true\">\n <ncim-icon name=\"camera\" [size]=\"16\" />\n </div>\n <button type=\"button\" class=\"image-picker__clear-btn\" [attr.aria-label]=\"'IMAGE_PICKER.REMOVE' | translate\" (click)=\"clear($event)\">\n <ncim-icon name=\"close\" [size]=\"12\" />\n </button>\n } @else {\n <div class=\"image-picker__camera-btn\" aria-hidden=\"true\">\n <ncim-icon name=\"camera\" [size]=\"16\" />\n </div>\n }\n\n @if (!previewUrl() && placeholder()) {\n <div class=\"image-picker__placeholder\">\n {{ placeholder() }}\n </div>\n }\n </div>\n\n @if (error()) {\n <p class=\"image-picker__error\" role=\"alert\">\n @switch (error()) {\n @case ('type') {\n {{ 'IMAGE_PICKER.ERROR_TYPE' | translate }}\n }\n @case ('size') {\n {{ 'IMAGE_PICKER.ERROR_SIZE' | translate: { mb: maxSizeMb() } }}\n }\n }\n </p>\n } @else if (showRequiredError()) {\n <p class=\"image-picker__error\" role=\"alert\">\n {{ 'IMAGE_PICKER.ERROR_REQUIRED' | translate }}\n </p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n output,\n signal,\n computed,\n model,\n effect,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { FormError } from '../form-error/form-error';\nimport { FormLabel } from '../form-label/form-label';\nimport { Icon } from '../icon/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ERROR_KEYS } from '@libs/core/constants';\n\n@Component({\n selector: 'ncim-button-with-selection-count',\n imports: [FormError, FormLabel, Icon, TranslatePipe],\n templateUrl: './button-with-selection-count.html',\n styleUrl: './button-with-selection-count.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonWithSelectionCount implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly submitted = input<boolean>(false);\n readonly text = input<string>();\n\n readonly clicked = output<void>();\n\n readonly value = input<any[]>([]);\n readonly touched = signal(false);\n\n readonly displayCount = computed(() => this.value().length);\n\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n effect(() => {\n this.onChange(this.value());\n });\n }\n\n private onChange: (value: any[]) => void = noop;\n private onTouched: () => void = noop;\n\n readonly errorKey = computed<string>(() => {\n const control = this.ngControl?.control;\n if (!control?.errors) {\n return '';\n }\n\n if (control.errors['minSelected']) {\n return ERROR_KEYS.AT_LEAST_ONE_OPTION_REQUIRED;\n }\n\n const firstError = Object.keys(control.errors)[0];\n return firstError || '';\n });\n\n readonly showError = computed<boolean>(() => !!this.errorKey() && (this.touched() || this.submitted()));\n\n onButtonClick(): void {\n this.touched.set(true);\n this.onTouched();\n this.clicked.emit();\n }\n\n writeValue: (value: any[]) => void = noop;\n\n registerOnChange(fn: (value: any[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"button-with-selection-count\">\n <ncim-form-label [text]=\"label()\" />\n <button\n type=\"button\"\n class=\"button-with-selection-count__trigger\"\n [class.button-with-selection-count__trigger--error]=\"showError()\"\n (click)=\"onButtonClick()\"\n >\n <span class=\"button-with-selection-count__value\">{{ text() | translate: { count: displayCount() } }}</span>\n <ncim-icon name=\"chevronLeft\" [size]=\"20\" class=\"button-with-selection-count__chevron\" />\n </button>\n <ncim-form-error [show]=\"showError()\" [messageKey]=\"errorKey()\" />\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'ncim-profile-hero',\n imports: [],\n templateUrl: './profile-hero.html',\n styleUrl: './profile-hero.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProfileHero {\n name = input<string>('');\n role = input<string>('');\n avatarUrl = input<string>('');\n}\n","<!-- <div class=\"profile-hero\">\n <div class=\"profile-hero__avatar-ring\">\n <div class=\"profile-hero__avatar\">\n <ncim-icon name=\"user\" [size]=\"40\" />\n </div>\n </div>\n <span class=\"profile-hero__name\">{{ name() }}</span>\n <span class=\"profile-hero__role\">{{ role() }}</span>\n</div>\n -->\n\n<div class=\"profile__hero\">\n <div class=\"profile__hero-center\">\n <div class=\"profile__avatar-ring\">\n <div\n class=\"profile__avatar\"\n [style]=\"avatarUrl() ? 'background: url(' + avatarUrl() + ')lightgray -18.488px -17.182px / 133.565% 200.507%' : ''\"\n ></div>\n </div>\n <span class=\"profile__hero-name\">{{ name() }}</span>\n <span class=\"profile__hero-role\">{{ role() }}</span>\n </div>\n</div>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { NcimButton } from '../../atoms/button/button';\n\nexport interface UploadedFile {\n id: string;\n file: File;\n name: string;\n sizeFormatted: string;\n}\n\nexport type RejectionReason = 'size' | 'type' | 'duplicate' | 'max_files';\n\nexport interface RejectedFile {\n name: string;\n reason: RejectionReason;\n}\n\n@Component({\n selector: 'ncim-file-upload',\n imports: [TranslateModule, Icon, NcimButton],\n templateUrl: './file-upload.html',\n styleUrl: './file-upload.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FileUpload),\n multi: true,\n },\n ],\n})\nexport class FileUpload implements ControlValueAccessor, Validator {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly maxSizeMB = input<number>(2);\n readonly acceptedTypes = input<string[]>(['jpg', 'png', 'pdf']);\n readonly multiple = input<boolean>(true);\n readonly maxFiles = input<number>(10);\n readonly required = input<boolean>(false);\n\n readonly filesChanged = output<File[]>();\n readonly filesRejected = output<RejectedFile[]>();\n\n readonly isDragOver = signal(false);\n readonly uploadedFiles = signal<UploadedFile[]>([]);\n readonly rejectedFiles = signal<RejectedFile[]>([]);\n protected readonly isTouched = signal(false);\n\n readonly showRequiredError = computed(() => this.required() && this.uploadedFiles().length === 0 && this.isTouched());\n\n readonly typesString = computed(() =>\n this.acceptedTypes()\n .map(t => `.${t}`)\n .join(', ')\n );\n\n readonly acceptAttr = computed(() =>\n this.acceptedTypes()\n .map(t => `.${t}`)\n .join(',')\n );\n\n /** Stored reference so removeEventListener can target the same function */\n private readonly boundFileHandler = (event: Event) => this.onFileSelected(event);\n private fileInputEl: HTMLInputElement | null = null;\n\n private onChangeFn: (files: File[]) => void = () => {\n /* registered by Angular forms */\n };\n\n private onTouchedFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n private onValidatorChangeFn: () => void = () => {\n /* registered by Angular forms */\n };\n\n constructor() {\n afterNextRender(() => {\n const el = document.createElement('input');\n el.type = 'file';\n el.style.display = 'none';\n el.accept = this.acceptAttr();\n if (this.multiple()) {\n el.multiple = true;\n }\n el.addEventListener('change', this.boundFileHandler);\n document.body.appendChild(el);\n this.fileInputEl = el;\n\n this.destroyRef.onDestroy(() => {\n el.removeEventListener('change', this.boundFileHandler);\n el.remove();\n });\n });\n }\n\n // ControlValueAccessor\n\n writeValue(files: File[] | null): void {\n if (!files || files.length === 0) {\n this.uploadedFiles.set([]);\n return;\n }\n const mapped: UploadedFile[] = files.map(f => ({\n id: `${Date.now()}-${Math.random()}`,\n file: f,\n name: f.name,\n sizeFormatted: this.formatSize(f.size),\n }));\n this.uploadedFiles.set(mapped);\n }\n\n registerOnChange(fn: (files: File[]) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // reserved for future disabled-state support\n }\n\n // Validator\n\n validate(_control: AbstractControl): ValidationErrors | null {\n if (this.required() && this.uploadedFiles().length === 0) {\n return { required: true };\n }\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n // Public methods\n\n openFilePicker(): void {\n this.rejectedFiles.set([]);\n this.fileInputEl?.click();\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n this.isDragOver.set(false);\n const files = event.dataTransfer?.files;\n if (files) {\n this.processFiles(Array.from(files));\n }\n }\n\n removeFile(id: string): void {\n this.uploadedFiles.update(files => files.filter(f => f.id !== id));\n this.notifyChange();\n }\n\n dismissRejected(): void {\n this.rejectedFiles.set([]);\n }\n\n // Private helpers\n\n private markTouched(): void {\n this.isTouched.set(true);\n this.onTouchedFn();\n }\n\n private notifyChange(): void {\n const files = this.uploadedFiles().map(f => f.file);\n this.onChangeFn(files);\n this.onValidatorChangeFn();\n this.filesChanged.emit(files);\n }\n\n private onFileSelected(event: Event): void {\n const target = event.target as HTMLInputElement;\n if (target.files) {\n this.processFiles(Array.from(target.files));\n target.value = '';\n }\n }\n\n private processFiles(files: File[]): void {\n const maxBytes = this.maxSizeMB() * 1024 * 1024;\n const allowed = this.acceptedTypes().map(t => t.toLowerCase());\n const existing = this.uploadedFiles();\n const rejected: RejectedFile[] = [];\n const valid: UploadedFile[] = [];\n\n for (const file of files) {\n const ext = file.name.split('.').pop()?.toLowerCase() ?? '';\n\n if (!allowed.includes(ext)) {\n rejected.push({ name: file.name, reason: 'type' });\n continue;\n }\n if (file.size > maxBytes) {\n rejected.push({ name: file.name, reason: 'size' });\n continue;\n }\n const isDuplicate = existing.some(e => e.name === file.name && e.file.size === file.size);\n if (isDuplicate) {\n rejected.push({ name: file.name, reason: 'duplicate' });\n continue;\n }\n\n valid.push({\n id: `${Date.now()}-${Math.random()}`,\n file,\n name: file.name,\n sizeFormatted: this.formatSize(file.size),\n });\n }\n\n let newList: UploadedFile[];\n\n if (this.multiple()) {\n newList = [...existing, ...valid];\n const overflow = newList.length - this.maxFiles();\n if (overflow > 0) {\n const trimmed = valid.slice(0, valid.length - overflow);\n const overflowFiles = valid.slice(valid.length - overflow);\n overflowFiles.forEach(f => rejected.push({ name: f.name, reason: 'max_files' }));\n newList = [...existing, ...trimmed];\n }\n } else {\n newList = valid.slice(0, 1);\n }\n\n this.uploadedFiles.set(newList);\n this.rejectedFiles.set(rejected);\n this.markTouched();\n\n if (rejected.length > 0) {\n this.filesRejected.emit(rejected);\n }\n\n this.notifyChange();\n }\n\n private formatSize(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n}\n","<div class=\"file-upload\">\n <!-- Drop zone -->\n <div\n class=\"file-upload__dropzone\"\n [class.file-upload__dropzone--active]=\"isDragOver()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"'FILE_UPLOAD.DRAG_DROP' | translate\"\n (keydown.enter)=\"openFilePicker()\"\n (keydown.space)=\"openFilePicker()\"\n >\n <div class=\"file-upload__icon\">\n <ncim-icon name=\"fileUpload\" [size]=\"24\" />\n </div>\n\n <p class=\"file-upload__title\">\n {{ 'FILE_UPLOAD.DRAG_DROP' | translate }}\n </p>\n\n <p class=\"file-upload__hint\">\n {{ 'FILE_UPLOAD.SIZE_HINT' | translate: { size: maxSizeMB(), types: typesString() } }}\n </p>\n\n <ncim-button class=\"file-upload__button\" variant=\"secondary\" [fullWidth]=\"false\" size=\"small\" (click)=\"openFilePicker()\">\n {{ 'FILE_UPLOAD.BROWSE' | translate }}\n </ncim-button>\n </div>\n\n <!-- Uploaded files list -->\n @if (uploadedFiles().length > 0) {\n <ul class=\"file-upload__list\" role=\"list\">\n @for (file of uploadedFiles(); track file.id) {\n <li class=\"file-upload__item\">\n <div class=\"file-upload__item-info\">\n <span class=\"file-upload__item-check\">\n <ncim-icon name=\"feedback\" [size]=\"16\" />\n </span>\n <span class=\"file-upload__item-name\">{{ file.name }}</span>\n </div>\n <ncim-icon name=\"close\" [size]=\"16\" (click)=\"removeFile(file.id)\"></ncim-icon>\n <!-- <ncim-button\n variant=\"outline\"\n [fullWidth]=\"false\"\n size=\"small-icon-only\"\n icon=\"close\"\n [iconSize]=\"16\"\n [attr.aria-label]=\"'FILE_UPLOAD.REMOVE_FILE' | translate\"\n (click)=\"removeFile(file.id)\"\n /> -->\n </li>\n }\n </ul>\n }\n\n <!-- Required error -->\n @if (showRequiredError()) {\n <p class=\"file-upload__error\" role=\"alert\">\n {{ 'FILE_UPLOAD.ERROR_REQUIRED' | translate }}\n </p>\n }\n\n <!-- Rejected files feedback -->\n @if (rejectedFiles().length > 0) {\n <div class=\"file-upload__rejected\" role=\"alert\">\n <div class=\"file-upload__rejected-header\">\n <ncim-icon name=\"alertCircle\" [size]=\"16\" />\n <span>{{ 'FILE_UPLOAD.REJECTED_TITLE' | translate }}</span>\n <button\n type=\"button\"\n class=\"file-upload__rejected-dismiss\"\n [attr.aria-label]=\"'COMMON.DISMISS' | translate\"\n (click)=\"dismissRejected()\"\n >\n <ncim-icon name=\"close\" [size]=\"14\" />\n </button>\n </div>\n <ul class=\"file-upload__rejected-list\" role=\"list\">\n @for (rejected of rejectedFiles(); track rejected.name) {\n <li class=\"file-upload__rejected-item\">\n <span class=\"file-upload__rejected-name\">{{ rejected.name }}</span>\n <span class=\"file-upload__rejected-reason\">\n @switch (rejected.reason) {\n @case ('size') {\n {{ 'FILE_UPLOAD.REJECTED_SIZE' | translate: { size: maxSizeMB() } }}\n }\n @case ('type') {\n {{ 'FILE_UPLOAD.REJECTED_TYPE' | translate }}\n }\n @case ('duplicate') {\n {{ 'FILE_UPLOAD.REJECTED_DUPLICATE' | translate }}\n }\n @case ('max_files') {\n {{ 'FILE_UPLOAD.REJECTED_MAX_FILES' | translate: { max: maxFiles() } }}\n }\n }\n </span>\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, signal, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { timer } from 'rxjs';\nimport { Icon } from '../../atoms/icon/icon';\n\nconst COPY_FEEDBACK_MS = 2_000;\n\n@Component({\n selector: 'ncim-copy-number',\n imports: [Icon],\n templateUrl: './copy-number.html',\n styleUrl: './copy-number.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CopyNumber {\n private readonly destroyRef = inject(DestroyRef);\n\n readonly value = input.required<string>();\n readonly iconSize = input<number>(20);\n\n readonly copied = signal(false);\n\n async copy(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.value());\n this.copied.set(true);\n timer(COPY_FEEDBACK_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.copied.set(false));\n } catch {\n // Clipboard write failed silently\n }\n }\n}\n","<button type=\"button\" class=\"copy-number\" (click)=\"copy()\">\n <span class=\"copy-number__text\">{{ value() }}</span>\n @if (copied()) {\n <span class=\"copy-number__copied-indicator\">✓</span>\n }\n <ncim-icon name=\"clipboard\" [size]=\"iconSize()\" />\n</button>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { NcimButton } from '../button/button';\n\n/**\n * Dumb atom: a button that emits a `clicked` event when the user triggers PDF export.\n * Contains no service logic — the parent decides what to export and when.\n */\n@Component({\n selector: 'ncim-export-pdf-button',\n templateUrl: './export-pdf-button.html',\n styleUrl: './export-pdf-button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NcimButton, TranslatePipe],\n})\nexport class ExportPdfButton {\n /** Translation key for the button label. */\n readonly labelKey = input<string>('COMMON.EXPORT_PDF');\n\n /** When true, shows a spinner and disables the button. */\n readonly loading = input<boolean>(false);\n\n /** When true, disables the button entirely. */\n readonly disabled = input<boolean>(false);\n\n /** Button style variant. */\n readonly variant = input<'primary' | 'outline'>('primary');\n\n /** Emitted when the user clicks the export button. */\n readonly clicked = output<void>();\n}\n","<ncim-button\n [variant]=\"variant()\"\n [loading]=\"loading()\"\n [disabled]=\"disabled() || loading()\"\n [fullWidth]=\"false\"\n size=\"small\"\n icon=\"pdf\"\n iconPosition=\"start\"\n (click)=\"clicked.emit()\"\n>\n {{ labelKey() | translate }}\n</ncim-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ExportPdfOptions, ExportPdfService } from '@libs/core';\n\n/**\n * Smart organism: wraps any content region and provides PDF export capability.\n * The export button lives in the parent — wire it via a template reference variable.\n *\n * The filename can be provided in two ways:\n * 1. Static input: `[filename]=\"'violations-report'\"`\n * 2. At call time: `pdfContainer.triggerExport('violations-report')`\n * — the call-time value takes priority over the input.\n *\n * Usage:\n * ```html\n * <ncim-export-pdf-container #pdfContainer [filename]=\"reportName()\"\n * (exportComplete)=\"onPdfReady()\">\n * <ncim-page-header titleKey=\"VIOLATIONS.TITLE\" />\n * <ncim-grid-table [columns]=\"cols()\" [data]=\"rows()\" />\n * </ncim-export-pdf-container>\n *\n * <ncim-export-pdf-button\n * [loading]=\"pdfContainer.loading()\"\n * (clicked)=\"pdfContainer.triggerExport()\"\n * />\n * ```\n */\n@Component({\n selector: 'ncim-export-pdf-container',\n templateUrl: './export-pdf-container.html',\n styleUrl: './export-pdf-container.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ExportPdfContainer {\n private readonly exportService = inject(ExportPdfService);\n private readonly contentRef = viewChild.required<ElementRef<HTMLElement>>('exportContent');\n\n /**\n * Default PDF filename (without extension).\n * Can be overridden per-call by passing a name to `triggerExport()`.\n */\n readonly filename = input<string>('export');\n\n /**\n * When true, generates multi-page A4 PDF with page numbers.\n * When false (default), generates a single-page PDF whose height\n * exactly matches the content — no white space at the bottom.\n */\n readonly pageNumbers = input<boolean>(false);\n\n /** Emitted when export starts. */\n readonly exportStarted = output<void>();\n\n /** Emitted when PDF has been saved successfully. */\n readonly exportComplete = output<void>();\n\n /** Emitted with an error message if PDF generation fails. */\n readonly exportError = output<string>();\n\n /** True while PDF generation is in progress. Bind to button's [loading] input. */\n readonly loading = signal(false);\n\n /**\n * Triggers PDF export.\n *\n * @param filename - Optional filename override from the parent. When provided,\n * takes priority over the `[filename]` input. Useful when the\n * name depends on runtime data (e.g. entity name, current date).\n * @param options - Optional PDF options (orientation, scale, pageNumbers, jpegQuality).\n *\n * @example\n * // Static name from input\n * pdfContainer.triggerExport()\n *\n * // Dynamic name from parent\n * pdfContainer.triggerExport(`violation-${this.id()}-report`)\n *\n * // With options\n * pdfContainer.triggerExport('report', { orientation: 'landscape', jpegQuality: 0.85 })\n */\n async triggerExport(filename?: string, options?: ExportPdfOptions): Promise<void> {\n if (this.loading()) {\n return;\n }\n\n const resolvedFilename = filename ?? this.filename();\n\n // Merge component-level defaults with call-time overrides.\n // pageNumbers input on the component sets the default; caller can still override.\n const resolvedOptions: ExportPdfOptions = {\n pageNumbers: this.pageNumbers(),\n ...options,\n };\n\n this.loading.set(true);\n this.exportStarted.emit();\n\n try {\n await this.exportService.generate(this.contentRef().nativeElement, resolvedFilename, resolvedOptions);\n this.exportComplete.emit();\n } catch (err) {\n const message = err instanceof Error ? err.message : 'PDF export failed';\n this.exportError.emit(message);\n } finally {\n this.loading.set(false);\n }\n }\n}\n","<div #exportContent class=\"ncim-export-pdf-container\">\n <ng-content />\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '../../templates/auth-layout/auth-layout';\nimport { Icon } from '../../atoms/icon/icon';\n\nexport type StatusPageVariant = 'error' | 'warning' | 'info' | 'success' | 'neutral';\n\n/**\n * Generic full-page status component for error, maintenance, permission, and empty states.\n *\n * Place action buttons (anchors, router links, retry buttons) via `ng-content`.\n *\n * @example\n * <ncim-status-page icon=\"shield\" iconVariant=\"error\" code=\"403\"\n * titleKey=\"STATUS_PAGES.403.TITLE\" subtitleKey=\"STATUS_PAGES.403.SUBTITLE\">\n * <ncim-button label=\"Back to Home\" (click)=\"goHome()\" />\n * </ncim-status-page>\n */\n@Component({\n selector: 'ncim-status-page',\n imports: [AuthLayout, Icon, TranslateModule],\n templateUrl: './status-page.html',\n styleUrl: './status-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusPage {\n /** Icon name from the ncim icon set. */\n readonly icon = input<string>('warning');\n\n /** Background/foreground color variant for the icon wrapper. */\n readonly iconVariant = input<StatusPageVariant>('neutral');\n\n /** Optional image URL. When provided, renders an <img> instead of the icon wrapper. */\n readonly imageSrc = input<string | undefined>(undefined);\n\n /** Alt text for the image (accessibility). Defaults to empty string for decorative images. */\n readonly imageAlt = input<string>('');\n\n /** Optional HTTP status code displayed as a badge (e.g. '403', '404'). */\n readonly code = input<string | undefined>(undefined);\n\n /** Required i18n key for the page title. */\n readonly titleKey = input.required<string>();\n\n /** Optional i18n key for the descriptive subtitle. */\n readonly subtitleKey = input<string | undefined>(undefined);\n}\n","<ncim-auth-layout width=\"small\">\n <section class=\"ncim-status-page\" role=\"main\" aria-labelledby=\"ncim-status-page-title\">\n @if (code()) {\n <span class=\"ncim-status-page__code-badge\">{{ code() }}</span>\n }\n\n @if (imageSrc()) {\n <img class=\"ncim-status-page__image\" [src]=\"imageSrc()!\" [alt]=\"imageAlt()\" aria-hidden=\"true\" />\n } @else {\n <div class=\"ncim-status-page__icon-wrapper\" [class]=\"'ncim-status-page__icon-wrapper--' + iconVariant()\">\n <ncim-icon [name]=\"icon()\" [size]=\"56\" />\n </div>\n }\n\n <h1 id=\"ncim-status-page-title\" class=\"ncim-status-page__title\">\n {{ titleKey() | translate }}\n </h1>\n\n @if (subtitleKey()) {\n <p class=\"ncim-status-page__subtitle\">\n {{ subtitleKey()! | translate }}\n </p>\n }\n\n <div class=\"ncim-status-page__actions\">\n <ng-content />\n </div>\n </section>\n</ncim-auth-layout>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '../../atoms/icon/icon';\nimport { NcimButton } from '../../atoms/button/button';\n\n/**\n * Inline error state for data-loading failures inside tables, cards, and sections.\n *\n * @example\n * @if (tableError()) {\n * <ncim-api-error-state (retry)=\"loadData()\" />\n * }\n */\n@Component({\n selector: 'ncim-api-error-state',\n imports: [Icon, NcimButton, TranslateModule],\n templateUrl: './api-error-state.html',\n styleUrl: './api-error-state.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ApiErrorState {\n /** Custom i18n title key. Defaults to STATUS_PAGES.API_ERROR.TITLE. */\n readonly titleKey = input<string>('STATUS_PAGES.API_ERROR.TITLE');\n\n /** Custom i18n subtitle key. Defaults to STATUS_PAGES.API_ERROR.SUBTITLE. */\n readonly subtitleKey = input<string>('STATUS_PAGES.API_ERROR.SUBTITLE');\n\n /** Show the retry button. */\n readonly retryable = input<boolean>(true);\n\n /** Emitted when the user clicks retry. */\n readonly retry = output<void>();\n}\n","<div class=\"ncim-api-error-state\" role=\"alert\" aria-live=\"assertive\">\n <div class=\"ncim-api-error-state__icon-wrapper\">\n <ncim-icon name=\"alert-01\" [size]=\"32\" />\n </div>\n\n <p class=\"ncim-api-error-state__title\">{{ titleKey() | translate }}</p>\n <p class=\"ncim-api-error-state__subtitle\">{{ subtitleKey() | translate }}</p>\n\n @if (retryable()) {\n <ncim-button variant=\"outline\" size=\"small\" [fullWidth]=\"false\" (click)=\"retry.emit()\">\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </ncim-button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ncim-stamp',\n templateUrl: './stamp.html',\n styleUrl: './stamp.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Stamp {\n readonly color = input<string>('');\n readonly title = input<string>('Text Here');\n readonly id = input<string>('id');\n readonly date = input<string>('date');\n}\n","<div class=\"d-flex flex-column align-items-center stamp\" [style.color]=\"color()\">\n <svg width=\"190\" height=\"40\" viewBox=\"0 0 94 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M33.2342 1.98749C34.3705 1.6819 35.4967 1.3299 36.6455 1.07751C41.4755 0.0192528 46.3665 -0.226352 51.2802 0.195817C56.9043 0.679104 62.2923 2.12218 67.4194 4.49787C73.0741 7.11804 78.0577 10.6878 82.3682 15.1947C86.1036 19.1006 89.1072 23.5136 91.4013 28.4099C91.5561 28.7403 91.8283 29.0561 91.5019 29.4817C91.3686 29.656 91.4296 29.9808 91.3957 30.2898C91.6815 30.2717 91.9175 30.257 92.2361 30.2366C92.7376 31.6073 93.2448 32.9892 93.7779 34.447C93.0878 34.447 92.5038 34.4764 91.9277 34.4266C91.7786 34.4142 91.5911 34.1799 91.5222 34.0067C90.8365 32.2796 90.2537 30.506 89.4765 28.823C88.8101 27.3799 87.9652 26.0138 87.1361 24.6522C83.221 18.2201 78.0543 13.0205 71.67 9.04439C66.6559 5.92283 61.2373 3.83802 55.4279 2.76392C52.2392 2.17424 49.0278 1.98409 45.7893 1.9807C43.6364 1.97844 41.515 2.24215 39.4129 2.59641C37.3074 2.9518 35.2064 3.42151 33.1653 4.04627C31.1083 4.6767 29.0988 5.49274 27.1198 6.34613C24.4574 7.49606 21.995 9.0161 19.6161 10.6776C18.0358 11.7811 16.5572 13.0069 15.1532 14.3176C14.681 14.759 14.2834 14.9616 13.7073 14.6028C13.617 14.5462 13.4984 14.5337 13.3651 14.493C12.9957 14.9333 13.2295 15.4324 13.1911 15.893C13.1798 16.0243 13.1742 16.1896 13.0951 16.2756C12.3778 17.0701 11.6447 17.85 10.8755 18.6796C10.5095 18.2846 10.1119 18.4634 9.88373 18.7894C9.77529 18.9433 9.98313 19.3202 10.0724 19.6994C8.13967 22.1362 6.30638 24.8242 4.89781 27.7704C3.9998 29.6492 3.23509 31.5937 2.42406 33.5132C2.2919 33.8268 2.06485 33.9422 1.80731 34.1335C1.23462 34.5602 0.664187 34.2659 2.85882e-07 34.4628C0.320798 33.5359 0.591895 32.6881 0.907044 31.8563C3.29269 25.5656 6.80678 19.988 11.4572 15.1302C14.8098 11.6272 18.6006 8.6924 22.8139 6.30426C23.0387 6.17636 23.2838 6.05526 23.5346 6.00659C24.0271 5.91151 24.5738 5.95 24.733 5.29128C24.7477 5.22903 24.8855 5.19281 24.9691 5.15093C27.5299 3.87989 30.1798 2.83522 32.919 2.01579C33.0252 1.98409 33.1416 1.98183 33.2523 1.96599C33.2251 2.01126 33.1924 2.05427 33.1721 2.10294C33.1009 2.26818 33.0342 2.43456 32.9653 2.60094C33.1336 2.64508 33.3279 2.76279 33.4646 2.71638C33.6623 2.64847 33.8182 2.45946 33.9921 2.32251C33.8871 2.20367 33.8012 2.04182 33.6702 1.97957C33.5505 1.92411 33.3799 1.97957 33.2319 1.98409L33.2342 1.98749ZM27.1492 5.83681C27.5875 5.4701 28.0314 5.10905 28.4482 4.71971C28.473 4.69707 28.3104 4.353 28.1827 4.30886C27.8235 4.18436 26.8295 4.70273 26.6544 5.05359C26.4511 5.46218 26.6025 5.71684 27.1492 5.83681ZM36.8409 1.99315C37.4294 2.41645 38.0292 2.4572 38.4415 2.04295C38.5917 1.89242 38.6855 1.56872 38.6335 1.36952C38.5974 1.23596 38.2608 1.10806 38.0574 1.10693C37.478 1.10467 37.1086 1.46119 36.8409 1.99315ZM1.75761 31.4477C2.33934 31.6831 2.77761 31.5642 2.85555 31.1059C2.88718 30.9236 2.71661 30.5999 2.54831 30.5128C2.27269 30.3702 1.86831 30.8614 1.75761 31.4477ZM48.62 1.49967C48.8019 1.28237 48.9589 1.15673 49.0154 0.994883C49.0357 0.936028 48.7929 0.691554 48.707 0.709664C48.5376 0.74475 48.3941 0.904337 48.2405 1.01186C48.3433 1.14428 48.4461 1.27671 48.62 1.49967Z\"\n />\n <path\n d=\"M87.4625 34.4062C86.4888 34.5035 86.4944 34.5013 86.168 33.6807C85.9669 33.1748 85.7579 32.67 85.5332 32.1743C85.3231 31.7091 85.0248 31.2586 85.689 30.678C84.6521 30.7493 84.5561 30.0283 84.2533 29.5009C83.5609 28.2944 82.8629 27.0913 82.219 25.9764C82.2969 25.6719 82.3613 25.4207 82.4257 25.1683C82.1738 25.1151 81.9219 25.063 81.574 24.9895C80.6783 23.8735 79.7249 22.6149 78.6981 21.4208C75.4664 17.6609 71.6779 14.5654 67.3222 12.2112C65.4449 11.1971 63.4489 10.4037 61.5004 9.52313C61.1661 9.3726 60.808 9.29337 60.991 8.78631C61.0181 8.71161 60.8905 8.58032 60.834 8.47506C60.7346 8.54071 60.6092 8.58711 60.5437 8.67766C60.4691 8.77839 60.4488 8.91874 60.3776 9.11794C59.7688 8.80103 58.9725 8.94251 58.637 8.33585C58.2089 8.30869 57.8587 8.3268 57.5266 8.25889C55.8413 7.91594 54.1605 7.5515 52.4854 7.19497C52.5814 6.93805 52.6898 6.65057 52.8005 6.35516C68.2078 8.18532 82.2834 19.4945 87.4625 34.4062Z\"\n />\n <path\n d=\"M12.885 24.032C12.8342 23.749 12.7901 23.5 12.745 23.2499C12.5891 23.4423 12.4479 23.6483 12.2728 23.8215C12.1327 23.9596 11.952 24.0558 11.6899 24.0773C12.013 23.6381 12.3281 23.1933 12.6602 22.7621C15.2741 19.3723 18.3228 16.4341 21.7973 13.9384C22.0707 13.7415 22.3022 13.6317 22.6547 13.7641C23.0703 13.9203 23.5086 13.9475 23.8554 13.4438C23.6961 13.2989 23.5267 13.145 23.2816 12.922C32.0674 7.27992 41.6258 5.10456 51.9805 6.25449C51.4971 6.67439 51.1096 7.1441 50.3077 7.07393C43.7177 6.48991 37.3481 7.47572 31.2078 9.92159C26.7347 11.7031 22.6942 14.2033 19.0649 17.3746C18.8604 17.5535 18.5645 17.6327 18.3024 17.7379C17.9636 17.8738 17.6292 17.9836 17.7072 18.4725C17.7241 18.5766 17.6021 18.7226 17.5129 18.82C16.4115 20.0288 15.3644 21.2953 14.1727 22.4078C13.643 22.9024 13.486 23.6313 12.8873 24.0343L12.885 24.032Z\"\n />\n <path\n d=\"M11.2406 24.711C11.5094 25.5622 11.8799 24.9363 12.3283 24.8593C12.0392 25.2928 11.7929 25.6606 11.5501 26.0239C11.34 25.9889 11.1468 25.9572 10.7978 25.8983C11.3388 26.703 10.7978 27.192 10.4905 27.7432C10.1426 28.3668 9.88846 29.0708 9.42985 29.5971C8.91929 30.1834 8.84361 30.9134 8.51377 31.5506C8.17039 32.2161 7.90832 32.9258 7.62819 33.623C7.27915 34.4934 7.28819 34.4956 6.26367 34.4039C7.50055 30.9666 9.15198 27.7749 11.2394 24.7099L11.2406 24.711Z\"\n />\n </svg>\n\n <div class=\"fsc-8 id-text\">{{ id() }}</div>\n\n <svg class=\"top-line\" width=\"75\" height=\"3\" viewBox=\"0 0 61 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M60.8533 1.94789L1.61584e-08 1.94789L3.4757e-10 0.0418993C0.198804 0.0328447 0.41455 0.0136037 0.630298 0.0136037C15.0865 0.0158672 29.5439 0.0203952 44.0001 0.0215269C49.3949 0.0215269 54.7909 0.0237902 60.1857 2.1931e-05C60.7392 -0.00224172 60.9165 0.1664 60.8612 0.700619C60.8205 1.08883 60.8533 1.48497 60.8533 1.94789ZM43.842 1.013C44.0961 0.773057 44.2622 0.614602 44.4293 0.457279C44.3006 0.348624 44.1447 0.13018 44.0464 0.153948C43.8239 0.207144 43.6285 0.379182 43.4229 0.502551C43.5347 0.639501 43.6465 0.77645 43.8408 1.01413L43.842 1.013Z\"\n />\n </svg>\n\n <div class=\"fsc-20 fw-bold title\">{{ title() }}</div>\n\n <svg class=\"bottom-line\" width=\"75\" height=\"3\" viewBox=\"0 0 61 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1.66277e-08 2.00446L3.56782e-10 0.0430098C0.215748 0.0328234 0.414551 0.0135813 0.613355 0.0135813C20.4836 0.0124493 40.355 0.0147133 60.2252 -4.9959e-07C60.7934 -5.04303e-07 60.9109 0.181089 60.8951 0.705122C60.8555 1.99766 60.8793 2.00446 59.5859 2.00446C43.0287 2.00446 26.4726 2.00219 9.91535 2.00106C6.85196 2.00106 3.78857 2.00333 0.725183 2.00446C0.503788 2.00446 0.282392 2.00446 1.66277e-08 2.00446ZM20.9072 1.93315C21.6866 1.31857 21.7521 1.05599 21.3229 0.368975C20.5141 0.702862 20.3492 1.28235 20.9072 1.93315ZM9.86001 1.55852C10.2395 1.35932 10.7467 1.33442 10.6586 0.771903C10.6428 0.670039 10.191 0.511587 10.0351 0.584023C9.64991 0.762851 9.5618 1.11032 9.86001 1.55852ZM15.2288 1.01298C15.2898 1.03222 15.3508 1.05033 15.4118 1.06957C15.4853 0.911117 15.6581 0.702865 15.6084 0.605528C15.5338 0.458392 15.3068 0.388218 15.1441 0.286354C15.1046 0.327099 15.0651 0.367841 15.0267 0.409719C15.0944 0.611183 15.1611 0.811517 15.2288 1.01298Z\"\n />\n </svg>\n\n <div class=\"fsc-8 date-text\">{{ date() }}</div>\n\n <svg class=\"bottom-border\" width=\"190\" height=\"40\" viewBox=\"0 0 94 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M31.5929 32.0177C31.8674 31.8094 32.0786 31.6815 32.248 31.5095C32.3678 31.3884 32.4276 31.2096 32.5146 31.0568C32.3271 30.9538 32.1249 30.7455 31.9555 30.7693C31.6347 30.8157 31.2924 30.9413 31.0304 31.1315C30.4916 31.5219 30.007 31.5186 29.3835 31.2775C23.3696 28.9527 18.0053 25.5946 13.2995 21.1884C10.5434 18.6079 8.10914 15.7478 6.0217 12.5956C5.98104 12.5345 5.94941 12.4666 5.93359 12.4383C6.49273 12.1123 7.04057 11.7943 7.5534 11.4944C8.73041 12.9929 9.91081 14.6227 11.2211 16.1394C17.1062 22.9495 24.358 27.6919 32.9382 30.3901C33.4928 30.5644 34.0621 30.6957 34.6145 30.8757C34.9455 30.9832 35.3657 30.9153 35.4278 31.5095C35.4594 31.8162 35.8886 31.7472 36.188 31.5751C36.3664 31.4721 36.6161 31.3827 36.8058 31.4223C40.4069 32.1818 44.043 32.5417 47.7231 32.493C47.9445 32.4897 48.1829 32.6357 48.3885 32.7545C48.7375 32.956 49.0334 33.0239 49.2831 32.6119C49.3362 32.5247 49.4672 32.4444 49.57 32.4331C50.6532 32.3165 51.7388 32.2135 52.8231 32.1128C52.9304 32.1026 53.0705 32.0992 53.1462 32.1569C53.4546 32.3946 53.6387 32.2576 53.9222 32.0584C54.1922 31.8694 54.5898 31.8468 54.9366 31.7868C60.5121 30.8338 65.7364 28.9154 70.6139 26.0519C77.4071 22.0633 82.8573 16.6917 87.0152 10.0004C87.5009 9.21828 87.9448 8.41129 88.4317 7.57488C88.8395 7.80464 89.2145 7.69825 89.3466 7.25684C89.4042 7.0633 89.1851 6.78713 89.0812 6.52341C89.8775 4.51556 90.71 2.40245 91.5628 0.298397C91.6148 0.171633 91.8272 0.0426093 91.9717 0.0335547C92.5139 0.00186374 93.0584 0.0211064 93.7282 0.0211063C93.3792 1.03182 93.0539 1.97349 92.7161 2.95139C92.41 2.85744 92.1502 2.77822 91.8396 2.68201C91.6442 3.25471 91.5967 3.7663 91.8949 4.29712C91.974 4.4386 91.9819 4.68307 91.9164 4.83587C90.0549 9.16735 87.6048 13.14 84.59 16.7585C80.6094 21.5359 75.8957 25.4294 70.4501 28.4253C65.9555 30.8972 61.2034 32.6866 56.1463 33.5524C53.615 33.9859 51.0407 34.1647 48.4856 34.4534C48.2823 34.476 48.0744 34.4568 47.8745 34.4568C47.6271 33.6362 47.5096 33.6226 46.7777 34.0946C46.4693 34.2938 46.0661 34.4647 45.7114 34.4545C40.9909 34.3289 36.3676 33.5909 31.8685 32.132C31.803 32.1105 31.7409 32.0788 31.5906 32.0154L31.5929 32.0177ZM80.2943 19.6616C80.9246 19.8891 81.3199 19.777 81.3956 19.2971C81.425 19.1115 81.2487 18.7901 81.0771 18.6995C80.815 18.5626 80.3869 19.0991 80.2943 19.6616ZM84.6194 14.0613C84.3641 14.445 84.1811 14.6612 84.0783 14.9113C84.0501 14.9815 84.3347 15.2645 84.3483 15.2565C84.6115 15.0811 84.8656 14.8864 85.0882 14.6635C85.1051 14.6465 84.8679 14.3783 84.6194 14.0625L84.6194 14.0613ZM28.9565 29.5243C28.5148 29.522 28.1274 29.5662 28.0144 30.0438C28.0042 30.0857 28.3499 30.2928 28.5205 30.2815C28.9339 30.252 29.1926 30.0472 28.9565 29.5243ZM60.8002 31.0183L60.8465 31.3035C61.1119 31.3318 61.3785 31.3601 61.6439 31.3884L61.7196 30.5622C61.662 30.5305 61.6033 30.4999 61.5457 30.4682C61.2972 30.6516 61.0487 30.8338 60.8002 31.0172L60.8002 31.0183Z\"\n />\n <path\n d=\"M80.6059 10.7405L80.6059 11.5713C80.746 11.6018 80.885 11.6324 81.051 11.6698C81.0205 11.7377 81.0024 11.8112 80.9606 11.8644C79.1364 14.222 77.0828 16.36 74.8135 18.2875C72.5115 20.2422 70.0411 21.9557 67.3787 23.3852C66.9483 23.6161 66.5168 23.8448 66.0752 24.0519C65.7115 24.2217 65.394 24.5193 64.9016 24.2239C64.7276 24.1198 64.2441 24.3088 64.0431 24.5069C62.4447 26.0937 60.2873 26.3778 58.2891 27.0218C57.731 27.2017 57.1199 27.2074 56.5427 27.3376C55.7114 27.5254 54.8981 27.8095 54.0599 27.9555C50.8825 28.5101 47.679 28.7082 44.4586 28.4909C43.1404 28.4015 41.8199 28.2883 40.513 28.0936C39.1587 27.891 37.8088 27.6273 36.4805 27.2979C35.1702 26.9742 33.8723 26.5792 32.5981 26.1333C31.324 25.6885 30.06 25.1962 28.8344 24.6291C23.7638 22.2851 19.2986 19.0866 15.4603 15.0143C13.1413 12.5537 11.1194 9.87129 9.44875 6.92856C9.294 6.65579 9.21606 6.29926 9.22396 5.98575C9.233 5.62923 9.11214 5.44361 8.82748 5.25799C8.57898 5.09614 8.31353 4.8743 8.19267 4.61512C7.50476 3.13809 6.85752 1.64182 6.18994 0.137632C7.14104 -0.114764 7.22802 -0.0683602 7.53187 0.688828C11.3238 10.1395 17.6426 17.3787 26.5233 22.3315C33.2262 26.0699 40.4566 27.7892 48.1128 27.5492C56.9652 27.2719 64.9705 24.4627 72.1026 19.1805C72.4866 18.8953 72.9475 18.7063 73.3044 18.3939C74.1313 17.6684 74.9547 16.9327 75.707 16.1325C77.2523 14.4914 78.7501 12.8061 80.266 11.1378C80.3518 11.0427 80.432 10.942 80.6037 10.7383L80.6059 10.7405Z\"\n />\n <path\n d=\"M6.85423 10.2731C6.30525 10.6387 5.78113 10.9873 5.21974 11.3597C3.03176 7.8601 1.28771 4.11491 0 0.0256371C0.672094 0.0256371 1.27867 0.0120535 1.88299 0.0380854C1.98578 0.0426127 2.13376 0.198804 2.17216 0.31425C3.3311 3.82855 4.94864 7.12668 6.85423 10.289C6.86326 10.3037 6.861 10.3252 6.85197 10.272L6.85423 10.2731Z\"\n />\n <path\n d=\"M87.5858 0.0369151C86.8267 1.71767 86.1365 3.27732 85.417 4.82226C85.1154 5.46853 84.7664 6.09329 84.4026 6.70787C84.2682 6.93536 84.0265 7.09609 83.8458 7.29755C83.7384 7.41639 83.5803 7.55221 83.5724 7.6869C83.5272 8.47012 83.1386 8.95 82.4496 9.31672C81.878 9.62117 81.3935 10.0886 80.7417 10.581C81.3799 9.62344 81.9436 8.80061 82.4846 7.96306C83.9982 5.62019 85.2622 3.1449 86.2258 0.528128C86.4822 -0.16681 86.9408 0.0516287 87.5869 0.0369151L87.5858 0.0369151Z\"\n />\n </svg>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n inject,\n ElementRef,\n signal,\n afterNextRender,\n} from '@angular/core';\n\nexport interface MultiSegmentBarItem {\n label: string;\n value: number;\n maxValue: number;\n color?: string;\n}\n\n@Component({\n selector: 'ncim-multi-segment-bar-chart',\n templateUrl: './multi-segment-bar-chart.html',\n styleUrl: './multi-segment-bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultiSegmentBarChart {\n private readonly el = inject(ElementRef);\n\n /** Data items for the bar chart */\n readonly data = input<MultiSegmentBarItem[]>([]);\n\n /** Bar height in pixels */\n readonly barHeight = input<number>(44);\n\n /** Number of segments to divide the bar into */\n readonly segmentCount = input<number>(3);\n\n /** Gap between bar segments in pixels */\n readonly segmentGap = input<number>(4);\n\n /** Gap between bar rows in pixels */\n readonly rowGap = input<number>(24);\n\n /** Default bar color if not provided in item */\n readonly defaultColor = input<string>('#66BB9B');\n\n /** Track background color */\n readonly trackColor = input<string>('#F2F4F7');\n\n /** Manual override for RTL. Detected from parent if not provided. */\n readonly isRtl = input<boolean | null>(null);\n\n private readonly detectedIsRtl = signal<boolean>(false);\n\n constructor() {\n afterNextRender(() => {\n const dir = window.getComputedStyle(this.el.nativeElement).direction;\n this.detectedIsRtl.set(dir === 'rtl');\n });\n }\n\n readonly computedIsRtl = computed(() => {\n const manual = this.isRtl();\n return manual !== null ? manual : this.detectedIsRtl();\n });\n\n readonly computedBars = computed(() => {\n const items = this.data();\n const sc = this.segmentCount();\n const segmentWidth = 100 / sc;\n\n return items.map(item => {\n const percentage = item.maxValue > 0 ? Math.min(100, (item.value / item.maxValue) * 100) : 0;\n\n const segments = Array.from({ length: sc }, (_, i) => {\n const segStart = i * segmentWidth;\n const segEnd = (i + 1) * segmentWidth;\n\n let fill = 0;\n if (percentage >= segEnd) {\n fill = 100;\n } else if (percentage > segStart) {\n fill = ((percentage - segStart) / segmentWidth) * 100;\n }\n\n return { fill };\n });\n\n return {\n ...item,\n color: item.color ?? this.defaultColor(),\n segments,\n };\n });\n });\n}\n","<div class=\"multi-segment-bar-chart\" [style.row-gap.px]=\"rowGap()\">\n @for (bar of computedBars(); track bar.label) {\n <div class=\"multi-segment-bar-chart__item\">\n <!-- Segmented Bar -->\n <div class=\"multi-segment-bar-chart__bar\" [style.height.px]=\"barHeight()\" [style.gap.px]=\"segmentGap()\">\n @for (seg of bar.segments; track $index; let first = $first; let last = $last) {\n <div\n class=\"multi-segment-bar-chart__segment\"\n [class.multi-segment-bar-chart__segment--first]=\"first\"\n [class.multi-segment-bar-chart__segment--last]=\"last\"\n [style.background-color]=\"trackColor()\"\n >\n <div class=\"multi-segment-bar-chart__fill\" [style.width.%]=\"seg.fill\" [style.background-color]=\"bar.color\"></div>\n </div>\n }\n </div>\n\n <!-- Info Row -->\n <div class=\"multi-segment-bar-chart__row\">\n <div class=\"multi-segment-bar-chart__meta\">\n <span class=\"multi-segment-bar-chart__marker\" [style.background-color]=\"bar.color\" [attr.aria-hidden]=\"true\"></span>\n <span class=\"multi-segment-bar-chart__label\">{{ bar.label }}</span>\n </div>\n <span class=\"multi-segment-bar-chart__value\">{{ bar.value }}</span>\n </div>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './ncim-sdk-ui-entry';\n"],"names":["i1","i1.TabsInkbarRtlDirective","PrimeTabs","PrimeTabList","PrimeTab","i2","i3","i4","COPY_FEEDBACK_MS","ENVIRONMENT","PrimeNgTooltip","LocalizedDatePipe","FaqAccordion","i5"],"mappings":"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"}
|