Layout and styling

Global configuration

Via Admin > Configuratie > Algemene configuratie, section Organization configuration, you can configure the look and feel of the forms and html-email.

Organization name

The organization name is used in link labels and document titles for accessibility reasons.

Main website link

The main website link is used so the end-user can return to your main website, e.g. https://www.gemeente.nl. Clicking the logo (or link) in the header will return the end-user to this URL.

Favicon

You can upload your own favicon, typically displayed on the browser tab.

Default theme

Open Forms supports configuring multiple themes. In the event that no explicit theme is provided for content, the default theme (if set) is used.

New in version 2.5.0: Support for multiple themes was added.

Themes

A theme is a collection of styling/appearance configuration. It is applied to the web interface of a form, the confirmation email and the generated PDF with the submission data.

Themes can be configured via Admin > Configuratie > Thema’s. The customizable aspects are:

Logo

You can upload a logo to be used in the header here. If no logo is uploaded, a plain link will be shown. Logos can be the usual image formats, or an SVG image.

Theme CSS class name

You can specify a CSS class name to apply to the root html element here. Typically you need this if you use an NL Design System design token package which emits the design tokens under this class name scope.

Example value: <gemeente>-theme.

The NL DS theme switcher source code contains a list of built in themes and their class names.

Theme stylesheet URL

If your organization publishes their design tokens as a package, you can use the resulting CSS file here by specifying the URL to the hosted stylesheet.

The NL DS theme switcher source code contains a list of built in themes with available hosted stylesheets under the href key.

Note

If you are specifying an externally hosted stylesheet, then it will be blocked by default by the Content-Security-Policy (CSP).

Navigate to Admin > Configuratie > Csp settings and add an entry to put this stylesheet on the allowlist. For the directive field, select style-src, while the Waarde field should contain the (base) URL of the stylesheet, e.g. https://unpkg.com/@gemeente-denhaag/.

Note

This configuration option is not supported in the HTML e-mail styling, please use the “design token values” for that instead.

HTML e-mails have notoriously bad CSS support - this limitation is unfortunately outside of our hands.

Design token values

With the design token values, you can control aspects such as back- and foreground colors in the skeleton. This is considered advanced usage, as the structure from style dictionary is used.

All available design tokens can be consulted by opening the design token editor. As long as you use the default Open Forms theme, all tokens are optional and have default values.

Todo

  • Update e-mail to use design tokens from CSS file -> figure out if we can source a resolved JSON instead?

  • Refactor openforms.emails.context._get_design_token_values to be a template tag instead, e.g. {% design_token 'of.page-header.bg' default="#ffffff" %} which takes into account the entire resolution.

  • Optimize design tokens similarly to manifest.json so that it’s kept in memory? This avoids network lookups (only update this when the config in admin changes) and even avoids file IO to build the resolved dictionary. We could include style-dict in the container image for this perhaps, but that requires NodeJS to be present… possibly set up a dedicated service for this.

Design token values examples

For ‘inverted logos’ it is possible to change the background colour of the header. The design token values have to be set to:

{
  "utrecht": {
    "page-header": {
      "background-color": {
        "value": "#35a7cc"
      }
    }
  }
}

This gives:

../../_images/background-colour.png

For wider logos, it is possible to increase the size with the following design token values:

{
  "of": {
    "header-logo": {
      "width": {
        "value": "400px"
      },
      "height": {
        "value": "75px"
      }
    }
  }
}

Which gives:

../../_images/logo-size.png

Color presets for rich text content component

Via Admin > Miscellaneous > Text editor color presets you can manage the shared color presets palette used by the rich text editor of the content-component.

You can freely add, change or remove presets to create a collection of consistent colors for use in free text. These are then available here:

../../_images/color_presets.png

Note

Changing the presets doesn’t change text with previously applied colors.