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 same module, restyled

This is the calendar above with different field values. The list view, the ink background, the serif headings, the pill filters and the coloured category chips are all settings in the page editor. Clear them and the grey month grid comes back.

Restyled programme

Autumn programme

Nocturne Sessions

Talks, workshops and long dinners between October and December. Every colour, radius and typeface on this calendar is a field value.

All times CET
08 Oct

Type on a deadline

08 Oct 2026 ·10:00–13:00 ·Studio 2, Timber Wharf

13 Oct

What the archive knows

13 Oct 2026 ·18:30–20:00 ·Hall A, Timber Wharf

16 Oct

Long table

16 Oct 2026 ·20:00–23:00 ·The Refectory

22 Oct

Colour under lamplight

22 Oct 2026 ·10:00–13:00 ·Studio 2, Timber Wharf

29 Oct

Evening review

29 Oct 2026 ·18:00–19:30 ·Studio 1, Timber Wharf

05 Nov

A house style that outlives its author

05 Nov 2026 ·19:00–20:30 ·Hall A, Timber Wharf

12 Nov

Binding and boards

12 Nov 2026 ·10:00–16:00 ·The Bindery

04 Dec

Winter table

04 Dec 2026 ·20:00–23:30 ·The Refectory


Demo 3

A day, set like a page

The same module again, this time on a warm paper ground with a humanist serif, a wide measure and a lot of air. The time column sits right-aligned against the entries, the rows carry no border, and three lines of summary show instead of two. Section padding, card padding, line height and the summary line count are all fields.

Editorial day

Saturday at the farm

Orchard Day

One day among the trees, read hour by hour. Come for a single hour or stay from the first coffee to the last glass.

Gates at eight, last bus at seven
19 Sep

The gates are open

19 Sep 2026 ·North gate

19 Sep

Coffee and yesterday bread

19 Sep 2026 ·08:30–09:30 ·The terrace

19 Sep

What the old trees ask for

19 Sep 2026 ·11:00–11:45 ·West rows

19 Sep

Long lunch under the pears

19 Sep 2026 ·12:00–13:30 ·Pear walk

19 Sep

Preserving: a working hour

19 Sep 2026 ·13:30–14:30 ·The still room

19 Sep

Closing reading, then cider

19 Sep 2026 ·16:30–17:30 ·The long barn


Demo 4

A board to read at a glance

A fourth set of field values: cool greys, a grotesk over a mono, square corners and cells packed tight. Four repeat rules cover a whole term, the week starts on Sunday, times read as AM and PM, and the per-day limit is set low so the overflow panel is easy to see.

Shop floor board

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

07 Sep 2026 ·07:00–08:00 ·Bay 1

01 Sep

Late shift, welding

01 Sep 2026 ·18:00–19:15 ·Bay 2

05 Sep

Open bench

05 Sep 2026 ·10:00–12:00 ·Bay 1

22 Sep

Calibration and sign-off

22 Sep 2026 ·10:00–16:00 ·Bay 1

21 Sep

Closed, floor resurfacing

21 Sep 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.

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 a light background either: set the section background dark and the key colours to match, and the grid lines, cells, cards, chips and panels follow. The second demo above is this module with those settings, and nothing else.

Accessibility