{"_id":"@angx/ngx-modern-calendar","_rev":"11-fd06fea4df6f635da1607ee71e57059a","name":"@angx/ngx-modern-calendar","dist-tags":{"latest":"3.0.1"},"versions":{"1.0.0":{"name":"@angx/ngx-modern-calendar","version":"1.0.0","keywords":["ngx calendar","ngx modern calendar","npm calendar","modern calendar","simple calendar"],"_id":"@angx/ngx-modern-calendar@1.0.0","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"dist":{"shasum":"c0c6739d82b0b08b455114707200dbed5f7087d6","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-1.0.0.tgz","fileCount":42,"integrity":"sha512-8kMc00Ku/3aJDJBdpJAbij1Ku3UHhv7pryCuZZEhSdgs9Y1cPiDiboCxmbhaJmaJEEED156RtUu0IW4Sg4H4dA==","signatures":[{"sig":"MEYCIQDi3ZgDcVHux60Alcb2OeD+dEbVXkJ27RAqy544EcdeHwIhAKerDwwhuXeR+3T86tMAm2Sgc9nT4SjwlKxpH5P9Rbh0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":522930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeN+efCRA9TVsSAnZWagAAIUAQAJrN2Py+GigvaspS86kl\nZ4kLFUvqydQXBxqnej3AxBAPzSFQfJC5cHKwiOsHvmH1q5JeR48XII9pfzVk\n1xGwVDCZSEa58yZuKt9Tny6AbJt2wzeqxqarQyqCCsIEH4XBtr499qVx0f7w\nHrrU5PRDmzdUp8n3bLGDIryGAy11sA4pn84DGziHOu5thOLMKwKa1y3kVjUq\nYLB95DGHlH0PoINUl1no9D0xqOyqcCt+93xkAmE4b5vkOtaEP0QbhQHvF2XR\nbCggEi7VNIuSgwZPbKhCow8R/YQxKgvGPVOWKfy/zN0CqnU6gNetg9qabw5N\nnEU89Am/1cgVTI6TQUKv8XYP0u9gDwBNX8pqHfTQOcCax+Sg8EV+a9JMhtyj\n5rQ5wskwir9NczEoEtaXjjFovSKveYzSHzx3w5AmLxVjUDjB0Gl/3CkXPH0Y\npzyxgIls8oTVyko9RlGHX2nDILldMSRDgA8uTyG3RjfVUizCdOAiyjuqVqwo\npE1eGLJGjjuWagw0c7AZeQdzrpDb2XfB25oZLz/iAZTPu+ngrfr5MnY8gWCh\n2n6fDa/HnQv9TWSFBTKf5yPTcfkRG/zJj03CCefUHHbQoevOc9afyLe0v3b6\n9P2AbMg8rEdGFrdYpTGkiSBseawwf+QcE2ma579A+cIRoTYTgSnbhatzvSYo\n3v7j\r\n=JpDg\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/angx-ngx-modern-calendar.js","main":"bundles/angx-ngx-modern-calendar.umd.js","fesm5":"fesm5/angx-ngx-modern-calendar.js","es2015":"fesm2015/angx-ngx-modern-calendar.js","module":"fesm5/angx-ngx-modern-calendar.js","esm2015":"esm2015/angx-ngx-modern-calendar.js","typings":"angx-ngx-modern-calendar.d.ts","_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"fesm2015":"fesm2015/angx-ngx-modern-calendar.js","metadata":"angx-ngx-modern-calendar.metadata.json","repository":{"url":"git+https://github.com/angx-libs/ngx-modern-calendar.git","type":"git"},"_npmVersion":"6.13.1","description":"![Ngx Modern Calendar](https://raw.githubusercontent.com/angx-libs/ngx-modern-calendar/master/src/assets/screenshot.PNG)","directories":{},"sideEffects":false,"_nodeVersion":"13.2.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^8.2.14","@angular/common":"^8.2.14"},"_npmOperationalInternal":{"tmp":"tmp/ngx-modern-calendar_1.0.0_1580722078813_0.08074486102365186","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@angx/ngx-modern-calendar","version":"1.0.2","keywords":["ngx calendar","ngx modern calendar","npm calendar","modern calendar","simple calendar"],"_id":"@angx/ngx-modern-calendar@1.0.2","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"dist":{"shasum":"5494e9aeb5602eb6b3b89f918d2da1d8502c9c9f","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-1.0.2.tgz","fileCount":44,"integrity":"sha512-5VK3+JorPkHhHFFIJ7RBphsuXkXIDUTX7p1c6uthaCR3AFf0mSRriRbNsO4aeWXnRFXI1vT6wyzFoC6KsP27ag==","signatures":[{"sig":"MEYCIQCoMaohrDrA0uxlBwzk2aY4TcnR41vVwENqax5bCg6y3AIhANlmsmIJb8WY7Avu3IEuYZHhHEYQNY5iOpf5Mst7XSiD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1014771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ8sjCRA9TVsSAnZWagAA46IP/iGFG3D7PD87zxU2rIrv\nVssyx2S7ScJoGlfyEs9mxC9aT8AV1Zr4uQd58kSNSeedJD9MXRgy81kWrRmg\n4NMbquJVFCws81UUzAwt5z1cMZcCD2E/idBYZRN9dSrM48xsGQt9TkVHPzSP\ndgV84WnOKx4etnWHNMzDr7M3+xP8vqqUML3/VgNGIHQSV/aq8a5j1WXXigZF\nhV/mP7avvumRqYEI9bVRQ/IrmXauNdfMPRElQGzZLHAXEq1OGNcdtuU7ypMd\nUSt95+zWaBGXr8WCDryP8UwNRTQ3ny4D7mDxSCAmsSey5hEN3N3Xx5zsYTWS\nYjHcC1EAjvZ1D3+hzXLTYiHspWJnPCTkM/irCVkCAYnaFbpy1FpuN9iXqRxL\nbaCiUKL8QfbNO+kwF+Azg9xHaXyxg9Anq2bR2l+ngd+b2EzxGq0YI/mz9Y6b\nxHQ8DuiBhqA8VkEw8T+ZcG0N/4qdN+xT5wkufA3DaBe2MnIvIV4IQ26/60nV\nDUBpn05jDJk+PLBcTWdvN+B7gFu0xDWh8DTxrDoejsByNhIkVXZaUJ62Tq4H\nOWu3SSlr51YbrTEB5qqjs3vWj2BMJXGLPcp2WhbF6Bb6PD/QupXL6YSduY+Q\nKqLyNvdAl6raGKBHtDkSNRxp+1yQxV625ki8oq9A1UoQklKJS8Ur+InCL9I+\nyBIB\r\n=Ld9Z\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/angx-ngx-modern-calendar.js","main":"bundles/angx-ngx-modern-calendar.umd.js","fesm5":"fesm5/angx-ngx-modern-calendar.js","es2015":"fesm2015/angx-ngx-modern-calendar.js","module":"fesm5/angx-ngx-modern-calendar.js","esm2015":"esm2015/angx-ngx-modern-calendar.js","typings":"angx-ngx-modern-calendar.d.ts","_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"fesm2015":"fesm2015/angx-ngx-modern-calendar.js","metadata":"angx-ngx-modern-calendar.metadata.json","repository":{"url":"git+https://github.com/angx-libs/ngx-modern-calendar.git","type":"git"},"_npmVersion":"6.13.1","description":"![Ngx Modern Calendar](https://raw.githubusercontent.com/angx-libs/ngx-modern-calendar/master/src/assets/screenshot.PNG)","directories":{},"sideEffects":false,"_nodeVersion":"13.2.0","_hasShrinkwrap":false,"peerDependencies":{"tslib":"^1.10.0","@angular/core":"~9.0.0","@angular/common":"~9.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-modern-calendar_1.0.2_1581501218868_0.2575617851604748","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@angx/ngx-modern-calendar","version":"2.0.1","keywords":["ngx modern calendar","angular modern calendar","ngx simple calendar","angular simple calendar","angular calendar","simple calendar"],"_id":"@angx/ngx-modern-calendar@2.0.1","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"dist":{"shasum":"c6f8907e6da1eabb8d8c6271fa94eb47a3acabb5","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-2.0.1.tgz","fileCount":15,"integrity":"sha512-Ho1+PwiBp2UQ9ggPLOh6H9ZpoQaGOanB48yFd7kA8gyvErVdgprBJlYlAeFPu9ZIRV552ry1cB0O2ZzDkk57EQ==","signatures":[{"sig":"MEYCIQDXHDqDqUEa/syg1deaHIOwzWdnsQcz1dPYNkPEBv12GwIhAJgN+b9KVGFD9tHzKN4QvC6XxHNl1ujkW55B3B0bGpvQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30041},"gitHead":"c41f20070c9ea68a143585e4814c0119275f137d","_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"donations":"https://buymeacoffee.com/er.abhishek","repository":{"url":"git+https://github.com/angx-libs/ngx-modern-calendar.git","type":"git"},"_npmVersion":"10.2.4","description":"![Angular Modern Calendar](https://raw.githubusercontent.com/angx-libs/ngx-modern-calendar/master/src/assets/screenshot.png)","directories":{},"sideEffects":false,"_nodeVersion":"18.19.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^18.1.0","@angular/common":"^18.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-modern-calendar_2.0.1_1723092550441_0.20959623103747793","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@angx/ngx-modern-calendar","version":"2.0.2","keywords":["ngx modern calendar","angular modern calendar","ngx simple calendar","angular simple calendar","angular calendar","simple calendar"],"_id":"@angx/ngx-modern-calendar@2.0.2","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"dist":{"shasum":"737ed719f8d7bb76a89b391dcbc0a3b290285a4f","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-2.0.2.tgz","fileCount":15,"integrity":"sha512-/uYK1iokXQUIYVp44s+i5JYvodkokjqBYonZphJ34hZ8B/aYfB06wvZyOQq/W1FBhfB8Q7FSnCtTwsKg8+ta4w==","signatures":[{"sig":"MEUCIQDdP+0zxKBBbE5WL5nSDS+pzFbnOw5aYUwXCHlIoSc1ygIgMRT/NWyFvSuBaT0vXTdE4SYBMURbXv7BD0+reuKAh5M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30041},"gitHead":"c41f20070c9ea68a143585e4814c0119275f137d","_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"donations":"https://buymeacoffee.com/er.abhishek","repository":{"url":"git+https://github.com/angx-libs/ngx-modern-calendar.git","type":"git"},"_npmVersion":"10.2.4","description":"Beautiful Modern Calendar for Angular (Supports Angular 18)!","directories":{},"sideEffects":false,"_nodeVersion":"18.19.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^18.1.0","@angular/common":"^18.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-modern-calendar_2.0.2_1723095981441_0.18380990584626278","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@angx/ngx-modern-calendar","version":"3.0.0","keywords":["angular","angular calendar","angular date picker","ngx modern calendar","ngx calendar","ngx date picker","multi language calendar","rtl calendar"],"author":{"name":"Abhishek Singh"},"license":"MIT","_id":"@angx/ngx-modern-calendar@3.0.0","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"dist":{"shasum":"eb40c9eaf302ca064cace5199e5af7a920ce50b6","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-3.0.0.tgz","fileCount":6,"integrity":"sha512-h8FVoa27Yq2T95ZZQcMKo2c8J6Zfy4Mxfc3KR5tPb4ZDsh3jiIKnioPHFZeNLRYKr1Jnu/Vy4KuyFNEzTEUU3w==","signatures":[{"sig":"MEUCIEyA5OKFfWQLQkDbZ849hM+lsG7rV5YW8Eymqlr4IFsUAiEA+PyEHC0n1BPmMfswQj0xP96waqhwpQlIo2ZwVNv5haY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69543},"type":"module","module":"fesm2022/angx-ngx-modern-calendar.mjs","exports":{".":{"types":"./types/angx-ngx-modern-calendar.d.ts","default":"./fesm2022/angx-ngx-modern-calendar.mjs"},"./package.json":{"default":"./package.json"}},"funding":{"url":"https://buymeacoffee.com/er.abhishek","type":"buymeacoffee"},"gitHead":"1348b79ca621e7a1119717efd923d7d39269fd5f","typings":"types/angx-ngx-modern-calendar.d.ts","_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"repository":{"url":"git+https://github.com/angx-libs/ngx-modern-calendar.git","type":"git"},"_npmVersion":"11.16.0","description":"A small, themeable, multi-language calendar component for Angular.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"tslib":"^2.8.1"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.0.0 || ^22.0.0","@angular/common":"^21.0.0 || ^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-modern-calendar_3.0.0_1785763443088_0.09866113187946857","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@angx/ngx-modern-calendar","version":"3.0.1","description":"A small, themeable, multi-language calendar component for Angular.","license":"MIT","author":{"name":"Abhishek Singh"},"homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"peerDependencies":{"@angular/common":"^21.0.0 || ^22.0.0","@angular/core":"^21.0.0 || ^22.0.0"},"dependencies":{"tslib":"^2.8.1"},"keywords":["angular","angular calendar","angular date picker","ngx modern calendar","ngx calendar","ngx date picker","multi language calendar","rtl calendar"],"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/angx-libs/ngx-modern-calendar.git"},"funding":{"type":"buymeacoffee","url":"https://buymeacoffee.com/er.abhishek"},"module":"fesm2022/angx-ngx-modern-calendar.mjs","typings":"types/angx-ngx-modern-calendar.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./types/angx-ngx-modern-calendar.d.ts","default":"./fesm2022/angx-ngx-modern-calendar.mjs"}},"type":"module","gitHead":"76b99038aad65c63b84c8362161e45c4309c5214","_id":"@angx/ngx-modern-calendar@3.0.1","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-kIo+H6MFtKcw0hs3Gxrv2E7elIP9AN6K6ylTuCDv97hghuVjt6tGgc580Qf7ow2Nd9MZXZznHnidbWC7UtjUiQ==","shasum":"f7ef91a75344f40cd342552fb39ad1e2801d727c","tarball":"https://registry.npmjs.org/@angx/ngx-modern-calendar/-/ngx-modern-calendar-3.0.1.tgz","fileCount":6,"unpackedSize":70114,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDNwwHoenXVK6+YPlvBqLNsA9OvenQigdLdAih21NUvlQIgWkcKFpabJAF4lihJdJFxF5MSYU6s400l3Tou8o//aK8="}]},"_npmUser":{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"},"directories":{},"maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ngx-modern-calendar_3.0.1_1785774774843_0.05233791308846403"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-03T09:27:58.574Z","modified":"2026-08-03T16:32:55.192Z","1.0.0":"2020-02-03T09:27:58.982Z","1.0.1":"2020-02-12T09:48:14.141Z","1.0.2":"2020-02-12T09:53:39.038Z","2.0.0":"2024-08-08T04:41:53.564Z","2.0.1":"2024-08-08T04:49:10.565Z","2.0.2":"2024-08-08T05:46:21.600Z","3.0.0":"2026-08-03T13:24:03.233Z","3.0.1":"2026-08-03T16:32:54.997Z"},"bugs":{"url":"https://github.com/angx-libs/ngx-modern-calendar/issues"},"author":{"name":"Abhishek Singh"},"license":"MIT","homepage":"https://github.com/angx-libs/ngx-modern-calendar#readme","keywords":["angular","angular calendar","angular date picker","ngx modern calendar","ngx calendar","ngx date picker","multi language calendar","rtl calendar"],"repository":{"type":"git","url":"git+https://github.com/angx-libs/ngx-modern-calendar.git"},"description":"A small, themeable, multi-language calendar component for Angular.","maintainers":[{"name":"onlyabhishek","email":"singh.abhishek0601@gmail.com"}],"readme":"# @angx/ngx-modern-calendar\r\n\r\nA small, themeable, multi-language calendar component for Angular.\r\n\r\n**[Live demo](https://angx-libs.github.io/ngx-modern-calendar/)** · [npm](https://www.npmjs.com/package/@angx/ngx-modern-calendar)\r\n\r\n![Angular Modern Calendar](https://raw.githubusercontent.com/angx-libs/ngx-modern-calendar/master/src/assets/screenshot.png)\r\n\r\n*Left to right: multi-select, a weekend-only calendar with past dates disabled, and the same component restyled entirely through CSS custom properties.*\r\n\r\n## Features\r\n\r\n- Five built-in locales — English, Spanish, French, Hebrew, Hindi — plus your own\r\n- Right-to-left support, including mirrored navigation arrows\r\n- Themeable through CSS custom properties, no `::ng-deep` needed\r\n- Automatic dark mode via `prefers-color-scheme`\r\n- Restrict selection to specific dates or weekdays, and optionally block past dates\r\n- Keyboard accessible: real `<button>` elements, focus rings, `aria-pressed` / `aria-current`\r\n- Zoneless and SSR safe — rendered from the template, not by touching `document`\r\n- Standalone component, no `NgModule` required\r\n\r\n## Requirements\r\n\r\nAngular 21 or 22.\r\n\r\n## Install\r\n\r\n```bash\r\nnpm i @angx/ngx-modern-calendar\r\n```\r\n\r\n## Usage\r\n\r\n```ts\r\nimport { Component, signal } from '@angular/core';\r\nimport { NgxModernCalendarComponent, type CalendarSelection } from '@angx/ngx-modern-calendar';\r\n\r\n@Component({\r\n  selector: 'app-booking',\r\n  imports: [NgxModernCalendarComponent],\r\n  template: `\r\n    <modern-calendar\r\n      language=\"en\"\r\n      [selectedDates]=\"selectedDates()\"\r\n      (dateSelected)=\"onDateSelected($event)\"\r\n    />\r\n  `,\r\n})\r\nexport class BookingComponent {\r\n  readonly selectedDates = signal([new Date()]);\r\n\r\n  onDateSelected({ date }: CalendarSelection) {\r\n    this.selectedDates.set([date]);\r\n  }\r\n}\r\n```\r\n\r\n### Restricting which dates can be picked\r\n\r\n```html\r\n<modern-calendar\r\n  [datesFilter]=\"true\"\r\n  [pastDates]=\"false\"\r\n  [availableWeekDays]=\"[{ day: 0 }, { day: 6 }]\"\r\n  [availableDates]=\"[{ date: '2026-08-14', slotId: 42 }]\"\r\n  (dateSelected)=\"onDateSelected($event)\"\r\n/>\r\n```\r\n\r\nWith `datesFilter` on, only days matching `availableWeekDays` or `availableDates` are selectable. Any extra properties you attach to those entries come back on `CalendarSelection.data`, so you can carry a slot id or price through to the click handler.\r\n\r\n## Inputs\r\n\r\n| Input | Type | Default | Description |\r\n|---|---|---|---|\r\n| `language` | `string` | `'en'` | `en`, `es`, `fr`, `he` or `hi`. Unknown codes fall back to `en`. |\r\n| `locale` | `CalendarLocale \\| null` | `null` | A full locale of your own. Takes precedence over `language`. |\r\n| `selectedDates` | `readonly Date[]` | `[]` | Dates to render as selected. |\r\n| `datesFilter` | `boolean` | `false` | Restrict selection to the available dates/weekdays below. |\r\n| `pastDates` | `boolean` | `true` | Allow selecting days before today. |\r\n| `availableDates` | `readonly AvailableDate[]` | `[]` | Selectable dates as ISO `YYYY-MM-DD`, plus any payload. |\r\n| `availableWeekDays` | `readonly AvailableWeekDay[]` | `[]` | Selectable weekdays (`0` = Sunday, or the locale's `longName`). |\r\n| `firstDayOfWeek` | `number \\| null` | `null` | Override the locale's first column (`0` = Sunday). |\r\n\r\n## Outputs\r\n\r\n| Output | Payload | Description |\r\n|---|---|---|\r\n| `dateSelected` | `CalendarSelection` | The picked date, plus any payload attached to it. |\r\n| `monthChanged` | `Date` | First of the newly visible month. |\r\n\r\n## Public methods\r\n\r\n| Method | Description |\r\n|---|---|\r\n| `goToPreviousMonth()` / `goToNextMonth()` | Step the visible month. |\r\n| `goToMonth(offset)` | Step by `offset` months. |\r\n| `showMonthOf(date)` | Jump to the month containing `date`. |\r\n\r\n## Theming\r\n\r\nSet any of these custom properties on `modern-calendar` or an ancestor:\r\n\r\n```css\r\nmodern-calendar {\r\n  --mc-accent: #db2777;\r\n  --mc-accent-contrast: #ffffff;\r\n  --mc-surface: #ffffff;\r\n  --mc-surface-muted: #fdf2f8;\r\n  --mc-border: #fbcfe8;\r\n  --mc-text: #111827;\r\n  --mc-text-muted: #6b7280;\r\n  --mc-hover: #f1f5f9;\r\n  --mc-disabled-text: #cbd5e1;\r\n  --mc-radius: 20px;\r\n  --mc-cell-size: 2.25rem;\r\n  --mc-font-family: 'Rubik', system-ui, sans-serif;\r\n  --mc-font-size: 0.9rem;\r\n  --mc-shadow: 0 1px 2px rgb(15 23 42 / 6%);\r\n}\r\n```\r\n\r\nDark values are applied automatically under `prefers-color-scheme: dark`; override the same properties inside your own media query to change them.\r\n\r\n### Custom locales\r\n\r\n```ts\r\nimport type { CalendarLocale } from '@angx/ngx-modern-calendar';\r\n\r\nexport const ptLocale: CalendarLocale = {\r\n  direction: 'ltr',\r\n  firstDayOfWeek: 0,\r\n  months: ['janeiro', 'fevereiro', /* ... */],\r\n  days: [\r\n    { longName: 'domingo', symbol: 'D', priority: 1 },\r\n    // ...seven entries, priority 1 = leftmost column\r\n  ],\r\n};\r\n```\r\n\r\n`firstDayOfWeek` must match the `days` ordering: it tells the grid which JavaScript weekday sits in column one.\r\n\r\n## Migrating from 2.x\r\n\r\n- **Angular 21+ is required**, and the workspace targets Angular 22.\r\n- **Clicking a date now works and emits `(dateSelected)`.** In 2.x the click wiring was commented out, so nothing was emitted at all.\r\n- The component no longer ships `@font-face` for Rubik. Set `--mc-font-family` and load the font yourself if you want it.\r\n- Class names moved to a BEM scheme (`.modern-calendar__date--selected` rather than `.modern-calendar-date--selected`). If you styled internals with `::ng-deep`, switch to the custom properties above.\r\n- The hard-coded `id=\"modernCalendar\"` is gone, so multiple calendars per page now work.\r\n- Locales are typed: `months` is an ordered array rather than an object, and `days` carries an explicit `firstDayOfWeek`.\r\n- New inputs: `locale`, `datesFilter`, `pastDates`, `availableDates`, `availableWeekDays`, `firstDayOfWeek`. New outputs: `dateSelected`, `monthChanged`.\r\n\r\n### Fixed in 3.0.0\r\n\r\n- **Clicking a date did nothing** — `selectDate()` was never called, so `onSelect` never fired.\r\n- **Every month was shifted one column** in the Monday-first locales: the grid offset used `getDay()` (0 = Sunday) against a header that started on Monday.\r\n- **The previous/next buttons jumped two months** per click, because `init()` ran once from the constructor and again from `ngOnInit`, binding two listeners.\r\n- **The \"today\" highlight never appeared** — it compared full timestamps rather than calendar days.\r\n- With `pastDates: false`, **today itself was disabled**, for the same reason.\r\n- Multiple calendars on one page shared state through `document.querySelector('#modernCalendar')`, and clearing a selection cleared it on all of them.\r\n- Listeners were never removed and the calendar was never torn down.\r\n- `document` was touched in the constructor, breaking server-side rendering.\r\n- The stylesheet's 16 `@font-face` blocks had malformed `unicode-range` values (`U400-45F` instead of `U+0400-045F`), invalidating the rules while still fetching remote fonts on every page view.\r\n- `new Element()` in the weekday header path throws `TypeError: Illegal constructor` whenever the container is missing.\r\n- `selectDates()` threw if a selected date was not present in the current month's DOM.\r\n\r\n## Development\r\n\r\n```bash\r\nnpm install\r\nnpm run build:lib   # build the package into dist/angx/ngx-modern-calendar\r\nnpm start           # build the lib, then serve the demo app\r\nnpm test            # run the library unit tests\r\n```\r\n\r\nThe demo app is deployed to GitHub Pages from `master` by `.github/workflows/deploy-demo.yml`.\r\n\r\n## Support\r\n\r\nIf you like my work and feel like buying me a coffee, please feel free to do so:\r\n\r\n[Buy Me A Coffee](https://buymeacoffee.com/er.abhishek)\r\n\r\n## License\r\n\r\nMIT © Abhishek Singh\r\n\r\n[GitHub](https://github.com/asingh0601) · [Twitter](https://twitter.com/only_abhishek)\r\n","readmeFilename":"README.md"}