<div class="rtds-page-header rtds-container rtds-space-y-2 rtds-page-header--base">
<nav class="rtds-breadcrumb" aria-label="Breadcrumb">
<ol class="rtds-breadcrumb__list">
<li class="rtds-breadcrumb__item">
<a class="rtds-breadcrumb__link" href="#">
Livello 1
<svg class="rtds-icon rtds-fill-current rtds-w-4 rtds-h-4 rtds-ml-2" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#mini--chevron-right" />
</svg>
</a>
</li>
<li class="rtds-breadcrumb__item">
<a class="rtds-breadcrumb__link" href="#">
Livello 2
<svg class="rtds-icon rtds-fill-current rtds-w-4 rtds-h-4 rtds-ml-2" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#mini--chevron-right" />
</svg>
</a>
</li>
<li class="rtds-breadcrumb__item">
<a class="rtds-breadcrumb__link" href="#" aria-current="page">
Pagina corrente
</a>
</li>
</ol>
</nav>
<div class="rtds-page-header__content rtds-grid rtds-gap-5 md:rtds-gap-12 rtds-grid-cols-1 md:rtds-grid-cols-12">
<div class="rtds-grid rtds-gap-5 md:rtds-col-span-9">
<div class="rtds-page-header__title rtds-space-y-4">
<h1 class="rtds-heading-1">
Titolo pagina
</h1>
</div>
</div>
</div>
</div>
<div class="rtds-page-header rtds-container rtds-space-y-2{% if padding %} {{ padding }}{% endif %}{% if hasBg %} rtds-page-header--has-bg{% endif %}{% block classes %} rtds-page-header--base{% if classes %} {{ classes }}{% endif %}{% endblock classes %}">
{% if backLink %}
{% render '@back-link', { backLink: backLink }, true %}
{% endif %}
{% block contentWrapper %}
{% if breadcrumb %}
{% render '@breadcrumb', breadcrumb, true %}
{% endif %}
<div class="rtds-page-header__content rtds-grid rtds-gap-5 md:rtds-gap-12{% if contentGridTemplateColumns %} {{ contentGridTemplateColumns }}{% endif %}{% block contentWrapperClasses %}{% endblock contentWrapperClasses %}">
{% block content %}
<div class="rtds-grid rtds-gap-5{% if contentLeftMaxWidth %} {{ contentLeftMaxWidth }}{% endif %}{% if contentLeftColumnSpan %} {{ contentLeftColumnSpan }}{% endif %}">
<div class="rtds-page-header__title rtds-space-y-4">
<{% if isContextBanner %}p{% else %}h1{% endif %} class="rtds-heading-1">
{% if titleContext %}
<span class="rtds-heading-5 md:rtds-heading-4 rtds-block rtds-pt-3 rtds-pb-1.5 md:rtds-pt-4 md:rtds-pb-2">
{{ titleContext|safe }}
</span>
{% endif %}
{% if titleContext %}<span class="rtds-block">{% endif %}
{{ title|safe }}
{% if titleContext %}</span>{% endif %}
</{% if isContextBanner %}p{% else %}h1{% endif %}>
</div>
{% if description %}
<div class="rtds-page-header__description rtds-text-base lg:rtds-text-lg">
<p>
{{ description|safe }}
</p>
</div>
{% endif %}
{% block additionalContent %}
{% endblock additionalContent %}
</div>
{% block rightContent %}
{% if cta %}
<div class="rtds-grid rtds-gap-2 md:rtds-justify-end md:rtds-items-end{% if contentRightColumnSpan %} {{ contentRightColumnSpan }}{% endif %}">
{% for ctaItem in cta %}
{% render '@button' + ctaItem.variant, ctaItem, true %}
{% endfor %}
</div>
{% endif %}
{% endblock rightContent %}
{% endblock content %}
</div>
{% endblock contentWrapper %}
</div>
{
"title": "Titolo pagina",
"contentGridTemplateColumns": "rtds-grid-cols-1 md:rtds-grid-cols-12",
"contentLeftColumnSpan": "md:rtds-col-span-9",
"contentRightColumnSpan": "md:rtds-col-span-3",
"backLink": false,
"breadcrumb": {
"items": [
{
"label": "Livello 1"
},
{
"label": "Livello 2"
},
{
"label": "Pagina corrente"
}
]
}
}
/* Base Heading Component */
/* Base Heading Component */
@layer components {
}
Template base per l’intestazione di pagina. Fornisce la struttura condivisa da tutte le varianti di page header: wrapper con classi, back link o breadcrumb opzionale, blocco contenuto con titolo (<h1> o <p>), descrizione opzionale, e area CTA opzionale. Gli altri componenti page header (es. @page-header-servizio) estendono questo template tramite Nunjucks template inheritance.
Il componente è renderizzato come <div class="rtds-page-header rtds-container">.
<h1> per impostazione predefinita.isContextBanner: true, il titolo viene renderizzato come <p class="rtds-heading-1"> — da usare quando questo header funge da banner contestuale e l’<h1> reale della pagina si trova altrove.titleContext è presente, viene reso un <span> con stile ridotto sopra il titolo principale — nella variante aggiornamento include attributi aria-labelledby per associare il contesto al titolo.hasBg: true, viene aggiunta la classe rtds-page-header--has-bg che applica sfondo gradiente, padding orizzontale e angoli arrotondati.backLink e il blocco breadcrumb sono mutuamente esclusivi: usare uno o l’altro per l’orientamento dell’utente.default: Header base con <h1> e back link.has-breadcrumb: Sostituisce il back link con il componente @breadcrumb.with-cta: Aggiunge un pulsante CTA nella colonna destra (variante --inverted).with-multiple-cta: Aggiunge più pulsanti CTA nella colonna destra (fino a tre, con varianti diverse: --primary, --secondary, --inverted).has-description: Aggiunge un paragrafo descrittivo sotto il titolo.has-bg: Attiva lo sfondo gradiente con padding e border-radius (hasBg: true).has-title-context: Aggiunge un sotto-titolo contestuale sopra l’<h1> principale.is-context-banner: Renderizza il titolo come <p> invece di <h1> (per banner contestuali).aggiornamento: Variante specifica per aggiornamenti — usa @back-link--piu-aggiornamenti e struttura ARIA con aria-labelledby per collegare titleContext al titolo principale.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.
title (stringa, obbligatorio): Testo del titolo principale, renderizzato come <h1> (o <p> se isContextBanner: true). Accetta HTML (filtro safe).titleContext (stringa, opzionale): Testo contestuale visualizzato sopra il titolo principale con stile ridotto. Accetta HTML (filtro safe).description (stringa, opzionale): Testo descrittivo renderizzato sotto il titolo. Accetta HTML (filtro safe).hasBg (booleano, opzionale): Se true, applica rtds-page-header--has-bg — sfondo gradiente, padding orizzontale, angoli arrotondati.isContextBanner (booleano, opzionale): Se true, il titolo viene renderizzato come <p> invece di <h1>.padding (stringa, opzionale): Classi CSS per il padding del contenitore (aggiuntivo rispetto al default).classes (stringa, opzionale): Classi CSS aggiuntive sull’elemento radice.contentGridTemplateColumns (stringa, opzionale): Classi CSS per la griglia interna del contenuto (es. rtds-grid-cols-1 md:rtds-grid-cols-12).contentLeftColumnSpan (stringa, opzionale): Classi CSS per il col-span della colonna sinistra (es. md:rtds-col-span-9).contentLeftMaxWidth (stringa, opzionale): Classi CSS per la larghezza massima del blocco sinistro.contentRightColumnSpan (stringa, opzionale): Classi CSS per il col-span della colonna destra (es. md:rtds-col-span-3).backLink (oggetto, opzionale): Configurazione del back link. Passato al componente @back-link. Chiavi:label (stringa, obbligatorio): Testo del link (es. "Torna a: Nome Tema").icon (stringa, opzionale): ID icona SVG (es. solid--arrow-left).classes (stringa, opzionale): Classi CSS aggiuntive (es. rtds-content-03).breadcrumb (oggetto, opzionale): Configurazione del breadcrumb. Passato al componente @breadcrumb. Struttura:items (array): Lista di voci breadcrumb, ciascuna con label (stringa) e href opzionale.cta (array, opzionale): Lista di pulsanti CTA da renderizzare nella colonna destra. Ogni elemento viene passato a @button + il valore di variant. Chiavi:variant (stringa, obbligatorio): Suffisso della variante pulsante (es. --primary, --secondary, --inverted).label (stringa, obbligatorio): Testo del pulsante.href (stringa, opzionale): URL — se presente, il pulsante è renderizzato come <a>.classes (stringa, opzionale): Classi CSS aggiuntive (es. rtds-btn--s).Livello AA — criteri pertinenti:
<h1> come titolo principale; isContextBanner usa <p> quando l’H1 reale è altroveaggiornamento, aria-labelledby associa titleContext e title per un nome accessibile completo<div class="rtds-page-header"> — wrapper presentazionale; non introduce landmark; non impatta la navigazione degli screen reader<h1> (default) — titolo principale della pagina; deve comparire una sola volta per pagina; i componenti che estendono @page-header-base ereditano questo comportamento<p class="rtds-heading-1"> — quando isContextBanner: true; presenta stile di heading senza ruolo semantico di heading; usare esclusivamente quando l’<h1> reale della pagina si trova in un altro componente<span class="rtds-heading-5 ..."> (con titleContext) — sotto-titolo reso come <span> interno all’<h1>; letto come parte del titolo dagli screen reader nella variante base<span id="pageHeaderTitleContext"> e <h1 aria-labelledby="pageHeaderTitleContext pageHeaderTitle"> — nella variante aggiornamento; collega semanticamente il contesto al titolo per un annuncio completo<nav> del breadcrumb — landmark navigation; delegato al componente @breadcrumb| Attributo | Valori | Condizione |
|---|---|---|
aria-labelledby |
"pageHeaderTitleContext pageHeaderTitle" |
Solo nella variante aggiornamento con titleContext — collega contesto e titolo |
titleContext nella variante base è reso come <span> interno all’<h1>: gli screen reader leggono l’intero <h1> come un’unica stringa che include il contestoaggiornamento, aria-labelledby aggrega il testo di pageHeaderTitleContext e pageHeaderTitle — il nome accessibile dell’heading include entrambiisContextBanner: true solo quando l’<h1> reale della pagina è posizionato altrove, per evitare heading H1 multipli che confondono gli screen reader@back-link (o @back-link--piu-aggiornamenti nella variante aggiornamento) — gestisce la propria accessibilità internamenteGli stili sono definiti in components/04-organisms/page-headers/page-headers.css.
.rtds-page-header: Padding verticale adattivo — py-4 su mobile, py-6 su tablet, py-8 su desktop.rtds-page-header--has-bg: Aggiunge padding orizzontale adattivo, border-radius (rtds-rounded-md) e sfondo gradiente (rtds-bg-gradient-04). Attivato da hasBg: true..rtds-page-header--base: Classe identificativa della variante base; applicata automaticamente dal blocco classes del template..rtds-page-header__content: Wrapper della griglia interna del contenuto (titolo, descrizione, CTA).rtds-page-header__title: Wrapper del blocco titolo (heading + titleContext).rtds-page-header__description: Wrapper del paragrafo descrittivo<!-- Variante base con back link -->
<div class="rtds-page-header rtds-container rtds-space-y-2 rtds-page-header--base">
<!-- @back-link -->
<div class="rtds-page-header__content rtds-grid rtds-gap-5 md:rtds-gap-12 rtds-grid-cols-1 md:rtds-grid-cols-12">
<div class="rtds-grid rtds-gap-5 md:rtds-col-span-9">
<div class="rtds-page-header__title rtds-space-y-4">
<h1 class="rtds-heading-1">Titolo pagina</h1>
</div>
</div>
</div>
</div>
<!-- Variante con sfondo gradiente e descrizione -->
<div class="rtds-page-header rtds-container rtds-space-y-2 rtds-page-header--has-bg rtds-page-header--base">
<div class="rtds-page-header__content rtds-grid rtds-gap-5 md:rtds-gap-12 rtds-grid-cols-1 md:rtds-grid-cols-12">
<div class="rtds-grid rtds-gap-5 md:rtds-col-span-9">
<div class="rtds-page-header__title rtds-space-y-4">
<h1 class="rtds-heading-1">Titolo pagina</h1>
</div>
<div class="rtds-page-header__description rtds-text-base lg:rtds-text-lg">
<p>Descrizione della pagina.</p>
</div>
</div>
</div>
</div>
<!-- Variante con CTA nella colonna destra -->
<!-- Nel config.yml passare:
cta:
- variant: "--inverted"
label: "Visualizza l'archivio"
classes: "rtds-btn--s"
-->
<!-- Variante context banner (titolo come <p>, non <h1>) -->
<!-- Nel config.yml passare:
isContextBanner: true
hasBg: true
title: "Testo del banner contestuale"
-->@page-header-servizio e da altri page header specializzati. Non va modificato senza verificare l’impatto su tutti i componenti che lo estendono.classes, contentWrapper, contentWrapperClasses, content, additionalContent, rightContent.aggiornamento usa il file page-header-base--aggiornamento.njk che include @back-link--piu-aggiornamenti al posto di @back-link e struttura diversa per titleContext (con id e aria-labelledby).@back-link, @back-link--piu-aggiornamenti (variante aggiornamento), @breadcrumb, @button (varianti CTA).