@incodetech/prizma-core-screens 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -0
- package/dist/CaptureOverlay.css +55 -0
- package/dist/CaptureOverlay.d.ts +34 -0
- package/dist/CaptureOverlay.js +32 -0
- package/dist/CaptureScreen.d.ts +51 -0
- package/dist/CaptureScreen.js +30 -0
- package/dist/CurpConfirmScreen.d.ts +33 -0
- package/dist/CurpConfirmScreen.js +29 -0
- package/dist/CurpEnterScreen.d.ts +51 -0
- package/dist/CurpEnterScreen.js +77 -0
- package/dist/CurpGenerateScreen.d.ts +47 -0
- package/dist/CurpGenerateScreen.js +57 -0
- package/dist/CurpLayout.css +92 -0
- package/dist/CurpProcessingScreen.d.ts +32 -0
- package/dist/CurpProcessingScreen.js +29 -0
- package/dist/CurpResultScreen.d.ts +37 -0
- package/dist/CurpResultScreen.js +36 -0
- package/dist/CurpStrings.d.ts +170 -0
- package/dist/CurpStrings.js +16 -0
- package/dist/DataSharingConsentConsentScreen.d.ts +73 -0
- package/dist/DataSharingConsentConsentScreen.js +120 -0
- package/dist/DataSharingConsentLayout.css +78 -0
- package/dist/DataSharingConsentStrings.d.ts +96 -0
- package/dist/DataSharingConsentStrings.js +38 -0
- package/dist/DemoScreensEndScreen.d.ts +33 -0
- package/dist/DemoScreensEndScreen.js +27 -0
- package/dist/DemoScreensStrings.d.ts +11 -0
- package/dist/DemoScreensStrings.js +19 -0
- package/dist/DocumentCaptureCaptureScreen.d.ts +53 -0
- package/dist/DocumentCaptureCaptureScreen.js +51 -0
- package/dist/DocumentCaptureCommonIssuesScreen.d.ts +32 -0
- package/dist/DocumentCaptureCommonIssuesScreen.js +45 -0
- package/dist/DocumentCaptureConfirmImageScreen.d.ts +38 -0
- package/dist/DocumentCaptureConfirmImageScreen.js +34 -0
- package/dist/DocumentCaptureConfirmUploadScreen.d.ts +43 -0
- package/dist/DocumentCaptureConfirmUploadScreen.js +29 -0
- package/dist/DocumentCaptureGenericErrorScreen.d.ts +36 -0
- package/dist/DocumentCaptureGenericErrorScreen.js +30 -0
- package/dist/DocumentCaptureIllustration.d.ts +45 -0
- package/dist/DocumentCaptureIllustration.js +7 -0
- package/dist/DocumentCaptureLayout.css +226 -0
- package/dist/DocumentCaptureMethodSelectionScreen.d.ts +45 -0
- package/dist/DocumentCaptureMethodSelectionScreen.js +70 -0
- package/dist/DocumentCaptureNextPageScreen.d.ts +33 -0
- package/dist/DocumentCaptureNextPageScreen.js +28 -0
- package/dist/DocumentCaptureNoConnectionScreen.d.ts +28 -0
- package/dist/DocumentCaptureNoConnectionScreen.js +29 -0
- package/dist/DocumentCaptureStrings.d.ts +158 -0
- package/dist/DocumentCaptureStrings.js +21 -0
- package/dist/DocumentCaptureTutorialScreen.d.ts +36 -0
- package/dist/DocumentCaptureTutorialScreen.js +27 -0
- package/dist/EkybAddressDetailsScreen.d.ts +61 -0
- package/dist/EkybAddressDetailsScreen.js +63 -0
- package/dist/EkybBusinessDetailsScreen.d.ts +55 -0
- package/dist/EkybBusinessDetailsScreen.js +57 -0
- package/dist/EkybCountryScreen.d.ts +52 -0
- package/dist/EkybCountryScreen.js +58 -0
- package/dist/EkybErrorScreen.d.ts +30 -0
- package/dist/EkybErrorScreen.js +24 -0
- package/dist/EkybOwnersScreen.d.ts +73 -0
- package/dist/EkybOwnersScreen.js +87 -0
- package/dist/EkybProcessingScreen.d.ts +28 -0
- package/dist/EkybProcessingScreen.js +22 -0
- package/dist/EkybStrings.d.ts +200 -0
- package/dist/EkybStrings.js +27 -0
- package/dist/EkybSuccessScreen.d.ts +28 -0
- package/dist/EkybSuccessScreen.js +22 -0
- package/dist/EkycDetailsScreen.d.ts +65 -0
- package/dist/EkycDetailsScreen.js +81 -0
- package/dist/EkycErrorScreen.d.ts +32 -0
- package/dist/EkycErrorScreen.js +26 -0
- package/dist/EkycLayout.css +39 -0
- package/dist/EkycLicenseScreen.d.ts +21 -0
- package/dist/EkycLicenseScreen.js +68 -0
- package/dist/EkycProcessingScreen.d.ts +26 -0
- package/dist/EkycProcessingScreen.js +20 -0
- package/dist/EkycStrings.d.ts +112 -0
- package/dist/EkycStrings.js +34 -0
- package/dist/EkycSuccessScreen.d.ts +29 -0
- package/dist/EkycSuccessScreen.js +23 -0
- package/dist/ElectronicSignatureDrawScreen.d.ts +57 -0
- package/dist/ElectronicSignatureDrawScreen.js +53 -0
- package/dist/ElectronicSignatureErrorScreen.d.ts +31 -0
- package/dist/ElectronicSignatureErrorScreen.js +25 -0
- package/dist/ElectronicSignatureLayout.css +80 -0
- package/dist/ElectronicSignatureReviewScreen.d.ts +51 -0
- package/dist/ElectronicSignatureReviewScreen.js +36 -0
- package/dist/ElectronicSignatureStrings.d.ts +50 -0
- package/dist/ElectronicSignatureStrings.js +12 -0
- package/dist/ElectronicSignatureSuccessScreen.d.ts +30 -0
- package/dist/ElectronicSignatureSuccessScreen.js +24 -0
- package/dist/EmailInputErrorScreen.d.ts +34 -0
- package/dist/EmailInputErrorScreen.js +28 -0
- package/dist/EmailInputOtpScreen.d.ts +56 -0
- package/dist/EmailInputOtpScreen.js +82 -0
- package/dist/EmailInputProcessingScreen.d.ts +29 -0
- package/dist/EmailInputProcessingScreen.js +23 -0
- package/dist/EmailInputStrings.d.ts +130 -0
- package/dist/EmailInputStrings.js +19 -0
- package/dist/EmailInputSuccessScreen.d.ts +37 -0
- package/dist/EmailInputSuccessScreen.js +31 -0
- package/dist/EmailInputVerifyScreen.d.ts +46 -0
- package/dist/EmailInputVerifyScreen.js +55 -0
- package/dist/ErrorScreensScreen.d.ts +62 -0
- package/dist/ErrorScreensScreen.js +71 -0
- package/dist/ErrorScreensStrings.d.ts +31 -0
- package/dist/ErrorScreensStrings.js +28 -0
- package/dist/FaceCaptureCapturingScreen.d.ts +32 -0
- package/dist/FaceCaptureCapturingScreen.js +53 -0
- package/dist/FaceCaptureLayout.css +18 -0
- package/dist/FaceCaptureLoadingScreen.d.ts +32 -0
- package/dist/FaceCaptureLoadingScreen.js +30 -0
- package/dist/FaceCaptureManualCaptureScreen.d.ts +32 -0
- package/dist/FaceCaptureManualCaptureScreen.js +27 -0
- package/dist/FaceCaptureNoConnectionScreen.d.ts +30 -0
- package/dist/FaceCaptureNoConnectionScreen.js +31 -0
- package/dist/FaceCaptureResultErrorScreen.d.ts +40 -0
- package/dist/FaceCaptureResultErrorScreen.js +32 -0
- package/dist/FaceCaptureResultSuccessScreen.d.ts +25 -0
- package/dist/FaceCaptureResultSuccessScreen.js +27 -0
- package/dist/FaceCaptureStrings.d.ts +62 -0
- package/dist/FaceCaptureStrings.js +14 -0
- package/dist/FaceCaptureTutorialScreen.d.ts +29 -0
- package/dist/FaceCaptureTutorialScreen.js +20 -0
- package/dist/FaceMatchComparisonCompactScreen.d.ts +26 -0
- package/dist/FaceMatchComparisonCompactScreen.js +24 -0
- package/dist/FaceMatchComparisonScreen.d.ts +80 -0
- package/dist/FaceMatchComparisonScreen.js +81 -0
- package/dist/FaceMatchLayout.css +264 -0
- package/dist/FaceMatchResultScreen.d.ts +50 -0
- package/dist/FaceMatchResultScreen.js +52 -0
- package/dist/FaceMatchStrings.d.ts +66 -0
- package/dist/FaceMatchStrings.js +21 -0
- package/dist/FormScreen.css +78 -0
- package/dist/FormScreen.d.ts +101 -0
- package/dist/FormScreen.js +36 -0
- package/dist/FormsChoiceScreen.d.ts +66 -0
- package/dist/FormsChoiceScreen.js +63 -0
- package/dist/FormsErrorScreen.d.ts +28 -0
- package/dist/FormsErrorScreen.js +22 -0
- package/dist/FormsFieldScreen.d.ts +66 -0
- package/dist/FormsFieldScreen.js +85 -0
- package/dist/FormsLayout.css +45 -0
- package/dist/FormsLongFormScreen.d.ts +70 -0
- package/dist/FormsLongFormScreen.js +149 -0
- package/dist/FormsStrings.d.ts +181 -0
- package/dist/FormsStrings.js +36 -0
- package/dist/FormsSuccessScreen.d.ts +32 -0
- package/dist/FormsSuccessScreen.js +26 -0
- package/dist/GeolocationBrowserStepsScreen.d.ts +56 -0
- package/dist/GeolocationBrowserStepsScreen.js +95 -0
- package/dist/GeolocationErrorScreen.d.ts +43 -0
- package/dist/GeolocationErrorScreen.js +56 -0
- package/dist/GeolocationIntroScreen.d.ts +49 -0
- package/dist/GeolocationIntroScreen.js +38 -0
- package/dist/GeolocationPermissionScreen.d.ts +38 -0
- package/dist/GeolocationPermissionScreen.js +30 -0
- package/dist/GeolocationStrings.d.ts +157 -0
- package/dist/GeolocationStrings.js +28 -0
- package/dist/IdCaptureAgeVerificationScreen.d.ts +25 -0
- package/dist/IdCaptureAgeVerificationScreen.js +38 -0
- package/dist/IdCaptureAnalyzingScreen.d.ts +41 -0
- package/dist/IdCaptureAnalyzingScreen.js +30 -0
- package/dist/IdCaptureCommonIssuesScreen.d.ts +31 -0
- package/dist/IdCaptureCommonIssuesScreen.js +49 -0
- package/dist/IdCaptureDocumentErrorScreen.d.ts +37 -0
- package/dist/IdCaptureDocumentErrorScreen.js +30 -0
- package/dist/IdCaptureDocumentSelectionScreen.d.ts +41 -0
- package/dist/IdCaptureDocumentSelectionScreen.js +49 -0
- package/dist/IdCaptureFlipScreen.d.ts +31 -0
- package/dist/IdCaptureFlipScreen.js +26 -0
- package/dist/IdCaptureHoldOnScreen.d.ts +28 -0
- package/dist/IdCaptureHoldOnScreen.js +22 -0
- package/dist/IdCaptureLayout.css +111 -0
- package/dist/IdCaptureNoConnectionScreen.d.ts +28 -0
- package/dist/IdCaptureNoConnectionScreen.js +29 -0
- package/dist/IdCapturePermissionScreen.d.ts +34 -0
- package/dist/IdCapturePermissionScreen.js +45 -0
- package/dist/IdCaptureResultScreen.d.ts +59 -0
- package/dist/IdCaptureResultScreen.js +89 -0
- package/dist/IdCaptureStageScreen.d.ts +69 -0
- package/dist/IdCaptureStageScreen.js +88 -0
- package/dist/IdCaptureStrings.d.ts +199 -0
- package/dist/IdCaptureStrings.js +15 -0
- package/dist/IdCaptureTutorialScreen.d.ts +36 -0
- package/dist/IdCaptureTutorialScreen.js +30 -0
- package/dist/ListScreen.d.ts +95 -0
- package/dist/ListScreen.js +46 -0
- package/dist/LoaderScreen.d.ts +32 -0
- package/dist/LoaderScreen.js +27 -0
- package/dist/LoadersStrings.d.ts +20 -0
- package/dist/LoadersStrings.js +16 -0
- package/dist/NfcCommonIssuesScreen.d.ts +35 -0
- package/dist/NfcCommonIssuesScreen.js +48 -0
- package/dist/NfcErrorScreen.d.ts +41 -0
- package/dist/NfcErrorScreen.js +27 -0
- package/dist/NfcLayout.css +36 -0
- package/dist/NfcProcessingScreen.d.ts +28 -0
- package/dist/NfcProcessingScreen.js +22 -0
- package/dist/NfcScanningScreen.d.ts +66 -0
- package/dist/NfcScanningScreen.js +61 -0
- package/dist/NfcSettingsScreen.d.ts +53 -0
- package/dist/NfcSettingsScreen.js +57 -0
- package/dist/NfcStrings.d.ts +112 -0
- package/dist/NfcStrings.js +7 -0
- package/dist/NfcSuccessScreen.d.ts +28 -0
- package/dist/NfcSuccessScreen.js +22 -0
- package/dist/NfcSymbolScreen.d.ts +39 -0
- package/dist/NfcSymbolScreen.js +32 -0
- package/dist/NfcTryAgainScreen.d.ts +53 -0
- package/dist/NfcTryAgainScreen.js +45 -0
- package/dist/NfcTutorialScreen.d.ts +33 -0
- package/dist/NfcTutorialScreen.js +24 -0
- package/dist/PermissionsAllowScreen.d.ts +44 -0
- package/dist/PermissionsAllowScreen.js +38 -0
- package/dist/PermissionsBrowserStepsScreen.d.ts +42 -0
- package/dist/PermissionsBrowserStepsScreen.js +86 -0
- package/dist/PermissionsRequiredScreen.d.ts +37 -0
- package/dist/PermissionsRequiredScreen.js +51 -0
- package/dist/PermissionsStrings.d.ts +70 -0
- package/dist/PermissionsStrings.js +36 -0
- package/dist/PhoneInputErrorScreen.d.ts +37 -0
- package/dist/PhoneInputErrorScreen.js +47 -0
- package/dist/PhoneInputLayout.css +61 -0
- package/dist/PhoneInputOtpScreen.d.ts +37 -0
- package/dist/PhoneInputOtpScreen.js +44 -0
- package/dist/PhoneInputSnaLoadingScreen.d.ts +23 -0
- package/dist/PhoneInputSnaLoadingScreen.js +17 -0
- package/dist/PhoneInputStrings.d.ts +121 -0
- package/dist/PhoneInputStrings.js +13 -0
- package/dist/PhoneInputSuccessScreen.d.ts +23 -0
- package/dist/PhoneInputSuccessScreen.js +17 -0
- package/dist/PhoneInputVerifyScreen.d.ts +41 -0
- package/dist/PhoneInputVerifyScreen.js +71 -0
- package/dist/ProcessingScreen.d.ts +42 -0
- package/dist/ProcessingScreen.js +21 -0
- package/dist/QualifiedSignatureAcceptScreen.d.ts +71 -0
- package/dist/QualifiedSignatureAcceptScreen.js +86 -0
- package/dist/QualifiedSignatureDocumentScreen.d.ts +62 -0
- package/dist/QualifiedSignatureDocumentScreen.js +56 -0
- package/dist/QualifiedSignatureLayout.css +206 -0
- package/dist/QualifiedSignatureProcessingScreen.d.ts +46 -0
- package/dist/QualifiedSignatureProcessingScreen.js +48 -0
- package/dist/QualifiedSignatureResultScreen.d.ts +65 -0
- package/dist/QualifiedSignatureResultScreen.js +76 -0
- package/dist/QualifiedSignatureReviewScreen.d.ts +49 -0
- package/dist/QualifiedSignatureReviewScreen.js +40 -0
- package/dist/QualifiedSignatureStrings.d.ts +222 -0
- package/dist/QualifiedSignatureStrings.js +25 -0
- package/dist/QualifiedSignatureUploadScreen.d.ts +42 -0
- package/dist/QualifiedSignatureUploadScreen.js +35 -0
- package/dist/ResultScreen.d.ts +93 -0
- package/dist/ResultScreen.js +37 -0
- package/dist/ReviewScreen.d.ts +81 -0
- package/dist/ReviewScreen.js +56 -0
- package/dist/ScreenLayout.css +469 -0
- package/dist/ScreenNav.css +43 -0
- package/dist/ScreenNav.d.ts +26 -0
- package/dist/ScreenNav.js +13 -0
- package/dist/ScreenShell.css +130 -0
- package/dist/ScreenShell.d.ts +45 -0
- package/dist/ScreenShell.js +22 -0
- package/dist/TutorialScreen.d.ts +70 -0
- package/dist/TutorialScreen.js +24 -0
- package/dist/VideoSelfieCameraStepsScreen.d.ts +47 -0
- package/dist/VideoSelfieCameraStepsScreen.js +56 -0
- package/dist/VideoSelfieErrorScreen.d.ts +63 -0
- package/dist/VideoSelfieErrorScreen.js +94 -0
- package/dist/VideoSelfieFlipCameraScreen.d.ts +34 -0
- package/dist/VideoSelfieFlipCameraScreen.js +38 -0
- package/dist/VideoSelfieFlipIdScreen.d.ts +34 -0
- package/dist/VideoSelfieFlipIdScreen.js +29 -0
- package/dist/VideoSelfieIdCaptureScreen.d.ts +75 -0
- package/dist/VideoSelfieIdCaptureScreen.js +86 -0
- package/dist/VideoSelfieLayout.css +259 -0
- package/dist/VideoSelfiePermissionRequiredScreen.d.ts +35 -0
- package/dist/VideoSelfiePermissionRequiredScreen.js +45 -0
- package/dist/VideoSelfiePermissionScreen.d.ts +51 -0
- package/dist/VideoSelfiePermissionScreen.js +44 -0
- package/dist/VideoSelfieProcessingScreen.d.ts +28 -0
- package/dist/VideoSelfieProcessingScreen.js +22 -0
- package/dist/VideoSelfieRetryScreen.d.ts +31 -0
- package/dist/VideoSelfieRetryScreen.js +32 -0
- package/dist/VideoSelfieSelfieCaptureScreen.d.ts +52 -0
- package/dist/VideoSelfieSelfieCaptureScreen.js +58 -0
- package/dist/VideoSelfieSpeakScreen.d.ts +64 -0
- package/dist/VideoSelfieSpeakScreen.js +95 -0
- package/dist/VideoSelfieStrings.d.ts +196 -0
- package/dist/VideoSelfieStrings.js +14 -0
- package/dist/VideoSelfieSuccessScreen.d.ts +25 -0
- package/dist/VideoSelfieSuccessScreen.js +19 -0
- package/dist/VideoSelfieTutorialScreen.d.ts +33 -0
- package/dist/VideoSelfieTutorialScreen.js +41 -0
- package/dist/ViewfinderScreen.css +107 -0
- package/dist/ViewfinderScreen.d.ts +40 -0
- package/dist/ViewfinderScreen.js +26 -0
- package/dist/WatchlistBusinessFormScreen.d.ts +61 -0
- package/dist/WatchlistBusinessFormScreen.js +85 -0
- package/dist/WatchlistBusinessProcessingScreen.d.ts +25 -0
- package/dist/WatchlistBusinessProcessingScreen.js +19 -0
- package/dist/WatchlistBusinessStrings.d.ts +95 -0
- package/dist/WatchlistBusinessStrings.js +19 -0
- package/dist/WatchlistBusinessSuccessScreen.d.ts +29 -0
- package/dist/WatchlistBusinessSuccessScreen.js +23 -0
- package/dist/flows.d.ts +216 -0
- package/dist/flows.js +516 -0
- package/dist/index.d.ts +145 -0
- package/dist/index.js +130 -0
- package/dist/styles.css +33 -0
- package/dist/types.d.ts +56 -0
- package/dist/types.js +8 -0
- package/package.json +689 -0
- package/samples/camera-surface.png +0 -0
- package/samples/document-still.png +0 -0
- package/samples/document-thumbnail.png +0 -0
- package/samples/face-match-bottom.png +0 -0
- package/samples/face-match-left.png +0 -0
- package/samples/face-match-right.png +0 -0
- package/samples/id-back-blur.png +0 -0
- package/samples/id-back-dark.png +0 -0
- package/samples/id-back-glare.png +0 -0
- package/samples/id-back.png +0 -0
- package/samples/id-front-blur.png +0 -0
- package/samples/id-front-dark.png +0 -0
- package/samples/id-front-glare.png +0 -0
- package/samples/id-front.png +0 -0
- package/samples/id-passport.png +0 -0
- package/samples/selfie-glasses.png +0 -0
- package/samples/selfie-hat.png +0 -0
- package/samples/selfie-mask.png +0 -0
- package/samples/selfie.png +0 -0
- package/samples/video-selfie-camera.png +0 -0
- package/src/CaptureOverlay.css +55 -0
- package/src/CaptureOverlay.tsx +56 -0
- package/src/CaptureScreen.tsx +121 -0
- package/src/CurpConfirmScreen.tsx +75 -0
- package/src/CurpEnterScreen.tsx +149 -0
- package/src/CurpGenerateScreen.tsx +172 -0
- package/src/CurpLayout.css +92 -0
- package/src/CurpProcessingScreen.tsx +75 -0
- package/src/CurpResultScreen.tsx +80 -0
- package/src/CurpStrings.ts +178 -0
- package/src/DataSharingConsentConsentScreen.tsx +223 -0
- package/src/DataSharingConsentLayout.css +78 -0
- package/src/DataSharingConsentStrings.ts +144 -0
- package/src/DemoScreensEndScreen.tsx +56 -0
- package/src/DemoScreensStrings.ts +31 -0
- package/src/DocumentCaptureCaptureScreen.tsx +135 -0
- package/src/DocumentCaptureCommonIssuesScreen.tsx +97 -0
- package/src/DocumentCaptureConfirmImageScreen.tsx +112 -0
- package/src/DocumentCaptureConfirmUploadScreen.tsx +113 -0
- package/src/DocumentCaptureGenericErrorScreen.tsx +82 -0
- package/src/DocumentCaptureIllustration.tsx +153 -0
- package/src/DocumentCaptureLayout.css +226 -0
- package/src/DocumentCaptureMethodSelectionScreen.tsx +151 -0
- package/src/DocumentCaptureNextPageScreen.tsx +82 -0
- package/src/DocumentCaptureNoConnectionScreen.tsx +77 -0
- package/src/DocumentCaptureStrings.ts +192 -0
- package/src/DocumentCaptureTutorialScreen.tsx +79 -0
- package/src/EkybAddressDetailsScreen.tsx +200 -0
- package/src/EkybBusinessDetailsScreen.tsx +147 -0
- package/src/EkybCountryScreen.tsx +124 -0
- package/src/EkybErrorScreen.tsx +61 -0
- package/src/EkybOwnersScreen.tsx +230 -0
- package/src/EkybProcessingScreen.tsx +57 -0
- package/src/EkybStrings.ts +239 -0
- package/src/EkybSuccessScreen.tsx +54 -0
- package/src/EkycDetailsScreen.tsx +178 -0
- package/src/EkycErrorScreen.tsx +64 -0
- package/src/EkycLayout.css +39 -0
- package/src/EkycLicenseScreen.tsx +164 -0
- package/src/EkycProcessingScreen.tsx +60 -0
- package/src/EkycStrings.ts +157 -0
- package/src/EkycSuccessScreen.tsx +63 -0
- package/src/ElectronicSignatureDrawScreen.tsx +127 -0
- package/src/ElectronicSignatureErrorScreen.tsx +74 -0
- package/src/ElectronicSignatureLayout.css +80 -0
- package/src/ElectronicSignatureReviewScreen.tsx +106 -0
- package/src/ElectronicSignatureStrings.ts +67 -0
- package/src/ElectronicSignatureSuccessScreen.tsx +67 -0
- package/src/EmailInputErrorScreen.tsx +67 -0
- package/src/EmailInputOtpScreen.tsx +169 -0
- package/src/EmailInputProcessingScreen.tsx +67 -0
- package/src/EmailInputStrings.ts +166 -0
- package/src/EmailInputSuccessScreen.tsx +72 -0
- package/src/EmailInputVerifyScreen.tsx +117 -0
- package/src/ErrorScreensScreen.tsx +149 -0
- package/src/ErrorScreensStrings.ts +66 -0
- package/src/FaceCaptureCapturingScreen.tsx +99 -0
- package/src/FaceCaptureLayout.css +18 -0
- package/src/FaceCaptureLoadingScreen.tsx +65 -0
- package/src/FaceCaptureManualCaptureScreen.tsx +94 -0
- package/src/FaceCaptureNoConnectionScreen.tsx +73 -0
- package/src/FaceCaptureResultErrorScreen.tsx +86 -0
- package/src/FaceCaptureResultSuccessScreen.tsx +49 -0
- package/src/FaceCaptureStrings.ts +92 -0
- package/src/FaceCaptureTutorialScreen.tsx +77 -0
- package/src/FaceMatchComparisonCompactScreen.tsx +51 -0
- package/src/FaceMatchComparisonScreen.tsx +201 -0
- package/src/FaceMatchLayout.css +264 -0
- package/src/FaceMatchResultScreen.tsx +117 -0
- package/src/FaceMatchStrings.ts +95 -0
- package/src/FormScreen.css +78 -0
- package/src/FormScreen.tsx +213 -0
- package/src/FormsChoiceScreen.tsx +150 -0
- package/src/FormsErrorScreen.tsx +61 -0
- package/src/FormsFieldScreen.tsx +198 -0
- package/src/FormsLayout.css +45 -0
- package/src/FormsLongFormScreen.tsx +295 -0
- package/src/FormsStrings.ts +243 -0
- package/src/FormsSuccessScreen.tsx +67 -0
- package/src/GeolocationBrowserStepsScreen.tsx +173 -0
- package/src/GeolocationErrorScreen.tsx +113 -0
- package/src/GeolocationIntroScreen.tsx +100 -0
- package/src/GeolocationPermissionScreen.tsx +88 -0
- package/src/GeolocationStrings.ts +193 -0
- package/src/IdCaptureAgeVerificationScreen.tsx +84 -0
- package/src/IdCaptureAnalyzingScreen.tsx +94 -0
- package/src/IdCaptureCommonIssuesScreen.tsx +109 -0
- package/src/IdCaptureDocumentErrorScreen.tsx +92 -0
- package/src/IdCaptureDocumentSelectionScreen.tsx +100 -0
- package/src/IdCaptureFlipScreen.tsx +66 -0
- package/src/IdCaptureHoldOnScreen.tsx +51 -0
- package/src/IdCaptureLayout.css +111 -0
- package/src/IdCaptureNoConnectionScreen.tsx +68 -0
- package/src/IdCapturePermissionScreen.tsx +102 -0
- package/src/IdCaptureResultScreen.tsx +197 -0
- package/src/IdCaptureStageScreen.tsx +241 -0
- package/src/IdCaptureStrings.ts +228 -0
- package/src/IdCaptureTutorialScreen.tsx +99 -0
- package/src/ListScreen.tsx +213 -0
- package/src/LoaderScreen.tsx +69 -0
- package/src/LoadersStrings.ts +38 -0
- package/src/NfcCommonIssuesScreen.tsx +104 -0
- package/src/NfcErrorScreen.tsx +83 -0
- package/src/NfcLayout.css +36 -0
- package/src/NfcProcessingScreen.tsx +57 -0
- package/src/NfcScanningScreen.tsx +127 -0
- package/src/NfcSettingsScreen.tsx +124 -0
- package/src/NfcStrings.ts +127 -0
- package/src/NfcSuccessScreen.tsx +56 -0
- package/src/NfcSymbolScreen.tsx +85 -0
- package/src/NfcTryAgainScreen.tsx +114 -0
- package/src/NfcTutorialScreen.tsx +76 -0
- package/src/PermissionsAllowScreen.tsx +90 -0
- package/src/PermissionsBrowserStepsScreen.tsx +158 -0
- package/src/PermissionsRequiredScreen.tsx +118 -0
- package/src/PermissionsStrings.ts +129 -0
- package/src/PhoneInputErrorScreen.tsx +104 -0
- package/src/PhoneInputLayout.css +61 -0
- package/src/PhoneInputOtpScreen.tsx +126 -0
- package/src/PhoneInputSnaLoadingScreen.tsx +61 -0
- package/src/PhoneInputStrings.ts +136 -0
- package/src/PhoneInputSuccessScreen.tsx +56 -0
- package/src/PhoneInputVerifyScreen.tsx +153 -0
- package/src/ProcessingScreen.tsx +97 -0
- package/src/QualifiedSignatureAcceptScreen.tsx +198 -0
- package/src/QualifiedSignatureDocumentScreen.tsx +124 -0
- package/src/QualifiedSignatureLayout.css +206 -0
- package/src/QualifiedSignatureProcessingScreen.tsx +112 -0
- package/src/QualifiedSignatureResultScreen.tsx +146 -0
- package/src/QualifiedSignatureReviewScreen.tsx +113 -0
- package/src/QualifiedSignatureStrings.ts +256 -0
- package/src/QualifiedSignatureUploadScreen.tsx +81 -0
- package/src/ResultScreen.tsx +211 -0
- package/src/ReviewScreen.tsx +196 -0
- package/src/ScreenLayout.css +469 -0
- package/src/ScreenNav.css +43 -0
- package/src/ScreenNav.tsx +46 -0
- package/src/ScreenShell.css +130 -0
- package/src/ScreenShell.tsx +66 -0
- package/src/TutorialScreen.tsx +166 -0
- package/src/VideoSelfieCameraStepsScreen.tsx +145 -0
- package/src/VideoSelfieErrorScreen.tsx +168 -0
- package/src/VideoSelfieFlipCameraScreen.tsx +88 -0
- package/src/VideoSelfieFlipIdScreen.tsx +74 -0
- package/src/VideoSelfieIdCaptureScreen.tsx +213 -0
- package/src/VideoSelfieLayout.css +259 -0
- package/src/VideoSelfiePermissionRequiredScreen.tsx +104 -0
- package/src/VideoSelfiePermissionScreen.tsx +102 -0
- package/src/VideoSelfieProcessingScreen.tsx +68 -0
- package/src/VideoSelfieRetryScreen.tsx +92 -0
- package/src/VideoSelfieSelfieCaptureScreen.tsx +122 -0
- package/src/VideoSelfieSpeakScreen.tsx +237 -0
- package/src/VideoSelfieStrings.ts +222 -0
- package/src/VideoSelfieSuccessScreen.tsx +64 -0
- package/src/VideoSelfieTutorialScreen.tsx +129 -0
- package/src/ViewfinderScreen.css +107 -0
- package/src/ViewfinderScreen.tsx +113 -0
- package/src/WatchlistBusinessFormScreen.tsx +176 -0
- package/src/WatchlistBusinessProcessingScreen.tsx +63 -0
- package/src/WatchlistBusinessStrings.ts +121 -0
- package/src/WatchlistBusinessSuccessScreen.tsx +67 -0
- package/src/flows.ts +711 -0
- package/src/index.ts +591 -0
- package/src/styles.css +33 -0
- package/src/types.ts +69 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
|
|
3
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
4
|
+
import { PrizmaButton } from '@incodetech/prizma-core-web/button';
|
|
5
|
+
import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
|
|
6
|
+
import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
|
|
7
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
8
|
+
import type { EkybOwnersState, EkybOwnersValues, EkybStrings } from './EkybStrings';
|
|
9
|
+
import './ScreenLayout.css';
|
|
10
|
+
|
|
11
|
+
export interface EkybOwnersScreenProps
|
|
12
|
+
extends Omit<
|
|
13
|
+
PrizmaFormScreenProps,
|
|
14
|
+
| 'title'
|
|
15
|
+
| 'subtitle'
|
|
16
|
+
| 'ctaLabel'
|
|
17
|
+
| 'ctaLoading'
|
|
18
|
+
| 'ctaLoadingLabel'
|
|
19
|
+
| 'verifiedLabel'
|
|
20
|
+
| 'children'
|
|
21
|
+
| 'navLabel'
|
|
22
|
+
| 'linkLabel'
|
|
23
|
+
| 'linkContent'
|
|
24
|
+
| 'progress'
|
|
25
|
+
| 'scrollFields'
|
|
26
|
+
> {
|
|
27
|
+
/** Module copy — this screen reads the `owners` slice. */
|
|
28
|
+
strings: EkybStrings;
|
|
29
|
+
/** Which purple `eKYB.UBO.*` / `eKYB.director.*` section to render.
|
|
30
|
+
* Default `uboEmpty`. */
|
|
31
|
+
state?: EkybOwnersState;
|
|
32
|
+
/** The four field values. Empty renders the resting empty field. */
|
|
33
|
+
values?: EkybOwnersValues;
|
|
34
|
+
screenId?: string;
|
|
35
|
+
overrides?: PrizmaScreenOverrides;
|
|
36
|
+
onAction?: PrizmaScreenActionHandler;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* eKYB — step 3 of the wizard, the people behind the company, built on the Form
|
|
41
|
+
* archetype (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
42
|
+
*
|
|
43
|
+
* ONE screen for BOTH purple parents — `eKYB.UBO` (5707:90967) and
|
|
44
|
+
* `eKYB.director` (5707:99490) — because measured against the 390 frames the
|
|
45
|
+
* director frames ARE the UBO frames with a second block revealed: same stepper
|
|
46
|
+
* position, same H2 "Beneficial Owner", same H5, same first two fields, same
|
|
47
|
+
* "Add another UBO (Optional)" link, same CTA band. Building them as two files
|
|
48
|
+
* would have duplicated the UBO block and given it two places to drift.
|
|
49
|
+
*
|
|
50
|
+
* Five sections, five distinct renderings:
|
|
51
|
+
* - `uboEmpty` 2115:20619 — UBO block only, both fields blank
|
|
52
|
+
* - `uboFilled` 5707:49608 — UBO block only, both fields carrying a value
|
|
53
|
+
* - `directorEmpty` 5655:56032 — UBO block + Director block, all four blank
|
|
54
|
+
* - `directorFilled` 5707:49782 — UBO block + Director block, all four filled
|
|
55
|
+
* - `loading` 5663:94390 — `directorFilled` with the submission in
|
|
56
|
+
* flight: every field, both "Add another" links and "Back" go inert, and the
|
|
57
|
+
* spinner rides the CTA, never a field (the Phone Input lesson, #PI-5)
|
|
58
|
+
*
|
|
59
|
+
* Four things are deliberate:
|
|
60
|
+
*
|
|
61
|
+
* 1. The stack SCROLLS inside the content column — now through the archetype's
|
|
62
|
+
* own `scrollFields` prop, not a module stylesheet. The director frames are
|
|
63
|
+
* 1201–1245 tall against a 844 screen that never reflows (#17); without the
|
|
64
|
+
* release the surplus paints over the CTA, and the second "Add another…"
|
|
65
|
+
* link — the element `directorEmpty` exists to draw — never reaches the
|
|
66
|
+
* screen at all. The module used to hand-roll `overflow-y: auto` in
|
|
67
|
+
* `EkybLayout.css`; the archetype absorbed it (DEVIATIONS #DSC-2) and that
|
|
68
|
+
* file is now deleted.
|
|
69
|
+
* 2. The Director block's heading is Core's OWN `PrizmaTitle` (H2 + H5, left
|
|
70
|
+
* variant) composed into the archetype's `children` slot — the same
|
|
71
|
+
* component the archetype uses for the screen title, so the typography is
|
|
72
|
+
* the design system's and nothing is hand-rolled. It does mean the screen
|
|
73
|
+
* carries TWO H2s, which GUIDELINES §4 does not anticipate; reported as a
|
|
74
|
+
* deviation rather than resolved silently.
|
|
75
|
+
* 3. Both "Add another…" links are Core's `PrizmaButton variant="tertiary-link"`
|
|
76
|
+
* and sit INSIDE the field stack, which is where Figma draws them — attached
|
|
77
|
+
* to the block they extend, above the CTA band — not in the CTA column.
|
|
78
|
+
* They are two SEPARATELY actionable flows (#PI-10), but
|
|
79
|
+
* `PrizmaScreenAction` offers only one non-primary/non-secondary type, so
|
|
80
|
+
* they are told apart by an action-qualified `screenId` until the contract
|
|
81
|
+
* gains a discriminator — reported in `archetypeGaps`.
|
|
82
|
+
* 4. Only `loading` passes `disabled`. Core's `readOnly` would grey the other
|
|
83
|
+
* four sections too, which Figma draws white (#PI-6).
|
|
84
|
+
*
|
|
85
|
+
* The three-segment journey bar sits above the title on every one of the five
|
|
86
|
+
* sections, in the archetype's `progress` slot. This is step 3 of 3, so the bar
|
|
87
|
+
* runs at `currentState={3}` (5919:71500 / 6340:63438 — segments 1–2 pale,
|
|
88
|
+
* segment 3 solid) and `loading` flips it to `'Completed'`, which is what turns
|
|
89
|
+
* all three segments GREEN in 5919:73354. That green beat is the treatment that
|
|
90
|
+
* distinguishes `loading` from `directorFilled` above the fold, so it is not
|
|
91
|
+
* optional chrome.
|
|
92
|
+
*/
|
|
93
|
+
export const EkybOwnersScreen = forwardRef<HTMLDivElement, EkybOwnersScreenProps>(
|
|
94
|
+
(
|
|
95
|
+
{
|
|
96
|
+
strings,
|
|
97
|
+
state = 'uboEmpty',
|
|
98
|
+
values,
|
|
99
|
+
screenId = `ekyb-owners-${state}`,
|
|
100
|
+
className,
|
|
101
|
+
overrides,
|
|
102
|
+
onAction,
|
|
103
|
+
...shell
|
|
104
|
+
},
|
|
105
|
+
ref,
|
|
106
|
+
) => {
|
|
107
|
+
const copy = strings.owners;
|
|
108
|
+
const busy = state === 'loading';
|
|
109
|
+
const showDirector =
|
|
110
|
+
state === 'directorEmpty' || state === 'directorFilled' || busy;
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<PrizmaFormScreen
|
|
114
|
+
ref={ref}
|
|
115
|
+
className={['ekyb-owners', className].filter(Boolean).join(' ')}
|
|
116
|
+
/* The archetype's own scrolling field stack — two titled blocks, four
|
|
117
|
+
fields and two links do not fit a 844 frame. No module CSS. */
|
|
118
|
+
scrollFields
|
|
119
|
+
/* Step 3 of 3, and GREEN across all three once the submission runs. */
|
|
120
|
+
progress={
|
|
121
|
+
<PrizmaStepper
|
|
122
|
+
steps={3}
|
|
123
|
+
currentState={busy ? 'Completed' : 3}
|
|
124
|
+
showIcons={false}
|
|
125
|
+
aria-label={strings.stepperLabel}
|
|
126
|
+
completedValueText={strings.stepperCompletedLabel}
|
|
127
|
+
/>
|
|
128
|
+
}
|
|
129
|
+
title={copy.title}
|
|
130
|
+
subtitle={copy.subtitle}
|
|
131
|
+
ctaLabel={copy.ctaLabel}
|
|
132
|
+
/* `loading` swaps the CTA label for Core's designed spinner. */
|
|
133
|
+
ctaLoading={busy}
|
|
134
|
+
ctaLoadingLabel={copy.ctaLoadingLabel}
|
|
135
|
+
linkContent={
|
|
136
|
+
<PrizmaButton
|
|
137
|
+
variant="secondary"
|
|
138
|
+
size="L"
|
|
139
|
+
/* 5663:94390 greys "Back" while the submission runs. */
|
|
140
|
+
disabled={busy}
|
|
141
|
+
onClick={() => onAction?.({ type: 'secondary', screenId })}
|
|
142
|
+
>
|
|
143
|
+
{strings.backLabel}
|
|
144
|
+
</PrizmaButton>
|
|
145
|
+
}
|
|
146
|
+
verifiedLabel={strings.verifiedLabel}
|
|
147
|
+
navLabel={strings.navLabel}
|
|
148
|
+
screenId={screenId}
|
|
149
|
+
overrides={{ align: overrides?.align ?? 'left', logo: overrides?.logo }}
|
|
150
|
+
onAction={onAction}
|
|
151
|
+
{...shell}
|
|
152
|
+
>
|
|
153
|
+
<PrizmaTextField
|
|
154
|
+
label={copy.uboName.label}
|
|
155
|
+
placeholder={copy.uboName.placeholder}
|
|
156
|
+
required
|
|
157
|
+
requiredHint={strings.requiredHint}
|
|
158
|
+
autoComplete="off"
|
|
159
|
+
defaultValue={values?.uboName ?? ''}
|
|
160
|
+
disabled={busy}
|
|
161
|
+
/>
|
|
162
|
+
{/* Figma draws no asterisk on the surname — it is optional. */}
|
|
163
|
+
<PrizmaTextField
|
|
164
|
+
label={copy.uboSurname.label}
|
|
165
|
+
placeholder={copy.uboSurname.placeholder}
|
|
166
|
+
autoComplete="off"
|
|
167
|
+
defaultValue={values?.uboSurname ?? ''}
|
|
168
|
+
disabled={busy}
|
|
169
|
+
/>
|
|
170
|
+
<PrizmaButton
|
|
171
|
+
variant="tertiary-link"
|
|
172
|
+
size="L"
|
|
173
|
+
disabled={busy}
|
|
174
|
+
/* Action-qualified id: the two "Add another…" links are different
|
|
175
|
+
flows and must stay distinguishable (#PI-10), but the action
|
|
176
|
+
contract has no per-action discriminator yet. */
|
|
177
|
+
onClick={() =>
|
|
178
|
+
onAction?.({ type: 'tertiary', screenId: `${screenId}-add-ubo` })
|
|
179
|
+
}
|
|
180
|
+
>
|
|
181
|
+
{copy.addUboLabel}
|
|
182
|
+
</PrizmaButton>
|
|
183
|
+
|
|
184
|
+
{showDirector ? (
|
|
185
|
+
<>
|
|
186
|
+
{/* Core's own Title component — the same H2 + H5 pair the archetype
|
|
187
|
+
renders at the top of the screen, so the Director block's
|
|
188
|
+
typography is the design system's, not a copy. */}
|
|
189
|
+
<PrizmaTitle
|
|
190
|
+
variant="left"
|
|
191
|
+
title={copy.directorTitle}
|
|
192
|
+
showSubtitle={Boolean(copy.directorSubtitle)}
|
|
193
|
+
subtitle={copy.directorSubtitle}
|
|
194
|
+
/>
|
|
195
|
+
<PrizmaTextField
|
|
196
|
+
label={copy.directorName.label}
|
|
197
|
+
placeholder={copy.directorName.placeholder}
|
|
198
|
+
autoComplete="off"
|
|
199
|
+
defaultValue={values?.directorName ?? ''}
|
|
200
|
+
disabled={busy}
|
|
201
|
+
/>
|
|
202
|
+
<PrizmaTextField
|
|
203
|
+
label={copy.directorSurname.label}
|
|
204
|
+
placeholder={copy.directorSurname.placeholder}
|
|
205
|
+
autoComplete="off"
|
|
206
|
+
defaultValue={values?.directorSurname ?? ''}
|
|
207
|
+
disabled={busy}
|
|
208
|
+
/>
|
|
209
|
+
<PrizmaButton
|
|
210
|
+
variant="tertiary-link"
|
|
211
|
+
size="L"
|
|
212
|
+
disabled={busy}
|
|
213
|
+
onClick={() =>
|
|
214
|
+
onAction?.({
|
|
215
|
+
type: 'tertiary',
|
|
216
|
+
screenId: `${screenId}-add-director`,
|
|
217
|
+
})
|
|
218
|
+
}
|
|
219
|
+
>
|
|
220
|
+
{copy.addDirectorLabel}
|
|
221
|
+
</PrizmaButton>
|
|
222
|
+
</>
|
|
223
|
+
) : null}
|
|
224
|
+
</PrizmaFormScreen>
|
|
225
|
+
);
|
|
226
|
+
},
|
|
227
|
+
);
|
|
228
|
+
EkybOwnersScreen.displayName = 'EkybOwnersScreen';
|
|
229
|
+
|
|
230
|
+
export default EkybOwnersScreen;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PrizmaProcessingScreen,
|
|
4
|
+
type PrizmaProcessingScreenProps,
|
|
5
|
+
} from './ProcessingScreen';
|
|
6
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
7
|
+
import type { EkybStrings } from './EkybStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface EkybProcessingScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `processing` slice. */
|
|
16
|
+
strings: EkybStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* eKYB — the in-flight screen (`eKYB.processing`, 2116:34749), built on the
|
|
24
|
+
* Processing archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
25
|
+
*
|
|
26
|
+
* The pure spinner + H2 case with no button, which is exactly what §6-F reserves
|
|
27
|
+
* for C rather than the Result archetype: the frame centres Core's spinner over
|
|
28
|
+
* the status line in the middle of the column, keeps the logo header and the
|
|
29
|
+
* verified tag, and offers the operator nothing to press while the submission is
|
|
30
|
+
* checked.
|
|
31
|
+
*
|
|
32
|
+
* The title block is CENTRED here — unlike every eKYB form page, which
|
|
33
|
+
* left-aligns — because the archetype centres the whole column and Figma draws
|
|
34
|
+
* it that way; no alignment override is passed.
|
|
35
|
+
*/
|
|
36
|
+
export const EkybProcessingScreen = forwardRef<HTMLDivElement, EkybProcessingScreenProps>(
|
|
37
|
+
(
|
|
38
|
+
{ strings, screenId = 'ekyb-processing', overrides, onAction, ...shell },
|
|
39
|
+
ref,
|
|
40
|
+
) => (
|
|
41
|
+
<PrizmaProcessingScreen
|
|
42
|
+
ref={ref}
|
|
43
|
+
status="loading"
|
|
44
|
+
title={strings.processing.title}
|
|
45
|
+
subtitle={strings.processing.subtitle}
|
|
46
|
+
verifiedLabel={strings.verifiedLabel}
|
|
47
|
+
navLabel={strings.navLabel}
|
|
48
|
+
screenId={screenId}
|
|
49
|
+
overrides={overrides}
|
|
50
|
+
onAction={onAction}
|
|
51
|
+
{...shell}
|
|
52
|
+
/>
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
EkybProcessingScreen.displayName = 'EkybProcessingScreen';
|
|
56
|
+
|
|
57
|
+
export default EkybProcessingScreen;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
// eKYB — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `💼 eKYB - Screens specs + Localization` (TWgYZVhurQCizfC4tfLEut,
|
|
4
|
+
// page 2003:12082, purple parent section 2116:23785). The file is SHARED with
|
|
5
|
+
// eKYC (sections 2098:20865 and 2101:7869) — none of those frames belong to this
|
|
6
|
+
// module and none is rebuilt here.
|
|
7
|
+
//
|
|
8
|
+
// SIX purple parent sections, fifteen master frames:
|
|
9
|
+
// eKYB.country (5707:78603) — empty 2115:20444 · filled 5655:42140 ·
|
|
10
|
+
// dropdown 5707:54174
|
|
11
|
+
// eKYB.Bdetails (5707:87449) — empty 2115:21864 · filled 5663:83132
|
|
12
|
+
// eKYB.Bdetails (6340:32594) — the SECOND section of that name, the address
|
|
13
|
+
// page: empty 6340:50731 · filled 6340:38197
|
|
14
|
+
// eKYB.UBO (5707:90967) — empty 2115:20619 · filled 5707:49608
|
|
15
|
+
// eKYB.director (5707:99490) — empty 5655:56032 · filled 5707:49782 ·
|
|
16
|
+
// loading 5663:94390
|
|
17
|
+
// (unnamed) (5707:99491) — processing 2116:34749 · error 2116:34743 ·
|
|
18
|
+
// success 2116:34709
|
|
19
|
+
//
|
|
20
|
+
// The module is business onboarding: the operator picks the country of
|
|
21
|
+
// registration, files the company's identity and address, names the beneficial
|
|
22
|
+
// owner(s) and director(s), and the submission is checked.
|
|
23
|
+
//
|
|
24
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
25
|
+
// so the host's locale pack drives the module (the Figma file ships ES + PT
|
|
26
|
+
// columns beside the EN one).
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The `eKYB.country.*` sections. All three share the archetype-E skeleton —
|
|
30
|
+
* nav → Title (H2 + H5) → Spacing/32 → one labelled dropdown → "Continue" →
|
|
31
|
+
* tag — and differ ONLY in what the dropdown carries:
|
|
32
|
+
* - `empty` — the placeholder ("Select country"), nothing chosen
|
|
33
|
+
* - `filled` — a country selected, drawn as flag + name in the closed field
|
|
34
|
+
* - `dropdown` — the same selection with the MENU OPEN over the form: search
|
|
35
|
+
* bar plus the country rows (Core's documentation-only `forceOpen`, since a
|
|
36
|
+
* screen is one static spec state and never a live interaction)
|
|
37
|
+
*/
|
|
38
|
+
export type EkybCountryState = 'empty' | 'filled' | 'dropdown';
|
|
39
|
+
|
|
40
|
+
/** The two `eKYB.Bdetails` (business identity) sections: every field on its
|
|
41
|
+
* resting empty surface, or every field carrying a value. */
|
|
42
|
+
export type EkybBusinessState = 'empty' | 'filled';
|
|
43
|
+
|
|
44
|
+
/** The two address sections (the SECOND `eKYB.Bdetails` parent). Same axis. */
|
|
45
|
+
export type EkybAddressState = 'empty' | 'filled';
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The `eKYB.UBO.*` and `eKYB.director.*` sections — one screen family, because
|
|
49
|
+
* measured against the 390 frames the director frames ARE the UBO frames with
|
|
50
|
+
* the Director block revealed below the "Add another UBO" link: same stepper
|
|
51
|
+
* position, same H2, same subtitle, same first two fields, same CTA band.
|
|
52
|
+
*
|
|
53
|
+
* - `uboEmpty` — `eKYB.UBO.empty` (2115:20619): the two UBO fields blank
|
|
54
|
+
* - `uboFilled` — `eKYB.UBO.filled` (5707:49608): both carrying a value
|
|
55
|
+
* - `directorEmpty` — `eKYB.director.empty` (5655:56032): UBO block plus the
|
|
56
|
+
* Director block, every field blank
|
|
57
|
+
* - `directorFilled`— `eKYB.directorFilled` (5707:49782): all four filled
|
|
58
|
+
* - `loading` — `eKYB.directorloading` (5663:94390): the submission is in
|
|
59
|
+
* flight, so EVERY field, both "Add another" links and "Back" go inert and
|
|
60
|
+
* the spinner rides the CTA, never a field (the Phone Input lesson,
|
|
61
|
+
* DEVIATIONS #PI-5)
|
|
62
|
+
*/
|
|
63
|
+
export type EkybOwnersState =
|
|
64
|
+
| 'uboEmpty'
|
|
65
|
+
| 'uboFilled'
|
|
66
|
+
| 'directorEmpty'
|
|
67
|
+
| 'directorFilled'
|
|
68
|
+
| 'loading';
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* One selectable row in the country / state menus. Runtime data, not copy — the
|
|
72
|
+
* host owns the catalogue (an ISO country list is ~250 entries and a state list
|
|
73
|
+
* is jurisdiction-specific), exactly as Phone Input takes its dial codes as data
|
|
74
|
+
* rather than strings.
|
|
75
|
+
*/
|
|
76
|
+
export interface EkybOption {
|
|
77
|
+
/** Stable value, e.g. `US` / `TX`. */
|
|
78
|
+
value: string;
|
|
79
|
+
/** The row label as drawn in the open menu. */
|
|
80
|
+
label: string;
|
|
81
|
+
/** Compact face for the CLOSED field when it differs from the menu row —
|
|
82
|
+
* Core's own `PrizmaDropdownOption.fieldLabel`. `eKYB.country.dropdown`
|
|
83
|
+
* draws "🇺🇸 +1 United States" in the row and "🇺🇸 United States" in the
|
|
84
|
+
* field. */
|
|
85
|
+
fieldLabel?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** The values the business-identity page carries. Runtime data, never copy. */
|
|
89
|
+
export interface EkybBusinessValues {
|
|
90
|
+
businessName?: string;
|
|
91
|
+
taxId?: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** The values the address page carries. Runtime data, never copy. */
|
|
95
|
+
export interface EkybAddressValues {
|
|
96
|
+
street?: string;
|
|
97
|
+
houseNumber?: string;
|
|
98
|
+
addressLine2?: string;
|
|
99
|
+
city?: string;
|
|
100
|
+
/** An `EkybOption.value` from the `states` catalogue. */
|
|
101
|
+
state?: string;
|
|
102
|
+
postalCode?: string;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** The values the owners page carries. Runtime data, never copy. */
|
|
106
|
+
export interface EkybOwnersValues {
|
|
107
|
+
uboName?: string;
|
|
108
|
+
uboSurname?: string;
|
|
109
|
+
directorName?: string;
|
|
110
|
+
directorSurname?: string;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Copy for one labelled field. The required `*` is appended by Core from
|
|
114
|
+
* `EkybStrings.requiredHint`, never baked into `label`. */
|
|
115
|
+
export interface EkybFieldStrings {
|
|
116
|
+
/** Visible label ("Business name"). */
|
|
117
|
+
label: string;
|
|
118
|
+
/** Placeholder inside the field. The eKYB frames draw none on the text
|
|
119
|
+
* fields — only the two dropdowns carry one — so this is optional. */
|
|
120
|
+
placeholder?: string;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface EkybStrings {
|
|
124
|
+
/** "verified by" attribution in the footer tag. */
|
|
125
|
+
verifiedLabel: string;
|
|
126
|
+
/** Accessible name for the logo nav row. */
|
|
127
|
+
navLabel?: string;
|
|
128
|
+
/**
|
|
129
|
+
* Suffix Core appends to a required field's label — the `*` every eKYB form
|
|
130
|
+
* label carries. Passed to Core's own `requiredHint` prop so the marker is
|
|
131
|
+
* localizable and never hardcoded in a screen.
|
|
132
|
+
*/
|
|
133
|
+
requiredHint?: string;
|
|
134
|
+
/** Shared "Back" secondary action drawn under "Continue" on every page except
|
|
135
|
+
* `country`. Emits `secondary`. */
|
|
136
|
+
backLabel: string;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Accessible name for the three-segment journey bar every WIZARD frame draws
|
|
140
|
+
* between the logo nav and the title block (Core's `PrizmaStepper`,
|
|
141
|
+
* `role="progressbar"`). Nine of the module's fifteen sections carry it —
|
|
142
|
+
* business ×2 (segment 1), address ×2 (segment 2), owners ×5 (segment 3, or
|
|
143
|
+
* all three green while the submission runs) — and it is the only chrome that
|
|
144
|
+
* tells the three wizard pages apart, so it carries a real name rather than
|
|
145
|
+
* none. Copy, therefore it lives here.
|
|
146
|
+
*
|
|
147
|
+
* The `eKYB.country.*` sections draw NO bar (2115:20444 has no Stepper
|
|
148
|
+
* instance): the country choice sits before the wizard.
|
|
149
|
+
*/
|
|
150
|
+
stepperLabel: string;
|
|
151
|
+
/**
|
|
152
|
+
* `aria-valuetext` the same bar announces once all three segments are green —
|
|
153
|
+
* the `eKYB.directorloading` section (5663:94390). Same contract as eKYC's
|
|
154
|
+
* and Video Selfie's `stepperCompletedLabel`.
|
|
155
|
+
*/
|
|
156
|
+
stepperCompletedLabel: string;
|
|
157
|
+
|
|
158
|
+
/** eKYB.country.{empty,filled,dropdown} */
|
|
159
|
+
country: {
|
|
160
|
+
/** H2 ("Select your country"). */
|
|
161
|
+
title: string;
|
|
162
|
+
/** H5 ("Select the country where your business is registered"). */
|
|
163
|
+
subtitle?: string;
|
|
164
|
+
/** The one labelled dropdown ("Country" / "Select country"). */
|
|
165
|
+
field: EkybFieldStrings;
|
|
166
|
+
/** Search-bar placeholder inside the open menu ("Search for country"). */
|
|
167
|
+
searchPlaceholder?: string;
|
|
168
|
+
/** Accessible name for the menu's search-clear button. */
|
|
169
|
+
clearSearchLabel?: string;
|
|
170
|
+
/** Primary CTA ("Continue"). */
|
|
171
|
+
ctaLabel: string;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/** eKYB.Bdetails.{empty,filled} — the business-identity page. */
|
|
175
|
+
business: {
|
|
176
|
+
/** H2 ("Business Information"). */
|
|
177
|
+
title: string;
|
|
178
|
+
/** H5 ("All fields marked with * are required."). */
|
|
179
|
+
subtitle?: string;
|
|
180
|
+
businessName: EkybFieldStrings;
|
|
181
|
+
taxId: EkybFieldStrings;
|
|
182
|
+
/** Primary CTA ("Continue"). */
|
|
183
|
+
ctaLabel: string;
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/** The second eKYB.Bdetails parent — the address page. */
|
|
187
|
+
address: {
|
|
188
|
+
/** H2 ("Address Details"). */
|
|
189
|
+
title: string;
|
|
190
|
+
/** H5 ("All fields marked with * are required."). */
|
|
191
|
+
subtitle?: string;
|
|
192
|
+
street: EkybFieldStrings;
|
|
193
|
+
houseNumber: EkybFieldStrings;
|
|
194
|
+
/** The one OPTIONAL field of the page — Figma draws no `*`. */
|
|
195
|
+
addressLine2: EkybFieldStrings;
|
|
196
|
+
city: EkybFieldStrings;
|
|
197
|
+
/** The State dropdown ("State" / "Select state"). No search copy: neither
|
|
198
|
+
* address section draws this menu open, so the screen ships no
|
|
199
|
+
* `searchable` and a search placeholder would be dead copy. */
|
|
200
|
+
state: EkybFieldStrings;
|
|
201
|
+
postalCode: EkybFieldStrings;
|
|
202
|
+
/** Primary CTA ("Continue"). */
|
|
203
|
+
ctaLabel: string;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/** eKYB.UBO.* and eKYB.director.* — one screen, two blocks. */
|
|
207
|
+
owners: {
|
|
208
|
+
/** The screen's single H2 ("Beneficial Owner") and its H5. */
|
|
209
|
+
title: string;
|
|
210
|
+
subtitle?: string;
|
|
211
|
+
uboName: EkybFieldStrings;
|
|
212
|
+
/** Figma draws NO `*` on the surname — it is optional. */
|
|
213
|
+
uboSurname: EkybFieldStrings;
|
|
214
|
+
/** The tertiary link under the UBO block ("Add another UBO (Optional)"). */
|
|
215
|
+
addUboLabel: string;
|
|
216
|
+
/** The Director block's own heading + description. Rendered by Core's
|
|
217
|
+
* `PrizmaTitle` inside the field stack; see the screen's docstring and the
|
|
218
|
+
* module's reported deviation about the second heading. */
|
|
219
|
+
directorTitle: string;
|
|
220
|
+
directorSubtitle?: string;
|
|
221
|
+
directorName: EkybFieldStrings;
|
|
222
|
+
directorSurname: EkybFieldStrings;
|
|
223
|
+
/** The tertiary link under the Director block. */
|
|
224
|
+
addDirectorLabel: string;
|
|
225
|
+
/** Primary CTA ("Continue"). */
|
|
226
|
+
ctaLabel: string;
|
|
227
|
+
/** Accessible busy label while the submission runs (`loading`). */
|
|
228
|
+
ctaLoadingLabel?: string;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/** eKYB.processing (2116:34749) — the pure spinner screen, no button. */
|
|
232
|
+
processing: { title: string; subtitle?: string };
|
|
233
|
+
|
|
234
|
+
/** eKYB.success (2116:34709) — positive mark, no button. */
|
|
235
|
+
success: { title: string; subtitle?: string };
|
|
236
|
+
|
|
237
|
+
/** eKYB.error (2116:34743) — negative mark + "Try again". */
|
|
238
|
+
error: { title: string; subtitle?: string; ctaLabel: string };
|
|
239
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PrizmaProcessingScreen,
|
|
4
|
+
type PrizmaProcessingScreenProps,
|
|
5
|
+
} from './ProcessingScreen';
|
|
6
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
7
|
+
import type { EkybStrings } from './EkybStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface EkybSuccessScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
16
|
+
strings: EkybStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* eKYB — the positive verdict (`eKYB.success`, 2116:34709), built on the
|
|
24
|
+
* Processing archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
25
|
+
*
|
|
26
|
+
* Figma draws NO button here: the flow advances on its own once the submission
|
|
27
|
+
* is accepted, so this is the pure status-mark case §6-F reserves for C rather
|
|
28
|
+
* than for the Result archetype — the same deliberate split Email Input records
|
|
29
|
+
* against its Phone Input sibling (DEVIATIONS #EI-4). Its sibling
|
|
30
|
+
* `EkybErrorScreen` needs a button and therefore sits on F.
|
|
31
|
+
*
|
|
32
|
+
* Core's outline status mark is used, not Figma's two-tone filled disc — the
|
|
33
|
+
* icon-outline sweep of 2026-07-28 settled that for every module (#15, #DC-34)
|
|
34
|
+
* and this file's frames are one sweep behind.
|
|
35
|
+
*/
|
|
36
|
+
export const EkybSuccessScreen = forwardRef<HTMLDivElement, EkybSuccessScreenProps>(
|
|
37
|
+
({ strings, screenId = 'ekyb-success', overrides, onAction, ...shell }, ref) => (
|
|
38
|
+
<PrizmaProcessingScreen
|
|
39
|
+
ref={ref}
|
|
40
|
+
status="success"
|
|
41
|
+
title={strings.success.title}
|
|
42
|
+
subtitle={strings.success.subtitle}
|
|
43
|
+
verifiedLabel={strings.verifiedLabel}
|
|
44
|
+
navLabel={strings.navLabel}
|
|
45
|
+
screenId={screenId}
|
|
46
|
+
overrides={overrides}
|
|
47
|
+
onAction={onAction}
|
|
48
|
+
{...shell}
|
|
49
|
+
/>
|
|
50
|
+
),
|
|
51
|
+
);
|
|
52
|
+
EkybSuccessScreen.displayName = 'EkybSuccessScreen';
|
|
53
|
+
|
|
54
|
+
export default EkybSuccessScreen;
|