@smileid/usesmileid 12.0.0-beta01 → 12.0.1
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/CHANGELOG.md +15 -0
- package/README.md +701 -89
- package/dist/camera/camera_defaults.d.ts +14 -9
- package/dist/camera/camera_defaults.d.ts.map +1 -1
- package/dist/camera/camera_defaults.js +11 -9
- package/dist/camera/camera_defaults.js.map +1 -1
- package/dist/camera/orientation_degrees.d.ts +5 -6
- package/dist/camera/orientation_degrees.d.ts.map +1 -1
- package/dist/camera/orientation_degrees.js +5 -6
- package/dist/camera/orientation_degrees.js.map +1 -1
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts +11 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.d.ts.map +1 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js +17 -0
- package/dist/core/exception/agent_mode_with_enhanced_liveness_exception.js.map +1 -0
- package/dist/core/exception/capture_validation_exceptions.d.ts +1 -0
- package/dist/core/exception/capture_validation_exceptions.d.ts.map +1 -1
- package/dist/core/exception/capture_validation_exceptions.js +1 -0
- package/dist/core/exception/capture_validation_exceptions.js.map +1 -1
- package/dist/core/exception/index.d.ts +1 -0
- package/dist/core/exception/index.d.ts.map +1 -1
- package/dist/core/exception/index.js +1 -0
- package/dist/core/exception/index.js.map +1 -1
- package/dist/core/exception/use_smile_id_error_code.d.ts +1 -0
- package/dist/core/exception/use_smile_id_error_code.d.ts.map +1 -1
- package/dist/core/exception/use_smile_id_error_code.js +1 -0
- package/dist/core/exception/use_smile_id_error_code.js.map +1 -1
- package/dist/core/models/config.d.ts +19 -0
- package/dist/core/models/config.d.ts.map +1 -1
- package/dist/core/models/document_capture_mode.d.ts +8 -0
- package/dist/core/models/document_capture_mode.d.ts.map +1 -1
- package/dist/core/models/document_capture_mode.js +24 -0
- package/dist/core/models/document_capture_mode.js.map +1 -1
- package/dist/core/models/document_type.d.ts +2 -2
- package/dist/core/models/document_type.d.ts.map +1 -1
- package/dist/core/models/document_type.js +7 -5
- package/dist/core/models/document_type.js.map +1 -1
- package/dist/core/models/global_privacy_control.d.ts +36 -0
- package/dist/core/models/global_privacy_control.d.ts.map +1 -0
- package/dist/core/models/global_privacy_control.js +39 -0
- package/dist/core/models/global_privacy_control.js.map +1 -0
- package/dist/core/models/network_config.d.ts +2 -2
- package/dist/core/models/network_config.js +2 -2
- package/dist/core/models/result.d.ts +9 -8
- package/dist/core/models/result.d.ts.map +1 -1
- package/dist/core/models/result.js +5 -6
- package/dist/core/models/result.js.map +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.js +3 -17
- package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
- package/dist/data/api/smile_id_api.d.ts +1 -1
- package/dist/data/api/smile_id_api.d.ts.map +1 -1
- package/dist/data/compression/compressible_asset.d.ts +41 -0
- package/dist/data/compression/compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/compressible_asset.js +34 -0
- package/dist/data/compression/compressible_asset.js.map +1 -0
- package/dist/data/compression/payload_compression_config.d.ts +36 -0
- package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_config.js +52 -0
- package/dist/data/compression/payload_compression_config.js.map +1 -0
- package/dist/data/compression/payload_compression_runner.d.ts +29 -0
- package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_runner.js +55 -0
- package/dist/data/compression/payload_compression_runner.js.map +1 -0
- package/dist/data/compression/payload_compressor.d.ts +40 -0
- package/dist/data/compression/payload_compressor.d.ts.map +1 -0
- package/dist/data/compression/payload_compressor.js +126 -0
- package/dist/data/compression/payload_compressor.js.map +1 -0
- package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
- package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/uri_compressible_asset.js +77 -0
- package/dist/data/compression/uri_compressible_asset.js.map +1 -0
- package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
- package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/cache_config_builder.js +2 -1
- package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/config_builder.d.ts +40 -14
- package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/config_builder.js +40 -14
- package/dist/data/dsl/builder/config_builder.js.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.d.ts +19 -4
- package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.js +21 -6
- package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
- package/dist/data/factory/networking_factory.d.ts.map +1 -1
- package/dist/data/factory/networking_factory.js +11 -1
- package/dist/data/factory/networking_factory.js.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
- package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
- package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
- package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
- package/dist/data/security/request_canonicalizer.js +14 -2
- package/dist/data/security/request_canonicalizer.js.map +1 -1
- package/dist/data/security/security_policy.d.ts +43 -0
- package/dist/data/security/security_policy.d.ts.map +1 -0
- package/dist/data/security/security_policy.js +61 -0
- package/dist/data/security/security_policy.js.map +1 -0
- package/dist/data/smile_id_urls.d.ts +1 -1
- package/dist/data/smile_id_urls.js +1 -1
- package/dist/data/smile_id_urls.js.map +1 -1
- package/dist/data/util/retry_util.d.ts +2 -2
- package/dist/data/util/retry_util.d.ts.map +1 -1
- package/dist/data/util/retry_util.js +7 -1
- package/dist/data/util/retry_util.js.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
- package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.js +58 -24
- package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/l10n/strings_en.d.ts +2 -1
- package/dist/l10n/strings_en.d.ts.map +1 -1
- package/dist/l10n/strings_en.js +2 -1
- package/dist/l10n/strings_en.js.map +1 -1
- package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
- package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
- package/dist/l10n/use_smile_id_localizations.js +3 -0
- package/dist/l10n/use_smile_id_localizations.js.map +1 -1
- package/dist/metadata/builder_configuration.d.ts +44 -0
- package/dist/metadata/builder_configuration.d.ts.map +1 -0
- package/dist/metadata/builder_configuration.js +35 -0
- package/dist/metadata/builder_configuration.js.map +1 -0
- package/dist/metadata/captured_image_properties.d.ts +11 -0
- package/dist/metadata/captured_image_properties.d.ts.map +1 -0
- package/dist/metadata/captured_image_properties.js +11 -0
- package/dist/metadata/captured_image_properties.js.map +1 -0
- package/dist/metadata/device_orientation_collector.d.ts +17 -0
- package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
- package/dist/metadata/device_orientation_collector.js +66 -0
- package/dist/metadata/device_orientation_collector.js.map +1 -0
- package/dist/metadata/geolocation.d.ts +20 -0
- package/dist/metadata/geolocation.d.ts.map +1 -0
- package/dist/metadata/geolocation.js +40 -0
- package/dist/metadata/geolocation.js.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts +47 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.js +178 -0
- package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
- package/dist/metadata/model_configuration.d.ts +41 -0
- package/dist/metadata/model_configuration.d.ts.map +1 -0
- package/dist/metadata/model_configuration.js +44 -0
- package/dist/metadata/model_configuration.js.map +1 -0
- package/dist/metadata/optional_native_modules.d.ts +79 -3
- package/dist/metadata/optional_native_modules.d.ts.map +1 -1
- package/dist/metadata/optional_native_modules.js +108 -3
- package/dist/metadata/optional_native_modules.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
- package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata.js +85 -13
- package/dist/metadata/use_smile_id_metadata.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
- package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.js +197 -16
- package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
- package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
- package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
- package/dist/presentation/components/icons/index.d.ts +24 -8
- package/dist/presentation/components/icons/index.d.ts.map +1 -1
- package/dist/presentation/components/icons/index.js +31 -11
- package/dist/presentation/components/icons/index.js.map +1 -1
- package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
- package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
- package/dist/presentation/components/use_smile_id_button.js +4 -4
- package/dist/presentation/components/use_smile_id_button.js.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
- package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
- package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
- package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
- package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts +5 -2
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +9 -6
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.js +25 -5
- package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
- package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts +28 -0
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.js +30 -0
- package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
- package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +110 -12
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.js +110 -12
- package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.d.ts +44 -5
- package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.js +148 -11
- package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
- package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
- package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
- package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.js +74 -26
- package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js +48 -14
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.js +3 -1
- package/dist/presentation/flow/screen/orchestrated_consent_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -9
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.d.ts.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.js +10 -4
- package/dist/presentation/flow/use_smile_id_flow.js.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.js +42 -20
- package/dist/presentation/flow/validation/flow_validator.js.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.js +14 -0
- package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
- package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/capture_ui_state.d.ts +6 -6
- package/dist/presentation/screen/helpers/capture_ui_state.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/capture_ui_state.js +19 -19
- package/dist/presentation/screen/helpers/capture_ui_state.js.map +1 -1
- package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts +2 -2
- package/dist/presentation/screen/helpers/ess_turn_haptics.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/ess_turn_haptics.js +6 -6
- package/dist/presentation/screen/helpers/ess_turn_haptics.js.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts +5 -5
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +14 -11
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts +13 -3
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.js +48 -6
- package/dist/presentation/screen/helpers/use_capture_orientation_lock.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +21 -3
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.js +188 -32
- package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_consent_screen.d.ts +7 -0
- package/dist/presentation/screen/use_smile_id_consent_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_consent_screen.js +6 -5
- package/dist/presentation/screen/use_smile_id_consent_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_back_instructions.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_back_instructions.js +5 -13
- package/dist/presentation/screen/use_smile_id_document_back_instructions.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js +17 -12
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -26
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.js +10 -20
- package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.js +4 -3
- package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
- package/dist/presentation/theme/theme.d.ts +1 -1
- package/dist/presentation/theme/theme.d.ts.map +1 -1
- package/dist/presentation/theme/theme.js +20 -18
- package/dist/presentation/theme/theme.js.map +1 -1
- package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
- package/dist/presentation/utils/locale_utils.d.ts +10 -4
- package/dist/presentation/utils/locale_utils.d.ts.map +1 -1
- package/dist/presentation/utils/locale_utils.js +13 -5
- package/dist/presentation/utils/locale_utils.js.map +1 -1
- package/dist/testing/fake_face_analyzer.d.ts +43 -0
- package/dist/testing/fake_face_analyzer.d.ts.map +1 -0
- package/dist/testing/fake_face_analyzer.js +52 -0
- package/dist/testing/fake_face_analyzer.js.map +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/scenario_expectations.d.ts +28 -0
- package/dist/testing/scenario_expectations.d.ts.map +1 -0
- package/dist/testing/scenario_expectations.js +65 -0
- package/dist/testing/scenario_expectations.js.map +1 -0
- package/dist/testing/scenario_loader.d.ts +11 -0
- package/dist/testing/scenario_loader.d.ts.map +1 -0
- package/dist/testing/scenario_loader.js +64 -0
- package/dist/testing/scenario_loader.js.map +1 -0
- package/dist/testing/scripted_scan_results.d.ts +17 -0
- package/dist/testing/scripted_scan_results.d.ts.map +1 -0
- package/dist/testing/scripted_scan_results.js +52 -0
- package/dist/testing/scripted_scan_results.js.map +1 -0
- package/package.json +34 -7
- package/src/__tests__/dsl.test.ts +51 -1
- package/src/__tests__/react_native_mock.tsx +8 -0
- package/src/__tests__/setup_react_native.ts +17 -2
- package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +5261 -0
- package/src/__tests__/snapshots/screens_structural.test.tsx +230 -0
- package/src/camera/__tests__/use_smile_id_camera_system.test.ts +103 -0
- package/src/camera/camera_defaults.ts +11 -9
- package/src/camera/orientation_degrees.ts +5 -6
- package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +67 -0
- package/src/core/exception/agent_mode_with_enhanced_liveness_exception.ts +20 -0
- package/src/core/exception/capture_validation_exceptions.ts +1 -0
- package/src/core/exception/index.ts +1 -0
- package/src/core/exception/use_smile_id_error_code.ts +1 -0
- package/src/core/models/__tests__/document_type.test.ts +7 -5
- package/src/core/models/__tests__/flow_models.test.ts +26 -0
- package/src/core/models/config.ts +22 -0
- package/src/core/models/document_capture_mode.ts +27 -0
- package/src/core/models/document_type.ts +7 -5
- package/src/core/models/global_privacy_control.ts +45 -0
- package/src/core/models/network_config.ts +2 -2
- package/src/core/models/result.ts +9 -8
- package/src/data/api/__tests__/smile_id_api.test.ts +1 -1
- package/src/data/api/interceptors/__tests__/gzip_interceptor.test.ts +83 -0
- package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
- package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
- package/src/data/api/interceptors/smile_auth_interceptor.ts +3 -18
- package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
- package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
- package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
- package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +226 -0
- package/src/data/compression/compressible_asset.ts +62 -0
- package/src/data/compression/payload_compression_config.ts +53 -0
- package/src/data/compression/payload_compression_runner.ts +102 -0
- package/src/data/compression/payload_compressor.ts +164 -0
- package/src/data/compression/uri_compressible_asset.ts +85 -0
- package/src/data/dsl/builder/__tests__/config_builders.test.ts +62 -0
- package/src/data/dsl/builder/cache_config_builder.ts +3 -1
- package/src/data/dsl/builder/config_builder.ts +45 -14
- package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
- package/src/data/dsl/builder/retry_config_builder.ts +27 -6
- package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
- package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
- package/src/data/factory/__tests__/retry_gzip_mac_composition.test.ts +163 -0
- package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +1 -1
- package/src/data/factory/networking_factory.ts +14 -1
- package/src/data/repository/__tests__/network_retries.test.ts +117 -0
- package/src/data/repository/__tests__/use_smile_id_repository.test.ts +1 -1
- package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
- package/src/data/security/__tests__/request_canonicalizer.test.ts +132 -0
- package/src/data/security/__tests__/security_policy.test.ts +96 -0
- package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
- package/src/data/security/request_canonicalizer.ts +15 -2
- package/src/data/security/security_policy.ts +70 -0
- package/src/data/smile_id_urls.ts +1 -1
- package/src/data/util/__tests__/retry_util.test.ts +25 -0
- package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
- package/src/data/util/retry_util.ts +12 -3
- package/src/data/util/use_smile_id_token_decoder.ts +76 -28
- package/src/index.ts +6 -4
- package/src/l10n/strings_en.ts +2 -1
- package/src/l10n/use_smile_id_localizations.ts +3 -0
- package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
- package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +254 -0
- package/src/metadata/__tests__/metadata_configuration_objects.test.ts +86 -0
- package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
- package/src/metadata/__tests__/metadata_device_os_android.test.ts +18 -0
- package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
- package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
- package/src/metadata/__tests__/use_smile_id_metadata.test.ts +19 -25
- package/src/metadata/builder_configuration.ts +69 -0
- package/src/metadata/captured_image_properties.ts +10 -0
- package/src/metadata/device_orientation_collector.ts +75 -0
- package/src/metadata/geolocation.ts +46 -0
- package/src/metadata/metadata_configuration_mappers.ts +248 -0
- package/src/metadata/model_configuration.ts +68 -0
- package/src/metadata/optional_native_modules.ts +157 -3
- package/src/metadata/use_smile_id_metadata.ts +140 -17
- package/src/metadata/use_smile_id_metadata_factory.ts +211 -16
- package/src/presentation/assets/si_document_green_book_hero_animation.json +1 -4668
- package/src/presentation/assets/si_document_hero_animation.json +1 -4799
- package/src/presentation/assets/si_document_hero_back_animation.json +1 -2039
- package/src/presentation/assets/si_document_passport_hero_animation.json +1 -14491
- package/src/presentation/assets/si_ess_all_directions_hero_animation.json +1 -0
- package/src/presentation/assets/si_ess_animation_all_directions.json +1 -5575
- package/src/presentation/assets/si_selfie_hero_animation.json +1 -1439
- package/src/presentation/assets/si_smile_to_capture_animation.json +1 -1439
- package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
- package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
- package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
- package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +12 -8
- package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
- package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +71 -0
- package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
- package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
- package/src/presentation/components/icons/index.tsx +65 -18
- package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
- package/src/presentation/components/use_smile_id_button.tsx +4 -4
- package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
- package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
- package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
- package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
- package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
- package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +9 -6
- package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
- package/src/presentation/components/use_smile_id_instructions_hero.tsx +111 -60
- package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
- package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +203 -4
- package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +49 -0
- package/src/presentation/flow/dsl/builder/__tests__/config_builder.test.ts +25 -0
- package/src/presentation/flow/dsl/builder/config_builder.ts +35 -0
- package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
- package/src/presentation/flow/dsl/builder/screens_builder.ts +110 -12
- package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
- package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
- package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
- package/src/presentation/flow/flow_navigation_manager.ts +185 -14
- package/src/presentation/flow/model/instruction_guideline.ts +6 -0
- package/src/presentation/flow/model/instructions_defaults.ts +104 -26
- package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +60 -12
- package/src/presentation/flow/screen/orchestrated_consent_screen.tsx +5 -0
- package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
- package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -14
- package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
- package/src/presentation/flow/use_smile_id_flow.tsx +11 -4
- package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +61 -1
- package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
- package/src/presentation/flow/validation/flow_validator.ts +55 -26
- package/src/presentation/flow/validation/job_type_validator.ts +24 -0
- package/src/presentation/screen/__tests__/capture_ui_state.test.ts +66 -47
- package/src/presentation/screen/__tests__/ess_turn_haptics.test.ts +15 -11
- package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
- package/src/presentation/screen/__tests__/scan_state_to_overlay_state.test.ts +47 -27
- package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +182 -18
- package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +1 -1
- package/src/presentation/screen/__tests__/use_smile_id_preview_screen.test.tsx +10 -40
- package/src/presentation/screen/helpers/__tests__/use_capture_orientation_lock.test.tsx +212 -0
- package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
- package/src/presentation/screen/helpers/capture_ui_state.ts +27 -27
- package/src/presentation/screen/helpers/ess_turn_haptics.ts +9 -9
- package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
- package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +16 -13
- package/src/presentation/screen/helpers/use_capture_orientation_lock.ts +69 -7
- package/src/presentation/screen/use_smile_id_capture_screen.tsx +280 -54
- package/src/presentation/screen/use_smile_id_consent_screen.tsx +16 -5
- package/src/presentation/screen/use_smile_id_document_back_instructions.tsx +14 -23
- package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +33 -23
- package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
- package/src/presentation/screen/use_smile_id_preview_screen.tsx +21 -53
- package/src/presentation/screen/use_smile_id_processing_screen.tsx +8 -8
- package/src/presentation/theme/theme.ts +21 -19
- package/src/presentation/utils/__tests__/locale_utils.test.ts +46 -5
- package/src/presentation/utils/force_max_brightness.tsx +4 -4
- package/src/presentation/utils/locale_utils.ts +13 -4
- package/src/testing/__tests__/fake_face_analyzer.test.ts +42 -0
- package/src/testing/__tests__/scenario_expectations.test.ts +110 -0
- package/src/testing/__tests__/scenario_loader.test.ts +64 -0
- package/src/testing/fake_face_analyzer.ts +82 -0
- package/src/testing/index.ts +15 -0
- package/src/testing/scenario_expectations.ts +87 -0
- package/src/testing/scenario_loader.ts +83 -0
- package/src/testing/scripted_scan_results.ts +66 -0
- package/dist/camera/frame_processor_plugin.d.ts +0 -28
- package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
- package/dist/camera/frame_processor_plugin.js +0 -21
- package/dist/camera/frame_processor_plugin.js.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
- package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.js +0 -2
- package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts +0 -15
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js +0 -19
- package/dist/presentation/components/use_smile_id_face_silhouette_overlay.js.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
- package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
- package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
- package/src/presentation/components/use_smile_id_face_silhouette_overlay.tsx +0 -27
|
@@ -26,6 +26,7 @@ import { UseSmileIDLearnMoreContent } from "../components/use_smile_id_learn_mor
|
|
|
26
26
|
import { UseSmileIDPartnerIcon } from "../components/use_smile_id_partner_icon";
|
|
27
27
|
import { UseSmileIDRoundedCheckbox } from "../components/use_smile_id_rounded_checkbox";
|
|
28
28
|
import { useUseSmileIDLocalizations } from "../../l10n/use_smile_id_localizations_provider";
|
|
29
|
+
import { GlobalPrivacyControl } from "../../core/models/global_privacy_control";
|
|
29
30
|
import { getDefaultConsentState, getDeviceLocale } from "../utils/locale_utils";
|
|
30
31
|
import {
|
|
31
32
|
buildConsentRows,
|
|
@@ -59,6 +60,12 @@ export type UseSmileIDConsentScreenProps = {
|
|
|
59
60
|
readonly showAttribution?: boolean;
|
|
60
61
|
readonly onAllow?: (info: ConsentInformation) => void;
|
|
61
62
|
readonly onDeny?: () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Partner-declared consent posture; seeds the checkbox's initial state
|
|
65
|
+
* via `getDefaultConsentState`. Defaults to the universal opt-out
|
|
66
|
+
* baseline (`GlobalPrivacyControl.OptOut`).
|
|
67
|
+
*/
|
|
68
|
+
readonly globalPrivacyControl?: GlobalPrivacyControl;
|
|
62
69
|
readonly theme?: UseSmileIDTheme;
|
|
63
70
|
/**
|
|
64
71
|
* Render the bottom-pinned Allow button via a partner-supplied
|
|
@@ -107,11 +114,15 @@ export function UseSmileIDConsentScreen(props: UseSmileIDConsentScreenProps) {
|
|
|
107
114
|
const loc = useUseSmileIDLocalizations();
|
|
108
115
|
const showAttribution = props.showAttribution ?? true;
|
|
109
116
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
//
|
|
114
|
-
|
|
117
|
+
const globalPrivacyControl =
|
|
118
|
+
props.globalPrivacyControl ?? GlobalPrivacyControl.OptOut;
|
|
119
|
+
|
|
120
|
+
// Posture-aware default: the opt-out baseline starts ticked everywhere;
|
|
121
|
+
// the legacy opt-in posture consults the resolved BCP-47 locale and
|
|
122
|
+
// starts unticked for EU member states (GDPR opt-in).
|
|
123
|
+
const [consented, setConsented] = useState(() =>
|
|
124
|
+
getDefaultConsentState(globalPrivacyControl),
|
|
125
|
+
);
|
|
115
126
|
const [learnMoreOpen, setLearnMoreOpen] = useState(false);
|
|
116
127
|
|
|
117
128
|
const subtitleParts = composeConsentSubtitleParts(props.partnerName, loc);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
2
2
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
3
3
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
4
4
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
5
|
+
import { UseSmileIDAttribution } from "../components/use_smile_id_attribution";
|
|
5
6
|
import { UseSmileIDBackButton } from "../components/use_smile_id_back_button";
|
|
6
7
|
import { UseSmileIDButton } from "../components/use_smile_id_button";
|
|
7
8
|
import { UseSmileIDInstructionsHero } from "../components/use_smile_id_instructions_hero";
|
|
@@ -48,7 +49,7 @@ export function UseSmileIDDocumentBackInstructions(
|
|
|
48
49
|
styles.root,
|
|
49
50
|
{
|
|
50
51
|
backgroundColor: theme.colors.background,
|
|
51
|
-
paddingHorizontal: theme.spacing.
|
|
52
|
+
paddingHorizontal: theme.spacing.medium,
|
|
52
53
|
paddingVertical: theme.spacing.medium,
|
|
53
54
|
},
|
|
54
55
|
]}
|
|
@@ -70,12 +71,15 @@ export function UseSmileIDDocumentBackInstructions(
|
|
|
70
71
|
...theme.typography.pageHeading,
|
|
71
72
|
fontWeight: "800",
|
|
72
73
|
color: theme.colors.titleText,
|
|
74
|
+
textAlign: "center",
|
|
73
75
|
}}
|
|
74
76
|
testID="si_document_back_instructions_title"
|
|
75
77
|
>
|
|
76
78
|
{localizations.siDocumentFlipTitle(props.documentTypeDisplayName)}
|
|
77
79
|
</Text>
|
|
78
80
|
|
|
81
|
+
<View style={{ height: theme.spacing.medium }} />
|
|
82
|
+
|
|
79
83
|
<View style={styles.hero} testID="si_document_back_instructions_hero">
|
|
80
84
|
<UseSmileIDInstructionsHero
|
|
81
85
|
source={heroSource}
|
|
@@ -98,24 +102,17 @@ export function UseSmileIDDocumentBackInstructions(
|
|
|
98
102
|
{allowSkip ? (
|
|
99
103
|
<>
|
|
100
104
|
<View style={{ height: theme.spacing.small }} />
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
<UseSmileIDButton
|
|
106
|
+
label={localizations.siDocumentSkipBack}
|
|
107
|
+
onClick={onSkip}
|
|
108
|
+
variant="secondary"
|
|
109
|
+
theme={theme}
|
|
104
110
|
testID="si_document_skip_back_button"
|
|
105
|
-
|
|
106
|
-
>
|
|
107
|
-
<Text
|
|
108
|
-
style={{
|
|
109
|
-
...theme.typography.button,
|
|
110
|
-
color: theme.colors.primary,
|
|
111
|
-
textAlign: "center",
|
|
112
|
-
}}
|
|
113
|
-
>
|
|
114
|
-
{localizations.siDocumentSkipBack}
|
|
115
|
-
</Text>
|
|
116
|
-
</Pressable>
|
|
111
|
+
/>
|
|
117
112
|
</>
|
|
118
113
|
) : null}
|
|
114
|
+
<View style={{ height: theme.spacing.small }} />
|
|
115
|
+
<UseSmileIDAttribution theme={theme} />
|
|
119
116
|
</View>
|
|
120
117
|
</SafeAreaView>
|
|
121
118
|
);
|
|
@@ -125,10 +122,4 @@ const styles = StyleSheet.create({
|
|
|
125
122
|
root: { flex: 1 },
|
|
126
123
|
hero: { flex: 1 },
|
|
127
124
|
bottom: { alignItems: "center" },
|
|
128
|
-
skip: {
|
|
129
|
-
height: 48,
|
|
130
|
-
alignItems: "center",
|
|
131
|
-
justifyContent: "center",
|
|
132
|
-
alignSelf: "stretch",
|
|
133
|
-
},
|
|
134
125
|
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Pressable, StyleSheet, Text, View } from "react-native";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
SafeAreaView,
|
|
4
|
+
useSafeAreaInsets,
|
|
5
|
+
} from "react-native-safe-area-context";
|
|
4
6
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
5
7
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
6
8
|
import { UseSmileIDAttribution } from "../components/use_smile_id_attribution";
|
|
@@ -13,8 +15,8 @@ import { useUseSmileIDLocalizations } from "../../l10n/use_smile_id_localization
|
|
|
13
15
|
export type UseSmileIDDocumentPreviewScreenProps = {
|
|
14
16
|
/** Local file URI of the captured side being reviewed (front, then back). */
|
|
15
17
|
readonly capturedDocumentPath?: string;
|
|
16
|
-
/** Capture
|
|
17
|
-
readonly
|
|
18
|
+
/** Capture-frame aspect ratio (width / height) — drives the document image aspect. */
|
|
19
|
+
readonly documentAspectRatio: number;
|
|
18
20
|
readonly showAttribution?: boolean;
|
|
19
21
|
/** Confirm — commit the captured side and advance. */
|
|
20
22
|
readonly onAccept?: () => void;
|
|
@@ -38,12 +40,14 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
38
40
|
const theme = props.theme ?? themeFromContext;
|
|
39
41
|
const loc = useUseSmileIDLocalizations();
|
|
40
42
|
const showAttribution = props.showAttribution ?? true;
|
|
43
|
+
const insets = useSafeAreaInsets();
|
|
41
44
|
|
|
42
45
|
return (
|
|
43
46
|
<SafeAreaView
|
|
47
|
+
edges={["left", "right", "bottom"]}
|
|
44
48
|
style={[
|
|
45
49
|
styles.root,
|
|
46
|
-
{ backgroundColor: theme.colors.
|
|
50
|
+
{ backgroundColor: theme.colors.background },
|
|
47
51
|
]}
|
|
48
52
|
testID="si_document_preview_screen"
|
|
49
53
|
>
|
|
@@ -53,7 +57,7 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
53
57
|
styles.closeRow,
|
|
54
58
|
{
|
|
55
59
|
paddingHorizontal: theme.spacing.medium,
|
|
56
|
-
paddingTop: theme.spacing.small,
|
|
60
|
+
paddingTop: insets.top + theme.spacing.small,
|
|
57
61
|
},
|
|
58
62
|
]}
|
|
59
63
|
>
|
|
@@ -64,26 +68,27 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
64
68
|
testID="si_document_preview_close"
|
|
65
69
|
style={({ pressed }) => [
|
|
66
70
|
styles.closeButton,
|
|
67
|
-
{
|
|
68
|
-
backgroundColor: theme.colors.cardText,
|
|
69
|
-
opacity: pressed ? 0.7 : 1,
|
|
70
|
-
},
|
|
71
|
+
{ opacity: pressed ? 0.7 : 1 },
|
|
71
72
|
]}
|
|
72
73
|
>
|
|
73
|
-
<SiOutlineClose size={20} color=
|
|
74
|
+
<SiOutlineClose size={20} color="#FFFFFF" />
|
|
74
75
|
</Pressable>
|
|
75
76
|
</View>
|
|
76
77
|
) : null}
|
|
77
78
|
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
<View
|
|
80
|
+
style={[styles.imageRegion, { paddingVertical: theme.spacing.medium }]}
|
|
81
|
+
>
|
|
82
|
+
<UseSmileIDCapturedDocumentImage
|
|
83
|
+
aspectRatio={props.documentAspectRatio}
|
|
84
|
+
{...(props.capturedDocumentPath
|
|
85
|
+
? { uri: props.capturedDocumentPath }
|
|
86
|
+
: {})}
|
|
87
|
+
imageTestID="si_document_preview_image"
|
|
88
|
+
imageAccessibilityLabel={loc.siPreviewAccessibilityImage}
|
|
89
|
+
theme={theme}
|
|
90
|
+
/>
|
|
91
|
+
</View>
|
|
87
92
|
|
|
88
93
|
<UseSmileIDCardSurface theme={theme} style={styles.card}>
|
|
89
94
|
<Text
|
|
@@ -119,22 +124,27 @@ export function UseSmileIDDocumentPreviewScreen(
|
|
|
119
124
|
</View>
|
|
120
125
|
</UseSmileIDCardSurface>
|
|
121
126
|
|
|
122
|
-
{showAttribution ?
|
|
123
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
124
|
-
) : null}
|
|
127
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
125
128
|
</SafeAreaView>
|
|
126
129
|
);
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
const CLOSE_BUTTON_SIZE = 40;
|
|
133
|
+
/** Warm-grey close-button fill for the document preview chrome. */
|
|
134
|
+
const CLOSE_BUTTON_FILL = "#848282";
|
|
130
135
|
|
|
131
136
|
const styles = StyleSheet.create({
|
|
132
137
|
root: { flex: 1, overflow: "hidden" },
|
|
138
|
+
// Fills the space between the close row and the card.
|
|
139
|
+
imageRegion: { flex: 1 },
|
|
133
140
|
closeRow: { flexDirection: "row", justifyContent: "flex-end" },
|
|
134
141
|
closeButton: {
|
|
135
142
|
width: CLOSE_BUTTON_SIZE,
|
|
136
143
|
height: CLOSE_BUTTON_SIZE,
|
|
137
144
|
borderRadius: CLOSE_BUTTON_SIZE / 2,
|
|
145
|
+
backgroundColor: CLOSE_BUTTON_FILL,
|
|
146
|
+
borderWidth: 1,
|
|
147
|
+
borderColor: "rgba(255,255,255,0.1)",
|
|
138
148
|
alignItems: "center",
|
|
139
149
|
justifyContent: "center",
|
|
140
150
|
},
|
|
@@ -33,6 +33,8 @@ export type UseSmileIDInstructionsScreenProps = {
|
|
|
33
33
|
readonly showHeroOval?: boolean;
|
|
34
34
|
/** Animate the ring's rising green progress fill. */
|
|
35
35
|
readonly showHeroOvalProgress?: boolean;
|
|
36
|
+
/** Present the hero in a document card (document flows) instead of an oval. */
|
|
37
|
+
readonly showCardBackground?: boolean;
|
|
36
38
|
readonly onContinue?: () => void;
|
|
37
39
|
readonly onBack?: () => void;
|
|
38
40
|
readonly theme?: UseSmileIDTheme;
|
|
@@ -71,6 +73,7 @@ export function UseSmileIDInstructionsScreen(
|
|
|
71
73
|
const showAttribution = props.showAttribution ?? true;
|
|
72
74
|
const showHeroOval = props.showHeroOval ?? true;
|
|
73
75
|
const showHeroOvalProgress = props.showHeroOvalProgress ?? true;
|
|
76
|
+
const showCardBackground = props.showCardBackground ?? false;
|
|
74
77
|
const onContinue = props.onContinue ?? (() => {});
|
|
75
78
|
|
|
76
79
|
return (
|
|
@@ -112,6 +115,7 @@ export function UseSmileIDInstructionsScreen(
|
|
|
112
115
|
source={heroSource}
|
|
113
116
|
showOval={showHeroOval}
|
|
114
117
|
showOvalProgress={showHeroOvalProgress}
|
|
118
|
+
showCardBackground={showCardBackground}
|
|
115
119
|
theme={theme}
|
|
116
120
|
/>
|
|
117
121
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState
|
|
1
|
+
import { useState } from "react";
|
|
2
2
|
import { StyleSheet, Text, View, type LayoutChangeEvent } from "react-native";
|
|
3
3
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
4
4
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
@@ -16,33 +16,19 @@ export type UseSmileIDPreviewScreenProps = {
|
|
|
16
16
|
readonly showAttribution?: boolean;
|
|
17
17
|
readonly onAccept?: () => void;
|
|
18
18
|
readonly onReject?: () => void;
|
|
19
|
-
/**
|
|
20
|
-
* Render the Accept button via a partner-supplied slot.
|
|
21
|
-
*
|
|
22
|
-
* **Slot contract:** providing *any* slot (continue or cancel)
|
|
23
|
-
* replaces the *entire* default confirmation row. If you supply
|
|
24
|
-
* `continueButton` and want a Retake control too, supply
|
|
25
|
-
* `cancelButton` as well — the default Retake tile does not
|
|
26
|
-
* fall through.
|
|
27
|
-
*/
|
|
28
|
-
readonly continueButton?: (props: { onClick: () => void }) => ReactNode;
|
|
29
|
-
/**
|
|
30
|
-
* Render the Reject (retake) button via a partner-supplied slot.
|
|
31
|
-
* See the slot contract note on `continueButton`.
|
|
32
|
-
*/
|
|
33
|
-
readonly cancelButton?: (props: { onClick: () => void }) => ReactNode;
|
|
34
19
|
readonly theme?: UseSmileIDTheme;
|
|
35
20
|
};
|
|
36
21
|
|
|
37
22
|
/**
|
|
38
23
|
* Preview screen — confirms the captured selfie before submission.
|
|
39
24
|
*
|
|
40
|
-
* - Uniform
|
|
41
|
-
* oval. The oval scales to the
|
|
42
|
-
* the two never overlap; no scrim
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
25
|
+
* - Uniform page (`background`, theme-following) with the
|
|
26
|
+
* captured image clipped to the face oval. The oval scales to the
|
|
27
|
+
* leftover height above the card so the two never overlap; no scrim
|
|
28
|
+
* is painted.
|
|
29
|
+
* - Bottom card (theme card surface, rounded, soft upward shadow) with
|
|
30
|
+
* the title "Confirm image quality", a caption, and the Retake /
|
|
31
|
+
* Confirm tiles.
|
|
46
32
|
* - Attribution sits centered below the card.
|
|
47
33
|
*/
|
|
48
34
|
export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
@@ -73,15 +59,12 @@ export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
|
73
59
|
if (state.canRetake) props.onReject?.();
|
|
74
60
|
};
|
|
75
61
|
|
|
76
|
-
const customContinue = props.continueButton;
|
|
77
|
-
const customCancel = props.cancelButton;
|
|
78
|
-
const hasSlots = Boolean(customContinue || customCancel);
|
|
79
|
-
|
|
80
62
|
return (
|
|
81
63
|
<SafeAreaView
|
|
64
|
+
edges={["left", "right", "bottom"]}
|
|
82
65
|
style={[
|
|
83
66
|
styles.root,
|
|
84
|
-
{ backgroundColor: theme.colors.
|
|
67
|
+
{ backgroundColor: theme.colors.background },
|
|
85
68
|
]}
|
|
86
69
|
testID="si_preview_screen"
|
|
87
70
|
onLayout={onScreenLayout}
|
|
@@ -120,29 +103,20 @@ export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
|
120
103
|
{loc.siPreviewSubtitle}
|
|
121
104
|
</Text>
|
|
122
105
|
<View style={{ marginTop: theme.spacing.medium }}>
|
|
123
|
-
{
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
onReject={handleReject}
|
|
134
|
-
acceptLabel={loc.siPreviewConfirm}
|
|
135
|
-
rejectLabel={loc.siPreviewRetake}
|
|
136
|
-
theme={theme}
|
|
137
|
-
testID="si_preview_confirmation_buttons"
|
|
138
|
-
/>
|
|
139
|
-
)}
|
|
106
|
+
{/* The confirm/retake buttons are the fixed icon pair and are not
|
|
107
|
+
customisable. */}
|
|
108
|
+
<UseSmileIDConfirmationButtons
|
|
109
|
+
onAccept={handleAccept}
|
|
110
|
+
onReject={handleReject}
|
|
111
|
+
acceptLabel={loc.siPreviewConfirm}
|
|
112
|
+
rejectLabel={loc.siPreviewRetake}
|
|
113
|
+
theme={theme}
|
|
114
|
+
testID="si_preview_confirmation_buttons"
|
|
115
|
+
/>
|
|
140
116
|
</View>
|
|
141
117
|
</UseSmileIDCardSurface>
|
|
142
118
|
|
|
143
|
-
{showAttribution ?
|
|
144
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
145
|
-
) : null}
|
|
119
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
146
120
|
</SafeAreaView>
|
|
147
121
|
);
|
|
148
122
|
}
|
|
@@ -150,10 +124,4 @@ export function UseSmileIDPreviewScreen(props: UseSmileIDPreviewScreenProps) {
|
|
|
150
124
|
const styles = StyleSheet.create({
|
|
151
125
|
root: { flex: 1, overflow: "hidden" },
|
|
152
126
|
card: { alignItems: "center" },
|
|
153
|
-
buttonRow: {
|
|
154
|
-
flexDirection: "row",
|
|
155
|
-
alignSelf: "stretch",
|
|
156
|
-
justifyContent: "space-between",
|
|
157
|
-
alignItems: "center",
|
|
158
|
-
},
|
|
159
127
|
});
|
|
@@ -3,7 +3,7 @@ import { StyleSheet, View, type LayoutChangeEvent } from "react-native";
|
|
|
3
3
|
import { SafeAreaView } from "react-native-safe-area-context";
|
|
4
4
|
import type { UseSmileIDTheme } from "../theme/theme";
|
|
5
5
|
import { useUseSmileIDTheme } from "../theme/theme_context";
|
|
6
|
-
import
|
|
6
|
+
import { defaultFrameAspectRatio } from "../../core/models/document_type";
|
|
7
7
|
import { UseSmileIDAttribution } from "../components/use_smile_id_attribution";
|
|
8
8
|
import { UseSmileIDCapturedDocumentImage } from "../components/use_smile_id_captured_document_image";
|
|
9
9
|
import { UseSmileIDCapturedImageOval } from "../components/use_smile_id_captured_image_oval";
|
|
@@ -35,8 +35,8 @@ export type UseSmileIDProcessingScreenProps = {
|
|
|
35
35
|
* it (document-job variant).
|
|
36
36
|
*/
|
|
37
37
|
readonly documentImageUri?: string;
|
|
38
|
-
/** Capture
|
|
39
|
-
readonly
|
|
38
|
+
/** Capture-frame aspect ratio (width / height) for {@link documentImageUri}. Defaults to landscape. */
|
|
39
|
+
readonly documentAspectRatio?: number;
|
|
40
40
|
readonly showProgressPercentage?: boolean;
|
|
41
41
|
readonly showAttribution?: boolean;
|
|
42
42
|
readonly onContinue?: () => void;
|
|
@@ -110,14 +110,16 @@ export function UseSmileIDProcessingScreen(
|
|
|
110
110
|
<SafeAreaView
|
|
111
111
|
style={[
|
|
112
112
|
styles.root,
|
|
113
|
-
{ backgroundColor: theme.colors.
|
|
113
|
+
{ backgroundColor: theme.colors.background },
|
|
114
114
|
]}
|
|
115
115
|
testID="si_processing_screen"
|
|
116
116
|
onLayout={onScreenLayout}
|
|
117
117
|
>
|
|
118
118
|
{hasDocumentImage ? (
|
|
119
119
|
<UseSmileIDCapturedDocumentImage
|
|
120
|
-
|
|
120
|
+
aspectRatio={
|
|
121
|
+
props.documentAspectRatio ?? defaultFrameAspectRatio("Landscape")
|
|
122
|
+
}
|
|
121
123
|
{...(props.documentImageUri ? { uri: props.documentImageUri } : {})}
|
|
122
124
|
imageTestID="si_processing_document_image"
|
|
123
125
|
imageAccessibilityLabel={loc.siCdCapturedImage}
|
|
@@ -208,9 +210,7 @@ export function UseSmileIDProcessingScreen(
|
|
|
208
210
|
) : null}
|
|
209
211
|
</UseSmileIDCardSurface>
|
|
210
212
|
|
|
211
|
-
{showAttribution ?
|
|
212
|
-
<UseSmileIDAttribution forceLightMode theme={theme} />
|
|
213
|
-
) : null}
|
|
213
|
+
{showAttribution ? <UseSmileIDAttribution theme={theme} /> : null}
|
|
214
214
|
</SafeAreaView>
|
|
215
215
|
);
|
|
216
216
|
}
|
|
@@ -67,7 +67,7 @@ export type UseSmileIDColors = {
|
|
|
67
67
|
previewRejectBorder: string;
|
|
68
68
|
|
|
69
69
|
// --- Capture review (preview + processing page surface) --------
|
|
70
|
-
/**
|
|
70
|
+
/** Page surface behind the capture-review screens; light in the light theme, dark in the dark theme. */
|
|
71
71
|
captureReviewBackground: string;
|
|
72
72
|
|
|
73
73
|
// --- Processing / cards ----------------------------------------
|
|
@@ -221,7 +221,7 @@ const sharedTypography: UseSmileIDTypography = {
|
|
|
221
221
|
cardHeading: {
|
|
222
222
|
fontFamily: dmSans("800"),
|
|
223
223
|
fontSize: 20,
|
|
224
|
-
lineHeight:
|
|
224
|
+
lineHeight: 25.5,
|
|
225
225
|
fontWeight: "800",
|
|
226
226
|
letterSpacing: -0.425,
|
|
227
227
|
},
|
|
@@ -286,7 +286,7 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
286
286
|
|
|
287
287
|
background: "#F9FAFB",
|
|
288
288
|
cardBackground: "#FFFFFF",
|
|
289
|
-
instructionCardBackground: "#
|
|
289
|
+
instructionCardBackground: "#F9F0E7",
|
|
290
290
|
|
|
291
291
|
titleText: "#21232C",
|
|
292
292
|
cardText: "#5E646E",
|
|
@@ -296,11 +296,11 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
296
296
|
|
|
297
297
|
stroke: "#EAECF0",
|
|
298
298
|
|
|
299
|
-
warningFill: "#
|
|
300
|
-
warningIcon: "#
|
|
301
|
-
warningStroke: "#
|
|
302
|
-
successFill: "#
|
|
303
|
-
successIcon: "#
|
|
299
|
+
warningFill: "#EF43431A", // warning red @10%
|
|
300
|
+
warningIcon: "#EF4343",
|
|
301
|
+
warningStroke: "#EF43434D", // warning red @30%
|
|
302
|
+
successFill: "#00C8531A", // success green @10%
|
|
303
|
+
successIcon: "#00C853",
|
|
304
304
|
|
|
305
305
|
captureOverlayBackground: "#FFFFFFE5",
|
|
306
306
|
documentOverlayScrim: "#00000066", // black @40% — surround dim outside the frame
|
|
@@ -314,8 +314,9 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
314
314
|
ovalWarning: "#EF4343",
|
|
315
315
|
ovalDirectionalIndicator: "#EF4343",
|
|
316
316
|
|
|
317
|
-
// Preview
|
|
318
|
-
//
|
|
317
|
+
// Preview accept/reject tokens are theme-static (same in dark) so the
|
|
318
|
+
// review affordances read identically across themes; the page surface
|
|
319
|
+
// (`captureReviewBackground`) follows the active theme's background.
|
|
319
320
|
previewAcceptBackground: "#04B04A1A", // 10% green
|
|
320
321
|
previewAcceptIcon: "#12B76A",
|
|
321
322
|
previewAcceptBorder: "#04B04A4D", // 30% green
|
|
@@ -328,7 +329,7 @@ export const defaultLightTheme: UseSmileIDTheme = {
|
|
|
328
329
|
cardShadow: "#0000001A", // black @10%
|
|
329
330
|
backButtonBorder: "#FFFFFF1A", // white @10% rim on the dark fill
|
|
330
331
|
|
|
331
|
-
smileIdYellow: "#
|
|
332
|
+
smileIdYellow: "#FDB515",
|
|
332
333
|
offBlack: "#2D2B2A",
|
|
333
334
|
offWhite: "#F9F0E7",
|
|
334
335
|
},
|
|
@@ -358,11 +359,11 @@ export const defaultDarkTheme: UseSmileIDTheme = {
|
|
|
358
359
|
// 15% alpha — divider stroke on dark surfaces.
|
|
359
360
|
stroke: "#EAECF026",
|
|
360
361
|
|
|
361
|
-
warningFill: "#
|
|
362
|
-
warningIcon: "#
|
|
363
|
-
warningStroke: "#
|
|
364
|
-
successFill: "#
|
|
365
|
-
successIcon: "#
|
|
362
|
+
warningFill: "#EA2D2D",
|
|
363
|
+
warningIcon: "#FFFFFF",
|
|
364
|
+
warningStroke: "#9F0000",
|
|
365
|
+
successFill: "#00E676",
|
|
366
|
+
successIcon: "#FFFFFF",
|
|
366
367
|
|
|
367
368
|
captureOverlayBackground: "#FFFFFFE5",
|
|
368
369
|
documentOverlayScrim: "#00000066", // black @40% — surround dim outside the frame (identical in dark)
|
|
@@ -376,20 +377,21 @@ export const defaultDarkTheme: UseSmileIDTheme = {
|
|
|
376
377
|
ovalWarning: "#EF4343",
|
|
377
378
|
ovalDirectionalIndicator: "#EF4343",
|
|
378
379
|
|
|
379
|
-
//
|
|
380
|
+
// Accept/reject affordances are theme-static (match light); the page
|
|
381
|
+
// surface behind them follows the dark background so cards read on-theme.
|
|
380
382
|
previewAcceptBackground: "#04B04A1A", // 10% green
|
|
381
383
|
previewAcceptIcon: "#12B76A",
|
|
382
384
|
previewAcceptBorder: "#04B04A4D", // 30% green
|
|
383
385
|
previewRejectBackground: "#F8FAFC",
|
|
384
386
|
previewRejectIcon: "#90A1B9",
|
|
385
387
|
previewRejectBorder: "#E2E8F0",
|
|
386
|
-
captureReviewBackground: "#
|
|
388
|
+
captureReviewBackground: "#1A1C23",
|
|
387
389
|
|
|
388
390
|
submittingIndicator: "#2CC05C",
|
|
389
391
|
cardShadow: "#0000001A", // black @10%
|
|
390
392
|
backButtonBorder: "#0000001A", // black @10% rim on the light fill
|
|
391
393
|
|
|
392
|
-
smileIdYellow: "#
|
|
394
|
+
smileIdYellow: "#FDB515",
|
|
393
395
|
offBlack: "#F9F0E7",
|
|
394
396
|
offWhite: "#2D2B2A",
|
|
395
397
|
},
|
|
@@ -1,37 +1,78 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
|
|
3
|
+
import {
|
|
4
|
+
GlobalPrivacyControl,
|
|
5
|
+
globalPrivacyControlFromWire,
|
|
6
|
+
GLOBAL_PRIVACY_CONTROL_WIRE_KEY,
|
|
7
|
+
} from "../../../core/models/global_privacy_control";
|
|
3
8
|
import { getDefaultConsentState, isDeviceLocaleInEU } from "../locale_utils";
|
|
4
9
|
|
|
5
10
|
describe("locale_utils", () => {
|
|
6
11
|
it("EU locale (de-DE) is recognised as EU and default consent is false", () => {
|
|
7
12
|
expect(isDeviceLocaleInEU("de-DE")).toBe(true);
|
|
8
|
-
expect(getDefaultConsentState("de-DE")).toBe(
|
|
13
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptIn, "de-DE")).toBe(
|
|
14
|
+
false,
|
|
15
|
+
);
|
|
9
16
|
});
|
|
10
17
|
|
|
11
18
|
it("non-EU locale (en-US) is not EU and default consent is true", () => {
|
|
12
19
|
expect(isDeviceLocaleInEU("en-US")).toBe(false);
|
|
13
|
-
expect(getDefaultConsentState("en-US")).toBe(
|
|
20
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptIn, "en-US")).toBe(
|
|
21
|
+
true,
|
|
22
|
+
);
|
|
14
23
|
});
|
|
15
24
|
|
|
16
25
|
it("EU locale (fr-FR) is recognised as EU and default consent is false", () => {
|
|
17
26
|
expect(isDeviceLocaleInEU("fr-FR")).toBe(true);
|
|
18
|
-
expect(getDefaultConsentState("fr-FR")).toBe(
|
|
27
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptIn, "fr-FR")).toBe(
|
|
28
|
+
false,
|
|
29
|
+
);
|
|
19
30
|
});
|
|
20
31
|
|
|
21
32
|
it("non-EU locale (en-NG) is not EU and default consent is true", () => {
|
|
22
33
|
expect(isDeviceLocaleInEU("en-NG")).toBe(false);
|
|
23
|
-
expect(getDefaultConsentState("en-NG")).toBe(
|
|
34
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptIn, "en-NG")).toBe(
|
|
35
|
+
true,
|
|
36
|
+
);
|
|
24
37
|
});
|
|
25
38
|
|
|
26
39
|
it("bare language tag with no region falls back to non-EU", () => {
|
|
27
40
|
// `"fr"` has no region segment — the BCP-47 split returns
|
|
28
41
|
// undefined for the country, which never matches the EU set.
|
|
29
42
|
expect(isDeviceLocaleInEU("fr")).toBe(false);
|
|
30
|
-
expect(getDefaultConsentState("fr")).toBe(true);
|
|
43
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptIn, "fr")).toBe(true);
|
|
31
44
|
});
|
|
32
45
|
|
|
33
46
|
it("empty locale string falls back to non-EU", () => {
|
|
34
47
|
expect(isDeviceLocaleInEU("")).toBe(false);
|
|
35
48
|
expect(getDefaultConsentState("")).toBe(true);
|
|
36
49
|
});
|
|
50
|
+
|
|
51
|
+
describe("global privacy control", () => {
|
|
52
|
+
it("default posture forces opt-out even for EU locales", () => {
|
|
53
|
+
expect(getDefaultConsentState()).toBe(true);
|
|
54
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptOut, "de-DE")).toBe(
|
|
55
|
+
true,
|
|
56
|
+
);
|
|
57
|
+
expect(getDefaultConsentState(GlobalPrivacyControl.OptOut, "en-NG")).toBe(
|
|
58
|
+
true,
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("parses wire values and defaults unknowns to opt-out", () => {
|
|
63
|
+
expect(globalPrivacyControlFromWire("opt-out")).toBe(
|
|
64
|
+
GlobalPrivacyControl.OptOut,
|
|
65
|
+
);
|
|
66
|
+
expect(globalPrivacyControlFromWire("opt-in")).toBe(
|
|
67
|
+
GlobalPrivacyControl.OptIn,
|
|
68
|
+
);
|
|
69
|
+
expect(globalPrivacyControlFromWire(null)).toBe(
|
|
70
|
+
GlobalPrivacyControl.OptOut,
|
|
71
|
+
);
|
|
72
|
+
expect(globalPrivacyControlFromWire("user_settings")).toBe(
|
|
73
|
+
GlobalPrivacyControl.OptOut,
|
|
74
|
+
);
|
|
75
|
+
expect(GLOBAL_PRIVACY_CONTROL_WIRE_KEY).toBe("global_privacy_control");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
37
78
|
});
|
|
@@ -6,10 +6,10 @@ export interface ForceMaxBrightnessProps {
|
|
|
6
6
|
/** Target brightness in the range 0.0–1.0. Defaults to 1.0 (max). */
|
|
7
7
|
readonly brightness?: number;
|
|
8
8
|
/**
|
|
9
|
-
* When false the component is a no-op. Defaults to true.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* When false the component is a no-op. Defaults to true. Every capture
|
|
10
|
+
* screen (selfie and document) mounts this enabled so the preview always
|
|
11
|
+
* runs at full brightness with the screen kept awake for the duration of
|
|
12
|
+
* the capture.
|
|
13
13
|
*/
|
|
14
14
|
readonly enabled?: boolean;
|
|
15
15
|
}
|