@smileid/usesmileid 12.0.0-beta01 → 12.0.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.
Files changed (403) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +701 -89
  3. package/dist/camera/camera_defaults.d.ts +14 -9
  4. package/dist/camera/camera_defaults.d.ts.map +1 -1
  5. package/dist/camera/camera_defaults.js +11 -9
  6. package/dist/camera/camera_defaults.js.map +1 -1
  7. package/dist/camera/orientation_degrees.d.ts +5 -6
  8. package/dist/camera/orientation_degrees.d.ts.map +1 -1
  9. package/dist/camera/orientation_degrees.js +5 -6
  10. package/dist/camera/orientation_degrees.js.map +1 -1
  11. package/dist/core/models/document_capture_mode.d.ts +8 -0
  12. package/dist/core/models/document_capture_mode.d.ts.map +1 -1
  13. package/dist/core/models/document_capture_mode.js +24 -0
  14. package/dist/core/models/document_capture_mode.js.map +1 -1
  15. package/dist/core/models/document_type.d.ts +2 -2
  16. package/dist/core/models/document_type.d.ts.map +1 -1
  17. package/dist/core/models/document_type.js +6 -4
  18. package/dist/core/models/document_type.js.map +1 -1
  19. package/dist/core/models/result.d.ts +9 -8
  20. package/dist/core/models/result.d.ts.map +1 -1
  21. package/dist/core/models/result.js +5 -6
  22. package/dist/core/models/result.js.map +1 -1
  23. package/dist/data/api/interceptors/smile_auth_interceptor.js +1 -1
  24. package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
  25. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
  26. package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
  27. package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
  28. package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
  29. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
  30. package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
  31. package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
  32. package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
  33. package/dist/data/compression/compressible_asset.d.ts +41 -0
  34. package/dist/data/compression/compressible_asset.d.ts.map +1 -0
  35. package/dist/data/compression/compressible_asset.js +34 -0
  36. package/dist/data/compression/compressible_asset.js.map +1 -0
  37. package/dist/data/compression/payload_compression_config.d.ts +36 -0
  38. package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
  39. package/dist/data/compression/payload_compression_config.js +52 -0
  40. package/dist/data/compression/payload_compression_config.js.map +1 -0
  41. package/dist/data/compression/payload_compression_runner.d.ts +29 -0
  42. package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
  43. package/dist/data/compression/payload_compression_runner.js +55 -0
  44. package/dist/data/compression/payload_compression_runner.js.map +1 -0
  45. package/dist/data/compression/payload_compressor.d.ts +40 -0
  46. package/dist/data/compression/payload_compressor.d.ts.map +1 -0
  47. package/dist/data/compression/payload_compressor.js +126 -0
  48. package/dist/data/compression/payload_compressor.js.map +1 -0
  49. package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
  50. package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
  51. package/dist/data/compression/uri_compressible_asset.js +77 -0
  52. package/dist/data/compression/uri_compressible_asset.js.map +1 -0
  53. package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
  54. package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
  55. package/dist/data/dsl/builder/cache_config_builder.js +2 -1
  56. package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
  57. package/dist/data/dsl/builder/config_builder.d.ts +40 -14
  58. package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
  59. package/dist/data/dsl/builder/config_builder.js +40 -14
  60. package/dist/data/dsl/builder/config_builder.js.map +1 -1
  61. package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
  62. package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
  63. package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
  64. package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
  65. package/dist/data/dsl/builder/retry_config_builder.d.ts +16 -1
  66. package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
  67. package/dist/data/dsl/builder/retry_config_builder.js +16 -1
  68. package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
  69. package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
  70. package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
  71. package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
  72. package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
  73. package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
  74. package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
  75. package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
  76. package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
  77. package/dist/data/factory/networking_factory.d.ts.map +1 -1
  78. package/dist/data/factory/networking_factory.js +11 -1
  79. package/dist/data/factory/networking_factory.js.map +1 -1
  80. package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
  81. package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
  82. package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
  83. package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
  84. package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
  85. package/dist/data/security/request_canonicalizer.js +14 -2
  86. package/dist/data/security/request_canonicalizer.js.map +1 -1
  87. package/dist/data/security/security_policy.d.ts +43 -0
  88. package/dist/data/security/security_policy.d.ts.map +1 -0
  89. package/dist/data/security/security_policy.js +61 -0
  90. package/dist/data/security/security_policy.js.map +1 -0
  91. package/dist/data/util/retry_util.d.ts +1 -1
  92. package/dist/data/util/retry_util.d.ts.map +1 -1
  93. package/dist/data/util/retry_util.js +2 -1
  94. package/dist/data/util/retry_util.js.map +1 -1
  95. package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
  96. package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
  97. package/dist/data/util/use_smile_id_token_decoder.js +58 -24
  98. package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
  99. package/dist/l10n/strings_en.d.ts +2 -1
  100. package/dist/l10n/strings_en.d.ts.map +1 -1
  101. package/dist/l10n/strings_en.js +2 -1
  102. package/dist/l10n/strings_en.js.map +1 -1
  103. package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
  104. package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
  105. package/dist/l10n/use_smile_id_localizations.js +3 -0
  106. package/dist/l10n/use_smile_id_localizations.js.map +1 -1
  107. package/dist/metadata/builder_configuration.d.ts +39 -0
  108. package/dist/metadata/builder_configuration.d.ts.map +1 -0
  109. package/dist/metadata/builder_configuration.js +34 -0
  110. package/dist/metadata/builder_configuration.js.map +1 -0
  111. package/dist/metadata/captured_image_properties.d.ts +11 -0
  112. package/dist/metadata/captured_image_properties.d.ts.map +1 -0
  113. package/dist/metadata/captured_image_properties.js +11 -0
  114. package/dist/metadata/captured_image_properties.js.map +1 -0
  115. package/dist/metadata/device_orientation_collector.d.ts +17 -0
  116. package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
  117. package/dist/metadata/device_orientation_collector.js +66 -0
  118. package/dist/metadata/device_orientation_collector.js.map +1 -0
  119. package/dist/metadata/geolocation.d.ts +20 -0
  120. package/dist/metadata/geolocation.d.ts.map +1 -0
  121. package/dist/metadata/geolocation.js +40 -0
  122. package/dist/metadata/geolocation.js.map +1 -0
  123. package/dist/metadata/metadata_configuration_mappers.d.ts +48 -0
  124. package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
  125. package/dist/metadata/metadata_configuration_mappers.js +171 -0
  126. package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
  127. package/dist/metadata/model_configuration.d.ts +41 -0
  128. package/dist/metadata/model_configuration.d.ts.map +1 -0
  129. package/dist/metadata/model_configuration.js +44 -0
  130. package/dist/metadata/model_configuration.js.map +1 -0
  131. package/dist/metadata/optional_native_modules.d.ts +79 -3
  132. package/dist/metadata/optional_native_modules.d.ts.map +1 -1
  133. package/dist/metadata/optional_native_modules.js +108 -3
  134. package/dist/metadata/optional_native_modules.js.map +1 -1
  135. package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
  136. package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
  137. package/dist/metadata/use_smile_id_metadata.js +85 -13
  138. package/dist/metadata/use_smile_id_metadata.js.map +1 -1
  139. package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
  140. package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
  141. package/dist/metadata/use_smile_id_metadata_factory.js +184 -12
  142. package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
  143. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
  144. package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
  145. package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
  146. package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
  147. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
  148. package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
  149. package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
  150. package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
  151. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
  152. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
  153. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
  154. package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
  155. package/dist/presentation/components/icons/index.d.ts +24 -8
  156. package/dist/presentation/components/icons/index.d.ts.map +1 -1
  157. package/dist/presentation/components/icons/index.js +31 -11
  158. package/dist/presentation/components/icons/index.js.map +1 -1
  159. package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
  160. package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
  161. package/dist/presentation/components/use_smile_id_button.js +4 -4
  162. package/dist/presentation/components/use_smile_id_button.js.map +1 -1
  163. package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
  164. package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
  165. package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
  166. package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
  167. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
  168. package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
  169. package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
  170. package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
  171. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
  172. package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
  173. package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
  174. package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
  175. package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
  176. package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
  177. package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
  178. package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
  179. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
  180. package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
  181. package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
  182. package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
  183. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
  184. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +1 -3
  185. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
  186. package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
  187. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
  188. package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
  189. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
  190. package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
  191. package/dist/presentation/components/use_smile_id_instructions_hero.js +18 -3
  192. package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
  193. package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
  194. package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
  195. package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
  196. package/dist/presentation/flow/dsl/builder/config_builder.d.ts +12 -0
  197. package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
  198. package/dist/presentation/flow/dsl/builder/config_builder.js +12 -0
  199. package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
  200. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
  201. package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
  202. package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
  203. package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
  204. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +111 -10
  205. package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
  206. package/dist/presentation/flow/dsl/builder/screens_builder.js +111 -10
  207. package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
  208. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
  209. package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
  210. package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
  211. package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
  212. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
  213. package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
  214. package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
  215. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
  216. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
  217. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
  218. package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
  219. package/dist/presentation/flow/flow_navigation_manager.d.ts +39 -4
  220. package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
  221. package/dist/presentation/flow/flow_navigation_manager.js +141 -10
  222. package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
  223. package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
  224. package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
  225. package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
  226. package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
  227. package/dist/presentation/flow/model/instructions_defaults.js +73 -25
  228. package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
  229. package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
  230. package/dist/presentation/flow/screen/orchestrated_capture_screen.js +36 -12
  231. package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
  232. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
  233. package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
  234. package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
  235. package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -1
  236. package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
  237. package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
  238. package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
  239. package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
  240. package/dist/presentation/flow/validation/job_type_validator.js +14 -0
  241. package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
  242. package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
  243. package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
  244. package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
  245. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
  246. package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
  247. package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
  248. package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
  249. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +3 -0
  250. package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
  251. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +17 -1
  252. package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
  253. package/dist/presentation/screen/use_smile_id_capture_screen.js +153 -18
  254. package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
  255. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
  256. package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
  257. package/dist/presentation/screen/use_smile_id_document_preview_screen.js +16 -11
  258. package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
  259. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
  260. package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
  261. package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
  262. package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
  263. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -6
  264. package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
  265. package/dist/presentation/screen/use_smile_id_preview_screen.js +9 -8
  266. package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
  267. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
  268. package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
  269. package/dist/presentation/screen/use_smile_id_processing_screen.js +3 -2
  270. package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
  271. package/dist/presentation/theme/theme.d.ts +1 -1
  272. package/dist/presentation/theme/theme.d.ts.map +1 -1
  273. package/dist/presentation/theme/theme.js +20 -18
  274. package/dist/presentation/theme/theme.js.map +1 -1
  275. package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
  276. package/package.json +26 -6
  277. package/src/__tests__/react_native_mock.tsx +8 -0
  278. package/src/camera/camera_defaults.ts +11 -9
  279. package/src/camera/orientation_degrees.ts +5 -6
  280. package/src/core/models/__tests__/document_type.test.ts +6 -4
  281. package/src/core/models/document_capture_mode.ts +27 -0
  282. package/src/core/models/document_type.ts +6 -4
  283. package/src/core/models/result.ts +9 -8
  284. package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
  285. package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
  286. package/src/data/api/interceptors/smile_auth_interceptor.ts +1 -1
  287. package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
  288. package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
  289. package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
  290. package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +222 -0
  291. package/src/data/compression/compressible_asset.ts +62 -0
  292. package/src/data/compression/payload_compression_config.ts +53 -0
  293. package/src/data/compression/payload_compression_runner.ts +102 -0
  294. package/src/data/compression/payload_compressor.ts +164 -0
  295. package/src/data/compression/uri_compressible_asset.ts +85 -0
  296. package/src/data/dsl/builder/cache_config_builder.ts +3 -1
  297. package/src/data/dsl/builder/config_builder.ts +45 -14
  298. package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
  299. package/src/data/dsl/builder/retry_config_builder.ts +22 -1
  300. package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
  301. package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
  302. package/src/data/factory/networking_factory.ts +14 -1
  303. package/src/data/repository/__tests__/network_retries.test.ts +117 -0
  304. package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
  305. package/src/data/security/__tests__/security_policy.test.ts +96 -0
  306. package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
  307. package/src/data/security/request_canonicalizer.ts +15 -2
  308. package/src/data/security/security_policy.ts +70 -0
  309. package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
  310. package/src/data/util/retry_util.ts +3 -2
  311. package/src/data/util/use_smile_id_token_decoder.ts +76 -28
  312. package/src/l10n/strings_en.ts +2 -1
  313. package/src/l10n/use_smile_id_localizations.ts +3 -0
  314. package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
  315. package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +215 -0
  316. package/src/metadata/__tests__/metadata_configuration_objects.test.ts +85 -0
  317. package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
  318. package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
  319. package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
  320. package/src/metadata/__tests__/use_smile_id_metadata.test.ts +18 -24
  321. package/src/metadata/builder_configuration.ts +63 -0
  322. package/src/metadata/captured_image_properties.ts +10 -0
  323. package/src/metadata/device_orientation_collector.ts +75 -0
  324. package/src/metadata/geolocation.ts +46 -0
  325. package/src/metadata/metadata_configuration_mappers.ts +234 -0
  326. package/src/metadata/model_configuration.ts +68 -0
  327. package/src/metadata/optional_native_modules.ts +157 -3
  328. package/src/metadata/use_smile_id_metadata.ts +140 -17
  329. package/src/metadata/use_smile_id_metadata_factory.ts +195 -11
  330. package/src/presentation/assets/si_ess_animation_all_directions.json +1300 -286
  331. package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
  332. package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
  333. package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
  334. package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +3 -4
  335. package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
  336. package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +27 -0
  337. package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
  338. package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
  339. package/src/presentation/components/icons/index.tsx +65 -18
  340. package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
  341. package/src/presentation/components/use_smile_id_button.tsx +4 -4
  342. package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
  343. package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
  344. package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
  345. package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
  346. package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
  347. package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +0 -3
  348. package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
  349. package/src/presentation/components/use_smile_id_instructions_hero.tsx +100 -59
  350. package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
  351. package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +200 -1
  352. package/src/presentation/flow/dsl/builder/config_builder.ts +14 -0
  353. package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
  354. package/src/presentation/flow/dsl/builder/screens_builder.ts +111 -10
  355. package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
  356. package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
  357. package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
  358. package/src/presentation/flow/flow_navigation_manager.ts +179 -13
  359. package/src/presentation/flow/model/instruction_guideline.ts +6 -0
  360. package/src/presentation/flow/model/instructions_defaults.ts +103 -25
  361. package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +43 -10
  362. package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
  363. package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -2
  364. package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
  365. package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
  366. package/src/presentation/flow/validation/job_type_validator.ts +24 -0
  367. package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
  368. package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +6 -4
  369. package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
  370. package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
  371. package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +3 -0
  372. package/src/presentation/screen/use_smile_id_capture_screen.tsx +234 -36
  373. package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +32 -22
  374. package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
  375. package/src/presentation/screen/use_smile_id_preview_screen.tsx +9 -9
  376. package/src/presentation/screen/use_smile_id_processing_screen.tsx +7 -7
  377. package/src/presentation/theme/theme.ts +21 -19
  378. package/src/presentation/utils/force_max_brightness.tsx +4 -4
  379. package/dist/camera/frame_processor_plugin.d.ts +0 -28
  380. package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
  381. package/dist/camera/frame_processor_plugin.js +0 -21
  382. package/dist/camera/frame_processor_plugin.js.map +0 -1
  383. package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
  384. package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
  385. package/dist/camera/use_smile_id_frame_processor.js +0 -2
  386. package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
  387. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
  388. package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
  389. package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
  390. package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
  391. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
  392. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
  393. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
  394. package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
  395. package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
  396. package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
  397. package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
  398. package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
  399. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
  400. package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
  401. package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
  402. package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
  403. package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
@@ -1,22 +1,42 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Pressable, StyleSheet, View } from "react-native";
3
+ import { SafeAreaView } from "react-native-safe-area-context";
3
4
  import { defaultLightTheme } from "../theme/theme";
4
- import { SiGallery } from "./icons";
5
- import { UseSmileIDCaptureSpinner } from "./use_smile_id_capture_spinner";
6
- const SHUTTER_SIZE = 72;
7
- const SHUTTER_INNER_SIZE = 56;
8
- const GALLERY_SIZE = 52;
9
- const CONTROL_GAP = 20;
5
+ import { SiGallery, SiOutlineClose } from "./icons";
6
+ const SHUTTER_SIZE = 64;
7
+ const SHUTTER_INNER_SIZE = 46;
8
+ const GALLERY_SIZE = 56;
9
+ const CONTROL_GAP = 24;
10
+ const CLOSE_SIZE = 40;
11
+ /** Trailing-edge inset for the landscape lane (spacing.large). */
12
+ const LANE_EDGE = 24;
13
+ /** Bottom inset for the portrait control row above the safe area (spacing.large). */
14
+ const PORTRAIT_ROW_BOTTOM = 24;
15
+ /** Top/bottom inset bounding the ✕ and the centred controls inside the lane. */
16
+ const LANE_VERTICAL_PADDING = 16;
10
17
  /**
11
- * Document capture controls — manual shutter + gallery upload, a trailing-edge
12
- * column in landscape and a centred bottom row in portrait (matches the capture design).
18
+ * Document capture controls — manual shutter + gallery upload, plus the close ✕
19
+ * in landscape (laid out as a trailing-edge lane; portrait is a centred bottom
20
+ * row with the ✕ in the top chrome).
13
21
  */
14
22
  export function UseSmileIDDocumentCaptureControls(props) {
15
23
  // Light-palette forced: overlay is locked to light mode so brand-blue reads over the dim feed.
16
24
  const theme = defaultLightTheme;
17
- if (!props.capturing && !props.showManualShutter && !props.showGallery) {
25
+ const controlsVisible = props.showManualShutter || props.showGallery;
26
+ // The lane keeps the ✕ even when shutter/gallery hide (during capture); portrait
27
+ // renders nothing here once the controls are hidden.
28
+ const showCloseInLane = props.isLandscape && props.onClose !== undefined;
29
+ if (!controlsVisible && !showCloseInLane) {
18
30
  return null;
19
31
  }
32
+ const closeButton = props.onClose ? (_jsx(Pressable, { onPress: props.onClose, accessibilityRole: "button", accessibilityLabel: props.closeAccessibilityLabel, testID: "si_document_close_button", style: ({ pressed }) => [
33
+ styles.closeButton,
34
+ {
35
+ backgroundColor: theme.colors.offBlack,
36
+ borderColor: theme.colors.backButtonBorder,
37
+ opacity: pressed ? 0.7 : 1,
38
+ },
39
+ ], children: _jsx(SiOutlineClose, { size: 20, color: theme.colors.offWhite }) })) : null;
20
40
  const shutter = props.showManualShutter ? (_jsx(Pressable, { onPress: props.onManualShutter, disabled: !props.enabled, accessibilityRole: "button", accessibilityLabel: props.shutterAccessibilityLabel, accessibilityState: { disabled: !props.enabled }, testID: "si_document_manual_shutter", style: ({ pressed }) => [
21
41
  styles.shutterOuter,
22
42
  { opacity: pressed || !props.enabled ? 0.6 : 1 },
@@ -28,34 +48,57 @@ export function UseSmileIDDocumentCaptureControls(props) {
28
48
  opacity: pressed || !props.enabled ? 0.6 : 1,
29
49
  },
30
50
  ], children: _jsx(SiGallery, { size: 24, color: theme.colors.primaryForeground }) })) : null;
31
- return (_jsx(View, { style: props.isLandscape ? styles.landscapeColumn : styles.portraitRow, pointerEvents: "box-none", testID: "si_document_capture_controls", children: props.capturing ? (_jsx(UseSmileIDCaptureSpinner, { color: theme.colors.ovalActive, testID: "si_document_capture_spinner" })) : props.isLandscape ? (_jsxs(_Fragment, { children: [shutter, gallery] })) : (_jsxs(_Fragment, { children: [gallery, shutter] })) }));
51
+ if (props.isLandscape) {
52
+ // Trailing-edge lane: ✕ at the top, shutter/gallery vertically centred
53
+ // between two flex spacers so the controls hold the lane's vertical centre.
54
+ return (_jsxs(SafeAreaView, { edges: ["top", "right", "bottom", "left"], style: styles.landscapeLane, pointerEvents: "box-none", testID: "si_document_capture_controls", children: [_jsx(View, { style: styles.laneSlot, children: closeButton }), _jsx(View, { style: styles.laneSpacer }), controlsVisible ? (_jsxs(View, { style: styles.landscapeControls, children: [shutter, gallery] })) : null, _jsx(View, { style: styles.laneSpacer })] }));
55
+ }
56
+ // Portrait: centred bottom row (gallery left of shutter).
57
+ return (_jsxs(SafeAreaView, { edges: ["top", "right", "bottom", "left"], style: styles.portraitRow, pointerEvents: "box-none", testID: "si_document_capture_controls", children: [gallery, shutter] }));
32
58
  }
33
59
  const styles = StyleSheet.create({
34
- landscapeColumn: {
60
+ // No fixed width: the lane sizes to its (≤ SHUTTER_SIZE-wide) content so the
61
+ // additive horizontal safe-area inset SHIFTS it inward instead of squeezing the
62
+ // controls (RN is border-box; padding inside a fixed width would clip them).
63
+ landscapeLane: {
35
64
  position: "absolute",
36
65
  top: 0,
37
66
  bottom: 0,
38
- end: 24,
67
+ end: LANE_EDGE,
68
+ flexDirection: "column",
69
+ alignItems: "center",
70
+ paddingVertical: LANE_VERTICAL_PADDING,
71
+ },
72
+ laneSpacer: { flex: 1 },
73
+ laneSlot: { width: SHUTTER_SIZE, alignItems: "center" },
74
+ landscapeControls: {
39
75
  flexDirection: "column",
40
76
  alignItems: "center",
41
- justifyContent: "center",
42
77
  gap: CONTROL_GAP,
43
78
  },
44
79
  portraitRow: {
45
80
  position: "absolute",
46
81
  start: 0,
47
82
  end: 0,
48
- bottom: 96,
83
+ bottom: PORTRAIT_ROW_BOTTOM,
49
84
  flexDirection: "row",
50
85
  alignItems: "center",
51
86
  justifyContent: "center",
52
87
  gap: CONTROL_GAP * 1.6,
53
88
  },
89
+ closeButton: {
90
+ width: CLOSE_SIZE,
91
+ height: CLOSE_SIZE,
92
+ borderRadius: CLOSE_SIZE / 2,
93
+ borderWidth: 1,
94
+ alignItems: "center",
95
+ justifyContent: "center",
96
+ },
54
97
  shutterOuter: {
55
98
  width: SHUTTER_SIZE,
56
99
  height: SHUTTER_SIZE,
57
100
  borderRadius: SHUTTER_SIZE / 2,
58
- borderWidth: 3,
101
+ borderWidth: 4,
59
102
  borderColor: "#FFFFFF",
60
103
  alignItems: "center",
61
104
  justifyContent: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_document_capture_controls.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_capture_controls.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use_smile_id_document_capture_controls.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_capture_controls.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  import type { UseSmileIDTheme } from "../theme/theme";
2
2
  import { type UseSmileIDOverlayState as OverlayState } from "../state/use_smile_id_overlay_state";
3
+ import type { DocumentType } from "../../core/models/document_type";
3
4
  export type UseSmileIDDocumentOverlayProps = {
4
5
  readonly state: OverlayState;
5
6
  readonly containerWidth: number;
6
7
  readonly containerHeight: number;
7
8
  /** Optional aspect ratio hint — e.g. CR-80 ID card = 1.586. */
8
9
  readonly knownIdAspectRatio?: number;
10
+ /** Document type — selects the in-frame shimmer skeleton. */
11
+ readonly documentTypeKind?: DocumentType["kind"];
12
+ /** Generic-document back side — swaps the front skeleton for the back. */
13
+ readonly isBackSide?: boolean;
9
14
  /**
10
15
  * Coaching copy shown in the dark pill below the frame. Rendered here so it
11
16
  * tracks the frame geometry instead of a fixed screen offset.
@@ -14,12 +19,24 @@ export type UseSmileIDDocumentOverlayProps = {
14
19
  readonly testID?: string;
15
20
  readonly theme?: UseSmileIDTheme;
16
21
  };
22
+ /** Default document aspect (CR-80 ID-1 card) when no known ratio is supplied. */
23
+ export declare const DEFAULT_DOCUMENT_ASPECT = 1.586;
17
24
  /**
18
- * Document capture frame — two-layer dim (faint full-feed tint + darker surround
19
- * outside the cutout, ~0.15 inside / ~0.49 outside) plus a border that flips to
20
- * `ovalActive` on `DOCUMENT_READY`. The cutout is one even-odd path, NOT a `<Mask>`:
21
- * masks rasterize the full-screen layer to a bitmap on the UI thread per invalidation,
22
- * freezing the camera preview. Respects `knownIdAspectRatio`; the frame stays centred.
25
+ * Centred document guide rectangle (container px) for a document [aspect] and
26
+ * viewport. Single source of truth shared by the overlay (draws the frame) and
27
+ * the capture screen (derives the native crop region), so the saved capture
28
+ * matches the frame the user saw.
29
+ */
30
+ export declare function documentGuideRect(aspect: number, containerWidth: number, containerHeight: number): {
31
+ readonly left: number;
32
+ readonly top: number;
33
+ readonly width: number;
34
+ readonly height: number;
35
+ };
36
+ /**
37
+ * Document capture frame — two-layer dim + a border that flips to `ovalActive`
38
+ * on `DOCUMENT_READY`. The cutout is one even-odd path, NOT a `<Mask>` (masks
39
+ * rasterize the full-screen layer per invalidation, freezing the preview).
23
40
  */
24
41
  export declare function UseSmileIDDocumentOverlay(props: UseSmileIDDocumentOverlayProps): import("react").JSX.Element | null;
25
42
  //# sourceMappingURL=use_smile_id_document_overlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_document_overlay.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_overlay.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAEL,KAAK,sBAAsB,IAAI,YAAY,EAC5C,MAAM,qCAAqC,CAAC;AAG7C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAuBF;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,sCAsHtC"}
1
+ {"version":3,"file":"use_smile_id_document_overlay.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_overlay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAEL,KAAK,sBAAsB,IAAI,YAAY,EAC5C,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAKpE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACjD,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAqBF,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB;IACD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAcA;AASD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,sCAmKtC"}
@@ -1,53 +1,78 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { memo } from "react";
3
3
  import { StyleSheet, Text, View } from "react-native";
4
+ import { useSafeAreaInsets } from "react-native-safe-area-context";
4
5
  import Svg, { Path } from "react-native-svg";
5
6
  import { useUseSmileIDTheme } from "../theme/theme_context";
6
7
  import { isDocumentCaptureActive, } from "../state/use_smile_id_overlay_state";
7
- import { UseSmileIDDocumentFrameGlyph } from "./use_smile_id_document_frame_glyph";
8
+ import { UseSmileIDOvalBorderPalette } from "./use_smile_id_oval_border_palette";
9
+ import { UseSmileIDDocumentShimmer } from "./use_smile_id_document_shimmer";
10
+ import { UseSmileIDCaptureSpinner } from "./use_smile_id_capture_spinner";
8
11
  /** Gap between the frame's bottom edge and the coaching pill (Figma: 16dp). */
9
12
  const CHIP_TOP_GAP = 16;
10
13
  /**
11
- * Fraction of the container width the document frame spans, per orientation.
12
- * Matches the Figma capture frames: landscape ID-1 card ≈ 0.53 of the (wide)
13
- * screen; portrait booklet / passport ≈ 0.68 of the (narrow) screen.
14
+ * Frame spans ≤71% of container width, height capped at 61% (re-deriving width
15
+ * from aspect when the cap bites — keeps a wide ID-1 card from overflowing in
16
+ * landscape). One ratio pair drives both orientations.
14
17
  */
15
- const FRAME_WIDTH_FRACTION_LANDSCAPE = 0.53;
16
- const FRAME_WIDTH_FRACTION_PORTRAIT = 0.68;
18
+ const FRAME_MAX_WIDTH_RATIO = 0.71;
19
+ const FRAME_MAX_HEIGHT_RATIO = 0.61;
17
20
  /** Frame corner radius (matches the bordered frame's `borderRadius`). */
18
- const FRAME_CORNER_RADIUS = 8;
21
+ const FRAME_CORNER_RADIUS = 16;
22
+ /** Guide-rect border thickness; drawn straddling the frame edge (centred stroke, matching the other SDKs). */
23
+ const FRAME_BORDER_WIDTH = 4;
24
+ /** Capture-progress spinner shown beside the frame (landscape) or bottom-centre (portrait). */
25
+ const SPINNER_SIZE = 48;
26
+ /** Portrait spinner gap above the safe-area bottom (spacing.large) — matches the shutter row. */
27
+ const PORTRAIT_SPINNER_BOTTOM_GAP = 24;
28
+ /** Default document aspect (CR-80 ID-1 card) when no known ratio is supplied. */
29
+ export const DEFAULT_DOCUMENT_ASPECT = 1.586;
19
30
  /**
20
- * Faint black tint over the WHOLE live feed (net ~0.15 inside the frame). A
21
- * component constant, not a theme colour — the surround dim (`documentOverlayScrim`)
22
- * is the partner-overridable layer.
31
+ * Centred document guide rectangle (container px) for a document [aspect] and
32
+ * viewport. Single source of truth shared by the overlay (draws the frame) and
33
+ * the capture screen (derives the native crop region), so the saved capture
34
+ * matches the frame the user saw.
35
+ */
36
+ export function documentGuideRect(aspect, containerWidth, containerHeight) {
37
+ let width = containerWidth * FRAME_MAX_WIDTH_RATIO;
38
+ let height = width / aspect;
39
+ const maxHeight = containerHeight * FRAME_MAX_HEIGHT_RATIO;
40
+ if (height > maxHeight) {
41
+ height = maxHeight;
42
+ width = height * aspect;
43
+ }
44
+ return {
45
+ left: (containerWidth - width) / 2,
46
+ top: (containerHeight - height) / 2,
47
+ width,
48
+ height,
49
+ };
50
+ }
51
+ /**
52
+ * Faint black tint over the whole live feed (~0.15 inside the frame). Component
53
+ * constant, not a theme colour — the surround dim is the overridable layer.
23
54
  */
24
55
  const DOCUMENT_CAMERA_TINT = "#00000026"; // black @15%
25
56
  /** Fallback surround dim when the theme omits `documentOverlayScrim`. */
26
57
  const DEFAULT_DOCUMENT_OVERLAY_SCRIM = "#00000066"; // black @40%
27
58
  /**
28
- * Document capture frame — two-layer dim (faint full-feed tint + darker surround
29
- * outside the cutout, ~0.15 inside / ~0.49 outside) plus a border that flips to
30
- * `ovalActive` on `DOCUMENT_READY`. The cutout is one even-odd path, NOT a `<Mask>`:
31
- * masks rasterize the full-screen layer to a bitmap on the UI thread per invalidation,
32
- * freezing the camera preview. Respects `knownIdAspectRatio`; the frame stays centred.
59
+ * Document capture frame — two-layer dim + a border that flips to `ovalActive`
60
+ * on `DOCUMENT_READY`. The cutout is one even-odd path, NOT a `<Mask>` (masks
61
+ * rasterize the full-screen layer per invalidation, freezing the preview).
33
62
  */
34
63
  export function UseSmileIDDocumentOverlay(props) {
35
64
  const themeFromContext = useUseSmileIDTheme();
36
65
  const theme = props.theme ?? themeFromContext;
37
- const aspect = props.knownIdAspectRatio ?? 1.586;
38
- const isLandscapeFrame = aspect >= 1;
39
- const frameWidth = props.containerWidth *
40
- (isLandscapeFrame
41
- ? FRAME_WIDTH_FRACTION_LANDSCAPE
42
- : FRAME_WIDTH_FRACTION_PORTRAIT);
43
- const frameHeight = frameWidth / aspect;
44
- const left = (props.containerWidth - frameWidth) / 2;
45
- const top = (props.containerHeight - frameHeight) / 2;
46
- // Two-state border: neutral light while idle/positioning, green once committing.
66
+ const insets = useSafeAreaInsets();
67
+ const aspect = props.knownIdAspectRatio ?? DEFAULT_DOCUMENT_ASPECT;
68
+ const isPortrait = aspect < 1;
69
+ const { left, top, width: frameWidth, height: frameHeight, } = documentGuideRect(aspect, props.containerWidth, props.containerHeight);
70
+ // Three-state border, shared with the selfie oval (UseSmileIDOvalBorderPalette):
71
+ // green once the document is correctly framed (ready / capturing / processing),
72
+ // red while detected but mispositioned (too far / close / off-centre / not
73
+ // steady), neutral while idle.
47
74
  const captureActive = isDocumentCaptureActive(props.state);
48
- const borderColor = captureActive
49
- ? theme.colors.ovalActive
50
- : theme.colors.stroke;
75
+ const borderColor = theme.colors[UseSmileIDOvalBorderPalette.tokenFor(props.state, false)];
51
76
  const surroundColor = theme.colors.documentOverlayScrim ?? DEFAULT_DOCUMENT_OVERLAY_SCRIM;
52
77
  if (props.containerWidth <= 0 || props.containerHeight <= 0) {
53
78
  return null;
@@ -56,21 +81,36 @@ export function UseSmileIDDocumentOverlay(props) {
56
81
  StyleSheet.absoluteFill,
57
82
  { backgroundColor: DOCUMENT_CAMERA_TINT },
58
83
  ] }), _jsx(DocumentScrimSurround, { containerWidth: props.containerWidth, containerHeight: props.containerHeight, frameLeft: left, frameTop: top, frameWidth: frameWidth, frameHeight: frameHeight, cornerRadius: FRAME_CORNER_RADIUS, color: surroundColor }), !captureActive ? (_jsx(View, { style: {
84
+ // Inset 10% per axis so the shimmer guide never touches the frame edge.
59
85
  position: "absolute",
60
- left,
61
- top,
62
- width: frameWidth,
63
- height: frameHeight,
64
- }, pointerEvents: "none", children: _jsx(UseSmileIDDocumentFrameGlyph, { width: frameWidth, height: frameHeight, isLandscape: isLandscapeFrame }) })) : null, _jsx(View, { style: {
86
+ left: left + frameWidth * 0.1,
87
+ top: top + frameHeight * 0.1,
88
+ width: frameWidth * 0.8,
89
+ height: frameHeight * 0.8,
90
+ }, pointerEvents: "none", children: _jsx(UseSmileIDDocumentShimmer, { width: frameWidth * 0.8, height: frameHeight * 0.8, isBackSide: props.isBackSide ?? false, ...(props.documentTypeKind !== undefined
91
+ ? { documentTypeKind: props.documentTypeKind }
92
+ : {}) }) })) : null, _jsx(View, { style: {
65
93
  position: "absolute",
66
- left,
67
- top,
68
- width: frameWidth,
69
- height: frameHeight,
70
- borderWidth: 1.5,
71
- borderRadius: FRAME_CORNER_RADIUS,
94
+ left: left - FRAME_BORDER_WIDTH / 2,
95
+ top: top - FRAME_BORDER_WIDTH / 2,
96
+ width: frameWidth + FRAME_BORDER_WIDTH,
97
+ height: frameHeight + FRAME_BORDER_WIDTH,
98
+ borderWidth: FRAME_BORDER_WIDTH,
99
+ borderRadius: FRAME_CORNER_RADIUS + FRAME_BORDER_WIDTH / 2,
72
100
  borderColor,
73
- } }), props.feedbackText ? (_jsx(View, { style: {
101
+ } }), captureActive ? (isPortrait ? (_jsx(View, { style: {
102
+ position: "absolute",
103
+ left: 0,
104
+ right: 0,
105
+ bottom: insets.bottom + PORTRAIT_SPINNER_BOTTOM_GAP,
106
+ alignItems: "center",
107
+ }, pointerEvents: "none", children: _jsx(UseSmileIDCaptureSpinner, { size: SPINNER_SIZE, color: theme.colors.ovalActive, testID: "si_document_capture_spinner" }) })) : (_jsx(View, { style: {
108
+ position: "absolute",
109
+ left: left +
110
+ frameWidth +
111
+ (props.containerWidth - (left + frameWidth) - SPINNER_SIZE) / 2,
112
+ top: top + (frameHeight - SPINNER_SIZE) / 2,
113
+ }, pointerEvents: "none", children: _jsx(UseSmileIDCaptureSpinner, { size: SPINNER_SIZE, color: theme.colors.ovalActive, testID: "si_document_capture_spinner" }) }))) : null, props.feedbackText ? (_jsx(View, { style: {
74
114
  position: "absolute",
75
115
  top: top + frameHeight + CHIP_TOP_GAP,
76
116
  start: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_document_overlay.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_overlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use_smile_id_document_overlay.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_overlay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { DocumentType } from "../../core/models/document_type";
2
+ /** Translucent in-frame document shimmer — the per-type "align here" skeleton, scaled to fit the capture frame. */
3
+ export type UseSmileIDDocumentShimmerProps = {
4
+ readonly width: number;
5
+ readonly height: number;
6
+ /** Selects the skeleton; the green book and passport ignore `isBackSide`. */
7
+ readonly documentTypeKind?: DocumentType["kind"];
8
+ /** Generic documents only: show the back-side skeleton instead of the front. */
9
+ readonly isBackSide?: boolean;
10
+ readonly testID?: string;
11
+ };
12
+ /** Shimmer skeleton for a document type + side. Only generic documents have front/back; passport and green book ignore the side. */
13
+ export declare function documentShimmerXml(documentTypeKind: DocumentType["kind"] | undefined, isBackSide: boolean): string;
14
+ export declare const UseSmileIDDocumentShimmer: import("react").MemoExoticComponent<(props: UseSmileIDDocumentShimmerProps) => import("react").JSX.Element | null>;
15
+ //# sourceMappingURL=use_smile_id_document_shimmer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_smile_id_document_shimmer.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_shimmer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAQpE,mHAAmH;AACnH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACjD,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,oIAAoI;AACpI,wBAAgB,kBAAkB,CAChC,gBAAgB,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,EAClD,UAAU,EAAE,OAAO,GAClB,MAAM,CASR;AAED,eAAO,MAAM,yBAAyB,8CACM,8BAA8B,wCAazE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo } from "react";
3
+ import { SvgXml } from "react-native-svg";
4
+ import { SI_DOCUMENT_BACK_SHIMMER, SI_DOCUMENT_FRONT_SHIMMER, SI_DOCUMENT_GREEN_BOOK_SHIMMER, SI_DOCUMENT_PASSPORT_SHIMMER, } from "../assets/svg/document_shimmer_strings";
5
+ /** Shimmer skeleton for a document type + side. Only generic documents have front/back; passport and green book ignore the side. */
6
+ export function documentShimmerXml(documentTypeKind, isBackSide) {
7
+ switch (documentTypeKind) {
8
+ case "passport":
9
+ return SI_DOCUMENT_PASSPORT_SHIMMER;
10
+ case "southAfricaGreenBook":
11
+ return SI_DOCUMENT_GREEN_BOOK_SHIMMER;
12
+ default:
13
+ return isBackSide ? SI_DOCUMENT_BACK_SHIMMER : SI_DOCUMENT_FRONT_SHIMMER;
14
+ }
15
+ }
16
+ export const UseSmileIDDocumentShimmer = memo(function UseSmileIDDocumentShimmer(props) {
17
+ const { width, height, documentTypeKind, isBackSide = false } = props;
18
+ if (width <= 0 || height <= 0)
19
+ return null;
20
+ // Default preserveAspectRatio (meet) fits the skeleton in the frame, undistorted.
21
+ return (_jsx(SvgXml, { xml: documentShimmerXml(documentTypeKind, isBackSide), width: width, height: height, ...(props.testID !== undefined ? { testID: props.testID } : {}) }));
22
+ });
23
+ //# sourceMappingURL=use_smile_id_document_shimmer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_smile_id_document_shimmer.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_document_shimmer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,wCAAwC,CAAC;AAahD,oIAAoI;AACpI,MAAM,UAAU,kBAAkB,CAChC,gBAAkD,EAClD,UAAmB;IAEnB,QAAQ,gBAAgB,EAAE,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,4BAA4B,CAAC;QACtC,KAAK,sBAAsB;YACzB,OAAO,8BAA8B,CAAC;QACxC;YACE,OAAO,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAC3C,SAAS,yBAAyB,CAAC,KAAqC;IACtE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACtE,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,kFAAkF;IAClF,OAAO,CACL,KAAC,MAAM,IACL,GAAG,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,UAAU,CAAC,EACrD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,KACV,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAChE,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_enhanced_smart_selfie_clip.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAU3D,eAAO,MAAM,4BAA4B,EACsB,eAAe,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,MAAM,MAAM,sCAAsC,GAAG;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,sCA4D9C"}
1
+ {"version":3,"file":"use_smile_id_enhanced_smart_selfie_clip.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,eAAO,MAAM,4BAA4B,EACsB,eAAe,CAAC;AAE/E,gFAAgF;AAChF,eAAO,MAAM,oCAAoC,MAAM,CAAC;AACxD,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,MAAM,MAAM,sCAAsC,GAAG;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,sCA0D9C"}
@@ -4,7 +4,7 @@ import { View } from "react-native";
4
4
  import LottieView from "lottie-react-native";
5
5
  import { useReducedMotion } from "../utils/use_reduced_motion";
6
6
  import { FaceOvalDefaults } from "./face_oval_defaults";
7
- import { ENHANCED_SMART_SELFIE_ANIMATION_OPACITY, ENHANCED_SMART_SELFIE_ANIMATION_SPEED, ENHANCED_SMART_SELFIE_TOTAL_FRAMES, } from "./helpers/enhanced_smart_selfie_animation_frames";
7
+ import { ENHANCED_SMART_SELFIE_ANIMATION_SPEED, ENHANCED_SMART_SELFIE_TOTAL_FRAMES, } from "./helpers/enhanced_smart_selfie_animation_frames";
8
8
  // eslint-disable-next-line @typescript-eslint/no-require-imports
9
9
  export const ESS_ALL_DIRECTIONS_ANIMATION = require("../assets/si_ess_animation_all_directions.json");
10
10
  /** Square box the Enhanced Smart Selfie cues render in, centred on the oval. */
@@ -32,8 +32,6 @@ export function UseSmileIDEnhancedSmartSelfieClip(props) {
32
32
  top: ovalCenterY - size / 2 + VERTICAL_ALIGNMENT_OFFSET,
33
33
  width: size,
34
34
  height: size,
35
- // Translucent so the face stays the focal point behind the arrow cue.
36
- opacity: ENHANCED_SMART_SELFIE_ANIMATION_OPACITY,
37
35
  };
38
36
  if (reducedMotion) {
39
37
  return (_jsx(View, { pointerEvents: "none", style: containerStyle, testID: props.testID, children: _jsx(LottieView, { source: ESS_ALL_DIRECTIONS_ANIMATION, progress: endFrame / ENHANCED_SMART_SELFIE_TOTAL_FRAMES, autoPlay: false, loop: false, style: { width: "100%", height: "100%" } }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_enhanced_smart_selfie_clip.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use_smile_id_enhanced_smart_selfie_clip.js","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAkC,MAAM,cAAc,CAAC;AACpE,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,qCAAqC,EACrC,kCAAkC,GACnC,MAAM,kDAAkD,CAAC;AAE1D,iEAAiE;AACjE,MAAM,CAAC,MAAM,4BAA4B,GACvC,OAAO,CAAC,gDAAgD,CAAoB,CAAC;AAE/E,gFAAgF;AAChF,MAAM,CAAC,MAAM,oCAAoC,GAAG,GAAG,CAAC;AACxD,gEAAgE;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EAAE,CAAC;AAY7C;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAA6C;IAE7C,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,GACvE,KAAK,CAAC;IAER,IAAI,cAAc,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,oCAAoC,CAAC;IAClD,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;IAExE,MAAM,cAAc,GAAG;QACrB,QAAQ,EAAE,UAAmB;QAC7B,IAAI,EAAE,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,yBAAyB;QACvD,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,MAAM,EAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,YACpE,KAAC,UAAU,IACT,MAAM,EAAE,4BAA4B,EACpC,QAAQ,EAAE,QAAQ,GAAG,kCAAkC,EACvD,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GACxC,GACG,CACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,4EAA4E;QAC5E,OAAO,CACL,KAAC,IAAI,IAAC,aAAa,EAAC,MAAM,EAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,YACpE,KAAC,UAAU,IACT,MAAM,EAAE,4BAA4B,EACpC,QAAQ,QACR,IAAI,QACJ,KAAK,EAAE,qCAAqC,EAC5C,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GACxC,GACG,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,CACH,CAAC;AACJ,CAAC;AASD;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IAC3C,2CAA2C;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3B,MAAM,qBAAqB,GAAG,CAAC,WAAoB,EAAE,EAAE;QACrD,IAAI,WAAW;YAAE,OAAO;QACxB,UAAU,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,IACH,aAAa,EAAC,MAAM,EACpB,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,YAEpB,KAAC,UAAU,IACT,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,4BAA4B,EACpC,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,qCAAqC,EAC5C,iBAAiB,EAAE,qBAAqB,EACxC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GACxC,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use_smile_id_guideline_thumbnail.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_guideline_thumbnail.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAehF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,KAAK,EAAE,SAAS,GACjB,EAAE,iCAAiC,+BA6DnC"}
1
+ {"version":3,"file":"use_smile_id_guideline_thumbnail.d.ts","sourceRoot":"","sources":["../../../src/presentation/components/use_smile_id_guideline_thumbnail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAwBhF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,KAAK,EAAE,SAAS,GACjB,EAAE,iCAAiC,+BAiJnC"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
2
3
  import { StyleSheet, Text, View } from "react-native";
3
4
  import { useUseSmileIDTheme } from "../theme/theme_context";
4
5
  import { useUseSmileIDLocalizations } from "../../l10n/use_smile_id_localizations_provider";
@@ -14,6 +15,14 @@ const BADGE_SIZE = 16;
14
15
  const BADGE_ICON_SIZE = 14;
15
16
  // The badge overhangs the top-end corner of the card.
16
17
  const BADGE_OVERHANG = -10;
18
+ // Document card SVGs carry a transparent bleed around the visible card (3px
19
+ // L/R, 2px top, 4px bottom); the tile offsets the SVG by it so the card fills
20
+ // the framed box exactly.
21
+ const DOC_CARD_RADIUS = 4;
22
+ const DOC_BLEED_X = 3;
23
+ const DOC_BLEED_TOP = 2;
24
+ const DOC_BLEED_BOTTOM = 4;
25
+ const DOC_BADGE_OVERHANG = -8;
17
26
  /**
18
27
  * A capture-guideline tile: a bordered card with the illustration and a status
19
28
  * pill, a check/close badge overhanging the top-end corner, and a caption.
@@ -22,12 +31,51 @@ export function UseSmileIDGuidelineThumbnail({ guideline, theme: themeProp, }) {
22
31
  const themeFromContext = useUseSmileIDTheme();
23
32
  const theme = themeProp ?? themeFromContext;
24
33
  const localizations = useUseSmileIDLocalizations();
34
+ // Measured card width — the card scales to its column, so the SVG size and
35
+ // bleed offset scale with it.
36
+ const [measuredCardWidth, setMeasuredCardWidth] = useState(0);
25
37
  const allowed = guideline.status === "allowed";
26
38
  const Illustration = guideline.image;
27
39
  const Badge = allowed ? SiFilledCheckCircle : SiFilledCloseCircle;
28
40
  const badgeLabel = allowed
29
41
  ? localizations.siCdGuidelineAllowed
30
42
  : localizations.siCdGuidelineBlocked;
43
+ const caption = guideline.label(localizations);
44
+ // Document tile: one of four equal columns (so all four fit one row); the
45
+ // self-contained card SVG fills the column, framed by a border + shadow with
46
+ // an overhanging badge (no pill).
47
+ if (guideline.card) {
48
+ const { width: figmaCardWidth, height: figmaCardHeight } = guideline.card;
49
+ const scale = measuredCardWidth > 0 ? measuredCardWidth / figmaCardWidth : 0;
50
+ return (_jsxs(View, { style: styles.documentTile, children: [_jsxs(View, { style: [styles.documentCardWrap, { maxWidth: figmaCardWidth }], children: [_jsxs(View, { style: [
51
+ styles.documentCard,
52
+ {
53
+ aspectRatio: figmaCardWidth / figmaCardHeight,
54
+ backgroundColor: theme.colors.cardBackground,
55
+ },
56
+ ], onLayout: (event) => {
57
+ const width = event.nativeEvent.layout.width;
58
+ setMeasuredCardWidth((previous) => Math.abs(previous - width) < 0.5 ? previous : width);
59
+ }, children: [scale > 0 ? (_jsx(View, { style: {
60
+ position: "absolute",
61
+ left: -DOC_BLEED_X * scale,
62
+ top: -DOC_BLEED_TOP * scale,
63
+ }, children: _jsx(Illustration, { width: (figmaCardWidth + DOC_BLEED_X * 2) * scale, height: (figmaCardHeight + DOC_BLEED_TOP + DOC_BLEED_BOTTOM) * scale }) })) : null, _jsx(View, { pointerEvents: "none", style: [
64
+ styles.documentCardBorder,
65
+ { borderColor: theme.colors.stroke },
66
+ ] })] }), _jsx(View, { style: [
67
+ styles.badge,
68
+ styles.documentBadge,
69
+ { backgroundColor: theme.colors.cardBackground },
70
+ ], accessibilityRole: "image", accessibilityLabel: badgeLabel, children: _jsx(Badge, { size: BADGE_ICON_SIZE }) })] }), _jsx(Text, { numberOfLines: 1, style: {
71
+ ...theme.typography.cardCaption,
72
+ fontSize: 10,
73
+ lineHeight: 12,
74
+ color: theme.colors.cardText,
75
+ textAlign: "center",
76
+ marginTop: theme.spacing.extraSmall,
77
+ }, children: caption })] }));
78
+ }
31
79
  return (_jsxs(View, { style: styles.container, children: [_jsxs(View, { children: [_jsxs(View, { style: [
32
80
  styles.card,
33
81
  {
@@ -51,7 +99,7 @@ export function UseSmileIDGuidelineThumbnail({ guideline, theme: themeProp, }) {
51
99
  color: theme.colors.primary,
52
100
  textAlign: "center",
53
101
  marginTop: theme.spacing.extraSmall,
54
- }, children: guideline.label(localizations) })] }));
102
+ }, children: caption })] }));
55
103
  }
56
104
  const styles = StyleSheet.create({
57
105
  container: { alignItems: "center" },
@@ -92,5 +140,40 @@ const styles = StyleSheet.create({
92
140
  shadowOffset: { width: 0, height: 1 },
93
141
  elevation: 1,
94
142
  },
143
+ // One of four equal columns so the document guidelines always fit one row.
144
+ documentTile: {
145
+ width: "25%",
146
+ alignItems: "center",
147
+ paddingHorizontal: 3,
148
+ },
149
+ // Capped at the artwork's natural width (inline maxWidth) so it never grows
150
+ // past its design size on wide screens.
151
+ documentCardWrap: {
152
+ width: "100%",
153
+ alignSelf: "center",
154
+ },
155
+ documentCard: {
156
+ width: "100%",
157
+ borderRadius: DOC_CARD_RADIUS,
158
+ // No `overflow: hidden` — would clip the SVG's bleed and the shadow.
159
+ shadowColor: "#000000",
160
+ shadowOpacity: 0.1,
161
+ shadowRadius: 3,
162
+ shadowOffset: { width: 0, height: 1 },
163
+ elevation: 1,
164
+ },
165
+ documentCardBorder: {
166
+ position: "absolute",
167
+ top: 0,
168
+ bottom: 0,
169
+ start: 0,
170
+ end: 0,
171
+ borderRadius: DOC_CARD_RADIUS,
172
+ borderWidth: 1,
173
+ },
174
+ documentBadge: {
175
+ top: DOC_BADGE_OVERHANG,
176
+ end: DOC_BADGE_OVERHANG,
177
+ },
95
178
  });
96
179
  //# sourceMappingURL=use_smile_id_guideline_thumbnail.js.map