@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,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { PhoneInputCountry, PhoneInputStrings, PhoneInputVerifyState } from './PhoneInputStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './PhoneInputLayout.css';
|
|
7
|
+
export interface PhoneInputVerifyScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'children' | 'navLabel'> {
|
|
8
|
+
/** Module copy — this screen reads the `verify` slice. */
|
|
9
|
+
strings: PhoneInputStrings;
|
|
10
|
+
/** Which purple `phoneNumber.verify.*` section to render. Default `default`. */
|
|
11
|
+
state?: PhoneInputVerifyState;
|
|
12
|
+
/** The selectable dial codes. Runtime data, not copy. */
|
|
13
|
+
countries?: PhoneInputCountry[];
|
|
14
|
+
/** Selected country `value`. Defaults to the first entry. */
|
|
15
|
+
country?: string;
|
|
16
|
+
/** The phone number as typed. Empty renders the placeholder (`default`). */
|
|
17
|
+
value?: string;
|
|
18
|
+
screenId?: string;
|
|
19
|
+
overrides?: PrizmaScreenOverrides;
|
|
20
|
+
onAction?: PrizmaScreenActionHandler;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Phone Input — the phone-entry screen, built on the Form archetype
|
|
24
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
25
|
+
*
|
|
26
|
+
* ONE screen for all five purple `phoneNumber.verify.*` sections
|
|
27
|
+
* (`default` / `countryCode` / `phonetyping` / `phoneFilled` / `loading`):
|
|
28
|
+
* measured against the 390 frames, they share an identical layout — nav → Title
|
|
29
|
+
* (H2 + H5) → Spacing/32 → the combined country-dropdown + phone-field row →
|
|
30
|
+
* CTA → tag — and differ ONLY in field content and CTA state, which is exactly
|
|
31
|
+
* what GUIDELINES §6-E means by "states are separate screens sharing the
|
|
32
|
+
* identical layout".
|
|
33
|
+
*
|
|
34
|
+
* Figma's `Input / Combined` is a dropdown + text field pair at Spacing/8, the
|
|
35
|
+
* dropdown hugging its content and the field filling the rest. Core ships both
|
|
36
|
+
* primitives (`PrizmaDropdown`, `PrizmaTextField`) at the designed 56px min
|
|
37
|
+
* height and `Border/Radius/small`, so the module layer contributes only the
|
|
38
|
+
* row that pairs them (`PhoneInputLayout.css`) — no primitive is re-implemented.
|
|
39
|
+
*/
|
|
40
|
+
export declare const PhoneInputVerifyScreen: React.ForwardRefExoticComponent<PhoneInputVerifyScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
41
|
+
export default PhoneInputVerifyScreen;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTextField } from '@incodetech/prizma-core-web/text-field';
|
|
5
|
+
import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
|
|
6
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
7
|
+
import './ScreenLayout.css';
|
|
8
|
+
import './PhoneInputLayout.css';
|
|
9
|
+
/** Figma's `countryCode` section draws the dropdown menu open over the form;
|
|
10
|
+
* Core exposes that as the documentation-only `forceOpen` (a screen is one
|
|
11
|
+
* static spec state, never a live interaction). */
|
|
12
|
+
const DEFAULT_COUNTRIES = [
|
|
13
|
+
{ value: 'RS', dialCode: '+381', label: 'Serbia', flag: '🇷🇸' },
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Phone Input — the phone-entry screen, built on the Form archetype
|
|
17
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
18
|
+
*
|
|
19
|
+
* ONE screen for all five purple `phoneNumber.verify.*` sections
|
|
20
|
+
* (`default` / `countryCode` / `phonetyping` / `phoneFilled` / `loading`):
|
|
21
|
+
* measured against the 390 frames, they share an identical layout — nav → Title
|
|
22
|
+
* (H2 + H5) → Spacing/32 → the combined country-dropdown + phone-field row →
|
|
23
|
+
* CTA → tag — and differ ONLY in field content and CTA state, which is exactly
|
|
24
|
+
* what GUIDELINES §6-E means by "states are separate screens sharing the
|
|
25
|
+
* identical layout".
|
|
26
|
+
*
|
|
27
|
+
* Figma's `Input / Combined` is a dropdown + text field pair at Spacing/8, the
|
|
28
|
+
* dropdown hugging its content and the field filling the rest. Core ships both
|
|
29
|
+
* primitives (`PrizmaDropdown`, `PrizmaTextField`) at the designed 56px min
|
|
30
|
+
* height and `Border/Radius/small`, so the module layer contributes only the
|
|
31
|
+
* row that pairs them (`PhoneInputLayout.css`) — no primitive is re-implemented.
|
|
32
|
+
*/
|
|
33
|
+
export const PhoneInputVerifyScreen = forwardRef(({ strings, state = 'default', countries = DEFAULT_COUNTRIES, country, value, screenId = `phone-input-verify-${state}`, overrides, onAction, ...shell }, ref) => {
|
|
34
|
+
const selected = country ?? countries[0]?.value;
|
|
35
|
+
const options = countries.map((c) => ({
|
|
36
|
+
value: c.value,
|
|
37
|
+
// The closed field shows flag + dial code exactly as Figma draws it
|
|
38
|
+
// ("🇷🇸 +381"); the open menu row adds the country name.
|
|
39
|
+
label: [c.flag, c.dialCode].filter(Boolean).join(' '),
|
|
40
|
+
}));
|
|
41
|
+
// Figma treats the states as three distinct field treatments, not one:
|
|
42
|
+
// `loading` greys BOTH fields (the request is in flight and the form is
|
|
43
|
+
// inert) and puts the spinner in the CTA; `typing` draws the focused blue
|
|
44
|
+
// border with the caret and the clear affordance; everything else is a
|
|
45
|
+
// plain editable field on the default white surface. Core's read-only
|
|
46
|
+
// paints the DISABLED surface (owner definition 2026-07-12), so it is used
|
|
47
|
+
// for none of them — it would grey the resting states too (DEVIATIONS #PI-6).
|
|
48
|
+
const busy = state === 'loading';
|
|
49
|
+
const focused = state === 'typing';
|
|
50
|
+
return (_jsx(PrizmaFormScreen, { ref: ref, title: strings.verify.title, subtitle: strings.verify.subtitle, ctaLabel: strings.verify.ctaLabel,
|
|
51
|
+
/* Figma's `loading` section swaps the CTA label for Core's spinner. */
|
|
52
|
+
ctaLoading: busy, ctaLoadingLabel: strings.verify.ctaLoadingLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsxs("div", { className: "phone-input-combined", children: [_jsx(PrizmaDropdown, { className: "phone-input-combined__country", "aria-label": strings.verify.countryLabel, options: options, value: selected, searchable: true, searchPlaceholder: strings.verify.countrySearchPlaceholder,
|
|
53
|
+
/* The `countryCode` section IS the open-menu spec state. */
|
|
54
|
+
forceOpen: state === 'countryCode', disabled: busy }), _jsx(PrizmaTextField, { className: [
|
|
55
|
+
'phone-input-combined__number',
|
|
56
|
+
/* Core's own static-focus modifier — the same mechanism the
|
|
57
|
+
Dropdown exposes as `forceState`, which `PrizmaTextField` has
|
|
58
|
+
no prop for yet (DEVIATIONS #PI-7). No styling is redeclared. */
|
|
59
|
+
focused ? 'prizma-input-textfield--focused' : '',
|
|
60
|
+
]
|
|
61
|
+
.filter(Boolean)
|
|
62
|
+
.join(' '), type: "tel", inputMode: "tel", "aria-label": strings.verify.fieldLabel, placeholder: strings.verify.placeholder,
|
|
63
|
+
/* Uncontrolled: a screen is one static spec state, and `value`
|
|
64
|
+
without `onChange` would either warn or force `readOnly`, whose
|
|
65
|
+
disabled surface is exactly the grey Figma does NOT draw here. */
|
|
66
|
+
defaultValue: value ?? '', disabled: busy,
|
|
67
|
+
/* Figma draws the clear ✕ only while the field is focused. */
|
|
68
|
+
clearable: focused })] }) }));
|
|
69
|
+
});
|
|
70
|
+
PhoneInputVerifyScreen.displayName = 'PhoneInputVerifyScreen';
|
|
71
|
+
export default PhoneInputVerifyScreen;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaScreenShellProps } from './ScreenShell';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenChromeProps, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import './ScreenLayout.css';
|
|
5
|
+
export type PrizmaProcessingStatus = 'loading' | 'success' | 'error' | 'warning';
|
|
6
|
+
export interface PrizmaProcessingScreenProps extends Omit<PrizmaScreenShellProps, 'dark' | 'title'>, PrizmaScreenChromeProps {
|
|
7
|
+
/** `loading` renders the spinner slot; the rest render the status icon. */
|
|
8
|
+
status: PrizmaProcessingStatus;
|
|
9
|
+
/**
|
|
10
|
+
* An optional block between the logo nav and the content — a journey stepper.
|
|
11
|
+
* Video Selfie draws Core's `PrizmaStepper` on EVERY screen of the flow, not
|
|
12
|
+
* just its camera stages, and it is the only chrome that tells the steps
|
|
13
|
+
* apart; the archetypes had a slot on E alone, so the rest of the module shed
|
|
14
|
+
* it (owner-reported 2026-08-19). Takes a `ReactNode` so the module supplies
|
|
15
|
+
* Core's own component — no primitive invented, and both offsets live once in
|
|
16
|
+
* `ScreenLayout.css` (`.prizma-screen-layout__progress`). Omit it and nothing
|
|
17
|
+
* renders, so every existing consumer is byte-identical. DEVIATIONS #VS-4.
|
|
18
|
+
*/
|
|
19
|
+
progress?: ReactNode;
|
|
20
|
+
/** H2 status line ("Processing…", "Verification complete"). */
|
|
21
|
+
title: string;
|
|
22
|
+
/** Optional supporting copy below the title. */
|
|
23
|
+
subtitle?: string;
|
|
24
|
+
/** "verified by" attribution copy for the footer tag. */
|
|
25
|
+
verifiedLabel: string;
|
|
26
|
+
navLabel?: string;
|
|
27
|
+
screenId?: string;
|
|
28
|
+
overrides?: PrizmaScreenOverrides;
|
|
29
|
+
onAction?: PrizmaScreenActionHandler;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Archetype C — Processing (GUIDELINES.md §6-C).
|
|
33
|
+
*
|
|
34
|
+
* This is the PURE case: a centered spinner or status mark with no CTA. As soon
|
|
35
|
+
* as a result screen needs a button, use `PrizmaResultScreen` — the missing CTA
|
|
36
|
+
* band here is what made three modules hand-build the same skeleton.
|
|
37
|
+
* Nav → fully centered column (icon/spinner + title via Core's PrizmaTitle
|
|
38
|
+
* slot) → tag pinned to the bottom. Used by every `*-uploading`,
|
|
39
|
+
* `*-processing`, `*-success` and `*-verified` screen.
|
|
40
|
+
*/
|
|
41
|
+
export declare const PrizmaProcessingScreen: React.ForwardRefExoticComponent<PrizmaProcessingScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export default PrizmaProcessingScreen;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaTitle } from '@incodetech/prizma-core-web/title';
|
|
5
|
+
import { PrizmaTag } from '@incodetech/prizma-core-web/tag';
|
|
6
|
+
import { PrizmaScreenShell } from './ScreenShell';
|
|
7
|
+
import { PrizmaScreenNav } from './ScreenNav';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
/**
|
|
10
|
+
* Archetype C — Processing (GUIDELINES.md §6-C).
|
|
11
|
+
*
|
|
12
|
+
* This is the PURE case: a centered spinner or status mark with no CTA. As soon
|
|
13
|
+
* as a result screen needs a button, use `PrizmaResultScreen` — the missing CTA
|
|
14
|
+
* band here is what made three modules hand-build the same skeleton.
|
|
15
|
+
* Nav → fully centered column (icon/spinner + title via Core's PrizmaTitle
|
|
16
|
+
* slot) → tag pinned to the bottom. Used by every `*-uploading`,
|
|
17
|
+
* `*-processing`, `*-success` and `*-verified` screen.
|
|
18
|
+
*/
|
|
19
|
+
export const PrizmaProcessingScreen = forwardRef(({ progress, status, title, subtitle, verifiedLabel, navLabel, screenId, showHeader = true, showFooter = true, overrides, onAction, ...shell }, ref) => (_jsxs(PrizmaScreenShell, { ref: ref, ...shell, children: [_jsx(PrizmaScreenNav, { reserved: !showHeader, logo: overrides?.logo, navLabel: navLabel }), progress ? (_jsx("div", { className: "prizma-screen-layout__progress", children: progress })) : null, _jsx("div", { className: "prizma-screen-layout__content prizma-screen-layout__content--centered", children: _jsx(PrizmaTitle, { variant: "centered", title: title, showSubtitle: Boolean(subtitle), subtitle: subtitle, icon: status === 'loading' ? { type: 'spinner' } : { type: 'status', status } }) }), showFooter ? (_jsx("div", { className: "prizma-screen-layout__footer", children: _jsx(PrizmaTag, { label: verifiedLabel }) })) : null] })));
|
|
20
|
+
PrizmaProcessingScreen.displayName = 'PrizmaProcessingScreen';
|
|
21
|
+
export default PrizmaProcessingScreen;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { QualifiedSignatureAcceptState, QualifiedSignatureAcceptVariant, QualifiedSignatureStrings, QualifiedSignatureTerm } from './QualifiedSignatureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './QualifiedSignatureLayout.css';
|
|
7
|
+
export interface QualifiedSignatureAcceptScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaDisabled' | 'ctaLoading' | 'ctaLoadingLabel' | 'linkLabel' | 'linkContent' | 'verifiedLabel' | 'children' | 'navLabel'> {
|
|
8
|
+
/** Module copy — this screen reads the `accept` slice its `variant` names. */
|
|
9
|
+
strings: QualifiedSignatureStrings;
|
|
10
|
+
/** Which reading of the section to render. Default `accept`. */
|
|
11
|
+
variant?: QualifiedSignatureAcceptVariant;
|
|
12
|
+
/** Which purple state to render. Default `default`. */
|
|
13
|
+
state?: QualifiedSignatureAcceptState;
|
|
14
|
+
/** The consent clauses. Runtime data — the QTSP writes them, not the module. */
|
|
15
|
+
terms: QualifiedSignatureTerm[];
|
|
16
|
+
/** The document being signed, shown in the row above the clauses. Runtime
|
|
17
|
+
* data from the upload step, so it stays out of `strings`. */
|
|
18
|
+
filename?: string;
|
|
19
|
+
screenId?: string;
|
|
20
|
+
overrides?: PrizmaScreenOverrides;
|
|
21
|
+
onAction?: PrizmaScreenActionHandler;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Qualified Signature — accept the terms and sign, built on the Form archetype
|
|
25
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
26
|
+
*
|
|
27
|
+
* Figma: the purple `QSign.AcceptSign.{default,selectedCheckox,loadingsign}`
|
|
28
|
+
* sections in BOTH parent groups — the generic five-clause reading ("Accept and
|
|
29
|
+
* sign" / "Finish signing") and the partner two-clause one ("Review and sign" /
|
|
30
|
+
* "Sign" + the certificate-application link). Six purple states, one screen:
|
|
31
|
+
* they share an identical skeleton and differ only in clause set, copy, tick
|
|
32
|
+
* state and CTA treatment, which is exactly what §6-E means by "states are
|
|
33
|
+
* separate screens sharing the identical layout".
|
|
34
|
+
*
|
|
35
|
+
* WHY ARCHETYPE E AND NOT G. The middle is a stack of Core `PrizmaCheckbox`
|
|
36
|
+
* CONTROLS — real form inputs the signer must operate before the CTA unlocks —
|
|
37
|
+
* not a card/option list, and the screen's whole point is the three CTA
|
|
38
|
+
* treatments (disabled → enabled → in-flight) that archetype G has no slots for
|
|
39
|
+
* (`PrizmaListScreen` offers neither `ctaDisabled` nor `ctaLoading`; that gap is
|
|
40
|
+
* reported, not worked around). E owns both, plus the `linkContent` slot the
|
|
41
|
+
* partner variant's link needs. Measured, the two archetypes want the same
|
|
42
|
+
* rhythm here anyway: Figma's `middle container` is Title → Spacing/32 → the
|
|
43
|
+
* document row, which is `FormScreen.css`'s title → fields offset to the pixel
|
|
44
|
+
* (DEVIATIONS #PI-2), and the row → clause-stack gap is the field stack's own
|
|
45
|
+
* Spacing/16.
|
|
46
|
+
*
|
|
47
|
+
* Four things are deliberate:
|
|
48
|
+
*
|
|
49
|
+
* 1. The document row is Core's `PrizmaCardDocumentContainer` — the Figma layer
|
|
50
|
+
* is literally an instance of `Card / Document Container`, filename plus a
|
|
51
|
+
* tertiary-link action. Nothing is hand-rolled.
|
|
52
|
+
* 2. Each clause is Core's `PrizmaCheckbox size="L"` (the consent container),
|
|
53
|
+
* fed `segments` so the fourth Incode clause carries BOTH its inline links —
|
|
54
|
+
* "Terms of Use" and "Privacy Policy" — as Core's own `<a>`s. That is the
|
|
55
|
+
* #PI-10 rule (a sentence carrying links is not one button) satisfied by a
|
|
56
|
+
* Core API rather than by the foundation's inline recipe.
|
|
57
|
+
* 3. `loading` greys the clauses through Core's own `disabled` treatment
|
|
58
|
+
* (`Surface/Neutral/50` container + disabled ink + inert links) and swaps the
|
|
59
|
+
* CTA label for Core's spinner via `ctaLoading` — the spinner belongs to the
|
|
60
|
+
* BUTTON, never to a control (DEVIATIONS #PI-5).
|
|
61
|
+
* 4. The partner link rides `linkContent`, not `linkLabel`, so it can grey with
|
|
62
|
+
* the rest of the form on `loading` (archetype E's `linkLabel` has no
|
|
63
|
+
* disabled path) while staying a distinct `secondary` action — the CURP
|
|
64
|
+
* #CURP-2 idiom.
|
|
65
|
+
*
|
|
66
|
+
* The nav draws no close ✕: every purple section in this file puts one at the
|
|
67
|
+
* nav's right, and GUIDELINES §3 stands — the Figma files are the side that is
|
|
68
|
+
* wrong (standing ruling, DEVIATIONS #PI-9).
|
|
69
|
+
*/
|
|
70
|
+
export declare const QualifiedSignatureAcceptScreen: React.ForwardRefExoticComponent<QualifiedSignatureAcceptScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
71
|
+
export default QualifiedSignatureAcceptScreen;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaCardDocumentContainer } from '@incodetech/prizma-core-web/card';
|
|
5
|
+
import { PrizmaCheckbox } from '@incodetech/prizma-core-web/checkbox';
|
|
6
|
+
import { PrizmaButton } from '@incodetech/prizma-core-web/button';
|
|
7
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
import './QualifiedSignatureLayout.css';
|
|
10
|
+
/**
|
|
11
|
+
* Qualified Signature — accept the terms and sign, built on the Form archetype
|
|
12
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
13
|
+
*
|
|
14
|
+
* Figma: the purple `QSign.AcceptSign.{default,selectedCheckox,loadingsign}`
|
|
15
|
+
* sections in BOTH parent groups — the generic five-clause reading ("Accept and
|
|
16
|
+
* sign" / "Finish signing") and the partner two-clause one ("Review and sign" /
|
|
17
|
+
* "Sign" + the certificate-application link). Six purple states, one screen:
|
|
18
|
+
* they share an identical skeleton and differ only in clause set, copy, tick
|
|
19
|
+
* state and CTA treatment, which is exactly what §6-E means by "states are
|
|
20
|
+
* separate screens sharing the identical layout".
|
|
21
|
+
*
|
|
22
|
+
* WHY ARCHETYPE E AND NOT G. The middle is a stack of Core `PrizmaCheckbox`
|
|
23
|
+
* CONTROLS — real form inputs the signer must operate before the CTA unlocks —
|
|
24
|
+
* not a card/option list, and the screen's whole point is the three CTA
|
|
25
|
+
* treatments (disabled → enabled → in-flight) that archetype G has no slots for
|
|
26
|
+
* (`PrizmaListScreen` offers neither `ctaDisabled` nor `ctaLoading`; that gap is
|
|
27
|
+
* reported, not worked around). E owns both, plus the `linkContent` slot the
|
|
28
|
+
* partner variant's link needs. Measured, the two archetypes want the same
|
|
29
|
+
* rhythm here anyway: Figma's `middle container` is Title → Spacing/32 → the
|
|
30
|
+
* document row, which is `FormScreen.css`'s title → fields offset to the pixel
|
|
31
|
+
* (DEVIATIONS #PI-2), and the row → clause-stack gap is the field stack's own
|
|
32
|
+
* Spacing/16.
|
|
33
|
+
*
|
|
34
|
+
* Four things are deliberate:
|
|
35
|
+
*
|
|
36
|
+
* 1. The document row is Core's `PrizmaCardDocumentContainer` — the Figma layer
|
|
37
|
+
* is literally an instance of `Card / Document Container`, filename plus a
|
|
38
|
+
* tertiary-link action. Nothing is hand-rolled.
|
|
39
|
+
* 2. Each clause is Core's `PrizmaCheckbox size="L"` (the consent container),
|
|
40
|
+
* fed `segments` so the fourth Incode clause carries BOTH its inline links —
|
|
41
|
+
* "Terms of Use" and "Privacy Policy" — as Core's own `<a>`s. That is the
|
|
42
|
+
* #PI-10 rule (a sentence carrying links is not one button) satisfied by a
|
|
43
|
+
* Core API rather than by the foundation's inline recipe.
|
|
44
|
+
* 3. `loading` greys the clauses through Core's own `disabled` treatment
|
|
45
|
+
* (`Surface/Neutral/50` container + disabled ink + inert links) and swaps the
|
|
46
|
+
* CTA label for Core's spinner via `ctaLoading` — the spinner belongs to the
|
|
47
|
+
* BUTTON, never to a control (DEVIATIONS #PI-5).
|
|
48
|
+
* 4. The partner link rides `linkContent`, not `linkLabel`, so it can grey with
|
|
49
|
+
* the rest of the form on `loading` (archetype E's `linkLabel` has no
|
|
50
|
+
* disabled path) while staying a distinct `secondary` action — the CURP
|
|
51
|
+
* #CURP-2 idiom.
|
|
52
|
+
*
|
|
53
|
+
* The nav draws no close ✕: every purple section in this file puts one at the
|
|
54
|
+
* nav's right, and GUIDELINES §3 stands — the Figma files are the side that is
|
|
55
|
+
* wrong (standing ruling, DEVIATIONS #PI-9).
|
|
56
|
+
*/
|
|
57
|
+
export const QualifiedSignatureAcceptScreen = forwardRef(({ strings, variant = 'accept', state = 'default', terms, filename, screenId = `qualified-signature-accept-${variant}-${state}`, className, overrides, onAction, ...shell }, ref) => {
|
|
58
|
+
const copy = variant === 'certificate' ? strings.accept.certificate : strings.accept.accept;
|
|
59
|
+
// Figma's three states as two axes: whether the clauses are ticked, and
|
|
60
|
+
// whether the signature is being created. `default` leaves the CTA in Core's
|
|
61
|
+
// disabled surface because nothing is accepted yet; `selected` releases it;
|
|
62
|
+
// `loading` makes the whole form inert.
|
|
63
|
+
const busy = state === 'loading';
|
|
64
|
+
const ticked = state !== 'default';
|
|
65
|
+
return (_jsxs(PrizmaFormScreen, { ref: ref, className: ['qualified-signature-accept', className].filter(Boolean).join(' '), title: copy.title, subtitle: copy.subtitle, ctaLabel: copy.ctaLabel, ctaDisabled: !ticked, ctaLoading: busy, ctaLoadingLabel: copy.ctaLoadingLabel,
|
|
66
|
+
/* The clause stack pans inside the column — the archetype owns this now
|
|
67
|
+
(`--scroll`), so the module declares no overflow of its own. #QS-1 */
|
|
68
|
+
scrollFields: true, linkContent: copy.linkLabel ? (_jsx(PrizmaButton, { variant: "tertiary-link", size: "L",
|
|
69
|
+
/* Figma greys the link while the signature is created. */
|
|
70
|
+
disabled: busy, onClick: () => onAction?.({ type: 'secondary', screenId }), children: copy.linkLabel })) : undefined, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: [filename ? (
|
|
71
|
+
/* `Card / Document Container` — Core's own horizontal filename +
|
|
72
|
+
tertiary-action row. `actionDisabled` follows the clauses and the
|
|
73
|
+
link into Core's disabled treatment on `loading`, so nothing on the
|
|
74
|
+
frame stays tappable while the signature is created (Core gained the
|
|
75
|
+
prop 2026-08-19 for exactly this; the composed Button already had
|
|
76
|
+
the `--prizma-button-tertiary-text-disabled` path, the row just had
|
|
77
|
+
no way to reach it).
|
|
78
|
+
|
|
79
|
+
REPORTED DELTA: the generic `loadingsign` frame REMOVES the "View"
|
|
80
|
+
action outright while the partner's `loading` frame greys it. Two
|
|
81
|
+
Figma readings of one inert state; Core models inert as disabled,
|
|
82
|
+
so both take the greyed treatment and the removal is logged. */
|
|
83
|
+
_jsx(PrizmaCardDocumentContainer, { filename: filename, actionLabel: strings.accept.viewLabel, actionDisabled: busy, onAction: () => onAction?.({ type: 'tertiary', screenId }) })) : null, _jsx("div", { className: "qualified-signature-terms", role: "group", "aria-label": strings.accept.termsLabel, children: terms.map((term) => (_jsx(PrizmaCheckbox, { size: "L", name: term.id, value: term.id, checked: ticked, disabled: busy, segments: term.segments }, term.id))) })] }));
|
|
84
|
+
});
|
|
85
|
+
QualifiedSignatureAcceptScreen.displayName = 'QualifiedSignatureAcceptScreen';
|
|
86
|
+
export default QualifiedSignatureAcceptScreen;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import { type PrizmaListScreenProps } from './ListScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { QualifiedSignatureDocumentVariant, QualifiedSignatureStrings } from './QualifiedSignatureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './QualifiedSignatureLayout.css';
|
|
7
|
+
export interface QualifiedSignatureDocumentScreenProps extends Omit<PrizmaListScreenProps, 'status' | 'title' | 'subtitle' | 'glyph' | 'children' | 'listAlign' | 'disclaimer' | 'ctaLabel' | 'secondaryCtaLabel' | 'linkLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
8
|
+
/** Module copy — this screen reads the `document` slice its `variant` names. */
|
|
9
|
+
strings: QualifiedSignatureStrings;
|
|
10
|
+
/** Which full-surface document section to render. Default `document`. */
|
|
11
|
+
variant?: QualifiedSignatureDocumentVariant;
|
|
12
|
+
/**
|
|
13
|
+
* The document itself. HOST-supplied content, never module copy — the rendered
|
|
14
|
+
* contract page on `document` (an `<img>` / `<canvas>` of the PDF) and the
|
|
15
|
+
* certificate-application text on `terms`. Same slot contract the capture
|
|
16
|
+
* screens use for `camera` (GUIDELINES §10).
|
|
17
|
+
*/
|
|
18
|
+
body?: ReactNode;
|
|
19
|
+
screenId?: string;
|
|
20
|
+
overrides?: PrizmaScreenOverrides;
|
|
21
|
+
onAction?: PrizmaScreenActionHandler;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Qualified Signature — the two full-surface document screens, built on the List
|
|
25
|
+
* archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
|
|
26
|
+
*
|
|
27
|
+
* Figma:
|
|
28
|
+
* - `document` — `QSign.AcceptSign.viewdoc` (10196:67381 / the partner's
|
|
29
|
+
* 6120:34074): the contract behind the accept screen's "View" action. CONTENT
|
|
30
|
+
* = nav 8→52 · a 342-wide page filling 68→660 · the Tag at 676.
|
|
31
|
+
* - `terms` — `QSign.T&C` (11130:43690): the certificate application form
|
|
32
|
+
* behind the partner variant's link. A left-aligned heading over a 13 575-tall
|
|
33
|
+
* block of legal text WITH ITS OWN SCROLL INDICATOR — Figma is explicit that
|
|
34
|
+
* this surface scrolls.
|
|
35
|
+
*
|
|
36
|
+
* Archetype G is the fit: its `__list` middle is "content filling the space
|
|
37
|
+
* between the title block and the CTA band", which is exactly what a document
|
|
38
|
+
* page is, and both sections carry no CTA at all so the band never renders. The
|
|
39
|
+
* body is allowed to scroll inside that middle — one module rule RELEASING an
|
|
40
|
+
* overflow constraint, declaring no spacing or size, the same idiom as CURP's
|
|
41
|
+
* taller-than-844 form (DEVIATIONS #CURP-1).
|
|
42
|
+
*
|
|
43
|
+
* THREE deltas from the frames, all reported rather than worked around:
|
|
44
|
+
* 1. Both sections draw a back chevron at the nav's left (and `terms` replaces
|
|
45
|
+
* the logo row with a chevron + heading bar). GUIDELINES §3 stands: SDK
|
|
46
|
+
* screens carry no dismiss or back affordance — the standing ruling of
|
|
47
|
+
* DEVIATIONS #PI-9, which is not re-litigated per module.
|
|
48
|
+
* 2. `viewdoc` draws NO heading. GUIDELINES §4 is explicit that every screen has
|
|
49
|
+
* exactly one H2, and archetype G has no title-less path, so the screen
|
|
50
|
+
* carries one and the Figma frame is the side to change. (An archetype
|
|
51
|
+
* request for an optional title — a pure content viewer — is logged.)
|
|
52
|
+
* 3. `terms` draws neither the logo nor the tag. The owner rule wins over Figma
|
|
53
|
+
* for attribution chrome (#PI-8, #F-30, #F-34), so both variants keep the
|
|
54
|
+
* header and the footer and nothing shifts between states.
|
|
55
|
+
*
|
|
56
|
+
* `terms` is LEFT-aligned, as Figma draws it: a centred heading over a
|
|
57
|
+
* left-aligned wall of legal text reads as a mistake. The alignment rides the
|
|
58
|
+
* sanctioned `overrides.align` path (types.ts) — nothing is re-styled here — and
|
|
59
|
+
* an explicit host override still wins. The #GEO-2 precedent.
|
|
60
|
+
*/
|
|
61
|
+
export declare const QualifiedSignatureDocumentScreen: React.ForwardRefExoticComponent<QualifiedSignatureDocumentScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
export default QualifiedSignatureDocumentScreen;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaListScreen } from './ListScreen';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './QualifiedSignatureLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Qualified Signature — the two full-surface document screens, built on the List
|
|
9
|
+
* archetype (GUIDELINES.md §6-G, `PrizmaListScreen`).
|
|
10
|
+
*
|
|
11
|
+
* Figma:
|
|
12
|
+
* - `document` — `QSign.AcceptSign.viewdoc` (10196:67381 / the partner's
|
|
13
|
+
* 6120:34074): the contract behind the accept screen's "View" action. CONTENT
|
|
14
|
+
* = nav 8→52 · a 342-wide page filling 68→660 · the Tag at 676.
|
|
15
|
+
* - `terms` — `QSign.T&C` (11130:43690): the certificate application form
|
|
16
|
+
* behind the partner variant's link. A left-aligned heading over a 13 575-tall
|
|
17
|
+
* block of legal text WITH ITS OWN SCROLL INDICATOR — Figma is explicit that
|
|
18
|
+
* this surface scrolls.
|
|
19
|
+
*
|
|
20
|
+
* Archetype G is the fit: its `__list` middle is "content filling the space
|
|
21
|
+
* between the title block and the CTA band", which is exactly what a document
|
|
22
|
+
* page is, and both sections carry no CTA at all so the band never renders. The
|
|
23
|
+
* body is allowed to scroll inside that middle — one module rule RELEASING an
|
|
24
|
+
* overflow constraint, declaring no spacing or size, the same idiom as CURP's
|
|
25
|
+
* taller-than-844 form (DEVIATIONS #CURP-1).
|
|
26
|
+
*
|
|
27
|
+
* THREE deltas from the frames, all reported rather than worked around:
|
|
28
|
+
* 1. Both sections draw a back chevron at the nav's left (and `terms` replaces
|
|
29
|
+
* the logo row with a chevron + heading bar). GUIDELINES §3 stands: SDK
|
|
30
|
+
* screens carry no dismiss or back affordance — the standing ruling of
|
|
31
|
+
* DEVIATIONS #PI-9, which is not re-litigated per module.
|
|
32
|
+
* 2. `viewdoc` draws NO heading. GUIDELINES §4 is explicit that every screen has
|
|
33
|
+
* exactly one H2, and archetype G has no title-less path, so the screen
|
|
34
|
+
* carries one and the Figma frame is the side to change. (An archetype
|
|
35
|
+
* request for an optional title — a pure content viewer — is logged.)
|
|
36
|
+
* 3. `terms` draws neither the logo nor the tag. The owner rule wins over Figma
|
|
37
|
+
* for attribution chrome (#PI-8, #F-30, #F-34), so both variants keep the
|
|
38
|
+
* header and the footer and nothing shifts between states.
|
|
39
|
+
*
|
|
40
|
+
* `terms` is LEFT-aligned, as Figma draws it: a centred heading over a
|
|
41
|
+
* left-aligned wall of legal text reads as a mistake. The alignment rides the
|
|
42
|
+
* sanctioned `overrides.align` path (types.ts) — nothing is re-styled here — and
|
|
43
|
+
* an explicit host override still wins. The #GEO-2 precedent.
|
|
44
|
+
*/
|
|
45
|
+
export const QualifiedSignatureDocumentScreen = forwardRef(({ strings, variant = 'document', body, screenId = `qualified-signature-document-${variant}`, overrides, onAction, ...shell }, ref) => {
|
|
46
|
+
const copy = variant === 'terms' ? strings.document.terms : strings.document.document;
|
|
47
|
+
// The legal wall is left-aligned in Figma; the contract page keeps the
|
|
48
|
+
// archetype's centred default. An explicit `overrides.align` still wins.
|
|
49
|
+
const alignedOverrides = {
|
|
50
|
+
...overrides,
|
|
51
|
+
align: overrides?.align ?? (variant === 'terms' ? 'left' : 'centered'),
|
|
52
|
+
};
|
|
53
|
+
return (_jsx(PrizmaListScreen, { ref: ref, title: copy.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: alignedOverrides, onAction: onAction, ...shell, children: _jsx("div", { className: "qualified-signature-document", children: body }) }));
|
|
54
|
+
});
|
|
55
|
+
QualifiedSignatureDocumentScreen.displayName = 'QualifiedSignatureDocumentScreen';
|
|
56
|
+
export default QualifiedSignatureDocumentScreen;
|