Modular Calendar PNG Generator

Usage: choose a calendar type, set year/month (for some calendar systems these are mapped to that system's year/month), and click Render. Days not in the chosen month are drawn gray. Click Export to get the PNG preview; Download will save it.

To add a calendar system, register it in the calendarTypes array in the code. Each type must provide id, name, monthNames(year) and getMonth(year,month) which returns {days: number, monthIndex, year} and optionally a mapping from the month/day grid to labels.