18F/web-design-standards

View on GitHub
packages/usa-banner/src/usa-banner.twig

Summary

Maintainability
Test Coverage
{% set lock %}
  <span class="icon-lock">
    <svg xmlns="http://www.w3.org/2000/svg" width="52" height="64" viewBox="0 0 52 64" class="usa-banner__lock-image" role="img" aria-labelledby="banner-lock-description" focusable="false">
      <title id="banner-lock-title">Lock</title>
      <desc id="banner-lock-description">Locked padlock icon</desc>
      <path fill="#000000" fill-rule="evenodd" d="M26 0c10.493 0 19 8.507 19 19v9h3a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4h3v-9C7 8.507 15.507 0 26 0zm0 8c-5.979 0-10.843 4.77-10.996 10.712L15 19v9h22v-9c0-6.075-4.925-11-11-11z"/>
    </svg>
  </span>
{% endset %}

<section class="usa-banner" aria-label="{{ banner.aria_label }}">
  <div class="usa-accordion">
    <header class="usa-banner__header">
      <div class="usa-banner__inner">
        <div class="grid-col-auto">
          <img aria-hidden="true" class="usa-banner__header-flag" src="./img/us_flag_small.png" alt="">
        </div>
        <div class="grid-col-fill tablet:grid-col-auto" aria-hidden="true">
          <p class="usa-banner__header-text">{{ banner.text }}</p>
          <p class="usa-banner__header-action">{{ banner.action }}</p>
        </div>
        <button type="button" class="usa-accordion__button usa-banner__button" aria-expanded="false" aria-controls="{{ banner.id }}">
          <span class="usa-banner__button-text">{{ banner.action }}</span>
        </button>
      </div>
    </header>
    <div class="usa-banner__content usa-accordion__content" id="{{ banner.id }}">
      <div class="grid-row grid-gap-lg">
        <div class="usa-banner__guidance tablet:grid-col-6">
          <img class="usa-banner__icon usa-media-block__img" src="./img/icon-dot-gov.svg" role="img" alt="" aria-hidden="true">
          <div class="usa-media-block__body">
            {# Will cause error without trim because it doesn't know what to do with new lines #}
            <p><strong>{{ domain.heading }}</strong><br/>{{ domain.text | trim | raw }}</p>
          </div>
        </div>
        <div class="usa-banner__guidance tablet:grid-col-6">
          <img class="usa-banner__icon usa-media-block__img" src="./img/icon-https.svg" role="img" alt="" aria-hidden="true">
          <div class="usa-media-block__body">
            <p><strong>{{ https.heading }}</strong><br/>{{ https.pretext | trim | raw }} ({{ lock }}) {{ https.posttext | trim | raw }}</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>