@transfergratis/react-native-sdk 0.1.5 → 0.1.7

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 (60) hide show
  1. package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -1
  2. package/build/components/KYCElements/CountrySelectionTemplate.js +7 -1
  3. package/build/components/KYCElements/CountrySelectionTemplate.js.map +1 -1
  4. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts +1 -1
  5. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -1
  6. package/build/components/KYCElements/SelfieCaptureTemplate.js +32 -3
  7. package/build/components/KYCElements/SelfieCaptureTemplate.js.map +1 -1
  8. package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -1
  9. package/build/components/KYCElements/VerificationProgressTemplate.js +106 -5
  10. package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -1
  11. package/build/components/TemplateKYCExample.d.ts +4 -1
  12. package/build/components/TemplateKYCExample.d.ts.map +1 -1
  13. package/build/components/TemplateKYCExample.js +4 -4
  14. package/build/components/TemplateKYCExample.js.map +1 -1
  15. package/build/components/TemplateKYCFlowRefactored.d.ts +3 -2
  16. package/build/components/TemplateKYCFlowRefactored.d.ts.map +1 -1
  17. package/build/components/TemplateKYCFlowRefactored.js +2 -2
  18. package/build/components/TemplateKYCFlowRefactored.js.map +1 -1
  19. package/build/hooks/useTemplateKYCFlow.d.ts +5 -3
  20. package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -1
  21. package/build/hooks/useTemplateKYCFlow.js +89 -74
  22. package/build/hooks/useTemplateKYCFlow.js.map +1 -1
  23. package/build/index.d.ts +1 -0
  24. package/build/index.d.ts.map +1 -1
  25. package/build/index.js +2 -0
  26. package/build/index.js.map +1 -1
  27. package/build/modules/api/KYCService.d.ts +2 -1
  28. package/build/modules/api/KYCService.d.ts.map +1 -1
  29. package/build/modules/api/KYCService.js +17 -61
  30. package/build/modules/api/KYCService.js.map +1 -1
  31. package/build/modules/api/types.d.ts +25 -0
  32. package/build/modules/api/types.d.ts.map +1 -1
  33. package/build/modules/api/types.js.map +1 -1
  34. package/build/types/KYC.types.d.ts +2 -5
  35. package/build/types/KYC.types.d.ts.map +1 -1
  36. package/build/types/KYC.types.js.map +1 -1
  37. package/build/utils/cropByObb.js +4 -4
  38. package/build/utils/cropByObb.js.map +1 -1
  39. package/build/web/WebKYCEntry.d.ts +9 -0
  40. package/build/web/WebKYCEntry.d.ts.map +1 -0
  41. package/build/web/WebKYCEntry.js +156 -0
  42. package/build/web/WebKYCEntry.js.map +1 -0
  43. package/build/web/index.d.ts +2 -0
  44. package/build/web/index.d.ts.map +1 -0
  45. package/build/web/index.js +2 -0
  46. package/build/web/index.js.map +1 -0
  47. package/package.json +4 -4
  48. package/src/components/KYCElements/CountrySelectionTemplate.tsx +8 -1
  49. package/src/components/KYCElements/SelfieCaptureTemplate.tsx +37 -7
  50. package/src/components/KYCElements/VerificationProgressTemplate.tsx +129 -6
  51. package/src/components/TemplateKYCExample.tsx +6 -5
  52. package/src/components/TemplateKYCFlowRefactored.tsx +6 -2
  53. package/src/hooks/useTemplateKYCFlow.tsx +105 -77
  54. package/src/index.ts +3 -0
  55. package/src/modules/api/KYCService.ts +21 -74
  56. package/src/modules/api/types.ts +30 -3
  57. package/src/types/KYC.types.ts +4 -5
  58. package/src/utils/cropByObb.ts +5 -5
  59. package/src/web/WebKYCEntry.tsx +215 -0
  60. package/src/web/index.ts +1 -0
@@ -54,7 +54,7 @@ const advancedVerificationTemplate = {
54
54
  buttonText: { en: "Confirm", fr: "Confirmer" }
55
55
  },
56
56
  config: {
57
- allowed_countries: ["CA", "FR", "CM", "US", "DE", "CI", "SN", "NG", "MA", "DZ"],
57
+ allowed_countries: ["CA", "FR", "CM", "US", "DE", "SN", "NG", "MA", "DZ", "CI", "KE", "GH"],
58
58
  default_country: "CA",
59
59
  required: true
60
60
  }
@@ -217,7 +217,7 @@ const advancedVerificationTemplate = {
217
217
  // },
218
218
  ]
219
219
  };
220
- export const TemplateKYCExample = ({ onComplete, onCancel, onError }) => {
220
+ export const TemplateKYCExample = ({ onComplete, onCancel, onError, language, API_KEY }) => {
221
221
  const handleComplete = (data) => {
222
222
  console.log('KYC Template completed with data:', data);
223
223
  onComplete(data);
@@ -232,8 +232,8 @@ export const TemplateKYCExample = ({ onComplete, onCancel, onError }) => {
232
232
  // Gérer l'erreur
233
233
  };
234
234
  return (<View style={styles.container}>
235
- <TemplateKYCFlow template={advancedVerificationTemplate} onComplete={handleComplete} onError={handleError} onCancel={handleCancel} language="en" // ou "en" pour l'anglais
236
- />
235
+ <TemplateKYCFlow template={advancedVerificationTemplate} onComplete={handleComplete} onError={handleError} onCancel={handleCancel} language={language} // ou "en" pour l'anglais
236
+ API_KEY={API_KEY}/>
237
237
  </View>);
238
238
  };
239
239
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate } from '../types/KYC.types';\n\n// Template JSON basé sur votre exemple\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: {\n en: \"Advanced Verification\",\n fr: \"Vérification Avancée\"\n },\n description: {\n en: \"Extended identity verification flow\",\n fr: \"Processus de vérification d'identité étendu\"\n },\n version: \"1.1.0\",\n components: [\n {\n id: 5,\n type: \"location\" as const,\n order: 1,\n labels: {\n en: \"Enable your location\",\n fr: \"Activez votre localisation\"\n },\n instructions: {\n en: \"We need your GPS location for compliance purposes.\",\n fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\"\n },\n ui: {\n icon: \"location-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" }\n },\n config: {\n accuracy: \"high\",\n required: true\n } as const\n },\n {\n id: 6,\n type: \"country_selection\" as const,\n order: 2,\n labels: {\n en: \"Select your country\",\n fr: \"Sélectionnez votre pays\"\n },\n instructions: {\n en: \"Choose your country of residence.\",\n fr: \"Choisissez votre pays de résidence.\"\n },\n ui: {\n icon: \"country-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Confirm\", fr: \"Confirmer\" }\n },\n config: {\n allowed_countries: [\"CA\", \"FR\", \"CM\", \"US\", \"DE\", \"CI\", \"SN\", \"NG\", \"MA\", \"DZ\"],\n default_country: \"CA\",\n required: true\n } as const\n },\n {\n id: 1,\n type: \"id_card\" as const,\n order: 3,\n templateId: 1,\n labels: {\n front: {\n en: \"Upload front of ID card\",\n fr: \"Téléversez le recto de votre carte d'identité\"\n },\n back: {\n en: \"Upload back of ID card\",\n fr: \"Téléversez le verso de votre carte d'identité\"\n },\n },\n instructions: {\n front: {\n en: \"Take a clear photo of the front of your ID.\",\n fr: \"Prenez une photo nette du recto de votre pièce.\"\n },\n back: {\n en: \"Take a clear photo of the back of your ID.\",\n fr: \"Prenez une photo nette du verso de votre pièce.\"\n },\n },\n ui: {\n front: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n back: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n },\n config: {\n sides: [\"front\", \"back\"],\n allowed_formats: [\"jpg\", \"png\"],\n max_size_mb: 5,\n document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"],\n bbox_configs: {\n drivers_licence: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n passport: {\n xMin: 15,\n yMin: 130,\n xMax: 375,\n yMax: 350,\n borderColor: \"#007AFF\",\n borderWidth: 4,\n cornerRadius: 8\n },\n identity_card: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n health_insurance_card: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n national_id: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#5856D6\",\n borderWidth: 4,\n cornerRadius: 12\n },\n permanent_residence: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n\n\n work_permit: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n\n }\n } as const\n },\n {\n id: 3,\n type: \"selfie\" as const,\n order: 5,\n templateId: 1,\n labels: {\n en: \"Take selfies from different angles\",\n fr: \"Prenez des selfies sous différents angles\"\n },\n instructions: {\n en: \"Take selfies from front, left, and right angles.\",\n fr: \"Prenez des selfies de face, profil gauche et profil droit.\"\n },\n ui: {\n icon: \"selfie-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n config: {\n liveness_check: true,\n max_attempts: 3,\n orientations: [\"center\", \"left\", \"right\"]\n } as const\n },\n // {\n // id: 4,\n // type: \"file_upload\" as const,\n // order: 6,\n // labels: {\n // en: \"Upload proof of address\",\n // fr: \"Téléversez un justificatif de domicile\"\n // },\n // instructions: {\n // en: \"Upload a recent utility bill or bank statement (PDF, JPG, PNG).\",\n // fr: \"Téléversez une facture récente ou un relevé bancaire (PDF, JPG, PNG).\"\n // },\n // ui: {\n // icon: \"file-upload-icon.png\",\n // themeColor: \"#2DBD60\",\n // buttonText: { en: \"Upload\", fr: \"Téléverser\" }\n // },\n // config: {\n // allowed_formats: [\"pdf\", \"jpg\", \"png\"],\n // max_size_mb: 10,\n // required: true\n // } as const\n // },\n\n ]\n};\n\nexport const TemplateKYCExample: React.FC<{ onComplete: (data: Record<number, any>) => void, onCancel: () => void, onError: (error: string) => void }> = ({ onComplete, onCancel, onError }) => {\n const handleComplete = (data: Record<number, any>) => {\n console.log('KYC Template completed with data:', data);\n onComplete(data);\n // Ici vous pouvez envoyer les données à votre API\n };\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n console.error('KYC Template error:', error);\n // Gérer l'erreur\n };\n\n return (\n <View style={styles.container}>\n <TemplateKYCFlow\n template={advancedVerificationTemplate}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language=\"en\" // ou \"en\" pour l'anglais\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n\n// Exemples de différents types de documents gouvernementaux supportés :\n/*\nexport const documentTypeExamples = {\n // Carte d'identité nationale\n idCard: {\n document_type: \"id_card\" as const,\n labels: { en: \"Upload your ID card\", fr: \"Téléversez votre carte d'identité\" }\n },\n \n // Passeport\n passport: {\n document_type: \"passport\" as const,\n labels: { en: \"Upload your passport\", fr: \"Téléversez votre passeport\" }\n },\n \n // Permis de conduire\n driversLicense: {\n document_type: \"drivers_license\" as const,\n labels: { en: \"Upload your driver's license\", fr: \"Téléversez votre permis de conduire\" }\n },\n \n // Permis de séjour\n residencePermit: {\n document_type: \"residence_permit\" as const,\n labels: { en: \"Upload your residence permit\", fr: \"Téléversez votre permis de séjour\" }\n },\n \n // Carte nationale d'identité\n nationalId: {\n document_type: \"national_id\" as const,\n labels: { en: \"Upload your national ID\", fr: \"Téléversez votre carte nationale d'identité\" }\n },\n \n // Carte d'électeur\n voterId: {\n document_type: \"voter_id\" as const,\n labels: { en: \"Upload your voter ID\", fr: \"Téléversez votre carte d'électeur\" }\n },\n \n // Carte militaire\n militaryId: {\n document_type: \"military_id\" as const,\n labels: { en: \"Upload your military ID\", fr: \"Téléversez votre carte militaire\" }\n },\n \n // Carte d'étudiant\n studentId: {\n document_type: \"student_id\" as const,\n labels: { en: \"Upload your student ID\", fr: \"Téléversez votre carte d'étudiant\" }\n },\n \n // Permis de travail\n workPermit: {\n document_type: \"work_permit\" as const,\n labels: { en: \"Upload your work permit\", fr: \"Téléversez votre permis de travail\" }\n },\n \n // Autre document gouvernemental\n other: {\n document_type: \"other\" as const,\n labels: { en: \"Upload your government document\", fr: \"Téléversez votre document gouvernemental\" }\n }\n};\n*/ "]}
1
+ {"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\n\n// Template JSON basé sur votre exemple\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: {\n en: \"Advanced Verification\",\n fr: \"Vérification Avancée\"\n },\n description: {\n en: \"Extended identity verification flow\",\n fr: \"Processus de vérification d'identité étendu\"\n },\n version: \"1.1.0\",\n components: [\n {\n id: 5,\n type: \"location\" as const,\n order: 1,\n labels: {\n en: \"Enable your location\",\n fr: \"Activez votre localisation\"\n },\n instructions: {\n en: \"We need your GPS location for compliance purposes.\",\n fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\"\n },\n ui: {\n icon: \"location-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" }\n },\n config: {\n accuracy: \"high\",\n required: true\n } as const\n },\n {\n id: 6,\n type: \"country_selection\" as const,\n order: 2,\n labels: {\n en: \"Select your country\",\n fr: \"Sélectionnez votre pays\"\n },\n instructions: {\n en: \"Choose your country of residence.\",\n fr: \"Choisissez votre pays de résidence.\"\n },\n ui: {\n icon: \"country-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Confirm\", fr: \"Confirmer\" }\n },\n config: {\n allowed_countries: [\"CA\", \"FR\", \"CM\", \"US\", \"DE\", \"SN\", \"NG\", \"MA\", \"DZ\",\"CI\", \"KE\",\"GH\"],\n default_country: \"CA\",\n required: true\n } as const\n },\n {\n id: 1,\n type: \"id_card\" as const,\n order: 3,\n templateId: 1,\n labels: {\n front: {\n en: \"Upload front of ID card\",\n fr: \"Téléversez le recto de votre carte d'identité\"\n },\n back: {\n en: \"Upload back of ID card\",\n fr: \"Téléversez le verso de votre carte d'identité\"\n },\n },\n instructions: {\n front: {\n en: \"Take a clear photo of the front of your ID.\",\n fr: \"Prenez une photo nette du recto de votre pièce.\"\n },\n back: {\n en: \"Take a clear photo of the back of your ID.\",\n fr: \"Prenez une photo nette du verso de votre pièce.\"\n },\n },\n ui: {\n front: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n back: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n },\n config: {\n sides: [\"front\", \"back\"],\n allowed_formats: [\"jpg\", \"png\"],\n max_size_mb: 5,\n document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"],\n bbox_configs: {\n drivers_licence: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n passport: {\n xMin: 15,\n yMin: 130,\n xMax: 375,\n yMax: 350,\n borderColor: \"#007AFF\",\n borderWidth: 4,\n cornerRadius: 8\n },\n identity_card: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n health_insurance_card: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n national_id: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#5856D6\",\n borderWidth: 4,\n cornerRadius: 12\n },\n permanent_residence: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n\n\n work_permit: {\n xMin: 20,\n yMin: 140,\n xMax: 370,\n yMax: 340,\n borderColor: \"#2DBD60\",\n borderWidth: 4,\n cornerRadius: 12\n },\n\n }\n } as const\n },\n {\n id: 3,\n type: \"selfie\" as const,\n order: 5,\n templateId: 1,\n labels: {\n en: \"Take selfies from different angles\",\n fr: \"Prenez des selfies sous différents angles\"\n },\n instructions: {\n en: \"Take selfies from front, left, and right angles.\",\n fr: \"Prenez des selfies de face, profil gauche et profil droit.\"\n },\n ui: {\n icon: \"selfie-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n config: {\n liveness_check: true,\n max_attempts: 3,\n orientations: [\"center\", \"left\", \"right\"]\n } as const\n },\n // {\n // id: 4,\n // type: \"file_upload\" as const,\n // order: 6,\n // labels: {\n // en: \"Upload proof of address\",\n // fr: \"Téléversez un justificatif de domicile\"\n // },\n // instructions: {\n // en: \"Upload a recent utility bill or bank statement (PDF, JPG, PNG).\",\n // fr: \"Téléversez une facture récente ou un relevé bancaire (PDF, JPG, PNG).\"\n // },\n // ui: {\n // icon: \"file-upload-icon.png\",\n // themeColor: \"#2DBD60\",\n // buttonText: { en: \"Upload\", fr: \"Téléverser\" }\n // },\n // config: {\n // allowed_formats: [\"pdf\", \"jpg\", \"png\"],\n // max_size_mb: 10,\n // required: true\n // } as const\n // },\n\n ]\n};\n\nexport const TemplateKYCExample: React.FC<{ onComplete: (data: VerificationState) => void, onCancel: () => void, onError: (error: string) => void, language: string, API_KEY: string }> = ({ onComplete, onCancel, onError, language, API_KEY }) => {\n const handleComplete = (data: VerificationState) => {\n console.log('KYC Template completed with data:', data);\n onComplete(data);\n // Ici vous pouvez envoyer les données à votre API\n };\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n console.error('KYC Template error:', error);\n // Gérer l'erreur\n };\n\n return (\n <View style={styles.container}>\n <TemplateKYCFlow\n template={advancedVerificationTemplate}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language={language} // ou \"en\" pour l'anglais\n API_KEY={API_KEY}\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n\n// Exemples de différents types de documents gouvernementaux supportés :\n/*\nexport const documentTypeExamples = {\n // Carte d'identité nationale\n idCard: {\n document_type: \"id_card\" as const,\n labels: { en: \"Upload your ID card\", fr: \"Téléversez votre carte d'identité\" }\n },\n \n // Passeport\n passport: {\n document_type: \"passport\" as const,\n labels: { en: \"Upload your passport\", fr: \"Téléversez votre passeport\" }\n },\n \n // Permis de conduire\n driversLicense: {\n document_type: \"drivers_license\" as const,\n labels: { en: \"Upload your driver's license\", fr: \"Téléversez votre permis de conduire\" }\n },\n \n // Permis de séjour\n residencePermit: {\n document_type: \"residence_permit\" as const,\n labels: { en: \"Upload your residence permit\", fr: \"Téléversez votre permis de séjour\" }\n },\n \n // Carte nationale d'identité\n nationalId: {\n document_type: \"national_id\" as const,\n labels: { en: \"Upload your national ID\", fr: \"Téléversez votre carte nationale d'identité\" }\n },\n \n // Carte d'électeur\n voterId: {\n document_type: \"voter_id\" as const,\n labels: { en: \"Upload your voter ID\", fr: \"Téléversez votre carte d'électeur\" }\n },\n \n // Carte militaire\n militaryId: {\n document_type: \"military_id\" as const,\n labels: { en: \"Upload your military ID\", fr: \"Téléversez votre carte militaire\" }\n },\n \n // Carte d'étudiant\n studentId: {\n document_type: \"student_id\" as const,\n labels: { en: \"Upload your student ID\", fr: \"Téléversez votre carte d'étudiant\" }\n },\n \n // Permis de travail\n workPermit: {\n document_type: \"work_permit\" as const,\n labels: { en: \"Upload your work permit\", fr: \"Téléversez votre permis de travail\" }\n },\n \n // Autre document gouvernemental\n other: {\n document_type: \"other\" as const,\n labels: { en: \"Upload your government document\", fr: \"Téléversez votre document gouvernemental\" }\n }\n};\n*/ "]}
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
- import { KYCTemplate } from '../types/KYC.types';
2
+ import { KYCTemplate, VerificationState } from '../types/KYC.types';
3
3
  interface TemplateKYCFlowProps {
4
4
  template: KYCTemplate;
5
- onComplete?: (data: Record<number, unknown>) => void;
5
+ onComplete?: (data: VerificationState) => void;
6
6
  onError?: (error: string) => void;
7
7
  language?: string;
8
8
  onCancel?: () => void;
9
+ API_KEY?: string;
9
10
  }
10
11
  export declare const TemplateKYCFlow: React.FC<TemplateKYCFlowProps>;
11
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCFlowRefactored.d.ts","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYjD,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiB1D,CAAC"}
1
+ {"version":3,"file":"TemplateKYCFlowRefactored.d.ts","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAYpE,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoB1D,CAAC"}
@@ -10,8 +10,8 @@ import { CountrySelectionTemplate } from './KYCElements/CountrySelectionTemplate
10
10
  import { InitializationStep } from './KYCElements/InitializationStep';
11
11
  import { ReviewSubmitTemplate } from './KYCElements/ReviewSubmitTemplate';
12
12
  import { VerificationProgressTemplate } from './KYCElements/VerificationProgressTemplate';
13
- export const TemplateKYCFlow = ({ template, onComplete, onError, language = 'fr', onCancel, }) => {
14
- return (<TemplateKYCFlowProvider template={template} onComplete={onComplete} onError={onError} initialLanguage={language}>
13
+ export const TemplateKYCFlow = ({ template, onComplete, onError, language = 'fr', onCancel, API_KEY, }) => {
14
+ return (<TemplateKYCFlowProvider template={template} onComplete={onComplete} onError={onError} onCancel={onCancel} initialLanguage={language} apiKey={API_KEY}>
15
15
  <TemplateKYCFlowContent onCancel={onCancel}/>
16
16
  </TemplateKYCFlowProvider>);
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions } from 'react-native';\nimport { KYCTemplate } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { IDCardCapture } from './KYCElements/IDCardCapture';\nimport { SelfieCaptureTemplate } from './KYCElements/SelfieCaptureTemplate';\nimport { FileUploadTemplate } from './KYCElements/FileUploadTemplate';\nimport { LocationCaptureTemplate } from './KYCElements/LocationCaptureTemplate';\nimport { CountrySelectionTemplate } from './KYCElements/CountrySelectionTemplate';\nimport { InitializationStep } from './KYCElements/InitializationStep';\nimport { ReviewSubmitTemplate } from './KYCElements/ReviewSubmitTemplate';\nimport { VerificationProgressTemplate } from './KYCElements/VerificationProgressTemplate';\n\ninterface TemplateKYCFlowProps {\n template: KYCTemplate;\n onComplete?: (data: Record<number, unknown>) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n}) => {\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={onComplete}\n onError={onError}\n initialLanguage={language}\n >\n <TemplateKYCFlowContent onCancel={onCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const {\n state,\n actions,\n currentComponent,\n progress,\n } = useTemplateKYCFlowContext();\n\n const { t } = useI18n();\n\n const updateComponentData = (componentId: number, data: unknown) => {\n actions.updateComponentData(componentId, data);\n };\n\n if (!currentComponent) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>{t('errors.unknownError')}</Text>\n </View>\n );\n }\n\n // Rendu du composant actuel\n const renderCurrentComponent = () => {\n const commonProps = {\n component: currentComponent,\n value: state.componentData[currentComponent.id],\n onValueChange: (data: unknown) => updateComponentData(currentComponent.id, data),\n error: state.errors[currentComponent.id],\n language: state.currentLanguage,\n };\n\n if (!state.session.isInitialized) {\n return <InitializationStep session={state.session} />\n }\n\n switch (currentComponent.type) {\n case 'id_card':\n return <IDCardCapture {...commonProps} />;\n\n case 'selfie':\n return <SelfieCaptureTemplate {...commonProps} />;\n\n case 'file_upload':\n return <FileUploadTemplate {...commonProps} />;\n\n case 'location':\n return <LocationCaptureTemplate {...commonProps} />;\n\n case 'country_selection':\n return <CountrySelectionTemplate {...commonProps} />;\n\n case 'review_submit':\n return <ReviewSubmitTemplate {...commonProps} />;\n\n case 'verification_progress':\n return <VerificationProgressTemplate {...commonProps} />;\n\n default:\n return (\n <View style={styles.unsupportedContainer}>\n <Text style={styles.unsupportedText}>\n {t('errors.unknownError')}: {currentComponent.type}\n </Text>\n </View>\n );\n }\n };\n\n return (\n <View style={{ flex: 1 }}>\n {state.isProcessing && (\n <View style={styles.processingContainer}>\n <Text style={styles.processingText}>{t('common.loading')}</Text>\n <ActivityIndicator size=\"large\" color=\"#fff\" />\n </View>\n )}\n <SafeAreaView style={styles.container}>\n {/* Header avec informations sur l'étape */}\n\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', { current: state.currentComponentIndex + 1, total: state.template.components.length })}\n </Text>\n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View\n style={[\n styles.progressFill,\n { width: `${progress}%` }\n ]}\n />\n </View>\n\n </View>\n\n <View style={{ position: 'absolute', right: 12, top: 12 }}>\n <TouchableOpacity onPress={onCancel} disabled={!onCancel} style={{ opacity: onCancel ? 1 : 0.5 }}>\n <Text style={{ fontSize: 20, fontWeight: 'bold', color: '#333' }}>{`X`}</Text>\n </TouchableOpacity>\n </View>\n </View>\n ) : null}\n\n {/* Contenu principal */}\n <View style={styles.content}>\n {renderCurrentComponent()}\n </View>\n </SafeAreaView>\n </View>\n\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#f5f5f5',\n\n },\n header: {\n backgroundColor: 'white',\n paddingVertical: 20,\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#e0e0e0',\n marginHorizontal: 12,\n marginTop: 12,\n // shadow\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 1.84,\n elevation: 5,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 8,\n },\n description: {\n fontSize: 16,\n color: '#666',\n marginBottom: 20,\n },\n progressContainer: {\n // marginBottom: 20,\n },\n progressBar: {\n height: 8,\n backgroundColor: '#e0e0e0',\n borderRadius: 4,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n backgroundColor: '#2DBD60',\n borderRadius: 4,\n },\n progressText: {\n fontSize: 14,\n color: 'black',\n fontWeight: '600',\n textAlign: 'left',\n marginBottom: 8,\n },\n stepInfo: {\n backgroundColor: '#f8f9fa',\n padding: 16,\n borderRadius: 8,\n borderLeftWidth: 4,\n borderLeftColor: '#2DBD60',\n },\n stepTitle: {\n fontSize: 18,\n fontWeight: '600',\n color: '#333',\n marginBottom: 8,\n },\n stepDescription: {\n fontSize: 14,\n color: '#666',\n lineHeight: 20,\n },\n content: {\n flex: 1,\n // justifyContent: 'center',\n alignItems: 'center',\n // paddingTop: Dimensions.get('window').height > 760 ? 12 : 0,\n },\n navigation: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 20,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n },\n navButton: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n borderRadius: 8,\n minWidth: 100,\n alignItems: 'center',\n },\n primaryButton: {\n backgroundColor: '#2DBD60',\n },\n navButtonText: {\n fontSize: 16,\n fontWeight: '600',\n color: 'white',\n },\n errorText: {\n color: '#dc2626',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n unsupportedContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n unsupportedText: {\n fontSize: 16,\n color: '#666',\n textAlign: 'center',\n },\n processingContainer: {\n position: 'absolute',\n flex: 1,\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n processingText: {\n fontSize: 16,\n color: '#fff',\n textAlign: 'center',\n fontWeight: 'bold',\n marginBottom: 10,\n },\n}); "]}
1
+ {"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions } from 'react-native';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { IDCardCapture } from './KYCElements/IDCardCapture';\nimport { SelfieCaptureTemplate } from './KYCElements/SelfieCaptureTemplate';\nimport { FileUploadTemplate } from './KYCElements/FileUploadTemplate';\nimport { LocationCaptureTemplate } from './KYCElements/LocationCaptureTemplate';\nimport { CountrySelectionTemplate } from './KYCElements/CountrySelectionTemplate';\nimport { InitializationStep } from './KYCElements/InitializationStep';\nimport { ReviewSubmitTemplate } from './KYCElements/ReviewSubmitTemplate';\nimport { VerificationProgressTemplate } from './KYCElements/VerificationProgressTemplate';\n\ninterface TemplateKYCFlowProps {\n template: KYCTemplate;\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n API_KEY?: string;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n API_KEY,\n}) => {\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={onComplete}\n onError={onError}\n onCancel={onCancel}\n initialLanguage={language}\n apiKey={API_KEY}\n >\n <TemplateKYCFlowContent onCancel={onCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const {\n state,\n actions,\n currentComponent,\n progress,\n } = useTemplateKYCFlowContext();\n\n const { t } = useI18n();\n\n const updateComponentData = (componentId: number, data: unknown) => {\n actions.updateComponentData(componentId, data);\n };\n\n if (!currentComponent) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>{t('errors.unknownError')}</Text>\n </View>\n );\n }\n\n // Rendu du composant actuel\n const renderCurrentComponent = () => {\n const commonProps = {\n component: currentComponent,\n value: state.componentData[currentComponent.id],\n onValueChange: (data: unknown) => updateComponentData(currentComponent.id, data),\n error: state.errors[currentComponent.id],\n language: state.currentLanguage,\n };\n\n if (!state.session.isInitialized) {\n return <InitializationStep session={state.session} />\n }\n\n switch (currentComponent.type) {\n case 'id_card':\n return <IDCardCapture {...commonProps} />;\n\n case 'selfie':\n return <SelfieCaptureTemplate {...commonProps} />;\n\n case 'file_upload':\n return <FileUploadTemplate {...commonProps} />;\n\n case 'location':\n return <LocationCaptureTemplate {...commonProps} />;\n\n case 'country_selection':\n return <CountrySelectionTemplate {...commonProps} />;\n\n case 'review_submit':\n return <ReviewSubmitTemplate {...commonProps} />;\n\n case 'verification_progress':\n return <VerificationProgressTemplate {...commonProps} />;\n\n default:\n return (\n <View style={styles.unsupportedContainer}>\n <Text style={styles.unsupportedText}>\n {t('errors.unknownError')}: {currentComponent.type}\n </Text>\n </View>\n );\n }\n };\n\n return (\n <View style={{ flex: 1 }}>\n {state.isProcessing && (\n <View style={styles.processingContainer}>\n <Text style={styles.processingText}>{t('common.loading')}</Text>\n <ActivityIndicator size=\"large\" color=\"#fff\" />\n </View>\n )}\n <SafeAreaView style={styles.container}>\n {/* Header avec informations sur l'étape */}\n\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', { current: state.currentComponentIndex + 1, total: state.template.components.length })}\n </Text>\n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View\n style={[\n styles.progressFill,\n { width: `${progress}%` }\n ]}\n />\n </View>\n\n </View>\n\n <View style={{ position: 'absolute', right: 12, top: 12 }}>\n <TouchableOpacity onPress={onCancel} disabled={!onCancel} style={{ opacity: onCancel ? 1 : 0.5 }}>\n <Text style={{ fontSize: 20, fontWeight: 'bold', color: '#333' }}>{`X`}</Text>\n </TouchableOpacity>\n </View>\n </View>\n ) : null}\n\n {/* Contenu principal */}\n <View style={styles.content}>\n {renderCurrentComponent()}\n </View>\n </SafeAreaView>\n </View>\n\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#f5f5f5',\n\n },\n header: {\n backgroundColor: 'white',\n paddingVertical: 20,\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#e0e0e0',\n marginHorizontal: 12,\n marginTop: 12,\n // shadow\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 1.84,\n elevation: 5,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 8,\n },\n description: {\n fontSize: 16,\n color: '#666',\n marginBottom: 20,\n },\n progressContainer: {\n // marginBottom: 20,\n },\n progressBar: {\n height: 8,\n backgroundColor: '#e0e0e0',\n borderRadius: 4,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n backgroundColor: '#2DBD60',\n borderRadius: 4,\n },\n progressText: {\n fontSize: 14,\n color: 'black',\n fontWeight: '600',\n textAlign: 'left',\n marginBottom: 8,\n },\n stepInfo: {\n backgroundColor: '#f8f9fa',\n padding: 16,\n borderRadius: 8,\n borderLeftWidth: 4,\n borderLeftColor: '#2DBD60',\n },\n stepTitle: {\n fontSize: 18,\n fontWeight: '600',\n color: '#333',\n marginBottom: 8,\n },\n stepDescription: {\n fontSize: 14,\n color: '#666',\n lineHeight: 20,\n },\n content: {\n flex: 1,\n // justifyContent: 'center',\n alignItems: 'center',\n // paddingTop: Dimensions.get('window').height > 760 ? 12 : 0,\n },\n navigation: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 20,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n },\n navButton: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n borderRadius: 8,\n minWidth: 100,\n alignItems: 'center',\n },\n primaryButton: {\n backgroundColor: '#2DBD60',\n },\n navButtonText: {\n fontSize: 16,\n fontWeight: '600',\n color: 'white',\n },\n errorText: {\n color: '#dc2626',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n unsupportedContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n unsupportedText: {\n fontSize: 16,\n color: '#666',\n textAlign: 'center',\n },\n processingContainer: {\n position: 'absolute',\n flex: 1,\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n processingText: {\n fontSize: 16,\n color: '#fff',\n textAlign: 'center',\n fontWeight: 'bold',\n marginBottom: 10,\n },\n}); "]}
@@ -1,5 +1,5 @@
1
1
  import React, { ReactNode } from 'react';
2
- import { KYCTemplate, TemplateState, TemplateActions, UseTemplateReturn } from '../types/KYC.types';
2
+ import { KYCTemplate, TemplateState, TemplateActions, UseTemplateReturn, VerificationState } from '../types/KYC.types';
3
3
  interface TemplateKYCFlowContextType {
4
4
  state: TemplateState;
5
5
  actions: TemplateActions;
@@ -18,12 +18,14 @@ interface TemplateKYCFlowContextType {
18
18
  interface TemplateKYCFlowProviderProps {
19
19
  children: ReactNode;
20
20
  template: KYCTemplate;
21
- onComplete?: (data: Record<number, any>) => void;
21
+ onComplete?: (data: VerificationState) => void;
22
22
  onError?: (error: string) => void;
23
+ onCancel?: () => void;
23
24
  initialLanguage?: string;
25
+ apiKey?: string;
24
26
  }
25
27
  export declare const TemplateKYCFlowProvider: React.FC<TemplateKYCFlowProviderProps>;
26
28
  export declare const useTemplateKYCFlowContext: () => TemplateKYCFlowContextType;
27
- export declare const useTemplateKYCFlow: (template: KYCTemplate, onComplete?: (data: Record<number, any>) => void, onError?: (error: string) => void, initialLanguage?: string) => UseTemplateReturn;
29
+ export declare const useTemplateKYCFlow: (template: KYCTemplate, onComplete?: (data: VerificationState) => void, onError?: (error: string) => void, onCancel?: () => void, initialLanguage?: string, apiKey?: string) => UseTemplateReturn;
28
30
  export {};
29
31
  //# sourceMappingURL=useTemplateKYCFlow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAa,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAKvH,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACrF,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAKD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAc1E,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAO,0BAM5C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,WAAW,EACrB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,EAChD,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,kBAAiB,MAAa,KAC7B,iBA0iBF,CAAC"}
1
+ {"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAa,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAA6C,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAKlK,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACrF,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAKD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAgB1E,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAO,0BAM5C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,WAAW,EACrB,aAAa,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC9C,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,WAAW,MAAM,IAAI,EACrB,kBAAiB,MAAa,EAC9B,SAAS,MAAM,KACd,iBAgkBF,CAAC"}
@@ -2,8 +2,8 @@ import React, { useState, useCallback, useMemo, createContext, useContext, useEf
2
2
  import kycService, { authentification, truncateFields } from '../modules/api/KYCService';
3
3
  import useI18n from './useI18n';
4
4
  const TemplateKYCFlowContext = createContext(undefined);
5
- export const TemplateKYCFlowProvider = ({ children, template, onComplete, onError, initialLanguage = 'en', }) => {
6
- const hookResult = useTemplateKYCFlow(template, onComplete, onError, initialLanguage);
5
+ export const TemplateKYCFlowProvider = ({ children, template, onComplete, onError, onCancel, initialLanguage = 'en', apiKey, }) => {
6
+ const hookResult = useTemplateKYCFlow(template, onComplete, onError, onCancel, initialLanguage, apiKey);
7
7
  return (<TemplateKYCFlowContext.Provider value={hookResult}>
8
8
  {children}
9
9
  </TemplateKYCFlowContext.Provider>);
@@ -16,7 +16,7 @@ export const useTemplateKYCFlowContext = () => {
16
16
  }
17
17
  return context;
18
18
  };
19
- export const useTemplateKYCFlow = (template, onComplete, onError, initialLanguage = 'en') => {
19
+ export const useTemplateKYCFlow = (template, onComplete, onError, onCancel, initialLanguage = 'en', apiKey) => {
20
20
  const { setLocale } = useI18n();
21
21
  useEffect(() => {
22
22
  setLocale(initialLanguage);
@@ -25,6 +25,71 @@ export const useTemplateKYCFlow = (template, onComplete, onError, initialLanguag
25
25
  const isUiOnlyStep = useCallback((type) => {
26
26
  return type === 'verification_progress';
27
27
  }, []);
28
+ const ensureReviewSubmitStep = useCallback((tpl) => {
29
+ const hasReview = tpl.components.some(c => c.type === 'review_submit');
30
+ if (hasReview)
31
+ return tpl;
32
+ const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);
33
+ const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);
34
+ const reviewComponent = {
35
+ id: lastId + 1,
36
+ type: 'review_submit',
37
+ order: lastOrder + 1,
38
+ labels: { en: 'Review & Submit', fr: 'Revoir & Soumettre' },
39
+ instructions: { en: 'Confirm and submit', fr: 'Confirmer et soumettre' },
40
+ ui: { buttonText: { en: 'Complete Verification', fr: 'Terminer la vérification' } },
41
+ // @ts-ignore - config unused for review component
42
+ config: {},
43
+ };
44
+ return {
45
+ ...tpl,
46
+ components: [...tpl.components, reviewComponent],
47
+ };
48
+ }, []);
49
+ const ensureVerificationProgressStep = useCallback((tpl) => {
50
+ const hasVerification = tpl.components.some(c => c.type === 'verification_progress');
51
+ if (hasVerification)
52
+ return tpl;
53
+ const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);
54
+ const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);
55
+ const verificationComponent = {
56
+ id: lastId + 2,
57
+ type: 'verification_progress',
58
+ order: lastOrder + 2,
59
+ labels: { en: 'Verification', fr: 'Vérification' },
60
+ instructions: { en: 'We\'re reviewing your documents', fr: 'Nous analysons vos documents' },
61
+ ui: { buttonText: { en: '', fr: '' } },
62
+ // @ts-ignore - config unused for progress component
63
+ config: {},
64
+ };
65
+ return {
66
+ ...tpl,
67
+ components: [...tpl.components, verificationComponent],
68
+ };
69
+ }, []);
70
+ const templateWithReview = useMemo(() => ensureReviewSubmitStep(template), [template, ensureReviewSubmitStep]);
71
+ const templateWithReviewAndVerification = useMemo(() => ensureVerificationProgressStep(templateWithReview), [templateWithReview, ensureVerificationProgressStep]);
72
+ // État du flux
73
+ const [state, setState] = useState({
74
+ template: templateWithReviewAndVerification,
75
+ currentComponentIndex: 0,
76
+ completedComponents: [],
77
+ componentData: {},
78
+ errors: {},
79
+ isProcessing: false,
80
+ currentLanguage: initialLanguage,
81
+ showCustomStepper: true,
82
+ session: {
83
+ session_id: '',
84
+ token: '',
85
+ isInitialized: false,
86
+ isProcessing: false,
87
+ error: null,
88
+ },
89
+ verification: {
90
+ status: 'idle',
91
+ },
92
+ });
28
93
  const mapComponentTypeToAction = useCallback((type) => {
29
94
  switch (type) {
30
95
  case 'id_card':
@@ -86,86 +151,26 @@ export const useTemplateKYCFlow = (template, onComplete, onError, initialLanguag
86
151
  };
87
152
  }
88
153
  if (action === 'selfie_capture') {
89
- const metatada = {};
154
+ const documents = {};
90
155
  if (rawData && typeof rawData === 'object') {
91
156
  Object.keys(rawData).forEach((key) => {
92
- metatada[key] = rawData[key];
157
+ documents[key] = rawData[key];
93
158
  });
94
159
  }
95
- return { ...base, metatada };
160
+ const idCardID = Object.keys(state.componentData).find((c) => c === "1");
161
+ if (idCardID) {
162
+ const _idCardData = state.componentData[idCardID];
163
+ return { ...base, documents, country: _idCardData?.country || '', documentType: _idCardData?.documentType || 'identity_card' };
164
+ }
165
+ // return { ...base, documents };
96
166
  }
97
167
  if (action === 'location_permission') {
98
168
  return { ...base, ...({ metadata: rawData || {} }), ...({ permissionGranted: true, }) };
99
169
  }
100
170
  // Default: wrap as metadata
101
171
  return { ...base, metadata: { ...(rawData || {}) } };
102
- }, []);
172
+ }, [state.componentData]);
103
173
  // Ensure the template contains a final review step
104
- const ensureReviewSubmitStep = useCallback((tpl) => {
105
- const hasReview = tpl.components.some(c => c.type === 'review_submit');
106
- if (hasReview)
107
- return tpl;
108
- const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);
109
- const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);
110
- const reviewComponent = {
111
- id: lastId + 1,
112
- type: 'review_submit',
113
- order: lastOrder + 1,
114
- labels: { en: 'Review & Submit', fr: 'Revoir & Soumettre' },
115
- instructions: { en: 'Confirm and submit', fr: 'Confirmer et soumettre' },
116
- ui: { buttonText: { en: 'Complete Verification', fr: 'Terminer la vérification' } },
117
- // @ts-ignore - config unused for review component
118
- config: {},
119
- };
120
- return {
121
- ...tpl,
122
- components: [...tpl.components, reviewComponent],
123
- };
124
- }, []);
125
- const ensureVerificationProgressStep = useCallback((tpl) => {
126
- const hasVerification = tpl.components.some(c => c.type === 'verification_progress');
127
- if (hasVerification)
128
- return tpl;
129
- const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);
130
- const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);
131
- const verificationComponent = {
132
- id: lastId + 2,
133
- type: 'verification_progress',
134
- order: lastOrder + 2,
135
- labels: { en: 'Verification', fr: 'Vérification' },
136
- instructions: { en: 'We\'re reviewing your documents', fr: 'Nous analysons vos documents' },
137
- ui: { buttonText: { en: '', fr: '' } },
138
- // @ts-ignore - config unused for progress component
139
- config: {},
140
- };
141
- return {
142
- ...tpl,
143
- components: [...tpl.components, verificationComponent],
144
- };
145
- }, []);
146
- const templateWithReview = useMemo(() => ensureReviewSubmitStep(template), [template, ensureReviewSubmitStep]);
147
- const templateWithReviewAndVerification = useMemo(() => ensureVerificationProgressStep(templateWithReview), [templateWithReview, ensureVerificationProgressStep]);
148
- // État du flux
149
- const [state, setState] = useState({
150
- template: templateWithReviewAndVerification,
151
- currentComponentIndex: 0,
152
- completedComponents: [],
153
- componentData: {},
154
- errors: {},
155
- isProcessing: false,
156
- currentLanguage: initialLanguage,
157
- showCustomStepper: true,
158
- session: {
159
- session_id: '',
160
- token: '',
161
- isInitialized: false,
162
- isProcessing: false,
163
- error: null,
164
- },
165
- verification: {
166
- status: 'idle',
167
- },
168
- });
169
174
  // Composant actuel
170
175
  const currentComponent = useMemo(() => {
171
176
  return state.template.components[state.currentComponentIndex] || null;
@@ -447,6 +452,16 @@ export const useTemplateKYCFlow = (template, onComplete, onError, initialLanguag
447
452
  validateComponent: useCallback((componentId) => {
448
453
  return validateComponent(componentId);
449
454
  }, [validateComponent]),
455
+ // complet verification
456
+ submitVerification: useCallback(async () => {
457
+ setState(prev => ({ ...prev, isProcessing: true }));
458
+ try {
459
+ onComplete?.(state.verification);
460
+ }
461
+ catch (error) {
462
+ setState(prev => ({ ...prev, isProcessing: false }));
463
+ }
464
+ }, [state.session.session_id, state.verification, onComplete]),
450
465
  // Soumettre le template complet
451
466
  submitTemplate: useCallback(async () => {
452
467
  // Allow submission when on the review step and all previous steps are valid
@@ -464,14 +479,14 @@ export const useTemplateKYCFlow = (template, onComplete, onError, initialLanguag
464
479
  if (!allValid)
465
480
  throw new Error('Certaines étapes ne sont pas complètes');
466
481
  // Appeler le callback de completion
467
- onComplete?.(state.componentData);
482
+ // onComplete?.(state.componentData);
468
483
  setState(prev => ({ ...prev, isProcessing: false }));
469
484
  }
470
485
  catch (error) {
471
486
  setState(prev => ({ ...prev, isProcessing: false }));
472
487
  onError?.(error instanceof Error ? error.message : 'Erreur lors de la soumission');
473
488
  }
474
- }, [state.template.components, state.currentComponentIndex, validateComponent, state.componentData, onComplete, onError]),
489
+ }, [state.template.components, state.verification, state.currentComponentIndex, validateComponent, state.componentData, onComplete, onError]),
475
490
  // Réinitialiser le template
476
491
  resetTemplate: useCallback(() => {
477
492
  setState(prev => ({