<div class="action-bar action-bar--inline">
    <ul class="action-bar__buttons" role="list">
        <li class="action-bar__item">
            <button class="action-bar__button js-share" data-title="Das ist ein Testtitel">
                <svg class="icon icon--share action-bar__icon" viewBox="0 0 200 200" aria-hidden="true">
                    <use xlink:href="/assets/icons/icons.3bafb6df0d.svg#share"></use>
                </svg>
                <span class="action-bar__text u-underline">Teilen</span>

                <span class="action-bar__loading">
                    <div class="loading"></div>
                </span>
            </button>
        </li>
        <li class="action-bar__item">
            <button class="action-bar__button">
                <svg class="icon icon--bookmark-outline action-bar__icon" viewBox="0 0 200 200" aria-hidden="true">
                    <use xlink:href="/assets/icons/icons.3bafb6df0d.svg#bookmark-outline"></use>
                </svg>
                <span class="action-bar__text u-underline">Merken</span>

                <span class="action-bar__loading">
                    <div class="loading"></div>
                </span>
            </button>
        </li>
        <li class="action-bar__item">
            <a class="action-bar__button" href="#">
                <svg class="icon icon--xing action-bar__icon" viewBox="0 0 200 200" aria-hidden="true">
                    <use xlink:href="/assets/icons/icons.3bafb6df0d.svg#xing"></use>
                </svg>
                <span class="action-bar__text u-underline">Kalender</span>

                <span class="action-bar__loading">
                    <div class="loading"></div>
                </span>
            </a>
        </li>
    </ul>
</div>
<div {{ html_attributes({
  id: id ?? false,
  class: {
    'action-bar': true,
    'action-bar--inline': inline ?? false,
  },
}, attrs ?? {}) }}>
  <ul class="action-bar__buttons" role="list">
    {% for item in items %}
      {% set link = item.link ?? false %}
      {% set itemTag = link ? 'a' : 'button' -%}

      <li class="action-bar__item">
        <{{ itemTag }} {{ html_attributes({
          class: 'action-bar__button',
          title: item.title ?? false,
          href: link,
          'aria-pressed': item.pressed|default ? 'true',
        }, link_attributes(link), item.attrs ?? {}) }}>
          {% include '@icon' with {
            class: 'action-bar__icon',
            icon: item.icon
          } only %}

          <span class="action-bar__text u-underline">
            {{- item.text -}}
          </span>

          <span class="action-bar__loading">
            {% include '@loading' with {} only %}
          </span>
        </{{ itemTag }}>
      </li>
    {% endfor %}
  </ul>
</div>
{
  "items": [
    {
      "icon": "share",
      "text": "Teilen",
      "attrs": {
        "class": "js-share",
        "data-title": "Das ist ein Testtitel"
      }
    },
    {
      "icon": "bookmark-outline",
      "text": "Merken"
    },
    {
      "icon": "xing",
      "text": "Kalender",
      "link": "#"
    }
  ],
  "inline": true
}
  • Content:
    :root {
      --action-bar-button-padding: 1rem;
      --action-bar-button-width: 100%;
    }
    
    .action-bar__buttons {
      display: flex;
      flex-wrap: wrap;
      list-style: none;
    
      .action-bar:not(.action-bar--inline) & {
        @include use-responsive-sizing(flex-direction, (xs: row, m: column));
      }
    
      @include use-responsive-sizing(gap, (xs: 0.5rem 1.5rem, m: 1.5rem));
      @include use-responsive-sizing(align-items, (xs: center, m: stretch));
    }
    
    .action-bar__button {
      align-items: center;
      border: 1px solid var(--color-grey-x-light);
      border-radius: 0.5rem;
      color: var(--color-midnight);
      display: flex;
      gap: 1rem;
      inline-size: var(--action-bar-button-width);
      overflow: hidden;
      padding: var(--action-bar-button-padding);
      position: relative;
      text-align: center;
      transition-property: background-color, color;
    
      .action-bar--inline & {
        background-color: var(--color-grey-x-light);
        block-size: var(--action-bar-button-block-size, 4rem);
        border-color: transparent;
        border-radius: 50%;
        inline-size: var(--action-bar-button-inline-size, 4rem);
    
        &:hover,
        &:focus-visible:not(.u-invisible-focus) {
          background-color: var(--color-midnight);
          color: var(--color-white);
        }
    
        &:is([aria-pressed='true']) {
          background-color: var(--color-midnight);
          color: var(--color-white);
    
          &:hover,
          &:focus-visible:not(.u-invisible-focus) {
            background-color: var(--color-grey-x-light);
            color: var(--color-midnight);
          }
        }
      }
    
      &.is-loading {
        pointer-events: none;
      }
    
      @include use-responsive-sizing(flex-direction, (xs: row, m: column));
    }
    
    .action-bar__icon {
      font-size: 2rem;
    }
    
    .action-bar__text {
      --underline-height: 2px;
    
      font-size: 1.4rem;
      font-weight: var(--font-weight-bold);
    
      .action-bar--inline & {
        display: none;
      }
    }
    
    .action-bar__loading {
      --loading-color: var(--color-grey-dark);
      --loading-size: 3rem;
      --loading-stroke-width: 0.5rem;
    
      align-items: center;
      background-color: rgba(#fff, 0.9);
      display: flex;
      flex-direction: column;
      inset: 0;
      justify-content: center;
      position: absolute;
    
      .action-bar--inline & {
        --loading-size: 1.6rem;
      }
    
      .action-bar__button:not(.is-loading) & {
        display: none;
      }
    }
    
  • URL: /components/raw/action-bar/action-bar.scss
  • Filesystem Path: src/components/2-molecules/action-bar/action-bar.scss
  • Size: 2.2 KB

No notes defined.