{"_id":"@canopypay/react-checkout","_rev":"11-6e20767667e65f651301637b08f37c2b","name":"@canopypay/react-checkout","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@canopypay/react-checkout","version":"0.1.0","_id":"@canopypay/react-checkout@0.1.0","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"e3b348affe152ae091592400f596acec562131cc","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.0.tgz","fileCount":51,"integrity":"sha512-4UJtxf4VSkQEKwxYjoZAVFA0Ddlz5qmd0VhhPw9N27212yW1VGLalGFu9vD1ubRVAJ9Q3404Nt3NQDEU2BOD3Q==","signatures":[{"sig":"MEYCIQDSxjZ3r3Jlzid5q0pbFxp/u3YalLRrFlWDGbOWmSI58wIhAJX8GxytssTJyi4f9s1jgXwX6bAzAz/q+gjl8eX1zdlF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537383},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"11.19.1","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.0","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.0_1789066198288_0.15273101494355767","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@canopypay/react-checkout","version":"0.1.1","_id":"@canopypay/react-checkout@0.1.1","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"1d46260fc13120a023beb9f05ee7f4cbe9951bfa","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.1.tgz","fileCount":59,"integrity":"sha512-+qRZaEvDrkvlybIfum87dZE+2tMVHIYsvXnAWWap2wv1CCLgTPCLjgh2tmFRRnuHKBMC6JwkRU2Po8+bZQ3bGg==","signatures":[{"sig":"MEUCIQDnjSv2RJqhNcJ7SC41sRgCE2F6ZFlTm3TgjDFNz14+CQIgR6NzzuGuY8LK6hjyZMNuG8UjQkajHppT4QdYMy8w1K8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1547097},"main":"./dist/index.cjs","type":"module","_from":"file:/tmp/canopypay-react-checkout-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_resolved":"/tmp/canopypay-react-checkout-0.1.1.tgz","_integrity":"sha512-+qRZaEvDrkvlybIfum87dZE+2tMVHIYsvXnAWWap2wv1CCLgTPCLjgh2tmFRRnuHKBMC6JwkRU2Po8+bZQ3bGg==","_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.1_1789105463320_0.9955856163877641","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@canopypay/react-checkout","version":"0.1.2","_id":"@canopypay/react-checkout@0.1.2","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"251f7c1102cdb563c1b75c39f40ea3a3f8278e6d","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.2.tgz","fileCount":59,"integrity":"sha512-3CccnsdMnFxl2EvEEGXhqgQMHEwP35WfXceEKQOgpEp2HdJOWkRfFyhAJSq7ryGQYrv/FYRxhN8z3XosNNJnGQ==","signatures":[{"sig":"MEUCIQCY9sxIm6DekZdrVajMKSfSLYoRnIvad73emElueGGUMAIgep/B1RlYduyCDgOLsnEhYtWXo/A0orO/sLcnsDjpt7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1444258},"main":"./dist/index.cjs","type":"module","_from":"file:/tmp/canopypay-react-checkout-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_resolved":"/tmp/canopypay-react-checkout-0.1.2.tgz","_integrity":"sha512-3CccnsdMnFxl2EvEEGXhqgQMHEwP35WfXceEKQOgpEp2HdJOWkRfFyhAJSq7ryGQYrv/FYRxhN8z3XosNNJnGQ==","_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.2_1789118129448_0.040970921753981315","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@canopypay/react-checkout","version":"0.1.3","_id":"@canopypay/react-checkout@0.1.3","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"73e7cf35ae2cdac4ec4e5b0d5ec6cfc2cbdfb0d9","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.3.tgz","fileCount":57,"integrity":"sha512-9vbT4os1LS34hp9Sg8qnlZbSoIUYjgd1yfTttZ5luvDAjIA/VJ6gmmJCjtCAzpdBgWUYgk3ohp3LX4RHd/5Odg==","signatures":[{"sig":"MEYCIQCJi9Y7EX4B81L8xW3xuO2CcKJ3wEAaYq9QBNdeg4Mk0gIhAP+tKyz4hVQGUM075IDJVbCD0vyDKOdgKebFUfpqJ+Y3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1449860},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"10.8.2","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.0","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.3_1789127613885_0.9115389210733731","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@canopypay/react-checkout","version":"0.1.4","_id":"@canopypay/react-checkout@0.1.4","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"023d55d5104baaf2f48c69a19e7ce064e905785a","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.4.tgz","fileCount":57,"integrity":"sha512-X89+UdsmUian+hIKxLeGKwiK8+Mfdqj0rW6JzNUN2R7Vrr0UpZCqv2iiCu+NWyUnm3S/UOt/blTo8+SYUT1PYA==","signatures":[{"sig":"MEUCIFhxd2EksXR6Jfjorfi428IvqBScFO3gwwq5vkpHp8w8AiEAtItPe/2UYYgBmI7y8Oa1XLLdrciUwThxwZrltevzCoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1454342},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"10.8.2","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.0","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.4_1789138175883_0.8066131084976567","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@canopypay/react-checkout","version":"0.1.5","_id":"@canopypay/react-checkout@0.1.5","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"6e0055541a4f753e5dafa19d8af2a735814282f4","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.5.tgz","fileCount":57,"integrity":"sha512-SGNxIw0fwvvYzqep4eARiyPqyR/90K+v31zKO9Z6mZkhee778eE9G7U0uhPKxGMhA5j44rGmA3iZb2/k0O+Thw==","signatures":[{"sig":"MEQCIGEDKu5/CTAkSFwpIMdpNcP85VKblgYIE/ZJqDTrxQ/QAiAXn4hDfCblQvafxG5T8lvAnlsA2KgnbDo7yqoJmh/gIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1454430},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.5_1789146536010_0.1797916992027495","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@canopypay/react-checkout","version":"0.1.6","_id":"@canopypay/react-checkout@0.1.6","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"8aff1d41f0e4c4e6d1480efacfdb0540ab94ca26","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.6.tgz","fileCount":57,"integrity":"sha512-a8dpdosszAbqnUqIocSanHZ5Gfyoicq6Pden8G22ZzTX2G8+36gU08nss7x2Dh0ato0Ko1VauImZ7lDTWNuCCg==","signatures":[{"sig":"MEUCIQDMJMzX/IArOn6e05Jrv9haTwlW9uMS5hPsHAD7hFu5ZAIgMNThJqN8gVKxECoYuUJ3eEY2xocxipzCFyXNw2TZiVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1516117},"main":"./dist/index.cjs","type":"module","_from":"file:/private/tmp/canopy-sdk-release-artifacts/canopypay-react-checkout-0.1.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_resolved":"/private/tmp/canopy-sdk-release-artifacts/canopypay-react-checkout-0.1.6.tgz","_integrity":"sha512-a8dpdosszAbqnUqIocSanHZ5Gfyoicq6Pden8G22ZzTX2G8+36gU08nss7x2Dh0ato0Ko1VauImZ7lDTWNuCCg==","_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.6_1789194321067_0.769380631143048","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@canopypay/react-checkout","version":"0.1.7","_id":"@canopypay/react-checkout@0.1.7","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"5ae16b0eb6f427eec4d67deeb2314742a14a64ab","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.7.tgz","fileCount":57,"integrity":"sha512-XUyzz7+eaNZrQUMQu4BBvgVMQVYNddMZDbf7kIZBZ5k0EOZeVz9MW6iQ1I89E2O92n9l6IfXrog/NBn3xGoUnw==","signatures":[{"sig":"MEUCIEfHTk+W7nr98AYC50fDoEnbLH3CDfaGLA1YDK+oSZimAiEA0mX4xNiQAKBjHErsMg/kvfjFFlDlEUB1BjuP14bv5eY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1516650},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.7_1789197453423_0.6279478688314146","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@canopypay/react-checkout","version":"0.1.8","_id":"@canopypay/react-checkout@0.1.8","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"4a813fd9e74e43ea9a2d76aeeb3ad89ac95c2b4f","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.1.8.tgz","fileCount":57,"integrity":"sha512-QERm/duW1MIddGbtImE3YS7nGXc7JVLtm0rflJyfG7zNy+Km1N8e1pYzET/9AJ43JQiM7Pz+zHq2tGELHFsBUg==","signatures":[{"sig":"MEUCIQDtGNDckTXOY9KrjzlwoFlT3ecH1YkuPymXGgVJ3RHIYgIgJ+iVlfIqF5ef86F7c/VOYwHHNaTET1xybhLuyz6gROE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1516573},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.1.8_1789198991309_0.5116909374641214","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@canopypay/react-checkout","version":"0.2.0","_id":"@canopypay/react-checkout@0.2.0","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"dist":{"shasum":"3cdb64f5e637938914a1150a0efee13efb6bf6d7","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.2.0.tgz","fileCount":55,"integrity":"sha512-wEyFLJCWqAfCT7z7GM9q8wHYq3s6FaebGy5ZRzYBWXnD8l4jo5juKWR6A5N7birUxFgdW5gfQTOeumgDo+uicw==","signatures":[{"sig":"MEUCIF/N4fPLBja8/EzuC0b0Teid/G0T24PrshznAt1O2XGAAiEA4lA2D2QvGjsuIryYrFBUs5e4lfqTDPhNQ7Zi4GG0He4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID0WqoUFngGXCjMB3uJ52SYOhfJpurfSrshCwDFQpOK1AiB8KJYzuvUR5cgejqzzZxdKD8AsJcS+QSNtgFuPiVT3+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1803195},"main":"./dist/index.cjs","type":"module","_from":"file:/private/tmp/canopy-sdk-artifacts/canopypay-react-checkout-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_resolved":"/private/tmp/canopy-sdk-artifacts/canopypay-react-checkout-0.2.0.tgz","_integrity":"sha512-wEyFLJCWqAfCT7z7GM9q8wHYq3s6FaebGy5ZRzYBWXnD8l4jo5juKWR6A5N7birUxFgdW5gfQTOeumgDo+uicw==","_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"zod":"3.25.76","use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-checkout_0.2.0_1790408094295_0.252915309707733","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"_id":"@canopypay/react-checkout@0.3.0","dist":{"shasum":"c1891101c39d095b055d8e5c41cf6d990b1b1b76","tarball":"https://registry.npmjs.org/@canopypay/react-checkout/-/react-checkout-0.3.0.tgz","fileCount":55,"integrity":"sha512-Ptie5Wa6pqook//OteK3r3HwNOXHT8yba0oPsxaOgDs5FU5s5q8Gz51sGqf9wlJgDEWHmZ1Q6sV+YCJUuWjrkA==","signatures":[{"sig":"MEUCIBrDAvRlxz1+Zorf8tPfThrlNkimIa2JJIVRWC3qkMEaAiEA8mPUJi3ejSgQJwLCKfxgau7gQX5Il0jBabHELV9S/n0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBBx8sp58GoAQAXQYF1vU3osB5mcAN6q1YrcT15/0IuJAiA2P+2c6BWH4LV6eHEYmGcYpWXXs66hUddYXqcPPFKigw=="}],"unpackedSize":1819691},"main":"./dist/index.cjs","name":"@canopypay/react-checkout","type":"module","_from":"file:/private/tmp/canopy-sdk-artifacts/canopypay-react-checkout-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsup --config tsup.config.ts && node scripts/build-css.mjs && node scripts/verify-package.mjs","prepublishOnly":"npm run build"},"version":"0.3.0","_npmUser":{"name":"contactcanopy","email":"contact@canopypay.io"},"_resolved":"/private/tmp/canopy-sdk-artifacts/canopypay-react-checkout-0.3.0.tgz","_integrity":"sha512-Ptie5Wa6pqook//OteK3r3HwNOXHT8yba0oPsxaOgDs5FU5s5q8Gz51sGqf9wlJgDEWHmZ1Q6sV+YCJUuWjrkA==","_npmVersion":"11.19.0","description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","directories":{},"maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"sideEffects":["**/*.css"],"_nodeVersion":"26.8.1","dependencies":{"zod":"3.25.76","use-sync-external-store":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^18.3.0 || ^19.0.0","react-dom":"^18.3.0 || ^19.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-checkout_0.3.0_1790408349773_0.5965737576058585"}}},"time":{"created":"2026-09-10T18:49:58.162Z","modified":"2026-09-26T07:39:10.064Z","0.1.0":"2026-09-10T18:49:58.424Z","0.1.1":"2026-09-11T05:44:23.506Z","0.1.2":"2026-09-11T09:15:29.610Z","0.1.3":"2026-09-11T11:53:34.024Z","0.1.4":"2026-09-11T14:49:36.105Z","0.1.5":"2026-09-11T17:08:56.155Z","0.1.6":"2026-09-12T06:25:21.216Z","0.1.7":"2026-09-12T07:17:33.629Z","0.1.8":"2026-09-12T07:43:11.468Z","0.2.0":"2026-09-26T07:34:54.385Z","0.3.0":"2026-09-26T07:39:09.888Z"},"description":"Native React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your ","maintainers":[{"name":"contactcanopy","email":"contact@canopypay.io"}],"readme":"# @canopypay/react-checkout\n\nNative React checkout using the same Canopy checkout UI and payment APIs as the hosted widget. It renders in your page without an iframe or Next.js runtime. Requires React and React DOM 18.3+ or 19, a browser bundler with dynamic import support, and your exact frontend origin registered against your Canopy merchant account.\n\n## 0.3.0\n\nAdds `useCheckout`, `useCheckoutStatus`, and typed `onReady`, `onDepositDetected`, `onPaid`, and `onError` callbacks. Existing `client` / `intentId` component integrations keep working. The hooks share lifecycle and widget event state; they add no payment polling or wallet prompts.\n\n## 0.2.0\n\nThis release decodes the versioned checkout status contract (`canopy.checkout.status` v1). It requires a Canopy server deploy that serves the contract; any deploy that includes it will do. The public component API is unchanged — the minor bump reflects the decoded payload, not your integration.\n\n0.1.x keeps working for one release: the server serves a superset with the legacy identity field still aliased at the top level. Upgrade before that compatibility window closes.\n\n## Integration\n\nCreate the payment intent on your backend as usual. Keep secret merchant keys there. Pass its ID and your **publishable** merchant key to your client component:\n\n```tsx\n\"use client\";\nimport { useMemo } from \"react\";\nimport {\n  CanopyCheckout,\n  createCheckoutClient,\n  preloadCheckout,\n} from \"@canopypay/react-checkout\";\nimport \"@canopypay/react-checkout/styles.css\";\n\nexport function Checkout({\n  intentId,\n  merchant,\n}: {\n  intentId: string | null;\n  merchant: string;\n}) {\n  const client = useMemo(() => createCheckoutClient({ merchant }), [merchant]);\n  return (\n    <CanopyCheckout\n      client={client}\n      intentId={intentId}\n      features={{ manualTransfer: true, walletPayment: true }}\n      onEvent={(event) => {\n        if (event.type === \"paid\") {\n          // Refresh your order from your backend. Webhooks remain authoritative.\n        }\n      }}\n    />\n  );\n}\n```\n\nImport the CSS once in your app's global CSS entry if your framework requires that. Styles are scoped to `.canopy-checkout`; theme defaults to light and `theme=\"dark\"` opts into dark mode. The host still controls the surrounding layout and can override styles.\n\n## Lifecycle hooks and sibling status\n\nCreate one flow with `useCheckout`, pass its `checkoutProps` to one widget, and pass the opaque `checkout` handle to sibling UI:\n\n```tsx\n\"use client\";\nimport { useMemo } from \"react\";\nimport {\n  CanopyCheckout,\n  createCheckoutClient,\n  useCheckout,\n  useCheckoutStatus,\n  type CheckoutHandle,\n} from \"@canopypay/react-checkout\";\nimport \"@canopypay/react-checkout/styles.css\";\n\nfunction PaymentStatus({ checkout }: { checkout: CheckoutHandle }) {\n  const status = useCheckoutStatus(checkout);\n  return (\n    <p aria-live=\"polite\">\n      {status.paid\n        ? \"Payment update received. Checking your order…\"\n        : status.depositDetected\n          ? \"Deposit detected\"\n          : status.ready\n            ? \"Ready to deposit\"\n            : status.preparing\n              ? \"Preparing checkout…\"\n              : \"Checkout waiting\"}\n    </p>\n  );\n}\n\nexport function Checkout({\n  merchant,\n  intentId,\n  refreshOrder,\n}: {\n  merchant: string;\n  intentId: string | null;\n  refreshOrder: () => void;\n}) {\n  const client = useMemo(() => createCheckoutClient({ merchant }), [merchant]);\n  const flow = useCheckout({ client, intentId, onPaid: refreshOrder });\n  return (\n    <section>\n      <CanopyCheckout {...flow.checkoutProps} />\n      <PaymentStatus checkout={flow.checkout} />\n      {flow.fatalError && (\n        <button\n          onClick={() => {\n            void flow.retry().catch(() => {});\n          }}\n        >\n          Retry checkout\n        </button>\n      )}\n      <button onClick={flow.reset}>Pause checkout</button>\n      <button\n        onClick={() => {\n          void flow.prepare().catch(() => {});\n        }}\n      >\n        Prepare or resume checkout\n      </button>\n    </section>\n  );\n}\n```\n\n`useCheckout` itself makes no request during render or server rendering. Mounting its widget automatically prepares a non-null intent. Before mounting, `await flow.prepare()` warms preparation without discovering wallets or submitting a payment. A null intent leaves preparation idle. Keep `client` stable with `useMemo` and create the intent on your backend.\n\n| Value or method            | Meaning                                                                                                                                                                                                                          |\n| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `preparing` / `prepared`   | Preparation is pending / verified preparation has completed. Neither means the widget is usable.                                                                                                                                 |\n| `shellReady`               | The widget shell reached its first animation frame.                                                                                                                                                                              |\n| `ready`                    | The widget reported that checkout is usable.                                                                                                                                                                                     |\n| `depositDetected` / `paid` | The widget has emitted that UI notification in this flow.                                                                                                                                                                        |\n| `error`                    | Most recent error, including nonfatal rejected theme variables.                                                                                                                                                                  |\n| `fatalError`               | `checkout_unavailable` or `invalid_features`; theme rejection does not set it.                                                                                                                                                   |\n| `prepare()`                | Prepare this intent, sharing the client's cached request; also resume a reset flow. Rejects with a generic checkout error on failure.                                                                                            |\n| `reset()`                  | Clear this flow's UI state and unmount its payment widget until `prepare()`, `retry()`, or a different client/intent resumes it. Does not cancel an order or payment, revoke a session, or clear the client's preparation cache. |\n| `retry()`                  | Clear this intent's preparation cache, clear lifecycle errors, and restart this intent. Recovers a failed runtime load or widget boundary. Other intents' cached preparations remain available. Rejects if preparation fails.    |\n\n`prepare()` and `retry()` finish preparation, not widget readiness; watch `ready` or `onReady` for usability. Reset, retry, client/intent changes and unmount discard stale completions and event callbacks. A request already sent can finish in the background, but cannot update an obsolete flow. Retained controls become inert after the owning flow unmounts.\n\n`useCheckoutStatus(checkout)` only subscribes to the same in-memory snapshot. It performs no fetch and starts no timer. Live deposit and payment updates require the mounted widget; this is not a headless payment controller. Render one `CanopyCheckout` per handle. The handle and hook snapshots expose no bearer token, prepared response, or transport.\n\nAll convenience callbacks receive the corresponding typed `CheckoutEvent`. They work on both `useCheckout` and `CanopyCheckout` alongside `onEvent`. Callbacks run after the state update; replacing them does not restart checkout, and a throwing callback does not fail checkout or prevent the other callbacks. `ready` and `shell_ready` fire once per flow generation; later deposit/payment notifications continue to forward. Avoid registering the same side effect in both hook and component callbacks.\n\nUse either `checkout` or the legacy `client` / `intentId` props on a component; TypeScript rejects combining them. `paid` remains a UI notification: backend order state and webhooks are authoritative for fulfilment.\n\n## Theme options\n\nUse the same `theme` and `variables` options as the inline SDK:\n\n```tsx\n<CanopyCheckout\n  client={client}\n  intentId={intentId}\n  theme=\"dark\" // \"light\", \"dark\", or \"auto\" (follows the system)\n  variables={{\n    accent: \"#17803d\",\n    background: \"#080808\",\n    surface: \"#141414\",\n    text: \"#f0ede8\",\n    muted: \"#999999\",\n    border: \"#333333\",\n    radius: \"12px\",\n    font: \"Inter, sans-serif\",\n  }}\n/>\n```\n\nThe variables apply immediately to both skeletons and ready checkout, stay scoped to this instance, and update when props change. `theme` defaults to `light` for existing React integrations; use `auto` explicitly to follow system changes. `style` remains available for layout and explicit overrides and takes precedence over `variables`.\n\nThe inline SDK's variable validation and contrast rules also apply here. Rejected entries are ignored and emit a nonfatal `error` event with `code` and `variable`; valid entries continue to apply. These theme errors do not make checkout unavailable. Exported `CanopyThemeOption`, `CanopyThemeVariable`, and `CanopyThemeVariables` types match the inline SDK.\n\n## Open immediately\n\nMount and show the component as soon as the customer chooses to pay. `intentId` can be `null` while your backend creates the order; the skeleton renders and the runtime preloads without starting a preparation request. Set the ID when it arrives. Method selection survives this transition.\n\nKeep the checkout container visible while loading. `shell_ready` fires at the first animation frame after mounting; it signals that the shell is mounted, not that the host has made it visible or payment is usable. Do not hide the checkout behind the `ready` event—that event waits for verified payment data.\n\n## Prepare before the click\n\nCall `preloadCheckout().catch(() => {})` when the cart opens or the payment button becomes likely to be used. It loads the manual checkout runtime without wallet discovery. As soon as your backend returns the intent ID, call `client.prepare(intentId).catch(() => {})` on the **same client instance** you pass to the component. These independent operations can run together.\n\nPreparation shares pending work and reuses a successful result for 45 seconds in browser memory. No bearer is written to cookies, URLs, local storage or events. `client.clear()` forgets all cached preparations; `client.clear(intentId)` forgets only that intent. Keep the client stable across renders, scoped to a browser checkout flow; do not share one global client between server-rendered users.\n\nPreparation establishes a checkout session but does not create an order or submit payment. Native rendering removes the second document's navigation/hydration and extension reinjection opportunity. It still needs Canopy's verified intent/customer readiness and API response; it does not guarantee an instant cold checkout. Wallet extensions can still run in the merchant page independently of Canopy.\n\n## Features and events\n\n- Both `manualTransfer` and `walletPayment` default to enabled. Either can be disabled; both disabled or unknown feature names produce `invalid_features`. Future methods can add named flags without changing the component shape.\n- Wallet modules and discovery start when wallet payment is selected. With wallet-only features, it is selected immediately. Selecting a method does not request wallet permission.\n- An intent’s required price remains fixed in the wallet amount field and respects the rail minimum, matching the hosted widget. Unpriced deposits remain editable.\n- `ready` fires once when the checkout is usable. This is a mount-to-usable event, unlike the iframe SDK's shell-ready event.\n- `paid` is a UI notification, not proof of settlement; use server-side order state and webhooks.\n- `error` carries `invalid_features` or `checkout_unavailable`, without credentials or server error text.\n\n`canopyOrigin` defaults to `https://www.canopypay.io`; set it only for your Canopy deployment or localhost development. CSP must permit `connect-src` and `img-src` to that origin, plus the wallet/RPC origins needed for enabled methods. Requests use explicit bearer authorization and omit ambient cookies. The server checks the registered origin, merchant key, and session ownership/expiry/revocation, then uses the existing payment handlers.\n\n## Timing and rollout\n\nAxiom `checkout.native.startup` reports `dur_ms` (mount to usable), `server_result_wait_ms`, `widget_load_ms` (parallel module wait), and `server_prepare_ms` from preparation. These waits overlap; do not add them. Trace headers correlate preparation, subsequent APIs and browser timing. Reports contain timings only and are best effort. Version `0.1.2` adds `shell_ready_ms`, `intent_wait_ms`, and `prepare_*_ms` measurements for fetch/headers/body, application handler duration, and browser resource timing where available. Handler duration excludes platform work before invocation; resource detail may be absent in some browsers. These durations overlap and are not additive.\n\nDeploy the accompanying `/api/checkout/*` server routes **before** publishing/installing this package. `0.1.1` adds a preparing view with interactive payment-method selection. A choice made while preparation is pending is retained when the verified checkout becomes usable; no wallet prompt or payment action is available before then. Existing `@canopypay/checkout-sdk@0.6.0` integrations continue using the hosted iframe and do not need a package release for the backend optimizations. Switching to native checkout requires changing the merchant integration.\n\nFrom the repository root:\n\n```sh\nnpm run react-sdk:build\n# Browser fixture uses mocked payment responses; never submits a payment:\nCANOPY_PLAYWRIGHT_MODULE=/path/to/playwright \\\nCANOPY_CHROME_EXECUTABLE=/path/to/chrome \\\nnode scripts/check-native-checkout-browser.cjs\n```\n","readmeFilename":"README.md"}