StudioNope Themes Get the module →
HubSpot CMS Module

Event Calendar Pro

A month grid, a chronological list and a single-day schedule, built from one set of events in the page editor. Repeating rules, events that run across several days, category filters, a keyboard-operable detail panel, and calendar files generated in the browser. No HubDB table and no external service.

Get the module See it live ↓

Demo 1

Month grid

A full month with categories, a filter row, the day the reader is on marked, a workshop that runs across four cells, and a repeating series generated from one rule. Days holding more than the per-day limit open the rest in a panel.

Month grid

Autumn programme

What is on this month

Sessions, workshops and office hours. Page through the months, filter by kind, or open any entry for the detail.

Times shown in CET
03 Aug

Daily standup

03 Aug 2026 ·09:00–09:15 ·Online

04 Aug

Office hours

04 Aug 2026 ·16:00–17:00 ·Online

11 Aug

Accessibility clinic

11 Aug 2026 ·09:30–10:30 ·Room 4

18 Aug

Onboarding workshop

18 Aug 2026 ·Training room

19 Aug

Release notes review

19 Aug 2026 ·14:00–15:00 ·Online

20 Aug

Design review

20 Aug 2026 ·11:00–12:00 ·Studio

27 Aug

Partner roundtable

27 Aug 2026 ·18:30–20:30 ·The Long Room


Demo 2

The list view, on a product-site palette

The same module set to open on the chronological list. White ground, one indigo accent, hairline cards with a soft shadow, and a wide measure. The view, the card radius, the shadow, the accent and every label are field values in the page editor.

Conference programme, list view

Spring programme

Sessions and workshops

Three months of talks, hands-on workshops and community evenings. Filter by kind, search the programme, or open any entry for the full detail.

All times CET
08 Oct

Build your first integration

08 Oct 2026 ·10:00–13:00 ·Workshop room 2

13 Oct

Migrating a live billing system

13 Oct 2026 ·16:00–17:00 ·Room 4

16 Oct

Community evening

16 Oct 2026 ·18:30–21:00 ·The Atrium

22 Oct

Webhooks in practice

22 Oct 2026 ·10:00–13:00 ·Workshop room 2

29 Oct

Office hours with the API team

29 Oct 2026 ·17:00–18:00 ·Room 1

05 Nov

Scaling checkout

05 Nov 2026 ·09:30–11:00 ·Main stage

12 Nov

Test-driving the SDKs

12 Nov 2026 ·10:00–16:00 ·Workshop room 1

04 Dec

Year-end meetup

04 Dec 2026 ·18:30–22:00 ·The Atrium


Demo 3

One day, hour by hour

The single-day schedule, set for a lot of air. Grey ground, white cards with no border, large light headings, small grey captions and a blue accent. Section padding, card radius, heading weight, the time column width and the summary line count are all fields.

Day agenda

Saturday sessions

A day of hands-on sessions

Photography, video and code, an hour at a time. Free to join, everything is provided, and you can drop in for one hour or stay for all of them.

Doors at nine, last session ends at six
19 Sep

Doors open

19 Sep 2026 ·Ground floor

19 Sep

Editing a portrait

19 Sep 2026 ·11:00–12:00 ·Studio 1

19 Sep

Cut a short film

19 Sep 2026 ·12:30–13:30 ·Studio 2

19 Sep

Sound for video

19 Sep 2026 ·14:00–15:00 ·Studio 2

19 Sep

Your first app screen

19 Sep 2026 ·15:30–16:30 ·Studio 3

19 Sep

Show and tell

19 Sep 2026 ·17:00–18:00 ·Ground floor


Demo 4

The same grey grid, packed tighter

No colour of its own. The week starts on Sunday, the cells are shorter, the type is smaller and the per-day limit is set low so the overflow panel is easy to see. Four repeat rules cover a whole term and the bar running across three days is one entry.

Dense month grid

Bay 3 / rolling term

Shop floor bookings

Four rules cover the term. The bar running across three days is one entry. Days holding more than fits open the rest in a panel.

07 Sep

Early shift, CNC

09/07/2026 ·07:00–08:00 ·Bay 1

01 Sep

Late shift, welding

09/01/2026 ·18:00–19:15 ·Bay 2

05 Sep

Open bench

09/05/2026 ·10:00–12:00 ·Bay 1

22 Sep

Calibration and sign-off

09/22/2026 ·10:00–16:00 ·Bay 1

21 Sep

Closed, floor resurfacing

09/21/2026 ·Bays 1 and 2


What it does

Event Calendar Pro turns a list of events in the page editor into a month grid, a chronological list and a single-day schedule. There is no HubDB table to build and no external service to connect. The reader switches views, filters by category, and opens any entry for the full detail and an add-to-calendar row.

Setting it up

Categories first

Add your categories before your events. Each one carries a slug, a display name, a chip background and a chip text colour. The slug is what you type into an event's Category field, so keep it lower case and free of spaces.

Then the events

Every event takes a title, a start date, and optionally a start and end time, an end date, a description, a location with its own link, an image, a button, and a featured flag. Leave the end date empty for a single-day event. Set it to a later date and the event draws as one bar across the cells it covers.

All-day entries

Switching an event to all day drops its times everywhere, including the calendar file it hands out, which then uses whole dates instead of moments.

Repeats

Each event carries its own rule: daily, weekly with a weekday picker, monthly by date or by weekday, or yearly. An interval sets how often the rule fires, and the rule ends never, after a set number of times, or on a date. A comma-separated list of dates in YYYY-MM-DD form takes single occurrences back out again.

The rule travels with the event and is worked out in the reader's browser for the month on screen. That is why paging forward to a month years away still shows the series, and why a monthly rule on the 31st correctly skips the months that are too short. Monthly by weekday reads the start date: an event starting on the third Wednesday repeats on the third Wednesday, and an event starting on the last Friday repeats on the last Friday. A yearly rule set to 29 February only appears in leap years.

A repeat rule describes one shape. If a single date in a series needs its own time, location or title, add it back out with the skip list and enter it as a separate event.

The month on a phone

A phone column is about five characters wide, which is not enough for a title. Below a width you set, the month view stops drawing cells and reads out as a list instead: one heading per day, then the title, the time, the place and the summary of everything on it. The month buttons, the period label and the filters stay where they were, so paging back and forward still moves a month at a time.

If the shape of the month matters more than the titles, a setting keeps the grid and puts a count on each day, or a bar for each entry. In every one of those the day number becomes a button that opens the day in a panel, so nothing on the calendar is more than one tap away. Above that width the grid is drawn as it is here, and a title too long for its cell is cut with an ellipsis.

Add to calendar

Every entry can offer a downloadable calendar file, a Google Calendar link and an Outlook link. Which of them appear is a setting. The file is built in the browser at the moment of the click, so there is nothing to host and no request leaves the page. Commas and semicolons in a title or a description are escaped the way the calendar format requires, and long lines are folded, so the file opens cleanly in the desktop clients as well as the web ones.

Times and timezones

Times are written and read exactly as you type them. The module does not convert them to each reader's own zone — it shows the timezone label you set, and hands calendar clients a floating time that lands at the same clock reading wherever it is opened. For a single-location programme that is the behaviour you want.

Wording and language

Every visible string is a field: the view names, the Today button, the filter labels, the upcoming and past switch, the overflow link with its count token, the empty state heading and body, the add-to-calendar labels, and the screen-reader descriptions. Month names and weekday names come from the page's own language attribute, so a page set to another language gets that language's calendar without any typing.

Styling

Colours, sizes, radii, spacing and weights all live on the Style tab, grouped by the part of the calendar they affect: the grid and its lines, the day cells and their weekend and adjacent-month states, the chips, the list rows, the detail panel, the day panel and the empty state. Category colours sit with the categories themselves. The accent colour and the body font inherit from the host theme, so the module lands in a theme's palette before anyone touches a setting.

Typography carries a body font and a heading font. The heading font sets the section title, the period label, the month rules in the list, the entry titles, the detail panel title and the empty-state title. Nothing is locked to one palette either: set the section background, the surface, the border and the text colours and the grid lines, cells, cards, chips and panels all follow. The three demos above the last one are this module with nothing changed but field values.

Accessibility