{"_id":"react-theme-switch-animation","_rev":"20-d60e1f81081f987ea3214eec85373bd3","name":"react-theme-switch-animation","dist-tags":{"latest":"1.3.0"},"versions":{"0.0.5":{"name":"react-theme-switch-animation","version":"0.0.5","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.0.5","homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"a6427ea365c9625439c249b653768093b76097d4","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.0.5.tgz","fileCount":8,"integrity":"sha512-zpf5BXgCrwMSgNibx51eOwFu8mDuk/5aQznR2M+ukfOXY168TbUJ32nJrvwuGYVXpk+K8v8Y0i7a4//7clDEtQ==","signatures":[{"sig":"MEUCICzoPEQSRhEMWSc1j+PfAUynbbxDk2Wwt7HonYjSELojAiEAjJ/fies2fO3WrGzMz71wuTL+e3SFOJmEPkA1H6EcsO4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14438},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"d068b78bcb2b2afaf41368ac1f2d12a97445f543","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts && npm run build:css","format":"prettier --write . --config ./.prettierrc","prepare":"husky","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","build:css":"postcss src/style.css -o dist/style.css","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"_npmVersion":"10.7.0","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"20.14.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.0.5_1719223682311_0.6177250587921985","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"react-theme-switch-animation","version":"0.0.7","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.0.7","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"508db4b94141fec99f2999b71a68b6b27c60af69","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.0.7.tgz","fileCount":8,"integrity":"sha512-XGIRVJ1prHhEHuGy1zOVnDX/nMXbrU5G9J4ga2jSHVFd/LTFlfosP2J0vPfB/2+aIlNwng70BzbsDBlYjjK8MQ==","signatures":[{"sig":"MEQCIGB4IXARWkAPmq8T1vP8R6jwUtfSM/giK976zAwo8PZBAiA4JECDkJD8NFzFgbss6THEWXr04DkLZrMfyd3znY+ZYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15056},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"7e0824c9550c913af67c4f04f555bb2c1d0c65bf","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts && npm run build:css","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","build:css":"postcss src/style.css -o dist/style.css","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"10.8.1","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"20.16.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.0.7_1725815242634_0.5781964461829066","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"react-theme-switch-animation","version":"0.1.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.1.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"957abdda2cf090ccd179435e40fc0f86b3943853","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.1.0.tgz","fileCount":8,"integrity":"sha512-gGnDpr8qogXJ26LUoGg2aQwpOGk8rjVLUcU/UYGDJJEPRjIvjR/qgBJyEqVMhImqn+aTSBr0w1q36y726ETH8Q==","signatures":[{"sig":"MEUCIEBsedH2Qq/aKoIi3HFVK81hFCej9URg/r5If6ZhJVDnAiEAzeuszqL0HiLCVzemGUSV/N80Xh5+a671rTCG0TyNlbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24457},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"3ed7c0b538da2cc302c08f74d6b2a00e99fb78f6","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts && npm run build:css","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","build:css":"postcss src/style.css -o dist/style.css","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.1.0_1738562746111_0.8981922595762679","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"react-theme-switch-animation","version":"0.2.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.2.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"3075522bb97154015ac5654e5e0c7c7233879867","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.2.0.tgz","fileCount":7,"integrity":"sha512-+hoErI2hcahdI+8HmQsn8UXaeOPAs70qT6708QDx9C14SGNa5OXE5tdGproejua4qQ2+yc+vT4ennHbL1nyyjw==","signatures":[{"sig":"MEUCIQDK9C6EI0NCMRsEnu4Ygif0tMhaD/8+8vpVttqVe5MEJgIgWTmJWZUpBUY89XFAdOiFMmX19dOGkd2sSw6dba44vLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25473},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"630521285d930f62f223ce976c8a71a63f633f9c","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.2.0_1738563355576_0.5973252661576762","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"react-theme-switch-animation","version":"0.2.1","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.2.1","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"f901741fd3056e8405c2646672777eebdd962930","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.2.1.tgz","fileCount":6,"integrity":"sha512-rKOHl+cX2CkyV5EM0g0wcfkvEapeGnFhkjbdO5x/7atDaqJR8BdnF6fht2Gss3nCBXBapUZ9SR7msiRqTVDVmA==","signatures":[{"sig":"MEQCIGqlNZymVJ64zpo6+rrtcVfL9k3G73XZzPG1sd+suPNVAiAzMs2uuyoXZsJ/8Pzr+EsbP2xqNN2Sr+s4TF4cfv+ZWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29056},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"822d82f3bd8e4e8998104b73c1055c5b6457ffa9","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.2.1_1744565782129_0.6759768085473026","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"react-theme-switch-animation","version":"0.3.1","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.3.1","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"34fe542c496e73afa98c62a72fa877b681c9df3f","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.3.1.tgz","fileCount":6,"integrity":"sha512-UOZLEt/UbEuPwz+hGaf2BVcsyQd27zymCNW3JLwbDZJ0cxUu1PXDEqKuAnKc2H0l1cC86iR2L8sUh+OLGQ9CJA==","signatures":[{"sig":"MEQCIAqtBqADVBW2q4trzLP1CwC2z+7l0chW4kmYcMOpq/uDAiBOu4gDboNd6Si5Z83HSAPvC9jXL9hlAO4kNhlRU2FQHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29056},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"ebb9fa046c4e00e2c213fa099f898ae7dba64810","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.3.1_1744565963670_0.8414499971011751","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"react-theme-switch-animation","version":"0.4.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@0.4.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"ac90e54d57eb764d09e02e9e9f5b18d48118f32c","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-0.4.0.tgz","fileCount":6,"integrity":"sha512-Y50y0heHz8VjF7HH07yXdRJmMV1alcOKzwPcna9/HCPPHvvAt4k8YR1uTEfDKaUImPAirzP34EqKKom3HZtINA==","signatures":[{"sig":"MEUCIQCpeE6EhzGGrEnmcnVopgdvm8gloIM3FXivJOxwkIXPAgIgIGWeEwIvSrERbcsChyW4KluN3RHSTct3UFvPoQRrCvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29951},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"b7d687f1234bfbacbba5009919316f6ad5d19d89","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"10.9.2","description":"React Theme Switch Animation for ReactJS, NextJS App Router","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_0.4.0_1745131059074_0.3130179815077436","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"react-theme-switch-animation","version":"1.0.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light","view-transition","circle","blur","qr-scan","theme-toggle","dark-mode","tailwindcss","smooth-animation","ui-component"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@1.0.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"08bcccdd2377ee8beb218ee6a74ba7043e379a0a","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-1.0.0.tgz","fileCount":6,"integrity":"sha512-RiV++V5D9HQEt3ZutYQAO37Gmd1uVQBuUBvyptobV+wkpN38iUGmCireJrSlLAEP04B2jT87YD1ABU7Nl7dpsw==","signatures":[{"sig":"MEUCIDgxi1D/Bf8RWMvs+egnTFF0S+8R5Gesfhi+fZzKTxqlAiEA2qfeHp8Z8oZCBAfBpTgmJfbvj9PgCl+NTG3jADpOa5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34159},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"3f22fb8b8e1abe9ad2ea707ff548fa7ec2e1928e","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"Beautiful, smooth animations for theme switching in React applications. Features Circle, Blur Circle, and QR Scan animations with TypeScript support.","directories":{},"_nodeVersion":"22.13.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_1.0.0_1758116227849_0.4427055329890386","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"react-theme-switch-animation","version":"1.1.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light","view-transition","circle","blur","qr-scan","polygon","polygon-gradient","gif","theme-toggle","dark-mode","tailwindcss","smooth-animation","ui-component"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@1.1.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"29673ba87caf7c38bff78e1f07ed2926982f1d43","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-1.1.0.tgz","fileCount":6,"integrity":"sha512-k140o1/0Zf8BI5zP9Rh/6rHwI/misQhs+YWCI18EOUY8TdbEyDo/aMUn605rdd6aFZ82uwnoSSdQLi9aBjdxMw==","signatures":[{"sig":"MEUCIQDl5RiTpUeaJCEK6mhKfyxNtoy6k8Gd6rq1mntXG5vZ0wIgQ6b1KHOucS8ztyD680O/BIObmRniwEKYt9BUHPeaWhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50800},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"d93f35dce39afb46a4f9fa345efb30943ba96fdb","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"10.9.2","description":"Beautiful, smooth animations for theme switching in React applications. Features Circle, Blur Circle, QR Scan, Polygon, Polygon Gradient, and Custom GIF animations with TypeScript support.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_1.1.0_1781074449556_0.5909789709416633","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"react-theme-switch-animation","version":"1.2.0","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light","view-transition","circle","blur","qr-scan","polygon","polygon-gradient","gif","theme-toggle","dark-mode","tailwindcss","smooth-animation","ui-component"],"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","_id":"react-theme-switch-animation@1.2.0","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"dist":{"shasum":"8087e598961e8b508ac841a79ed9925e1316337c","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-1.2.0.tgz","fileCount":6,"integrity":"sha512-EdBMzUduFngRYN+eL1vOFfCYKFhwLxIELrbcy3tiLRUTuyHQiI26T542G1iu7YWkMd8r6qCmvHdqyL3Ascyvpw==","signatures":[{"sig":"MEYCIQCuZJKsXwH5zQipCR8LM7d4y052j+h+WqCln0faSnMJTgIhAKFEdsMct3YWULaZ9XOuJeGL+vJDuIm9HoLv1odxk5ri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53920},"main":"dist/index.js","engines":{"node":">=18.17.0"},"gitHead":"6cf565ad6c1047e9c7ad58a9d535ebb902c03ebf","scripts":{"lint":"eslint \"**/*.{js,jsx,ts,tsx}\"","build":"npm run build:ts","format":"prettier --write . --config ./.prettierrc","prepare":"husky","release":"release-it","build:ts":"tsc","lint:fix":"eslint --fix . --ext .{js,jsx,ts,tsx} && yarn lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_npmVersion":"11.0.0","description":"Beautiful, smooth animations for theme switching in React applications. Features Circle, Blur Circle, QR Scan, Polygon, Polygon Gradient, and Custom GIF animations with TypeScript support.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.0.11","eslint":"^9.5.0","postcss":"^8.4.38","prettier":"^3.3.2","release-it":"^17.6.0","typescript":"^5.5.2","lint-staged":"^15.2.7","postcss-cli":"^11.0.0","@types/react":"^18.3.3","autoprefixer":"^10.4.19","@commitlint/cli":"^19.3.0","@types/react-dom":"^18.3.0","prettier-plugin-packagejson":"^2.5.0","@commitlint/config-conventional":"^19.2.2","@release-it/conventional-changelog":"^8.0.1","@ianvs/prettier-plugin-sort-imports":"^4.2.1"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0","react-dom":"^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-theme-switch-animation_1.2.0_1786323828847_0.9391315886092144","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"react-theme-switch-animation","version":"1.3.0","description":"Beautiful, smooth animations for theme switching in React applications. Features Circle, Blur Circle, QR Scan, Polygon, Polygon Gradient, and Custom GIF animations with TypeScript support.","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light","view-transition","circle","blur","qr-scan","polygon","polygon-gradient","gif","theme-toggle","dark-mode","tailwindcss","smooth-animation","ui-component"],"homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"license":"MIT","author":{"name":"Vo Ngoc Quang Minh"},"main":"dist/index.js","typings":"dist/index.d.ts","scripts":{"build":"npm run build:ts","build:ts":"tsc","format":"prettier --write . --config ./.prettierrc","lint":"eslint .","lint:fix":"eslint --fix . && npm run lint:styles","lint:styles":"prettier --write \"**/*.{css,scss}\" --config ./.prettierrc","prepare":"husky","prepublishOnly":"npm run build","release":"release-it"},"dependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"devDependencies":{"@commitlint/cli":"^21.2.1","@commitlint/config-conventional":"^21.2.0","@eslint/js":"^10.0.1","@ianvs/prettier-plugin-sort-imports":"^4.7.1","@release-it/conventional-changelog":"^12.0.0","@types/react":"^19.2.18","@types/react-dom":"^19.2.4","autoprefixer":"^10.5.4","eslint":"^10.8.1","eslint-config-prettier":"^10.1.8","globals":"^17.9.0","husky":"^9.1.7","lint-staged":"^17.3.0","postcss":"^8.5.26","postcss-cli":"^11.0.1","prettier":"^3.9.6","prettier-plugin-packagejson":"^3.0.2","release-it":"^21.0.1","typescript":"^5.9.3","typescript-eslint":"^8.66.0"},"peerDependencies":{"react":"^17.0.0 || ^18.0.0 || ^19.0.0","react-dom":"^17.0.0 || ^18.0.0 || ^19.0.0"},"engines":{"node":">=18.17.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"release-it":{"git":{"commitMessage":"chore: release ${version}","tagName":"v${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":"angular"}}},"_id":"react-theme-switch-animation@1.3.0","gitHead":"640e190966e9c0f5f9d05ef25832693bd26c65a8","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-N76XbipyoaLpGc67I3bSrggwtBpLmi+flHwzF+NqOKKTBbeAxiX9DO0Xi8Jt6mEDsqDzfHZniL0QxDKnRen2DA==","shasum":"cf3a1ec33b9f225402d3f16553aba2cb2e98d226","tarball":"https://registry.npmjs.org/react-theme-switch-animation/-/react-theme-switch-animation-1.3.0.tgz","fileCount":6,"unpackedSize":59574,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG2w676YlhY2ly7UXSIMaXlygrMjqaAGmZ1SgwnV1PiOAiB824VOGt7N1XMGhPtJstS6eoa0HpIp5GKuXwkfnVcuQA=="}]},"_npmUser":{"name":"minhomega","email":"minhvo0502982@gmail.com"},"directories":{},"maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-theme-switch-animation_1.3.0_1786941171191_0.4224341454249345"},"_hasShrinkwrap":false}},"time":{"created":"2024-06-24T10:08:02.174Z","modified":"2026-08-17T04:32:51.499Z","0.0.4":"2024-06-23T06:51:37.291Z","0.0.6":"2024-06-23T07:03:12.526Z","0.0.10":"2024-06-23T07:18:50.044Z","0.0.11":"2024-06-23T07:31:07.338Z","0.0.13":"2024-06-23T07:41:22.802Z","0.0.14":"2024-06-23T07:58:45.510Z","0.0.15":"2024-06-23T08:02:44.082Z","0.0.16":"2024-06-23T08:12:23.972Z","0.0.5":"2024-06-24T10:08:03.176Z","0.0.7":"2024-09-08T17:07:22.760Z","0.1.0":"2025-02-03T06:05:46.342Z","0.2.0":"2025-02-03T06:15:55.755Z","0.2.1":"2025-04-13T17:36:22.347Z","0.3.1":"2025-04-13T17:39:23.875Z","0.4.0":"2025-04-20T06:37:39.285Z","1.0.0":"2025-09-17T13:37:08.032Z","1.1.0":"2026-06-10T06:54:09.718Z","1.2.0":"2026-08-10T01:03:48.999Z","1.3.0":"2026-08-17T04:32:51.340Z"},"bugs":{"url":"https://github.com/MinhOmega/react-theme-switch-animation/issues"},"author":{"name":"Vo Ngoc Quang Minh"},"license":"MIT","homepage":"https://github.com/MinhOmega/react-theme-switch-animation#readme","keywords":["react","reactjs","hooks","theme","animation","switch","typescript","nextjs","dark","light","view-transition","circle","blur","qr-scan","polygon","polygon-gradient","gif","theme-toggle","dark-mode","tailwindcss","smooth-animation","ui-component"],"description":"Beautiful, smooth animations for theme switching in React applications. Features Circle, Blur Circle, QR Scan, Polygon, Polygon Gradient, and Custom GIF animations with TypeScript support.","maintainers":[{"name":"minhomega","email":"minhvo0502982@gmail.com"}],"readme":"<h1 align=\"center\">\n  <h1 align=\"center\">React Theme Switch Animation Hook</h1>\n  <p align=\"center\">\n  Beautiful, smooth animations for theme switching in React applications. Built with TypeScript and powered by the View Transition API.\n  </p>\n</h1>\n\n<p align=\"center\">\n  <strong>\n    <a href=\"https://minhomega.github.io/react-theme-switch-animation/\" target=\"_blank\">🚀 Live Demo</a> |\n    <a href=\"https://www.npmjs.com/package/react-theme-switch-animation\" target=\"_blank\">📦 npm Package</a> |\n    <a href=\"https://github.com/minhomega/\" target=\"_blank\">💼 Hire me</a>\n  </strong>\n</p>\n\n## 🎥 Demo\n\n<p align=\"center\">\n  <img src=\"https://github.com/user-attachments/assets/b09898f4-c0ed-48dd-817c-c9f89bfecf2e\">\n</p>\n\n### ✨ Six Animation Types Available\n\n- **🔵 Circle**: Smooth expanding circle transition\n- **🌀 Blur Circle**: Circle with elegant blur effect on the edges\n- **📱 QR Scan**: Scanning line sweeps left to right (like QR code reader)\n- **🔷 Polygon**: Diagonal wipe that sweeps across the screen\n- **📐 Polygon Gradient**: Diagonal wipe with a soft gradient edge\n- **🎬 Custom GIF**: Reveal the new theme through any GIF mask of your choice\n\n## 📝 Notes\n\n- The hook is only available in the browser environment. So if you use NextJS App router or any other framework that uses Server Components, you should use this hook in a Client Component by adding the directive [`use client`](https://react.dev/reference/react/use-client)\n- Currently works only if the project is using TailwindCSS\n- Ensure your project has the necessary TailwindCSS configuration for dark mode\n\n## 🚀 Features\n\n- **🎨 Multiple Animation Types**: Circle, Blur Circle, QR Scan, Polygon, Polygon Gradient, and Custom GIF animations\n- **⚡ High Performance**: Optimized for high-resolution displays with smooth 60fps animations\n- **🎯 View Transition API**: Leverages modern browser APIs for seamless transitions\n- **📱 Responsive Design**: Works perfectly across all device sizes and screen resolutions\n- **♿ Accessibility First**: Respects `prefers-reduced-motion` and provides fallback experiences\n- **🔧 TypeScript Support**: Full TypeScript support for enhanced development experience\n- **💾 State Persistence**: Uses `localStorage` to persist theme state across sessions\n- **🎛️ Highly Customizable**: Configure duration, easing, blur amount, and more\n- **🪝 React Hooks**: Clean, modern React Hooks API\n\n## 📦 Installation\n\nInstall the package using npm or YARN:\n\n```bash\nnpm install react-theme-switch-animation\n```\n\nor\n\n```bash\nyarn add react-theme-switch-animation\n```\n\n## 📚 Usage\n\nHere’s how to use the `useModeAnimation` hook in your React component:\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { useModeAnimation } from 'react-theme-switch-animation'\n\nconst MyComponent = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation()\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      Toggle Dark Mode (Currently {isDarkMode ? 'Dark' : 'Light'} Mode)\n    </button>\n  )\n}\n\nexport default MyComponent\n```\n\n## 📚 API\n\n`useModeAnimation` accepts an optional `props` object with the following properties:\n\n| Property           | Type                      | Default                         | Description                                                                                                 |\n| ------------------ | ------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| `duration`         | number                    | `750`                           | Duration of the animation in milliseconds (defaults to `1500` for `POLYGON_GRADIENT` and `2000` for `GIF`). |\n| `easing`           | string                    | `\"ease-in-out\"`                 | CSS easing for the animation (defaults to an expo curve for `POLYGON`, `POLYGON_GRADIENT`, and `GIF`).      |\n| `pseudoElement`    | string                    | `\"::view-transition-new(root)\"` | Pseudo-element used for the animation.                                                                      |\n| `globalClassName`  | string                    | `\"dark\"`                        | Class name to apply to the root element.                                                                    |\n| `animationType`    | ThemeAnimationType        | `ThemeAnimationType.CIRCLE`     | Type of animation effect (`CIRCLE`, `BLUR_CIRCLE`, `QR_SCAN`, `POLYGON`, `POLYGON_GRADIENT`, `GIF`)         |\n| `direction`        | ThemeAnimationDirection   | `ThemeAnimationDirection.LTR`   | Sweep direction for the `QR_SCAN` animation (`LTR`, `RTL`, `TTB`, `BTT`).                                   |\n| `blurAmount`       | number                    | `2`                             | Blur intensity for blur circle animation.                                                                   |\n| `gifUrl`           | string                    | `undefined`                     | URL of the GIF used as the reveal mask (required for the `GIF` animation type).                             |\n| `styleId`          | string                    | `\"theme-switch-style\"`          | ID for the injected style element (blur circle, polygon gradient, and gif animations).                      |\n| `isDarkMode`       | boolean                   | `false`                         | Initial dark mode state.                                                                                    |\n| `onDarkModeChange` | (isDark: boolean) => void | `undefined`                     | Callback function to handle dark mode change.                                                               |\n\n### Animation Types\n\nThe hook supports six types of animations:\n\n- `ThemeAnimationType.CIRCLE`: A clean circle expansion animation (default)\n- `ThemeAnimationType.BLUR_CIRCLE`: A circle expansion with blur effect on the edges\n- `ThemeAnimationType.QR_SCAN`: A scanning line that sweeps across the screen — configurable direction via the `direction` prop (left to right by default)\n- `ThemeAnimationType.POLYGON`: A diagonal wipe — toward dark it sweeps from the top-left corner, back to light from the bottom-right\n- `ThemeAnimationType.POLYGON_GRADIENT`: A diagonal wipe with a soft gradient edge expanding from the top-left corner\n- `ThemeAnimationType.GIF`: Reveals the new theme through a custom GIF mask that scales up to fill the screen (requires `gifUrl`)\n\n### Examples for Each Animation Type\n\n#### Circle Animation (Default)\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst CircleAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.CIRCLE,\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme\n    </button>\n  )\n}\n```\n\n#### Blur Circle Animation\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst BlurCircleAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.BLUR_CIRCLE,\n    blurAmount: 4, // Optional: adjust blur intensity\n    duration: 1000, // Optional: adjust animation duration\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme (Blur)\n    </button>\n  )\n}\n```\n\n#### QR Scan Animation\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationDirection, ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst QRScanAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.QR_SCAN,\n    direction: ThemeAnimationDirection.LTR, // Optional: LTR (default), RTL, TTB, or BTT\n    duration: 500, // Faster scan animation\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme (QR Scan)\n    </button>\n  )\n}\n```\n\nThe scan direction can be customized with `ThemeAnimationDirection`:\n\n- `ThemeAnimationDirection.LTR`: left to right (default)\n- `ThemeAnimationDirection.RTL`: right to left\n- `ThemeAnimationDirection.TTB`: top to bottom\n- `ThemeAnimationDirection.BTT`: bottom to top\n\nString literals (`'ltr'`, `'rtl'`, `'ttb'`, `'btt'`) are also accepted.\n\n#### Polygon Animation\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst PolygonAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.POLYGON,\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme (Polygon)\n    </button>\n  )\n}\n```\n\n#### Polygon Gradient Animation\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst PolygonGradientAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.POLYGON_GRADIENT,\n    duration: 1500, // Optional: defaults to 1500ms for this animation\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme (Polygon Gradient)\n    </button>\n  )\n}\n```\n\n#### Custom GIF Animation\n\n```jsx\n'use client'\n\nimport React from 'react'\nimport { ThemeAnimationType, useModeAnimation } from 'react-theme-switch-animation'\n\nconst GifAnimation = () => {\n  const { ref, toggleSwitchTheme, isDarkMode } = useModeAnimation({\n    animationType: ThemeAnimationType.GIF,\n    gifUrl: 'https://media.tenor.com/cyORI7kwShQAAAAi/shigure-ui-dance.gif', // Any GIF URL\n    duration: 2000, // Optional: defaults to 2000ms for this animation\n  })\n\n  return (\n    <button ref={ref} onClick={toggleSwitchTheme}>\n      {isDarkMode ? '🌙' : '☀️'} Toggle Theme (GIF)\n    </button>\n  )\n}\n```\n\n> **Tip:** GIFs with transparent backgrounds work best as masks — the theme is revealed through the opaque parts of the GIF. If `gifUrl` is omitted, the hook falls back to the circle animation.\n\nReturns an object containing:\n\n- `ref`: React ref for attaching to the component that will trigger the dark mode toggle.\n- `toggleSwitchTheme`: Function to toggle dark mode.\n- `isDarkMode`: Current state of dark mode (`true` for dark, `false` for light).\n\n## ⚡ Performance & Optimization\n\nThis library is built with performance in mind:\n\n- **High-Resolution Display Support**: Automatically detects and optimizes for displays ≥3000px width/height\n- **Adaptive Animation Duration**: Reduces duration by 20% on high-res displays for smoother experience\n- **GPU Acceleration**: Uses hardware-accelerated CSS properties (`transform`, `clip-path`, `mask`)\n- **Memory Efficient**: Automatic cleanup of style elements and event listeners\n- **Accessibility**: Respects `prefers-reduced-motion` for users who prefer minimal animations\n\n## 🌐 Browser Support\n\n- **Modern Browsers**: Chrome 111+, Firefox 103+, Safari 16.4+\n- **View Transition API**: Falls back gracefully on unsupported browsers\n- **Progressive Enhancement**: Basic theme switching works everywhere, animations enhance the experience\n\n## 📝 Requirements\n\n- React 16.8 or later (for Hooks support)\n- TypeScript for compiling the package during installation\n- TailwindCSS for styling (ensure dark mode is configured)\n\n## 🙏 Acknowledgements\n\nThe polygon, polygon gradient, and GIF animations are inspired by [rudrodip/theme-toggle-effect](https://github.com/rudrodip/theme-toggle-effect).\n\n## 🤝 Contributing\n\nContributions are welcome! Please open an issue or submit a pull request with your suggested changes.\n\n## 📜 License\n\nMIT\n","readmeFilename":"README.md"}