<section class="rtds-note rtds-bg-gradient-03">
<div class="rtds-note__header">
<h2 class="rtds-note__title rtds-text-sm md:rtds-text-base rtds-uppercase rtds-font-semibold">
Titolo
</h2>
</div>
<div class="rtds-note__content rtds-divide-y rtds-divide-gray-01">
<div class="rtds-note__content-item">
<h3 class="rtds-note__content-item-title">
Aggiornamento 26 gennaio 2025
</h3>
<p class="rtds-note__content-item-description">Approvata la graduatoria definitiva</p>
<div class="rtds-flex rtds-justify-end">
<button type="button" class="rtds-btn
rtds-btn--icon-right rtds-group/button rtds-btn--only-text rtds-btn--s">
Leggi l'avviso completo
<svg class="rtds-icon rtds-fill-current rtds-w-4 rtds-h-4 md:rtds-w-5 md:rtds-h-5 lg:rtds-w-6 lg:rtds-h-6 group-hover/button:rtds-translate-x-1" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#mini--chevron-right" />
</svg>
</button>
</div>
</div>
</div>
</section>
<section{% if id %} id="{{ id }}"{% endif %} class="rtds-note{% if gradient %} {{ gradient }}{% endif %}{% block classes %}{% if classes %} {{classes}}{% endif %}{% endblock %}">
<div class="rtds-note__header">
{% block noteIcon %}
{% if icon %}
{% render '@icon', { id: icon, classes: 'rtds-note__icon' }, true %}
{% endif %}
{% endblock %}
<h2 class="rtds-note__title rtds-text-sm md:rtds-text-base rtds-uppercase rtds-font-semibold">
{{ label | safe }}
</h2>
{% block titleAdditionalContent %}
{% endblock %}
</div>
<div class="rtds-note__content rtds-divide-y rtds-divide-gray-01">
{% block content %}
{% for item in contents %}
<div class="rtds-note__content-item">
{% if item.title %}
<h3 class="rtds-note__content-item-title">
{{ item.title | safe }}
</h3>
{% endif %}
{% if item.description %}
<p class="rtds-note__content-item-description">{{ item.description | safe }}</p>
{% endif %}
{% if item.link %}
{% render '@text-link' ~ item.link.variant, item.link, true %}
{% endif %}
{% if item.cta %}
<div class="rtds-flex rtds-justify-end">
{% render '@button' ~ item.cta.variant, item.cta, true %}
</div>
{% endif %}
</div>
{% endfor %}
{% endblock %}
</div>
</section>
{
"label": "Titolo",
"gradient": "rtds-bg-gradient-03",
"id": null,
"contents": [
{
"title": "Aggiornamento 26 gennaio 2025",
"description": "Approvata la graduatoria definitiva",
"cta": {
"variant": "--icon-right",
"classes": "rtds-btn--only-text rtds-btn--s",
"url": "#",
"label": "Leggi l'avviso completo",
"icon": "mini--chevron-right"
}
}
]
}
.rtds-note {
padding: var(--spacing-4);
color: var(--color-content-01);
border-radius: 0.5rem;
}
@media (min-width: 768px) {
.rtds-note {
padding: var(--spacing-6);
}
}
.rtds-note__header {
align-items: baseline;
border-bottom-width: 1px;
padding-bottom: var(--spacing-3);
border-color: var(--color-border-gray-01);
display: flex;
}
.rtds-note__content {
padding-top: var(--spacing-3);
padding-bottom: var(--spacing-3);
}
.rtds-note__content-item {
gap: var(--spacing-2-5);
display: grid;
padding-top: var(--spacing-3);
padding-bottom: var(--spacing-3);
}
.rtds-note__content-item:first-child {
padding-top: var(--spacing-0);
}
.rtds-note__content-item:last-child {
padding-bottom: var(--spacing-0);
}
.rtds-note__content-item-title {
font-size: var(--fontsize-text-sm);
font-weight: 700;
}
.rtds-note__content-item-description {
font-size: var(--fontsize-text-sm);
}
.rtds-note__content-item-description a {
text-decoration-line: underline;
color: var(--color-content-02);
}
/* Callout */
.rtds-note__icon {
flex-shrink: 0;
width: var(--spacing-5, 1.25rem);
height: var(--spacing-5, 1.25rem);
color: currentColor;
}
.rtds-note--callout {
background-color: var(--note-callout-bg, var(--color-neutral-100));
border-left: 4px solid var(--note-callout-border-color, var(--color-neutral-400));
border-radius: 0 var(--border-radius-lg, 0.5rem) var(--border-radius-lg, 0.5rem) 0;
}
.rtds-note--callout-info {
--note-callout-border-color: var(--color-info);
--note-callout-icon-color: var(--color-content-info);
}
.rtds-note--callout-avviso {
--note-callout-border-color: var(--color-warn);
--note-callout-icon-color: var(--color-content-warn);
}
.rtds-note--callout-pericolo {
--note-callout-border-color: var(--color-error);
--note-callout-icon-color: var(--color-content-error);
}
.rtds-note--callout .rtds-note__icon {
color: var(--note-callout-icon-color, var(--color-neutral-700));
}
.rtds-note--callout .rtds-note__header {
flex-direction: row;
display: flex;
align-items: center;
gap: var(--spacing-2);
}
@layer components {
.rtds-note {
@apply rtds-p-4 md:rtds-p-6 rtds-rounded-lg rtds-content-01;
}
.rtds-note__header {
@apply rtds-border-b rtds-border-gray-01 rtds-pb-3 rtds-flex rtds-items-baseline;
}
.rtds-note__content {
@apply rtds-py-3;
}
.rtds-note__content-item {
@apply rtds-grid rtds-gap-2.5 rtds-py-3 first:rtds-pt-0 last:rtds-pb-0;
}
.rtds-note__content-item-title {
@apply rtds-text-sm rtds-font-bold;
}
.rtds-note__content-item-description {
@apply rtds-text-sm;
}
.rtds-note__content-item-description a {
@apply rtds-underline rtds-content-02;
}
/* Callout */
.rtds-note__icon {
flex-shrink: 0;
width: var(--spacing-5, 1.25rem);
height: var(--spacing-5, 1.25rem);
color: currentColor;
}
.rtds-note--callout {
background-color: var(--note-callout-bg, var(--color-neutral-100));
border-left: 4px solid var(--note-callout-border-color, var(--color-neutral-400));
border-radius: 0 var(--border-radius-lg, 0.5rem) var(--border-radius-lg, 0.5rem) 0;
}
.rtds-note--callout-info {
--note-callout-border-color: var(--color-info);
--note-callout-icon-color: var(--color-content-info);
}
.rtds-note--callout-avviso {
--note-callout-border-color: var(--color-warn);
--note-callout-icon-color: var(--color-content-warn);
}
.rtds-note--callout-pericolo {
--note-callout-border-color: var(--color-error);
--note-callout-icon-color: var(--color-content-error);
}
.rtds-note--callout .rtds-note__icon {
color: var(--note-callout-icon-color, var(--color-neutral-700));
}
.rtds-note--callout .rtds-note__header {
@apply rtds-flex rtds-flex-row rtds-items-center rtds-gap-2;
}
}
Componente utility per informazioni aggiuntive all’interno di pagine di dettaglio contenuto.
Il componente è sempre renderizzato come <section> — blocco tematico autonomo. Contiene un <h2> come titolo della nota e, per ogni elemento del contenuto, un <h3> con la relativa descrizione, link e/o pulsante CTA.
note--esiti: Versione per la visualizzazione di esiti e graduatorienote--faq: Versione per la visualizzazione di FAQnote--avviso: Versione per la visualizzazione di avvisinote--comunicazione: Versione per la visualizzazione di comunicazioniI callout sono una variante visivamente prominente della nota — bordo laterale sinistro e sfondo neutro — per evidenziare informazioni cruciali nel corpo dei contenuti. Il segnale semantico è portato da colore del bordo, colore dell’icona e testo, non dallo sfondo. Si distinguono dalla nota base (sfondi a gradiente) per la struttura visiva, e dall’alert per la semantica: il callout è contenuto statico della pagina, non un messaggio di stato dinamico.
Non usare
role="alert"néaria-livesui callout — riservare quei pattern all’alertper messaggi in risposta ad azioni utente.
| Variante | Classe | Icona default | Uso |
|---|---|---|---|
note--callout |
rtds-note--callout |
outline--light-bulb |
Note generiche, suggerimenti |
note--callout-info |
rtds-note--callout rtds-note--callout-info |
outline--information-circle |
Informazioni aggiuntive |
note--callout-avviso |
rtds-note--callout rtds-note--callout-avviso |
outline--exclamation-triangle |
Avvertenze, attenzione |
note--callout-pericolo |
rtds-note--callout rtds-note--callout-pericolo |
outline--shield-exclamation |
Pericoli, errori critici |
Contesto 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.
id (stringa, opzionale): ID opzionale per la sezioneclasses (stringa, opzionale): Classi CSS aggiuntive per il componentegradient (stringa, opzionale): Classe per il gradiente di sfondo. Impostare "" nelle varianti callout per sovrascrivere il gradiente di defaultlabel (stringa, obbligatorio): Titolo della notaicon (stringa, opzionale): ID dell’icona SVG dallo sprite (es. outline--light-bulb). Usato dalle varianti callout; aria-hidden="true" di default — l’accessibilità è garantita dal testocontents (array, opzionale): Elementi del contenutotitle (stringa, opzionale): Titolo dell’elementodescription (stringa, opzionale): Descrizione dell’elementolink (oggetto, opzionale): Configurazione del linkvariant (stringa, opzionale): Variante del linkurl (stringa, opzionale): URL del linktitle (stringa, opzionale): Titolo del linkicon (stringa, opzionale): Icona del linkcta (oggetto, opzionale): Configurazione del bottonevariant (stringa, opzionale): Variante del bottoneclasses (stringa, opzionale): Classi aggiuntive del bottoneurl (stringa, opzionale): URL del bottonelabel (stringa, opzionale): Etichetta del bottoneicon (stringa, opzionale): Icona del bottoneLivello AA — criteri pertinenti:
<section> come contenitore semantico; i titoli seguono una gerarchia coerente (<h2> per il titolo della nota, <h3> per i titoli degli elementi)<h2>) identifica il blocco per la navigazione tramite heading degli screen reader<section> — blocco tematico autonomo nella pagina; senza aria-labelledby o aria-label non è un landmark navigabile dagli screen reader; per esporla come landmark region, assegnare un id all’<h2> interno e aggiungere aria-labelledby="[id-h2]" sulla <section><h2> — etichetta l’intera nota; referenziarlo con aria-labelledby sulla <section> abilita la navigazione rapida tra le regioni della pagina<h3> — titolo di ogni elemento del contenuto; presuppone che la <section> abbia già un <h2> come intestazione di contestoaria-labelledby, la <section> non è un landmark — lo screen reader la legge come contenuto generico e non la include nella navigazione rapida per regioniaria-labelledby="[id-h2]" sulla <section>, lo screen reader annuncia la regione con il testo dell’<h2> (es. “Avviso importante, regione”) e la rende raggiungibile tramite la navigazione per landmark.rtds-note: Classe principale del componente.rtds-note__header: Intestazione della nota.rtds-note__title: Titolo <h2> della nota.rtds-note__content: Contenitore del contenuto principale.rtds-note__content-item: Singolo elemento del contenuto.rtds-note__icon: Icona nell’header (solo varianti callout).rtds-note--callout: Base callout (sfondo neutro, bordo sinistro).rtds-note--callout-info: Tipo informativo (blu).rtds-note--callout-avviso: Tipo avviso (arancione).rtds-note--callout-pericolo: Tipo pericolo (rosso)<!-- Esempio base con landmark region accessibile (consigliato) -->
<section class="rtds-note" aria-labelledby="note-title-01">
<div class="rtds-note__header">
<h2 id="note-title-01" class="rtds-note__title">Titolo della nota</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<h3>Sottotitolo</h3>
<p>Descrizione del contenuto</p>
</div>
</div>
</section>
<!-- Variante avviso con landmark region accessibile (consigliato) -->
<section class="rtds-note rtds-note--avviso" aria-labelledby="note-avviso-01">
<div class="rtds-note__header">
<h2 id="note-avviso-01" class="rtds-note__title">Avviso importante</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<p>Testo dell'avviso</p>
</div>
</div>
</section>
<!-- Callout generico -->
<section class="rtds-note rtds-note--callout">
<div class="rtds-note__header">
<svg class="rtds-note__icon" aria-hidden="true" focusable="false">
<use href="/icons.svg#outline--light-bulb"></use>
</svg>
<h2 class="rtds-note__title">Nota</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<p>Testo del callout generico.</p>
</div>
</div>
</section>
<!-- Callout informativo -->
<section class="rtds-note rtds-note--callout rtds-note--callout-info">
<div class="rtds-note__header">
<svg class="rtds-note__icon" aria-hidden="true" focusable="false">
<use href="/icons.svg#outline--information-circle"></use>
</svg>
<h2 class="rtds-note__title">Informazione</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<p>Testo informativo.</p>
</div>
</div>
</section>
<!-- Callout avviso -->
<section class="rtds-note rtds-note--callout rtds-note--callout-avviso">
<div class="rtds-note__header">
<svg class="rtds-note__icon" aria-hidden="true" focusable="false">
<use href="/icons.svg#outline--exclamation-triangle"></use>
</svg>
<h2 class="rtds-note__title">Attenzione</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<p>Testo dell'avviso.</p>
</div>
</div>
</section>
<!-- Callout pericolo -->
<section class="rtds-note rtds-note--callout rtds-note--callout-pericolo">
<div class="rtds-note__header">
<svg class="rtds-note__icon" aria-hidden="true" focusable="false">
<use href="/icons.svg#outline--shield-exclamation"></use>
</svg>
<h2 class="rtds-note__title">Attenzione</h2>
</div>
<div class="rtds-note__content">
<div class="rtds-note__content-item">
<p>Testo del pericolo.</p>
</div>
</div>
</section>