{"_id":"@eka-care/abdm-dashboard-stg","_rev":"9-f92fa4a7f82bd00370e35f19667b6519","name":"@eka-care/abdm-dashboard-stg","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.1","_id":"@eka-care/abdm-dashboard-stg@0.0.1","maintainers":[{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"14b9f1eb93b459272028eb4dcc6b88a275c12f27","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.1.tgz","fileCount":49,"integrity":"sha512-oARJTtDBKk8ZCX/48YKjpvC1dfS6D1nZQsqOWDOFuwj5RVbmnXr2A8/Fhvq/Q7zCIM9/FcHRTpHws6zXVFVkhQ==","signatures":[{"sig":"MEYCIQDwAKRFsnoOr69eV4HtOP/+JaVuqmbpP1zMlGFNIAbDxAIhAOVRycAtRdzN5B8IS0XC50IYrW8Z3YjS4tV65RxrQqY6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1486862},"type":"module","gitHead":"140551d563d81aec584c14a630628bb75afb47b8","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.1_1769083364783_0.2609743070008732","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.2","_id":"@eka-care/abdm-dashboard-stg@0.0.2","maintainers":[{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"ae65b8bcdaa4379339a51f20a6a7c1c1f826e67f","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.2.tgz","fileCount":50,"integrity":"sha512-kGUl+zTeGB+4dKzjFTEUx4pi3rnR2jNhQ/MF22aRXGPdSyb74MdTpg18hOn3Ruk7YkI2+c8xXRqNpTIhq4emcQ==","signatures":[{"sig":"MEUCIQDxA9eI/nW/3MM3HrpINhnwXd+m+xD78mOad19pLtOg8gIgapgDOBXLdtVOPyrAJVd3w93SS3IjnvSCESBtj9AwsIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1488558},"type":"module","gitHead":"debcdf443fba53f24349d761ce9ec4945c8f0947","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.2_1769088755517_0.8528497069835814","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.3","_id":"@eka-care/abdm-dashboard-stg@0.0.3","maintainers":[{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"956ab4644262b9771df3276fb21961c7fdc6e3cb","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.3.tgz","fileCount":9,"integrity":"sha512-fXjG8kU2q7kJ3+zVyiRS8APEfkT4l1W9exAZYDNRzneQ7tXKAgo4c32fp/oOd3RuWwg7NZD+MvwZ+eh13RKHFQ==","signatures":[{"sig":"MEUCIQCquS+RzbNpM6NejkK8MYavfvwY915JsLlTNmAPvHhFhAIgKfztVFBmzF57ozT4wChYLR6dDT2QV53dw50HyErJ76s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3479806},"type":"module","gitHead":"debcdf443fba53f24349d761ce9ec4945c8f0947","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.3_1769152475598_0.4495039906952887","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.4","_id":"@eka-care/abdm-dashboard-stg@0.0.4","maintainers":[{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"48f350563754ea573ccd933447a0392391466e64","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.4.tgz","fileCount":9,"integrity":"sha512-T1TwokDGHwFQFitxWdXVDA45Ow3F8dPYS/nPuJe4tMM+cHR/hRBCMiC0S2BDCY7f3b48ItWTwUKRLB9COv5ayg==","signatures":[{"sig":"MEUCIFbopJlSuweMIn/8OhM2GK9/7gSRJ92JdcSvCU6PW77DAiEA/2u5VnyxlOmFHjqOiLxhTLMuyrq6HAaVyHOpvHSbdio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3479902},"type":"module","gitHead":"6c7541b49f7b3df50ad47b91766e1e39f55dfc1a","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.4_1769161554398_0.3922016814780567","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.5","_id":"@eka-care/abdm-dashboard-stg@0.0.5","maintainers":[{"name":"sachinjaiswal-eka","email":"sachin.jaiswal@eka.care"},{"name":"savitaverma","email":"savita.verma@eka.care"},{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"4c7121a31237be53a3ad10c0dcea824629edb8f7","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.5.tgz","fileCount":6,"integrity":"sha512-M+yliduhnrwyeyC9pY4yH3D3F046LilwwEoeUj+f8eeAMHYk/SfrDKdBOL9fQKEsBRz1YXAAJzyWI2vwVwAVAg==","signatures":[{"sig":"MEQCIAxqXDs4ch9RTx40+otFgEQy2pr0isIc74ChvCJN30YVAiA3EMyg3/x5pcPE5sipaHcPZ4YojAr+Dj4MdIuuWVnv0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4133305},"type":"module","gitHead":"e14a458b1e0b7c0a281679839e3f08ec685a8d0b","scripts":{"dev":"VITE_APP_MODE=DEBUG vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"A React-based embeddable SDK for managing [Ayushman Bharat Digital Mission (ABDM)](https://abdm.gov.in/) workflows at healthcare facilities. Handles HPR/HFR onboarding for new clinics and exposes a full dashboard for ABHA accounts, metrics, automation tas","directories":{},"_nodeVersion":"20.19.5","dependencies":{"antd":"^6.3.1","motion":"^12.35.0","react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.5_1779454388985_0.2241610783320307","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@eka-care/abdm-dashboard-stg","version":"0.0.6","_id":"@eka-care/abdm-dashboard-stg@0.0.6","maintainers":[{"name":"sachinjaiswal-eka","email":"sachin.jaiswal@eka.care"},{"name":"savitaverma","email":"savita.verma@eka.care"},{"name":"shyameka","email":"shyamjith.palakkandy@eka.care"},{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},{"name":"jainkuniya-eka","email":"Vishwesh.Jainkuniya@eka.care"},{"name":"vikalpsahni","email":"vikalp@eka.care"},{"name":"muhammedarshadtk","email":"muhammedarshadtk@eka.care"},{"name":"karthickeka","email":"karthick@eka.care"},{"name":"devops-orbi","email":"devops@eka.care"},{"name":"kai-dev","email":"govind.ganeriwal@eka.care"},{"name":"ekaraghunandan","email":"rags@eka.care"}],"dist":{"shasum":"e19dfcb333bd920e30e95072376be6a4333349fc","tarball":"https://registry.npmjs.org/@eka-care/abdm-dashboard-stg/-/abdm-dashboard-stg-0.0.6.tgz","fileCount":6,"integrity":"sha512-yu7W1pEgEodYSYJbcqL6V3DP7NGOUA0f6vj2rSGe0HX3aO3Yk2mWtV1yT4wQ7WMJzi/3587sgAWElJcgytQ6Ug==","signatures":[{"sig":"MEUCIQCWi05DdFYvVYkelDjfbYUyEqpWp+9emscFKJwQKhNQeAIgUHQih4NJHRpGxMfvsSK3ysg8S8Cl3TgSXXGQkRsPokw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4133732},"type":"module","gitHead":"ec0cd0cbe1bf5b4eb7ec0575993a7244d9d60602","scripts":{"dev":"VITE_APP_MODE=DEBUG vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview"},"_npmUser":{"name":"geethanjali.s","email":"geethanjali.s@eka.care"},"_npmVersion":"10.8.2","description":"A React-based embeddable SDK for managing [Ayushman Bharat Digital Mission (ABDM)](https://abdm.gov.in/) workflows at healthcare facilities. Handles HPR/HFR onboarding for new clinics and exposes a full dashboard for ABHA accounts, metrics, automation tas","directories":{},"_nodeVersion":"20.19.5","dependencies":{"antd":"^6.3.1","motion":"^12.35.0","react-redux":"^9.2.0","react-switch":"^7.1.0","react-qr-code":"^2.0.18","redux-persist":"^6.0.0","@reduxjs/toolkit":"^2.11.1","react-date-picker":"^12.0.1","@eka-care/pagify-sdk":"^1.4.3","@fortawesome/react-fontawesome":"^3.1.1","@fortawesome/fontawesome-svg-core":"^7.1.0","@fortawesome/free-solid-svg-icons":"^7.1.0","@fortawesome/free-regular-svg-icons":"^7.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.1","tailwindcss":"^3.4.19","@types/react":"^19.2.5","autoprefixer":"^10.4.22","@types/react-dom":"^19.2.3","typescript-eslint":"^8.46.4","@vitejs/plugin-react":"^5.1.1","@vitejs/plugin-basic-ssl":"^2.1.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"_npmOperationalInternal":{"tmp":"tmp/abdm-dashboard-stg_0.0.6_1779789375155_0.683322576657502","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-01-22T12:02:44.707Z","modified":"2026-05-29T14:28:53.980Z","0.0.1":"2026-01-22T12:02:44.998Z","0.0.2":"2026-01-22T13:32:35.772Z","0.0.3":"2026-01-23T07:14:35.814Z","0.0.4":"2026-01-23T09:45:54.627Z","0.0.5":"2026-05-22T12:53:09.172Z","0.0.6":"2026-05-26T09:56:15.467Z"},"description":"A React-based embeddable SDK for managing [Ayushman Bharat Digital Mission (ABDM)](https://abdm.gov.in/) workflows at healthcare facilities. Handles HPR/HFR onboarding for new clinics and exposes a full dashboard for ABHA accounts, metrics, automation tas","maintainers":[{"email":"sachin.jaiswal@eka.care","name":"sachinjaiswal-eka"},{"email":"savita.verma@eka.care","name":"savitaverma"},{"email":"shekhar.gupta@eka.care","name":"eka_shekhar"},{"email":"shyamjith.palakkandy@eka.care","name":"shyameka"},{"email":"geethanjali.s@eka.care","name":"geethanjali.s"},{"email":"Vishwesh.Jainkuniya@eka.care","name":"jainkuniya-eka"},{"email":"vikalp@eka.care","name":"vikalpsahni"},{"email":"muhammedarshadtk@eka.care","name":"muhammedarshadtk"},{"email":"karthick@eka.care","name":"karthickeka"},{"email":"devops@eka.care","name":"devops-orbi"},{"email":"govind.ganeriwal@eka.care","name":"kai-dev"},{"email":"rags@eka.care","name":"ekaraghunandan"}],"readme":"# ABDM Dashboard\n\nA React-based embeddable SDK for managing [Ayushman Bharat Digital Mission (ABDM)](https://abdm.gov.in/) workflows at healthcare facilities. Handles HPR/HFR onboarding for new clinics and exposes a full dashboard for ABHA accounts, metrics, automation tasks, and multilingual appointment posters.\n\n---\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Onboarding Flow](#onboarding-flow)\n- [Integration](#integration)\n  - [Mount](#mount)\n  - [Unmount](#unmount)\n  - [Mount Options](#mount-options)\n- [Development](#development)\n  - [Local Testing](#local-testing)\n- [Project Structure](#project-structure)\n- [API Reference](#api-reference)\n\n---\n\n## Overview\n\nABDM is India's national digital health initiative. This SDK embeds into any healthcare management system and handles two scenarios:\n\n- **New clinic (no HFR ID):** Shows the HPR/HFR onboarding wizard. After success, either transitions to the dashboard or calls `onAbdmOnboardSuccess` and unmounts (controlled by `showDashboardOnSuccess`).\n- **Returning clinic (has HFR ID):** Dashboard loads directly.\n\n---\n\n## Features\n\n| Feature | Description |\n|---|---|\n| **HPR/HFR Onboarding** | Step-by-step wizard to register a doctor (HPR) and clinic (HFR) with ABDM via Aadhaar OTP |\n| **Metrics Dashboard** | Track ABHA adoption, KYC completion, consent rates, and earnings |\n| **Automation** | Toggle automated messaging for KYC, ABHA creation, and consent requests |\n| **QR Code Posters** | Download appointment QR code posters in 9 regional languages |\n| **Earnings Tracking** | Monitor ABDM participation incentives for the clinic |\n\n---\n\n## Onboarding Flow\n\nTriggered when the landing API returns no `hip_id` for the clinic. The screen stack progresses through:\n\n```\nCREATE\n  └─ Doctor selects clinic (if >1 provided) and doctor profile\n  └─ Enters Aadhaar number → triggers OTP\nVERIFY_OTP\n  └─ Verify Aadhaar OTP + confirm mobile number\nSETUP_HPR\n  └─ Choose or create HPR ID, set email, password, practice type, pincode\nHPR_SUCCESSFUL\n  └─ HPR ID confirmed\nVERIFY_CLINIC\n  └─ Link an existing HFR or register a new one (photos, address, facility type)\nHFR_SUCCESSFUL\n  └─ Onboarding complete\n      ├─ showDashboardOnSuccess: true  → navigate to dashboard\n      └─ showDashboardOnSuccess: false → fire onAbdmOnboardSuccess and unmount\n```\n\nThe left illustration panel is hidden on mobile and can also be suppressed via `hideEkaSidePanel: true`.\n\n---\n\n## Integration\n\nThe SDK attaches two functions to `window` after the bundle loads.\n\n### Mount: index.html\nfor dev/stg, change this url https://unpkg.com/@eka-care/abdm-dashboard to https://unpkg.com/@eka-care/abdm-dashboard-stg in below code\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>ABDM Dashboard</title>\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/@eka-care/abdm-dashboard/dist/sdk/abdm/css/abdm.css\" />\n  </head>\n  <body>\n    <div id=\"abdm-root\" style=\"width: 100%; height: 100dvh;\"></div>\n\n    <script src=\"https://unpkg.com/@eka-care/abdm-dashboard/dist/sdk/abdm/js/abdm.js\"></script>\n    <script>\n      window.abdmDashboardMount('abdm-root', {\n        clinicId: 'your-clinic-id',\n        clientId: 'ext',\n        accessToken: 'your-auth-token',\n        showDashboardOnSuccess: true,\n        onAbdmMountSuccess: (params) => console.log('Mounted', params),\n        onAbdmDashboardClose: (params) => console.log('Closed', params),\n        onAbdmDashboardError: (params) => console.error('Error', params),\n        onAbdmOnboardSuccess: (params) => console.log('Onboarded', params),\n      });\n    </script>\n  </body>\n</html>\n```\n\n### Unmount\n\n```javascript\nwindow.abdmDashboardUnmount('abdm-root');\n```\n\n### Mount Options\n\n| Option | Type | Required | Description |\n|---|---|---|---|\n| `clinicId` | `string` | Yes* | Single clinic ID. Use when there is only one clinic |\n| `clinics` | `ClinicConfig[]` | Yes* | Clinic list from Hub API. If >1, a selector is shown in onboarding |\n| `doctors` | `DoctorConfig[]` | No | Full doctor list from Hub API, filtered per selected clinic |\n| `getDrList` | `() => Promise<DrProfile[]>` | No | Callback to fetch doctors. Takes precedence over `doctors` |\n| `clientId` | `string` | No | Client identifier. Defaults to `\"doc-web\"` |\n| `accessToken` | `string` | No | Auth token. Also read from `window.Eka.getHeaders()` (Android) or `window.iosHeaders` (iOS) |\n| `hideEkaSidePanel` | `boolean` | No | Hides the left illustration panel during onboarding |\n| `showDashboardOnSuccess` | `boolean` | No | `true` (default) — go to dashboard after HFR success. `false` — fire `onAbdmOnboardSuccess` and unmount |\n| `onAbdmMountSuccess` | `(params) => void` | No | Fired when the SDK mounts successfully |\n| `onAbdmDashboardClose` | `(params) => void` | No | Fired when the dashboard is closed |\n| `onAbdmDashboardError` | `(params) => void` | No | Fired on errors |\n| `onAbdmOnboardSuccess` | `(params) => void` | No | Fired after HPR+HFR onboarding. Receives `facilityId` and `createdHprId` |\n\n*Either `clinicId` or `clinics` must be provided.\n\n---\n\n## Development\n\n### Run locally\n\n```bash\n# PROD\nsudo env \"VITE_APP_ENV=PROD\" yarn dev --scope=abdm --include-dependencies\n\n# DEV\nsudo env yarn dev --scope=abdm --include-dependencies\n```\n\n### Local Testing\n\nWhen `VITE_APP_MODE=DEBUG` is set (done automatically by the `dev` script), `main.tsx` auto-mounts the SDK on load — no host page needed.\n\n**Steps:**\n\n1. Open [src/main.tsx](src/main.tsx) and find the `DEBUG` block at the bottom.\n2. Set `accessToken` to a valid bearer token.\n3. Set `clinicId` to the clinic you want to test.\n4. Run the dev server and open the Vite dev URL in your browser.\n\n```javascript\n// main.tsx — DEBUG block\nmountABDMDashboard(\"abdm-root\", {\n  clientId: \"ext\",\n  clinicId: \"YOUR_CLINIC_ID\",\n  accessToken: \"YOUR_TOKEN wihout Bearer\",\n  showDashboardOnSuccess: true,\n  hideEkaSidePanel: false,\n  onAbdmDashboardClose: (p) => console.log(\"closed\", p),\n  onAbdmMountSuccess: (p) => console.log(\"mounted\", p),\n  onAbdmOnboardSuccess: (p) => console.log(\"onboarded\", p),\n  onAbdmDashboardError: (p) => console.log(\"error\", p),\n});\n```\n\n**Testing scenarios:**\n\n| Scenario | How to trigger |\n|---|---|\n| Onboarding wizard | Use a `clinicId` that has no HFR ID — landing API returns no `hip_id` |\n| Dashboard directly | Use a `clinicId` that already has an HFR ID |\n| Multi-clinic selector | Uncomment the `clinics` + `doctors` arrays in the DEBUG block |\n| Mobile single-panel layout | Set `hideEkaSidePanel: true` |\n| Post-onboarding unmount | Set `showDashboardOnSuccess: false` |\n| OTP auto-read (device only) | Call `window.onOtpAutoRead({ success: true, otp: \"123456\" })` from the native bridge |\n\n## Build\nRun the build commands from repo root\n\n```bash\n# Staging\nsudo yarn build-abdm:stg\n\n# Production\nsudo yarn build-abdm:prod\n```\n\n### Build output\n\n| File | Path |\n|---|---|\n| JS bundle | `dist/sdk/abdm/js/abdm.js` |\n| CSS bundle | `dist/sdk/abdm/css/abdm.css` |\n| Assets | `dist/sdk/abdm/assets/` |\n\n---\n\n## Project Structure\n\n```\nsrc/\n├── main.tsx                        # SDK entry — exports mountABDMDashboard / unmountABDMDashboard\n├── abdm-dashboard.tsx              # Root component (Redux Provider wrapper)\n├── home.tsx                        # Entry view — shows onboarding or dashboard based on HFR status\n├── app/\n│   └── store.ts                    # Redux store\n├── hpr-hfr-onboardding/            # HPR/HFR onboarding wizard\n│   ├── index.tsx                   # Wizard root — side panel + screen stack\n│   ├── screen-switcher/index.tsx   # Screen router (SCREEN_NAMES enum → component)\n│   ├── screens/\n│   │   ├── create.tsx              # Step 1: Aadhaar input, clinic/doctor selection\n│   │   ├── verify-otp.tsx          # Step 2: Aadhaar OTP + mobile verification\n│   │   ├── setup-hpr.tsx           # Step 3: HPR ID setup (email, password, pincode)\n│   │   ├── hpr-successful.tsx      # Step 4: HPR registration confirmed\n│   │   ├── verify-clinic.tsx       # Step 5: HFR creation or linking\n│   │   ├── hfr-successful.tsx      # Step 6: HFR registration confirmed\n│   │   └── loader-screen.tsx       # Full-screen loader between steps\n│   ├── LandingPage/\n│   │   └── Illustration.tsx        # Left side-panel illustration\n│   └── components/                 # Form fields, inputs, stepper, modals, dialogs\n├── components/\n│   ├── abha-metric.tsx             # KPI cards with date filters\n│   ├── abha-workflows.tsx          # Workflow action cards\n│   ├── notification-header.tsx     # Top banner\n│   ├── cards/                      # Metric, workflow, request card components\n│   ├── modal/\n│   │   ├── modal.tsx               # Modal container\n│   │   ├── automateTaks-modal.tsx  # Automation settings\n│   │   └── select-lang-modal.tsx   # Language selector for PDF download\n│   └── loader/                     # Skeleton loaders\n├── features/\n│   ├── api/\n│   │   ├── baseApi.ts              # RTK Query base (ndhm.eka.care / ndhm.dev.eka.care)\n│   │   └── refreshAuth.ts          # 401 token refresh handler\n│   ├── hpr-hfr-apis/               # HPR/HFR onboarding API mutations\n│   │   ├── post-hpr-aadhaar-otp.ts\n│   │   ├── post-hpr-verify-aadhaar-otp.ts\n│   │   ├── post-hpr-mobile-verify.ts\n│   │   ├── post-is-hpr-id-available.ts\n│   │   ├── post-create-hpr.ts\n│   │   ├── get-session-status.ts\n│   │   ├── get-suggest-facilities.ts\n│   │   ├── post-create-hfr.ts\n│   │   └── post-link-hfr.ts\n│   ├── cardApis/cardApi.ts         # Metrics cards API\n│   ├── landingApi/hmisDetailsApi.ts    # Clinic/HMIS details API\n│   ├── tasksApis/                  # Automation settings APIs (get + update)\n│   └── slice/\n│       ├── landingApiSlice.ts      # Dashboard Redux state\n│       └── hprHfrOnboardingSlice.ts# Onboarding wizard Redux state\n├── appointment-token-pdf/          # Multilingual QR poster PDF generation\n│   ├── pdf-page1.tsx\n│   ├── pdf-page2.tsx\n│   └── translations.ts\n├── config/runtime-config.ts        # Runtime config (clientId, accessToken)\n├── types/pagify-sdk.d.ts           # Pagify SDK type definitions\n└── utils/\n    ├── constants.ts\n    └── helpers.ts\n```\n\n---\n\n## API Reference\n\n**Base URL:**\n- Prod: `https://ndhm.eka.care`\n- Dev: `https://ndhm.dev.eka.care`\n\n**Auth headers sent on every request:**\n```\nclient-id: <clientId>\nauth: <accessToken>   (if provided)\n```\n\n### Dashboard APIs\n\n| API | Method | Endpoint | Description |\n|---|---|---|---|\n| Landing | `GET` | `/v2/hmis/{clinicId}/details` | Fetch clinic details, HFR ID, and QR code URL |\n| Metrics Cards | `POST` | `/v2/hmis/metrics/cards/{clinicId}` | Fetch KPI metrics for a date range |\n| Task Config (read) | `GET` | `/v1/hmis/{clinicId}/custom-config` | Get automation task settings |\n| Task Config (update) | `PATCH` | `/v1/hmis/{clinicId}/custom-config` | Update automation task settings |\n\n### HPR/HFR Onboarding APIs\n\n| API | Method | Endpoint | Description |\n|---|---|---|---|\n| Aadhaar OTP | `POST` | `/abdm/nhpr/v1/hpr/aadhaar/otp` | Send OTP to the Aadhaar-linked mobile |\n| Verify Aadhaar OTP | `POST` | `/abdm/nhpr/v1/hpr/aadhaar/verify-otp` | Verify OTP and get transaction ID |\n| Mobile Verify | `POST` | `/abdm/nhpr/v1/hpr/mobile/verify` | Verify mobile number |\n| HPR ID Available | `POST` | `/abdm/nhpr/v1/hpr/hpr-id/availability` | Check if a chosen HPR ID is available |\n| Create HPR | `POST` | `/abdm/nhpr/v1/hpr/aadhaar/create?doctor_oid={oid}` | Create HPR profile for a doctor |\n| NHPR Session Status | `GET` | `/abdm/nhpr/v1/status` | NHPR logged in status  |\n| Suggest Facilities | `GET` | `/abdm/nhpr/v1/hfr/suggest-facilities` | Suggest existing HFR facilities to link |\n| Create HFR | `POST` | `/abdm/nhpr/v1/hfr/onboard?doctor_oid={oid}` | Register a new health facility |\n| Link HFR | `POST` | `/abdm/nhpr/v1/hfr/link` | Link doctor to an existing HFR facility |\n","readmeFilename":"README.md"}