{"_id":"@caioalfonso/kanso-core","_rev":"4-3017f9c39c3ded92d0c9ac69278f9442","name":"@caioalfonso/kanso-core","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"@caioalfonso/kanso-core","version":"0.0.1","keywords":["headless","accessibility","a11y","wai-aria","components","kanso"],"author":{"name":"Caio Alfonso"},"license":"MIT","_id":"@caioalfonso/kanso-core@0.0.1","maintainers":[{"name":"caioalfonso","email":"caioap25@gmail.com"}],"homepage":"https://github.com/CaioAP/kanso-ui#readme","bugs":{"url":"https://github.com/CaioAP/kanso-ui/issues"},"dist":{"shasum":"5e0ecd46d99f6fc80688a238ce2c381eff74d2e4","tarball":"https://registry.npmjs.org/@caioalfonso/kanso-core/-/kanso-core-0.0.1.tgz","fileCount":51,"integrity":"sha512-q7gRbnWmZsD4gqfALCgiojCqwhTYft6w5yMJDPaUv/I+UaPrnTPSel6y7NHuzS7u1iCSiUg2qV4TmK5QLHsCfg==","signatures":[{"sig":"MEQCIAOi5SrujAQykUR2sOnqq/6F95LhUtZ6SmoaHyQIoZ4AAiAOUUGpCUcl4MQPwXUlQKzuWKtdiYshagex0YMJRUSc4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234294},"type":"module","_from":"file:caioalfonso-kanso-core-0.0.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./card":{"types":"./dist/card.d.ts","import":"./dist/card.js"},"./menu":{"types":"./dist/menu.d.ts","import":"./dist/menu.js"},"./tabs":{"types":"./dist/tabs.d.ts","import":"./dist/tabs.js"},"./field":{"types":"./dist/field.d.ts","import":"./dist/field.js"},"./button":{"types":"./dist/button.d.ts","import":"./dist/button.js"},"./dialog":{"types":"./dist/dialog.d.ts","import":"./dist/dialog.js"},"./switch":{"types":"./dist/switch.d.ts","import":"./dist/switch.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup","package-lint":"publint --strict && attw --pack . --profile esm-only"},"_npmUser":{"name":"caioalfonso","email":"caioap25@gmail.com"},"_resolved":"/tmp/25d78533183bfabd526c273985fc4f5d/caioalfonso-kanso-core-0.0.1.tgz","_integrity":"sha512-q7gRbnWmZsD4gqfALCgiojCqwhTYft6w5yMJDPaUv/I+UaPrnTPSel6y7NHuzS7u1iCSiUg2qV4TmK5QLHsCfg==","repository":{"url":"git+https://github.com/CaioAP/kanso-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.13.0","description":"Framework-agnostic behaviour core for kanso-ui — state, keyboard, ARIA and focus, with zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanso-core_0.0.1_1785872892149_0.583884878035918","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@caioalfonso/kanso-core","version":"0.0.2","keywords":["headless","accessibility","a11y","wai-aria","components","kanso"],"author":{"name":"Caio Alfonso"},"license":"MIT","_id":"@caioalfonso/kanso-core@0.0.2","maintainers":[{"name":"caioalfonso","email":"caioap25@gmail.com"}],"homepage":"https://github.com/CaioAP/kanso-ui#readme","bugs":{"url":"https://github.com/CaioAP/kanso-ui/issues"},"dist":{"shasum":"0eb90ed057092df78855f8c8ce6698a6dd218e07","tarball":"https://registry.npmjs.org/@caioalfonso/kanso-core/-/kanso-core-0.0.2.tgz","fileCount":51,"integrity":"sha512-TQh8BStoP5p8NPEg6sCDcEccLq9DbovBAgsBBh6+xGXMPzI86UwOEI2tHxEHE63lhN0rtYAAZFllEQXoVLTfbw==","signatures":[{"sig":"MEYCIQCtRd0TJk5kranETr84BtXbfcSKZFz9bGkTBlEHUbyPHgIhAMtG5vAh3fJeg6ssqQTBLLa75qGbZLTA45TGGQfR0gqd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@caioalfonso%2fkanso-core@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239295},"type":"module","_from":"file:caioalfonso-kanso-core-0.0.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./card":{"types":"./dist/card.d.ts","import":"./dist/card.js"},"./menu":{"types":"./dist/menu.d.ts","import":"./dist/menu.js"},"./tabs":{"types":"./dist/tabs.d.ts","import":"./dist/tabs.js"},"./field":{"types":"./dist/field.d.ts","import":"./dist/field.js"},"./button":{"types":"./dist/button.d.ts","import":"./dist/button.js"},"./dialog":{"types":"./dist/dialog.d.ts","import":"./dist/dialog.js"},"./switch":{"types":"./dist/switch.d.ts","import":"./dist/switch.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup","package-lint":"publint --strict && attw --pack . --profile esm-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddf7c2a9-9af6-4669-a4ec-ed7c90e81f33"}},"_resolved":"/tmp/7b9cd9d16622aa99ab8b22fa029dfd84/caioalfonso-kanso-core-0.0.2.tgz","_integrity":"sha512-TQh8BStoP5p8NPEg6sCDcEccLq9DbovBAgsBBh6+xGXMPzI86UwOEI2tHxEHE63lhN0rtYAAZFllEQXoVLTfbw==","repository":{"url":"git+https://github.com/CaioAP/kanso-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.16.0","description":"Framework-agnostic behaviour core for kanso-ui — state, keyboard, ARIA and focus, with zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanso-core_0.0.2_1785964445350_0.6517735969117278","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@caioalfonso/kanso-core","version":"1.0.0","keywords":["headless","accessibility","a11y","wai-aria","components","kanso"],"author":{"name":"Caio Alfonso"},"license":"MIT","_id":"@caioalfonso/kanso-core@1.0.0","maintainers":[{"name":"caioalfonso","email":"caioap25@gmail.com"}],"homepage":"https://github.com/CaioAP/kanso-ui#readme","bugs":{"url":"https://github.com/CaioAP/kanso-ui/issues"},"dist":{"shasum":"5fa130b9efb24af71389d4854817e8adf7ea68d3","tarball":"https://registry.npmjs.org/@caioalfonso/kanso-core/-/kanso-core-1.0.0.tgz","fileCount":51,"integrity":"sha512-jtXEWdQI7S//twHe1zZMaK1VOlz0sgcHoILRGenIMPDUYItUUmfREulma2C4lTie4u0YvIAosMgJKbjmh/1unA==","signatures":[{"sig":"MEUCIQCp76aUnOmlPfv3uhXneoQ0HZpgdPc+78euNE09DChutAIgdWTFwY9e49/94hnK66YpQCUQsoG4DF5HRVDi+BE+Qrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@caioalfonso%2fkanso-core@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239295},"type":"module","_from":"file:caioalfonso-kanso-core-1.0.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./card":{"types":"./dist/card.d.ts","import":"./dist/card.js"},"./menu":{"types":"./dist/menu.d.ts","import":"./dist/menu.js"},"./tabs":{"types":"./dist/tabs.d.ts","import":"./dist/tabs.js"},"./field":{"types":"./dist/field.d.ts","import":"./dist/field.js"},"./button":{"types":"./dist/button.d.ts","import":"./dist/button.js"},"./dialog":{"types":"./dist/dialog.d.ts","import":"./dist/dialog.js"},"./switch":{"types":"./dist/switch.d.ts","import":"./dist/switch.js"},"./package.json":"./package.json"},"scripts":{"build":"tsup","package-lint":"publint --strict && attw --pack . --profile esm-only"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddf7c2a9-9af6-4669-a4ec-ed7c90e81f33"}},"_resolved":"/tmp/4b526e70aad686b1633c370357c2a5be/caioalfonso-kanso-core-1.0.0.tgz","_integrity":"sha512-jtXEWdQI7S//twHe1zZMaK1VOlz0sgcHoILRGenIMPDUYItUUmfREulma2C4lTie4u0YvIAosMgJKbjmh/1unA==","repository":{"url":"git+https://github.com/CaioAP/kanso-ui.git","type":"git","directory":"packages/core"},"_npmVersion":"11.16.0","description":"Framework-agnostic behaviour core for kanso-ui — state, keyboard, ARIA and focus, with zero dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/kanso-core_1.0.0_1785968426194_0.9611862377821943","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@caioalfonso/kanso-core","version":"1.0.1","description":"Framework-agnostic behaviour core for kanso-ui — state, keyboard, ARIA and focus, with zero dependencies.","license":"MIT","author":{"name":"Caio Alfonso"},"homepage":"https://github.com/CaioAP/kanso-ui#readme","repository":{"type":"git","url":"git+https://github.com/CaioAP/kanso-ui.git","directory":"packages/core"},"bugs":{"url":"https://github.com/CaioAP/kanso-ui/issues"},"keywords":["headless","accessibility","a11y","wai-aria","components","kanso"],"type":"module","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./switch":{"types":"./dist/switch.d.ts","import":"./dist/switch.js"},"./tabs":{"types":"./dist/tabs.d.ts","import":"./dist/tabs.js"},"./dialog":{"types":"./dist/dialog.d.ts","import":"./dist/dialog.js"},"./menu":{"types":"./dist/menu.d.ts","import":"./dist/menu.js"},"./field":{"types":"./dist/field.d.ts","import":"./dist/field.js"},"./button":{"types":"./dist/button.d.ts","import":"./dist/button.js"},"./card":{"types":"./dist/card.d.ts","import":"./dist/card.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","package-lint":"publint --strict && attw --pack . --profile esm-only"},"_id":"@caioalfonso/kanso-core@1.0.1","_integrity":"sha512-zaB7EgbNMeeLZYK7Z/X4Fgxqjmp0iVOFzIDzs605MLnMkwJrgzS/KFQsi2SsT1jxiy46wwB2n7lb+jalg5+RDg==","_resolved":"/tmp/559302c974edf574f95c3848f1ccbf64/caioalfonso-kanso-core-1.0.1.tgz","_from":"file:caioalfonso-kanso-core-1.0.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-zaB7EgbNMeeLZYK7Z/X4Fgxqjmp0iVOFzIDzs605MLnMkwJrgzS/KFQsi2SsT1jxiy46wwB2n7lb+jalg5+RDg==","shasum":"c0373a47836b2300411bf91524e0053b50dfc411","tarball":"https://registry.npmjs.org/@caioalfonso/kanso-core/-/kanso-core-1.0.1.tgz","fileCount":51,"unpackedSize":239300,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@caioalfonso%2fkanso-core@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDrJMXHZqkJTGWIYOU/GzTp4zQYsVKxAq9j+7wTcksZ9AIgRyaNuAL1nWalFjpH7fTr5O7/OTzHToFqQ527tgdBrig="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddf7c2a9-9af6-4669-a4ec-ed7c90e81f33"}},"directories":{},"maintainers":[{"name":"caioalfonso","email":"caioap25@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kanso-core_1.0.1_1786060353583_0.6675375334806615"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T19:48:11.978Z","modified":"2026-08-06T23:52:34.017Z","0.0.1":"2026-08-04T19:48:12.295Z","0.0.2":"2026-08-05T21:14:05.489Z","1.0.0":"2026-08-05T22:20:26.344Z","1.0.1":"2026-08-06T23:52:33.727Z"},"bugs":{"url":"https://github.com/CaioAP/kanso-ui/issues"},"author":{"name":"Caio Alfonso"},"license":"MIT","homepage":"https://github.com/CaioAP/kanso-ui#readme","keywords":["headless","accessibility","a11y","wai-aria","components","kanso"],"repository":{"type":"git","url":"git+https://github.com/CaioAP/kanso-ui.git","directory":"packages/core"},"description":"Framework-agnostic behaviour core for kanso-ui — state, keyboard, ARIA and focus, with zero dependencies.","maintainers":[{"name":"caioalfonso","email":"caioap25@gmail.com"}],"readme":"# @caioalfonso/kanso-core\n\nThe framework-agnostic behaviour core of [kanso-ui](https://github.com/CaioAP/kanso-ui).\nState, keyboard handling, ARIA and focus management, in plain TypeScript with\n**zero dependencies**.\n\nYou usually do not install this directly — install\n[`@caioalfonso/kanso-react`](https://www.npmjs.com/package/@caioalfonso/kanso-react)\nor [`@caioalfonso/kanso-vue`](https://www.npmjs.com/package/@caioalfonso/kanso-vue),\nwhich depend on it. Install it directly only if you are writing an adapter for\nanother framework.\n\n## How it works\n\nEach component exports a pure reducer and a `connect()` that turns state into\nneutral prop bags. An adapter supplies `normalizeProps`, which translates those\nbags into whatever its framework spells them:\n\n```ts\nimport { connectSwitch, initialSwitchState, switchReducer } from '@caioalfonso/kanso-core';\n\nconst state = initialSwitchState({ id, checked: false, hasLabel: true });\nconst api = connectSwitch(state, send, normalizeProps);\n// api.rootProps, api.controlProps, api.thumbProps, api.labelProps, api.hiddenInputProps\n```\n\nTwo rules this package holds to, and CI enforces:\n\n- **It never imports a framework** — not `vue`, not `react`, not even as a\n  type-only import.\n- **It never generates an id.** Ids come in as arguments, because a counter or a\n  random value differs between the server render and the client render and shows\n  up as a hydration mismatch.\n\n## Documentation\n\n<https://kansoui.caioalfonso.dev>\n\nESM only. MIT licensed.\n","readmeFilename":"README.md"}