{"_id":"web-haptics","_rev":"6-01a8eea65fe4a54fa597b52f954d0a1e","name":"web-haptics","dist-tags":{"latest":"0.0.6"},"versions":{"0.0.1":{"name":"web-haptics","version":"0.0.1","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"author":{"name":"Lochie Axon"},"license":"MIT","_id":"web-haptics@0.0.1","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"homepage":"https://haptics.lochie.me","bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"dist":{"shasum":"dab7f997731463d72134d8c0751f73c8160af34d","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.1.tgz","fileCount":32,"integrity":"sha512-i4DbDEvOOYUip3UDtfzmz8GKqeFcgIxV9WCzowIi6MsXESerjfFug6L0S9TH7lTMPJdFCWtaJeZwpHh0vCzPng==","signatures":[{"sig":"MEQCICgKAI+upI87T+jgj1qTU+C2pAxn2jLuzNRZFpJKuxwyAiBMmrAapGFRyMRzmRmhV/c6fZujca3sGKPk4dEg+Il93A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164152},"_from":"file:web-haptics-0.0.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","build":"tsup","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/86a92a62b23c0eb192063fd552ab9217/web-haptics-0.0.1.tgz","_integrity":"sha512-i4DbDEvOOYUip3UDtfzmz8GKqeFcgIxV9WCzowIi6MsXESerjfFug6L0S9TH7lTMPJdFCWtaJeZwpHh0vCzPng==","repository":{"url":"git+https://github.com/lochie/web-haptics.git","type":"git","directory":"packages/web-haptics"},"_npmVersion":"10.9.4","description":"Haptic feedback for the mobile web.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.3.0","tsup":"^8.5.0","react":"^18.2.0","eslint":"^9.36.0","svelte":"^4.0.0","prettier":"^3.0.3","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.2.15","eslint-plugin-react":"^7.33.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.28.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.8.0","eslint-plugin-react-hooks":"^4.6.0","eslint-config-airbnb-typescript":"^17.1.0","@typescript-eslint/eslint-plugin":"^6.8.0"},"peerDependencies":{"vue":">=3","react":">=18","svelte":">=4","react-dom":">=18"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-haptics_0.0.1_1772187195059_0.8830334687211205","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"web-haptics","version":"0.0.2","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"author":{"name":"Lochie Axon"},"license":"MIT","_id":"web-haptics@0.0.2","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"homepage":"https://haptics.lochie.me","bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"dist":{"shasum":"65d18f3011aeb2e90b856bad03f81700f652edba","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.2.tgz","fileCount":32,"integrity":"sha512-jrtgwiKAusZi7MPac2bkZyNhYKX//6w8r5Biax2wjYePe5UFS38cflLC5Vqv1+7WEpXQskg8WEGZpdRezkjVsA==","signatures":[{"sig":"MEUCIQDyZxQuqg7thzDxye/dKWuaj07qvtgrEamyqiUFOUiB9wIgTVlBZZnqS1ZhO8DvmkT5Cc1xn3lxDNNSEVJyuwI02tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188538},"_from":"file:web-haptics-0.0.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","build":"tsup","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/f55e19b479ab67ff9c1f555c231184e6/web-haptics-0.0.2.tgz","_integrity":"sha512-jrtgwiKAusZi7MPac2bkZyNhYKX//6w8r5Biax2wjYePe5UFS38cflLC5Vqv1+7WEpXQskg8WEGZpdRezkjVsA==","repository":{"url":"git+https://github.com/lochie/web-haptics.git","type":"git","directory":"packages/web-haptics"},"_npmVersion":"10.9.4","description":"Haptic feedback for the mobile web.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.3.0","tsup":"^8.5.0","react":"^18.2.0","eslint":"^9.36.0","svelte":"^4.0.0","prettier":"^3.0.3","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.2.15","eslint-plugin-react":"^7.33.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.28.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.8.0","eslint-plugin-react-hooks":"^4.6.0","eslint-config-airbnb-typescript":"^17.1.0","@typescript-eslint/eslint-plugin":"^6.8.0"},"peerDependencies":{"vue":">=3","react":">=18","svelte":">=4","react-dom":">=18"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-haptics_0.0.2_1772297935343_0.3562504049268642","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"web-haptics","version":"0.0.3","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"author":{"name":"Lochie Axon"},"license":"MIT","_id":"web-haptics@0.0.3","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"homepage":"https://haptics.lochie.me","bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"dist":{"shasum":"f6e3e3d0e8043d4db8070bda32bfd096ac51e3cb","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.3.tgz","fileCount":32,"integrity":"sha512-ekGMFRGQchPxTvIssuJBRVI4QQpCQLUrJTPyuAxDp6HaqfkQnOxQlIXlY8OgtkfnWXlK537pwgOr3Al2qAIfog==","signatures":[{"sig":"MEQCIBrBXPx+sCkmGWxUCvsOMVKG/mJxBFMYdQw65FGa4tP6AiAjxYtzeIop3GuQM0cTn8HqnuHMvIiiuhIbqhVpMUTgRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231610},"_from":"file:web-haptics-0.0.3.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","build":"tsup","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/6668df6dc39951bee8fdcf0aa5133dbf/web-haptics-0.0.3.tgz","_integrity":"sha512-ekGMFRGQchPxTvIssuJBRVI4QQpCQLUrJTPyuAxDp6HaqfkQnOxQlIXlY8OgtkfnWXlK537pwgOr3Al2qAIfog==","repository":{"url":"git+https://github.com/lochie/web-haptics.git","type":"git","directory":"packages/web-haptics"},"_npmVersion":"11.10.1","description":"Haptic feedback for the mobile web.","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.3.0","tsup":"^8.5.0","react":"^18.2.0","eslint":"^9.36.0","svelte":"^4.0.0","prettier":"^3.0.3","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.2.15","eslint-plugin-react":"^7.33.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.28.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.8.0","eslint-plugin-react-hooks":"^4.6.0","eslint-config-airbnb-typescript":"^17.1.0","@typescript-eslint/eslint-plugin":"^6.8.0"},"peerDependencies":{"vue":">=3","react":">=18","svelte":">=4","react-dom":">=18"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-haptics_0.0.3_1772372540656_0.702811170395276","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"web-haptics","version":"0.0.4","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"author":{"name":"Lochie Axon"},"license":"MIT","_id":"web-haptics@0.0.4","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"homepage":"https://haptics.lochie.me","bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"dist":{"shasum":"1d6372d2620b11a00a6ebaaa34992683a0115a08","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.4.tgz","fileCount":32,"integrity":"sha512-jQnG6O8YRyUwyI10/V1tPUdDrUjKY69EVmK3AdtAxK+MWmiF/3ptZUNHR5UbASWk1W4SDhQ9xVwtK7LX8YIz/Q==","signatures":[{"sig":"MEUCIEHzwolaFHoGTU80GC8JOacPJcBmlvGfIEA7TbLi8rfVAiEAsyfParQR/gn2oaadnjHhIKVsGN5n+ww07JXIcjoMKoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237322},"_from":"file:web-haptics-0.0.4.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","build":"tsup","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/eba089347bf5729b4ba34fcd3a3c600b/web-haptics-0.0.4.tgz","_integrity":"sha512-jQnG6O8YRyUwyI10/V1tPUdDrUjKY69EVmK3AdtAxK+MWmiF/3ptZUNHR5UbASWk1W4SDhQ9xVwtK7LX8YIz/Q==","repository":{"url":"git+https://github.com/lochie/web-haptics.git","type":"git","directory":"packages/web-haptics"},"_npmVersion":"11.10.1","description":"Haptic feedback for the mobile web.","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.3.0","tsup":"^8.5.0","react":"^18.2.0","eslint":"^9.36.0","svelte":"^4.0.0","prettier":"^3.0.3","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.2.15","eslint-plugin-react":"^7.33.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.28.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.8.0","eslint-plugin-react-hooks":"^4.6.0","eslint-config-airbnb-typescript":"^17.1.0","@typescript-eslint/eslint-plugin":"^6.8.0"},"peerDependencies":{"vue":">=3","react":">=18","svelte":">=4","react-dom":">=18"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-haptics_0.0.4_1772374432420_0.901958281157657","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"web-haptics","version":"0.0.5","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"author":{"name":"Lochie Axon"},"license":"MIT","_id":"web-haptics@0.0.5","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"homepage":"https://haptics.lochie.me","bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"dist":{"shasum":"4db853077f6630e5265bb312fdde7d2de6b12e49","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.5.tgz","fileCount":32,"integrity":"sha512-Cg7aCOB5U/ZIN6zgkl1BkBG11hSuIw+qX7W2hqjYav35FzrBTER7QAUtTWDo26Rv3S6HLAcOzXFFIXe28dWXJQ==","signatures":[{"sig":"MEYCIQC6XT/lEEO3lJYRh9itM9g9/PfisQZy5ThuiqCMRf5HsgIhALKh8m+tBp3h6bqIDXNrEXXrYP+Yc28+RutPVhHS+rv8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":238428},"_from":"file:web-haptics-0.0.5.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","build":"tsup","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/6b68ad16ef76850b512005c40e827efd/web-haptics-0.0.5.tgz","_integrity":"sha512-Cg7aCOB5U/ZIN6zgkl1BkBG11hSuIw+qX7W2hqjYav35FzrBTER7QAUtTWDo26Rv3S6HLAcOzXFFIXe28dWXJQ==","repository":{"url":"git+https://github.com/lochie/web-haptics.git","type":"git","directory":"packages/web-haptics"},"_npmVersion":"11.10.1","description":"Haptic feedback for the mobile web.","directories":{},"sideEffects":false,"_nodeVersion":"25.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.3.0","tsup":"^8.5.0","react":"^18.2.0","eslint":"^9.36.0","svelte":"^4.0.0","prettier":"^3.0.3","react-dom":"^18.2.0","typescript":"^5.9.3","@types/react":"^18.2.15","eslint-plugin-react":"^7.33.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.28.1","eslint-config-prettier":"^9.0.0","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","@typescript-eslint/parser":"^6.8.0","eslint-plugin-react-hooks":"^4.6.0","eslint-config-airbnb-typescript":"^17.1.0","@typescript-eslint/eslint-plugin":"^6.8.0"},"peerDependencies":{"vue":">=3","react":">=18","svelte":">=4","react-dom":">=18"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/web-haptics_0.0.5_1772375857616_0.39522808237934326","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"web-haptics","version":"0.0.6","description":"Haptic feedback for the mobile web.","homepage":"https://haptics.lochie.me","sideEffects":false,"author":{"name":"Lochie Axon"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/lochie/web-haptics.git","directory":"packages/web-haptics"},"types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.mjs","require":"./dist/react/index.js"},"./vue":{"types":"./dist/vue/index.d.ts","import":"./dist/vue/index.mjs","require":"./dist/vue/index.js"},"./svelte":{"types":"./dist/svelte/index.d.ts","import":"./dist/svelte/index.mjs","require":"./dist/svelte/index.js"}},"publishConfig":{"access":"public"},"keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"peerDependencies":{"react":">=18","react-dom":">=18","vue":">=3","svelte":">=4"},"peerDependenciesMeta":{"react":{"optional":true},"react-dom":{"optional":true},"vue":{"optional":true},"svelte":{"optional":true}},"devDependencies":{"@types/react":"^18.2.15","@typescript-eslint/eslint-plugin":"^6.8.0","@typescript-eslint/parser":"^6.8.0","eslint":"^9.36.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-typescript":"^17.1.0","eslint-config-prettier":"^9.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^5.0.1","eslint-plugin-react":"^7.33.2","eslint-plugin-react-hooks":"^4.6.0","prettier":"^3.0.3","react":"^18.2.0","react-dom":"^18.2.0","svelte":"^4.0.0","tsup":"^8.5.0","typescript":"^5.9.3","vue":"^3.3.0"},"scripts":{"build":"tsup","dev":"tsup --watch","lint":"eslint -c .eslintrc.cjs ./src/**/*.{ts,tsx}","lint:fix":"eslint --fix -c .eslintrc.cjs ./src/**/*.{ts,tsx}","pre-commit":"lint-staged"},"_id":"web-haptics@0.0.6","_integrity":"sha512-eCzcf1LDi20+Fr0x9V3OkX92k0gxEQXaHajmhXHitsnk6SxPeshv8TBtBRqxyst8HI1uf2FyFVE7QS3jo1gkrw==","_resolved":"/private/var/folders/4j/bbbvf6gx3l374l2ghb1jcyc00000gn/T/e0ae8e7716fc30e0bca9cf023238f8ad/web-haptics-0.0.6.tgz","_from":"file:web-haptics-0.0.6.tgz","_nodeVersion":"25.7.0","_npmVersion":"11.10.1","dist":{"integrity":"sha512-eCzcf1LDi20+Fr0x9V3OkX92k0gxEQXaHajmhXHitsnk6SxPeshv8TBtBRqxyst8HI1uf2FyFVE7QS3jo1gkrw==","shasum":"e27060aff15d6e4ef4b4cbe084711f0b06e6a58d","tarball":"https://registry.npmjs.org/web-haptics/-/web-haptics-0.0.6.tgz","fileCount":20,"unpackedSize":65050,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC8plXvpjfB9kLyQEFQVF1kzxM1J/DKfLUtCoukj0l19gIgFchhPlQ6fQqnTVJ0NFnmf4DgBzfA3Rv++DZy6NxgWxY="}]},"_npmUser":{"name":"lochieaxon","email":"lochieaxon@gmail.com"},"directories":{},"maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-haptics_0.0.6_1772459925075_0.610318567443844"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-27T10:13:14.956Z","modified":"2026-03-02T13:58:45.333Z","0.0.1":"2026-02-27T10:13:15.216Z","0.0.2":"2026-02-28T16:58:55.482Z","0.0.3":"2026-03-01T13:42:20.805Z","0.0.4":"2026-03-01T14:13:52.566Z","0.0.5":"2026-03-01T14:37:37.765Z","0.0.6":"2026-03-02T13:58:45.230Z"},"bugs":{"url":"https://github.com/lochie/web-haptics/issues"},"author":{"name":"Lochie Axon"},"license":"MIT","homepage":"https://haptics.lochie.me","keywords":["haptics","vibration","feedback","web","mobile","react","vue","svelte","typescript"],"repository":{"type":"git","url":"git+https://github.com/lochie/web-haptics.git","directory":"packages/web-haptics"},"description":"Haptic feedback for the mobile web.","maintainers":[{"name":"lochieaxon","email":"lochieaxon@gmail.com"}],"readme":"# WebHaptics\n\nHaptic feedback for the mobile web. Supports React, Vue, and Svelte.\n\n## Install\n\n```sh\nnpm i web-haptics\n```\n\n## React\n\n```tsx\nimport { useWebHaptics } from \"web-haptics/react\";\n\nfunction App() {\n  const { trigger } = useWebHaptics();\n\n  return <button onClick={() => trigger(\"success\")}>Tap me</button>;\n}\n```\n\n## Vue\n\n```vue\n<script setup>\nimport { useWebHaptics } from \"web-haptics/vue\";\n\nconst { trigger } = useWebHaptics();\n</script>\n\n<template>\n  <button @click=\"trigger('success')\">Tap me</button>\n</template>\n```\n\n## Svelte\n\n```svelte\n<script>\nimport { createWebHaptics } from \"web-haptics/svelte\";\nimport { onDestroy } from \"svelte\";\n\nconst { trigger, destroy } = createWebHaptics();\nonDestroy(destroy);\n</script>\n\n<button on:click={() => trigger(\"success\")}>Tap me</button>\n```\n\n## Vanilla\n\n```ts\nimport { WebHaptics } from \"web-haptics\";\n\nconst haptics = new WebHaptics();\nhaptics.trigger(\"success\");\n```\n\n## Built-in Presets\n\n| Name      | Pattern                                                          | Description                    |\n| --------- | ---------------------------------------------------------------- | ------------------------------ |\n| `success` | `[{ duration: 50 }, { delay: 50, duration: 50 }]`               | Two taps indicating success    |\n| `nudge`   | `[{ duration: 80, intensity: 0.8 }, { delay: 80, duration: 50, intensity: 0.3 }]` | Strong tap followed by a soft tap |\n| `error`   | `[{ duration: 50, intensity: 0.75 }, ...]` ×3                   | Three sharp taps for errors    |\n| `buzz`    | `[{ duration: 1000, intensity: 1 }]`                            | A long vibration               |\n\nYou can also pass custom patterns directly:\n\n```ts\ntrigger([100, 50, 100]); // number[] shorthand (alternating on/off durations)\ntrigger(200); // single vibration (ms)\ntrigger([{ duration: 80, intensity: 0.8 }, { delay: 50, duration: 100 }]); // Vibration[]\ntrigger({\n  pattern: [{ duration: 50 }, { delay: 50, duration: 50 }],\n  description: \"custom\",\n}); // full HapticPreset\n```\n\n## API\n\n### `new WebHaptics(options?)`\n\nCreate a new instance.\n\n- `options.debug` — enable audio feedback for testing on desktop (default `false`)\n- `options.showSwitch` — show the haptic feedback toggle switch (default `false`)\n\n### `trigger(input?, options?): Promise<void>`\n\nTrigger haptic feedback.\n\n- `input` — preset name (`\"success\"`), duration in ms, `number[]`, `Vibration[]`, or `HapticPreset`\n- `options.intensity` — override default intensity (0–1, default `0.5`)\n\n### `cancel()`\n\nStop the current pattern and cancel any ongoing vibration.\n\n### `destroy()`\n\nClean up DOM elements and audio resources. Call when the instance is no longer needed.\n\n### `setDebug(debug: boolean)`\n\nEnable or disable debug audio feedback.\n\n### `setShowSwitch(show: boolean)`\n\nShow or hide the haptic feedback toggle switch.\n\n### `WebHaptics.isSupported`\n\nStatic boolean — `true` if the device supports the Vibration API.\n\n## License\n\nMIT\n\n## Found this useful?\n\nFollow me on [Twitter](https://twitter.com/lochieaxon).\n\n## Other projects\n\nYou might also like:\n\n- [Torph](https://torph.lochie.me) - Dependency-free animated text component.\n- [easing.dev](https://easing.dev) - Easily create custom easing graphs.\n\n# Acknowledgements\n\n- Special thanks to [Alex](https://x.com/alexvanderzon) for assistance with the site design.\n","readmeFilename":"README.md"}