{"_id":"@ayasofyazilim/kyc","_rev":"3-df26619907de132b8f9c607141a46152","name":"@ayasofyazilim/kyc","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@ayasofyazilim/kyc","version":"1.0.0","keywords":["kyc","know-your-customer","identity-verification","document-scanning","liveness-detection","mrz","passport","id-card","aws-amplify","react","typescript"],"author":{"name":"Ayasofyazilim"},"license":"ISC","_id":"@ayasofyazilim/kyc@1.0.0","maintainers":[{"name":"ayasofyazilim-main","email":"info@ayasofyazilim.com"},{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"}],"homepage":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/tree/main/packages/kyc#readme","bugs":{"url":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/issues"},"dist":{"shasum":"a7c6516eba078677ad29dc5ea9d1d840ab2d4278","tarball":"https://registry.npmjs.org/@ayasofyazilim/kyc/-/kyc-1.0.0.tgz","fileCount":10,"integrity":"sha512-zj41ZhX+X5Mnr+HRleNa42LyS8+c0iqAVRre3jF6U8bvWFwBtK91qLUJjFWCxJ4oL2zDLOqg8zGujwDV6PCHmQ==","signatures":[{"sig":"MEUCIB7kb53I9KRn7QsZTr6Att4cM3RApMK3e75T5me3JS1IAiEA7fjR43wr+plu42/8VBWbhuMrRGZCrwsYNnSp2oIPTYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1219363},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles.css":"./dist/styles.css"},"scripts":{"saas":"node ./index.mjs -u \"https://dev-api.unirefund.com\"","test":"echo \"Error: no test specified\" && exit 1","build":"pnpm run build:js && pnpm run build:css","build:js":"tsup src/index.ts --format cjs,esm --dts --external react --external react-dom","build:css":"postcss styles.css -o dist/styles.css --minify","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"},"repository":{"url":"git+https://github.com/ayasofyazilim-clomerce/unirefund-ssr.git","type":"git","directory":"packages/kyc"},"_npmVersion":"10.9.3","description":"KYC (Know Your Customer) component library with document scanning and liveness detection","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"clsx":"^2.1.1","postcss":"^8.5.6","radix-ui":"^1.4.3","commander":"^13.0.0","opencv-ts":"^1.3.6","aws-amplify":"^6.16.0","tailwindcss":"^4.1.17","lucide-react":"^0.556.0","tailwind-merge":"^3.4.0","tw-animate-css":"^1.4.0","react-camera-pro":"^1.4.0","@stepperize/react":"^5.1.9","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","@tailwindcss/postcss":"^4.1.17","@radix-ui/react-label":"^2.1.8","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-radio-group":"^1.3.8","@ayasofyazilim/sdk_generator":"^0.0.13","@aws-amplify/ui-react-liveness":"^3.4.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/node":"^24.10.2","postcss-cli":"^11.0.1","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/kyc_1.0.0_1770983955324_0.3995844199221805","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ayasofyazilim/kyc","version":"1.0.1","keywords":["kyc","know-your-customer","identity-verification","document-scanning","liveness-detection","mrz","passport","id-card","aws-amplify","react","typescript"],"author":{"name":"Ayasofyazilim"},"license":"ISC","_id":"@ayasofyazilim/kyc@1.0.1","maintainers":[{"name":"ayasofyazilim-main","email":"info@ayasofyazilim.com"},{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"}],"homepage":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/tree/main/packages/kyc#readme","bugs":{"url":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/issues"},"dist":{"shasum":"9bd09e91f9489a990d30b5ae97a4ff04f67f4daa","tarball":"https://registry.npmjs.org/@ayasofyazilim/kyc/-/kyc-1.0.1.tgz","fileCount":10,"integrity":"sha512-DnfuvGexWCU08yJNvjqFwp2JPWFtWLKZXAINSQvHKhEbNnCLzukDKvDomrZvOqrRFQmGfSxNEm1RC1LoSmUO8A==","signatures":[{"sig":"MEUCIQD4pUGuBj6WFcK0gTBc8DltMvUNpehY0Ur1Rk7hQiR87gIgZdqYphYHa8n+5L0Ie1D7dR6dqGwLwcAOB9wPO2BH5O4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1225103},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles.css":"./dist/styles.css"},"gitHead":"efe08a8e33f407426d09001bc4cea5eb0d2bbd27","scripts":{"saas":"node ./index.mjs -u \"https://dev-api.unirefund.com\"","test":"echo \"Error: no test specified\" && exit 1","build":"pnpm run build:js && pnpm run build:css","build:js":"tsup src/index.ts --format cjs,esm --dts --external react --external react-dom","build:css":"postcss styles.css -o dist/styles.css --minify","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"},"repository":{"url":"git+https://github.com/ayasofyazilim-clomerce/unirefund-ssr.git","type":"git","directory":"packages/kyc"},"_npmVersion":"10.9.3","description":"KYC (Know Your Customer) component library with document scanning and liveness detection","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"clsx":"^2.1.1","postcss":"^8.5.6","radix-ui":"^1.4.3","commander":"^13.0.0","opencv-ts":"^1.3.6","aws-amplify":"^6.16.0","tailwindcss":"^4.1.17","lucide-react":"^0.556.0","tailwind-merge":"^3.4.0","tw-animate-css":"^1.4.0","react-camera-pro":"^1.4.0","@stepperize/react":"^5.1.9","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","@tailwindcss/postcss":"^4.1.17","@radix-ui/react-label":"^2.1.8","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-radio-group":"^1.3.8","@ayasofyazilim/sdk_generator":"^0.0.13","@aws-amplify/ui-react-liveness":"^3.4.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/node":"^24.10.2","postcss-cli":"^11.0.1","@types/react":"^19.0.0","@types/react-dom":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/kyc_1.0.1_1771485747164_0.4503269381137913","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ayasofyazilim/kyc","version":"1.0.2","description":"KYC (Know Your Customer) component library with document scanning and liveness detection","keywords":["kyc","know-your-customer","identity-verification","document-scanning","liveness-detection","mrz","passport","id-card","aws-amplify","react","typescript"],"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./styles.css":"./dist/styles.css"},"scripts":{"build:css":"postcss styles.css -o dist/styles.css --minify","build:js":"tsup src/index.ts --format cjs,esm --dts --external react --external react-dom","build":"pnpm run build:js && pnpm run build:css","prepublishOnly":"pnpm run build","test":"echo \"Error: no test specified\" && exit 1","saas":"node ./index.mjs -u \"https://dev-api.unirefund.com\""},"author":{"name":"Ayasofyazilim"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/ayasofyazilim-clomerce/unirefund-ssr.git","directory":"packages/kyc"},"bugs":{"url":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/issues"},"homepage":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/tree/main/packages/kyc#readme","peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"@aws-amplify/ui-react-liveness":"^3.4.7","@ayasofyazilim/sdk_generator":"^0.0.13","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-label":"^2.1.8","@radix-ui/react-progress":"^1.1.8","@radix-ui/react-radio-group":"^1.3.8","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.13","@stepperize/react":"^5.1.9","@tailwindcss/postcss":"^4.1.17","aws-amplify":"^6.16.0","class-variance-authority":"^0.7.1","clsx":"^2.1.1","commander":"^13.0.0","lucide-react":"^0.556.0","opencv-ts":"^1.3.6","postcss":"^8.5.6","radix-ui":"^1.4.3","react-camera-pro":"^1.4.0","tailwind-merge":"^3.4.0","tailwindcss":"^4.1.17","tw-animate-css":"^1.4.0"},"devDependencies":{"@types/node":"^24.10.2","@types/react":"^19.0.0","@types/react-dom":"^19.0.0","postcss-cli":"^11.0.1","tsup":"^8.0.0","typescript":"^5.3.0"},"_id":"@ayasofyazilim/kyc@1.0.2","gitHead":"efe08a8e33f407426d09001bc4cea5eb0d2bbd27","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-2fOdTtkitHpUHIhKUBMc5KPMGeKJKLPxuyOKcpyHOXPaRvVVZ18W9hR9YvL8RmyM3G4ayVOz3pO+frlLqNTbhQ==","shasum":"5593d41bfb362fa20523e22b15e03625bb0b2f88","tarball":"https://registry.npmjs.org/@ayasofyazilim/kyc/-/kyc-1.0.2.tgz","fileCount":10,"unpackedSize":1227475,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEZRJ6QHCPFLhPQipZefwRfxcm6K+x39qJkAOORP9xBuAiBzNSzueAZKlXxk37wOFGuUBc9+K1BBrOkKgnmwx3iIpQ=="}]},"_npmUser":{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"},"directories":{},"maintainers":[{"name":"ayasofyazilim-main","email":"info@ayasofyazilim.com"},{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kyc_1.0.2_1771487580168_0.3177729732459209"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-13T11:59:15.209Z","modified":"2026-02-19T07:53:00.548Z","1.0.0":"2026-02-13T11:59:15.540Z","1.0.1":"2026-02-19T07:22:27.374Z","1.0.2":"2026-02-19T07:53:00.394Z"},"bugs":{"url":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/issues"},"author":{"name":"Ayasofyazilim"},"license":"ISC","homepage":"https://github.com/ayasofyazilim-clomerce/unirefund-ssr/tree/main/packages/kyc#readme","keywords":["kyc","know-your-customer","identity-verification","document-scanning","liveness-detection","mrz","passport","id-card","aws-amplify","react","typescript"],"repository":{"type":"git","url":"git+https://github.com/ayasofyazilim-clomerce/unirefund-ssr.git","directory":"packages/kyc"},"description":"KYC (Know Your Customer) component library with document scanning and liveness detection","maintainers":[{"name":"ayasofyazilim-main","email":"info@ayasofyazilim.com"},{"name":"ertugrulcan-ays","email":"ertugrul.bakas@ayasofyazilim.com"}],"readme":"# @ayasofyazilim/kyc\r\n\r\nKYC (Know Your Customer) component library with document scanning, liveness detection, and full internationalization support.\r\n\r\n## Features\r\n\r\n- 📄 **Document Scanning**: Support for ID cards and passports with MRZ extraction\r\n- 👤 **Liveness Detection**: AWS Amplify-powered face liveness verification\r\n- 🌍 **Internationalization**: Full i18n support with customizable language data\r\n- 📱 **Camera Permission Handling**: Browser-specific instructions for camera access\r\n- 🎨 **Customizable UI**: Tailwind CSS-based styling with theme support\r\n- ✅ **Type-Safe**: Full TypeScript support with comprehensive type definitions\r\n\r\n## Installation\r\n\r\n```bash\r\npnpm add @ayasofyazilim/kyc\r\n```\r\n\r\nor\r\n\r\n```bash\r\nnpm install @ayasofyazilim/kyc\r\n```\r\n\r\n**Note**: This package includes AWS Amplify as a dependency, so you don't need to install `aws-amplify` separately.\r\n\r\n## Quick Start\r\n\r\n```tsx\r\nimport { KYC, defaultEnglishLanguageData } from \"@ayasofyazilim/kyc\";\r\nimport \"@ayasofyazilim/kyc/dist/styles.css\";\r\n\r\nfunction App() {\r\n  return (\r\n    <KYC\r\n      config={{\r\n        isMRZRequired: true,\r\n        isLivenessRequired: false,\r\n        isNFCRequired: false,\r\n        source: \"SSR\",\r\n        languageData: defaultEnglishLanguageData,\r\n      }}\r\n      onComplete={(data) => console.log(\"KYC Complete:\", data)}\r\n      onError={(error) => console.error(\"KYC Error:\", error)}\r\n      onDecline={() => console.log(\"User declined KYC\")}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n## Configuration\r\n\r\nAll configuration is passed through the `config` prop. No environment variables are required for this package.\r\n\r\n### KYC Config Type\r\n\r\n```typescript\r\ntype KYCConfig = {\r\n  isMRZRequired: boolean; // Require MRZ data extraction\r\n  isNFCRequired: boolean; // Require NFC chip reading (not yet implemented)\r\n  isLivenessRequired: boolean; // Require face liveness check\r\n  source: \"SSR\"; // Source identifier\r\n  languageData: KYCLanguageData; // Language/translation data (REQUIRED)\r\n};\r\n```\r\n\r\n## Internationalization (i18n)\r\n\r\nThe KYC component supports full internationalization through the `languageData` prop.\r\n\r\n### Using Default English\r\n\r\n```tsx\r\nimport { KYC, defaultEnglishLanguageData } from \"@ayasofyazilim/kyc\";\r\n\r\n<KYC\r\n  config={{\r\n    // ... other config\r\n    languageData: defaultEnglishLanguageData,\r\n  }}\r\n  // ... handlers\r\n/>;\r\n```\r\n\r\n### Creating Custom Translations\r\n\r\n```tsx\r\nimport { type KYCLanguageData } from \"@ayasofyazilim/kyc\";\r\n\r\nconst turkishLanguageData: KYCLanguageData = {\r\n  getStarted: {\r\n    title: \"Kimliğinizi doğrulayın\",\r\n    photoIdInfo: \"Fotoğraflı Kimlik\",\r\n    // ... rest of translation\r\n  },\r\n  getReady: {\r\n    title: \"Kimliğinizi taramaya hazırlanın\",\r\n    // ...\r\n  },\r\n  // ... complete all required sections\r\n};\r\n\r\n<KYC\r\n  config={{\r\n    // ... other config\r\n    languageData: turkishLanguageData,\r\n  }}\r\n  // ... handlers\r\n/>;\r\n```\r\n\r\nFor a complete language data structure and examples, see [LANGUAGE_DATA_UPDATE.md](./LANGUAGE_DATA_UPDATE.md) and [USAGE_EXAMPLES.tsx](./USAGE_EXAMPLES.tsx).\r\n\r\n## AWS Amplify Setup\r\n\r\nThis package uses AWS Amplify UI React Liveness for face liveness detection. AWS Amplify is included with this package for your convenience - you don't need to install `aws-amplify` separately.\r\n\r\nConfigure Amplify with your AWS credentials in your application's entry point (e.g., `_app.tsx`, `main.tsx`, or `layout.tsx`):\r\n\r\n```tsx\r\nimport { Amplify } from \"@ayasofyazilim/kyc\";\r\n\r\nAmplify.configure({\r\n  Auth: {\r\n    // Amazon Cognito User Pool ID\r\n    userPoolId: \"us-east-1_XXXXXXXXX\",\r\n    // Amazon Cognito User Pool Client ID\r\n    userPoolWebClientId: \"XXXXXXXXXXXXXXXXXXXXXXXXXX\",\r\n    // Amazon Cognito Region\r\n    region: \"us-east-1\",\r\n  },\r\n});\r\n```\r\n\r\n**Important**: Never hardcode AWS credentials in your application. Use AWS IAM roles, Cognito Identity Pools, or environment variables configured securely.\r\n\r\n### KYC Component Configuration\r\n\r\n```tsx\r\n<KYC\r\n  config={{\r\n    gatewayUrl: \"https://your-api.com\",\r\n    isNFCRequired: false,\r\n    source: \"SSR\",\r\n    awsRegion: \"us-east-1\", // Optional: defaults to us-east-1\r\n  }}\r\n  // ... other props\r\n/>\r\n```\r\n\r\n### Basic Example\r\n\r\n```tsx\r\nimport { KYC, Amplify } from \"@ayasofyazilim/kyc\";\r\n\r\n// Configure Amplify in your app's entry point\r\nAmplify.configure({\r\n  Auth: {\r\n    userPoolId: \"us-east-1_XXXXXXXXX\",\r\n    userPoolWebClientId: \"XXXXXXXXXXXXXXXXXXXXXXXXXX\",\r\n    region: \"us-east-1\",\r\n  },\r\n});\r\n\r\nexport default function Page() {\r\n  return (\r\n    <KYC\r\n      config={{\r\n        gatewayUrl: \"https://your-api.com\",\r\n        isNFCRequired: false,\r\n        source: \"SSR\",\r\n      }}\r\n      onSuccess={(data) => {\r\n        console.log(\"KYC completed successfully\", data);\r\n        // data.images - Contains document images (front/back)\r\n        // data.mrzData - Contains MRZ extracted data\r\n        // data.livenessData - Contains liveness detection results\r\n      }}\r\n      onError={(reason) => {\r\n        console.error(\"KYC error\", reason);\r\n      }}\r\n      onDecline={() => {\r\n        console.log(\"KYC declined by user\");\r\n      }}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n### With Custom Last Step\r\n\r\n```tsx\r\nexport default function Page() {\r\n  return (\r\n    <KYC\r\n      config={{\r\n        gatewayUrl: \"https://your-api.com\",\r\n        isNFCRequired: false,\r\n        source: \"SSR\",\r\n      }}\r\n      onSuccess={handleSuccess}\r\n      onError={handleError}\r\n      onDecline={handleDecline}\r\n      lastStep={(data) => (\r\n        <div>\r\n          <h2>Custom Completion Screen</h2>\r\n          <p>Your KYC process is complete!</p>\r\n        </div>\r\n      )}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n/>\r\n);\r\n\r\n## Props\r\n\r\n| Prop        | Type                                                | Required | Description                                                       |\r\n| ----------- | --------------------------------------------------- | -------- | ----------------------------------------------------------------- |\r\n| `config`    | `Config`                                            | Yes      | Configuration object with `gatewayUrl`, `isNFCRequired`, `source` |\r\n| `onSuccess` | `(data: KYCSessionData) => void`                    | Yes      | Callback function called when KYC is completed successfully       |\r\n| `onError`   | `(reason: string) => void`                          | Yes      | Callback function called when an error occurs                     |\r\n| `onDecline` | `() => void`                                        | Yes      | Callback function called when the user declines the KYC process   |\r\n| `lastStep`  | `(data: KYCSessionData \\| null) => React.ReactNode` | No       | Optional custom component to render as the last step              |\r\n\r\n## Types\r\n\r\n### KYCSessionData\r\n\r\n```typescript\r\ninterface KYCSessionData {\r\n  images: DocumentData;\r\n  mrzData: MRZData | null;\r\n  livenessData: LivenessResult | null;\r\n}\r\n```\r\n\r\n## License\r\n\r\nISC\r\n","readmeFilename":"README.md"}