Calendar Card Pro for Home Assistant
โ Support This Project
If you find Calendar Card Pro useful, consider supporting its development:
ย
๐ Documentation
This README covers installation and a quick start. Everything else โ every configuration option, all features and worked examples โ lives on the documentation site, which is searchable and always matches the latest release.
| ๐ Installation | Set the card up via HACS or manually |
| ๐ Usage | Add the card and configure it visually |
| โจ Features & Configuration | Weather, templates, layout, actions, and more |
| ๐ Configuration Options | Complete reference for every option |
| ๐ก Examples | Ready-made configurations to copy |
| ๐ Release Notes | Full history of every release |
ย
1๏ธโฃ Overview
๐ About
Calendar Card Pro was inspired by a beautiful calendar design using button-card and Hass calendar add-on shared in the Home Assistant community. While the original design was visually stunning, implementing it with button-card and card-mod led to performance issues.
This motivated me to create a dedicated calendar card that excels in one thing: displaying upcoming events beautifully and efficiently.
Built with performance in mind, the card leverages intelligent refresh mechanisms and smart caching to ensure a smooth experience, even when multiple calendars are in use.
โจ Features
- ๐จ Sleek & Minimalist Design โ Clean, modern, and visually appealing layout.
- โ Multi-Calendar Support โ Display multiple calendars with unique styling.
- ๐ Compact & Expandable Views โ Adaptive views to suit different dashboard needs.
- โ๏ธ Visual Configuration Editor โ Intuitive interface for effortless card setup.
- ๐ง Highly Customizable โ Fine-tune layout, colors, event details, and behavior.
- ๐ฆ๏ธ Weather Integration โ Display weather forecasts alongside your calendar events.
- โก Optimized Performance โ Smart caching, progressive rendering, and minimal API calls.
- ๐ก Deep Home Assistant Integration โ Theme-aware with native ripple effects.
- ๐ Multi-Language Support โ Available in 35 languages, community contributions welcome!
๐ Dependencies
Calendar Card Pro requires at least one calendar entity in Home Assistant. It is compatible with any integration that generates calendar.* entities, with CalDAV and Google Calendar being the primary tested integrations.
โ ๏ธ Important: Ensure you have at least one calendar integration set up in Home Assistant before using this card.
2๏ธโฃ Installation
๐ฆ HACS Installation (Recommended)
The easiest way to install Calendar Card Pro is via HACS (Home Assistant Community Store).
Steps:
- Ensure HACS is installed in Home Assistant.
- Go to HACS โ Frontend โ Custom Repositories.
- Add this repository:
https://github.com/alexpfau/calendar-card-proas typeDashboard - Install Calendar Card Pro from HACS.
- Clear your browser cache and reload Home Assistant.
๐ Manual Installation
๐ Click to expand manual installation instructions
Steps:
-
Download both files from the latest release:
๐ calendar-card-pro.js and editor.js -
Put both files into a folder of their own under
www:
/config/www/calendar-card-pro/The card ships as two files:
calendar-card-pro.jsandeditor.js. Both must sit in the same folder, andcalendar-card-pro.jsis the only one you name as a resource โ the card loads the editor itself, when you open it. Use a subfolder rather than/config/www/directly: that folder is shared by every hand-installed card, andeditor.jsis a common enough name that another file can take it. HACS does all of this for you, which is why it is the recommended route. -
Navigate to: Home Assistant โ Settings โ Dashboards โ Resources โ Add Resource
-
Add the resource to your Lovelace Dashboard:
url: /local/calendar-card-pro/calendar-card-pro.js
type: module- Clear cache & refresh your browser to apply changes.
3๏ธโฃ Quick Start
Add the card from your dashboard's โ Add Card picker โ search for "Calendar" โ then click
the three dots (โฎ) โ Configure to open the visual editor.
Shortcut (Home Assistant 2026.6+): In the card picker, switch to the By entity tab and pick any
calendar.*entity. Calendar Card Pro is offered under Community, already pointed at that calendar and previewed with its real events.
Prefer YAML? This is a complete, working configuration:
type: custom:calendar-card-pro
entities:
- calendar.family
days_to_show: 3
show_location: false
show_month: false
Swap calendar.family for one of your own calendar.* entities and you have a working card.
โก๏ธ From here, Usage walks you through multiple calendars, per-calendar colors and compact mode. Every available option is listed in the Configuration reference, and more ready-made setups are in Examples.
4๏ธโฃ What's New
โก๏ธ View the Full Release Notes for a complete list of features.
Latest Release: v4.2
- ๐ง Shared Events, Clearly Marked: Merged duplicates show every contributing calendar's label instead of only the first; set
duplicate_accent_colorto give shared events a color of their own - ๐ Countdowns Follow Calendar Dates: Countdowns now say "tomorrow" for the next date and stop skipping days between later dates; same-day starts keep clock countdowns, while distant dates retain natural month/year wording
- ๐ Allowlists & Blocklists Work Together: Combined filters now keep only events that match the allowlist and escape the blocklist, rather than silently ignoring the blocklist
v4.1
- ๐ท๏ธ All-Day Events, as a Pill:
allday_badgedraws a rounded pill in each calendar's own color, around the event title the way Google and Apple Calendar do, or beside the clock,allday_badge_styleoffers four shapes andallday_badge_colorpicks the color they are drawn in โ each calendar's own, the row's own text color, or one you name. Off by default; tryallday_badge: titlefirst - ๐จ Follow Home Assistant's Calendar Colors and Icons: Set
accent_colortohome-assistantand each calendar takes the color Home Assistant holds for it. Set itslabelthe same way for that calendar's icon - ๐ง A Person's Photo in Front of Their Calendar: Set a calendar's
labelto a person entity ID and the card shows that person's picture โ faces instead of words on a household dashboard - ๐๏ธ Split One Calendar by Event Type:
event_typetakesall,timedorall_day, card-wide or per calendar โ list one calendar twice for a color on each, and Duplicate in the editor builds it for you - ๐ Two New Per-Calendar Filters:
allday_expires_atretires an all-day event partway through the day, so a bin collection stops sitting on the card until midnight, anddays_of_weekkeeps one calendar to weekdays or weekends - ๐ Ages on Birthdays, Counts on Anniversaries: Write
YEAR=1976in a birthday event's description and the card appends the age to the title โ nothing to configure, and it stays right every year - โ๏ธ Rewrite What an Event Says:
replace_pattern,replace_withandreplace_fieldrewrite one field of a calendar's events as the card draws them, leaving the calendar untouched. One Calendar, Many Purposes puts this and three of the options above into a single card
v4.0
- ๐๏ธ Column View: Lay the days side by side, one column each, instead of stacking them โ the same agenda, rotated, with its own per-view overrides and a responsive fallback to the list layout
- โ๏ธ Rebuilt Visual Editor: Nine panels built on Home Assistant's own form components, with a search box that finds any setting by name or YAML key, a customized-only filter, per-calendar settings, and per-view exceptions
- โก 41% Smaller to Download: The editor moved into a file the card fetches only when you open it, taking it and all its translations off the path every dashboard pays for
- โก Fewer Round-Trips on Every Page Load: One card load asked Home Assistant for the same events up to four times; requests are now deduplicated, and two display-only switches no longer discard a valid cache entry
- ๐ Eleven Editor Languages: Nine newly translated in full โ German, Estonian, Italian, Latvian, Lithuanian, Norwegian Bokmรฅl, Polish, Slovak and Swedish โ alongside US and British English, with per-string fallback so a partial translation still renders
- ๐ Dates, Clocks and Week Numbers: Week numbers were wrong for one date in seven outside UTC, the clock format disagreed with Home Assistant's own locale data for 33 of its 64 languages, and
first_day_of_week: systemreturned Monday to everyone - โ ๏ธ Breaking: Manual installs now copy two files,
event_icon_vertical_alignmentdefaults totop, and weather badges are styled through custom properties instead of inline styles
v3.6
- ๐ A Documentation Site: The full manual now lives at calendar-card-pro.alexpfau.com โ a page per feature, a complete configuration reference, and ready-made examples
- ๐ One Stray Line of YAML Broke the Card: A bare
-left in theentities:list replaced the whole calendar with a red error box; malformed entries are now discarded - ๐ Per-Calendar Settings Applied Late: Editing a per-calendar label, colour or toggle did nothing until the cache expired โ edits now apply immediately
- ๐ Disappearing and Ellipsised Text: Titles gained a
โฆwhen nothing had been truncated, and long words in descriptions and locations were clipped mid-character with no warning - ๐ Multi-Day Countdowns: Each row of a split multi-day event counted differently; every row now counts whole calendar days to its own date
Older releases are covered in the Full Release Notes.
5๏ธโฃ Contributing
Want to improve Calendar Card Pro? I welcome contributions of all kinds โ whether it's fixing bugs, improving performance, or adding new features!
git clone https://github.com/alexpfau/calendar-card-pro.git
npm install
npm run devThen open a Pull Request against the dev branch.
- ๐ Contributing guide โ full workflow, coding standards, and how to add a translation
- ๐๏ธ Architecture documentation โ module responsibilities, data flow, and performance design
- ๐ Adding a translation? The card speaks 35 languages and the visual editor 11 โ new ones are always welcome.
๐ก Got a feature request? Open a GitHub Issue or start a discussion!
๐ Acknowledgements
- Original design inspiration from Calendar Add-on & Calendar Designs by @kdw2060.
- Interaction patterns inspired by Home Assistant's Tile Card, which is licensed under the Apache License 2.0.
- Material Design ripple interactions, originally by Google, used under the Apache License 2.0.
Calendar Card Pro is released under the MIT License. Full third-party attributions are listed in NOTICE.