{"_id":"@bw-ui/datepicker","_rev":"9-300f4e1fc52c69452e2e98d9676f31e8","name":"@bw-ui/datepicker","dist-tags":{"latest":"1.1.7"},"versions":{"1.0.0":{"name":"@bw-ui/datepicker","version":"1.0.0","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.0","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/AnsKaz-dev/bw-ui-datepicker#readme","bugs":{"url":"https://github.com/AnsKaz-dev/bw-ui-datepicker/issues"},"dist":{"shasum":"3c4226f6108f77dabe7ca6b5a7c50b4196775152","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.0.tgz","fileCount":20,"integrity":"sha512-WBsENc7Lynr0J5tf0gD/i6u4qHAzkYjXdlC3419wQKC1srnHQ9cxb4bpRO5a+Vr+OELIjKQoi/ZaV8MD6f7K4g==","signatures":[{"sig":"MEQCIBxPD2vuYFq/auRPh3EvvWGpXVQMgyEF8F83CabQs0YMAiBy1dadD0V8nai1s/eVykRAvx05QPixMstwq6OljjCqbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288483},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"33b7c525d2e2f752ae803ca16fd2dedde2098824","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/AnsKaz-dev/bw-ui-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.0_1764344559331_0.2941277860993443","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bw-ui/datepicker","version":"1.0.1","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.1","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/AnsKaz-dev/bw-ui-datepicker#readme","bugs":{"url":"https://github.com/AnsKaz-dev/bw-ui-datepicker/issues"},"dist":{"shasum":"d2d1ab355bf145451b3d783574874cb3d7db3710","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.1.tgz","fileCount":6,"integrity":"sha512-MDAY9/jWZbAxaj3NjeboLWl4TkmiWZ78er/Z09izjTcDOzMj+MjsOxmjAtS9VQYukM+jTP/8U84OiMrG5wjS3w==","signatures":[{"sig":"MEUCIHauFiMKLmLRIOhIQSwrFnXU/klLB/N35JLLFTtJQG49AiEAi+3A/OhVH7pMqK9I+lyL7mma4MaYrF5+slmpOMr5WtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230740},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"c10a0a9d099b359edb1ee36da7f8d22c9703d643","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/AnsKaz-dev/bw-ui-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.1_1764346254346_0.38537448256197027","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bw-ui/datepicker","version":"1.0.2","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.2","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/AnsKaz-dev/bw-ui-datepicker#readme","bugs":{"url":"https://github.com/AnsKaz-dev/bw-ui-datepicker/issues"},"dist":{"shasum":"e1f498441fea614da23952c3a2e003b1dc08690f","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.2.tgz","fileCount":4,"integrity":"sha512-wGyy5FriBzi4N/Mjz0kUnRvvrKdRXxcN8X/Dnl0wEpeIUKdUVhY5FvUpmataX2AnUn0Qg918pZt3YnA/rVyH2Q==","signatures":[{"sig":"MEQCIDp/1Bk6NSFGE0l+KsN8pjP2R0gYdZ2oJ2JSESEmycTNAiBfXfVlGrN6jiPquhQ3ieLBySbmBZRsMayHzI4Tl6lOKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60545},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"c10a0a9d099b359edb1ee36da7f8d22c9703d643","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/AnsKaz-dev/bw-ui-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.2_1764346641081_0.7583392645156704","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bw-ui/datepicker","version":"1.0.3","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.3","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"60c238d6f0486d57f38248f46086c43825d63ead","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.3.tgz","fileCount":4,"integrity":"sha512-x0bRQ6fEE+b5B05VeLCdHokg+2Ao1zQ8owRGp9wuFEl1P/buLRSOEJWH9knAujW8r7zbcEwNN1bW+XAEm2WCJA==","signatures":[{"sig":"MEYCIQDRJ/076r7Y9TW73QjK9qDmb+AbydT8lB8bn6kXfEjzIgIhAPIL7hiEFzHkVyKpMC6dwnzoXVO1Vj4m2qAz9SyVImTv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60514},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"d5ce91745d331509f855a12bbbe51ebd6d4f99f4","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.3_1764347496672_0.5372413129954345","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bw-ui/datepicker","version":"1.0.4","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.4","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"179e2ccd0c8e0dd9c6fef2f7063f6281a93624e9","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.4.tgz","fileCount":5,"integrity":"sha512-EaFcufGmvfflkJgRfL8bGPI/+D2D+uiOCbhbnP/4Zxj4Pm3YSA8EcoGgAqr9JnKzkMrQsIEthpzX/+mhnOc2ew==","signatures":[{"sig":"MEUCIFqUR2AZGuFLtfWbMtoOF5qnSxfQOJbZhGWz7n7lAKeUAiEAi89gvJzzE65wYYevQJ+G6228aRGFCGLh74GnQgrwRPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64268},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"d5ce91745d331509f855a12bbbe51ebd6d4f99f4","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.4_1764347670783_0.34111141971183767","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bw-ui/datepicker","version":"1.0.5","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.5","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"01d4773a55d212071d27d45cdfdc1a5debe33e97","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.5.tgz","fileCount":5,"integrity":"sha512-yesgyg8+Tl1X+Fha9pgBu2IQpDLDxYzcbA7HZ+TMVmYmdp+iw0jM45Oj3qDRhKxGejBTc3ebygPSgFEd6JxCFw==","signatures":[{"sig":"MEUCIQC7KqAWiNFGZp3mvXW28RmgYDm6essrX18f8lT8SsE8SwIgCm5l+m52aeWZvD/qyCqqrjXJFKyqlqJCF314zpwht6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68255},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"40090008e522bc7c32a5f9b9da198c7954d2874d","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.5_1764417602558_0.012065687987999452","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bw-ui/datepicker","version":"1.0.6","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.0.6","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"d7a87666a42e88d9c149589515e80290990ee636","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.0.6.tgz","fileCount":5,"integrity":"sha512-rCgPx2p+lfrzCaeWUss7vRX+6YNYQEtOmYEj/lycaK7AYl4ZOKGHq2jYj5aWRB1n7ECmoEUmu/9f2ElR8IPqJw==","signatures":[{"sig":"MEQCIEIHQ9Csf6fygypqrE3P2YMsRJ8jmgxkJkOIZL+q2jfgAiBWNnGOq3UzRgKAYNZISwRp1L03won45n+skN+2ilckUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69313},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"0e92abd4fc48949a4830458b44720fec386ccad7","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.0.6_1764466564663_0.6897392169313648","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@bw-ui/datepicker","version":"1.1.6","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","_id":"@bw-ui/datepicker@1.1.6","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"homepage":"https://github.com/bw-ui/bw-datepicker","bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"dist":{"shasum":"c819daeca576a8cb60ea3ac58955f2a6ef9714b5","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.1.6.tgz","fileCount":5,"integrity":"sha512-yDFwPvfd03AZgKUoBIcqTAi9c0kAOqRsWJff0YxmuRFakSrQ1d1W+vJoalMEdhyVqY2usY7D3ePW60HcWPz1NQ==","signatures":[{"sig":"MEUCIQDbVO88QLWm2N+fe36Kvg+1Xfb1i9NHT4TF/1AMEHCTwwIgWHdRt3AMNX0bc+clWADqJmnGvanX2DHDGl4kbrbDRVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113394},"main":"dist/bw-datepicker.min.js","type":"module","types":"dist/index.d.ts","module":"dist/bw-datepicker.esm.min.js","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"gitHead":"30d8915a21fd5e442ea3830e44532446a20dfa3c","scripts":{"build":"node build.js"},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"repository":{"url":"git+https://github.com/bw-ui/bw-datepicker.git","type":"git"},"_npmVersion":"10.9.3","description":"Lightweight, zero-dependency datepicker with plugin architecture","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.20.0"},"_npmOperationalInternal":{"tmp":"tmp/datepicker_1.1.6_1764510853098_0.8504614615300332","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@bw-ui/datepicker","version":"1.1.7","description":"Lightweight, zero-dependency datepicker with plugin architecture","main":"dist/bw-datepicker.min.js","module":"dist/bw-datepicker.esm.min.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/bw-datepicker.esm.min.js","require":"./dist/bw-datepicker.min.js"},"./css":"./dist/bw-datepicker.min.css"},"scripts":{"build":"node build.js"},"keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/bw-ui/bw-datepicker.git"},"bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"homepage":"https://github.com/bw-ui/bw-datepicker","devDependencies":{"esbuild":"^0.20.0"},"type":"module","_id":"@bw-ui/datepicker@1.1.7","gitHead":"19c86a292c6cb8548511d0fe5bcd4bd753930b5d","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-xy2nIU+epMS3wC5TYriKCmBJJr1rI402fEduTeMFOAOAlAjg91uaLEtpCNyHEkX3Ym6u8hj0Ki+w3cwqbPv4SQ==","shasum":"d4ce73cd0694c1d48f6b71d8c5a4bf8eccff6012","tarball":"https://registry.npmjs.org/@bw-ui/datepicker/-/datepicker-1.1.7.tgz","fileCount":6,"unpackedSize":123965,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICEyiCCU/hkPEyTgJJloFmEjKcUqRz49qZVQrQXKHLn+AiBK5Tj4PCCaORKYu28ueBwSRKt6FsSzoLuDNumUD1L2Tg=="}]},"_npmUser":{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"},"directories":{},"maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datepicker_1.1.7_1764770154237_0.7152214338101484"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-28T15:42:39.224Z","modified":"2025-12-03T13:55:54.685Z","1.0.0":"2025-11-28T15:42:39.554Z","1.0.1":"2025-11-28T16:10:54.552Z","1.0.2":"2025-11-28T16:17:21.284Z","1.0.3":"2025-11-28T16:31:36.876Z","1.0.4":"2025-11-28T16:34:30.971Z","1.0.5":"2025-11-29T12:00:02.753Z","1.0.6":"2025-11-30T01:36:04.859Z","1.1.6":"2025-11-30T13:54:13.291Z","1.1.7":"2025-12-03T13:55:54.486Z"},"bugs":{"url":"https://github.com/bw-ui/bw-datepicker/issues"},"author":{"name":"BW UI","email":"bw-ui@example.com"},"license":"MIT","homepage":"https://github.com/bw-ui/bw-datepicker","keywords":["datepicker","calendar","date","vanilla-js","no-dependencies","lightweight","plugin"],"repository":{"type":"git","url":"git+https://github.com/bw-ui/bw-datepicker.git"},"description":"Lightweight, zero-dependency datepicker with plugin architecture","maintainers":[{"name":"rchoudhary.dev","email":"rchoudhary.dev@gmail.com"}],"readme":"# @bw-ui/datepicker\r\n\r\nLightweight, zero-dependency datepicker with plugin architecture.\r\n\r\n![Version](https://img.shields.io/npm/v/@bw-ui/datepicker)\r\n![License](https://img.shields.io/npm/l/@bw-ui/datepicker)\r\n![Size](https://img.shields.io/bundlephobia/minzip/@bw-ui/datepicker)\r\n\r\n[Live Demo](https://bw-ui.github.io/bw-datepicker) • [Documentation](https://www.npmjs.com/package/@bw-ui/datepicker)\r\n\r\n## ✨ Features\r\n\r\n- 🪶 **~27KB gzipped** - Tiny footprint\r\n- 🚀 **Zero dependencies** - No bloat\r\n- 🔌 **Plugin system** - Extend as needed\r\n- 📅 **3 modes** - Popup, modal, inline\r\n- 📆 **4 view modes** - Calendar, month, year, week\r\n- 🎯 **Event-driven** - Full control\r\n- 🌍 **Localization** - Custom month/day names\r\n- 🎨 **Slot-based architecture** - Plugins can intercept rendering\r\n\r\n## 📦 Installation\r\n\r\n```bash\r\nnpm install @bw-ui/datepicker\r\n```\r\n\r\n## 🚀 Quick Start\r\n\r\n### ES Modules\r\n\r\n```javascript\r\nimport { BWDatePicker } from '@bw-ui/datepicker';\r\nimport '@bw-ui/datepicker/css';\r\n\r\nconst picker = new BWDatePicker('#date-input', {\r\n  mode: 'popup',\r\n  format: 'YYYY-MM-DD',\r\n});\r\n\r\npicker.on('date:changed', ({ date, dateISO }) => {\r\n  console.log('Selected:', dateISO);\r\n});\r\n```\r\n\r\n### CDN\r\n\r\n```html\r\n<link\r\n  rel=\"stylesheet\"\r\n  href=\"https://unpkg.com/@bw-ui/datepicker/dist/bw-datepicker.min.css\"\r\n/>\r\n<script src=\"https://unpkg.com/@bw-ui/datepicker/dist/bw-datepicker.min.js\"></script>\r\n\r\n<script>\r\n  const picker = new BW.BWDatePicker('#date-input');\r\n</script>\r\n```\r\n\r\n## ⚙️ Options\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  // Display\r\n  mode: 'popup',\r\n  format: 'YYYY-MM-DD',\r\n\r\n  // Calendar\r\n  firstDayOfWeek: 0,\r\n  showWeekdays: true,\r\n  showFooter: true,\r\n  showOtherMonths: true,\r\n  selectOtherMonths: true,\r\n\r\n  // Date constraints\r\n  minDate: null,\r\n  maxDate: null,\r\n  disabledDates: [],\r\n  defaultDate: null,\r\n\r\n  // Behavior\r\n  closeOnSelect: true,\r\n  allowDeselect: true,\r\n\r\n  // Localization\r\n  monthNames: null,\r\n  dayNames: null,\r\n\r\n  // View modes\r\n  defaultViewMode: 'calendar',\r\n  showMonthPicker: true,\r\n  showYearPicker: true,\r\n  showYearNavigation: true,\r\n  showMonthNavigation: true,\r\n  showWeekNavigation: true,\r\n  resetViewOnClose: true,\r\n});\r\n```\r\n\r\n### Options Reference\r\n\r\n| Option              | Type          | Default        | Description                                    |\r\n| ------------------- | ------------- | -------------- | ---------------------------------------------- |\r\n| `mode`              | `string`      | `'popup'`      | Display mode: `'popup'`, `'modal'`, `'inline'` |\r\n| `format`            | `string`      | `'YYYY-MM-DD'` | Date format for input display                  |\r\n| `firstDayOfWeek`    | `number`      | `0`            | First day of week: `0` (Sun) - `6` (Sat)       |\r\n| `showWeekdays`      | `boolean`     | `true`         | Show weekday headers                           |\r\n| `showFooter`        | `boolean`     | `true`         | Show footer with Today/Clear buttons           |\r\n| `closeOnSelect`     | `boolean`     | `true`         | Close picker after selecting date              |\r\n| `allowDeselect`     | `boolean`     | `true`         | Allow clicking selected date to deselect       |\r\n| `showOtherMonths`   | `boolean`     | `true`         | Show days from adjacent months                 |\r\n| `selectOtherMonths` | `boolean`     | `true`         | Allow selecting days from adjacent months      |\r\n| `minDate`           | `Date\\|null`  | `null`         | Minimum selectable date                        |\r\n| `maxDate`           | `Date\\|null`  | `null`         | Maximum selectable date                        |\r\n| `disabledDates`     | `array`       | `[]`           | Array of disabled `Date` objects               |\r\n| `defaultDate`       | `Date\\|null`  | `null`         | Initial selected date                          |\r\n| `monthNames`        | `array\\|null` | `null`         | Custom month names (12 items)                  |\r\n| `dayNames`          | `array\\|null` | `null`         | Custom day names (7 items, starting Sunday)    |\r\n\r\n### View Mode Options\r\n\r\n| Option                | Type      | Default      | Description                                               |\r\n| --------------------- | --------- | ------------ | --------------------------------------------------------- |\r\n| `defaultViewMode`     | `string`  | `'calendar'` | Initial view: `'calendar'`, `'month'`, `'year'`, `'week'` |\r\n| `showMonthPicker`     | `boolean` | `true`       | Enable clicking month to show month picker                |\r\n| `showYearPicker`      | `boolean` | `true`       | Enable clicking year to show year picker                  |\r\n| `showYearNavigation`  | `boolean` | `true`       | Show « » year navigation buttons                          |\r\n| `showMonthNavigation` | `boolean` | `true`       | Show ‹ › month navigation buttons                         |\r\n| `showWeekNavigation`  | `boolean` | `true`       | Show ← → week navigation buttons (week view)              |\r\n| `resetViewOnClose`    | `boolean` | `true`       | Reset to defaultViewMode when picker closes               |\r\n\r\n## 📆 View Modes\r\n\r\n### Calendar View (Default)\r\n\r\nStandard month calendar with days grid.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { defaultViewMode: 'calendar' });\r\n```\r\n\r\n### Month View\r\n\r\n4x3 grid of months for quick month selection.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { defaultViewMode: 'month' });\r\n\r\n// Or switch programmatically\r\npicker.setViewMode('month');\r\n```\r\n\r\n### Year View\r\n\r\n4x3 grid of years (12 years at a time).\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { defaultViewMode: 'year' });\r\n\r\n// Or switch programmatically\r\npicker.setViewMode('year');\r\n```\r\n\r\n### Week View\r\n\r\nSingle week display with week-by-week navigation.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { defaultViewMode: 'week' });\r\n\r\n// Navigate weeks\r\npicker.changeWeek(1); // Next week\r\npicker.changeWeek(-1); // Previous week\r\n```\r\n\r\n### Minimal Navigation Example\r\n\r\n```javascript\r\n// Only week navigation, no pickers\r\nnew BWDatePicker('#date', {\r\n  defaultViewMode: 'week',\r\n  showMonthPicker: false,\r\n  showYearPicker: false,\r\n  showYearNavigation: false,\r\n  showMonthNavigation: false,\r\n  // showWeekNavigation: true (default)\r\n});\r\n```\r\n\r\n## 📖 Display Modes\r\n\r\n### Popup (Default)\r\n\r\nOpens below the input field.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { mode: 'popup' });\r\n```\r\n\r\n### Modal\r\n\r\nOpens as centered overlay.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { mode: 'modal' });\r\n```\r\n\r\n### Inline\r\n\r\nAlways visible, embedded in page.\r\n\r\n```javascript\r\nnew BWDatePicker('#date', { mode: 'inline' });\r\n```\r\n\r\n## 🌍 Localization\r\n\r\n### Spanish Example\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  monthNames: [\r\n    'Enero',\r\n    'Febrero',\r\n    'Marzo',\r\n    'Abril',\r\n    'Mayo',\r\n    'Junio',\r\n    'Julio',\r\n    'Agosto',\r\n    'Septiembre',\r\n    'Octubre',\r\n    'Noviembre',\r\n    'Diciembre',\r\n  ],\r\n  dayNames: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'],\r\n  firstDayOfWeek: 1, // Monday\r\n});\r\n```\r\n\r\n### French Example\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  monthNames: [\r\n    'Janvier',\r\n    'Février',\r\n    'Mars',\r\n    'Avril',\r\n    'Mai',\r\n    'Juin',\r\n    'Juillet',\r\n    'Août',\r\n    'Septembre',\r\n    'Octobre',\r\n    'Novembre',\r\n    'Décembre',\r\n  ],\r\n  dayNames: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],\r\n  firstDayOfWeek: 1,\r\n});\r\n```\r\n\r\n### German Example\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  monthNames: [\r\n    'Januar',\r\n    'Februar',\r\n    'März',\r\n    'April',\r\n    'Mai',\r\n    'Juni',\r\n    'Juli',\r\n    'August',\r\n    'September',\r\n    'Oktober',\r\n    'November',\r\n    'Dezember',\r\n  ],\r\n  dayNames: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\r\n  firstDayOfWeek: 1,\r\n});\r\n```\r\n\r\n## 📅 Date Constraints\r\n\r\n### Min/Max Dates\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  minDate: new Date('2025-01-01'),\r\n  maxDate: new Date('2025-12-31'),\r\n});\r\n```\r\n\r\n### Disabled Dates\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  disabledDates: [\r\n    new Date('2025-12-25'), // Christmas\r\n    new Date('2025-01-01'), // New Year\r\n  ],\r\n});\r\n```\r\n\r\n### Default Date\r\n\r\n```javascript\r\nnew BWDatePicker('#date', {\r\n  defaultDate: new Date('2025-06-15'),\r\n});\r\n```\r\n\r\n## 📡 Events\r\n\r\n```javascript\r\npicker.on('date:changed', ({ date, dateISO, oldDate }) => {});\r\npicker.on('date:selected', ({ date, dateISO }) => {});\r\npicker.on('date:cleared', () => {});\r\npicker.on('picker:opened', () => {});\r\npicker.on('picker:closed', () => {});\r\npicker.on('nav:monthChanged', ({ month, year }) => {});\r\npicker.on('nav:yearChanged', ({ year }) => {});\r\npicker.on('nav:weekChanged', ({ date }) => {});\r\npicker.on('view:changed', ({ viewMode }) => {});\r\n```\r\n\r\n### Events Reference\r\n\r\n| Event              | Payload                      | Description              |\r\n| ------------------ | ---------------------------- | ------------------------ |\r\n| `date:changed`     | `{ date, dateISO, oldDate }` | Date value changed       |\r\n| `date:selected`    | `{ date, dateISO }`          | User selected a date     |\r\n| `date:cleared`     | -                            | Date cleared             |\r\n| `picker:opened`    | -                            | Picker opened            |\r\n| `picker:closed`    | -                            | Picker closed            |\r\n| `nav:monthChanged` | `{ month, year }`            | Month navigation changed |\r\n| `nav:yearChanged`  | `{ year }`                   | Year navigation changed  |\r\n| `nav:weekChanged`  | `{ date }`                   | Week navigation changed  |\r\n| `view:changed`     | `{ viewMode }`               | View mode changed        |\r\n\r\n### Render Events (for Plugins)\r\n\r\n| Event             | Payload                    | Description                  |\r\n| ----------------- | -------------------------- | ---------------------------- |\r\n| `render:before`   | `{ data, slots }`          | Before render, modify data   |\r\n| `render:header`   | `{ data, slot }`           | Intercept header rendering   |\r\n| `render:calendar` | `{ data, slot, viewMode }` | Intercept calendar rendering |\r\n| `render:footer`   | `{ data, slot }`           | Intercept footer rendering   |\r\n| `render:after`    | `{ data, slots, element }` | After render, add classes    |\r\n| `render:day`      | `{ dayData, html }`        | Customize day cell           |\r\n| `render:weekdays` | `{ dayNames, html }`       | Customize weekday headers    |\r\n\r\n## 🛠️ Methods\r\n\r\n```javascript\r\n// Open/Close\r\npicker.open();\r\npicker.close();\r\n\r\n// Date manipulation\r\npicker.setDate(date);\r\npicker.getDate();\r\npicker.clear();\r\n\r\n// Navigation\r\npicker.changeMonth(-1); // Previous month\r\npicker.changeMonth(1); // Next month\r\npicker.changeYear(-1); // Previous year\r\npicker.changeYear(1); // Next year\r\npicker.changeWeek(-1); // Previous week\r\npicker.changeWeek(1); // Next week\r\npicker.goToDate(date); // Navigate to date without selecting\r\npicker.goToToday(); // Navigate to today\r\n\r\n// View modes\r\npicker.setViewMode('calendar'); // Switch to calendar view\r\npicker.setViewMode('month'); // Switch to month picker\r\npicker.setViewMode('year'); // Switch to year picker\r\npicker.setViewMode('week'); // Switch to week view\r\npicker.getViewMode(); // Get current view mode\r\n\r\n// Utility\r\npicker.refresh(); // Force re-render\r\npicker.destroy(); // Destroy instance\r\n```\r\n\r\n### Methods Reference\r\n\r\n| Method                | Parameters | Returns      | Description                |\r\n| --------------------- | ---------- | ------------ | -------------------------- |\r\n| `open()`              | -          | `this`       | Open the picker            |\r\n| `close()`             | -          | `this`       | Close the picker           |\r\n| `setDate(date)`       | `Date`     | `this`       | Set selected date          |\r\n| `getDate()`           | -          | `Date\\|null` | Get selected date          |\r\n| `clear()`             | -          | `this`       | Clear selection            |\r\n| `changeMonth(offset)` | `number`   | `this`       | Navigate months            |\r\n| `changeYear(offset)`  | `number`   | `this`       | Navigate years             |\r\n| `changeWeek(offset)`  | `number`   | `this`       | Navigate weeks             |\r\n| `goToDate(date)`      | `Date`     | `this`       | Navigate without selecting |\r\n| `goToToday()`         | -          | `this`       | Navigate to today          |\r\n| `setViewMode(mode)`   | `string`   | `this`       | Set view mode              |\r\n| `getViewMode()`       | -          | `string`     | Get current view mode      |\r\n| `refresh()`           | -          | `this`       | Re-render picker           |\r\n| `destroy()`           | -          | `void`       | Destroy instance           |\r\n\r\n## 🔌 Plugins\r\n\r\nExtend functionality with official plugins:\r\n\r\n```javascript\r\nimport { BWDatePicker } from '@bw-ui/datepicker';\r\nimport { ThemingPlugin } from '@bw-ui/datepicker-theming';\r\nimport { RangePlugin } from '@bw-ui/datepicker-range';\r\n\r\nconst picker = new BWDatePicker('#date')\r\n  .use(ThemingPlugin, { theme: 'dark' })\r\n  .use(RangePlugin);\r\n```\r\n\r\n### Plugin Architecture\r\n\r\nPlugins can intercept rendering using the slot-based event system:\r\n\r\n```javascript\r\n// Example: Custom day rendering\r\neventBus.on('render:day', (eventData) => {\r\n  const { dayData } = eventData;\r\n  if (isHoliday(dayData.date)) {\r\n    eventData.html = `<span class=\"holiday\">${dayData.day}</span>`;\r\n  }\r\n});\r\n\r\n// Example: Replace entire calendar slot\r\neventBus.on('render:calendar', ({ slot, data }) => {\r\n  slot.innerHTML = renderDualCalendar(data);\r\n  return true; // Intercept - skip default rendering\r\n});\r\n```\r\n\r\n### Available Plugins\r\n\r\n| Plugin                            | Description                | Links                                                                |\r\n| --------------------------------- | -------------------------- | -------------------------------------------------------------------- |\r\n| `@bw-ui/datepicker-theming`       | Dark mode, CSS variables   | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-theming)       |\r\n| `@bw-ui/datepicker-accessibility` | Keyboard nav, ARIA         | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-accessibility) |\r\n| `@bw-ui/datepicker-positioning`   | Auto-flip, collision       | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-positioning)   |\r\n| `@bw-ui/datepicker-mobile`        | Touch, swipe               | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-mobile)        |\r\n| `@bw-ui/datepicker-range`         | Date range selection       | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-range)         |\r\n| `@bw-ui/datepicker-dual-calendar` | Two calendars side by side | [npm](https://www.npmjs.com/package/@bw-ui/datepicker-dual-calendar) |\r\n\r\n## 🎨 CSS Classes\r\n\r\n### View Mode Classes\r\n\r\nThe picker element gets a class based on current view mode:\r\n\r\n```css\r\n.bw-datepicker--view-calendar {\r\n}\r\n.bw-datepicker--view-month {\r\n}\r\n.bw-datepicker--view-year {\r\n}\r\n.bw-datepicker--view-week {\r\n}\r\n```\r\n\r\n### Slot Classes\r\n\r\n```css\r\n.bw-datepicker__slot--header {\r\n}\r\n.bw-datepicker__slot--calendar {\r\n}\r\n.bw-datepicker__slot--footer {\r\n}\r\n```\r\n\r\n## 📁 What's Included\r\n\r\n```\r\ndist/\r\n├── bw-datepicker.min.js      # IIFE build (for <script>)\r\n├── bw-datepicker.esm.min.js  # ESM build (for import)\r\n└── bw-datepicker.min.css     # Styles\r\n```\r\n\r\n## 📄 License\r\n\r\nMIT © [BW UI](https://github.com/bw-ui)\r\n\r\n## 🐛 Issues\r\n\r\nFound a bug? [Report it here](https://github.com/bw-ui/bw-datepicker/issues)\r\n","readmeFilename":"README.md"}