{"_id":"@zuzjs/hooks","_rev":"34-5c214f4dc592a97365ab2e239e79d8c1","name":"@zuzjs/hooks","dist-tags":{"latest":"0.1.35"},"versions":{"0.1.2":{"name":"@zuzjs/hooks","version":"0.1.2","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.2","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"ab94f33565c205d400d26146d97ee10a8be15f41","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.2.tgz","fileCount":6,"integrity":"sha512-Xgxhre2pn+uf469EQ9EJiFEo5y4171j4rmpdf7Lj/b8aR8D7Fr/tbsVFx1g7LBiAkUQkJI+13zMJha8vNySnvw==","signatures":[{"sig":"MEYCIQDJ+fF8MNMNRDImhy+DbBuSgvsSLBebdxJxwvldB2HCXQIhAKuOYG/ZfI4qx6Or4bqcUB2ni6+2sNkSDPQIzOoL93b4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81549},"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"}},"_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.2","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.2_1770532247755_0.4931147557929969","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@zuzjs/hooks","version":"0.1.3","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.3","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"fbe384da8650e573d1daed8213307345a14503b3","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.3.tgz","fileCount":6,"integrity":"sha512-AXVOYhGYcpKivdmALB10V7o9Xl3VHSwTDPW0d9jAZifCJOkYGTmJn+GFkTuu63MR+tW+dBIzrDT8YF43OtApiA==","signatures":[{"sig":"MEUCIHeoh11FWsQ5Wdc2A0qkBdVu/Hvn9AwIpud8MspQ3LPDAiEAooiD84eozXBBUfZXvQ6K9xP3At0FzfWCjUBJtgIoP2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84440},"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"}},"_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.2","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.3_1770800656487_0.6846472935477292","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@zuzjs/hooks","version":"0.1.4","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.4","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"e5a509a7ac4af716c35fdc4f1cc982eca1d69eec","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.4.tgz","fileCount":6,"integrity":"sha512-S/y+xJejCl9aTa7QBdGstLh6Xe7AXj8ezsk+bJ/0majvb9OB679W7JeEsCSkC56eUKkpSkK5CFV+njR+4og69Q==","signatures":[{"sig":"MEYCIQDfQ87J7A+BdjXbUd0vuMIVWpwUqjcV0OKfj8oGJpHZ/gIhAM0tBxVYRi43xbLqI9jM4+gJGiwOmyoJlcfbq6wU13+Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84528},"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":"771b2991000f82f2515d2c16d1b1b869dad8bbde","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.4_1770881425738_0.7098504172850026","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@zuzjs/hooks","version":"0.1.5","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.5","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"aa21f683e615fa13a2cb0946ca65a53a64dc5d4a","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.5.tgz","fileCount":6,"integrity":"sha512-Kh3d/nJXi5DowBvx5p8R0maTXSJEJtPfV1hRxpE65loJW6aq0l3SU69+MMvZPhMTYRZbAJwb1+QjBFw7ua+tYA==","signatures":[{"sig":"MEQCICcP6X3O8TiYTLDMjiLRQN6ibdOq6CU6Lz03nN5W1zgzAiBEX+xumET8A36+KSiwr90Cnkz6ONbdRUltddhxAHHbsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84700},"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":"771b2991000f82f2515d2c16d1b1b869dad8bbde","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.5_1770984649410_0.5753851306734346","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@zuzjs/hooks","version":"0.1.6","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.6","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"a7f271e5dc6952fec16b6c35e8a282410ae7d085","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.6.tgz","fileCount":6,"integrity":"sha512-W/Yb8UzHTelnFvn7IiLSs5/Egofg541pm+E4Nstxooj88Y4NWqg6faGy3bDmK/M+5GansNHK4IDBLWKAwhqHOw==","signatures":[{"sig":"MEUCIQCq/SIwbf1+BBMGv7acoCQvJn7MlMmt4bpTkbsBtOOCdwIgQzBVBvw7xgNVSgFL/mtL76odmiFHFGymk45oFE3+3gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88071},"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":"8e3514fc253b75d790924c9edbcd9e9601879072","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.6_1771334861815_0.8291757175885528","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@zuzjs/hooks","version":"0.1.7","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.7","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"a3861c0fe7dfaac62d8334814c54298e71751f7a","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.7.tgz","fileCount":6,"integrity":"sha512-3LNCvQt9e4Gwi32KwA30j0wwO3JRxtaxHkCwGfO3YeF5ssdHISGaY5jacHirF6xmik2qNZt466JayZ4r2h/CmQ==","signatures":[{"sig":"MEUCIHWEKD7DQkyiYpjROkv4jRzBhn4qq/6Yfbjmm6oAiolrAiEAjHKDJC0j+bn+wTeLi6/RoIwWcjy1R/HYtAguJ6uz0/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88859},"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":"8e3514fc253b75d790924c9edbcd9e9601879072","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.7_1771401019589_0.511656887716065","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@zuzjs/hooks","version":"0.1.8","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.8","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"2878680379c6a01be392739bca704e16cef86588","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.8.tgz","fileCount":6,"integrity":"sha512-wTPmg6mrLAv8SgfV/aIbt01NPw/d8AmWAEocKPTUt+4+SpBrzze+ZecufhKBxBr5hRLwD+8dl1LJMcmJCqLmVg==","signatures":[{"sig":"MEUCIQC1vdHc67OXAPBL3JwpHpbvSfJwwd6pbkwRY4iXTWg26wIgcYti8n59wdqh2dovTy0QyJC8qutFZB6yewTx6pPtvAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91765},"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":"8e3514fc253b75d790924c9edbcd9e9601879072","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.8_1771795537609_0.5696657144947763","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@zuzjs/hooks","version":"0.1.9","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.9","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"4ec4cfa93372e52f70187ae09cfe2958f2ff9bb7","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.9.tgz","fileCount":6,"integrity":"sha512-VcP/HsIpMbgzr7nBOTQw6p+repoAgo09HKijQNMXZfHjSMLLK+CKaidFsC1IAh0MDid549v2UEMUzyYFMrOXvA==","signatures":[{"sig":"MEUCIQDkJcBu/JMJ2hiGKMubBhKpCXWNfc6Rt0cM8XyKmwCZCgIgOGPgxXMff1gKcu3R69wFDJNzJFX4B6yJY0z3YYnIQ/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94040},"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":"9813d33bcf5641d73d994942d85d50e7c7de322c","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.9_1771838436270_0.6997290908168758","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@zuzjs/hooks","version":"0.1.10","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.10","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"b5be2ccbea4356aaeb79edd238d4e53a1cdfa1e7","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.10.tgz","fileCount":6,"integrity":"sha512-RihCBjbEA1S6P++pn9FSCYmHOU5Obuj7OkYRDzJGy1aDkWTiALcs/E49TN8LMMeXxD/ed+cDS7GsAe73BqBAcQ==","signatures":[{"sig":"MEQCIF6SMKaeosVYK8RoLVZTNLMz8Hb3j0Kd1dETn6Colx3EAiB1eq3kTjHq82XxP1NJfuBonnlVGO0E3yqKaEfALPxvUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102507},"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":"57585ce0560e653194dea2eef0f023f99f6a55e7","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.10_1771870793720_0.011037787909301766","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@zuzjs/hooks","version":"0.1.11","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.11","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"d7188bdcec7263cd0766d888c1bd9d9699c8efc2","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.11.tgz","fileCount":6,"integrity":"sha512-d6eipuQUUvblRqmbGMD/dGG7WUhiAsJ+EbuzZ6vyT6eLi24beq6N5IjpEQvRiAQuMiA2BNn8xZbn4ZWz1E018Q==","signatures":[{"sig":"MEYCIQCP+lYYwfvp31e0IFkgiInUxVJ6uQFNc7VYwK5lSqvOFQIhAIBLDUukgmqHxLUIAMT43CIzvg6qOVML4eHtVwIHct4e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106439},"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":"f3364d03d51f5c276eb4060b7a8c1d56a102afe4","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.4","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.11_1771932934376_0.38693075673914223","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@zuzjs/hooks","version":"0.1.12","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.12","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"d4808054be3632fa8ac974078066c562f9b734c4","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.12.tgz","fileCount":6,"integrity":"sha512-qabWMWFUPLoS678HYMjCZWi76E1s7hpSfc5oAjLL+/jmeVbbTkzvq2XpSnK9/dhxRAuNWtdlOIFZMIU/ZwqFsA==","signatures":[{"sig":"MEQCIEH0QFPriwJwMwyX76Cwm2jcmg9a9zQyUfmITPKOQDiBAiAulluRa9RX7WXY2b8dgIGqlTTTv3OsGxQ3SSNWcvHLLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107303},"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":"f3364d03d51f5c276eb4060b7a8c1d56a102afe4","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.5","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.12_1772299574934_0.7496815548400024","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@zuzjs/hooks","version":"0.1.13","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.13","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"4f09fc7fd7808228b23555295f43ce1aa0583450","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.13.tgz","fileCount":6,"integrity":"sha512-OwmF/jykfNur5/II9yK1gWXKP4L6/F3BhngVafLkyHT8yDjl3rFF/7sI9G4NkSAqjZ3LL9jiKSUvTOzGCbCU/A==","signatures":[{"sig":"MEUCICXpiQkCjGONXoVlsL4bj2Md4tDzBWn7CI9oCpiiOpApAiEAqHR9jYe5GDEKcd8bAqi5i1FIcsEras70pd6RMt897GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107670},"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":"0ba61b596918cd2436db220bf45182e6f6e4281b","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.5","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.13_1772490106361_0.5163034643083952","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@zuzjs/hooks","version":"0.1.14","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.14","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"b5fdd5e1c9eee0c44e31fd0c0cee2224831b38f8","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.14.tgz","fileCount":6,"integrity":"sha512-k0j2m1xseu85iQBdJey9NnfoL+aKIcL+2dVf8sLHkPFA6JNZ0C+9j+0aIthlrC+UKLlcPZYknxB2s0Vp3K4xUQ==","signatures":[{"sig":"MEYCIQDE41F6qjO5RCCLhljLTle1ue9EfUH6IcaR2qmj3hxUkQIhAO0LmGygTAnYlB6woujQN7lQQAYAEFhIJPAPsakvaiGm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108549},"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":"0ba61b596918cd2436db220bf45182e6f6e4281b","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.5","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.14_1772539833644_0.8294448272688864","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@zuzjs/hooks","version":"0.1.15","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.15","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"baa1c717dabb3f8ebd702457b9a7b7c32b1e0b06","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.15.tgz","fileCount":6,"integrity":"sha512-5xHWEusDc5v6vGFFu1+3IjDGrEL8zih62GFCYiXdtaRyShhXJNanYaQHUrm55NuDW6cBMdn2hlqnXe/yJTcE5Q==","signatures":[{"sig":"MEUCIBqAe863avg4RyBURRMTeZzbrA4tAT+LKw6n8liZvAkTAiEA5pIhil3oWgDZiZer+kVWspAw4OOkI7i+YNzwtQn9uK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108549},"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":"0ba61b596918cd2436db220bf45182e6f6e4281b","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.6","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.15_1772584189532_0.9423630104404017","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@zuzjs/hooks","version":"0.1.16","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.16","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"3e66bfc22d856e70691e8b81832be64f4fe234e4","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.16.tgz","fileCount":6,"integrity":"sha512-jz+lO280zHH+iBtALB7hmAzYszmWJggNb+GRaqgZaePAaJA2cu7prSQ3DqP4qSRMgg+GjSUa3mTWysSF9Piljg==","signatures":[{"sig":"MEUCIERFiOhQMxRVEdQs/nom2HHYcZjFj7qhNLSac5oRtG6VAiEA8gjDCTfNyjVFBJZOJNTWgGc0qER9/85SGNcDUu2QEBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108549},"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":"32b89bf0ad0485b505e5eb8f8c69e9019df1cf2a","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.7","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.16_1772795419751_0.21043546685658576","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@zuzjs/hooks","version":"0.1.17","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.17","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"526dbbab01d0c5bae6ad206d73c37d3c9e8bfecd","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.17.tgz","fileCount":6,"integrity":"sha512-/Kno2BwsVRyZkIClb/fX1oknxJ8hLo/D3PUjjH2CVtc8YlQ87cJWEjL0OY0pWOn/QBjHvn7SgV7JnZiW9MrRKQ==","signatures":[{"sig":"MEUCIQCKjT2n2+7tUbEH3oTJax6a5i1VEg7xhemWSUABlSsijwIgQ/JzHh3HI0qOFHh49UJ8qVX46l43TmbcyNdVAllOpPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108675},"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":"365bfeeabbce8a2fb4d8612d7dbf9265fa6a5ed7","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.8","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.17_1773428631523_0.1610271114306867","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@zuzjs/hooks","version":"0.1.18","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.18","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"9012ea066625f1407f2c8a174f6c6ec5af3bbe0d","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.18.tgz","fileCount":6,"integrity":"sha512-o5zPVHtcZOX14occDVbSI0IIZc5poJOP8IrE8bOChU+mDBBx+detwHXvz8Quwdv8pZUjbjY6cNpLLl9QGKtymA==","signatures":[{"sig":"MEUCIQCH6eyBaKH9wjtHEhxk/xSKGtsxnx/HFkYLBSqhlQypLAIgSdKyoZOHXsbzOaas+uqqBOHm1lLSKK8nxoJq7o/zOME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109089},"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":"81bedad218f75dee5a0d845f73f849c8b532c73c","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.15","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.18_1775057864579_0.1851788866708739","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@zuzjs/hooks","version":"0.1.19","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.19","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"eca56eda375fa4ae88af0716974911b4dcb95e69","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.19.tgz","fileCount":6,"integrity":"sha512-AiYzzSJ3wJjuKqAAzGRaDfWMzDKIcr9QYr6+wymy2CeBmmp8DUrBRlw/37+m88tgm7BytDfCs0DT3U1CyTL1EA==","signatures":[{"sig":"MEYCIQC3XjkL7Q2lLQhl22CLjbHoatS7J6h6uOqPAiwxRNbMHgIhAOmb81quODZpoFMQ+Y53AFCuhufd6XlHfm4hEA5CK+Ur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109299},"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":"c8e3dbb7c81d399052d46fba05f0838d658c98ee","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.15","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.19_1775068324147_0.03913059026245347","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@zuzjs/hooks","version":"0.1.20","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.20","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"e4cf81711fc2e4fe2435bc08d7d60dfc9d271c29","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.20.tgz","fileCount":6,"integrity":"sha512-Ykg8JZdkIBipbnycsWJTej4+9VHjx2gjf8IC2iCxynAb7JyAVQTtmPFVissIgOoaqSDybSCBw4p748ZXIzbziA==","signatures":[{"sig":"MEYCIQDp8yecGpMRgMDFsVzlSq7fj95vok7GLA9pECVR80lQ3wIhALcDIHMHX5panRYzwzMfVCa5k6+2HFueVkPozQeyHaDr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117893},"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":"56a7459db9ec2209fdf72e11249f466abf92a5d9","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.17","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.20_1775930701693_0.8343208829443218","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@zuzjs/hooks","version":"0.1.21","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.21","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"037674b200b8b364e295611efb23d0e83f7cf9c3","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.21.tgz","fileCount":6,"integrity":"sha512-382cUOQQbITxfnbB+TlPSK3RCQrJRjtDjhyJhLPCNHaso98ck4dFbZsKPI8KnSeNTbesNV2ql498JJ5Rq21h4Q==","signatures":[{"sig":"MEUCIQC2jllbPr1QLvkZ7MTCoWy1P9R9AVY43hy78BYi/w/F/gIgfwVLpsHW0VzEh7YKDNaleVZQWQLnfqSWMDqAtDzlqQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148299},"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":"4dae63f06679074d9c639d8ac5d88fd9ec3c97a1","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.17","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.21_1776916212179_0.818363123049012","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@zuzjs/hooks","version":"0.1.22","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.22","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"515909bfb040164e14d0ba9e3795d74b94b8894b","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.22.tgz","fileCount":6,"integrity":"sha512-s9o6slzJY3KgJ7i4zkirvCQiSG5x7adnEC32N3pJAZe7u5OqN7oJRdscnAkeMEvMBs/nIVKOn+1cIM3WQKm92g==","signatures":[{"sig":"MEUCIQCH3+P4VHu2rZcdvwgJnD7O3KZDyR4LpDGdGDymwP3f9gIgVzLi2XSHUaWmLmHCtdvUIUp2v90c57lNWTUVBSuZ/GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155276},"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":"46007ccd61ecc4fd224f8491e5a921a5b51efe8c","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.17","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.22_1777018148684_0.4787571672827058","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@zuzjs/hooks","version":"0.1.23","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.23","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"65e7f13b3d37681063190f99f5e4df58a6b2b0d2","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.23.tgz","fileCount":6,"integrity":"sha512-6FeiKGBJYuQittUuC8Cm+mHP8+qNQ+D6Xs5DzX208GPgKkQybAIM/eEwrRffVDSC0vV+MRkc+oLYd+Kbg7hv3w==","signatures":[{"sig":"MEUCIDG2J+Jgfc64botU/Cux2gbiImuc6cgGo5+R0IS+ESFuAiEAjdYZWdz+qthVfH34wR6E6zgEjhXHvdij+llDAUwMWbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156236},"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":"7780929a40c202e247b73e4d93e84f30c9a0c509","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.17","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.23_1777188316433_0.6802546910880996","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@zuzjs/hooks","version":"0.1.24","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.24","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"a4315c1d1ea04f0dfd08fc51eb6dbfb3d2cdea2a","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.24.tgz","fileCount":6,"integrity":"sha512-2rPf1aMqSuYEh0yLWkrzrvZH9Kod035Z72fK1M50JoVw75Yqijtx/5v9DumL6N4AaA/rOqz37ALOk50pWISVxQ==","signatures":[{"sig":"MEQCIArYqTX8WDile6YeDbqM62c/ty54F+XyN0pO16+yAYqUAiAhmqx4c6ofmfDicOLiqh3IidjppihCME58JuWUdY+GEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183983},"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":"ece416f050e4af9df24332ae5feaaa2a8d9c9aab","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.18","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.24_1777359997142_0.7239903198288786","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@zuzjs/hooks","version":"0.1.25","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.25","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"98773e4942acf03a2315ccd293a7d7979e79013c","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.25.tgz","fileCount":6,"integrity":"sha512-YKSEDKeNHpjOBDSjiyi5Tji+uS+VK8d5r/JExusnKRh6xETznOmhYr7PKKuMN1XzQ2q5yAQnyXf/CSLlP1rbxg==","signatures":[{"sig":"MEYCIQD1Q1Vpr4GccnDW1npdvsMLaNhLfpEvS2ofCBw98T+x1QIhAP35stu5pw1RXaJ14eLUDXQ6kxPj6Sc+Jm300mFauysl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184521},"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":"09fc364e5ba43b869f3ba3bca4177be403ace98a","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.6","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.18","@types/react":"^19.2.10","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.25_1777541181648_0.9831273599671939","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@zuzjs/hooks","version":"0.1.26","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.26","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"6c3f75b90ae754615bc808e6c327b5fc3cb0aa33","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.26.tgz","fileCount":6,"integrity":"sha512-NZCNHmkDne5tfevAsdeR7wxqA065VUOq3r/+MUkyzzlGj3e3wkf+dVIbxHBTFMtxK/fWMYPecPM3WdK8Z/HOVw==","signatures":[{"sig":"MEYCIQDCpVRS2vfh7kmfwTyRRyc0kFjOyBB8UH7uH5QwXXq3UQIhANsXUBOnGGbr6/arg0V6csMp3BXKhr5mvMqG3bqwkmfb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":285644},"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":"0265a2e984166fda7b5b26f937f1a7c268111ddb","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.18","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.26_1777638156468_0.0317886788386188","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@zuzjs/hooks","version":"0.1.27","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.27","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"a875850bf212dadd35769909ef5788eb425752fe","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.27.tgz","fileCount":6,"integrity":"sha512-IKgAUAwa/sa0+pObM72D696PPCLoBB5UqJTEFmqER9HoJTtPjSUKkBWbxbKUndGGSbUqfIk9iwuSxFunvXjb6A==","signatures":[{"sig":"MEUCIQC0ubHfCuujn2y2VRDv5vWNHsQ/fMJLqDgkSryZMkpjWgIgF8Vo4yegv8nR+uzyrqT9UKwlvw3S2vIF3dhpVzX0JYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292034},"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":"54bf5f8b455be2f191939af72163fe82020c4251","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.18","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.27_1777743851682_0.7396138286364178","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@zuzjs/hooks","version":"0.1.28","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.28","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"8feeb4152e879e9441c6852e5dec940520575305","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.28.tgz","fileCount":6,"integrity":"sha512-BZX7UP8fzVVg4s3pcn0JdTDylL0+yFLvowNy0JjPo9zkRDVsXe2dh+bVp1zOyTqRCNEUS8DTsdGtAWzRogv3FQ==","signatures":[{"sig":"MEQCIE3LbrAzrtc0vNSS0yU7q2+oLDd9xvpoM2c16qV92wvJAiArystmgY9dHZaQ3B4pEoY8isR2bQquL09AK77wX4yD8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":298252},"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":"eece6a76302bc518d8063ad5cf2b690a0fd2e751","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.19","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.28_1778761268207_0.4048871333207267","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@zuzjs/hooks","version":"0.1.29","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.29","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"eab2a6228677294d8ffc95c558d3eca33a0c2a9c","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.29.tgz","fileCount":6,"integrity":"sha512-JsYyRGV2s3DqTCao1SOchaO20Ut5ny49yEPetpAZyZysLf7nMukpBfyCFqcan6cCgS4odndFGYdC8ZnXv7+2HQ==","signatures":[{"sig":"MEUCIF04yehrLuSmXRtduiqFer9vT5LPW9IEyjNXtRAdTS1xAiEAt2/vwu27hJxJoDpxw45HkGwepdHeKraAfor3oRP1rEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302790},"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":"43963b2dcd014bac16296851c2c77103fefed434","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.19","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.29_1779019678835_0.44980413857288615","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@zuzjs/hooks","version":"0.1.30","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.30","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"0729fb293b93d10bf6c71ab1cc88e932a03688b3","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.30.tgz","fileCount":6,"integrity":"sha512-ex/WP8yyWlZq0GYkT4Nb/q6c4psGN1FsB39bGbUsj2Nr1umkE5ESnMi51wMnhkhH350R4MiM/2oSQWGI0dvXFA==","signatures":[{"sig":"MEUCIBTPkzsh/CM3qXMcZkEojZTb3dOnpfRF9zP+f+p+GzMvAiEAlTCt1m60aqxhKpVdplbyS7myBudR3xWWmnEC7xlH+oQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":332759},"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":"6767bd658625789fc779849f655bddc7fe41fc69","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.19","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.30_1779194513988_0.6441512865184571","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"@zuzjs/hooks","version":"0.1.31","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.31","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"f7007f13ee9a8a4d1091f36688674faf3e01fc42","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.31.tgz","fileCount":6,"integrity":"sha512-tdSXY2yK4BOCVj6izvrOLQgLLgNihXgSIYH4J4OQ8S+1WsLtlHNZd47HkYoXmYOrnUpKoVS3OLi/sApRmNZ5FA==","signatures":[{"sig":"MEYCIQC9KJfjZNkVlOj1TG4zYuZoGdcjXrG54MhnKlHsDgZZaAIhAIAtlfSDaV27zJLj6l2g5yc06C0ovHupDce/RONH9fWC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334239},"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":"206754f7cd7cb6e59599eb96199063117264e3e0","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.19","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.31_1780211312485_0.5138837711256257","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"@zuzjs/hooks","version":"0.1.32","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.32","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"cfb78bfe03cd80011f044d7e8c147652f34024dc","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.32.tgz","fileCount":6,"integrity":"sha512-bz+0rzb2bCWi1274jZIftZ94ibVlUFB5FjnIK8qRod3XQy7GqIkvll09WDNai3hSWAUTzHGr01V9uLcGH2wMwQ==","signatures":[{"sig":"MEUCIF8ABzRzDR/MWx3j5gJBxM/SWqSB3m00UJyNY3OUMm4+AiEA7yUXRbt7XnxVH0fYX3EK6U0aU4s8LrrJUCDs9gvKDTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334503},"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":"b265ca440fec75f43bff47f5f18dbe295b7e0aa0","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.20","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.32_1780216117376_0.6106730829299347","host":"s3://npm-registry-packages-npm-production"}},"0.1.33":{"name":"@zuzjs/hooks","version":"0.1.33","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.33","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"a9f4110e18e97e152edfe3c54c64fe7b3724dcc9","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.33.tgz","fileCount":6,"integrity":"sha512-DOx2SR0wXwcYEaf2uilt5FRPDbRf5OEoWU0CRCl9Ok8v3yrvnI7STTcZ+VOm2e/uo208qFkEtlMgwh4NSwiO9w==","signatures":[{"sig":"MEYCIQC3qpsPBJ5hTfPSd0tmx9si8EJTklCvjwWQVCeXX71jRwIhAIOFwAJVaei0+CMM4cfArUMeWLWvWLXn+UxJlcjZ+UJ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334631},"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":"865f09a16c942aec847399fb9190e7b763a9e49d","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.20","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.33_1780256067761_0.8576296300664292","host":"s3://npm-registry-packages-npm-production"}},"0.1.34":{"name":"@zuzjs/hooks","version":"0.1.34","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","_id":"@zuzjs/hooks@0.1.34","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"homepage":"https://hooks.zuz.com.pk","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"6762aac1b41b2faab51dc3faede6ec1fb875cbbb","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.34.tgz","fileCount":6,"integrity":"sha512-Jo0OaTVBI+++tgGc3OejDWTqA936fM0yAt8oSynO+cbXO3NhQxuDiClHU8SchdX6KUfdfJ1C/+JInoVL8+m3/A==","signatures":[{"sig":"MEUCIQCSmkElAYqXg5+tIJhECLiFY3kSXK+9pGeq/hpzuyN2EQIgX9GvtzemK6i0nAju4uwEkER4VqvWlQ9E74QShw71eX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335331},"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":"65d26d0a002463eb69a6105e9b5b7ae7fd5ad242","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.25","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"tmp":"tmp/hooks_0.1.34_1781643873571_0.8620786915351077","host":"s3://npm-registry-packages-npm-production"}},"0.1.35":{"_id":"@zuzjs/hooks@0.1.35","bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"dist":{"shasum":"3415e6a9017cb59dc518f0effd29aecdf382dc2a","tarball":"https://registry.npmjs.org/@zuzjs/hooks/-/hooks-0.1.35.tgz","fileCount":6,"integrity":"sha512-JwezcphdNthx6rbMfJqlMmWjXk+LjgBv2qekFzPnhLGmNpkN2W3biE8WLm9s8t1xs3BCJAzqfaIuswAie5r1pA==","signatures":[{"sig":"MEUCIE3DehHDH62+ruFVNJy7qP6W1fK2gd7plSmWkB5u5wCCAiEAghII6zQcnKkoIauEtL4aNVyJXMdnlqqlC8CiTCsF0AM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFhU23U/Ubyb7NjppfTyZwZWdkHikEZt4Rn3fmAvGNOuAiA3pKOLsbaIMaOVmmAw6mm+LAFs+LIYA5GxV4m/IBbCqA=="}],"unpackedSize":355797},"main":"./dist/index.cjs","name":"@zuzjs/hooks","type":"module","types":"./dist/index.d.ts","author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"module":"./dist/index.js","engines":{"node":">=18.17.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"license":"MIT","version":"0.1.35","_npmUser":{"name":"zuzpk","email":"kamranwajdani@gmail.com"},"homepage":"https://hooks.zuz.com.pk","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"_npmVersion":"11.4.2","description":"ZuzJS Hooks","directories":{},"maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"_nodeVersion":"24.3.0","dependencies":{"md5":"^2.3.0","react":"^19.2.3","dashjs":"^5.1.1","moment":"^2.30.1","nanoid":"^5.1.9","hashids":"^2.3.0","chokidar":"^5.0.0","date-fns":"^4.1.0","commander":"^14.0.2","js-cookie":"^3.0.5","react-dom":"^19.2.3","@types/md5":"^2.3.6","picocolors":"^1.1.1","@zuzjs/core":"^0.3.27","@types/react":"^19.2.14","@types/react-dom":"^19.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"react":"^19.2.3","react-dom":"^19.2.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hooks_0.1.35_1790230608045_0.2894388894851254"}}},"time":{"created":"2026-02-08T06:30:47.667Z","modified":"2026-09-24T06:16:48.344Z","0.1.2":"2026-02-08T06:30:47.937Z","0.1.3":"2026-02-11T09:04:16.669Z","0.1.4":"2026-02-12T07:30:25.887Z","0.1.5":"2026-02-13T12:10:49.563Z","0.1.6":"2026-02-17T13:27:41.988Z","0.1.7":"2026-02-18T07:50:19.736Z","0.1.8":"2026-02-22T21:25:37.755Z","0.1.9":"2026-02-23T09:20:36.416Z","0.1.10":"2026-02-23T18:19:53.879Z","0.1.11":"2026-02-24T11:35:34.532Z","0.1.12":"2026-02-28T17:26:15.084Z","0.1.13":"2026-03-02T22:21:46.518Z","0.1.14":"2026-03-03T12:10:33.833Z","0.1.15":"2026-03-04T00:29:49.682Z","0.1.16":"2026-03-06T11:10:19.900Z","0.1.17":"2026-03-13T19:03:51.743Z","0.1.18":"2026-04-01T15:37:44.730Z","0.1.19":"2026-04-01T18:32:04.286Z","0.1.20":"2026-04-11T18:05:01.828Z","0.1.21":"2026-04-23T03:50:12.317Z","0.1.22":"2026-04-24T08:09:08.826Z","0.1.23":"2026-04-26T07:25:16.645Z","0.1.24":"2026-04-28T07:06:37.315Z","0.1.25":"2026-04-30T09:26:21.796Z","0.1.26":"2026-05-01T12:22:36.652Z","0.1.27":"2026-05-02T17:44:11.847Z","0.1.28":"2026-05-14T12:21:08.385Z","0.1.29":"2026-05-17T12:07:59.011Z","0.1.30":"2026-05-19T12:41:54.144Z","0.1.31":"2026-05-31T07:08:32.649Z","0.1.32":"2026-05-31T08:28:37.553Z","0.1.33":"2026-05-31T19:34:27.932Z","0.1.34":"2026-06-16T21:04:33.764Z","0.1.35":"2026-09-24T06:16:48.133Z"},"bugs":{"url":"https://github.com/zuzpk/zuzjs-hooks/issues"},"author":{"name":"Zuz.js Team","email":"support@zuz.com.pk"},"license":"MIT","homepage":"https://hooks.zuz.com.pk","keywords":["react","zuz","zuz.js","zuz ui","zuzui"],"repository":{"url":"git+https://github.com/zuzpk/zuzjs-hooks.git","type":"git"},"description":"ZuzJS Hooks","maintainers":[{"name":"zuzpk","email":"kamranwajdani@gmail.com"}],"readme":"# @zuzjs/hooks\n\nUtility hooks for browser APIs, UI behavior, persistence, media, DnD, data flow, and realtime communication.\n\n## Installation\n\n```bash\nnpm install @zuzjs/hooks\n```\n\n## Quick Start\n\n```tsx\nimport { useDebounce, useLocalStorage, useNetworkStatus } from \"@zuzjs/hooks\";\n```\n\n## Hook Index\n\n### UI and Interaction\n\n- `useAnchor`: Anchor/trigger state for menus and overlays.\n- `useAnchorPosition`: Compute screen-aware anchor positions.\n- `useCarousel`: Carousel state, controls, and transitions.\n- `useCodeLens`: Visual lens/inspection state for UI overlays.\n- `useDebounce`: Debounced value/callback behavior.\n- `useDelayed` (`useMounted` alias): Delay mount/visibility transitions.\n- `useDimensions`: Measure element/window dimensions.\n- `useDocumentTitle`: Read/update the document title.\n- `useImage`: Image lifecycle loading state.\n- `useImageCropper`: Crop interaction and output helpers.\n- `useIntersectionObserver`: Viewport visibility detection.\n- `useMorph`: Morph/motion transition helper state.\n- `useMouseWheel`: Wheel event behavior helpers.\n- `useMutationObserver`: Observe DOM subtree mutations.\n- `useResizeObserver`: Observe element resize updates.\n- `useScrollPhysics`: Scroll momentum/physics helpers.\n- `useScrollbar`: Scroll position and breakpoint helpers.\n- `useParallax`: Scroll-based parallax offset with ScrollView awareness.\n- `useGradient`: Standard, orb, and animated gradient generation.\n\n### Drag and Drop\n\n- `useDrag`: Drag source hook with channel/payload probe API.\n- `useDrop`: Drop target hook with accepts/canReceive/onHover/onReceive lifecycle.\n- `useSortable`: Combined drag/drop hook for sortable item interactions.\n\n### Time and Scheduling\n\n- `useNextInterval`: Controlled interval scheduling.\n- `useTimer`: Timer state and controls.\n- `useTimeline`: Layered timeline progression for scroll/manual/auto scenes.\n\n### Device and Platform\n\n- `useDevice`: Device/platform capability detection.\n- `useNetworkStatus`: Online/offline connectivity state.\n\n### Storage and Persistence\n\n- `useLocalStorage`: Typed localStorage state management.\n- `useSessionStorage`: Typed sessionStorage state management.\n- `useFileSystem`: Browser file system interactions.\n\n### Commands and Shortcuts\n\n- `useCommandActions`: Command registry and action handlers.\n- `useShortcuts`: Keyboard shortcut handling.\n\n### Data, DB, and Realtime\n\n- `useDatabase` (`useDB` in provider context): IndexedDB utilities.\n- `useDB`, `useDBHealed`, `useWatchDB`: DBProvider context hooks.\n- `useWebSocket`: Typed websocket lifecycle and messaging.\n- `useWebWorker`: Typed worker calls with pooling, progress, retries, and cancellation.\n\n### Media and Upload\n\n- `useLineChart`: SVG/line chart calculation helpers.\n- `useMediaPlayer`: Audio/video player state and controls.\n- `useUploader`: Upload queue, progress, and lifecycle handling.\n\n### Notifications and Analytics\n\n- `usePushNotifications`: Push permission/token/subscription helpers.\n- `useFacebookPixel`: Facebook pixel integration.\n- `useGoogleTagManager`: GTM/gtag integration.\n\n### Date and Calendar\n\n- `useCalendar`: Calendar state and date-grid utilities.\n\n## Drag and Drop Usage\n\n`useDrag` and `useDrop` follow a `spec factory + deps` API and return `[collectedProps, connectorRef]`.\n\n### useDrag\n\n```tsx\nimport { useDrag } from \"@zuzjs/hooks\";\n\nfunction Card({ id, title }: { id: string; title: string }) {\n    const [{ isDragging }, dragRef] = useDrag(() => ({\n        channel: \"CARD\",\n        payload: { id, title },\n        dragDelay: 0,\n        observe: (probe) => ({\n            isDragging: probe.active(),\n        }),\n    }), [id, title]);\n\n    return <div ref={dragRef} style={{ opacity: isDragging ? 0.5 : 1 }}>{title}</div>;\n}\n```\n\n**Key Features:**\n- **Interactive Element Detection**: Drag is automatically skipped if `mousedown` occurs on interactive elements (buttons, inputs, links, etc.) or elements with role attributes (role=\"button\", role=\"link\"). This prevents accidental drags when clicking on nested interactive elements.\n- **dragDelay**: Set `dragDelay` (in ms) to require the user to hold the mouse button before drag starts. Defaults to 0 (instant). If the user releases before the delay, no drag occurs.\n- **Drag Payload**: The `payload` can be a static value or a function that computes the payload dynamically when drag starts.\n\n### useSortable\n\n```tsx\nimport { useSortable } from \"@zuzjs/hooks\";\n\nfunction SortableRow({ index, item, move }: { index: number; item: { id: string; label: string }; move: (from: number, to: number) => void }) {\n    const [{ isDragging, isOver }, rowRef] = useSortable(() => ({\n        channel: \"ROW\",\n        id: item.id,\n        index,\n        payload: item,\n        dragDelay: 120,\n        onMove: (dragged, toIndex) => {\n            move(dragged.index, toIndex);\n            dragged.index = toIndex;\n        },\n        observe: (state) => ({\n            isDragging: state.isDragging,\n            isOver: state.isOver,\n        }),\n    }), [index, item, move]);\n\n    return <li ref={rowRef} style={{ opacity: isDragging ? 0.6 : 1, outline: isOver ? \"1px dashed #999\" : \"none\" }}>{item.label}</li>;\n}\n```\n\n### Cross-List Drag and Drop\n\nTo enable dragging items across multiple lists, use the same `dragChannel` on both lists and share the same DnD context:\n\n```tsx\nimport { useState } from \"react\";\nimport { useSortable } from \"@zuzjs/hooks\";\n\nfunction MultiListDragDrop() {\n    const [listA, setListA] = useState([\n        { id: \"a1\", label: \"Item A1\" },\n        { id: \"a2\", label: \"Item A2\" },\n    ]);\n    const [listB, setListB] = useState([\n        { id: \"b1\", label: \"Item B1\" },\n        { id: \"b2\", label: \"Item B2\" },\n    ]);\n\n    const moveWithinList = (list, setList, from, to) => {\n        const next = [...list];\n        const [moved] = next.splice(from, 1);\n        next.splice(to, 0, moved);\n        setList(next);\n    };\n\n    const moveAcrossLists = (fromList, setFromList, toList, setToList, fromIndex, toIndex) => {\n        const fromCopy = [...fromList];\n        const toCopy = [...toList];\n        const [moved] = fromCopy.splice(fromIndex, 1);\n        toCopy.splice(toIndex, 0, moved);\n        setFromList(fromCopy);\n        setToList(toCopy);\n    };\n\n    const SHARED_CHANNEL = \"MULTI_LIST_ITEMS\";\n\n    return (\n        <div style={{ display: \"flex\", gap: \"20px\" }}>\n            {/* List A */}\n            <ul>\n                {listA.map((item, idx) => (\n                    <li key={item.id} ref={(node) => {\n                        // Use useSortable with shared channel\n                        const [{ isDragging, isOver }, ref] = useSortable(() => ({\n                            channel: SHARED_CHANNEL,\n                            accepts: SHARED_CHANNEL,\n                            id: item.id,\n                            index: idx,\n                            payload: item,\n                            onMove: (dragged, toIndex) => {\n                                if (dragged.index < toIndex) {\n                                    moveWithinList(listA, setListA, dragged.index, toIndex);\n                                }\n                            },\n                            onDrop: (dragged, toIndex) => {\n                                moveWithinList(listA, setListA, dragged.index, toIndex);\n                                dragged.index = toIndex;\n                            },\n                        }), [idx, item]);\n                        ref(node);\n                    }}>\n                        {item.label}\n                    </li>\n                ))}\n            </ul>\n\n            {/* List B */}\n            <ul>\n                {listB.map((item, idx) => (\n                    <li key={item.id} ref={(node) => {\n                        const [{ isDragging, isOver }, ref] = useSortable(() => ({\n                            channel: SHARED_CHANNEL,\n                            accepts: SHARED_CHANNEL,\n                            id: item.id,\n                            index: idx,\n                            payload: item,\n                            onMove: (dragged, toIndex) => {\n                                if (dragged.index < toIndex) {\n                                    moveWithinList(listB, setListB, dragged.index, toIndex);\n                                }\n                            },\n                            onDrop: (dragged, toIndex) => {\n                                moveWithinList(listB, setListB, dragged.index, toIndex);\n                                dragged.index = toIndex;\n                            },\n                        }), [idx, item]);\n                        ref(node);\n                    }}>\n                        {item.label}\n                    </li>\n                ))}\n            </ul>\n        </div>\n    );\n}\n```\n\n**Key points for cross-list dragging:**\n- Both lists must use the **same `channel`** and accept the same channel\n- Each list maintains its own state (reordering updates its state)\n- When dropping, detect which list the item came from and which it's being dropped into\n- Use the `onDrop` callback to finalize the move across lists\n\n### useDrop\n\n```tsx\nimport { useDrop } from \"@zuzjs/hooks\";\n\nfunction Column({ onDropCard }: { onDropCard: (item: any) => void }) {\n    const [{ isOver, canDrop }, dropRef] = useDrop(() => ({\n        accepts: \"CARD\",\n        canReceive: (item) => Boolean(item?.id),\n        onHover: (item) => {\n            // Optional hover lifecycle\n        },\n        onReceive: (item) => {\n            if (item) onDropCard(item);\n        },\n        observe: (probe) => ({\n            isOver: probe.hovering(),\n            canDrop: probe.canReceive(),\n        }),\n    }), [onDropCard]);\n\n    return (\n        <div\n            ref={dropRef}\n            style={{\n                minHeight: 120,\n                border: \"1px dashed #999\",\n                background: isOver ? (canDrop ? \"#e8ffe8\" : \"#ffe8e8\") : \"transparent\",\n            }}\n        >\n            Drop Here\n        </div>\n    );\n}\n```\n\n## Persistence Usage\n\n### useLocalStorage\n\n```tsx\nimport { useLocalStorage } from \"@zuzjs/hooks\";\n\nfunction ThemeToggle() {\n    const [theme, setTheme] = useLocalStorage(\"theme\", \"light\");\n\n    return (\n        <button onClick={() => setTheme(theme === \"light\" ? \"dark\" : \"light\")}>\n            {theme}\n        </button>\n    );\n}\n```\n\n### useLocalStore\n\n```tsx\nimport { useLocalStore } from \"@zuzjs/hooks\";\n\nfunction FilterChips() {\n    const { value: filters, addValue, removeValue, toggleValue } = useLocalStore<string>(\"filters\", {\n        defaultValue: [\"all\"]\n    });\n\n    return (\n        <div>\n            <button onClick={() => toggleValue(\"open\")}>Toggle Open</button>\n            <button onClick={() => addValue([\"urgent\", \"review\"])}>Add More</button>\n            <button onClick={() => removeValue(\"all\")}>Remove All</button>\n            <pre>{JSON.stringify(filters)}</pre>\n        </div>\n    );\n}\n```\n\n### useSessionStorage\n\n```tsx\nimport { useSessionStorage } from \"@zuzjs/hooks\";\n\nfunction SearchDraft() {\n    const [query, setQuery] = useSessionStorage(\"search-query\", \"\");\n    return <input value={query} onChange={(e) => setQuery(e.target.value)} />;\n}\n```\n\n### useCache\n\nGeneric `window.caches` hook. Content types are auto-detected from the file extension (`.bin` → `application/octet-stream`, `.json` → `application/json`, etc.).\n\n```tsx\nimport { useCache } from \"@zuzjs/hooks\";\n\ntype PackMeta = {\n    label: string;\n    version: number;\n};\n\ntype PackEntry = {\n    id: string;\n    label: string;\n};\n\nfunction PackLoader() {\n    const cache = useCache<PackMeta, PackEntry>({\n        cacheName: \"my-app-v1\",\n        paths: {\n            binPrefix: \"/__app/cache/bin\",\n            indexPrefix: \"/__app/cache/index\",\n            metaPrefix: \"/__app/cache/meta\",\n        },\n    });\n\n    const seed = async () => {\n        const id = \"pack-alpha\";\n        const binary = new Uint8Array([10, 20, 30]);\n\n        // store binary + metadata\n        await cache.saveMeta(id, binary, { label: \"Alpha Pack\", version: 1 });\n\n        // store binary + searchable index\n        await cache.saveAssets(id, binary, [\n            { id: \"a\", label: \"Entry A\" },\n            { id: \"b\", label: \"Entry B\" },\n        ]);\n    };\n\n    const load = async () => {\n        const id = \"pack-alpha\";\n        const meta = await cache.loadMeta(id);\n        const assets = await cache.loadAssets(id);\n        console.log(meta?.label, assets?.index.map(e => e.label));\n    };\n\n    return <button onClick={seed}>Seed</button>;\n}\n```\n\nRemote fetch usage:\n\n```tsx\nawait cache.fetchAndCacheAssets(\"pack-beta\", {\n    binUrl: \"/api/packs/beta.bin\",\n    indexUrl: \"/api/packs/beta.json\",\n});\n\nconst ready = await cache.hasAssets(\"pack-beta\");\nif (ready) {\n    const result = await cache.loadAssets(\"pack-beta\");\n    console.log(result?.index.map(e => e.label));\n}\n\n// clear a single entry\nawait cache.removeAssets(\"pack-beta\");\n\n// nuke the whole cache\nawait cache.clearAll();\n```\n\n## Realtime Usage\n\n### useWebSocket\n\n```tsx\nimport { useWebSocket } from \"@zuzjs/hooks\";\n\nfunction ChatClient() {\n    const { connect, send, connected } = useWebSocket({\n        url: \"wss://example.com/socket\",\n    });\n\n    useEffect(() => {\n        connect();\n    }, [connect]);\n\n    return (\n        <button disabled={!connected} onClick={() => send({ type: \"ping\" })}>\n            Send\n        </button>\n    );\n}\n```\n\n## Parallel and Worker Usage\n\n### useWebWorker\n\nRun CPU-heavy or blocking work in Web Workers with a typed request/response API.\n\nHighlights:\n\n- Function-based worker API (no separate worker file required)\n- Multiple in-flight calls with per-call Promise resolution\n- Progress streaming from worker to UI\n- AbortSignal cancellation and per-call timeout\n- Retry/backoff controls\n- Worker pool scheduling (`least-busy` or `round-robin`)\n- Transferable object support via call options and `transfer()` helper\n\nBasic function worker:\n\n```tsx\nimport { useWebWorker } from \"@zuzjs/hooks\";\n\ntype Input = { values: number[] };\ntype Output = { sum: number; avg: number };\n\nfunction StatsPanel() {\n    const {\n        call,\n        result,\n        loading,\n        progress,\n        error,\n    } = useWebWorker<Input, Output>(async (input, api) => {\n        let sum = 0;\n        for (let i = 0; i < input.values.length; i++) {\n            if (api.signal.aborted) {\n                throw new Error(\"aborted\");\n            }\n            sum += input.values[i];\n            if (i % 500 === 0) {\n                api.progress((i + 1) / input.values.length);\n            }\n        }\n\n        return {\n            sum,\n            avg: input.values.length ? sum / input.values.length : 0,\n        };\n    });\n\n    const run = async () => {\n        await call(\n            { values: Array.from({ length: 50000 }, (_, i) => i + 1) },\n            {\n                timeout: 5000,\n                onProgress: (p) => console.log(\"progress\", p),\n            },\n        );\n    };\n\n    return (\n        <div>\n            <button disabled={loading} onClick={run}>Compute</button>\n            <div>Progress: {String(progress)}</div>\n            <pre>{JSON.stringify(result, null, 2)}</pre>\n            {error && <p>{error.message}</p>}\n        </div>\n    );\n}\n```\n\nPooling, retries, events, and cancellation:\n\n```tsx\nimport { useEffect } from \"react\";\nimport { useWebWorker } from \"@zuzjs/hooks\";\n\nexport function BatchRunner() {\n    const {\n        call,\n        cancelAll,\n        on,\n        pending,\n    } = useWebWorker<number, number>(\n        async (n, api) => {\n            api.emit(\"job:start\", n);\n            const out = n * n;\n            api.emit(\"job:end\", out);\n            return out;\n        },\n        {\n            poolSize: 4,\n            strategy: \"least-busy\",\n            callDefaults: {\n                retries: 2,\n                retryDelay: (attempt) => 200 * (attempt + 1),\n            },\n        },\n    );\n\n    useEffect(() => {\n        const offStart = on(\"job:start\", (payload) => {\n            console.log(\"started\", payload);\n        });\n        const offEnd = on(\"job:end\", (payload) => {\n            console.log(\"finished\", payload);\n        });\n        return () => {\n            offStart();\n            offEnd();\n        };\n    }, [on]);\n\n    const runAll = async () => {\n        const values = [2, 3, 4, 5, 6, 7, 8, 9];\n        const results = await Promise.all(values.map((v) => call(v)));\n        console.log(results);\n    };\n\n    return (\n        <div>\n            <button onClick={runAll}>Run Batch</button>\n            <button onClick={cancelAll}>Cancel All</button>\n            <p>Pending: {pending}</p>\n        </div>\n    );\n}\n```\n\nTransferables:\n\n```tsx\nimport { transfer, useWebWorker } from \"@zuzjs/hooks\";\n\nfunction ZeroCopyExample() {\n    const { call } = useWebWorker<ArrayBuffer, ArrayBuffer>((buffer) => {\n        const view = new Uint8Array(buffer);\n        for (let i = 0; i < view.length; i++) view[i] = (view[i] + 1) & 255;\n        return transfer(buffer, [buffer]);\n    });\n\n    const run = async () => {\n        const buffer = new ArrayBuffer(1024);\n        const out = await call(buffer, { transfer: [buffer] });\n        console.log(out.byteLength);\n    };\n\n    return <button onClick={run}>Mutate Buffer</button>;\n}\n```\n\nUse an existing worker script:\n\n```tsx\nimport { useWebWorker } from \"@zuzjs/hooks\";\n\nfunction ExistingScriptWorker() {\n    const { call } = useWebWorker<string, string>(\"/workers/transform-worker.js\");\n\n    const onRun = async () => {\n        const transformed = await call(\"hello world\");\n        console.log(transformed);\n    };\n\n    return <button onClick={onRun}>Run Worker Script</button>;\n}\n```\n\nNotes:\n\n- Function workers must be self-contained. Do not rely on outer-scope closures.\n- `status` reflects the latest lifecycle state: `idle | running | success | error | terminated`.\n- `terminate()` shuts down workers immediately; `restart()` recreates fresh workers.\n- In frameworks with SSR, invoke this hook in client-only components.\n\n## Visual Animation Usage\n\n### useGradient\n\n```tsx\nimport { useEffect } from \"react\";\nimport { useGradient } from \"@zuzjs/hooks\";\n\nfunction AiHero({ thinking }: { thinking: boolean }) {\n    const { style, controls } = useGradient({\n\n        type: \"orb\",\n        animate: true,\n        animation: \"rotate\",\n        autoPlay: true,\n        duration: 9000,\n        preset: \"idle\",\n        bloom: true,\n        bloomIntensity: 0.55,\n        bloomAnimate: true,\n        orbs: [\n            { color: \"#7C3AED\", x: 20, y: 24, size: 48, opacity: 0.58 },\n            { color: \"#00D4FF\", x: 78, y: 34, size: 42, opacity: 0.5 },\n            { color: \"#2D5BFF\", x: 52, y: 76, size: 52, opacity: 0.45 },\n        ],\n    });\n\n    useEffect(() => {\n        // Idle ambient motion -> fast activity while submit/thinking is active.\n        controls.setPreset(thinking ? \"thinking\" : \"idle\");\n\n        // Optional flash burst when entering the thinking state.\n        if (thinking) controls.flash(1.2, 260);\n    }, [thinking, controls]);\n\n    return <div style={{ ...style, minHeight: 260, borderRadius: 14 }} />;\n}\n```\n\n#### Direct DOM mode (`directDOM`)\n\nBy default every animation frame calls `setProgress()` which triggers a React re-render. When attached to a decorative element you can bypass React state entirely:\n\n```tsx\nfunction GlowOrb({ thinking }: { thinking: boolean }) {\n    const { style, elementRef, controls } = useGradient({\n        type: \"orb\",\n        animate: true,\n        animation: \"float\",\n        autoPlay: true,\n        duration: 6000,\n        preset: \"idle\",\n        directDOM: true,  // animated CSS written directly to elementRef — zero React renders\n        bloom: true,\n        bloomIntensity: 0.55,\n        bloomAnimate: true,\n        orbs: [\n            { color: \"#7C3AED\", x: 20, y: 24, size: 48, opacity: 0.58 },\n            { color: \"#00D4FF\", x: 78, y: 34, size: 42, opacity: 0.5 },\n        ],\n    });\n\n    useEffect(() => {\n        controls.setPreset(thinking ? \"thinking\" : \"idle\");\n        if (thinking) controls.flash(1.2, 260);\n    }, [thinking, controls]);\n\n    // Attach elementRef to the target element — style only contains static props\n    return <div ref={elementRef as React.Ref<HTMLDivElement>} style={{ ...style, borderRadius: \"50%\" }} />;\n}\n```\n\n**When to use `directDOM`:** decorative animated backgrounds, glow orbs, or any element where the animation should not trigger parent re-renders.\n**When not to use it:** when you need the `progress` value in React state (e.g. to drive other components).\n\nFor GPU-heavy scenes, cap animation updates with `maxFPS` (default `30`):\n\n```tsx\nuseGradient({\n    type: \"radial\",\n    animate: true,\n    directDOM: true,\n    cssAnimation: true, // compositor-driven path when supported\n    webgl: true,        // integrated WebGL mode in the same hook (no external libs)\n    webglDprCap: 1.25,  // reduce GPU load on high-DPR screens\n    maxFPS: 24,\n});\n```\n```\n\n### useTimeline\n\n#### Single range per layer\n\nEach layer animates over one `start` → `end` scroll range. Flat keys on the layer object are the quickest API:\n\n```tsx\nimport { useTimeline } from \"@zuzjs/hooks\";\n\nfunction ScrollScene() {\n    const { containerRef, layers, effects, layerStates, getLayerScrollRange } = useTimeline({\n        mode: \"scroll\",\n        sceneHeight: 2200,\n        layers: [\n            {\n                id: \"intro\",\n                start: 0,\n                end: 0.25,\n                opacity: { from: 0, to: 1 },\n                y: [\"32px\", 0, \"easeOut\"],\n                scale: { from: 0.96, to: 1 },\n            },\n            {\n                id: \"expand\",\n                start: 0.25,\n                end: 0.8,\n                opacity: { from: 0.7, to: 1 },\n                borderRadius: [\"24px\", 0],\n                perspective: [\"400px\", \"900px\"],\n                rx: [\"12deg\", 0],\n                ry: [\"-8deg\", 0],\n                z: [\"-80px\", 0],\n                scale3d: {\n                    x: { from: 0.92, to: 1 },\n                    y: { from: 0.92, to: 1 },\n                    z: { from: 1, to: 1 },\n                },\n            },\n            {\n                id: \"content\",\n                start: 1,\n                end: 0.8,\n                opacity: { from: 1, to: 0 },\n            },\n        ],\n    });\n\n    const introRange = getLayerScrollRange(\"intro\");\n    // introRange?.span = total scroll px consumed by the intro range\n\n    return (\n        <div ref={containerRef} style={{ height: \"250vh\" }}>\n            <div style={{ position: \"sticky\", top: 0, ...effects.intro }}>\n                Timeline-driven hero\n            </div>\n            <div style={{ ...effects.expand, opacity: 1 - layers.content }}>\n                3D transform scene\n            </div>\n            <small>\n                expand active: {String(layerStates.expand.active)}\n                {\" | intro px span: \"}{introRange?.span ?? 0}\n            </small>\n        </div>\n    );\n}\n```\n\n#### Multiple ranges per layer (`keyframes`)\n\nUse `keyframes` on a layer to chain several `start`/`end` ranges under the same ID. Each keyframe supports the same flat-key API as a single-range layer. Effects from each keyframe are applied in order — once a keyframe completes it holds its end state until the next one begins, giving seamless chaining.\n\n```tsx\nconst { containerRef, effects } = useTimeline({\n    mode: \"scroll\",\n    sceneHeight: 3000,\n    layers: [\n        {\n            id: \"hero\",\n            keyframes: [\n                // Phase 1: enters from below while fading in\n                { start: 0,   end: 0.3, opacity: [0, 1],    y: [\"60px\", 0, \"easeOut\"] },\n                // Phase 2: scales down while drifting up\n                { start: 0.3, end: 0.7, scale: [1, 0.85],   y: [\"0px\", \"-40px\"] },\n                // Phase 3: collapses and fades out\n                { start: 0.7, end: 1.0, scale: [0.85, 0.1], opacity: [1, 0] },\n            ],\n        },\n    ],\n});\n\nreturn (\n    <div ref={containerRef} style={{ height: \"300vh\" }}>\n        <div style={{ position: \"sticky\", top: 0, ...effects.hero }}>\n            Hero\n        </div>\n    </div>\n);\n```\n\n`layers.hero` gives the overall 0→1 progress across the full `keyframes` timeline.\n`effects.hero` gives the merged CSS style for the currently active keyframe(s).\n\n#### Anchor references (`start`/`end` linked to other layers)\n\nYou can link `start`/`end` to another layer (or keyframe) instead of hardcoding numbers.\n\nSupported forms:\n\n- `\"hero\"` → defaults to `hero:end`\n- `\"hero:start\"` / `\"hero:end\"`\n- `\"hero#intro:end\"` (target keyframe by keyframe `id`)\n- `\"hero@0:start\"` (target keyframe by index)\n- `\"hero:end+0.03\"` / `\"hero:end-0.02\"` (offset in progress space)\n- `{ layerId: \"hero\", edge: \"end\", offset: 0.03 }`\n\n```tsx\nuseTimeline({\n    mode: \"scroll\",\n    interpolate: true,\n    layers: [\n        {\n            id: \"heroGradient\",\n            keyframes: [\n                { id: \"shrink\", start: 1, end: 0.5, scale: [1, 0.3] },\n            ],\n        },\n        {\n            id: \"dashboard\",\n            keyframes: [\n                // Starts slightly after heroGradient ends, then eases in\n                { start: \"heroGradient:end+0.03\", end: 0.78, y: [0, 200, \"easeOut\"] },\n            ],\n        },\n    ],\n});\n```\n\nTip: if `start` and `end` resolve to the same point, the animation can look like a snap. Use an offset (`+0.02` to `+0.08`) or a larger range.\n\n#### Built-in debug overlay\n\nYou no longer need to render a debug panel in each page. Enable `debug: true` and `useTimeline` mounts a floating overlay on `document.body` automatically.\n\n```tsx\nuseTimeline({\n    mode: \"scroll\",\n    debug: process.env.NODE_ENV !== \"production\",\n    // debugOverlay defaults to true\n    // debugOverlay: false, // optional: disable built-in overlay\n    layers: [...],\n});\n```\n\nThe overlay shows:\n\n- live `sceneHeight`, `viewportHeight`, `scrollTop`, `scrollProgress`\n- per-layer pixel ranges\n- px <-> progress conversions\n- **recommended offset hints** when a linked span is near-zero and likely to snap/flicker\n\n#### Apple-style reveal + stack example\n\nThis pattern reveals multiple objects in phases, then stacks/compresses them like a product scroll narrative.\n\n```tsx\nconst { containerRef, effects } = useTimeline({\n    mode: \"scroll\",\n    interpolate: true,\n    lerpFactor: 0.08,\n    layers: [\n        {\n            id: \"phone\",\n            keyframes: [\n                { id: \"enter\", start: 0.02, end: 0.2, opacity: [0, 1], y: [80, 0, \"easeOut\"], scale: [0.86, 1, \"easeOut\"] },\n                { id: \"float\", start: \"phone#enter:end\", end: 0.48, y: [0, -18], ry: [0, -6], rx: [0, 4] },\n                { id: \"stack\", start: \"cards#enter:end+0.02\", end: 0.85, y: [-18, -56], scale: [1, 0.88], opacity: [1, 0.95] },\n            ],\n        },\n        {\n            id: \"cards\",\n            keyframes: [\n                { id: \"enter\", start: \"phone#enter:end+0.02\", end: 0.58, opacity: [0, 1], y: [120, 0, \"easeOut\"], sx: [0.9, 1], sy: [0.9, 1] },\n                { id: \"stack\", start: \"phone#stack:start\", end: 0.9, y: [0, 48], scale: [1, 0.84], opacity: [1, 0.82] },\n            ],\n        },\n        {\n            id: \"headline\",\n            keyframes: [\n                { start: 0, end: 0.16, opacity: [0, 1], y: [24, 0] },\n                { start: \"phone#stack:start\", end: 0.92, opacity: [1, 0.1], y: [0, -40] },\n            ],\n        },\n    ],\n});\n\nreturn (\n    <section ref={containerRef} style={{ height: \"340vh\", position: \"relative\" }}>\n        <div style={{ position: \"sticky\", top: 0, height: \"100vh\", overflow: \"hidden\" }}>\n            <h1 style={{ ...effects.headline }}>Powerful. Layered. Cinematic.</h1>\n            <div style={{ position: \"absolute\", inset: 0, display: \"grid\", placeItems: \"center\", ...effects.phone }}>\n                {/* phone mock */}\n            </div>\n            <div style={{ position: \"absolute\", inset: 0, display: \"grid\", placeItems: \"center\", ...effects.cards }}>\n                {/* card stack */}\n            </div>\n        </div>\n    </section>\n);\n```\n\n#### Smooth scroll mode (`interpolate`)\n\nBy default the playhead snaps directly to the scroll position on every frame. Set `interpolate: true` to lerp the playhead toward the scroll target — producing a smooth, inertia-like response:\n\n```tsx\nuseTimeline({\n    mode: \"scroll\",\n    interpolate: true,\n    lerpFactor: 0.08, // 0.01 (very slow) → 0.5 (near-instant). Default: 0.1\n    maxFPS: 45,       // cap playhead state updates during scroll/lerp\n    layers: [\n        {\n            id: \"hero\",\n            entry: {\n                duration: 800,\n                delay: 80,\n                opacity: [0, 1],\n                y: [36, 0, \"easeOut\"],\n                scale: [0.96, 1, \"easeOut\"],\n            },\n            keyframes: [\n                { start: 0.08, end: 0.42, y: [0, -42] },\n            ],\n        },\n    ],\n})\n```\n\n`entry` runs once per layer on mount and uses the same flat effect API as keyframes.\n\n#### Triggers\n\nEvery layer span, keyframe, and entry supports a `trigger` option that controls *when and how* the animation plays.\n\n##### Span / Keyframe trigger\n\n| Value | Behaviour |\n|---|---|\n| `\"timeline\"` (default) | Sticky chaining — once a span starts it holds its end-state until the next span takes over. Classic scroll timeline. |\n| `\"inView\"` | Active **only while** the playhead is inside this span's range. Reverses when you scroll back. |\n\n```tsx\n// Layer default — all keyframes on this layer reverse on scroll-back\n{\n    id: \"card\",\n    trigger: \"inView\",\n    keyframes: [\n        { start: 0.1, end: 0.3, y: [60, 0], opacity: [0, 1] },\n        { start: 0.3, end: 0.6, scale: [1, 1.08] },\n    ],\n}\n\n// Per-keyframe override — only this span reverses\n{\n    id: \"badge\",\n    keyframes: [\n        { trigger: \"inView\", start: 0.2, end: 0.4, y: [40, 0] },\n        { start: 0.4, end: 0.7, opacity: [1, 0] }, // sticky\n    ],\n}\n```\n\n##### Entry trigger\n\n| Value | Behaviour |\n|---|---|\n| `\"mount\"` (default) | Runs **once** after the component mounts, then stops. |\n| `\"inView\"` | Progress is tied to the layer's scroll range — plays forward and **reverses** when you scroll back out. |\n\n```tsx\n// One-time mount animation (default)\n{\n    id: \"hero\",\n    entry: {\n        duration: 700,\n        y: [80, 0, \"$easing-spring\"], // $token → var(--easing-spring)\n        opacity: [0, 1],\n    },\n}\n\n// Reversible in-view entry — animates in/out as you scroll\n{\n    id: \"feature\",\n    start: 0.15,\n    end: 0.45,\n    entry: {\n        trigger: \"inView\",\n        y: [60, 0, \"easeOut\"],      // inline tuple easing per property\n        opacity: [0, 1],\n        scale: [0.94, 1],\n    },\n}\n```\n\n#### Value API\n\n`useTimeline` supports both forward ranges (`start: 0 → end: 0.5`) and reverse ranges (`start: 1 → end: 0.5`).\nUse `effects[layerId]` for auto-composed style output and `layers[layerId]` when you need direct 0→1 progress.\n\nFlat keys on a layer (or keyframe) accept `TransformValueEffect`:\n\n- **Object mode:** `{ from: \"24px\", to: 0, easing: \"easeOut\" }`\n- **Tuple mode:** `[\"24px\", 0, \"easeOut\"]`\n\nUnits are inferred from `from`/`to` — no separate `unit` field needed.\n\nEasing presets: `\"linear\"` | `\"easeIn\"` | `\"easeOut\"` | `\"easeInOut\"` or a custom `(t: number) => number`.\n\nIf easing is omitted, `useTimeline` defaults to `\"easeOut\"`.\n\n**Transform shorthand aliases** (work as flat keys or inside `transforms`):\n\n| Shorthand | CSS function |\n|---|---|\n| `x`, `y`, `z` | `translateX`, `translateY`, `translateZ` |\n| `rx`, `ry`, `rz` | `rotateX`, `rotateY`, `rotateZ` |\n| `sx`, `sy`, `sz` | `scaleX`, `scaleY`, `scaleZ` |\n| `skx`, `sky` | `skewX`, `skewY` |\n| `skew` | `skew(angle)` or `{ x, y }` pair |\n\n### useParallax\n\n### useParallax\n\n```tsx\nimport { useParallax } from \"@zuzjs/hooks\";\nimport { useRef } from \"react\";\n\nfunction GlowLayer() {\n    const anchorRef = useRef<HTMLDivElement>(null);\n    const offset = useParallax(0.18, anchorRef);\n\n    return (\n        <div ref={anchorRef} style={{ transform: `translateY(${offset}px)` }}>\n            Floating glow layer\n        </div>\n    );\n}\n```\n\n`useParallax` and `useTimeline` automatically use `ScrollView`'s internal scroll container when mounted inside `ScrollView`, otherwise they use native window scroll.\n\nScroll updates are batched \\u2014 only one `requestAnimationFrame` is ever in flight at a time. Micro-changes below 0.5 px are skipped to avoid unnecessary re-renders.\n\n## Data and DB Usage\n\n### useDatabase\n\n```tsx\nimport { useDatabase } from \"@zuzjs/hooks\";\n\nfunction TodoStore() {\n    const db = useDatabase({\n        dbName: \"todos-db\",\n        storeName: \"todos\",\n        version: 1,\n        keyPath: \"id\",\n    });\n\n    // db.add / db.get / db.update / db.remove pattern depends on your schema setup.\n    return null;\n}\n```\n\n### DBProvider Hooks\n\n```tsx\nimport { DatabaseProvider, useDB, useWatchDB } from \"@zuzjs/hooks\";\n\nfunction Todos() {\n    const db = useDB();\n    useWatchDB(\"todos\", () => {\n        // react to db mutations\n    });\n    return null;\n}\n```\n\n## Additional Exports\n\nThe package also exports related types and helpers, including:\n\n- Calendar and crop types: `CalendarMonthFormat`, `CalendarWeekdayFormat`, `CropShape`.\n- Keyboard and anchor enums: `KeyCode`, `AnchorType`.\n- Command and chart types: `Command`, `CommandActionProps`, `LineChartProps`, `DataPoint`.\n- DnD types: `DragSpec`, `DragProbe`, `DropSpec`, `DropProbe`.\n- DB provider utilities: `DatabaseProvider`, `DB_HEAL_BLOCKED_KEY`, `DB_HEAL_STATE_KEY`, `DB_HEALED_KEY`.\n- Timeline types: `TimelineLayer`, `TimelineKeyframe`, `TimelineLayerState`, `TimelineEffect`, `TimelineEasing`, `TimelineMode`, `TimelineOptions`, `TimelineTransformEffects`, `TransformValueEffect`, `TransformValueTuple`.\n- Gradient types: `UseGradientOptions`, `UseGradientResult`, `GradientType`, `GradientAnimation`, `GradientMotionPreset`, `GradientStop`, `OrbLayer`.\n\n## Notes\n\n- Hooks touching browser APIs must run in client-rendered environments.\n- Use TypeScript in your app to get strongly-typed options and return values for each hook.\n\n## License\n\nMIT","readmeFilename":"README.md"}