{"_id":"@healthcloudai/hc-rapid-test-ui","_rev":"59-8e4590d62d324dc7a8cda39c4efd7d6b","name":"@healthcloudai/hc-rapid-test-ui","dist-tags":{"latest":"0.17.0"},"versions":{"0.3.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.3.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.3.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"a0b5c03798fb4ded923fa90ab7d2631665ad5e06","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.3.0.tgz","fileCount":32,"integrity":"sha512-4ubVjpbEwv4fsAlbWpGZcH0wMWZWLKIo0+LwpEWhtoOln3YFRuC0HAToPgAXp5QQ08K0T8/xthTzEaxULa5IeA==","signatures":[{"sig":"MEYCIQCFhT90MNDusFz/5QrwEYe9aW46kaIyV9I1TpXHG6mDhwIhAKG4m2AKpEwCS17bC7OzEMegopuD0hQzdgXmZOVRneW/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351856},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"063af971ea3aaea8452af046c6d999bb8d430587","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.3.0_1781270714045_0.10094824420626236","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.3.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.3.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"6e492e5ddda592b5b8189c9f99504106375b2e2d","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.3.1.tgz","fileCount":32,"integrity":"sha512-CbuNtf958DCDpO0NKNxH7v5DcbNMS8Dxby5BtsvNt0kTKTML3irD//EvpO33vg0kBfg/U3N8Yj4m1OiEgLtGcQ==","signatures":[{"sig":"MEQCIDNL54dLH8fPC42fEBQCQOzMqGOT+8NcwjWsZPXZ9I6qAiBmtIx6VTpUzSpshuz75cwncv63m8cyPxLPnehfAod6/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405310},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4ab0836f977663a10b4055f8603e0c1ed654c0af","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.3.1_1781793198133_0.124710849091616","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.3.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.3.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"345e5d1f7ce7a8fb5d62ad360ede84a1a163677b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.3.2.tgz","fileCount":32,"integrity":"sha512-Jj5Mtc4opUx9iK9kp68mq+zmBvkN3aJEjL2XgJWkE+QxFiweSF9AOyJQAezih53PheErGTnCOBODQ5NAk1pJMw==","signatures":[{"sig":"MEYCIQDPXDgAAazjx7kDbfz0R86hY+ZTxs/lz/N94SsjfQ9k/wIhAJ9SXWRQ2tZ9SH7gaPpGHm7AMj8zPlfdkIdOpIGZT0RQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405852},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d7f591ed25c9b5a8d748f88b05bfa5381d67e4fa","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.3.2_1781802782803_0.5713216883584074","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.4.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.4.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"aaa2f834bdac6107072b64360619e867f6c96bda","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.4.0.tgz","fileCount":33,"integrity":"sha512-pi5vdd7hsLTfX2m6+KYSfNgxVq3FVe+wEj+ifoZ5TznWT7WLhox7O3ovtUVN1k8pyv+9G0yYAD3s9JOFyqxSiw==","signatures":[{"sig":"MEQCIFxbNssjZAq57ZQ+TvgwZ0EVUOIN7YzliuF/0XP2nCjcAiBbRLVAs8bWtDm2XEn01z4kHRw4NR30D2n9nXMOeZ7VgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":410446},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"5163e4750fe5ada62304665cc5df1092bc06c7c3","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.4.0_1781804747295_0.7863652357917092","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.5.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.5.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"b449eaad4a2d7cc1a71a207426cd6a37a72f1c82","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.5.0.tgz","fileCount":34,"integrity":"sha512-CwpBU1N2ZYkkrhho3dsNsWf+uCSjXKEBhWsQS89rpVUzpiBc2vfzt6F0f4p6uarbSGteCv+v6Sv7wReYwXdqwg==","signatures":[{"sig":"MEUCIQCMiqypJe2tmjP9fS+ybgE1LpvdhRR9Sf3rN1Nz+mMr6wIgBE2q+mjeUbknNBDU0mlygS+PWx8+3hNWwndjP7jz76A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424698},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e8f93c8209da43d00a7cc53f0bdd9c2c331e77fc","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.5.0_1781854670826_0.5757246860109226","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.5.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.5.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"eadca7498ea44d11709ab8a5d5bb6a6ae4633746","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.5.1.tgz","fileCount":34,"integrity":"sha512-etlfYFG674AELmJ4p06OEiG+r3cgG5O2WklqNGgym5gtt7xEUUrf7EEhe+z1RaLXbR1uoKOTOW4VmBvuMWUtFw==","signatures":[{"sig":"MEUCIQD6Co0FaA89OmiKHdbL+sxbxcB9v6mv97KBZkrsJV+OBAIgV0FyY5KGK1L6dV96pv1bDTsDQ3uRZ9P1xqvgPwuOViQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424037},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8cd5794b24a490f9300bb49d32c078d7bb2150d5","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.5.1_1781858081020_0.01611983165544917","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.6.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.6.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"86a2f72dde6ab4b9e87f8b0ae9c030e0b8a95306","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.6.0.tgz","fileCount":34,"integrity":"sha512-rPrw6FdxJfWdXYyLCbCulQ0Enxz7+d7jTC3FyonOmxk4QtGXiDqDI3JxFC9lFFS8ppBOP/qqpim91PRaWC7O9g==","signatures":[{"sig":"MEQCIGXfpwvP5QNKQZBo7/vxGrRnvh/yDvRgpr/Af6OctdTpAiBtrEmmtwL9FSVhjq5GkAL+a6diJ1twPVoJo01LCjoYmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424019},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2887c62f594684034901f9d8810f261c9b2a6f16","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.6.0_1781864605663_0.0217926138836948","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.7.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.7.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"c2496b5b2574f5d695b96b84c1f1b57e575bd135","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.7.0.tgz","fileCount":34,"integrity":"sha512-lOFi1KOOhRVdRfVZfDKSrGNtBL7flduP6HRbspl9x0OyL4cdmrD5Rfqmeo+jrHAggVC6BZgyIg4lH7cAadOCqQ==","signatures":[{"sig":"MEUCIQCw9vpmKKSrDOoUI6uG+x9sifGPXBRWmea7pG5PAl4IzgIgcxTpAxDHKMhu9xsv8h9WWR+Z2dzXaJVIRrIQYGBBlOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424339},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"58cea3f9ae32516e7010a43cf346f22745ec8193","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.7.0_1781865935937_0.9644221691965598","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.8.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.8.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"687da10c7cbfec1cf09f9e5b50157fe57e76fde1","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.8.0.tgz","fileCount":34,"integrity":"sha512-10ivFbT0oYnTNqTcprgjnRZSszxCmuCocvLQpGfPTPGRJ7oV+S0V+fEd3fTTcXXeksZ8cQtKxuIQI8edDke5zA==","signatures":[{"sig":"MEUCIQCUDzWlssrEJIFqESbjRQJ0FbbpqviTkPLeVyFlvTUA+QIgcBOtRFWDpUHHOp1nbKyyDRpylQNAdJwcCngbeww6mTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428668},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0e8f12b4260f1893dc61189b34c48d5b909499b2","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.8.0_1781872154025_0.9447689608071383","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.8.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.8.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"e3768a708f87d03554ffb2fca6edb761b108fb1f","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.8.1.tgz","fileCount":34,"integrity":"sha512-vBCiYvrorT/3iEVqjFC5lv2jqt/MW3beEIQiAS5qcyrBK/LiDfbZ5k85pJ7c9Pp/xRbHzhDAy9PixuXnPcG3eA==","signatures":[{"sig":"MEYCIQCkOLQo9miLwHVIRav5rW1erM7uhQ0/QTNKR2e1RdOu1wIhAMcQB4IyblAPj1iZZQ51xyW21+RCr3PI9ILjuRa7FXoN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428688},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"d8dde5fdf2eeff0ca70e7d541d38385be485ba26","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.8.1_1781877770451_0.6028734849391015","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"ddc92ddf53a0d4eedb0bf5948097f05ac817d001","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.0.tgz","fileCount":34,"integrity":"sha512-B86JLGHp9W1xideZOqXFDLqRaMo0wSRZgww4nZ5AK+h/dyfe2184ZZELu1ZYa8URIyHb7Z+ovsBBR1EJJjHXaA==","signatures":[{"sig":"MEQCIBoCn9sHgV2ANveGaPxh+NnZdbFMrbagtR/S53lpc75BAiAnbV+xz85ZbuhFPGMpM6CEc8msBlb+vDmWwsalBLZr6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":452501},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8b771f60af06a188860aa013f6551b618a57249c","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"10.8.2","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"20.20.2","react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.0_1781879160343_0.9531517752175223","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":{"name":"Healthcheck Systems Inc"},"license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"f78af11f6dc1be009bc7b00af265b6a1cc2b28a8","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.1.tgz","fileCount":65,"integrity":"sha512-/OAx7JorC+XQOs9ctMtHLo6/rSVXnYTm5m87DjnatSXdvGguFW6lS9bxA7J9AVCkvOGtFgy+F6StHob3PHAnhg==","signatures":[{"sig":"MEQCIB/WFmrRrHt3h5jKTnu1XeM9iR+aRhO5kxWE3egfk7qyAiA44q6Zwn4EIht3q3CoyXCFSdK+XhfXJiPY4Z2H5zdyHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679482},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"gitHead":"6d9ed3049b4c727597f0e5b981e7215b1c7f5425","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"_npmVersion":"11.13.0","description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.1_1782397035768_0.45479963732079076","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"37075ef98eab7054bf4fbd89ebbe3f152a5e4952","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.2.tgz","fileCount":65,"integrity":"sha512-wYFVlcCZGBb7Fg9GZyQRiDyF1n2ARjgmeEnEqfDzhXgk/sEBZTg8uc5FJjaQY6gXMDTsl2Uuqb9CXWIL16nbMw==","signatures":[{"sig":"MEQCIC6/0V+LJpXsEO0377H654bHJgcZ/VvrhK/fEXMf47wwAiBb1KfvGnSPfQnGTSUG5TjLz9ouWXP1gx+Eat4FaEFCSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679368},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.2_1782404965149_0.6859703780242281","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.3","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.3","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"3395666abae68644d4f7831f890da621335b3feb","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.3.tgz","fileCount":65,"integrity":"sha512-Fjt0TVCSw2jeUvhVHiDftvQIM9gzqt+qQeKEuwdrPqo5JZs4VHE0zQxAsmnzH/p3rOslfdn/3eTPm3jG8eNvKQ==","signatures":[{"sig":"MEUCIDfNFA6nk5wPSX4n8dt3ISpzfCKvaD8AmMGp1XvuYfgAAiEAwvIzt3a3y6d5LrCgKr9XBd4AytZv6fbcsS5lt1aEYEI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676158},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.3_1782409981001_0.40523151651286327","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.4","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.4","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"966212bc3888681716df1cee8396cc44cfe43650","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.4.tgz","fileCount":65,"integrity":"sha512-Ezz4Bng6RlfTZm98sma2W9bpeEe9EFZaFUkzTR2HMUVaoEPQ961uIy7QNcXJYr2ierhWJ/mA1pkfp/+ieLpNHw==","signatures":[{"sig":"MEYCIQCTyWXEuXbWKwpP7cFmG6aWOY9CDpHkHR9ikPHIcOdR+wIhAK/r7HMLDQAo43kcvlA+QfxQQ5IXMf/V/qce0cVbP6wz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712964},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.4_1782415720836_0.05050363496973698","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.5","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.5","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"c1d4510723c3f8fd3244a27d1f4df6b6f9e4b5ea","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.5.tgz","fileCount":65,"integrity":"sha512-s+lGDQSONZTRbynb91NR4yrlMPM55mRQw8rvlZIdPuDe+sXBX2Y8tGbT9oh7THebHp6BUCNNyBQUAfrTumXaBQ==","signatures":[{"sig":"MEQCIHWsPaUxi+8zbAGUzYqsyFTumtiAOBPS5rYtqhD/Owf9AiBa3jWhbMboXOuwUVdCpkGWoSYdVy2/5xM0Fe0C7yg2wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":713534},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.5_1782418548539_0.9675672692092956","host":"s3://npm-registry-packages-npm-production"}},"0.9.6":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.6","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.6","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"a7c9c75a9dc34f936f9713f53402d251f6e04370","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.6.tgz","fileCount":65,"integrity":"sha512-JJ6/Qio4yKCY57T/sG6Wu/3PcjPImU36dWwa0waaMFccDyT+PimrUMufTEKPyEIZxEtqymJqjUSb4y+cKSrr0g==","signatures":[{"sig":"MEQCIDSS2BKqjrVJpVmBEnUbI4qjFt5QLRmS38+EOTx9wctCAiArWFzxIkBimFenoPtLDg7WLs4ld53JGMUSJxQO8j2aOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":713540},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.6_1782459201456_0.7282483350745284","host":"s3://npm-registry-packages-npm-production"}},"0.9.7":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.7","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.7","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"0751df226c7766103155225f6ba645c930372896","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.7.tgz","fileCount":65,"integrity":"sha512-GqUoojxB+qyn0+UmOF3kwuo9BRmtUVFnDtOGZElBODqeh1gzT3gdPvY001FRxBMKDcCoxlez1bOpIMV343pNYA==","signatures":[{"sig":"MEYCIQCv5pmNZWjT4EC38Woyrg+ShNHI5+RmsLMXBzkEwOWQxgIhAJzXxt0nXVHZFdkWolWNcJfTjTkszzRN7KrEUvd7CFwU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":715059},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.7_1782466157093_0.2783981441733181","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.9.8","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.9.8","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"1fe970b98aecfe908f6590d4f96642c74ca94501","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.9.8.tgz","fileCount":65,"integrity":"sha512-0W7110m2umOwKE2QYrGOcS8lsK6kur/ZVihlCilN6TIuKON3mDr344VhETOoLFrTNFGiOv+5BSAULxQDo/UiHQ==","signatures":[{"sig":"MEUCIHxKtRnphWC2QxVoopbUGfKeLYHM5B47ZAduGmrbpdQXAiEA7d0i8hXCfqk4IIMicT/rD/b8MLN+LNZm27h0tkHLgUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":715338},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.9.8_1782469570013_0.5942648290550356","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"1a0a760f5a5e71ace3e6a1193578aa6d46ba0f80","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.1.tgz","fileCount":67,"integrity":"sha512-w0tgmYahZcx0MiIlKp7vIcMAdbcVI4dm4aXEzNtvE3wjj+DfIIulrJllf8v3wWtQ8vt/RfH/jP13G5+rzkvXzA==","signatures":[{"sig":"MEUCIB8ZVaqlKJ4BAg7iQHtlAoNfQLoWJyl0llYoOe98d3X8AiEAuxrkv59NMXScQBxEmi/DMIgg3/ecFWfh3wIFE/cHVBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732619},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.1_1782472693624_0.35157693215721597","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"b0361573247f53d1eea6db7b39395b43ab6b70ca","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.2.tgz","fileCount":67,"integrity":"sha512-PQkLHBKYJgEvuu3iSiV77xKo9cU7gk636fooZnNVkUfsVPnHg5lol7QoqadlCsB5OD03wPdHqVbNyiFN1dzCXA==","signatures":[{"sig":"MEYCIQD+oS3zd7po9jQr3x3bsvKbXAnZabx5rAxcwGGGzNkWuAIhAL4GeCdbwgysr2LUQDkr1ZqF5Kwd8y0e6DgdRsYuCate","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":732609},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.2_1782473857077_0.11906303567069276","host":"s3://npm-registry-packages-npm-production"}},"0.10.3":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.3","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.3","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"3935c064bd4c7bb36c34d9df3ac0525ae713e69d","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.3.tgz","fileCount":67,"integrity":"sha512-/VlvXDASTPsT7Xhde0KINcX8x6OfP/Wsd7oLFXjR79hHxFLg431JTz9+4jeyUQQqio76MPZQUTXmngf1ijH/IQ==","signatures":[{"sig":"MEUCIEO4DvfRZCxOawizZTY2K4Z9BAPtTjr1w6zT58yuLGahAiEA/ApDKy8bwDfaWYTJ7+WbaHkVYBLKn89jGWCT1tot748=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":734880},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.3_1782474703534_0.03652199253138555","host":"s3://npm-registry-packages-npm-production"}},"0.10.8":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.8","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.8","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"cae44721f3e54b4fac50b3a69babe120895d0329","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.8.tgz","fileCount":65,"integrity":"sha512-W0pMW6j4yseYE/RfCT5ApOIvgoMsaWBa5+mqs20cEvIho+E094srBNynQa5YU32Z6ANQk6NoKQSaL6Ki6uQ/og==","signatures":[{"sig":"MEYCIQCTjZwRvazJ3Kk9QsNo7hV/QbexIzQcTdteX1qS8z0WpQIhAJHYBFMASfw8v76VOgErxf0HnMVxiMg7J66vF5+X+ceI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":591877},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.8_1782483213287_0.2143489685310398","host":"s3://npm-registry-packages-npm-production"}},"0.10.10":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.10","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.10","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"280fedf46db4af1d690725e20d303d009ddb385e","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.10.tgz","fileCount":65,"integrity":"sha512-AV2Rd4fLeyk+Ui+vr/SqnIv7Ln56RoA0VyHM1Xv0AEOfK9I2UcWGybN6CEuKP3GS+f4VOkabduPVtX7bABNVpg==","signatures":[{"sig":"MEUCIQCasRWQ7aRafTmaOR4l2JKPbPVCBjqKkB0CYRt4o2wDgwIgZQTgm3RAR2Vj7ZFOrwIxdRPl3jopfJntrzu6sXtG/9U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593072},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.10_1782909586776_0.863123200942185","host":"s3://npm-registry-packages-npm-production"}},"0.10.11":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.11","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.11","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"65f9a0fd5aee1a9747432416a0c785a0a6b483ea","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.11.tgz","fileCount":65,"integrity":"sha512-LTGlX+BJP2knzulSQZlZDzG27hTOtMRAgqT2uobLP20pkfDZIgY1UKG0dC/SpOBjMBRc4vtaNHJzvg7sH4o2jQ==","signatures":[{"sig":"MEUCIQDA4QZ52zPGEoVAh9/NOsW71D1+ddKBoaUufxHOLIRpDwIgWYt0YKnGrdh8lUdiLkl8OXQb6x72fTZC5nxQUiz7ZOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594417},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.11_1782912821334_0.9475127786756423","host":"s3://npm-registry-packages-npm-production"}},"0.10.15":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.15","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.15","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"4d72747e1583765c35cd991dda738838b2c8d0ac","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.15.tgz","fileCount":65,"integrity":"sha512-m57YTsF+azOmok5VN76DTaCbEiLNA6CkFPL/7AFxOgDq/LOqKvjzvwX6/Sj9SI2qW1jlird9wuEKeWI2gNSojw==","signatures":[{"sig":"MEQCIGMUzgvh03Aaaxx/aD8aTbOv3luCMlEQW0b1JlGcjF3MAiBSHlx5ERv5IExl+Wl4QmTRuV/AFfHc1IcKo5Wb8Jbstw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605453},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.15_1782914870176_0.3947333068835368","host":"s3://npm-registry-packages-npm-production"}},"0.10.16":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.16","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.16","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"d732aafb2e3b71373895a074096dd3b4b1c00712","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.16.tgz","fileCount":65,"integrity":"sha512-wEmT5G9IJs/XGyHR1kF2xHSzo6kQaJ7+ZrBOuXwk1qM5HcDTEF314eJvutOqFwNI6Slm7X8/mbKH+53rG8JJLg==","signatures":[{"sig":"MEQCIA3S5v9MakfugjuefP2Mzak6wkDJ+ZEUXOA9rkTzAn76AiAllbjCn1l00UNfJeLIqUFIdfr08pShBLKXm4l7gVCGpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":604925},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.16_1782924131609_0.6224242851787496","host":"s3://npm-registry-packages-npm-production"}},"0.10.18":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.18","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.18","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"2707ef5028bfc283da01a4b9981986573b305eca","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.18.tgz","fileCount":65,"integrity":"sha512-sbjmo5dyf11twq5mzuaXTPaGI0+cPrdyAFbF3svUidPM/84YtzLPjNSUgu/npCllIgH0Gn0GbCCSIVRnJ4zVVg==","signatures":[{"sig":"MEQCIEnJL+iy7SHNbPAQt745H4hcFj44u38UjfRCAJECJj3TAiAsCRCMhaExHtTpPIeEj1ZmJvQOmEN+3gySWMpCagW0ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606418},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.18_1782930042298_0.7751582779847859","host":"s3://npm-registry-packages-npm-production"}},"0.10.19":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.19","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.19","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"10caf0b8bb3851520ccee707495fcd15b211a735","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.19.tgz","fileCount":65,"integrity":"sha512-pHjn50BFqPLbExL4zhgL+DrE2G8NCi6Z39b5RFYqxnCxvRe0JaAIDruHsfGYo+bls+kRxqfx5TAMRlM9eGbvHg==","signatures":[{"sig":"MEQCIHDkqNWefh91CjxxX1dzPMV7HDkojPcy7+0L3hQ6cE4BAiBBuBQzh7ww1Q50/ZpdD185M5p+7+Pk1ilhcVZix7qreQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612266},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.19_1782931838574_0.1492529276393484","host":"s3://npm-registry-packages-npm-production"}},"0.10.20":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.20","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.20","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"9de44d26c99754b94d8e905f75df4dc09a438c5b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.20.tgz","fileCount":65,"integrity":"sha512-ycOoZk+1KwXq9/VSqH2sHu4vOsk5cRJOuILRU6122jOGPFdTXt1CwaXRG6C1GVwV2o6tNbX4iU4bC0I7EVxrjQ==","signatures":[{"sig":"MEUCIQDmLy6TBjkJerAWIWwiIfnGxBrQLpxom4uooe//IqrlUwIgadykNMRcpWJ8orIxYadooVduuREa9sCvjJeXCoeuohc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612969},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.17.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.20_1782932821858_0.7490010916069614","host":"s3://npm-registry-packages-npm-production"}},"0.10.22":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.22","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.22","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"1583c78453af8894be41e8cac9576a4285b117f5","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.22.tgz","fileCount":65,"integrity":"sha512-B1L968ergZO5E78SwrG1O0kzowi1HKdq6ODtuekwOZNG3S1LFh/CQjnbAgbo+vghY7CKcOk7KYjo2iUrgFZFhw==","signatures":[{"sig":"MEUCIQCUPKi7ixuIF5ExfXJbvZ2oLYQ9ZhQSTdIlQCixoxDy4gIgcw8Zy8Yg1xkzHyE7h/rWRJAgKfo2S5l0rj8JLNoNezI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":613117},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.22_1783019344050_0.4146049663012803","host":"s3://npm-registry-packages-npm-production"}},"0.10.24":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.24","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.24","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"ca393aebbc5b75e1fd993268f8af4cdcbc38f80e","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.24.tgz","fileCount":65,"integrity":"sha512-A0uflq6qA0AYGxtE7NoFgcWsFl+manZr/sI3mUzNyOsglMEZ7eunQFZVKVqxQ6B8Al4pdpBdoSzmPpbHcMmhwA==","signatures":[{"sig":"MEQCIBMZlUo6xEG7kYMGhVlzoMRS417sF/N4C4tx5yJJgl9fAiA0w9flTtUBGsECPmctUzCiL0FH0bCmRI9VMo8LQTcRCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":617847},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.24_1783024706334_0.9948360093417232","host":"s3://npm-registry-packages-npm-production"}},"0.10.25":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.25","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.25","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"e394ea4f127183763d898c13909ba2b0cf7f2a4f","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.25.tgz","fileCount":65,"integrity":"sha512-CAc1pCJuwQd65UkLropxCQa5agK5iGUtD08fj0CaSanqfXHfLGVnyAEcH+aqoQ0jhwIYed896bWYFb2r/ySRbA==","signatures":[{"sig":"MEYCIQDSU5ku+iFTVRfpX85HhprU4hy4fW3LJuyVvf2bBQ+M1AIhAKfCZHa5ULZawgo8dTAIhoT0Vd7vRWoVUxozNmEcjJmK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620701},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.25_1783026013735_0.07487857968718958","host":"s3://npm-registry-packages-npm-production"}},"0.10.26":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.26","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.26","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"92df03580e4b979b7ef4fb6aa92bd2669b17eb67","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.26.tgz","fileCount":65,"integrity":"sha512-elh9CuWQzpZLwesT5trDAy+SsiA4ufScGWRvUMq2OcjrWtEmNlIZsI387ipStHCXd19kw29m6fwOsNCHq/nRmQ==","signatures":[{"sig":"MEUCIHZM87i/GlGGEKjejVruUIfaVgCBXGCg+n7Q7gbzs9m1AiEArDhx8+U6jfBDLcBXy8LTYe1xxGSmWW955Ywa0pKgiWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621700},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.26_1783027107173_0.3594231678937647","host":"s3://npm-registry-packages-npm-production"}},"0.10.27":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.27","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.27","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"c4555955711247cfc5605b509a5ce760db7cba62","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.27.tgz","fileCount":65,"integrity":"sha512-uJYgXCITsMHKKhLiLpNZpSf+zEJk526sKlnFrih2cLIa98GNLDR95QSQ7x1JHYmxGjPOraN/xXR1FT9w18VYeA==","signatures":[{"sig":"MEYCIQDH9/enfCpKm/t2Q3qPiwqog7DtddyE1uoV8ZDtYUMUEwIhANfoV1JGb8Ws9pVBY6h2EYe4oXW2FaMFNlDCqpYuzK/T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":624539},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.27_1783076016955_0.12057267742360489","host":"s3://npm-registry-packages-npm-production"}},"0.10.28":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.28","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.28","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"943de7ba393c11cae2e8b6791162317f0b1a75e2","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.28.tgz","fileCount":65,"integrity":"sha512-vGPeyyWVaABDupUWG+AU+aA95pZwcjQo4xZ3Mw4/otQhKC0H5g0qfotPEPfYpzo5XYoVHimoy0VUAEJAgZ3KsQ==","signatures":[{"sig":"MEYCIQDWKDzDMnfldSKOLCzL14r8lTJe+7KmP+62WOwRNZ+lYQIhAN+8d5424q5cD7hoY8UnZ3vzj1PV/RNoO/Nal0csLRfo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":625418},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.28_1783076562398_0.9910665393176052","host":"s3://npm-registry-packages-npm-production"}},"0.10.29":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.29","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.29","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"9465d9c38d93f0004c7078e4153269be3b12f917","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.29.tgz","fileCount":65,"integrity":"sha512-FUqqpvV+cH9vTtYZ9KEYCs+ncz32EKhyqqpO8ZkJ0L/mkV7eZ2SqAk6KkiQkjJYxclg9Hl1Fn3uN+ap68obejA==","signatures":[{"sig":"MEYCIQD4lycRhsU6Yl6QhaNLsE/weURHqWyXA8skOxaaXGHgpwIhAKe8PxTnc8kqmh643BNfhKMGke/P9vQUamJ4ah2n34R/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":630108},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.29_1783077149639_0.7412158901735957","host":"s3://npm-registry-packages-npm-production"}},"0.10.30":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.30","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.30","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"55943c36ca314845e71c21dcd011db6b4706fd0b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.30.tgz","fileCount":65,"integrity":"sha512-ataqrIrU9aKNjiTpMWoU7TdYbm9u6MmkgYX+GR8m2OGG/TZZT69bgurf/ayQN2JZS+arIu3DbIRkebVjR8Q7qQ==","signatures":[{"sig":"MEUCIGLUpoMlKpCsrbXT7Tk5oAiXI7dFbGTCWRjtZ14BuMkeAiEAoPE9QAybNpIVEQlIkq+R6LPF3qOoFF7AHZBtGRDQbk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":632124},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.30_1783080272109_0.046979178975240954","host":"s3://npm-registry-packages-npm-production"}},"0.10.36":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.36","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.36","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"8d964d078e1bba578f82421c6f16c8832958a709","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.36.tgz","fileCount":65,"integrity":"sha512-mN50xnUPQeHGz9uMPvFJVriCtW7zegO4ANAEOZSuvJRJMTCQLCxGRk4fMnsxoydgKhIYLh8kqkDla2A8cHV2ug==","signatures":[{"sig":"MEUCIQDod7nalHdd1YdJS2Jxn3YSvCLIvZmbHf3Z6bwvio/I4QIgdOyFNZeEBLiBHwdueEgy2RASdsTwHPAZl+Qkg4xhq8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":630613},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.36_1783082288897_0.004031985658541792","host":"s3://npm-registry-packages-npm-production"}},"0.10.37":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.37","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.37","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"c4eff0c5aafd542dc4da4a0f99ae25f20c71bdeb","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.37.tgz","fileCount":65,"integrity":"sha512-RXTxCS4QVrSdUwbOmRrbyLq55qnfTl/hRlRH+vmjZHrSRDV/8oVWgX+QMf3uAh1C3K7DpKVpHbm+ABmdBGe47g==","signatures":[{"sig":"MEYCIQCWNXUewDqZtMnW8MGbbz9itB4L2Yr/8Saqz5GLyuZxbgIhALL5JqPiHXwMG9mhy+8QoCH5ZaPhRmPs538hNich7dRN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":634967},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.37_1783083059796_0.05037745603749433","host":"s3://npm-registry-packages-npm-production"}},"0.10.38":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.10.38","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.10.38","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"67fc229a885212df18d87aff001b13f861bc893a","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.10.38.tgz","fileCount":65,"integrity":"sha512-+kSYJRgUpsEOA/Hm/5YpQ+H7kyWsWov8RCCylWWeVp4/NqAsbY5ZlQVQT1p2RsWvia0DjPIW5SWVC6FiSEccqQ==","signatures":[{"sig":"MEUCIQCZfLESwLGRyvrb/LfCaSrytqJtmY0atL2z3NU3L2z2IAIgNxui3kEkhuOF/q521JNZ6YUWyeMJzfFU2Y2PellDlyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648412},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.10.38_1783093811449_0.21322832695927163","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.11.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.11.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"bdde24a06617e67cca5ea854358435fb2786c36b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.11.0.tgz","fileCount":81,"integrity":"sha512-Mz5T3IQ55kTVl34AXYO5i6tvaIMXiVyMfcq2JyADBAkFD1INjJdkrFuIb9WffWPG4c1rPZE0EMY/jbiU9i//nA==","signatures":[{"sig":"MEUCIC0pxbgCx3YAXCB1AZ+sA33+Q/MxJ97V157WGAkn1RPUAiEAyA+fp1OIGWSndd+kYoAcEqtj/6MjgCcB1xCa0UPGINA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108710994},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.11.0_1784730240558_0.9022461027905053","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.11.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.11.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"94ddd345bc35bbf3d26ce9a75b5951db4e20a7a1","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.11.1.tgz","fileCount":81,"integrity":"sha512-F+7PA6Q3cqnLI+bG+4PvKu0zltbxcDxZkhAKS9lFihXu1XumNw2XOlVCP5iuu4xyA7sR4O6Yic3NEdAGUNLISA==","signatures":[{"sig":"MEUCIQDitxzv6dhoz9XBGy8fi1WUCik6/lposlMPNbX9Tz7MfAIgXwCjMSGB7yJ/FGmN+wKUZNrKFQJMKhcvst+3TIdsI5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108713437},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.11.1_1784742862078_0.14194495136339969","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"7aa0cc6f461ae33d4d12b7e5c86e849a90f8f477","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.0.tgz","fileCount":81,"integrity":"sha512-lsIrjj3egg+USb1YQXwgNUzMhDgMT6Y6k5sHNkOY69Ra7GCvSY8AONPcqTsai5kVO/QhJc7PZ+LC2LlOXOoFPA==","signatures":[{"sig":"MEQCIDYXrhV3MFMmohAmX4O6JXk1Em/AcnkK44LkB78L09MEAiBivWQwvNvx9WLQrcmcflt3RtWlMfX/946NqGoFiGPvsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108722805},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.0_1784750943337_0.25787688054474","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"7f4ebe1d9db4c1d77a8c1e0a5f705a19aa7918bb","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.1.tgz","fileCount":81,"integrity":"sha512-cvEOMK6AcMVk1wdPmkBAy4C23GcwRqsmJ/hupMTZmsw0qmhVsRmLaJ78PhIqOt3PFyYF7ObeeDhmYDKhMK0LsA==","signatures":[{"sig":"MEQCIDAJwK0DYeBmSQstsMH+dC5WBG1J+mQfBOd269UAt5MtAiA1aQA70Pz8ioCAABjVV+aDYyYW8FIGfC7FzVms5sdP2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108725878},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.1_1784798047274_0.15254766128555164","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"13144b0f15bd49527c5838ce13a41573732bb18f","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.2.tgz","fileCount":81,"integrity":"sha512-URqX5SlJnNG9C/vzkF6WJtlOcdAQhYjP1EZcnhWUG5bx+E6bcsJQbAiD09jVeIGz3DYLJkUWxH6UEep1zHUjEg==","signatures":[{"sig":"MEUCIQDrZLUEq4C7vhZHAKNiwax2vWkZZzY8S6jhhP8QVVDCfAIgEHess0eib4Clyr0ZNtEGt3GbTBY+bQDaRkkAm+IdpfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108726384},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.2_1784814596226_0.2663331984983013","host":"s3://npm-registry-packages-npm-production"}},"0.12.3":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.3","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.3","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"f7c10b2ebca91ebfe00dcd6b622d7385e3796654","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.3.tgz","fileCount":81,"integrity":"sha512-Ww/5T4H8kH1IM9auXUWgsRkGPrBunJmKYG4phzAK4vWicOA0iod1XQ9xzApuOvkl/IkiXas8gOBUu+5aklakqQ==","signatures":[{"sig":"MEUCIBMN28A7hlwLeaJqbmArRE+c4OpUIkHJYeTTg4R5kIpDAiEAwrHsF7sYfVUnzViIJzCb5LBztOVm+PB6duSxaLo23jo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108729248},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.3_1784824968010_0.13972946574007317","host":"s3://npm-registry-packages-npm-production"}},"0.12.4":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.4","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.4","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"ee0a98f9b37f126cd9e51e1bbbad9abb2cc341cb","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.4.tgz","fileCount":147,"integrity":"sha512-oXzmd6xMAJurW0sRYW/oNX6KFQGlhZ+wQrQTypDRxjVigZpt9BKDzSBdYhMAzM0Qf1SxH9ozuMosojTyuH1Zjw==","signatures":[{"sig":"MEYCIQDQZhekxUqzoHx/SSGv+dbJ2npr8Kb66cBg5Q0wt0Ss/AIhAI4oJ+Rtq8tdERls2n9905+OZUG6+XM5VzO5Yt+RJHbe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123867944},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.4_1784835270875_0.9330801890366944","host":"s3://npm-registry-packages-npm-production"}},"0.12.5":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.12.5","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.12.5","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"0467c25a33103dde2d9c2cfed697bcbca467e1e9","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.12.5.tgz","fileCount":147,"integrity":"sha512-JozVSW+JINW6si/J49V+u34O6xTN0K+9qNr+2AykEYkToUESAoqX0uv026MkCxRJq4iXbrv044rP8vTY7/RV1w==","signatures":[{"sig":"MEQCIDyzdU/9MnayKMqTYaKaCCecyD5EUyPco0dqXwrgeqPzAiAh1expMzkUvcEcyGz+CWjJBub41vEFUc9uLRfZdW9lrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123870096},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.18.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.12.5_1786453702719_0.8581002270352349","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.13.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.13.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"b9cef4bccd8e65a4d6ffa075edcfab32c0e70845","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.13.0.tgz","fileCount":147,"integrity":"sha512-guYdR4DipqvvbU/uVwV8Z/0wKDU+sec0476D9/fEn+FKcWWWKo0MIjOhycF1Bxk3g1ytDNfCaPJ7w+iArOBLjA==","signatures":[{"sig":"MEUCIQC72tdijJNBE9o+qg2o6H1a+Z6TeD2rtQhM716aQCUbPAIgSczJVPII/HfZ0qX2nIWIbu7rCGYcRxN/EiSqCbq6XHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123869647},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"_nodeVersion":"24.19.0","react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.13.0_1788200686999_0.1653436727137989","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.14.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.14.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"8ee9e29f14238a5df3276b28c521ff2e8b351d2f","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.14.0.tgz","fileCount":147,"integrity":"sha512-J5ym9v1+euCTA33qTxemkeQvOKJPX5rEldCj7xQuCYvqmxfmIOEKBEcCSArSwJAlPES6q8jVqpWiWl79FcjR8Q==","signatures":[{"sig":"MEUCIGYhcmYNngYBnxRKKK0AEqZKUSXH5qeEH/KzOvsUtVYXAiEA6E2p06NIWY/Y2sJvrmvswm87ueujqy+0K2O1lrpZXMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123898689},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.14.0_1788954394565_0.1524821211271552","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.14.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.14.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"c1d6d8ebbb41a6e107087a25c10275b70300d93e","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.14.1.tgz","fileCount":147,"integrity":"sha512-RsWeDOSN7Swy1+Kt9BkCO5/Wt3at7eAU4JPPte/fejsP+2MSw1ogPaUS2Iiki0NqabqCKUAEBM5oVdPnNmiehA==","signatures":[{"sig":"MEUCIQDdhRJfswnssGqbjpy9E0m3mhfOmQ6uDXw1X4p407rwugIgV0BN0AGxjsrA6VSfHd7TV1E5xY9ysXm0zIQolk8bQ1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123909329},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.14.1_1789060274941_0.9696466896498876","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.14.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.14.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"9ed14580713288061aa4b697d92474f01ef2e01e","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.14.2.tgz","fileCount":147,"integrity":"sha512-Ht9Vrq08VUjv5NkVPuApdVZQE6pR0SgSkszsPghfLahMCs1Lk3wh8mzFFwbUS/2od0+X6YYsgDAaUEt50JxI9w==","signatures":[{"sig":"MEQCIAEJE6woblxSnLq3xD8IgkDn9bSao58ANAbbXUfgSccSAiBYJrS0qmOudyJ61OtC5zKN4txeAwxn3UJpLQXqDa9RbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCRzvKDv5x8htg93L0CbFqkmhSeU3kkqHnfuMZWoo6lYQIhAK5UYBxCeWkIk24/WXnfglXcKYRT6wRnJ0GO8v5VFjoQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123959610},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.14.2_1790581750796_0.7087151271008212","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.15.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.15.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"a1f9b0cb575e2613385972715e4af58280f0e98b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.15.0.tgz","fileCount":149,"integrity":"sha512-mHVpJinXnV0YX7Be4CQ8P/0AJRtazJp5xL4TFrqAMyyLOiQ3SluQUO3Vam3Bsj1gJ8FYFXS/TnHnV/m0LXcIcQ==","signatures":[{"sig":"MEUCIQCVn8/D5ZSJUt+nOq4zHX8SG9EPFbJhBwrg4qL/+hDDhgIgceGGwBkb0TJXiOU62ixxrlqEDFQmB8JNjQABZx8mFWw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCoiJk5BtKBCEl6wyZnhL7xE67enEsfTxzrB9d6EW5LVgIhAMBTsBFfQMyr+N3/IccjmBbZXyScZ31NIOrH0JNCdUl8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123971073},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.15.0_1790602976398_0.02860114949574033","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.15.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.15.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"fe9f27916922dd53c17daf098db0a968517f52b0","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.15.1.tgz","fileCount":149,"integrity":"sha512-4qXCW5raMQjkGshOPtevajWYlvg4vA1C96g21cYhSUSF9XxKYvoq0fF40ChCbNwROSV0oNmnLZerNYgO7eHFAw==","signatures":[{"sig":"MEUCIQCUjLeyj9WfWAOTHP4r6UT38hbvhjvImrHx4SiSYON/6gIgGWXDP8AFAp7HItWuDwfEX8ScT4oPcTq5sElvCsGwOPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH1+uZMr21l8swidajinLY2RQr5bAZz+iROrKhf4A0dBAiEAiJI8IsJMSxwyytDyGx8ECcSGQVxtRnEkpLFlPhxmKq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123974800},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.15.1_1790616831153_0.3568924719225184","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.15.2","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.15.2","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"4a7c7d9f8ba6a18d30afdc631f6b7c408b974689","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.15.2.tgz","fileCount":153,"integrity":"sha512-gwU8/kCshLLJaspP9zImcnMd5MdHd2mf4g/ADm7WYj7ObdE3oJ6v602vwnha/n8mBqFIkPbmAiRn1YKlJclfVQ==","signatures":[{"sig":"MEYCIQCXargYXEfFS66BU5PSR64nR7YxycX+z3yRmLIg6NOwgQIhANICOAN4K5y4HQhQQmHgSU1hciJZfJEVpRiOWKbzSbPa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCO3edI+0GMPb1TXJ0cNvElmk9LhO6bJNrJZsdsh+hYkAIgGvcrX1FuK48Pcq+DpduQdHVko6MLjQTpIrTZR3Psk7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124004377},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","test":"node --import tsx --test src/hooks/useRapidTest.presentFlow.test.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","tsup":"^8.0.0","react":"^18.3.1","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17","react-test-renderer":"^18.3.1","@types/react-test-renderer":"^19.3.0"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.15.2_1790620276293_0.6074203022753537","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.16.0","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.16.0","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"3ec863c5b0714f29ecc3b7d12a304846699368d4","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.16.0.tgz","fileCount":155,"integrity":"sha512-rCsqnA4PmYw7s5/qbhNXgu/89eRWOGpHAw1tPJFUbTrJuPYMUL+x0Rv/jfUETKpjmE5zNYR55Rm3qRm9QxA3RQ==","signatures":[{"sig":"MEYCIQCiOFSydunF6egkt3GDRMQojCWIdHHBwQs3gGfhUEMsOQIhANcwpATgYyagXqmN7w8ZWhWLHTLV0b5S4cJZqqSVPfbu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID69TUItyk6+UjYKFFYSa2Ln3YwLRQWqIoZRVf4P3lHwAiB6k/1PGFGuGO7Gzru8Ry6ObYceL70sNCnP6pLSwLA5+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124036836},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","test":"node --import tsx --test src/hooks/useRapidTest.presentFlow.test.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","tsup":"^8.0.0","react":"^18.3.1","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17","react-test-renderer":"^18.3.1","@types/react-test-renderer":"^19.3.0"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.16.0_1790624511054_0.40898302502000394","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@healthcloudai/hc-rapid-test-ui","version":"0.16.1","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"author":"Healthcheck Systems Inc","license":"MIT","_id":"@healthcloudai/hc-rapid-test-ui@0.16.1","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"dist":{"shasum":"e2b6d81a742984a4111cb1520b82cdfb062acf1b","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.16.1.tgz","fileCount":157,"integrity":"sha512-8kjAP0MDdphO9cMwAagoMvbsIAwpxG81NV0xo5SO6hSo7OzhnEHajv8FDoPvG61TsgA8XCN4hwIiXHnGvm+pRQ==","signatures":[{"sig":"MEYCIQCfPlJ8dY0FxjQhBbhXq01/9aMq6QoGfiam1v/e2sS3wAIhAOxi3IJI1xrK3KANs4kJK3p3VwfrbD3O+mCLVczRKrou","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDAJhB4bK8GfH7Yq/1OQnB24LCcnve/DNHGUsj8A2CfEQIhAPx5wVtiGZMA7cIHS6Nu7RJq60FEYtEkv2EwMewrnA0I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124043932},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","test":"node --import tsx --test src/hooks/useRapidTest.presentFlow.test.tsx src/hooks/useRapidTest.flows.test.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","tsup":"^8.0.0","react":"^18.3.1","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17","react-test-renderer":"^18.3.1","@types/react-test-renderer":"^19.3.0"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/hc-rapid-test-ui_0.16.1_1790784928740_0.5462508746352102","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"_id":"@healthcloudai/hc-rapid-test-ui@0.17.0","dist":{"shasum":"e5a0906a34a77d367722374f1dcae353e391a601","tarball":"https://registry.npmjs.org/@healthcloudai/hc-rapid-test-ui/-/hc-rapid-test-ui-0.17.0.tgz","fileCount":159,"integrity":"sha512-wWrKfDq9faKdFLPaFuU82dB8juJBsd1hqkSiSlnJy4FtYmz0TdXZZ/4+05ZLxLk+S+OIELNw26hK1NrCJLT4ww==","signatures":[{"sig":"MEUCIBJIfFFl2lqINmSIOBvPtRjKpbBjIf65qc0Db9SwT6l6AiEApssuKbv1DVvPeVAjHZEEcbKS2zTVuUlbW/Zj/uMu9sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDdWeZZEXRxd/vHolVnOwWrhhFjLbXOncVtp91jYTvQJQIgOPwDyjCNSF01iaLshws7rueBunkCyniAtLjSu0nkvrQ="}],"unpackedSize":124080343},"main":"dist/index.cjs","name":"@healthcloudai/hc-rapid-test-ui","type":"module","types":"dist/index.d.ts","author":"Healthcheck Systems Inc","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","react-native":"./src/index.ts"}},"license":"MIT","scripts":{"dev":"tsup src/index.ts --watch","lint":"eslint src --ext .ts,.tsx","test":"node --import tsx --test src/hooks/useRapidTest.presentFlow.test.tsx src/hooks/useRapidTest.flows.test.tsx","build":"tsup src/index.ts --format esm,cjs --clean && tsc --project tsconfig.build.json"},"version":"0.17.0","_npmUser":{"name":"health-cloud","email":"bojan.mise@healthcheck.com"},"keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","directories":{},"maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"react-native":"src/index.ts","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.2","tsup":"^8.0.0","react":"^18.3.1","expo-av":"^16.0.8","typescript":"^5.3.0","@types/react":"^19.2.17","react-test-renderer":"^18.3.1","@types/react-test-renderer":"^19.3.0"},"peerDependencies":{"react":">=18 <20","expo-av":">=14.0","expo-camera":">=16.0","expo-haptics":"*","react-native":">=0.72.0","expo-file-system":"*","react-native-svg":">=15.0.0","react-native-webview":">=13.0.0","expo-image-manipulator":"*","react-native-reanimated":">=3.0.0 <5.0.0","react-native-render-html":">=6.3.0","react-native-safe-area-context":">=4.0.0"},"peerDependenciesMeta":{"expo-haptics":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hc-rapid-test-ui_0.17.0_1790882008097_0.35656470349204583"}}},"time":{"created":"2026-06-12T13:25:13.910Z","modified":"2026-10-01T19:13:29.605Z","0.3.0":"2026-06-12T13:25:14.196Z","0.3.1":"2026-06-18T14:33:18.292Z","0.3.2":"2026-06-18T17:13:02.954Z","0.4.0":"2026-06-18T17:45:47.549Z","0.5.0":"2026-06-19T07:37:50.977Z","0.5.1":"2026-06-19T08:34:41.189Z","0.6.0":"2026-06-19T10:23:25.795Z","0.7.0":"2026-06-19T10:45:36.071Z","0.8.0":"2026-06-19T12:29:14.173Z","0.8.1":"2026-06-19T14:02:50.599Z","0.9.0":"2026-06-19T14:26:00.498Z","0.9.1":"2026-06-25T14:17:15.933Z","0.9.2":"2026-06-25T16:29:25.290Z","0.9.3":"2026-06-25T17:53:01.171Z","0.9.4":"2026-06-25T19:28:41.016Z","0.9.5":"2026-06-25T20:15:48.736Z","0.9.6":"2026-06-26T07:33:21.682Z","0.9.7":"2026-06-26T09:29:17.256Z","0.9.8":"2026-06-26T10:26:10.208Z","0.10.1":"2026-06-26T11:18:13.815Z","0.10.2":"2026-06-26T11:37:37.278Z","0.10.3":"2026-06-26T11:51:43.712Z","0.10.8":"2026-06-26T14:13:33.449Z","0.10.10":"2026-07-01T12:39:46.940Z","0.10.11":"2026-07-01T13:33:41.485Z","0.10.15":"2026-07-01T14:07:50.330Z","0.10.16":"2026-07-01T16:42:11.818Z","0.10.18":"2026-07-01T18:20:42.491Z","0.10.19":"2026-07-01T18:50:38.839Z","0.10.20":"2026-07-01T19:07:02.077Z","0.10.22":"2026-07-02T19:09:04.260Z","0.10.24":"2026-07-02T20:38:26.504Z","0.10.25":"2026-07-02T21:00:13.897Z","0.10.26":"2026-07-02T21:18:27.301Z","0.10.27":"2026-07-03T10:53:37.098Z","0.10.28":"2026-07-03T11:02:42.624Z","0.10.29":"2026-07-03T11:12:29.779Z","0.10.30":"2026-07-03T12:04:32.266Z","0.10.36":"2026-07-03T12:38:09.050Z","0.10.37":"2026-07-03T12:50:59.951Z","0.10.38":"2026-07-03T15:50:11.611Z","0.11.0":"2026-07-22T14:24:01.852Z","0.11.1":"2026-07-22T17:54:23.607Z","0.12.0":"2026-07-22T20:09:04.834Z","0.12.1":"2026-07-23T09:14:08.599Z","0.12.2":"2026-07-23T13:49:57.566Z","0.12.3":"2026-07-23T16:42:49.508Z","0.12.4":"2026-07-23T19:34:32.561Z","0.12.5":"2026-08-11T13:08:24.169Z","0.13.0":"2026-08-31T18:24:48.401Z","0.14.0":"2026-09-09T11:46:35.922Z","0.14.1":"2026-09-10T17:11:16.597Z","0.14.2":"2026-09-28T07:49:12.125Z","0.15.0":"2026-09-28T13:42:57.896Z","0.15.1":"2026-09-28T17:33:52.488Z","0.15.2":"2026-09-28T18:31:17.628Z","0.16.0":"2026-09-28T19:41:52.477Z","0.16.1":"2026-09-30T16:15:30.337Z","0.17.0":"2026-10-01T19:13:29.418Z"},"author":"Healthcheck Systems Inc","license":"MIT","keywords":["health-cloud","safecdx","rapid-test","react-native","cvml","typescript"],"description":"React Native UI for the SafeCDX rapid test flow — instructions, capture, CVML polling, post-test questions","maintainers":[{"name":"health-cloud","email":"bojan.mise@healthcheck.com"}],"readme":"# `@healthcloudai/hc-rapid-test-ui`\n\nReact Native UI package that drives the full rapid test flow — barcode scan, product overview, disclaimer, step-by-step instructions, camera capture, image upload, result processing, and a final test result screen.\n\nThe package makes no network calls of its own. Your app passes in a **connector** built on **`@healthcloudai/hc-sdk`** (`DiagnosticsClient`: `lookupByGs1`, `getScanUploadUrl`, `getTestResult`, `getTestImage`), and the package calls it for every backend step.\n\n> **Do not use SafeCDX APIs anywhere in your integration:** not `@healthcloudai/hc-safe-cdx`, not `GET gs1/:gtin`, and not the `cvml/*` or `test/*` endpoints. The package still contains a legacy SafeCDX/CVML code path (post-test questions, retakes, failover) and the `fromSafeResponse`/`fromResultDetails` helpers, for apps that haven't migrated yet. New integrations must not use them. See [Section 4](#4-connector-adapter).\n\n---\n\n## Table of Contents\n\n0. [Quick-Start — Consumer App Integration](#quick-start--consumer-app-integration)\n1. [Architecture Overview](#1-architecture-overview)\n2. [Prerequisites & Peer Dependencies](#2-prerequisites--peer-dependencies)\n3. [Installation](#3-installation)\n4. [Connector Adapter (`hc-sdk` → `RapidTestConnector`)](#4-connector-adapter)\n5. [Data Mapping — What Your Connector Must Return](#5-data-mapping--what-your-connector-must-return)\n6. [Theme Setup](#6-theme-setup)\n7. [Mounting `RapidTestContainer`](#7-mounting-rapidtestcontainer)\n8. [Starting the Flow — `useRapidTest`](#8-starting-the-flow--userapidtest)\n9. [Flow Phases & Screen Reference](#9-flow-phases--screen-reference)\n10. [Result Data — Types & Field Guide](#10-result-data--types--field-guide)\n11. [Localisation (i18n)](#11-localisation-i18n)\n12. [Error Codes](#12-error-codes)\n13. [Expo Router — Complete Integration Example](#13-expo-router--complete-integration-example)\n14. [Advanced — Custom Container](#14-advanced--custom-container)\n15. [Exported Symbols Reference](#15-exported-symbols-reference)\n\n---\n\n## 1. Architecture Overview\n\n```\nYour App\n│\n│  router.push(\"/(rapid-test)\", { gtin? })\n▼\napp/(rapid-test)/index.tsx\n│  useRapidTest({ connector, theme })\n│  presentFlow({ gtin?, onComplete, onCancel, onError })\n│                │\n│                │ emits events on module-level event bus\n│                ▼\n│  RapidTestContainer          ← mounted alongside the hook\n│  │  listens to event bus     ← renders built-in screens as modals\n│  │\n│  ├─ Phase 1  ScanScreen               (barcode scanner, skipped if a code is provided)\n│  ├─ Phase 2  ProductDetailScreen      (product name, image, description)\n│  ├─ Phase 3  DisclaimerScreen         (optional, API-controlled)\n│  ├─ Phase 4  InstructionFlowScreen    (steps / timer / video)\n│  ├─ Phase 5  TestCaptureScreen        (camera, S3 upload)\n│  ├─ Phase 6  ProcessingScreen         (upload + result polling)\n│  ├─ Phase 6b PostTestScreen           (analyte Q&A — legacy CVML connectors only)\n│  ├─ Phase 6c SelfReportScreen         (manual entry — legacy CVML connectors only)\n│  └─ Phase 7  ResultsScreen            (built-in result detail)\n│\nonComplete(userTestResultId) → your app navigates to its own result screen\n```\n\n**Key design principles:**\n\n- **Module-level event bus.** `useRapidTest` and `RapidTestContainer` communicate through a shared singleton bus — not props. Call `presentFlow` from anywhere (a button, AI chat block, deep link handler) and the container responds. Only one container should be mounted at a time.\n- **`presentFlow` is fully async.** Each phase is an `await`-able Promise. Business logic stays in one place, not scattered across screens.\n- **Connector is injected.** Your app wraps `hc-sdk`'s `DiagnosticsClient` in a thin adapter implementing `RapidTestConnector` and passes it to the hook. The UI package never imports a backend client itself.\n- **Theme from context.** All screens read colour from `RapidTestThemeProvider` — no need to pass `primaryColor` props manually.\n\n---\n\n## Quick-Start — Consumer App Integration\n\nCopy-paste this prompt into Claude Code (or follow the steps manually) to wire up the full rapid test flow in any Expo / React Native app.\n\n### 1. Install\n\n```bash\npnpm add @healthcloudai/hc-sdk @healthcloudai/hc-rapid-test-ui\npnpm add react-native-render-html react-native-webview expo-image-manipulator\ncd ios && pod install && cd ..\n```\n\n### 2. Babel plugin — `babel.config.js`\n\n```js\nmodule.exports = {\n  presets: ['babel-preset-expo'],\n  plugins: ['react-native-reanimated/plugin'],\n};\n```\n\n### 3. Theme provider — `app/_layout.tsx`\n\n```tsx\nimport { RapidTestThemeProvider } from \"@healthcloudai/hc-rapid-test-ui\";\n\nexport default function RootLayout() {\n  return (\n    <RapidTestThemeProvider theme={{ primary: \"#YOUR_BRAND_COLOR\" }}>\n      {/* rest of your app */}\n    </RapidTestThemeProvider>\n  );\n}\n```\n\n### 4. Connector adapter — `services/rapidTestConnectorAdapter.ts`\n\nCreate this file once and reuse it across your app (full implementation in [Section 4](#4-connector-adapter)):\n\n```typescript\nimport { createRapidTestConnector } from \"@/services/rapidTestConnectorAdapter\";\nconst connector = useMemo(() => createRapidTestConnector(sdk.diagnostics, patientId), [sdk, patientId]);\n```\n\n> `hc-sdk` returns snake_case JSON, so your adapter maps every response into this package's types. Read [Section 5 — Data Mapping](#5-data-mapping--what-your-connector-must-return) before writing it: a few wrong defaults (for example `CanContinue: true` or `CaptureMethod: 0`) change what users can do without raising any error.\n\n### 5. Screen — `app/(rapid-test)/index.tsx`\n\n```tsx\nimport { View } from \"react-native\";\nimport { RapidTestContainer, useRapidTest } from \"@healthcloudai/hc-rapid-test-ui\";\nimport { createRapidTestConnector } from \"@/services/rapidTestConnectorAdapter\";\nimport { useHCSDK, usePatientId } from \"@/hooks/useHCSDK\"; // your existing hc-sdk + auth hooks\n\nexport default function RapidTestScreen() {\n  const sdk = useHCSDK();\n  const patientId = usePatientId();\n  const connector = useMemo(() => createRapidTestConnector(sdk.diagnostics, patientId), [sdk, patientId]);\n  const { presentFlow } = useRapidTest({ connector });\n\n  useEffect(() => {\n    presentFlow({\n      onComplete: (userTestResultId) => router.replace(`/results/${userTestResultId}`),\n      onCancel: () => router.back(),\n      onError: (err) => { console.error(err); router.back(); },\n    });\n  }, []);\n\n  return (\n    <View style={{ flex: 1 }}>\n      <RapidTestContainer config={{ connector }} />\n    </View>\n  );\n}\n```\n\n### 6. Navigate into the flow\n\n```typescript\n// From anywhere in your app:\nrouter.push(\"/(rapid-test)\");\n\n// Or pass a code you already scanned to skip the scan screen. Pass the\n// complete code (for a GS1 DataMatrix: GTIN + expiry + lot + serial), not\n// just the GTIN; it goes to the lookup unchanged (see Section 4):\nrouter.push({ pathname: \"/(rapid-test)\", params: { gtin: \"010060833700179217280831100006725869\" } });\n```\n\nThat's it. The container handles every phase — scan, instructions, camera capture, upload, result processing, and results — then calls `onComplete` with the `userTestResultId` when done.\n\n> For the full connector adapter code, PDF rendering, i18n overrides, and advanced options see the sections below.\n\n---\n\n## 2. Prerequisites & Peer Dependencies\n\nInstall any missing peer dependencies:\n\n| Package | Min version | Purpose |\n|---|---|---|\n| `react` | `>=18` | |\n| `react-native` | `>=0.72` | |\n| `expo-av` | `>=14` | Video playback in instruction steps |\n| `expo-camera` | `>=16` | Camera capture |\n| `expo-file-system` | `*` | Native image upload |\n| `expo-haptics` | `*` (optional) | Tap feedback on barcode scan success — falls back to no-op if not installed |\n| `expo-image-manipulator` | `*` | Image pre-processing before upload |\n| `react-native-reanimated` | `>=3` | Animations (needs Babel plugin — see below) |\n| `react-native-render-html` | `>=6.3` | Renders HTML instruction bodies |\n| `react-native-safe-area-context` | `>=4` | Safe area insets |\n| `react-native-svg` | `>=15` | Icons and error illustrations |\n| `react-native-webview` | `>=13` | Web-based barcode scanner (web platform only) |\n\n**Reanimated Babel plugin** — add to `babel.config.js` if missing:\n\n```js\nmodule.exports = {\n  presets: ['babel-preset-expo'],\n  plugins: ['react-native-reanimated/plugin'],\n};\n```\n\n**iOS native rebuild after install:**\n```bash\ncd ios && pod install && cd ..\n```\n\n**iOS + `@healthcloudai/hc-cameravitals-connector` compatibility:** this package's native\non-device auto-capture module (`HcRapidTestAutoCapture`, see\n[`src/native/rapidTestAutoCapture.README.md`](src/native/rapidTestAutoCapture.README.md)) no\nlonger depends on the public `TensorFlowLiteSwift`/`TensorFlowLiteC` CocoaPod (a prior version\ndid, and apps that also installed `hc-cameravitals-connector` — whose `CircadifyModule` vendors\nMediaPipe, which force-links its own separately-compiled copy of TensorFlow Lite — hit a real\n`duplicate symbol` linker error). Instead, `HcRapidTestAutoCapture` vendors its own prebuilt\ndynamic framework that privately embeds the same TensorFlowLiteSwift + TensorFlowLiteC code.\nDynamic libraries are never flattened into the consuming app executable at link time, so this\npackage's copy of the `TfLite*` C symbols can no longer collide with anyone else's. Apps\ncombining this package with `hc-cameravitals-connector` on iOS now install and build normally,\nwith no Podfile changes required. Android was never affected.\n\n---\n\n## 3. Installation\n\n```bash\n# npm\nnpm install @healthcloudai/hc-sdk @healthcloudai/hc-rapid-test-ui\nnpm install react-native-render-html react-native-webview expo-image-manipulator\n\n# pnpm\npnpm add @healthcloudai/hc-sdk @healthcloudai/hc-rapid-test-ui\npnpm add react-native-render-html react-native-webview expo-image-manipulator\n\n# iOS rebuild\ncd ios && pod install && cd ..\n```\n\n---\n\n## 4. Connector Adapter\n\n`useRapidTest` needs a `RapidTestConnector`: the object the package calls for every backend interaction. Build it on **`@healthcloudai/hc-sdk`'s `DiagnosticsClient`**, and use no other backend client.\n\n> **Do not call SafeCDX APIs from your connector.** That means not using `@healthcloudai/hc-safe-cdx`, and not calling `GET gs1/:gtin`, `upload/url`, `cvml/status`, `cvml/results`, `test/answers`, `test/finalize` or `test/result/details`, for any step. Every call goes through `hc-sdk`, as below.\n\n| Connector method | `hc-sdk` call | Notes |\n|---|---|---|\n| `getTestProfileByGTIN(code, gtin)` | `diagnostics.lookupByGs1(patientId, { gs1: code })` | `code` is the **complete scanned code**: pass it as-is so the backend can read the GTIN, expiry, lot and serial. `gtin` is only the parsed GTIN; don't send it to `lookupByGs1`. Map the response with your own mapper ([Section 5.8](#58-example--mapping-a-snake_case-lookup-response)). |\n| `createUploadUrl(testId, gtin)` | `diagnostics.getScanUploadUrl(patientId, { test_id: testId, gtin })` | Only called when the lookup's upload URL has expired by upload time ([5.5](#55-ids-and-upload-targets--which-id-goes-where)). **Always pass `gtin`.** |\n| `uploadImage(uri, url)` | `fetch(url, { method: \"PUT\", … })` | Plain HTTP PUT to the presigned URL. |\n| `pollResult(testId)` | `diagnostics.getTestResult(patientId, testId)` | Map the response to `processing` / `complete` / `failed`. |\n| `getResultDetails(testId)` | `diagnostics.getTestResult(patientId, testId)` | Map the response to `RapidTestResultData` ([5.7](#57-results--rapidtestresultdata)). |\n| `getResultImage(testId)` | `diagnostics.getTestImage(patientId, testId)` | Optional: shows the captured photo on the results screen. |\n| `getCvmlResults` | (none) | Required by the TypeScript type but never called once `pollResult` exists. Use a stub that throws. |\n\nLeave `updateCvmlStatus`, `submitAnswers` and `finalizeTest` out. They belong to the legacy SafeCDX/CVML path.\n\nCreate this file once and reuse it across your app:\n\n```typescript\n// services/rapidTestConnectorAdapter.ts\nimport { Platform } from \"react-native\";\nimport type { HCSDK } from \"@healthcloudai/hc-sdk\";\nimport type {\n  ConnectorResponse,\n  PollResultData,\n  RapidTestConnector,\n} from \"@healthcloudai/hc-rapid-test-ui\";\nimport {\n  mapLookupToProductData, // Section 5.8\n  mapTestResultToPollStatus, // see below\n  mapTestResultToResultData, // Section 5.7\n} from \"./rapidTestMapping\";\n\n// hc-sdk exports HCSDK but not DiagnosticsClient itself.\ntype DiagnosticsClient = HCSDK[\"diagnostics\"];\n\nconst fail = (error: unknown): ConnectorResponse<never> => ({\n  IsOK: false,\n  Data: null,\n  ErrorMessage: error instanceof Error ? error.message : String(error),\n});\n\nexport function createRapidTestConnector(\n  diagnostics: DiagnosticsClient,\n  patientId: string,\n): RapidTestConnector {\n  // Kept from the lookup so the results screen can show the product image.\n  let productImageUrl: string | null = null;\n\n  return {\n    // `code` is the complete scanned code (GTIN + expiry + lot + serial…).\n    // Send all of it: lookupByGs1 parses it into gs1_parsed.\n    async getTestProfileByGTIN(code) {\n      try {\n        const res = await diagnostics.lookupByGs1(patientId, { gs1: code });\n        const product = mapLookupToProductData(res);\n        productImageUrl = product.ProductAssetDetail?.imageURL ?? null;\n        // A missing ID shows the package's \"Wrong Code\" screen.\n        return product.ID\n          ? { IsOK: true, Data: product, ErrorMessage: null }\n          : { IsOK: false, Data: null, ErrorMessage: \"Test kit not recognised.\" };\n      } catch (error) {\n        return fail(error);\n      }\n    },\n\n    // Only called when the lookup's upload URL has expired (UploadInfo.expiresAt).\n    // Pass the GTIN: without it the backend can't tell which kit the upload is\n    // for, and has been seen to return another product's upload location.\n    async createUploadUrl(testId, gtin) {\n      try {\n        const res = await diagnostics.getScanUploadUrl(patientId, {\n          test_id: testId,\n          gtin,\n          content_type: \"image/jpeg\",\n        });\n        return res.upload_url\n          ? { IsOK: true, Data: { preSignedURL: res.upload_url, Metadata: { UploadId: res.test_id ?? testId } }, ErrorMessage: null }\n          : { IsOK: false, Data: null, ErrorMessage: \"No upload URL returned.\" };\n      } catch (error) {\n        return fail(error);\n      }\n    },\n\n    // On native, fetch(uri).blob() doesn't reliably read file:// URIs, so read\n    // via XHR; on web, uri is a data: URL and fetch works. PUT with fetch and a\n    // Blob body. Don't use a native upload-task API (e.g. FileSystem.uploadAsync):\n    // NSURLSession's upload task can hang when S3 returns 200 with an empty body.\n    async uploadImage(uri, preSignedURL) {\n      try {\n        const blob = await (Platform.OS === \"web\"\n          ? fetch(uri).then((r) => r.blob())\n          : new Promise<Blob>((resolve, reject) => {\n              const xhr = new XMLHttpRequest();\n              xhr.responseType = \"blob\";\n              xhr.onload = () => resolve(xhr.response as Blob);\n              xhr.onerror = () => reject(new Error(\"Failed to read image file.\"));\n              xhr.timeout = 30000;\n              xhr.ontimeout = () => reject(new Error(\"Image read timed out.\"));\n              xhr.open(\"GET\", uri);\n              xhr.send();\n            }));\n        const putRes = await fetch(preSignedURL, {\n          method: \"PUT\",\n          headers: { \"Content-Type\": \"image/jpeg\" },\n          body: blob,\n        });\n        return putRes.ok\n          ? { IsOK: true, Data: null, ErrorMessage: null }\n          : { IsOK: false, Data: null, ErrorMessage: `Upload failed (HTTP ${putRes.status}).` };\n      } catch (error) {\n        return fail(error);\n      }\n    },\n\n    async pollResult(testId) {\n      try {\n        const res = await diagnostics.getTestResult(patientId, testId);\n        return { IsOK: true, Data: mapTestResultToPollStatus(res), ErrorMessage: null };\n      } catch (error) {\n        return fail(error); // counted as a failed poll; 5 in a row end the flow\n      }\n    },\n\n    async getResultDetails(testId) {\n      try {\n        const res = await diagnostics.getTestResult(patientId, testId);\n        return { IsOK: true, Data: mapTestResultToResultData(res, testId, productImageUrl), ErrorMessage: null };\n      } catch (error) {\n        return fail(error);\n      }\n    },\n\n    async getResultImage(testId) {\n      try {\n        const res = await diagnostics.getTestImage(patientId, testId);\n        return { IsOK: !!res.image_url, Data: res.image_url ?? null, ErrorMessage: null };\n      } catch (error) {\n        return fail(error);\n      }\n    },\n\n    // Never called: presentFlow polls via pollResult when it exists.\n    async getCvmlResults() {\n      throw new Error(\"Not used: this connector polls via pollResult.\");\n    },\n  };\n}\n```\n\n### Mapping poll responses: report failures as `failed`\n\n`pollResult` must turn every `getTestResult` response into exactly one of three states. If the backend has given up on the test, **report `failed` right away**. Otherwise the user watches the processing spinner for the full 2-minute poll limit before seeing an error.\n\n```typescript\n// services/rapidTestMapping.ts\nimport type { PollResultData } from \"@healthcloudai/hc-rapid-test-ui\";\n\nexport function mapTestResultToPollStatus(res: any): PollResultData {\n  const d = res?.data ?? res ?? {};\n  const status = String(d.cvml_status ?? d.status ?? \"\").toLowerCase();\n\n  // A terminal failure, e.g. { cvml_status: \"terminated\", show_error: true }.\n  if (d.show_error === true || status === \"terminated\" || status === \"failed\") {\n    return {\n      status: \"failed\",\n      error: { code: \"TERMINAL\", message: d.error_message ?? d.message ?? \"This test could not be processed. Please contact support.\" },\n    };\n  }\n  if (status === \"complete\" || status === \"completed\") {\n    return { status: \"complete\" };\n  }\n  return { status: \"processing\" };\n}\n```\n\n`cvml_status: \"terminated\"` and `show_error: true` come from a real response. Confirm the full list of status values, and which field carries the error message, with the backend team, and add any other terminal values to the `failed` branch.\n\n---\n\n## 5. Data Mapping — What Your Connector Must Return\n\nThis package never talks to a backend and never looks at your backend's raw responses. Everything it shows and every decision it makes comes from the objects your connector returns. **Mapping your backend's responses into these shapes is your app's job**, usually in the same adapter file as your connector (see [Section 4](#4-connector-adapter)).\n\nThe package does not validate what you return. A wrong or missing value doesn't throw. It quietly changes what the user sees or can do, so read this section before writing your mapper.\n\n### 5.1 Checklist — the mistakes that break the flow\n\n| # | Mistake | What the user gets |\n|---|---|---|\n| 1 | `ID` left `null`/empty | The flow stops right after the lookup and shows the **\"Wrong Code\"** error, even though the GTIN was valid. |\n| 2 | `CaptureMethod` not converted to a number, or defaulted to `0` | `0` means **Auto**: the package opens its native auto-capture camera, whose on-device model is trained on the **OraQuick HIV** cassette. For any other kit it may never fire or may crop the wrong thing. Backends often send a string such as `\"ManualCapture\"`; convert it, and fall back to `1` (Manual) for anything you don't recognise. |\n| 3 | `CanContinue` defaulted to `true` | Every timer step shows a **Skip Timer** button that skips the wait immediately, with no confirmation, so users can read a test before it's ready. Map the backend value; default to `false`. |\n| 4 | `SkipTestButtonTitle1` given a default label | Every step shows an extra button that, once confirmed, **jumps straight to the camera**, skipping all remaining instructions. Leave it `null`/`\"\"` unless the backend sets it. |\n| 5 | Analyte `display` values not passed through exactly | When the backend asks for post-test questions, the package only asks analytes whose `display` is `\"Post-Test\"` (plus `\"Validity\"` when requested). If none match, the **post-test questions are skipped** and the test is finalized with no answers, so the user is never asked. See [5.4](#54-analytes--rapidtestanalyte). |\n| 6 | Analyte `_id` or response `storedValue` missing or duplicated | Answers are keyed by these. Duplicates make one answer overwrite another, or select two options at once. |\n| 7 | snake_case fields read with the wrong name (e.g. `product.name` instead of `product.test_name`) | The value comes back `undefined`. For names you get the generic **\"Test Kit\"** title; for images, no image. The package accepts PascalCase product and instruction fields only. |\n| 8 | Lookup upload URL (`UploadInfo`) mapped without `expiresAt` | The URL is fetched at the start, but the upload happens after the instructions, which can include long timer steps. Without `expiresAt`, the package can't tell the URL has expired, and the upload fails with **`S3_PUT_FAILED`**. Set `expiresAt` and implement `createUploadUrl`; see [5.5](#55-ids-and-upload-targets--which-id-goes-where). |\n| 9 | Hardcoding fields instead of mapping them (`ButtonTitle: \"Continue\"`, `ProductAssetDetail: null`, …) | Wrong button labels, no product image, no \"What's included\" list, no camera outline guide. |\n| 10 | `getScanUploadUrl` called without `gtin` | The backend can't tell which kit the upload is for. It has been seen to return **another product's upload location** (e.g. an `oraquick-hiv` folder for a Winx UTI test). Always pass the `gtin` your `createUploadUrl` receives. |\n| 11 | A failed test reported to `pollResult` as `processing` | e.g. `cvml_status: \"terminated\"` with `show_error: true`. The user watches the spinner for the full 2-minute limit before seeing an error. Map backend failures to `status: \"failed\"`; see [Section 4](#mapping-poll-responses-report-failures-as-failed). |\n| 12 | Sending only the GTIN to `lookupByGs1` | The lookup can't read the expiry, lot or serial, so `gs1_parsed.expiration_date`, `lot_number` and `serial_number` come back `null`. Pass the `code` argument, which is the complete scanned code, as `gs1`. |\n\n### 5.2 Product — `RapidTestProductData`\n\nReturned by `getTestProfileByGTIN(code, gtin)`. Field names are **PascalCase** and must match exactly.\n\n| Field | Type | What the package uses it for | If missing or wrong |\n|---|---|---|---|\n| `ID` | `string` | **Required.** The test's ID: passed to `createUploadUrl`, `submitAnswers`, `finalizeTest`, `getResultDetails`, `getResultImage`, `getResultPDF`, and to `onComplete`. | Flow shows \"Wrong Code\" and stops. |\n| `CustomTestName` | `string \\| null` | Product screen title (first choice), and the header on the question screens. | Falls back to `TestName`. |\n| `TestName` | `string \\| null` | Product screen title/subtitle, question-screen header. | Falls back to `ShortName`, then `\"Test Kit\"` (question screens: `\"Health Assessment\"`). |\n| `ShortName` | `string \\| null` | Product screen subtitle (when different from the title). | No subtitle. |\n| `DescriptionHTML` | `string \\| null` | Product screen **\"What's included\"** list. `<li>` items become bullets; otherwise each line or tag-separated chunk does. | Falls back to `ProductAssetDetail.body`; if both are empty, the list is hidden. |\n| `ProductAssetDetail` | `{ imageURL, body } \\| null` | `imageURL`: product image on the product screen. `body`: fallback for `DescriptionHTML`. | No product image. |\n| `ScanImageDetail` | `{ ImageUrl } \\| null` | Outline guide over the camera on the capture screen, and the template image native auto-capture uses to work out the cassette's shape. | No outline guide. |\n| `CaptureMethod` | `0 \\| 1 \\| 2` | `0` = Auto (native auto-capture, OraQuick-trained; falls back to the manual camera if the native module isn't linked), `1` = Manual, `2` = Smart (currently behaves like Manual). | See checklist #2. |\n| `DisclaimerDetail` | `{ title, body, continueButtonTitle, showDisclaimer } \\| null` | Disclaimer screen, shown only when `showDisclaimer` is `true`. `body` is HTML; `continueButtonTitle` falls back to `\"Continue\"`. | Disclaimer skipped. |\n| `Instructions` | `RapidTestInstruction[]` | Instruction steps, sorted by `SequenceOrder`. See [5.3](#53-instruction-steps--rapidtestinstruction). | Empty array: instructions phase skipped. |\n| `Analytes` | `RapidTestAnalyte[]` | Questions on the post-test and self-report screens. **Legacy CVML connectors only**: not read when your connector implements `pollResult`. See [5.4](#54-analytes--rapidtestanalyte). | Empty array: question screens skipped. |\n| `DiagnosticProfile.TestInfo.gtin` | `string` | GTIN sent to `createUploadUrl`. | Falls back to the scanned/passed GTIN. |\n| `DiagnosticProfile.TestInfo.cvmlDuration` | `number` (seconds) | How long to poll `getCvmlResults` before failing with `TIMEOUT`. Legacy CVML connectors only. | `0`/missing: 30 seconds. |\n| `DiagnosticProfile.TestInfo.isCVMLResult` | `boolean` | `false`: poll `getCvmlResults` at most 4 times, then go to manual result entry. Legacy CVML connectors only. | Missing: treated as `true`. |\n| `UploadInfo` | `{ preSignedURL, uploadId, expiresAt? } \\| null` | Optional. The upload URL returned with the lookup (`scan_upload`). Used for the upload while it's still valid; `expiresAt` (epoch ms) tells the package when it isn't. `preSignedURL` and `uploadId` must both be set. See [5.5](#55-ids-and-upload-targets--which-id-goes-where). | Package calls `createUploadUrl` instead; if your connector doesn't implement it, the upload fails with `UPLOAD_URL_FAILED`. |\n| `IsMLDisabled`, `IsSelfAssessmentMode` | `boolean` | Not read by the package today; setting them has no effect. | — |\n| `DiagnosticProfile.TestInfo.productName`, `.failoverEnabled` | — | Not read by the package today. | — |\n\n### 5.3 Instruction steps — `RapidTestInstruction`\n\nEach step's **screen type is worked out from its content**, in this order. The `Type` field is ignored.\n\n1. `VideoUrl` set → **video** step\n2. `TimeInSeconds > 0` → **timer** step\n3. `ImageUrl` set → **image** step\n4. otherwise → **text** step\n\n| Field | What the package uses it for | Notes |\n|---|---|---|\n| `SequenceOrder` | Step order (ascending). | Must be numeric. |\n| `NavigationTitle` | Title in the step's header bar. | |\n| `Title` | Not displayed. | Put visible text in `NavigationTitle`/`Body`. |\n| `Body` | Step content. HTML is rendered; plain text is wrapped in a paragraph. | |\n| `ImageUrl` | Step image, shown on every step type except video. | |\n| `VideoUrl` | Video player. | |\n| `ButtonTitle` | Main button label on **non-timer** steps. | Falls back to `\"Continue\"`. Timer steps always show \"Start Timer\", then \"Continue\". |\n| `TimeInSeconds` | Countdown length; makes the step a timer step. | The main button is disabled while the timer runs. |\n| `AutoStartTimer` | Start the countdown as soon as the step appears. | |\n| `AutoContinue` | Move to the next step automatically when the countdown ends. | |\n| `CanContinue` | Timer steps: shows **Skip Timer**, which skips the wait **immediately, with no confirmation**. | Map from the backend; never default to `true`. |\n| `SkipTestTimer` | Timer steps: shows **Skip Timer** with a confirmation sheet (`SkipTestBody`, confirm = `SkipTestButtonTitle1`, back = `SkipTestButtonTitle2`); confirming moves one step forward. Takes priority over `CanContinue`. | |\n| `SkipTestButtonTitle1` | Any step: shows an extra button with this label. Confirming it (same sheet) **ends the instructions and goes straight to the camera**. | Leave `null`/`\"\"` unless the backend sets it. |\n| `SkipTestButtonTitle2`, `SkipTestBody` | Text of the confirmation sheet above. | |\n| `SupportButtonTitle` | Shows a contact-support link with this label. | Hidden when empty. |\n| `ShowBackButton` | Not read. A back arrow shows on every step after the first. | |\n\n### 5.4 Analytes — `RapidTestAnalyte`\n\n> **Legacy CVML connectors only.** Connectors that implement `pollResult` (every `hc-sdk` connector) go straight from processing to results, so analytes are never asked. You can map them for completeness, but they have no effect.\n\nAnalytes are the questions asked after capture. Both camelCase (`name`, `display`, …) and PascalCase (`Name`, `Display`, …) are accepted; `_id` is always required.\n\n| Field | What the package uses it for |\n|---|---|\n| `_id` | **Required, unique per analyte.** Answers are stored under this key. |\n| `name` | Sent back as `AnswerPayload.Analyte`; also shown as the question when `question` is empty. |\n| `display` | **Decides which screen asks the question** (case-insensitive, exact match): `\"Post-Test\"` → asked on the post-test screen. `\"Validity\"` → asked first, only when the backend's CVML result sets `showValidity`. Anything else (e.g. `\"CVML\"`) → **never asked on the post-test screen**. The self-report (manual entry) screen asks every analyte. |\n| `question` | Question text. |\n| `image` | Optional image shown with the question. |\n| `responses` | Answer options, shown **in array order** (`displayOrder` is not used for sorting). |\n\nEach response:\n\n| Field | What the package uses it for |\n|---|---|\n| `value` | Option label; sent back as `AnswerPayload.ReportedValue`. |\n| `storedValue` | **Required, unique within the analyte.** Selection key; sent back as `AnswerPayload.StoredValue`. If your backend has no separate stored value, use `value`. |\n| `score` | Sent back as `AnswerPayload.Score` (a string; defaults to `\"0\"`). |\n| `cvmlValue`, `displayOrder` | Not read by the screens; pass them through for completeness. |\n\nWhat the package sends to `submitAnswers` (one entry per answered analyte):\n\n```typescript\ninterface AnswerPayload {\n  Analyte: string;       // analyte.name\n  ReportedValue: string; // response.value\n  StoredValue: string;   // response.storedValue\n  Score: string;         // response.score\n}\n```\n\n> **No matching analytes means no post-test questions.** When the CVML result says `resumeNext: \"PostTestQuestions\"` but no analyte has `display` `\"Post-Test\"` (or `\"Validity\"` with `showValidity`), the flow skips the post-test screen and finalizes the test without answers. That is correct when a product has no post-test questions, but if your mapping drops or renames `display`, questions the backend expects are silently never asked. Keep `display` exactly as the backend sends it.\n\n### 5.5 IDs and upload targets — which ID goes where\n\nThe flow uses two different IDs. Mixing them up is a common source of \"not found\" errors.\n\n| ID | Where it comes from | Passed to |\n|---|---|---|\n| **Test ID** (`userTestResultId`) | `RapidTestProductData.ID` | `createUploadUrl`, `getResultDetails`, `getResultImage`, `getResultPDF`, `onComplete` (legacy CVML: also `submitAnswers`, `finalizeTest`) |\n| **Image ID** (`imageOfCaptureId`) | `UploadInfo.uploadId`, or `createUploadUrl`'s `Data.Metadata.UploadId` | `pollResult` (legacy CVML: `updateCvmlStatus`, `getCvmlResults`) |\n\nWith `hc-sdk` both are the same value: the lookup's `scan_upload.test_id`. Map it to `ID` **and** to `UploadInfo.uploadId`, and return it as `Metadata.UploadId` from `createUploadUrl`.\n\n**Where the upload URL comes from** (checked in this order):\n\n1. `UploadInfo` from the lookup, **while it's still valid**: no `expiresAt`, or more than 60 seconds before `expiresAt`. Each photo, including retakes, gets this check at the moment it's uploaded.\n2. Otherwise `createUploadUrl(testId, gtin, \"jpg\")` for a fresh URL. With `hc-sdk`, that's `getScanUploadUrl(patientId, { test_id, gtin })`; always pass `gtin` (checklist #10). It must return `preSignedURL` and `Metadata.UploadId`, or the flow fails with `UPLOAD_URL_FAILED` / `UPLOAD_ID_MISSING`.\n3. If `UploadInfo` has expired and your connector has no `createUploadUrl`, the package still tries the expired URL; the upload will most likely fail with `S3_PUT_FAILED`.\n\n> **Upload URLs expire.** `lookupByGs1` returns `scan_upload.expires_in` in seconds (600, i.e. 10 minutes, in current responses). The upload happens only **after** the instructions, and timer steps alone can take longer than that. Turn it into an absolute time **when the lookup returns**: `expiresAt: Date.now() + expires_in * 1000`. Then a short test uploads with the lookup's URL, and only a slow one calls `getScanUploadUrl`.\n\n### 5.6 Polling responses\n\n**`hc-sdk` connectors: `pollResult` → `PollResultData`**, polled every 2 seconds, one request at a time, for up to 2 minutes:\n\n| `status` | What the package does |\n|---|---|\n| `\"processing\"` | Keeps polling. |\n| `\"complete\"` | Loads results via `getResultDetails` (and `getResultImage` / `getResultPDF` if implemented) and shows the results screen. No result is read from the poll itself. |\n| `\"failed\"` | Stops at once with `onError`, passing your `error` (or `TERMINAL` if none). Use this for every backend failure state (checklist #11). |\n\n5 failed polls in a row (`IsOK: false` or a thrown error) end the flow with `CONNECTION_LOST`.\n\n**Legacy SafeCDX/CVML connectors only: `getCvmlResults` → `CvmlStatusData`**, polled every 2 seconds, one request at a time:\n\n| `cvmlStatus` | What the package does |\n|---|---|\n| `\"Complete\"` (or `finalized: true`) | Stops polling, then follows `resumeNext`: `\"PostTestQuestions\"` → post-test screen (skipped if no analyte matches, see [5.4](#54-analytes--rapidtestanalyte)); `\"SelfReporting\"` → manual entry screen (skipped if there are no analytes); anything else → finalize. |\n| `\"Retake\"` | Shows the retake dialog using `imageOfCaptureResult.parsed.responseTitle` / `responseMessage` (these can be translation keys, see [Section 11](#11-localisation-i18n)); \"Try Again\" goes back to the camera. After 3 retakes, or when `capture.failoverTriggered` is `true`, offers manual result entry instead. |\n| `\"Terminate\"` | Stops with `onError` code `TERMINAL`. |\n| anything else | Keeps polling until `cvmlDuration` runs out (`TIMEOUT`). |\n\n`showValidity: true` adds the `\"Validity\"` analytes to the question screens. A response with `IsOK: false`, or a thrown error, counts as a failed poll; 15 failures in a row end the flow with `CONNECTION_LOST`.\n\n### 5.7 Results — `RapidTestResultData`\n\nReturned by `getResultDetails(testId)` and shown on the results screen; also passed to `onComplete` as its second argument. With `hc-sdk`, map `getTestResult`'s response into it yourself (`mapTestResultToResultData` in [Section 4](#4-connector-adapter)); don't use `fromResultDetails`, which only understands SafeCDX responses. The field-by-field display rules are in [Section 10](#10-result-data--types--field-guide). The points that most often go wrong:\n\n- `indication.title` sets the result card's colour by keyword: \"positive\", \"high\", \"elevated\", \"abnormal\" → red; \"negative\", \"normal\", \"low risk\", \"no risk\" → green. Use the backend's human-readable title, not an ID.\n- `status` is shown uppercased as a badge on the result card. `completedAt` is not displayed.\n- The per-analyte list shows only when there is **more than one** analyte (combo tests).\n- `productImageUrl` shows the product image on the result card. For snake_case backends it usually comes from the lookup's `product_asset_detail.image_url`, which your adapter can cache from `getTestProfileByGTIN`.\n- `getResultImage` / `getResultPDF`, when implemented, override `capturedImageUrl` / `pdfUrl`.\n\n### 5.8 Example — mapping a snake_case lookup response\n\nBackends such as `@healthcloudai/hc-sdk`'s `DiagnosticsClient.lookupByGs1` return snake_case JSON shaped roughly like this:\n\n```jsonc\n{\n  \"product\": {\n    \"id\": \"...\", \"test_name\": \"...\", \"custom_test_name\": null, \"short_name\": \"...\",\n    \"description_html\": \"...\", \"capture_method\": \"ManualCapture\",\n    \"is_ml_disabled\": false, \"is_self_assessment_mode\": true,\n    \"product_asset_detail\": { \"image_url\": \"...\", \"body\": \"...\" },\n    \"scan_image_detail\": { \"image_url\": \"...\" },\n    \"instructions\": [ { \"navigation_title\": \"...\", \"type\": \"TimerOnly\", \"title\": \"...\", \"body\": \"...\",\n                        \"button_title\": \"Start Timer\", \"time_in_seconds\": 900, \"auto_start_timer\": false,\n                        \"auto_continue\": false, \"can_continue\": false, \"show_back_button\": true,\n                        \"image_url\": null, \"video_url\": null, \"sequence_order\": 3,\n                        \"skip_test_timer\": false, \"skip_test_button_title1\": null,\n                        \"skip_test_button_title2\": null, \"skip_test_body\": null, \"support_button_title\": null } ],\n    \"analytes\": [ { \"id\": \"...\", \"name\": \"...\", \"display\": \"Post-Test\", \"question\": \"...\", \"image\": null,\n                    \"responses\": [ { \"score\": 1, \"value\": \"Negative\", \"cvml_value\": \"ABSENT\" } ] } ]\n  },\n  \"scan_upload\": { \"test_id\": \"...\", \"upload_url\": \"https://...\", \"storage_key\": \"...\", \"expires_in\": 600 }\n}\n```\n\nA mapper for that shape (keep it in your app, next to your connector):\n\n```typescript\nimport type {\n  RapidTestProductData,\n  RapidTestInstruction,\n  RapidTestAnalyte,\n} from \"@healthcloudai/hc-rapid-test-ui\";\n\n// String → numeric capture method. Anything unrecognised falls back to 1 (Manual):\n// 0 (Auto) opens the OraQuick-trained native auto-capture, which only suits OraQuick.\n// Confirm the exact strings your backend sends.\nconst CAPTURE_METHOD: Record<string, 0 | 1 | 2> = {\n  AutoCapture: 0,\n  ManualCapture: 1,\n  SmartCapture: 2,\n};\n\nexport function mapLookupToProductData(res: any): RapidTestProductData {\n  const p = res.product ?? {};\n  return {\n    // Required: the test UUID that getScanUploadUrl / getTestResult / getTestImage\n    // take (see 5.5). Not product.id, which identifies the product, not this test.\n    ID: res.scan_upload?.test_id ?? null,\n    TestName: p.test_name ?? null,\n    CustomTestName: p.custom_test_name ?? null,\n    ShortName: p.short_name ?? null,\n    DescriptionHTML: p.description_html ?? null,\n    CaptureMethod: CAPTURE_METHOD[p.capture_method] ?? 1,\n    IsMLDisabled: p.is_ml_disabled ?? false,\n    IsSelfAssessmentMode: p.is_self_assessment_mode ?? false,\n    DisclaimerDetail: p.disclaimer_detail\n      ? {\n          title: p.disclaimer_detail.title ?? \"\",\n          body: p.disclaimer_detail.body ?? \"\",\n          continueButtonTitle: p.disclaimer_detail.continue_button_title ?? \"Continue\",\n          showDisclaimer: p.disclaimer_detail.show_disclaimer ?? false,\n        }\n      : null,\n    ProductAssetDetail: p.product_asset_detail\n      ? { imageURL: p.product_asset_detail.image_url ?? null, body: p.product_asset_detail.body ?? null }\n      : null,\n    ScanImageDetail: p.scan_image_detail ? { ImageUrl: p.scan_image_detail.image_url ?? null } : null,\n    Instructions: (p.instructions ?? []).map(\n      (s: any): RapidTestInstruction => ({\n        NavigationTitle: s.navigation_title ?? \"\",\n        Type: s.type ?? \"\",\n        Title: s.title ?? \"\",\n        Body: s.body ?? null,\n        ButtonTitle: s.button_title ?? \"\",\n        TimeInSeconds: s.time_in_seconds ?? 0,\n        AutoStartTimer: s.auto_start_timer ?? false,\n        AutoContinue: s.auto_continue ?? false,\n        CanContinue: s.can_continue ?? false, // never default to true (checklist #3)\n        ImageUrl: s.image_url ?? null,\n        VideoUrl: s.video_url ?? null,\n        SkipTestTimer: s.skip_test_timer ?? false,\n        SkipTestButtonTitle1: s.skip_test_button_title1 ?? \"\", // empty = no button (checklist #4)\n        SkipTestButtonTitle2: s.skip_test_button_title2 ?? \"\",\n        SkipTestBody: s.skip_test_body ?? \"\",\n        SupportButtonTitle: s.support_button_title ?? null,\n        ShowBackButton: s.show_back_button ?? true,\n        SequenceOrder: s.sequence_order ?? 0,\n      })\n    ),\n    Analytes: (p.analytes ?? []).map(\n      (a: any): RapidTestAnalyte => ({\n        _id: a.id,\n        name: a.name ?? \"\",\n        display: a.display ?? \"\", // keep exactly as sent (checklist #5)\n        question: a.question ?? \"\",\n        image: a.image ?? null,\n        responses: (a.responses ?? []).map((r: any, i: number) => ({\n          value: r.value,\n          storedValue: r.stored_value ?? r.value, // must be unique within the analyte\n          cvmlValue: r.cvml_value ?? \"\",\n          score: String(r.score ?? 0),\n          displayOrder: r.display_order ?? i,\n        })),\n      })\n    ),\n    // Only CVML connectors need TestInfo's cvmlDuration/isCVMLResult; without it the\n    // upload uses the scanned GTIN. Generic-poll connectors can leave it null.\n    DiagnosticProfile: null,\n    // The lookup's upload URL, with its expiry as an absolute time (see 5.5).\n    UploadInfo: res.scan_upload?.upload_url\n      ? {\n          preSignedURL: res.scan_upload.upload_url,\n          uploadId: res.scan_upload.test_id,\n          expiresAt: res.scan_upload.expires_in ? Date.now() + res.scan_upload.expires_in * 1000 : undefined,\n        }\n      : null,\n  };\n}\n```\n\n`hc-sdk` documents `scan_upload` as present only for kits that support SAFE CDX image processing, although current lookups also return it for other kits (e.g. Winx UTI). If a lookup has no `scan_upload`, there is no test ID, and the flow shows \"Wrong Code\". Raise that with the backend team rather than inventing an ID.\n\nField names such as `disclaimer_detail` and `stored_value` are examples. Check them against a real response from your backend, and remove what your backend doesn't send.\n\n### 5.9 Checking your mapping\n\nBefore shipping a new backend or product:\n\n1. **Log one real response and your mapped object side by side**, and check each row of [5.2](#52-product--rapidtestproductdata) against it, especially `ID`, `CaptureMethod`, the names and the image URLs.\n2. **Walk through the instructions on a device.** Timer steps should not show \"Skip Timer\" unless the backend enables it, button labels should match the backend's, and the product screen should show the image and the \"What's included\" list.\n3. **Complete a test end to end**, including one retake, and confirm the upload still succeeds after the longest timer step.\n4. **Check the question screens.** Every analyte you expect is asked, and the answers your backend receives match the options chosen.\n\n---\n\n## 6. Theme Setup\n\nWrap your app root (or the screen group that contains `RapidTestContainer`) with `RapidTestThemeProvider`. All rapid test screens read colour from this context — you do not need to pass `primaryColor` props.\n\n**Light/dark mode is automatic.** The package uses `useColorScheme()` to detect the device/app's current appearance and switches between built-in light and dark default palettes on its own — no extra setup required. `theme`/`darkTheme` below apply as overrides on top of whichever mode is currently active.\n\n```typescript\n// app/_layout.tsx (Expo Router root)\nimport { RapidTestThemeProvider } from \"@healthcloudai/hc-rapid-test-ui\";\n\nexport default function RootLayout() {\n  return (\n    <RapidTestThemeProvider\n      theme={{ primary: \"#003C71\" }}       // applied in light mode\n      darkTheme={{ primary: \"#5B8DBF\" }}   // applied in dark mode\n    >\n      {/* rest of your app */}\n    </RapidTestThemeProvider>\n  );\n}\n```\n\nIf your app already has its own dual-mode brand theme, pass both `theme` and `darkTheme` once — the package picks the right one automatically based on the active color scheme, so you don't need your own `useColorScheme()` check to decide which to pass. If you only care about light mode (or are fine with the package's own dark defaults), omit `darkTheme` entirely. To force one palette regardless of the OS setting, pass the same full theme object as both `theme` and `darkTheme`.\n\nThe same `theme`/`darkTheme` fields are also accepted on `RapidTestConfig` (passed to `useRapidTest`/`RapidTestContainer`'s `config`), for apps that don't use `RapidTestThemeProvider` directly.\n\nAll fields are optional on both `theme` and `darkTheme` — unset fields fall back to the built-in default for the active mode:\n\n| Field | Light default | Dark default | Purpose |\n|---|---|---|---|\n| `primary` | `#003C71` | `#5B8DBF`* | Buttons, progress bars, highlights, hero cards |\n| `onPrimary` | `#FFFFFF` | `#0A0A0A`* | Text/icons on top of a `primary`-colored surface (e.g. filled button label) |\n| `background` | `#F5F5F5` | `#121212`* | Screen background |\n| `card` | `#FFFFFF` | `#1E1E1E`* | Card and surface backgrounds |\n| `text` | `#1A1A1A` | `#F5F5F5`* | Primary text |\n| `textSecondary` | `#666666` | `#A0A0A0`* | Muted / secondary text |\n| `border` | `#E0E0E0` | `#333333`* | Dividers and borders |\n| `divider` | `rgba(0,0,0,0.06)` | `rgba(255,255,255,0.08)` | Low-opacity separator/tint backgrounds (list dividers, subtle section backgrounds) |\n| `accent` | `#5B21B6` | `#8B5CF6`* | Secondary call-to-action accent, distinct from `primary` (e.g. telehealth prompt CTA) |\n| `success` / `successSoft` | `#16A34A` / `#F0FDF4` | `#4ADE80`* / `rgba(74,222,128,0.12)` | Positive/success status (solid + tinted background pair) |\n| `warning` / `warningSoft` | `#D97706` / `#FFFBEB` | `#FBBF24`* / `rgba(251,191,36,0.12)` | Borderline/warning status |\n| `error` / `errorSoft` | `#DC2626` / `#FEF2F2` | `#F87171`* / `rgba(248,113,113,0.12)` | Negative/error status |\n| `info` / `infoSoft` | `#2563EB` / `#EFF6FF` | `#60A5FA`* / `rgba(96,165,250,0.12)` | Neutral/informational status |\n\n\\* Dark-mode values marked with an asterisk are a first pass pending design review — functionally complete and verified to have no unaccounted hardcoded colors anywhere in the package, but the exact dark palette may be revised in a future patch. Override any of these via `darkTheme` in the meantime if you need specific values sooner.\n\n### Brand font\n\nPass `fontFamily` on `RapidTestThemeProvider` (or `RapidTestConfig`) to render the package's text in your brand font instead of the OS system font (San Francisco/Roboto). Unlike `theme`/`darkTheme`, this is **not** duplicated per light/dark mode — set it once, it applies in both:\n\n```tsx\n<RapidTestThemeProvider\n  theme={{ primary: \"#YOUR_BRAND_COLOR\" }}\n  fontFamily={{ regular: \"Inter-Regular\", semibold: \"Inter-SemiBold\", bold: \"Inter-Bold\" }}\n>\n  <RapidTestContainer config={config} />\n</RapidTestThemeProvider>\n```\n\nOnly `regular` is required — each other weight falls back to the next-lightest one you provide (`bold` → `semibold` → `medium` → `regular`) if omitted. The font must already be loaded/linked by your app (e.g. via `expo-font` or a native font asset); this package only applies the name you give it, it doesn't load fonts itself. Omit `fontFamily` entirely to keep today's system-font rendering.\n\n---\n\n## 7. Mounting `RapidTestContainer`\n\nMount `RapidTestContainer` in the same screen (or screen group) that calls `useRapidTest`. It listens to the event bus and renders all phase screens as modals on top of whatever is behind it.\n\n```typescript\nimport { RapidTestContainer, useRapidTest } from \"@healthcloudai/hc-rapid-test-ui\";\nimport { createRapidTestConnector } from \"@/services/rapidTestConnectorAdapter\";\n\n// Construct connector once — typically in a hook or context\nconst connector = useMemo(() => createRapidTestConnector(sdk.diagnostics, patientId), [sdk, patientId]);\n\nconst { presentFlow, cancelFlow } = useRapidTest({ connector });\n\nreturn (\n  <View style={{ flex: 1 }}>\n    <RapidTestContainer config={{ connector }} />\n    {/* rest of your screen */}\n  </View>\n);\n```\n\n`RapidTestContainer` accepts a `config` prop identical to the `useRapidTest` config:\n\n```typescript\ninterface RapidTestContainerProps {\n  config: {\n    connector: RapidTestConnector;    // required\n    strings?: Record<string, string>; // optional i18n overrides (see Section 11)\n    translate?: (key: string) => string; // optional i18n fallback\n    logger?: (level: \"debug\"|\"info\"|\"warn\"|\"error\", message: string, meta?: object) => void;\n  };\n}\n```\n\n---\n\n## 8. Starting the Flow — `useRapidTest`\n\n```typescript\nconst { presentFlow, cancelFlow } = useRapidTest({\n  connector,  // RapidTestConnector adapter\n});\n```\n\n### `presentFlow(input)`\n\nStarts the full phase flow. Returns a Promise that resolves when the flow finishes or the user cancels.\n\n```typescript\npresentFlow({\n  gtin?: string;           // optional — skips the barcode scan phase if provided\n  onComplete: (userTestResultId: string) => void;\n  onCancel: () => void;\n  onError?: (error: RapidTestError) => void;\n});\n```\n\n**Examples:**\n\n```typescript\n// Show barcode scanner first (no gtin)\npresentFlow({\n  onComplete: (id) => router.replace({ pathname: \"/(rapid-test)/result\", params: { id } }),\n  onCancel: () => router.back(),\n  onError: (err) => console.error(err.code, err.message),\n});\n\n// Skip scanner — from deep link, notification, or AI chat\npresentFlow({\n  gtin: \"00850026790018\",\n  onComplete: (id) => router.replace({ pathname: \"/(rapid-test)/result\", params: { id } }),\n  onCancel: () => router.back(),\n});\n```\n\n### `cancelFlow()`\n\nStops the in-progress flow: aborts any CVML/generic poll, dismisses whichever screen is showing, and makes the pending `presentFlow()` promise resolve. It does **not** call `onComplete`, `onCancel` or `onError` — you initiated the cancel, so no callback is needed (and calling `onCancel` from an unmount cleanup could, for example, navigate back twice). Calling `presentFlow` again while a flow is running cancels the previous flow the same way.\n\nCall this in your screen's `useEffect` cleanup to handle unmount mid-flow:\n\n```typescript\nuseEffect(() => {\n  presentFlow({ ... });\n  return () => cancelFlow();\n}, []); // eslint-disable-line react-hooks/exhaustive-deps\n```\n\n---\n\n## 9. Flow Phases & Screen Reference\n\nEach phase is awaited by `presentFlow` before advancing. The built-in screens handle all user interaction — you only need the `onComplete` / `onCancel` / `onError` callbacks.\n\n| Phase | Screen | Triggered when | What it does |\n|---|---|---|---|\n| 1 | `ScanScreen` | No `gtin` provided | Barcode scanner (camera or web QR). Resolves with the **complete scanned code**, unmodified (for a GS1 DataMatrix: GTIN, expiry, lot, serial…), which goes to `getTestProfileByGTIN`. |\n| 2 | `ProductDetailScreen` | After GTIN resolved | Shows product name, hero image, description. \"Start Test\" continues. |\n| 3 | `DisclaimerScreen` | `product.DisclaimerDetail.showDisclaimer === true` | Shows legal/medical disclaimer. Must agree to continue. |\n| 4 | `InstructionFlowScreen` | After disclaimer (not shown again on retake) | Steps, countdown timers, and video instructions from the API. Supports back navigation, skip-timer, and support contact sheet. |\n| 5 | `TestCaptureScreen` | After instructions | Camera viewfinder with overlay image, autofocus, tap-to-focus. Confirms preview before upload. Uploads to S3 and triggers CVML. |\n| 6 | `ProcessingScreen` | During upload + CVML polling | Animated spinner with configurable message. |\n| 6b | `PostTestScreen` | Legacy CVML connectors only: CVML resolves `resumeNext: \"PostTestQuestions\"` and at least one analyte has `display` `\"Post-Test\"` (or `\"Validity\"` with `showValidity`); otherwise skipped | Question-per-screen Q&A for analyte results. Includes review + attestation phase before submit. |\n| 6c | `SelfReportScreen` | Legacy CVML connectors only: CVML resolves `resumeNext: \"SelfReporting\"`, non-CVML timeout, or failover | Same Q&A flow as PostTestScreen but for manual result entry. Shows a \"Automated reading unavailable\" banner on failover. |\n| 7 | `ResultsScreen` | After finalize + result fetch | Full test record detail — hero card, indication, recommendation, CTA, analyte rows, captured image, PDF download. |\n\n### Generic-poll connector behavior\n\nConnectors that implement `pollResult` (every `hc-sdk` connector, see [Section 4](#4-connector-adapter)) skip the CVML trigger during Phase 6 and skip Phases 6b/6c's post-test Q&A entirely: a completed poll proceeds straight to Phase 7, Results. Retakes and manual-entry failover belong to the legacy CVML path and don't happen here; a failed test ends the flow with `onError`.\n\n### Instruction skip button\n\nAny instruction step (`RapidTestInstruction`) whose `SkipTestButtonTitle1` is set shows a skip button, regardless of step type — this is data-driven, not limited to timer steps. Confirming it (via its own `SkipTestBody`/`SkipTestButtonTitle1`/`SkipTestButtonTitle2`-driven confirmation sheet) ends the instructions phase immediately and proceeds straight to the Capture screen, skipping any remaining steps. A step with `SkipTestButtonTitle1` unset shows no new confirm-then-capture button.\n\nSeparately, the pre-existing \"Skip Timer\" button on timer steps is unchanged and behaves exactly as before this change: it renders when either `SkipTestTimer` or `CanContinue` is set, and `SkipTestTimer` takes priority when both are set. With `SkipTestTimer: true`, tapping it opens a legacy confirmation sheet (the same `SkipTestBody`/`SkipTestButtonTitle1`/`SkipTestButtonTitle2` fields, in its own sheet instance with independent visibility state) and confirming advances one step. With only `CanContinue: true`, tapping it advances one step immediately with no sheet.\n\nThese are three independent conditionals — the legacy \"Skip Timer\" button, its legacy sheet, and the new `SkipTestButtonTitle1` button/sheet pair — and can all render together on a timer step that sets fields for both (no product does today).\n\n### Review phase (PostTestScreen & SelfReportScreen)\n\nAfter answering all questions, both screens enter a review phase before submitting:\n\n- Header shows the product name\n- All answers displayed in a card with hairline separators\n- \"Edit My Results\" returns to question 1 with answers preserved\n- Attestation checkbox: *\"I attest that the results I'm reporting are correct and my own.\"*\n- Continue button is disabled (opacity 0.4) until attested\n- Shows `ActivityIndicator` while submitting\n\n---\n\n## 10. Result Data — Types & Field Guide\n\n`onComplete(userTestResultId, resultData?)` gives you the test ID and, when the built-in results screen was shown, the `RapidTestResultData` it displayed, so you don't need to fetch it again. `resultData` is `undefined` when the flow ends through manual result entry after a failover or a non-CVML timeout; call `connector.getResultDetails(id)` in that case. How to build this object from your backend is covered in [Section 5.7](#57-results--rapidtestresultdata).\n\n```typescript\ninterface RapidTestResultData {\n  userTestResultId: string;\n  testName: string | null;\n  status: string;                          // \"Completed\" | \"Invalid\" | ...\n  completedAt: string | null;              // ISO 8601\n  analytes: RapidTestResultAnalyte[];\n  indication: RapidTestResultIndication | null;\n  cta: RapidTestResultCta | null;\n  capturedImageUrl: string | null;\n  pdfUrl: string | null;\n  productImageUrl?: string | null;         // product image on the hero card\n}\n\ninterface RapidTestResultAnalyte {\n  name: string;                            // e.g. \"COVID-19\"\n  result: string;                          // e.g. \"Negative\"\n  status: \"positive\" | \"negative\" | \"invalid\" | \"pending\" | string;\n  rawValue?: number;\n}\n\ninterface RapidTestResultIndication {\n  id: string;\n  title: string;                           // e.g. \"Negative Result\"\n  text: string;                            // clinical interpretation paragraph\n  recommendTitle: string;                  // heading for recommendation\n  recommendText: string;                   // recommendation body\n  ctaId: string;\n}\n\ninterface RapidTestResultCta {\n  id: string;\n  title: string;                           // e.g. \"Book Telehealth\"\n  instructions: string;\n  linkType: \"url\" | \"questionnaire\" | string;\n  linkText: string;\n  linkValue: string;                       // URL or questionnaire ID\n}\n```\n\n### Built-in `ResultsScreen`\n\nThe built-in `ResultsScreen` (Phase 7) renders these sections automatically from `RapidTestResultData`:\n\n| Section | Shown when | Content |\n|---|---|---|\n| **Hero card** | Always | `status` badge (uppercased) + `testName` (default \"Test Result\"), plus the product image when `productImageUrl` is set |\n| **Indication** | `indication !== null` | Colour-coded card (red/green/amber/blue by keyword), `indication.title` + `indication.text` |\n| **Recommendation** | `indication.recommendTitle` or `indication.recommendText` present, and no CTA card | `indication.recommendTitle` heading + `indication.recommendText` body |\n| **CTA card** | `cta !== null` | Purple card with `cta.title`, `cta.instructions`, and a link button opening `cta.linkValue` |\n| **Analyte results** | `analytes.length > 1` (combo tests only) | Rows: `analyte.name` → `analyte.result` |\n| **Captured image** | `capturedImageUrl !== null` | Test strip photo |\n| **PDF download** | `pdfUrl !== null` | Calls `config.onViewPDF(pdfUrl)` if provided, otherwise opens it with `Linking.openURL` |\n| **Done button** | Always | Calls `onDone`, which triggers `onComplete` in the flow |\n| **Telehealth prompt** | CTA present and user taps ✕ | Bottom sheet asking \"Get Started\" or \"Maybe Later\" before closing |\n\n### Building your own result screen\n\nIf you prefer to build a custom result screen, navigate to it from `onComplete` and call `getResultDetails` yourself:\n\n```typescript\n// app/(rapid-test)/result.tsx\nimport { useLocalSearchParams } from \"expo-router\";\nimport { useRapidTestConnector } from \"@/hooks/useRapidTestConnector\";\n\nexport default function ResultScreen() {\n  const { id } = useLocalSearchParams<{ id: string }>();\n  const connector = useRapidTestConnector();\n  const [result, setResult] = useState<RapidTestResultData | null>(null);\n\n  useEffect(() => {\n    connector.getResultDetails(id).then((res) => {\n      if (res.IsOK && res.Data) setResult(res.Data);\n    });\n  }, [id]);\n\n  if (!result) return <ActivityIndicator />;\n\n  return (\n    <ScrollView>\n      {/* Hero */}\n      <Text>{result.testName}</Text>\n      <Text>{result.status}</Text>\n\n      {/* Per-analyte results */}\n      {result.analytes.map((a) => (\n        <View key={a.name}>\n          <Text>{a.name}</Text>\n          <Text>{a.result}</Text>\n        </View>\n      ))}\n\n      {/* Clinical indication */}\n      {result.indication && (\n        <View>\n          <Text>{result.indication.title}</Text>\n          <Text>{result.indication.text}</Text>\n          <Text>{result.indication.recommendTitle}</Text>\n          <Text>{result.indication.recommendText}</Text>\n        </View>\n      )}\n\n      {/* CTA */}\n      {result.cta && (\n        <Pressable onPress={() => Linking.openURL(result.cta!.linkValue)}>\n          <Text>{result.cta.title}</Text>\n        </Pressable>\n      )}\n\n      {/* PDF */}\n      {result.pdfUrl && (\n        <Pressable onPress={() => Linking.openURL(result.pdfUrl!)}>\n          <Text>Download PDF Report</Text>\n        </Pressable>\n      )}\n    </ScrollView>\n  );\n}\n```\n\n---\n\n## 11. Localisation (i18n)\n\nThe backend returns raw localisation keys for CVML error titles and messages (e.g. `ml_result_code_error_02_title`). The package ships built-in English strings for all known keys — no configuration needed for English apps.\n\n### Resolution order (highest → lowest priority)\n\n1. `config.strings[key]` — your per-key override\n2. Built-in English defaults (`defaultStrings`)\n3. `config.translate(key)` — your i18n library\n4. Raw key as-is (should not appear in production)\n\n### Built-in English keys\n\n| Key | Default value |\n|---|---|\n| `ml_result_code_invalid_title` | Processing Failed |\n| `ml_result_code_invalid_msg` | We could not process your image. Please try again. |\n| `ml_result_code_error_01_title` | Image Quality is Poor |\n| `ml_result_code_error_01_msg` | Try retaking the picture in a well lit area with even lighting. Make sure the entire device is clearly visible in the photo. |\n| `ml_result_code_error_02_title` | Image is Tilted |\n| `ml_result_code_error_02_msg` | The angle of the photo may be too extreme. Try retaking the picture directly over the device without tilting the phone. |\n| `ml_result_code_error_03_title` | Image Quality is Poor |\n| `ml_result_code_error_03_msg` | Try retaking the picture in a well lit area with even lighting. |\n| `ml_result_code_error_04_title` | Unable To Process |\n| `ml_result_code_error_04_msg` | Try again. If you still experience issues, contact support. |\n| `ml_result_code_error_05_title` | Device is Not Powered |\n| `ml_result_code_error_05_msg` | Plug in your test device. Try a different power outlet. |\n| `ml_result_code_error_06_title` | Test in Progress |\n| `ml_result_code_error_06_msg` | Check the progress lights. If at least one progress light is blinking, wait for the green 'ready' light and retake the picture. If all progress lights are off, contact customer support. |\n| `ml_result_code_error_07_title` | Temperature Out of Range |\n| `ml_result_code_error_07_msg` | Make sure the room temperature is 55–88°F. |\n| `ml_result_code_error_08_title` | Glare or Shadow Detected |\n| `ml_result_code_error_08_msg` | The picture had glare or uneven lighting. Avoid direct overhead light, shadows, or bright light and try retaking the picture. |\n| `ml_result_code_error_09_title` | Picture is Blurry |\n| `ml_result_code_error_09_msg` | Try holding still when retaking the picture. |\n| `ml_result_code_error_10_title` | Device Not Detected |\n| `ml_result_code_error_10_msg` | Make sure the device is on a non-white background, is within the guides, and there are no other objects in the picture. |\n\n### Overriding individual strings\n\n```tsx\n<RapidTestContainer\n  config={{\n    connector,\n    strings: {\n      ml_result_code_error_02_title: \"Photo is Tilted\",\n      ml_result_code_error_02_msg: \"Hold the phone directly above the device and try again.\",\n    },\n  }}\n/>\n```\n\n### Plugging in your own i18n library\n\n```tsx\nimport i18n from \"./i18n\"; // e.g. i18next\n\n<RapidTestContainer\n  config={{\n    connector,\n    translate: (key) => i18n.t(key),\n  }}\n/>\n```\n\n### Spreading `defaultStrings` into your translation file\n\n```typescript\nimport { defaultStrings } from \"@healthcloudai/hc-rapid-test-ui\";\n\n// en.ts\nexport default {\n  ...defaultStrings,\n  ml_result_code_error_02_title: \"Photo is Tilted\",\n};\n```\n\n---\n\n## 12. Error Codes\n\n`onError` receives a `RapidTestError`:\n\n```typescript\ninterface RapidTestError {\n  code: string;\n  message: string;\n  title?: string;\n}\n```\n\n| Code | Trigger | Behaviour |\n|---|---|---|\n| `PROFILE_FAILED` | `getTestProfileByGTIN` returned `IsOK: false` or no `ID` | **Handled internally**: \"Wrong Code\" screen. \"Try Again\" restarts the flow; \"Cancel\" calls `onCancel` |\n| `CAMERA_MOUNT_ERROR` | The barcode scanner's camera failed to start | **Handled internally**: \"Camera Unavailable\" screen with \"Try Again\" / \"Cancel\" |\n| `SCAN_CANCELLED` | User dismissed the barcode scanner | Calls `onCancel`, not `onError` |\n| `UPLOAD_URL_FAILED` | The lookup's upload URL expired and `createUploadUrl` failed, or there is no upload URL at all | Calls `onError` |\n| `UPLOAD_ID_MISSING` | `createUploadUrl` returned no `Metadata.UploadId` | Calls `onError` |\n| `S3_PUT_FAILED` | `uploadImage` returned `IsOK: false` (e.g. an expired URL) | Calls `onError` |\n| *your `error.code`* | `pollResult` returned `status: \"failed\"` with an `error` | Calls `onError` with that error |\n| `TERMINAL` | `pollResult` returned `status: \"failed\"` without an `error` (legacy CVML: `cvmlStatus: \"Terminate\"`) | Calls `onError` |\n| `TIMEOUT` | Still processing after 2 minutes of `pollResult` (legacy CVML: after `cvmlDuration` seconds) | Calls `onError` |\n| `CONNECTION_LOST` | 5 failed `pollResult` calls in a row (legacy CVML: 15 `getCvmlResults`) | Calls `onError` |\n| `RESULT_FAILED` | `getResultDetails` returned `IsOK: false` | Calls `onError` |\n| `NON_CVML_TIMEOUT` | Legacy CVML only: non-CVML product, no result after 4 polls | **Handled internally**: falls through to `SelfReportScreen` |\n| `RETAKE` | Legacy CVML only: image quality too low (up to 3 retakes) | **Handled internally**: retake dialog; \"Try Again\" returns straight to the Capture screen |\n| `RETAKE_FAILOVER` | Legacy CVML only: max retakes exceeded or `failoverTriggered: true` | **Handled internally**: offers manual entry via `SelfReportScreen` |\n| `FINALIZE_FAILED` | Legacy CVML only: `finalizeTest` returned `IsOK: false` | Calls `onError` |\n| `UNKNOWN` | Unexpected exception | Calls `onError` |\n\nCodes marked **Handled internally** show built-in error dialogs inside `RapidTestContainer`. Your `onError` only receives codes that are not recoverable within the flow.\n\n---\n\n## 13. Expo Router — Complete Integration Example\n\n### File structure\n\n```\napp/\n  (rapid-test)/\n    _layout.tsx                 ← modal group\n    index.tsx                   ← mounts container + starts flow\n    result.tsx                  ← your custom result screen (optional)\nhooks/\n  useRapidTestConnector.ts      ← builds connector from auth context\nservices/\n  rapidTestConnectorAdapter.ts  ← maps hc-sdk DiagnosticsClient → RapidTestConnector\n```\n\n### `app/(rapid-test)/_layout.tsx`\n\n```typescript\nimport { Stack } from \"expo-router\";\n\nexport default function RapidTestLayout() {\n  return (\n    <Stack screenOptions={{ headerShown: false, animation: \"slide_from_bottom\" }} />\n  );\n}\n```\n\n### `app/(rapid-test)/index.tsx`\n\n```typescript\nimport React, { useEffect, useMemo } from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport { router, useLocalSearchParams } from \"expo-router\";\nimport { RapidTestContainer, useRapidTest } from \"@healthcloudai/hc-rapid-test-ui\";\nimport { useRapidTestConnector } from \"@/hooks/useRapidTestConnector\";\n\nexport default function RapidTestScreen() {\n  const { gtin } = useLocalSearchParams<{ gtin?: string }>();\n  const connector = useRapidTestConnec","readmeFilename":""}