{"_id":"@acuris-geo/centra-checkout","_rev":"4-322d57c7e8f6f5a79b8d17713a3d49e7","name":"@acuris-geo/centra-checkout","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@acuris-geo/centra-checkout","version":"0.1.0","keywords":["acuris","centra","headless-commerce","address-validation","geocoding","react","checkout"],"author":{"name":"Acuris GmbH","email":"engineering@acuris-geo.com"},"license":"MIT","_id":"@acuris-geo/centra-checkout@0.1.0","maintainers":[{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"}],"homepage":"https://github.com/Acuris-GmbH/acuris-centra-connector/tree/main/packages/acuris-centra-checkout#readme","bugs":{"url":"https://github.com/Acuris-GmbH/acuris-centra-connector/issues"},"dist":{"shasum":"dd13d72364541cf7db985c14753ffe774c4ca5f9","tarball":"https://registry.npmjs.org/@acuris-geo/centra-checkout/-/centra-checkout-0.1.0.tgz","fileCount":31,"integrity":"sha512-VEhIcj6o6ytnWROAm13aIggKar3Jv8ppsgJawZU6K9PBDrkWxAAcUPGXVzGFeB4j+nCjlYG9opHgFnRtkbMvpQ==","signatures":[{"sig":"MEUCIQDkEVl2s/5sDlblhrj1yWp1gYwfDMgDCmH3WOpXStM8ZgIgTKZ4SrbF2SeDxjWgl/osSEJz5J+q6nuuCABlkTTm8Yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44668},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"27b6f5d4a9eae43266f31680a2ec972476b4d190","scripts":{"test":"vitest run --coverage","build":"tsc -p tsconfig.json && node ./build-cjs.mjs","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"},"repository":{"url":"git+https://github.com/Acuris-GmbH/acuris-centra-connector.git","type":"git","directory":"packages/acuris-centra-checkout"},"_npmVersion":"10.9.7","description":"React components for integrating Acuris Address Validation & Geocoding into Centra-based checkout flows.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@acuris-geo/av-sdk":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.0","react":"^18.3.1","vitest":"^2.1.4","react-dom":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitest/coverage-v8":"^2.1.4","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.4.8","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/centra-checkout_0.1.0_1778625895591_0.4794645198536016","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@acuris-geo/centra-checkout","version":"0.1.1","keywords":["acuris","centra","headless-commerce","address-validation","geocoding","react","checkout"],"author":{"name":"Acuris GmbH","email":"engineering@acuris-geo.com"},"license":"MIT","_id":"@acuris-geo/centra-checkout@0.1.1","maintainers":[{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"}],"homepage":"https://github.com/Acuris-GmbH/acuris-centra-connector/tree/main/packages/acuris-centra-checkout#readme","bugs":{"url":"https://github.com/Acuris-GmbH/acuris-centra-connector/issues"},"dist":{"shasum":"c3a04f6db2491288b10657df26860d78391caf7f","tarball":"https://registry.npmjs.org/@acuris-geo/centra-checkout/-/centra-checkout-0.1.1.tgz","fileCount":31,"integrity":"sha512-LTxaXsbeeQMP+bCYnFWmtx736+G89k7gDgxumlK5P9BdULL5M2+r8Em1Z6N8E5d0abEuF3wVAN64K0peG8AdcQ==","signatures":[{"sig":"MEUCIQCAs5gZjlwIqY0pM7b1df4Go2ZF4KEq3OXAOdGaZC3EjAIgO36Epn9dMnztOKmglt9q+64WMd4WJ8J9FkxRysPfJbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46355},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"93c28919e199d1b030698dbc3b54f4d987cbe406","scripts":{"test":"vitest run --coverage","build":"tsc -p tsconfig.json && node ./build-cjs.mjs","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"},"repository":{"url":"git+https://github.com/Acuris-GmbH/acuris-centra-connector.git","type":"git","directory":"packages/acuris-centra-checkout"},"_npmVersion":"10.9.7","description":"React components for integrating Acuris Address Validation & Geocoding into Centra-based checkout flows.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@acuris-geo/av-sdk":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.0","react":"^18.3.1","vitest":"^2.1.4","react-dom":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitest/coverage-v8":"^2.1.4","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.4.8","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/centra-checkout_0.1.1_1778631130896_0.2630391832846659","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@acuris-geo/centra-checkout","version":"0.1.2","keywords":["acuris","centra","headless-commerce","address-validation","geocoding","react","checkout"],"author":{"name":"Acuris GmbH","email":"engineering@acuris-geo.com"},"license":"MIT","_id":"@acuris-geo/centra-checkout@0.1.2","maintainers":[{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"}],"homepage":"https://github.com/Acuris-GmbH/acuris-centra-connector/tree/main/packages/acuris-centra-checkout#readme","bugs":{"url":"https://github.com/Acuris-GmbH/acuris-centra-connector/issues"},"dist":{"shasum":"83b39172458ce2009a44c994487022d8fc8b2e13","tarball":"https://registry.npmjs.org/@acuris-geo/centra-checkout/-/centra-checkout-0.1.2.tgz","fileCount":31,"integrity":"sha512-UWZ/sUsPMPBslv6S9Xx/5M9FD4Q69u0JIVOBvWOMSkqEYg6l5fkoNikDw7396L5vjONN5rfDmitsiRjhlNzRPg==","signatures":[{"sig":"MEYCIQCBUeNA8veQJEfNo9uk7Qi2o5Ypw79MBJgHOIk344PoLAIhAOILvmMNqKAKlmMrhllgbejJfiADzVxhcqsffzQxzJn9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50302},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3358d874ca149b3b935ca2ed18be9d72ff246ab9","scripts":{"test":"vitest run --coverage","build":"tsc -p tsconfig.json && node ./build-cjs.mjs","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"},"repository":{"url":"git+https://github.com/Acuris-GmbH/acuris-centra-connector.git","type":"git","directory":"packages/acuris-centra-checkout"},"_npmVersion":"10.9.7","description":"React components for integrating Acuris Address Validation & Geocoding into Centra-based checkout flows.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@acuris-geo/av-sdk":"^0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^25.0.0","react":"^18.3.1","vitest":"^2.1.4","react-dom":"^18.3.1","typescript":"^5.5.4","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitest/coverage-v8":"^2.1.4","@testing-library/react":"^16.0.0","@testing-library/jest-dom":"^6.4.8","@testing-library/user-event":"^14.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/centra-checkout_0.1.2_1779034083232_0.6205799362228757","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@acuris-geo/centra-checkout","version":"0.1.3","description":"React components for integrating Acuris Address Validation & Geocoding into Centra-based checkout flows.","keywords":["acuris","centra","headless-commerce","address-validation","geocoding","react","checkout"],"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsc -p tsconfig.json && node ./build-cjs.mjs","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run --coverage","test:watch":"vitest"},"engines":{"node":">=18.17.0"},"license":"MIT","author":{"name":"Acuris GmbH","email":"engineering@acuris-geo.com"},"homepage":"https://github.com/Acuris-GmbH/acuris-centra-connector/tree/main/packages/acuris-centra-checkout#readme","repository":{"type":"git","url":"git+https://github.com/Acuris-GmbH/acuris-centra-connector.git","directory":"packages/acuris-centra-checkout"},"bugs":{"url":"https://github.com/Acuris-GmbH/acuris-centra-connector/issues"},"publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"@acuris-geo/av-sdk":"^0.3.0"},"devDependencies":{"@testing-library/jest-dom":"^6.4.8","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.5.2","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitest/coverage-v8":"^2.1.4","jsdom":"^25.0.0","react":"^18.3.1","react-dom":"^18.3.1","typescript":"^5.5.4","vitest":"^2.1.4"},"_id":"@acuris-geo/centra-checkout@0.1.3","gitHead":"26b31a56e9c26798e2ea76e1da574b8dabf98c71","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-xRMwpNN5DpdB506m0SKJbNFJaIKkJ+hKJ0odPH/j9Lb06As6ZO3PihkUi1um/ate8JzM2pSHAEkz3CLf5L90Ew==","shasum":"57853e55c337a6058d5fb979b5c9fb95a9ed7b61","tarball":"https://registry.npmjs.org/@acuris-geo/centra-checkout/-/centra-checkout-0.1.3.tgz","fileCount":31,"unpackedSize":51451,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFCsacMNVMakfL0EcNa+oqiah7USiILhghD6Hom6oKCaAiEAqVImRdAIFYuK8EhpFTd5U4BR5MZwhP3TtEcpzAc86LM="}]},"_npmUser":{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"},"directories":{},"maintainers":[{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/centra-checkout_0.1.3_1781298356051_0.2794392744612231"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-12T22:44:55.488Z","modified":"2026-06-12T21:05:56.355Z","0.1.0":"2026-05-12T22:44:55.729Z","0.1.1":"2026-05-13T00:12:11.049Z","0.1.2":"2026-05-17T16:08:03.379Z","0.1.3":"2026-06-12T21:05:56.205Z"},"bugs":{"url":"https://github.com/Acuris-GmbH/acuris-centra-connector/issues"},"author":{"name":"Acuris GmbH","email":"engineering@acuris-geo.com"},"license":"MIT","homepage":"https://github.com/Acuris-GmbH/acuris-centra-connector/tree/main/packages/acuris-centra-checkout#readme","keywords":["acuris","centra","headless-commerce","address-validation","geocoding","react","checkout"],"repository":{"type":"git","url":"git+https://github.com/Acuris-GmbH/acuris-centra-connector.git","directory":"packages/acuris-centra-checkout"},"description":"React components for integrating Acuris Address Validation & Geocoding into Centra-based checkout flows.","maintainers":[{"name":"acurisgeo","email":"l.kandemir@acuris-geo.com"}],"readme":"# @acuris-geo/centra-checkout\n\n> React components for integrating Acuris Address Validation & Geocoding into\n> Centra-based storefronts. SSR-safe, unstyled by default, no design-system\n> assumptions.\n\n**Status:** beta (`0.1.0`).\n\n## Install\n\n```bash\nnpm install @acuris-geo/centra-checkout\n```\n\n`react` and `react-dom` are peer dependencies (`^18` or `^19`).\n\n## Use with AI coding agents\n\nIf you build with Claude Code, Cursor, GitHub Copilot, OpenCode, Codex,\nGemini CLI, or any other tool that supports\n[Agent Skills](https://agentskills.io), install the Acuris agent\ncontext — your assistant gets the correct component props\n(`minQueryLength`, not `minLength`; the typeahead-enabled country\nset; the validate-on-submit pattern; how to keep the API key\nserver-side), plus recipes for Centra, commercetools, SCAYLE, and the\nfive most common vendor migrations (libAddressDoctor, Loqate, Experian\nQAS, Melissa, Smarty). The bundled `acuris-eudi` skill covers the EUDI\nWallet Verifier (OID4VP / SD-JWT VC) too. Each skill auto-activates\nonly when your task matches its area.\n\n```bash\n# Claude Code (self-hosted marketplace today; official listing pending review):\n/plugin marketplace add Acuris-GmbH/acuris-agent-context\n/plugin install acuris@acuris-plugins\n\n# Cursor, Copilot, Codex, OpenCode, Gemini CLI, Kiro, Goose, others:\nnpx skills add Acuris-GmbH/acuris-agent-context\n```\n\nSource: <https://github.com/Acuris-GmbH/acuris-agent-context> · Docs: <https://acuris-gmbh.github.io/acuris-agent-context/>\n\n## Security model\n\n**Do not put an Acuris API key in the browser.** This package never calls\n`api.acuris-geo.com` directly. Instead, it calls _your_ proxy endpoints on\nthe same origin (or any origin with permissive CORS), which then forward to\nAcuris using the server-side `@acuris-geo/av-sdk` with the API key attached.\n\n```\nBrowser ──► /api/acuris/validate ──► acuris-av-sdk ──► api.acuris-geo.com\n            (your backend)           (your backend)\n```\n\nA working pair of Next.js API routes lives in `examples/centra-storefront/`.\n\n## Components\n\n### `<AcurisAddressInput>`\n\nControlled input with debounced typeahead suggestions.\n\n```tsx\nimport { AcurisAddressInput } from \"@acuris-geo/centra-checkout\";\nimport { useState } from \"react\";\n\nconst [value, setValue] = useState(\"\");\n\n<AcurisAddressInput\n  endpoints={{ validate: \"/api/acuris/validate\", suggest: \"/api/acuris/suggest\" }}\n  country=\"deu\"\n  value={value}\n  onChange={setValue}\n  onSelect={(hit) => {\n    // hit.lat, hit.lng, hit.street, hit.city, ...\n  }}\n  placeholder=\"Start typing an address…\"\n/>\n```\n\n**Props of note**\n\n| Prop                  | Default | Notes                                          |\n| --------------------- | ------- | ---------------------------------------------- |\n| `endpoints.suggest`   | _none_  | Omit to disable typeahead (input still works). |\n| `debounceMs`          | `200`   | Per-keystroke debounce.                        |\n| `minQueryLength`      | `3`     | No request fires below this length.            |\n| `limit`               | `5`     | Server caps at 50.                             |\n| `renderSuggestion`    | _none_  | Render-prop for custom suggestion rows.        |\n| `suggestionsClassName`| _none_  | CSS class for the `<ul>` container.            |\n\nKeyboard: ↑/↓ to highlight, Enter to pick, Esc to close. Mouse: click to\npick.\n\n### `<AcurisAddressValidator>`\n\nRender-prop wrapper that validates an address on blur, submit, or manually.\n\n```tsx\n<AcurisAddressValidator\n  endpoints={{ validate: \"/api/acuris/validate\" }}\n  country=\"deu\"\n  address={{ street: \"Friedrichstraße\", house_number: \"43\", city: \"Berlin\", postcode: \"10117\" }}\n  trigger=\"submit\"\n>\n  {({ status, result, error, formProps }) => (\n    <form {...formProps}>\n      {/* your fields */}\n      {status === \"ok\" && <p>✓ {result?.standardized?.formatted_address}</p>}\n      {status === \"error\" && <p>Error: {error?.message}</p>}\n      <button type=\"submit\">Continue</button>\n    </form>\n  )}\n</AcurisAddressValidator>\n```\n\n## Hooks\n\nIf you'd rather build your own UI:\n\n```ts\nimport { useAcurisValidation, useAcurisSuggest } from \"@acuris-geo/centra-checkout\";\n\nconst { status, result, error, validate, reset } = useAcurisValidation({\n  endpoints: { validate: \"/api/acuris/validate\" },\n  country: \"deu\",\n});\n\nconst { suggestions, isLoading } = useAcurisSuggest({\n  endpoint: \"/api/acuris/suggest\",\n  country: \"deu\",\n  q: typedText,\n  debounceMs: 200,\n});\n```\n\nBoth hooks abort inflight requests automatically so the latest user input\nalways wins (no stale-response races).\n\n## SSR\n\nAll components are pure and rely only on `useState`/`useEffect`. They render\nto a closed (`aria-expanded=\"false\"`) state on the server, then hydrate and\nbecome interactive client-side. Tested against Next.js 14 app router.\n\n## License\n\nMIT © Acuris GmbH\n","readmeFilename":"README.md"}