@ncim/sdk 0.1.0 → 0.2.0
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-core.mjs +4118 -1
- package/fesm2022/ncim-sdk-core.mjs.map +1 -1
- package/fesm2022/ncim-sdk-features-ncim-sdk-features-YQVsqseZ.mjs +2419 -0
- package/fesm2022/ncim-sdk-features-ncim-sdk-features-YQVsqseZ.mjs.map +1 -0
- package/fesm2022/ncim-sdk-features-sso-callback-DLX42VOO.mjs +110 -0
- package/fesm2022/ncim-sdk-features-sso-callback-DLX42VOO.mjs.map +1 -0
- package/fesm2022/ncim-sdk-features-sso-error-CBlw1Gla.mjs +73 -0
- package/fesm2022/ncim-sdk-features-sso-error-CBlw1Gla.mjs.map +1 -0
- package/fesm2022/ncim-sdk-features.mjs +2 -5
- package/fesm2022/ncim-sdk-features.mjs.map +1 -1
- package/fesm2022/ncim-sdk-ncim-sdk-DPJwZ1er.mjs +13378 -0
- package/fesm2022/ncim-sdk-ncim-sdk-DPJwZ1er.mjs.map +1 -0
- package/fesm2022/ncim-sdk-sso-callback-DxhXnPAG.mjs +110 -0
- package/fesm2022/ncim-sdk-sso-callback-DxhXnPAG.mjs.map +1 -0
- package/fesm2022/ncim-sdk-sso-error-CVdCgF23.mjs +73 -0
- package/fesm2022/ncim-sdk-sso-error-CVdCgF23.mjs.map +1 -0
- package/fesm2022/ncim-sdk-state.mjs +47 -1
- package/fesm2022/ncim-sdk-state.mjs.map +1 -1
- package/fesm2022/ncim-sdk-ui.mjs +6474 -1
- package/fesm2022/ncim-sdk-ui.mjs.map +1 -1
- package/fesm2022/ncim-sdk.mjs +1 -23
- package/fesm2022/ncim-sdk.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ncim-sdk-core.d.ts +1738 -1
- package/types/ncim-sdk-features.d.ts +1018 -1
- package/types/ncim-sdk-state.d.ts +56 -1
- package/types/ncim-sdk-ui.d.ts +3128 -1
- package/types/ncim-sdk.d.ts +6623 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ncim-sdk-core.mjs","sources":["../../../../libs/ncim-sdk/core/ncim-sdk-core.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"ncim-sdk-core.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/ncim-sdk-core.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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './ncim-sdk-core-entry';\n"],"names":["truncate"],"mappings":"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"}
|