@rolatech/angular-onboarding 20.3.0-beta.2 → 20.3.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DD-5SdjA.mjs +708 -0
  2. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DD-5SdjA.mjs.map +1 -0
  3. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs +313 -0
  4. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs.map +1 -0
  5. package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs +446 -0
  6. package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs.map +1 -0
  7. package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs +141 -0
  8. package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs.map +1 -0
  9. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs +453 -0
  10. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs.map +1 -0
  11. package/fesm2022/{rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs → rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs} +27 -40
  12. package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs.map +1 -0
  13. package/fesm2022/{rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs → rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs} +31 -29
  14. package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs.map +1 -0
  15. package/fesm2022/{rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs → rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs} +79 -6
  16. package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs.map +1 -0
  17. package/fesm2022/rolatech-angular-onboarding.mjs +2252 -234
  18. package/fesm2022/rolatech-angular-onboarding.mjs.map +1 -1
  19. package/package.json +1 -1
  20. package/types/rolatech-angular-onboarding.d.ts +219 -12
  21. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs +0 -224
  22. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs.map +0 -1
  23. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs +0 -206
  24. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs.map +0 -1
  25. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-review-page-BERcLBeQ.mjs +0 -419
  26. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-review-page-BERcLBeQ.mjs.map +0 -1
  27. package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs +0 -133
  28. package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs.map +0 -1
  29. package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs +0 -132
  30. package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs.map +0 -1
  31. package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs +0 -122
  32. package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs.map +0 -1
  33. package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs +0 -108
  34. package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs.map +0 -1
  35. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs +0 -182
  36. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs.map +0 -1
  37. package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs.map +0 -1
  38. package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs.map +0 -1
  39. package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs +0 -55
  40. package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs.map +0 -1
  41. package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs.map +0 -1
@@ -1 +1 @@
1
- {"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/store/agent-onboarding.facade.ts","../../../../packages/angular-onboarding/src/lib/pages/agent-onboarding/agent-onboarding-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-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/rolatech-angular-onboarding.ts"],"sourcesContent":["import { CanActivateFn } from '@angular/router';\n\nexport const applicationIdGuard: CanActivateFn = (route) => Boolean(route.paramMap.get('applicationId'));\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport {\n ConfirmOnboardingDocumentUploadRequest,\n CreateOnboardingApplicationRequest,\n OnboardingApplicantService,\n OnboardingApplicationDetailResponse,\n OnboardingApplicationResponse,\n OnboardingDocumentResponse,\n OnboardingDocumentType,\n OnboardingIssueResponse,\n OnboardingStatus,\n RequestOnboardingUploadUrlRequest,\n SaveOnboardingBankingRequest,\n SaveOnboardingFinancialRequest,\n SaveOnboardingProfileRequest,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\nimport { ApplyRouteStep, ApplyStepCompletion, RequiredDocumentSpec } from '../models/onboarding-ui.models';\nimport { HttpClient } from '@angular/common/http';\n\nconst INDIVIDUAL_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n { type: 'PASSPORT', label: 'Passport' },\n { type: 'PROOF_OF_ADDRESS', label: 'Proof of address' },\n];\n\nconst COMPANY_REQUIRED_DOCUMENTS: RequiredDocumentSpec[] = [\n { type: 'PASSPORT', label: 'Passport' },\n { type: 'CERTIFICATE_OF_INCORPORATION', label: 'Certificate of incorporation' },\n { type: 'INDUSTRY_CERTIFICATE', label: 'Industry certificate' },\n];\n\n@Injectable()\nexport class AgentApplyFacade {\n private readonly onboardingService = inject(OnboardingApplicantService);\n private readonly fb = inject(FormBuilder);\n private http = inject(HttpClient);\n\n readonly loading = signal(false);\n readonly saving = signal(false);\n readonly submitting = signal(false);\n readonly error = signal<string | null>(null);\n\n readonly application = signal<OnboardingApplicationResponse | null>(null);\n readonly detail = signal<OnboardingApplicationDetailResponse | null>(null);\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\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 requiredDocuments = computed<RequiredDocumentSpec[]>(() => {\n const applicantType = this.detail()?.applicantType ?? this.application()?.applicantType;\n return applicantType === 'COMPANY' ? COMPANY_REQUIRED_DOCUMENTS : INDIVIDUAL_REQUIRED_DOCUMENTS;\n });\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 };\n }\n\n if (detail.progress) {\n return {\n profile: detail.progress.profileCompleted,\n qualification: detail.progress.qualificationCompleted,\n financial: detail.progress.financialCompleted,\n banking: detail.progress.bankingCompleted,\n };\n }\n\n return {\n profile: this.isProfileComplete(detail),\n qualification: this.isQualificationComplete(detail),\n financial: this.isFinancialComplete(detail),\n banking: this.isBankingComplete(detail),\n };\n });\n\n readonly profileForm = this.fb.nonNullable.group({\n organizationName: ['', [Validators.required, 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: [''],\n });\n\n readonly bankingForm = this.fb.nonNullable.group({\n bankName: ['', [Validators.required, Validators.maxLength(255)]],\n accountHolderName: ['', [Validators.required, Validators.maxLength(255)]],\n sortCode: ['', [Validators.required, Validators.maxLength(16)]],\n accountNumber: ['', [Validators.required, Validators.maxLength(32)]],\n });\n\n async start(request: CreateOnboardingApplicationRequest): Promise<OnboardingApplicationResponse | null> {\n this.loading.set(true);\n this.error.set(null);\n\n try {\n const response = await firstValueFrom(this.onboardingService.createApplication(request));\n this.application.set(response);\n this.detail.set(null);\n this.loadedApplicationId.set(null);\n return response;\n } catch (error) {\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 } catch (error) {\n this.error.set(this.toErrorMessage(error));\n } finally {\n this.loading.set(false);\n }\n }\n\n async saveProfile(): 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 payload: SaveOnboardingProfileRequest = this.profileForm.getRawValue();\n const response = await firstValueFrom(this.onboardingService.saveProfile(applicationId, payload));\n this.application.set(response);\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 async saveFinancial(): Promise<boolean> {\n const applicationId = this.applicationId();\n\n if (!applicationId) {\n return false;\n }\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 = {\n vatMode: rawValue.vatMode as SaveOnboardingFinancialRequest['vatMode'],\n vatNumber: rawValue.vatNumber || undefined,\n };\n const response = await firstValueFrom(this.onboardingService.saveFinancial(applicationId, payload));\n this.application.set(response);\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 async saveBanking(): Promise<boolean> {\n const applicationId = this.applicationId();\n\n if (!applicationId) {\n return false;\n }\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 payload: SaveOnboardingBankingRequest = this.bankingForm.getRawValue();\n const response = await firstValueFrom(this.onboardingService.saveBanking(applicationId, payload));\n this.application.set(response);\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 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\n try {\n const uploadRequest: RequestOnboardingUploadUrlRequest = {\n documentType,\n filename: file.name,\n contentType: file.type,\n fileSize: file.size,\n replacedDocumentId: replacedDocumentId ?? undefined,\n };\n\n const uploadUrl = await firstValueFrom(this.onboardingService.requestUploadUrl(applicationId, uploadRequest));\n\n // const uploadResponse1 = await fetch(uploadUrl.uploadUrl, {\n // method: 'PUT',\n // body: file,\n // headers: {\n // 'Content-Type': file.type || 'application/octet-stream',\n // },\n // mode: 'cors',\n // });\n\n // const uploadResponse = await firstValueFrom(\n // this.http.put(uploadUrl.uploadUrl, file, {\n // headers: {\n // 'Content-Type': file.type || 'application/octet-stream',\n // },\n // }),\n // );\n // console.log(uploadResponse);\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: 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 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 submit(): Promise<boolean> {\n const applicationId = this.applicationId();\n\n if (!applicationId) {\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 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.issues().find((item) => item.documentType === documentType)?.comment ?? null;\n }\n\n canAccessStep(step: ApplyRouteStep): boolean {\n const completion = this.completion();\n\n switch (step) {\n case 'profile':\n return true;\n case 'qualification':\n return completion.profile;\n case 'financial':\n return completion.profile && completion.qualification;\n case 'banking':\n return completion.profile && completion.qualification && completion.financial;\n case 'review':\n return completion.profile && completion.qualification && completion.financial && completion.banking;\n case 'submitted': {\n const status = this.status();\n return status === 'SUBMITTED' || status === 'IN_REVIEW' || status === 'APPROVED' || status === 'FAILED';\n }\n default:\n return false;\n }\n }\n\n firstIncompleteStep(): Exclude<ApplyRouteStep, 'submitted'> {\n const completion = this.completion();\n\n if (!completion.profile) {\n return 'profile';\n }\n\n if (!completion.qualification) {\n return 'qualification';\n }\n\n if (!completion.financial) {\n return 'financial';\n }\n\n if (!completion.banking) {\n return 'banking';\n }\n\n return 'review';\n }\n\n private patchForms(detail: OnboardingApplicationDetailResponse): void {\n this.profileForm.patchValue({\n organizationName: detail.organizationName ?? '',\n contactName: detail.contactName ?? '',\n contactEmail: detail.contactEmail ?? '',\n contactPhone: detail.contactPhone ?? '',\n countryCode: detail.countryCode ?? 'GB',\n });\n\n this.financialForm.patchValue({\n vatMode: detail.vatMode ?? 'NON_VAT_REGISTERED',\n vatNumber: detail.vatNumber ?? '',\n });\n\n this.bankingForm.patchValue({\n bankName: detail.bankName ?? '',\n accountHolderName: detail.accountHolderName ?? '',\n sortCode: detail.sortCode ?? '',\n accountNumber: detail.accountNumber ?? '',\n });\n }\n\n private isProfileComplete(detail: OnboardingApplicationDetailResponse): boolean {\n return Boolean(\n detail.organizationName && detail.contactName && detail.contactEmail && detail.contactPhone && detail.countryCode,\n );\n }\n\n private isQualificationComplete(detail: OnboardingApplicationDetailResponse): boolean {\n const uploadedTypes = new Set(detail.documents.map((item) => item.documentType));\n const required = detail.applicantType === 'COMPANY' ? COMPANY_REQUIRED_DOCUMENTS : INDIVIDUAL_REQUIRED_DOCUMENTS;\n return required.every((item) => uploadedTypes.has(item.type));\n }\n\n private isFinancialComplete(detail: OnboardingApplicationDetailResponse): boolean {\n if (!detail.vatMode) {\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 return Boolean(detail.bankName && detail.accountHolderName && detail.sortCode && detail.accountNumber);\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 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 = childRoute.parent?.paramMap.get('applicationId') ?? childRoute.paramMap.get('applicationId');\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, 'submitted'>): 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_ROUTES: Routes = [\n {\n path: '',\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: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'profile',\n },\n {\n path: 'profile',\n data: {\n requiredStep: 'profile',\n },\n loadComponent: () => import('./agent-apply-profile-page').then((m) => m.AgentApplyProfilePage),\n },\n {\n path: 'qualification',\n data: {\n requiredStep: 'qualification',\n },\n loadComponent: () => import('./agent-apply-qualification-page').then((m) => m.AgentApplyQualificationPage),\n },\n {\n path: 'financial',\n data: {\n requiredStep: 'financial',\n },\n loadComponent: () => import('./agent-apply-financial-page').then((m) => m.AgentApplyFinancialPage),\n },\n {\n path: 'banking',\n data: {\n requiredStep: 'banking',\n },\n loadComponent: () => import('./agent-apply-banking-page').then((m) => m.AgentApplyBankingPage),\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 data: {\n requiredStep: 'submitted',\n },\n loadComponent: () => import('./agent-apply-submitted-page').then((m) => m.AgentApplySubmittedPage),\n },\n ],\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()\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 'Content-Type': file.type,\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_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: [\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 },\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',\n canActivate: [applicationIdGuard],\n loadComponent: () => import('./admin-onboarding-detail-page').then((m) => m.AdminOnboardingDetailPage),\n },\n {\n path: ':applicationId/review',\n canActivate: [applicationIdGuard],\n loadComponent: () => import('./admin-onboarding-review-page').then((m) => m.AdminOnboardingReviewPage),\n },\n];\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport {\n OnboardingAdminListQuery,\n OnboardingAdminService,\n OnboardingApplicationResponse,\n OnboardingStatus,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\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<OnboardingAdminListQuery>({\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<OnboardingAdminListQuery>): 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 items = await firstValueFrom(this.onboardingAdminService.list(payload));\n this.items.set(items);\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 (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()\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, 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';\n\n@Injectable()\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 issueDrafts = signal<NeedMoreInfoOnboardingApplicationRequest['issues']>([]);\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 addFieldIssue(fieldKey: string, comment: string): void {\n this.issueDrafts.update((items) => [\n ...items,\n {\n issueType: 'FIELD' as OnboardingIssueType,\n fieldKey,\n comment,\n },\n ]);\n }\n\n addDocumentIssue(documentType: OnboardingDocumentType, comment: string): void {\n this.issueDrafts.update((items) => [\n ...items,\n {\n issueType: 'DOCUMENT' as OnboardingIssueType,\n documentType,\n comment,\n },\n ]);\n }\n\n removeIssue(index: number): void {\n this.issueDrafts.update((items) => items.filter((_, currentIndex) => currentIndex !== index));\n }\n\n setComment(value: string): void {\n this.reviewComment.set(value);\n }\n\n async startReview(applicationId: string): Promise<boolean> {\n return this.runAction(async () => {\n const detail = await firstValueFrom(this.onboardingAdminService.startReview(applicationId));\n this.detail.set(detail);\n });\n }\n\n async requestMoreInfo(applicationId: string): Promise<boolean> {\n const payload: NeedMoreInfoOnboardingApplicationRequest = {\n comment: this.reviewComment(),\n issues: this.issueDrafts(),\n };\n\n return this.runAction(async () => {\n const detail = await firstValueFrom(this.onboardingAdminService.needMoreInfo(applicationId, payload));\n this.detail.set(detail);\n this.reviewComment.set('');\n this.issueDrafts.set([]);\n });\n }\n\n async approve(applicationId: string): Promise<boolean> {\n const payload: ApproveOnboardingApplicationRequest = {\n comment: this.reviewComment(),\n };\n\n return this.runAction(async () => {\n const detail = await firstValueFrom(this.onboardingAdminService.approve(applicationId, payload));\n this.detail.set(detail);\n this.reviewComment.set('');\n });\n }\n\n async fail(applicationId: string): Promise<boolean> {\n const payload: FailOnboardingApplicationRequest = {\n comment: this.reviewComment(),\n };\n\n return this.runAction(async () => {\n const detail = await firstValueFrom(this.onboardingAdminService.fail(applicationId, payload));\n this.detail.set(detail);\n this.reviewComment.set('');\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","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 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 <header class=\"relative overflow-hidden rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm sm:p-8\">\n <div class=\"pointer-events-none absolute -right-10 -top-10 h-36 w-36 rounded-full bg-(--rt-10-percent-layer) blur-2xl\"></div>\n <div class=\"pointer-events-none absolute -bottom-16 left-12 h-36 w-36 rounded-full bg-(--rt-10-percent-layer) blur-2xl\"></div>\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-emerald-200 bg-emerald-50 text-emerald-700';\n case 'FAILED':\n return 'border-rose-200 bg-rose-50 text-rose-700';\n case 'NEED_MORE_INFO':\n return 'border-amber-200 bg-amber-50 text-amber-700';\n case 'SUBMITTED':\n case 'IN_REVIEW':\n return 'border-sky-200 bg-sky-50 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-6\" 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, 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 }\n </div>\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()\"\n [class.opacity-60]=\"busy()\"\n >\n {{ document() ? 'Replace' : 'Upload' }}\n <input\n type=\"file\"\n class=\"hidden\"\n [accept]=\"acceptedTypes()\"\n [disabled]=\"busy()\"\n (change)=\"onFileChange($event)\"\n />\n </label>\n </div>\n\n @if (comment()) {\n <div class=\"mt-3 rounded-xl border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-800\">\n {{ comment() }}\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 comment = input<string | null>(null);\n readonly busy = input(false);\n readonly acceptedTypes = input('image/*,application/pdf');\n\n readonly fileSelected = output<{ documentType: OnboardingDocumentType; file: File; replacedDocumentId?: string }>();\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, 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-amber-200 bg-amber-50 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 class=\"rounded-full border border-emerald-200 bg-emerald-50 px-2 py-0.5 text-xs font-semibold text-emerald-700\">\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"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/store/agent-onboarding.facade.ts","../../../../packages/angular-onboarding/src/lib/pages/agent-onboarding/agent-onboarding-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) => Boolean(route.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 {\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\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()\nexport class AgentApplyFacade {\n private readonly onboardingService = inject(OnboardingApplicantService);\n private readonly fb = inject(FormBuilder);\n private readonly destroyRef = inject(DestroyRef);\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 companyCountry = computed(() =>\n (this.detail()?.companyCountry ?? this.application()?.companyCountry ?? 'UK').toUpperCase(),\n );\n\n readonly isCompany = computed(() => this.applicantType() === 'COMPANY');\n readonly isIndividual = computed(() => this.applicantType() === 'INDIVIDUAL');\n readonly isUkCompany = computed(() => this.isCompany() && this.companyCountry() === 'UK');\n readonly isChinaCompany = computed(() => this.isCompany() && this.companyCountry() === '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 = detail.progress.qualificationCompleted;\n const financial = detail.progress.financialCompleted;\n const banking = 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.isQualificationComplete(detail);\n const financial = this.isFinancialComplete(detail);\n const banking = 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.required, Validators.maxLength(255)]],\n accountHolderName: ['', [Validators.required, Validators.maxLength(255), this.accountHolderNameValidator()]],\n sortCode: ['', [Validators.required, Validators.pattern(SORT_CODE_PATTERN)]],\n accountNumber: ['', [Validators.required, Validators.pattern(ACCOUNT_NUMBER_PATTERN)]],\n });\n\n constructor() {\n this.setupAutosave();\n\n effect(() => {\n this.applicantType();\n this.companyCountry();\n this.syncProfileValidators();\n this.syncFinancialRules();\n this.bankingForm.controls.accountHolderName.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n async start(request: CreateOnboardingApplicationRequest): Promise<OnboardingApplicationResponse | null> {\n this.loading.set(true);\n this.error.set(null);\n\n try {\n const response = await firstValueFrom(this.onboardingService.createApplication(request));\n this.application.set(response);\n this.detail.set(null);\n this.loadedApplicationId.set(null);\n return response;\n } catch (error) {\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 } 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.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.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 const bankingSaved = await this.saveBanking(false);\n\n if (!bankingSaved) {\n return false;\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 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 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.companyCountry() === 'CN' ? 'CN' : 'GB';\n }\n\n private onlyDigits(value: string | null | undefined): string {\n return (value ?? '').replace(/\\D/g, '');\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 = childRoute.parent?.paramMap.get('applicationId') ?? childRoute.paramMap.get('applicationId');\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_ROUTES: Routes = [\n {\n path: '',\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: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'form',\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 },\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()\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_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: [\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 },\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 pathMatch: 'full',\n redirectTo: ':applicationId',\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 OnboardingAdminListQuery,\n OnboardingAdminService,\n OnboardingApplicationResponse,\n OnboardingStatus,\n} from '@rolatech/angular-services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\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<OnboardingAdminListQuery>({\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<OnboardingAdminListQuery>): 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 items = await firstValueFrom(this.onboardingAdminService.list(payload));\n this.items.set(items);\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()\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 { type: 'CERTIFICATE_OF_INCORPORATION', label: 'Certificate of incorporation', helperText: 'Required for company verification.' },\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()\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.companyCountry === 'CN') {\n return CHINA_COMPANY_REQUIRED_DOCUMENTS;\n }\n\n if (detail.companyCountry === 'UK') {\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(\n documentType: OnboardingDocumentType,\n draft: OnboardingReviewIssueDraft | string | null,\n ): 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 {{ uploadedRequiredCount() }}/{{ documentSpecs().length }} ready\n </span>\n </div>\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 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 {{ vatRateLabel() }}.\n </p>\n </div>\n\n @if (isIndividual()) {\n <div class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-4 text-sm text-emerald-900\">\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)\">{{ vatNumberValue() || 'Pending manual verification' }}</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 formControlName=\"vatNumber\" class=\"h-11 rounded-xl border border-(--rt-border-color) px-3\" [readonly]=\"isFieldLocked('vatNumber')\" />\n </label>\n }\n </form>\n }\n\n @if (fieldComment('vatMode')) {\n <div class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-800\">\n {{ fieldComment('vatMode') }}\n </div>\n }\n\n @if (fieldComment('vatNumber')) {\n <div class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-800\">\n {{ fieldComment('vatNumber') }}\n </div>\n }\n\n @if (currentVatMode() === 'MANUAL_REVIEW_REQUIRED') {\n <div class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-amber-900\">\n Manual verification is required because a VAT number is unavailable. This keeps the application inside the company review flow.\n </div>\n }\n\n @if (companyCountry() === '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 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 companyCountry = 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=\"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 <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 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 case 'companyCountry':\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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"}