{"version":3,"file":"rolatech-angular-onboarding.mjs","sources":["../../../../packages/angular-onboarding/src/lib/guards/application-id.guard.ts","../../../../packages/angular-onboarding/src/lib/store/agent-apply.facade.ts","../../../../packages/angular-onboarding/src/lib/guards/apply-step.guard.ts","../../../../packages/angular-onboarding/src/lib/pages/agent-apply/agent-apply-routes.ts","../../../../packages/angular-onboarding/src/lib/guards/application-landing.guard.ts","../../../../packages/angular-onboarding/src/lib/store/agent-onboarding.facade.ts","../../../../packages/angular-onboarding/src/lib/pages/agent-onboarding/agent-onboarding-routes.ts","../../../../packages/angular-onboarding/src/lib/pages/agent-application/agent-application-routes.ts","../../../../packages/angular-onboarding/src/lib/pages/admin-onboarding/admin-onboarding-routes.ts","../../../../packages/angular-onboarding/src/lib/store/admin-onboarding-list.facade.ts","../../../../packages/angular-onboarding/src/lib/store/admin-onboarding-detail.facade.ts","../../../../packages/angular-onboarding/src/lib/store/admin-onboarding-review.facade.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-page-shell.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-status-badge.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-step-nav.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-document-uploader.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-document-preview-dialog.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-issue-list.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-summary-card.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-timeline.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-timeline-drawer.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-review-issues-banner.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-qualification-upload-section.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-vat-section.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-banking-section.ts","../../../../packages/angular-onboarding/src/lib/components/onboarding/onboarding-review-row.ts","../../../../packages/angular-onboarding/src/lib/models/onboarding-review.models.ts","../../../../packages/angular-onboarding/src/rolatech-angular-onboarding.ts"],"sourcesContent":["import { CanActivateFn } from '@angular/router';\n\nexport const applicationIdGuard: CanActivateFn = (route) =>\n  route.pathFromRoot.some((item) => Boolean(item.paramMap.get('applicationId')));\n","import { DestroyRef, Injectable, computed, effect, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { APP_CONFIG, type AppConfig } from '@rolatech/angular-common';\nimport {\n  ConfirmOnboardingDocumentUploadRequest,\n  CreateOnboardingApplicationRequest,\n  OnboardingApplicantService,\n  OnboardingApplicationDetailResponse,\n  OnboardingApplicationResponse,\n  OnboardingDocumentResponse,\n  OnboardingDocumentType,\n  OnboardingIssueResponse,\n  OnboardingStatus,\n  OnboardingUploadUrlResponse,\n  RequestOnboardingUploadUrlRequest,\n  SaveOnboardingBankingRequest,\n  SaveOnboardingFinancialRequest,\n  SaveOnboardingProfileRequest,\n} from '@rolatech/angular-services';\nimport { debounceTime, firstValueFrom } from 'rxjs';\nimport { ApplyRouteStep, ApplyStepCompletion, ApplyUploadState, RequiredDocumentSpec } from '../models/onboarding-ui.models';\n\ninterface LocalDraftSnapshot {\n  profile: {\n    organizationName: string;\n    contactName: string;\n    contactEmail: string;\n    contactPhone: string;\n    countryCode: string;\n  };\n  financial: {\n    vatMode: string;\n    vatNumber: string;\n  };\n  banking: {\n    bankName: string;\n    accountHolderName: string;\n    sortCode: string;\n    accountNumber: string;\n  };\n  updatedAt: string;\n}\n\nexport type AgentApplyStartResult =\n  | {\n      kind: 'created';\n      application: OnboardingApplicationResponse;\n    }\n  | {\n      kind: 'existing';\n      applicationId: string;\n    };\n\nconst INDIVIDUAL_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  {\n    type: 'PASSPORT',\n    label: 'Applicant passport',\n    helperText: 'Upload a clear PDF, JPG, or PNG of the passport identity page.',\n  },\n];\n\nconst COMPANY_BASE_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  {\n    type: 'PASSPORT',\n    label: 'Director passport',\n    helperText: 'Upload the passport for the company director handling the application.',\n  },\n  {\n    type: 'CERTIFICATE_OF_INCORPORATION',\n    label: 'Certificate of incorporation',\n    helperText: 'Use the latest registered incorporation certificate.',\n  },\n  {\n    type: 'INDUSTRY_CERTIFICATE',\n    label: 'Industry certificate',\n    helperText: 'Accepted certificates include RICS, ARLA, NAEA, or Propertymark.',\n  },\n];\n\nconst UK_COMPANY_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  ...COMPANY_BASE_REQUIRED_DOCUMENTS,\n  {\n    type: 'OTHER',\n    label: 'Redress / AML evidence',\n    helperText: 'Upload the redress scheme certificate and HMRC AML evidence in one file if needed.',\n  },\n];\n\nconst CHINA_COMPANY_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  ...COMPANY_BASE_REQUIRED_DOCUMENTS,\n  {\n    type: 'OTHER',\n    label: 'Stamped business license',\n    helperText: 'Upload the original scanned business license.',\n    warning: 'China company business licenses must include the official company stamp.',\n  },\n];\n\nconst SORT_CODE_PATTERN = /^\\d{6}$/;\nconst ACCOUNT_NUMBER_PATTERN = /^\\d{8}$/;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AgentApplyFacade {\n  private readonly onboardingService = inject(OnboardingApplicantService);\n  private readonly fb = inject(FormBuilder);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly environment = inject(APP_CONFIG) as AppConfig;\n\n  readonly loading = signal(false);\n  readonly saving = signal(false);\n  readonly submitting = signal(false);\n  readonly error = signal<string | null>(null);\n  readonly lastLocalDraftSavedAt = signal<string | null>(null);\n\n  readonly application = signal<OnboardingApplicationResponse | null>(null);\n  readonly detail = signal<OnboardingApplicationDetailResponse | null>(null);\n  readonly uploadStates = signal<Partial<Record<OnboardingDocumentType, ApplyUploadState>>>({});\n\n  private readonly loadedApplicationId = signal<string | null>(null);\n\n  readonly applicationId = computed(() => this.detail()?.id ?? this.application()?.id ?? null);\n  readonly status = computed<OnboardingStatus | null>(() => this.detail()?.status ?? this.application()?.status ?? null);\n  readonly applicantType = computed(() => this.detail()?.applicantType ?? this.application()?.applicantType ?? 'INDIVIDUAL');\n  readonly countryCode = computed(() => (this.detail()?.countryCode ?? this.application()?.countryCode ?? 'GB').toUpperCase());\n  readonly requiresDocuments = computed(() => Boolean(this.environment.onboarding?.requireDocuments));\n  readonly requiresBanking = computed(() => Boolean(this.environment.onboarding?.requireBanking));\n\n  readonly isCompany = computed(() => this.applicantType() === 'COMPANY');\n  readonly isIndividual = computed(() => this.applicantType() === 'INDIVIDUAL');\n  readonly isUkCompany = computed(() => this.isCompany() && this.countryCode() === 'GB');\n  readonly isChinaCompany = computed(() => this.isCompany() && this.countryCode() === 'CN');\n  readonly hasSubmittedState = computed(() => {\n    const status = this.status();\n    return status === 'SUBMITTED' || status === 'IN_REVIEW' || status === 'APPROVED' || status === 'FAILED';\n  });\n  readonly hasGeneralIssue = computed(() => this.issues().some((issue) => !issue.resolved && issue.issueType === 'GENERAL'));\n\n  readonly documents = computed<OnboardingDocumentResponse[]>(() => this.detail()?.documents ?? []);\n  readonly issues = computed<OnboardingIssueResponse[]>(() => this.detail()?.issues ?? []);\n  readonly timeline = computed(() => this.detail()?.timeline ?? []);\n\n  readonly fieldIssueComments = computed<Record<string, string>>(() => {\n    const comments: Record<string, string> = {};\n\n    for (const issue of this.issues()) {\n      if (issue.resolved || !issue.fieldKey || comments[issue.fieldKey]) {\n        continue;\n      }\n\n      comments[issue.fieldKey] = issue.comment;\n    }\n\n    return comments;\n  });\n\n  readonly documentIssueComments = computed<Partial<Record<OnboardingDocumentType, string>>>(() => {\n    const comments: Partial<Record<OnboardingDocumentType, string>> = {};\n\n    for (const issue of this.issues()) {\n      if (issue.resolved || !issue.documentType || comments[issue.documentType]) {\n        continue;\n      }\n\n      comments[issue.documentType] = issue.comment;\n    }\n\n    return comments;\n  });\n\n  readonly requiredDocuments = computed<RequiredDocumentSpec[]>(() => {\n    if (!this.isCompany()) {\n      return INDIVIDUAL_REQUIRED_DOCUMENTS;\n    }\n\n    if (this.isChinaCompany()) {\n      return CHINA_COMPANY_REQUIRED_DOCUMENTS;\n    }\n\n    if (this.isUkCompany()) {\n      return UK_COMPANY_REQUIRED_DOCUMENTS;\n    }\n\n    return COMPANY_BASE_REQUIRED_DOCUMENTS;\n  });\n\n  readonly hasActiveUploads = computed(() => Object.values(this.uploadStates()).some((state) => state?.status === 'uploading'));\n\n  readonly completion = computed<ApplyStepCompletion>(() => {\n    const detail = this.detail();\n\n    if (!detail) {\n      return {\n        profile: false,\n        qualification: false,\n        financial: false,\n        banking: false,\n        form: false,\n      };\n    }\n\n    if (detail.progress) {\n      const profile = detail.progress.profileCompleted;\n      const qualification = !this.requiresDocuments() || detail.progress.qualificationCompleted;\n      const financial = detail.progress.financialCompleted;\n      const banking = !this.requiresBanking() || detail.progress.bankingCompleted;\n\n      return {\n        profile,\n        qualification,\n        financial,\n        banking,\n        form: profile && qualification && financial && banking,\n      };\n    }\n\n    const profile = this.isProfileComplete(detail);\n    const qualification = !this.requiresDocuments() || this.isQualificationComplete(detail);\n    const financial = this.isFinancialComplete(detail);\n    const banking = !this.requiresBanking() || this.isBankingComplete(detail);\n\n    return {\n      profile,\n      qualification,\n      financial,\n      banking,\n      form: profile && qualification && financial && banking,\n    };\n  });\n\n  readonly readyForReview = computed(() => this.completion().form && !this.hasActiveUploads());\n  readonly canSubmit = computed(() => this.readyForReview() && !this.submitting() && !this.saving());\n\n  readonly profileForm = this.fb.nonNullable.group({\n    organizationName: ['', [Validators.maxLength(255)]],\n    contactName: ['', [Validators.required, Validators.maxLength(255)]],\n    contactEmail: ['', [Validators.required, Validators.email]],\n    contactPhone: ['', [Validators.required, Validators.maxLength(64)]],\n    countryCode: ['GB', [Validators.required, Validators.maxLength(8)]],\n  });\n\n  readonly financialForm = this.fb.nonNullable.group({\n    vatMode: ['NON_VAT_REGISTERED', [Validators.required]],\n    vatNumber: ['', [Validators.maxLength(64)]],\n  });\n\n  readonly bankingForm = this.fb.nonNullable.group({\n    bankName: ['', [Validators.maxLength(255)]],\n    accountHolderName: ['', [Validators.maxLength(255), this.accountHolderNameValidator()]],\n    sortCode: ['', [Validators.pattern(SORT_CODE_PATTERN)]],\n    accountNumber: ['', [Validators.pattern(ACCOUNT_NUMBER_PATTERN)]],\n  });\n\n  constructor() {\n    this.setupAutosave();\n\n    effect(() => {\n      this.applicantType();\n      this.countryCode();\n      this.requiresBanking();\n      this.syncProfileValidators();\n      this.syncFinancialRules();\n      this.syncBankingRules();\n      this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false });\n    });\n  }\n\n  async start(request: CreateOnboardingApplicationRequest): Promise<AgentApplyStartResult | null> {\n    this.loading.set(true);\n    this.error.set(null);\n    const existingApplicationId = request.applicationId ?? null;\n\n    try {\n      const response = await firstValueFrom(this.onboardingService.createApplication(request));\n      if (existingApplicationId) {\n        this.clearLocalDraft(existingApplicationId);\n      }\n      this.application.set(response);\n      this.detail.set(null);\n      this.loadedApplicationId.set(null);\n      return {\n        kind: 'created',\n        application: response,\n      };\n    } catch (error) {\n      const activeApplicationId = await this.resolveActiveApplicationConflict(error);\n\n      if (activeApplicationId) {\n        this.error.set(null);\n        return {\n          kind: 'existing',\n          applicationId: activeApplicationId,\n        };\n      }\n\n      this.error.set(this.toErrorMessage(error));\n      return null;\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  async ensureLoaded(applicationId: string, force = false): Promise<void> {\n    if (!applicationId) {\n      return;\n    }\n\n    if (!force && this.loadedApplicationId() === applicationId && this.detail()) {\n      return;\n    }\n\n    this.loading.set(true);\n    this.error.set(null);\n\n    try {\n      const response = await firstValueFrom(this.onboardingService.getApplication(applicationId));\n      this.detail.set(response);\n      this.loadedApplicationId.set(response.id);\n      this.patchForms(response);\n      this.restoreLocalDraft(response.id);\n      this.syncFinancialRules();\n      this.syncBankingRules();\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  async saveProfile(reload = true): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    if (this.profileForm.invalid) {\n      this.profileForm.markAllAsTouched();\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      const rawValue = this.profileForm.getRawValue();\n      const payload: SaveOnboardingProfileRequest = {\n        organizationName: this.isCompany() ? rawValue.organizationName.trim() : rawValue.contactName.trim(),\n        contactName: rawValue.contactName.trim(),\n        contactEmail: rawValue.contactEmail.trim(),\n        contactPhone: rawValue.contactPhone.trim(),\n        countryCode: rawValue.countryCode.trim().toUpperCase(),\n      };\n\n      const response = await firstValueFrom(this.onboardingService.saveProfile(applicationId, payload));\n      this.application.set(response);\n\n      if (reload) {\n        await this.ensureLoaded(applicationId, true);\n      }\n\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  async saveFinancial(reload = true): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    this.syncFinancialRules();\n\n    if (this.financialForm.invalid) {\n      this.financialForm.markAllAsTouched();\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      const rawValue = this.financialForm.getRawValue();\n      const payload: SaveOnboardingFinancialRequest = this.isIndividual()\n        ? {\n            vatMode: 'NON_VAT_REGISTERED',\n            vatNumber: undefined,\n          }\n        : {\n            vatMode: rawValue.vatMode as SaveOnboardingFinancialRequest['vatMode'],\n            vatNumber: rawValue.vatNumber.trim() || undefined,\n          };\n\n      const response = await firstValueFrom(this.onboardingService.saveFinancial(applicationId, payload));\n      this.application.set(response);\n\n      if (reload) {\n        await this.ensureLoaded(applicationId, true);\n      }\n\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  async saveBanking(reload = true): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    this.normalizeBankingFields();\n    this.syncBankingRules();\n    this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false });\n\n    if (this.bankingForm.invalid) {\n      this.bankingForm.markAllAsTouched();\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      const rawValue = this.bankingForm.getRawValue();\n      const payload: SaveOnboardingBankingRequest = {\n        bankName: rawValue.bankName.trim(),\n        accountHolderName: rawValue.accountHolderName.trim(),\n        sortCode: this.onlyDigits(rawValue.sortCode),\n        accountNumber: this.onlyDigits(rawValue.accountNumber),\n      };\n\n      const response = await firstValueFrom(this.onboardingService.saveBanking(applicationId, payload));\n      this.application.set(response);\n\n      if (reload) {\n        await this.ensureLoaded(applicationId, true);\n      }\n\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  async saveFormProgress(): Promise<boolean> {\n    if (this.hasActiveUploads()) {\n      this.error.set('Wait for all document uploads to finish before continuing.');\n      return false;\n    }\n\n    if (this.requiresDocuments() && !this.completion().qualification) {\n      this.error.set('Upload every required qualification document before moving to review.');\n      return false;\n    }\n\n    const profileSaved = await this.saveProfile(false);\n\n    if (!profileSaved) {\n      return false;\n    }\n\n    const financialSaved = await this.saveFinancial(false);\n\n    if (!financialSaved) {\n      return false;\n    }\n\n    if (this.requiresBanking() || this.hasBankingInput()) {\n      const bankingSaved = await this.saveBanking(false);\n\n      if (!bankingSaved) {\n        return false;\n      }\n    }\n\n    const applicationId = this.applicationId();\n\n    if (applicationId) {\n      await this.ensureLoaded(applicationId, true);\n    }\n\n    return true;\n  }\n\n  async uploadDocument(documentType: OnboardingDocumentType, file: File, replacedDocumentId?: string | null): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n    this.setUploadState(documentType, {\n      filename: file.name,\n      progress: 0,\n      status: 'uploading',\n      error: null,\n    });\n\n    try {\n      const uploadRequest: RequestOnboardingUploadUrlRequest = {\n        documentType,\n        filename: file.name,\n        contentType: file.type || 'application/octet-stream',\n        fileSize: file.size,\n        replacedDocumentId: replacedDocumentId ?? undefined,\n      };\n\n      const uploadUrl = await firstValueFrom(this.onboardingService.requestUploadUrl(applicationId, uploadRequest));\n      await this.uploadToSignedUrl(uploadUrl, file, (progress) => {\n        this.setUploadState(documentType, {\n          filename: file.name,\n          progress,\n          status: 'uploading',\n          error: null,\n        });\n      });\n\n      const confirmRequest: ConfirmOnboardingDocumentUploadRequest = {\n        documentType,\n        storageType: uploadUrl.storageType,\n        objectKey: uploadUrl.objectKey,\n        objectUrl: uploadUrl.uploadUrl,\n        originalFilename: file.name,\n        contentType: file.type || 'application/octet-stream',\n        fileSize: file.size,\n        replacedDocumentId: replacedDocumentId ?? undefined,\n      };\n\n      const detail = await firstValueFrom(this.onboardingService.confirmDocumentUpload(applicationId, confirmRequest));\n      this.detail.set(detail);\n      this.loadedApplicationId.set(detail.id);\n      this.setUploadState(documentType, {\n        filename: file.name,\n        progress: 100,\n        status: 'uploaded',\n        error: null,\n      });\n      return true;\n    } catch (error) {\n      const message = this.toErrorMessage(error);\n      this.error.set(message);\n      this.setUploadState(documentType, {\n        filename: file.name,\n        progress: 0,\n        status: 'failed',\n        error: message,\n      });\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  async submit(): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    if (!this.readyForReview()) {\n      this.error.set('Complete the form and finish document uploads before submitting.');\n      return false;\n    }\n\n    this.submitting.set(true);\n    this.error.set(null);\n\n    try {\n      const response = await firstValueFrom(this.onboardingService.submit(applicationId));\n      this.application.set(response);\n      this.clearLocalDraft(applicationId);\n      await this.ensureLoaded(applicationId, true);\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.submitting.set(false);\n    }\n  }\n\n  getDocument(documentType: OnboardingDocumentType): OnboardingDocumentResponse | null {\n    return this.documents().find((item) => item.documentType === documentType) ?? null;\n  }\n\n  getIssueComment(documentType: OnboardingDocumentType): string | null {\n    return this.documentIssueComments()[documentType] ?? null;\n  }\n\n  getFieldIssueComment(fieldKey: string): string | null {\n    return this.fieldIssueComments()[fieldKey] ?? null;\n  }\n\n  isFieldLocked(fieldKey: string): boolean {\n    if (this.hasSubmittedState()) {\n      return true;\n    }\n\n    if (this.status() !== 'NEED_MORE_INFO') {\n      return false;\n    }\n\n    if (this.hasGeneralIssue()) {\n      return false;\n    }\n\n    const editableFields = Object.keys(this.fieldIssueComments());\n\n    if (editableFields.length === 0) {\n      return true;\n    }\n\n    return !editableFields.includes(fieldKey);\n  }\n\n  isDocumentLocked(documentType: OnboardingDocumentType): boolean {\n    if (this.hasSubmittedState()) {\n      return true;\n    }\n\n    if (this.status() !== 'NEED_MORE_INFO') {\n      return false;\n    }\n\n    if (this.hasGeneralIssue()) {\n      return false;\n    }\n\n    const editableDocuments = Object.keys(this.documentIssueComments()) as OnboardingDocumentType[];\n\n    if (editableDocuments.length === 0) {\n      return true;\n    }\n\n    return !editableDocuments.includes(documentType);\n  }\n\n  canAccessStep(step: ApplyRouteStep): boolean {\n    switch (step) {\n      case 'form':\n        return true;\n      case 'review':\n        return this.completion().form;\n      case 'result': {\n        const status = this.status();\n        return (\n          status === 'SUBMITTED' ||\n          status === 'IN_REVIEW' ||\n          status === 'NEED_MORE_INFO' ||\n          status === 'APPROVED' ||\n          status === 'FAILED'\n        );\n      }\n      default:\n        return false;\n    }\n  }\n\n  firstIncompleteStep(): Exclude<ApplyRouteStep, 'result'> {\n    return this.completion().form ? 'review' : 'form';\n  }\n\n  uploadState(documentType: OnboardingDocumentType): ApplyUploadState {\n    return (\n      this.uploadStates()[documentType] ?? {\n        filename: null,\n        progress: 0,\n        status: 'idle',\n        error: null,\n      }\n    );\n  }\n\n  expectedAccountHolderName(): string {\n    const rawProfile = this.profileForm.getRawValue();\n    return this.isCompany() ? rawProfile.organizationName.trim() : rawProfile.contactName.trim();\n  }\n\n  formatSortCode(value: string | null | undefined): string {\n    const digits = this.onlyDigits(value);\n\n    if (!digits) {\n      return '';\n    }\n\n    return digits.match(/.{1,2}/g)?.join('-') ?? digits;\n  }\n\n  private setupAutosave(): void {\n    const autosave = () => this.persistLocalDraft();\n\n    this.profileForm.valueChanges.pipe(debounceTime(250), takeUntilDestroyed(this.destroyRef)).subscribe(() => autosave());\n    this.financialForm.valueChanges.pipe(debounceTime(250), takeUntilDestroyed(this.destroyRef)).subscribe(() => autosave());\n    this.bankingForm.valueChanges.pipe(debounceTime(250), takeUntilDestroyed(this.destroyRef)).subscribe(() => autosave());\n    this.profileForm.controls.contactName.valueChanges\n      .pipe(debounceTime(50), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false }));\n    this.profileForm.controls.organizationName.valueChanges\n      .pipe(debounceTime(50), takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false }));\n    this.financialForm.controls.vatMode.valueChanges\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.syncFinancialRules());\n  }\n\n  private syncProfileValidators(): void {\n    const organizationName = this.profileForm.controls.organizationName;\n    const validators = this.isCompany() ? [Validators.required, Validators.maxLength(255)] : [Validators.maxLength(255)];\n    organizationName.setValidators(validators);\n    organizationName.updateValueAndValidity({ emitEvent: false });\n  }\n\n  private syncFinancialRules(): void {\n    const vatMode = this.financialForm.controls.vatMode;\n    const vatNumber = this.financialForm.controls.vatNumber;\n\n    if (this.isIndividual()) {\n      if (vatMode.value !== 'NON_VAT_REGISTERED') {\n        vatMode.setValue('NON_VAT_REGISTERED', { emitEvent: false });\n      }\n\n      if (vatNumber.value) {\n        vatNumber.setValue('', { emitEvent: false });\n      }\n    } else if (vatMode.value === 'NON_VAT_REGISTERED') {\n      vatMode.setValue('VAT_REGISTERED', { emitEvent: false });\n    }\n\n    const requiresVatNumber = this.isCompany() && vatMode.value === 'VAT_REGISTERED';\n    const validators = requiresVatNumber ? [Validators.required, Validators.maxLength(64)] : [Validators.maxLength(64)];\n    vatNumber.setValidators(validators);\n    vatNumber.updateValueAndValidity({ emitEvent: false });\n  }\n\n  private syncBankingRules(): void {\n    const requiredValidators = this.requiresBanking() ? [Validators.required] : [];\n    this.bankingForm.controls.bankName.setValidators([...requiredValidators, Validators.maxLength(255)]);\n    this.bankingForm.controls.accountHolderName.setValidators([\n      ...requiredValidators,\n      Validators.maxLength(255),\n      this.accountHolderNameValidator(),\n    ]);\n    this.bankingForm.controls.sortCode.setValidators([...requiredValidators, Validators.pattern(SORT_CODE_PATTERN)]);\n    this.bankingForm.controls.accountNumber.setValidators([...requiredValidators, Validators.pattern(ACCOUNT_NUMBER_PATTERN)]);\n\n    this.bankingForm.controls.bankName.updateValueAndValidity({ emitEvent: false });\n    this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false });\n    this.bankingForm.controls.sortCode.updateValueAndValidity({ emitEvent: false });\n    this.bankingForm.controls.accountNumber.updateValueAndValidity({ emitEvent: false });\n  }\n\n  private patchForms(detail: OnboardingApplicationDetailResponse): void {\n    this.profileForm.patchValue(\n      {\n        organizationName: detail.organizationName ?? '',\n        contactName: detail.contactName ?? '',\n        contactEmail: detail.contactEmail ?? '',\n        contactPhone: detail.contactPhone ?? '',\n        countryCode: detail.countryCode ?? this.defaultCountryCode(),\n      },\n      { emitEvent: false },\n    );\n\n    this.financialForm.patchValue(\n      {\n        vatMode: detail.vatMode ?? (detail.applicantType === 'COMPANY' ? 'VAT_REGISTERED' : 'NON_VAT_REGISTERED'),\n        vatNumber: detail.vatNumber ?? '',\n      },\n      { emitEvent: false },\n    );\n\n    this.bankingForm.patchValue(\n      {\n        bankName: detail.bankName ?? '',\n        accountHolderName: detail.accountHolderName ?? '',\n        sortCode: this.onlyDigits(detail.sortCode),\n        accountNumber: this.onlyDigits(detail.accountNumber),\n      },\n      { emitEvent: false },\n    );\n  }\n\n  private isProfileComplete(detail: OnboardingApplicationDetailResponse): boolean {\n    const hasApplicantName = Boolean(detail.contactName && detail.contactEmail && detail.contactPhone);\n    const hasCountryCode = Boolean(detail.countryCode);\n\n    if (!hasApplicantName || !hasCountryCode) {\n      return false;\n    }\n\n    if (detail.applicantType === 'COMPANY') {\n      return Boolean(detail.organizationName);\n    }\n\n    return true;\n  }\n\n  private isQualificationComplete(detail: OnboardingApplicationDetailResponse): boolean {\n    const uploadedTypes = new Set(detail.documents.map((item) => item.documentType));\n    return this.requiredDocuments().every((item) => uploadedTypes.has(item.type));\n  }\n\n  private isFinancialComplete(detail: OnboardingApplicationDetailResponse): boolean {\n    if (detail.applicantType === 'INDIVIDUAL') {\n      return detail.vatMode === 'NON_VAT_REGISTERED';\n    }\n\n    if (!detail.vatMode || detail.vatMode === 'NON_VAT_REGISTERED') {\n      return false;\n    }\n\n    if (detail.vatMode === 'VAT_REGISTERED') {\n      return Boolean(detail.vatNumber);\n    }\n\n    return true;\n  }\n\n  private isBankingComplete(detail: OnboardingApplicationDetailResponse): boolean {\n    if (!detail.bankName || !detail.accountHolderName) {\n      return false;\n    }\n\n    return (\n      SORT_CODE_PATTERN.test(this.onlyDigits(detail.sortCode)) &&\n      ACCOUNT_NUMBER_PATTERN.test(this.onlyDigits(detail.accountNumber))\n    );\n  }\n\n  private accountHolderNameValidator(): ValidatorFn {\n    return (control): ValidationErrors | null => {\n      const expected = this.expectedAccountHolderName();\n      const value = typeof control.value === 'string' ? control.value.trim() : '';\n\n      if (!value || !expected) {\n        return null;\n      }\n\n      return value.toLowerCase() === expected.toLowerCase() ? null : { accountHolderMismatch: true };\n    };\n  }\n\n  private normalizeBankingFields(): void {\n    this.bankingForm.patchValue(\n      {\n        sortCode: this.onlyDigits(this.bankingForm.controls.sortCode.value),\n        accountNumber: this.onlyDigits(this.bankingForm.controls.accountNumber.value),\n      },\n      { emitEvent: false },\n    );\n  }\n\n  private hasBankingInput(): boolean {\n    const rawValue = this.bankingForm.getRawValue();\n    return Boolean(\n      rawValue.bankName.trim() ||\n      rawValue.accountHolderName.trim() ||\n      this.onlyDigits(rawValue.sortCode) ||\n      this.onlyDigits(rawValue.accountNumber),\n    );\n  }\n\n  private persistLocalDraft(): void {\n    const applicationId = this.applicationId();\n\n    if (!applicationId || typeof localStorage === 'undefined') {\n      return;\n    }\n\n    const snapshot: LocalDraftSnapshot = {\n      profile: this.profileForm.getRawValue(),\n      financial: this.financialForm.getRawValue(),\n      banking: this.bankingForm.getRawValue(),\n      updatedAt: new Date().toISOString(),\n    };\n\n    localStorage.setItem(this.localDraftKey(applicationId), JSON.stringify(snapshot));\n    this.lastLocalDraftSavedAt.set(snapshot.updatedAt);\n  }\n\n  private restoreLocalDraft(applicationId: string): void {\n    if (typeof localStorage === 'undefined') {\n      return;\n    }\n\n    const rawSnapshot = localStorage.getItem(this.localDraftKey(applicationId));\n\n    if (!rawSnapshot) {\n      this.lastLocalDraftSavedAt.set(null);\n      return;\n    }\n\n    try {\n      const snapshot = JSON.parse(rawSnapshot) as LocalDraftSnapshot;\n\n      this.profileForm.patchValue(snapshot.profile, { emitEvent: false });\n      this.financialForm.patchValue(snapshot.financial, { emitEvent: false });\n      this.bankingForm.patchValue(\n        {\n          ...snapshot.banking,\n          sortCode: this.onlyDigits(snapshot.banking.sortCode),\n          accountNumber: this.onlyDigits(snapshot.banking.accountNumber),\n        },\n        { emitEvent: false },\n      );\n      this.lastLocalDraftSavedAt.set(snapshot.updatedAt ?? null);\n    } catch {\n      localStorage.removeItem(this.localDraftKey(applicationId));\n      this.lastLocalDraftSavedAt.set(null);\n    }\n  }\n\n  private clearLocalDraft(applicationId: string): void {\n    if (typeof localStorage === 'undefined') {\n      return;\n    }\n\n    localStorage.removeItem(this.localDraftKey(applicationId));\n    this.lastLocalDraftSavedAt.set(null);\n  }\n\n  private localDraftKey(applicationId: string): string {\n    return `rolatech.agent-apply.${applicationId}`;\n  }\n\n  private setUploadState(documentType: OnboardingDocumentType, state: ApplyUploadState): void {\n    this.uploadStates.update((current) => ({\n      ...current,\n      [documentType]: state,\n    }));\n  }\n\n  private uploadToSignedUrl(\n    upload: OnboardingUploadUrlResponse,\n    file: File,\n    onProgress: (progress: number) => void,\n  ): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const request = new XMLHttpRequest();\n      request.open('PUT', upload.uploadUrl, true);\n\n      const headers = upload.uploadHeaders ?? {};\n\n      for (const [key, value] of Object.entries(headers)) {\n        request.setRequestHeader(key, value);\n      }\n\n      request.upload.onprogress = (event) => {\n        if (!event.lengthComputable) {\n          return;\n        }\n\n        onProgress(Math.min(100, Math.round((event.loaded / event.total) * 100)));\n      };\n\n      request.onload = () => {\n        if (request.status >= 200 && request.status < 300) {\n          resolve();\n          return;\n        }\n\n        reject(new Error(`Document upload failed with status ${request.status}.`));\n      };\n\n      request.onerror = () => reject(new Error('Document upload failed.'));\n      request.send(file);\n    });\n  }\n\n  private defaultCountryCode(): string {\n    return this.countryCode() === 'CN' ? 'CN' : 'GB';\n  }\n\n  private onlyDigits(value: string | null | undefined): string {\n    return (value ?? '').replace(/\\D/g, '');\n  }\n\n  private async resolveActiveApplicationConflict(error: unknown): Promise<string | null> {\n    if (!this.isActiveApplicationConflict(error)) {\n      return null;\n    }\n\n    const payloadApplicationId = this.extractActiveApplicationId(error);\n\n    if (payloadApplicationId) {\n      return payloadApplicationId;\n    }\n\n    try {\n      const applications = await firstValueFrom(this.onboardingService.listMine());\n      const activeApplication = [...applications]\n        .filter((application) => this.isActiveApplicationStatus(application.status))\n        .sort((left, right) => this.toApplicationTimestamp(right) - this.toApplicationTimestamp(left))[0];\n\n      return activeApplication?.id ?? null;\n    } catch {\n      return null;\n    }\n  }\n\n  private isActiveApplicationConflict(error: unknown): boolean {\n    const message = this.toErrorMessage(error).toLowerCase();\n    return message.includes('active onboarding application');\n  }\n\n  private extractActiveApplicationId(error: unknown): string | null {\n    const candidates = [\n      this.readStringPath(error, ['data', 'applicationId']),\n      this.readStringPath(error, ['data', 'existingApplicationId']),\n      this.readStringPath(error, ['data', 'application', 'id']),\n      this.readStringPath(error, ['data', 'id']),\n      this.readStringPath(error, ['applicationId']),\n      this.readStringPath(error, ['existingApplicationId']),\n      this.readStringPath(error, ['application', 'id']),\n      this.readStringPath(error, ['data']),\n    ];\n\n    return candidates.find((value) => Boolean(value)) ?? null;\n  }\n\n  private readStringPath(source: unknown, path: string[]): string | null {\n    let current: unknown = source;\n\n    for (const segment of path) {\n      if (!current || typeof current !== 'object' || !(segment in (current as Record<string, unknown>))) {\n        return null;\n      }\n\n      current = (current as Record<string, unknown>)[segment];\n    }\n\n    return typeof current === 'string' && current.trim() ? current.trim() : null;\n  }\n\n  private isActiveApplicationStatus(status: OnboardingStatus): boolean {\n    return status !== 'APPROVED' && status !== 'FAILED';\n  }\n\n  private toApplicationTimestamp(application: OnboardingApplicationResponse): number {\n    return Date.parse(application.updatedAt ?? application.createdAt ?? '') || 0;\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (\n      error &&\n      typeof error === 'object' &&\n      'message' in error &&\n      typeof (error as { message?: unknown }).message === 'string'\n    ) {\n      return (error as { message: string }).message;\n    }\n\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to complete the onboarding action.';\n  }\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateChildFn, Router } from '@angular/router';\nimport { ApplyRouteStep } from '../models/onboarding-ui.models';\nimport { AgentApplyFacade } from '../store/agent-apply.facade';\n\nexport const applyStepGuard: CanActivateChildFn = async (childRoute) => {\n  const facade = inject(AgentApplyFacade);\n  const router = inject(Router);\n\n  const applicationId =\n    childRoute.pathFromRoot.map((item) => item.paramMap.get('applicationId')).find((value) => Boolean(value)) ?? null;\n\n  if (!applicationId) {\n    return false;\n  }\n\n  await facade.ensureLoaded(applicationId);\n\n  const requiredStep = childRoute.data['requiredStep'] as ApplyRouteStep | undefined;\n\n  if (!requiredStep || facade.canAccessStep(requiredStep)) {\n    return true;\n  }\n\n  const fallbackStep = facade.firstIncompleteStep();\n  const fallbackSegments = buildFallbackSegments(childRoute, fallbackStep);\n\n  if (fallbackSegments.length === 0) {\n    return false;\n  }\n\n  return router.createUrlTree(['/', ...fallbackSegments]);\n};\n\nfunction buildFallbackSegments(route: ActivatedRouteSnapshot, fallbackStep: Exclude<ApplyRouteStep, 'result'>): string[] {\n  const segments = route.pathFromRoot.flatMap((item) => item.url.map((segment) => segment.path)).filter(Boolean);\n\n  if (segments.length === 0) {\n    return [];\n  }\n\n  segments[segments.length - 1] = fallbackStep;\n  return segments;\n}\n","import { Routes } from '@angular/router';\nimport { applicationIdGuard } from '../../guards/application-id.guard';\nimport { applyStepGuard } from '../../guards/apply-step.guard';\nimport { AgentApplyFacade } from '../../store/agent-apply.facade';\n\nexport const AGENT_APPLY_SHELL_ROUTES: Routes = [\n  {\n    path: '',\n    pathMatch: 'full',\n    redirectTo: 'form',\n  },\n  {\n    path: 'start',\n    loadComponent: () => import('./agent-apply-start-page').then((m) => m.AgentApplyStartPage),\n  },\n  {\n    path: 'form',\n    data: {\n      requiredStep: 'form',\n    },\n    loadComponent: () => import('./agent-apply-form-page').then((m) => m.AgentApplyFormPage),\n  },\n  {\n    path: 'profile',\n    pathMatch: 'full',\n    redirectTo: 'form',\n  },\n  {\n    path: 'qualification',\n    pathMatch: 'full',\n    redirectTo: 'form',\n  },\n  {\n    path: 'financial',\n    pathMatch: 'full',\n    redirectTo: 'form',\n  },\n  {\n    path: 'banking',\n    pathMatch: 'full',\n    redirectTo: 'form',\n  },\n  {\n    path: 'review',\n    data: {\n      requiredStep: 'review',\n    },\n    loadComponent: () => import('./agent-apply-review-page').then((m) => m.AgentApplyReviewPage),\n  },\n  {\n    path: 'submitted',\n    pathMatch: 'full',\n    redirectTo: 'result',\n  },\n  {\n    path: 'result',\n    data: {\n      requiredStep: 'result',\n    },\n    loadComponent: () => import('./agent-apply-result-page').then((m) => m.AgentApplyResultPage),\n  },\n];\n\nexport const AGENT_APPLY_ROUTES: Routes = [\n  {\n    path: '',\n    providers: [AgentApplyFacade],\n    loadComponent: () => import('./agent-apply-start-page').then((m) => m.AgentApplyStartPage),\n  },\n  {\n    path: ':applicationId',\n    canActivate: [applicationIdGuard],\n    canActivateChild: [applyStepGuard],\n    providers: [AgentApplyFacade],\n    loadComponent: () => import('./agent-apply-shell-page').then((m) => m.AgentApplyShellPage),\n    children: AGENT_APPLY_SHELL_ROUTES,\n  },\n];\n","import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { OnboardingApplicantService } from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\nexport const applicationLandingGuard: CanActivateFn = async (route) => {\n  const router = inject(Router);\n  const onboardingApplicantService = inject(OnboardingApplicantService);\n  const applicationId = route.paramMap.get('applicationId');\n\n  if (!applicationId) {\n    return router.createUrlTree(['/agents']);\n  }\n\n  try {\n    const detail = await firstValueFrom(onboardingApplicantService.getApplication(applicationId));\n    const baseSegments = route.pathFromRoot.flatMap((item) => item.url.map((segment) => segment.path)).filter(Boolean);\n\n    if (detail.status === 'APPROVED') {\n      return router.createUrlTree(['/', ...baseSegments, 'dashboard']);\n    }\n\n    if (\n      detail.status === 'FAILED' ||\n      detail.status === 'IN_REVIEW' ||\n      detail.status === 'NEED_MORE_INFO' ||\n      detail.status === 'SUBMITTED'\n    ) {\n      return router.createUrlTree(['/', ...baseSegments, 'result']);\n    }\n\n    return router.createUrlTree(['/', ...baseSegments, 'form']);\n  } catch {\n    return router.createUrlTree(['/agents']);\n  }\n};\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport {\n  ConfirmOnboardingDocumentUploadRequest,\n  OnboardingApplicantService,\n  OnboardingApplicationDetailResponse,\n  OnboardingDocumentResponse,\n  OnboardingDocumentType,\n  OnboardingIssueResponse,\n  OnboardingStatus,\n  RequestOnboardingUploadUrlRequest,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AgentOnboardingFacade {\n  private readonly onboardingService = inject(OnboardingApplicantService);\n\n  readonly loading = signal(false);\n  readonly saving = signal(false);\n  readonly error = signal<string | null>(null);\n\n  readonly detail = signal<OnboardingApplicationDetailResponse | null>(null);\n\n  private readonly loadedApplicationId = signal<string | null>(null);\n\n  readonly status = computed<OnboardingStatus | null>(() => this.detail()?.status ?? null);\n  readonly issues = computed<OnboardingIssueResponse[]>(() => this.detail()?.issues ?? []);\n  readonly documents = computed<OnboardingDocumentResponse[]>(() => this.detail()?.documents ?? []);\n  readonly timeline = computed(() => this.detail()?.timeline ?? []);\n  readonly applicationId = computed(() => this.detail()?.id ?? null);\n\n  async ensureLoaded(applicationId: string, force = false): Promise<void> {\n    if (!applicationId) {\n      return;\n    }\n\n    if (!force && this.loadedApplicationId() === applicationId && this.detail()) {\n      return;\n    }\n\n    this.loading.set(true);\n    this.error.set(null);\n\n    try {\n      const detail = await firstValueFrom(this.onboardingService.getApplication(applicationId));\n      this.detail.set(detail);\n      this.loadedApplicationId.set(detail.id);\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  async reuploadDocument(documentType: OnboardingDocumentType, file: File, replacedDocumentId: string): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      const uploadRequest: RequestOnboardingUploadUrlRequest = {\n        documentType,\n        filename: file.name,\n        contentType: file.type,\n        fileSize: file.size,\n        replacedDocumentId,\n      };\n\n      const uploadUrl = await firstValueFrom(this.onboardingService.requestUploadUrl(applicationId, uploadRequest));\n\n      const uploadResponse = await fetch(uploadUrl.uploadUrl, {\n        method: 'PUT',\n        body: file,\n        headers: {\n          ...uploadUrl.uploadHeaders,\n        },\n      });\n\n      if (!uploadResponse.ok) {\n        throw new Error(`Document upload failed with status ${uploadResponse.status}`);\n      }\n\n      const confirmRequest: ConfirmOnboardingDocumentUploadRequest = {\n        documentType,\n        storageType: uploadUrl.storageType,\n        objectKey: uploadUrl.objectKey,\n        objectUrl: uploadUrl.uploadUrl,\n        originalFilename: file.name,\n        contentType: file.type,\n        fileSize: file.size,\n        replacedDocumentId,\n      };\n\n      const detail = await firstValueFrom(this.onboardingService.confirmDocumentUpload(applicationId, confirmRequest));\n      this.detail.set(detail);\n      this.loadedApplicationId.set(detail.id);\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  async resubmit(): Promise<boolean> {\n    const applicationId = this.applicationId();\n\n    if (!applicationId) {\n      return false;\n    }\n\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      await firstValueFrom(this.onboardingService.submit(applicationId));\n      await this.ensureLoaded(applicationId, true);\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load onboarding information.';\n  }\n}\n","import { Routes } from '@angular/router';\nimport { applicationIdGuard } from '../../guards/application-id.guard';\nimport { AgentOnboardingFacade } from '../../store/agent-onboarding.facade';\n\nexport const AGENT_ONBOARDING_SHELL_ROUTES: Routes = [\n  {\n    path: '',\n    pathMatch: 'full',\n    loadComponent: () => import('./agent-onboarding-overview-page').then((m) => m.AgentOnboardingOverviewPage),\n  },\n  {\n    path: 'documents',\n    loadComponent: () => import('./agent-onboarding-documents-page').then((m) => m.AgentOnboardingDocumentsPage),\n  },\n  {\n    path: 'issues',\n    loadComponent: () => import('./agent-onboarding-issues-page').then((m) => m.AgentOnboardingIssuesPage),\n  },\n];\n\nexport const AGENT_ONBOARDING_ROUTES: Routes = [\n  {\n    path: ':applicationId',\n    canActivate: [applicationIdGuard],\n    providers: [AgentOnboardingFacade],\n    loadComponent: () => import('./agent-onboarding-shell-page').then((m) => m.AgentOnboardingShellPage),\n    children: AGENT_ONBOARDING_SHELL_ROUTES,\n  },\n];\n","import { Routes } from '@angular/router';\nimport { applicationIdGuard } from '../../guards/application-id.guard';\nimport { applicationLandingGuard } from '../../guards/application-landing.guard';\nimport { applyStepGuard } from '../../guards/apply-step.guard';\nimport { AgentApplyFacade } from '../../store/agent-apply.facade';\nimport { AgentOnboardingFacade } from '../../store/agent-onboarding.facade';\nimport { AGENT_APPLY_SHELL_ROUTES } from '../agent-apply/agent-apply-routes';\nimport { AGENT_ONBOARDING_SHELL_ROUTES } from '../agent-onboarding/agent-onboarding-routes';\n\nexport const AGENT_APPLICATION_ROUTES: Routes = [\n  {\n    path: ':applicationId',\n    canActivate: [applicationIdGuard],\n    children: [\n      {\n        path: '',\n        pathMatch: 'full',\n        canActivate: [applicationLandingGuard],\n        loadComponent: () => import('./agent-application-entry-page').then((m) => m.AgentApplicationEntryPage),\n      },\n      {\n        path: 'documents',\n        pathMatch: 'full',\n        redirectTo: 'dashboard/documents',\n      },\n      {\n        path: 'issues',\n        pathMatch: 'full',\n        redirectTo: 'dashboard/issues',\n      },\n      {\n        path: 'dashboard',\n        providers: [AgentOnboardingFacade],\n        loadComponent: () => import('../agent-onboarding/agent-onboarding-shell-page').then((m) => m.AgentOnboardingShellPage),\n        children: AGENT_ONBOARDING_SHELL_ROUTES,\n      },\n      {\n        path: '',\n        canActivateChild: [applyStepGuard],\n        providers: [AgentApplyFacade],\n        loadComponent: () => import('../agent-apply/agent-apply-shell-page').then((m) => m.AgentApplyShellPage),\n        children: AGENT_APPLY_SHELL_ROUTES,\n      },\n    ],\n  },\n];\n","import { Routes } from '@angular/router';\nimport { applicationIdGuard } from '../../guards/application-id.guard';\n\nexport const ADMIN_ONBOARDING_ROUTES: Routes = [\n  {\n    path: '',\n    loadComponent: () => import('./admin-onboarding-index-page').then((m) => m.AdminOnboardingIndexPage),\n  },\n  {\n    path: ':applicationId/review',\n    canActivate: [applicationIdGuard],\n    loadComponent: () => import('./admin-onboarding-review-page').then((m) => m.AdminOnboardingReviewPage),\n  },\n  {\n    path: ':applicationId',\n    canActivate: [applicationIdGuard],\n    loadComponent: () => import('./admin-onboarding-detail-page').then((m) => m.AdminOnboardingDetailPage),\n  },\n];\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport {\n  OnboardingAdminListOptions,\n  OnboardingAdminService,\n  OnboardingApplicationResponse,\n  OnboardingStatus,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AdminOnboardingListFacade {\n  private readonly onboardingAdminService = inject(OnboardingAdminService);\n\n  readonly loading = signal(false);\n  readonly error = signal<string | null>(null);\n\n  readonly filters = signal<OnboardingAdminListOptions>({\n    status: undefined,\n    search: '',\n  });\n\n  readonly items = signal<OnboardingApplicationResponse[]>([]);\n\n  readonly groupedCounts = computed(() => {\n    const result: Record<OnboardingStatus, number> = {\n      DRAFT: 0,\n      IN_PROGRESS: 0,\n      SUBMITTED: 0,\n      IN_REVIEW: 0,\n      NEED_MORE_INFO: 0,\n      APPROVED: 0,\n      FAILED: 0,\n    };\n\n    for (const item of this.items()) {\n      result[item.status] += 1;\n    }\n\n    return result;\n  });\n\n  async load(query?: Partial<OnboardingAdminListOptions>): Promise<void> {\n    if (query) {\n      this.filters.update((current) => ({\n        ...current,\n        ...query,\n      }));\n    }\n\n    this.loading.set(true);\n    this.error.set(null);\n\n    try {\n      const payload = this.filters();\n      const response = await firstValueFrom(this.onboardingAdminService.list(payload));\n      this.items.set(response.data ?? []);\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  setStatus(status: OnboardingStatus | undefined): void {\n    this.filters.update((current) => ({\n      ...current,\n      status,\n    }));\n  }\n\n  setSearch(search: string): void {\n    this.filters.update((current) => ({\n      ...current,\n      search,\n    }));\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (\n      error &&\n      typeof error === 'object' &&\n      'message' in error &&\n      typeof (error as { message?: unknown }).message === 'string'\n    ) {\n      return (error as { message: string }).message;\n    }\n\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load onboarding applications.';\n  }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { OnboardingAdminService, OnboardingApplicationDetailResponse } from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AdminOnboardingDetailFacade {\n  private readonly onboardingAdminService = inject(OnboardingAdminService);\n\n  readonly loading = signal(false);\n  readonly error = signal<string | null>(null);\n  readonly detail = signal<OnboardingApplicationDetailResponse | null>(null);\n\n  async load(applicationId: string): Promise<void> {\n    if (!applicationId) {\n      return;\n    }\n\n    this.loading.set(true);\n    this.error.set(null);\n\n    try {\n      const detail = await firstValueFrom(this.onboardingAdminService.getApplication(applicationId));\n      this.detail.set(detail);\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load onboarding application details.';\n  }\n}\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport {\n  ApproveOnboardingApplicationRequest,\n  FailOnboardingApplicationRequest,\n  NeedMoreInfoOnboardingApplicationRequest,\n  OnboardingAdminService,\n  OnboardingApplicationDetailResponse,\n  OnboardingDocumentType,\n  OnboardingIssueType,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\nimport { OnboardingReviewIssueDraft } from '../models/onboarding-review.models';\nimport { RequiredDocumentSpec } from '../models/onboarding-ui.models';\n\nconst INDIVIDUAL_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  { type: 'PASSPORT', label: 'Applicant passport', helperText: 'Required identity document.' },\n];\n\nconst COMPANY_BASE_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  { type: 'PASSPORT', label: 'Director passport', helperText: 'Required director identity document.' },\n  {\n    type: 'CERTIFICATE_OF_INCORPORATION',\n    label: 'Certificate of incorporation',\n    helperText: 'Required for company verification.',\n  },\n  { type: 'INDUSTRY_CERTIFICATE', label: 'Industry certificate', helperText: 'RICS, ARLA, NAEA, or Propertymark.' },\n];\n\nconst UK_COMPANY_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  ...COMPANY_BASE_REQUIRED_DOCUMENTS,\n  { type: 'OTHER', label: 'Redress / AML evidence', helperText: 'Evidence bundle for UK company review.' },\n];\n\nconst CHINA_COMPANY_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n  ...COMPANY_BASE_REQUIRED_DOCUMENTS,\n  {\n    type: 'OTHER',\n    label: 'Stamped business license',\n    helperText: 'The original scanned business license must include the official company stamp.',\n  },\n];\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AdminOnboardingReviewFacade {\n  private readonly onboardingAdminService = inject(OnboardingAdminService);\n\n  readonly loading = signal(false);\n  readonly saving = signal(false);\n  readonly error = signal<string | null>(null);\n\n  readonly detail = signal<OnboardingApplicationDetailResponse | null>(null);\n  readonly reviewComment = signal('');\n  readonly fieldIssueDrafts = signal<Record<string, OnboardingReviewIssueDraft>>({});\n  readonly documentIssueDrafts = signal<Partial<Record<OnboardingDocumentType, OnboardingReviewIssueDraft>>>({});\n  readonly passedFields = signal<Record<string, boolean>>({});\n  readonly passedDocuments = signal<Partial<Record<OnboardingDocumentType, boolean>>>({});\n  readonly previewLoading = signal(false);\n  readonly previewError = signal<string | null>(null);\n  readonly previewUrl = signal<string | null>(null);\n  readonly previewDocumentId = signal<string | null>(null);\n\n  readonly requiredDocuments = computed<RequiredDocumentSpec[]>(() => {\n    const detail = this.detail();\n\n    if (!detail || detail.applicantType !== 'COMPANY') {\n      return INDIVIDUAL_REQUIRED_DOCUMENTS;\n    }\n\n    if (detail.countryCode === 'CN') {\n      return CHINA_COMPANY_REQUIRED_DOCUMENTS;\n    }\n\n    if (detail.countryCode === 'GB') {\n      return UK_COMPANY_REQUIRED_DOCUMENTS;\n    }\n\n    return COMPANY_BASE_REQUIRED_DOCUMENTS;\n  });\n\n  readonly existingFieldIssues = computed<Record<string, string>>(() => {\n    const result: Record<string, string> = {};\n\n    for (const issue of this.detail()?.issues ?? []) {\n      if (issue.resolved || !issue.fieldKey || result[issue.fieldKey]) {\n        continue;\n      }\n\n      result[issue.fieldKey] = issue.comment;\n    }\n\n    return result;\n  });\n\n  readonly existingDocumentIssues = computed<Partial<Record<OnboardingDocumentType, string>>>(() => {\n    const result: Partial<Record<OnboardingDocumentType, string>> = {};\n\n    for (const issue of this.detail()?.issues ?? []) {\n      if (issue.resolved || !issue.documentType || result[issue.documentType]) {\n        continue;\n      }\n\n      result[issue.documentType] = issue.comment;\n    }\n\n    return result;\n  });\n\n  readonly issueDrafts = computed<NeedMoreInfoOnboardingApplicationRequest['issues']>(() => this.buildIssueDrafts());\n  readonly hasPendingIssues = computed(() => this.issueDrafts().length > 0);\n\n  async load(applicationId: string): Promise<void> {\n    if (!applicationId) {\n      return;\n    }\n\n    this.loading.set(true);\n    this.error.set(null);\n\n    try {\n      const detail = await firstValueFrom(this.onboardingAdminService.getApplication(applicationId));\n      this.detail.set(detail);\n      this.resetDrafts();\n      this.clearDocumentPreview();\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  addFieldIssue(fieldKey: string, comment: string): void {\n    this.setFieldIssueDraft(fieldKey, {\n      optionKey: 'manual',\n      comment,\n    });\n  }\n\n  addDocumentIssue(documentType: OnboardingDocumentType, comment: string): void {\n    this.setDocumentIssueDraft(documentType, {\n      optionKey: 'manual',\n      comment,\n    });\n  }\n\n  removeIssue(index: number): void {\n    const target = this.issueDrafts()[index];\n\n    if (!target) {\n      return;\n    }\n\n    if (target.issueType === 'FIELD' && target.fieldKey) {\n      this.clearFieldIssueDraft(target.fieldKey);\n      return;\n    }\n\n    if (target.issueType === 'DOCUMENT' && target.documentType) {\n      this.clearDocumentIssueDraft(target.documentType);\n    }\n  }\n\n  setComment(value: string): void {\n    this.reviewComment.set(value);\n  }\n\n  setFieldIssueDraft(fieldKey: string, draft: OnboardingReviewIssueDraft | string | null): void {\n    const normalized = this.normalizeDraft(draft);\n    this.fieldIssueDrafts.update((current) => {\n      const next = { ...current };\n\n      if (!normalized) {\n        delete next[fieldKey];\n      } else {\n        next[fieldKey] = normalized;\n      }\n\n      return next;\n    });\n\n    if (normalized) {\n      this.passedFields.update((current) => ({\n        ...current,\n        [fieldKey]: false,\n      }));\n    }\n  }\n\n  setDocumentIssueDraft(documentType: OnboardingDocumentType, draft: OnboardingReviewIssueDraft | string | null): void {\n    const normalized = this.normalizeDraft(draft);\n    this.documentIssueDrafts.update((current) => {\n      const next = { ...current };\n\n      if (!normalized) {\n        delete next[documentType];\n      } else {\n        next[documentType] = normalized;\n      }\n\n      return next;\n    });\n\n    if (normalized) {\n      this.passedDocuments.update((current) => ({\n        ...current,\n        [documentType]: false,\n      }));\n    }\n  }\n\n  toggleFieldPassed(fieldKey: string, passed: boolean): void {\n    this.passedFields.update((current) => ({\n      ...current,\n      [fieldKey]: passed,\n    }));\n\n    if (passed) {\n      this.clearFieldIssueDraft(fieldKey);\n    }\n  }\n\n  toggleDocumentPassed(documentType: OnboardingDocumentType, passed: boolean): void {\n    this.passedDocuments.update((current) => ({\n      ...current,\n      [documentType]: passed,\n    }));\n\n    if (passed) {\n      this.clearDocumentIssueDraft(documentType);\n    }\n  }\n\n  fieldDraft(fieldKey: string): OnboardingReviewIssueDraft | null {\n    return this.fieldIssueDrafts()[fieldKey] ?? null;\n  }\n\n  documentDraft(documentType: OnboardingDocumentType): OnboardingReviewIssueDraft | null {\n    return this.documentIssueDrafts()[documentType] ?? null;\n  }\n\n  fieldDraftComment(fieldKey: string): string {\n    return this.fieldDraft(fieldKey)?.comment ?? '';\n  }\n\n  documentDraftComment(documentType: OnboardingDocumentType): string {\n    return this.documentDraft(documentType)?.comment ?? '';\n  }\n\n  fieldPassed(fieldKey: string): boolean {\n    return this.passedFields()[fieldKey] ?? false;\n  }\n\n  documentPassed(documentType: OnboardingDocumentType): boolean {\n    return this.passedDocuments()[documentType] ?? false;\n  }\n\n  async startReview(applicationId: string): Promise<boolean> {\n    return this.runAction(async () => {\n      await firstValueFrom(this.onboardingAdminService.startReview(applicationId));\n      await this.load(applicationId);\n    });\n  }\n\n  async requestMoreInfo(applicationId: string): Promise<boolean> {\n    const issues = this.issueDrafts();\n\n    if (issues.length === 0) {\n      this.error.set('Add at least one field or document issue before requesting more information.');\n      return false;\n    }\n\n    const payload: NeedMoreInfoOnboardingApplicationRequest = {\n      comment: this.reviewComment().trim(),\n      issues,\n    };\n\n    return this.runAction(async () => {\n      await firstValueFrom(this.onboardingAdminService.needMoreInfo(applicationId, payload));\n      await this.load(applicationId);\n      this.reviewComment.set('');\n      this.resetDrafts();\n    });\n  }\n\n  async approve(applicationId: string): Promise<boolean> {\n    if (this.hasPendingIssues()) {\n      this.error.set('Clear draft issues before approving the application.');\n      return false;\n    }\n\n    const payload: ApproveOnboardingApplicationRequest = {\n      comment: this.reviewComment().trim(),\n    };\n\n    return this.runAction(async () => {\n      await firstValueFrom(this.onboardingAdminService.approve(applicationId, payload));\n      await this.load(applicationId);\n      this.reviewComment.set('');\n      this.resetDrafts();\n    });\n  }\n\n  async fail(applicationId: string): Promise<boolean> {\n    if (this.hasPendingIssues()) {\n      this.error.set('Clear draft issues before failing the application.');\n      return false;\n    }\n\n    const payload: FailOnboardingApplicationRequest = {\n      comment: this.reviewComment().trim(),\n    };\n\n    return this.runAction(async () => {\n      await firstValueFrom(this.onboardingAdminService.fail(applicationId, payload));\n      await this.load(applicationId);\n      this.reviewComment.set('');\n      this.resetDrafts();\n    });\n  }\n\n  async openDocumentPreview(documentId: string): Promise<boolean> {\n    const applicationId = this.detail()?.id;\n\n    if (!applicationId || !documentId) {\n      return false;\n    }\n\n    this.previewLoading.set(true);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewDocumentId.set(documentId);\n\n    try {\n      const response = await firstValueFrom(this.onboardingAdminService.getDocumentPreviewUrl(applicationId, documentId));\n      this.previewUrl.set(response.previewUrl);\n      this.previewDocumentId.set(response.documentId);\n      return true;\n    } catch (error) {\n      this.previewError.set(this.toPreviewErrorMessage(error));\n      return false;\n    } finally {\n      this.previewLoading.set(false);\n    }\n  }\n\n  clearDocumentPreview(): void {\n    this.previewLoading.set(false);\n    this.previewError.set(null);\n    this.previewUrl.set(null);\n    this.previewDocumentId.set(null);\n  }\n\n  private clearFieldIssueDraft(fieldKey: string): void {\n    this.fieldIssueDrafts.update((current) => {\n      const next = { ...current };\n      delete next[fieldKey];\n      return next;\n    });\n  }\n\n  private clearDocumentIssueDraft(documentType: OnboardingDocumentType): void {\n    this.documentIssueDrafts.update((current) => {\n      const next = { ...current };\n      delete next[documentType];\n      return next;\n    });\n  }\n\n  private buildIssueDrafts(): NeedMoreInfoOnboardingApplicationRequest['issues'] {\n    const fieldIssues = Object.entries(this.fieldIssueDrafts()).flatMap(([fieldKey, draft]) =>\n      draft.comment.trim()\n        ? [\n            {\n              issueType: 'FIELD' as OnboardingIssueType,\n              fieldKey,\n              comment: draft.comment.trim(),\n            },\n          ]\n        : [],\n    );\n\n    const documentIssues = Object.entries(this.documentIssueDrafts()).flatMap(([documentType, draft]) =>\n      draft?.comment.trim()\n        ? [\n            {\n              issueType: 'DOCUMENT' as OnboardingIssueType,\n              documentType: documentType as OnboardingDocumentType,\n              comment: draft.comment.trim(),\n            },\n          ]\n        : [],\n    );\n\n    return [...fieldIssues, ...documentIssues];\n  }\n\n  private resetDrafts(): void {\n    this.fieldIssueDrafts.set({});\n    this.documentIssueDrafts.set({});\n    this.passedFields.set({});\n    this.passedDocuments.set({});\n  }\n\n  private normalizeDraft(draft: OnboardingReviewIssueDraft | string | null): OnboardingReviewIssueDraft | null {\n    if (typeof draft === 'string') {\n      return draft.trim()\n        ? {\n            optionKey: 'manual',\n            comment: draft,\n          }\n        : null;\n    }\n\n    if (!draft) {\n      return null;\n    }\n\n    if (!draft.optionKey?.trim()) {\n      return null;\n    }\n\n    return {\n      optionKey: draft.optionKey,\n      comment: draft.comment ?? '',\n    };\n  }\n\n  private async runAction(action: () => Promise<void>): Promise<boolean> {\n    this.saving.set(true);\n    this.error.set(null);\n\n    try {\n      await action();\n      return true;\n    } catch (error) {\n      this.error.set(this.toErrorMessage(error));\n      return false;\n    } finally {\n      this.saving.set(false);\n    }\n  }\n\n  private toErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to complete the onboarding review action.';\n  }\n\n  private toPreviewErrorMessage(error: unknown): string {\n    if (error instanceof Error && error.message) {\n      return error.message;\n    }\n\n    return 'Unable to load the document preview.';\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'rolatech-onboarding-page-shell',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  styles: [\n    `\n      .rt-onboarding-theme {\n        color-scheme: light dark;\n        background-color: var(--rt-base-background);\n        color: var(--rt-text-primary);\n      }\n\n      .rt-onboarding-header-leading:empty {\n        display: none;\n      }\n    `,\n  ],\n  template: `\n    <section\n      class=\"rt-onboarding-theme mx-auto w-full max-w-6xl space-y-6 bg-(--rt-base-background) px-4 py-6 text-(--rt-text-primary) sm:px-6 lg:px-8\"\n    >\n      <header\n        class=\"relative overflow-hidden rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm sm:p-8\"\n      >\n        <div class=\"relative flex flex-wrap items-start justify-between gap-4\">\n          <div class=\"flex min-w-0 items-start gap-3\">\n            <div class=\"rt-onboarding-header-leading\">\n              <ng-content select=\"[header-leading]\"></ng-content>\n            </div>\n\n            <div>\n              @if (kicker()) {\n                <p class=\"text-xs font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">{{ kicker() }}</p>\n              }\n              <h1 class=\"mt-1 text-2xl font-semibold tracking-tight text-(--rt-text-primary) sm:text-3xl\">{{ title() }}</h1>\n              @if (subtitle()) {\n                <p class=\"mt-3 max-w-3xl text-sm text-(--rt-text-secondary) sm:text-base\">{{ subtitle() }}</p>\n              }\n            </div>\n          </div>\n          <div class=\"shrink-0\">\n            <ng-content select=\"[header-actions]\"></ng-content>\n          </div>\n        </div>\n      </header>\n\n      <ng-content select=\"[floating]\"></ng-content>\n\n      <div class=\"space-y-6\">\n        <ng-content></ng-content>\n      </div>\n    </section>\n  `,\n})\nexport class OnboardingPageShell {\n  readonly title = input.required<string>();\n  readonly subtitle = input<string>('');\n  readonly kicker = input<string>('');\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { onboardingStatusLabel, OnboardingStatus } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-status-badge',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <span\n      class=\"inline-flex items-center rounded-full border border-(--rt-border-color) px-3 py-1 text-xs font-semibold uppercase tracking-wide\"\n      [class]=\"badgeClass()\"\n    >\n      {{ label() }}\n    </span>\n  `,\n})\nexport class OnboardingStatusBadge {\n  readonly status = input<OnboardingStatus | null>(null);\n\n  readonly label = computed(() => {\n    return onboardingStatusLabel(this.status());\n  });\n\n  readonly badgeClass = computed(() => {\n    switch (this.status()) {\n      case 'APPROVED':\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-emerald-700';\n      case 'FAILED':\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-rose-700';\n      case 'NEED_MORE_INFO':\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-amber-700';\n      case 'SUBMITTED':\n      case 'IN_REVIEW':\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-sky-700';\n      case 'IN_PROGRESS':\n      case 'DRAFT':\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)';\n      default:\n        return 'border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)';\n    }\n  });\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ApplyStepNavItem } from '../../models/onboarding-ui.models';\n\n@Component({\n  selector: 'rolatech-onboarding-step-nav',\n  standalone: true,\n  imports: [RouterLink, NgClass],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <nav class=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-3\" aria-label=\"Onboarding steps\">\n      @for (step of steps(); track step.step) {\n        <a\n          [routerLink]=\"step.accessible ? step.link : null\"\n          class=\"group rounded-2xl border border-(--rt-border-color) px-3 py-3 text-left transition cursor-pointer\"\n          [ngClass]=\"\n            step.step === activeStep()\n              ? 'border-(--rt-brand-color) bg-(--rt-brand-color) text-(--rt-text-primary-inverse) shadow-sm'\n              : 'border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-primary) hover:bg-(--rt-raised-background)'\n          \"\n          [class.cursor-not-allowed]=\"!step.accessible\"\n          [class.opacity-60]=\"!step.accessible\"\n        >\n          <div class=\"flex items-center justify-between gap-2\">\n            <span class=\"text-sm font-medium\">{{ step.label }}</span>\n            @if (step.completed) {\n              <span class=\"text-xs font-semibold text-emerald-700\">Done</span>\n            } @else if (!step.accessible) {\n              <span class=\"text-xs font-semibold text-(--rt-text-secondary)\">Locked</span>\n            }\n          </div>\n        </a>\n      }\n    </nav>\n  `,\n})\nexport class OnboardingStepNav {\n  readonly steps = input<ApplyStepNavItem[]>([]);\n  readonly activeStep = input<string>('');\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { OnboardingDocumentResponse, OnboardingDocumentType } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-document-uploader',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-4 shadow-sm\">\n      <div class=\"flex flex-wrap items-start justify-between gap-4\">\n        <div>\n          <h3 class=\"text-sm font-semibold text-(--rt-text-primary)\">{{ label() }}</h3>\n          <p class=\"mt-1 text-xs text-(--rt-text-secondary)\">{{ helperText() }}</p>\n\n          @if (document(); as existing) {\n            <p class=\"mt-2 text-sm text-(--rt-text-primary)\">\n              {{ existing.originalFilename }}\n              <span class=\"text-(--rt-text-secondary)\">(v{{ existing.version }})</span>\n            </p>\n          } @else if (pendingFilename()) {\n            <p class=\"mt-2 text-sm text-(--rt-text-primary)\">{{ pendingFilename() }}</p>\n          }\n        </div>\n\n        <div class=\"flex flex-wrap items-center gap-2\">\n          @if (document() && canPreview()) {\n            <button\n              type=\"button\"\n              class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm font-medium text-(--rt-text-primary) transition hover:bg-(--rt-base-background) disabled:cursor-not-allowed disabled:opacity-60\"\n              [disabled]=\"previewBusy()\"\n              (click)=\"previewRequested.emit()\"\n            >\n              {{ previewBusy() ? 'Loading...' : 'Preview' }}\n            </button>\n          }\n\n          <label\n            class=\"inline-flex cursor-pointer items-center rounded-xl border border-(--rt-border-color) px-3 py-2 text-sm font-medium text-(--rt-text-primary) transition hover:bg-(--rt-raised-background)\"\n            [class.pointer-events-none]=\"busy() || locked()\"\n            [class.opacity-60]=\"busy() || locked()\"\n          >\n            {{ buttonLabel() }}\n            <input\n              type=\"file\"\n              class=\"hidden\"\n              [accept]=\"acceptedTypes()\"\n              [disabled]=\"busy() || locked()\"\n              (change)=\"onFileChange($event)\"\n            />\n          </label>\n        </div>\n      </div>\n\n      @if (uploading()) {\n        <div class=\"mt-3 space-y-2\">\n          <div class=\"flex items-center justify-between gap-3 text-xs text-(--rt-text-secondary)\">\n            <span>Uploading</span>\n            <span>{{ progress() }}%</span>\n          </div>\n          <div class=\"h-2 overflow-hidden rounded-full bg-(--rt-raised-background)\">\n            <div class=\"h-full rounded-full bg-(--rt-brand-color) transition-all duration-200\" [style.width.%]=\"progress()\"></div>\n          </div>\n        </div>\n      }\n\n      @if (warning()) {\n        <div class=\"mt-3 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-amber-800\">\n          {{ warning() }}\n        </div>\n      }\n\n      @if (comment()) {\n        <div class=\"mt-3 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-amber-800\">\n          {{ comment() }}\n        </div>\n      }\n\n      @if (uploadError()) {\n        <div class=\"mt-3 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-rose-700\">\n          {{ uploadError() }}\n        </div>\n      }\n    </section>\n  `,\n})\nexport class OnboardingDocumentUploader {\n  readonly label = input.required<string>();\n  readonly helperText = input<string>('Upload a clear and readable file.');\n  readonly documentType = input.required<OnboardingDocumentType>();\n  readonly document = input<OnboardingDocumentResponse | null>(null);\n  readonly warning = input<string | null>(null);\n  readonly comment = input<string | null>(null);\n  readonly busy = input(false);\n  readonly locked = input(false);\n  readonly uploading = input(false);\n  readonly progress = input(0);\n  readonly pendingFilename = input<string | null>(null);\n  readonly uploadError = input<string | null>(null);\n  readonly acceptedTypes = input('image/*,application/pdf');\n  readonly canPreview = input(false);\n  readonly previewBusy = input(false);\n\n  readonly fileSelected = output<{ documentType: OnboardingDocumentType; file: File; replacedDocumentId?: string }>();\n  readonly previewRequested = output<void>();\n  readonly buttonLabel = computed(() => {\n    if (this.locked()) {\n      return 'Locked';\n    }\n\n    if (this.uploading()) {\n      return 'Uploading...';\n    }\n\n    return this.document() ? 'Replace' : 'Upload';\n  });\n\n  onFileChange(event: Event): void {\n    const target = event.target as HTMLInputElement;\n    const file = target.files?.[0];\n\n    if (!file) {\n      return;\n    }\n\n    this.fileSelected.emit({\n      documentType: this.documentType(),\n      file,\n      replacedDocumentId: this.document()?.id ?? undefined,\n    });\n\n    target.value = '';\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n  selector: 'rolatech-onboarding-document-preview-dialog',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    @if (open()) {\n      <div\n        class=\"fixed inset-0 z-9200 flex items-center justify-center bg-slate-950/70 p-4 backdrop-blur-sm\"\n        (click)=\"closeRequested.emit()\"\n      >\n        <section\n          class=\"flex max-h-[92vh] w-full max-w-6xl flex-col overflow-hidden rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) shadow-2xl\"\n          (click)=\"$event.stopPropagation()\"\n        >\n          <header\n            class=\"flex flex-wrap items-start justify-between gap-4 border-b border-(--rt-border-color) bg-(--rt-raised-background) px-5 py-4\"\n          >\n            <div class=\"min-w-0 space-y-1\">\n              <p class=\"text-[11px] font-semibold uppercase tracking-[0.24em] text-(--rt-text-secondary)\">Document Preview</p>\n              <h2 class=\"truncate text-lg font-semibold text-(--rt-text-primary)\">{{ title() || 'Onboarding document' }}</h2>\n              @if (subtitle()) {\n                <p class=\"text-sm text-(--rt-text-secondary)\">{{ subtitle() }}</p>\n              }\n            </div>\n\n            <div class=\"flex flex-wrap items-center gap-2\">\n              @if (url()) {\n                <a\n                  [href]=\"url()!\"\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                  class=\"rounded-full border border-(--rt-border-color) bg-(--rt-base-background) px-3 py-1.5 text-xs font-semibold text-(--rt-text-primary) transition hover:bg-(--rt-raised-background)\"\n                >\n                  Open in new tab\n                </a>\n              }\n\n              <button\n                type=\"button\"\n                class=\"rounded-full border border-(--rt-border-color) bg-(--rt-base-background) px-3 py-1.5 text-xs font-semibold text-(--rt-text-primary) transition hover:bg-(--rt-raised-background)\"\n                (click)=\"closeRequested.emit()\"\n              >\n                Close\n              </button>\n            </div>\n          </header>\n\n          <div class=\"min-h-[420px] flex-1 bg-(--rt-raised-background)\">\n            @if (loading()) {\n              <div class=\"flex h-full items-center justify-center px-6 text-sm text-(--rt-text-secondary)\">\n                Loading preview...\n              </div>\n            } @else if (error()) {\n              <div class=\"flex h-full items-center justify-center px-6\">\n                <div\n                  class=\"max-w-md rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) px-5 py-4 text-sm text-rose-700\"\n                >\n                  {{ error() }}\n                </div>\n              </div>\n            } @else if (safeUrl()) {\n              <iframe\n                class=\"h-full min-h-[420px] w-full bg-(--rt-base-background)\"\n                [src]=\"safeUrl()\"\n                title=\"Onboarding document preview\"\n              ></iframe>\n            } @else {\n              <div class=\"flex h-full items-center justify-center px-6 text-sm text-(--rt-text-secondary)\">\n                Preview unavailable for this document.\n              </div>\n            }\n          </div>\n        </section>\n      </div>\n    }\n  `,\n})\nexport class OnboardingDocumentPreviewDialog {\n  readonly open = input(false);\n  readonly title = input<string | null>(null);\n  readonly subtitle = input<string | null>(null);\n  readonly url = input<string | null>(null);\n  readonly loading = input(false);\n  readonly error = input<string | null>(null);\n\n  readonly closeRequested = output<void>();\n\n  private readonly sanitizer = inject(DomSanitizer);\n  readonly safeUrl = computed(() => {\n    const url = this.url();\n    return url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : null;\n  });\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { onboardingDocumentTypeLabel, onboardingIssueTypeLabel, OnboardingIssueResponse } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-issue-list',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n      <div class=\"mb-4 flex items-center justify-between gap-3\">\n        <h3 class=\"text-base font-semibold text-(--rt-text-primary)\">Reviewer Issues</h3>\n        <span class=\"rounded-full bg-(--rt-raised-background) px-2 py-1 text-xs font-semibold text-(--rt-text-secondary)\">\n          {{ issues().length }}\n        </span>\n      </div>\n\n      @if (issues().length === 0) {\n        <p class=\"text-sm text-(--rt-text-secondary)\">No issues raised for this application.</p>\n      } @else {\n        <div class=\"space-y-3\">\n          @for (issue of issues(); track issue.id) {\n            <article class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) p-3\">\n              <div class=\"flex flex-wrap items-center justify-between gap-2\">\n                <p class=\"text-xs font-semibold uppercase tracking-wide text-amber-800\">{{ issueTypeLabel(issue.issueType) }}</p>\n                @if (issue.resolved) {\n                  <span\n                    class=\"rounded-full border border-(--rt-border-color) bg-(--rt-base-background) px-2 py-0.5 text-xs font-semibold text-emerald-700\"\n                  >\n                    Resolved\n                  </span>\n                }\n              </div>\n\n              @if (issue.fieldKey) {\n                <p class=\"mt-2 text-xs text-(--rt-text-secondary)\">Field: {{ issue.fieldKey }}</p>\n              }\n\n              @if (issue.documentType) {\n                <p class=\"mt-2 text-xs text-(--rt-text-secondary)\">Document: {{ documentTypeLabel(issue.documentType) }}</p>\n              }\n\n              <p class=\"mt-2 text-sm text-(--rt-text-primary)\">{{ issue.comment }}</p>\n            </article>\n          }\n        </div>\n      }\n    </section>\n  `,\n})\nexport class OnboardingIssueList {\n  readonly issues = input<OnboardingIssueResponse[]>([]);\n  readonly issueTypeLabel = onboardingIssueTypeLabel;\n  readonly documentTypeLabel = onboardingDocumentTypeLabel;\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'rolatech-onboarding-summary-card',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n      <h3 class=\"text-base font-semibold text-(--rt-text-primary)\">{{ title() }}</h3>\n\n      <div class=\"mt-4 grid gap-4 md:grid-cols-2\">\n        @for (item of items(); track item.label) {\n          <div class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) p-3\">\n            <p class=\"text-xs font-medium uppercase tracking-wide text-(--rt-text-secondary)\">{{ item.label }}</p>\n            <p class=\"mt-1 text-sm font-medium text-(--rt-text-primary)\">{{ item.value || '-' }}</p>\n          </div>\n        }\n      </div>\n    </section>\n  `,\n})\nexport class OnboardingSummaryCard {\n  readonly title = input.required<string>();\n  readonly items = input<{ label: string; value: string | null | undefined }[]>([]);\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, signal, ViewEncapsulation } from '@angular/core';\nimport { OnboardingTimelineResponse } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-timeline',\n  standalone: true,\n  imports: [DatePipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n      <div class=\"flex items-center justify-between gap-3\">\n        <h3 class=\"text-base font-semibold text-(--rt-text-primary)\">Timeline</h3>\n        @if (canCollapse()) {\n          <button\n            type=\"button\"\n            class=\"rounded-lg border border-(--rt-border-color) px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n            (click)=\"toggle()\"\n          >\n            {{ panelOpen() ? 'Collapse' : 'Expand' }}\n          </button>\n        }\n      </div>\n\n      @if (items().length === 0) {\n        <p class=\"mt-4 text-sm text-(--rt-text-secondary)\">No timeline events yet.</p>\n      } @else {\n        <div\n          class=\"mt-4 transform transition-all duration-300 ease-out\"\n          [style.maxHeight]=\"panelOpen() ? '1400px' : '0px'\"\n          [style.opacity]=\"panelOpen() ? '1' : '0'\"\n          [style.transform]=\"panelOpen() ? 'translateX(0)' : 'translateX(24px)'\"\n          [style.overflow]=\"panelOpen() ? 'visible' : 'hidden'\"\n        >\n          <ol class=\"space-y-3\">\n            @for (item of items(); track item.id) {\n              <li class=\"rounded-xl border border-(--rt-border-color) p-3\">\n                <div class=\"flex flex-wrap items-start justify-between gap-2\">\n                  <p class=\"text-sm font-semibold text-(--rt-text-primary)\">{{ item.title || item.type }}</p>\n                  <p class=\"text-xs text-(--rt-text-secondary)\">{{ item.createdAt | date: 'medium' }}</p>\n                </div>\n                @if (item.description) {\n                  <p class=\"mt-2 text-sm text-(--rt-text-secondary)\">{{ item.description }}</p>\n                }\n              </li>\n            }\n          </ol>\n        </div>\n      }\n    </section>\n  `,\n})\nexport class OnboardingTimeline {\n  readonly items = input<OnboardingTimelineResponse[]>([]);\n  readonly collapsible = input(false);\n  readonly collapseThreshold = input(6);\n  readonly expanded = signal(true);\n\n  readonly canCollapse = computed(() => this.collapsible() && this.items().length >= this.collapseThreshold());\n  readonly panelOpen = computed(() => !this.canCollapse() || this.expanded());\n\n  toggle(): void {\n    this.expanded.update((value) => !value);\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\nimport { OnboardingTimelineResponse } from '@rolatech/angular-services';\nimport { OnboardingTimeline } from './onboarding-timeline';\n\n@Component({\n  selector: 'rolatech-onboarding-timeline-drawer',\n  standalone: true,\n  imports: [OnboardingTimeline],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <div\n      class=\"fixed inset-0 transition-opacity duration-300 ease-out\"\n      [style.opacity]=\"open() ? '1' : '0'\"\n      [style.pointer-events]=\"open() ? 'auto' : 'none'\"\n      [style.zIndex]=\"zIndex()\"\n    >\n      <div class=\"absolute inset-0 bg-black/20\" (click)=\"requestClose()\"></div>\n\n      <aside\n        class=\"absolute right-0 top-0 h-full w-full max-w-2xl border-l border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-2xl transition-transform duration-300 ease-out\"\n        [style.transform]=\"open() ? 'translateX(0)' : 'translateX(100%)'\"\n      >\n        <div class=\"mb-4 flex items-center justify-between gap-3\">\n          <h3 class=\"text-base font-semibold text-(--rt-text-primary)\">{{ title() }}</h3>\n          <button\n            type=\"button\"\n            class=\"rounded-lg border border-(--rt-border-color) px-3 py-1.5 text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n            (click)=\"requestClose()\"\n          >\n            Close\n          </button>\n        </div>\n\n        <div class=\"h-[calc(100vh-6rem)] overflow-auto pr-1\">\n          <rolatech-onboarding-timeline [items]=\"items()\" />\n        </div>\n      </aside>\n    </div>\n  `,\n})\nexport class OnboardingTimelineDrawer {\n  readonly open = input(false);\n  readonly title = input('Application Timeline');\n  readonly items = input<OnboardingTimelineResponse[]>([]);\n  readonly zIndex = input(9100);\n  readonly closeRequested = output<void>();\n\n  requestClose(): void {\n    this.closeRequested.emit();\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { OnboardingIssueResponse, OnboardingStatus } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-review-issues-banner',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section\n      class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) px-4 py-4 shadow-sm\"\n      [class]=\"status() === 'NEED_MORE_INFO' ? 'text-amber-950' : 'text-sky-950'\"\n    >\n      <div class=\"flex flex-wrap items-start justify-between gap-3\">\n        <div class=\"space-y-1\">\n          <p class=\"text-xs font-semibold uppercase tracking-[0.2em]\">{{ eyebrow() }}</p>\n          <h3 class=\"text-base font-semibold\">{{ title() }}</h3>\n          <p class=\"text-sm opacity-80\">{{ description() }}</p>\n        </div>\n\n        <span class=\"rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-1 text-xs font-semibold\">\n          {{ unresolvedCount() }} open\n        </span>\n      </div>\n    </section>\n  `,\n})\nexport class OnboardingReviewIssuesBanner {\n  readonly issues = input<OnboardingIssueResponse[]>([]);\n  readonly status = input<OnboardingStatus | null>(null);\n\n  readonly unresolvedCount = computed(() => this.issues().filter((issue) => !issue.resolved).length);\n  readonly eyebrow = computed(() => (this.status() === 'NEED_MORE_INFO' ? 'More Information Required' : 'Review Status'));\n  readonly title = computed(() =>\n    this.status() === 'NEED_MORE_INFO'\n      ? 'Review feedback is blocking resubmission.'\n      : 'The application is now waiting on reviewer action.',\n  );\n  readonly description = computed(() =>\n    this.status() === 'NEED_MORE_INFO'\n      ? 'Only the flagged fields and documents should be updated. Approved items stay read-only until review is complete.'\n      : 'You can monitor status updates and any reviewer feedback from this flow.',\n  );\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { OnboardingDocumentResponse, OnboardingDocumentType } from '@rolatech/angular-services';\nimport { ApplyUploadState, RequiredDocumentSpec } from '../../models/onboarding-ui.models';\nimport { OnboardingDocumentUploader } from './onboarding-document-uploader';\n\n@Component({\n  selector: 'rolatech-onboarding-qualification-upload-section',\n  standalone: true,\n  imports: [OnboardingDocumentUploader],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"space-y-4 rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm\">\n      <div class=\"flex flex-wrap items-start justify-between gap-4\">\n        <div class=\"space-y-2\">\n          <h2 class=\"text-lg font-semibold text-(--rt-text-primary)\">Qualification Documents</h2>\n          <p class=\"max-w-2xl text-sm text-(--rt-text-secondary)\">\n            Upload the documents needed for review. File types are limited to PDF, JPG, and PNG.\n          </p>\n        </div>\n\n        <span class=\"rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-1 text-xs font-semibold text-(--rt-text-secondary)\">\n          @if (required()) {\n            {{ uploadedRequiredCount() }}/{{ documentSpecs().length }} ready\n          } @else {\n            {{ uploadedRequiredCount() }} uploaded\n          }\n        </span>\n      </div>\n\n      @if (!required()) {\n        <p class=\"text-sm text-(--rt-text-secondary)\">\n          Documents are optional for now. Turn on the onboarding requirement flag when uploads must be completed before submit.\n        </p>\n      }\n\n      @for (documentSpec of documentSpecs(); track documentSpec.type) {\n        <rolatech-onboarding-document-uploader\n          [label]=\"documentSpec.label\"\n          [helperText]=\"documentSpec.helperText ?? 'Upload a clear and readable file.'\"\n          [documentType]=\"documentSpec.type\"\n          [document]=\"documentFor(documentSpec.type)\"\n          [warning]=\"documentSpec.warning ?? null\"\n          [comment]=\"issueCommentFor(documentSpec.type)\"\n          [busy]=\"busy()\"\n          [locked]=\"isLocked(documentSpec.type)\"\n          [uploading]=\"uploadStateFor(documentSpec.type).status === 'uploading'\"\n          [progress]=\"uploadStateFor(documentSpec.type).progress\"\n          [pendingFilename]=\"uploadStateFor(documentSpec.type).filename\"\n          [uploadError]=\"uploadStateFor(documentSpec.type).error\"\n          (fileSelected)=\"fileSelected.emit($event)\"\n        />\n      }\n    </section>\n  `,\n})\nexport class OnboardingQualificationUploadSection {\n  readonly required = input(true);\n  readonly documentSpecs = input<RequiredDocumentSpec[]>([]);\n  readonly documents = input<OnboardingDocumentResponse[]>([]);\n  readonly issueComments = input<Partial<Record<OnboardingDocumentType, string>>>({});\n  readonly lockedDocuments = input<OnboardingDocumentType[]>([]);\n  readonly uploadStates = input<Partial<Record<OnboardingDocumentType, ApplyUploadState>>>({});\n  readonly busy = input(false);\n\n  readonly fileSelected = output<{ documentType: OnboardingDocumentType; file: File; replacedDocumentId?: string }>();\n\n  readonly uploadedRequiredCount = computed(() => {\n    const uploadedTypes = new Set(this.documents().map((item) => item.documentType));\n    return this.documentSpecs().filter((spec) => uploadedTypes.has(spec.type)).length;\n  });\n\n  documentFor(documentType: OnboardingDocumentType): OnboardingDocumentResponse | null {\n    return this.documents().find((item) => item.documentType === documentType) ?? null;\n  }\n\n  issueCommentFor(documentType: OnboardingDocumentType): string | null {\n    return this.issueComments()[documentType] ?? null;\n  }\n\n  isLocked(documentType: OnboardingDocumentType): boolean {\n    return this.lockedDocuments().includes(documentType);\n  }\n\n  uploadStateFor(documentType: OnboardingDocumentType): ApplyUploadState {\n    return (\n      this.uploadStates()[documentType] ?? {\n        filename: null,\n        progress: 0,\n        status: 'idle',\n        error: null,\n      }\n    );\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { OnboardingApplicantType, OnboardingVatMode, onboardingVatModeLabel } from '@rolatech/angular-services';\n\n@Component({\n  selector: 'rolatech-onboarding-vat-section',\n  standalone: true,\n  imports: [ReactiveFormsModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"space-y-4 rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm\">\n      <div class=\"space-y-2\">\n        <h2 class=\"text-lg font-semibold text-(--rt-text-primary)\">VAT and Settlement Terms</h2>\n        <p class=\"max-w-2xl text-sm text-(--rt-text-secondary)\">\n          We calculate final payment as commission base x (1 + VAT rate). The current VAT rate for this application is\n          {{ vatRateLabel() }}.\n        </p>\n      </div>\n\n      @if (isIndividual()) {\n        <div\n          class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-4 text-sm text-emerald-900\"\n        >\n          Individual applicants are treated as non-VAT registered. VAT is fixed at 0% and no VAT number is required.\n        </div>\n      } @else {\n        @if (sectionReadOnly()) {\n          <div class=\"grid gap-4 md:grid-cols-2\">\n            <article class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) p-4\">\n              <p class=\"text-xs font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">VAT mode</p>\n              <p class=\"mt-2 text-sm font-medium text-(--rt-text-primary)\">{{ vatModeLabel(currentVatMode()) }}</p>\n            </article>\n\n            <article class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) p-4\">\n              <p class=\"text-xs font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">VAT number</p>\n              <p class=\"mt-2 text-sm font-medium text-(--rt-text-primary)\">\n                {{ vatNumberValue() || 'Pending manual verification' }}\n              </p>\n            </article>\n          </div>\n        } @else {\n          <form [formGroup]=\"form()\" class=\"grid gap-4 md:grid-cols-2\">\n            @if (isFieldLocked('vatMode')) {\n              <article class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) p-4\">\n                <p class=\"text-xs font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">VAT mode</p>\n                <p class=\"mt-2 text-sm font-medium text-(--rt-text-primary)\">{{ vatModeLabel(currentVatMode()) }}</p>\n              </article>\n            } @else {\n              <label class=\"grid gap-2\">\n                <span class=\"text-sm font-medium text-(--rt-text-secondary)\">VAT mode</span>\n                <select\n                  formControlName=\"vatMode\"\n                  class=\"h-11 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 text-(--rt-text-primary)\"\n                >\n                  <option value=\"VAT_REGISTERED\">VAT registered</option>\n                  <option value=\"MANUAL_REVIEW_REQUIRED\">Manual review required</option>\n                </select>\n              </label>\n            }\n\n            @if (currentVatMode() === 'VAT_REGISTERED') {\n              <label class=\"grid gap-2\">\n                <span class=\"text-sm font-medium text-(--rt-text-secondary)\">VAT number</span>\n                <input\n                  formControlName=\"vatNumber\"\n                  class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\"\n                  [readonly]=\"isFieldLocked('vatNumber')\"\n                />\n              </label>\n            }\n          </form>\n        }\n\n        @if (fieldComment('vatMode')) {\n          <div\n            class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-800\"\n          >\n            {{ fieldComment('vatMode') }}\n          </div>\n        }\n\n        @if (fieldComment('vatNumber')) {\n          <div\n            class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-800\"\n          >\n            {{ fieldComment('vatNumber') }}\n          </div>\n        }\n\n        @if (currentVatMode() === 'MANUAL_REVIEW_REQUIRED') {\n          <div\n            class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-900\"\n          >\n            Manual verification is required because a VAT number is unavailable. This keeps the application inside the company\n            review flow.\n          </div>\n        }\n\n        @if (countryCode() === 'CN') {\n          <p class=\"text-sm text-(--rt-text-secondary)\">\n            China companies still follow company VAT rules. If a VAT number is unavailable, choose manual review instead of\n            leaving the section incomplete.\n          </p>\n        }\n\n        @if (hasError('vatNumber', 'required')) {\n          <p class=\"text-sm text-rose-700\">VAT number is required when VAT mode is set to VAT registered.</p>\n        }\n      }\n    </section>\n  `,\n})\nexport class OnboardingVatSection {\n  readonly form = input.required<FormGroup>();\n  readonly applicantType = input.required<OnboardingApplicantType>();\n  readonly countryCode = input.required<string>();\n  readonly fieldLocks = input<Record<string, boolean>>({});\n  readonly vatRateLabel = input('20%');\n  readonly issueComments = input<Record<string, string>>({});\n\n  readonly isIndividual = computed(() => this.applicantType() === 'INDIVIDUAL');\n  readonly currentVatMode = computed<OnboardingVatMode>(() => {\n    const value = this.form().get('vatMode')?.value;\n    return (typeof value === 'string' ? value : 'NON_VAT_REGISTERED') as OnboardingVatMode;\n  });\n  readonly vatNumberValue = computed(() => String(this.form().get('vatNumber')?.value ?? '').trim());\n  readonly sectionReadOnly = computed(() => this.isFieldLocked('vatMode') && this.isFieldLocked('vatNumber'));\n  readonly vatModeLabel = onboardingVatModeLabel;\n\n  fieldComment(fieldKey: string): string | null {\n    return this.issueComments()[fieldKey] ?? null;\n  }\n\n  isFieldLocked(fieldKey: string): boolean {\n    return this.fieldLocks()[fieldKey] ?? false;\n  }\n\n  hasError(controlName: string, errorCode: string): boolean {\n    const control = this.form().get(controlName);\n    return Boolean(control?.touched && control.hasError(errorCode));\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'rolatech-onboarding-banking-section',\n  standalone: true,\n  imports: [ReactiveFormsModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <section class=\"space-y-4 rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm\">\n      <div class=\"flex flex-wrap items-start justify-between gap-3\">\n        <div class=\"space-y-2\">\n          <h2 class=\"text-lg font-semibold text-(--rt-text-primary)\">UK Settlement Bank Account</h2>\n          <p class=\"max-w-2xl text-sm text-(--rt-text-secondary)\">\n            Settlement is restricted to a UK local bank account. The account holder name must match the legal applicant name.\n          </p>\n        </div>\n\n        @if (!required()) {\n          <span\n            class=\"rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-1 text-xs font-semibold text-(--rt-text-secondary)\"\n          >\n            Optional for now\n          </span>\n        }\n      </div>\n\n      @if (!required()) {\n        <p class=\"max-w-2xl text-sm text-(--rt-text-secondary)\">\n          You can skip banking details for now. Turn on the onboarding requirement flag when these fields must be completed before submit.\n        </p>\n      }\n\n      <form [formGroup]=\"form()\" class=\"grid gap-4 md:grid-cols-2\">\n        <label class=\"grid gap-2\">\n          <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Bank name</span>\n          <input formControlName=\"bankName\" class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\" [readonly]=\"isFieldLocked('bankName')\" />\n          @if (fieldComment('bankName')) {\n            <span class=\"text-xs text-amber-800\">{{ fieldComment('bankName') }}</span>\n          }\n          @if (hasError('bankName', 'required')) {\n            <span class=\"text-xs text-rose-700\">Bank name is required.</span>\n          }\n        </label>\n\n        <label class=\"grid gap-2\">\n          <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Account holder name</span>\n          <input\n            formControlName=\"accountHolderName\"\n            class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\"\n            [readonly]=\"isFieldLocked('accountHolderName')\"\n          />\n          <span class=\"text-xs text-(--rt-text-secondary)\">Expected name: {{ expectedAccountHolderName() || 'Complete the profile section first' }}</span>\n          @if (fieldComment('accountHolderName')) {\n            <span class=\"text-xs text-amber-800\">{{ fieldComment('accountHolderName') }}</span>\n          }\n          @if (hasError('accountHolderName', 'required')) {\n            <span class=\"text-xs text-rose-700\">Account holder name is required.</span>\n          }\n          @if (hasError('accountHolderName', 'accountHolderMismatch')) {\n            <span class=\"text-xs text-rose-700\">Account holder name must match the applicant or company legal name.</span>\n          }\n        </label>\n\n        <label class=\"grid gap-2\">\n          <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Sort code</span>\n          <input formControlName=\"sortCode\" class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\" [readonly]=\"isFieldLocked('sortCode')\" />\n          <span class=\"text-xs text-(--rt-text-secondary)\">Use 6 digits. Example: 01-02-03.</span>\n          @if (fieldComment('sortCode')) {\n            <span class=\"text-xs text-amber-800\">{{ fieldComment('sortCode') }}</span>\n          }\n          @if (hasError('sortCode', 'required')) {\n            <span class=\"text-xs text-rose-700\">Sort code is required.</span>\n          }\n          @if (hasError('sortCode', 'pattern')) {\n            <span class=\"text-xs text-rose-700\">Sort code must contain exactly 6 digits.</span>\n          }\n        </label>\n\n        <label class=\"grid gap-2\">\n          <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Account number</span>\n          <input formControlName=\"accountNumber\" class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\" [readonly]=\"isFieldLocked('accountNumber')\" />\n          <span class=\"text-xs text-(--rt-text-secondary)\">Account number must contain exactly 8 digits.</span>\n          @if (fieldComment('accountNumber')) {\n            <span class=\"text-xs text-amber-800\">{{ fieldComment('accountNumber') }}</span>\n          }\n          @if (hasError('accountNumber', 'required')) {\n            <span class=\"text-xs text-rose-700\">Account number is required.</span>\n          }\n          @if (hasError('accountNumber', 'pattern')) {\n            <span class=\"text-xs text-rose-700\">Account number must contain exactly 8 digits.</span>\n          }\n        </label>\n      </form>\n    </section>\n  `,\n})\nexport class OnboardingBankingSection {\n  readonly form = input.required<FormGroup>();\n  readonly required = input(true);\n  readonly fieldLocks = input<Record<string, boolean>>({});\n  readonly expectedAccountHolderName = input('');\n  readonly issueComments = input<Record<string, string>>({});\n\n  fieldComment(fieldKey: string): string | null {\n    return this.issueComments()[fieldKey] ?? null;\n  }\n\n  isFieldLocked(fieldKey: string): boolean {\n    return this.fieldLocks()[fieldKey] ?? false;\n  }\n\n  hasError(controlName: string, errorCode: string): boolean {\n    const control = this.form().get(controlName);\n    return Boolean(control?.touched && control.hasError(errorCode));\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { OnboardingReviewIssueDraft, OnboardingReviewIssueOption } from '../../models/onboarding-review.models';\n\n@Component({\n  selector: 'rolatech-onboarding-review-row',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <article\n      class=\"overflow-hidden rounded-[1.75rem] border border-(--rt-border-color) bg-(--rt-base-background) p-4 shadow-sm\"\n    >\n      <div class=\"flex flex-wrap items-start justify-between gap-3\">\n        <div class=\"min-w-0 space-y-1\">\n          <div class=\"flex flex-wrap items-center gap-2\">\n            <p class=\"text-[11px] font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">{{ label() }}</p>\n            @if (existingIssue()) {\n              <span\n                class=\"rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-2.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.16em] text-amber-800\"\n              >\n                Open issue\n              </span>\n            }\n          </div>\n\n          <p class=\"wrap-break-words text-sm font-semibold text-(--rt-text-primary)\">{{ value() || 'Missing' }}</p>\n          @if (helper()) {\n            <p class=\"text-xs text-(--rt-text-secondary)\">{{ helper() }}</p>\n          }\n        </div>\n\n        <div class=\"flex flex-wrap items-center gap-2\">\n          @if (actionLabel()) {\n            <button\n              type=\"button\"\n              class=\"cursor-pointer rounded-full border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-1.5 text-xs font-semibold text-(--rt-text-primary) transition hover:bg-(--rt-base-background) disabled:cursor-not-allowed disabled:opacity-60\"\n              [disabled]=\"busy() || actionDisabled()\"\n              (click)=\"actionTriggered.emit()\"\n            >\n              {{ actionLabel() }}\n            </button>\n          }\n\n          <button\n            type=\"button\"\n            class=\"cursor-pointer rounded-full border px-3 py-1.5 text-xs font-semibold transition disabled:cursor-not-allowed disabled:opacity-60\"\n            [class]=\"passButtonClass()\"\n            [disabled]=\"busy()\"\n            (click)=\"togglePassed()\"\n          >\n            {{ passed() ? 'Passed' : 'Mark pass' }}\n          </button>\n        </div>\n      </div>\n\n      @if (existingIssue()) {\n        <div\n          class=\"mt-3 rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-amber-900\"\n        >\n          Current issue: {{ existingIssue() }}\n        </div>\n      }\n\n      <div class=\"mt-3 grid gap-2\">\n        <label class=\"grid gap-2\">\n          <span class=\"text-[11px] font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\">Issue to raise</span>\n          <select\n            class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-(--rt-text-primary) disabled:cursor-not-allowed disabled:bg-(--rt-raised-background)\"\n            [value]=\"selectedIssueKey()\"\n            [disabled]=\"busy() || passed()\"\n            (change)=\"onIssueSelectionChange($event)\"\n          >\n            <option value=\"\">No issue</option>\n\n            @for (option of issueOptions(); track option.key) {\n              <option [value]=\"option.key\">{{ option.label }}</option>\n            }\n          </select>\n        </label>\n\n        @if (selectedPresetComment()) {\n          <p class=\"text-xs text-(--rt-text-secondary)\">Review note: {{ selectedPresetComment() }}</p>\n        }\n\n        @if (showCustomComment()) {\n          <label class=\"grid gap-2\">\n            <span class=\"text-[11px] font-semibold uppercase tracking-[0.2em] text-(--rt-text-secondary)\"\n              >Custom review note</span\n            >\n            <textarea\n              class=\"min-h-24 rounded-xl border border-(--rt-border-color) px-3 py-2 text-sm\"\n              [value]=\"draftIssue()?.comment ?? ''\"\n              [disabled]=\"busy() || passed()\"\n              (input)=\"onCustomCommentChange($event)\"\n              [placeholder]=\"customCommentPlaceholder()\"\n            ></textarea>\n          </label>\n        }\n      </div>\n    </article>\n  `,\n})\nexport class OnboardingReviewRow {\n  readonly label = input.required<string>();\n  readonly value = input<string | null | undefined>(null);\n  readonly helper = input<string>('');\n  readonly existingIssue = input<string | null>(null);\n  readonly issueOptions = input<OnboardingReviewIssueOption[]>([]);\n  readonly draftIssue = input<OnboardingReviewIssueDraft | null>(null);\n  readonly passed = input(false);\n  readonly busy = input(false);\n  readonly actionLabel = input<string | null>(null);\n  readonly actionDisabled = input(false);\n\n  readonly selectedIssueKey = computed(() => this.draftIssue()?.optionKey ?? '');\n  readonly activeIssueOption = computed(\n    () => this.issueOptions().find((option) => option.key === this.selectedIssueKey()) ?? null,\n  );\n  readonly showCustomComment = computed(() => this.activeIssueOption()?.requiresComment ?? false);\n  readonly selectedPresetComment = computed(() => {\n    const option = this.activeIssueOption();\n    if (!option || option.requiresComment) {\n      return '';\n    }\n\n    return option.comment;\n  });\n  readonly customCommentPlaceholder = computed(\n    () => this.activeIssueOption()?.placeholder ?? 'Add a short reviewer note for this issue.',\n  );\n  readonly passButtonClass = computed(() =>\n    this.passed()\n      ? 'border-(--rt-border-color) bg-(--rt-raised-background) text-emerald-800'\n      : 'border-(--rt-border-color) bg-(--rt-base-background) text-(--rt-text-secondary)',\n  );\n\n  readonly passedChange = output<boolean>();\n  readonly draftIssueChange = output<OnboardingReviewIssueDraft | null>();\n  readonly actionTriggered = output<void>();\n\n  togglePassed(): void {\n    this.passedChange.emit(!this.passed());\n  }\n\n  onIssueSelectionChange(event: Event): void {\n    const target = event.target as HTMLSelectElement;\n    const optionKey = target.value;\n\n    if (!optionKey) {\n      this.draftIssueChange.emit(null);\n      return;\n    }\n\n    const option = this.issueOptions().find((item) => item.key === optionKey);\n\n    if (!option) {\n      this.draftIssueChange.emit(null);\n      return;\n    }\n\n    this.draftIssueChange.emit({\n      optionKey,\n      comment:\n        option.requiresComment && this.draftIssue()?.optionKey === optionKey\n          ? (this.draftIssue()?.comment ?? '')\n          : option.comment,\n    });\n  }\n\n  onCustomCommentChange(event: Event): void {\n    const option = this.activeIssueOption();\n\n    if (!option) {\n      this.draftIssueChange.emit(null);\n      return;\n    }\n\n    const target = event.target as HTMLTextAreaElement;\n    this.draftIssueChange.emit({\n      optionKey: option.key,\n      comment: target.value,\n    });\n  }\n}\n","import { OnboardingDocumentType } from '@rolatech/angular-services';\n\nexport interface OnboardingReviewIssueOption {\n  key: string;\n  label: string;\n  comment: string;\n  requiresComment?: boolean;\n  placeholder?: string;\n}\n\nexport interface OnboardingReviewIssueDraft {\n  optionKey: string;\n  comment: string;\n}\n\nconst OTHER_ISSUE_OPTION: OnboardingReviewIssueOption = {\n  key: 'OTHER',\n  label: 'Other issue',\n  comment: '',\n  requiresComment: true,\n  placeholder: 'Add a short reviewer note for this issue.',\n};\n\nconst DEFAULT_FIELD_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing or incomplete',\n    comment: 'This field is missing or incomplete and needs correction.',\n  },\n  {\n    key: 'format',\n    label: 'Incorrect format',\n    comment: 'This field format is incorrect and needs correction.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match documents',\n    comment: 'This field does not match the supporting documents.',\n  },\n  {\n    key: 'clarify',\n    label: 'Needs clarification',\n    comment: 'Please clarify or correct this field before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst NAME_FIELD_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing or incomplete',\n    comment: 'The name is missing or incomplete and needs correction.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match documents',\n    comment: 'The name does not match the supporting documents.',\n  },\n  {\n    key: 'legal',\n    label: 'Legal name unclear',\n    comment: 'Please provide the full legal name exactly as shown on the supporting documents.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst EMAIL_FIELD_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing email',\n    comment: 'The primary email address is missing.',\n  },\n  {\n    key: 'invalid',\n    label: 'Invalid format',\n    comment: 'The primary email address format is invalid.',\n  },\n  {\n    key: 'verify',\n    label: 'Needs verification',\n    comment: 'Please confirm the primary email address before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst PHONE_FIELD_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing number',\n    comment: 'The phone number is missing or incomplete.',\n  },\n  {\n    key: 'invalid',\n    label: 'Invalid format',\n    comment: 'The phone number format is invalid.',\n  },\n  {\n    key: 'clarify',\n    label: 'Needs clarification',\n    comment: 'Please confirm the correct phone number before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst COUNTRY_FIELD_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing selection',\n    comment: 'The country selection is missing.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match documents',\n    comment: 'The selected country does not match the supporting documents.',\n  },\n  {\n    key: 'clarify',\n    label: 'Needs clarification',\n    comment: 'Please confirm the correct country selection before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst VAT_MODE_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'mismatch',\n    label: 'Does not match documents',\n    comment: 'The VAT setup does not match the supporting documents.',\n  },\n  {\n    key: 'clarify',\n    label: 'Needs clarification',\n    comment: 'Please clarify the VAT registration status before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst VAT_NUMBER_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing VAT number',\n    comment: 'The VAT number is missing.',\n  },\n  {\n    key: 'invalid',\n    label: 'Invalid format',\n    comment: 'The VAT number format appears invalid.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match documents',\n    comment: 'The VAT number does not match the supporting documents.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst BANK_DETAIL_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing or incomplete',\n    comment: 'The banking detail is missing or incomplete.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match evidence',\n    comment: 'The banking detail does not match the supporting bank evidence.',\n  },\n  {\n    key: 'clarify',\n    label: 'Needs clarification',\n    comment: 'Please confirm the banking detail before review can continue.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst BANK_ACCOUNT_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing or incomplete',\n    comment: 'The account detail is missing or incomplete.',\n  },\n  {\n    key: 'invalid',\n    label: 'Invalid format',\n    comment: 'The account detail format appears invalid.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Does not match evidence',\n    comment: 'The account detail does not match the supporting bank evidence.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst DEFAULT_DOCUMENT_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing document',\n    comment: 'The required document is missing.',\n  },\n  {\n    key: 'unreadable',\n    label: 'Unreadable file',\n    comment: 'The uploaded document is unreadable or incomplete.',\n  },\n  {\n    key: 'wrong-document',\n    label: 'Wrong document',\n    comment: 'The uploaded file does not match the requested document type.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Details do not match',\n    comment: 'The uploaded document details do not match the application information.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst PASSPORT_DOCUMENT_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing passport',\n    comment: 'The passport document is missing.',\n  },\n  {\n    key: 'unreadable',\n    label: 'Unreadable photo page',\n    comment: 'The passport photo page is unreadable or incomplete.',\n  },\n  {\n    key: 'expired',\n    label: 'Expired or invalid',\n    comment: 'The passport appears expired or otherwise invalid for verification.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Details do not match',\n    comment: 'The passport details do not match the application information.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst CERTIFICATE_DOCUMENT_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing certificate',\n    comment: 'The certificate is missing.',\n  },\n  {\n    key: 'unreadable',\n    label: 'Unreadable file',\n    comment: 'The certificate is unreadable or incomplete.',\n  },\n  {\n    key: 'invalid',\n    label: 'Invalid or outdated',\n    comment: 'The certificate appears invalid or outdated for review.',\n  },\n  {\n    key: 'mismatch',\n    label: 'Details do not match',\n    comment: 'The certificate details do not match the application information.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nconst OTHER_DOCUMENT_ISSUE_OPTIONS: OnboardingReviewIssueOption[] = [\n  {\n    key: 'missing',\n    label: 'Missing supporting file',\n    comment: 'The requested supporting evidence is missing.',\n  },\n  {\n    key: 'unreadable',\n    label: 'Unreadable file',\n    comment: 'The supporting evidence is unreadable or incomplete.',\n  },\n  {\n    key: 'insufficient',\n    label: 'Insufficient evidence',\n    comment: 'The supporting evidence is insufficient for review.',\n  },\n  {\n    key: 'wrong-document',\n    label: 'Unrelated document',\n    comment: 'The uploaded file does not provide the requested supporting evidence.',\n  },\n  OTHER_ISSUE_OPTION,\n];\n\nexport function onboardingFieldIssueOptions(fieldKey: string): OnboardingReviewIssueOption[] {\n  switch (fieldKey) {\n    case 'organizationName':\n    case 'contactName':\n      return NAME_FIELD_ISSUE_OPTIONS;\n    case 'contactEmail':\n      return EMAIL_FIELD_ISSUE_OPTIONS;\n    case 'contactPhone':\n      return PHONE_FIELD_ISSUE_OPTIONS;\n    case 'countryCode':\n      return COUNTRY_FIELD_ISSUE_OPTIONS;\n    case 'vatMode':\n      return VAT_MODE_ISSUE_OPTIONS;\n    case 'vatNumber':\n      return VAT_NUMBER_ISSUE_OPTIONS;\n    case 'bankName':\n    case 'accountHolderName':\n      return BANK_DETAIL_ISSUE_OPTIONS;\n    case 'sortCode':\n    case 'accountNumber':\n      return BANK_ACCOUNT_ISSUE_OPTIONS;\n    default:\n      return DEFAULT_FIELD_ISSUE_OPTIONS;\n  }\n}\n\nexport function onboardingDocumentIssueOptions(documentType: OnboardingDocumentType): OnboardingReviewIssueOption[] {\n  switch (documentType) {\n    case 'PASSPORT':\n      return PASSPORT_DOCUMENT_ISSUE_OPTIONS;\n    case 'CERTIFICATE_OF_INCORPORATION':\n    case 'INDUSTRY_CERTIFICATE':\n      return CERTIFICATE_DOCUMENT_ISSUE_OPTIONS;\n    case 'OTHER':\n      return OTHER_DOCUMENT_ISSUE_OPTIONS;\n    default:\n      return DEFAULT_DOCUMENT_ISSUE_OPTIONS;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["INDIVIDUAL_REQUIRED_DOCUMENTS","COMPANY_BASE_REQUIRED_DOCUMENTS","UK_COMPANY_REQUIRED_DOCUMENTS","CHINA_COMPANY_REQUIRED_DOCUMENTS"],"mappings":"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"}