@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,81 @@
|
|
|
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 { PrizmaDateField } from '@incodetech/prizma-core-web/date-field';
|
|
6
|
+
import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
|
|
7
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
8
|
+
import './ScreenLayout.css';
|
|
9
|
+
import './EkycLayout.css';
|
|
10
|
+
/**
|
|
11
|
+
* eKYC — page 1, the applicant's identity data, built on the Form archetype
|
|
12
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
13
|
+
*
|
|
14
|
+
* ONE screen for all three page-1 purple sections (`default` 2101:7877,
|
|
15
|
+
* `focused` 2101:8159, `filled` 5849:60225): measured against the 390 frames
|
|
16
|
+
* they share an identical skeleton — nav → Title → Spacing/32 → four labelled
|
|
17
|
+
* fields at Spacing/16 → "Continue" → tag (the archetype's own offsets, and the
|
|
18
|
+
* exact ones Figma draws: `middle container` puts Title at 8, `container 1` at
|
|
19
|
+
* 99, and stacks the fields at 0 / 94 / 188 / 282, i.e. 78-tall fields with a
|
|
20
|
+
* flat 16 between) — and differ ONLY in field content and field treatment.
|
|
21
|
+
*
|
|
22
|
+
* Four things are deliberate, each one a lesson an earlier module paid for:
|
|
23
|
+
*
|
|
24
|
+
* 1. The fields are UNCONTROLLED (`defaultValue`). A screen is one static spec
|
|
25
|
+
* state, so no `onChange` is needed — and Core's `readOnly`, the other way
|
|
26
|
+
* to freeze a field, paints the DISABLED grey surface on sections Figma
|
|
27
|
+
* draws white (#PI-6). Page 1 greys nothing, so nothing here is `disabled`.
|
|
28
|
+
* 2. `focused` gets Core's OWN `--focused` modifier through `className` — the
|
|
29
|
+
* class its CSS already implements beside `:focus-within`. `PrizmaTextField`
|
|
30
|
+
* still has no `forceState` prop, unlike `PrizmaDropdown` (#PI-7); nothing
|
|
31
|
+
* is re-styled here.
|
|
32
|
+
* 3. The clear ✕ is asked for ONLY on the focused field, the one field
|
|
33
|
+
* 2101:8159 draws it in. `clearable` alone would be a prop that silently
|
|
34
|
+
* does nothing — Core reveals the button under `:focus-within`, a guard a
|
|
35
|
+
* static spec state can never satisfy — so `EkycLayout.css` releases that
|
|
36
|
+
* one guard, the same idiom (and the same Core request) as
|
|
37
|
+
* `CurpLayout.css`'s error rule. No ✕ glyph is declared here.
|
|
38
|
+
* 4. Date of Birth is Core's `PrizmaDateField`, not a text field with a bolted-on
|
|
39
|
+
* icon: the frame's trailing glyph is the date kind's own calendar
|
|
40
|
+
* affordance, and the DD/MM/YYYY value Figma fills in ("14/03/1989") is the
|
|
41
|
+
* mask that kind applies.
|
|
42
|
+
*
|
|
43
|
+
* The required asterisk is Core's `requiredHint` suffix on a `required` field —
|
|
44
|
+
* the label row Figma draws as "First name *" — so Middle name, the one
|
|
45
|
+
* optional field, correctly renders none.
|
|
46
|
+
*
|
|
47
|
+
* Figma draws a two-segment journey bar between the nav and the title on every
|
|
48
|
+
* page-1 frame, and it is the only chrome that separates page 1 from page 2.
|
|
49
|
+
* Archetype E had no slot above the title; the gap is now CLOSED in the
|
|
50
|
+
* archetype (`PrizmaFormScreen.progress`, offsets in `ScreenLayout.css`) rather
|
|
51
|
+
* than worked around here, and the bar itself is Core's shipped `PrizmaStepper`
|
|
52
|
+
* — no two-div bar is hand-rolled. All three page-1 sections draw segment 1
|
|
53
|
+
* solid brand blue and segment 2 grey, i.e. `steps={2} currentState="Start"`,
|
|
54
|
+
* with the icons row off (the frames draw the bar alone). DEVIATIONS #EK-1.
|
|
55
|
+
*/
|
|
56
|
+
export const EkycDetailsScreen = forwardRef(({ strings, state = 'default', values, screenId = `ekyc-details-${state}`, className, overrides, onAction, ...shell }, ref) => {
|
|
57
|
+
// The one field treatment that varies across the three sections: 2101:8159
|
|
58
|
+
// rings First name blue and shows its clear ✕; the other two draw every
|
|
59
|
+
// field resting.
|
|
60
|
+
const focused = state === 'focused';
|
|
61
|
+
return (_jsxs(PrizmaFormScreen, { ref: ref,
|
|
62
|
+
/* Scopes the single rule that lets the focused field keep the clear ✕
|
|
63
|
+
Figma draws inside it. See EkycLayout.css. */
|
|
64
|
+
className: ['ekyc-details', focused ? 'ekyc-details--focused' : '', className]
|
|
65
|
+
.filter(Boolean)
|
|
66
|
+
.join(' '),
|
|
67
|
+
/* Page 1 of 2: segment 1 filled, segment 2 still grey — Core's own
|
|
68
|
+
`Start` state at `steps={2}`. `showIcons={false}` because the frames
|
|
69
|
+
draw the bar with no glyph row (and it keeps the icon lookup, which
|
|
70
|
+
has no id+2 sequence, out of the render entirely). */
|
|
71
|
+
progress: _jsx(PrizmaStepper, { steps: 2, currentState: "Start", showIcons: false, "aria-label": strings.stepperLabel }), title: strings.details.title, subtitle: strings.details.subtitle, ctaLabel: strings.details.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId,
|
|
72
|
+
/* Every eKYC form frame LEFT-aligns its title block, while the archetype
|
|
73
|
+
defaults to centred. The module supplies its designed alignment through
|
|
74
|
+
the sanctioned override rather than declaring any layout, and a host
|
|
75
|
+
that passes its own `align` still wins. */
|
|
76
|
+
overrides: { align: overrides?.align ?? 'left', logo: overrides?.logo }, onAction: onAction, ...shell, children: [_jsx(PrizmaTextField, { className: focused ? 'prizma-input-textfield--focused' : undefined, label: strings.details.firstNameLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.firstName ?? '', autoComplete: "off",
|
|
77
|
+
/* Only 2101:8159 draws the ✕, and only in this field. */
|
|
78
|
+
clearable: focused, clearLabel: strings.details.clearLabel }), _jsx(PrizmaTextField, { label: strings.details.middleNameLabel, defaultValue: values?.middleName ?? '', autoComplete: "off", clearable: false }), _jsx(PrizmaTextField, { label: strings.details.lastNameLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.lastName ?? '', autoComplete: "off", clearable: false }), _jsx(PrizmaDateField, { label: strings.details.dateOfBirthLabel, required: true, requiredHint: strings.details.requiredHint, defaultValue: values?.dateOfBirth ?? '', autoComplete: "off" })] }));
|
|
79
|
+
});
|
|
80
|
+
EkycDetailsScreen.displayName = 'EkycDetailsScreen';
|
|
81
|
+
export default EkycDetailsScreen;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaResultScreenProps } from './ResultScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EkycStrings } from './EkycStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface EkycErrorScreenProps extends Omit<PrizmaResultScreenProps, 'status' | 'title' | 'subtitle' | 'ctaLabel' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `error` slice. */
|
|
8
|
+
strings: EkycStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* eKYC — the failure verdict, built on the Result archetype
|
|
15
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `eKYC.error` section (2101:7979), which holds exactly ONE
|
|
18
|
+
* screen — a centred negative mark + H2 ("Something went wrong") over the "Try
|
|
19
|
+
* again" CTA band. The module draws no connectivity section anywhere in the
|
|
20
|
+
* file, so this screen ships no `variant` axis and no Wi-Fi glyph: adding one
|
|
21
|
+
* would invent a state the spec does not have (the #EI-5 precedent).
|
|
22
|
+
*
|
|
23
|
+
* Two things Figma draws are deliberately NOT reproduced, both owner-settled:
|
|
24
|
+
* the nav's close ✕ (GUIDELINES §3 forbids it — the standing #PI-9 ruling) and
|
|
25
|
+
* the missing verified tag, since the chrome stays constant across a module's
|
|
26
|
+
* screens (#PI-8, #F-34). The header and the tag stay.
|
|
27
|
+
*
|
|
28
|
+
* The mark is Core's outline status icon; the module Figma still draws the
|
|
29
|
+
* two-tone filled disc, one icon sweep behind (DEVIATIONS #15).
|
|
30
|
+
*/
|
|
31
|
+
export declare const EkycErrorScreen: React.ForwardRefExoticComponent<EkycErrorScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
export default EkycErrorScreen;
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
* eKYC — the failure verdict, built on the Result archetype
|
|
8
|
+
* (GUIDELINES.md §6-F, `PrizmaResultScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `eKYC.error` section (2101:7979), which holds exactly ONE
|
|
11
|
+
* screen — a centred negative mark + H2 ("Something went wrong") over the "Try
|
|
12
|
+
* again" CTA band. The module draws no connectivity section anywhere in the
|
|
13
|
+
* file, so this screen ships no `variant` axis and no Wi-Fi glyph: adding one
|
|
14
|
+
* would invent a state the spec does not have (the #EI-5 precedent).
|
|
15
|
+
*
|
|
16
|
+
* Two things Figma draws are deliberately NOT reproduced, both owner-settled:
|
|
17
|
+
* the nav's close ✕ (GUIDELINES §3 forbids it — the standing #PI-9 ruling) and
|
|
18
|
+
* the missing verified tag, since the chrome stays constant across a module's
|
|
19
|
+
* screens (#PI-8, #F-34). The header and the tag stay.
|
|
20
|
+
*
|
|
21
|
+
* The mark is Core's outline status icon; the module Figma still draws the
|
|
22
|
+
* two-tone filled disc, one icon sweep behind (DEVIATIONS #15).
|
|
23
|
+
*/
|
|
24
|
+
export const EkycErrorScreen = forwardRef(({ strings, screenId = 'ekyc-error', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaResultScreen, { ref: ref, status: "error", title: strings.error.title, ctaLabel: strings.error.ctaLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
25
|
+
EkycErrorScreen.displayName = 'EkycErrorScreen';
|
|
26
|
+
export default EkycErrorScreen;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eKYC — module layout additions.
|
|
2
|
+
*
|
|
3
|
+
* ONE rule, and it declares no spacing: the content column, the 24px gutters,
|
|
4
|
+
* the title → fields Spacing/32, the 16 between fields, the CTA column and the
|
|
5
|
+
* anchored footer all stay the foundation's (`ScreenLayout.css`,
|
|
6
|
+
* `FormScreen.css`). Nothing here re-declares an archetype value, invents a
|
|
7
|
+
* primitive or repaints one — the rule RELEASES a Core constraint that a purple
|
|
8
|
+
* eKYC section contradicts, the same idiom as `CurpLayout.css`'s error rule and
|
|
9
|
+
* Phone Input's `width: auto` on Core's fill-width Dropdown (DEVIATIONS #PI-1).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/* ── The focused First-name field keeps its clear ✕ ──────────────────────────
|
|
13
|
+
* `eKYC.focused` (2101:8159) draws three things at once: the blue focus ring on
|
|
14
|
+
* First name, the partial value ("Juli") AND the grey clear ✕ at the field's
|
|
15
|
+
* right edge. Core renders that button (`PrizmaTextField clearable`) but reveals
|
|
16
|
+
* it only under `:focus-within` (TextField.css:121) — a guard a STATIC spec
|
|
17
|
+
* state can never satisfy, because nothing in a gallery card ever takes real
|
|
18
|
+
* DOM focus. Left alone, `clearable` would be a prop that silently does nothing,
|
|
19
|
+
* which is the exact defect the CURP build was pulled up on.
|
|
20
|
+
*
|
|
21
|
+
* This releases the guard for that ONE section, and only where Core has already
|
|
22
|
+
* decided the button should exist: `__clear--show` is Core's own state class,
|
|
23
|
+
* set only when the field has a value. It is Core's button, icon, box, size and
|
|
24
|
+
* color token — no ✕ glyph is declared here, no geometry, no spacing; only
|
|
25
|
+
* Core's `display: none` is lifted. Every other eKYC field asks for
|
|
26
|
+
* `clearable={false}` and gets no button in the DOM at all, exactly as
|
|
27
|
+
* 2101:7877 / 5849:60225 / 5849:51109 / 5849:66890 / 5849:71925 draw them.
|
|
28
|
+
*
|
|
29
|
+
* CORE REQUEST (already open as DEVIATIONS #PI-7): `PrizmaTextField` needs the
|
|
30
|
+
* `forceState` prop `PrizmaDropdown` has, so a documentation/spec surface can
|
|
31
|
+
* render the designed focused state — ring AND clear affordance — without a
|
|
32
|
+
* consumer releasing a CSS guard. Every module with a "focused" purple section
|
|
33
|
+
* hits this.
|
|
34
|
+
*/
|
|
35
|
+
.ekyc-details--focused
|
|
36
|
+
.prizma-input-textfield--focused
|
|
37
|
+
.prizma-input-textfield__clear--show {
|
|
38
|
+
display: inline-flex;
|
|
39
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EkycLicenseState, EkycLicenseStateOption, EkycLicenseValues, EkycStrings } from './EkycStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
import './EkycLayout.css';
|
|
7
|
+
export interface EkycLicenseScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaLoading' | 'ctaLoadingLabel' | 'verifiedLabel' | 'children' | 'navLabel' | 'linkLabel' | 'linkContent' | 'progress'> {
|
|
8
|
+
/** Module copy — this screen reads the `license` slice. */
|
|
9
|
+
strings: EkycStrings;
|
|
10
|
+
/** Which page-2 purple section to render. Default `default`. */
|
|
11
|
+
state?: EkycLicenseState;
|
|
12
|
+
/** The values the fields start with. */
|
|
13
|
+
values?: EkycLicenseValues;
|
|
14
|
+
/** The jurisdictions the state chooser offers. Runtime data, never copy. */
|
|
15
|
+
stateOptions?: EkycLicenseStateOption[];
|
|
16
|
+
screenId?: string;
|
|
17
|
+
overrides?: PrizmaScreenOverrides;
|
|
18
|
+
onAction?: PrizmaScreenActionHandler;
|
|
19
|
+
}
|
|
20
|
+
export declare const EkycLicenseScreen: React.ForwardRefExoticComponent<EkycLicenseScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export default EkycLicenseScreen;
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { PrizmaDateField } from '@incodetech/prizma-core-web/date-field';
|
|
6
|
+
import { PrizmaDropdown } from '@incodetech/prizma-core-web/dropdown';
|
|
7
|
+
import { PrizmaStepper } from '@incodetech/prizma-core-web/stepper';
|
|
8
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
9
|
+
import './ScreenLayout.css';
|
|
10
|
+
import './EkycLayout.css';
|
|
11
|
+
/**
|
|
12
|
+
* eKYC — page 2, the document's own fields, built on the Form archetype
|
|
13
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
14
|
+
*
|
|
15
|
+
* ONE screen for all three page-2 purple sections (`default` 5849:51109,
|
|
16
|
+
* `filled` 5849:66890, `loading` 5849:71925): the frames share page 1's
|
|
17
|
+
* skeleton exactly — nav → Title → Spacing/32 → labelled fields at Spacing/16
|
|
18
|
+
* → "Continue" → tag — with a three-field stack (text · chooser · date) and no
|
|
19
|
+
* subtitle, and they differ ONLY in field content and CTA state.
|
|
20
|
+
*
|
|
21
|
+
* Three things are deliberate:
|
|
22
|
+
*
|
|
23
|
+
* 1. The middle field is Core's `PrizmaDropdown`, the chooser Figma draws
|
|
24
|
+
* (`Dropdown`, 342×78, trailing chevron), not a text field. It is left
|
|
25
|
+
* UNCONTROLLED via `defaultValue` for the same reason the text fields are.
|
|
26
|
+
* 2. `loading` is the ONE section Figma greys, so it is the only one that sets
|
|
27
|
+
* `disabled` — on all three fields, exactly as drawn (#PI-6: `readOnly` is
|
|
28
|
+
* never used to freeze a field, because it greys sections drawn white).
|
|
29
|
+
* 3. The in-flight spinner rides the CTA (`ctaLoading`), never a field — the
|
|
30
|
+
* standing #PI-5 ruling, and what 5849:71925 draws: the button's label is
|
|
31
|
+
* replaced by the spinner while every field stays put.
|
|
32
|
+
*
|
|
33
|
+
* Page 2 draws NO required asterisks — 5849:51109's three label rows are bare —
|
|
34
|
+
* so no field here is `required`, and the page carries no "* are required"
|
|
35
|
+
* subtitle either.
|
|
36
|
+
*
|
|
37
|
+
* As on page 1, the two-segment journey bar rides the archetype's `progress`
|
|
38
|
+
* slot (`PrizmaFormScreen.progress`, offsets in `ScreenLayout.css`) and is
|
|
39
|
+
* Core's shipped `PrizmaStepper`. Page 2 advances it: 5849:51109 and 5849:66890
|
|
40
|
+
* draw segment 1 pale (Core's `past` — brand blue at 0.5) and segment 2 solid
|
|
41
|
+
* brand blue, which is `currentState={2}`; 5849:71925 turns BOTH segments green,
|
|
42
|
+
* which is Core's `Completed`. The bar is therefore what tells `loading` apart
|
|
43
|
+
* from `filled` at a glance, on top of the greyed fields and the CTA spinner.
|
|
44
|
+
* DEVIATIONS #EK-1.
|
|
45
|
+
*/
|
|
46
|
+
/** Page-2 section → the journey-bar state Figma paints on it. */
|
|
47
|
+
const STEPPER_STATE = {
|
|
48
|
+
/* 5849:51109 / 5849:66890 — segment 1 pale ("past"), segment 2 solid. */
|
|
49
|
+
default: 2,
|
|
50
|
+
filled: 2,
|
|
51
|
+
/* 5849:71925 — both segments green. */
|
|
52
|
+
loading: 'Completed',
|
|
53
|
+
};
|
|
54
|
+
export const EkycLicenseScreen = forwardRef(({ strings, state = 'default', values, stateOptions = [], screenId = `ekyc-license-${state}`, className, overrides, onAction, ...shell }, ref) => {
|
|
55
|
+
const busy = state === 'loading';
|
|
56
|
+
return (_jsxs(PrizmaFormScreen, { ref: ref, className: ['ekyc-license', className].filter(Boolean).join(' '),
|
|
57
|
+
/* Page 2 of 2 — advanced past page 1, and green once the submit is in
|
|
58
|
+
flight. `showIcons={false}`: the frames draw the bar alone. */
|
|
59
|
+
progress: _jsx(PrizmaStepper, { steps: 2, currentState: STEPPER_STATE[state], showIcons: false, "aria-label": strings.stepperLabel, completedValueText: strings.stepperCompletedLabel }), title: strings.license.title, ctaLabel: strings.license.ctaLabel,
|
|
60
|
+
/* 5849:71925 swaps the CTA label for Core's designed spinner. */
|
|
61
|
+
ctaLoading: busy, ctaLoadingLabel: strings.license.ctaLoadingLabel, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId,
|
|
62
|
+
/* Left-aligned title block, same as page 1; a host `align` still wins. */
|
|
63
|
+
overrides: { align: overrides?.align ?? 'left', logo: overrides?.logo }, onAction: onAction, ...shell, children: [_jsx(PrizmaTextField, { label: strings.license.numberLabel, defaultValue: values?.number ?? '', autoComplete: "off", spellCheck: false, disabled: busy,
|
|
64
|
+
/* No section on this page draws the clear ✕. */
|
|
65
|
+
clearable: false }), _jsx(PrizmaDropdown, { label: strings.license.stateLabel, options: stateOptions, defaultValue: values?.state ?? null, disabled: busy }), _jsx(PrizmaDateField, { label: strings.license.expirationLabel, defaultValue: values?.expirationDate ?? '', autoComplete: "off", disabled: busy })] }));
|
|
66
|
+
});
|
|
67
|
+
EkycLicenseScreen.displayName = 'EkycLicenseScreen';
|
|
68
|
+
export default EkycLicenseScreen;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EkycStrings } from './EkycStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface EkycProcessingScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `processing` slice. */
|
|
8
|
+
strings: EkycStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* eKYC — the submitted data is being checked, built on the Processing archetype
|
|
15
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `eKYC.processing` section (2101:7959). A centred spinner
|
|
18
|
+
* over a bare H2 ("Processing…") with **no subtitle and no CTA** — exactly the
|
|
19
|
+
* pure no-button case §6-F reserves for C rather than the Result archetype.
|
|
20
|
+
*
|
|
21
|
+
* The title block is centred here, unlike the module's two form pages: the
|
|
22
|
+
* verdict frames draw the mark and the status line on the screen's centre line,
|
|
23
|
+
* so the archetype's own default is the designed one and nothing is overridden.
|
|
24
|
+
*/
|
|
25
|
+
export declare const EkycProcessingScreen: React.ForwardRefExoticComponent<EkycProcessingScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
export default EkycProcessingScreen;
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
* eKYC — the submitted data is being checked, built on the Processing archetype
|
|
8
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `eKYC.processing` section (2101:7959). A centred spinner
|
|
11
|
+
* over a bare H2 ("Processing…") with **no subtitle and no CTA** — exactly the
|
|
12
|
+
* pure no-button case §6-F reserves for C rather than the Result archetype.
|
|
13
|
+
*
|
|
14
|
+
* The title block is centred here, unlike the module's two form pages: the
|
|
15
|
+
* verdict frames draw the mark and the status line on the screen's centre line,
|
|
16
|
+
* so the archetype's own default is the designed one and nothing is overridden.
|
|
17
|
+
*/
|
|
18
|
+
export const EkycProcessingScreen = forwardRef(({ strings, screenId = 'ekyc-processing', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "loading", title: strings.processing.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
19
|
+
EkycProcessingScreen.displayName = 'EkycProcessingScreen';
|
|
20
|
+
export default EkycProcessingScreen;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page-1 sections (`eKYC.default` / `eKYC.focused` / `eKYC.filled`). All
|
|
3
|
+
* three draw the SAME layout — nav → Title (H2 + H5) → Spacing/32 → four
|
|
4
|
+
* labelled fields at Spacing/16 → "Continue" → tag — and differ only in field
|
|
5
|
+
* content and field treatment, which is what GUIDELINES §6-E means by "states
|
|
6
|
+
* are separate screens sharing the identical layout":
|
|
7
|
+
* - `default` — every field empty
|
|
8
|
+
* - `focused` — First name carries the blue focus ring, a partial value and
|
|
9
|
+
* the clear ✕ (2101:8159 draws the OS keyboard over the CTA; the
|
|
10
|
+
* keyboard is OS chrome, never a screen element)
|
|
11
|
+
* - `filled` — all four fields resting with their values
|
|
12
|
+
*/
|
|
13
|
+
export type EkycDetailsState = 'default' | 'focused' | 'filled';
|
|
14
|
+
/**
|
|
15
|
+
* The page-2 sections (`eKYC.default` / `eKYC.filled` / `eKYC.loading`), same
|
|
16
|
+
* layout with the document field set:
|
|
17
|
+
* - `default` — licence number, state chooser and expiry all empty
|
|
18
|
+
* - `filled` — all three resting with their values
|
|
19
|
+
* - `loading` — the submit is in flight: Figma greys all three fields and swaps
|
|
20
|
+
* the CTA label for the spinner (the spinner rides the CTA, never
|
|
21
|
+
* a field — the standing #PI-5 ruling)
|
|
22
|
+
*/
|
|
23
|
+
export type EkycLicenseState = 'default' | 'filled' | 'loading';
|
|
24
|
+
/** One row of the licence-state chooser. Runtime data, never copy — the host
|
|
25
|
+
* supplies the jurisdictions its tenant accepts, exactly as Phone Input's
|
|
26
|
+
* `PhoneInputCountry` supplies dial codes. */
|
|
27
|
+
export interface EkycLicenseStateOption {
|
|
28
|
+
value: string;
|
|
29
|
+
label: string;
|
|
30
|
+
}
|
|
31
|
+
/** Page-1 field values. A screen is one static spec state, so these are the
|
|
32
|
+
* UNCONTROLLED starting values of Core's fields — no `onChange` is wired and
|
|
33
|
+
* `readOnly` is never used to freeze them (it paints Core's DISABLED grey on
|
|
34
|
+
* sections Figma draws white — the standing #PI-6 ruling). */
|
|
35
|
+
export interface EkycDetailsValues {
|
|
36
|
+
firstName?: string;
|
|
37
|
+
middleName?: string;
|
|
38
|
+
lastName?: string;
|
|
39
|
+
dateOfBirth?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Page-2 field values. Same contract as `EkycDetailsValues`. */
|
|
42
|
+
export interface EkycLicenseValues {
|
|
43
|
+
/** The licence number as printed on the document. */
|
|
44
|
+
number?: string;
|
|
45
|
+
/** `value` of one `EkycLicenseStateOption`. */
|
|
46
|
+
state?: string;
|
|
47
|
+
/** Masked DD/MM/YYYY, the mask Core's date field applies. */
|
|
48
|
+
expirationDate?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface EkycStrings {
|
|
51
|
+
/** "verified by" attribution in the footer tag. */
|
|
52
|
+
verifiedLabel: string;
|
|
53
|
+
/** Accessible name for the logo nav row. */
|
|
54
|
+
navLabel?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Accessible name for the two-segment journey bar the six form frames draw
|
|
57
|
+
* between the nav and the title (Core's `PrizmaStepper`, `role="progressbar"`).
|
|
58
|
+
* The bar is the ONLY chrome that separates page 1 from page 2, so it carries
|
|
59
|
+
* a real name rather than none — supplied here because it is copy.
|
|
60
|
+
*/
|
|
61
|
+
stepperLabel: string;
|
|
62
|
+
/**
|
|
63
|
+
* `aria-valuetext` the same bar announces once both segments are green — the
|
|
64
|
+
* page-2 `loading` section (5849:71925). Same contract as Video Selfie's
|
|
65
|
+
* `stepperCompletedLabel`.
|
|
66
|
+
*/
|
|
67
|
+
stepperCompletedLabel: string;
|
|
68
|
+
/** `eKYC.*` page 1 — the applicant's name and date of birth. */
|
|
69
|
+
details: {
|
|
70
|
+
/** H2 screen title. */
|
|
71
|
+
title: string;
|
|
72
|
+
/** H5 description under the title. */
|
|
73
|
+
subtitle: string;
|
|
74
|
+
/**
|
|
75
|
+
* Suffix Core appends to a REQUIRED field's label — Figma draws a bare
|
|
76
|
+
* asterisk ("First name *") and the subtitle explains it. Configurable
|
|
77
|
+
* because it is visible copy: a locale may prefer "(obligatorio)".
|
|
78
|
+
*/
|
|
79
|
+
requiredHint: string;
|
|
80
|
+
firstNameLabel: string;
|
|
81
|
+
middleNameLabel: string;
|
|
82
|
+
lastNameLabel: string;
|
|
83
|
+
dateOfBirthLabel: string;
|
|
84
|
+
/** Accessible name for the clear ✕ inside the focused field. */
|
|
85
|
+
clearLabel: string;
|
|
86
|
+
ctaLabel: string;
|
|
87
|
+
};
|
|
88
|
+
/** `eKYC.*` page 2 — the document's own fields. */
|
|
89
|
+
license: {
|
|
90
|
+
/** H2 screen title. */
|
|
91
|
+
title: string;
|
|
92
|
+
numberLabel: string;
|
|
93
|
+
stateLabel: string;
|
|
94
|
+
expirationLabel: string;
|
|
95
|
+
ctaLabel: string;
|
|
96
|
+
/** Visible/accessible copy while the submit is in flight. */
|
|
97
|
+
ctaLoadingLabel: string;
|
|
98
|
+
};
|
|
99
|
+
/** `eKYC.processing` — spinner over the status line, no button. */
|
|
100
|
+
processing: {
|
|
101
|
+
title: string;
|
|
102
|
+
};
|
|
103
|
+
/** `eKYC.success` — positive mark over the status line, no button. */
|
|
104
|
+
success: {
|
|
105
|
+
title: string;
|
|
106
|
+
};
|
|
107
|
+
/** `eKYC.error` — negative mark, status line and the retry CTA. */
|
|
108
|
+
error: {
|
|
109
|
+
title: string;
|
|
110
|
+
ctaLabel: string;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// eKYC — copy contract.
|
|
2
|
+
//
|
|
3
|
+
// Figma: `👁️ eKYC / 💼 eKYB - Screens specs + Localization`
|
|
4
|
+
// (`TWgYZVhurQCizfC4tfLEut`, page `2003:12082`). The file holds THREE top-level
|
|
5
|
+
// sections; only the two eKYC ones are this module's scope:
|
|
6
|
+
// `2098:20865` 👁️ eKYC Initial screen options — the field-option catalogue
|
|
7
|
+
// (V1 references · dashboard options · the "all options" matrix).
|
|
8
|
+
// A spec board, not screens: every 390 frame it feeds is drawn
|
|
9
|
+
// in the section below.
|
|
10
|
+
// `2101:7869` 👁️ eKYC - Screens specs + Localization — the nine 390×844
|
|
11
|
+
// frames this module builds.
|
|
12
|
+
// `2116:23785` 💼 eKYB — a DIFFERENT module, deliberately untouched.
|
|
13
|
+
//
|
|
14
|
+
// The nine eKYC frames, by their 390×844 node id:
|
|
15
|
+
// 2101:7877 eKYC.default (page 1 — personal details, empty)
|
|
16
|
+
// 2101:8159 eKYC.focused (page 1 — First name focused, partial value)
|
|
17
|
+
// 5849:60225 eKYC.filled (page 1 — all four values)
|
|
18
|
+
// 5849:51109 eKYC.default (page 2 — driver's-licence details, empty)
|
|
19
|
+
// 5849:66890 eKYC.filled (page 2 — all three values)
|
|
20
|
+
// 5849:71925 eKYC.loading (page 2 — fields inert, spinner in the CTA)
|
|
21
|
+
// 2101:7959 eKYC.processing
|
|
22
|
+
// 2101:7979 eKYC.error
|
|
23
|
+
// 2101:7969 eKYC.success
|
|
24
|
+
//
|
|
25
|
+
// The module is a TWO-PAGE form: the data-capture pages are archetype E
|
|
26
|
+
// (`PrizmaFormScreen`), the two no-button verdicts are archetype C
|
|
27
|
+
// (`PrizmaProcessingScreen`) and the failure verdict is archetype F
|
|
28
|
+
// (`PrizmaResultScreen`) — the same C/F split `EmailInputSuccessScreen` and
|
|
29
|
+
// `EmailInputErrorScreen` settled (DEVIATIONS #EI-4/#EI-5).
|
|
30
|
+
//
|
|
31
|
+
// No hardcoded English anywhere in a screen: every visible string arrives here,
|
|
32
|
+
// so the host's locale pack drives the module (the Figma file ships ES + PT
|
|
33
|
+
// columns alongside EN).
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaProcessingScreenProps } from './ProcessingScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { EkycStrings } from './EkycStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface EkycSuccessScreenProps extends Omit<PrizmaProcessingScreenProps, 'status' | 'title' | 'subtitle' | 'verifiedLabel' | 'navLabel'> {
|
|
7
|
+
/** Module copy — this screen reads the `success` slice. */
|
|
8
|
+
strings: EkycStrings;
|
|
9
|
+
screenId?: string;
|
|
10
|
+
overrides?: PrizmaScreenOverrides;
|
|
11
|
+
onAction?: PrizmaScreenActionHandler;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* eKYC — the submitted verdict, built on the Processing archetype
|
|
15
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
16
|
+
*
|
|
17
|
+
* Figma: the purple `eKYC.success` section (2101:7969). A centred positive mark
|
|
18
|
+
* over a bare H2 ("Information submitted!") with **no subtitle and no CTA** —
|
|
19
|
+
* the module hands control straight back to the flow, so it sits on C while its
|
|
20
|
+
* sibling error verdict sits on F. That split follows the archetype rule rather
|
|
21
|
+
* than the module's own symmetry, the same call `EmailInputSuccessScreen`
|
|
22
|
+
* settled (DEVIATIONS #EI-4).
|
|
23
|
+
*
|
|
24
|
+
* The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
|
|
25
|
+
* module Figma still draws the two-tone filled disc, one icon sweep behind
|
|
26
|
+
* (DEVIATIONS #15, unchanged here).
|
|
27
|
+
*/
|
|
28
|
+
export declare const EkycSuccessScreen: React.ForwardRefExoticComponent<EkycSuccessScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
export default EkycSuccessScreen;
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
* eKYC — the submitted verdict, built on the Processing archetype
|
|
8
|
+
* (GUIDELINES.md §6-C, `PrizmaProcessingScreen`).
|
|
9
|
+
*
|
|
10
|
+
* Figma: the purple `eKYC.success` section (2101:7969). A centred positive mark
|
|
11
|
+
* over a bare H2 ("Information submitted!") with **no subtitle and no CTA** —
|
|
12
|
+
* the module hands control straight back to the flow, so it sits on C while its
|
|
13
|
+
* sibling error verdict sits on F. That split follows the archetype rule rather
|
|
14
|
+
* than the module's own symmetry, the same call `EmailInputSuccessScreen`
|
|
15
|
+
* settled (DEVIATIONS #EI-4).
|
|
16
|
+
*
|
|
17
|
+
* The mark is Core's outline status icon via `PrizmaTitle`'s icon slot — the
|
|
18
|
+
* module Figma still draws the two-tone filled disc, one icon sweep behind
|
|
19
|
+
* (DEVIATIONS #15, unchanged here).
|
|
20
|
+
*/
|
|
21
|
+
export const EkycSuccessScreen = forwardRef(({ strings, screenId = 'ekyc-success', overrides, onAction, ...shell }, ref) => (_jsx(PrizmaProcessingScreen, { ref: ref, status: "success", title: strings.success.title, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell })));
|
|
22
|
+
EkycSuccessScreen.displayName = 'EkycSuccessScreen';
|
|
23
|
+
export default EkycSuccessScreen;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type PrizmaFormScreenProps } from './FormScreen';
|
|
3
|
+
import type { PrizmaScreenActionHandler, PrizmaScreenOverrides } from './types';
|
|
4
|
+
import type { ElectronicSignatureDrawState, ElectronicSignatureStrings } from './ElectronicSignatureStrings';
|
|
5
|
+
import './ScreenLayout.css';
|
|
6
|
+
export interface ElectronicSignatureDrawScreenProps extends Omit<PrizmaFormScreenProps, 'title' | 'subtitle' | 'ctaLabel' | 'ctaDisabled' | 'verifiedLabel' | 'children' | 'navLabel' | 'linkLabel' | 'linkContent'> {
|
|
7
|
+
/** Module copy — this screen reads the `draw` slice. */
|
|
8
|
+
strings: ElectronicSignatureStrings;
|
|
9
|
+
/** Which purple section to render: `draw` (empty) or `signed`. Default `draw`. */
|
|
10
|
+
state?: ElectronicSignatureDrawState;
|
|
11
|
+
/**
|
|
12
|
+
* Core's own extension point for the drawing engine
|
|
13
|
+
* (`PrizmaSignaturePad.onCanvasReady`: "consumers wire their drawing engine
|
|
14
|
+
* to the canvas inside this callback"). Forwarded untouched so a host — or
|
|
15
|
+
* the hub gallery, which paints a specimen stroke for the `signed` cell — can
|
|
16
|
+
* put real ink on the pad. The screen itself stays presentational: it holds
|
|
17
|
+
* no state and touches no browser API.
|
|
18
|
+
*/
|
|
19
|
+
onCanvasReady?: (canvas: HTMLCanvasElement) => void;
|
|
20
|
+
screenId?: string;
|
|
21
|
+
overrides?: PrizmaScreenOverrides;
|
|
22
|
+
onAction?: PrizmaScreenActionHandler;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Electronic Signature — the signature-pad screen, built on the Form archetype
|
|
26
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
27
|
+
*
|
|
28
|
+
* ONE screen for both purple pad sections — `eSign.draw` (4116:10325) and
|
|
29
|
+
* `eSign.signed` (4116:10336). Measured against the 390 frames they share an
|
|
30
|
+
* identical skeleton — nav → Title (H2 + H5) → Spacing/32 → the pad → primary
|
|
31
|
+
* CTA → tag — and differ ONLY in what the pad and the CTA are doing. The pad is
|
|
32
|
+
* Core's `PrizmaSignaturePad` (the Figma `Signature pad` component, 6291:56383)
|
|
33
|
+
* verbatim: it owns the 256-tall field, the placeholder, the Spacing/8 to the
|
|
34
|
+
* Clear row and the Clear control itself, so nothing here re-creates any of it.
|
|
35
|
+
*
|
|
36
|
+
* The state axis is a single boolean into Core, and every one of its three
|
|
37
|
+
* visible consequences is Core's own (checked against `SignaturePad.tsx`, not
|
|
38
|
+
* assumed — the #CURP-3 lesson about props that silently do nothing):
|
|
39
|
+
*
|
|
40
|
+
* - `draw` → `isFilled={false}`: the "Sign here" placeholder shows, Core
|
|
41
|
+
* forces the Clear link Disabled (`disabled={disabled || !filled}`),
|
|
42
|
+
* and the primary CTA is disabled — Figma's grey `Done`.
|
|
43
|
+
* - `signed` → `isFilled={true}`: the placeholder is gone, Clear renders as the
|
|
44
|
+
* live blue `tertiary-link`, and the primary CTA is enabled.
|
|
45
|
+
*
|
|
46
|
+
* The ink itself is host-drawn through `onCanvasReady`, because the canvas is a
|
|
47
|
+
* real `<canvas>` whose bitmap only exists once a drawing engine paints it.
|
|
48
|
+
* That is Core's documented division of labour, not a workaround — see the
|
|
49
|
+
* module's DEVIATIONS row and the Core request recorded there.
|
|
50
|
+
*
|
|
51
|
+
* Standing rulings applied: the sections draw a close ✕ at the nav's right,
|
|
52
|
+
* which §3 does not offer and no module hand-rolls (DEVIATIONS #PI-9); the
|
|
53
|
+
* in-flight treatment, if this module ever gains one, rides the CTA rather than
|
|
54
|
+
* the field (#PI-5) — Core explicitly ships no Loading state for the pad.
|
|
55
|
+
*/
|
|
56
|
+
export declare const ElectronicSignatureDrawScreen: React.ForwardRefExoticComponent<ElectronicSignatureDrawScreenProps & React.RefAttributes<HTMLDivElement>>;
|
|
57
|
+
export default ElectronicSignatureDrawScreen;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { PrizmaSignaturePad } from '@incodetech/prizma-core-web/signature-pad';
|
|
5
|
+
import { PrizmaFormScreen } from './FormScreen';
|
|
6
|
+
import './ScreenLayout.css';
|
|
7
|
+
/**
|
|
8
|
+
* Electronic Signature — the signature-pad screen, built on the Form archetype
|
|
9
|
+
* (GUIDELINES.md §6-E, `PrizmaFormScreen`).
|
|
10
|
+
*
|
|
11
|
+
* ONE screen for both purple pad sections — `eSign.draw` (4116:10325) and
|
|
12
|
+
* `eSign.signed` (4116:10336). Measured against the 390 frames they share an
|
|
13
|
+
* identical skeleton — nav → Title (H2 + H5) → Spacing/32 → the pad → primary
|
|
14
|
+
* CTA → tag — and differ ONLY in what the pad and the CTA are doing. The pad is
|
|
15
|
+
* Core's `PrizmaSignaturePad` (the Figma `Signature pad` component, 6291:56383)
|
|
16
|
+
* verbatim: it owns the 256-tall field, the placeholder, the Spacing/8 to the
|
|
17
|
+
* Clear row and the Clear control itself, so nothing here re-creates any of it.
|
|
18
|
+
*
|
|
19
|
+
* The state axis is a single boolean into Core, and every one of its three
|
|
20
|
+
* visible consequences is Core's own (checked against `SignaturePad.tsx`, not
|
|
21
|
+
* assumed — the #CURP-3 lesson about props that silently do nothing):
|
|
22
|
+
*
|
|
23
|
+
* - `draw` → `isFilled={false}`: the "Sign here" placeholder shows, Core
|
|
24
|
+
* forces the Clear link Disabled (`disabled={disabled || !filled}`),
|
|
25
|
+
* and the primary CTA is disabled — Figma's grey `Done`.
|
|
26
|
+
* - `signed` → `isFilled={true}`: the placeholder is gone, Clear renders as the
|
|
27
|
+
* live blue `tertiary-link`, and the primary CTA is enabled.
|
|
28
|
+
*
|
|
29
|
+
* The ink itself is host-drawn through `onCanvasReady`, because the canvas is a
|
|
30
|
+
* real `<canvas>` whose bitmap only exists once a drawing engine paints it.
|
|
31
|
+
* That is Core's documented division of labour, not a workaround — see the
|
|
32
|
+
* module's DEVIATIONS row and the Core request recorded there.
|
|
33
|
+
*
|
|
34
|
+
* Standing rulings applied: the sections draw a close ✕ at the nav's right,
|
|
35
|
+
* which §3 does not offer and no module hand-rolls (DEVIATIONS #PI-9); the
|
|
36
|
+
* in-flight treatment, if this module ever gains one, rides the CTA rather than
|
|
37
|
+
* the field (#PI-5) — Core explicitly ships no Loading state for the pad.
|
|
38
|
+
*/
|
|
39
|
+
export const ElectronicSignatureDrawScreen = forwardRef(({ strings, state = 'draw', onCanvasReady, screenId = `electronic-signature-${state}`, overrides, onAction, ...shell }, ref) => {
|
|
40
|
+
const signed = state === 'signed';
|
|
41
|
+
return (_jsx(PrizmaFormScreen, { ref: ref, title: strings.draw.title, subtitle: strings.draw.subtitle, ctaLabel: strings.draw.ctaLabel,
|
|
42
|
+
/* `eSign.draw` draws `Done` on Button/Primary/Surface/Disabled — there
|
|
43
|
+
is nothing to submit until the canvas has ink. */
|
|
44
|
+
ctaDisabled: !signed, verifiedLabel: strings.verifiedLabel, navLabel: strings.navLabel, screenId: screenId, overrides: overrides, onAction: onAction, ...shell, children: _jsx(PrizmaSignaturePad, { isFilled: signed,
|
|
45
|
+
/* Full-signature sub-type, not the initials one. */
|
|
46
|
+
isInitials: false, placeholder: strings.draw.placeholder, canvasLabel: strings.draw.canvasLabel, clearLabel: strings.draw.clearLabel,
|
|
47
|
+
/* Clearing the canvas is a different flow from submitting it, so it
|
|
48
|
+
emits its own event rather than collapsing into the CTA
|
|
49
|
+
(DEVIATIONS #PI-10). */
|
|
50
|
+
onClear: () => onAction?.({ type: 'secondary', screenId }), onCanvasReady: onCanvasReady }) }));
|
|
51
|
+
});
|
|
52
|
+
ElectronicSignatureDrawScreen.displayName = 'ElectronicSignatureDrawScreen';
|
|
53
|
+
export default ElectronicSignatureDrawScreen;
|