<header class="detail-stage">
    <div class="detail-stage__image">
        <picture class="image image--cover" style="background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAABaADAAQAAAABAAAABQAAAABcYj7LAAAAFUlEQVQIHWP8V8PJgASYkNggJql8AHi/AY1z9PnwAAAAAElFTkSuQmCC)">
            <img class="image__img" src="https://bildermangel.de/1440x525/fe7c09/130f26.webp?text=1440x525" width="1440" height="450" alt="Das ist ein Platzhalter-Bild" loading="lazy" fetchpriority="high" />
        </picture>
    </div>

    <div class="detail-stage__inner">
        <div class="detail-stage__top">
            <div class="detail-stage__breadcrumb">
                <nav class="breadcrumb" aria-label="Deine aktuelle Position:">
                    <ul class="breadcrumb__list u-line-clamp">
                        <li class="breadcrumb__item"><a class="breadcrumb__link u-underline" href="#"><span class="breadcrumb__icon"><svg class="icon icon--home" viewBox="0 0 200 200" aria-hidden="true">
                                        <use xlink:href="/assets/icons/icons.3bafb6df0d.svg#home"></use>
                                    </svg></span><span class="breadcrumb__link-text u-hidden-visually">Startseite</span></a></li>
                        <li class="breadcrumb__item"><a class="breadcrumb__link u-underline" href="#"><span class="breadcrumb__link-text">Events</span></a></li>
                        <li class="breadcrumb__item"><a class="breadcrumb__link u-underline" aria-current="page"><span class="breadcrumb__link-text">Event XY</span></a></li>
                    </ul>

                    <script type="application/ld+json">
                        {
                            "@context": "https:\/\/schema.org",
                            "@type": "BreadcrumbList",
                            "itemListElement": [{
                                    "@type": "ListItem",
                                    "position": 1,
                                    "name": "Startseite",
                                    "item": "#"
                                },
                                {
                                    "@type": "ListItem",
                                    "position": 2,
                                    "name": "Events",
                                    "item": "#"
                                },
                                {
                                    "@type": "ListItem",
                                    "position": 3,
                                    "name": "Event XY",
                                    "item": "#"
                                }
                            ]
                        }
                    </script>
                </nav>
            </div>

            <div class="detail-stage__hint-boxes">
                <div class="detail-stage__hint-box">

                    <div class="hint-box u-inverted">
                        <span class="hint-box__label">
                            Ab Freitag </span>

                        <time class="hint-box__value" datetime="2022-04-27 02:00">
                            27.
                            <abbr title="April" class="hint-box__abbr">Apr.</abbr>
                            2022

                        </time>
                    </div>
                </div>
                <div class="detail-stage__hint-box">

                    <div class="hint-box">
                        <span class="hint-box__label">
                            Bewerben bis </span>

                        <time class="hint-box__value" datetime="2022-03-27 01:00">
                            27.
                            <abbr title="März" class="hint-box__abbr">März</abbr>
                            2022

                        </time>
                    </div>
                </div>
            </div>
        </div>

        <div class="detail-stage__content">
            <div class="detail-stage__content-block">
                <div class="detail-stage__headline">
                    <h2 class="headline headline--2"><span class="headline__text">Ein ganz normaler Event mit durchschnittlichen Infos</span></h2>
                </div>

                <div class="detail-stage__buttons">
                    <a class="button u-underline" href="#">Jetzt anmelden</a>
                    <a class="button button--outline u-underline" href="#">Kontakt</a>
                </div>
            </div>

            <dl class="detail-stage__details">
                <div class="detail-stage__detail">
                    <dt class="detail-stage__detail-label">Veranstalter</dt>

                    <dd class="detail-stage__detail-text">Freshfields Bruckhaus Deringer</dd>
                </div>
                <div class="detail-stage__detail">
                    <dt class="detail-stage__detail-label">Termin</dt>

                    <dd class="detail-stage__detail-text">Ab Freitag 27. April</dd>
                </div>
                <div class="detail-stage__detail">
                    <dt class="detail-stage__detail-label">Ort</dt>

                    <dd class="detail-stage__detail-text">
                        <p class="paragraph">Schloss Buchenau<br>Hermann-Lietz-Str. 13<br>36132 Eiterfeld - Buchenau<br><a class="link link--external" href="https://maps.google.com/" rel="noopener noreferrer" target="_blank"><span class="link__icon"><svg class="icon icon--external-link" viewBox="0 0 200 200" aria-hidden="true">
                                        <use xlink:href="/assets/icons/icons.3bafb6df0d.svg#external-link"></use>
                                    </svg>&#65279;</span><span class="link__text u-underline">In Maps anzeigen</span></a></p>
                    </dd>
                </div>
            </dl>
        </div>
    </div>
</header>
{% set level = level ??? 2 -%}

<header {{ html_attributes({
  id: id ?? false,
  class: 'detail-stage',
}, attrs ?? {}) }}>
  <div class="detail-stage__image">
    {%- if image|default %}
      {% include '@image' with image | merge({
        fetchpriority: 'high',
        cover: true,
      }) only %}
    {% endif -%}
  </div>

  <div class="detail-stage__inner">
    <div class="detail-stage__top">
      {% if breadcrumb|default %}
        <div class="detail-stage__breadcrumb">
          {% include '@breadcrumb' with breadcrumb only %}
        </div>
      {% endif %}

      {% if logo|default %}
        <img {{ html_attributes({
          src: logo.src,
          srcset: logo.srcset ?? false,
          width: logo.width ?? false,
          height: logo.height ?? false,
          class: 'detail-stage__logo',
          loading: 'lazy',
          role: 'presentation',
          alt: '',
        }) }}>
      {% endif %}

      {% if hintBoxes|default %}
        <div class="detail-stage__hint-boxes">
          {% for hintBox in hintBoxes|default %}
            <div class="detail-stage__hint-box">
              {% include '@hint-box' with hintBox | merge({
                inverted: loop.index is odd,
              }) only %}
            </div>
          {% endfor %}
        </div>
      {% endif %}
    </div>

    <div class="detail-stage__content">
      <div class="detail-stage__content-block">
        {% if headline|default %}
          <div class="detail-stage__headline">
            {% include '@headline' with headline | merge({
              level: level,
              size: 2,
            }) only %}
          </div>
        {% endif %}

        {% if text|default %}
          <div class="detail-stage__text">
            {{ text | componentize }}
          </div>
        {% endif %}

        {% if buttons|default %}
          <div class="detail-stage__buttons">
            {% for button in buttons %}
              {% include '@button' with button | merge({
                outline: not loop.first,
              }) only %}
            {% endfor %}
          </div>
        {% endif %}
      </div>

      {% if details|default %}
        <dl class="detail-stage__details">
          {% for detail in details %}
            <div class="detail-stage__detail">
              <dt class="detail-stage__detail-label">
                {{- detail.label -}}
              </dt>

              <dd class="detail-stage__detail-text">
                {{- detail.text | componentize -}}
              </dd>
            </div>
          {% endfor %}
        </dl>
      {% endif %}
    </div>
  </div>
</header>
{
  "image": {
    "src": "https://bildermangel.de/1440x525/fe7c09/130f26.webp?text=1440x525",
    "width": 1440,
    "height": 450,
    "alt": "Das ist ein Platzhalter-Bild",
    "placeholder": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAABaADAAQAAAABAAAABQAAAABcYj7LAAAAFUlEQVQIHWP8V8PJgASYkNggJql8AHi/AY1z9PnwAAAAAElFTkSuQmCC"
  },
  "hintBoxes": [
    {
      "type": "date",
      "label": "Ab Freitag",
      "value": "2022-04-27T00:00:00.000Z"
    },
    {
      "type": "date",
      "label": "Bewerben bis",
      "value": "2022-03-27T00:00:00.000Z"
    }
  ],
  "breadcrumb": {
    "items": [
      {
        "text": "Startseite",
        "link": "#"
      },
      {
        "text": "Events",
        "link": "#"
      },
      {
        "text": "Event XY",
        "link": "#"
      }
    ]
  },
  "headline": {
    "text": "Ein ganz normaler Event mit durchschnittlichen Infos"
  },
  "buttons": [
    {
      "text": "Jetzt anmelden",
      "link": "#"
    },
    {
      "text": "Kontakt",
      "link": "#"
    }
  ],
  "details": [
    {
      "label": "Veranstalter",
      "text": "Freshfields Bruckhaus Deringer"
    },
    {
      "label": "Termin",
      "text": "Ab Freitag 27. April"
    },
    {
      "label": "Ort",
      "text": "<p>Schloss Buchenau<br>Hermann-Lietz-Str. 13<br>36132 Eiterfeld - Buchenau<br><a href=\"https://maps.google.com/\" target=\"_blank\">In Maps anzeigen</a></p>\n"
    }
  ]
}
  • Content:
    @use 'sass:map';
    
    :root {
      --detail-stage-background-color: transparent;
      --detail-stage-image-aspect-ratio: #{1440 / 440};
      --detail-stage-image-fallback-aspect-ratio: #{1440 / 250};
      --detail-stage-image-fallback-background-color: #{rgba(#000, 0.05)};
      --detail-stage-image-max-width: #{$inner-container-max-width};
    }
    
    .detail-stage {
      background-color: var(--detail-stage-background-color);
    }
    
    .detail-stage__image {
      aspect-ratio: var(--detail-stage-image-aspect-ratio);
      display: flex;
      flex-direction: column;
      margin-inline: auto;
      max-inline-size: var(--detail-stage-image-max-width);
    
      &:empty {
        aspect-ratio: var(--detail-stage-image-fallback-aspect-ratio);
        background-color: var(--detail-stage-image-fallback-background-color);
      }
    }
    
    .detail-stage__inner {
      position: relative;
    
      @include use-container();
    }
    
    .detail-stage__top {
      position: relative;
      z-index: 2;
    
      @include use-responsive-sizing(--detail-stage-top-height, (
        m: 8rem,
        l: 10rem,
      ));
    
      @include mq($from: m) {
        display: flex;
        margin-block-start: calc(var(--detail-stage-top-height) * -1);
      }
    }
    
    .detail-stage__breadcrumb {
      padding-block-start: 2rem;
    
      &::before {
        background-color: var(--detail-stage-background-color);
        block-size: 100%;
        content: '';
        inline-size: 100vw;
        inset-block: 0;
        inset-inline-start: -100vw;
        position: absolute;
      }
    
      @include mq($from: m) {
        align-items: center;
        background-color: var(--detail-stage-background-color);
        block-size: var(--detail-stage-top-height);
        display: flex;
        min-inline-size: 50%;
        padding-block-start: 0;
        padding-inline-end: calc(var(--gap) * 0.5);
      }
    
      @include mq($from: l) {
        flex-shrink: 0;
      }
    }
    
    .detail-stage__logo {
      block-size: 7.5rem;
      inline-size: auto;
      margin-block-start: 2rem;
    
      @include mq($from: m) {
        block-size: var(--detail-stage-top-height);
        margin-block-start: 0;
      }
    }
    
    .detail-stage__hint-boxes {
      display: flex;
    
      @include mq($until: m) {
        inset-block-start: 0;
        position: absolute;
        transform: translate(calc(var(--body-padding) * -1), -100%);
      }
    }
    
    .detail-stage__hint-box {
      &:nth-child(even) {
        --hint-box-background-color: var(--color-orange-light);
        --hint-box-text-color: var(--color-midnight);
      }
    
      @include use-responsive-sizing(--hint-box-font-size, (
        xs: 1.6rem,
        l: 1.8rem,
      ));
      @include use-responsive-sizing(--hint-box-height, (
        xs: 8rem,
        m: #{var(--detail-stage-top-height)},
      ));
      @include use-responsive-sizing(--hint-box-padding-inline, (
        xs: map.get($inner-container-padding, xs),
        s: map.get($inner-container-padding, s),
        m: map.get($gaps, m) * 0.5,
        l: map.get($gaps, l) * 0.5,
        xl: map.get($gaps, xl) * 0.5,
      ));
      @include use-responsive-sizing(--hint-box-min-width, (
        m: 17rem,
      ));
    }
    
    .detail-stage__content {
      display: grid;
      grid-auto-rows: auto;
    
      @include use-responsive-sizing(padding-block row-gap, responsive-map(xs 2.5rem, l 7.5rem));
      @include use-responsive-sizing(column-gap, $gaps);
      @include use-responsive-sizing(grid-template-columns, (xs: 1fr, m: 1fr 1fr));
    }
    
    .detail-stage__headline {
      @include use-responsive-sizing(margin-block-end, responsive-map(xs 2rem, xl 4rem));
    }
    
    .detail-stage__text {
      font-size: 2.2rem;
      font-weight: 600;
      line-height: var(--line-height-default);
      margin-block-start: 3rem;
    }
    
    .detail-stage__buttons {
      display: flex;
      flex-wrap: wrap;
      gap: 2rem;
    }
    
    .detail-stage__details {
      font-size: 1.3rem;
      gap: 3rem;
      line-height: 1.7;
      margin-block: -1rem;
    
      @include mq($from: s) {
        column-count: 2;
      }
    }
    
    .detail-stage__detail {
      break-inside: avoid;
      padding-block: 1rem;
    }
    
    .detail-stage__detail-label {
      display: block;
      font-weight: var(--font-weight-bold);
      text-transform: uppercase;
    }
    
    .detail-stage__detail-text {
      > * + * {
        margin-block-start: 1rem;
      }
    }
    
  • URL: /components/raw/detail-stage/detail-stage.scss
  • Filesystem Path: src/components/3-organisms/detail-stage/detail-stage.scss
  • Size: 3.9 KB

No notes defined.