Screenshot of the front page of CivicTheme

CivicTheme is a component-based atomic design system and Drupal theme.

Resources:

Where to get support

Where to submit issues and PRs

Development of the entire CivicTheme ecosystem is managed in the GitHub civictheme organisation.
This allows to develop the Drupal theme and modules at the same place and use advanced CI configuration for testing.
The code from the monorepo is automatically published to Drupal.org with all commit and author information preserved.

For Drupal theme: submit issues to the Drupal theme issue queue and submit PRs to the GitHub Drupal monorepo

For UI Kit: submit issues to the UI Kit GitHub repository and submit PRs to the UI Kit GitHub repository

If you do not know which part the issues relates to - submit an issue to the Drupal theme issue queue and it will be moved to the appropriate location by the CivicTheme maintainers.

Installation

IMPORTANT! Drupal core has a known issue and a patch would need to be installed on your site before installing CivicTheme to allow the CivicTheme installation complete successfully. Note, this patch is not required for production.

Get required core patch

Or, add this patch to your `composer.json`

 "patches": {
   "drupal/core": {
       "Layout builder cannot recover on missing layout - https://www.drupal.org/project/drupal/issues/3204271#comment-15151776": "https://www.drupal.org/files/issues/2023-07-16/3204271-20-missing-layout-exception.patch"
    }
 }

Please do not submit issues if your installation finished with WSOD - this means that you are using CivicTheme that was not fully installed. Install a patch mentioned above and restart your installation from scratch.

  1. Make sure the core issue patch above has been applied *before* installing CivicTheme and then clear the cache
  2. Install theme code: composer require drupal/civictheme
  3. Enable required modules (Drupal allows themes to declare module dependencies, but does not yet allow those modules to be enabled automatically):
    drush ev "require_once dirname(\Drupal::getContainer()->get('theme_handler')->rebuildThemeData()['civictheme']->getPathname()) . '/theme-settings.provision.inc'; civictheme_enable_modules();"
  4. Clear caches in UI or with Drush: drush cr
  5. Enable the theme in UI or with Drush: drush then civictheme

Sub-theme

  1. Create a sub-theme using provided script (do not skip this step if you want to receive the full benefits of the tooling provided with a sub-theme starter kit) :
    php civictheme_create_subtheme.php <theme_machine_name> "Human theme name" "Human theme description" /path/to/theme_machine_name
  2. Enable the theme in UI or with Drush: drush theme:enable theme_machine_name
  3. Compile front-end assets (NodeJS version >=18.14 is required):
    nvm use
    npm ci
    npm run build
    

CivicTheme security

CivicTheme has opted into the Drupal Security Advisory system, ensuring that security issues affecting the theme can be responsibly reported, tracked, and communicated to users.

By participating in this program, we commit to following the Drupal Security Team’s processes for assessing, prioritising, and releasing security updates, helping maintain a secure environment for all users of the theme.

Reporting a vulnerability

If you discover a potential security vulnerability in CivicTheme, you should immediately report it to the Drupal Security Team. Click the link Report a security vulnerability here, or in the right side column.

In alignment with the Drupal Security Team policy, security issues should not be disclosed to anyone outside the Drupal Security Team and the CivicTheme team.

What to add in the report

First, read Reporting a security issue.

Additionally, in the ticket, be sure to include:

  • A brief description of the issue
  • The affected CivicTheme version(s)
  • A repository or website where the issue can be observed
  • Steps to reproduce the problem
  • A comment to the Drupal Security Team: "please add all maintainers of CivicTheme to the security issue. All maintainers are active and up to date with the project."

After submitting the report, the Drupal Security Team will coordinate with CivicTheme maintainers to verify the vulnerability, determine affected versions, and prepare a security advisory and release if required.

Security release notifications

Notifications of security releases are made via the following channels:

CivicTheme security framework

To be informed of CivicTheme's security framework, go to CivicTheme security framework.

Credit

As of June 2025, Salsa Digital has contributed over 10,000 hours to CivicTheme!

The following people have contributed to CivicTheme as of June 2025:

Supporting organizations: 
Design, development, accessibility and ongoing maintenance

Project information

Releases