@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,107 @@
|
|
|
1
|
+
/* ViewfinderScreen — Archetype D (GUIDELINES.md §6-D). Always dark; white
|
|
2
|
+
* copy over the camera surface. The rgba white literals are the Figma camera
|
|
3
|
+
* HUD treatment (verified absent from the token set — the camera stage sits
|
|
4
|
+
* outside the light/dark theming model). */
|
|
5
|
+
|
|
6
|
+
.prizma-viewfinder__surface,
|
|
7
|
+
.prizma-viewfinder__surface > img,
|
|
8
|
+
.prizma-viewfinder__surface > video {
|
|
9
|
+
position: absolute;
|
|
10
|
+
inset: 0;
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
object-fit: cover;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.prizma-viewfinder__content {
|
|
17
|
+
position: relative;
|
|
18
|
+
z-index: 1;
|
|
19
|
+
flex: 1;
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
padding: 0 var(--prizma-spacing-24) var(--prizma-spacing-24);
|
|
23
|
+
text-align: center;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.prizma-viewfinder__content--left {
|
|
27
|
+
text-align: left;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Title block bottom-anchored in the area above the capture window.
|
|
31
|
+
*
|
|
32
|
+
* `position: relative` + `z-index` is LOAD-BEARING, not tidying. When the stage
|
|
33
|
+
* runs `mode="overlay" scrim`, Core draws the veil as an absolutely positioned
|
|
34
|
+
* `.prizma-id-capture__scrim` carrying `box-shadow: rgba(20,21,26,.8) 0 0 0
|
|
35
|
+
* 3000px` — a dark wash that deliberately escapes its own frame to cover the
|
|
36
|
+
* whole screen. The scrim is a LATER SIBLING of this block inside
|
|
37
|
+
* `__content`, and a positioned sibling always paints over non-positioned
|
|
38
|
+
* content, so an unlifted title block sits UNDER an 80% veil: white copy
|
|
39
|
+
* rendering at ~20% and reading as dim grey (owner report 2026-09-03,
|
|
40
|
+
* Document Capture's camera stage).
|
|
41
|
+
*
|
|
42
|
+
* `__content` already carries `z-index: 1`, but that lifts it above the CAMERA
|
|
43
|
+
* SURFACE, not above its own descendants — the scrim is inside it.
|
|
44
|
+
*
|
|
45
|
+
* This is the same fix, for the same reason, that `.id-capture-band` makes in
|
|
46
|
+
* IdCaptureLayout.css; ID Capture's stage composes its own bands and so was
|
|
47
|
+
* never affected. Anything else that puts plain text beside a scrimmed stage
|
|
48
|
+
* needs it too. */
|
|
49
|
+
.prizma-viewfinder__intro {
|
|
50
|
+
flex: 1;
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
justify-content: flex-end;
|
|
54
|
+
gap: var(--prizma-spacing-8);
|
|
55
|
+
padding-bottom: var(--prizma-spacing-24);
|
|
56
|
+
position: relative;
|
|
57
|
+
z-index: 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.prizma-viewfinder__title {
|
|
61
|
+
margin: 0;
|
|
62
|
+
color: #ffffff; /* hardcoded — camera HUD copy, always white, no token */
|
|
63
|
+
font-family: var(--prizma-headline-family);
|
|
64
|
+
font-size: var(--prizma-headline-h2-font-size);
|
|
65
|
+
font-weight: var(--prizma-headline-h2-font-weight);
|
|
66
|
+
line-height: var(--prizma-headline-h2-line-height);
|
|
67
|
+
letter-spacing: var(--prizma-headline-h2-letter-spacing);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.prizma-viewfinder__instruction {
|
|
71
|
+
margin: 0;
|
|
72
|
+
color: rgba(255, 255, 255, 0.6); /* hardcoded — camera HUD muted copy, no token */
|
|
73
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
74
|
+
line-height: 1.4;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Lock + encrypted notice: 33px row under the capture window. */
|
|
78
|
+
.prizma-viewfinder__encrypted {
|
|
79
|
+
height: 33px; /* hardcoded — Studio encrypted-row height (GUIDELINES §6-D) */
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
justify-content: center;
|
|
83
|
+
gap: var(--prizma-spacing-4);
|
|
84
|
+
color: #ffffff; /* hardcoded — camera HUD copy, always white, no token */
|
|
85
|
+
font-size: var(--prizma-body-m-regular-font-size);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.prizma-viewfinder__content--left .prizma-viewfinder__encrypted {
|
|
89
|
+
justify-content: flex-start;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.prizma-viewfinder__spacer {
|
|
93
|
+
flex: 1;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* Help control — bottom-right, 24/24 (GUIDELINES §6-D). */
|
|
97
|
+
.prizma-viewfinder__help {
|
|
98
|
+
position: absolute;
|
|
99
|
+
right: var(--prizma-spacing-24);
|
|
100
|
+
bottom: var(--prizma-spacing-24);
|
|
101
|
+
display: flex;
|
|
102
|
+
padding: 0;
|
|
103
|
+
border: none;
|
|
104
|
+
background: none;
|
|
105
|
+
color: #ffffff; /* hardcoded — camera HUD control, always white, no token */
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import React, { forwardRef, type ReactNode } from 'react';
|
|
2
|
+
import { IconLock, IconQuestionCircle } from '@incodetech/prizma-core-icons';
|
|
3
|
+
import {
|
|
4
|
+
PrizmaCaptureOverlay,
|
|
5
|
+
type PrizmaCaptureOverlayShape,
|
|
6
|
+
type PrizmaCaptureOverlayState,
|
|
7
|
+
} from './CaptureOverlay';
|
|
8
|
+
import { PrizmaScreenShell, type PrizmaScreenShellProps } from './ScreenShell';
|
|
9
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
10
|
+
import './ViewfinderScreen.css';
|
|
11
|
+
import './ScreenLayout.css';
|
|
12
|
+
|
|
13
|
+
export interface PrizmaViewfinderScreenProps
|
|
14
|
+
extends Omit<PrizmaScreenShellProps, 'dark' | 'title'> {
|
|
15
|
+
/** White H2 above the capture window. */
|
|
16
|
+
title: string;
|
|
17
|
+
/** Muted instruction line under the title. */
|
|
18
|
+
instruction?: string;
|
|
19
|
+
/** "Your data is encrypted" style notice under the window. */
|
|
20
|
+
encryptedLabel?: string;
|
|
21
|
+
/** Accessible name for the help control (i18n). Renders the help icon only
|
|
22
|
+
* when provided. */
|
|
23
|
+
helpLabel?: string;
|
|
24
|
+
/** The camera surface behind the vignette — an <img> still or live <video>.
|
|
25
|
+
* Hosts with a real camera pipeline inject their feed here. */
|
|
26
|
+
cameraSurface?: ReactNode;
|
|
27
|
+
/** Capture window geometry (landscape ID / portrait document / ring). */
|
|
28
|
+
overlayShape: PrizmaCaptureOverlayShape;
|
|
29
|
+
overlayState?: PrizmaCaptureOverlayState;
|
|
30
|
+
/** Content inside the transparent window (defaults to see-through). */
|
|
31
|
+
overlayContent?: ReactNode;
|
|
32
|
+
screenId?: string;
|
|
33
|
+
overrides?: PrizmaScreenOverrides;
|
|
34
|
+
onAction?: PrizmaScreenActionHandler;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated DO NOT USE — scheduled for removal. Compose Core's capture
|
|
39
|
+
* component inside a dark `PrizmaScreenShell` instead: `PrizmaIdCapture`
|
|
40
|
+
* (`mode="overlay"`, `scrim`) already owns the window, the tokenized scrim,
|
|
41
|
+
* the encrypted row and the help affordance, and `PrizmaCaptureManual`
|
|
42
|
+
* supplies the shutter. See `DocumentCaptureCaptureScreen` for the pattern.
|
|
43
|
+
*
|
|
44
|
+
* Archetype D was built on the deprecated `CaptureOverlay` (see that file) and
|
|
45
|
+
* re-implements three Core pieces. Zero modules use it. DEVIATIONS.md #F-26.
|
|
46
|
+
*/
|
|
47
|
+
export const PrizmaViewfinderScreen = forwardRef<HTMLDivElement, PrizmaViewfinderScreenProps>(
|
|
48
|
+
(
|
|
49
|
+
{
|
|
50
|
+
title,
|
|
51
|
+
instruction,
|
|
52
|
+
encryptedLabel,
|
|
53
|
+
helpLabel,
|
|
54
|
+
cameraSurface,
|
|
55
|
+
overlayShape,
|
|
56
|
+
overlayState,
|
|
57
|
+
overlayContent,
|
|
58
|
+
screenId,
|
|
59
|
+
overrides,
|
|
60
|
+
onAction,
|
|
61
|
+
className,
|
|
62
|
+
...shell
|
|
63
|
+
},
|
|
64
|
+
ref,
|
|
65
|
+
) => (
|
|
66
|
+
<PrizmaScreenShell
|
|
67
|
+
ref={ref}
|
|
68
|
+
dark
|
|
69
|
+
className={['prizma-viewfinder', className ?? ''].filter(Boolean).join(' ')}
|
|
70
|
+
{...shell}
|
|
71
|
+
>
|
|
72
|
+
<div className="prizma-viewfinder__surface">{cameraSurface}</div>
|
|
73
|
+
<div
|
|
74
|
+
className={[
|
|
75
|
+
'prizma-viewfinder__content',
|
|
76
|
+
overrides?.align === 'left' ? 'prizma-viewfinder__content--left' : '',
|
|
77
|
+
]
|
|
78
|
+
.filter(Boolean)
|
|
79
|
+
.join(' ')}
|
|
80
|
+
>
|
|
81
|
+
<div className="prizma-viewfinder__intro">
|
|
82
|
+
<h2 className="prizma-viewfinder__title">{title}</h2>
|
|
83
|
+
{instruction ? (
|
|
84
|
+
<p className="prizma-viewfinder__instruction">{instruction}</p>
|
|
85
|
+
) : null}
|
|
86
|
+
</div>
|
|
87
|
+
<PrizmaCaptureOverlay shape={overlayShape} state={overlayState}>
|
|
88
|
+
{overlayContent}
|
|
89
|
+
</PrizmaCaptureOverlay>
|
|
90
|
+
{encryptedLabel ? (
|
|
91
|
+
<div className="prizma-viewfinder__encrypted">
|
|
92
|
+
<IconLock size="s" />
|
|
93
|
+
<span>{encryptedLabel}</span>
|
|
94
|
+
</div>
|
|
95
|
+
) : null}
|
|
96
|
+
<div className="prizma-viewfinder__spacer" />
|
|
97
|
+
{helpLabel ? (
|
|
98
|
+
<button
|
|
99
|
+
type="button"
|
|
100
|
+
className="prizma-viewfinder__help"
|
|
101
|
+
aria-label={helpLabel}
|
|
102
|
+
onClick={() => onAction?.({ type: 'help', screenId })}
|
|
103
|
+
>
|
|
104
|
+
<IconQuestionCircle size="m" />
|
|
105
|
+
</button>
|
|
106
|
+
) : null}
|
|
107
|
+
</div>
|
|
108
|
+
</PrizmaScreenShell>
|
|
109
|
+
),
|
|
110
|
+
);
|
|
111
|
+
PrizmaViewfinderScreen.displayName = 'PrizmaViewfinderScreen';
|
|
112
|
+
|
|
113
|
+
export default PrizmaViewfinderScreen;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
|
|
3
|
+
import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
|
|
4
|
+
import { PrizmaCountryFlag } from '@incodetech/prizma-core-web/combined';
|
|
5
|
+
import { PrizmaFormScreen, type PrizmaFormScreenProps } from './FormScreen';
|
|
6
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
7
|
+
import type {
|
|
8
|
+
WatchlistBusinessCountry,
|
|
9
|
+
WatchlistBusinessFormState,
|
|
10
|
+
WatchlistBusinessFormValues,
|
|
11
|
+
WatchlistBusinessStrings,
|
|
12
|
+
} from './WatchlistBusinessStrings';
|
|
13
|
+
import './ScreenLayout.css';
|
|
14
|
+
|
|
15
|
+
export interface WatchlistBusinessFormScreenProps
|
|
16
|
+
extends Omit<
|
|
17
|
+
PrizmaFormScreenProps,
|
|
18
|
+
| 'title'
|
|
19
|
+
| 'subtitle'
|
|
20
|
+
| 'ctaLabel'
|
|
21
|
+
| 'ctaDisabled'
|
|
22
|
+
| 'verifiedLabel'
|
|
23
|
+
| 'children'
|
|
24
|
+
| 'navLabel'
|
|
25
|
+
> {
|
|
26
|
+
/** Module copy — this screen reads the `form` slice. */
|
|
27
|
+
strings: WatchlistBusinessStrings;
|
|
28
|
+
/** Which purple `watchlist.*` form section to render. Default `default`. */
|
|
29
|
+
state?: WatchlistBusinessFormState;
|
|
30
|
+
/** The selectable countries of registration. Runtime data, not copy. */
|
|
31
|
+
countries?: WatchlistBusinessCountry[];
|
|
32
|
+
/** The three field values. Empty fields fall back to their placeholders. */
|
|
33
|
+
values?: WatchlistBusinessFormValues;
|
|
34
|
+
screenId?: string;
|
|
35
|
+
overrides?: PrizmaScreenOverrides;
|
|
36
|
+
onAction?: PrizmaScreenActionHandler;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Watchlist for Business — the lookup form, built on the Form archetype
|
|
41
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
42
|
+
*
|
|
43
|
+
* ONE screen for both purple form sections (`watchlist.default` and
|
|
44
|
+
* `watchlist.filled`): measured against the 390 frames they share an identical
|
|
45
|
+
* skeleton — nav → Title (H2, no subtitle) → Spacing/32 → Country dropdown,
|
|
46
|
+
* Business Name and Tax ID at Spacing/16 → primary CTA → tag — and differ ONLY
|
|
47
|
+
* in field content and whether the CTA is live.
|
|
48
|
+
*
|
|
49
|
+
* Four things are deliberate, each one a lesson an earlier module paid for:
|
|
50
|
+
*
|
|
51
|
+
* 1. The fields DO carry visible labels. Figma draws "Country", "Business Name"
|
|
52
|
+
* and "Tax ID" as real label rows above each field, so Core's `label` slot is
|
|
53
|
+
* used — the inverse of the #PI-4 / #EI-2 reading, where the design drew no
|
|
54
|
+
* label row and the copy had to ride `aria-label` (DEVIATIONS #WB-3).
|
|
55
|
+
* 2. Every field is UNCONTROLLED (`defaultValue` / `defaultValue` on the
|
|
56
|
+
* dropdown). A screen is one static spec state, so no `onChange` is needed —
|
|
57
|
+
* and Core's `readOnly`, the other way to make a field inert, paints the
|
|
58
|
+
* DISABLED grey surface on states Figma draws white (DEVIATIONS #PI-6).
|
|
59
|
+
* Neither section greys anything, so `disabled` is set nowhere.
|
|
60
|
+
* 3. The CTA state comes from the SECTION, not from the values: Figma greys
|
|
61
|
+
* "Continue" on `default` and lights it on `filled` — and `filled` leaves Tax
|
|
62
|
+
* ID empty, which is how we know the tax identifier does not gate the lookup
|
|
63
|
+
* (DEVIATIONS #WB-2). Deriving `ctaDisabled` from the values would have
|
|
64
|
+
* disagreed with the design.
|
|
65
|
+
* 4. The country flag is Core's canonical raster (24×18, radius 2) in the
|
|
66
|
+
* dropdown's LEADING slot — `PrizmaCountryFlag` composed into
|
|
67
|
+
* `PrizmaDropdown.renderLeading`, which exists for exactly this case and
|
|
68
|
+
* names it in its own docstring. Never an emoji glyph pasted into the
|
|
69
|
+
* option label: that renders at a different size on every OS, disappears
|
|
70
|
+
* entirely on Windows Chrome (no regional-indicator flag font), and lands
|
|
71
|
+
* inside the accessible label text instead of the decorative slot. The
|
|
72
|
+
* #PI-3 note ("Core ships no flag primitive") predates the primitive and no
|
|
73
|
+
* longer applies — `FormsChoiceScreen` and `FormsLongFormScreen` in this
|
|
74
|
+
* same package already use it (DEVIATIONS #WB-4).
|
|
75
|
+
*
|
|
76
|
+
* The module declares no layout and no CSS of its own: three fields fit the 844
|
|
77
|
+
* frame comfortably, so archetype E's stack needs none of CURP's scroll rule
|
|
78
|
+
* (#CURP-1).
|
|
79
|
+
*/
|
|
80
|
+
export const WatchlistBusinessFormScreen = forwardRef<
|
|
81
|
+
HTMLDivElement,
|
|
82
|
+
WatchlistBusinessFormScreenProps
|
|
83
|
+
>(
|
|
84
|
+
(
|
|
85
|
+
{
|
|
86
|
+
strings,
|
|
87
|
+
state = 'default',
|
|
88
|
+
countries = [],
|
|
89
|
+
values,
|
|
90
|
+
screenId = `watchlist-business-form-${state}`,
|
|
91
|
+
overrides,
|
|
92
|
+
onAction,
|
|
93
|
+
...shell
|
|
94
|
+
},
|
|
95
|
+
ref,
|
|
96
|
+
) => {
|
|
97
|
+
const copy = strings.form;
|
|
98
|
+
// `default` draws the CTA greyed, `filled` draws it live. The section is the
|
|
99
|
+
// spec, not the field contents (see note 3 above).
|
|
100
|
+
const empty = state === 'default';
|
|
101
|
+
|
|
102
|
+
// The label is the country NAME only. The flag is not part of it — it rides
|
|
103
|
+
// the dropdown's leading slot below, where Core paints the raster.
|
|
104
|
+
const options = countries.map((c) => ({
|
|
105
|
+
value: c.value,
|
|
106
|
+
label: c.label,
|
|
107
|
+
}));
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<PrizmaFormScreen
|
|
111
|
+
ref={ref}
|
|
112
|
+
title={copy.title}
|
|
113
|
+
subtitle={copy.subtitle}
|
|
114
|
+
ctaLabel={copy.ctaLabel}
|
|
115
|
+
ctaDisabled={empty}
|
|
116
|
+
ctaLoadingLabel={copy.ctaLoadingLabel}
|
|
117
|
+
/* Figma draws no verified tag on either form section, but GUIDELINES §1
|
|
118
|
+
and the standing owner rule (#F-30, #PI-8) keep header AND footer on
|
|
119
|
+
every non-capture screen — so nothing shifts between the form, the
|
|
120
|
+
spinner and the verdict. DEVIATIONS #WB-1. */
|
|
121
|
+
verifiedLabel={strings.verifiedLabel}
|
|
122
|
+
navLabel={strings.navLabel}
|
|
123
|
+
screenId={screenId}
|
|
124
|
+
overrides={overrides}
|
|
125
|
+
onAction={onAction}
|
|
126
|
+
{...shell}
|
|
127
|
+
>
|
|
128
|
+
<PrizmaDropdown
|
|
129
|
+
label={copy.country.label}
|
|
130
|
+
placeholder={copy.country.placeholder}
|
|
131
|
+
options={options}
|
|
132
|
+
defaultValue={values?.country ?? null}
|
|
133
|
+
/* A country catalogue is long enough that Core's own search bar is
|
|
134
|
+
the right behaviour; no purple section draws the menu open, so
|
|
135
|
+
nothing about its appearance is being invented here. */
|
|
136
|
+
searchable
|
|
137
|
+
searchPlaceholder={copy.country.searchPlaceholder}
|
|
138
|
+
clearSearchLabel={copy.country.clearSearchLabel}
|
|
139
|
+
/* Core's canonical flag raster in the leading slot, in the closed
|
|
140
|
+
field and every menu row alike — the slot `renderLeading` exists
|
|
141
|
+
for, and what Figma draws ahead of "United States" (see note 4). */
|
|
142
|
+
renderLeading={(option) => {
|
|
143
|
+
const match = countries.find((c) => c.value === option.value);
|
|
144
|
+
return match ? (
|
|
145
|
+
<PrizmaCountryFlag
|
|
146
|
+
country={{
|
|
147
|
+
code: match.value,
|
|
148
|
+
name: match.label,
|
|
149
|
+
dialCode: '',
|
|
150
|
+
flag: match.flag ?? '',
|
|
151
|
+
}}
|
|
152
|
+
/>
|
|
153
|
+
) : null;
|
|
154
|
+
}}
|
|
155
|
+
/>
|
|
156
|
+
<PrizmaTextField
|
|
157
|
+
label={copy.businessName.label}
|
|
158
|
+
placeholder={copy.businessName.placeholder}
|
|
159
|
+
autoComplete="organization"
|
|
160
|
+
defaultValue={values?.businessName ?? ''}
|
|
161
|
+
/>
|
|
162
|
+
<PrizmaTextField
|
|
163
|
+
label={copy.taxId.label}
|
|
164
|
+
placeholder={copy.taxId.placeholder}
|
|
165
|
+
autoComplete="off"
|
|
166
|
+
autoCapitalize="characters"
|
|
167
|
+
spellCheck={false}
|
|
168
|
+
defaultValue={values?.taxId ?? ''}
|
|
169
|
+
/>
|
|
170
|
+
</PrizmaFormScreen>
|
|
171
|
+
);
|
|
172
|
+
},
|
|
173
|
+
);
|
|
174
|
+
WatchlistBusinessFormScreen.displayName = 'WatchlistBusinessFormScreen';
|
|
175
|
+
|
|
176
|
+
export default WatchlistBusinessFormScreen;
|
|
@@ -0,0 +1,63 @@
|
|
|
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 { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface WatchlistBusinessProcessingScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `processing` slice. */
|
|
16
|
+
strings: WatchlistBusinessStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Watchlist for Business — the in-flight screen, built on the Processing
|
|
24
|
+
* archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
25
|
+
*
|
|
26
|
+
* Figma: the purple `watchlist.processing` section — the spinner over "Processing…"
|
|
27
|
+
* with a supporting line, no button, tag anchored at the bottom. That is exactly
|
|
28
|
+
* the pure case §6-F reserves for C rather than the Result archetype.
|
|
29
|
+
*
|
|
30
|
+
* The subtitle is what visually separates this screen from `success`: the
|
|
31
|
+
* spinner carries a second line, the verdict does not.
|
|
32
|
+
*/
|
|
33
|
+
export const WatchlistBusinessProcessingScreen = forwardRef<
|
|
34
|
+
HTMLDivElement,
|
|
35
|
+
WatchlistBusinessProcessingScreenProps
|
|
36
|
+
>(
|
|
37
|
+
(
|
|
38
|
+
{
|
|
39
|
+
strings,
|
|
40
|
+
screenId = 'watchlist-business-processing',
|
|
41
|
+
overrides,
|
|
42
|
+
onAction,
|
|
43
|
+
...shell
|
|
44
|
+
},
|
|
45
|
+
ref,
|
|
46
|
+
) => (
|
|
47
|
+
<PrizmaProcessingScreen
|
|
48
|
+
ref={ref}
|
|
49
|
+
status="loading"
|
|
50
|
+
title={strings.processing.title}
|
|
51
|
+
subtitle={strings.processing.subtitle}
|
|
52
|
+
verifiedLabel={strings.verifiedLabel}
|
|
53
|
+
navLabel={strings.navLabel}
|
|
54
|
+
screenId={screenId}
|
|
55
|
+
overrides={overrides}
|
|
56
|
+
onAction={onAction}
|
|
57
|
+
{...shell}
|
|
58
|
+
/>
|
|
59
|
+
),
|
|
60
|
+
);
|
|
61
|
+
WatchlistBusinessProcessingScreen.displayName = 'WatchlistBusinessProcessingScreen';
|
|
62
|
+
|
|
63
|
+
export default WatchlistBusinessProcessingScreen;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Watchlist for Business — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `🔍 Watchlist business - Screens specs + Localization`
|
|
4
|
+
// (BfHifNPAvPTpBlnMEDfg4J, page 5:13191). FOUR purple parent sections, all
|
|
5
|
+
// under one `watchlist.*` family:
|
|
6
|
+
// watchlist.default (7002:4494 → 7002:6018) — the empty lookup form
|
|
7
|
+
// watchlist.filled (7070:10549 → 7070:11692) — the same form carrying values
|
|
8
|
+
// watchlist.processing (5003:44743 → 5003:44744) — the spinner
|
|
9
|
+
// watchlist.success (5003:44753 → 5003:44754) — the positive verdict
|
|
10
|
+
//
|
|
11
|
+
// The module screens a BUSINESS (not a person) against sanction / PEP / adverse
|
|
12
|
+
// -media watchlists: the user picks the country of registration and supplies the
|
|
13
|
+
// legal name and, optionally, the tax identifier; the lookup then runs and
|
|
14
|
+
// reports back.
|
|
15
|
+
//
|
|
16
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
17
|
+
// so the host's locale pack drives the module (the Figma file ships ES + PT
|
|
18
|
+
// columns beside the EN one).
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The two purple form sections. They draw the SAME layout — nav → Title (H2, no
|
|
22
|
+
* subtitle) → Spacing/32 → three LABELLED fields → CTA → tag — and differ only
|
|
23
|
+
* in field content and whether the CTA is live, which is exactly what
|
|
24
|
+
* GUIDELINES §6-E means by "states are separate screens sharing the identical
|
|
25
|
+
* layout":
|
|
26
|
+
* - `default` — every field empty (the country dropdown on its placeholder),
|
|
27
|
+
* CTA greyed
|
|
28
|
+
* - `filled` — country selected and business name typed, CTA live
|
|
29
|
+
*
|
|
30
|
+
* Note what `filled` does NOT do: it leaves **Tax ID empty** and still enables
|
|
31
|
+
* the CTA, so the tax identifier is optional and does not gate the lookup
|
|
32
|
+
* (DEVIATIONS #WB-2).
|
|
33
|
+
*/
|
|
34
|
+
export type WatchlistBusinessFormState = 'default' | 'filled';
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* One selectable country of registration. Runtime data, never copy — the host
|
|
38
|
+
* owns the catalogue (a full ISO list is not a string table), exactly as Phone
|
|
39
|
+
* Input takes its dial codes as data.
|
|
40
|
+
*/
|
|
41
|
+
export interface WatchlistBusinessCountry {
|
|
42
|
+
/**
|
|
43
|
+
* Stable value. MUST be the ISO 3166-1 alpha-2 code ("US", "MX"): the screen
|
|
44
|
+
* feeds it to Core's `PrizmaCountryFlag`, which resolves the canonical
|
|
45
|
+
* 24×18 raster from the bundled flag bank by that code (DEVIATIONS #WB-4).
|
|
46
|
+
*/
|
|
47
|
+
value: string;
|
|
48
|
+
/** The country name as drawn ("United States"). */
|
|
49
|
+
label: string;
|
|
50
|
+
/**
|
|
51
|
+
* FALLBACK ONLY — the emoji glyph Core falls back to when `value` is outside
|
|
52
|
+
* the bundled raster bank. It is never the primary treatment: the flag is
|
|
53
|
+
* drawn as Core's raster in the dropdown's leading slot, not pasted into the
|
|
54
|
+
* option label.
|
|
55
|
+
*/
|
|
56
|
+
flag?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** The values the lookup form carries. Runtime data, never copy. */
|
|
60
|
+
export interface WatchlistBusinessFormValues {
|
|
61
|
+
/** A `WatchlistBusinessCountry.value`. */
|
|
62
|
+
country?: string;
|
|
63
|
+
/** The registered legal name, as typed. */
|
|
64
|
+
businessName?: string;
|
|
65
|
+
/** The tax identifier, as typed. Optional — see `WatchlistBusinessFormState`. */
|
|
66
|
+
taxId?: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Copy for one labelled field of the lookup form. */
|
|
70
|
+
export interface WatchlistBusinessFieldStrings {
|
|
71
|
+
/** Visible label above the field ("Business Name") — Figma draws a real label
|
|
72
|
+
* row here, unlike Phone Input / Email Input / CURP-enter, so Core's visible
|
|
73
|
+
* `label` slot is used rather than `aria-label` (DEVIATIONS #WB-3). */
|
|
74
|
+
label: string;
|
|
75
|
+
/** Placeholder inside the field. The two text fields draw none. */
|
|
76
|
+
placeholder?: string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface WatchlistBusinessStrings {
|
|
80
|
+
/** "verified by" attribution in the footer tag. */
|
|
81
|
+
verifiedLabel: string;
|
|
82
|
+
/** Accessible name for the logo nav row. */
|
|
83
|
+
navLabel?: string;
|
|
84
|
+
|
|
85
|
+
/** watchlist.{default,filled} */
|
|
86
|
+
form: {
|
|
87
|
+
/** H2 ("Watchlist for business"). */
|
|
88
|
+
title: string;
|
|
89
|
+
/** H5 — the purple sections draw none, kept for hosts that want one. */
|
|
90
|
+
subtitle?: string;
|
|
91
|
+
country: WatchlistBusinessFieldStrings & {
|
|
92
|
+
/** Search placeholder inside the open menu. */
|
|
93
|
+
searchPlaceholder?: string;
|
|
94
|
+
/** Accessible name for the menu's search-clear button. */
|
|
95
|
+
clearSearchLabel?: string;
|
|
96
|
+
};
|
|
97
|
+
businessName: WatchlistBusinessFieldStrings;
|
|
98
|
+
taxId: WatchlistBusinessFieldStrings;
|
|
99
|
+
/** Primary CTA ("Continue"). */
|
|
100
|
+
ctaLabel: string;
|
|
101
|
+
/** Accessible busy label, for hosts that keep the user on the form while
|
|
102
|
+
* the lookup runs instead of moving to the spinner screen. */
|
|
103
|
+
ctaLoadingLabel?: string;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/** watchlist.processing — the spinner while the lookup runs. */
|
|
107
|
+
processing: {
|
|
108
|
+
/** H2 ("Processing…"). */
|
|
109
|
+
title: string;
|
|
110
|
+
/** H5 ("This won't take long."). */
|
|
111
|
+
subtitle?: string;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/** watchlist.success — the positive verdict. Figma draws NO button. */
|
|
115
|
+
success: {
|
|
116
|
+
/** H2 ("Success!"). */
|
|
117
|
+
title: string;
|
|
118
|
+
/** H5 — the section draws none, kept for hosts that want one. */
|
|
119
|
+
subtitle?: string;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 { WatchlistBusinessStrings } from './WatchlistBusinessStrings';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
|
|
10
|
+
export interface WatchlistBusinessSuccessScreenProps
|
|
11
|
+
extends Omit<
|
|
12
|
+
PrizmaProcessingScreenProps,
|
|
13
|
+
'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'
|
|
14
|
+
> {
|
|
15
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
16
|
+
strings: WatchlistBusinessStrings;
|
|
17
|
+
screenId?: string;
|
|
18
|
+
overrides?: PrizmaScreenOverrides;
|
|
19
|
+
onAction?: PrizmaScreenActionHandler;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Watchlist for Business — the positive verdict, built on the Processing
|
|
24
|
+
* archetype (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
25
|
+
*
|
|
26
|
+
* Figma: the purple `watchlist.success` section — the status mark over
|
|
27
|
+
* "Success!", **no button**, no supporting line, tag anchored at the bottom.
|
|
28
|
+
* Because it draws no CTA it stays on C, not on the Result archetype: §6-F
|
|
29
|
+
* reserves C for exactly the pure no-button case, and Email Input's success
|
|
30
|
+
* already set that precedent against Phone Input's buttoned one (DEVIATIONS
|
|
31
|
+
* #EI-4).
|
|
32
|
+
*
|
|
33
|
+
* The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — this
|
|
34
|
+
* module's Figma still draws the two-tone filled disc, one icon sweep behind
|
|
35
|
+
* (DEVIATIONS #15, unchanged here).
|
|
36
|
+
*/
|
|
37
|
+
export const WatchlistBusinessSuccessScreen = forwardRef<
|
|
38
|
+
HTMLDivElement,
|
|
39
|
+
WatchlistBusinessSuccessScreenProps
|
|
40
|
+
>(
|
|
41
|
+
(
|
|
42
|
+
{
|
|
43
|
+
strings,
|
|
44
|
+
screenId = 'watchlist-business-success',
|
|
45
|
+
overrides,
|
|
46
|
+
onAction,
|
|
47
|
+
...shell
|
|
48
|
+
},
|
|
49
|
+
ref,
|
|
50
|
+
) => (
|
|
51
|
+
<PrizmaProcessingScreen
|
|
52
|
+
ref={ref}
|
|
53
|
+
status="success"
|
|
54
|
+
title={strings.success.title}
|
|
55
|
+
subtitle={strings.success.subtitle}
|
|
56
|
+
verifiedLabel={strings.verifiedLabel}
|
|
57
|
+
navLabel={strings.navLabel}
|
|
58
|
+
screenId={screenId}
|
|
59
|
+
overrides={overrides}
|
|
60
|
+
onAction={onAction}
|
|
61
|
+
{...shell}
|
|
62
|
+
/>
|
|
63
|
+
),
|
|
64
|
+
);
|
|
65
|
+
WatchlistBusinessSuccessScreen.displayName = 'WatchlistBusinessSuccessScreen';
|
|
66
|
+
|
|
67
|
+
export default WatchlistBusinessSuccessScreen;
|