@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,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PermissionsCapability, PermissionsStrings } from './PermissionsStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PermissionsRequiredScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'children' | 'ctaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Family copy โ this screen reads the `required` slice. */
|
|
8
|
+
strings: PermissionsStrings;
|
|
9
|
+
/** Which capability is being asked for. Keys the first row's glyph. Default `camera`. */
|
|
10
|
+
capability?: PermissionsCapability;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Permissions โ "Camera permission is required", built on the List archetype
|
|
17
|
+
* (GUIDELINES.md ยง6-G, `PrizmaListScreen`).
|
|
18
|
+
*
|
|
19
|
+
* Figma: `1-3-2-id` of the `Permissions` section (qGJjfL4O0JSjz1x4tOjJn8,
|
|
20
|
+
* 3:1193). This is the screen a user lands on after refusing the browser's own
|
|
21
|
+
* prompt: a warning mark, the headline, three rows saying what the capability
|
|
22
|
+
* is for, a tertiary "quit" link and the ask.
|
|
23
|
+
*
|
|
24
|
+
* `1-3-2-id-quit-process` is the SAME screen with an iOS confirm alert layered
|
|
25
|
+
* over it โ an OS surface, not a second Prizma screen, so it is not built here
|
|
26
|
+
* (see `PermissionsStrings.ts`).
|
|
27
|
+
*
|
|
28
|
+
* `showHeader={false}` keeps the section's logo-free chrome โ the flow has not
|
|
29
|
+
* started โ with the nav row still reserved so nothing shifts on the next
|
|
30
|
+
* screen.
|
|
31
|
+
*
|
|
32
|
+
* Figma draws the status mark as a filled amber disc; Core renders the
|
|
33
|
+
* canonical OUTLINE warning mark (icon-outline sweep, DEVIATIONS #15). The
|
|
34
|
+
* generic file is one sweep behind, exactly as the module files were.
|
|
35
|
+
*/
|
|
36
|
+
export declare const PermissionsRequiredScreen: React.ForwardRefExoticComponent<PermissionsRequiredScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export default PermissionsRequiredScreen;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { IconApproval, IconBankCardSearch, IconCamera, IconGeoPin, IconMicrophone, } from '@incodetech/prizma-core-icons';
|
|
5
|
+
import { PrizmaCardListCommonIssues } from '@incodetech/prizma-core-web/card-list';
|
|
6
|
+
import { PrizmaListScreen } from './ListScreen';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
/**
|
|
9
|
+
* The reason rows' leading glyphs, in the order the frame lists them: the
|
|
10
|
+
* capability itself ยท what it proves ยท that it is required. Canonical bank only
|
|
11
|
+
* (ยง10). The first row is keyed to the capability so a microphone prompt does
|
|
12
|
+
* not lead with a camera.
|
|
13
|
+
*/
|
|
14
|
+
const LEAD_ICON = {
|
|
15
|
+
camera: _jsx(IconCamera, { size: "m" }),
|
|
16
|
+
microphone: _jsx(IconMicrophone, { size: "m" }),
|
|
17
|
+
location: _jsx(IconGeoPin, { size: "m" }),
|
|
18
|
+
};
|
|
19
|
+
const TRAILING_ICONS = [
|
|
20
|
+
_jsx(IconBankCardSearch, { size: "m" }, "authenticity"),
|
|
21
|
+
_jsx(IconApproval, { size: "m" }, "required"),
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Permissions โ "Camera permission is required", built on the List archetype
|
|
25
|
+
* (GUIDELINES.md ยง6-G, `PrizmaListScreen`).
|
|
26
|
+
*
|
|
27
|
+
* Figma: `1-3-2-id` of the `Permissions` section (qGJjfL4O0JSjz1x4tOjJn8,
|
|
28
|
+
* 3:1193). This is the screen a user lands on after refusing the browser's own
|
|
29
|
+
* prompt: a warning mark, the headline, three rows saying what the capability
|
|
30
|
+
* is for, a tertiary "quit" link and the ask.
|
|
31
|
+
*
|
|
32
|
+
* `1-3-2-id-quit-process` is the SAME screen with an iOS confirm alert layered
|
|
33
|
+
* over it โ an OS surface, not a second Prizma screen, so it is not built here
|
|
34
|
+
* (see `PermissionsStrings.ts`).
|
|
35
|
+
*
|
|
36
|
+
* `showHeader={false}` keeps the section's logo-free chrome โ the flow has not
|
|
37
|
+
* started โ with the nav row still reserved so nothing shifts on the next
|
|
38
|
+
* screen.
|
|
39
|
+
*
|
|
40
|
+
* Figma draws the status mark as a filled amber disc; Core renders the
|
|
41
|
+
* canonical OUTLINE warning mark (icon-outline sweep, DEVIATIONS #15). The
|
|
42
|
+
* generic file is one sweep behind, exactly as the module files were.
|
|
43
|
+
*/
|
|
44
|
+
export const PermissionsRequiredScreen = forwardRef(({ strings, capability = 'camera', screenId = 'permissions-required', showHeader = false, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaListScreen, { ref: ref, showHeader: showHeader, status: "warning", title: strings.required.title, subtitle: strings.required.description, ctaLabel: strings.required.ctaLabel, linkLabel: strings.required.quitLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaCardListCommonIssues, { items: strings.required.rows.map((row, i) => ({
|
|
45
|
+
icon: i === 0 ? LEAD_ICON[capability] : TRAILING_ICONS[(i - 1) % TRAILING_ICONS.length],
|
|
46
|
+
title: row.title,
|
|
47
|
+
subtitle: row.description,
|
|
48
|
+
showSubtitle: Boolean(row.description),
|
|
49
|
+
})) }) })));
|
|
50
|
+
PermissionsRequiredScreen.displayName = 'PermissionsRequiredScreen';
|
|
51
|
+
export default PermissionsRequiredScreen;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capability being asked for. The Figma section is drawn for the camera
|
|
3
|
+
* throughout, but the skeleton is identical for a microphone or a location
|
|
4
|
+
* prompt โ so the screens never name the device themselves, the copy does, and
|
|
5
|
+
* this type exists only to key the reason-row glyphs.
|
|
6
|
+
*/
|
|
7
|
+
export type PermissionsCapability = 'camera' | 'microphone' | 'location';
|
|
8
|
+
/** A single reason row โ Core `PrizmaCardListCommonIssues` rows. */
|
|
9
|
+
export interface PermissionsReasonRow {
|
|
10
|
+
title: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Which browser's "turn it back on" journey to show. `safariIos` is the base
|
|
15
|
+
* `1-4-2-id` frame; the other four are the `Android browsers` section of the
|
|
16
|
+
* Web flow (4:8159). Re-enabling a permission is a different journey in every
|
|
17
|
+
* browser, which is why one screen carries five step lists rather than five
|
|
18
|
+
* screens carrying one skeleton.
|
|
19
|
+
*/
|
|
20
|
+
export type PermissionsBrowser = 'safariIos' | 'chromeAndroid' | 'firefoxAndroid' | 'samsungAndroid' | 'operaAndroid';
|
|
21
|
+
/**
|
|
22
|
+
* Step kind โ canonical bank glyph, resolved in
|
|
23
|
+
* `PermissionsBrowserStepsScreen`. Figma leads every row with OS/browser chrome
|
|
24
|
+
* the Prizma bank does not ship โ a โฎ overflow, a gear tile, a permission
|
|
25
|
+
* toggle, and each browser's own logo on the last row. Shipping those would
|
|
26
|
+
* mean inventing primitives and bundling brand rasters, so each row takes the
|
|
27
|
+
* nearest canonical glyph. Same substitution table Geolocation already
|
|
28
|
+
* escalated (`GeolocationBrowserStepsScreen`); this family reuses it rather
|
|
29
|
+
* than inventing a second one.
|
|
30
|
+
*/
|
|
31
|
+
export type PermissionsStepKind = 'settings' | 'browser' | 'menu' | 'permissions' | 'camera' | 'toggle' | 'device' | 'apps' | 'return';
|
|
32
|
+
export interface PermissionsStep {
|
|
33
|
+
kind: PermissionsStepKind;
|
|
34
|
+
label: string;
|
|
35
|
+
}
|
|
36
|
+
export interface PermissionsBrowserSteps {
|
|
37
|
+
/** Names the browser under the headline. Figma labels the section, not the
|
|
38
|
+
* screen; the label keeps five otherwise near-identical cards apart. */
|
|
39
|
+
label: string;
|
|
40
|
+
steps: PermissionsStep[];
|
|
41
|
+
}
|
|
42
|
+
export interface PermissionsStrings {
|
|
43
|
+
/** Accessible name for the logo nav region (i18n โ no baked-in English). */
|
|
44
|
+
navLabel?: string;
|
|
45
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
46
|
+
verifiedLabel: string;
|
|
47
|
+
/** `1-3-2-id` โ the permission was refused and the flow explains why it needs it. */
|
|
48
|
+
required: {
|
|
49
|
+
title: string;
|
|
50
|
+
/** Optional line under the title. Figma's frame draws the rows alone. */
|
|
51
|
+
description?: string;
|
|
52
|
+
rows: PermissionsReasonRow[];
|
|
53
|
+
/** Tertiary link โ "Quit process". */
|
|
54
|
+
quitLabel: string;
|
|
55
|
+
ctaLabel: string;
|
|
56
|
+
};
|
|
57
|
+
/** `1-3-2-id-allow-camera` โ the first ask, before any refusal. */
|
|
58
|
+
allow: {
|
|
59
|
+
title: string;
|
|
60
|
+
subtitle?: string;
|
|
61
|
+
quitLabel: string;
|
|
62
|
+
ctaLabel: string;
|
|
63
|
+
};
|
|
64
|
+
/** `1-4-2-id` + the four `Android browsers` siblings. */
|
|
65
|
+
browserSteps: {
|
|
66
|
+
title: string;
|
|
67
|
+
ctaLabel: string;
|
|
68
|
+
browsers: Record<PermissionsBrowser, PermissionsBrowserSteps>;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Permission screens โ copy contract for the GENERIC family.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `Module Generic Screens` (qGJjfL4O0JSjz1x4tOjJn8), section
|
|
4
|
+
// `Permissions` (3:1193), with the two full-flow frames `๐ iOS` (3:7788) and
|
|
5
|
+
// `๐ Web` (3:620).
|
|
6
|
+
//
|
|
7
|
+
// These screens are not one module's. Every module that reaches for the camera
|
|
8
|
+
// โ ID Capture, Face Capture, Document Capture, Video Selfie โ shows the SAME
|
|
9
|
+
// three surfaces when the browser or the OS says no, which is why the file that
|
|
10
|
+
// documents them is called "Generic Screens" and why they live here rather than
|
|
11
|
+
// under a module prefix. `IdCapturePermissionScreen` predates this family and
|
|
12
|
+
// is the ID Capture-flavoured copy of the same skeleton; it stays where it is so
|
|
13
|
+
// nothing that imports it breaks (DEVIATIONS #IDC-26).
|
|
14
|
+
//
|
|
15
|
+
// The section's seven frames collapse onto THREE built screens:
|
|
16
|
+
//
|
|
17
|
+
// 1-3-2-id โ PermissionsRequiredScreen (reason rows)
|
|
18
|
+
// 1-3-2-id-allow-camera โ PermissionsAllowScreen (subtitle)
|
|
19
|
+
// 1-4-2-id (+ 4 Android siblings) โ PermissionsBrowserStepsScreen
|
|
20
|
+
//
|
|
21
|
+
// The other four are OS chrome and are NOT built:
|
|
22
|
+
//
|
|
23
|
+
// 1-3-1-id-permission-modal the browser's own "Allow camera access" sheet
|
|
24
|
+
// 1-4-1-id the iOS "โฆWould Like to Access the Camera" alert
|
|
25
|
+
// 1-3-2-id-quit-process an iOS confirm alert layered over 1-3-2-id
|
|
26
|
+
// 1-3-2-id-allow-camera-quit the same alert layered over the allow screen
|
|
27
|
+
//
|
|
28
|
+
// None of them is a Prizma surface: their chrome does not exist in Core and
|
|
29
|
+
// rebuilding it would mean inventing primitives and shipping platform rasters,
|
|
30
|
+
// both forbidden (rule 1, GUIDELINES ยง10). Same call as Document Capture's iOS
|
|
31
|
+
// action sheets (#DC-20) and Geolocation's system alert. Core Lab draws them as
|
|
32
|
+
// dashed OS mocks on the flow instead, so the chain still reads.
|
|
33
|
+
//
|
|
34
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
35
|
+
// so a host's locale pack drives the family.
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PhoneInputErrorVariant, PhoneInputStrings } from './PhoneInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PhoneInputErrorScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy โ this screen reads the `error` slice its `variant` names. */
|
|
8
|
+
strings: PhoneInputStrings;
|
|
9
|
+
/** Which purple `phoneNumber.error.*` section to render. Default `tryAgain`. */
|
|
10
|
+
variant?: PhoneInputErrorVariant;
|
|
11
|
+
screenId?: string;
|
|
12
|
+
overrides?: PrizmaScreenOverrides;
|
|
13
|
+
onAction?: PrizmaScreenActionHandler;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Phone Input โ the error verdicts, built on the Result archetype
|
|
17
|
+
* (GUIDELINES.md ยง6-F, `PrizmaResultScreen`).
|
|
18
|
+
*
|
|
19
|
+
* ONE screen for the three purple `phoneNumber.error.*` sections:
|
|
20
|
+
* - `tryAgain` โ the code could not be sent, retry
|
|
21
|
+
* - `unknown` โ `phonenumber.error.unknown`, the generic failure
|
|
22
|
+
* - `noNetwork` โ the connectivity family every module carries
|
|
23
|
+
*
|
|
24
|
+
* `noNetwork` KEEPS the logo header and the verified tag, exactly as the three
|
|
25
|
+
* Wave-2 `*NoConnectionScreen`s do. The module Figma draws this section bare โ
|
|
26
|
+
* DEVIATIONS #9 recorded that observation in Wave 1 โ but the owner rule of
|
|
27
|
+
* 2026-08-18 (#F-34) supersedes it: the chrome is constant across every screen
|
|
28
|
+
* so nothing shifts between states, and all four modules' connectivity screens
|
|
29
|
+
* must read identically. DEVIATIONS #PI-8.
|
|
30
|
+
*
|
|
31
|
+
* The Wi-Fi mark is Figma's `Icon / Wi-Fi`; Core's `PrizmaTitle` icon allowlist
|
|
32
|
+
* is `status | spinner | none`, so it rides the archetype's `glyph` slot with
|
|
33
|
+
* the foundation's `__glyph` class, drawn from the canonical icon bank
|
|
34
|
+
* (DEVIATIONS #10).
|
|
35
|
+
*/
|
|
36
|
+
export declare const PhoneInputErrorScreen: React.ForwardRefExoticComponent<PhoneInputErrorScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export default PhoneInputErrorScreen;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { PrizmaResultScreen } from './ResultScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Phone Input โ the error verdicts, built on the Result archetype
|
|
9
|
+
* (GUIDELINES.md ยง6-F, `PrizmaResultScreen`).
|
|
10
|
+
*
|
|
11
|
+
* ONE screen for the three purple `phoneNumber.error.*` sections:
|
|
12
|
+
* - `tryAgain` โ the code could not be sent, retry
|
|
13
|
+
* - `unknown` โ `phonenumber.error.unknown`, the generic failure
|
|
14
|
+
* - `noNetwork` โ the connectivity family every module carries
|
|
15
|
+
*
|
|
16
|
+
* `noNetwork` KEEPS the logo header and the verified tag, exactly as the three
|
|
17
|
+
* Wave-2 `*NoConnectionScreen`s do. The module Figma draws this section bare โ
|
|
18
|
+
* DEVIATIONS #9 recorded that observation in Wave 1 โ but the owner rule of
|
|
19
|
+
* 2026-08-18 (#F-34) supersedes it: the chrome is constant across every screen
|
|
20
|
+
* so nothing shifts between states, and all four modules' connectivity screens
|
|
21
|
+
* must read identically. DEVIATIONS #PI-8.
|
|
22
|
+
*
|
|
23
|
+
* The Wi-Fi mark is Figma's `Icon / Wi-Fi`; Core's `PrizmaTitle` icon allowlist
|
|
24
|
+
* is `status | spinner | none`, so it rides the archetype's `glyph` slot with
|
|
25
|
+
* the foundation's `__glyph` class, drawn from the canonical icon bank
|
|
26
|
+
* (DEVIATIONS #10).
|
|
27
|
+
*/
|
|
28
|
+
export const PhoneInputErrorScreen = forwardRef(({ strings, variant = 'tryAgain', screenId = `phone-input-error-${variant}`, overrides, onAction, ...shell }, ref) => {
|
|
29
|
+
const noConnection = variant === 'noNetwork';
|
|
30
|
+
const copy = noConnection
|
|
31
|
+
? strings.error.noConnection
|
|
32
|
+
: variant === 'unknown'
|
|
33
|
+
? strings.error.unknown
|
|
34
|
+
: strings.error.tryAgain;
|
|
35
|
+
return (_jsx(PrizmaResultScreen, { ref: ref,
|
|
36
|
+
/* The connectivity screen leads with the Wi-Fi glyph instead of a
|
|
37
|
+
status mark; the other two carry the canonical error mark. */
|
|
38
|
+
status: noConnection ? 'none' : 'error', glyph: noConnection ? (_jsx("span", { className: [
|
|
39
|
+
'prizma-screen-layout__glyph',
|
|
40
|
+
'prizma-screen-layout__glyph--negative',
|
|
41
|
+
overrides?.align === 'left' ? 'prizma-screen-layout__glyph--left' : '',
|
|
42
|
+
]
|
|
43
|
+
.filter(Boolean)
|
|
44
|
+
.join(' '), children: _jsx(IconWifiOff, { size: "l" }) })) : undefined, title: copy.title, subtitle: copy.subtitle, ctaLabel: copy.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell }));
|
|
45
|
+
});
|
|
46
|
+
PhoneInputErrorScreen.displayName = 'PhoneInputErrorScreen';
|
|
47
|
+
export default PhoneInputErrorScreen;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* Phone Input โ module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONLY what the foundation archetypes and Prizma Core do not already own.
|
|
4
|
+
* Every value is a token. Nothing here re-declares an archetype spacing rule:
|
|
5
|
+
* the content column, the 24px gutters, the title โ fields offset and the
|
|
6
|
+
* anchored footer all stay the foundation's (`ScreenLayout.css`,
|
|
7
|
+
* `FormScreen.css`).
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* โโ Combined country + phone row โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
11
|
+
* Figma `Input / Combined` (3939:41889): "a combined form element that allows
|
|
12
|
+
* users to input phone number" โ a dropdown + text field pair at Spacing/8,
|
|
13
|
+
* the dropdown hugging its content, the field filling the rest.
|
|
14
|
+
*
|
|
15
|
+
* Core ships both primitives; what it has no component for is the PAIRING, so
|
|
16
|
+
* the row lives here. `align-items: start` keeps the two fields top-aligned
|
|
17
|
+
* when the text field grows an error/helper row that the dropdown does not.
|
|
18
|
+
*/
|
|
19
|
+
.phone-input-combined {
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: flex-start;
|
|
22
|
+
gap: var(--prizma-spacing-8);
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* The dial-code dropdown hugs its content ("๐ท๐ธ +381"), as Figma draws it.
|
|
27
|
+
*
|
|
28
|
+
* Core's `.prizma-dropdown` is `width: 100%` (Dropdown.css) โ it is built to
|
|
29
|
+
* FILL its container and ships no hug/auto-width variant, so inside this row it
|
|
30
|
+
* consumed the whole column and pushed the number field out. Constrained here
|
|
31
|
+
* from the module layer (no Core file touched, no !important): `width: auto`
|
|
32
|
+
* releases the fill and `flex: 0 0 auto` keeps the row from stretching it back.
|
|
33
|
+
* The inner `__anchor` inherits the same rule for the same reason.
|
|
34
|
+
* A `width`/`fit` prop on `PrizmaDropdown` would remove this โ DEVIATIONS #PI-1.
|
|
35
|
+
*/
|
|
36
|
+
.phone-input-combined__country,
|
|
37
|
+
.phone-input-combined__country .prizma-dropdown__anchor,
|
|
38
|
+
.phone-input-combined__country .prizma-dropdown__label-container {
|
|
39
|
+
flex: 0 0 auto;
|
|
40
|
+
width: auto;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* โฆand the number field takes the remaining width. `min-width: 0` is what lets
|
|
44
|
+
* it actually shrink inside the flex row instead of overflowing the column. */
|
|
45
|
+
.phone-input-combined__number {
|
|
46
|
+
flex: 1 1 auto;
|
|
47
|
+
min-width: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* The open menu must NOT inherit the hugged anchor's width: Core anchors the
|
|
51
|
+
* menu to the trigger, so once the trigger hugs "๐ท๐ธ +381" the option rows
|
|
52
|
+
* truncate ("+โฆ"). The menu keeps its own readable width โ it lists country
|
|
53
|
+
* names and dial codes, which the closed field never shows. Sized to the
|
|
54
|
+
* content and capped at the 342 column so it never escapes the screen.
|
|
55
|
+
* DEVIATIONS #PI-1 (same root cause as the hug).
|
|
56
|
+
*/
|
|
57
|
+
.phone-input-combined__country .prizma-dropdown__menu {
|
|
58
|
+
width: max-content;
|
|
59
|
+
min-width: 100%;
|
|
60
|
+
max-width: 342px;
|
|
61
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PhoneInputOtpState, PhoneInputStrings } from './PhoneInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './PhoneInputLayout.css';
|
|
7
|
+
export interface PhoneInputOtpScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'children' | 'navLabel'> {
|
|
8
|
+
/** Module copy โ this screen reads the `otp` slice. */
|
|
9
|
+
strings: PhoneInputStrings;
|
|
10
|
+
/** Which purple `phoneNumber.OTP.*` section to render. Default `typing`. */
|
|
11
|
+
state?: PhoneInputOtpState;
|
|
12
|
+
/** The code as typed. `typing` draws a partial value, `filled` a complete one. */
|
|
13
|
+
value?: string;
|
|
14
|
+
/** How many digits the code carries. Default 6. */
|
|
15
|
+
length?: number;
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Phone Input โ the one-time-code screen, built on the Form archetype
|
|
22
|
+
* (GUIDELINES.md ยง6-E, `PrizmaFormScreen`).
|
|
23
|
+
*
|
|
24
|
+
* ONE screen for all four purple `phoneNumber.OTP.*` sections
|
|
25
|
+
* (`typing` / `filled` / `processing` / `error`) โ identical layout, differing
|
|
26
|
+
* only in the state of the code field and the CTA.
|
|
27
|
+
*
|
|
28
|
+
* `processing` deliberately does NOT use Core's `PrizmaOtp.loading`. That prop
|
|
29
|
+
* centres the spinner INSIDE the code field (owner definition 2026-07-12), but
|
|
30
|
+
* the purple `OTP.processing` section draws the field simply DISABLED with the
|
|
31
|
+
* code still legible and puts the spinner in the CTA โ the same treatment as
|
|
32
|
+
* `verify.loading`, which is what makes the module read consistently. Figma
|
|
33
|
+
* wins; `PrizmaOtp.loading` stays correct for hosts that want the in-field
|
|
34
|
+
* spinner. DEVIATIONS #PI-5.
|
|
35
|
+
*/
|
|
36
|
+
export declare const PhoneInputOtpScreen: React.ForwardRefExoticComponent<PhoneInputOtpScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
export default PhoneInputOtpScreen;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaOtp } from '@incodetech/prizma-core-web/otp';
|
|
5
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
import './PhoneInputLayout.css';
|
|
8
|
+
/**
|
|
9
|
+
* Phone Input โ the one-time-code screen, built on the Form archetype
|
|
10
|
+
* (GUIDELINES.md ยง6-E, `PrizmaFormScreen`).
|
|
11
|
+
*
|
|
12
|
+
* ONE screen for all four purple `phoneNumber.OTP.*` sections
|
|
13
|
+
* (`typing` / `filled` / `processing` / `error`) โ identical layout, differing
|
|
14
|
+
* only in the state of the code field and the CTA.
|
|
15
|
+
*
|
|
16
|
+
* `processing` deliberately does NOT use Core's `PrizmaOtp.loading`. That prop
|
|
17
|
+
* centres the spinner INSIDE the code field (owner definition 2026-07-12), but
|
|
18
|
+
* the purple `OTP.processing` section draws the field simply DISABLED with the
|
|
19
|
+
* code still legible and puts the spinner in the CTA โ the same treatment as
|
|
20
|
+
* `verify.loading`, which is what makes the module read consistently. Figma
|
|
21
|
+
* wins; `PrizmaOtp.loading` stays correct for hosts that want the in-field
|
|
22
|
+
* spinner. DEVIATIONS #PI-5.
|
|
23
|
+
*/
|
|
24
|
+
export const PhoneInputOtpScreen = forwardRef(({ strings, state = 'typing', value, length = 6, screenId = `phone-input-otp-${state}`, overrides, onAction, ...shell }, ref) => (_jsx(PrizmaFormScreen, { ref: ref, title: strings.otp.title, subtitle: strings.otp.subtitle, ctaLabel: strings.otp.ctaLabel,
|
|
25
|
+
/* Figma greys the CTA until the code is complete. */
|
|
26
|
+
ctaDisabled: state === 'typing',
|
|
27
|
+
/* The spinner rides the CTA, not the field (see the note above). */
|
|
28
|
+
ctaLoading: state === 'processing', ctaLoadingLabel: strings.otp.ctaLoadingLabel,
|
|
29
|
+
/* "Didn't receive the code? Resend code or Change phone number" โ drawn
|
|
30
|
+
under the CTA on every OTP section. ONE sentence, TWO independently
|
|
31
|
+
actionable links, so it uses the archetype's composed-line slot rather
|
|
32
|
+
than `linkLabel` (a full-width 56px button cannot sit inside a line of
|
|
33
|
+
body text, and one button could not tell the two actions apart โ
|
|
34
|
+
DEVIATIONS #PI-10). */
|
|
35
|
+
linkContent: strings.otp.resendPrompt ? (_jsxs("p", { className: "prizma-screen-layout__inline-prompt", children: [strings.otp.resendPrompt, ' ', strings.otp.resendLabel ? (_jsx("button", { type: "button", className: "prizma-screen-layout__inline-link", onClick: () => onAction?.({ type: 'secondary', screenId }), children: strings.otp.resendLabel })) : null, strings.otp.changeNumberLabel ? (_jsxs(_Fragment, { children: [' ', strings.otp.resendSeparator, ' ', _jsx("button", { type: "button", className: "prizma-screen-layout__inline-link", onClick: () => onAction?.({ type: 'tertiary', screenId }), children: strings.otp.changeNumberLabel })] })) : null] })) : undefined, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaOtp, { length: length,
|
|
36
|
+
/* Uncontrolled, for the same reason as the phone field: `readOnly`
|
|
37
|
+
would paint Core's DISABLED surface on the resting states, which is
|
|
38
|
+
grey Figma does not draw there (DEVIATIONS #PI-6). */
|
|
39
|
+
defaultValue: value ?? '',
|
|
40
|
+
/* `processing` is the one section Figma greys โ the code stays legible
|
|
41
|
+
while the check runs. */
|
|
42
|
+
disabled: state === 'processing', error: state === 'error', errorText: state === 'error' ? strings.otp.errorText : undefined }) })));
|
|
43
|
+
PhoneInputOtpScreen.displayName = 'PhoneInputOtpScreen';
|
|
44
|
+
export default PhoneInputOtpScreen;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PhoneInputStrings } from './PhoneInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PhoneInputSnaLoadingScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy โ this screen reads the `sna` slice. */
|
|
8
|
+
strings: PhoneInputStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Phone Input โ Silent Network Auth in flight, built on the Processing
|
|
15
|
+
* archetype (GUIDELINES.md ยง6-C, `PrizmaProcessingScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `phoneNumber.loading` section (`phoneNumber.SNA.loading`).
|
|
18
|
+
* A pure spinner + H2 screen with no button, which is exactly the case ยง6-F
|
|
19
|
+
* reserves for C rather than the Result archetype โ nothing here needs a CTA
|
|
20
|
+
* band, so the centred column stays.
|
|
21
|
+
*/
|
|
22
|
+
export declare const PhoneInputSnaLoadingScreen: React.ForwardRefExoticComponent<PhoneInputSnaLoadingScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
export default PhoneInputSnaLoadingScreen;
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
* Phone Input โ Silent Network Auth in flight, built on the Processing
|
|
8
|
+
* archetype (GUIDELINES.md ยง6-C, `PrizmaProcessingScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `phoneNumber.loading` section (`phoneNumber.SNA.loading`).
|
|
11
|
+
* A pure spinner + H2 screen with no button, which is exactly the case ยง6-F
|
|
12
|
+
* reserves for C rather than the Result archetype โ nothing here needs a CTA
|
|
13
|
+
* band, so the centred column stays.
|
|
14
|
+
*/
|
|
15
|
+
export const PhoneInputSnaLoadingScreen = forwardRef(({ strings, screenId = 'phone-input-sna-loading', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "loading", title: strings.sna.title, subtitle: strings.sna.subtitle, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
16
|
+
PhoneInputSnaLoadingScreen.displayName = 'PhoneInputSnaLoadingScreen';
|
|
17
|
+
export default PhoneInputSnaLoadingScreen;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `phoneNumber.verify.*` sections. All five draw the SAME layout โ the
|
|
3
|
+
* country dropdown + phone field pair โ and differ only in field content and
|
|
4
|
+
* CTA state, so they are states of one screen rather than five screens:
|
|
5
|
+
* - `default` โ placeholder phone, CTA enabled (Figma draws it enabled)
|
|
6
|
+
* - `countryCode` โ the country dropdown open over the form
|
|
7
|
+
* - `typing` โ partial value, focused field
|
|
8
|
+
* - `filled` โ complete value
|
|
9
|
+
* - `loading` โ CTA in its loading treatment while the code is requested
|
|
10
|
+
*/
|
|
11
|
+
export type PhoneInputVerifyState = 'default' | 'countryCode' | 'typing' | 'filled' | 'loading';
|
|
12
|
+
/**
|
|
13
|
+
* The `phoneNumber.OTP.*` sections โ same layout, different field state:
|
|
14
|
+
* - `typing` โ partial code
|
|
15
|
+
* - `filled` โ complete code
|
|
16
|
+
* - `processing` โ code submitted, `PrizmaOtp` in its loading treatment
|
|
17
|
+
* - `error` โ wrong code, negative field + error row
|
|
18
|
+
*/
|
|
19
|
+
export type PhoneInputOtpState = 'typing' | 'filled' | 'processing' | 'error';
|
|
20
|
+
/**
|
|
21
|
+
* The `phoneNumber.error.*` sections. `tryAgain` and `unknown` keep the module
|
|
22
|
+
* chrome; `noNetwork` is the connectivity family every module carries โ no nav,
|
|
23
|
+
* no tag, a Wi-Fi glyph above the title (DEVIATIONS #9, #10).
|
|
24
|
+
*/
|
|
25
|
+
export type PhoneInputErrorVariant = 'tryAgain' | 'unknown' | 'noNetwork';
|
|
26
|
+
/** One selectable country in the dial-code dropdown. Runtime data, not copy โ
|
|
27
|
+
* the host supplies its own list; `flag` is the emoji Figma draws (Core has no
|
|
28
|
+
* country-flag primitive โ DEVIATIONS #PI-3). */
|
|
29
|
+
export interface PhoneInputCountry {
|
|
30
|
+
/** Stable value, e.g. an ISO 3166-1 alpha-2 code. */
|
|
31
|
+
value: string;
|
|
32
|
+
/** Dial code as drawn, e.g. `+381`. */
|
|
33
|
+
dialCode: string;
|
|
34
|
+
/** Country name for the open menu row. */
|
|
35
|
+
label: string;
|
|
36
|
+
/** Emoji flag, e.g. `๐ท๐ธ`. */
|
|
37
|
+
flag?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface PhoneInputStrings {
|
|
40
|
+
/** "verified by" attribution in the footer tag. */
|
|
41
|
+
verifiedLabel: string;
|
|
42
|
+
/** Accessible name for the logo nav row. */
|
|
43
|
+
navLabel?: string;
|
|
44
|
+
/** phoneNumber.verify.* */
|
|
45
|
+
verify: {
|
|
46
|
+
/** H2 ("Verify your phone number"). */
|
|
47
|
+
title: string;
|
|
48
|
+
/** H5 ("We'll send you a code to ensure it's yours"). */
|
|
49
|
+
subtitle: string;
|
|
50
|
+
/** Phone field placeholder ("(123) 123-45-67"). */
|
|
51
|
+
placeholder: string;
|
|
52
|
+
/** Accessible label for the phone field. */
|
|
53
|
+
fieldLabel?: string;
|
|
54
|
+
/** Accessible label for the country dial-code dropdown. */
|
|
55
|
+
countryLabel?: string;
|
|
56
|
+
/** Search placeholder inside the open country menu. */
|
|
57
|
+
countrySearchPlaceholder?: string;
|
|
58
|
+
/** Primary CTA ("Continue"). */
|
|
59
|
+
ctaLabel: string;
|
|
60
|
+
/** Accessible busy label while the code is requested (`loading`). */
|
|
61
|
+
ctaLoadingLabel?: string;
|
|
62
|
+
};
|
|
63
|
+
/** phoneNumber.OTP.* */
|
|
64
|
+
otp: {
|
|
65
|
+
/** H2 ("Enter the code we've sent via SMS"). */
|
|
66
|
+
title: string;
|
|
67
|
+
/** H5 โ carries the masked destination number, when the section shows one. */
|
|
68
|
+
subtitle?: string;
|
|
69
|
+
/** Error row on the `error` state ("Incorrect code, try again"). */
|
|
70
|
+
errorText: string;
|
|
71
|
+
/**
|
|
72
|
+
* The line under the CTA is ONE sentence carrying TWO separate links:
|
|
73
|
+
* "Didn't receive the code? [Resend code] or [Change phone number]".
|
|
74
|
+
* It is split into four strings because the links are independently
|
|
75
|
+
* actionable โ the host must be able to tell a re-send from a return to
|
|
76
|
+
* phone entry โ and because a locale needs to order the fragments itself.
|
|
77
|
+
* Omit `resendPrompt` to render no line at all.
|
|
78
|
+
*/
|
|
79
|
+
resendPrompt?: string;
|
|
80
|
+
/** First link โ re-sends the code. Emits `secondary`. */
|
|
81
|
+
resendLabel?: string;
|
|
82
|
+
/** The conjunction between the two links ("or"). */
|
|
83
|
+
resendSeparator?: string;
|
|
84
|
+
/** Second link โ returns to phone entry. Emits `tertiary`. */
|
|
85
|
+
changeNumberLabel?: string;
|
|
86
|
+
/** Primary CTA. */
|
|
87
|
+
ctaLabel: string;
|
|
88
|
+
/** Accessible / visible busy copy while the code is checked (`processing`). */
|
|
89
|
+
ctaLoadingLabel?: string;
|
|
90
|
+
};
|
|
91
|
+
/** phoneNumber.loading โ Silent Network Auth, a pure processing screen. */
|
|
92
|
+
sna: {
|
|
93
|
+
/** H2 shown under the spinner. */
|
|
94
|
+
title: string;
|
|
95
|
+
subtitle?: string;
|
|
96
|
+
};
|
|
97
|
+
/** phoneNumber.success */
|
|
98
|
+
success: {
|
|
99
|
+
title: string;
|
|
100
|
+
subtitle?: string;
|
|
101
|
+
ctaLabel?: string;
|
|
102
|
+
};
|
|
103
|
+
/** phoneNumber.error.* โ one slice per variant. */
|
|
104
|
+
error: {
|
|
105
|
+
tryAgain: {
|
|
106
|
+
title: string;
|
|
107
|
+
subtitle?: string;
|
|
108
|
+
ctaLabel: string;
|
|
109
|
+
};
|
|
110
|
+
unknown: {
|
|
111
|
+
title: string;
|
|
112
|
+
subtitle?: string;
|
|
113
|
+
ctaLabel: string;
|
|
114
|
+
};
|
|
115
|
+
noConnection: {
|
|
116
|
+
title: string;
|
|
117
|
+
subtitle?: string;
|
|
118
|
+
ctaLabel: string;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Phone Input โ copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `๐ Phone - Screens specs + Localization` (nIj8kklozEOMs2e5sLzGFi,
|
|
4
|
+
// page 5:13191). Five purple parent sections:
|
|
5
|
+
// phoneNumber.verify โ default / countryCode / phonetyping / phoneFilled / loading
|
|
6
|
+
// phoneNumber.OTP โ typing / filled / processing / error
|
|
7
|
+
// phoneNumber.loading โ SNA.loading (Silent Network Auth)
|
|
8
|
+
// phoneNumber.success โ success
|
|
9
|
+
// phoneNumber.error โ tryAgain / unknown / noNetwork
|
|
10
|
+
//
|
|
11
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
12
|
+
// so the host's locale pack drives the module (the file ships ES + PT columns).
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PhoneInputStrings } from './PhoneInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface PhoneInputSuccessScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy โ this screen reads the `success` slice. */
|
|
8
|
+
strings: PhoneInputStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Phone Input โ the verified verdict, built on the Result archetype
|
|
15
|
+
* (GUIDELINES.md ยง6-F, `PrizmaResultScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `phoneNumber.success` section. Centred status mark + title
|
|
18
|
+
* over the CTA band. The mark is Core's outline status icon via
|
|
19
|
+
* `PrizmaTitle`'s icon slot โ the module Figma still draws the two-tone filled
|
|
20
|
+
* disc, one icon sweep behind (DEVIATIONS #15, unchanged here).
|
|
21
|
+
*/
|
|
22
|
+
export declare const PhoneInputSuccessScreen: React.ForwardRefExoticComponent<PhoneInputSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
export default PhoneInputSuccessScreen;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaResultScreen } from './ResultScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
/**
|
|
7
|
+
* Phone Input โ the verified verdict, built on the Result archetype
|
|
8
|
+
* (GUIDELINES.md ยง6-F, `PrizmaResultScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `phoneNumber.success` section. Centred status mark + title
|
|
11
|
+
* over the CTA band. The mark is Core's outline status icon via
|
|
12
|
+
* `PrizmaTitle`'s icon slot โ the module Figma still draws the two-tone filled
|
|
13
|
+
* disc, one icon sweep behind (DEVIATIONS #15, unchanged here).
|
|
14
|
+
*/
|
|
15
|
+
export const PhoneInputSuccessScreen = forwardRef(({ strings, screenId = 'phone-input-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, status: "success", title: strings.success.title, subtitle: strings.success.subtitle, ctaLabel: strings.success.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
16
|
+
PhoneInputSuccessScreen.displayName = 'PhoneInputSuccessScreen';
|
|
17
|
+
export default PhoneInputSuccessScreen;
|