<article class="rtds-card rtds-card--event is-card-fullclickable rtds-group/card">
<picture class="rtds-card__image-wrapper
">
<img class="rtds-card__image" alt="" src="../../images/card-image.jpg" />
</picture>
<div class="rtds-card__content">
<div class="rtds-flex rtds-flex-col rtds-gap-2 rtds-order-2">
<div class="rtds-card__heading">
<h3 class="rtds-card__title">
<a class="group-hover/card:rtds-underline" href="">
Nunc aliquam phasellus molestie blandit. Nisi, amet, id maecenas diam
</a>
</h3>
</div>
<small class="rtds-card__address">
<svg class="rtds-icon rtds-fill-current rtds-w-4 rtds-h-4" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--map-pin" />
</svg>
<span class="rtds-sr-only">Luogo:</span> Via Lorem Ipsum, Firenze
</small>
<div class="rtds-card__categories">
<a href="#" class="rtds-category rtds-category--sm">
Categoria
</a>
</div>
</div>
<div class="rtds-card__date">
<time class="sm:rtds-grid sm:rtds-gap-0.5 sm:rtds-justify-end sm:rtds-text-right" datetime="2023-06-25/2023-06-30"><span class="rtds-content-01 rtds-text-lg rtds-leading-none rtds-italic rtds-font-extrabold">25/30 giugno</span> <span class="rtds-text-base">2023</span></time>
</div>
</div>
</article>
{% extends "@card" %}
{% block classes %}{{ super() }} rtds-card--event{% endblock classes %}
{% block contentWrapperStart %}
<div class="rtds-flex rtds-flex-col rtds-gap-2 rtds-order-2">
{% endblock contentWrapperStart %}
{% block contentWrapperEnd %}
</div>
{% endblock contentWrapperEnd %}
{% block metadatas %}
{% endblock metadatas %}
{% block content %}
{% endblock content %}
{% block place %}
<small class="rtds-card__address">
{% render '@icon', {id: 'solid--map-pin', size: 'rtds-w-4 rtds-h-4'}, true %}<span class="rtds-sr-only">Luogo:</span> Via Lorem Ipsum, Firenze
</small>
{% endblock place %}
{% block additionalContent %}
{% block date %}
{% if date %}
<div class="rtds-card__date">
<time class="sm:rtds-grid sm:rtds-gap-0.5 sm:rtds-justify-end sm:rtds-text-right" datetime="2023-06-25/2023-06-30"><span class="rtds-content-01 rtds-text-lg rtds-leading-none rtds-italic rtds-font-extrabold">25/30 giugno</span> <span class="rtds-text-base">2023</span></time>
</div>
{% endif %}
{% endblock date %}
{% endblock additionalContent %}
{
"article": true,
"categoryText": "Categoria",
"heading": "Nunc aliquam phasellus molestie blandit. Nisi, amet, id maecenas diam",
"text": "Testo",
"excerpt": "Neque blandit pellentesque nunc sed amet. Nisl, semper sed aliquam amet proin purus augue et.",
"ctaIcon": "mini--chevron-right",
"ctaLinkLabel": "Leggi di più",
"categoryVariant": "--sm",
"img": {
"path": "/images/card-image.jpg",
"alt": ""
},
"category": true,
"date": true,
"thumb": true,
"fullClick": true
}
/**
* CARD
*
*/
/* BASE */
.rtds-card {
gap: var(--spacing-3);
border-radius: 0.25rem;
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
padding: var(--spacing-2);
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
@media (min-width: 768px) {
.rtds-card {
gap: var(--spacing-4);
}
}
.rtds-card:where(:not(.rtds-card--horizontal)) {
flex-direction: column;
justify-content: flex-start;
display: flex;
}
.rtds-card:where(.rtds-card--horizontal) {
align-items: flex-start;
display: grid;
}
@media (min-width: 640px) {
.rtds-card:where(.rtds-card--horizontal) {
align-content: stretch;
align-items: stretch;
}
}
/* CARD IN GRID COL */
.rtds-col .rtds-card {
height: 100%;
}
.is-card-fullclickable {
cursor: pointer;
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.is-card-fullclickable:hover {
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.rtds-card__heading {
flex-direction: column-reverse;
justify-content: flex-end;
display: flex;
gap: var(--spacing-2);
}
.rtds-card__image {
aspect-ratio: 16 / 9;
width: 100%;
-o-object-fit: cover;
object-fit: cover;
}
.rtds-card__icon {
height: var(--spacing-12);
width: var(--spacing-12);
background-color: transparent;
color: var(--color-content-02);
display: flex;
justify-content: center;
align-items: center;
}
:where(.rtds-card__icon) .rtds-icon {
height: var(--spacing-12);
width: var(--spacing-12);
}
.rtds-card__categories {
margin-top: auto;
flex-wrap: wrap;
padding-top: var(--spacing-4);
display: flex;
gap: var(--spacing-2);
}
.rtds-card__content {
flex: 1 1 0%;
padding-bottom: var(--spacing-4);
padding-top: var(--spacing-4);
display: grid;
gap: var(--spacing-2);
padding-left: var(--spacing-4);
padding-right: var(--spacing-4);
}
:where(.rtds-card--horizontal) .rtds-card__content,
:where(.rtds-card--news-small) .rtds-card__content {
align-content: flex-start;
}
@media (min-width: 640px) {
:where(.rtds-card--horizontal) .rtds-card__content,
:where(.rtds-card--news-small) .rtds-card__content {
display: flex;
flex-direction: column;
justify-content: flex-start;
padding-top: var(--spacing-2);
padding-bottom: var(--spacing-2);
}
}
:where(.rtds-card--has-footer) .rtds-card__content {
padding-bottom: var(--spacing-1);
}
@media (min-width: 768px) {
:where(.rtds-card--news-small:not(.rtds-card--horizontal)) .rtds-card__content {
padding-top: var(--spacing-2);
}
}
:where(.rtds-card--sito-tematico) .rtds-card__content {
padding-left: var(--spacing-2);
padding-right: var(--spacing-2);
padding-top: var(--spacing-3);
padding-bottom: var(--spacing-3);
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__content,
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__content {
padding-left: var(--spacing-3);
padding-right: var(--spacing-3);
}
@media (min-width: 768px) {
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__content {
padding-left: var(--spacing-4);
padding-right: var(--spacing-4);
padding-top: var(--spacing-4);
padding-bottom: var(--spacing-4);
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__content {
padding-left: var(--spacing-4);
padding-right: var(--spacing-4);
}
}
:where(.rtds-card--horizontal) .rtds-card__content {
padding-left: var(--spacing-2);
padding-right: var(--spacing-2);
}
:where(.rtds-card--related-info) .rtds-card__content {
padding: var(--spacing-5);
}
@media (min-width: 640px) {
:where(.rtds-card--related-info) .rtds-card__content {
padding: var(--spacing-4);
}
}
:where(.rtds-card--related-info-l) .rtds-card__content {
padding: var(--spacing-5);
}
@media (min-width: 640px) {
:where(.rtds-card--related-info-l) .rtds-card__content {
justify-content: center;
padding: var(--spacing-6);
}
}
:where(.rtds-card--video) .rtds-card__content {
gap: var(--spacing-2-5);
padding-left: var(--spacing-2);
padding-right: var(--spacing-2);
padding-bottom: var(--spacing-2);
}
@media (min-width: 768px) {
:where(.rtds-card--video) .rtds-card__content {
gap: var(--spacing-3);
padding-left: var(--spacing-3);
padding-right: var(--spacing-3);
padding-bottom: var(--spacing-3);
}
}
.rtds-card--information .rtds-card__content {
flex-direction: column;
gap: var(--spacing-4);
padding: var(--spacing-0);
display: flex;
}
@media (min-width: 1024px) {
.rtds-card--information .rtds-card__content {
gap: var(--spacing-5);
}
}
.rtds-card__description {
font-size: var(--fontsize-text-sm);
color: var(--color-content-03);
}
.rtds-card__metadata {
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
display: flex;
gap: var(--spacing-1);
}
.rtds-card__tags {
margin-top: auto;
flex-wrap: wrap;
gap: var(--spacing-1-5);
display: flex;
}
.rtds-card__date {
font-size: var(--fontsize-text-sm);
color: var(--color-content-03);
}
:where(.rtds-card--event) .rtds-card__date {
order: 1;
justify-self: start;
border-bottom-width: 1px;
padding-bottom: var(--spacing-3);
border-color: var(--color-border-gray-01);
}
@media (min-width: 640px) {
:where(.rtds-card--event) .rtds-card__date {
width: 100%;
border-right-width: 1px;
border-bottom-width: 0px;
padding-right: var(--spacing-4);
padding-bottom: var(--spacing-0);
}
}
:where(.rtds-card--news-small) .rtds-card__date {
font-size: var(--fontsize-text-xs);
}
@media (min-width: 640px) {
:where(.rtds-card--event-small) .rtds-card__date {
border-right-width: 0px;
}
}
.rtds-card__address {
display: flex;
gap: var(--spacing-1);
}
:where(.rtds-card__address) .rtds-icon {
color: var(--color-content-category);
flex: none;
}
:where(.rtds-card--news-small) .rtds-card__description,
:where(.rtds-card--information) .rtds-card__description {
font-size: var(--fontsize-text-sm);
}
.rtds-card__footer {
margin-top: auto;
padding-left: var(--spacing-3);
padding-right: var(--spacing-3);
grid-area: footer;
}
/* VARIANTS */
/* MANAGE SIDE IMAGE */
.rtds-card--horizontal {
grid-template-areas: 'thumb''content';
display: grid;
}
@media (min-width: 640px) {
.rtds-card--horizontal-left {
grid-template-columns: 1fr 1fr;
grid-template-areas: 'thumb content';
}
.rtds-card--horizontal-right {
grid-template-columns: 1fr 1fr;
grid-template-areas: 'content thumb';
}
.rtds-card--news-small:where(.rtds-card--horizontal-left) {
grid-template-columns: 2fr 3fr;
grid-template-areas: 'thumb content';
}
.rtds-card--news-image-square:where(.rtds-card--horizontal-left) {
grid-template-columns: 1fr 3fr;
grid-template-areas: 'thumb content';
}
}
.rtds-card--has-footer {
grid-template-areas: 'thumb''content''footer';
}
@media (min-width: 640px) {
.rtds-card--has-footer {
grid-template-areas: 'thumb content''footer footer';
}
}
.rtds-card--news:where(.rtds-card--horizontal-left) .rtds-card__footer {
padding-left: var(--spacing-3);
padding-right: var(--spacing-3);
}
@media (min-width: 640px) {
.rtds-card--news:where(.rtds-card--horizontal-left) .rtds-card__footer {
padding-left: var(--spacing-0);
padding-right: var(--spacing-0);
}
.rtds-card--information-left-icon {
grid-template-columns: max-content 1fr;
grid-template-areas: 'thumb content';
}
.rtds-card--information-right-icon {
grid-template-columns: 1fr max-content;
grid-template-areas: 'content thumb';
}
}
:where(.rtds-card--horizontal) .rtds-card__image-wrapper,
:where(.rtds-card--horizontal) .rtds-card__icon {
grid-area: thumb;
}
:where(.rtds-card--horizontal) .rtds-card__content {
grid-area: content;
}
:where(.rtds-card--horizontal:not(.rtds-card--news-image-left-fullwidth)) .rtds-card__image-wrapper {
align-self: flex-start;
}
/* Card NEWS */
.rtds-card--news,
.rtds-card--event {
background-color: var(--color-background-01);
}
:where(.rtds-card--news-no-thumb) .rtds-card__content {
padding-top: var(--spacing-4);
}
:where(.rtds-card--news:not(.rtds-card--news-small)) .rtds-card__description {
font-size: var(--fontsize-text-sm);
}
@media (min-width: 768px) {
:where(.rtds-card--news:not(.rtds-card--news-small)) .rtds-card__description {
font-size: var(--fontsize-text-base);
}
}
body:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop,
:root:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop {
position: fixed;
right: var(--spacing-0);
bottom: var(--spacing-0);
left: var(--spacing-0);
z-index: 10;
}
@media (min-width: 1024px) {
body:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop,
:root:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop {
display: none;
}
}
body:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop,
:root:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop {
position: fixed;
right: var(--spacing-0);
bottom: var(--spacing-0);
left: var(--spacing-0);
z-index: 10;
}
@media (min-width: 1024px) {
body:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop,
:root:where(.rtds-card--news) .rtds-card__image-wrapper .rtds-primary-navigation__backdrop {
display: none;
}
}
:where(.rtds-card--news) .rtds-card__image-wrapper {
border-radius: 0.25rem;
overflow: hidden;
}
@media (min-width: 640px) {
:where(.rtds-card--news-left) .rtds-card__image-wrapper,
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__image-wrapper,
:where(.rtds-card--news-small) .rtds-card__image-wrapper,
:where(.rtds-card--related-info-l) .rtds-card__image-wrapper {
min-width: 80px;
}
}
.rtds-card--news-small,
.rtds-card--news-left {
gap: var(--spacing-3);
}
@media (min-width: 768px) {
.rtds-card--news-small,
.rtds-card--news-left {
gap: var(--spacing-2);
}
}
.rtds-card--news-image-fullwidth,
.rtds-card--news-image-left-fullwidth {
gap: var(--spacing-3);
padding: var(--spacing-0);
}
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__image-wrapper {
border-radius: 0px;
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__image-wrapper {
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
}
.rtds-card--information {
align-items: stretch;
border-radius: 0.25rem;
padding: var(--spacing-4);
}
@media (min-width: 768px) {
.rtds-card--information {
padding: var(--spacing-6);
}
}
.rtds-card--sito-tematico {
gap: var(--spacing-0);
padding: var(--spacing-0);
}
:where(.rtds-card--sito-tematico) .rtds-card__image-wrapper {
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
:where(.rtds-card--sito-tematico) .rtds-card__image {
aspect-ratio: 3 / 1;
}
:where(.rtds-card--related-info) .rtds-card__image {
aspect-ratio: 16 / 9;
height: 100%;
}
:where(.rtds-card--news-image-square) .rtds-card__image {
aspect-ratio: 1 / 1;
}
:where(.rtds-card--sito-tematico) .rtds-card__logo {
margin-right: var(--spacing-4);
width: var(--spacing-6);
height: var(--spacing-6);
}
/* Card INFORMATION */
.rtds-card--information-02 {
padding: var(--spacing-4);
background-color: var(--color-background-01);
}
@media (min-width: 768px) {
.rtds-card--information-02 {
padding: var(--spacing-6);
}
}
:where(.rtds-card--information-02) .rtds-card__description > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(var(--spacing-3) * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(var(--spacing-3) * var(--tw-space-y-reverse));
}
:where(.rtds-card--information-02) .rtds-card__description {
font-size: var(--fontsize-text-sm);
}
@media (min-width: 768px) {
:where(.rtds-card--information-02) .rtds-card__description > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(var(--spacing-4) * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(var(--spacing-4) * var(--tw-space-y-reverse));
}
:where(.rtds-card--information-02) .rtds-card__description {
font-size: var(--fontsize-text-base);
}
}
:where(.rtds-card--information-02) .rtds-card__content {
gap: var(--spacing-4);
padding: var(--spacing-0);
}
:where(.rtds-card--information-02) .rtds-card__date {
display: block;
font-size: var(--fontsize-text-sm);
font-weight: 700;
}
/* TITLE */
.rtds-card__title {
font-size: var(--fontsize-text-lg);
line-height: 1.25;
font-weight: 700;
}
@media (min-width: 1024px) {
.rtds-card__title {
font-size: var(--fontsize-text-xl);
}
}
.rtds-card__title a:hover {
text-decoration-line: underline;
}
:where(.rtds-card__title) a {
display: inline-block;
}
:where(.rtds-card__title) :where(.rtds-icon:not(.rtds-btn .rtds-icon)) {
margin-left: auto;
color: var(--color-link-primary);
width: var(--spacing-4);
height: var(--spacing-4);
}
@media (min-width: 768px) {
:where(.rtds-card__title) :where(.rtds-icon:not(.rtds-btn .rtds-icon)) {
height: var(--spacing-5);
width: var(--spacing-5);
}
}
:where(.rtds-card--news-small) .rtds-card__title {
font-size: var(--fontsize-text-base);
}
:where(.rtds-card--event) .rtds-card__heading {
gap: var(--spacing-3);
}
:where(.rtds-card--event) .rtds-card__title {
font-size: var(--fontsize-text-lg);
line-height: 1.25;
}
:where(.rtds-card--information) .rtds-card__title {
font-size: var(--fontsize-text-xl);
color: var(--color-content-02);
}
:where(.rtds-card--information-02) .rtds-card__title {
font-size: var(--fontsize-text-xl);
color: var(--color-content-01);
}
/* .rtds-card--widget .rtds-card__title {
@apply rtds-content-01 rtds-text-2xl;
} */
:where(.rtds-card--sito-tematico) .rtds-card__title {
font-size: var(--fontsize-text-sm);
}
:where(.rtds-card--sito-tematico-l) .rtds-card__title {
font-size: var(--fontsize-text-sm);
}
@media (min-width: 640px) {
:where(.rtds-card--sito-tematico-l) .rtds-card__title {
font-size: var(--fontsize-text-base);
}
}
@media (min-width: 1024px) {
:where(.rtds-card--sito-tematico-l) .rtds-card__title {
font-size: var(--fontsize-text-lg);
}
}
@media (min-width: 1280px) {
:where(.rtds-card--sito-tematico-l) .rtds-card__title {
font-size: var(--fontsize-text-xl);
}
}
:where(.rtds-card--related-info) .rtds-card__title {
font-size: var(--fontsize-text-lg);
}
@media (min-width: 640px) {
:where(.rtds-card--related-info) .rtds-card__title {
font-size: var(--fontsize-text-base);
}
}
:where(.rtds-card--related-info-l) .rtds-card__title {
font-size: var(--fontsize-text-lg);
}
@media (min-width: 640px) {
:where(.rtds-card--related-info-l) .rtds-card__title {
font-size: var(--fontsize-text-xl);
}
}
:where(.rtds-card--persona) .rtds-card__title {
font-size: var(--fontsize-text-base);
}
@media (min-width: 768px) {
:where(.rtds-card--persona) .rtds-card__title {
font-size: var(--fontsize-text-lg);
}
}
/* CARD EVENT */
.rtds-card--event {
padding: var(--spacing-0);
}
:where(.rtds-card--event:not(.rtds-card--event-small)) {
align-content: flex-start;
}
:where(.rtds-card--event) .rtds-card__image-wrapper {
border-radius: 0.25rem;
}
:where(.rtds-card--event) .rtds-card__content {
gap: var(--spacing-2);
}
@media (min-width: 640px) {
:where(.rtds-card--event:not(.rtds-card--event-small)) .rtds-card__content {
display: grid;
grid-template-columns: 1fr 2fr;
gap: var(--spacing-4);
}
}
:where(.rtds-card--event-small) .rtds-card__content {
grid-template-rows: auto 1fr;
}
@media (min-width: 640px) {
:where(.rtds-card--event-no-date) .rtds-card__content {
grid-template-columns: repeat(1, minmax(0, 1fr));
}
}
/* CARD PERSONA */
.rtds-card--persona {
padding: var(--spacing-4);
background-color: var(--color-background-01);
}
:where(.rtds-card--persona) .rtds-card__content {
padding: var(--spacing-0);
}
.rtds-card__user-role {
font-size: var(--fontsize-text-xs);
text-transform: uppercase;
color: var(--color-content-03);
}
@media (min-width: 768px) {
.rtds-card__user-role {
font-size: var(--fontsize-text-sm);
}
}
:where(.rtds-card--persona-complete) .rtds-card__heading {
flex-direction: row;
justify-content: flex-start;
}
/* Action link */
:where(.is-card-fullclickable) .rtds-card__action-link:hover {
text-decoration-line: none;
}
/* Action menu */
.rtds-card__action-menu {
position: relative;
justify-content: flex-end;
align-self: flex-start;
display: flex;
}
.rtds-card__action-menu__trigger {
height: var(--spacing-10);
width: var(--spacing-10);
color: var(--color-content-01);
}
.rtds-card__action-menu__trigger[aria-expanded="true"] {
color: var(--color-content-inverse);
background-color: var(--color-background-08);
}
.rtds-card__action-menu-list {
position: absolute;
right: var(--spacing-0);
top: var(--spacing-10);
width: 25ch;
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.rtds-card__action-menu-list-item {
border-style: none;
display: flex;
}
.rtds-card__action-menu-list-item-action {
gap: var(--spacing-0-5);
font-size: var(--fontsize-text-sm);
}
.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon),.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-square) {
width: var(--spacing-6);
height: var(--spacing-6);
}
.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-right),.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-left) {
gap: var(--spacing-1-5);
}
.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-right) {
padding-right: var(--spacing-3);
}
.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-left) {
padding-left: var(--spacing-3);
}
.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon),.rtds-card__action-menu-list-item-action:where(.rtds-btn--icon-square) {
padding-left: var(--spacing-0);
padding-right: var(--spacing-0);
}
.rtds-card__action-menu-list-item-action {
width: 100%;
justify-content: flex-start;
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
padding: var(--spacing-3);
font-size: var(--fontsize-text-sm);
font-weight: 500;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
color: var(--color-content-primary-dark);
display: flex;
align-items: center;
gap: var(--spacing-2);
}
.rtds-card__action-menu-list-item-action:hover {
text-decoration-line: underline;
background-color: var(--color-background-02);
}
.rtds-card__action-menu-list-item-action:focus {
background-color: var(--color-background-02);
}
/* USER AVATAR */
body.rtds-card__user-avatar .rtds-primary-navigation__backdrop,
:root.rtds-card__user-avatar .rtds-primary-navigation__backdrop {
position: fixed;
right: var(--spacing-0);
bottom: var(--spacing-0);
left: var(--spacing-0);
z-index: 10;
}
@media (min-width: 1024px) {
body.rtds-card__user-avatar .rtds-primary-navigation__backdrop,
:root.rtds-card__user-avatar .rtds-primary-navigation__backdrop {
display: none;
}
}
body.rtds-card__user-avatar .rtds-primary-navigation__backdrop,
:root.rtds-card__user-avatar .rtds-primary-navigation__backdrop {
position: fixed;
right: var(--spacing-0);
bottom: var(--spacing-0);
left: var(--spacing-0);
z-index: 10;
}
@media (min-width: 1024px) {
body.rtds-card__user-avatar .rtds-primary-navigation__backdrop,
:root.rtds-card__user-avatar .rtds-primary-navigation__backdrop {
display: none;
}
}
.rtds-card__user-avatar {
height: var(--spacing-14);
width: var(--spacing-14);
border-radius: 9999px;
overflow: hidden;
flex: none;
}
.rtds-card__user-avatar img {
height: 100%;
width: 100%;
-o-object-fit: cover;
object-fit: cover;
-o-object-position: center;
object-position: center;
}
/* CARD GUIDA */
.rtds-card--guida {
background-color: var(--color-background-01);
border-color: var(--color-border-gray-01);
border-width: 1px;
}
:where(.rtds-card--guida) .rtds-card__title {
font-size: var(--fontsize-text-lg);
}
@media (min-width: 768px) {
:where(.rtds-card--guida) .rtds-card__title {
font-size: var(--fontsize-text-xl);
}
}
@media (min-width: 1024px) {
:where(.rtds-card--guida) .rtds-card__title {
font-size: var(--fontsize-text-2xl);
}
}
:where(.rtds-card--guida) .rtds-card__content {
gap: var(--spacing-4);
padding: var(--spacing-4);
}
@media (min-width: 768px) {
:where(.rtds-card--guida) .rtds-card__content {
gap: var(--spacing-6);
padding: var(--spacing-5);
}
}
@media (min-width: 1024px) {
:where(.rtds-card--guida) .rtds-card__content {
padding: var(--spacing-6);
}
}
:where(.rtds-card--guida) .rtds-card__description {
display: flex;
gap: var(--spacing-2);
}
@media (min-width: 768px) {
:where(.rtds-card--guida) .rtds-card__description {
gap: var(--spacing-2-5);
}
}
/**
* CARD
*
*/
@layer components {
/* BASE */
.rtds-card {
@apply rtds-gap-3 md:rtds-gap-4 rtds-p-2 rtds-bg-white rtds-shadow-md rtds-rounded;
}
.rtds-card:where(:not(.rtds-card--horizontal)) {
@apply rtds-flex rtds-flex-col rtds-justify-start;
}
.rtds-card:where(.rtds-card--horizontal) {
@apply rtds-grid rtds-items-start sm:rtds-content-stretch sm:rtds-items-stretch;
}
/* CARD IN GRID COL */
.rtds-col .rtds-card {
@apply rtds-h-full;
}
.is-card-fullclickable {
@apply rtds-transition-all hover:rtds-shadow-lg rtds-cursor-pointer;
}
.rtds-card__heading {
@apply rtds-flex rtds-justify-end rtds-flex-col-reverse rtds-gap-2;
}
.rtds-card__image {
@apply rtds-w-full rtds-aspect-video rtds-object-cover;
}
.rtds-card__icon {
@apply rtds-flex rtds-items-center rtds-justify-center rtds-w-12 rtds-h-12 rtds-bg-transparent rtds-content-02;
}
:where(.rtds-card__icon) .rtds-icon {
@apply rtds-w-12 rtds-h-12;
}
.rtds-card__categories {
@apply rtds-mt-auto rtds-flex rtds-gap-2 rtds-pt-4 rtds-flex-wrap;
}
.rtds-card__content {
@apply rtds-grid rtds-gap-2 rtds-px-4 rtds-pb-4 rtds-pt-4 rtds-flex-1;
}
:where(.rtds-card--horizontal) .rtds-card__content,
:where(.rtds-card--news-small) .rtds-card__content {
@apply rtds-content-start sm:rtds-pt-2 sm:rtds-pb-2 sm:rtds-flex sm:rtds-flex-col sm:rtds-justify-start;
}
:where(.rtds-card--has-footer) .rtds-card__content {
@apply rtds-pb-1;
}
:where(.rtds-card--news-small:not(.rtds-card--horizontal)) .rtds-card__content {
@apply md:rtds-pt-2;
}
:where(.rtds-card--sito-tematico) .rtds-card__content {
@apply rtds-px-2 rtds-py-3;
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__content,
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__content {
@apply rtds-px-3;
}
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__content {
@apply md:rtds-px-4 md:rtds-py-4;
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__content {
@apply md:rtds-px-4;
}
:where(.rtds-card--horizontal) .rtds-card__content {
@apply rtds-px-2;
}
:where(.rtds-card--related-info) .rtds-card__content {
@apply rtds-p-5 sm:rtds-p-4;
}
:where(.rtds-card--related-info-l) .rtds-card__content {
@apply rtds-p-5 sm:rtds-p-6 sm:rtds-justify-center;
}
:where(.rtds-card--video) .rtds-card__content {
@apply rtds-gap-2.5 md:rtds-gap-3 rtds-px-2 md:rtds-px-3 rtds-pb-2 md:rtds-pb-3;
}
.rtds-card--information .rtds-card__content {
@apply rtds-p-0 rtds-flex rtds-flex-col rtds-gap-4 lg:rtds-gap-5;
}
.rtds-card__description {
@apply rtds-content-03 rtds-text-sm;
}
.rtds-card__metadata {
@apply rtds-flex rtds-items-baseline rtds-justify-between rtds-flex-wrap rtds-gap-1;
}
.rtds-card__tags {
@apply rtds-flex rtds-gap-1.5 rtds-flex-wrap rtds-mt-auto;
}
.rtds-card__date {
@apply rtds-text-sm rtds-content-03;
}
:where(.rtds-card--event) .rtds-card__date {
@apply rtds-order-1 rtds-justify-self-start sm:rtds-w-full rtds-pb-3 sm:rtds-pr-4 sm:rtds-pb-0 rtds-border-b sm:rtds-border-r sm:rtds-border-b-0 rtds-border-gray-01;
}
:where(.rtds-card--news-small) .rtds-card__date {
@apply rtds-text-xs;
}
:where(.rtds-card--event-small) .rtds-card__date {
@apply sm:rtds-border-r-0;
}
.rtds-card__address {
@apply rtds-flex rtds-gap-1;
}
:where(.rtds-card__address) .rtds-icon {
@apply rtds-flex-none rtds-content-category;
}
:where(.rtds-card--news-small) .rtds-card__description,
:where(.rtds-card--information) .rtds-card__description {
@apply rtds-text-sm;
}
.rtds-card__footer {
@apply rtds-mt-auto rtds-px-3 [grid-area:footer];
}
/* VARIANTS */
/* MANAGE SIDE IMAGE */
.rtds-card--horizontal {
@apply rtds-grid [grid-template-areas:'thumb''content'];
}
.rtds-card--horizontal-left {
@apply sm:rtds-grid-cols-[1fr_1fr] sm:[grid-template-areas:'thumb_content'];
}
.rtds-card--horizontal-right {
@apply sm:rtds-grid-cols-[1fr_1fr] sm:[grid-template-areas:'content_thumb'];
}
.rtds-card--news-small:where(.rtds-card--horizontal-left) {
@apply sm:rtds-grid-cols-[2fr_3fr] sm:[grid-template-areas:'thumb_content'];
}
.rtds-card--news-image-square:where(.rtds-card--horizontal-left) {
@apply sm:rtds-grid-cols-[1fr_3fr] sm:[grid-template-areas:'thumb_content'];
}
.rtds-card--has-footer {
@apply [grid-template-areas:'thumb''content''footer'] sm:[grid-template-areas:'thumb_content''footer_footer'];
}
.rtds-card--news:where(.rtds-card--horizontal-left) .rtds-card__footer {
@apply rtds-px-3 sm:rtds-px-0;
}
.rtds-card--information-left-icon {
@apply sm:rtds-grid-cols-[max-content_1fr] sm:[grid-template-areas:'thumb_content'];
}
.rtds-card--information-right-icon {
@apply sm:rtds-grid-cols-[1fr_max-content] sm:[grid-template-areas:'content_thumb'];
}
:where(.rtds-card--horizontal) .rtds-card__image-wrapper,
:where(.rtds-card--horizontal) .rtds-card__icon {
@apply [grid-area:thumb];
}
:where(.rtds-card--horizontal) .rtds-card__content {
@apply [grid-area:content];
}
:where(.rtds-card--horizontal:not(.rtds-card--news-image-left-fullwidth)) .rtds-card__image-wrapper {
@apply rtds-self-start;
}
/* Card NEWS */
.rtds-card--news,
.rtds-card--event {
@apply rtds-background-01;
}
:where(.rtds-card--news-no-thumb) .rtds-card__content {
@apply rtds-pt-4;
}
:where(.rtds-card--news:not(.rtds-card--news-small)) .rtds-card__description {
@apply rtds-text-sm md:rtds-text-base;
}
:where(.rtds-card--news) .rtds-card__image-wrapper {
@apply rtds-rounded rtds-overflow-hidden;
}
:where(.rtds-card--news-left) .rtds-card__image-wrapper,
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__image-wrapper,
:where(.rtds-card--news-small) .rtds-card__image-wrapper,
:where(.rtds-card--related-info-l) .rtds-card__image-wrapper {
@apply sm:rtds-min-w-[80px];
}
.rtds-card--news-small,
.rtds-card--news-left {
@apply rtds-gap-3 md:rtds-gap-2;
}
.rtds-card--news-image-fullwidth,
.rtds-card--news-image-left-fullwidth {
@apply rtds-gap-3 rtds-p-0;
}
:where(.rtds-card--news-image-left-fullwidth) .rtds-card__image-wrapper {
@apply rtds-rounded-none;
}
:where(.rtds-card--news-image-fullwidth) .rtds-card__image-wrapper {
@apply rtds-rounded-b-none;
}
.rtds-card--information {
@apply rtds-p-4 md:rtds-p-6 rtds-rounded rtds-items-stretch;
}
.rtds-card--sito-tematico {
@apply rtds-p-0 rtds-gap-0;
}
:where(.rtds-card--sito-tematico) .rtds-card__image-wrapper {
@apply rtds-shadow-md;
}
:where(.rtds-card--sito-tematico) .rtds-card__image {
@apply rtds-aspect-wide;
}
:where(.rtds-card--related-info) .rtds-card__image {
@apply rtds-aspect-video rtds-h-full;
}
:where(.rtds-card--news-image-square) .rtds-card__image {
@apply rtds-aspect-square;
}
:where(.rtds-card--sito-tematico) .rtds-card__logo {
@apply rtds-w-6 rtds-h-6 rtds-mr-4;
}
/* Card INFORMATION */
.rtds-card--information-02 {
@apply rtds-p-4 md:rtds-p-6 rtds-background-01;
}
:where(.rtds-card--information-02) .rtds-card__description {
@apply rtds-text-sm md:rtds-text-base rtds-space-y-3 md:rtds-space-y-4;
}
:where(.rtds-card--information-02) .rtds-card__content {
@apply rtds-p-0 rtds-gap-4;
}
:where(.rtds-card--information-02) .rtds-card__date {
@apply rtds-block rtds-text-sm rtds-font-bold;
}
/* TITLE */
.rtds-card__title {
@apply rtds-font-bold rtds-leading-tight rtds-text-lg lg:rtds-text-xl;
}
.rtds-card__title a {
@apply hover:rtds-underline;
}
:where(.rtds-card__title) a {
@apply rtds-inline-block;
}
:where(.rtds-card__title) :where(.rtds-icon:not(.rtds-btn .rtds-icon)) {
@apply rtds-ml-auto rtds-link-primary rtds-w-4 rtds-h-4 md:rtds-w-5 md:rtds-h-5;
}
:where(.rtds-card--news-small) .rtds-card__title {
@apply rtds-text-base;
}
:where(.rtds-card--event) .rtds-card__heading {
@apply rtds-gap-3;
}
:where(.rtds-card--event) .rtds-card__title {
@apply rtds-text-lg rtds-leading-tight;
}
:where(.rtds-card--information) .rtds-card__title {
@apply rtds-content-02 rtds-text-xl;
}
:where(.rtds-card--information-02) .rtds-card__title {
@apply rtds-content-01 rtds-text-xl;
}
/* .rtds-card--widget .rtds-card__title {
@apply rtds-content-01 rtds-text-2xl;
} */
:where(.rtds-card--sito-tematico) .rtds-card__title {
@apply rtds-text-sm;
}
:where(.rtds-card--sito-tematico-l) .rtds-card__title {
@apply rtds-text-sm sm:rtds-text-base lg:rtds-text-lg xl:rtds-text-xl;
}
:where(.rtds-card--related-info) .rtds-card__title {
@apply rtds-text-lg sm:rtds-text-base;
}
:where(.rtds-card--related-info-l) .rtds-card__title {
@apply rtds-text-lg sm:rtds-text-xl;
}
:where(.rtds-card--persona) .rtds-card__title {
@apply rtds-text-base md:rtds-text-lg;
}
/* CARD EVENT */
.rtds-card--event {
@apply rtds-p-0;
}
:where(.rtds-card--event:not(.rtds-card--event-small)) {
@apply rtds-content-start;
}
:where(.rtds-card--event) .rtds-card__image-wrapper {
@apply rtds-rounded;
}
:where(.rtds-card--event) .rtds-card__content {
@apply rtds-gap-2;
}
:where(.rtds-card--event:not(.rtds-card--event-small)) .rtds-card__content {
@apply sm:rtds-grid sm:rtds-gap-4 sm:rtds-grid-cols-1-2;
}
:where(.rtds-card--event-small) .rtds-card__content {
grid-template-rows: auto 1fr;
}
:where(.rtds-card--event-no-date) .rtds-card__content {
@apply sm:rtds-grid-cols-1;
}
/* CARD PERSONA */
.rtds-card--persona {
@apply rtds-background-01 rtds-p-4;
}
:where(.rtds-card--persona) .rtds-card__content {
@apply rtds-p-0;
}
.rtds-card__user-role {
@apply rtds-text-xs md:rtds-text-sm rtds-uppercase rtds-content-03;
}
:where(.rtds-card--persona-complete) .rtds-card__heading {
@apply rtds-flex-row rtds-justify-start;
}
/* Action link */
:where(.is-card-fullclickable) .rtds-card__action-link {
@apply hover:rtds-no-underline;
}
/* Action menu */
.rtds-card__action-menu {
@apply rtds-flex rtds-justify-end rtds-relative rtds-self-start;
}
.rtds-card__action-menu__trigger {
@apply rtds-w-10 rtds-h-10 rtds-content-01;
}
.rtds-card__action-menu__trigger[aria-expanded="true"] {
@apply rtds-background-08 rtds-content-inverse;
}
.rtds-card__action-menu-list {
@apply rtds-w-[25ch] rtds-absolute rtds-right-0 rtds-top-10 rtds-bg-white rtds-shadow-lg;
}
.rtds-card__action-menu-list-item {
@apply rtds-flex rtds-border-none;
}
.rtds-card__action-menu-list-item-action {
@apply rtds-flex rtds-justify-start rtds-gap-2 rtds-items-center rtds-p-3 rtds-btn--s rtds-w-full rtds-transition rtds-bg-white rtds-font-medium rtds-text-sm rtds-content-primary-dark hover:rtds-underline hover:rtds-background-02 focus:rtds-background-02;
}
/* USER AVATAR */
.rtds-card__user-avatar {
@apply rtds-flex-none rtds-w-14 rtds-h-14 rtds-rounded-full rtds-overflow-hidden;
}
.rtds-card__user-avatar img {
@apply rtds-w-full rtds-h-full rtds-object-cover rtds-object-center;
}
/* CARD GUIDA */
.rtds-card--guida {
@apply rtds-background-01 rtds-border rtds-border-gray-01;
}
:where(.rtds-card--guida) .rtds-card__title {
@apply rtds-text-lg md:rtds-text-xl lg:rtds-text-2xl;
}
:where(.rtds-card--guida) .rtds-card__content {
@apply rtds-p-4 md:rtds-p-5 lg:rtds-p-6 rtds-gap-4 md:rtds-gap-6;
}
:where(.rtds-card--guida) .rtds-card__description {
@apply rtds-flex rtds-gap-2 md:rtds-gap-2.5;
}
}
/* From INCLUSIVE COMPONENT LIBRARY by Heydon Pickering
* https://inclusive-components.design/
* card pattern:
* https://inclusive-components.design/cards/
* Create redundant click event on the whole card, using only
* card heading link
* A click handler on the card's container element
* simply triggers the click method on the link inside it
* Add also a delay in click, in order to detect if the user is selecting the text and not clicking
*/
const cards = document.querySelectorAll('.rtds-card.is-card-fullclickable');
Array.prototype.forEach.call(cards, card => {
let down, up, link = card.querySelector('.rtds-card__title a');
card.style.cursor = 'pointer';
card.onmousedown = (e) => {
// Verifica se è il tasto sinistro (0)
if (e.button === 0) {
down = +new Date();
}
}
card.onmouseup = (e) => {
// Procedi solo se è il tasto sinistro (0)
if (e.button === 0) {
up = +new Date();
if ((up - down) < 200) {
link.click();
}
}
}
});
//Js per card con accordion
(function() {
'use strict';
document.addEventListener('DOMContentLoaded', function() {
const toggleElements = document.querySelectorAll('.rtds-js-accordion-toggle');
toggleElements.forEach(function(element) {
element.addEventListener('click', function() {
const content = document.getElementById('accordion-content');
const button = element.dataset.role === 'button' ? element : element.previousElementSibling;
const icon = button.querySelector('svg');
if (content) {
if (content.classList.contains('rtds-hidden')) {
// Apri accordion
content.classList.remove('rtds-hidden');
button.setAttribute('aria-expanded', 'true');
} else {
// Chiudi accordion
content.classList.add('rtds-hidden');
button.setAttribute('aria-expanded', 'false');
}
}
});
});
});
})();
Componente card sviluppato seguendo il pattern inclusivo di Heydon Pickering: https://inclusive-components.design/cards/
Il componente può essere renderizzato come:
<article> — elemento di default; usare per card che rappresentano entità autonome (notizie, eventi, guide)<div> — quando article: false nel contesto Fractal/Nunjucks; usare per card inserite in liste non autonome (avvolte in <li> di una <ul role="list">)L’intestazione della card è di default un <h3>. La card completamente cliccabile (is-card-fullclickable) è gestita tramite JavaScript: il link semantico rimane solo nel titolo, mentre l’intera area è cliccabile per l’utente.
card--footer: Card con footercard--notizia: Card notizia standardcard--notizia-small: Card notizia piccolacard--notizia-thumb-left: Card notizia con miniatura a sinistracard--notizia-full-image: Card notizia con immagine a larghezza pienacard--approfondimento: Card approfondimentocard--informativa: Card informativa (con e senza gradiente)card--evento: Card evento (standard, senza data, piccola)card--sito-tematico: Card sito tematicocard--widget: Card widgetcard--procedimento: Card procedimentocard--persona: Card per la visualizzazione di profili utente con avatar, ruolo e contatticard--persona-complete: Variante della card persona con action menu per azioni aggiuntivecard--video: Card per la visualizzazione di contenuti video con trascrizionecard--guida: Card per la visualizzazione di guide e documentazioneContesto di sviluppo Fractal/Nunjucks — Questa sezione riguarda esclusivamente i parametri del context
.config.ymlusati durante lo sviluppo nella libreria. Non descrive attributi HTML o proprietà da usare nei temi, CMS o ambienti di implementazione: per quello, fare riferimento alla sezione Esempi di utilizzo.
classes (stringa, opzionale): classi CSS aggiuntive per la cardheading (stringa, opzionale): titolo della cardheadingClasses (stringa, opzionale): classi aggiuntive per l’intestazioneh2 (booleano, opzionale): utilizza <h2> invece di <h3> come intestazione (default: false)headingLinkClasses (stringa, opzionale): classi personalizzate per il link dell’intestazioneheadingLinkIcon (stringa, opzionale): ID icona per il link dell’intestazioneexcerpt (stringa, opzionale): testo dell’estratto (usare "is-empty" per disabilitarlo)excerptClasses (stringa, opzionale): classi per l’estrattocontentGap (stringa, opzionale): classe del gap del contenuto (default: gap-4)contentClasses (stringa, opzionale): classi aggiuntive per il wrapper del contenutoheadingGap (stringa, opzionale): gap degli elementi dell’intestazione (default: gap-4)categoryText (stringa, opzionale): testo della categoria (default: “Categoria”)categoryVariant (stringa, opzionale): variante della categoria (es. '--sm')icon (stringa, opzionale): ID dell’icona superioreiconSize (stringa, opzionale): classi di larghezza e altezza dell’iconaiconRadius (stringa, opzionale): gestisce il bordo dell’icona superioreiconBg (stringa, opzionale): colore di sfondo dell’icona superioreiconBorder (stringa, opzionale): bordo dell’icona superioreiconColor (stringa, opzionale): colore dell’icona superiorectaIcon (stringa, opzionale): ID dell’icona per il CTActaWrapperClasses (stringa, opzionale): classi per il wrapper del CTActaLinkLabel (stringa, opzionale): etichetta per il link CTAimg (oggetto, opzionale): configurazione immaginepath (stringa): percorso immaginealt (stringa): testo alternativoimgObjectFit (stringa): gestisce l’object-fitthumbSize (stringa, opzionale): dimensione della miniaturathumbAspectRatio (stringa, opzionale): classi dell’aspect ratiothumbClasses (stringa, opzionale): classi della miniaturathumbFullHeight (booleano, opzionale): imposta l’altezza completa della miniaturaheadingThumb (oggetto, opzionale): miniatura dell’intestazione con path e srcsetarticle (booleano, opzionale): usa <article> come tag (default: true)category (booleano, opzionale): mostra la categoriactaLink (booleano, opzionale): mostra il link CTActa (booleano, opzionale): mostra il pulsante CTAtags (booleano, opzionale): mostra la lista dei tagdate (booleano, opzionale): mostra la datathumb (booleano, opzionale): mostra la miniaturahasSideThumb (booleano, opzionale): aggiunge classi per miniatura laterale sinistrahasRightSideThumb (booleano, opzionale): aggiunge classi per miniatura laterale destrafullClick (booleano, opzionale): aggiunge lo script per l’area cliccabile completafileDetails (booleano, opzionale): aggiunge informazioni sul filescadenza (booleano, opzionale): mostra la data di scadenzauserAvatar (oggetto, opzionale): configurazione dell’avatar utentepath (stringa): percorso dell’immaginealt (stringa): testo alternativosrcset (stringa): set di sorgenti per immagini responsiveuserRole (stringa, opzionale): ruolo professionale della personacontacts (array, opzionale): lista dei contatti con label, href, icon, accessibleLabelBeforehasActionMenu (booleano, opzionale): attiva il menu delle azionihasActionDelete (booleano, opzionale): attiva l’opzione di cancellazioneeditId (stringa, opzionale): ID univoco per il menu (es. "01")profileDialogId (stringa, opzionale): ID del modal del profiloLivello AA — criteri pertinenti:
alt descrittivo (o vuoto se decorative)<article> o <div> contestualmente; i tag <h3> / <h2> esprimono la gerarchia dei titoli; le categorie sono strutturate come <ul aria-label="Categorie"><span class="rtds-sr-only">: leggi di più</span> quando è presente un CTA aggiuntivo, per disambiguare lo scopo del link per gli screen readeraria-expanded, aria-controls e aria-haspopup="dialog" sull’action menu<article> quando rappresenta un’entità autonoma (notizia, evento, guida), o come <div> quando inserito in liste di card non autonome<h3> o <h2>; la sezione che contiene le card deve avere un heading di livello superiore, visibile o nascosto tramite rtds-sr-only<time datetime="..."> identifica semanticamente le date<ul aria-label="Categorie"> per comunicare il ruolo della lista agli screen reader| Attributo | Valori | Condizione |
|---|---|---|
aria-expanded |
"true" / "false" |
presente sul trigger dell’action menu nella variante persona-complete |
aria-controls |
ID del dropdown | presente sul trigger dell’action menu nella variante persona-complete |
aria-haspopup |
"dialog" |
presente sul trigger dell’action menu nella variante persona-complete |
aria-label |
"Categorie" |
presente sulla <ul> dei tag |
| Tasto | Azione |
|---|---|
Tab / Shift+Tab |
Sposta il focus tra i link e i pulsanti della card |
Enter |
Attiva il link o il pulsante corrente |
:focus-visible è sempre visibile e non viene rimosso via CSS<span class="rtds-sr-only"> nel link del titolo (presente quando c’è un CTA aggiuntivo) disambigua il nome accessibile del link evitando etichette duplicate per gli screen reader<img> dell’avatar utente nelle card persona deve avere un alt descrittivo (es. nome della persona)aria-hidden="true" — lo screen reader le ignora; le icone informative (es. tipologia file) sono accompagnate da <span class="rtds-sr-only"> con il testo equivalenteis-card-fullclickable gestisce il click sull’intera area via JS, ma il link semantico rimane solo nel titolo — lo screen reader legge e naviga solo tramite questo link<!-- Card notizia base -->
<article class="rtds-card rtds-card--notizia">
<div class="rtds-card__content">
<h3 class="rtds-card__heading">
<a href="/notizia" class="rtds-card__heading-link">Titolo della notizia</a>
</h3>
<p class="rtds-card__excerpt">Estratto della notizia...</p>
</div>
</article>
<!-- Card con area completamente cliccabile -->
<article class="rtds-card rtds-card--notizia is-card-fullclickable">
<div class="rtds-card__content">
<h3 class="rtds-card__heading">
<a href="/notizia" class="rtds-card__heading-link">Titolo della notizia</a>
</h3>
</div>
</article>
<!-- Card persona -->
<article class="rtds-card rtds-card--persona">
<div class="rtds-card__content">
<img src="/avatar.jpg" alt="Nome Persona" class="rtds-card__avatar">
<h3 class="rtds-card__heading">Nome Persona</h3>
<p class="rtds-card__role">Ruolo professionale</p>
</div>
</article><article>; usare article: false e avvolgere in <li> di una <ul role="list"> quando le card non sono entità autonome<h3>: la sezione contenitrice deve avere un <h2> visibile o nascosto (rtds-sr-only)<span class="rtds-sr-only"> con il titolo del video