<div class="action-bar">
<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": "#"
}
]
}
: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;
}
}
No notes defined.