Skip to content

dcmits/un_geneva_design_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UN Geneva Design System

This is a Drupal theme that implements a design system created using Emulsify (Storybook). Default components provided by the design system:

  • language bar
  • brandbar
  • menu
  • footer
  • page template

Usage

  1. Include the custom package in the repositories section of composer.json before the packages.drupal.org. Replace the dist:url with "https://github.com/dcmits/un_geneva_design_system/archive/main.zip" to automatically pull latest revision.
{
    "type": "package",
    "package": {
        "name": "dcmits/un_geneva_design_system",
        "version": "1.1.0",
        "type": "drupal-theme",
        "source": {
        "type" : "git",
        "url" : "https://github.com/dcmits/un_geneva_design_system.git",
        "reference" : "main"
        },
        "dist": {
            "url": "https://github.com/dcmits/un_geneva_design_system/archive/refs/tags/1.1.0.zip",
            "type": "zip"
        }
    }
}
  1. Install dependencies (block_class, components:^3.0@beta, emulsify_twig, menu_block, twig_tweak, unified_twig_ext)
composer require drupal/block_class drupal/components:^3.0@beta drupal/emulsify_twig drupal/menu_block drupal/twig_tweak drupal/unified_twig_ext
drush en block_class,components,emulsify_twig,menu_block,twig_tweak,unified_twig_ext
  1. Install the theme
composer require dcmits/un_geneva_design_system
  1. Add patches in compser.json under the extra section
    "patches": {
        "drupal/core": {
            "Add stream wrappers to access extension files": "https://www.drupal.org/files/issues/2024-06-24/1308152.patch"
        },
        "drupal/unified_twig_ext": {
            "ExtensionLoader not loading extensions from parent themes": "https://www.drupal.org/files/issues/2023-08-10/unified_twig_ext-load_parent_extensions-3380423-2.patch"
        },
        "drupal/emulsify_twig": {
            "removeAttribute method not found on array": "https://www.drupal.org/files/issues/2022-11-18/emulsify_twig-removeattribute_not_found_on_array-3260914-5.patch"
        }
    }

The patch for enabling stream wrappers from drupal/core works for drupal <= 10.2. For drupal 10.3 and above use "https://www.drupal.org/files/issues/2024-06-24/1308152.patch". If you do not have composer patches installed run:

composer require cweagans/composer-patches

Run composer update to patch the modules

composer update
  1. Generate new theme (using the Drupal core starter kit theme generation script) First make sure the custom theme folder exists
mkdir web/themes/custom

generate theme

php web/core/scripts/drupal generate-theme [new_theme] --path themes/custom --starterkit un_geneva_starterkit --name="[New theme name]"

[new_theme] should be lowercase letters and digits and underscores (it shouldn't start with a digit)

  1. Install and set as default the new theme from the Appeareance menu.

  2. Do a cache rebuild after installing the new theme.

  3. Update the theme settings (Site name, Secondary site name, social media share image, default banner image)

Updating the local version of the design system

rm -rf web/themes/contrib/un_geneva_design_system
composer update dcmits/un_geneva_design_system --no-cache

Upgrading to 1.1.0

The version 1.1.0 removes dependency on obsolete lang_dropdown contrib module and adds support for Drupal 11. To upgrade, change the version tag of the design system in the composer repository definition to 1.1.0. Also remove lang_dropdown from the custom theme info.yml dependencies.

Extending the design system

see development.README.md

Emulsify/Storybook

see emulsify.README.md

Customizations

Search form

The search form block is hardcoded in the template because of constraints from the mobile menu and the header markup. In order to replace the default search form add the following code in you custom theme's .theme file, replacing CUSTOM_THEME with your theme name (lowercase) and CUSTOM_THEME_HEADER_SEARCH_BLOCK with the block id of your custom block:

function CUSTOM_THEME_preprocess(&$variables, $hook) {
  if($hook == 'region' && $variables['region'] == 'header') {
    $block_search = \Drupal\block\Entity\Block::load('CUSTOM_THEME_HEADER_SEARCH_BLOCK'); // replace mytheme part with your theme name.
    if($block_search) {
      $variables['header__search'] = \Drupal::entityTypeManager()
      ->getViewBuilder('block')
      ->view($block_search);
    }
  }
}

About

StoryBookJS Based Drupal Theme

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •