{"_id":"cookiecraft","_rev":"11-03aa25c8340ad7f350e9d5c536e1812d","name":"cookiecraft","dist-tags":{"latest":"1.0.11"},"versions":{"1.0.0":{"name":"cookiecraft","version":"1.0.0","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.0","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"7d820dacff91c36a007fb6a1fe66b0114bc87c3e","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.0.tgz","fileCount":26,"integrity":"sha512-yhUFoaSn7kkLmUIPIWzPbUe24IWUy2lHKN7CdCsov6LHZ+CgHtOSB5fE8jPyV0l0uyFFGMVsSX6JzxyRlVjuxw==","signatures":[{"sig":"MEQCIDfLVxXl5sIMiU25smUzOnwB69qtxHvaKU8+5oEY+HoKAiBtjmUFrERjjX4YKqa//OOtFEF5rPrIo0OD+rjDInHBjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":590564},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"f2fccde7fcf2902b7b77efe9035975fa5f089d32","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.0_1771329868538_0.6387215980932206","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"cookiecraft","version":"1.0.2","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.2","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"4c0c360d483b0fc18b114a23c9852c60ada6c671","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.2.tgz","fileCount":28,"integrity":"sha512-EUbjl/dBjITqU59hXXqfSisDn6yFaIxRHA2v4GuLOGPhM6z33Co/3jr7P0Hye3PvdneZC8yVUweP4g+KgdPpnw==","signatures":[{"sig":"MEYCIQDUincBQ0vG7wH6ChjkrrUoyLHfciUYUTMWsqt7dnprkwIhAKKH/3mu7UsP+wm9DaMAuYkjQnz6Ft090coPM2wUEyqE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609748},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"3bbeeae1a83978badba01201ee18ef8811139b42","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.2_1771346631286_0.9651241141100586","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"cookiecraft","version":"1.0.3","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.3","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"06f7e7990307c5b961f99735e2affa3760478efd","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.3.tgz","fileCount":27,"integrity":"sha512-vhlNzDhHK0eFr0WBZXwS+WhjxpMgk2W9CrDGsYqsxw1EzXlykU11Ez+VJ1IxsRStr9fE9IBVo2tKK9Our05pbg==","signatures":[{"sig":"MEYCIQCNlm8HSbfKkceVpPC7NV7Q54pdjHWlG484JbzDHb8WVwIhAMyIPQVsu+UzTfLy1e0J/1wtBtFR5M9UxmRhosPtwC3V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607121},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"933bc3d8ba1136f1874d9dfa77710e2c6bf1a9f8","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.3_1771359136222_0.48273398362513364","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"cookiecraft","version":"1.0.4","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.4","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"bd06ff451a870512ec4d5151ff0de91e0b73e229","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.4.tgz","fileCount":27,"integrity":"sha512-QU5M+59513hlM6TduYLQWOgTCdOCq8L0F6RdzxNM0zeohGoyK9ZBeQm+rEy3clfd3KoPjA1nwMBRRP4qr26+Ew==","signatures":[{"sig":"MEQCIBpCHsZzhQDKdlLH5XkPGYTIAkeLVEnElfrORugnbVxFAiBvQ6ul4YwuaNP6vGMsvZ0/g4Ucs5yADZMTlocTqS6YpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":608400},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"933bc3d8ba1136f1874d9dfa77710e2c6bf1a9f8","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.4_1771359909836_0.5127860151811492","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"cookiecraft","version":"1.0.5","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.5","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"f905d4e9cb7f5085955ba7270f81ca344951d84e","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.5.tgz","fileCount":27,"integrity":"sha512-yZqyTt/0GkMDPp0ovVsWWeT6gzI/aF9Am3BakhAtydwXOcemm49DZn3JFN8RvsCGDY4notH2x39nOouAdio38g==","signatures":[{"sig":"MEUCIEQ/VWpwk2dWCG6L9RaTgesEr37lrYYnAjC6WhGuSSs7AiEAhjMVKC3/+7tBlrjIAa41WnSjh0QGeBC8XGTndbrlOLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609514},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"933bc3d8ba1136f1874d9dfa77710e2c6bf1a9f8","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.5_1771360047492_0.3702354570331865","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"cookiecraft","version":"1.0.6","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.6","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"ee0c721baf3cd22d3ec21dd3766068501bee49f6","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.6.tgz","fileCount":27,"integrity":"sha512-bWT0NkkYLeIshiw+GUakTfhL8Y/Q8xSw43KDdJPO+NAtu6R+AFEH05Q98QTEwxvDJRuvwV+d2zdM2jE2XvA9Mw==","signatures":[{"sig":"MEUCIQCV+iGa2ApSVDCvSOYkVKw0/oEcoAxWfpzE0ev9zoV7IQIgaPUcv5nJojGqEv/AfLry0nd+TBe53iREGR6fYux3UXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614611},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"c6894abc0f347b1c7597a32d266323649c7bb546","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.6_1771360237023_0.915653435450235","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"cookiecraft","version":"1.0.7","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.7","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"e6b605e4de8b76a1f43b124870b42e9b95062016","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.7.tgz","fileCount":27,"integrity":"sha512-w22BjHNxoIe14nSMCElpNQSMyntm4YnETh1c14oxRSA3Fj6AGv8PghqcxSFTV8+w3HAD4W25WHVVYsBCZsOkEg==","signatures":[{"sig":"MEUCIQDGbwJJpeQ4SGex0v6cxFr+AlDEueDnOG8FEttKuACCPQIgV38m/1tnAhJpJhz56f6p8vRutn7ioLu1KyMbqprUzn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609988},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"332e9e692b765078821e637958e2276f6e6a18d9","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.7_1771361425402_0.9607768763823406","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"cookiecraft","version":"1.0.8","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.8","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"5f049b9d6c652ab77dfca232e82ba3257804c5bc","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.8.tgz","fileCount":27,"integrity":"sha512-y99shzOmk8BUfsbG4r67yh3NvwsKIJXiU0o9+EY5fsFtOVQjkZ5FgkIIpeqTKG4UHAUB/gTb5FPHqdfn968ZQA==","signatures":[{"sig":"MEUCIQD4L2Mc7fKH/iTz3NhYPhQifZ+wDRgzE5E744Jwb4HWmAIgHxCQcWd2jpV4Jz9v5QOomF8Y1Vm+uwGmuaS7qRYH2Do=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":639700},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"394992c691d724189cac7f3373f9c3cd3b245354","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest","build":"rollup -c && npm run size","test:a11y":"jest --testMatch='**/accessibility/**/*.test.ts'","test:watch":"jest --watch","type-check":"tsc --noEmit","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.8_1771368035901_0.3140247526543827","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"cookiecraft","version":"1.0.9","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.9","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"1cfe15f8021f26cb476f382580005531a0a2b409","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.9.tgz","fileCount":28,"integrity":"sha512-SJHwx3R8lWGsLUgXeW0pqrCz3mE+7SuONald1EMR4J/Gv5Hf5Var3vVwiho+1HAtgEKjwaFfyjizzw4IubjsCw==","signatures":[{"sig":"MEUCIQDzTq1PIbLWxa7yIANJku+KZV3KP0Jc24cQtE7p342xhwIgCJGbNt26RK56Exwjs/xdFKlmiAyqQc1IY1SwVii/AmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":672304},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"31598868e43b47e5a3dabc852d119e02cb73da6d","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest --config jest.config.cjs","build":"rollup -c && npm run size","test:watch":"jest --config jest.config.cjs --watch","type-check":"tsc --noEmit","test:coverage":"jest --config jest.config.cjs --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.9_1771410711254_0.9487285073537555","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"cookiecraft","version":"1.0.10","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","_id":"cookiecraft@1.0.10","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"homepage":"https://github.com/Fz3dev/cookiecraft#readme","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"dist":{"shasum":"ad617d652e91c6e7714e30c99b7ae807470b2d65","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.10.tgz","fileCount":28,"integrity":"sha512-8/MK3LFCOjSI8SDvpNdQMKUEYiU3lpauSPemHicrdc3oriuiOUO9tuU3YH6Cmm7V9giCo4TLqynP4JJ60XLPgw==","signatures":[{"sig":"MEUCIQDDRXRXEm5S9xHWMPqwdGnSXSapbG3Bb7ldfAzbsmDBJQIgdiT5UPQrEvqcMI1gurzgvuoUyo0sL49N60jOJPDeaq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":671067},"main":"dist/cookiecraft.js","type":"module","types":"dist/types/index.d.ts","unpkg":"dist/cookiecraft.min.js","module":"dist/cookiecraft.esm.js","gitHead":"d4797981cd7fb9b8ec478e6bd4c592be46877d8a","scripts":{"dev":"rollup -c -w","lint":"eslint src/**/*.ts","size":"size-limit","test":"jest --config jest.config.cjs","build":"rollup -c && npm run size","test:watch":"jest --config jest.config.cjs --watch","type-check":"tsc --noEmit","test:coverage":"jest --config jest.config.cjs --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"jsdelivr":"dist/cookiecraft.min.js","repository":{"url":"git+https://github.com/Fz3dev/cookiecraft.git","type":"git"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_npmVersion":"10.9.2","description":"Lightweight GDPR-compliant cookie consent library for any website","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tslib":"^2.8.1","eslint":"^8.57.0","rollup":"^4.13.0","cssnano":"^6.1.0","postcss":"^8.4.35","ts-jest":"^29.1.2","jest-axe":"^8.0.0","size-limit":"^11.0.2","typescript":"^5.4.2","@types/jest":"^29.5.12","autoprefixer":"^10.4.18","@rollup/plugin-terser":"^0.4.4","rollup-plugin-postcss":"^4.0.2","jest-environment-jsdom":"^29.7.0","@rollup/plugin-commonjs":"^25.0.7","rollup-plugin-visualizer":"^5.12.0","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/parser":"^7.1.0","@rollup/plugin-node-resolve":"^15.2.3","@size-limit/preset-small-lib":"^11.0.2","@typescript-eslint/eslint-plugin":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cookiecraft_1.0.10_1771439164086_0.22145074323385905","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"cookiecraft","version":"1.0.11","type":"module","description":"Lightweight GDPR-compliant cookie consent library for any website","main":"dist/cookiecraft.js","module":"dist/cookiecraft.esm.js","types":"dist/types/index.d.ts","jsdelivr":"dist/cookiecraft.min.js","unpkg":"dist/cookiecraft.min.js","scripts":{"dev":"rollup -c -w","build":"rollup -c && npm run size","test":"jest --config jest.config.cjs","test:watch":"jest --config jest.config.cjs --watch","test:coverage":"jest --config jest.config.cjs --coverage","lint":"eslint src/**/*.ts","type-check":"tsc --noEmit","size":"size-limit","prepublishOnly":"npm run build"},"keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"author":{"name":"Fawsy"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Fz3dev/cookiecraft.git"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@size-limit/preset-small-lib":"^11.0.2","@types/jest":"^29.5.12","@typescript-eslint/eslint-plugin":"^7.1.0","@typescript-eslint/parser":"^7.1.0","autoprefixer":"^10.4.18","cssnano":"^6.1.0","eslint":"^8.57.0","jest":"^29.7.0","jest-axe":"^8.0.0","jest-environment-jsdom":"^29.7.0","postcss":"^8.4.35","rollup":"^4.13.0","rollup-plugin-postcss":"^4.0.2","rollup-plugin-visualizer":"^5.12.0","size-limit":"^11.0.2","ts-jest":"^29.1.2","tslib":"^2.8.1","typescript":"^5.4.2"},"size-limit":[{"path":"dist/cookiecraft.min.js","limit":"12 KB"},{"path":"dist/cookiecraft.css","limit":"3 KB"}],"_id":"cookiecraft@1.0.11","gitHead":"1e7c7ff8a498c95b279b6c48d10beb9e2e4ec91f","bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"homepage":"https://github.com/Fz3dev/cookiecraft#readme","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-x5Nc2A8nKCuAAct29NSg9AdEWpA8Gl3lp29vWVQE23HUtVctA6aLqwTYV1j3DCimlU9K/9o9JKtaWqmCiCUh/g==","shasum":"903e891cf91c66b9de5de3ecc390cd0003e7534f","tarball":"https://registry.npmjs.org/cookiecraft/-/cookiecraft-1.0.11.tgz","fileCount":28,"unpackedSize":677109,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCYm2oqDG/rJyHw4VX7jnao6DmIj1/t65ayhnlj8VlhAgIhAMfDYaWny/GGCdtPJG54Q9iK/0z5lDv2g7BD+qNnLuvI"}]},"_npmUser":{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"},"directories":{},"maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cookiecraft_1.0.11_1781175640907_0.9092267947513524"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-17T12:04:28.537Z","modified":"2026-06-11T11:00:41.248Z","1.0.0":"2026-02-17T12:04:28.686Z","1.0.2":"2026-02-17T16:43:51.484Z","1.0.3":"2026-02-17T20:12:16.460Z","1.0.4":"2026-02-17T20:25:10.062Z","1.0.5":"2026-02-17T20:27:27.711Z","1.0.6":"2026-02-17T20:30:37.283Z","1.0.7":"2026-02-17T20:50:25.622Z","1.0.8":"2026-02-17T22:40:36.147Z","1.0.9":"2026-02-18T10:31:51.436Z","1.0.10":"2026-02-18T18:26:04.276Z","1.0.11":"2026-06-11T11:00:41.134Z"},"bugs":{"url":"https://github.com/Fz3dev/cookiecraft/issues"},"author":{"name":"Fawsy"},"license":"MIT","homepage":"https://github.com/Fz3dev/cookiecraft#readme","keywords":["cookie","consent","gdpr","rgpd","privacy","compliance","eprivacy","gtm","google-consent-mode","typescript","vanilla-js","cookie-banner","consent-management","webflow","wordpress","shopify"],"repository":{"type":"git","url":"git+https://github.com/Fz3dev/cookiecraft.git"},"description":"Lightweight GDPR-compliant cookie consent library for any website","maintainers":[{"name":"fawsy_avest","email":"fawsy.limlahi@avest.fr"}],"readme":"# CookieCraft\n\n[![npm version](https://img.shields.io/npm/v/cookiecraft.svg)](https://www.npmjs.com/package/cookiecraft)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/cookiecraft)](https://bundlephobia.com/package/cookiecraft)\n[![license](https://img.shields.io/npm/l/cookiecraft.svg)](https://github.com/Fz3dev/cookiecraft/blob/main/LICENSE)\n\n**Lightweight GDPR-compliant cookie consent library for any website.**\n\nZero dependencies. Modern UI. Google Consent Mode v2 built-in. Works on Webflow, WordPress, Shopify, or any site.\n\n[Live Configurator](https://fz3dev.github.io/cookiecraft/settings.html) | [Demo](https://fz3dev.github.io/cookiecraft/)\n\n## Features\n\n- **GDPR Compliant** — Opt-in only, one-click \"Reject all\", cookie purge on rejection, 6-month consent expiry (CNIL)\n- **Lightweight** — < 15KB total (JS + CSS), zero runtime dependencies\n- **Modern UI** — Clean design, dark/light/auto themes, smooth animations\n- **GTM Ready** — Google Consent Mode v2 built-in (ad_storage, analytics_storage, etc.)\n- **Accessible** — WCAG 2.2 AA, focus trapping, keyboard navigation, ARIA attributes\n- **Customizable** — Primary color, layouts, positions, translations, CSS variables\n- **Universal** — Works on any website via CDN (Webflow, WordPress, Shopify, custom)\n- **Script Blocking** — Tag scripts with `type=\"text/plain\"` + `data-cookieconsent` and they only run after consent\n- **Floating Widget** — Persistent button for users to update preferences anytime\n- **Visual Configurator** — No-code setup tool that generates ready-to-paste code\n\n## Quick Start\n\nAdd this before `</body>` on your site:\n\n```html\n<link\n  rel=\"stylesheet\"\n  href=\"https://cdn.jsdelivr.net/npm/cookiecraft@1/dist/cookiecraft.css\"\n/>\n<script src=\"https://cdn.jsdelivr.net/npm/cookiecraft@1/dist/cookiecraft.min.js\"></script>\n\n<script>\n  new CookieCraft.CookieConsent({\n    primaryColor: \"#0066cc\",\n    categories: {\n      necessary: {\n        enabled: true,\n        readOnly: true,\n        label: \"Essential\",\n        description: \"Required for the website to function.\",\n      },\n      analytics: {\n        enabled: true,\n        readOnly: false,\n        label: \"Analytics\",\n        description: \"Help us understand how you use our site.\",\n      },\n      marketing: {\n        enabled: true,\n        readOnly: false,\n        label: \"Marketing\",\n        description: \"Used to deliver relevant ads.\",\n      },\n    },\n    translations: {\n      title: \"Your privacy matters\",\n      description:\n        \"We use cookies to improve your experience. You choose which ones you accept.\",\n    },\n  }).init();\n</script>\n```\n\nOr use the **[Visual Configurator](https://fz3dev.github.io/cookiecraft/settings.html)** to generate your code without writing anything.\n\n### Platform-specific instructions\n\n**Webflow** — Paste in Site Settings > Custom Code > Footer Code.\n\n**WordPress** — Paste in your theme's `footer.php` before `</body>`, or use a \"Insert Headers and Footers\" plugin.\n\n**Shopify** — Paste in Online Store > Themes > Edit Code > `theme.liquid` before `</body>`.\n\n## Script Blocking\n\nChange tracking scripts to `type=\"text/plain\"` with a `data-cookieconsent` attribute. CookieCraft blocks them until the user consents:\n\n```html\n<!-- Google Analytics — blocked until analytics consent -->\n<script\n  type=\"text/plain\"\n  data-cookieconsent=\"analytics\"\n  src=\"https://www.googletagmanager.com/gtag/js?id=G-XXXXXX\"\n></script>\n\n<!-- Facebook Pixel — blocked until marketing consent -->\n<script type=\"text/plain\" data-cookieconsent=\"marketing\">\n  fbq('init', 'YOUR_PIXEL_ID');\n  fbq('track', 'PageView');\n</script>\n```\n\n## Layout Options\n\n### Banner Layouts\n\n| Layout     | Description                        |\n| ---------- | ---------------------------------- |\n| `bar`      | Full-width banner at top or bottom |\n| `box`      | Compact modal in corner or center  |\n| `floating` | Small notification-style banner    |\n\n### Positions\n\n`bottom` (default), `top`, `center`, `bottom-left`, `bottom-right`\n\n### Floating Widget\n\nA permanent button that stays visible after consent, letting users modify preferences:\n\n```javascript\nnew CookieCraft.CookieConsent({\n  showWidget: true, // default: true\n  widgetPosition: \"bottom-left\", // default: 'bottom-left'\n  widgetStyle: \"compact\", // 'compact' or 'full'\n});\n```\n\n### Examples\n\n```javascript\n// Full-width bar at bottom (classic)\nnew CookieCraft.CookieConsent({ layout: \"bar\", position: \"bottom\" }).init();\n\n// Compact box in bottom-right (modern)\nnew CookieCraft.CookieConsent({\n  layout: \"box\",\n  position: \"bottom-right\",\n}).init();\n\n// Centered modal with overlay (maximum attention)\nnew CookieCraft.CookieConsent({\n  layout: \"box\",\n  position: \"center\",\n  disablePageInteraction: true,\n}).init();\n```\n\n## GTM Consent Mode v2\n\nCookieCraft natively supports Google Consent Mode v2. Just enable it:\n\n```html\n<!-- In HEAD, before GTM -->\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag() {\n    dataLayer.push(arguments);\n  }\n  gtag(\"consent\", \"default\", {\n    ad_storage: \"denied\",\n    analytics_storage: \"denied\",\n    ad_user_data: \"denied\",\n    ad_personalization: \"denied\",\n  });\n</script>\n\n<!-- Google Tag Manager -->\n<script>\n  (function(w,d,s,l,i){...})(window,document,'script','dataLayer','GTM-XXXX');\n</script>\n\n<!-- In FOOTER, with CookieCraft -->\n<script>\n  new CookieCraft.CookieConsent({\n    gtmConsentMode: true,\n    // ...\n  }).init();\n</script>\n```\n\nCookieCraft automatically maps categories to GTM signals:\n\n| Category      | GTM Signals                                        |\n| ------------- | -------------------------------------------------- |\n| `marketing`   | `ad_storage`, `ad_user_data`, `ad_personalization` |\n| `analytics`   | `analytics_storage`                                |\n| `preferences` | `functionality_storage`, `personalization_storage` |\n\n## Configuration\n\n```typescript\ninterface ConsentConfig {\n  // Core\n  autoShow?: boolean; // default: true\n  revision?: number; // increment to re-ask consent\n  consentExpiryMonths?: number; // default: 6 (CNIL recommendation)\n\n  // Categories\n  categories?: Record<\n    string,\n    {\n      enabled: boolean;\n      readOnly: boolean;\n      label: string;\n      description: string;\n    }\n  >;\n\n  // Appearance\n  theme?: \"light\" | \"dark\" | \"auto\"; // default: 'light'\n  layout?: \"bar\" | \"box\" | \"floating\"; // default: 'box'\n  position?: string; // default: 'bottom-left'\n  primaryColor?: string; // hex color\n  backdropBlur?: boolean;\n  animationStyle?: \"smooth\" | \"minimal\";\n\n  // Widget\n  showWidget?: boolean; // default: true\n  widgetPosition?: string; // default: 'bottom-left'\n  widgetStyle?: \"compact\" | \"full\"; // default: 'compact'\n\n  // Content\n  translations?: Translation;\n\n  // GTM\n  gtmConsentMode?: boolean; // default: false\n\n  // Accessibility\n  disablePageInteraction?: boolean; // default: false\n\n  // Callbacks\n  onAccept?: (categories) => void;\n  onChange?: (categories) => void;\n  onReject?: () => void;\n}\n```\n\n## API\n\n```javascript\nconst cc = new CookieCraft.CookieConsent({\n  /* config */\n});\n\ncc.init(); // Initialize and show banner if needed\ncc.show(); // Show banner manually\ncc.hide(); // Hide banner\ncc.showPreferences(); // Open preferences modal\ncc.getConsent(); // Get current consent record\ncc.reset(); // Clear consent and re-show banner\ncc.destroy(); // Remove all UI elements\n\n// Events\ncc.on(\"consent:accept\", (categories) => {\n  /* ... */\n});\ncc.on(\"consent:reject\", (categories) => {\n  /* ... */\n});\ncc.on(\"consent:update\", (categories) => {\n  /* ... */\n});\ncc.on(\"preferences:show\", () => {\n  /* ... */\n});\ncc.on(\"script:activated\", (script) => {\n  /* ... */\n});\n```\n\n### All Events\n\n| Event              | Payload      | Description                     |\n| ------------------ | ------------ | ------------------------------- |\n| `consent:init`     | —            | Library initialized             |\n| `consent:show`     | —            | Banner shown                    |\n| `consent:accept`   | `categories` | User accepted all               |\n| `consent:reject`   | `categories` | User rejected non-essential     |\n| `consent:update`   | `categories` | Consent changed via preferences |\n| `consent:load`     | `record`     | Stored consent loaded           |\n| `preferences:show` | —            | Preferences modal opened        |\n| `preferences:hide` | —            | Preferences modal closed        |\n| `script:activated` | `element`    | Blocked script re-enabled       |\n\n## Styling\n\nOverride any style with CSS variables:\n\n```css\n:root {\n  --cc-primary: #0066cc;\n  --cc-bg: #ffffff;\n  --cc-text: #1a1a1a;\n  --cc-text-secondary: #666666;\n  --cc-padding: 1.5rem;\n  --cc-gap: 0.75rem;\n  --cc-border-radius: 12px;\n  --cc-shadow: 0 -4px 24px rgba(0, 0, 0, 0.12);\n  --cc-transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n```\n\n## Browser Support\n\nChrome, Edge, Firefox, Safari (last 2 versions), iOS Safari, Chrome Android.\n\n## Why CookieCraft?\n\n|                         | CookieCraft | Cookiebot  | OneTrust    |\n| ----------------------- | ----------- | ---------- | ----------- |\n| **Price**               | Free        | From 12/mo | From 200/mo |\n| **Size**                | ~15KB       | ~100KB+    | ~150KB+     |\n| **Dependencies**        | 0           | Multiple   | Multiple    |\n| **Self-hosted**         | Yes         | No         | No          |\n| **GTM Consent Mode v2** | Yes         | Yes        | Yes         |\n| **Visual Configurator** | Yes         | Dashboard  | Dashboard   |\n| **Open Source**         | MIT         | No         | No          |\n\n## Development\n\n```bash\nnpm install        # Install dependencies\nnpm run dev        # Watch mode\nnpm run build      # Production build\nnpm test           # Run tests\nnpm run lint       # Lint\nnpm run type-check # TypeScript check\nnpm run size       # Bundle size check\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}