Skip to main content
This doc only provides information to help with customisation of the new festivals widget, which is still in beta 🤓

Basic embed code:

To get a widget up and working you need the following embed code at minimum (where YOURCODE is the unique id for your widget).
You will also need to add the following scripts to get the widget to work:
Depending on your platform there are different ways for adding this code to your site. We have some examples in our widgets section here:

Available configuration options:

Here is an example of some of the configuration options currently available: And an example of how these can be used:

Language support

Use the data-lang attribute to set widget labels and text. Supported values:
  • English (en, fallback)
  • Norwegian (no, nb, nn)
  • Swedish (sv)
  • Danish (da)
  • Finnish (fi)
  • Icelandic (is)

Custom CSS

For for grained control of the layout you can use custom css to override the styles of the widget. Behind the scenes we use Tailwind CSS for the majority of the widget, alongwith Radix UI and inline styles to make the modal accessible. For a visual overview of the layout you can look at this zoomable Excalidraw document: https://link.excalidraw.com/readonly/uQHtiuAGTgUcIBurDCOc

Widget structure

Where something is marked with TODO, this is to inform you that changes will be made in the handling of this element.
The core outline of the widget is determined by the element ID’s listed below. You can paste this code to use as starting point for customisations.

Schedule item

We refer to the program of the festival internally as the schedule, and therefore we call each individual row the schedule item. As this are repeated many times we use classes rather than element ids, and this are distinguised with a ‘-cl-’ in the class name to aide with trouble shooting.

Bonus: Schedule Item Grid

If you want to get up to speed quickly with whats what in the schedule item, you can add the following CSS to highlight the grid around your content. This can help you find the element you are looking for quickly when time is short!

Artist cards

Use these classes to customise cards in the artist grid.
Use these classes to customise the schedule item details modal.

Responsive layout

The layout changes automatically with the viewport width. You do not need a new embed option.
  • Below 1024px, the image sits above the content and the dialog scrolls as a whole.
  • At 1024px and above, a square image fills the left half of the modal. Its height sets the height of the details section. The right half scrolls independently, starting below the close button, with a fade at the top edge.
  • The desktop dialog uses width: 90vw and max-width: min(1440px, 180dvh). This keeps the square image at or below 90dvh.
  • At 1440px and above, the content column has more padding.
  • When no image is available on desktop, the content fills the width and determines its own height, up to 95dvh. It scrolls when needed and has no top fade.
The desktop close button floats at the top right, and ticket button labels stay on one line. The scrollbar uses a thin thumb tinted from data-modalcontent, with a grey fallback when no text colour is set. Browsers that do not support the scrollbar styling use their default appearance.

CSS classes

The .bcfw-cl-details-performances section appears only when the selected schedule item has additional performances. It contains their dates, times and stages or venues. The selected performance stays in the main details header and does not repeat in this list. The heading follows your data-lang setting.

Updating existing modal CSS

The image and .bcfw-cl-details-content are no longer direct children of .bcfw-cl-details-wrapper. Update selectors that use > to account for the new image wrapper and body. Apply content-column padding and scrolling overrides to .bcfw-cl-details-body. The body also contains additional performances, tags, social links, video and the description. The new wrappers also carry .bcfw-details-image-wrapper and .bcfw-details-body, which the widget uses for its built-in styles. Use their .bcfw-cl- equivalents for your custom CSS. The modal renders in a portal under the page body, outside #bc-widget. Selectors such as #bc-widget .bcfw-cl-details-body will not match it. You can scope overrides to .bcfw-details-modal instead:

Internal and legacy selectors

Use the customization classes above instead of the selectors below. The classes without -cl- still control the built-in layout; they are not deprecated. The IDs below belong to older detail markup.
Last modified on September 6, 2026