@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,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `email.verifyEmail.*` sections. All five draw the SAME layout — nav →
|
|
3
|
+
* Title (H2 + H5) → Spacing/32 → a single email field → CTA → tag — and differ
|
|
4
|
+
* only in field content and CTA state, which is what GUIDELINES §6-E means by
|
|
5
|
+
* "states are separate screens sharing the identical layout":
|
|
6
|
+
* - `default` — empty field showing the placeholder, CTA enabled
|
|
7
|
+
* - `typing` — focused field with a partial address
|
|
8
|
+
* - `filled` — focused field with a complete address
|
|
9
|
+
* - `error` — negative field + clear ✕ + the invalid-format row
|
|
10
|
+
* - `loading` — field greyed while the code is requested, spinner in the CTA
|
|
11
|
+
*/
|
|
12
|
+
export type EmailInputVerifyState = 'default' | 'typing' | 'filled' | 'error' | 'loading';
|
|
13
|
+
/**
|
|
14
|
+
* The `email.OTP.*` sections — same layout, different code-field state:
|
|
15
|
+
* - `typing` — focused field, partial code, CTA enabled, and the line
|
|
16
|
+
* under the CTA is the RE-SEND COUNTDOWN, not the two links
|
|
17
|
+
* - `filled` — resting field, complete code, the two-link line
|
|
18
|
+
* - `processing` — code submitted: field greyed, spinner in the CTA, and the
|
|
19
|
+
* same sentence rendered INERT (no links)
|
|
20
|
+
* - `error` — wrong code: negative field + "Invalid code…", CTA disabled
|
|
21
|
+
* - `errorGeneric` — the second purple error section, same treatment carrying
|
|
22
|
+
* the generic "Something went wrong" row instead
|
|
23
|
+
*/
|
|
24
|
+
export type EmailInputOtpState = 'typing' | 'filled' | 'processing' | 'error' | 'errorGeneric';
|
|
25
|
+
export interface EmailInputStrings {
|
|
26
|
+
/** "verified by" attribution in the footer tag. */
|
|
27
|
+
verifiedLabel: string;
|
|
28
|
+
/** Accessible name for the logo nav row. */
|
|
29
|
+
navLabel?: string;
|
|
30
|
+
/** email.verifyEmail.* */
|
|
31
|
+
verify: {
|
|
32
|
+
/** H2 ("Verify your email"). */
|
|
33
|
+
title: string;
|
|
34
|
+
/** H5 ("We'll send you a code to ensure it's yours"). */
|
|
35
|
+
subtitle: string;
|
|
36
|
+
/** Field placeholder ("Email"). */
|
|
37
|
+
placeholder: string;
|
|
38
|
+
/**
|
|
39
|
+
* Accessible label for the email field.
|
|
40
|
+
*
|
|
41
|
+
* DEVIATIONS #EI-2 — Figma draws NO visible label row above the field: the
|
|
42
|
+
* placeholder ("Email") carries the whole meaning, measured on
|
|
43
|
+
* `email.verifyYourEmail.default` (28:13802) and unchanged across all five
|
|
44
|
+
* purple sections. A screen reader would therefore reach an unnamed input,
|
|
45
|
+
* so the copy rides `aria-label` instead of a drawn row — Core wins over
|
|
46
|
+
* Figma on the accessible name, and nothing new is painted. This is the
|
|
47
|
+
* #PI-4 precedent applied unchanged; Phone Input resolved the identical
|
|
48
|
+
* conflict the same way.
|
|
49
|
+
*/
|
|
50
|
+
fieldLabel?: string;
|
|
51
|
+
/** Accessible name for the clear ✕ affordance. Core ships no English
|
|
52
|
+
* default, so the row is only drawn when this is supplied. */
|
|
53
|
+
clearLabel?: string;
|
|
54
|
+
/** Error row on the `error` state ("Invalid email format"). */
|
|
55
|
+
errorText: string;
|
|
56
|
+
/** Primary CTA ("Continue"). */
|
|
57
|
+
ctaLabel: string;
|
|
58
|
+
/** Accessible busy label while the code is requested (`loading`). */
|
|
59
|
+
ctaLoadingLabel?: string;
|
|
60
|
+
};
|
|
61
|
+
/** email.OTP.* */
|
|
62
|
+
otp: {
|
|
63
|
+
/** H2 ("Enter the code we've sent to your email"). */
|
|
64
|
+
title: string;
|
|
65
|
+
/** H5 — carries the masked destination address, when a section shows one. */
|
|
66
|
+
subtitle?: string;
|
|
67
|
+
/** Accessible label for the code field (no visible label row in Figma). */
|
|
68
|
+
fieldLabel?: string;
|
|
69
|
+
/** Error row on `error` ("Invalid code. Please try again."). */
|
|
70
|
+
errorText: string;
|
|
71
|
+
/** Error row on `errorGeneric` ("Something went wrong"). */
|
|
72
|
+
genericErrorText: string;
|
|
73
|
+
/**
|
|
74
|
+
* The `typing` section draws a COUNTDOWN instead of the two links —
|
|
75
|
+
* "Resend code in 30s". Pre-formatted by the host, which owns the clock
|
|
76
|
+
* (a screen is one static spec state and runs no timer).
|
|
77
|
+
*/
|
|
78
|
+
resendCountdown?: string;
|
|
79
|
+
/**
|
|
80
|
+
* The line under the CTA on `filled` / `processing` / both error sections
|
|
81
|
+
* is ONE sentence carrying TWO separate links:
|
|
82
|
+
* "Didn't receive the code? [Resend code] or [Change email]".
|
|
83
|
+
* Split into four strings because the links are independently actionable —
|
|
84
|
+
* the host must tell a re-send from a return to email entry — and because a
|
|
85
|
+
* locale needs to order the fragments itself. Omit `resendPrompt` to render
|
|
86
|
+
* no line at all. DEVIATIONS #PI-10.
|
|
87
|
+
*/
|
|
88
|
+
resendPrompt?: string;
|
|
89
|
+
/** First link — re-sends the code. Emits `secondary`. */
|
|
90
|
+
resendLabel?: string;
|
|
91
|
+
/** The conjunction between the two links ("or"). */
|
|
92
|
+
resendSeparator?: string;
|
|
93
|
+
/** Second link — returns to email entry. Emits `tertiary`. */
|
|
94
|
+
changeEmailLabel?: string;
|
|
95
|
+
/** Primary CTA. */
|
|
96
|
+
ctaLabel: string;
|
|
97
|
+
/** Accessible / visible busy copy while the code is checked (`processing`). */
|
|
98
|
+
ctaLoadingLabel?: string;
|
|
99
|
+
};
|
|
100
|
+
/** email.OTP → `email.processing`: the post-submit spinner screen. */
|
|
101
|
+
processing: {
|
|
102
|
+
/** H2 shown under the spinner ("Processing…"). */
|
|
103
|
+
title: string;
|
|
104
|
+
subtitle?: string;
|
|
105
|
+
};
|
|
106
|
+
/** email.success */
|
|
107
|
+
success: {
|
|
108
|
+
/** H2 ("Email verified!"). */
|
|
109
|
+
title: string;
|
|
110
|
+
subtitle?: string;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* email.error.somethingWentWrong.
|
|
114
|
+
*
|
|
115
|
+
* DEVIATIONS #EI-5 — this is the module's ONLY error verdict. The purple
|
|
116
|
+
* `email.error` section (3058:103116) holds exactly one screen, and the file
|
|
117
|
+
* draws no connectivity section anywhere. Phone Input's error screen carries
|
|
118
|
+
* a `variant` axis precisely because its Figma splits `somethingWentWrong`
|
|
119
|
+
* from a no-connection screen with a Wi-Fi glyph; this module has nothing to
|
|
120
|
+
* switch between, so `EmailInputErrorScreen` ships NO `variant` prop and no
|
|
121
|
+
* Wi-Fi glyph. Adding either would be inventing a state the spec does not
|
|
122
|
+
* have. If a connectivity section is added upstream, this row is where the
|
|
123
|
+
* axis gets reinstated.
|
|
124
|
+
*/
|
|
125
|
+
error: {
|
|
126
|
+
title: string;
|
|
127
|
+
subtitle?: string;
|
|
128
|
+
ctaLabel: string;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Email Input — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `📨 Email - Screens specs + Localization` (IovIhDAPjR7zxjC4NKZzfq,
|
|
4
|
+
// page 5:13191). Four purple parent sections:
|
|
5
|
+
// email.verifyEmail — default / typing / filled / error / loading
|
|
6
|
+
// email.OTP — typing / filled / processing / error(×2) + email.processing
|
|
7
|
+
// email.error — somethingWentWrong
|
|
8
|
+
// email.success — success
|
|
9
|
+
//
|
|
10
|
+
// Sibling of Phone Input (`PhoneInputStrings.ts`) and deliberately shaped the
|
|
11
|
+
// same way: same archetypes, same state axes, same inline-link split. The two
|
|
12
|
+
// real differences are that the entry field is a single email TextField (no
|
|
13
|
+
// dial-code pairing, so no `Input / Combined` and no country list) and that the
|
|
14
|
+
// module draws no Silent-Network-Auth and no connectivity section.
|
|
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 alongside EN).
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EmailInputStrings } from './EmailInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface EmailInputSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
8
|
+
strings: EmailInputStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Email Input — the verified verdict, built on the Processing archetype
|
|
15
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `email.success` section. A centred status mark over a bare
|
|
18
|
+
* H2 ("Email verified!") with **no CTA and no subtitle** — the module hands
|
|
19
|
+
* control straight back to the flow.
|
|
20
|
+
*
|
|
21
|
+
* DEVIATIONS #EI-4 — this screen sits on archetype C while its Phone Input
|
|
22
|
+
* sibling sits on F, and that split is deliberate, not an oversight. Measured
|
|
23
|
+
* on `email.success` (31:19307): mark + H2 and then nothing — the CTA band is
|
|
24
|
+
* empty all the way down to the browser chrome, where the error verdict
|
|
25
|
+
* (40:33375) does draw "Try again" in the same slot. `phoneNumber.success`
|
|
26
|
+
* draws a button; `email.success` does not. §6-F reserves the Result archetype
|
|
27
|
+
* for "every verdict screen that needs a button" and keeps C as the pure
|
|
28
|
+
* no-button case, so following the archetype rule across two modules whose
|
|
29
|
+
* Figma disagrees is what produces two different archetypes here. Putting this
|
|
30
|
+
* screen on F to match its sibling would draw a button the spec omits.
|
|
31
|
+
*
|
|
32
|
+
* The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
|
|
33
|
+
* module Figma still draws the two-tone filled disc, one icon sweep behind
|
|
34
|
+
* (DEVIATIONS #15, unchanged here).
|
|
35
|
+
*/
|
|
36
|
+
export declare const EmailInputSuccessScreen: React.ForwardRefExoticComponent<EmailInputSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export default EmailInputSuccessScreen;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaProcessingScreen, } from './ProcessingScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Email Input — the verified verdict, built on the Processing archetype
|
|
8
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `email.success` section. A centred status mark over a bare
|
|
11
|
+
* H2 ("Email verified!") with **no CTA and no subtitle** — the module hands
|
|
12
|
+
* control straight back to the flow.
|
|
13
|
+
*
|
|
14
|
+
* DEVIATIONS #EI-4 — this screen sits on archetype C while its Phone Input
|
|
15
|
+
* sibling sits on F, and that split is deliberate, not an oversight. Measured
|
|
16
|
+
* on `email.success` (31:19307): mark + H2 and then nothing — the CTA band is
|
|
17
|
+
* empty all the way down to the browser chrome, where the error verdict
|
|
18
|
+
* (40:33375) does draw "Try again" in the same slot. `phoneNumber.success`
|
|
19
|
+
* draws a button; `email.success` does not. §6-F reserves the Result archetype
|
|
20
|
+
* for "every verdict screen that needs a button" and keeps C as the pure
|
|
21
|
+
* no-button case, so following the archetype rule across two modules whose
|
|
22
|
+
* Figma disagrees is what produces two different archetypes here. Putting this
|
|
23
|
+
* screen on F to match its sibling would draw a button the spec omits.
|
|
24
|
+
*
|
|
25
|
+
* The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
|
|
26
|
+
* module Figma still draws the two-tone filled disc, one icon sweep behind
|
|
27
|
+
* (DEVIATIONS #15, unchanged here).
|
|
28
|
+
*/
|
|
29
|
+
export const EmailInputSuccessScreen = forwardRef(({ strings, screenId = 'email-input-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, subtitle: strings.success.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
30
|
+
EmailInputSuccessScreen.displayName = 'EmailInputSuccessScreen';
|
|
31
|
+
export default EmailInputSuccessScreen;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EmailInputStrings, EmailInputVerifyState } from './EmailInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface EmailInputVerifyScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'children' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `verify` slice. */
|
|
8
|
+
strings: EmailInputStrings;
|
|
9
|
+
/** Which purple `email.verifyEmail.*` section to render. Default `default`. */
|
|
10
|
+
state?: EmailInputVerifyState;
|
|
11
|
+
/** The address as typed. Empty renders the placeholder (`default`). */
|
|
12
|
+
value?: string;
|
|
13
|
+
screenId?: string;
|
|
14
|
+
overrides?: PrizmaScreenOverrides;
|
|
15
|
+
onAction?: PrizmaScreenActionHandler;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Email Input — the address-entry screen, built on the Form archetype
|
|
19
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
20
|
+
*
|
|
21
|
+
* ONE screen for all five purple `email.verifyEmail.*` sections
|
|
22
|
+
* (`default` / `typing` / `filled` / `error` / `loading`): measured against the
|
|
23
|
+
* 390 frames they share an identical layout — nav → Title (H2 + H5) →
|
|
24
|
+
* Spacing/32 → the email field → CTA → tag — and differ ONLY in field content
|
|
25
|
+
* and CTA state.
|
|
26
|
+
*
|
|
27
|
+
* Where this parts company with its Phone Input sibling: there is no dial-code
|
|
28
|
+
* pairing here, so no `Input / Combined` row and no module CSS at all — a bare
|
|
29
|
+
* `PrizmaTextField` is the whole field stack, and every offset stays the
|
|
30
|
+
* archetype's.
|
|
31
|
+
*
|
|
32
|
+
* Field treatments, one per Figma frame rather than one for all:
|
|
33
|
+
* - `default` — resting field, placeholder only
|
|
34
|
+
* - `typing` / `filled` — Figma draws BOTH with the focused blue border and a
|
|
35
|
+
* caret, differing only in how much of the address is typed
|
|
36
|
+
* - `error` — Core's negative treatment plus the clear ✕ Figma draws on this
|
|
37
|
+
* section alone
|
|
38
|
+
* - `loading` — the one section Figma greys, with the spinner in the CTA
|
|
39
|
+
*
|
|
40
|
+
* Core's `readOnly` is deliberately NOT used to make the field static: it
|
|
41
|
+
* paints the DISABLED surface (owner definition 2026-07-12), which would grey
|
|
42
|
+
* the four resting states Figma draws white. The field is uncontrolled instead
|
|
43
|
+
* (DEVIATIONS #PI-6).
|
|
44
|
+
*/
|
|
45
|
+
export declare const EmailInputVerifyScreen: React.ForwardRefExoticComponent<EmailInputVerifyScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
export default EmailInputVerifyScreen;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
|
|
5
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Email Input — the address-entry screen, built on the Form archetype
|
|
9
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
10
|
+
*
|
|
11
|
+
* ONE screen for all five purple `email.verifyEmail.*` sections
|
|
12
|
+
* (`default` / `typing` / `filled` / `error` / `loading`): measured against the
|
|
13
|
+
* 390 frames they share an identical layout — nav → Title (H2 + H5) →
|
|
14
|
+
* Spacing/32 → the email field → CTA → tag — and differ ONLY in field content
|
|
15
|
+
* and CTA state.
|
|
16
|
+
*
|
|
17
|
+
* Where this parts company with its Phone Input sibling: there is no dial-code
|
|
18
|
+
* pairing here, so no `Input / Combined` row and no module CSS at all — a bare
|
|
19
|
+
* `PrizmaTextField` is the whole field stack, and every offset stays the
|
|
20
|
+
* archetype's.
|
|
21
|
+
*
|
|
22
|
+
* Field treatments, one per Figma frame rather than one for all:
|
|
23
|
+
* - `default` — resting field, placeholder only
|
|
24
|
+
* - `typing` / `filled` — Figma draws BOTH with the focused blue border and a
|
|
25
|
+
* caret, differing only in how much of the address is typed
|
|
26
|
+
* - `error` — Core's negative treatment plus the clear ✕ Figma draws on this
|
|
27
|
+
* section alone
|
|
28
|
+
* - `loading` — the one section Figma greys, with the spinner in the CTA
|
|
29
|
+
*
|
|
30
|
+
* Core's `readOnly` is deliberately NOT used to make the field static: it
|
|
31
|
+
* paints the DISABLED surface (owner definition 2026-07-12), which would grey
|
|
32
|
+
* the four resting states Figma draws white. The field is uncontrolled instead
|
|
33
|
+
* (DEVIATIONS #PI-6).
|
|
34
|
+
*/
|
|
35
|
+
export const EmailInputVerifyScreen = forwardRef(({ strings, state = 'default', value, screenId = `email-input-verify-${state}`, overrides, onAction, ...shell }, ref) => {
|
|
36
|
+
const busy = state === 'loading';
|
|
37
|
+
const invalid = state === 'error';
|
|
38
|
+
const focused = state === 'typing' || state === 'filled';
|
|
39
|
+
return (_jsx(PrizmaFormScreen, { ref: ref, title: strings.verify.title, subtitle: strings.verify.subtitle, ctaLabel: strings.verify.ctaLabel,
|
|
40
|
+
/* Figma's `loading` section swaps the CTA label for Core's spinner. */
|
|
41
|
+
ctaLoading: busy, ctaLoadingLabel: strings.verify.ctaLoadingLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaTextField, { className:
|
|
42
|
+
/* Core's OWN static-focus modifier — the class its CSS already
|
|
43
|
+
implements beside `:focus-within`. `PrizmaTextField` has no
|
|
44
|
+
`forceState` prop the way `PrizmaDropdown` does, so this is how a
|
|
45
|
+
static spec state draws the focus ring without redeclaring any
|
|
46
|
+
styling (DEVIATIONS #PI-7). */
|
|
47
|
+
focused ? 'prizma-input-textfield--focused' : undefined, type: "email", inputMode: "email", autoComplete: "email", "aria-label": strings.verify.fieldLabel, placeholder: strings.verify.placeholder,
|
|
48
|
+
/* Uncontrolled: a screen is one static spec state, so no `onChange`
|
|
49
|
+
is needed and no warning is raised. */
|
|
50
|
+
defaultValue: value ?? '', disabled: busy, error: invalid, errorText: invalid ? strings.verify.errorText : undefined,
|
|
51
|
+
/* The clear ✕ is drawn on the `error` section only. */
|
|
52
|
+
clearable: invalid, clearLabel: strings.verify.clearLabel }) }));
|
|
53
|
+
});
|
|
54
|
+
EmailInputVerifyScreen.displayName = 'EmailInputVerifyScreen';
|
|
55
|
+
export default EmailInputVerifyScreen;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { ErrorScreensStrings, ErrorScreensVariant } from './ErrorScreensStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface ErrorScreensScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'linkLabel' | 'disclaimer' | 'progress' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Family copy — this screen reads the slice its `variant` names. */
|
|
8
|
+
strings: ErrorScreensStrings;
|
|
9
|
+
/** Which section to render. Default `sessionExpired`. */
|
|
10
|
+
variant?: ErrorScreensVariant;
|
|
11
|
+
/** `unsupportedBrowser` only — the real session URL to show above the CTA. */
|
|
12
|
+
sessionUrl?: string;
|
|
13
|
+
/** `unsupportedBrowser` only — draw the "link copied" Snackbar (the frame's
|
|
14
|
+
* second state). Default `false`. */
|
|
15
|
+
copied?: boolean;
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error screens — the session-level failures, built on the Result archetype
|
|
22
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
23
|
+
*
|
|
24
|
+
* ONE screen for all three generic sections. They draw the identical skeleton —
|
|
25
|
+
* a centred mark + title + supporting line over a CTA band — and differ only in
|
|
26
|
+
* copy, in which mark leads, and in what the band carries:
|
|
27
|
+
*
|
|
28
|
+
* - `sessionExpired` — canonical negative mark, NO CTA (a dead end)
|
|
29
|
+
* - `noConnection` — Wi-Fi glyph, "Refresh"
|
|
30
|
+
* - `unsupportedBrowser` — canonical negative mark, the session URL above
|
|
31
|
+
* "Copy link", with "Continue anyways" under it
|
|
32
|
+
*
|
|
33
|
+
* Chrome is CONSTANT. All three frames are drawn without the logo header and
|
|
34
|
+
* without the verified tag; both are kept here, because the owner rule of
|
|
35
|
+
* 2026-08-18 (#F-30, #F-34) makes the chrome the same on every screen so
|
|
36
|
+
* nothing shifts between states, and every module's connectivity screen must
|
|
37
|
+
* read identically (#PI-8). Same call `GeolocationErrorScreen` already makes
|
|
38
|
+
* for its own `noNetwork`.
|
|
39
|
+
*
|
|
40
|
+
* Three things Figma draws that this screen does not, all reported rather than
|
|
41
|
+
* worked around:
|
|
42
|
+
* - **The browser-window mark.** `unsupportedBrowser` leads with a red browser
|
|
43
|
+
* window carrying an ✕. The canonical bank has no such glyph, so the screen
|
|
44
|
+
* uses Core's negative status mark — the nearest thing that means the same
|
|
45
|
+
* (rule 1, GUIDELINES §10; the same substitution logic as #10 / #DC-23).
|
|
46
|
+
* Mint the glyph or bless the substitution.
|
|
47
|
+
* - **Links inside the supporting line.** Figma renders "Safari" and "Chrome"
|
|
48
|
+
* as blue in-sentence links; Core's `PrizmaTitle` subtitle is a plain
|
|
49
|
+
* `string`, so the sentence renders in one colour. Same open Core request as
|
|
50
|
+
* the step rows: a `ReactNode` subtitle.
|
|
51
|
+
* - **"Continue anyways" above the CTA.** Archetype F renders its tertiary link
|
|
52
|
+
* BELOW the button stack, so this screen ships inverted against its frame.
|
|
53
|
+
* The archetype owns the order (see `PermissionsAllowScreen` for the same
|
|
54
|
+
* escalation).
|
|
55
|
+
*
|
|
56
|
+
* The "link copied" Snackbar rides the archetype's `progress` slot — the only
|
|
57
|
+
* block that renders BETWEEN the nav and the content, which is exactly where
|
|
58
|
+
* the frame draws it. `bandContent` would have put it above the buttons instead
|
|
59
|
+
* (the workaround #VS-17 rejected).
|
|
60
|
+
*/
|
|
61
|
+
export declare const ErrorScreensScreen: React.ForwardRefExoticComponent<ErrorScreensScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
export default ErrorScreensScreen;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconWifiOff } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaSnackbar } from '@incodetech/prizma-core-web/snackbar';
|
|
6
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
/**
|
|
9
|
+
* Error screens — the session-level failures, built on the Result archetype
|
|
10
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
11
|
+
*
|
|
12
|
+
* ONE screen for all three generic sections. They draw the identical skeleton —
|
|
13
|
+
* a centred mark + title + supporting line over a CTA band — and differ only in
|
|
14
|
+
* copy, in which mark leads, and in what the band carries:
|
|
15
|
+
*
|
|
16
|
+
* - `sessionExpired` — canonical negative mark, NO CTA (a dead end)
|
|
17
|
+
* - `noConnection` — Wi-Fi glyph, "Refresh"
|
|
18
|
+
* - `unsupportedBrowser` — canonical negative mark, the session URL above
|
|
19
|
+
* "Copy link", with "Continue anyways" under it
|
|
20
|
+
*
|
|
21
|
+
* Chrome is CONSTANT. All three frames are drawn without the logo header and
|
|
22
|
+
* without the verified tag; both are kept here, because the owner rule of
|
|
23
|
+
* 2026-08-18 (#F-30, #F-34) makes the chrome the same on every screen so
|
|
24
|
+
* nothing shifts between states, and every module's connectivity screen must
|
|
25
|
+
* read identically (#PI-8). Same call `GeolocationErrorScreen` already makes
|
|
26
|
+
* for its own `noNetwork`.
|
|
27
|
+
*
|
|
28
|
+
* Three things Figma draws that this screen does not, all reported rather than
|
|
29
|
+
* worked around:
|
|
30
|
+
* - **The browser-window mark.** `unsupportedBrowser` leads with a red browser
|
|
31
|
+
* window carrying an ✕. The canonical bank has no such glyph, so the screen
|
|
32
|
+
* uses Core's negative status mark — the nearest thing that means the same
|
|
33
|
+
* (rule 1, GUIDELINES §10; the same substitution logic as #10 / #DC-23).
|
|
34
|
+
* Mint the glyph or bless the substitution.
|
|
35
|
+
* - **Links inside the supporting line.** Figma renders "Safari" and "Chrome"
|
|
36
|
+
* as blue in-sentence links; Core's `PrizmaTitle` subtitle is a plain
|
|
37
|
+
* `string`, so the sentence renders in one colour. Same open Core request as
|
|
38
|
+
* the step rows: a `ReactNode` subtitle.
|
|
39
|
+
* - **"Continue anyways" above the CTA.** Archetype F renders its tertiary link
|
|
40
|
+
* BELOW the button stack, so this screen ships inverted against its frame.
|
|
41
|
+
* The archetype owns the order (see `PermissionsAllowScreen` for the same
|
|
42
|
+
* escalation).
|
|
43
|
+
*
|
|
44
|
+
* The "link copied" Snackbar rides the archetype's `progress` slot — the only
|
|
45
|
+
* block that renders BETWEEN the nav and the content, which is exactly where
|
|
46
|
+
* the frame draws it. `bandContent` would have put it above the buttons instead
|
|
47
|
+
* (the workaround #VS-17 rejected).
|
|
48
|
+
*/
|
|
49
|
+
export const ErrorScreensScreen = forwardRef(({ strings, variant = 'sessionExpired', sessionUrl, copied = false, screenId = `error-screens-${variant}`, overrides, onAction, ...shell }, ref) => {
|
|
50
|
+
const unsupported = variant === 'unsupportedBrowser';
|
|
51
|
+
const noConnection = variant === 'noConnection';
|
|
52
|
+
const copy = unsupported
|
|
53
|
+
? strings.unsupportedBrowser
|
|
54
|
+
: noConnection
|
|
55
|
+
? strings.noConnection
|
|
56
|
+
: strings.sessionExpired;
|
|
57
|
+
return (_jsx(PrizmaResultScreen, { ref: ref,
|
|
58
|
+
/* The connectivity screen leads with the Wi-Fi glyph instead of a
|
|
59
|
+
status mark; the other two carry the canonical negative mark. */
|
|
60
|
+
status: noConnection ? 'none' : 'error', glyph: noConnection ? (_jsx("span", { className: [
|
|
61
|
+
'prizma-screen-layout__glyph',
|
|
62
|
+
'prizma-screen-layout__glyph--negative',
|
|
63
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
64
|
+
]
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.join(' '), children: _jsx(IconWifiOff, { size: "l" }) })) : undefined, progress: unsupported && copied ? (_jsx(PrizmaSnackbar, { state: "success", contentResizing: "fill", children: strings.unsupportedBrowser.copiedLabel })) : undefined, title: copy.title, subtitle: copy.subtitle, disclaimer: unsupported
|
|
67
|
+
? sessionUrl ?? strings.unsupportedBrowser.urlPlaceholder
|
|
68
|
+
: undefined, ctaLabel: copy.ctaLabel, linkLabel: unsupported ? strings.unsupportedBrowser.continueLabel : undefined, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
|
|
69
|
+
});
|
|
70
|
+
ErrorScreensScreen.displayName = 'ErrorScreensScreen';
|
|
71
|
+
export default ErrorScreensScreen;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three sections.
|
|
3
|
+
* - `sessionExpired` — the link is dead; the user must go back to the provider
|
|
4
|
+
* - `noConnection` — the network went away; retry when it returns
|
|
5
|
+
* - `unsupportedBrowser` — the SDK cannot run here; copy the link and move
|
|
6
|
+
*/
|
|
7
|
+
export type ErrorScreensVariant = 'sessionExpired' | 'noConnection' | 'unsupportedBrowser';
|
|
8
|
+
export interface ErrorScreensCopy {
|
|
9
|
+
title: string;
|
|
10
|
+
subtitle?: string;
|
|
11
|
+
/** Primary CTA. Omit — as `sessionExpired` does — for a dead end. */
|
|
12
|
+
ctaLabel?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ErrorScreensStrings {
|
|
15
|
+
/** Accessible name for the logo nav region (i18n — no baked-in English). */
|
|
16
|
+
navLabel?: string;
|
|
17
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
18
|
+
verifiedLabel: string;
|
|
19
|
+
sessionExpired: ErrorScreensCopy;
|
|
20
|
+
noConnection: ErrorScreensCopy;
|
|
21
|
+
unsupportedBrowser: ErrorScreensCopy & {
|
|
22
|
+
/** The session URL shown above the CTA, for pasting into a supported
|
|
23
|
+
* browser. A host passes the real one through `sessionUrl`; this is the
|
|
24
|
+
* fallback the gallery draws. */
|
|
25
|
+
urlPlaceholder?: string;
|
|
26
|
+
/** Tertiary link — "Continue anyways". */
|
|
27
|
+
continueLabel: string;
|
|
28
|
+
/** Snackbar copy after the link is copied — the frame's second state. */
|
|
29
|
+
copiedLabel: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Error screens — copy contract for the GENERIC family.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `Module Generic Screens` (qGJjfL4O0JSjz1x4tOjJn8):
|
|
4
|
+
//
|
|
5
|
+
// 79:360 ErrorSessionReopen → `sessionExpired`
|
|
6
|
+
// 214:3357 Geolocation.error.noNetwork → `noConnection`
|
|
7
|
+
// 240:154 Error screen - Unsupported browser → `unsupportedBrowser`
|
|
8
|
+
//
|
|
9
|
+
// The three failures that belong to the SESSION rather than to any module: the
|
|
10
|
+
// link has expired, the network went away, the browser cannot run the SDK.
|
|
11
|
+
// Every module can hit all three, which is why they are drawn once in the
|
|
12
|
+
// generic file — a user who sees three different "no internet" screens in one
|
|
13
|
+
// journey reads them as three different products.
|
|
14
|
+
//
|
|
15
|
+
// `noConnection` is deliberately the same screen every module already ships
|
|
16
|
+
// (`FaceCaptureNoConnectionScreen`, `IdCaptureNoConnectionScreen`,
|
|
17
|
+
// `DocumentCaptureNoConnectionScreen`, `GeolocationErrorScreen`'s `noNetwork`).
|
|
18
|
+
// The generic entry is where the shape is DOCUMENTED; the module copies stay
|
|
19
|
+
// put until someone retires them deliberately, because deleting four exported
|
|
20
|
+
// components to save one screen is a breaking change for every host that
|
|
21
|
+
// imports them. Flagged for the owner.
|
|
22
|
+
//
|
|
23
|
+
// The family has no flow of its own: each of these is entered from wherever the
|
|
24
|
+
// session broke and exits to a retry or to nothing. Core Lab lists it as a
|
|
25
|
+
// library of states.
|
|
26
|
+
//
|
|
27
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here.
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaCaptureScreenProps } from './CaptureScreen';
|
|
3
|
+
import type { FaceCaptureCapturingState, FaceCaptureStrings } from './FaceCaptureStrings';
|
|
4
|
+
import './FaceCaptureLayout.css';
|
|
5
|
+
export interface FaceCaptureCapturingScreenProps extends Omit<PrizmaCaptureScreenProps, 'state' | 'title' | 'feedbackText' | 'statusLabels' | 'verifiedLabel' | 'navLabel'> {
|
|
6
|
+
/** Module copy — this screen reads the `capturing` slice (+ shared labels). */
|
|
7
|
+
strings: FaceCaptureStrings;
|
|
8
|
+
/** Which purple `faceCapture.capturing.*` spec section to render. */
|
|
9
|
+
state?: FaceCaptureCapturingState;
|
|
10
|
+
/** Live camera feed (<video>) or sample still (<img>) for the ring window. */
|
|
11
|
+
camera?: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Face Capture — auto-capture stage (Archetype B, GUIDELINES.md §6-B).
|
|
15
|
+
* Figma: the 15 purple `faceCapture.capturing.*` sections — ring-state and
|
|
16
|
+
* instruction-copy variants of this ONE screen. Ring, silhouette, glow, and the
|
|
17
|
+
* instruction line all come from Core's PrizmaSelfieCapture via the
|
|
18
|
+
* CaptureScreen archetype — never re-implemented (§7).
|
|
19
|
+
*
|
|
20
|
+
* The instruction goes to the component's own `feedbackText` slot, NOT to the
|
|
21
|
+
* archetype's H2-below-the-ring slot: in Figma the line lives INSIDE the
|
|
22
|
+
* `Capture / Selfie` instance at Spacing/32 under the ring (measured y=407 vs
|
|
23
|
+
* ring bottom 375), which is exactly where the component puts it. Routing it
|
|
24
|
+
* through the archetype's `__below-capture` H2 instead would add the
|
|
25
|
+
* component's own 40px bottom padding on top of that 32px and change the type
|
|
26
|
+
* role — DEVIATIONS.md #12.
|
|
27
|
+
*
|
|
28
|
+
* The archetype adds no offsets of its own — the component owns that spacing
|
|
29
|
+
* (same deviation row).
|
|
30
|
+
*/
|
|
31
|
+
export declare const FaceCaptureCapturingScreen: React.ForwardRefExoticComponent<FaceCaptureCapturingScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export default FaceCaptureCapturingScreen;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaCaptureScreen } from './CaptureScreen';
|
|
5
|
+
import './FaceCaptureLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Purple `faceCapture.capturing.*` state → Core PrizmaSelfieCapture ring state.
|
|
8
|
+
* - `initiating` — grey ring, blank disc, camera not yet revealed (`enabled`).
|
|
9
|
+
* - `getReady` — face detected, blue glow arc while the capture happens
|
|
10
|
+
* (`ready`). NOTE: the module Figma cell still shows the silhouette during
|
|
11
|
+
* this state; Core hides it per the owner's choreography (2026-07-14) —
|
|
12
|
+
* DEVIATIONS.md #13. The design system wins.
|
|
13
|
+
* - every feedback state — camera + silhouette guide (`empty`) with the
|
|
14
|
+
* instruction line below the ring.
|
|
15
|
+
*/
|
|
16
|
+
const SELFIE_STATE = {
|
|
17
|
+
initiating: 'enabled',
|
|
18
|
+
getReady: 'ready',
|
|
19
|
+
alignFace: 'empty',
|
|
20
|
+
lookAtCamera: 'empty',
|
|
21
|
+
tooDark: 'empty',
|
|
22
|
+
tooBright: 'empty',
|
|
23
|
+
eyesClosed: 'empty',
|
|
24
|
+
maskDetected: 'empty',
|
|
25
|
+
glassesDetected: 'empty',
|
|
26
|
+
hatDetected: 'empty',
|
|
27
|
+
moveRight: 'empty',
|
|
28
|
+
moveLeft: 'empty',
|
|
29
|
+
moveCloser: 'empty',
|
|
30
|
+
moveAway: 'empty',
|
|
31
|
+
faceOcclusion: 'empty',
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Face Capture — auto-capture stage (Archetype B, GUIDELINES.md §6-B).
|
|
35
|
+
* Figma: the 15 purple `faceCapture.capturing.*` sections — ring-state and
|
|
36
|
+
* instruction-copy variants of this ONE screen. Ring, silhouette, glow, and the
|
|
37
|
+
* instruction line all come from Core's PrizmaSelfieCapture via the
|
|
38
|
+
* CaptureScreen archetype — never re-implemented (§7).
|
|
39
|
+
*
|
|
40
|
+
* The instruction goes to the component's own `feedbackText` slot, NOT to the
|
|
41
|
+
* archetype's H2-below-the-ring slot: in Figma the line lives INSIDE the
|
|
42
|
+
* `Capture / Selfie` instance at Spacing/32 under the ring (measured y=407 vs
|
|
43
|
+
* ring bottom 375), which is exactly where the component puts it. Routing it
|
|
44
|
+
* through the archetype's `__below-capture` H2 instead would add the
|
|
45
|
+
* component's own 40px bottom padding on top of that 32px and change the type
|
|
46
|
+
* role — DEVIATIONS.md #12.
|
|
47
|
+
*
|
|
48
|
+
* The archetype adds no offsets of its own — the component owns that spacing
|
|
49
|
+
* (same deviation row).
|
|
50
|
+
*/
|
|
51
|
+
export const FaceCaptureCapturingScreen = forwardRef(({ strings, state = 'initiating', camera, screenId = 'face-capture-capturing', className, ...rest }, ref) => (_jsx(PrizmaCaptureScreen, { ref: ref, className: className, state: SELFIE_STATE[state], camera: camera, feedbackText: strings.capturing[state], verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, ...rest })));
|
|
52
|
+
FaceCaptureCapturingScreen.displayName = 'FaceCaptureCapturingScreen';
|
|
53
|
+
export default FaceCaptureCapturingScreen;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Face Capture — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes do not already own. Every value is a
|
|
4
|
+
* token; each departure from GUIDELINES.md carries a numbered row in
|
|
5
|
+
* DEVIATIONS.md.
|
|
6
|
+
*
|
|
7
|
+
* The pilot's other three additions were promoted INTO the foundation
|
|
8
|
+
* (`ScreenLayout.css`) once they proved to be recurring patterns rather than
|
|
9
|
+
* module quirks: the CTA band recipe (`__band`, DEVIATIONS #8), the no-nav
|
|
10
|
+
* content offset for generic errors (`__content--no-nav`, #9), and the capture
|
|
11
|
+
* stage offset fix (`__content--capture` now adds nothing, #12). Wave agents
|
|
12
|
+
* inherit all three as correct defaults.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* Nothing module-specific is left: the non-status glyph slot this file used to
|
|
16
|
+
* own (`.face-capture-glyph`) was the third byte-identical copy of one pattern,
|
|
17
|
+
* so it moved to `ScreenLayout.css` as `__glyph` — DEVIATIONS #DC-29, closed.
|
|
18
|
+
* The file is kept as the module's landing place for future additions. */
|