@ncim/sdk 0.3.0 → 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ncim-sdk-ncim-sdk-DmQ2diWe.mjs","sources":["../../../../libs/core/src/lib/enums/entity-type.enum.ts","../../../../libs/core/src/lib/enums/package-type.enum.ts","../../../../libs/core/src/lib/enums/button.enum.ts","../../../../libs/core/src/lib/enums/input-type.enum.ts","../../../../libs/core/src/lib/enums/layout-width.enum.ts","../../../../libs/core/src/lib/enums/language.enum.ts","../../../../libs/core/src/lib/enums/trend-direction.enum.ts","../../../../libs/core/src/lib/enums/marker-status.enum.ts","../../../../libs/core/src/lib/enums/map-legend-status.enum.ts","../../../../libs/core/src/lib/enums/http-error-key.enum.ts","../../../../libs/core/src/lib/constants/api-endpoints.constants.ts","../../../../libs/core/src/lib/constants/route-segments.constants.ts","../../../../libs/core/src/lib/constants/routes.constants.ts","../../../../libs/core/src/lib/constants/regex.constants.ts","../../../../libs/core/src/lib/constants/validation.constants.ts","../../../../libs/core/src/lib/constants/registration.constants.ts","../../../../libs/core/src/lib/constants/package.constants.ts","../../../../libs/core/src/lib/constants/entity-details.constants.ts","../../../../libs/core/src/lib/constants/error-keys.constants.ts","../../../../libs/core/src/lib/constants/i18n.constants.ts","../../../../libs/core/src/lib/constants/primeng-locale.constants.ts","../../../../libs/core/src/lib/constants/assets.constants.ts","../../../../libs/core/src/lib/constants/icons.constants.ts","../../../../libs/core/src/lib/constants/generated-icons.constants.ts","../../../../libs/core/src/lib/constants/phone.constants.ts","../../../../libs/core/src/lib/constants/storage-keys.constants.ts","../../../../libs/core/src/lib/constants/chart.constants.ts","../../../../libs/core/src/lib/constants/map-legend.constants.ts","../../../../libs/core/src/lib/constants/ui.constants.ts","../../../../libs/core/src/lib/constants/http.constants.ts","../../../../libs/core/src/lib/validators/identity-number.validator.ts","../../../../libs/core/src/lib/validators/id-number.validator.ts","../../../../libs/core/src/lib/validators/saudi-mobile.validator.ts","../../../../libs/core/src/lib/validators/saudi-mobile-05.validator.ts","../../../../libs/core/src/lib/validators/password-match.validator.ts","../../../../libs/core/src/lib/validators/password-strength.validator.ts","../../../../libs/core/src/lib/validators/arabic-only.validator.ts","../../../../libs/core/src/lib/validators/english-only.validator.ts","../../../../libs/core/src/lib/validators/numbers-only.validator.ts","../../../../libs/core/src/lib/validators/letters-only.validator.ts","../../../../libs/core/src/lib/validators/alphanumeric.validator.ts","../../../../libs/core/src/lib/validators/phone.validator.ts","../../../../libs/core/src/lib/validators/url.validator.ts","../../../../libs/core/src/lib/validators/iban.validator.ts","../../../../libs/core/src/lib/utils/date.utils.ts","../../../../libs/core/src/lib/validators/date-min.validator.ts","../../../../libs/core/src/lib/validators/date-max.validator.ts","../../../../libs/core/src/lib/validators/no-whitespace.validator.ts","../../../../libs/core/src/lib/validators/cr-number.validator.ts","../../../../libs/core/src/lib/validators/confirmed.validator.ts","../../../../libs/core/src/lib/validators/email.validator.ts","../../../../libs/core/src/lib/validators/pattern.validator.ts","../../../../libs/core/src/lib/validators/min-selcted.validator.ts","../../../../libs/core/src/lib/environments/environment.token.ts","../../../../libs/core/src/lib/environments/environment.ts","../../../../libs/core/src/lib/environments/environment.provider.ts","../../../../libs/core/src/lib/utils/form.utils.ts","../../../../libs/core/src/lib/services/seo.service.ts","../../../../libs/core/src/lib/services/oidc-auth.service.ts","../../../../libs/core/src/lib/services/http-cache.service.ts","../../../../libs/core/src/lib/services/loading.service.ts","../../../../libs/core/src/lib/interceptors/loading.interceptor.ts","../../../../libs/core/src/lib/interceptors/retry.interceptor.ts","../../../../libs/core/src/lib/interceptors/skip-auth.token.ts","../../../../libs/core/src/lib/interceptors/skip-error.token.ts","../../../../libs/core/src/lib/services/api.service.ts","../../../../libs/core/src/lib/services/auth.service.ts","../../../../libs/core/src/lib/models/auth.models.ts","../../../../libs/core/src/lib/utils/http-params.utils.ts","../../../../libs/core/src/lib/utils/error-body-parser.ts","../../../../libs/core/src/lib/utils/api-error.utils.ts","../../../../libs/core/src/lib/pipes/localized-date.pipe.ts","../../../../libs/core/src/lib/pipes/english-number.pipe.ts","../../../../libs/core/src/lib/pipes/replace.pipe.ts","../../../../libs/core/src/lib/services/language.service.ts","../../../../libs/core/src/lib/services/toast.service.ts","../../../../libs/core/src/lib/services/global-error-handler.ts","../../../../libs/core/src/lib/interceptors/base-url.interceptor.ts","../../../../libs/core/src/lib/interceptors/auth.interceptor.ts","../../../../libs/core/src/lib/interceptors/cache.interceptor.ts","../../../../libs/core/src/lib/interceptors/error.interceptor.ts","../../../../libs/core/src/lib/services/connectivity.service.ts","../../../../libs/core/src/lib/interceptors/connectivity.interceptor.ts","../../../../libs/core/src/lib/guards/auth.guard.ts","../../../../libs/core/src/lib/guards/permission.guard.ts","../../../../libs/core/src/lib/directives/arabic-only.directive.ts","../../../../libs/core/src/lib/directives/english-only.directive.ts","../../../../libs/core/src/lib/directives/numbers-only.directive.ts","../../../../libs/core/src/lib/directives/phone-only.directive.ts","../../../../libs/core/src/lib/directives/alpha-numeric.directive.ts","../../../../libs/core/src/lib/directives/trim-input.directive.ts","../../../../libs/core/src/lib/directives/prevent-paste.directive.ts","../../../../libs/core/src/lib/directives/to-uppercase.directive.ts","../../../../libs/core/src/lib/directives/autofocus.directive.ts","../../../../libs/core/src/lib/directives/select-on-click.directive.ts","../../../../libs/core/src/lib/directives/no-whitespace.directive.ts","../../../../libs/core/src/lib/directives/email-chars.directive.ts","../../../../libs/core/src/lib/directives/has-permission.directive.ts","../../../../libs/core/src/lib/directives/img-fallback.directive.ts","../../../../libs/core/src/lib/utils/plural-translate-compiler.ts","../../../../libs/core/src/lib/theme/ncim-preset.ts","../../../../libs/core/src/lib/services/export-pdf.service.ts","../../../../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/shared-state/src/lib/user/user.actions.ts","../../../../libs/shared-state/src/lib/user/user.reducer.ts","../../../../libs/shared-state/src/lib/user/user.selectors.ts","../../../../libs/features/src/lib/auth/login-form/login-form.ts","../../../../libs/features/src/lib/auth/login-form/login-form.html","../../../../libs/features/src/lib/auth/forgot-password-form/forgot-password-form.ts","../../../../libs/features/src/lib/auth/forgot-password-form/forgot-password-form.html","../../../../libs/features/src/lib/auth/otp-verification-form/otp-verification-form.ts","../../../../libs/features/src/lib/auth/otp-verification-form/otp-verification-form.html","../../../../libs/features/src/lib/auth/reset-password-form/reset-password-form.ts","../../../../libs/features/src/lib/auth/reset-password-form/reset-password-form.html","../../../../libs/features/src/lib/auth/sso-login-button/sso-login-button.ts","../../../../libs/features/src/lib/auth/sso-login-button/sso-login-button.html","../../../../libs/features/src/lib/auth/auth-link/auth-link.ts","../../../../libs/features/src/lib/auth/auth-link/auth-link.html","../../../../libs/features/src/lib/auth/login-header/login-header.ts","../../../../libs/features/src/lib/auth/login-header/login-header.html","../../../../libs/features/src/lib/auth/auth-header/auth-header.ts","../../../../libs/features/src/lib/auth/auth-header/auth-header.html","../../../../libs/features/src/lib/auth/auth-back-link/auth-back-link.ts","../../../../libs/features/src/lib/auth/auth-back-link/auth-back-link.html","../../../../libs/features/src/lib/auth/index.ts","../../../../libs/features/src/lib/register/step-entity-type/step-entity-type.ts","../../../../libs/features/src/lib/register/step-entity-type/step-entity-type.html","../../../../libs/features/src/lib/register/step-account-verification/step-account-verification.ts","../../../../libs/features/src/lib/register/step-account-verification/step-account-verification.html","../../../../libs/features/src/lib/register/step-entity-details/step-entity-details.ts","../../../../libs/features/src/lib/register/step-entity-details/step-entity-details.html","../../../../libs/features/src/lib/register/step-inspection-details/step-inspection-details.ts","../../../../libs/features/src/lib/register/step-inspection-details/step-inspection-details.html","../../../../libs/features/src/lib/register/step-responsible-user/step-responsible-user.ts","../../../../libs/features/src/lib/register/step-responsible-user/step-responsible-user.html","../../../../libs/features/src/lib/register/step-package-selection/step-package-selection.ts","../../../../libs/features/src/lib/register/step-package-selection/step-package-selection.html","../../../../libs/features/src/lib/register/step-session-scheduling/step-session-scheduling.ts","../../../../libs/features/src/lib/register/step-session-scheduling/step-session-scheduling.html","../../../../libs/features/src/lib/register/registration-success-view/registration-success-view.ts","../../../../libs/features/src/lib/register/registration-success-view/registration-success-view.html","../../../../libs/features/src/lib/register/index.ts","../../../../libs/features/src/lib/supporter/supporter.constants.ts","../../../../libs/features/src/lib/supporter/supporter.data.ts","../../../../libs/features/src/lib/supporter/new-ticket-dialog/new-ticket-dialog.ts","../../../../libs/features/src/lib/supporter/new-ticket-dialog/new-ticket-dialog.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-welcome-section/knowledge-center-welcome-section.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-welcome-section/knowledge-center-welcome-section.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-search-section/knowledge-center-search-section.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-search-section/knowledge-center-search-section.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-browse-section/knowledge-center-browse-section.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-browse-section/knowledge-center-browse-section.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-support-section/knowledge-center-support-section.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-support-section/knowledge-center-support-section.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center.data.ts","../../../../libs/features/src/lib/knowledge-center/services/knowledge-center.service.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-landing/knowledge-center-landing.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-landing/knowledge-center-landing.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-category/knowledge-center-category.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-category/knowledge-center-category.html","../../../../libs/features/src/lib/knowledge-center/knowledge-center-topic/knowledge-center-topic.ts","../../../../libs/features/src/lib/knowledge-center/knowledge-center-topic/knowledge-center-topic.html","../../../../libs/features/src/lib/supporter/supporter-list/supporter-list.ts","../../../../libs/features/src/lib/supporter/supporter-list/supporter-list.html","../../../../libs/features/src/lib/supporter/supporter-detail-header/supporter-detail-header.ts","../../../../libs/features/src/lib/supporter/supporter-detail-header/supporter-detail-header.html","../../../../libs/features/src/lib/supporter/supporter-detail-body/supporter-detail-body.ts","../../../../libs/features/src/lib/supporter/supporter-detail-body/supporter-detail-body.html","../../../../libs/features/src/lib/supporter/supporter-detail-additional/supporter-detail-additional.ts","../../../../libs/features/src/lib/supporter/supporter-detail-additional/supporter-detail-additional.html","../../../../libs/features/src/lib/supporter/supporter-detail/supporter-detail.ts","../../../../libs/features/src/lib/supporter/supporter-detail/supporter-detail.html","../../../../libs/features/src/lib/profile/profile-otp.service.ts","../../../../libs/features/src/lib/profile/profile-page/profile-page.ts","../../../../libs/features/src/lib/profile/profile-page/profile-page.html","../../../../libs/features/src/lib/sso/providers/sso.provider.ts","../../../../libs/features/src/lib/sso/routes/sso.routes.ts","../../../../libs/features/src/lib/sso/constants/sso-error-codes.ts","../../../../libs/features/src/lib/sso/utils/sso-query-params.ts","../../../../libs/features/src/lib/sso/index.ts","../../../../libs/features/src/lib/errors/components/error-403/error-403.ts","../../../../libs/features/src/lib/errors/components/error-403/error-403.html","../../../../libs/features/src/lib/errors/components/error-404/error-404.ts","../../../../libs/features/src/lib/errors/components/error-404/error-404.html","../../../../libs/features/src/lib/errors/components/error-500/error-500.ts","../../../../libs/features/src/lib/errors/components/error-500/error-500.html","../../../../libs/features/src/lib/errors/components/error-503/error-503.ts","../../../../libs/features/src/lib/errors/components/error-503/error-503.html","../../../../libs/features/src/lib/errors/components/error-maintenance/error-maintenance.ts","../../../../libs/features/src/lib/errors/components/error-maintenance/error-maintenance.html","../../../../libs/features/src/lib/errors/components/error-timeout/error-timeout.ts","../../../../libs/features/src/lib/errors/components/error-timeout/error-timeout.html","../../../../libs/features/src/lib/errors/components/error-no-role/error-no-role.ts","../../../../libs/features/src/lib/errors/components/error-no-role/error-no-role.html","../../../../libs/features/src/lib/errors/routes/errors.routes.ts","../../../../libs/features/src/lib/errors/index.ts","../../../../libs/features/src/index.ts","../../../../libs/ncim-sdk.ts"],"sourcesContent":["export enum EntityType {\n GOVERNMENT = 'GOVERNMENT',\n INSPECTION = 'INSPECTION',\n BUSINESS = 'BUSINESS',\n}\n","export enum PackageType {\n BASIC = 'BASIC',\n VIOLATIONS = 'VIOLATIONS',\n ENTERPRISE = 'ENTERPRISE',\n CUSTOM = 'CUSTOM',\n}\n","export enum ButtonVariant {\n PRIMARY = 'primary',\n BLACK = 'black',\n NEUTRAL = 'neutral',\n SECONDARY = 'secondary',\n}\n\nexport enum ButtonType {\n BUTTON = 'button',\n SUBMIT = 'submit',\n}\n\nexport enum ButtonSize {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large',\n}\n","export type InputType =\n | 'text'\n | 'password'\n | 'number'\n | 'email'\n | 'date'\n | 'datetime'\n | 'select'\n | 'multiselect'\n | 'phone'\n | 'textarea'\n | 'checkbox'\n | 'radio'\n | 'checkbox-search'\n | 'search';\n\nexport const INPUT_TYPES = {\n TEXT: 'text',\n PASSWORD: 'password',\n EMAIL: 'email',\n NUMBER: 'number',\n PHONE: 'phone',\n SELECT: 'select',\n MULTISELECT: 'multiselect',\n TEXTAREA: 'textarea',\n DATE: 'date',\n DATETIME: 'datetime',\n CHECKBOX: 'checkbox',\n RADIO: 'radio',\n CHECKBOX_SEARCH: 'checkbox-search',\n} as const satisfies Record<string, InputType>;\n","export enum LayoutWidth {\n SMALL = 'small',\n FULL = 'full',\n}\n","export enum Language {\n AR = 'ar',\n EN = 'en',\n}\n","export enum TrendDirection {\n UP = 'up',\n DOWN = 'down',\n}\n","export enum MarkerStatus {\n WARNING = 'warning',\n INFO = 'info',\n ERROR = 'error',\n SUCCESS = 'success',\n}\n","/** Map legend and card badge status types. Matches legend icons and card status badges. */\nexport enum MapLegendStatus {\n UNCORRECTED_VIOLATION = 'alert-01',\n UPCOMING_VISIT = 'briefcase-06',\n CORRECTION_PERIOD = 'loading',\n LICENSE_EXPIRING = 'time-quarter-02',\n}\n","/** Typed i18n keys for HTTP error toasts. Matches `HTTP_ERRORS.*` in ar.json / en.json. */\nexport enum HttpErrorKey {\n NETWORK = 'HTTP_ERRORS.NETWORK',\n OFFLINE = 'HTTP_ERRORS.OFFLINE',\n BACK_ONLINE = 'HTTP_ERRORS.BACK_ONLINE',\n CORS = 'HTTP_ERRORS.CORS',\n TIMEOUT = 'HTTP_ERRORS.TIMEOUT',\n BAD_REQUEST = 'HTTP_ERRORS.BAD_REQUEST',\n SESSION_EXPIRED = 'HTTP_ERRORS.SESSION_EXPIRED',\n SESSION_EXPIRED_SSO = 'HTTP_ERRORS.SESSION_EXPIRED_SSO',\n PAYMENT_REQUIRED = 'HTTP_ERRORS.PAYMENT_REQUIRED',\n FORBIDDEN = 'HTTP_ERRORS.FORBIDDEN',\n NOT_FOUND = 'HTTP_ERRORS.NOT_FOUND',\n METHOD_NOT_ALLOWED = 'HTTP_ERRORS.METHOD_NOT_ALLOWED',\n NOT_ACCEPTABLE = 'HTTP_ERRORS.NOT_ACCEPTABLE',\n CONFLICT = 'HTTP_ERRORS.CONFLICT',\n GONE = 'HTTP_ERRORS.GONE',\n VALIDATION = 'HTTP_ERRORS.VALIDATION',\n PAYLOAD_TOO_LARGE = 'HTTP_ERRORS.PAYLOAD_TOO_LARGE',\n URI_TOO_LONG = 'HTTP_ERRORS.URI_TOO_LONG',\n UNSUPPORTED_MEDIA_TYPE = 'HTTP_ERRORS.UNSUPPORTED_MEDIA_TYPE',\n LOCKED = 'HTTP_ERRORS.LOCKED',\n TOO_MANY_REQUESTS = 'HTTP_ERRORS.TOO_MANY_REQUESTS',\n RATE_LIMIT_RETRY = 'HTTP_ERRORS.RATE_LIMIT_RETRY',\n SERVER = 'HTTP_ERRORS.SERVER',\n NOT_IMPLEMENTED = 'HTTP_ERRORS.NOT_IMPLEMENTED',\n BAD_GATEWAY = 'HTTP_ERRORS.BAD_GATEWAY',\n SERVICE_UNAVAILABLE = 'HTTP_ERRORS.SERVICE_UNAVAILABLE',\n GATEWAY_TIMEOUT = 'HTTP_ERRORS.GATEWAY_TIMEOUT',\n MAINTENANCE = 'HTTP_ERRORS.MAINTENANCE',\n UNKNOWN = 'HTTP_ERRORS.UNKNOWN',\n CHUNK_LOAD = 'HTTP_ERRORS.CHUNK_LOAD',\n RUNTIME = 'HTTP_ERRORS.RUNTIME',\n}\n","/**\n * All REST API endpoint paths for the Compliance Dashboard.\n *\n * This is the single place to update paths when the real API is integrated.\n * Static paths use `as const`. Dynamic (by-ID) builders are plain functions.\n *\n * Usage:\n * import { API_ENDPOINTS } from '@libs/core/constants';\n * this.api.get(API_ENDPOINTS.VIOLATIONS.LIST)\n * this.api.get(API_ENDPOINTS.VIOLATIONS.DETAIL(id))\n */\n\nexport const API_ENDPOINTS = {\n AUTH: {\n LOGIN: '/auth/login',\n FORGOT_PASSWORD: '/auth/forgot-password',\n VERIFY_OTP: '/auth/verify-otp',\n RESEND_OTP: '/auth/resend-otp',\n RESET_PASSWORD: '/auth/reset-password',\n REGISTER: '/auth/register',\n REFRESH_TOKEN: '/auth/refresh-token',\n PROFILE_UPDATE: '/auth/profile/update',\n PROFILE_VERIFY_OTP: '/auth/profile/verify-otp',\n PROFILE_RESEND_OTP: '/auth/profile/resend-otp',\n SSO_CALLBACK: '/auth/sso-callback',\n },\n\n VIOLATIONS: {\n LIST: '/violations/list',\n EXPORT: '/violations/export',\n DETAIL: (id: number | string): string => `/violations/${id}/details`,\n },\n\n /** Objections (known as \"appeals\" on the backend). */\n OBJECTIONS: {\n LIST: '/appeals',\n DETAIL: (id: number | string): string => `/appeals/${id}`,\n },\n\n /** Appeals flow — full appeal lifecycle. */\n APPEALS: {\n INITIALIZE: (violationId: string): string => `/appeals/initialize/${violationId}`,\n SUBMIT: '/appeals/submit',\n BY_ID: (appealId: string): string => `/appeals/${appealId}`,\n DETAILS: (appealId: string): string => `/appeals/${appealId}/details`,\n ATTACHMENT_UPLOAD: '/appeals/attachments/upload',\n ATTACHMENT_DOWNLOAD: (fileReference: string): string => `/appeals/attachments/${fileReference}`,\n LIST: '/appeals/list',\n /** GET — returns ObjectionType[] */\n OBJECTION_TYPES: '/appeals/lookups/objection-types',\n },\n\n USERS: {\n LIST: '/users',\n CREATE: '/users',\n DETAIL: (id: string): string => `/users/${id}`,\n },\n\n ROLES: {\n LIST: '/roles',\n CREATE: '/roles',\n DETAIL: (id: string): string => `/roles/${id}`,\n },\n\n SUPPORT: {\n TICKETS: '/support/tickets',\n TICKET: (id: string): string => `/support/tickets/${id}`,\n },\n\n REPORTS: {\n LIST: '/reports',\n DETAIL: (id: string): string => `/reports/${id}`,\n },\n\n COMMERCIAL_REGISTERS: {\n LIST: '/commercial-registrations/cards',\n },\n VIEW_LICENSES: {\n GET: (ownerIdentityNo: string, ownerIdentityType: number): string =>\n `/licenses/${ownerIdentityNo}/${ownerIdentityType}`,\n },\n};\n","export const ROUTE_SEGMENTS = {\n AUTH: 'auth',\n LOGIN: 'login',\n FORGOT_PASSWORD: 'forgot-password',\n OTP_VERIFICATION: 'otp-verification',\n RESET_PASSWORD: 'reset-password',\n REGISTER: 'register',\n SUCCESS: 'success',\n DASHBOARD: 'dashboard',\n HOME: 'home',\n REGULATORY_DASHBOARD: 'regulatory-dashboard',\n ENTITY_SECTOR_DETAILS: 'entity-sector-details',\n VIEW_LICENSES: 'view-licenses',\n VIOLATIONS: 'violations',\n OBJECTIONS: 'objections',\n COMPLIANCE_PROGRAM: 'compliance-program',\n SMART_ADVISOR: 'smart-advisor',\n KNOWLEDGE_CENTER: 'knowledge-center',\n KNOWLEDGE_CATEGORY: 'category',\n KNOWLEDGE_TOPIC: 'topic',\n SUPPORTER: 'supporter',\n GRID_DEMO: 'grid-demo',\n DESIGN_SYSTEM: 'components-design-system',\n UI_COMPONENTS_SHOWCASE: 'ui-components',\n ICONS_DOCUMENT: 'icons-document',\n PROFILE: 'profile',\n USERS_AND_ROLES: 'users-and-roles',\n SETTINGS: 'user-management',\n VIOLATION_DETAILS: 'violation-details',\n OBJECTION_DETAILS: 'objection-details',\n SPECIFIC_REPORT_DETAILS: 'report-details',\n LICENSES: 'licenses',\n CHECK_LICENSE: 'check-license',\n SYSTEM_SETTINGS: 'system-settings',\n SSO_CALLBACK: 'sso-callback',\n SSO_ERROR: 'sso-error',\n FORBIDDEN: 'forbidden',\n NOT_FOUND: 'not-found',\n SERVER_ERROR: 'server-error',\n SERVICE_UNAVAILABLE: 'service-unavailable',\n MAINTENANCE: 'maintenance',\n TIMEOUT: 'timeout',\n NO_ROLE: 'no-role',\n MY_FACILITIES: 'my-facilities',\n COMPANY_PROFILE: 'company-profile',\n COMPANY_ONBOARDING: 'company-onboarding',\n ADD_USER_DETAILS: 'add-user-details',\n EDIT_USER_DETAILS: 'edit-user-details',\n EDIT_CONTACT_INFO: 'edit-contact-info',\n LOGIN_BY_NAFATH: 'login-by-nafath',\n LOGIN_BY_NAFATH_VERIFICATION: 'login-by-nafath-verification',\n} as const;\n","import { ROUTE_SEGMENTS } from './route-segments.constants';\n\nexport const ROUTE_PATHS = {\n HOME: '/',\n AUTH: `/${ROUTE_SEGMENTS.AUTH}`,\n AUTH_LOGIN: `/${ROUTE_SEGMENTS.AUTH}/${ROUTE_SEGMENTS.LOGIN}`,\n AUTH_FORGOT_PASSWORD: `/${ROUTE_SEGMENTS.AUTH}/${ROUTE_SEGMENTS.FORGOT_PASSWORD}`,\n AUTH_OTP_VERIFICATION: `/${ROUTE_SEGMENTS.AUTH}/${ROUTE_SEGMENTS.OTP_VERIFICATION}`,\n AUTH_RESET_PASSWORD: `/${ROUTE_SEGMENTS.AUTH}/${ROUTE_SEGMENTS.RESET_PASSWORD}`,\n REGISTER: `/${ROUTE_SEGMENTS.REGISTER}`,\n REGISTER_SUCCESS: `/${ROUTE_SEGMENTS.REGISTER}/${ROUTE_SEGMENTS.SUCCESS}`,\n DASHBOARD: `/${ROUTE_SEGMENTS.DASHBOARD}`,\n DASHBOARD_HOME: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.HOME}`,\n MY_FACILITIES: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.MY_FACILITIES}`,\n COMPANY_PROFILE: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.COMPANY_PROFILE}`,\n REGULATORY_DASHBOARD: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.REGULATORY_DASHBOARD}`,\n VIOLATIONS: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.VIOLATIONS}`,\n OBJECTIONS: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.OBJECTIONS}`,\n COMPLIANCE_PROGRAM: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.COMPLIANCE_PROGRAM}`,\n SMART_ADVISOR: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SMART_ADVISOR}`,\n KNOWLEDGE_CENTER: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}`,\n KNOWLEDGE_TOPIC: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}/${ROUTE_SEGMENTS.KNOWLEDGE_TOPIC}`,\n SUPPORTER: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SUPPORTER}`,\n SETTINGS: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SETTINGS}`,\n SETTINGS_PROFILE: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.PROFILE}`,\n SETTINGS_USERS_AND_ROLES: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SETTINGS}/${ROUTE_SEGMENTS.USERS_AND_ROLES}`,\n SETTINGS_SYSTEM: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SETTINGS}/${ROUTE_SEGMENTS.SYSTEM_SETTINGS}`,\n SSO_CALLBACK: `/${ROUTE_SEGMENTS.SSO_CALLBACK}`,\n SSO_ERROR: `/${ROUTE_SEGMENTS.SSO_ERROR}`,\n FORBIDDEN: `/${ROUTE_SEGMENTS.FORBIDDEN}`,\n NOT_FOUND: `/${ROUTE_SEGMENTS.NOT_FOUND}`,\n SERVER_ERROR: `/${ROUTE_SEGMENTS.SERVER_ERROR}`,\n SERVICE_UNAVAILABLE: `/${ROUTE_SEGMENTS.SERVICE_UNAVAILABLE}`,\n MAINTENANCE: `/${ROUTE_SEGMENTS.MAINTENANCE}`,\n TIMEOUT: `/${ROUTE_SEGMENTS.TIMEOUT}`,\n NO_ROLE: `/${ROUTE_SEGMENTS.NO_ROLE}`,\n ADD_USER_DETAILS: `/${ROUTE_SEGMENTS.ADD_USER_DETAILS}`,\n EDIT_USER_DETAILS: `/${ROUTE_SEGMENTS.EDIT_USER_DETAILS}`,\n EDIT_CONTACT_INFO: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.COMPANY_PROFILE}/${ROUTE_SEGMENTS.EDIT_CONTACT_INFO}`,\n LOGIN_BY_NAFATH_VERIFICATION: `/${ROUTE_SEGMENTS.AUTH}/${ROUTE_SEGMENTS.LOGIN_BY_NAFATH_VERIFICATION}`,\n} as const;\n","/**\n * Centralized regex patterns for validation and directives.\n * Use REGEX for validators/directives; VALIDATION_PATTERNS is the legacy subset for backward compatibility.\n */\n\n/** All shared regex patterns. */\nexport const REGEX = {\n // --- Validation (full-string match) ---\n /** Saudi identity: starts with 1 or 2, 10 digits. */\n IDENTITY_NUMBER: /^[12]\\d{9}$/,\n /** Saudi mobile: starts with 5, 9 digits. */\n MOBILE_SAUDI: /^[5]\\d{8}$/,\n /** Saudi mobile national format: `05` + 8 digits (10 characters). */\n MOBILE_SAUDI_05: /^05\\d{8}$/,\n /** Generic 10-digit ID. */\n ID_NUMBER: /^\\d{10}$/,\n /** CR number: 10 digits. */\n CR_NUMBER: /^\\d{10}$/,\n /** Email address. */\n EMAIL: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n /** International phone: optional +, 7–15 digits. */\n PHONE: /^\\+?[0-9]{7,15}$/,\n /** HTTP/HTTPS URL. */\n URL: /^https?:\\/\\/[^\\s/$.?#].[^\\s]*$/,\n /** One or more digits. */\n NUMBERS_ONLY: /^\\d+$/,\n /** Letters (English + Arabic) and spaces. */\n LETTERS_ONLY: /^[a-zA-Z\\u0600-\\u06FF\\s]+$/,\n /** Saudi IBAN: SA + 22 digits. */\n SAUDI_IBAN: /^SA\\d{22}$/,\n /** English letters and spaces. */\n ENGLISH_ONLY: /^[a-zA-Z\\s]+$/,\n /** Arabic letters and spaces. */\n ARABIC_ONLY: /^[\\u0600-\\u06FF\\s]+$/,\n /** English, Arabic, digits, spaces. */\n ALPHANUMERIC: /^[a-zA-Z0-9\\u0600-\\u06FF\\s]+$/,\n\n // --- Password strength (character-class tests) ---\n PASSWORD_UPPERCASE: /[A-Z]/,\n PASSWORD_LOWERCASE: /[a-z]/,\n PASSWORD_NUMBER: /\\d/,\n PASSWORD_SPECIAL: /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n\n // --- Directives / replace (global) ---\n /** Strip all whitespace. */\n WHITESPACE_GLOBAL: /\\s/g,\n /** Strip non-digits (for phone). */\n NON_DIGITS: /[^\\d]/g,\n /** Strip non–0-9. */\n NON_NUMBERS: /[^0-9]/g,\n /** Strip non–English letters/spaces. */\n NON_ENGLISH: /[^a-zA-Z\\s]/g,\n /** Strip non–email-allowed chars. */\n NON_EMAIL_CHARS: /[^a-zA-Z0-9@._-]/g,\n /** Strip non–Arabic/symbols (Arabic + spaces + Arabic digits). */\n NON_ARABIC: /[^ \\u0600-\\u06FF\\u0660-\\u0669]/g,\n /** Strip non–alphanumeric (English, Arabic, digits, space). */\n NON_ALPHANUMERIC: /[^a-zA-Z0-9 \\u0600-\\u06FF]/g,\n\n // --- UI / HTML ---\n /** For escaping HTML in attributes/text. */\n HTML_ESCAPE: /[&<>\"']/g,\n} as const;\n\n/** Legacy subset used by validators (identity, Saudi mobile, ID number). */\nexport const VALIDATION_PATTERNS = {\n IDENTITY_NUMBER: REGEX.IDENTITY_NUMBER,\n MOBILE_SAUDI: REGEX.MOBILE_SAUDI,\n MOBILE_SAUDI_05: REGEX.MOBILE_SAUDI_05,\n ID_NUMBER: REGEX.ID_NUMBER,\n} as const;\n","/** Re-export for backward compatibility. */\nexport { VALIDATION_PATTERNS } from './regex.constants';\n\nexport const VALIDATION_LENGTHS = {\n IDENTITY_NUMBER: 10,\n PASSWORD_MIN: 8,\n /** Max digits in national mobile field (with `+966` prefix in UI). `05` + 8 = 10; legacy `5` + 8 = 9 still fits. */\n MOBILE: 10,\n OTP: 4,\n MIN_LENGTH: 3,\n MAX_LENGTH: 255,\n MAX_LENGTH_10: 10,\n MAX_LENGTH_20: 20,\n MAX_LENGTH_30: 30,\n MAX_LENGTH_50: 50,\n MAX_LENGTH_100: 100,\n MAX_LENGTH_255: 255,\n MAX_LENGTH_500: 500,\n} as const;\n","import { EntityType } from '../enums/entity-type.enum';\n\nexport const REGISTRATION_STEPS = {\n FIRST: 1,\n} as const;\n\nexport interface SidebarContent {\n titleKey: string;\n descriptionKey: string;\n}\n\nconst SIDEBAR_DEFAULT_CONTENT: SidebarContent = {\n titleKey: 'AUTH.REGISTER.SIDEBAR_DEFAULT_TITLE',\n descriptionKey: 'AUTH.REGISTER.SIDEBAR_DEFAULT_DESC',\n};\n\nexport const SIDEBAR_CONFIG: Record<number, SidebarContent> = {\n 1: {\n titleKey: 'AUTH.REGISTER.SIDEBAR_STEP1_TITLE',\n descriptionKey: 'AUTH.REGISTER.SIDEBAR_STEP1_DESC',\n },\n 2: SIDEBAR_DEFAULT_CONTENT,\n 3: SIDEBAR_DEFAULT_CONTENT,\n 4: SIDEBAR_DEFAULT_CONTENT,\n 5: SIDEBAR_DEFAULT_CONTENT,\n};\n\nexport const SIDEBAR_DEFAULT_STEP = 2;\n\nexport const REGISTRATION_DEFAULTS = {\n REPRESENTATIVE_NAME: 'خالد محمد',\n PACKAGE_NAME: 'الاساسية',\n PACKAGE_PRICE: '23.000',\n MOCK_SESSION_DATE: 'الأثنين، 27 يوليو 2025 - 2:30 مساءً',\n} as const;\n\nexport interface RegistrationStepDefinition {\n id: string;\n labelKey: string;\n titleKey: string;\n subtitleKey: string;\n}\n\nexport const GOVERNMENT_STEPS: readonly RegistrationStepDefinition[] = [\n {\n id: '1',\n labelKey: 'AUTH.REGISTER.STEP_ENTITY_TYPE',\n titleKey: 'AUTH.REGISTER.STEP1_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP1_SUBTITLE',\n },\n {\n id: '2',\n labelKey: 'AUTH.REGISTER.STEP_ENTITY_DETAILS',\n titleKey: 'AUTH.REGISTER.STEP2_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP2_SUBTITLE',\n },\n {\n id: '3',\n labelKey: 'AUTH.REGISTER.STEP_RESPONSIBLE_USER',\n titleKey: 'AUTH.REGISTER.STEP3_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP3_SUBTITLE',\n },\n {\n id: '4',\n labelKey: 'AUTH.REGISTER.STEP_PACKAGE',\n titleKey: 'AUTH.REGISTER.STEP4_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP4_SUBTITLE',\n },\n {\n id: '5',\n labelKey: 'AUTH.REGISTER.STEP_SCHEDULING',\n titleKey: 'AUTH.REGISTER.SESSION_SCHEDULING_TITLE',\n subtitleKey: 'AUTH.REGISTER.SESSION_SCHEDULING_SUBTITLE',\n },\n];\n\nexport const BUSINESS_STEPS: readonly RegistrationStepDefinition[] = [\n {\n id: '1',\n labelKey: 'AUTH.REGISTER.STEP_ENTITY_TYPE',\n titleKey: 'AUTH.REGISTER.STEP1_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP1_SUBTITLE',\n },\n {\n id: '2',\n labelKey: 'AUTH.REGISTER.STEP_VERIFICATION',\n titleKey: 'AUTH.REGISTER.CREATE_ACCOUNT_TITLE',\n subtitleKey: 'AUTH.REGISTER.CREATE_ACCOUNT_SUBTITLE',\n },\n];\n\nexport const INSPECTION_STEPS: readonly RegistrationStepDefinition[] = [\n {\n id: '1',\n labelKey: 'AUTH.REGISTER.STEP_ENTITY_TYPE',\n titleKey: 'AUTH.REGISTER.STEP1_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP1_SUBTITLE',\n },\n {\n id: '2',\n labelKey: 'AUTH.REGISTER.STEP_ENTITY_DETAILS',\n titleKey: 'AUTH.REGISTER.STEP2_TITLE',\n subtitleKey: 'AUTH.REGISTER.STEP2_SUBTITLE',\n },\n];\n\nexport const ENTITY_TYPE_OPTIONS = [\n {\n id: EntityType.GOVERNMENT,\n title: 'AUTH.REGISTER.ENTITY_GOV',\n description: 'AUTH.REGISTER.ENTITY_GOV_DESC',\n icon: 'building',\n },\n {\n id: EntityType.INSPECTION,\n title: 'AUTH.REGISTER.ENTITY_INSP',\n description: 'AUTH.REGISTER.ENTITY_INSP_DESC',\n icon: 'incognito',\n disabled: true,\n },\n {\n id: EntityType.BUSINESS,\n title: 'AUTH.REGISTER.ENTITY_BUSINESS',\n description: 'AUTH.REGISTER.ENTITY_BUSINESS_DESC',\n icon: 'muslim',\n },\n] as const;\n","import { PackageType } from '../enums';\nexport const PACKAGE_FEATURES = [\n { title: 'AUTH.REGISTER.PACKAGE_FEATURE_AI_ADVISOR', included: true },\n { title: 'AUTH.REGISTER.PACKAGE_FEATURE_SELF_ASSESSMENT', included: true },\n { title: 'AUTH.REGISTER.PACKAGE_FEATURE_EDU_MATERIALS', included: true },\n { title: 'AUTH.REGISTER.PACKAGE_FEATURE_ONSITE_VISITS', included: true },\n { title: 'AUTH.REGISTER.PACKAGE_FEATURE_COMMERCIAL_LICENSE', included: true },\n] as const;\n\nexport const PACKAGES = [\n {\n id: PackageType.BASIC,\n name: 'AUTH.REGISTER.BASIC_PACKAGE',\n title: 'AUTH.REGISTER.PACKAGE_FEATURES_TITLE',\n description: 'AUTH.REGISTER.PACKAGE_FEATURES_DESCRIPTION',\n price: '23.000',\n features: PACKAGE_FEATURES.map(feature => feature.title),\n popular: true,\n special: false,\n },\n {\n id: PackageType.VIOLATIONS,\n name: 'AUTH.REGISTER.VIOLATION_DATA',\n title: 'AUTH.REGISTER.PACKAGE_FEATURES_TITLE',\n description: 'AUTH.REGISTER.PACKAGE_FEATURES_DESCRIPTION',\n price: '45.000',\n features: PACKAGE_FEATURES.map(feature => feature.title),\n popular: false,\n special: false,\n },\n {\n id: PackageType.ENTERPRISE,\n name: 'AUTH.REGISTER.ENTERPRISE_PACKAGE',\n title: 'AUTH.REGISTER.PACKAGE_FEATURES_TITLE',\n description: 'AUTH.REGISTER.PACKAGE_FEATURES_DESCRIPTION',\n price: '80.000',\n features: PACKAGE_FEATURES.map(feature => feature.title),\n popular: false,\n special: false,\n },\n {\n id: PackageType.CUSTOM,\n name: 'AUTH.REGISTER.CUSTOM_PACKAGE',\n title: 'AUTH.REGISTER.PACKAGE_CUSTOM_FEATURES_TITLE',\n description: 'AUTH.REGISTER.PACKAGE_FEATURES_DESCRIPTION',\n features: PACKAGE_FEATURES.map(feature => feature.title),\n price: '100.000',\n popular: false,\n special: true,\n },\n] as const;\n\nexport const TIME = [\n '0-2',\n '2-4',\n '4-6',\n '6-8',\n '8-10',\n '10-12',\n '12-14',\n '14-16',\n '16-18',\n '18-20',\n '20-22',\n '22-24',\n] as const;\n","export const ENTITY_DETAILS_OPTIONS = {\n BRANCHES: ['أكثر من 25', '25-11', '6-10', '5-1'] as const,\n EMPLOYEES: ['أكثر من 1000', '1000-500', '250-100', 'أقل من 100'] as const,\n ENTITY_NAMES: [\n { value: 'saudi-water-authority', label: 'الهيئة السعودية للمياه' },\n { value: 'ministry-of-commerce', label: 'وزارة التجارة' },\n { value: 'ministry-of-municipal', label: 'وزارة الشؤون البلدية والقروية والإسكان' },\n { value: 'ministry-of-environment', label: 'وزارة البيئة والمياه والزراعة' },\n { value: 'ministry-of-health', label: 'وزارة الصحة' },\n { value: 'ministry-of-industry', label: 'وزارة الصناعة والثروة المعدنية' },\n { value: 'food-drug-authority', label: 'الهيئة العامة للغذاء والدواء' },\n { value: 'civil-defense', label: 'المديرية العامة للدفاع المدني' },\n { value: 'standards-authority', label: 'الهيئة السعودية للمواصفات والمقاييس' },\n { value: 'energy-authority', label: 'هيئة تنظيم المياه والكهرباء' },\n ] as const,\n REGULATORY_SECTORS: [\n { value: 'environment', label: 'البيئة' },\n { value: 'health', label: 'الصحة' },\n { value: 'commerce', label: 'التجارة' },\n { value: 'industry', label: 'الصناعة' },\n { value: 'food-safety', label: 'سلامة الغذاء' },\n { value: 'fire-safety', label: 'السلامة والحماية من الحريق' },\n { value: 'construction', label: 'البناء والتشييد' },\n { value: 'energy', label: 'الطاقة' },\n { value: 'water', label: 'المياه والصرف الصحي' },\n { value: 'labor', label: 'العمل والتوظيف' },\n ] as const,\n} as const;\n\nexport const ENTITY_DETAILS_DEFAULTS = {\n BRANCHES_COUNT: '6-10',\n EMPLOYEES_COUNT: '100-250',\n} as const;\n","export const ERROR_KEYS = {\n REQUIRED: 'ERRORS.REQUIRED',\n PASSWORD_MIN_LENGTH: 'ERRORS.PASSWORD_MIN_LENGTH',\n IDENTITY_MIN_LENGTH: 'ERRORS.IDENTITY_MIN_LENGTH',\n IDENTITY_MAX_LENGTH: 'ERRORS.IDENTITY_MAX_LENGTH',\n IDENTITY_INVALID: 'ERRORS.IDENTITY_INVALID',\n IDENTITY_NUMBERS_ONLY: 'ERRORS.IDENTITY_NUMBERS_ONLY',\n MIN_LENGTH: 'ERRORS.MIN_LENGTH',\n MAX_LENGTH: 'ERRORS.MAX_LENGTH',\n MAX_LENGTH_100: 'ERRORS.MAX_LENGTH_100',\n MAX_LENGTH_10: 'ERRORS.MAX_LENGTH_10',\n INVALID_FORMAT: 'ERRORS.INVALID_FORMAT',\n INVALID_EMAIL: 'ERRORS.INVALID_EMAIL',\n MIN_VALUE: 'ERRORS.MIN_VALUE',\n MAX_VALUE: 'ERRORS.MAX_VALUE',\n PASSWORD_MISMATCH: 'ERRORS.PASSWORD_MISMATCH',\n NUMBERS_ONLY: 'ERRORS.NUMBERS_ONLY',\n LETTERS_ONLY: 'ERRORS.LETTERS_ONLY',\n ARABIC_ONLY: 'ERRORS.ARABIC_ONLY',\n ENGLISH_ONLY: 'ERRORS.ENGLISH_ONLY',\n ALPHANUMERIC_ONLY: 'ERRORS.ALPHANUMERIC_ONLY',\n INVALID_PHONE: 'ERRORS.INVALID_PHONE',\n /** Saudi mobile: must start with 05 and be 10 digits. */\n INVALID_PHONE_SA_05: 'ERRORS.INVALID_PHONE_SA_05',\n INVALID_URL: 'ERRORS.INVALID_URL',\n INVALID_IBAN: 'ERRORS.INVALID_IBAN',\n INVALID_CR_NUMBER: 'ERRORS.INVALID_CR_NUMBER',\n WEAK_PASSWORD: 'ERRORS.WEAK_PASSWORD',\n WHITESPACE_ONLY: 'ERRORS.WHITESPACE_ONLY',\n DATE_BEFORE_MIN: 'ERRORS.DATE_BEFORE_MIN',\n DATE_AFTER_MAX: 'ERRORS.DATE_AFTER_MAX',\n CONFIRMATION_MISMATCH: 'ERRORS.CONFIRMATION_MISMATCH',\n AT_LEAST_ONE_OPTION_REQUIRED: 'ERRORS.AT_LEAST_ONE_OPTION_REQUIRED',\n PERCENTAGE_EXCEEDS_TOTAL: 'ERRORS.PERCENTAGE_EXCEEDS_TOTAL',\n STAGE_TAKES_100: 'ERRORS.STAGE_TAKES_100',\n TOTAL_LESS_THAN_100: 'ERRORS.TOTAL_LESS_THAN_100',\n INVALID_SHORT_ADDRESS: 'ERRORS.INVALID_SHORT_ADDRESS',\n} as const;\n","import { Language } from '../enums/language.enum';\n\n/** i18n paths and default language for @ngx-translate. */\nexport const I18N_CONFIG = {\n DEFAULT_LANGUAGE: Language.AR,\n TRANSLATION_PREFIX: './assets/i18n/',\n TRANSLATION_SUFFIX: '.json',\n} as const;\n","import { Translation } from 'primeng/api';\nimport { Language } from '../enums/language.enum';\n\nconst AR_TRANSLATION: Translation = {\n accept: 'موافق',\n addRule: 'إضافة قاعدة',\n am: 'صباحًا',\n apply: 'تطبيق',\n cancel: 'إلغاء',\n choose: 'اختر',\n chooseDate: 'اختر اليوم',\n chooseMonth: 'اختر الشهر',\n chooseYear: 'اختر السنة',\n clear: 'إزالة',\n completed: 'مكتمل',\n contains: 'يحتوي على',\n dateAfter: 'التاريخ بعد',\n dateBefore: 'التاريخ قبل',\n dateFormat: 'yy/mm/dd',\n dateIs: 'التاريخ هو',\n dateIsNot: 'التاريخ ليس',\n dayNames: ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],\n dayNamesMin: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],\n dayNamesShort: ['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],\n emptyFilterMessage: 'لا توجد اختيارات',\n emptyMessage: 'لا توجد نتيجة',\n emptySearchMessage: 'لا تتوفر بيانات',\n emptySelectionMessage: 'لم يتم اختيار أي عنصر',\n endsWith: 'ينتهي بـ',\n equals: 'يساوي',\n fileChosenMessage: '{0} ملفات',\n fileSizeTypes: [\n 'بايت',\n 'كيلو بايت',\n 'ميغابايت',\n 'غيغابايت',\n 'تيرابايت',\n 'بيتابايت',\n 'إكسابايت',\n 'زيتابايت',\n 'يوتابايت',\n ],\n firstDayOfWeek: 6,\n gt: 'أكبر من',\n gte: 'أكبر من أو يساوي',\n lt: 'أقل من',\n lte: 'أقل من أو يساوي',\n matchAll: 'يطابق الكل',\n matchAny: 'يطابق أي',\n medium: 'متوسط',\n monthNames: [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ],\n monthNamesShort: [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ],\n nextDecade: 'العقد القادم',\n nextHour: 'الساعة التالية',\n nextMinute: 'الدقيقة التالية',\n nextMonth: 'الشهر التالي',\n nextSecond: 'الثانية التالية',\n nextYear: 'السنة التالية',\n noFileChosenMessage: 'لم يتم اختيار أي ملف',\n noFilter: 'بدون تصفية',\n notContains: 'لا يحتوي على',\n notEquals: 'لا يساوي',\n passwordPrompt: 'أدخل كلمة المرور',\n pending: 'قيد الانتظار',\n pm: 'مساءً',\n prevDecade: 'العقد السابق',\n prevHour: 'الساعة السابقة',\n prevMinute: 'الدقيقة السابقة',\n prevMonth: 'الشهر السابق',\n prevSecond: 'الثانية السابقة',\n prevYear: 'السنة السابقة',\n reject: 'لا',\n removeRule: 'حذف قاعدة',\n searchMessage: '{0} النتائج المتاحة',\n selectionMessage: '{0} عناصر تم اختيارها',\n startsWith: 'يبدأ بـ',\n strong: 'قوي',\n today: 'اليوم',\n upload: 'تحميل',\n weak: 'ضعيف',\n weekHeader: 'الأسبوع',\n};\n\nconst EN_TRANSLATION: Translation = {\n accept: 'Yes',\n addRule: 'Add Rule',\n am: 'AM',\n apply: 'Apply',\n cancel: 'Cancel',\n choose: 'Choose',\n chooseDate: 'Choose Date',\n chooseMonth: 'Choose Month',\n chooseYear: 'Choose Year',\n clear: 'Clear',\n completed: 'Completed',\n contains: 'Contains',\n dateAfter: 'Date is after',\n dateBefore: 'Date is before',\n dateFormat: 'mm/dd/yy',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n emptyFilterMessage: 'No results found',\n emptyMessage: 'No available options',\n emptySearchMessage: 'No results found',\n emptySelectionMessage: 'No selected item',\n endsWith: 'Ends with',\n equals: 'Equals',\n fileChosenMessage: '{0} files',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n firstDayOfWeek: 0,\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n lt: 'Less than',\n lte: 'Less than or equal to',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n medium: 'Medium',\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n nextDecade: 'Next Decade',\n nextHour: 'Next Hour',\n nextMinute: 'Next Minute',\n nextMonth: 'Next Month',\n nextSecond: 'Next Second',\n nextYear: 'Next Year',\n noFileChosenMessage: 'No file chosen',\n noFilter: 'No Filter',\n notContains: 'Not contains',\n notEquals: 'Not equals',\n passwordPrompt: 'Enter a password',\n pending: 'Pending',\n pm: 'PM',\n prevDecade: 'Previous Decade',\n prevHour: 'Previous Hour',\n prevMinute: 'Previous Minute',\n prevMonth: 'Previous Month',\n prevSecond: 'Previous Second',\n prevYear: 'Previous Year',\n reject: 'No',\n removeRule: 'Remove Rule',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n startsWith: 'Starts with',\n strong: 'Strong',\n today: 'Today',\n upload: 'Upload',\n weak: 'Weak',\n weekHeader: 'Wk',\n};\n\nexport const PRIMENG_LOCALE: Record<string, Translation> = {\n [Language.AR]: AR_TRANSLATION,\n [Language.EN]: EN_TRANSLATION,\n};\n","export const ASSET_PATHS = {\n NCIM_LOGO: 'assets/images/ncim-logo.svg',\n NAFATH_ICON: 'assets/images/nafath-icon.svg',\n REGISTER_SIDEBAR: 'assets/images/register.png',\n SIDEBAR_BG: 'assets/images/bg-side.png',\n SUCCESS: 'assets/images/Success.png',\n SAUDI_FLAG: 'assets/images/saudi-flag.svg',\n CAPTCHA_IMAGE: 'assets/images/ver.png',\n} as const;\n","export const ICONS = {\n PAGES_ICONS:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M19.002 1.25977C20.5198 1.26086 21.7498 2.49192 21.75 4.00977V19.999C21.7497 21.5176 20.5186 22.749 19 22.749H5C3.48137 22.749 2.25025 21.5176 2.25 19.999V4C2.25 2.48045 3.48241 1.24892 5.00195 1.25L19.002 1.25977ZM5.00098 2.75C4.31027 2.7495 3.75 3.30929 3.75 4V19.999C3.75025 20.6892 4.3098 21.249 5 21.249H19C19.6902 21.249 20.2497 20.6892 20.25 19.999V4.00977C20.2498 3.31995 19.6908 2.7603 19.001 2.75977L5.00098 2.75ZM10.5557 13.75C10.9698 13.7501 11.3057 14.0858 11.3057 14.5C11.3057 14.9142 10.9698 15.2499 10.5557 15.25H7C6.58579 15.25 6.25 14.9142 6.25 14.5C6.25 14.0858 6.58579 13.75 7 13.75H10.5557ZM15 8.75C15.4142 8.75 15.75 9.08579 15.75 9.5C15.75 9.91421 15.4142 10.25 15 10.25H7C6.58579 10.25 6.25 9.91421 6.25 9.5C6.25 9.08579 6.58579 8.75 7 8.75H15Z\" fill=\"currentColor\"/></svg>',\n PRINT_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\"><path d=\"M14.25 0C15.4926 0 16.5 1.00736 16.5 2.25V6H17.75C19.8211 6 21.5 7.67893 21.5 9.75V15.75C21.5 16.7165 20.7165 17.5 19.75 17.5H16.5V18.75C16.5 20.2688 15.2688 21.5 13.75 21.5H7.75C6.23122 21.5 5 20.2688 5 18.75V17.5H1.75C0.783502 17.5 0 16.7165 0 15.75V9.75C0 7.67893 1.67893 6 3.75 6H5V2.25C5 1.00736 6.00736 0 7.25 0H14.25ZM6.5 18.75C6.5 19.4404 7.05964 20 7.75 20H13.75C14.4404 20 15 19.4404 15 18.75V15.5H6.5V18.75ZM3.75 7.5C2.50736 7.5 1.5 8.50736 1.5 9.75V15.75C1.5 15.8881 1.61193 16 1.75 16H5V14.75C5 14.3358 5.33579 14 5.75 14H15.75C16.1642 14 16.5 14.3358 16.5 14.75V16H19.75C19.8881 16 20 15.8881 20 15.75V9.75C20 8.50736 18.9926 7.5 17.75 7.5H3.75ZM17.2588 9.25C17.8111 9.25 18.2588 9.69771 18.2588 10.25C18.2588 10.8023 17.8111 11.25 17.2588 11.25H17.25C16.6977 11.25 16.25 10.8023 16.25 10.25C16.25 9.69771 16.6977 9.25 17.25 9.25H17.2588ZM7.25 1.5C6.83579 1.5 6.5 1.83579 6.5 2.25V6H15V2.25C15 1.83579 14.6642 1.5 14.25 1.5H7.25Z\" fill=\"currentColor\"/></svg>',\n DELETE_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22\" viewBox=\"0 0 20 22\" fill=\"none\"><path d=\"M11.5908 0C12.2908 8.59975e-05 12.9235 0.41719 13.1992 1.06055L14.2441 3.5H18.75C19.1642 3.5 19.5 3.83579 19.5 4.25C19.5 4.66421 19.1642 5 18.75 5H17.9561L17.1123 18.916C17.0243 20.3675 15.8214 21.5 14.3672 21.5H5.13281C3.67864 21.5 2.47567 20.3675 2.3877 18.916L1.54395 5H0.75C0.335786 5 0 4.66421 0 4.25C0 3.83579 0.335786 3.5 0.75 3.5H5.25586L6.30078 1.06055C6.57652 0.41719 7.20923 8.59974e-05 7.90918 0H11.5908ZM3.88477 18.8252C3.92475 19.485 4.47182 20 5.13281 20H14.3672C15.0282 20 15.5752 19.485 15.6152 18.8252L16.4531 5H3.04688L3.88477 18.8252ZM11.25 13.5C11.6642 13.5 12 13.8358 12 14.25C12 14.6642 11.6642 15 11.25 15H8.25C7.83579 15 7.5 14.6642 7.5 14.25C7.5 13.8358 7.83579 13.5 8.25 13.5H11.25ZM12.75 9.5C13.1642 9.5 13.5 9.83579 13.5 10.25C13.5 10.6642 13.1642 11 12.75 11H6.75C6.33579 11 6 10.6642 6 10.25C6 9.83579 6.33579 9.5 6.75 9.5H12.75ZM7.90918 1.5C7.80932 1.50009 7.71909 1.5596 7.67969 1.65137L6.8877 3.5H12.6123L11.8203 1.65137C11.7809 1.5596 11.6907 1.50009 11.5908 1.5H7.90918Z\" fill=\"currentColor\"/></svg>',\n COPY_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><g clip-path=\"url(#clip0_5613_101839)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.335 0.841797C14.3468 0.842691 15.1669 1.66294 15.167 2.67481V9.33496C15.167 10.3475 14.3455 11.1689 13.333 11.1689H12.5V13.334C12.5 14.3464 11.6794 15.1678 10.667 15.168H2.66699C1.65447 15.168 0.833008 14.3465 0.833008 13.334V6.00293C0.833008 4.9895 1.65556 4.16866 2.66895 4.16992L3.5 4.1709V2.66992C3.5 1.65692 4.32196 0.835265 5.33496 0.835938L13.335 0.841797ZM2.66797 5.16992C2.20727 5.16927 1.83301 5.54223 1.83301 6.00293V13.334C1.83301 13.7942 2.20675 14.168 2.66699 14.168H10.667C11.1271 14.1678 11.5 13.7941 11.5 13.334V11.1689H5.33301C4.32064 11.1688 3.5 10.3474 3.5 9.33496V5.1709L2.66797 5.16992ZM5.33398 1.83594C4.87353 1.83563 4.5 2.20947 4.5 2.66992V9.33496C4.5 9.79509 4.87292 10.1688 5.33301 10.1689H13.333C13.7932 10.1689 14.167 9.7952 14.167 9.33496V2.67481C14.1669 2.21487 13.7939 1.84216 13.334 1.8418L5.33398 1.83594Z\" fill=\"#384250\"/></g><defs><clipPath id=\"clip0_5613_101839\"><rect width=\"16\" height=\"16\" fill=\"white\"/></clipPath></defs></svg>',\n MESSAGE_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"96\" height=\"94\" fill=\"none\" viewBox=\"0 0 96 94\"><g filter=\"url(#a)\"><path fill=\"url(#b)\" d=\"M23.47 44.623c2.974 2.337 6.679 3.59 10.415 4.204q.49.085.983.147 1.134.158 2.275.255a3.85 3.85 0 0 1 3.519 3.836v5.255c0 .794.984 1.184 1.51.588 1.878-2.134 4.901-3.994 8.069-5.517.925-.451 1.867-.868 2.801-1.253 5.212-2.18 10.038-3.409 10.038-3.409q1.206-.28 2.377-.673c.048-.016.09-.024.13-.04q.331-.111.647-.22l.09-.034v-.008c3.287-1.205 6.31-3.073 8.547-5.736 3.147-3.753 4.474-8.71 4.974-13.577.64-6.294-.05-13.103-3.531-18.527C72.78 4.4 66.882 1.416 60.524.474c-5.425-.811-10.939-.36-16.43-.246C37.4.376 30.207.146 24.61 3.833c-3.195 2.106-5.548 5.352-6.973 8.908-1.434 3.556-1.983 7.408-2.065 11.242-.171 7.637 1.877 15.92 7.9 20.64\"/><path fill=\"url(#c)\" d=\"M62.292 37.959c-1.77 1.389-3.974 2.135-6.196 2.501a13 13 0 0 1-.62.092c-1.94.27-3.413 1.872-3.413 3.83v.863c0 .754-.9 1.16-1.452.647-1.112-1.035-2.65-1.948-4.248-2.717-.55-.268-1.11-.517-1.667-.745-3.1-1.297-5.972-2.029-5.972-2.029q-.72-.166-1.415-.4c-.029-.01-.053-.015-.077-.024l-.44-.152v-.004c-1.954-.717-3.754-1.829-5.084-3.414-1.873-2.232-2.662-5.181-2.96-8.078-.38-3.744.03-7.797 2.1-11.024 2.102-3.281 5.613-5.056 9.397-5.616 3.227-.483 6.509-.215 9.775-.147 3.983.088 8.264-.049 11.594 2.145 1.901 1.253 3.301 3.185 4.15 5.3.853 2.117 1.18 4.407 1.228 6.69.102 4.544-1.116 9.473-4.7 12.282\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/><path fill=\"url(#d)\" d=\"m44.799 49.56 5.44 3.828a50 50 0 0 1 2.802-1.253c5.212-2.18 10.038-3.408 10.038-3.408s-5.162 1.35-18.28.833\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/><path fill=\"#fff\" d=\"M62.292 35.817c-1.77 1.39-3.974 2.136-6.196 2.501q-.294.052-.586.088l-.034.005c-1.94.27-3.413 1.872-3.413 3.83v.863c0 .754-.9 1.16-1.452.647-1.112-1.035-2.65-1.948-4.248-2.716-.55-.269-1.11-.517-1.667-.747-3.1-1.297-5.972-2.028-5.972-2.028q-.72-.167-1.415-.4c-.029-.01-.053-.015-.077-.024l-.44-.151v-.005c-1.954-.716-3.754-1.828-5.084-3.413-1.873-2.233-2.662-5.183-2.96-8.079-.38-3.745.03-7.796 2.1-11.023 2.102-3.282 5.613-5.056 9.397-5.617 3.227-.483 6.509-.215 9.775-.147 3.983.088 8.264-.048 11.594 2.146 1.901 1.253 3.301 3.183 4.15 5.3.853 2.116 1.18 4.407 1.228 6.688.102 4.544-1.116 9.474-4.7 12.282\"/><path fill=\"url(#e)\" d=\"m49.6 38.754-3.237 2.278c-.55-.268-1.11-.517-1.667-.747-3.101-1.297-5.972-2.027-5.972-2.027s3.07.803 10.877.496\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/><path fill=\"url(#f)\" d=\"M54.255 24.653a3.707 3.707 0 1 0 7.414 0 3.707 3.707 0 0 0-7.414 0\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/><path fill=\"url(#g)\" d=\"M44.103 24.653a3.707 3.707 0 1 0 7.414 0 3.707 3.707 0 0 0-7.414 0\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/><path fill=\"url(#h)\" d=\"M33.95 24.653a3.707 3.707 0 1 0 7.415 0 3.707 3.707 0 0 0-7.415 0\" opacity=\".51\" style=\"mix-blend-mode:multiply\"/></g><defs><linearGradient id=\"b\" x1=\"108.145\" x2=\"75.64\" y1=\"95.649\" y2=\"1.916\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#19004d\"/><stop offset=\"1\" stop-color=\"#54c08a\"/></linearGradient><linearGradient id=\"c\" x1=\"31.993\" x2=\"31.312\" y1=\"17.063\" y2=\"50.677\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".606\" stop-color=\"#19004d\" stop-opacity=\".91\"/><stop offset=\".746\" stop-color=\"#a58cf4\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"d\" x1=\"54.82\" x2=\"50.338\" y1=\"44.667\" y2=\"56.993\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".512\" stop-color=\"#19004d\" stop-opacity=\".91\"/><stop offset=\".76\" stop-color=\"#a58cf4\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"e\" x1=\"43.638\" x2=\"46.304\" y1=\"35.842\" y2=\"43.176\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".512\" stop-color=\"#1b8354\"/><stop offset=\".76\" stop-color=\"#1b8354\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"f\" x1=\"66.672\" x2=\"56.235\" y1=\"32.49\" y2=\"8.404\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".267\" stop-color=\"#1b8354\"/><stop offset=\".63\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"g\" x1=\"56.52\" x2=\"46.083\" y1=\"32.49\" y2=\"8.404\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".267\" stop-color=\"#1b8354\"/><stop offset=\".63\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"h\" x1=\"46.368\" x2=\"35.931\" y1=\"32.49\" y2=\"8.404\" gradientUnits=\"userSpaceOnUse\"><stop offset=\".267\" stop-color=\"#1b8354\"/><stop offset=\".63\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><filter id=\"a\" width=\"95.62\" height=\"93.256\" x=\"0\" y=\"0\" color-interpolation-filters=\"sRGB\" filterUnits=\"userSpaceOnUse\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feColorMatrix in=\"SourceAlpha\" result=\"hardAlpha\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"/><feMorphology in=\"SourceAlpha\" radius=\"14.439\" result=\"effect1_dropShadow_6167_40545\"/><feOffset dy=\"18.5\"/><feGaussianBlur stdDeviation=\"15\"/><feComposite in2=\"hardAlpha\" operator=\"out\"/><feColorMatrix values=\"0 0 0 0 0.105882 0 0 0 0 0.513726 0 0 0 0 0.329412 0 0 0 0.24 0\"/><feBlend in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_6167_40545\"/><feBlend in=\"SourceGraphic\" in2=\"effect1_dropShadow_6167_40545\" result=\"shape\"/></filter></defs></svg>',\n SAR_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" fill=\"none\" viewBox=\"0 0 16 17\"><path fill=\"#161616\" d=\"M15.213 13.022a6.7 6.7 0 0 0 .558-2.084l-4.807 1.022V9.995l4.249-.903a6.7 6.7 0 0 0 .558-2.084l-4.807 1.021V.961A6.8 6.8 0 0 0 9.04 2.575v5.863l-1.922.409V0a6.8 6.8 0 0 0-1.923 1.613v7.642l-4.301.914a6.7 6.7 0 0 0-.559 2.084l4.86-1.032v2.475l-5.208 1.106a6.7 6.7 0 0 0-.558 2.085l5.452-1.159a1.73 1.73 0 0 0 1.073-.716l1-1.482a.96.96 0 0 0 .164-.538v-2.18l1.922-.409v3.931z\"/></svg>',\n LAYERS_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"18\" fill=\"none\" viewBox=\"0 0 17 18\"><path fill=\"#1f2a37\" d=\"M14.296 11.785c.28-.36.79-.42 1.142-.133.435.356.812.846.812 1.529 0 .862-.593 1.408-1.173 1.79-.583.385-1.426.779-2.44 1.253l-1.447.675-.156.074c-1.19.557-2.016.943-2.909.943s-1.718-.386-2.91-.943l-.154-.074-1.448-.675c-1.014-.474-1.857-.868-2.44-1.252C.593 14.589 0 14.042 0 13.18c0-.683.377-1.173.813-1.529a.8.8 0 0 1 1.141.133c.28.36.222.884-.129 1.171a.8.8 0 0 0-.19.197c-.01.019-.01.024-.01.027l.001.008a.2.2 0 0 0 .03.05c.053.07.165.18.396.331.472.311 1.206.657 2.298 1.167l1.384.647c1.41.659 1.895.866 2.391.866s.981-.207 2.39-.866l1.385-.647c1.092-.51 1.826-.856 2.298-1.167.23-.152.343-.261.396-.33a.2.2 0 0 0 .03-.05l.001-.008v-.001c0-.003 0-.008-.01-.027a.8.8 0 0 0-.19-.197.85.85 0 0 1-.13-1.17m0-4.27c.28-.36.79-.42 1.142-.133.435.356.812.846.812 1.528 0 .862-.593 1.408-1.173 1.79-.583.384-1.426.78-2.44 1.253l-1.447.676-.156.073c-1.19.557-2.016.944-2.909.944s-1.718-.387-2.91-.944l-.154-.073-1.448-.676c-1.014-.474-1.857-.869-2.44-1.253C.593 10.318 0 9.772 0 8.91c0-.682.377-1.172.813-1.528a.8.8 0 0 1 1.141.133c.28.36.222.884-.129 1.17a.8.8 0 0 0-.19.198c-.01.018-.01.022-.01.025v.002l.001.008c.001.003.008.02.03.05.053.07.165.18.396.33.472.312 1.206.657 2.298 1.167l1.384.647c1.41.659 1.895.867 2.391.867s.981-.208 2.39-.867l1.385-.647c1.092-.51 1.826-.855 2.298-1.166.23-.152.343-.262.396-.331a.2.2 0 0 0 .03-.05l.001-.008v-.002c0-.003 0-.007-.01-.025a.8.8 0 0 0-.19-.197.85.85 0 0 1-.13-1.171M8.125 0c.871 0 1.68.374 2.928.951l.132.06 1.47.68c1.052.486 1.905.882 2.49 1.263.586.382 1.105.879 1.105 1.629s-.519 1.247-1.104 1.629-1.44.777-2.49 1.263l-1.471.68-.132.06c-1.249.577-2.057.951-2.928.951s-1.68-.374-2.928-.951l-.132-.06-1.47-.68c-1.052-.486-1.905-.882-2.49-1.263C.518 5.83 0 5.334 0 4.583c0-.75.519-1.247 1.104-1.629s1.44-.777 2.49-1.263l1.471-.68.132-.06C6.446.374 7.254 0 8.125 0\"/></svg>',\n\n FILE_ICON:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"17\" fill=\"none\" viewBox=\"0 0 18 17\"><path fill=\"#1b8354\" d=\"M6.904 0a1.63 1.63 0 0 1 1.348.705l1.14 1.67h4.428c1.342 0 2.43 1.063 2.43 2.375v1.917h.184c.97 0 1.715.922 1.419 1.882l-2.059 6.667a1.48 1.48 0 0 1-1.418 1.034H2.855c-.694 0-1.311-.477-1.454-1.169L.031 8.414c-.19-.925.537-1.747 1.452-1.747h.183V1.583C1.666.709 2.392 0 3.286 0zM3.286 6.667H14.63V4.75a.8.8 0 0 0-.81-.792H8.96a.82.82 0 0 1-.676-.353L6.904 1.583H3.286z\"/></svg>',\n INFO_CIRCLE:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></svg>',\n SAND_GLASS:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 22h14\"/><path d=\"M5 2h14\"/><path d=\"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\"/><path d=\"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\"/></svg>',\n} as const;\n","/**\n * AUTO-GENERATED FILE - DO NOT EDIT MANUALLY.\n * Run \"npm run icons:sync\" to regenerate.\n */\nexport const GENERATED_ICON_NAMES = [\n 'active-group',\n 'activity',\n 'activity-background',\n 'activity-regular',\n 'add-user',\n 'ai-magic',\n 'aiIcon',\n 'alarm',\n 'alarm-clock-background',\n 'album-02',\n 'alert',\n 'alert-01',\n 'alert-background',\n 'analytics-down',\n 'analytics-down-background',\n 'analyticsBackground',\n 'arrow-left',\n 'arrow-left-01',\n 'arrow-up-left',\n 'arrowUp',\n 'arrowUpWarning',\n 'Avatar-details',\n 'Ball',\n 'bell',\n 'block',\n 'book',\n 'bookmark',\n 'brain',\n 'briefcase',\n 'briefcase-06',\n 'bubble-chat-add',\n 'building',\n 'building-section',\n 'building-settings',\n 'buildingBackground',\n 'cakender-plus',\n 'calendar',\n 'calendar-04',\n 'calendar-icon',\n 'calendar-minus',\n 'calendar-plus',\n 'camera',\n 'change-screen-mode',\n 'chart-bar',\n 'chart-line',\n 'chat',\n 'chatPlus',\n 'check',\n 'check-circle',\n 'checked',\n 'chevron-down',\n 'chevronDown',\n 'chevronLeft',\n 'chevronRight',\n 'circle-check',\n 'clipboard',\n 'clock',\n 'close',\n 'close-popup',\n 'close-side',\n 'cog',\n 'colored-file',\n 'columns',\n 'commercial-section',\n 'compare',\n 'confirm-add',\n 'copy',\n 'credit-card',\n 'customer-service',\n 'dashboard',\n 'datepicker',\n 'datepicker-arrow',\n 'datepicker-chevron-down',\n 'decreaseArrow',\n 'delete',\n 'dislike',\n 'distribute-horizontal-center',\n 'docs-validation',\n 'document',\n 'download',\n 'download-small',\n 'download2',\n 'edit',\n 'edit-02',\n 'ellipsis',\n 'empty-companies',\n 'empty-module',\n 'entertainment-section',\n 'entity-building',\n 'eye',\n 'eyeOff',\n 'feedback',\n 'Feedback-Icon',\n 'fees',\n 'ferrisWheelBackground',\n 'fileUpload',\n 'fill-worring',\n 'filter',\n 'finalSeccess',\n 'fire',\n 'folder',\n 'full-page',\n 'gavel',\n 'grean-file',\n 'hand',\n 'hand-raised',\n 'help',\n 'help-circle',\n 'hold',\n 'hold-background',\n 'home',\n 'home-01',\n 'honour-star',\n 'hourglass',\n 'incognito',\n 'increaseArrow',\n 'info',\n 'information-circle',\n 'layers',\n 'layers-01',\n 'layers-2',\n 'layers-background',\n 'levels',\n 'like',\n 'link',\n 'list',\n 'loading',\n 'logo',\n 'logout',\n 'logout-popup',\n 'mail',\n 'map',\n 'massage',\n 'menu',\n 'modelIcon',\n 'muslim',\n 'nafath-icon',\n 'new-office',\n 'new-office-background',\n 'not-active-group',\n 'note-stack',\n 'notifcation',\n 'objection',\n 'open-book',\n 'opened-folder',\n 'outOfWallet',\n 'package',\n 'pdf',\n 'pencil',\n 'period',\n 'person',\n 'phone',\n 'play',\n 'plus',\n 'preference-vertical',\n 'print',\n 'pulse',\n 'punishment',\n 'Rank',\n 'record',\n 'red-alert',\n 'refresh',\n 'regularArrowLeft',\n 'remove',\n 'sandClock',\n 'sar',\n 'sar-icon',\n 'saudi-flag',\n 'scale',\n 'search',\n 'search-black',\n 'search-list',\n 'search2',\n 'settings',\n 'settings-background',\n 'settings2',\n 'shape',\n 'shape-square',\n 'shield',\n 'sort',\n 'sort-direction',\n 'sort-down',\n 'sort-up',\n 'sort2',\n 'stack',\n 'start-chat',\n 'status',\n 'store',\n 'success-company',\n 'support',\n 'TagSimple',\n 'time-quarter-02',\n 'total-group',\n 'total-requests',\n 'total-workingdays',\n 'traingles',\n 'trash',\n 'trash-bin',\n 'trash-icon-fill',\n 'trend-down-arrow',\n 'trend-up-arrow',\n 'up-arrow-green',\n 'Up-arrrow',\n 'user',\n 'user-placeholder',\n 'user-plus',\n 'wallet',\n 'wallet-02',\n 'wallet-background',\n 'wallet2',\n 'warning',\n 'widget',\n 'workflow',\n] as const;\n\nexport type GeneratedIconName = (typeof GENERATED_ICON_NAMES)[number];\n","export const PHONE_CONFIG = {\n COUNTRY_CODE: '+966',\n FLAG_ICON: 'saudi-flag',\n} as const;\n\n/** i18n keys for form placeholders. Values live in ar.json / en.json only. */\nexport const PLACEHOLDER_KEYS = {\n EMAIL: 'AUTH.REGISTER.EMAIL_PLACEHOLDER',\n MOBILE: 'AUTH.REGISTER.MOBILE_PLACEHOLDER',\n} as const;\n","export const STORAGE_KEYS = {\n AUTH_TOKEN: 'ncim_auth_token',\n REFRESH_TOKEN: 'ncim_refresh_token',\n USER_PROFILE: 'ncim_user_profile',\n LANGUAGE: 'ncim_language',\n REGISTRATION_DRAFT: 'ncim_registration_draft',\n PERMISSIONS: 'ncim_permissions',\n NAFATH_IDENTITY: 'ncim_nafath_identity',\n} as const;\n","export const CHART_COLORS = {\n green: '#66BB9B',\n greenLight: '#A8D5BA',\n greenLeaf: '#C8E6C9',\n greenTeal: '#B8E0D0',\n red: '#E57373',\n redLight: '#F4A0A0',\n redSoft: '#FFCDD2',\n orange: '#F5A623',\n yellow: '#F5E6B8',\n purple: '#C4B5E0',\n blue: '#B3E5FC',\n trendUp: '#10B981',\n trendDown: '#EF4444',\n /** Matches `--color-report-rate-green` (license / KPI sparklines). */\n reportRateGreen: '#88D8AD',\n} as const;\n\n/** Saudi Arabia center (Riyadh) and zoom to fit country on open */\nexport const MAP_CONFIG = {\n tileUrl: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n maxZoom: 19,\n defaultCenter: { lat: 24.7136, lng: 46.6753 } as const, // Riyadh, Saudi Arabia\n defaultZoom: 6, // Zoom level to show Saudi Arabia on open\n markerSize: [280, 120] as [number, number],\n markerAnchor: [140, 130] as [number, number],\n scoreThreshold: 50,\n} as const;\n","import { MapLegendStatus } from '../enums/map-legend-status.enum';\n\n/** Single map legend/card badge config: icon, background, color. */\nexport interface MapLegendItemConfig {\n icon: string;\n bg: string;\n color: string;\n labelKey: string;\n}\n\n/** Map legend and card badge config. Used by legend popup and map cards. */\nexport const MAP_LEGEND_CONFIG: Record<MapLegendStatus, MapLegendItemConfig> = {\n [MapLegendStatus.UNCORRECTED_VIOLATION]: {\n icon: 'alert-01',\n bg: '#FEF3F2',\n color: '#EF4444',\n labelKey: 'REGULATORY_DASHBOARD.MAP_LEGEND_UNCORRECTED_VIOLATION',\n },\n [MapLegendStatus.UPCOMING_VISIT]: {\n icon: 'briefcase-06',\n bg: '#F1EAF4',\n color: '#80519F',\n labelKey: 'REGULATORY_DASHBOARD.MAP_LEGEND_UPCOMING_VISIT',\n },\n [MapLegendStatus.CORRECTION_PERIOD]: {\n icon: 'loading',\n bg: '#EFF8FF',\n color: '#3B82F6',\n labelKey: 'REGULATORY_DASHBOARD.MAP_LEGEND_CORRECTION_PERIOD',\n },\n [MapLegendStatus.LICENSE_EXPIRING]: {\n icon: 'time-quarter-02',\n bg: '#FFFAEB',\n color: '#D97706',\n labelKey: 'REGULATORY_DASHBOARD.MAP_LEGEND_LICENSE_EXPIRING',\n },\n};\n\n/** Map card action icons (briefcase, time) with background and color. */\nexport const MAP_ACTION_ICONS = {\n briefcase: {\n icon: 'briefcase-06',\n bg: '#F1EAF4',\n color: '#80519F',\n },\n time: {\n icon: 'time-quarter-02',\n bg: '#FFFAEB',\n color: '#D97706',\n },\n} as const;\n","/** Delay (ms) before showing skeleton after loading ends — used by ncim-grid-table, ncim-cards-statistics, etc. */\nexport const LOADING_DELAY_MS = 300;\n","import { Language } from '../enums/language.enum';\n\n/** API paths that never carry a bearer token. */\nexport const PUBLIC_API_PATHS = [\n '/auth/login',\n '/auth/register',\n '/auth/forgot-password',\n '/auth/verify-otp',\n '/auth/reset-password',\n '/auth/refresh-token',\n // MOMRAH SSO endpoints — token exchange and JWKS are unauthenticated requests\n 'ssoappdev.momra.gov.sa',\n 'sso.momra.gov.sa',\n] as const;\n\n/** Custom HTTP header names injected by interceptors. */\nexport const HTTP_HEADERS = {\n CORRELATION_ID: 'X-Correlation-Id',\n ACCEPT_LANGUAGE: 'Accept-Language',\n AUTHORIZATION: 'Authorization',\n RETRY_AFTER: 'Retry-After',\n MAINTENANCE: 'X-Maintenance',\n} as const;\n\n/** Toast auto-dismiss durations (ms). */\nexport const TOAST_DURATION = {\n DEFAULT: 5_000,\n ERROR: 8_000,\n} as const;\n\n/** Deduplication window (ms) — identical toasts within this window are suppressed. */\nexport const TOAST_DEDUP_MS = 2_000;\n\n/** Maximum dedup map entries before garbage-collecting stale keys. */\nexport const TOAST_DEDUP_MAX_SIZE = 50;\n\n/** Debounce period (ms) to prevent 401 flood from parallel requests. */\nexport const LOGOUT_DEBOUNCE_MS = 3_000;\n\n/** LRU HTTP response cache defaults. */\nexport const CACHE_DEFAULTS = {\n MAX_SIZE: 100,\n TTL_MS: 5 * 60 * 1_000,\n} as const;\n\n/** Retry interceptor defaults. */\nexport const RETRY_DEFAULTS = {\n MAX_COUNT: 2,\n BACKOFF_BASE_MS: 1_000,\n} as const;\n\n/** HTTP status codes eligible for automatic retry. */\nexport const RETRYABLE_STATUS_CODES = new Set([0, 502, 503, 504]) as ReadonlySet<number>;\n\n/** HTTP methods safe to retry (idempotent). */\nexport const IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE']) as ReadonlySet<string>;\n\n/** Max segments used when extracting a cache invalidation base-path from a mutation URL. */\nexport const CACHE_PATH_DEPTH = 3;\n\n/** Maximum characters to show for an API error message before truncating. */\nexport const ERROR_MESSAGE_MAX_LENGTH = 300;\n\n/** Maximum field-level errors displayed in a single toast. */\nexport const MAX_FIELD_ERRORS_SHOWN = 5;\n\n/** Fallback language when TranslateService has no current/default lang. */\nexport const FALLBACK_LANGUAGE = Language.AR;\n\n/** URL pattern for asset requests — errors for these are not shown as toasts. */\nexport const ASSET_URL_PATTERN = /\\/assets\\//;\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { VALIDATION_PATTERNS } from '../constants/validation.constants';\n\n/** Validates Saudi identity number format (starts with 1 or 2, 10 digits). */\nexport function identityNumberValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return VALIDATION_PATTERNS.IDENTITY_NUMBER.test(control.value) ? null : { identityInvalid: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { VALIDATION_PATTERNS } from '../constants/validation.constants';\n\nexport function idNumberValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return VALIDATION_PATTERNS.ID_NUMBER.test(control.value) ? null : { idNumberInvalid: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { VALIDATION_PATTERNS } from '../constants/validation.constants';\n\nexport function saudiMobileValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return VALIDATION_PATTERNS.MOBILE_SAUDI.test(control.value) ? null : { invalidPhone: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { VALIDATION_PATTERNS } from '../constants/validation.constants';\n\n/** Saudi mobile: `05` + 8 digits (10 characters total). */\nexport function saudiMobile05Validator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n const value = String(control.value).trim();\n return VALIDATION_PATTERNS.MOBILE_SAUDI_05.test(value) ? null : { invalidPhoneSa05: true };\n };\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\n/** Form-level validator: confirm field must match password field. Default keys: newPassword, confirmPassword. */\nexport function passwordMatchValidator(passwordKey = 'newPassword', confirmKey = 'confirmPassword') {\n return (control: AbstractControl): ValidationErrors | null => {\n const password = control.get(passwordKey);\n const confirmPassword = control.get(confirmKey);\n\n if (password && confirmPassword && password.value !== confirmPassword.value) {\n confirmPassword.setErrors({ ...confirmPassword.errors, passwordMismatch: true });\n return { passwordMismatch: true };\n }\n\n if (confirmPassword?.hasError('passwordMismatch')) {\n const { passwordMismatch, ...otherErrors } = confirmPassword.errors || {};\n const hasOtherErrors = Object.keys(otherErrors).length > 0;\n confirmPassword.setErrors(hasOtherErrors ? otherErrors : null);\n }\n\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\n/** Validates password has upper, lower, number, and special character. */\nexport function passwordStrengthValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n\n const value = control.value as string;\n const hasUpperCase = REGEX.PASSWORD_UPPERCASE.test(value);\n const hasLowerCase = REGEX.PASSWORD_LOWERCASE.test(value);\n const hasNumber = REGEX.PASSWORD_NUMBER.test(value);\n const hasSpecialChar = REGEX.PASSWORD_SPECIAL.test(value);\n\n const isStrong = hasUpperCase && hasLowerCase && hasNumber && hasSpecialChar;\n return isStrong ? null : { weakPassword: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function arabicOnlyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.ARABIC_ONLY.test(control.value) ? null : { arabicOnly: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function englishOnlyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.ENGLISH_ONLY.test(control.value) ? null : { englishOnly: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function numbersOnlyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.NUMBERS_ONLY.test(control.value) ? null : { numbersOnly: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function lettersOnlyValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.LETTERS_ONLY.test(control.value) ? null : { lettersOnly: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function alphanumericValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.ALPHANUMERIC.test(control.value) ? null : { alphanumericOnly: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function phoneValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.PHONE.test(control.value) ? null : { phone: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function urlValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.URL.test(control.value) ? null : { invalidUrl: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function ibanValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n const value = (control.value as string).replace(REGEX.WHITESPACE_GLOBAL, '').toUpperCase();\n return REGEX.SAUDI_IBAN.test(value) ? null : { invalidIban: true };\n };\n}\n","/**\n * Parses a date string in DD/MM/YYYY format.\n * @returns Parsed Date or null if invalid.\n */\nexport function parseDate(value: string): Date | null {\n const parts = value.split('/');\n if (parts.length !== 3) {\n return null;\n }\n\n const day = +parts[0];\n const month = +parts[1] - 1;\n const year = +parts[2];\n\n const date = new Date(year, month, day);\n\n return isNaN(date.getTime()) ? null : date;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { parseDate } from '../utils/date.utils';\n\n/** Validates control date is >= minDate. Expects DD/MM/YYYY or Date. */\nexport function dateMinValidator(minDate: string | Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n\n const controlDate = parseDate(control.value);\n const min = typeof minDate === 'string' ? parseDate(minDate) : minDate;\n\n if (!controlDate || !min) {\n return { invalidDate: true };\n }\n\n const controlDay = new Date(controlDate.getFullYear(), controlDate.getMonth(), controlDate.getDate());\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n\n return controlDay >= minDay ? null : { dateBeforeMin: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { parseDate } from '../utils/date.utils';\n\n/** Validates control date is <= maxDate. Expects DD/MM/YYYY or Date. */\nexport function dateMaxValidator(maxDate: string | Date): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n\n const controlDate = parseDate(control.value);\n const max = typeof maxDate === 'string' ? parseDate(maxDate) : maxDate;\n\n if (!controlDate || !max) {\n return { invalidDate: true };\n }\n\n return controlDate <= max ? null : { dateAfterMax: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/** Fails when value is only whitespace (after trim). */\nexport function noWhitespaceValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n const hasWhitespace = (control.value as string).trim().length === 0;\n return hasWhitespace ? { noWhitespace: true } : null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { REGEX } from '../constants/regex.constants';\n\nexport function crNumberValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.CR_NUMBER.test(control.value) ? null : { invalidCrNumber: true };\n };\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\n/** Form-level validator: confirm field must match source field. */\nexport function confirmedValidator(sourceKey: string, confirmKey: string) {\n return (control: AbstractControl): ValidationErrors | null => {\n const source = control.get(sourceKey);\n const confirm = control.get(confirmKey);\n\n if (source && confirm && source.value !== confirm.value) {\n confirm.setErrors({ ...confirm.errors, confirmationMismatch: true });\n return { confirmationMismatch: true };\n }\n\n if (confirm?.hasError('confirmationMismatch')) {\n const { confirmationMismatch, ...otherErrors } = confirm.errors || {};\n const hasOtherErrors = Object.keys(otherErrors).length > 0;\n confirm.setErrors(hasOtherErrors ? otherErrors : null);\n }\n\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { REGEX } from '../constants/regex.constants';\n\n/** Validates control value as an email address. */\nexport function emailValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return REGEX.EMAIL.test(control.value) ? null : { invalidEmail: true };\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\n/** Returns a validator that fails when the control value does not match the given regex. */\nexport function patternValidator(pattern: RegExp, errorKey: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) {\n return null;\n }\n return pattern.test(control.value) ? null : { [errorKey]: true };\n };\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function minSelectedValidator(min: number) {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value as unknown;\n if (Array.isArray(value) && value.length >= min) {\n return null;\n }\n return { minSelected: { min, actual: Array.isArray(value) ? value.length : 0 } };\n };\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * OIDC / SSO configuration per environment.\n * Endpoints are configured explicitly to avoid CORS issues with the discovery document.\n */\nexport interface SsoConfig {\n /** Set to false in local dev to skip OIDC startup and discovery fetch. */\n enabled: boolean;\n issuer: string;\n /** Authorization endpoint — e.g. https://ssoappdev.momra.gov.sa/connect/authorize */\n loginUrl: string;\n /** Token endpoint — e.g. https://ssoappdev.momra.gov.sa/connect/token */\n tokenEndpoint: string;\n /** UserInfo endpoint — e.g. https://ssoappdev.momra.gov.sa/connect/userinfo */\n userinfoEndpoint: string;\n /** End-session endpoint — e.g. https://ssoappdev.momra.gov.sa/connect/endsession */\n logoutUrl: string;\n /** JWKS endpoint — e.g. https://ssoappdev.momra.gov.sa/.well-known/openid-configuration/jwks */\n jwksUri: string;\n clientId: string;\n /**\n * Post-login callback URI. When omitted, defaults to `window.location.origin + '/sso-callback'`\n * so the app works on any host without per-environment configuration.\n */\n redirectUri?: string;\n /**\n * Post-logout redirect URI. When omitted, defaults to `window.location.origin + '/auth/login'`.\n */\n postLogoutRedirectUri?: string;\n /**\n * Space-separated OIDC scopes. Defaults to 'openid profile email'.\n * MOMRAH-specific scopes (e.g. 'basic contact') can be added here\n * once confirmed by the MOMRAH SSO team in the client document.\n */\n scope?: string;\n /**\n * Enable silent refresh via iframe. Default false — MOMRAH SSO may not support it.\n * Set to true when the SSO server supports the refresh_token grant in iframe.\n */\n silentRefreshEnabled?: boolean;\n /**\n * Optional custom query params for the authorization request.\n * e.g. { prompt: 'login', acr_values: '...' } for re-authentication.\n */\n customQueryParams?: Record<string, string>;\n}\n\n/** App environment (apiUrl, flags, sso). Injected via provideEnvironment. */\nexport interface Environment {\n production: boolean;\n staging: boolean;\n apiUrl: string;\n sso: SsoConfig;\n hasUnderDevelopmentFeatures?: boolean;\n /**\n * Secret used to derive the AES-GCM key for localStorage encryption (CryptoService).\n * Set a strong, environment-specific value in production; never commit the prod value.\n * Falls back to a default if omitted — acceptable for dev but NOT for production.\n */\n storageEncryptionKey?: string;\n}\n\n/** Injection token for Environment. Prefer reading from `environments` after bootstrap. */\nexport const ENVIRONMENT = new InjectionToken<Environment>('ENVIRONMENT');\n","import { Environment } from './environment.token';\n\nexport const environments: Environment = {\n production: false,\n staging: false,\n apiUrl: '',\n sso: {\n enabled: false,\n issuer: '',\n loginUrl: '',\n tokenEndpoint: '',\n userinfoEndpoint: '',\n logoutUrl: '',\n jwksUri: '',\n clientId: '',\n redirectUri: '',\n postLogoutRedirectUri: '',\n },\n};\n","import { EnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { Environment } from './environment.token';\nimport { environments } from './environment';\n\nexport function provideEnvironment(environment: Environment): EnvironmentProviders {\n return provideAppInitializer(() => {\n Object.assign(environments, environment);\n });\n}\n","import { effect, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n/**\n * Syncs a form's disabled state with a loading signal.\n * Disables the form when loading is true, enables when false.\n * Must be called in an injection context (constructor or field initializer).\n */\nexport function syncFormWithLoading(form: FormGroup, loading: Signal<boolean>): void {\n effect(() => {\n if (loading()) {\n form.disable();\n } else {\n form.enable();\n }\n });\n}\n\n/**\n * Sets up an effect to patch form values when initialData changes.\n * Call from constructor in an injection context.\n */\nexport function useFormInitData(form: FormGroup, initialData: Signal<Record<string, unknown>>): void {\n effect(() => initFormData(form, initialData()));\n}\n\n/**\n * Patches form values from partial data. No-op when data is empty.\n * Safe to call with initialData from route or parent.\n */\nexport function initFormData(form: FormGroup, data: Record<string, unknown>): void {\n if (data && Object.keys(data).length > 0) {\n form.patchValue(data);\n }\n}\n\n/**\n * Marks form as submitted and touched. Returns true if valid, false otherwise.\n */\nexport function markSubmittedAndValidate(form: FormGroup): boolean {\n form.markAllAsTouched();\n return form.valid;\n}\n","import { Injectable, inject, DestroyRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Title, Meta, MetaDefinition } from '@angular/platform-browser';\nimport { Router, NavigationEnd, ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { merge } from 'rxjs';\n\n/** Updates document title and meta tags from route data and current language. */\n@Injectable({ providedIn: 'root' })\nexport class SeoService {\n private readonly titleService = inject(Title);\n private readonly metaService = inject(Meta);\n private readonly router = inject(Router);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly translate = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n\n /** Subscribes to navigation and language changes to keep SEO tags in sync. */\n init(): void {\n merge(this.router.events.pipe(filter(event => event instanceof NavigationEnd)), this.translate.onLangChange)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.updateSeo();\n });\n }\n\n private updateSeo(): void {\n let route = this.activatedRoute;\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const data = route.snapshot.data as { title?: string; meta?: MetaDefinition[] };\n const appName = this.translate.instant('APP_NAME');\n const finalTitle = data.title ? `${this.translate.instant(data.title)} | ${appName}` : appName;\n let finalDesc = '';\n\n // Set Title & OG:Title\n this.titleService.setTitle(finalTitle);\n this.metaService.updateTag({ property: 'og:title', content: finalTitle });\n this.metaService.updateTag({ name: 'twitter:title', content: finalTitle });\n\n // Set Meta Tags (Description, Keywords)\n if (data.meta) {\n data.meta.forEach(tag => {\n if (tag.content) {\n const translatedContent = this.translate.instant(tag.content);\n this.metaService.updateTag({ ...tag, content: translatedContent });\n\n if (tag.name === 'description') {\n finalDesc = translatedContent;\n this.metaService.updateTag({ property: 'og:description', content: finalDesc });\n this.metaService.updateTag({ name: 'twitter:description', content: finalDesc });\n }\n }\n });\n }\n\n // Standard Meta\n this.metaService.updateTag({ name: 'robots', content: 'index, follow' });\n this.metaService.updateTag({ name: 'author', content: appName });\n this.metaService.updateTag({ property: 'og:type', content: 'website' });\n this.metaService.updateTag({ property: 'og:site_name', content: appName });\n this.metaService.updateTag({ name: 'twitter:card', content: 'summary_large_image' });\n\n // URL & Image\n const url = this.doc.location.href;\n this.metaService.updateTag({ property: 'og:url', content: url });\n const origin = this.doc.location.origin;\n this.metaService.updateTag({ property: 'og:image', content: `${origin}/assets/images/og-image.png` });\n this.metaService.updateTag({ property: 'og:image:width', content: '1200' });\n this.metaService.updateTag({ property: 'og:image:height', content: '630' });\n this.metaService.updateTag({ name: 'twitter:image', content: `${origin}/assets/images/og-image.png` });\n\n // Keywords\n const keywords = this.translate.instant('KEYWORDS');\n if (keywords && keywords !== 'KEYWORDS') {\n this.metaService.updateTag({ name: 'keywords', content: keywords });\n }\n\n // Canonical\n this.createLinkForCanonicalURL(url);\n }\n\n private createLinkForCanonicalURL(url: string): void {\n const link: HTMLLinkElement = this.doc.querySelector(\"link[rel='canonical']\") || this.doc.createElement('link');\n link.setAttribute('rel', 'canonical');\n link.setAttribute('href', url);\n this.doc.head.appendChild(link);\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { APP_BASE_HREF } from '@angular/common';\nimport { OAuthService, AuthConfig } from 'angular-oauth2-oidc';\nimport { ENVIRONMENT } from '../environments/environment.token';\nimport { ROUTE_PATHS } from '../constants/routes.constants';\nimport { STORAGE_KEYS } from '../constants/storage-keys.constants';\nimport { SsoUser } from '../models/auth.models';\n\nexport type { SsoUser };\n\n/**\n * localStorage key for the raw SSO callback params snapshot.\n * Saved before angular-oauth2-oidc's tryLogin() strips them from the URL.\n */\nexport const SSO_CALLBACK_PARAMS_KEY = 'ncim_sso_callback_params';\n\n/**\n * localStorage key for the intended destination URL before SSO login.\n * Written by loginWithSso(), read and cleared by getAndClearRedirectUrl().\n */\nexport const SSO_REDIRECT_URL_KEY = 'ncim_sso_redirect_url';\n\n/**\n * Wraps angular-oauth2-oidc for MOMRAH SSO (OIDC Authorization Code + PKCE).\n *\n * All OIDC endpoints are configured explicitly — no discovery document fetch —\n * to avoid CORS issues with the SSO server. strictDiscoveryDocumentValidation\n * is disabled so the library works without a discovery document fetch.\n *\n * Call initialize() once at app startup via APP_INITIALIZER (via provideSso()).\n */\n@Injectable({ providedIn: 'root' })\nexport class OidcAuthService {\n private readonly oauthService = inject(OAuthService);\n private readonly env = inject(ENVIRONMENT);\n // APP_BASE_HREF reflects the <base href> at runtime (e.g. '/commercial-compliance/').\n // Optional because it may not be provided in tests.\n private readonly appBaseHref = inject(APP_BASE_HREF, { optional: true }) ?? '/';\n\n readonly isAuthenticated = signal<boolean>(false);\n readonly currentUser = signal<SsoUser | null>(null);\n\n /** True when SSO is enabled in the current environment. */\n get isSsoEnabled(): boolean {\n return this.env.sso.enabled;\n }\n\n /**\n * Configure OIDC, process a redirect callback if present, and start\n * automatic silent token refresh for session continuity.\n * No-op when sso.enabled=false (local dev without MOMRAH network access).\n */\n initialize(): Promise<boolean> {\n if (!this.env.sso.enabled) {\n return Promise.resolve(false);\n }\n\n this.configure();\n // Snapshot callback params BEFORE tryLogin() strips them from the URL.\n this.snapshotCallbackParams();\n // Monitor token lifecycle events (refresh errors, session termination).\n this.listenToTokenEvents();\n\n return this.oauthService\n .tryLogin()\n .then(() => {\n this.syncState();\n if (this.isAuthenticated() && this.env.sso.silentRefreshEnabled) {\n this.oauthService.setupAutomaticSilentRefresh();\n }\n return this.isAuthenticated();\n })\n .catch((err: unknown) => {\n this.isAuthenticated.set(false);\n this.currentUser.set(null);\n if (!this.env.production && err) {\n console.warn('[OidcAuthService] SSO initialization failed:', err);\n }\n return false;\n });\n }\n\n /**\n * Redirect the browser to the MOMRAH SSO login page.\n * Pass `redirectUrl` to restore the user to a specific page after login.\n * Only relative app paths are accepted — external URLs are silently ignored\n * to prevent open redirect attacks.\n */\n loginWithSso(redirectUrl?: string): void {\n this.configure();\n if (redirectUrl && isSafeLocalPath(redirectUrl)) {\n localStorage.setItem(SSO_REDIRECT_URL_KEY, redirectUrl);\n }\n const customParams = this.env.sso.customQueryParams ?? {};\n this.oauthService.initCodeFlow(undefined, customParams);\n }\n\n /**\n * Build the OIDC RP-initiated logout URL (end-session endpoint) including\n * id_token_hint and post_logout_redirect_uri pointing to /auth/login.\n *\n * Must be called BEFORE logout() because logout() clears the stored id_token.\n * Returns null when SSO is disabled, not authenticated, or the id_token is gone.\n *\n * The returned URL should be assigned to window.location.href so the SSO\n * server can terminate the server-side session and redirect back to the app.\n */\n buildEndSessionUrl(): string | null {\n if (!this.env.sso.enabled || !this.env.sso.logoutUrl) {\n return null;\n }\n const idToken = this.oauthService.getIdToken();\n if (!idToken) {\n return null;\n }\n const origin = window.location.origin;\n const baseHref = this.appBaseHref.replace(/\\/$/, '');\n const params = new URLSearchParams({\n id_token_hint: idToken,\n post_logout_redirect_uri: `${origin}${baseHref}${ROUTE_PATHS.AUTH_LOGIN}`,\n client_id: this.env.sso.clientId,\n });\n return `${this.env.sso.logoutUrl}?${params.toString()}`;\n }\n\n /**\n * Clear all local SSO tokens and state without redirecting to the SSO\n * end-session endpoint. The caller handles navigation (see buildEndSessionUrl).\n */\n logout(): void {\n this.isAuthenticated.set(false);\n this.currentUser.set(null);\n localStorage.removeItem(STORAGE_KEYS.USER_PROFILE);\n localStorage.removeItem(SSO_CALLBACK_PARAMS_KEY);\n localStorage.removeItem(SSO_REDIRECT_URL_KEY);\n // noRedirectToLogoutUrl=true: clears OIDC tokens without a browser redirect.\n this.oauthService.logOut(true);\n }\n\n /** Returns the current OIDC access token, or null if not authenticated via SSO. */\n getAccessToken(): string | null {\n return this.oauthService.getAccessToken() || null;\n }\n\n /**\n * Returns the saved post-login redirect URL and removes it from localStorage.\n * Returns null if no redirect URL was stored.\n */\n getAndClearRedirectUrl(): string | null {\n const url = localStorage.getItem(SSO_REDIRECT_URL_KEY);\n if (url) {\n localStorage.removeItem(SSO_REDIRECT_URL_KEY);\n }\n return url;\n }\n\n /**\n * Fetch fresh user attributes from the UserInfo endpoint and sync local state.\n * Call this after the user updates their profile on the MOMRAH SSO server,\n * as per spec: \"the outcome of the update profile scenario is a renewed JWT\n * Token via the User Info Endpoint.\"\n */\n refreshUserInfo(): Promise<void> {\n if (!this.env.sso.enabled || !this.isAuthenticated()) {\n return Promise.resolve();\n }\n return this.oauthService\n .loadUserProfile()\n .then(() => {\n this.syncState();\n })\n .catch(() => {\n // Non-fatal — keep existing cached claims on failure.\n });\n }\n\n private configure(): void {\n const sso = this.env.sso;\n const origin = window.location.origin;\n // Strip trailing slash: '/commercial-compliance/' → '/commercial-compliance'\n const baseHref = this.appBaseHref.replace(/\\/$/, '');\n\n const config: AuthConfig = {\n issuer: sso.issuer,\n loginUrl: sso.loginUrl,\n tokenEndpoint: sso.tokenEndpoint,\n userinfoEndpoint: sso.userinfoEndpoint,\n logoutUrl: sso.logoutUrl,\n clientId: sso.clientId,\n // Include base href so redirectUri matches what the SSO server has registered.\n // local (baseHref='/') → http://localhost:4200/sso-callback\n // production (baseHref='/commercial-compliance/') → …/commercial-compliance/sso-callback\n redirectUri: sso.redirectUri ?? `${origin}${baseHref}${ROUTE_PATHS.SSO_CALLBACK}`,\n postLogoutRedirectUri: sso.postLogoutRedirectUri ?? `${origin}${baseHref}${ROUTE_PATHS.AUTH_LOGIN}`,\n responseType: 'code',\n // Use env-configured scopes if provided; fall back to spec minimum.\n scope: sso.scope ?? 'openid profile email',\n // Skip discovery document for issuer validation — endpoints are explicit above.\n skipIssuerCheck: true,\n strictDiscoveryDocumentValidation: false,\n showDebugInformation: !this.env.production,\n requireHttps: 'remoteOnly', // allow http://localhost in dev\n clearHashAfterLogin: false,\n useSilentRefresh: sso.silentRefreshEnabled ?? false,\n timeoutFactor: 0.75, // refresh at 75% of token lifetime\n };\n\n this.oauthService.configure(config);\n }\n\n /**\n * Save all OIDC callback query params to localStorage before the library\n * strips them from the URL via history.replaceState. The SsoCallback component\n * reads this snapshot to restore the query string.\n */\n private snapshotCallbackParams(): void {\n const params = new URLSearchParams(window.location.search);\n if (!params.has('code') || !params.has('state')) {\n return;\n }\n const snapshot: Record<string, string> = {};\n params.forEach((value, key) => (snapshot[key] = value));\n localStorage.setItem(SSO_CALLBACK_PARAMS_KEY, JSON.stringify(snapshot));\n }\n\n /**\n * Subscribe to angular-oauth2-oidc lifecycle events.\n * Handles token refresh failures and session termination by clearing local auth state.\n * On silent refresh success, re-syncs the state signal.\n */\n private listenToTokenEvents(): void {\n this.oauthService.events.subscribe(event => {\n switch (event.type) {\n case 'token_refresh_error':\n case 'session_error':\n case 'session_terminated':\n // Silent refresh failed or SSO session ended — clear local state.\n this.isAuthenticated.set(false);\n this.currentUser.set(null);\n localStorage.removeItem(STORAGE_KEYS.USER_PROFILE);\n break;\n case 'token_received':\n // New token received after a silent refresh — re-sync.\n this.syncState();\n break;\n default:\n break;\n }\n });\n }\n\n private syncState(): void {\n const authenticated = this.oauthService.hasValidAccessToken();\n this.isAuthenticated.set(authenticated);\n\n if (authenticated) {\n const claims = this.oauthService.getIdentityClaims();\n const user = toSsoUser(claims);\n this.currentUser.set(user);\n // Persist user profile to localStorage so components can read it\n // synchronously on page load before the signal is populated.\n if (user) {\n localStorage.setItem(STORAGE_KEYS.USER_PROFILE, JSON.stringify(user));\n }\n } else {\n localStorage.removeItem(STORAGE_KEYS.USER_PROFILE);\n }\n }\n}\n\n/**\n * Validates OIDC identity claims and narrows to SsoUser.\n * Requires at minimum a non-empty `sub` claim — the OIDC subject identifier.\n * Returns null if claims are missing or malformed.\n */\nfunction toSsoUser(claims: object | null): SsoUser | null {\n if (!claims || typeof claims !== 'object') {\n return null;\n }\n const c = claims as Record<string, unknown>;\n if (typeof c['sub'] !== 'string' || !c['sub']) {\n return null;\n }\n return c as unknown as SsoUser;\n}\n\n/**\n * Returns true only for safe local (relative) app paths.\n * Rejects external URLs, protocol-relative URLs, and anything that could\n * redirect the user outside the app after SSO login.\n */\nfunction isSafeLocalPath(url: string): boolean {\n return url.startsWith('/') && !url.startsWith('//') && !url.includes('://');\n}\n","import { Injectable, signal } from '@angular/core';\nimport { HttpContextToken, HttpResponse } from '@angular/common/http';\nimport { CACHE_DEFAULTS } from '../constants/http.constants';\n\nexport const CACHE_ENABLED = new HttpContextToken<boolean>(() => true);\nexport const CACHE_TTL = new HttpContextToken<number>(() => CACHE_DEFAULTS.TTL_MS);\n\ninterface CacheEntry {\n response: HttpResponse<unknown>;\n timestamp: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class HttpCacheService {\n private readonly store = new Map<string, CacheEntry>();\n readonly size = signal(0);\n\n get(url: string, ttl = CACHE_DEFAULTS.TTL_MS): HttpResponse<unknown> | null {\n const entry = this.store.get(url);\n if (!entry) {\n return null;\n }\n\n if (Date.now() - entry.timestamp > ttl) {\n this.store.delete(url);\n this.syncSize();\n return null;\n }\n\n this.store.delete(url);\n this.store.set(url, entry);\n return entry.response;\n }\n\n set(url: string, response: HttpResponse<unknown>): void {\n if (this.store.size >= CACHE_DEFAULTS.MAX_SIZE) {\n const oldestKey = this.store.keys().next().value;\n if (oldestKey) {\n this.store.delete(oldestKey);\n }\n }\n this.store.set(url, { response, timestamp: Date.now() });\n this.syncSize();\n }\n\n clear(url?: string): void {\n if (url) {\n this.store.delete(url);\n } else {\n this.store.clear();\n }\n this.syncSize();\n }\n\n clearPattern(pattern: RegExp): void {\n let deleted = false;\n for (const key of this.store.keys()) {\n if (pattern.test(key)) {\n this.store.delete(key);\n deleted = true;\n }\n }\n if (deleted) {\n this.syncSize();\n }\n }\n\n private syncSize(): void {\n this.size.set(this.store.size);\n }\n}\n","import { Injectable, signal, computed } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LoadingService {\n private readonly globalCounter = signal(0);\n private readonly operations = signal<ReadonlySet<string>>(new Set());\n\n readonly isLoading = computed(() => this.globalCounter() > 0);\n readonly count = this.globalCounter.asReadonly();\n readonly activeOperations = this.operations.asReadonly();\n\n show(): void {\n this.globalCounter.update(n => n + 1);\n }\n\n hide(): void {\n this.globalCounter.update(n => Math.max(0, n - 1));\n }\n\n reset(): void {\n this.globalCounter.set(0);\n }\n\n start(key: string): void {\n this.operations.update(set => new Set(set).add(key));\n }\n\n stop(key: string): void {\n this.operations.update(set => {\n const next = new Set(set);\n next.delete(key);\n return next;\n });\n }\n\n isActive(key: string): boolean {\n return this.operations().has(key);\n }\n}\n","import { HttpContextToken, HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { finalize } from 'rxjs';\nimport { LoadingService } from '../services/loading.service';\n\nexport const SKIP_LOADING = new HttpContextToken<boolean>(() => false);\n\nexport const loadingInterceptor: HttpInterceptorFn = (req, next) => {\n if (req.context.get(SKIP_LOADING)) {\n return next(req);\n }\n\n const loading = inject(LoadingService);\n loading.show();\n return next(req).pipe(finalize(() => loading.hide()));\n};\n","import { HttpContextToken, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { retry, timer } from 'rxjs';\nimport { RETRY_DEFAULTS, RETRYABLE_STATUS_CODES, IDEMPOTENT_METHODS } from '../constants/http.constants';\n\nexport const SKIP_RETRY = new HttpContextToken<boolean>(() => false);\nexport const MAX_RETRY_COUNT = new HttpContextToken<number>(() => RETRY_DEFAULTS.MAX_COUNT);\n\nexport const retryInterceptor: HttpInterceptorFn = (req, next) => {\n if (req.context.get(SKIP_RETRY)) {\n return next(req);\n }\n\n return next(req).pipe(\n retry({\n count: req.context.get(MAX_RETRY_COUNT),\n delay: (error, retryCount) => {\n const isRetryable =\n error instanceof HttpErrorResponse &&\n IDEMPOTENT_METHODS.has(req.method) &&\n RETRYABLE_STATUS_CODES.has(error.status);\n\n if (!isRetryable) {\n throw error;\n }\n\n return timer(Math.pow(2, retryCount - 1) * RETRY_DEFAULTS.BACKOFF_BASE_MS);\n },\n })\n );\n};\n","import { HttpContextToken } from '@angular/common/http';\n\n/** Set to true to skip attaching the Authorization header on a request. */\nexport const SKIP_AUTH = new HttpContextToken<boolean>(() => false);\n","import { HttpContextToken } from '@angular/common/http';\n\n/** Set to true to skip the global error interceptor toast handling for a request. */\nexport const SKIP_ERROR_HANDLING = new HttpContextToken<boolean>(() => false);\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient, HttpContext, HttpHeaders, HttpParams, HttpEvent, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { ENVIRONMENT } from '../environments/environment.token';\nimport { CACHE_ENABLED, CACHE_TTL } from './http-cache.service';\nimport { SKIP_LOADING } from '../interceptors/loading.interceptor';\nimport { SKIP_RETRY } from '../interceptors/retry.interceptor';\nimport { SKIP_AUTH } from '../interceptors/skip-auth.token';\nimport { SKIP_ERROR_HANDLING } from '../interceptors/skip-error.token';\n\ntype HttpParamsArg = HttpParams | Record<string, string | string[]>;\ntype HttpHeadersArg = HttpHeaders | Record<string, string | string[]>;\n\nexport interface ApiRequestOptions {\n params?: HttpParamsArg;\n headers?: HttpHeadersArg;\n skipLoading?: boolean;\n skipCache?: boolean;\n cacheTTL?: number;\n skipRetry?: boolean;\n skipErrorHandling?: boolean;\n skipAuth?: boolean;\n fullUrl?: boolean;\n responseType?: 'json' | 'blob' | 'text' | 'arraybuffer';\n observe?: 'body' | 'response' | 'events';\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ApiService {\n private readonly http = inject(HttpClient);\n private readonly env = inject(ENVIRONMENT);\n\n get<T>(path: string, options: ApiRequestOptions & { observe: 'response' }): Observable<HttpResponse<T>>;\n get<T>(path: string, options: ApiRequestOptions & { observe: 'events' }): Observable<HttpEvent<T>>;\n get<T>(path: string, options?: ApiRequestOptions): Observable<T>;\n get<T>(path: string, options?: ApiRequestOptions): Observable<T | HttpResponse<T> | HttpEvent<T>> {\n return this.http.get<T>(this.resolveUrl(path, options), {\n ...this.buildHttpOptions(options),\n responseType: (options?.responseType as any) || 'json',\n observe: options?.observe as any,\n }) as Observable<any>;\n }\n\n post<T>(\n path: string,\n body: unknown,\n options: ApiRequestOptions & { observe: 'response' }\n ): Observable<HttpResponse<T>>;\n post<T>(path: string, body: unknown, options: ApiRequestOptions & { observe: 'events' }): Observable<HttpEvent<T>>;\n post<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T>;\n post<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T | HttpResponse<T> | HttpEvent<T>> {\n return this.http.post<T>(this.resolveUrl(path, options), body, {\n ...this.buildHttpOptions(options),\n responseType: (options?.responseType as any) || 'json',\n observe: options?.observe as any,\n }) as Observable<any>;\n }\n\n put<T>(\n path: string,\n body: unknown,\n options: ApiRequestOptions & { observe: 'response' }\n ): Observable<HttpResponse<T>>;\n put<T>(path: string, body: unknown, options: ApiRequestOptions & { observe: 'events' }): Observable<HttpEvent<T>>;\n put<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T>;\n put<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T | HttpResponse<T> | HttpEvent<T>> {\n return this.http.put<T>(this.resolveUrl(path, options), body, {\n ...this.buildHttpOptions(options),\n responseType: (options?.responseType as any) || 'json',\n observe: options?.observe as any,\n }) as Observable<any>;\n }\n\n patch<T>(\n path: string,\n body: unknown,\n options: ApiRequestOptions & { observe: 'response' }\n ): Observable<HttpResponse<T>>;\n patch<T>(path: string, body: unknown, options: ApiRequestOptions & { observe: 'events' }): Observable<HttpEvent<T>>;\n patch<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T>;\n patch<T>(path: string, body: unknown, options?: ApiRequestOptions): Observable<T | HttpResponse<T> | HttpEvent<T>> {\n return this.http.patch<T>(this.resolveUrl(path, options), body, {\n ...this.buildHttpOptions(options),\n responseType: (options?.responseType as any) || 'json',\n observe: options?.observe as any,\n }) as Observable<any>;\n }\n\n delete<T>(path: string, options: ApiRequestOptions & { observe: 'response' }): Observable<HttpResponse<T>>;\n delete<T>(path: string, options: ApiRequestOptions & { observe: 'events' }): Observable<HttpEvent<T>>;\n delete<T>(path: string, options?: ApiRequestOptions): Observable<T>;\n delete<T>(path: string, options?: ApiRequestOptions): Observable<T | HttpResponse<T> | HttpEvent<T>> {\n return this.http.delete<T>(this.resolveUrl(path, options), {\n ...this.buildHttpOptions(options),\n responseType: (options?.responseType as any) || 'json',\n observe: options?.observe as any,\n }) as Observable<any>;\n }\n\n upload(path: string, formData: FormData, options?: ApiRequestOptions): Observable<HttpEvent<unknown>> {\n return this.http.post(this.resolveUrl(path, options), formData, {\n ...this.buildHttpOptions({ skipRetry: true, skipCache: true, ...options }),\n reportProgress: true,\n observe: 'events',\n });\n }\n\n download(path: string, options?: ApiRequestOptions): Observable<Blob> {\n return this.http.get(this.resolveUrl(path, options), {\n ...this.buildHttpOptions({ skipCache: true, ...options }),\n responseType: 'blob',\n });\n }\n\n private resolveUrl(path: string, options?: ApiRequestOptions): string {\n return options?.fullUrl ? path : `${this.env.apiUrl}${path}`;\n }\n\n private buildHttpOptions(options?: ApiRequestOptions): {\n params?: HttpParamsArg;\n headers?: HttpHeadersArg;\n context: HttpContext;\n } {\n const ctx = new HttpContext();\n\n if (options?.skipLoading) {\n ctx.set(SKIP_LOADING, true);\n }\n if (options?.skipCache) {\n ctx.set(CACHE_ENABLED, false);\n }\n if (options?.cacheTTL != null) {\n ctx.set(CACHE_TTL, options.cacheTTL);\n }\n if (options?.skipRetry) {\n ctx.set(SKIP_RETRY, true);\n }\n if (options?.skipAuth) {\n ctx.set(SKIP_AUTH, true);\n }\n if (options?.skipErrorHandling) {\n ctx.set(SKIP_ERROR_HANDLING, true);\n }\n\n return { params: options?.params, headers: options?.headers, context: ctx };\n }\n}\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport { Observable, map, tap, throwError } from 'rxjs';\nimport { STORAGE_KEYS, API_ENDPOINTS } from '../constants';\nimport { OidcAuthService, SsoUser, SSO_CALLBACK_PARAMS_KEY, SSO_REDIRECT_URL_KEY } from './oidc-auth.service';\nimport { ApiService } from './api.service';\nimport { JwtPayload } from '../models/auth.models';\n\nexport type { JwtPayload };\n\n/** Facade that unifies OIDC (MOMRAH SSO) and standard JWT authentication. */\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n private readonly oidc = inject(OidcAuthService);\n private readonly api = inject(ApiService);\n\n /** True when a standard JWT is stored locally (non-SSO login). */\n private readonly _jwtAuthenticated = signal<boolean>(this.checkJwt());\n\n /** Decoded payload from the stored backend JWT — populated by login(), cleared by logout(). */\n private readonly _jwtUser = signal<JwtPayload | null>(this.readJwtUser());\n\n /** True if the user is authenticated via SSO or standard JWT. */\n readonly isAuthenticated = computed<boolean>(() => this.oidc.isAuthenticated() || this._jwtAuthenticated());\n\n readonly identityNumber = signal<string>(localStorage.getItem(STORAGE_KEYS.NAFATH_IDENTITY) ?? '');\n\n /** True when SSO is enabled in the current environment. */\n get isSsoEnabled(): boolean {\n return this.oidc.isSsoEnabled;\n }\n\n /** SSO user claims from the OIDC identity token. Null for standard JWT logins. */\n readonly currentUser = computed<SsoUser | null>(() => this.oidc.currentUser());\n\n /** Decoded JWT payload for standard (non-SSO) logins. Null for SSO logins. */\n readonly jwtUser = computed<JwtPayload | null>(() => this._jwtUser());\n\n // ─── SSO Flow ────────────────────────────────────────────────────────────────\n\n /**\n * Redirect to the MOMRAH SSO login page.\n * Pass `redirectUrl` to restore the user to a specific page after login.\n */\n loginWithSso(redirectUrl?: string): void {\n this.oidc.loginWithSso(redirectUrl);\n }\n\n /**\n * Returns the saved post-login redirect URL and removes it from localStorage.\n * Call this in the SSO callback component after successful login.\n */\n getAndClearRedirectUrl(): string | null {\n return this.oidc.getAndClearRedirectUrl();\n }\n\n /**\n * Exchange the OIDC access token for a backend JWT and mark the session as authenticated.\n * Call this from the SSO callback component after OIDC has processed the authorization code.\n * Emits once on success; errors if the OIDC token is missing or the backend rejects it.\n */\n completeSsoCallback(): Observable<void> {\n const accessToken = this.oidc.getAccessToken();\n if (!accessToken) {\n return throwError(() => new Error('No OIDC access token — code exchange may have failed'));\n }\n return this.api\n .post<{ token: string }>(\n API_ENDPOINTS.AUTH.SSO_CALLBACK,\n { accessToken },\n {\n skipAuth: true,\n skipErrorHandling: true, // SsoCallback handles errors by redirecting to /sso-error\n }\n )\n .pipe(\n tap(response => this.login(response.token)),\n map(() => void 0)\n );\n }\n\n /**\n * Build the OIDC RP-initiated logout URL for SSO end-session.\n * Must be called BEFORE logout() because logout() clears the stored id_token.\n * Returns null when SSO is disabled, not authenticated via SSO, or id_token is missing.\n */\n buildEndSessionUrl(): string | null {\n return this.oidc.buildEndSessionUrl();\n }\n\n /**\n * Fetch fresh user attributes from the MOMRAH SSO UserInfo endpoint and\n * sync the `currentUser` signal with updated claims.\n *\n * Per spec: \"the outcome of the update profile scenario is a renewed JWT\n * Token via the User Info Endpoint.\"\n *\n * Call this after redirecting the user back from the SSO profile update page.\n */\n refreshUserInfo(): Promise<void> {\n return this.oidc.refreshUserInfo();\n }\n\n // ─── Standard JWT Flow ───────────────────────────────────────────────────────\n\n /**\n * Store a backend JWT, decode its payload, and mark the session as authenticated.\n * Decoded user data is saved to USER_PROFILE for synchronous reads on page reload.\n * Real permissions/roles from the token replace any previously stored values.\n */\n login(token: string): void {\n localStorage.setItem(STORAGE_KEYS.AUTH_TOKEN, token);\n\n const payload = decodeJwtPayload(token);\n\n // Persist real permissions/roles from the token payload.\n const permissions = payload?.permissions ?? payload?.roles ?? [];\n localStorage.setItem(STORAGE_KEYS.PERMISSIONS, JSON.stringify(permissions));\n\n // Persist decoded user profile so components can read synchronously on reload.\n if (payload) {\n localStorage.setItem(STORAGE_KEYS.USER_PROFILE, JSON.stringify(payload));\n this._jwtUser.set(payload);\n }\n\n this._jwtAuthenticated.set(true);\n }\n\n /**\n * Initiate login via Nafath using the user's ID number.\n * Backend endpoint: /user/api/usersmanagement/Auth/LoginViaNafath\n */\n loginViaNafath(idNumber: string): Observable<void> {\n interface NafathLoginViaNafathResponse {\n isSuccess?: boolean;\n value?: {\n accessToken?: string;\n refreshToken?: string;\n };\n }\n\n return this.api\n .post<NafathLoginViaNafathResponse>(\n '/user/api/usersmanagement/Auth/LoginViaNafath',\n { idNumber },\n {\n skipAuth: true,\n fullUrl: true,\n }\n )\n .pipe(\n tap(resp => {\n const accessToken = resp?.value?.accessToken;\n if (!accessToken) {\n return;\n }\n\n // Store access token using the existing JWT login flow.\n this.login(accessToken);\n\n const refreshToken = resp?.value?.refreshToken;\n if (refreshToken) {\n localStorage.setItem(STORAGE_KEYS.REFRESH_TOKEN, refreshToken);\n }\n }),\n map(() => void 0)\n );\n }\n\n // ─── Shared ───────────────────────────────────────────────────────────────────\n\n /** Clear all session data (SSO and JWT). Navigation is handled by the caller. */\n logout(): void {\n localStorage.removeItem(STORAGE_KEYS.AUTH_TOKEN);\n localStorage.removeItem(STORAGE_KEYS.REFRESH_TOKEN);\n localStorage.removeItem(STORAGE_KEYS.PERMISSIONS);\n localStorage.removeItem(STORAGE_KEYS.USER_PROFILE);\n // Clear SSO callback param snapshot and saved redirect URL.\n localStorage.removeItem(SSO_CALLBACK_PARAMS_KEY);\n localStorage.removeItem(SSO_REDIRECT_URL_KEY);\n localStorage.removeItem(STORAGE_KEYS.NAFATH_IDENTITY);\n this.identityNumber.set('');\n this._jwtAuthenticated.set(false);\n this._jwtUser.set(null);\n // Always clear OIDC tokens — covers cases where the access token has\n // expired but the id_token is still in storage (oidc.isAuthenticated()\n // would return false but stale tokens would remain without this call).\n this.oidc.logout();\n }\n\n /** Returns the active access token (OIDC takes precedence over JWT). */\n getAccessToken(): string | null {\n return this.oidc.getAccessToken() ?? localStorage.getItem(STORAGE_KEYS.AUTH_TOKEN);\n }\n\n /** Returns true if the user has all of the given permission(s). */\n hasPermission(permission: string | string[]): boolean {\n if (!this.isAuthenticated()) {\n return false;\n }\n const stored = localStorage.getItem(STORAGE_KEYS.PERMISSIONS);\n const permissions: string[] = stored ? (JSON.parse(stored) as string[]) : [];\n const required = Array.isArray(permission) ? permission : [permission];\n return required.every(p => permissions.includes(p));\n }\n\n private checkJwt(): boolean {\n return !!localStorage.getItem(STORAGE_KEYS.AUTH_TOKEN);\n }\n\n /** Read and decode the stored JWT on service init to hydrate the jwtUser signal. */\n private readJwtUser(): JwtPayload | null {\n const token = localStorage.getItem(STORAGE_KEYS.AUTH_TOKEN);\n return token ? decodeJwtPayload(token) : null;\n }\n\n /** Store the national identity number from Nafath login. */\n setIdentityNumber(id: string): void {\n localStorage.setItem(STORAGE_KEYS.NAFATH_IDENTITY, id);\n this.identityNumber.set(id);\n }\n}\n\n/**\n * Decodes the payload segment of a JWT without verifying the signature.\n * Uses base64url decoding (replaces - with + and _ with /) then JSON.parse.\n * Returns null if the token is malformed or the payload cannot be parsed.\n */\nfunction decodeJwtPayload(token: string): JwtPayload | null {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) {\n return null;\n }\n // Base64url → standard base64, then pad to a multiple of 4.\n const base64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');\n const padded = base64 + '='.repeat((4 - (base64.length % 4)) % 4);\n // Decode bytes → percent-encoded UTF-8 → Unicode string.\n const json = decodeURIComponent(\n atob(padded)\n .split('')\n .map(c => `%${c.charCodeAt(0).toString(16).padStart(2, '0')}`)\n .join('')\n );\n return JSON.parse(json) as JwtPayload;\n } catch {\n return null;\n }\n}\n","/**\n * Auth domain models.\n * SsoUser — OIDC identity claims from the MOMRAH SSO ID token.\n * JwtPayload — decoded payload from the backend-issued JWT.\n */\n\n/** User claims returned from the MOMRAH SSO ID token. */\nexport interface SsoUser {\n readonly sub: string;\n readonly preferred_username: string;\n readonly given_name: string;\n readonly family_name: string;\n readonly email: string;\n readonly ar_name?: string;\n readonly en_name?: string;\n readonly id_no?: string;\n readonly nid?: string;\n readonly id_type?: string;\n readonly sex?: string;\n readonly dob?: string;\n readonly phone?: string;\n}\n\n/**\n * Decoded payload from the backend-issued JWT.\n * Fields mirror standard OIDC/JWT claims; app-specific claims vary by backend.\n */\nexport interface JwtPayload {\n readonly sub?: string;\n readonly email?: string;\n readonly name?: string;\n readonly given_name?: string;\n readonly family_name?: string;\n readonly preferred_username?: string;\n readonly phone?: string;\n readonly roles?: string[];\n readonly permissions?: string[];\n readonly exp?: number;\n readonly iat?: number;\n}\n","import { HttpParams } from '@angular/common/http';\n\ntype Primitive = string | number | boolean;\ntype ParamValue = Primitive | Primitive[] | Date | null | undefined;\n\n/**\n * Converts a flat or nested object into `HttpParams`.\n *\n * - `null` / `undefined` values are skipped.\n * - `Date` values are serialized to ISO-8601 strings.\n * - Arrays produce repeated keys: `{ ids: [1,2] }` → `ids=1&ids=2`.\n * - Nested objects are flattened with bracket notation: `{ filter: { name: 'x' } }` → `filter[name]=x`.\n */\nexport function toHttpParams(obj: Record<string, ParamValue | Record<string, ParamValue>>): HttpParams {\n let params = new HttpParams();\n\n for (const [key, value] of Object.entries(obj)) {\n if (value == null) {\n continue;\n }\n\n if (isPlainObject(value)) {\n for (const [nestedKey, nestedValue] of Object.entries(value as Record<string, ParamValue>)) {\n params = appendParam(params, `${key}[${nestedKey}]`, nestedValue);\n }\n } else {\n params = appendParam(params, key, value as ParamValue);\n }\n }\n\n return params;\n}\n\n/**\n * Converts a flat or nested object into a `FormData` instance.\n *\n * - `null` / `undefined` values are skipped.\n * - `File` and `Blob` values are appended as-is.\n * - `Date` values are serialized to ISO-8601 strings.\n * - Arrays produce repeated keys: `{ tags: ['a','b'] }` → two `tags` entries.\n * - Nested objects are flattened with bracket notation: `{ address: { city: 'x' } }` → `address[city]=x`.\n */\nexport function toFormData(obj: Record<string, unknown>): FormData {\n const fd = new FormData();\n appendToFormData(fd, obj, '');\n return fd;\n}\n\nfunction appendParam(params: HttpParams, key: string, value: ParamValue): HttpParams {\n if (value == null) {\n return params;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item != null) {\n params = params.append(key, serializePrimitive(item));\n }\n }\n return params;\n }\n\n return params.append(key, value instanceof Date ? value.toISOString() : String(value));\n}\n\nfunction appendToFormData(fd: FormData, data: Record<string, unknown>, prefix: string): void {\n for (const [key, value] of Object.entries(data)) {\n const fullKey = prefix ? `${prefix}[${key}]` : key;\n\n if (value == null) {\n continue;\n }\n\n if (value instanceof File || value instanceof Blob) {\n fd.append(fullKey, value);\n } else if (value instanceof Date) {\n fd.append(fullKey, value.toISOString());\n } else if (Array.isArray(value)) {\n for (const item of value) {\n if (item == null) {\n continue;\n }\n if (item instanceof File || item instanceof Blob) {\n fd.append(fullKey, item);\n } else if (isPlainObject(item)) {\n appendToFormData(fd, item as Record<string, unknown>, fullKey);\n } else {\n fd.append(fullKey, String(item));\n }\n }\n } else if (isPlainObject(value)) {\n appendToFormData(fd, value as Record<string, unknown>, fullKey);\n } else {\n fd.append(fullKey, String(value));\n }\n }\n}\n\nfunction serializePrimitive(value: Primitive): string {\n return String(value);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Date) &&\n !(value instanceof File) &&\n !(value instanceof Blob) &&\n !Array.isArray(value)\n );\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ERROR_MESSAGE_MAX_LENGTH, MAX_FIELD_ERRORS_SHOWN } from '../constants/http.constants';\n\n/**\n * Tries to extract a human-readable message from common API error shapes:\n * { message: \"...\" } | { error: \"...\" } | { detail: \"...\" }\n * { error: { message: \"...\" } } | \"plain string body\"\n * { errors: [{ description/message/... }] }\n * { validationErrors: [...] } | { fieldErrors: {...} }\n */\nexport function extractApiErrorMessage(error: HttpErrorResponse): string | null {\n const body = error.error;\n\n // Plain string body — truncate long values; skip raw HTML pages\n if (typeof body === 'string' && body.length > 0 && !body.trimStart().startsWith('<')) {\n return truncate(body, ERROR_MESSAGE_MAX_LENGTH);\n }\n\n if (!body || typeof body !== 'object') {\n return null;\n }\n\n const bodyObj = body as Record<string, unknown>;\n\n // errors / validationErrors / fieldErrors aliases\n const errors = bodyObj['errors'] ?? bodyObj['validationErrors'] ?? bodyObj['fieldErrors'];\n\n // Plain string errors field\n if (typeof errors === 'string' && errors.length > 0) {\n return truncate(errors, ERROR_MESSAGE_MAX_LENGTH);\n }\n\n // Array of error objects — mutually exclusive with object branch (fixes double-processing bug)\n if (Array.isArray(errors)) {\n for (const entry of errors) {\n if (!isObject(entry)) {\n continue;\n }\n const msg = extractMessageFromObject(entry);\n if (msg) {\n return truncate(msg, ERROR_MESSAGE_MAX_LENGTH);\n }\n }\n } else if (isObject(errors)) {\n for (const value of Object.values(errors)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (typeof item === 'string' && item.length > 0) {\n return truncate(item, ERROR_MESSAGE_MAX_LENGTH);\n }\n if (isObject(item)) {\n const msg = extractMessageFromObject(item);\n if (msg) {\n return truncate(msg, ERROR_MESSAGE_MAX_LENGTH);\n }\n }\n }\n } else if (isObject(value)) {\n const msg = extractMessageFromObject(value);\n if (msg) {\n return truncate(msg, ERROR_MESSAGE_MAX_LENGTH);\n }\n }\n }\n }\n\n // Top-level message fields as fallback\n const directMessage = extractMessageFromObject(bodyObj);\n if (directMessage) {\n return truncate(directMessage, ERROR_MESSAGE_MAX_LENGTH);\n }\n\n return null;\n}\n\n/**\n * Extracts per-field validation errors from 422 response bodies.\n * Returns a formatted multi-line string or `null` if no field errors found.\n */\nexport function extractFieldErrors(error: HttpErrorResponse): string | null {\n const body = error.error;\n const errorsObj = body?.errors ?? body?.validationErrors ?? body?.fieldErrors;\n\n if (!errorsObj || typeof errorsObj !== 'object') {\n return null;\n }\n\n const messages = flattenFieldMessages(errorsObj);\n if (messages.length === 0) {\n return null;\n }\n\n const visible = messages.slice(0, MAX_FIELD_ERRORS_SHOWN);\n const overflow = messages.length - MAX_FIELD_ERRORS_SHOWN;\n return overflow > 0 ? `${visible.join('\\n')}\\n… +${overflow}` : visible.join('\\n');\n}\n\nfunction flattenFieldMessages(errors: Record<string, unknown> | unknown[]): string[] {\n if (Array.isArray(errors)) {\n return errors\n .map(entry => {\n if (typeof entry === 'string') {\n return entry;\n }\n if (isObject(entry)) {\n // description added alongside message/msg/error\n const msg =\n (entry as Record<string, unknown>)['description'] ??\n (entry as Record<string, unknown>)['message'] ??\n (entry as Record<string, unknown>)['msg'] ??\n (entry as Record<string, unknown>)['error'];\n const field =\n (entry as Record<string, unknown>)['field'] ??\n (entry as Record<string, unknown>)['path'] ??\n (entry as Record<string, unknown>)['param'];\n if (typeof msg === 'string') {\n return field ? `${field}: ${msg}` : msg;\n }\n }\n return '';\n })\n .filter(Boolean);\n }\n\n return Object.entries(errors).flatMap(([field, value]) => {\n if (Array.isArray(value)) {\n // Handle both string[] and object[] array values\n return value.flatMap(v => {\n if (typeof v === 'string') {\n return [`${field}: ${v}`];\n }\n if (isObject(v)) {\n const msg = extractMessageFromObject(v);\n if (msg) {\n return [`${field}: ${msg}`];\n }\n }\n return [];\n });\n }\n if (typeof value === 'string') {\n return [`${field}: ${value}`];\n }\n if (isObject(value)) {\n const msg = (value as Record<string, unknown>)['message'] ?? (value as Record<string, unknown>)['msg'];\n if (typeof msg === 'string') {\n return [`${field}: ${msg}`];\n }\n }\n return [];\n });\n}\n\nfunction isObject(val: unknown): val is Record<string, unknown> {\n return typeof val === 'object' && val !== null && !Array.isArray(val);\n}\n\nfunction extractMessageFromObject(value: Record<string, unknown>): string | null {\n const msg =\n value['description'] ??\n value['message'] ??\n (isObject(value['error']) ? value['error']['message'] : value['error']) ??\n value['detail'] ??\n value['title'] ??\n value['reason'];\n\n if (typeof msg === 'string' && msg.trim().length > 0) {\n return msg.trim();\n }\n\n return null;\n}\n\nfunction truncate(value: string, max: number): string {\n return value.length > max ? `${value.substring(0, max - 1)}…` : value;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport type { ToastService } from '../services/toast.service';\nimport { HttpErrorKey } from '../enums/http-error-key.enum';\nimport { extractApiErrorMessage } from './error-body-parser';\n\n/** Set by error interceptor when it has already shown a toast for this error. */\nexport const TOAST_SHOWN_BY_INTERCEPTOR = '__toastShownByInterceptor';\n\n/**\n * Shows a toast for an API error.\n * Skips when error interceptor already showed a toast (avoids duplicates).\n * Use in subscribe error callbacks for all API calls.\n */\nexport function showApiErrorToast(toast: ToastService, error?: unknown): void {\n if (error && typeof error === 'object' && (error as Record<string, unknown>)[TOAST_SHOWN_BY_INTERCEPTOR]) {\n return;\n }\n\n if (error instanceof HttpErrorResponse) {\n const message = extractApiErrorMessage(error);\n message ? toast.error(message) : toast.translateAndShow('error', HttpErrorKey.UNKNOWN);\n return;\n }\n\n const message = extractErrorMessage(error);\n if (message) {\n toast.error(message);\n } else {\n toast.translateAndShow('error', HttpErrorKey.UNKNOWN);\n }\n}\n\n/**\n * Creates an error handler for API subscribe callbacks.\n * Shows toast on error and optionally runs a callback (e.g. reset loading state).\n */\nexport function createApiErrorHandler(toast: ToastService, onError?: () => void): (error?: unknown) => void {\n return (error?: unknown) => {\n showApiErrorToast(toast, error);\n onError?.();\n };\n}\n\nfunction extractErrorMessage(error: unknown): string | null {\n if (error instanceof Error) {\n return error.message || null;\n }\n if (typeof error === 'string' && error.length > 0) {\n return error;\n }\n return null;\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { I18N_CONFIG } from '../constants/i18n.constants';\n\ntype DateInput = Date | string | number | null | undefined;\n\nconst LOCALE_MAP: Record<string, string> = {\n ar: 'ar-SA',\n en: 'en-US',\n};\n\nfunction withArabicNumbering(lang: string, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions {\n if (lang !== 'ar') {\n return options;\n }\n return { ...options, numberingSystem: 'latn' };\n}\n\nconst PRESET_FORMATS: Record<string, Intl.DateTimeFormatOptions> = {\n short: { day: 'numeric', month: 'numeric', year: 'numeric' },\n medium: { day: 'numeric', month: 'short', year: 'numeric' },\n long: { day: 'numeric', month: 'long', year: 'numeric' },\n full: { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' },\n time: { hour: '2-digit', minute: '2-digit' },\n datetime: { day: 'numeric', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit' },\n dateTimeFull: {\n day: '2-digit',\n month: 'long',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n },\n /** Date + time design format: \"18 يوليو 2024 - ص 9:22\" (ar) / \"18 July 2024 - 9:22 AM\" (en) */\n recordDateTime: {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n },\n};\n\n/**\n * Formats a date according to the current app language.\n *\n * Usage:\n * {{ date | localizedDate }} → \"12 أبريل 2025\" (ar) / \"12 April 2025\" (en)\n * {{ date | localizedDate:'short' }} → \"12/4/2025\"\n * {{ date | localizedDate:'full' }} → \"السبت، 12 أبريل 2025\"\n * {{ date | localizedDate:'time' }} → \"03:30 م\"\n * {{ date | localizedDate:'datetime' }} → \"12 أبريل 2025، 03:30 م\"\n * {{ date | localizedDate:'dateTimeFull' }} → \"12 أبريل 2025 3:30 م\"\n * {{ date | localizedDate:'recordDateTime' }} → \"18 يوليو 2024 - ص 9:22\" (ar) / \"18 July 2024 - 9:22 AM\" (en)\n */\n@Pipe({ name: 'localizedDate', pure: false })\nexport class LocalizedDatePipe implements PipeTransform {\n private readonly translate = inject(TranslateService);\n\n transform(value: DateInput, format: keyof typeof PRESET_FORMATS = 'long'): string {\n if (value == null) {\n return '';\n }\n\n const date = toDate(value);\n if (!date) {\n return '';\n }\n\n const lang = this.translate.currentLang ?? I18N_CONFIG.DEFAULT_LANGUAGE;\n const locale = LOCALE_MAP[lang] ?? lang;\n\n if (format === 'recordDateTime') {\n const dateOptions = withArabicNumbering(lang, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n const dateStr = new Intl.DateTimeFormat(locale, dateOptions).format(date);\n\n const hour = date.getHours();\n const minute = date.getMinutes();\n const isPM = hour >= 12;\n const hour12 = hour % 12 || 12;\n const minPadded = minute.toString().padStart(2, '0');\n\n const timeStr =\n lang === 'ar' ? `${isPM ? 'م' : 'ص'} ${hour12}:${minPadded}` : `${hour12}:${minPadded} ${isPM ? 'PM' : 'AM'}`;\n\n return `${dateStr} - ${timeStr}`;\n }\n\n const options = withArabicNumbering(lang, PRESET_FORMATS[format] ?? PRESET_FORMATS['long']);\n return new Intl.DateTimeFormat(locale, options).format(date);\n }\n}\n\nfunction toDate(value: NonNullable<DateInput>): Date | null {\n if (value instanceof Date) {\n return isNaN(value.getTime()) ? null : value;\n }\n\n const parsed = new Date(typeof value === 'string' ? value : Number(value));\n return isNaN(parsed.getTime()) ? null : parsed;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst ARABIC_TO_ENGLISH: Record<string, string> = {\n '٠': '0',\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n};\n\n/**\n * Converts numbers and strings to English numerals only (0–9).\n * Use when displaying counts, IDs, etc. in a bilingual context.\n *\n * Usage:\n * {{ count | englishNumber }} → \"123\" (always 0–9)\n * {{ \"١٢٣\" | englishNumber }} → \"123\"\n */\n@Pipe({ name: 'englishNumber' })\nexport class EnglishNumberPipe implements PipeTransform {\n transform(value: number | string | null | undefined): string {\n if (value == null) {\n return '';\n }\n\n const str = String(value);\n\n return str.replace(/[٠-٩]/g, d => ARABIC_TO_ENGLISH[d] ?? d);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * A pipe that replaces a substring within a string.\n *\n * Usage:\n * {{ value | replace: 'oldValue' : 'newValue' }}\n * {{ 'Hello World' | replace: 'World' : 'Angular' }} → 'Hello Angular'\n */\n@Pipe({\n name: 'replace',\n standalone: true,\n})\nexport class ReplacePipe implements PipeTransform {\n transform(value: string | null | undefined, searchValue: string, replaceValue = ''): string {\n if (!value) {\n return '';\n }\n\n if (!searchValue) {\n return value;\n }\n\n return value.replace(searchValue, replaceValue).trim();\n }\n}\n","import { Injectable, inject, signal, computed, DestroyRef, PLATFORM_ID } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PrimeNG } from 'primeng/config';\nimport { Language } from '../enums/language.enum';\nimport { I18N_CONFIG } from '../constants/i18n.constants';\nimport { PRIMENG_LOCALE } from '../constants/primeng-locale.constants';\nimport { STORAGE_KEYS } from '../constants/storage-keys.constants';\n\nconst RTL_LANGUAGES = new Set<string>([Language.AR]);\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService {\n private readonly translate = inject(TranslateService);\n private readonly primeNG = inject(PrimeNG);\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly currentLang = signal<string>(I18N_CONFIG.DEFAULT_LANGUAGE);\n\n readonly language = this.currentLang.asReadonly();\n readonly isRtl = computed(() => RTL_LANGUAGES.has(this.currentLang()));\n\n init(): void {\n const saved = this.getSavedLanguage();\n this.translate.setDefaultLang(I18N_CONFIG.DEFAULT_LANGUAGE);\n this.translate.use(saved);\n this.apply(saved);\n\n this.translate.onLangChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ lang }) => {\n this.persist(lang);\n this.apply(lang);\n });\n }\n\n setLanguage(lang: Language): void {\n this.translate.use(lang);\n }\n\n toggle(): void {\n const next = this.currentLang() === Language.AR ? Language.EN : Language.AR;\n this.setLanguage(next);\n }\n\n private getSavedLanguage(): string {\n if (isPlatformBrowser(this.platformId)) {\n const stored = localStorage.getItem(STORAGE_KEYS.LANGUAGE);\n if (stored && Object.values(Language).includes(stored as Language)) {\n return stored;\n }\n }\n this.persist(I18N_CONFIG.DEFAULT_LANGUAGE);\n return I18N_CONFIG.DEFAULT_LANGUAGE;\n }\n\n private persist(lang: string): void {\n if (isPlatformBrowser(this.platformId)) {\n localStorage.setItem(STORAGE_KEYS.LANGUAGE, lang);\n }\n }\n\n private apply(lang: string): void {\n this.currentLang.set(lang);\n const html = this.doc.documentElement;\n html.lang = lang;\n html.dir = RTL_LANGUAGES.has(lang) ? 'rtl' : 'ltr';\n\n const locale = PRIMENG_LOCALE[lang];\n if (locale) {\n this.primeNG.setTranslation(locale);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\nimport { TOAST_DURATION, TOAST_DEDUP_MS, TOAST_DEDUP_MAX_SIZE } from '../constants/http.constants';\n\nexport type ToastSeverity = 'success' | 'info' | 'warn' | 'error';\n\nexport interface ToastOptions {\n life?: number;\n sticky?: boolean;\n closable?: boolean;\n key?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private readonly messageService = inject(MessageService);\n private readonly translate = inject(TranslateService);\n private readonly recentToasts = new Map<string, number>();\n\n success(detail: string, summary?: string, options?: ToastOptions): void {\n this.show('success', detail, summary, options);\n }\n\n error(detail: string, summary?: string, options?: ToastOptions): void {\n this.show('error', detail, summary, { life: TOAST_DURATION.ERROR, ...options });\n }\n\n warn(detail: string, summary?: string, options?: ToastOptions): void {\n this.show('warn', detail, summary, options);\n }\n\n info(detail: string, summary?: string, options?: ToastOptions): void {\n this.show('info', detail, summary, options);\n }\n\n translateAndShow(\n severity: ToastSeverity,\n detailKey: string,\n summaryKey?: string,\n interpolateParams?: Record<string, string>,\n options?: ToastOptions\n ): void {\n const detail = this.translate.instant(detailKey, interpolateParams);\n const summary = summaryKey ? this.translate.instant(summaryKey, interpolateParams) : undefined;\n this.show(severity, detail, summary, options);\n }\n\n clear(key?: string): void {\n this.messageService.clear(key);\n }\n\n private show(severity: ToastSeverity, detail: string, summary?: string, options?: ToastOptions): void {\n if (this.isDuplicate(`${severity}::${detail}`)) {\n return;\n }\n\n this.messageService.add({\n severity,\n summary: summary ?? this.resolveDefaultSummary(severity),\n detail,\n life: options?.life ?? TOAST_DURATION.DEFAULT,\n sticky: options?.sticky ?? false,\n closable: options?.closable ?? true,\n key: options?.key,\n });\n }\n\n private isDuplicate(key: string): boolean {\n const now = Date.now();\n const last = this.recentToasts.get(key);\n if (last && now - last < TOAST_DEDUP_MS) {\n return true;\n }\n\n this.recentToasts.set(key, now);\n this.pruneStaleEntries(now);\n return false;\n }\n\n private pruneStaleEntries(now: number): void {\n if (this.recentToasts.size <= TOAST_DEDUP_MAX_SIZE) {\n return;\n }\n for (const [k, ts] of this.recentToasts) {\n if (now - ts > TOAST_DEDUP_MS) {\n this.recentToasts.delete(k);\n }\n }\n }\n\n private resolveDefaultSummary(severity: ToastSeverity): string {\n const key = `TOAST.${severity.toUpperCase()}`;\n const translated = this.translate.instant(key);\n return translated !== key ? translated : '';\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ErrorHandler, Injectable, Injector, NgZone, inject } from '@angular/core';\nimport { ENVIRONMENT } from '../environments/environment.token';\nimport { HttpErrorKey } from '../enums/http-error-key.enum';\nimport { ASSET_URL_PATTERN, ERROR_MESSAGE_MAX_LENGTH } from '../constants/http.constants';\nimport { ToastService } from './toast.service';\n\nconst SUPPRESSED_PATTERNS = ['ExpressionChangedAfterItHasBeenCheckedError', 'NG0100'] as const;\nconst CHUNK_LOAD_PATTERNS = ['Loading chunk', 'ChunkLoadError'] as const;\n\n@Injectable()\nexport class GlobalErrorHandler implements ErrorHandler {\n private toast: ToastService | null = null;\n private readonly env = inject(ENVIRONMENT);\n private readonly injector = inject(Injector);\n private readonly zone = inject(NgZone);\n\n handleError(error: unknown): void {\n if (isAssetError(error)) {\n return;\n }\n if (extractHttpError(error)) {\n return;\n }\n\n const message = extractMessage(error);\n\n if (SUPPRESSED_PATTERNS.some(p => message.includes(p))) {\n return;\n }\n\n console.error('[GlobalErrorHandler]', error);\n\n this.runInZone(() => {\n const toast = this.resolveToast();\n if (!toast) {\n return;\n }\n\n if (CHUNK_LOAD_PATTERNS.some(p => message.includes(p))) {\n toast.translateAndShow('warn', HttpErrorKey.CHUNK_LOAD);\n return;\n }\n\n if (this.env.production) {\n toast.translateAndShow('error', HttpErrorKey.RUNTIME);\n } else {\n toast.error(truncate(message, ERROR_MESSAGE_MAX_LENGTH));\n }\n });\n }\n\n private resolveToast(): ToastService | null {\n if (!this.toast) {\n try {\n this.toast = this.injector.get(ToastService, null);\n } catch {\n return null;\n }\n }\n return this.toast;\n }\n\n private runInZone(fn: () => void): void {\n if (NgZone.isInAngularZone()) {\n fn();\n } else {\n this.zone.run(fn);\n }\n }\n}\n\nfunction extractMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n try {\n return JSON.stringify(error);\n } catch {\n return 'Unknown error';\n }\n}\n\nfunction truncate(value: string, max: number): string {\n return value.length > max ? `${value.substring(0, max - 1)}…` : value;\n}\n\nfunction isAssetError(error: unknown): boolean {\n if (typeof error !== 'object' || error === null) {\n return false;\n }\n const url = (error as Record<string, unknown>)['url'];\n return typeof url === 'string' && ASSET_URL_PATTERN.test(url);\n}\n\nfunction extractHttpError(error: unknown): HttpErrorResponse | null {\n if (error instanceof HttpErrorResponse) {\n return error;\n }\n if (typeof error !== 'object' || error === null) {\n return null;\n }\n const maybeRejection = (error as Record<string, unknown>)['rejection'];\n return maybeRejection instanceof HttpErrorResponse ? maybeRejection : null;\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ENVIRONMENT } from '../environments/environment.token';\n\nexport const baseUrlInterceptor: HttpInterceptorFn = (req, next) => {\n const { apiUrl } = inject(ENVIRONMENT);\n\n if (\n req.url.startsWith('http') ||\n req.url.startsWith('/') ||\n req.url.startsWith('assets/') ||\n req.url.startsWith('./assets/')\n ) {\n return next(req);\n }\n\n const base = apiUrl.endsWith('/') ? apiUrl : `${apiUrl}/`;\n const url = `${base}${req.url}`;\n\n return next(req.clone({ url }));\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AuthService } from '../services/auth.service';\nimport { PUBLIC_API_PATHS, HTTP_HEADERS, FALLBACK_LANGUAGE } from '../constants/http.constants';\nimport { SKIP_AUTH } from './skip-auth.token';\n\nexport { SKIP_AUTH };\n\nlet correlationCounter = 0;\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n if (req.context.get(SKIP_AUTH)) {\n return next(req);\n }\n\n const translate = inject(TranslateService);\n const auth = inject(AuthService);\n const lang = translate.currentLang ?? translate.defaultLang ?? FALLBACK_LANGUAGE;\n const isPublic = PUBLIC_API_PATHS.some(path => req.url.includes(path));\n\n let headers = req.headers\n .set(HTTP_HEADERS.ACCEPT_LANGUAGE, lang)\n .set(HTTP_HEADERS.CORRELATION_ID, generateCorrelationId());\n\n if (!isPublic) {\n const token = auth.getAccessToken();\n if (token) {\n headers = headers.set(HTTP_HEADERS.AUTHORIZATION, `Bearer ${token}`);\n }\n }\n\n return next(req.clone({ headers }));\n};\n\nfunction generateCorrelationId(): string {\n const timestamp = Date.now().toString(36);\n const counter = (++correlationCounter).toString(36);\n const random = Math.random().toString(36).substring(2, 6);\n return `${timestamp}-${counter}-${random}`;\n}\n","import { HttpInterceptorFn, HttpResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { of, tap, share } from 'rxjs';\nimport { HttpCacheService, CACHE_ENABLED, CACHE_TTL } from '../services/http-cache.service';\nimport { CACHE_PATH_DEPTH } from '../constants/http.constants';\n\nexport const cacheInterceptor: HttpInterceptorFn = (req, next) => {\n const cache = inject(HttpCacheService);\n\n if (req.method !== 'GET') {\n return next(req).pipe(\n tap(event => {\n if (event instanceof HttpResponse && event.ok) {\n cache.clearPattern(new RegExp(escapeRegex(extractBasePath(req.url))));\n }\n })\n );\n }\n\n if (!req.context.get(CACHE_ENABLED)) {\n return next(req);\n }\n\n const ttl = req.context.get(CACHE_TTL);\n const cached = cache.get(req.urlWithParams, ttl);\n if (cached) {\n return of(cached.clone());\n }\n\n return next(req).pipe(\n tap(event => {\n if (event instanceof HttpResponse && event.ok) {\n cache.set(req.urlWithParams, event);\n }\n }),\n share()\n );\n};\n\nfunction extractBasePath(url: string): string {\n try {\n const { pathname } = new URL(url, 'https://placeholder');\n const segments = pathname.split('/').filter(Boolean);\n return `/${segments.slice(0, Math.min(segments.length, CACHE_PATH_DEPTH)).join('/')}`;\n } catch {\n return url.split('?')[0];\n }\n}\n\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import { HttpErrorResponse, HttpInterceptorFn, HttpStatusCode } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError, throwError, TimeoutError } from 'rxjs';\nimport { ToastService } from '../services/toast.service';\nimport { AuthService } from '../services/auth.service';\nimport { HttpErrorKey } from '../enums/http-error-key.enum';\nimport { ROUTE_PATHS } from '../constants';\nimport { LOGOUT_DEBOUNCE_MS, HTTP_HEADERS, ASSET_URL_PATTERN } from '../constants/http.constants';\nimport { extractApiErrorMessage, extractFieldErrors } from '../utils/error-body-parser';\nimport { TOAST_SHOWN_BY_INTERCEPTOR } from '../utils/api-error.utils';\nimport { SKIP_ERROR_HANDLING } from './skip-error.token';\n\nexport { SKIP_ERROR_HANDLING };\n\nlet lastLogoutTimestamp = 0;\n\nconst STATUS_TO_KEY = new Map<number, { key: HttpErrorKey; severity: 'error' | 'warn' | 'info' }>([\n [HttpStatusCode.PaymentRequired, { key: HttpErrorKey.PAYMENT_REQUIRED, severity: 'warn' }],\n [HttpStatusCode.Forbidden, { key: HttpErrorKey.FORBIDDEN, severity: 'error' }],\n [HttpStatusCode.MethodNotAllowed, { key: HttpErrorKey.METHOD_NOT_ALLOWED, severity: 'error' }],\n [HttpStatusCode.NotAcceptable, { key: HttpErrorKey.NOT_ACCEPTABLE, severity: 'error' }],\n [HttpStatusCode.RequestTimeout, { key: HttpErrorKey.TIMEOUT, severity: 'error' }],\n [HttpStatusCode.Gone, { key: HttpErrorKey.GONE, severity: 'warn' }],\n [HttpStatusCode.PayloadTooLarge, { key: HttpErrorKey.PAYLOAD_TOO_LARGE, severity: 'error' }],\n [HttpStatusCode.UriTooLong, { key: HttpErrorKey.URI_TOO_LONG, severity: 'error' }],\n [HttpStatusCode.UnsupportedMediaType, { key: HttpErrorKey.UNSUPPORTED_MEDIA_TYPE, severity: 'error' }],\n [HttpStatusCode.Locked, { key: HttpErrorKey.LOCKED, severity: 'warn' }],\n [HttpStatusCode.NotImplemented, { key: HttpErrorKey.NOT_IMPLEMENTED, severity: 'error' }],\n [HttpStatusCode.BadGateway, { key: HttpErrorKey.BAD_GATEWAY, severity: 'error' }],\n [HttpStatusCode.GatewayTimeout, { key: HttpErrorKey.GATEWAY_TIMEOUT, severity: 'error' }],\n]);\n\nexport const errorInterceptor: HttpInterceptorFn = (req, next) => {\n if (req.context.get(SKIP_ERROR_HANDLING)) {\n return next(req);\n }\n\n const router = inject(Router);\n const toast = inject(ToastService);\n const auth = inject(AuthService);\n\n return next(req).pipe(\n catchError((error: HttpErrorResponse | TimeoutError | Error) => {\n const url = error instanceof HttpErrorResponse ? (error.url ?? req.url) : req.url;\n if (isAssetRequest(url)) {\n return throwError(() => error);\n }\n\n if (error instanceof TimeoutError) {\n toast.translateAndShow('error', HttpErrorKey.TIMEOUT);\n (error as unknown as Record<string, unknown>)[TOAST_SHOWN_BY_INTERCEPTOR] = true;\n return throwError(() => error);\n }\n\n if (!(error instanceof HttpErrorResponse)) {\n toast.translateAndShow('error', HttpErrorKey.UNKNOWN);\n (error as unknown as Record<string, unknown>)[TOAST_SHOWN_BY_INTERCEPTOR] = true;\n return throwError(() => error);\n }\n\n if (error.status === 0) {\n handleNetworkError(error, toast);\n } else {\n handleHttpStatus(error, toast, auth, router);\n }\n\n (error as unknown as Record<string, unknown>)[TOAST_SHOWN_BY_INTERCEPTOR] = true;\n return throwError(() => error);\n })\n );\n};\n\nfunction handleNetworkError(error: HttpErrorResponse, toast: ToastService): void {\n if (error.url && error.statusText === 'Unknown Error') {\n toast.translateAndShow('error', HttpErrorKey.CORS);\n } else if (!navigator.onLine) {\n toast.translateAndShow('error', HttpErrorKey.OFFLINE);\n } else {\n toast.translateAndShow('error', HttpErrorKey.NETWORK);\n }\n}\n\nfunction handleHttpStatus(error: HttpErrorResponse, toast: ToastService, auth: AuthService, router: Router): void {\n const simple = STATUS_TO_KEY.get(error.status);\n if (simple) {\n toast.translateAndShow(simple.severity, simple.key);\n return;\n }\n\n switch (error.status) {\n case HttpStatusCode.NotFound:\n showApiError(error, toast, HttpErrorKey.NOT_FOUND);\n break;\n\n case HttpStatusCode.BadRequest:\n case HttpStatusCode.Conflict:\n showApiError(\n error,\n toast,\n error.status === HttpStatusCode.BadRequest ? HttpErrorKey.BAD_REQUEST : HttpErrorKey.CONFLICT\n );\n break;\n\n case HttpStatusCode.Unauthorized:\n handleUnauthorized(auth, router, toast);\n break;\n\n case HttpStatusCode.UnprocessableEntity:\n showFieldErrors(error, toast);\n break;\n\n case HttpStatusCode.TooManyRequests:\n handleRateLimit(error, toast);\n break;\n\n case HttpStatusCode.InternalServerError:\n showApiError(error, toast, HttpErrorKey.SERVER);\n break;\n\n case HttpStatusCode.ServiceUnavailable:\n handleServiceUnavailable(error, toast);\n break;\n\n default:\n showApiError(error, toast, error.status >= 500 ? HttpErrorKey.SERVER : HttpErrorKey.UNKNOWN);\n }\n}\n\nfunction handleUnauthorized(auth: AuthService, router: Router, toast: ToastService): void {\n const now = Date.now();\n if (now - lastLogoutTimestamp < LOGOUT_DEBOUNCE_MS) {\n return;\n }\n\n lastLogoutTimestamp = now;\n auth.logout();\n toast.translateAndShow('warn', HttpErrorKey.SESSION_EXPIRED);\n void router.navigate([ROUTE_PATHS.AUTH_LOGIN]);\n}\n\nfunction handleRateLimit(error: HttpErrorResponse, toast: ToastService): void {\n const retryAfter = error.headers?.get(HTTP_HEADERS.RETRY_AFTER);\n if (retryAfter) {\n const seconds = parseInt(retryAfter, 10);\n if (!isNaN(seconds)) {\n toast.translateAndShow('warn', HttpErrorKey.RATE_LIMIT_RETRY, undefined, { seconds: String(seconds) });\n return;\n }\n }\n toast.translateAndShow('warn', HttpErrorKey.TOO_MANY_REQUESTS);\n}\n\nfunction handleServiceUnavailable(error: HttpErrorResponse, toast: ToastService): void {\n const isMaintenance = error.headers?.get(HTTP_HEADERS.MAINTENANCE) === 'true';\n toast.translateAndShow(\n isMaintenance ? 'info' : 'error',\n isMaintenance ? HttpErrorKey.MAINTENANCE : HttpErrorKey.SERVICE_UNAVAILABLE\n );\n}\n\nfunction showApiError(error: HttpErrorResponse, toast: ToastService, fallbackKey: HttpErrorKey): void {\n const message = extractApiErrorMessage(error);\n if (message) {\n toast.error(message);\n } else {\n toast.translateAndShow('error', fallbackKey);\n }\n}\n\nfunction showFieldErrors(error: HttpErrorResponse, toast: ToastService): void {\n const fieldErrors = extractFieldErrors(error);\n if (fieldErrors) {\n toast.error(fieldErrors);\n } else {\n showApiError(error, toast, HttpErrorKey.VALIDATION);\n }\n}\n\nfunction isAssetRequest(url: string | null | undefined): boolean {\n return !!url && typeof url === 'string' && ASSET_URL_PATTERN.test(url);\n}\n","import { Injectable, inject, signal, DestroyRef } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HttpErrorKey } from '../enums/http-error-key.enum';\nimport { ToastService } from './toast.service';\n\n/**\n * Tracks browser online/offline state via the native browser events.\n * Exposes `isOnline` as a signal for reactive UI (e.g. offline banner).\n * Shows a toast when the connection changes.\n *\n * Eagerly initialised via APP_INITIALIZER in app.config.ts so event\n * listeners start before the first HTTP request.\n */\n@Injectable({ providedIn: 'root' })\nexport class ConnectivityService {\n private readonly toast = inject(ToastService);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Reactive online state — true when navigator.onLine is true. */\n readonly isOnline = signal(navigator.onLine);\n\n constructor() {\n fromEvent(window, 'online')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isOnline.set(true);\n this.toast.translateAndShow('success', HttpErrorKey.BACK_ONLINE);\n });\n\n fromEvent(window, 'offline')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isOnline.set(false);\n this.toast.translateAndShow('error', HttpErrorKey.OFFLINE);\n });\n }\n}\n","import { HttpContextToken, HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { throwError } from 'rxjs';\nimport { ConnectivityService } from '../services/connectivity.service';\nimport { ASSET_URL_PATTERN } from '../constants/http.constants';\n\n/** Set to true to skip offline check for a specific request (e.g. ping/health-check). */\nexport const SKIP_CONNECTIVITY = new HttpContextToken<boolean>(() => false);\n\n/**\n * Short-circuits outgoing HTTP requests when the browser is offline.\n * Throws an HttpErrorResponse with status 0 so the existing errorInterceptor\n * picks it up and shows the OFFLINE toast — without the browser queuing the\n * request and waiting for a timeout.\n *\n * Skips asset requests (i18n JSON, SVG icons, etc.) so the app shell can\n * still load even when the service worker serves those from cache.\n */\nexport const connectivityInterceptor: HttpInterceptorFn = (req, next) => {\n if (req.context.get(SKIP_CONNECTIVITY) || ASSET_URL_PATTERN.test(req.url)) {\n return next(req);\n }\n\n const connectivity = inject(ConnectivityService);\n\n if (!connectivity.isOnline()) {\n return throwError(\n () =>\n new HttpErrorResponse({\n error: new ProgressEvent('error'),\n status: 0,\n statusText: 'Offline',\n url: req.url,\n })\n );\n }\n\n return next(req);\n};\n","import { inject } from '@angular/core';\nimport { Router, CanActivateFn } from '@angular/router';\nimport { AuthService } from '../services/auth.service';\nimport { ROUTE_PATHS } from '../constants';\n\n/** Redirects unauthenticated users to /auth/login. */\nexport const authGuard: CanActivateFn = () => {\n const authService = inject(AuthService);\n const router = inject(Router);\n\n if (authService.isAuthenticated()) {\n return true;\n }\n\n return router.createUrlTree([ROUTE_PATHS.AUTH_LOGIN]);\n};\n\n/** Redirects authenticated users away from auth/register pages. */\nexport const guestGuard: CanActivateFn = () => {\n const authService = inject(AuthService);\n const router = inject(Router);\n\n if (!authService.isAuthenticated()) {\n return true;\n }\n\n return router.createUrlTree([ROUTE_PATHS.DASHBOARD]);\n};\n","import { inject } from '@angular/core';\nimport { Router, CanActivateFn, ActivatedRouteSnapshot } from '@angular/router';\nimport { AuthService } from '../services/auth.service';\nimport { ROUTE_PATHS } from '../constants';\n\nexport interface RouteDataWithPermissions {\n permissions?: string[];\n}\n\n/** Allows access only when the user has all permissions listed in route data. */\nexport const permissionGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const authService = inject(AuthService);\n const router = inject(Router);\n\n const requiredPermissions = (route.data as RouteDataWithPermissions).permissions;\n\n if (!requiredPermissions || requiredPermissions.length === 0) {\n return true;\n }\n\n const hasAll = requiredPermissions.every(p => authService.hasPermission(p));\n\n if (hasAll) {\n return true;\n }\n\n // Redirect to unauthorized page or dashboard\n // For now, consistent behavior: redirect to home/dashboard if unauthorized\n return router.createUrlTree([ROUTE_PATHS.DASHBOARD]);\n};\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimArabicOnly]',\n})\nexport class ArabicOnlyDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.NON_ARABIC, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n // Propagate change event if using ReactiveForms\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimEnglishOnly]',\n})\nexport class EnglishOnlyDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.NON_ENGLISH, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimNumbersOnly]',\n})\nexport class NumbersOnlyDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.NON_NUMBERS, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { VALIDATION_LENGTHS } from '../constants/validation.constants';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: 'input[ncimPhoneOnly]',\n})\nexport class PhoneOnlyDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input')\n onInputChange(): void {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const cursorPos = input.selectionStart ?? initialValue.length;\n const digitsOnly = initialValue.replace(REGEX.NON_DIGITS, '');\n const newValue = digitsOnly.slice(0, VALIDATION_LENGTHS.MOBILE);\n\n if (initialValue !== newValue) {\n const nextCursor = Math.min(cursorPos, newValue.length);\n input.value = newValue;\n input.setSelectionRange(nextCursor, nextCursor);\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimAlphaNumeric]',\n})\nexport class AlphaNumericDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.NON_ALPHANUMERIC, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/** Trims whitespace on blur. */\n@Directive({\n selector: '[ncimTrimInput]',\n})\nexport class TrimInputDirective {\n private readonly el = inject(ElementRef);\n private readonly ngControl = inject(NgControl, { optional: true });\n\n @HostListener('blur')\n onBlur() {\n const input = this.el.nativeElement as HTMLInputElement;\n const trimmed = input.value.trim();\n\n if (input.value !== trimmed) {\n input.value = trimmed;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n\n // If using ReactiveForms, update the control explicitly\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValue(trimmed);\n }\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n/** Prevents paste on the host element. */\n@Directive({\n selector: '[ncimPreventPaste]',\n})\nexport class PreventPasteDirective {\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n event.preventDefault();\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[ncimToUppercase]',\n})\nexport class ToUppercaseDirective {\n private readonly el = inject(ElementRef);\n private readonly ngControl = inject(NgControl, { optional: true });\n\n @HostListener('input', ['$event'])\n onInput(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n\n const upper = input.value.toUpperCase();\n\n if (input.value !== upper) {\n input.value = upper;\n input.setSelectionRange(start, end);\n input.dispatchEvent(new Event('input', { bubbles: true }));\n\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValue(upper, { emitEvent: false });\n }\n }\n }\n}\n","import { Directive, ElementRef, afterNextRender, inject } from '@angular/core';\n\n/** Focuses the host element after the first render. */\n@Directive({\n selector: '[ncimAutofocus]',\n})\nexport class AutofocusDirective {\n private readonly el = inject(ElementRef<HTMLElement>);\n\n constructor() {\n afterNextRender(() => this.el.nativeElement.focus());\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\n\n/** Selects all text on click/focus. */\n@Directive({\n selector: '[ncimSelectOnClick]',\n})\nexport class SelectOnClickDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('click')\n onClick() {\n const input = this.el.nativeElement as HTMLInputElement;\n input.select();\n }\n\n @HostListener('focus')\n onFocus() {\n const input = this.el.nativeElement as HTMLInputElement;\n input.select();\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimNoWhitespace]',\n})\nexport class NoWhitespaceDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.WHITESPACE_GLOBAL, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { REGEX } from '../constants/regex.constants';\n\n@Directive({\n selector: '[ncimEmailChars]',\n})\nexport class EmailCharsDirective {\n private readonly el = inject(ElementRef);\n\n @HostListener('input', ['$event'])\n onInputChange(event: Event) {\n const input = this.el.nativeElement as HTMLInputElement;\n const initialValue = input.value;\n const newValue = initialValue.replace(REGEX.NON_EMAIL_CHARS, '');\n\n if (initialValue !== newValue) {\n input.value = newValue;\n input.dispatchEvent(new Event('input', { bubbles: true }));\n }\n }\n}\n","import { Directive, TemplateRef, ViewContainerRef, inject, effect, input, computed } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\n\n/** Shows content only when user has all required permissions. */\n@Directive({\n selector: '[ncimHasPermission]',\n})\nexport class HasPermissionDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly authService = inject(AuthService);\n\n readonly permissions = input<string[] | string>([], { alias: 'ncimHasPermission' });\n\n private readonly requiredPermissions = computed(() => {\n const p = this.permissions();\n return Array.isArray(p) ? p : [p];\n });\n\n constructor() {\n effect(() => {\n this.authService.isAuthenticated();\n this.requiredPermissions();\n this.updateView();\n });\n }\n\n private updateView(): void {\n // Now AuthService handles array logic (checking ALL)\n const hasPermission = this.authService.hasPermission(this.requiredPermissions());\n\n if (hasPermission) {\n if (this.viewContainer.length === 0) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n } else {\n this.viewContainer.clear();\n }\n }\n}\n","import { Directive, ElementRef, Renderer2, inject, input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Directive({\n selector: 'img[ncimImgFallback]',\n standalone: true,\n host: {\n '(error)': 'onError()',\n },\n})\nexport class ImgFallbackDirective {\n private readonly translateService = inject(TranslateService);\n private readonly el = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n readonly fallbackUrl = input<string | undefined>(undefined, { alias: 'ncimImgFallback' });\n readonly fallbackTitle = input<string | undefined>(undefined);\n\n onError() {\n const fallback = this.fallbackUrl() || 'assets/images/image-not-found-placeholder.svg';\n const defaultTitle = this.translateService.instant('COMMON.IMAGE_NOT_FOUND');\n\n this.renderer.setAttribute(this.el.nativeElement, 'src', fallback);\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.fallbackTitle() || defaultTitle);\n }\n}\n","import {\n InterpolatableTranslation,\n InterpolatableTranslationObject,\n InterpolateFunction,\n TranslateCompiler,\n TranslationObject,\n} from '@ngx-translate/core';\n\nexport class PluralTranslateCompiler extends TranslateCompiler {\n private readonly pluralRules = new Intl.PluralRules('ar');\n\n compile(value: string, lang: string): InterpolatableTranslation {\n if (this.isPlural(value)) {\n return this.compilePlural(value, lang);\n }\n return value;\n }\n\n compileTranslations(translations: TranslationObject, lang: string): InterpolatableTranslationObject {\n const result: InterpolatableTranslationObject = {};\n for (const key in translations) {\n const value = translations[key];\n if (typeof value === 'string') {\n result[key] = this.compile(value, lang);\n } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n result[key] = this.compileTranslations(value as TranslationObject, lang);\n }\n }\n return result;\n }\n\n private isPlural(value: string): boolean {\n return value.includes('|');\n }\n\n private compilePlural(value: string, lang: string): InterpolateFunction {\n const parts = value.split('|').map(p => p.trim());\n const rules = new Intl.PluralRules(lang);\n\n return (params: any) => {\n let count = params?.count ?? 0;\n\n // Handle cases where count might be an Arabic string number\n if (typeof count === 'string') {\n const arabicToEnglish: Record<string, string> = {\n '٠': '0',\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n };\n count = count.replace(/[٠-٩]/g, d => arabicToEnglish[d] ?? d);\n count = parseFloat(count);\n }\n\n const rule = rules.select(count);\n\n // Intl.PluralRules for 'ar' returns: 'zero', 'one', 'two', 'few', 'many', 'other'\n // We expect the string to have parts in this order:\n // zero | one | two | few | many | other\n\n let index: number;\n switch (rule) {\n case 'zero':\n index = 0;\n break;\n case 'one':\n index = 1;\n break;\n case 'two':\n index = 2;\n break;\n case 'few':\n index = 3;\n break;\n case 'many':\n index = 4;\n break;\n case 'other':\n index = 5;\n break;\n default:\n index = 5;\n }\n\n // If the specific part is missing, fallback to 'other' (last part)\n const result = parts[index] ?? parts[parts.length - 1];\n return result.replace(/\\{\\{\\s*count\\s*\\}\\}/g, params?.count?.toString() ?? '0');\n };\n }\n}\n","import { definePreset } from '@primeuix/themes';\nimport Aura from '@primeuix/themes/aura';\n\nexport const NcimPreset = definePreset(Aura, {\n primitive: {\n borderRadius: {\n none: '0',\n xs: '2px',\n sm: '4px',\n md: '6px',\n lg: '8px',\n xl: '12px',\n },\n ncim: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 200: '#bbf7d0',\n 300: '#6ee7b7',\n 400: '#34d399',\n 500: '#1b8354',\n 600: '#1a8a3e',\n 700: '#15722f',\n 800: '#166534',\n 900: '#14532d',\n 950: '#052e16',\n },\n },\n semantic: {\n primary: {\n 50: '{ncim.50}',\n 100: '{ncim.100}',\n 200: '{ncim.200}',\n 300: '{ncim.300}',\n 400: '{ncim.400}',\n 500: '{ncim.500}',\n 600: '{ncim.600}',\n 700: '{ncim.700}',\n 800: '{ncim.800}',\n 900: '{ncim.900}',\n 950: '{ncim.950}',\n },\n transitionDuration: '0.2s',\n formField: {\n borderRadius: '{border.radius.md}',\n focusRing: {\n width: '1px',\n style: 'solid',\n color: '{primary.color}',\n offset: '0',\n shadow: 'none',\n },\n },\n colorScheme: {\n light: {\n surface: {\n 0: '#ffffff',\n 50: '#f8fafc',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d2d6db',\n 400: '#9da4ae',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#030712',\n },\n primary: {\n color: '#1b8354',\n contrastColor: '#ffffff',\n hoverColor: '#243660',\n activeColor: '#0f1d35',\n },\n text: {\n color: '#1c252e',\n hoverColor: '#111827',\n mutedColor: '#888888',\n hoverMutedColor: '#6b7280',\n },\n formField: {\n background: '#ffffff',\n borderColor: '#9da4ae',\n hoverBorderColor: '#6b7280',\n focusBorderColor: '#1a2b4a',\n invalidBorderColor: '#c0392b',\n color: '#384250',\n placeholderColor: '#6C737F',\n floatLabelColor: '#6b7280',\n floatLabelFocusColor: '#1b8354',\n shadow: '0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgba(18, 18, 23, 0.05)',\n },\n content: {\n background: '#ffffff',\n hoverBackground: '#f9fafb',\n borderColor: '#d2d6db',\n color: '#1c252e',\n hoverColor: '#111827',\n },\n },\n dark: {\n surface: {\n 0: '#ffffff',\n 50: '#f8fafc',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d2d6db',\n 400: '#9da4ae',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#030712',\n },\n primary: {\n color: '#1b8354',\n contrastColor: '#ffffff',\n hoverColor: '#243660',\n activeColor: '#0f1d35',\n },\n text: {\n color: '#1c252e',\n hoverColor: '#111827',\n mutedColor: '#888888',\n hoverMutedColor: '#6b7280',\n },\n formField: {\n background: '#ffffff',\n borderColor: '#9da4ae',\n hoverBorderColor: '#6b7280',\n focusBorderColor: '#1a2b4a',\n invalidBorderColor: '#c0392b',\n color: '#384250',\n placeholderColor: '#6C737F',\n floatLabelColor: '#6b7280',\n floatLabelFocusColor: '#1b8354',\n shadow: '0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgba(18, 18, 23, 0.05)',\n },\n content: {\n background: '#ffffff',\n hoverBackground: '#f9fafb',\n borderColor: '#d2d6db',\n color: '#1c252e',\n hoverColor: '#111827',\n },\n },\n },\n },\n});\n","import { Injectable } from '@angular/core';\n\n/** Options for PDF generation. */\nexport interface ExportPdfOptions {\n /** Device pixel ratio for capture quality. Defaults to 2 (retina). */\n scale?: number;\n /** Page orientation. Defaults to 'portrait'. */\n orientation?: 'portrait' | 'landscape';\n /** Show page numbers in the footer. Defaults to true. */\n pageNumbers?: boolean;\n /** JPEG quality 0–1 (smaller file). Defaults to PNG (lossless). */\n jpegQuality?: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ExportPdfService {\n /**\n * Captures an HTML element as a pixel-perfect PDF and triggers a browser download.\n *\n * Fidelity improvements applied automatically:\n * - Waits for all web fonts (Arabic + Latin) to finish loading\n * - Resets scroll position so the full content is captured, not a mid-scroll slice\n * - Clones the DOM before capture and:\n * - Removes all elements marked `.no-pdf` (export buttons, toolbars, etc.)\n * - Converts sticky/fixed elements to relative so they don't repeat across pages\n * - Captures at the element's full scrollWidth so responsive breakpoints match screen\n *\n * @param element - The DOM element to capture\n * @param filename - Download filename without extension\n * @param options - Quality and layout overrides\n */\n async generate(element: HTMLElement, filename: string, options: ExportPdfOptions = {}): Promise<void> {\n const { scale = 2, orientation = 'landscape', pageNumbers = true, jpegQuality } = options;\n\n // 1. Wait for all web fonts (Arabic, Latin) to be fully loaded\n await document.fonts.ready;\n\n // 2. Reset scroll so we always capture from the top of the element\n const prevScrollX = window.scrollX;\n const prevScrollY = window.scrollY;\n window.scrollTo(0, 0);\n\n const [{ default: html2canvas }, { default: jsPDF }] = await Promise.all([import('html2canvas'), import('jspdf')]);\n\n const bgColor = '#f8f9fb';\n\n // Measure the actual content height (not inflated by min-height: 100vh on children).\n const naturalHeight = this.measureNaturalHeight(element);\n\n const canvas = await html2canvas(element, {\n scale,\n useCORS: true,\n allowTaint: true,\n logging: false,\n backgroundColor: bgColor,\n\n // Keep windowWidth at the real browser viewport so CSS media queries evaluate\n // identically to what the user sees — prevents responsive grid from collapsing.\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n\n // Capture full scrollable width (prevents horizontal content cut-off).\n width: element.scrollWidth,\n\n // Clip the canvas to the exact content height (no whitespace, no cut).\n height: naturalHeight,\n\n // Ignore elements the caller has marked as excluded from the PDF\n ignoreElements: el => el.classList.contains('no-pdf'),\n\n onclone: (doc, clonedEl) => {\n // html2canvas mirrors the canvas when dir=\"rtl\" is on the document.\n // Removing the attribute from the CLONE only prevents the flip while\n // keeping all CSS direction/layout rules (which come from stylesheets).\n doc.documentElement.removeAttribute('dir');\n this.prepareClone(clonedEl);\n },\n });\n\n // Restore scroll position\n window.scrollTo(prevScrollX, prevScrollY);\n\n const imgFormat = jpegQuality !== undefined ? 'JPEG' : 'PNG';\n const imgData =\n jpegQuality !== undefined ? canvas.toDataURL('image/jpeg', jpegQuality) : canvas.toDataURL('image/png');\n\n // Convert canvas pixels → mm (96 dpi base, scale applied)\n const pxToMm = 25.4 / 96;\n const imgWidthMm = (canvas.width / scale) * pxToMm;\n const imgHeightMm = (canvas.height / scale) * pxToMm;\n\n if (pageNumbers) {\n // ── Multi-page A4 mode (with page numbers) ──────────────────────────────\n // Fit content width into A4 width, split across pages, no empty bottom page.\n const a4WidthMm = orientation === 'landscape' ? 297 : 210;\n const a4HeightMm = orientation === 'landscape' ? 210 : 297;\n\n // Scale image to fit A4 width\n const scaledImgHeightMm = (imgHeightMm * a4WidthMm) / imgWidthMm;\n\n const pdf = new jsPDF({ orientation, unit: 'mm', format: 'a4' });\n pdf.setProperties({ title: filename, creator: 'NCIM Dashboard' });\n\n let heightLeft = scaledImgHeightMm;\n let positionMm = 0;\n\n pdf.addImage(imgData, imgFormat, 0, positionMm, a4WidthMm, scaledImgHeightMm);\n heightLeft -= a4HeightMm;\n\n while (heightLeft > 0) {\n positionMm -= a4HeightMm;\n pdf.addPage();\n pdf.addImage(imgData, imgFormat, 0, positionMm, a4WidthMm, scaledImgHeightMm);\n heightLeft -= a4HeightMm;\n }\n\n // Page numbers — only on pages that have content\n const total = pdf.getNumberOfPages();\n for (let i = 1; i <= total; i++) {\n pdf.setPage(i);\n pdf.setFontSize(9);\n pdf.setTextColor(150);\n pdf.text(`${i} / ${total}`, a4WidthMm / 2, a4HeightMm - 4, { align: 'center' });\n }\n\n pdf.save(`${filename}.pdf`);\n } else {\n // ── Single-page A4-width mode (no white space at bottom) ────────────────\n // Scale content to fill A4 width; page height = scaled content height.\n // This ensures content fills the full page width with zero wasted space.\n const a4WidthMm = orientation === 'landscape' ? 297 : 210;\n const scaledHeightMm = (imgHeightMm * a4WidthMm) / imgWidthMm;\n\n const pdf = new jsPDF({ orientation, unit: 'mm', format: [a4WidthMm, scaledHeightMm] });\n pdf.setProperties({ title: filename, creator: 'NCIM Dashboard' });\n pdf.addImage(imgData, imgFormat, 0, 0, a4WidthMm, scaledHeightMm);\n pdf.save(`${filename}.pdf`);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Private helpers\n // ---------------------------------------------------------------------------\n\n /**\n * Measures the natural content height of the element by temporarily applying\n * the same DOM transformations that prepareClone will apply to the captured\n * clone. This ensures the canvas height matches the clone's rendered height\n * exactly — preventing both whitespace (too tall) and cut content (too short).\n *\n * Transformations mirrored:\n * - Collapse min-height / height / max-height on root\n * - Collapse min-height on all children\n * - Expand overflow:auto/scroll containers to their scrollHeight\n */\n private measureNaturalHeight(element: HTMLElement): number {\n interface SavedStyle {\n el: HTMLElement;\n props: Record<string, string>;\n }\n const saved: SavedStyle[] = [];\n\n const apply = (el: HTMLElement, props: Record<string, string>): void => {\n const orig: Record<string, string> = {};\n for (const [k, v] of Object.entries(props)) {\n orig[k] = el.style.getPropertyValue(k);\n el.style.setProperty(k, v);\n }\n saved.push({ el, props: orig });\n };\n\n // 1. Collapse root height constraints\n apply(element, {\n height: 'auto',\n 'min-height': '0',\n 'max-height': 'none',\n overflow: 'visible',\n });\n\n // 2. Collapse min-height on children + expand scroll containers\n element.querySelectorAll<HTMLElement>('*').forEach(el => {\n const cs = getComputedStyle(el);\n\n if (cs.minHeight && cs.minHeight !== '0px') {\n apply(el, { 'min-height': '0' });\n }\n\n const hasScroll =\n cs.overflow === 'auto' || cs.overflow === 'scroll' || cs.overflowY === 'auto' || cs.overflowY === 'scroll';\n if (hasScroll && el.scrollHeight > el.clientHeight) {\n apply(el, {\n height: `${el.scrollHeight}px`,\n overflow: 'visible',\n overflowY: 'visible',\n 'max-height': 'none',\n });\n }\n });\n\n // 3. Read the resulting scroll height (single forced reflow)\n const result = element.scrollHeight;\n\n // 4. Restore all styles in reverse order\n for (let i = saved.length - 1; i >= 0; i--) {\n const { el, props } = saved[i];\n for (const [k, v] of Object.entries(props)) {\n if (v) {\n el.style.setProperty(k, v);\n } else {\n el.style.removeProperty(k);\n }\n }\n }\n\n return result;\n }\n\n /** Walk the cloned DOM and neutralise elements that break full-height capture. */\n private prepareClone(root: HTMLElement): void {\n // Remove elements explicitly excluded by the caller\n root.querySelectorAll<HTMLElement>('.no-pdf').forEach(el => el.remove());\n\n // Collapse root to natural content height — removes viewport-sized min-height gaps\n root.style.height = 'auto';\n root.style.minHeight = '0';\n root.style.maxHeight = 'none';\n root.style.overflow = 'visible';\n\n root.querySelectorAll<HTMLElement>('*').forEach(el => {\n const style = getComputedStyle(el);\n\n // Convert sticky/fixed to relative so headers don't repeat across pages\n if (style.position === 'sticky' || style.position === 'fixed') {\n el.style.position = 'relative';\n }\n\n // Collapse min-height on children that might add empty padding space\n if (style.minHeight && style.minHeight !== '0px') {\n el.style.minHeight = '0';\n }\n\n // Expand internal scroll containers so their hidden content is captured\n const hasScroll =\n style.overflow === 'auto' ||\n style.overflow === 'scroll' ||\n style.overflowY === 'auto' ||\n style.overflowY === 'scroll';\n if (hasScroll && el.scrollHeight > el.clientHeight) {\n el.style.height = `${el.scrollHeight}px`;\n el.style.overflow = 'visible';\n el.style.overflowY = 'visible';\n el.style.maxHeight = 'none';\n }\n\n // Force content-visibility: visible so off-screen sections are rendered\n if (style.contentVisibility === 'auto') {\n el.style.contentVisibility = 'visible';\n }\n });\n }\n\n /**\n * Resolve the effective background color of the element.\n * Falls back to white if transparent (avoids black PDF background).\n */\n private resolveBackground(element: HTMLElement): string {\n let el: HTMLElement | null = element;\n while (el) {\n const bg = getComputedStyle(el).backgroundColor;\n if (bg && bg !== 'rgba(0, 0, 0, 0)' && bg !== 'transparent') {\n return bg;\n }\n el = el.parentElement;\n }\n return '#ffffff';\n }\n}\n","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","import { createActionGroup, emptyProps, props } from '@ngrx/store';\nimport { User } from './user.model';\n\n/** User feature actions (load, set/clear current user). */\nexport const UserActions = createActionGroup({\n source: 'User',\n events: {\n 'Load Users': emptyProps(),\n 'Load Users Success': props<{ users: User[] }>(),\n 'Load Users Failure': props<{ error: string }>(),\n 'Set Current User': props<{ user: User }>(),\n 'Clear Current User': emptyProps(),\n },\n});\n","import { createFeature, createReducer, on } from '@ngrx/store';\nimport { User } from './user.model';\nimport { UserActions } from './user.actions';\n\n/** User feature state. */\nexport interface UserState {\n users: User[];\n currentUser: User | null;\n loading: boolean;\n error: string | null;\n}\n\nconst initialState: UserState = {\n users: [],\n currentUser: null,\n loading: false,\n error: null,\n};\n\nexport const userFeature = createFeature({\n name: 'user',\n reducer: createReducer(\n initialState,\n on(UserActions.loadUsers, state => ({\n ...state,\n loading: true,\n error: null,\n })),\n on(UserActions.loadUsersSuccess, (state, { users }) => ({\n ...state,\n users,\n loading: false,\n })),\n on(UserActions.loadUsersFailure, (state, { error }) => ({\n ...state,\n loading: false,\n error,\n })),\n on(UserActions.setCurrentUser, (state, { user }) => ({\n ...state,\n currentUser: user,\n })),\n on(UserActions.clearCurrentUser, state => ({\n ...state,\n currentUser: null,\n }))\n ),\n});\n\nexport const {\n name: userFeatureKey,\n reducer: userReducer,\n selectUserState,\n selectUsers,\n selectCurrentUser,\n selectLoading,\n selectError,\n} = userFeature;\n","/** User feature selectors. */\nexport {\n selectUserState,\n selectUsers as selectAllUsers,\n selectCurrentUser,\n selectLoading as selectUserLoading,\n selectError as selectUserError,\n} from './user.reducer';\n","import { Component, inject, signal, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { identityNumberValidator } from '@libs/core/validators';\nimport { syncFormWithLoading, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { LoginFormData } from '../models/auth-form.models';\n\n@Component({\n selector: 'ncim-login-form',\n imports: [ReactiveFormsModule, TranslateModule, FormInput, NcimButton],\n templateUrl: './login-form.html',\n styleUrl: './login-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoginForm {\n private readonly fb = inject(FormBuilder);\n\n readonly loading = input<boolean>(false);\n readonly formSubmit = output<LoginFormData>();\n readonly forgotPasswordClick = output<void>();\n\n readonly submitted = signal(false);\n\n readonly form = this.fb.group({\n identityNumber: [\n '',\n [\n Validators.required,\n Validators.minLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n Validators.maxLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n identityNumberValidator(),\n ],\n ],\n password: ['', [Validators.required]],\n });\n\n constructor() {\n syncFormWithLoading(this.form, this.loading);\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.formSubmit.emit(this.form.getRawValue() as LoginFormData);\n }\n}\n","<form class=\"login-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.LOGIN.IDENTITY_NUMBER' | translate\"\n [placeholder]=\"'AUTH.LOGIN.IDENTITY_PLACEHOLDER' | translate\"\n type=\"number\"\n formControlName=\"identityNumber\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.LOGIN.PASSWORD' | translate\"\n [placeholder]=\"'AUTH.LOGIN.PASSWORD_PLACEHOLDER' | translate\"\n type=\"password\"\n formControlName=\"password\"\n [submitted]=\"submitted()\"\n />\n\n <a class=\"login-form__forgot\" (click)=\"forgotPasswordClick.emit()\">\n {{ 'AUTH.LOGIN.FORGOT_PASSWORD' | translate }}\n </a>\n\n <ncim-button type=\"submit\" variant=\"black\" [loading]=\"loading()\">\n {{ 'AUTH.LOGIN.SUBMIT' | translate }}\n </ncim-button>\n</form>\n","import { Component, inject, signal, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { identityNumberValidator } from '@libs/core/validators';\nimport { syncFormWithLoading, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { ForgotPasswordFormData } from '../models/auth-form.models';\n\n@Component({\n selector: 'ncim-forgot-password-form',\n imports: [ReactiveFormsModule, TranslateModule, FormInput, NcimButton],\n templateUrl: './forgot-password-form.html',\n styleUrl: './forgot-password-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ForgotPasswordForm {\n private readonly fb = inject(FormBuilder);\n\n readonly loading = input<boolean>(false);\n readonly formSubmit = output<ForgotPasswordFormData>();\n\n readonly submitted = signal(false);\n\n readonly form = this.fb.group({\n identityNumber: [\n '',\n [\n Validators.required,\n Validators.minLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n Validators.maxLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n identityNumberValidator(),\n ],\n ],\n });\n\n constructor() {\n syncFormWithLoading(this.form, this.loading);\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.formSubmit.emit(this.form.getRawValue() as ForgotPasswordFormData);\n }\n}\n","<form class=\"forgot-password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.FORGOT_PASSWORD.IDENTITY_NUMBER' | translate\"\n [placeholder]=\"'AUTH.FORGOT_PASSWORD.IDENTITY_PLACEHOLDER' | translate\"\n type=\"number\"\n formControlName=\"identityNumber\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-button type=\"submit\" variant=\"black\" [loading]=\"loading()\">\n {{ 'AUTH.FORGOT_PASSWORD.SUBMIT' | translate }}\n </ncim-button>\n</form>\n","import { Component, inject, signal, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OtpInput } from '@libs/ui-components/shared/molecules/otp-input/otp-input';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { syncFormWithLoading, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { OtpVerificationFormData } from '../models/auth-form.models';\n\n@Component({\n selector: 'ncim-otp-verification-form',\n imports: [ReactiveFormsModule, TranslateModule, OtpInput, NcimButton],\n templateUrl: './otp-verification-form.html',\n styleUrl: './otp-verification-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OtpVerificationForm {\n private readonly fb = inject(FormBuilder);\n\n readonly loading = input<boolean>(false);\n readonly formSubmit = output<OtpVerificationFormData>();\n readonly resendCode = output<void>();\n\n readonly submitted = signal(false);\n\n readonly form = this.fb.group({\n otp: ['', [Validators.required, Validators.minLength(VALIDATION_LENGTHS.OTP)]],\n });\n\n constructor() {\n syncFormWithLoading(this.form, this.loading);\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.formSubmit.emit(this.form.getRawValue() as OtpVerificationFormData);\n }\n\n reset(): void {\n this.form.reset();\n this.submitted.set(false);\n }\n}\n","<form class=\"otp-verification-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-otp-input formControlName=\"otp\" [submitted]=\"submitted()\" />\n\n <ncim-button type=\"submit\" variant=\"black\" [loading]=\"loading()\">\n {{ 'AUTH.OTP.SUBMIT' | translate }}\n </ncim-button>\n</form>\n\n<p class=\"otp-verification-form__resend\">\n {{ 'AUTH.OTP.NOT_RECEIVED' | translate }}\n <button type=\"button\" class=\"otp-verification-form__resend-link\" (click)=\"resendCode.emit()\">\n {{ 'AUTH.OTP.RESEND' | translate }}\n </button>\n</p>\n","import { Component, inject, signal, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { passwordMatchValidator } from '@libs/core/validators';\nimport { syncFormWithLoading, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { ResetPasswordFormData } from '../models/auth-form.models';\n\n@Component({\n selector: 'ncim-reset-password-form',\n imports: [ReactiveFormsModule, TranslateModule, FormInput, NcimButton],\n templateUrl: './reset-password-form.html',\n styleUrl: './reset-password-form.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResetPasswordForm {\n private readonly fb = inject(FormBuilder);\n\n readonly loading = input<boolean>(false);\n readonly formSubmit = output<ResetPasswordFormData>();\n\n readonly submitted = signal(false);\n\n readonly form = this.fb.group(\n {\n newPassword: ['', [Validators.required, Validators.minLength(VALIDATION_LENGTHS.PASSWORD_MIN)]],\n confirmPassword: ['', [Validators.required]],\n },\n { validators: passwordMatchValidator() }\n );\n\n constructor() {\n syncFormWithLoading(this.form, this.loading);\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.formSubmit.emit(this.form.getRawValue() as ResetPasswordFormData);\n }\n}\n","<form class=\"reset-password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.RESET_PASSWORD.NEW_PASSWORD' | translate\"\n [placeholder]=\"'AUTH.RESET_PASSWORD.NEW_PASSWORD_PLACEHOLDER' | translate\"\n type=\"password\"\n formControlName=\"newPassword\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.RESET_PASSWORD.CONFIRM_PASSWORD' | translate\"\n [placeholder]=\"'AUTH.RESET_PASSWORD.CONFIRM_PLACEHOLDER' | translate\"\n type=\"password\"\n formControlName=\"confirmPassword\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-button type=\"submit\" variant=\"black\" [loading]=\"loading()\">\n {{ 'AUTH.RESET_PASSWORD.SUBMIT' | translate }}\n </ncim-button>\n</form>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n/** Default icon for MOMRAH / Nafath SSO. */\nconst DEFAULT_SSO_ICON = 'nafath-icon';\n\n/** Default i18n key for SSO button label. */\nconst DEFAULT_SSO_LABEL_KEY = 'AUTH.LOGIN.SSO';\n\n/**\n * SSO login button for MOMRAH / Nafath.\n * Presentational — emits click; parent handles AuthService.loginWithSso().\n */\n@Component({\n selector: 'ncim-sso-login-button',\n host: { class: 'ncim-sso-login-button' },\n imports: [NcimButton, Icon, TranslateModule],\n templateUrl: './sso-login-button.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SsoLoginButton {\n /** i18n key for the button label. */\n readonly labelKey = input<string>(DEFAULT_SSO_LABEL_KEY);\n\n /** Icon name (e.g. 'nafath-icon'). */\n readonly iconName = input<string>(DEFAULT_SSO_ICON);\n\n /** Icon size in pixels. */\n readonly iconSize = input<number>(24);\n\n /** Disable the button (e.g. when SSO is not available). */\n readonly disabled = input<boolean>(false);\n\n /** Show loading state during SSO redirect. */\n readonly loading = input<boolean>(false);\n\n /** i18n key for aria-label (accessibility). Falls back to labelKey. */\n readonly ariaLabelKey = input<string | null>(null);\n\n readonly ssoClick = output<void>();\n}\n","<ncim-button\n type=\"button\"\n variant=\"neutral\"\n [disabled]=\"disabled()\"\n [loading]=\"loading()\"\n [attr.aria-label]=\"ariaLabelKey() ?? labelKey() | translate\"\n (click)=\"ssoClick.emit()\"\n>\n <ncim-icon [name]=\"iconName()\" [size]=\"iconSize()\" />\n {{ labelKey() | translate }}\n</ncim-button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\n\n/**\n * Auth page link with accent styling (e.g. \"Create account\", \"Forgot password\").\n * Presentational — receives path and i18n key.\n */\n@Component({\n selector: 'ncim-auth-link',\n host: { class: 'ncim-auth-link' },\n imports: [RouterLink, TranslateModule],\n templateUrl: './auth-link.html',\n styleUrl: './auth-link.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthLink {\n /** Router path for the link. */\n readonly path = input.required<string>();\n\n /** i18n key for the link label. */\n readonly labelKey = input.required<string>();\n}\n","<a [routerLink]=\"path()\" class=\"ncim-auth-link__anchor\">\n {{ labelKey() | translate }}\n</a>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLink } from '../auth-link/auth-link';\n\n/**\n * Login page header: title and subtitle with optional link (e.g. \"Create account\").\n * @deprecated Use AuthHeader instead. Will be removed in a future version.\n */\n@Component({\n selector: 'ncim-login-header',\n host: { class: 'ncim-login-header' },\n imports: [AuthLink, TranslateModule],\n templateUrl: './login-header.html',\n styleUrl: './login-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoginHeader {\n /** i18n key for the title. */\n readonly titleKey = input<string>('AUTH.LOGIN.TITLE');\n\n /** i18n key for the subtitle text before the link. */\n readonly subtitleKey = input<string>('AUTH.LOGIN.NO_ACCOUNT');\n\n /** i18n key for the link label. */\n readonly linkKey = input<string>('AUTH.LOGIN.CREATE_ACCOUNT');\n\n /** Router path for the link. */\n readonly linkPath = input.required<string>();\n}\n","<h1 class=\"ncim-login-header__title\">{{ titleKey() | translate }}</h1>\n<p class=\"ncim-login-header__subtitle\">\n {{ subtitleKey() | translate }}\n <ncim-auth-link [path]=\"linkPath()\" [labelKey]=\"linkKey()\" />\n</p>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLink } from '../auth-link/auth-link';\n\n/**\n * Auth page header: title, subtitle, and optional link.\n * Use for login, forgot-password, OTP, etc.\n */\n@Component({\n selector: 'ncim-auth-header',\n host: { class: 'ncim-auth-header' },\n imports: [AuthLink, TranslateModule],\n templateUrl: './auth-header.html',\n styleUrl: './auth-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthHeader {\n /** i18n key for the title. */\n readonly titleKey = input.required<string>();\n\n /** i18n key for the subtitle. */\n readonly subtitleKey = input<string | null>(null);\n\n /** i18n key for the link label. Shown only when linkPath is provided. */\n readonly linkKey = input<string | null>(null);\n\n /** Router path for the link. When provided with linkKey, shows the link. */\n readonly linkPath = input<string | null>(null);\n\n /** Title font size. Use design token, e.g. var(--font-size-xl). */\n readonly titleFontSize = input<string>('var(--font-size-xl)');\n\n /** Title font weight. Use design token, e.g. var(--font-weight-bold). */\n readonly titleFontWeight = input<string>('var(--font-weight-bold)');\n\n /** Title margin. Use design token, e.g. 0 0 var(--space-md). */\n readonly titleMargin = input<string>('0 0 var(--space-md)');\n\n /** Subtitle font size. Use design token, e.g. var(--font-size-base). */\n readonly subtitleFontSize = input<string>('var(--font-size-base)');\n\n /** Subtitle font weight. Use design token, e.g. var(--font-weight-regular). */\n readonly subtitleFontWeight = input<string>('var(--font-weight-regular)');\n\n /** Subtitle margin. Use design token, e.g. 0 0 var(--space-3xl). */\n readonly subtitleMargin = input<string>('0 0 var(--space-3xl)');\n}\n","<h1\n class=\"ncim-auth-header__title\"\n [style.font-size]=\"titleFontSize()\"\n [style.font-weight]=\"titleFontWeight()\"\n [style.margin]=\"titleMargin()\"\n>\n {{ titleKey() | translate }}\n</h1>\n@if (subtitleKey()) {\n <p\n class=\"ncim-auth-header__subtitle\"\n [style.font-size]=\"subtitleFontSize()\"\n [style.font-weight]=\"subtitleFontWeight()\"\n [style.margin]=\"subtitleMargin()\"\n >\n {{ subtitleKey() | translate }}\n @if (linkPath() && linkKey()) {\n <ncim-auth-link [path]=\"linkPath()!\" [labelKey]=\"linkKey()!\" />\n }\n </p>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n/**\n * Auth page \"back\" link with icon (e.g. \"Back to login\", \"Back to sign in\").\n * Centered, subtle styling — for navigation back to previous auth step.\n */\n@Component({\n selector: 'ncim-auth-back-link',\n host: { class: 'ncim-auth-back-link' },\n imports: [RouterLink, Icon, TranslateModule],\n templateUrl: './auth-back-link.html',\n styleUrl: './auth-back-link.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthBackLink {\n /** Router path for the link. */\n readonly path = input.required<string>();\n\n /** i18n key for the link label. */\n readonly labelKey = input.required<string>();\n\n /** Icon name (e.g. 'chevronLeft' for RTL-aware back). */\n readonly iconName = input<string>('chevronLeft');\n\n /** Icon size in pixels. */\n readonly iconSize = input<number>(16);\n}\n","<a [routerLink]=\"path()\" class=\"ncim-auth-back-link__anchor\">\n {{ labelKey() | translate }}\n <ncim-icon [name]=\"iconName()\" [size]=\"iconSize()\" />\n</a>\n","/** Auth components — forms, headers, links, SSO. */\nexport { LoginForm } from './login-form/login-form';\nexport { ForgotPasswordForm } from './forgot-password-form/forgot-password-form';\nexport { OtpVerificationForm } from './otp-verification-form/otp-verification-form';\nexport { ResetPasswordForm } from './reset-password-form/reset-password-form';\nexport { SsoLoginButton } from './sso-login-button/sso-login-button';\nexport { LoginHeader } from './login-header/login-header';\nexport { AuthHeader } from './auth-header/auth-header';\nexport { AuthLink } from './auth-link/auth-link';\nexport { AuthBackLink } from './auth-back-link/auth-back-link';\nexport type {\n LoginFormData,\n ForgotPasswordFormData,\n OtpVerificationFormData,\n ResetPasswordFormData,\n} from './models/auth-form.models';\n","import { Component, output, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EntityType } from '@libs/core/enums';\nimport { ENTITY_TYPE_OPTIONS } from '@libs/core/constants';\nimport { EntityTypeCard } from '@libs/ui-components/shared/molecules/entity-type-card/entity-type-card';\nimport { StepComponent, RegistrationData } from '../models/register.models';\n\n/** Step 1: Select entity type (government, business, inspection). */\n@Component({\n selector: 'ncim-step-entity-type',\n imports: [TranslateModule, EntityTypeCard],\n templateUrl: './step-entity-type.html',\n styleUrl: './step-entity-type.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepEntityType implements StepComponent {\n readonly selectionChange = output<EntityType>();\n readonly selectedType = signal<EntityType | null>(null);\n readonly submitted = signal(false);\n readonly options = ENTITY_TYPE_OPTIONS;\n\n readonly showSelectionError = computed(() => this.submitted() && !this.selectedType());\n\n protected isOptionDisabled(option: (typeof ENTITY_TYPE_OPTIONS)[number]): boolean {\n return 'disabled' in option && option.disabled === true;\n }\n\n select(type: EntityType): void {\n this.selectedType.set(type);\n }\n\n getFormData(): Partial<RegistrationData> {\n return {};\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n const selected = this.selectedType();\n if (selected) {\n this.selectionChange.emit(selected);\n }\n }\n}\n","<div class=\"entity-type\">\n @for (option of options; track option.id) {\n <ncim-entity-type-card\n [title]=\"option.title\"\n [description]=\"option.description\"\n [icon]=\"option.icon\"\n [isSelected]=\"selectedType() === option.id\"\n [isDisabled]=\"isOptionDisabled(option)\"\n (selectionMade)=\"select(option.id)\"\n />\n }\n</div>\n","import { Component, output, inject, signal, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CaptchaInput } from '@libs/ui-components/shared/molecules/captcha-input/captcha-input';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { identityNumberValidator, dateMaxValidator } from '@libs/core/validators';\nimport { VALIDATION_LENGTHS, ASSET_PATHS } from '@libs/core/constants';\nimport { useFormInitData, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { StepComponent, AccountVerificationForm, RegistrationData } from '../models/register.models';\n\n@Component({\n selector: 'ncim-step-account-verification',\n imports: [ReactiveFormsModule, TranslateModule, FormInput, CaptchaInput],\n templateUrl: './step-account-verification.html',\n styleUrl: './step-account-verification.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepAccountVerification implements StepComponent {\n private readonly fb = inject(FormBuilder);\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<AccountVerificationForm>();\n\n readonly submitted = signal(false);\n readonly submitting = signal(false);\n /** Cache-busted URL so refreshing the captcha forces the browser to re-fetch the image. */\n readonly captchaImageSrc = signal<string>(ASSET_PATHS.CAPTCHA_IMAGE);\n readonly yesterday = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() - 1);\n\n readonly form = this.fb.group({\n idNumber: [\n '',\n [\n Validators.required,\n Validators.minLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n Validators.maxLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n identityNumberValidator(),\n ],\n ],\n birthDate: ['', [Validators.required, dateMaxValidator(this.yesterday)]],\n captcha: ['', Validators.required],\n });\n\n readonly captchaControl = this.form.controls.captcha;\n\n constructor() {\n useFormInitData(this.form, this.initialData);\n }\n\n getFormData(): Partial<RegistrationData> {\n return this.form.getRawValue() as Partial<RegistrationData>;\n }\n\n onRefreshCaptcha(): void {\n // Append a timestamp to bust the browser cache and force a new captcha image.\n // Replace with a real API call (e.g. GET /api/captcha) that returns a new image URL.\n this.captchaImageSrc.set(`${ASSET_PATHS.CAPTCHA_IMAGE}?t=${Date.now()}`);\n this.captchaControl.reset();\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.submitting.set(true);\n this.form.disable();\n this.next.emit(this.form.getRawValue() as AccountVerificationForm);\n }\n\n onSubmitComplete(): void {\n this.submitting.set(false);\n this.form.enable();\n }\n}\n","<form class=\"account-verification\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.ID_NUMBER' | translate\"\n [placeholder]=\"'AUTH.REGISTER.ID_NUMBER_PLACEHOLDER' | translate\"\n formControlName=\"idNumber\"\n type=\"number\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.BIRTH_DATE' | translate\"\n [placeholder]=\"'AUTH.REGISTER.BIRTH_DATE_PLACEHOLDER' | translate\"\n formControlName=\"birthDate\"\n type=\"date\"\n [maxDate]=\"yesterday\"\n [submitted]=\"submitted()\"\n />\n <ncim-captcha-input\n [label]=\"'AUTH.REGISTER.SECURITY_CODE' | translate\"\n [placeholder]=\"'AUTH.REGISTER.SECURITY_CODE_PLACEHOLDER' | translate\"\n [imageSrc]=\"captchaImageSrc()\"\n [control]=\"captchaControl\"\n [submitted]=\"submitted()\"\n (refresh)=\"onRefreshCaptcha()\"\n />\n</form>\n","import { Component, output, inject, signal, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { OptionGroup, type OptionItem } from '@libs/ui-components/shared/molecules/option-group/option-group';\nimport type { SelectOption } from '@libs/ui-components/shared/molecules/form-select/select-option.interface';\nimport { ENTITY_DETAILS_OPTIONS } from '@libs/core/constants';\nimport { useFormInitData, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { StepComponent, EntityDetailsForm, RegistrationData } from '../models/register.models';\n\n@Component({\n selector: 'ncim-step-entity-details',\n imports: [ReactiveFormsModule, TranslateModule, FormInput, OptionGroup],\n templateUrl: './step-entity-details.html',\n styleUrl: './step-entity-details.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepEntityDetails implements StepComponent {\n private readonly fb = inject(FormBuilder);\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<EntityDetailsForm>();\n readonly submitted = signal(false);\n readonly submitting = signal(false);\n\n readonly form = this.fb.group({\n entityName: ['', Validators.required],\n regulatorySector: ['', Validators.required],\n branchesCount: ['', Validators.required],\n employeesCount: ['', Validators.required],\n });\n\n readonly entityNameOptions: SelectOption[] = [...ENTITY_DETAILS_OPTIONS.ENTITY_NAMES];\n readonly regulatorySectorOptions: SelectOption[] = [...ENTITY_DETAILS_OPTIONS.REGULATORY_SECTORS];\n\n readonly branchOptionsArray: OptionItem[] = [...ENTITY_DETAILS_OPTIONS.BRANCHES].map(option => ({\n value: option,\n label: option,\n }));\n\n readonly employeeOptionsArray: OptionItem[] = [...ENTITY_DETAILS_OPTIONS.EMPLOYEES].map(option => ({\n value: option,\n label: option,\n }));\n\n constructor() {\n useFormInitData(this.form, this.initialData);\n }\n\n getFormData(): Partial<RegistrationData> {\n return this.form.getRawValue() as Partial<RegistrationData>;\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.submitting.set(true);\n this.form.disable();\n this.next.emit(this.form.getRawValue() as EntityDetailsForm);\n }\n\n onSubmitComplete(): void {\n this.submitting.set(false);\n this.form.enable();\n }\n}\n","<form class=\"entity-details\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.ENTITY_NAME' | translate\"\n [placeholder]=\"'AUTH.REGISTER.ENTITY_NAME' | translate\"\n formControlName=\"entityName\"\n type=\"select\"\n [options]=\"entityNameOptions\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.REGULATORY_SECTOR' | translate\"\n [placeholder]=\"'AUTH.REGISTER.REGULATORY_SECTOR' | translate\"\n formControlName=\"regulatorySector\"\n type=\"select\"\n [options]=\"regulatorySectorOptions\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-option-group\n [label]=\"'AUTH.REGISTER.BRANCHES_COUNT' | translate\"\n [options]=\"branchOptionsArray\"\n formControlName=\"branchesCount\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-option-group\n [label]=\"'AUTH.REGISTER.EMPLOYEES_COUNT' | translate\"\n [options]=\"employeeOptionsArray\"\n formControlName=\"employeesCount\"\n [submitted]=\"submitted()\"\n />\n</form>\n","import { Component, output, inject, signal, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { useFormInitData, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { StepComponent, InspectionDetailsForm, RegistrationData } from '../models/register.models';\n\n@Component({\n selector: 'ncim-step-inspection-details',\n imports: [ReactiveFormsModule, TranslateModule, FormInput],\n templateUrl: './step-inspection-details.html',\n styleUrl: './step-inspection-details.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepInspectionDetails implements StepComponent {\n private readonly fb = inject(FormBuilder);\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<InspectionDetailsForm>();\n readonly submitted = signal(false);\n readonly submitting = signal(false);\n\n readonly form = this.fb.group({\n entityName: ['', Validators.required],\n idNumber: [\n '',\n [\n Validators.required,\n Validators.minLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n Validators.maxLength(VALIDATION_LENGTHS.MAX_LENGTH_10),\n ],\n ],\n });\n\n constructor() {\n useFormInitData(this.form, this.initialData);\n }\n\n getFormData(): Partial<RegistrationData> {\n return this.form.getRawValue() as Partial<RegistrationData>;\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.submitting.set(true);\n this.form.disable();\n this.next.emit(this.form.getRawValue() as InspectionDetailsForm);\n }\n\n onSubmitComplete(): void {\n this.submitting.set(false);\n this.form.enable();\n }\n}\n","<form [formGroup]=\"form\" class=\"inspection-details\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.ENTITY_NAME' | translate\"\n [placeholder]=\"'AUTH.REGISTER.ENTITY_NAME_PLACEHOLDER' | translate\"\n [submitted]=\"submitted()\"\n formControlName=\"entityName\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.ID_NUMBER' | translate\"\n [placeholder]=\"'AUTH.REGISTER.ID_NUMBER_PLACEHOLDER' | translate\"\n [submitted]=\"submitted()\"\n type=\"number\"\n formControlName=\"idNumber\"\n />\n</form>\n","import { Component, output, inject, signal, input, ChangeDetectionStrategy } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { saudiMobileValidator } from '@libs/core/validators';\nimport { VALIDATION_LENGTHS, PLACEHOLDER_KEYS } from '@libs/core/constants';\nimport { useFormInitData, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\nimport { StepComponent, ResponsibleUserForm, RegistrationData } from '../models/register.models';\n\n@Component({\n selector: 'ncim-step-responsible-user',\n imports: [ReactiveFormsModule, TranslateModule, FormInput],\n templateUrl: './step-responsible-user.html',\n styleUrl: './step-responsible-user.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepResponsibleUser implements StepComponent {\n private readonly fb = inject(FormBuilder);\n readonly placeholderKeys = PLACEHOLDER_KEYS;\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<ResponsibleUserForm>();\n readonly submitted = signal(false);\n readonly submitting = signal(false);\n\n readonly form = this.fb.group({\n fullName: ['', [Validators.required, Validators.minLength(VALIDATION_LENGTHS.MIN_LENGTH)]],\n jobTitle: ['', [Validators.required, Validators.minLength(VALIDATION_LENGTHS.MIN_LENGTH)]],\n email: ['', [Validators.required, Validators.email]],\n mobile: ['', [Validators.required, saudiMobileValidator()]],\n });\n\n constructor() {\n useFormInitData(this.form, this.initialData);\n }\n\n getFormData(): Partial<RegistrationData> {\n return this.form.getRawValue() as Partial<RegistrationData>;\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.submitting.set(true);\n this.form.disable();\n this.next.emit(this.form.getRawValue() as ResponsibleUserForm);\n }\n\n onSubmitComplete(): void {\n this.submitting.set(false);\n this.form.enable();\n }\n}\n","<form class=\"responsible-user\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.FULL_NAME' | translate\"\n [placeholder]=\"'AUTH.REGISTER.FULL_NAME' | translate\"\n formControlName=\"fullName\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.JOB_TITLE' | translate\"\n [placeholder]=\"'AUTH.REGISTER.JOB_TITLE' | translate\"\n formControlName=\"jobTitle\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.EMAIL' | translate\"\n [placeholder]=\"placeholderKeys.EMAIL | translate\"\n formControlName=\"email\"\n type=\"email\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.MOBILE' | translate\"\n [placeholder]=\"placeholderKeys.MOBILE | translate\"\n formControlName=\"mobile\"\n type=\"phone\"\n [submitted]=\"submitted()\"\n >\n </ncim-form-input>\n</form>\n","import { Component, output, signal, input, computed, effect, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { PACKAGES, PACKAGE_FEATURES } from '@libs/core/constants';\nimport { PackageType } from '@libs/core/enums';\nimport { Tabs, type TabItem } from '@libs/ui-components/shared/molecules/tabs/tabs';\nimport { TabPanel } from '@libs/ui-components/shared/molecules/tab-panel/tab-panel';\nimport { PackageFeatureCard } from '@libs/ui-components/shared/molecules/package-feature-card/package-feature-card';\nimport { BulletList } from '@libs/ui-components/shared/molecules/bullet-list/bullet-list';\nimport { Checkbox } from '@libs/ui-components/shared/atoms/checkbox/checkbox';\nimport { StepComponent, PackageSelectionForm, RegistrationData } from '../models/register.models';\n\n@Component({\n selector: 'ncim-step-package-selection',\n imports: [TranslateModule, Tabs, TabPanel, PackageFeatureCard, BulletList, Checkbox, FormsModule],\n templateUrl: './step-package-selection.html',\n styleUrl: './step-package-selection.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepPackageSelection implements StepComponent {\n private translate = inject(TranslateService);\n\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<PackageSelectionForm>();\n\n readonly selectedPackage = signal<string>(PACKAGES[0].id);\n readonly submitted = signal(false);\n readonly showSelectionError = computed(() => this.submitted() && !this.selectedPackage());\n readonly activeTab = signal<string>(PACKAGES[0].id);\n\n readonly tabs: TabItem[] = PACKAGES.map(pkg => ({ id: pkg.id, label: pkg.name }));\n readonly packages = PACKAGES;\n readonly packageFeatures = PACKAGE_FEATURES;\n readonly PackageType = PackageType;\n\n readonly confirmPackageLabel = computed(() => {\n const currentSelectedPackage = this.packages.find(t => t.id === this.selectedPackage());\n const packageName = currentSelectedPackage ? this.translate.instant(currentSelectedPackage.name) : '';\n return this.translate.instant('AUTH.REGISTER.CONFIRM_PACKAGE', { packageName });\n });\n\n constructor() {\n effect(() => {\n const saved = this.initialData().selectedPackage;\n if (saved) {\n this.selectedPackage.set(saved);\n this.activeTab.set(saved);\n }\n });\n }\n\n getFormData(): Partial<RegistrationData> {\n return { selectedPackage: this.selectedPackage() };\n }\n\n onTabChange(tabId: string): void {\n this.activeTab.set(tabId);\n this.selectedPackage.set(tabId);\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n const selected = this.selectedPackage();\n if (selected) {\n this.next.emit({ selectedPackage: selected });\n }\n }\n}\n","<div class=\"package-selection\">\n <ncim-tabs [items]=\"tabs\" [activeId]=\"activeTab()\" [variant]=\"'pills'\" [size]=\"'medium'\" (tabChange)=\"onTabChange($event)\"> </ncim-tabs>\n\n @for (pkg of packages; track pkg.id) {\n <ncim-tab-panel [id]=\"pkg.id\" [activeId]=\"activeTab()\">\n @if (pkg.id === PackageType.CUSTOM) {\n <ncim-package-feature-card\n [title]=\"pkg.title | translate\"\n [price]=\"pkg.price\"\n [special]=\"pkg.special\"\n [popular]=\"pkg.popular\"\n [description]=\"pkg.description | translate\"\n >\n <div class=\"package__options\">\n @for (feature of packageFeatures; track feature.title) {\n <ncim-checkbox [label]=\"feature.title | translate\" [(ngModel)]=\"feature.included\" />\n }\n </div>\n </ncim-package-feature-card>\n } @else {\n <ncim-package-feature-card\n [title]=\"pkg.title | translate\"\n [price]=\"pkg.price\"\n [special]=\"pkg.special\"\n [popular]=\"pkg.popular\"\n [description]=\"pkg.description | translate\"\n >\n <ncim-bullet-list [items]=\"pkg.features\" [maxColumns]=\"2\"></ncim-bullet-list>\n </ncim-package-feature-card>\n }\n </ncim-tab-panel>\n }\n\n <ncim-checkbox [label]=\"confirmPackageLabel()\" />\n\n @if (showSelectionError()) {\n <span class=\"package-selection__error\">{{ 'ERRORS.REQUIRED' | translate }}</span>\n }\n</div>\n","import { Component, output, signal, input, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { StepComponent, SessionSchedulingForm, RegistrationData } from '../models/register.models';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { OptionGroup, type OptionItem } from '@libs/ui-components/shared/molecules/option-group/option-group';\nimport { TIME } from '@libs/core/constants';\nimport { dateMinValidator } from '@libs/core/validators';\nimport { useFormInitData, markSubmittedAndValidate } from '@libs/core/utils/form.utils';\n\n@Component({\n selector: 'ncim-step-session-scheduling',\n imports: [TranslateModule, ReactiveFormsModule, FormInput, OptionGroup],\n templateUrl: './step-session-scheduling.html',\n styleUrl: './step-session-scheduling.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepSessionScheduling implements StepComponent {\n private readonly fb = inject(FormBuilder);\n readonly initialData = input<Partial<RegistrationData>>({});\n readonly next = output<SessionSchedulingForm>();\n\n readonly submitted = signal(false);\n readonly submitting = signal(false);\n readonly today = new Date();\n\n readonly form = this.fb.group({\n date: ['', [Validators.required, dateMinValidator(new Date())]],\n time: ['', Validators.required],\n });\n\n readonly timeOptionsArray: OptionItem[] = TIME.map(option => ({ value: option, label: option }));\n\n constructor() {\n useFormInitData(this.form, this.initialData);\n }\n\n getFormData(): Partial<RegistrationData> {\n return this.form.getRawValue() as Partial<RegistrationData>;\n }\n\n onSubmit(): void {\n this.submitted.set(true);\n if (!markSubmittedAndValidate(this.form)) {\n return;\n }\n this.submitting.set(true);\n this.form.disable();\n this.next.emit(this.form.getRawValue() as SessionSchedulingForm);\n }\n\n onSubmitComplete(): void {\n this.submitting.set(false);\n this.form.enable();\n }\n}\n","<form class=\"session\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ncim-form-input\n [label]=\"'AUTH.REGISTER.SESSION_SCHEDULING_PROMPT' | translate\"\n [placeholder]=\"'AUTH.REGISTER.SESSION_SCHEDULING_PROMPT' | translate\"\n formControlName=\"date\"\n type=\"date\"\n [minDate]=\"today\"\n [submitted]=\"submitted()\"\n />\n\n <ncim-option-group [options]=\"timeOptionsArray\" formControlName=\"time\" [submitted]=\"submitted()\" />\n</form>\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuthLayout } from '@libs/ui-components/shared/templates/auth-layout/auth-layout';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { SummaryCard } from '@libs/ui-components/shared/molecules/summary-card/summary-card';\nimport { AuthHeader } from '../../auth/auth-header/auth-header';\nimport { SummaryItem } from '../models/register.models';\n\n/** Displays registration summary and action button. */\n@Component({\n selector: 'ncim-registration-success-view',\n imports: [TranslateModule, AuthLayout, AuthHeader, NcimButton, SummaryCard],\n templateUrl: './registration-success-view.html',\n styleUrl: './registration-success-view.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegistrationSuccessView {\n readonly items = input.required<SummaryItem[]>();\n readonly titleKey = input.required<string>();\n readonly subtitleKey = input.required<string>();\n readonly actionLabelKey = input.required<string>();\n readonly illustrationSrc = input<string>('assets/images/Success.png');\n\n readonly actionClick = output<void>();\n}\n","<ncim-auth-layout width=\"full\">\n <main class=\"registration-success__content\">\n <div class=\"registration-success__illustration\">\n <img [src]=\"illustrationSrc()\" alt=\"Success\" />\n </div>\n\n <ncim-auth-header\n [titleKey]=\"titleKey()\"\n [subtitleKey]=\"subtitleKey()\"\n titleMargin=\"0 0 var(--space-sm)\"\n subtitleMargin=\"0 0 var(--space-2xl)\"\n />\n\n <div class=\"registration-success__grid\">\n @for (item of items(); track item.labelKey) {\n <ncim-summary-card\n [icon]=\"$any(item.icon)\"\n [label]=\"item.labelKey | translate\"\n [value]=\"item.value\"\n [subValue]=\"item.subValue ?? ''\"\n />\n }\n </div>\n\n <div class=\"registration-success__actions\">\n <ncim-button [size]=\"'large'\" variant=\"neutral\" class=\"registration-success__home-btn\" (click)=\"actionClick.emit()\">\n {{ actionLabelKey() | translate }}\n </ncim-button>\n </div>\n </main>\n</ncim-auth-layout>\n","/** Register step components and shared models. */\nexport { StepEntityType } from './step-entity-type/step-entity-type';\nexport { StepAccountVerification } from './step-account-verification/step-account-verification';\nexport { StepEntityDetails } from './step-entity-details/step-entity-details';\nexport { StepInspectionDetails } from './step-inspection-details/step-inspection-details';\nexport { StepResponsibleUser } from './step-responsible-user/step-responsible-user';\nexport { StepPackageSelection } from './step-package-selection/step-package-selection';\nexport { StepSessionScheduling } from './step-session-scheduling/step-session-scheduling';\nexport { RegistrationSuccessView } from './registration-success-view/registration-success-view';\nexport type {\n StepComponent,\n RegistrationData,\n RegistrationSummary,\n SummaryItem,\n EntityDetailsForm,\n InspectionDetailsForm,\n ResponsibleUserForm,\n AccountVerificationForm,\n SessionSchedulingForm,\n PackageSelectionForm,\n} from './models/register.models';\n","/** Default phone placeholder for new ticket form (Saudi format). */\nexport const DEFAULT_TICKET_PHONE = '0547873344';\n\n/** Duration (ms) to show \"Copied\" feedback after clipboard write. */\nexport const COPY_FEEDBACK_MS = 2_000;\n\n/** Ticket number generation: random range [min, min+range) for 6-digit display. */\nexport const TICKET_NUMBER_RANGE = { MIN: 100_000, LENGTH: 900_000 } as const;\n\nexport const SUPPORT_FILTER_CONFIG = {\n columns: 5,\n debounceMs: 300,\n showReset: false,\n showSubmit: false,\n fields: [\n {\n key: 'search',\n type: 'search' as const,\n placeholder: 'FILTER.SEARCH',\n icon: 'search-black',\n iconPosition: 'start' as const,\n },\n {\n key: 'date',\n type: 'date' as const,\n placeholder: 'SUPPORTER.FILTER_DATE',\n icon: 'datepicker',\n iconPosition: 'start' as const,\n },\n {\n key: 'objectionType',\n type: 'select' as const,\n placeholder: 'FILTER.OBJECTION_TYPE',\n icon: 'objection',\n iconPosition: 'start' as const,\n options: [\n { value: 'objection_on_violation', label: 'FILTER.OBJECTION_ON_VIOLATION' },\n { value: 'objection_on_service', label: 'FILTER.OBJECTION_ON_SERVICE' },\n ],\n },\n {\n key: 'requester',\n type: 'select' as const,\n placeholder: 'FILTER.REQUESTER',\n icon: 'person',\n iconPosition: 'start' as const,\n options: [{ value: 'license_owner', label: 'FILTER.LICENSE_OWNER' }],\n },\n {\n key: 'status',\n type: 'select' as const,\n placeholder: 'FILTER.STATUS',\n icon: 'status',\n iconPosition: 'start' as const,\n options: [\n { value: 'new', label: 'FILTER.NEW' },\n { value: 'in_progress', label: 'FILTER.IN_PROGRESS' },\n { value: 'under_review', label: 'SUPPORTER.STATUS_UNDER_REVIEW' },\n { value: 'resolved', label: 'FILTER.RESOLVED' },\n { value: 'closed', label: 'FILTER.CLOSED' },\n ],\n },\n ],\n};\n","import type { SupportTicket } from './models/supporter.models';\nimport { TICKET_NUMBER_RANGE } from './supporter.constants';\n\n/** Status config: labelKey for i18n, color for badge. */\nexport const STATUS_CONFIG: Record<string, { labelKey: string; color: string }> = {\n resolved: { labelKey: 'SUPPORTER.STATUS_RESOLVED', color: '#085d3a' },\n under_review: { labelKey: 'SUPPORTER.STATUS_UNDER_REVIEW', color: '#f59e0b' },\n in_progress: { labelKey: 'SUPPORTER.STATUS_IN_PROGRESS', color: '#3b82f6' },\n};\n\n/** Legacy STATUS_MAP for GridTable (uses labelKey - grid must translate). Kept for backward compat. */\nexport const STATUS_MAP: Record<string, { label: string; color: string; bgColor: string }> = {\n resolved: { label: 'تم الحل', color: '#085D3A', bgColor: '#ECFDF3' },\n under_review: { label: 'قيد المراجعة', color: '#93370D', bgColor: '#FFFAEB' },\n in_progress: { label: 'جاري المعالجة', color: '#1849A9', bgColor: '#EFF6FF' },\n};\n\nexport const DEMO_TICKETS: SupportTicket[] = [\n {\n id: '1',\n number: '#67892',\n title: 'عدم القدرة على تقديم اعتراض على مخالفة',\n description:\n 'أحاول تقديم اعتراض على مخالفة عبر النظام لكن لا يمكنني إكمال العملية. تظهر لي رسالة خطأ ولا يتم تحميل صفحة تقديم الاعتراض.\\nأحتاج المساعدة لمعرفة سبب المشكلة وتمكين تقديم الاعتراض بشكل صحيح.',\n submitterName: 'خالد ابراهيم',\n submitterRole: 'مالك الرخصة',\n date: '22 نوفمبر 2023',\n submissionDate: '12 ابريل 2025',\n status: 'resolved',\n mainClassification: 'مشكلة فنية',\n subClassification: 'الاعتراضات',\n idNumber: '1083302229',\n phone: '05038373464',\n attachments: [\n { name: 'لقطة_شاشة_23-08-2024.png', url: '#' },\n { name: 'لقطة_شاشة_23-08-2024.png', url: '#' },\n ],\n responses: [\n {\n responderName: 'حمد يوسف',\n responderRole: 'SUPPORTER.DETAIL_TECHNICAL_SUPPORT',\n date: '12 مارس 2025 - PM 6:40',\n message:\n 'تم استلام طلبكم وسيتم فحص المشكلة الفنية. يرجى مشاركة صورة لرسالة الخطأ، وسنقوم بإشعاركم فور المعالجة',\n attachment: { name: 'لقطة_شاشة_23-08-2024.png', url: '#' },\n },\n ],\n updateLog: [\n { message: 'SUPPORTER.LOG_STATUS_RESOLVED', date: '12 مارس 2025 - PM 6:40' },\n { message: 'SUPPORTER.LOG_STATUS_IN_PROGRESS', date: '12 مارس 2025 - PM 6:40' },\n { message: 'SUPPORTER.LOG_STATUS_UNDER_REVIEW', date: '12 مارس 2025 - PM 6:40' },\n ],\n },\n {\n id: '2',\n number: '#90123',\n title: 'طلب دعم في إعداد الحساب',\n description: 'أحتاج مساعدة في إعداد الحساب وربطه بالرخصة التجارية.',\n submitterName: 'مالك الرخصة',\n submitterRole: 'مالك',\n date: '15 مايو 2023',\n status: 'under_review',\n mainClassification: 'طلب دعم',\n subClassification: 'إدارة الحساب',\n idNumber: '1083302229',\n phone: '05038373464',\n attachments: [],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_UNDER_REVIEW', date: '15 مايو 2023 - PM 2:00' }],\n },\n {\n id: '3',\n number: '#34567',\n title: 'طلب تعديل الصلاحيات',\n description: 'أحتاج تعديل صلاحيات المستخدمين في النظام.',\n submitterName: 'مالك الرخصة',\n submitterRole: 'مالك',\n date: '02 يناير 2024',\n status: 'in_progress',\n mainClassification: 'طلب تعديل',\n subClassification: 'الصلاحيات',\n idNumber: '1083302229',\n phone: '05038373464',\n attachments: [],\n responses: [],\n updateLog: [\n { message: 'SUPPORTER.LOG_STATUS_IN_PROGRESS', date: '02 يناير 2024 - AM 10:30' },\n { message: 'SUPPORTER.LOG_STATUS_UNDER_REVIEW', date: '02 يناير 2024 - AM 10:00' },\n ],\n },\n {\n id: '4',\n number: '#45678',\n title: 'استفسار عن تجديد الرخصة',\n description: 'أود الاستفسار عن إجراءات تجديد الرخصة التجارية وتواريخ الاستحقاق.',\n submitterName: 'سارة أحمد',\n submitterRole: 'مدير الكيان',\n date: '18 مارس 2024',\n status: 'resolved',\n mainClassification: 'استفسار',\n subClassification: 'التقارير',\n idNumber: '1095384721',\n phone: '05603348120',\n attachments: [],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_RESOLVED', date: '20 مارس 2024 - PM 3:15' }],\n },\n {\n id: '5',\n number: '#56789',\n title: 'مشكلة في تحميل التقرير',\n description: 'لا يمكنني تحميل تقرير الامتثال من لوحة التحكم. يظهر خطأ عند النقر على زر التحميل.',\n submitterName: 'أحمد علي',\n submitterRole: 'مشاهد',\n date: '05 يونيو 2024',\n status: 'under_review',\n mainClassification: 'مشكلة فنية',\n subClassification: 'التقارير',\n idNumber: '1102345678',\n phone: '05012345678',\n attachments: [{ name: 'خطأ_تحميل.png', url: '#' }],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_UNDER_REVIEW', date: '06 يونيو 2024 - AM 9:00' }],\n },\n {\n id: '6',\n number: '#67890',\n title: 'طلب إضافة مستخدم جديد',\n description: 'أحتاج إضافة مستخدم جديد إلى الحساب وربطه بالكيان.',\n submitterName: 'فاطمة حسن',\n submitterRole: 'مدير الكيان',\n date: '12 أغسطس 2024',\n status: 'in_progress',\n mainClassification: 'طلب دعم',\n subClassification: 'إدارة الحساب',\n idNumber: '1113456789',\n phone: '05523456789',\n attachments: [],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_IN_PROGRESS', date: '13 أغسطس 2024 - PM 2:30' }],\n },\n {\n id: '7',\n number: '#78901',\n title: 'اعتراض على مخالفة رقم 12345',\n description: 'أود تقديم اعتراض رسمي على مخالفة وردت في آخر زيارة رقابية.',\n submitterName: 'خالد عمر',\n submitterRole: 'مالك الرخصة',\n date: '25 سبتمبر 2024',\n status: 'under_review',\n mainClassification: 'مشكلة فنية',\n subClassification: 'الاعتراضات',\n idNumber: '1124567890',\n phone: '05434567890',\n attachments: [\n { name: 'مستند_الاعتراض.pdf', url: '#' },\n { name: 'صورة_المخالفة.jpg', url: '#' },\n ],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_UNDER_REVIEW', date: '26 سبتمبر 2024 - AM 11:00' }],\n },\n {\n id: '8',\n number: '#89012',\n title: 'استفسار عن نطاق الصلاحيات',\n description: 'ما هي الصلاحيات المتاحة لدور المشاهد؟ وهل يمكنني طلب توسيع الصلاحيات؟',\n submitterName: 'مريم سعد',\n submitterRole: 'مشاهد',\n date: '10 أكتوبر 2024',\n status: 'resolved',\n mainClassification: 'استفسار',\n subClassification: 'الصلاحيات',\n idNumber: '1135678901',\n phone: '05345678901',\n attachments: [],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_RESOLVED', date: '11 أكتوبر 2024 - PM 4:45' }],\n },\n {\n id: '9',\n number: '#90124',\n title: 'خطأ في عرض بيانات الكيان',\n description: 'بيانات الكيان لا تظهر بشكل صحيح في لوحة التحكم. بعض الحقول فارغة أو تحتوي على قيم خاطئة.',\n submitterName: 'عمر يوسف',\n submitterRole: 'مدير الكيان',\n date: '15 نوفمبر 2024',\n status: 'in_progress',\n mainClassification: 'مشكلة فنية',\n subClassification: 'إدارة الحساب',\n idNumber: '1146789012',\n phone: '05256789012',\n attachments: [{ name: 'لقطة_شاشة_الخطأ.png', url: '#' }],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_IN_PROGRESS', date: '16 نوفمبر 2024 - AM 10:15' }],\n },\n {\n id: '10',\n number: '#01235',\n title: 'طلب تصدير البيانات',\n description: 'أحتاج تصدير بيانات الامتثال للربع الأخير بصيغة Excel.',\n submitterName: 'لينا محمود',\n submitterRole: 'محرر',\n date: '03 ديسمبر 2024',\n status: 'resolved',\n mainClassification: 'طلب دعم',\n subClassification: 'التقارير',\n idNumber: '1157890123',\n phone: '05167890123',\n attachments: [],\n responses: [],\n updateLog: [{ message: 'SUPPORTER.LOG_STATUS_RESOLVED', date: '04 ديسمبر 2024 - PM 1:20' }],\n },\n];\n\nexport const CLASSIFICATION_OPTIONS = [\n { value: 'technical', labelKey: 'SUPPORTER.CLASS_TECHNICAL' },\n { value: 'support', labelKey: 'SUPPORTER.CLASS_SUPPORT' },\n { value: 'modification', labelKey: 'SUPPORTER.CLASS_MODIFICATION' },\n { value: 'inquiry', labelKey: 'SUPPORTER.CLASS_INQUIRY' },\n];\n\nexport const SUB_CLASSIFICATION_OPTIONS = [\n { value: 'objections', labelKey: 'SUPPORTER.SUB_CLASS_OBJECTIONS' },\n { value: 'account', labelKey: 'SUPPORTER.SUB_CLASS_ACCOUNT' },\n { value: 'permissions', labelKey: 'SUPPORTER.SUB_CLASS_PERMISSIONS' },\n { value: 'reports', labelKey: 'SUPPORTER.SUB_CLASS_REPORTS' },\n];\n\nexport function generateTicketNumber(): string {\n const { MIN, LENGTH } = TICKET_NUMBER_RANGE;\n const num = Math.floor(MIN + Math.random() * LENGTH);\n return `#T-${num}`;\n}\n","import { Component, ChangeDetectionStrategy, input, output, signal, inject, DestroyRef, computed } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { timer } from 'rxjs';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { DialogModule } from 'primeng/dialog';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { FileUpload } from '@libs/ui-components/shared/organisms/file-upload/file-upload';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport type { SelectOption } from '@libs/ui-components/shared/molecules/form-select/select-option.interface';\nimport { CopyNumber } from '@libs/ui-components/shared/molecules/copy-number/copy-number';\nimport { generateTicketNumber, CLASSIFICATION_OPTIONS, SUB_CLASSIFICATION_OPTIONS } from '../supporter.data';\nimport { DEFAULT_TICKET_PHONE, COPY_FEEDBACK_MS } from '../supporter.constants';\n\n@Component({\n selector: 'ncim-new-ticket-dialog',\n imports: [ReactiveFormsModule, TranslateModule, DialogModule, NcimButton, FileUpload, FormInput, Icon, CopyNumber],\n templateUrl: './new-ticket-dialog.html',\n styleUrl: './new-ticket-dialog.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NewTicketDialog {\n private readonly fb = inject(FormBuilder);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n\n readonly visible = input<boolean>(false);\n readonly visibleChange = output<boolean>();\n\n readonly view = signal<'form' | 'success'>('form');\n readonly attachedFiles = signal<File[]>([]);\n readonly ticketNumber = signal(generateTicketNumber());\n readonly submitted = signal(false);\n readonly copied = signal(false);\n\n private readonly _lang = toSignal(this.translate.onLangChange, { initialValue: null });\n\n readonly classificationSelectOptions = computed<SelectOption[]>(() => {\n this._lang();\n return CLASSIFICATION_OPTIONS.map(opt => ({ value: opt.value, label: this.translate.instant(opt.labelKey) }));\n });\n\n readonly subClassificationSelectOptions = computed<SelectOption[]>(() => {\n this._lang();\n return SUB_CLASSIFICATION_OPTIONS.map(opt => ({ value: opt.value, label: this.translate.instant(opt.labelKey) }));\n });\n\n readonly form = this.fb.nonNullable.group({\n title: ['', [Validators.required, Validators.minLength(3)]],\n description: ['', [Validators.required, Validators.minLength(10)]],\n mainClassification: ['', Validators.required],\n subClassification: ['', Validators.required],\n phone: [DEFAULT_TICKET_PHONE, Validators.required],\n email: [''],\n });\n\n onSubmit(): void {\n this.submitted.set(true);\n if (this.form.valid) {\n this.view.set('success');\n }\n }\n\n onSaveDraft(): void {\n this.closeDialog();\n }\n\n onCancel(): void {\n this.closeDialog();\n }\n\n onDone(): void {\n this.closeDialog();\n }\n\n async copyTicketNumber(): Promise<void> {\n const num = this.ticketNumber();\n try {\n await navigator.clipboard.writeText(num);\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 — no user feedback needed\n }\n }\n\n private closeDialog(): void {\n this.visibleChange.emit(false);\n this.view.set('form');\n this.submitted.set(false);\n this.form.reset({\n title: '',\n description: '',\n mainClassification: '',\n subClassification: '',\n phone: DEFAULT_TICKET_PHONE,\n email: '',\n });\n this.ticketNumber.set(generateTicketNumber());\n this.attachedFiles.set([]);\n }\n\n onVisibleChange(val: boolean): void {\n if (!val) {\n this.closeDialog();\n }\n }\n}\n","<p-dialog\n [visible]=\"visible()\"\n (visibleChange)=\"onVisibleChange($event)\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [closable]=\"true\"\n [style]=\"{ width: '560px' }\"\n [showHeader]=\"false\"\n styleClass=\"new-ticket-dialog\"\n>\n @if (view() === 'form') {\n <div class=\"ticket-form\">\n <div class=\"ticket-form__header\">\n <div class=\"ticket-form__header-content\">\n <h2 class=\"ticket-form__title\">{{ 'SUPPORTER.NEW_TICKET_TITLE' | translate }}</h2>\n <ncim-copy-number [value]=\"ticketNumber()\"></ncim-copy-number>\n </div>\n <button type=\"button\" class=\"ticket-form__close\" (click)=\"onCancel()\">✕</button>\n </div>\n\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"ticket-form__body\">\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"title\"\n type=\"text\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_TITLE' | translate\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"description\"\n type=\"textarea\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_DESC' | translate\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"mainClassification\"\n type=\"select\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_MAIN_CLASS' | translate\"\n [options]=\"classificationSelectOptions()\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"subClassification\"\n type=\"select\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_SUB_CLASS' | translate\"\n [options]=\"subClassificationSelectOptions()\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"phone\"\n type=\"phone\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_PHONE' | translate\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-form-input\n formControlName=\"email\"\n type=\"email\"\n [label]=\"'SUPPORTER.NEW_TICKET_LABEL_EMAIL' | translate\"\n [submitted]=\"submitted()\"\n />\n </div>\n\n <div class=\"ticket-form__field\">\n <ncim-file-upload (filesChanged)=\"attachedFiles.set($event)\" />\n </div>\n\n <div class=\"ticket-form__actions\">\n <div class=\"ticket-form__primary-actions\">\n <ncim-button variant=\"black\" type=\"submit\" [fullWidth]=\"true\" size=\"small\">\n {{ 'SUPPORTER.NEW_TICKET_SUBMIT' | translate }}\n </ncim-button>\n <ncim-button variant=\"secondary\" [fullWidth]=\"true\" size=\"small\" (click)=\"onCancel()\">\n {{ 'SUPPORTER.NEW_TICKET_CANCEL' | translate }}\n </ncim-button>\n </div>\n\n <button type=\"button\" class=\"ticket-form__draft-btn\" (click)=\"onSaveDraft()\">\n {{ 'SUPPORTER.NEW_TICKET_SAVE_DRAFT' | translate }}\n </button>\n </div>\n </form>\n </div>\n }\n\n @if (view() === 'success') {\n <div class=\"ticket-success\">\n <div class=\"ticket-success__illustration\">\n <ncim-icon name=\"check-circle\" [size]=\"64\" />\n </div>\n <h2 class=\"ticket-success__title\">{{ 'SUPPORTER.SUCCESS_TITLE' | translate }}</h2>\n <p class=\"ticket-success__desc\">{{ 'SUPPORTER.SUCCESS_DESC' | translate }}</p>\n <span class=\"ticket-success__number\">\n <ncim-icon name=\"chat\" [size]=\"16\" />\n {{ ticketNumber() }}\n <button\n type=\"button\"\n class=\"ticket-success__copy\"\n (click)=\"copyTicketNumber()\"\n [attr.aria-label]=\"'SUPPORTER.COPY_TICKET' | translate\"\n >\n <ncim-icon [name]=\"copied() ? 'check' : 'clipboard'\" [size]=\"14\" />\n </button>\n </span>\n <div class=\"ticket-success__action\">\n <ncim-button variant=\"black\" [fullWidth]=\"true\" (click)=\"onDone()\">\n {{ 'SUPPORTER.SUCCESS_DONE' | translate }}\n </ncim-button>\n </div>\n </div>\n }\n</p-dialog>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'ncim-knowledge-center-welcome-section',\n imports: [TranslateModule],\n templateUrl: './knowledge-center-welcome-section.html',\n styleUrl: './knowledge-center-welcome-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterWelcomeSection {\n readonly userName = input.required<string>();\n}\n","<section class=\"knowledge-center-welcome-section\">\n <h2 class=\"knowledge-center-welcome-section__title\">\n {{ 'KNOWLEDGE.WELCOME_MESSAGE' | translate: { name: userName() } }}\n </h2>\n <p class=\"knowledge-center-welcome-section__desc\">\n {{ 'KNOWLEDGE.WELCOME_DESC' | translate }}\n </p>\n</section>\n","import { Component, ChangeDetectionStrategy, input, output, signal, computed } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport type { KnowledgeSuggestedTag, KnowledgeSearchSuggestion } from '../models/knowledge-center.models';\n\n@Component({\n selector: 'ncim-knowledge-center-search-section',\n imports: [TranslateModule, Icon],\n templateUrl: './knowledge-center-search-section.html',\n styleUrl: './knowledge-center-search-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterSearchSection {\n readonly suggestedTags = input.required<KnowledgeSuggestedTag[]>();\n readonly searchSuggestions = input<KnowledgeSearchSuggestion[]>([]);\n\n readonly searchSubmit = output<string>();\n readonly searchSuggestionClick = output<KnowledgeSearchSuggestion>();\n readonly searchQueryChange = output<string>();\n\n readonly searchQuery = signal('');\n readonly isSearchDisabled = computed(() => this.searchQuery().trim().length === 0);\n\n readonly showDropdown = computed(() => this.searchQuery().length > 0);\n\n onSearchInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const value = inputEl?.value ?? '';\n this.searchQuery.set(value);\n this.searchQueryChange.emit(value);\n }\n\n onSearch(): void {\n const q = this.searchQuery().trim();\n if (q) {\n this.searchSubmit.emit(q);\n }\n }\n\n onSearchSuggestionClick(suggestion: KnowledgeSearchSuggestion): void {\n this.searchSuggestionClick.emit(suggestion);\n }\n}\n","<section class=\"knowledge-center-search-section\">\n <div class=\"knowledge-center-search-section__container\">\n <div class=\"knowledge-center-search-section__bar\">\n <ncim-icon name=\"Ball\" [size]=\"28\" />\n <input\n type=\"text\"\n class=\"knowledge-center-search-section__input\"\n [placeholder]=\"'KNOWLEDGE.SEARCH_PLACEHOLDER' | translate\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown.enter)=\"onSearch()\"\n />\n <button type=\"button\" class=\"knowledge-center-search-section__submit\" (click)=\"onSearch()\" [disabled]=\"isSearchDisabled()\">\n <ncim-icon name=\"Up-arrrow\" [size]=\"16\" />\n </button>\n </div>\n\n @if (showDropdown()) {\n <div class=\"knowledge-center-search-section__dropdown\">\n @for (suggestion of searchSuggestions(); track suggestion.title) {\n <div class=\"knowledge-center-search-section__suggestion\" (click)=\"onSearchSuggestionClick(suggestion)\">\n <div class=\"knowledge-center-search-section__suggestion-content\">\n <h3 class=\"knowledge-center-search-section__suggestion-title\">{{ suggestion.title }}</h3>\n <p class=\"knowledge-center-search-section__suggestion-description\">{{ suggestion.description }}</p>\n </div>\n <div class=\"knowledge-center-search-section__suggestion-tags\">\n @for (tag of suggestion.tags; track tag.label) {\n <div class=\"knowledge-center-search-section__suggestion-tag\">\n <ncim-icon [name]=\"tag.icon\" [size]=\"10\" />\n <span>{{ tag.label }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"knowledge-center-search-section__suggestions\">\n @for (tag of suggestedTags(); track tag.queryKey) {\n <div class=\"knowledge-center-search-section__tag\">\n <span class=\"knowledge-center-search-section__title\"> {{ tag.queryKey | translate }} </span>\n </div>\n }\n </div>\n</section>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { CircularProgress } from '@libs/ui-components/shared/atoms/circular-progress/circular-progress';\nimport type { KnowledgeCategory } from '../models/knowledge-center.models';\n\n@Component({\n selector: 'ncim-knowledge-center-browse-section',\n imports: [TranslateModule, Icon, CircularProgress],\n templateUrl: './knowledge-center-browse-section.html',\n styleUrl: './knowledge-center-browse-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterBrowseSection {\n readonly categories = input.required<KnowledgeCategory[]>();\n readonly sectionTitleKey = input('KNOWLEDGE.BROWSE_GUIDE');\n\n readonly categoryClick = output<string>();\n\n onCategoryClick(slug: string): void {\n this.categoryClick.emit(slug);\n }\n}\n","<section class=\"knowledge-center-browse-section\">\n <h3 class=\"knowledge-center-browse-section__title\">\n {{ sectionTitleKey() | translate }}\n </h3>\n <div class=\"knowledge-center-browse-section__categories\">\n @for (category of categories(); track category.slug) {\n <button type=\"button\" class=\"knowledge-center-browse-section__card\" (click)=\"onCategoryClick(category.slug)\">\n @if (category.step && category.totalSteps) {\n <div class=\"knowledge-center-browse-section__icon-step\">\n <div class=\"knowledge-center-browse-section__icon\" [style.background]=\"category.background\">\n <ncim-icon [name]=\"category.icon\" [size]=\"24\" />\n </div>\n <ncim-circular-progress [current]=\"category.step\" [total]=\"category.totalSteps\" [size]=\"48\" />\n </div>\n } @else {\n <div class=\"knowledge-center-browse-section__icon\" [style.background]=\"category.background\">\n <ncim-icon [name]=\"category.icon\" [size]=\"24\" />\n </div>\n }\n <div class=\"knowledge-center-browse-section__section__content\">\n <span class=\"knowledge-center-browse-section__card-title\">\n {{ category.titleKey | translate }}\n </span>\n <p class=\"knowledge-center-browse-section__card-desc\">\n {{ category.descriptionKey | translate }}\n </p>\n </div>\n </button>\n }\n <div class=\"knowledge-center-browse-section__support-slot\">\n <ng-content />\n </div>\n </div>\n</section>\n","import { Component, ChangeDetectionStrategy, output } 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-knowledge-center-support-section',\n imports: [TranslateModule, NcimButton],\n templateUrl: './knowledge-center-support-section.html',\n styleUrl: './knowledge-center-support-section.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterSupportSection {\n readonly newTicket = output<void>();\n readonly viewTickets = output<void>();\n\n onNewTicket(): void {\n this.newTicket.emit();\n }\n\n onViewTickets(): void {\n this.viewTickets.emit();\n }\n}\n","<section class=\"knowledge-center-support-section\">\n <div class=\"knowledge-center-support-section__content\">\n <div class=\"knowledge-center-support-section__text\">\n <h3 class=\"knowledge-center-support-section__title\">\n {{ 'KNOWLEDGE.SUPPORT_TITLE' | translate }}\n </h3>\n <p class=\"knowledge-center-support-section__desc\">\n {{ 'KNOWLEDGE.SUPPORT_DESC' | translate }}\n </p>\n <div class=\"knowledge-center-support-section__actions\">\n <ncim-button variant=\"black\" [fullWidth]=\"true\" size=\"small\" (click)=\"onNewTicket()\">\n {{ 'KNOWLEDGE.NEW_TICKET' | translate }}\n </ncim-button>\n <ncim-button variant=\"secondary\" [fullWidth]=\"true\" size=\"small\" (click)=\"onViewTickets()\">\n {{ 'KNOWLEDGE.VIEW_TICKETS' | translate }}\n </ncim-button>\n </div>\n </div>\n <div class=\"knowledge-center-support-section__illustration\" aria-hidden=\"true\"></div>\n </div>\n</section>\n","import { ROUTE_SEGMENTS } from '@libs/core/constants';\nimport type { KnowledgeTopic, KnowledgeCategory, KnowledgeSuggestedTag } from './models/knowledge-center.models';\n\nexport const LANDING_CATEGORIES: KnowledgeCategory[] = [\n {\n slug: 'system-basics',\n titleKey: 'KNOWLEDGE.CATEGORY_SYSTEM_BASICS_TITLE',\n descriptionKey: 'KNOWLEDGE.CATEGORY_SYSTEM_BASICS_DESC',\n icon: 'layers',\n background: '#FFF6E1',\n step: 1,\n totalSteps: 4,\n },\n {\n slug: 'performance-services',\n titleKey: 'KNOWLEDGE.CATEGORY_PERFORMANCE_TITLE',\n descriptionKey: 'KNOWLEDGE.CATEGORY_PERFORMANCE_DESC',\n icon: 'activity',\n background: '#F1EAF4',\n },\n {\n slug: 'account-management',\n titleKey: 'KNOWLEDGE.CATEGORY_ACCOUNT_TITLE',\n descriptionKey: 'KNOWLEDGE.CATEGORY_ACCOUNT_DESC',\n icon: 'settings2',\n background: '#EFF8FF',\n },\n {\n slug: 'compliance-program',\n titleKey: 'KNOWLEDGE.CATEGORY_COMPLIANCE_TITLE',\n descriptionKey: 'KNOWLEDGE.CATEGORY_COMPLIANCE_DESC',\n icon: 'honour-star',\n background: '#FEF3F2',\n },\n];\n\nexport const SUGGESTED_TAGS: KnowledgeSuggestedTag[] = [\n { queryKey: 'KNOWLEDGE.SUGGEST_DASHBOARD', categorySlug: 'performance-services' },\n { queryKey: 'KNOWLEDGE.SUGGEST_OBJECTION', categorySlug: 'system-basics' },\n { queryKey: 'KNOWLEDGE.SUGGEST_COMPLIANCE', categorySlug: 'compliance-program' },\n { queryKey: 'KNOWLEDGE.SUGGEST_REGULATORY', categorySlug: 'compliance-program' },\n];\n\nconst PLACEHOLDER_THUMB = 'https://placehold.co/160x90/e5e7eb/6b7280?text=Video';\n\nexport const KNOWLEDGE_TOPICS: KnowledgeTopic[] = [\n // System basics\n {\n slug: 'ui-settings',\n titleKey: 'KNOWLEDGE.TOPIC_UI_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_UI_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'system-basics',\n },\n {\n slug: 'navigation-overview',\n titleKey: 'KNOWLEDGE.TOPIC_NAVIGATION_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_NAVIGATION_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'system-basics',\n },\n {\n slug: 'data-export',\n titleKey: 'KNOWLEDGE.TOPIC_DATA_EXPORT_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_DATA_EXPORT_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'system-basics',\n },\n {\n slug: 'filters-search',\n titleKey: 'KNOWLEDGE.TOPIC_FILTERS_SEARCH_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_FILTERS_SEARCH_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'system-basics',\n },\n // Performance and services\n {\n slug: 'dashboard-intro',\n titleKey: 'KNOWLEDGE.TOPIC_DASHBOARD_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_DASHBOARD_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'performance-services',\n },\n {\n slug: 'reports-indicators',\n titleKey: 'KNOWLEDGE.TOPIC_REPORTS_INDICATORS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_REPORTS_INDICATORS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'performance-services',\n },\n {\n slug: 'notifications-alerts',\n titleKey: 'KNOWLEDGE.TOPIC_NOTIFICATIONS_ALERTS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_NOTIFICATIONS_ALERTS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'performance-services',\n },\n {\n slug: 'charts-analytics',\n titleKey: 'KNOWLEDGE.TOPIC_CHARTS_ANALYTICS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_CHARTS_ANALYTICS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'performance-services',\n },\n // Account management\n {\n slug: 'entities-licenses',\n titleKey: 'KNOWLEDGE.TOPIC_ENTITIES_LICENSES_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_ENTITIES_LICENSES_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'account-management',\n },\n {\n slug: 'users-permissions',\n titleKey: 'KNOWLEDGE.TOPIC_USERS_PERMISSIONS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_USERS_PERMISSIONS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'account-management',\n },\n {\n slug: 'profile-settings',\n titleKey: 'KNOWLEDGE.TOPIC_PROFILE_SETTINGS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_PROFILE_SETTINGS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'account-management',\n },\n {\n slug: 'roles-permissions',\n titleKey: 'KNOWLEDGE.TOPIC_ROLES_PERMISSIONS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_ROLES_PERMISSIONS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'account-management',\n },\n // Compliance program\n {\n slug: 'compliance-overview',\n titleKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_OVERVIEW_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_OVERVIEW_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'compliance-program',\n },\n {\n slug: 'regulatory-dashboard',\n titleKey: 'KNOWLEDGE.TOPIC_REGULATORY_DASHBOARD_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_REGULATORY_DASHBOARD_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'compliance-program',\n },\n {\n slug: 'compliance-steps',\n titleKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_STEPS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_STEPS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'compliance-program',\n },\n {\n slug: 'violations-objections',\n titleKey: 'KNOWLEDGE.TOPIC_VIOLATIONS_OBJECTIONS_TITLE',\n descriptionKey: 'KNOWLEDGE.TOPIC_VIOLATIONS_OBJECTIONS_DESC',\n thumbnailSrc: PLACEHOLDER_THUMB,\n categorySlug: 'compliance-program',\n },\n];\n\nexport function getTopicsByCategory(categorySlug: string): KnowledgeTopic[] {\n return KNOWLEDGE_TOPICS.filter(t => t.categorySlug === categorySlug);\n}\n\nexport const CATEGORY_TITLE_KEYS: Record<string, string> = {\n 'system-basics': 'KNOWLEDGE.CATEGORY_SYSTEM_BASICS_TITLE',\n 'performance-services': 'KNOWLEDGE.CATEGORY_PERFORMANCE_TITLE',\n 'account-management': 'KNOWLEDGE.CATEGORY_ACCOUNT_TITLE',\n 'compliance-program': 'KNOWLEDGE.CATEGORY_COMPLIANCE_TITLE',\n};\n\nconst PLACEHOLDER_THUMB_VIDEO = 'https://placehold.co/160x90/e5e7eb/6b7280?text=Video';\n\nexport interface TopicConfig {\n slug: string;\n titleKey: string;\n contentKey: string;\n videoSrc: string;\n faqItems: { questionKey: string; answerKey: string }[];\n relatedSlugs: string[];\n}\n\nexport const TOPIC_CONFIGS: Record<string, TopicConfig> = {\n 'dashboard-intro': {\n slug: 'dashboard-intro',\n titleKey: 'KNOWLEDGE.TOPIC_DASHBOARD_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['ui-settings', 'entities-licenses', 'reports-indicators'],\n },\n 'ui-settings': {\n slug: 'ui-settings',\n titleKey: 'KNOWLEDGE.TOPIC_UI_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n ],\n relatedSlugs: ['dashboard-intro', 'entities-licenses', 'users-permissions'],\n },\n 'entities-licenses': {\n slug: 'entities-licenses',\n titleKey: 'KNOWLEDGE.TOPIC_ENTITIES_LICENSES_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['dashboard-intro', 'ui-settings', 'reports-indicators'],\n },\n 'reports-indicators': {\n slug: 'reports-indicators',\n titleKey: 'KNOWLEDGE.TOPIC_REPORTS_INDICATORS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['dashboard-intro', 'ui-settings', 'entities-licenses'],\n },\n 'users-permissions': {\n slug: 'users-permissions',\n titleKey: 'KNOWLEDGE.TOPIC_USERS_PERMISSIONS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [{ questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' }],\n relatedSlugs: ['entities-licenses', 'ui-settings', 'notifications-alerts'],\n },\n 'notifications-alerts': {\n slug: 'notifications-alerts',\n titleKey: 'KNOWLEDGE.TOPIC_NOTIFICATIONS_ALERTS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [{ questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' }],\n relatedSlugs: ['dashboard-intro', 'reports-indicators', 'users-permissions'],\n },\n 'navigation-overview': {\n slug: 'navigation-overview',\n titleKey: 'KNOWLEDGE.TOPIC_NAVIGATION_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n ],\n relatedSlugs: ['ui-settings', 'dashboard-intro', 'filters-search'],\n },\n 'data-export': {\n slug: 'data-export',\n titleKey: 'KNOWLEDGE.TOPIC_DATA_EXPORT_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [{ questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' }],\n relatedSlugs: ['reports-indicators', 'notifications-alerts', 'dashboard-intro'],\n },\n 'filters-search': {\n slug: 'filters-search',\n titleKey: 'KNOWLEDGE.TOPIC_FILTERS_SEARCH_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n ],\n relatedSlugs: ['navigation-overview', 'ui-settings', 'reports-indicators'],\n },\n 'charts-analytics': {\n slug: 'charts-analytics',\n titleKey: 'KNOWLEDGE.TOPIC_CHARTS_ANALYTICS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['dashboard-intro', 'reports-indicators', 'notifications-alerts'],\n },\n 'profile-settings': {\n slug: 'profile-settings',\n titleKey: 'KNOWLEDGE.TOPIC_PROFILE_SETTINGS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [{ questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' }],\n relatedSlugs: ['users-permissions', 'entities-licenses', 'roles-permissions'],\n },\n 'roles-permissions': {\n slug: 'roles-permissions',\n titleKey: 'KNOWLEDGE.TOPIC_ROLES_PERMISSIONS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n ],\n relatedSlugs: ['users-permissions', 'entities-licenses', 'profile-settings'],\n },\n 'compliance-overview': {\n slug: 'compliance-overview',\n titleKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_OVERVIEW_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['regulatory-dashboard', 'compliance-steps', 'violations-objections'],\n },\n 'regulatory-dashboard': {\n slug: 'regulatory-dashboard',\n titleKey: 'KNOWLEDGE.TOPIC_REGULATORY_DASHBOARD_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n ],\n relatedSlugs: ['compliance-overview', 'dashboard-intro', 'reports-indicators'],\n },\n 'compliance-steps': {\n slug: 'compliance-steps',\n titleKey: 'KNOWLEDGE.TOPIC_COMPLIANCE_STEPS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'https://www.youtube.com/embed/R6D7jQI4BD0',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_2_Q', answerKey: 'KNOWLEDGE.FAQ_2_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['compliance-overview', 'violations-objections', 'regulatory-dashboard'],\n },\n 'violations-objections': {\n slug: 'violations-objections',\n titleKey: 'KNOWLEDGE.TOPIC_VIOLATIONS_OBJECTIONS_TITLE',\n contentKey: 'KNOWLEDGE.TOPIC_DASHBOARD_BODY',\n videoSrc: 'core/assets/video/file_example_MP4_480_1_5MG (1).mp4',\n faqItems: [\n { questionKey: 'KNOWLEDGE.FAQ_1_Q', answerKey: 'KNOWLEDGE.FAQ_1_A' },\n { questionKey: 'KNOWLEDGE.FAQ_3_Q', answerKey: 'KNOWLEDGE.FAQ_3_A' },\n ],\n relatedSlugs: ['compliance-steps', 'compliance-overview', 'notifications-alerts'],\n },\n};\n\nconst TOPIC_TITLE_KEYS: Record<string, string> = {\n 'dashboard-intro': 'KNOWLEDGE.TOPIC_DASHBOARD_TITLE',\n 'ui-settings': 'KNOWLEDGE.TOPIC_UI_TITLE',\n 'entities-licenses': 'KNOWLEDGE.TOPIC_ENTITIES_LICENSES_TITLE',\n 'reports-indicators': 'KNOWLEDGE.TOPIC_REPORTS_INDICATORS_TITLE',\n 'users-permissions': 'KNOWLEDGE.TOPIC_USERS_PERMISSIONS_TITLE',\n 'notifications-alerts': 'KNOWLEDGE.TOPIC_NOTIFICATIONS_ALERTS_TITLE',\n 'navigation-overview': 'KNOWLEDGE.TOPIC_NAVIGATION_TITLE',\n 'data-export': 'KNOWLEDGE.TOPIC_DATA_EXPORT_TITLE',\n 'filters-search': 'KNOWLEDGE.TOPIC_FILTERS_SEARCH_TITLE',\n 'charts-analytics': 'KNOWLEDGE.TOPIC_CHARTS_ANALYTICS_TITLE',\n 'profile-settings': 'KNOWLEDGE.TOPIC_PROFILE_SETTINGS_TITLE',\n 'roles-permissions': 'KNOWLEDGE.TOPIC_ROLES_PERMISSIONS_TITLE',\n 'compliance-overview': 'KNOWLEDGE.TOPIC_COMPLIANCE_OVERVIEW_TITLE',\n 'regulatory-dashboard': 'KNOWLEDGE.TOPIC_REGULATORY_DASHBOARD_TITLE',\n 'compliance-steps': 'KNOWLEDGE.TOPIC_COMPLIANCE_STEPS_TITLE',\n 'violations-objections': 'KNOWLEDGE.TOPIC_VIOLATIONS_OBJECTIONS_TITLE',\n};\n\nconst TOPIC_DESC_KEYS: Record<string, string> = {\n 'dashboard-intro': 'KNOWLEDGE.TOPIC_DASHBOARD_DESC',\n 'ui-settings': 'KNOWLEDGE.TOPIC_UI_DESC',\n 'entities-licenses': 'KNOWLEDGE.TOPIC_ENTITIES_LICENSES_DESC',\n 'reports-indicators': 'KNOWLEDGE.TOPIC_REPORTS_INDICATORS_DESC',\n 'users-permissions': 'KNOWLEDGE.TOPIC_USERS_PERMISSIONS_DESC',\n 'notifications-alerts': 'KNOWLEDGE.TOPIC_NOTIFICATIONS_ALERTS_DESC',\n 'navigation-overview': 'KNOWLEDGE.TOPIC_NAVIGATION_DESC',\n 'data-export': 'KNOWLEDGE.TOPIC_DATA_EXPORT_DESC',\n 'filters-search': 'KNOWLEDGE.TOPIC_FILTERS_SEARCH_DESC',\n 'charts-analytics': 'KNOWLEDGE.TOPIC_CHARTS_ANALYTICS_DESC',\n 'profile-settings': 'KNOWLEDGE.TOPIC_PROFILE_SETTINGS_DESC',\n 'roles-permissions': 'KNOWLEDGE.TOPIC_ROLES_PERMISSIONS_DESC',\n 'compliance-overview': 'KNOWLEDGE.TOPIC_COMPLIANCE_OVERVIEW_DESC',\n 'regulatory-dashboard': 'KNOWLEDGE.TOPIC_REGULATORY_DASHBOARD_DESC',\n 'compliance-steps': 'KNOWLEDGE.TOPIC_COMPLIANCE_STEPS_DESC',\n 'violations-objections': 'KNOWLEDGE.TOPIC_VIOLATIONS_OBJECTIONS_DESC',\n};\n\nexport function getRelatedTopics(\n slug: string\n): { titleKey: string; descriptionKey: string; thumbnailSrc: string; route: string[] }[] {\n const config = TOPIC_CONFIGS[slug];\n if (!config) {\n return [];\n }\n const baseRoute = ['/', ROUTE_SEGMENTS.DASHBOARD, ROUTE_SEGMENTS.KNOWLEDGE_CENTER, ROUTE_SEGMENTS.KNOWLEDGE_TOPIC];\n return config.relatedSlugs.map(relatedSlug => ({\n titleKey: TOPIC_TITLE_KEYS[relatedSlug] ?? '',\n descriptionKey: TOPIC_DESC_KEYS[relatedSlug] ?? '',\n thumbnailSrc: PLACEHOLDER_THUMB_VIDEO,\n route: [...baseRoute, relatedSlug],\n }));\n}\n","import { Injectable, signal } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { KnowledgeSearchSuggestion } from '../models/knowledge-center.models';\n\nconst MOCK_SUGGESTIONS: KnowledgeSearchSuggestion[] = [\n {\n title: 'كيف يمكنني متابعة امتثال رخصي في النظام؟',\n description:\n 'يمكنك متابعة امتثال الرخص من خلال اللوحة الرقابية. ابدأ بـ إنشاء كيان جديد، ثم إضافة السجلات التجارية المطلوبة. بعد الإضافة ستظهر لك جميع الرخص المرتبطة بالكيان، ويمكنك اختيار الرخصة التي تريد متابعة امتثالها وعرض مؤشرات الأداء الخاصة بها',\n tags: [\n { label: 'إنشاء كيان', icon: 'new-office-filled' },\n { label: 'عرض الرخص', icon: 'new-office-filled' },\n { label: 'إضافة سجلات', icon: 'new-office-filled' },\n ],\n },\n];\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KnowledgeCenterService {\n /**\n * Fetches search suggestions based on a query.\n * For now, it returns a static mock.\n */\n getSearchSuggestions(_query: string): Observable<KnowledgeSearchSuggestion[]> {\n return of(MOCK_SUGGESTIONS);\n }\n}\n","import { Component, ChangeDetectionStrategy, computed, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { toSignal, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { switchMap, of } from 'rxjs';\nimport { ROUTE_SEGMENTS } from '@libs/core/constants';\nimport { AuthService } from '@libs/core/services';\nimport { PageHeader } from '@libs/ui-components/shared/organisms/page-header/page-header';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { NewTicketDialog } from '../../supporter/new-ticket-dialog/new-ticket-dialog';\nimport { KnowledgeCenterWelcomeSection } from '../knowledge-center-welcome-section/knowledge-center-welcome-section';\nimport { KnowledgeCenterSearchSection } from '../knowledge-center-search-section/knowledge-center-search-section';\nimport { KnowledgeCenterBrowseSection } from '../knowledge-center-browse-section/knowledge-center-browse-section';\nimport { KnowledgeCenterSupportSection } from '../knowledge-center-support-section/knowledge-center-support-section';\nimport { LANDING_CATEGORIES, SUGGESTED_TAGS } from '../knowledge-center.data';\nimport { KnowledgeCenterService } from '../services/knowledge-center.service';\nimport type { KnowledgeSearchSuggestion } from '../models/knowledge-center.models';\n\n@Component({\n selector: 'ncim-knowledge-center-landing',\n imports: [\n TranslateModule,\n PageHeader,\n NewTicketDialog,\n KnowledgeCenterWelcomeSection,\n KnowledgeCenterSearchSection,\n KnowledgeCenterBrowseSection,\n KnowledgeCenterSupportSection,\n ],\n templateUrl: './knowledge-center-landing.html',\n styleUrl: './knowledge-center-landing.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterLanding {\n readonly showNewTicketDialog = signal(false);\n readonly categories = LANDING_CATEGORIES;\n readonly suggestedTags = SUGGESTED_TAGS;\n\n readonly searchTerms = signal<string>('');\n\n private readonly authService = inject(AuthService);\n private readonly router = inject(Router);\n private readonly knowledgeCenterService = inject(KnowledgeCenterService);\n\n readonly searchSuggestions = toSignal(\n toObservable(this.searchTerms).pipe(\n switchMap(term => (term ? this.knowledgeCenterService.getSearchSuggestions(term) : of([])))\n ),\n { initialValue: [] as KnowledgeSearchSuggestion[] }\n );\n\n readonly breadcrumbItems: BreadcrumbItem[] = [\n {\n translateKey: 'KNOWLEDGE.LANDING_TITLE',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}`,\n },\n ];\n\n /** Display name derived from SSO claims; falls back to a generic greeting key. */\n readonly userName = computed(() => {\n const user = this.authService.currentUser();\n return user?.ar_name ?? user?.given_name ?? '';\n });\n\n navigateToCategory(categorySlug: string): void {\n this.router.navigate([\n ROUTE_SEGMENTS.DASHBOARD,\n ROUTE_SEGMENTS.KNOWLEDGE_CENTER,\n ROUTE_SEGMENTS.KNOWLEDGE_CATEGORY,\n categorySlug,\n ]);\n }\n\n onSearch(query: string): void {\n this.router.navigate(\n [\n ROUTE_SEGMENTS.DASHBOARD,\n ROUTE_SEGMENTS.KNOWLEDGE_CENTER,\n ROUTE_SEGMENTS.KNOWLEDGE_CATEGORY,\n 'performance-services',\n ],\n { queryParams: { q: query } }\n );\n }\n\n onSuggestionClick(tag: { categorySlug: string; queryKey: string }): void {\n this.router.navigate(\n [ROUTE_SEGMENTS.DASHBOARD, ROUTE_SEGMENTS.KNOWLEDGE_CENTER, ROUTE_SEGMENTS.KNOWLEDGE_CATEGORY, tag.categorySlug],\n { queryParams: { q: tag.queryKey } }\n );\n }\n\n onSearchSuggestionClick(suggestion: KnowledgeSearchSuggestion): void {\n this.onSearch(suggestion.title);\n }\n\n onNewTicket(): void {\n this.showNewTicketDialog.set(true);\n }\n\n onViewTickets(): void {\n this.router.navigate([ROUTE_SEGMENTS.DASHBOARD, ROUTE_SEGMENTS.SUPPORTER]);\n }\n}\n","<div class=\"knowledge-center-landing\">\n <div class=\"bg-header\">\n <img class=\"bg-header__layer-image\" src=\"assets/ncim-icons/bg-knowledge-02.svg\" alt=\"layer\" />\n <ncim-page-header titleKey=\"KNOWLEDGE.LANDING_TITLE\" [breadcrumbItems]=\"breadcrumbItems\" />\n\n <ncim-knowledge-center-welcome-section [userName]=\"userName()\" />\n\n <ncim-knowledge-center-search-section\n [suggestedTags]=\"suggestedTags\"\n [searchSuggestions]=\"searchSuggestions() ?? []\"\n (searchSubmit)=\"onSearch($event)\"\n (searchSuggestionClick)=\"onSearchSuggestionClick($event)\"\n (searchQueryChange)=\"searchTerms.set($event)\"\n />\n </div>\n\n <ncim-knowledge-center-browse-section [categories]=\"categories\" (categoryClick)=\"navigateToCategory($event)\">\n <ncim-knowledge-center-support-section (newTicket)=\"onNewTicket()\" (viewTickets)=\"onViewTickets()\" />\n </ncim-knowledge-center-browse-section>\n\n <ncim-new-ticket-dialog [visible]=\"showNewTicketDialog()\" (visibleChange)=\"showNewTicketDialog.set($event)\" />\n</div>\n","import { Component, inject, computed, signal, ChangeDetectionStrategy, DestroyRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LOADING_DELAY_MS, ROUTE_SEGMENTS } from '@libs/core/constants';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { CardsListPage } from '@libs/ui-components/shared/organisms/cards-list-page/cards-list-page';\nimport { Skeleton } from '@libs/ui-components/shared/atoms/skeleton/skeleton';\nimport { getTopicsByCategory, CATEGORY_TITLE_KEYS } from '../knowledge-center.data';\n\n@Component({\n selector: 'ncim-knowledge-center-category',\n imports: [CardsListPage, Skeleton],\n templateUrl: './knowledge-center-category.html',\n styleUrl: './knowledge-center-category.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterCategory {\n private readonly route = inject(ActivatedRoute);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly isLoading = signal(true);\n readonly categorySlug = this.route.snapshot.paramMap.get('categorySlug') ?? '';\n\n readonly topics = computed(() => getTopicsByCategory(this.categorySlug));\n\n readonly breadcrumbItems = computed<BreadcrumbItem[]>(() => [\n {\n translateKey: 'KNOWLEDGE.LANDING_TITLE',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}`,\n },\n ]);\n\n readonly titleKey = computed(() => CATEGORY_TITLE_KEYS[this.categorySlug] ?? 'KNOWLEDGE.LANDING_TITLE');\n\n readonly getTopicRouteFn = (slug: string) => [\n '/',\n ROUTE_SEGMENTS.DASHBOARD,\n ROUTE_SEGMENTS.KNOWLEDGE_CENTER,\n ROUTE_SEGMENTS.KNOWLEDGE_TOPIC,\n slug,\n ];\n\n constructor() {\n timer(LOADING_DELAY_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.isLoading.set(false));\n }\n}\n","@if (isLoading()) {\n <div class=\"kc-category-skeleton\">\n <div class=\"kc-category-skeleton__header\">\n <ncim-skeleton variant=\"text\" width=\"140px\" />\n <ncim-skeleton variant=\"header\" width=\"280px\" />\n </div>\n <div class=\"kc-category-skeleton__grid\">\n @for (i of [0, 1, 2, 3, 4, 5]; track i) {\n <div class=\"kc-category-skeleton__card\">\n <ncim-skeleton variant=\"circular\" width=\"48px\" height=\"48px\" />\n <div class=\"kc-category-skeleton__card-body\">\n <ncim-skeleton variant=\"header\" width=\"65%\" />\n <ncim-skeleton variant=\"text\" [count]=\"2\" />\n </div>\n </div>\n }\n </div>\n </div>\n} @else {\n <ncim-cards-list-page [titleKey]=\"titleKey()\" [breadcrumbItems]=\"breadcrumbItems()\" [items]=\"topics()\" [getItemRoute]=\"getTopicRouteFn\" />\n}\n","import { Component, inject, computed, signal, ChangeDetectionStrategy, DestroyRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { timer } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LOADING_DELAY_MS, ROUTE_SEGMENTS } from '@libs/core/constants';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { ArticlePage } from '@libs/ui-components/shared/organisms/article-page/article-page';\nimport type { RelatedCardItem } from '@libs/ui-components/shared/organisms/related-cards-list/related-cards-list';\nimport type { ResourceItem } from '@libs/ui-components/shared/organisms/resources-list/resources-list';\nimport type { AccordionItem } from '@libs/ui-components/shared/molecules/accordion/accordion';\nimport { Skeleton } from '@libs/ui-components/shared/atoms/skeleton/skeleton';\nimport { NewTicketDialog } from '../../supporter/new-ticket-dialog/new-ticket-dialog';\nimport { TOPIC_CONFIGS, getRelatedTopics, CATEGORY_TITLE_KEYS, KNOWLEDGE_TOPICS } from '../knowledge-center.data';\n\n@Component({\n selector: 'ncim-knowledge-center-topic',\n imports: [ArticlePage, NewTicketDialog, Skeleton],\n templateUrl: './knowledge-center-topic.html',\n styleUrl: './knowledge-center-topic.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KnowledgeCenterTopic {\n private readonly route = inject(ActivatedRoute);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly isLoading = signal(true);\n readonly showNewTicketDialog = signal(false);\n readonly slug = this.route.snapshot.paramMap.get('slug') ?? '';\n\n readonly config = computed(() => TOPIC_CONFIGS[this.slug] ?? null);\n\n readonly titleKey = computed(() => this.config()?.titleKey ?? 'KNOWLEDGE.LANDING_TITLE');\n readonly videoSrc = computed(() => this.config()?.videoSrc ?? '');\n readonly contentKey = computed(() => this.config()?.contentKey ?? '');\n readonly faqItems = computed<AccordionItem[]>(() =>\n (this.config()?.faqItems ?? []).map(f => ({\n questionKey: f.questionKey,\n answerKey: f.answerKey,\n }))\n );\n\n readonly relatedTopics = computed<RelatedCardItem[]>(() => getRelatedTopics(this.slug));\n\n readonly breadcrumbItems = computed<BreadcrumbItem[]>(() => {\n const topic = KNOWLEDGE_TOPICS.find(t => t.slug === this.slug);\n const categoryTitleKey = topic?.categorySlug ? CATEGORY_TITLE_KEYS[topic.categorySlug] : 'KNOWLEDGE.LANDING_TITLE';\n return [\n {\n translateKey: 'KNOWLEDGE.LANDING_TITLE',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}`,\n },\n {\n translateKey: categoryTitleKey,\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}/${ROUTE_SEGMENTS.KNOWLEDGE_CATEGORY}/${topic?.categorySlug ?? ''}`,\n },\n ];\n });\n\n readonly resources: ResourceItem[] = [\n { labelKey: 'KNOWLEDGE.RESOURCE_USER_GUIDE', url: '/assets/docs/user-guide.pdf' },\n ];\n\n constructor() {\n timer(LOADING_DELAY_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.isLoading.set(false));\n }\n\n onFeedback(value: 'yes' | 'no'): void {\n // Track feedback\n }\n\n onNewTicket(): void {\n this.showNewTicketDialog.set(true);\n }\n}\n","@if (isLoading()) {\n <div class=\"kc-topic-skeleton\">\n <div class=\"kc-topic-skeleton__header\">\n <ncim-skeleton variant=\"text\" width=\"220px\" />\n <ncim-skeleton variant=\"header\" width=\"360px\" />\n </div>\n <div class=\"kc-topic-skeleton__layout\">\n <div class=\"kc-topic-skeleton__main\">\n <ncim-skeleton variant=\"image\" height=\"220px\" />\n <div class=\"kc-topic-skeleton__body\">\n <ncim-skeleton variant=\"header\" width=\"75%\" />\n <ncim-skeleton variant=\"text\" [count]=\"5\" />\n <ncim-skeleton variant=\"text\" [count]=\"3\" width=\"85%\" />\n </div>\n <div class=\"kc-topic-skeleton__faq\">\n @for (i of [0, 1, 2]; track i) {\n <ncim-skeleton variant=\"input\" />\n }\n </div>\n </div>\n <div class=\"kc-topic-skeleton__sidebar\">\n @for (i of [0, 1, 2, 3]; track i) {\n <ncim-skeleton variant=\"rounded\" height=\"72px\" />\n }\n </div>\n </div>\n </div>\n} @else if (config()) {\n <ncim-article-page\n [titleKey]=\"titleKey()\"\n [breadcrumbItems]=\"breadcrumbItems()\"\n [videoSrc]=\"videoSrc()\"\n [contentKey]=\"contentKey()\"\n [accordionItems]=\"faqItems()\"\n accordionTitleKey=\"KNOWLEDGE.FAQ_TITLE\"\n [resources]=\"resources\"\n [relatedItems]=\"relatedTopics()\"\n relatedTitleKey=\"KNOWLEDGE.RELATED_TOPICS\"\n (feedback)=\"onFeedback($event)\"\n (newTicket)=\"onNewTicket()\"\n />\n}\n\n<ncim-new-ticket-dialog [visible]=\"showNewTicketDialog()\" (visibleChange)=\"showNewTicketDialog.set($event)\" />\n","import { Component, ChangeDetectionStrategy, signal, computed, inject, input, output } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ROUTE_SEGMENTS } from '@libs/core/constants';\nimport { PageHeader } from '@libs/ui-components/shared/organisms/page-header/page-header';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport {\n GridTable,\n type GridColumn,\n type GridSortEvent,\n} from '@libs/ui-components/shared/organisms/grid-table/grid-table';\nimport { ColumnsEnum } from '@libs/ui-components/shared/organisms/grid-table/enums/columns.enum';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { FilterForm } from '@libs/ui-components/shared/organisms/filter-form/filter-form';\nimport { EmptyState } from '@libs/ui-components/shared/organisms/empty-state/empty-state';\nimport { NewTicketDialog } from '../new-ticket-dialog/new-ticket-dialog';\nimport { DEMO_TICKETS, STATUS_MAP } from '../supporter.data';\nimport type { SupportTicket } from '../models/supporter.models';\nimport { SUPPORT_FILTER_CONFIG } from '../supporter.constants';\n\n@Component({\n selector: 'ncim-supporter-list',\n imports: [TranslateModule, PageHeader, NcimButton, Icon, GridTable, NewTicketDialog, FilterForm, EmptyState],\n templateUrl: './supporter-list.html',\n styleUrl: './supporter-list.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupporterList {\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n readonly filterChange = output<any>();\n readonly sortChange = output<GridSortEvent>();\n\n readonly supportFilterConfig = SUPPORT_FILTER_CONFIG;\n\n /** Optional: override tickets from parent (e.g. mock service). When undefined, uses DEMO_TICKETS. */\n readonly ticketsInput = input<SupportTicket[] | undefined>();\n /** Optional: show loading skeleton. Default false. */\n readonly loadingInput = input<boolean>(false);\n /** Active sort field — restores sort arrow after a loading cycle. */\n readonly sortFieldInput = input<string | undefined>(undefined);\n /** Active sort direction — restores sort arrow after a loading cycle. */\n readonly sortOrderInput = input<'asc' | 'desc' | undefined>(undefined);\n\n readonly showNewTicketDialog = signal(this.route.snapshot.queryParamMap.get('action') === 'new');\n\n readonly searchQuery = signal('');\n readonly tickets = computed(() => this.ticketsInput() ?? DEMO_TICKETS);\n\n readonly filteredTickets = computed(() => {\n const query = this.searchQuery().trim().toLowerCase();\n const list = this.tickets();\n if (!query) {\n return list;\n }\n return list.filter(\n t =>\n t.number.toLowerCase().includes(query) ||\n t.title.toLowerCase().includes(query) ||\n t.submitterName.toLowerCase().includes(query) ||\n t.date.toLowerCase().includes(query)\n );\n });\n\n readonly hasTickets = computed(() => this.filteredTickets().length > 0);\n\n readonly breadcrumbItems: BreadcrumbItem[] = [\n {\n translateKey: 'SUPPORTER.PAGE_TITLE',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SUPPORTER}`,\n },\n ];\n\n readonly columns: GridColumn<SupportTicket>[] = [\n {\n header: 'SUPPORTER.COL_NUMBER',\n field: 'number',\n isSorted: true,\n type: ColumnsEnum.TEXT,\n cssStyle: `\n --grid-table-td-font-size: var(--font-size-md);\n `,\n },\n {\n header: 'SUPPORTER.COL_SUBMITTER',\n field: 'submitterName',\n isSorted: true,\n type: ColumnsEnum.TEXT,\n cssStyle: `\n --grid-table-td-color: var(--text-primary-paragraph);\n --grid-table-td-font-weight: var(--font-weight-medium);\n `,\n },\n {\n header: 'SUPPORTER.COL_TICKET',\n field: 'title',\n isSorted: true,\n type: ColumnsEnum.TEXT,\n cssStyle: `\n --grid-table-td-color: var(--text-primary-paragraph);\n --grid-table-td-font-weight: var(--font-weight-medium);\n `,\n },\n {\n header: 'SUPPORTER.COL_DATE',\n field: 'date',\n isSorted: true,\n type: ColumnsEnum.TEXT,\n cssStyle: `\n --grid-table-td-color: var(--text-primary-paragraph);\n --grid-table-td-font-weight: var(--font-weight-medium);\n `,\n },\n {\n header: 'SUPPORTER.COL_STATUS',\n field: 'status',\n isSorted: true,\n type: ColumnsEnum.STATUS,\n statusMap: STATUS_MAP,\n },\n {\n header: 'SUPPORTER.COL_ACTION',\n field: '',\n isSorted: false,\n type: ColumnsEnum.BUTTON,\n actions: [\n {\n type: 'command',\n label: '',\n icon: 'ellipsis',\n severity: 'secondary',\n iconOnly: true,\n command: (row: SupportTicket) => this.viewTicket(row),\n },\n ],\n },\n ];\n\n openNewTicket(): void {\n this.showNewTicketDialog.set(true);\n }\n\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchQuery.set(input?.value ?? '');\n }\n\n readonly rowDetailRoute = (row: SupportTicket): string | null => {\n if (!row.id) {\n return null;\n }\n return `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SUPPORTER}/${row.id}`;\n };\n\n viewTicket(ticket: SupportTicket): void {\n this.router.navigate([ROUTE_SEGMENTS.DASHBOARD, ROUTE_SEGMENTS.SUPPORTER, ticket.id]);\n }\n\n onFilterChange(values: any): void {\n this.filterChange.emit(values);\n }\n\n onSortChange(event: GridSortEvent): void {\n this.sortChange.emit(event);\n }\n}\n","<div class=\"supporter-list\">\n <div class=\"d-flex justify-content-between align-items-center supporter-list__header\">\n <ncim-page-header titleKey=\"SUPPORTER.DETAIL_TITLE\" [breadcrumbItems]=\"breadcrumbItems\" />\n\n <ncim-button variant=\"black\" [fullWidth]=\"false\" size=\"small\" icon=\"plus\" [iconSize]=\"17\" (click)=\"openNewTicket()\">\n {{ 'SUPPORTER.NEW_TICKET_BTN' | translate }}\n </ncim-button>\n </div>\n\n <div class=\"supporter-list__content\">\n <div class=\"supporter-list__toolbar\">\n <div class=\"supporter-list__actions\">\n <h2 class=\"supporter-list__toolbar-title\">{{ 'SUPPORTER.PAGE_TITLE' | translate }}</h2>\n <button type=\"button\" class=\"supporter-list__settings-btn\">\n <ncim-icon name=\"settings\" [size]=\"18\" />\n <span class=\"supporter-list__settings-btn__settings_title\">{{ 'SUPPORTER.SETTINGS' | translate }}</span>\n </button>\n </div>\n </div>\n <div>\n <ncim-filter-form [config]=\"supportFilterConfig\" (filterChange)=\"onFilterChange($event)\" class=\"mb-4\" />\n\n @if (hasTickets() || loadingInput()) {\n <ncim-grid-table\n [columns]=\"columns\"\n [data]=\"filteredTickets()\"\n [loading]=\"loadingInput()\"\n [sortField]=\"sortFieldInput()\"\n [sortOrder]=\"sortOrderInput()\"\n [rowRoute]=\"rowDetailRoute\"\n (sortChange)=\"onSortChange($event)\"\n />\n } @else {\n <ncim-empty-state titleKey=\"SUPPORTER.EMPTY_TITLE\" subtitleKey=\"SUPPORTER.EMPTY_DESC\" icon=\"chat\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"openNewTicket()\">\n {{ 'SUPPORTER.NEW_TICKET_BTN' | translate }}\n </ncim-button>\n </ncim-empty-state>\n }\n </div>\n </div>\n\n <ncim-new-ticket-dialog [visible]=\"showNewTicketDialog()\" (visibleChange)=\"showNewTicketDialog.set($event)\" />\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CopyNumber } from '@libs/ui-components/shared/molecules/copy-number/copy-number';\n\nexport interface DetailHeaderInfoRow {\n label: string;\n value: string;\n pill: boolean;\n}\n\nexport interface DetailHeaderStatusConfig {\n color: string;\n labelKey: string;\n}\n\n@Component({\n selector: 'ncim-supporter-detail-header',\n imports: [TranslateModule, CopyNumber],\n templateUrl: './supporter-detail-header.html',\n styleUrl: './supporter-detail-header.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupporterDetailHeader {\n readonly title = input.required<string>();\n readonly ticketNumber = input.required<string>();\n readonly submissionDate = input.required<string>();\n readonly statusConfig = input<DetailHeaderStatusConfig | null>(null);\n readonly infoRows = input<DetailHeaderInfoRow[]>([]);\n}\n","<div class=\"supporter-detail-header__top\">\n <div class=\"supporter-detail-header__title-group\">\n <div class=\"supporter-detail-header__title-row\">\n <h2 class=\"supporter-detail-header__title\">{{ title() }}</h2>\n @if (statusConfig(); as sc) {\n <span class=\"supporter-detail-header__status\">\n <span class=\"supporter-detail-header__status-dot\" [style.background-color]=\"sc.color\"></span>\n {{ sc.labelKey | translate }}\n </span>\n }\n </div>\n <ncim-copy-number [value]=\"ticketNumber()\" [iconSize]=\"18\" />\n </div>\n <span class=\"supporter-detail-header__submission-date\">\n {{ 'SUPPORTER.DETAIL_SUBMISSION_DATE' | translate }}\n <span class=\"supporter-detail-header__submission-date__date\">{{ submissionDate() }}</span>\n </span>\n</div>\n\n<div class=\"supporter-detail-header__divider\"></div>\n\n<div class=\"supporter-detail-header__info-grid\">\n @for (row of infoRows(); track $index) {\n <div class=\"supporter-detail-header__info-item\">\n <span class=\"supporter-detail-header__info-label\">{{ row.label | translate }}</span>\n @if (row.pill) {\n <span class=\"supporter-detail-header__info-pill\">{{ row.value }}</span>\n } @else {\n <span class=\"supporter-detail-header__info-value\">{{ row.value }}</span>\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport type { TicketAttachment } from '../models/supporter.models';\n\n@Component({\n selector: 'ncim-supporter-detail-body',\n imports: [TranslateModule, Icon],\n templateUrl: './supporter-detail-body.html',\n styleUrl: './supporter-detail-body.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupporterDetailBody {\n readonly description = input.required<string>();\n readonly attachments = input<TicketAttachment[]>([]);\n}\n","<!-- Description -->\n<div class=\"supporter-detail-body__section\">\n <h3 class=\"supporter-detail-body__section-title\">{{ 'SUPPORTER.DETAIL_DESCRIPTION' | translate }}</h3>\n <p class=\"supporter-detail-body__description\">{{ description() }}</p>\n\n <!-- Attachments -->\n @if (attachments().length) {\n <div class=\"supporter-detail-body__section\">\n <h3 class=\"supporter-detail-body__section-title supporter-detail-body__section-title--attachment\">\n <ncim-icon name=\"TagSimple\" [size]=\"20\" />\n {{ 'SUPPORTER.DETAIL_ATTACHMENTS' | translate }}\n </h3>\n <div class=\"supporter-detail-body__attachments\">\n @for (att of attachments(); track att.name) {\n <a class=\"supporter-detail-body__attachment\" [href]=\"att.url\" download>\n <span>{{ att.name }}</span>\n <ncim-icon name=\"download-small\" [size]=\"20\" />\n </a>\n }\n </div>\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Icon } from '@libs/ui-components/shared/atoms/icon/icon';\nimport { FeedbackSection } from '@libs/ui-components/shared/organisms/feedback-section/feedback-section';\nimport { Tabs, type TabItem } from '@libs/ui-components/shared/molecules/tabs/tabs';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport type { TicketResponse } from '../models/supporter.models';\n\n@Component({\n selector: 'ncim-supporter-detail-additional',\n imports: [TranslateModule, Icon, FeedbackSection, Tabs, FormInput, NcimButton],\n templateUrl: './supporter-detail-additional.html',\n styleUrl: './supporter-detail-additional.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupporterDetailAdditional {\n readonly responses = input<TicketResponse[]>([]);\n\n /** Emitted when the user submits helpful/not-helpful feedback. Parent handles the API call. */\n readonly feedbackSubmitted = output<'yes' | 'no'>();\n\n /** Emitted with the comment text when the user submits a comment. Parent handles the API call. */\n readonly commentSubmitted = output<string>();\n\n readonly tabs: TabItem[] = [\n { id: 'response', label: 'SUPPORTER.DETAIL_TAB_RESPONSE' },\n { id: 'violation', label: 'SUPPORTER.DETAIL_TAB_VIOLATION' },\n ];\n\n readonly activeTab = signal<string>('response');\n readonly comment = signal<string>('');\n\n onTabChange(id: string): void {\n this.activeTab.set(id);\n }\n\n onFeedback(value: 'yes' | 'no'): void {\n this.feedbackSubmitted.emit(value);\n }\n\n onSubmitComment(): void {\n if (!this.comment()) {\n return;\n }\n this.commentSubmitted.emit(this.comment());\n this.comment.set('');\n }\n}\n","<div class=\"supporter-detail-additional\">\n <h3 class=\"supporter-detail-additional__title\">{{ 'SUPPORTER.DETAIL_ADDITIONAL' | translate }}</h3>\n\n <ncim-tabs [items]=\"tabs\" [activeId]=\"activeTab()\" variant=\"underline\" justify=\"start\" (tabChange)=\"onTabChange($event)\" />\n\n @if (activeTab() === 'response') {\n @for (resp of responses(); track resp.date) {\n <div class=\"supporter-detail-additional__response\">\n <!-- Header: responder info + date in one row -->\n <div class=\"supporter-detail-additional__response-header\">\n <div class=\"supporter-detail-additional__responder\">\n <div class=\"supporter-detail-additional__responder-avatar\">\n <ncim-icon name=\"user-02\" [size]=\"24\" />\n </div>\n <div class=\"supporter-detail-additional__responder-info\">\n <span class=\"supporter-detail-additional__responder-name\">{{ resp.responderName }}</span>\n <span class=\"supporter-detail-additional__responder-role\">{{ resp.responderRole | translate }}</span>\n </div>\n </div>\n <span class=\"supporter-detail-additional__response-date\">\n {{ 'SUPPORTER.DETAIL_RESPONSE_DATE_PREFIX' | translate }} | {{ resp.date }}\n </span>\n </div>\n\n <!-- Message -->\n <div class=\"supporter-detail-additional__response-body\">\n <p class=\"supporter-detail-additional__response-message\">{{ resp.message }}</p>\n </div>\n\n <!-- Attachment: full-width row -->\n @if (resp.attachment) {\n <a class=\"supporter-detail-additional__attachment\" [href]=\"resp.attachment.url\" download>\n <span>{{ resp.attachment.name }}</span>\n <ncim-icon name=\"download-small\" [size]=\"20\" />\n </a>\n }\n </div>\n\n <div class=\"supporter-detail-additional__feedback\">\n <!-- Feedback section outside the card -->\n <ncim-feedback-section questionKey=\"SUPPORTER.DETAIL_FEEDBACK_QUESTION\" (feedback)=\"onFeedback($event)\" />\n\n <!-- Comment textarea + send -->\n <div class=\"supporter-detail-additional__comment-wrap\">\n <ncim-form-input\n type=\"textarea\"\n [label]=\"'FEEDBACK.ADD_COMMENT' | translate\"\n [placeholder]=\"'FEEDBACK.COMMENT_PLACEHOLDER' | translate\"\n [value]=\"comment()\"\n [rows]=\"4\"\n (valueChange)=\"comment.set($event)\"\n />\n <div class=\"supporter-detail-additional__comment-actions\">\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"true\" [disabled]=\"!comment()\" (click)=\"onSubmitComment()\">\n {{ 'FEEDBACK.SUBMIT' | translate }}\n </ncim-button>\n </div>\n </div>\n </div>\n }\n }\n</div>\n","import { Component, ChangeDetectionStrategy, inject, computed, signal, input, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { timer } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LOADING_DELAY_MS, ROUTE_SEGMENTS } from '@libs/core/constants';\nimport { PageHeader } from '@libs/ui-components/shared/organisms/page-header/page-header';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport {\n ViolationTimeline,\n type TimelineData,\n} from '@libs/ui-components/shared/organisms/violation-timeline/violation-timeline';\nimport { Skeleton } from '@libs/ui-components/shared/atoms/skeleton/skeleton';\nimport { EmptyState } from '@libs/ui-components/shared/organisms/empty-state/empty-state';\nimport type { BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { DEMO_TICKETS, STATUS_CONFIG } from '../supporter.data';\nimport type { SupportTicket } from '../models/supporter.models';\nimport { SupporterDetailHeader } from '../supporter-detail-header/supporter-detail-header';\nimport { SupporterDetailBody } from '../supporter-detail-body/supporter-detail-body';\nimport { SupporterDetailAdditional } from '../supporter-detail-additional/supporter-detail-additional';\n\n@Component({\n selector: 'ncim-supporter-detail',\n imports: [\n TranslateModule,\n PageHeader,\n NcimButton,\n EmptyState,\n SupporterDetailHeader,\n SupporterDetailBody,\n SupporterDetailAdditional,\n ViolationTimeline,\n Skeleton,\n ],\n templateUrl: './supporter-detail.html',\n styleUrl: './supporter-detail.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SupporterDetail {\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Optional: override loading from parent (e.g. mock service). When undefined, uses internal timer. */\n readonly loadingInput = input<boolean | undefined>();\n /** Optional: override ticket from parent. undefined = use DEMO_TICKETS, null = not found. */\n readonly ticketInput = input<SupportTicket | null | undefined>();\n\n readonly internalLoading = signal(true);\n readonly ticketId = this.route.snapshot.paramMap.get('ticketId') ?? '';\n\n constructor() {\n timer(LOADING_DELAY_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.internalLoading.set(false));\n }\n\n readonly isLoading = computed(() => this.loadingInput() ?? this.internalLoading());\n readonly ticket = computed(() => {\n const t = this.ticketInput();\n if (t !== undefined) {\n return t;\n }\n return DEMO_TICKETS.find(tk => tk.id === this.ticketId) ?? null;\n });\n\n readonly notFound = computed(() => !this.ticket());\n\n readonly statusConfig = computed(() => {\n const t = this.ticket();\n return t ? STATUS_CONFIG[t.status] : null;\n });\n\n readonly breadcrumbItems = computed<BreadcrumbItem[]>(() => [\n {\n translateKey: 'SIDEBAR.ITEMS.KNOWLEDGE_CENTER',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.KNOWLEDGE_CENTER}`,\n },\n {\n translateKey: 'SUPPORTER.PAGE_TITLE',\n url: `/${ROUTE_SEGMENTS.DASHBOARD}/${ROUTE_SEGMENTS.SUPPORTER}`,\n },\n ]);\n\n readonly infoRows = computed(() => {\n const t = this.ticket();\n if (!t) {\n return [];\n }\n return [\n { label: 'SUPPORTER.DETAIL_MAIN_CLASSIFICATION', value: t.mainClassification, pill: false },\n { label: 'SUPPORTER.DETAIL_REQUESTER', value: t.submitterName, pill: false },\n { label: 'SUPPORTER.DETAIL_SUB_CLASSIFICATION', value: t.subClassification, pill: false },\n { label: 'SUPPORTER.DETAIL_ROLE', value: t.submitterRole, pill: false },\n { label: 'SUPPORTER.DETAIL_PHONE', value: t.phone, pill: true },\n { label: 'SUPPORTER.DETAIL_ID_NUMBER', value: t.idNumber, pill: true },\n ];\n });\n\n readonly timelineData = computed<TimelineData | null>(() => {\n const t = this.ticket();\n if (!t?.updateLog?.length) {\n return null;\n }\n return {\n title: 'ARIA.UPDATE_LOG',\n timelineSteps: t.updateLog.map((entry, i) => ({\n label: entry.message,\n date: new Date(),\n isActive: i === 0,\n dateDisplay: entry.date,\n })),\n };\n });\n\n goBack(): void {\n this.router.navigate([ROUTE_SEGMENTS.DASHBOARD, ROUTE_SEGMENTS.SUPPORTER]);\n }\n}\n","@if (isLoading()) {\n <div class=\"supporter-detail-skeleton\">\n <ncim-page-header titleKey=\"SUPPORTER.DETAIL_TITLE\" [breadcrumbItems]=\"breadcrumbItems()\" />\n <div class=\"supporter-detail-skeleton__layout\">\n <div class=\"supporter-detail-skeleton__main\">\n <ncim-skeleton variant=\"rectangular\" height=\"220px\" class=\"supporter-detail__header-card\" />\n <ncim-skeleton variant=\"rectangular\" height=\"180px\" class=\"supporter-detail__header-card\" />\n <ncim-skeleton variant=\"rectangular\" height=\"200px\" />\n </div>\n <aside class=\"supporter-detail-skeleton__sidebar\" [attr.aria-label]=\"'ARIA.UPDATE_LOG' | translate\">\n <ncim-skeleton variant=\"rectangular\" height=\"240px\" />\n </aside>\n </div>\n </div>\n} @else if (notFound()) {\n <div class=\"supporter-detail supporter-detail--not-found\">\n <ncim-page-header titleKey=\"SUPPORTER.DETAIL_TITLE\" [breadcrumbItems]=\"breadcrumbItems()\" />\n <ncim-empty-state titleKey=\"SUPPORTER.NOT_FOUND_TITLE\" subtitleKey=\"SUPPORTER.NOT_FOUND_DESC\" icon=\"chat\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"goBack()\">\n {{ 'SUPPORTER.BACK_TO_LIST' | translate }}\n </ncim-button>\n </ncim-empty-state>\n </div>\n} @else if (ticket(); as t) {\n <div class=\"supporter-detail\">\n <ncim-page-header titleKey=\"SUPPORTER.DETAIL_TITLE\" [breadcrumbItems]=\"breadcrumbItems()\" />\n\n <div class=\"supporter-detail__layout\">\n <!-- Main content -->\n <div class=\"supporter-detail__main\">\n <!-- Header card -->\n <ncim-supporter-detail-header\n class=\"supporter-detail__header-card\"\n [title]=\"t.title\"\n [ticketNumber]=\"t.number\"\n [submissionDate]=\"t.submissionDate ?? t.date\"\n [statusConfig]=\"statusConfig()\"\n [infoRows]=\"infoRows()\"\n />\n\n <!-- Body: description, attachments -->\n <ncim-supporter-detail-body class=\"supporter-detail__header-card\" [description]=\"t.description\" [attachments]=\"t.attachments\" />\n\n <!-- Additional details: tabs + responses -->\n <ncim-supporter-detail-additional [responses]=\"t.responses\" />\n </div>\n\n <!-- Sidebar: Update log -->\n <aside class=\"supporter-detail__sidebar\" [attr.aria-label]=\"'ARIA.UPDATE_LOG' | translate\">\n <ncim-violation-timeline [timeline]=\"timelineData()\" />\n </aside>\n </div>\n </div>\n}\n","import { InjectionToken } from '@angular/core';\nimport type { ProfileOtpService } from './models/profile.models';\n\n/** Provider token for profile OTP verification. Host app must provide an implementation. */\nexport const PROFILE_OTP_SERVICE = new InjectionToken<ProfileOtpService>('ProfileOtpService');\n","import {\n Component,\n ChangeDetectionStrategy,\n signal,\n inject,\n input,\n viewChild,\n DestroyRef,\n computed,\n effect,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { timer } from 'rxjs';\nimport { ReactiveFormsModule, FormRecord, FormControl, Validators, type ValidatorFn } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { identityNumberValidator, saudiMobileValidator, emailValidator } from '@libs/core/validators';\nimport { LOADING_DELAY_MS, VALIDATION_LENGTHS } from '@libs/core/constants';\nimport { DialogModule } from 'primeng/dialog';\nimport { AuthService } from '@libs/core/services';\nimport { InfoRow } from '@libs/ui-components/shared/molecules/info-row/info-row';\nimport { Breadcrumb, type BreadcrumbItem } from '@libs/ui-components/shared/molecules/breadcrumb/breadcrumb';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { FormInput } from '@libs/ui-components/shared/molecules/form-input/form-input';\nimport { Skeleton } from '@libs/ui-components/shared/atoms/skeleton/skeleton';\nimport { OtpVerificationForm } from '@libs/features/auth';\nimport type { ProfileField, ProfileOtpService } from '../models/profile.models';\nimport { PROFILE_OTP_SERVICE } from '../profile-otp.service';\n\n@Component({\n selector: 'ncim-profile-page',\n imports: [\n TranslateModule,\n ReactiveFormsModule,\n DialogModule,\n InfoRow,\n Breadcrumb,\n NcimButton,\n FormInput,\n OtpVerificationForm,\n Skeleton,\n ],\n templateUrl: './profile-page.html',\n styleUrl: './profile-page.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProfilePage {\n private readonly translate = inject(TranslateService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly authService = inject(AuthService);\n private readonly otpService = inject(PROFILE_OTP_SERVICE);\n\n readonly isLoading = signal(true);\n readonly editingField = signal<string | null>(null);\n\n readonly isSsoUser = computed(() => this.authService.currentUser() !== null);\n\n readonly breadcrumbs: BreadcrumbItem[] = [\n { label: this.translate.instant('PROFILE.BREADCRUMB_SETTINGS') },\n { label: this.translate.instant('PROFILE.TITLE') },\n ];\n\n private readonly otpForm = viewChild(OtpVerificationForm);\n\n readonly loading = signal(false);\n readonly resending = signal(false);\n readonly showOtpDialog = signal(false);\n\n /** Optional initial fields. When provided, overrides default. */\n readonly initialFields = input<ProfileField[] | undefined>(undefined);\n\n readonly fields = signal<ProfileField[]>([\n { key: 'name', labelKey: 'PROFILE.FIELD_NAME', value: 'خالد العنزي', inputType: 'text' },\n { key: 'password', labelKey: 'PROFILE.FIELD_PASSWORD', value: '***************', inputType: 'password' },\n { key: 'identity', labelKey: 'PROFILE.FIELD_IDENTITY', value: '38648364834', inputType: 'number' },\n { key: 'phone', labelKey: 'PROFILE.FIELD_PHONE', value: '0508123456', inputType: 'phone' },\n { key: 'nationality', labelKey: 'PROFILE.FIELD_NATIONALITY', value: 'سعودية', inputType: 'text' },\n { key: 'birthdate', labelKey: 'PROFILE.FIELD_BIRTHDATE', value: '1990-01-01', inputType: 'date' },\n { key: 'email', labelKey: 'PROFILE.FIELD_EMAIL', value: 'khaled@example.com', inputType: 'email' },\n { key: 'jobTitle', labelKey: 'PROFILE.FIELD_JOB_TITLE', value: 'مدير القسم', inputType: 'text' },\n ]);\n\n constructor() {\n effect(() => {\n const fromInput = this.initialFields();\n if (fromInput?.length) {\n this.fields.set([...fromInput]);\n }\n });\n\n timer(LOADING_DELAY_MS)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const ssoUser = this.authService.currentUser();\n if (ssoUser) {\n this.fields.update(fields =>\n fields.map(f => {\n switch (f.key) {\n case 'name':\n return { ...f, value: ssoUser.ar_name ?? ssoUser.given_name ?? f.value };\n case 'identity':\n return { ...f, value: ssoUser.nid ?? ssoUser.id_no ?? f.value };\n case 'phone':\n return { ...f, value: ssoUser.phone ?? f.value };\n case 'email':\n return { ...f, value: ssoUser.email ?? f.value };\n default:\n return f;\n }\n })\n );\n }\n this.isLoading.set(false);\n });\n }\n\n readonly editForm = new FormRecord<FormControl<string>>(\n Object.fromEntries(\n this.fields().map(f => [\n f.key,\n new FormControl(f.value, {\n nonNullable: true,\n validators: this.getValidatorsForField(f.key, f.inputType),\n }),\n ])\n )\n );\n\n readonly editSubmitted = signal(false);\n\n readonly heroName = computed(() => this.fields().find(f => f.key === 'name')?.value ?? '');\n\n private getValidatorsForField(key: string, _inputType: string): ValidatorFn[] {\n const validators: ValidatorFn[] = [Validators.required];\n\n switch (key) {\n case 'identity':\n validators.push(\n Validators.minLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n Validators.maxLength(VALIDATION_LENGTHS.IDENTITY_NUMBER),\n identityNumberValidator()\n );\n break;\n case 'phone':\n validators.push(saudiMobileValidator());\n break;\n case 'email':\n validators.push(emailValidator());\n break;\n case 'password':\n validators.push(Validators.minLength(VALIDATION_LENGTHS.PASSWORD_MIN));\n break;\n default:\n break;\n }\n\n return validators;\n }\n\n startEdit(key: string): void {\n const field = this.fields().find(f => f.key === key);\n const control = this.editForm.controls[key];\n if (field && control) {\n // Password: clear masked value so user types new password\n const valueToSet = key === 'password' ? '' : field.value;\n control.patchValue(valueToSet);\n }\n this.editingField.set(key);\n this.editSubmitted.set(false);\n }\n\n cancelEdit(): void {\n this.editingField.set(null);\n this.editSubmitted.set(false);\n }\n\n onSaveClick(): void {\n const key = this.editingField();\n if (!key) {\n return;\n }\n\n this.editSubmitted.set(true);\n const control = this.editForm.controls[key];\n if (!control) {\n return;\n }\n\n if (control.invalid) {\n control.markAllAsTouched();\n return;\n }\n\n this.showOtpDialog.set(true);\n }\n\n onFormSubmit(data: { otp: string }): void {\n this.loading.set(true);\n\n this.otpService\n .verifyOtp(data.otp)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.loading.set(false);\n this.otpForm()?.reset();\n\n const editedKey = this.editingField();\n if (editedKey) {\n const newValue = this.editForm.controls[editedKey].value;\n this.fields.update(fields => fields.map(f => (f.key === editedKey ? { ...f, value: newValue } : f)));\n this.editingField.set(null);\n }\n\n this.showOtpDialog.set(false);\n },\n error: () => this.loading.set(false),\n });\n }\n\n closeDialog(): void {\n this.loading.set(false);\n this.otpForm()?.reset();\n }\n\n onResendCode(): void {\n this.resending.set(true);\n\n this.otpService\n .resendOtp()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => this.resending.set(false),\n error: () => this.resending.set(false),\n });\n }\n}\n","@if (isLoading()) {\n <div class=\"profile profile--skeleton\">\n <div class=\"profile__page-header\">\n <ncim-skeleton variant=\"header\" width=\"200px\" class=\"profile__page-title\" />\n <ncim-skeleton variant=\"text\" width=\"280px\" />\n </div>\n <div class=\"profile__hero profile__hero--skeleton\">\n <div class=\"profile__hero-center\">\n <div class=\"profile__avatar-ring\">\n <ncim-skeleton variant=\"circular\" width=\"100%\" height=\"100%\" />\n </div>\n <ncim-skeleton variant=\"header\" width=\"180px\" class=\"profile__hero-name\" />\n <ncim-skeleton variant=\"text\" width=\"100px\" class=\"profile__hero-role\" />\n </div>\n </div>\n <div class=\"profile__card\">\n <ncim-skeleton variant=\"header\" width=\"160px\" class=\"profile__card-title\" />\n <div class=\"profile__content\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8]; track i) {\n <div class=\"profile__content-row\">\n <ncim-skeleton variant=\"text\" width=\"120px\" height=\"16px\" />\n <ncim-skeleton variant=\"text\" width=\"180px\" height=\"16px\" />\n </div>\n @if (i < 8) {\n <hr class=\"profile__divider\" />\n }\n }\n </div>\n </div>\n </div>\n} @else {\n <div class=\"profile\">\n <div class=\"profile__page-header\">\n <h1 class=\"profile__page-title\">{{ 'PROFILE.TITLE' | translate }}</h1>\n <ncim-breadcrumb [items]=\"breadcrumbs\" />\n </div>\n\n <div class=\"profile__hero\">\n <div class=\"profile__hero-center\">\n <div class=\"profile__avatar-ring\">\n <div class=\"profile__avatar\"></div>\n </div>\n <span class=\"profile__hero-name\">{{ heroName() }}</span>\n <span class=\"profile__hero-role\">{{ 'PROFILE.ROLE' | translate }}</span>\n </div>\n </div>\n\n <div class=\"profile__card\">\n <h2 class=\"profile__card-title\">{{ 'PROFILE.PERSONAL_INFO' | translate }}</h2>\n\n <div class=\"profile__content\">\n @for (field of fields(); track field.key; let last = $last) {\n @if (editingField() === field.key) {\n <div class=\"profile__edit-section\">\n <div class=\"profile__edit-header\">\n <div class=\"profile__edit-header-info\">\n <span class=\"profile__edit-title\">{{ 'PROFILE.EDIT_PREFIX' | translate }} {{ field.labelKey | translate }}</span>\n <span class=\"profile__edit-desc\">\n {{ 'PROFILE.EDIT_HINT_PREFIX' | translate }} {{ field.labelKey | translate }}\n {{ 'PROFILE.EDIT_HINT_SUFFIX' | translate }}\n </span>\n </div>\n <button class=\"profile__cancel-btn\" type=\"button\" (click)=\"cancelEdit()\">\n {{ 'COMMON.CANCEL' | translate }}\n </button>\n </div>\n <ncim-form-input\n size=\"small\"\n [label]=\"field.labelKey | translate\"\n [type]=\"field.inputType\"\n [formControl]=\"editForm.controls[field.key]\"\n [submitted]=\"editSubmitted()\"\n />\n <ncim-button variant=\"black\" size=\"small\" [fullWidth]=\"true\" (click)=\"onSaveClick()\">\n {{ 'COMMON.SAVE' | translate }}\n </ncim-button>\n </div>\n } @else {\n <ncim-info-row\n [title]=\"field.labelKey | translate\"\n [description]=\"field.value\"\n [editLabel]=\"'PROFILE.EDIT' | translate\"\n (editClick)=\"startEdit(field.key)\"\n />\n }\n @if (!last) {\n <hr class=\"profile__divider\" />\n }\n }\n </div>\n </div>\n </div>\n}\n\n<p-dialog\n [visible]=\"showOtpDialog()\"\n (visibleChange)=\"showOtpDialog.set($event)\"\n (onHide)=\"closeDialog()\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n [closable]=\"true\"\n [header]=\"'AUTH.OTP.TITLE' | translate\"\n>\n <p class=\"otp-dialog__subtitle\">{{ 'AUTH.OTP.SUBTITLE' | translate }}</p>\n <ncim-otp-verification-form [loading]=\"loading()\" (formSubmit)=\"onFormSubmit($event)\" (resendCode)=\"onResendCode()\" />\n</p-dialog>\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';\nimport { OidcAuthService } from '@libs/core/services';\n\n/**\n * Provides the full MOMRAH SSO / OIDC stack for any application.\n *\n * Usage in your app config:\n * ```ts\n * import { provideSso } from '@libs/features';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSso(),\n * // ... other providers\n * ],\n * };\n * ```\n *\n * This bundles:\n * - `provideOAuthClient()` — registers angular-oauth2-oidc services\n * - `OAuthStorage → localStorage` — persists OIDC tokens across tabs and\n * browser restarts (default is sessionStorage which loses tokens on close)\n * - `APP_INITIALIZER` — calls `OidcAuthService.initialize()` at startup to\n * process any SSO redirect callback before any component renders.\n */\nexport function provideSso(): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideOAuthClient(),\n // Store OIDC tokens in localStorage so sessions survive new tabs and browser restart.\n // Without this, angular-oauth2-oidc defaults to sessionStorage and users must\n // re-authenticate every time they open a new tab or restart the browser.\n { provide: OAuthStorage, useValue: localStorage },\n provideAppInitializer(() => inject(OidcAuthService).initialize()),\n ]);\n}\n","import { Route } from '@angular/router';\nimport { ROUTE_SEGMENTS } from '@libs/core/constants';\n\n/** Route data keys for SSO pages. */\nexport const SSO_ROUTE_DATA = {\n CALLBACK_TITLE: 'AUTH.SSO.REDIRECTING',\n ERROR_TITLE: 'AUTH.SSO.ERROR.TITLE',\n} as const;\n\n/**\n * SSO callback route — no guards, must be accessible before authentication.\n * Callback URL is processed by APP_INITIALIZER (provideSso) before this component loads.\n */\nexport function ssoCallbackRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.SSO_CALLBACK,\n pathMatch: 'full',\n loadComponent: () => import('../components/sso-callback/sso-callback').then(mod => mod.SsoCallback),\n data: { title: SSO_ROUTE_DATA.CALLBACK_TITLE },\n } satisfies Route;\n}\n\n/**\n * SSO error route — displays error=access_denied and similar SSO server errors.\n * No guards — accessible without authentication.\n */\nexport function ssoErrorRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.SSO_ERROR,\n pathMatch: 'full',\n loadComponent: () => import('../components/sso-error/sso-error').then(mod => mod.SsoError),\n data: { title: SSO_ROUTE_DATA.ERROR_TITLE },\n } satisfies Route;\n}\n\n/** Convenience array of all SSO routes. Use: routes: [...ssoRoutes] */\nexport const ssoRoutes: Route[] = [ssoCallbackRoute(), ssoErrorRoute()];\n","/**\n * OIDC error codes that may be returned by the MOMRAH SSO server.\n * Used to map server error codes to i18n keys (AUTH.SSO.ERROR.CODES.*).\n */\nexport const SSO_KNOWN_ERROR_CODES = [\n 'access_denied',\n 'login_required',\n 'invalid_grant',\n 'invalid_request',\n 'unauthorized_client',\n 'unsupported_response_type',\n 'server_error',\n 'temporarily_unavailable',\n 'interaction_required',\n 'consent_required',\n 'unknown_error',\n] as const satisfies readonly string[];\n\nexport type SsoErrorCode = (typeof SSO_KNOWN_ERROR_CODES)[number];\n\n/** Fallback code when the server returns an unknown error. */\nexport const SSO_UNKNOWN_ERROR_CODE = 'unknown_error' satisfies SsoErrorCode;\n\nconst SSO_ERROR_CODES_SET = new Set<string>(SSO_KNOWN_ERROR_CODES);\n\n/** Type guard: returns true if code is a known SSO error code. */\nexport function isKnownSsoErrorCode(code: string): code is SsoErrorCode {\n return SSO_ERROR_CODES_SET.has(code);\n}\n\n/** Returns the i18n key for the given SSO error code. Unknown codes map to unknown_error. */\nexport function getSsoErrorMessageKey(code: string): string {\n const safeCode = isKnownSsoErrorCode(code) ? code : SSO_UNKNOWN_ERROR_CODE;\n return `AUTH.SSO.ERROR.CODES.${safeCode}`;\n}\n","/** Query param keys used by the SSO server when redirecting with errors. */\nexport const SSO_ERROR_PARAM = 'error';\nexport const SSO_ERROR_DESCRIPTION_PARAM = 'error_description';\n\n/** Builds query params for redirect to SSO error page. */\nexport function buildSsoErrorQueryParams(error: string, errorDescription: string | null): Record<string, string> {\n const params: Record<string, string> = { [SSO_ERROR_PARAM]: error };\n if (errorDescription) {\n params[SSO_ERROR_DESCRIPTION_PARAM] = errorDescription;\n }\n return params;\n}\n","/** SSO (OIDC) provider and routes for MOMRAH authentication. */\nexport { provideSso } from './providers/sso.provider';\nexport { ssoCallbackRoute, ssoErrorRoute, ssoRoutes, SSO_ROUTE_DATA } from './routes/sso.routes';\nexport {\n getSsoErrorMessageKey,\n isKnownSsoErrorCode,\n SSO_KNOWN_ERROR_CODES,\n SSO_UNKNOWN_ERROR_CODE,\n type SsoErrorCode,\n} from './constants/sso-error-codes';\nexport { buildSsoErrorQueryParams, SSO_ERROR_DESCRIPTION_PARAM, SSO_ERROR_PARAM } from './utils/sso-query-params';\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { ROUTE_PATHS } from '@libs/core/constants';\n\n/** 403 Forbidden — user is authenticated but lacks permission for this resource. */\n@Component({\n selector: 'ncim-error-403',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-403.html',\n styleUrl: './error-403.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Error403 {\n private readonly router = inject(Router);\n\n protected goHome(): void {\n this.router.navigate([ROUTE_PATHS.DASHBOARD]);\n }\n}\n","<ncim-status-page icon=\"shield\" iconVariant=\"error\" code=\"403\" titleKey=\"STATUS_PAGES.403.TITLE\" subtitleKey=\"STATUS_PAGES.403.SUBTITLE\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"goHome()\">\n {{ 'STATUS_PAGES.BACK_HOME' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { ROUTE_PATHS } from '@libs/core/constants';\n\n/** 404 Not Found — the requested page does not exist. */\n@Component({\n selector: 'ncim-error-404',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-404.html',\n styleUrl: './error-404.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Error404 {\n private readonly router = inject(Router);\n\n protected goHome(): void {\n this.router.navigate([ROUTE_PATHS.DASHBOARD]);\n }\n}\n","<ncim-status-page\n imageSrc=\"assets/ncim-icons/empty.svg\"\n code=\"404\"\n titleKey=\"STATUS_PAGES.404.TITLE\"\n subtitleKey=\"STATUS_PAGES.404.SUBTITLE\"\n>\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"goHome()\">\n {{ 'STATUS_PAGES.BACK_HOME' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n/** 500 Internal Server Error — unexpected server failure. */\n@Component({\n selector: 'ncim-error-500',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-500.html',\n styleUrl: './error-500.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Error500 {\n private readonly location = inject(Location);\n\n protected retry(): void {\n window.location.reload();\n }\n\n protected goBack(): void {\n this.location.back();\n }\n}\n","<ncim-status-page icon=\"warning\" iconVariant=\"error\" code=\"500\" titleKey=\"STATUS_PAGES.500.TITLE\" subtitleKey=\"STATUS_PAGES.500.SUBTITLE\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"retry()\">\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </ncim-button>\n <ncim-button variant=\"outline\" [fullWidth]=\"false\" (click)=\"goBack()\">\n {{ 'STATUS_PAGES.BACK_HOME' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n/** 503 Service Unavailable — server is temporarily down or overloaded. */\n@Component({\n selector: 'ncim-error-503',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-503.html',\n styleUrl: './error-503.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Error503 {\n private readonly location = inject(Location);\n\n protected retry(): void {\n this.location.back();\n }\n}\n","<ncim-status-page\n icon=\"settings\"\n iconVariant=\"warning\"\n code=\"503\"\n titleKey=\"STATUS_PAGES.503.TITLE\"\n subtitleKey=\"STATUS_PAGES.503.SUBTITLE\"\n>\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"retry()\">\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\n\n/** Maintenance page — system is down for scheduled maintenance. */\n@Component({\n selector: 'ncim-error-maintenance',\n imports: [StatusPage],\n templateUrl: './error-maintenance.html',\n styleUrl: './error-maintenance.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorMaintenance {}\n","<ncim-status-page\n icon=\"building-settings\"\n iconVariant=\"info\"\n titleKey=\"STATUS_PAGES.MAINTENANCE.TITLE\"\n subtitleKey=\"STATUS_PAGES.MAINTENANCE.SUBTITLE\"\n/>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\n\n/** Timeout page — request exceeded the allowed duration. */\n@Component({\n selector: 'ncim-error-timeout',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-timeout.html',\n styleUrl: './error-timeout.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorTimeout {\n private readonly location = inject(Location);\n\n protected retry(): void {\n this.location.back();\n }\n}\n","<ncim-status-page icon=\"sandClock\" iconVariant=\"warning\" titleKey=\"STATUS_PAGES.TIMEOUT.TITLE\" subtitleKey=\"STATUS_PAGES.TIMEOUT.SUBTITLE\">\n <ncim-button variant=\"black\" [fullWidth]=\"false\" (click)=\"retry()\">\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { StatusPage } from '@libs/ui-components/shared/organisms/status-page/status-page';\nimport { NcimButton } from '@libs/ui-components/shared/atoms/button/button';\nimport { AuthService } from '@libs/core/services';\nimport { ROUTE_PATHS } from '@libs/core/constants';\n\n/** No Role — user is authenticated but has no role or permission assigned. */\n@Component({\n selector: 'ncim-error-no-role',\n imports: [StatusPage, NcimButton, TranslatePipe],\n templateUrl: './error-no-role.html',\n styleUrl: './error-no-role.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorNoRole {\n private readonly auth = inject(AuthService);\n private readonly router = inject(Router);\n\n protected logout(): void {\n const endSessionUrl = this.auth.buildEndSessionUrl();\n this.auth.logout();\n if (endSessionUrl) {\n window.location.href = endSessionUrl;\n } else {\n void this.router.navigateByUrl(ROUTE_PATHS.AUTH_LOGIN);\n }\n }\n}\n","<ncim-status-page icon=\"user-plus\" iconVariant=\"neutral\" titleKey=\"STATUS_PAGES.NO_ROLE.TITLE\" subtitleKey=\"STATUS_PAGES.NO_ROLE.SUBTITLE\">\n <ncim-button variant=\"outline\" [fullWidth]=\"false\" (click)=\"logout()\">\n {{ 'STATUS_PAGES.BACK_LOGIN' | translate }}\n </ncim-button>\n</ncim-status-page>\n","import { Route } from '@angular/router';\nimport { ROUTE_SEGMENTS } from '@libs/core/constants';\n\n/** Route data title keys for error/status pages. */\nexport const ERROR_ROUTE_DATA = {\n FORBIDDEN_TITLE: 'STATUS_PAGES.403.TITLE',\n NOT_FOUND_TITLE: 'STATUS_PAGES.404.TITLE',\n SERVER_ERROR_TITLE: 'STATUS_PAGES.500.TITLE',\n SERVICE_UNAVAILABLE_TITLE: 'STATUS_PAGES.503.TITLE',\n MAINTENANCE_TITLE: 'STATUS_PAGES.MAINTENANCE.TITLE',\n TIMEOUT_TITLE: 'STATUS_PAGES.TIMEOUT.TITLE',\n NO_ROLE_TITLE: 'STATUS_PAGES.NO_ROLE.TITLE',\n} as const;\n\n/** 403 Forbidden — user is authenticated but lacks permission. */\nexport function forbiddenRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.FORBIDDEN,\n loadComponent: () => import('../components/error-403/error-403').then(m => m.Error403),\n data: { title: ERROR_ROUTE_DATA.FORBIDDEN_TITLE },\n } satisfies Route;\n}\n\n/** 404 Not Found — the requested page does not exist. */\nexport function notFoundRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.NOT_FOUND,\n loadComponent: () => import('../components/error-404/error-404').then(m => m.Error404),\n data: { title: ERROR_ROUTE_DATA.NOT_FOUND_TITLE },\n } satisfies Route;\n}\n\n/** 500 Internal Server Error — unexpected server failure. */\nexport function serverErrorRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.SERVER_ERROR,\n loadComponent: () => import('../components/error-500/error-500').then(m => m.Error500),\n data: { title: ERROR_ROUTE_DATA.SERVER_ERROR_TITLE },\n } satisfies Route;\n}\n\n/** 503 Service Unavailable — server is temporarily down or overloaded. */\nexport function serviceUnavailableRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.SERVICE_UNAVAILABLE,\n loadComponent: () => import('../components/error-503/error-503').then(m => m.Error503),\n data: { title: ERROR_ROUTE_DATA.SERVICE_UNAVAILABLE_TITLE },\n } satisfies Route;\n}\n\n/** Maintenance page — system is down for scheduled maintenance. */\nexport function maintenanceRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.MAINTENANCE,\n loadComponent: () => import('../components/error-maintenance/error-maintenance').then(m => m.ErrorMaintenance),\n data: { title: ERROR_ROUTE_DATA.MAINTENANCE_TITLE },\n } satisfies Route;\n}\n\n/** Timeout page — request exceeded the allowed duration. */\nexport function timeoutRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.TIMEOUT,\n loadComponent: () => import('../components/error-timeout/error-timeout').then(m => m.ErrorTimeout),\n data: { title: ERROR_ROUTE_DATA.TIMEOUT_TITLE },\n } satisfies Route;\n}\n\n/** No Role — user is authenticated but has no role or permission assigned. */\nexport function noRoleRoute(): Route {\n return {\n path: ROUTE_SEGMENTS.NO_ROLE,\n loadComponent: () => import('../components/error-no-role/error-no-role').then(m => m.ErrorNoRole),\n data: { title: ERROR_ROUTE_DATA.NO_ROLE_TITLE },\n } satisfies Route;\n}\n\n/** Convenience array of all error/status routes. Use: routes: [...errorRoutes()] */\nexport function errorRoutes(): Route[] {\n return [\n forbiddenRoute(),\n notFoundRoute(),\n serverErrorRoute(),\n serviceUnavailableRoute(),\n maintenanceRoute(),\n timeoutRoute(),\n noRoleRoute(),\n ];\n}\n","/** Error and status page components with lazy-loaded routes. */\nexport { Error403 } from './components/error-403/error-403';\nexport { Error404 } from './components/error-404/error-404';\nexport { Error500 } from './components/error-500/error-500';\nexport { Error503 } from './components/error-503/error-503';\nexport { ErrorMaintenance } from './components/error-maintenance/error-maintenance';\nexport { ErrorTimeout } from './components/error-timeout/error-timeout';\nexport { ErrorNoRole } from './components/error-no-role/error-no-role';\nexport {\n forbiddenRoute,\n notFoundRoute,\n serverErrorRoute,\n serviceUnavailableRoute,\n maintenanceRoute,\n timeoutRoute,\n noRoleRoute,\n errorRoutes,\n ERROR_ROUTE_DATA,\n} from './routes/errors.routes';\n","/** Auth components and form payload types. */\nexport {\n LoginForm,\n ForgotPasswordForm,\n OtpVerificationForm,\n ResetPasswordForm,\n SsoLoginButton,\n LoginHeader,\n AuthHeader,\n AuthLink,\n AuthBackLink,\n type LoginFormData,\n type ForgotPasswordFormData,\n type OtpVerificationFormData,\n type ResetPasswordFormData,\n} from './lib/auth';\n\n/** Register step components and shared models. */\nexport {\n StepEntityType,\n StepAccountVerification,\n StepEntityDetails,\n StepInspectionDetails,\n StepResponsibleUser,\n StepPackageSelection,\n StepSessionScheduling,\n RegistrationSuccessView,\n type StepComponent,\n type RegistrationData,\n type RegistrationSummary,\n type SummaryItem,\n type EntityDetailsForm,\n type InspectionDetailsForm,\n type ResponsibleUserForm,\n type AccountVerificationForm,\n type SessionSchedulingForm,\n type PackageSelectionForm,\n} from './lib/register';\n\n// Regulatory dashboard\nexport * from './lib/regulatory-dashboard/models/regulatory-dashboard.models';\n/** Knowledge center components, data helpers, and types. */\nexport { KnowledgeCenterLanding } from './lib/knowledge-center/knowledge-center-landing/knowledge-center-landing';\nexport { KnowledgeCenterWelcomeSection } from './lib/knowledge-center/knowledge-center-welcome-section/knowledge-center-welcome-section';\nexport { KnowledgeCenterSearchSection } from './lib/knowledge-center/knowledge-center-search-section/knowledge-center-search-section';\nexport { KnowledgeCenterBrowseSection } from './lib/knowledge-center/knowledge-center-browse-section/knowledge-center-browse-section';\nexport { KnowledgeCenterSupportSection } from './lib/knowledge-center/knowledge-center-support-section/knowledge-center-support-section';\nexport { KnowledgeCenterCategory } from './lib/knowledge-center/knowledge-center-category/knowledge-center-category';\nexport { KnowledgeCenterTopic } from './lib/knowledge-center/knowledge-center-topic/knowledge-center-topic';\nexport {\n KNOWLEDGE_TOPICS,\n getTopicsByCategory,\n CATEGORY_TITLE_KEYS,\n TOPIC_CONFIGS,\n getRelatedTopics,\n LANDING_CATEGORIES,\n SUGGESTED_TAGS,\n} from './lib/knowledge-center/knowledge-center.data';\nexport type { TopicConfig } from './lib/knowledge-center/knowledge-center.data';\nexport type {\n KnowledgeTopic,\n KnowledgeCategory,\n KnowledgeSuggestedTag,\n} from './lib/knowledge-center/models/knowledge-center.models';\n\n/** Supporter (support tickets) components, data helpers, and types. */\nexport { SupporterList } from './lib/supporter/supporter-list/supporter-list';\nexport { SupporterDetail } from './lib/supporter/supporter-detail/supporter-detail';\nexport { NewTicketDialog } from './lib/supporter/new-ticket-dialog/new-ticket-dialog';\nexport {\n DEMO_TICKETS,\n CLASSIFICATION_OPTIONS,\n SUB_CLASSIFICATION_OPTIONS,\n STATUS_MAP,\n STATUS_CONFIG,\n generateTicketNumber,\n} from './lib/supporter/supporter.data';\nexport type {\n SupportTicket,\n TicketStatus,\n TicketAttachment,\n TicketResponse,\n TicketUpdate,\n NewTicketFormData,\n} from './lib/supporter/models/supporter.models';\n\n/** Profile page with editable fields and OTP verification. */\nexport { ProfilePage, PROFILE_OTP_SERVICE } from './lib/profile';\nexport type { ProfileField, ProfileOtpService } from './lib/profile';\n\n/** SSO (OIDC) provider and routes for MOMRAH authentication. */\nexport { provideSso, ssoCallbackRoute, ssoErrorRoute, ssoRoutes, SSO_ROUTE_DATA } from './lib/sso';\n\n/** Error and status page components with lazy-loaded routes. */\nexport {\n Error403,\n Error404,\n Error500,\n Error503,\n ErrorMaintenance,\n ErrorTimeout,\n ErrorNoRole,\n forbiddenRoute,\n notFoundRoute,\n serverErrorRoute,\n serviceUnavailableRoute,\n maintenanceRoute,\n timeoutRoute,\n noRoleRoute,\n errorRoutes,\n ERROR_ROUTE_DATA,\n} from './lib/errors';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './ncim-sdk-entry';\n"],"names":["truncate","LanguageService","filter","i1","i2","ROUTE_PATHS","VALIDATION_LENGTHS","ERROR_KEYS","i1.TabsInkbarRtlDirective","PrimeTabs","PrimeTabList","PrimeTab","i3","ArabicOnlyDirective","EnglishOnlyDirective","NumbersOnlyDirective","PhoneOnlyDirective","TrimInputDirective","i4","INPUT_TYPES","PHONE_CONFIG","LOADING_DELAY_MS","CHART_COLORS","ENVIRONMENT","COPY_FEEDBACK_MS","ICONS","ImgFallbackDirective","LocalizedDatePipe","ReplacePipe","PrimeNgTooltip","GENERATED_ICON_NAMES","REGEX","MarkerStatus","MapLegendStatus","MAP_LEGEND_CONFIG","MAP_CONFIG","MAP_ACTION_ICONS","TrendDirection","FaqAccordion","i5","LoadingService","ExportPdfService","identityNumberValidator","syncFormWithLoading","markSubmittedAndValidate","FormInput","NcimButton","OtpInput","passwordMatchValidator","Icon","ENTITY_TYPE_OPTIONS","EntityTypeCard","ASSET_PATHS","dateMaxValidator","useFormInitData","CaptchaInput","ENTITY_DETAILS_OPTIONS","OptionGroup","PLACEHOLDER_KEYS","saudiMobileValidator","PACKAGES","PACKAGE_FEATURES","PackageType","Tabs","TabPanel","PackageFeatureCard","BulletList","Checkbox","dateMinValidator","TIME","AuthLayout","SummaryCard","FileUpload","CopyNumber","CircularProgress","ROUTE_SEGMENTS","AuthService","PageHeader","CardsListPage","Skeleton","ArticlePage","ColumnsEnum","GridTable","FilterForm","EmptyState","FeedbackSection","ViolationTimeline","OtpVerificationForm","emailValidator","InfoRow","Breadcrumb","OidcAuthService","StatusPage"],"mappings":"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"}
|