<div class="rtds-space-y-6 md:rtds-space-y-8">
<div class="rtds-space-y-4">
<div class="rtds-grid rtds-gap-6 lg:rtds-flex lg:rtds-justify-between">
<div class="rtds-loading-status" aria-live="polite" aria-busy="false" role="status">
<h2 class="rtds-heading-3">Nessun risultato trovato</h2>
</div>
<div>
<div class="rtds-grid md:rtds-flex md:rtds-items-center rtds-gap-2 md:rtds-gap-6 md:rtds-justify-end">
<div class="rtds-flex-1 md:rtds-flex-none">
<div class="rtds-input-field rtds-select-field rtds-field-inline rtds-select-field--sm">
<label for="select-field-1" class="rtds-input-field__label">
Rivolto a
</label>
<div class="rtds-select rtds-select--light">
<select id="select-field-1" class="">
<option value="1">Text</option>
<option value="2">Option 1</option>
<option value="3">Option 2</option>
<option value="4">Option 3</option>
<option value="5">Option 4</option>
<option value="6">Option 5</option>
</select>
</div>
</div>
</div>
<div class="rtds-flex-1 md:rtds-flex-none">
<div class="rtds-input-field rtds-select-field rtds-field-inline rtds-select-field--sm">
<label for="select-field-2" class="rtds-input-field__label">
Ordina per
</label>
<div class="rtds-select rtds-select--light">
<select id="select-field-2" class="">
<option value="1">Text</option>
<option value="2">Option 1</option>
<option value="3">Option 2</option>
<option value="4">Option 3</option>
<option value="5">Option 4</option>
<option value="6">Option 5</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- CONTAINER PER EMPTY STATE - HA CONTENUTO SOLO SE NON CI SONO RISULTATI - DEVE ESSERE SEMPRE PRESENTE - CON I RISULTATI HA CLASSE -> rtds-sr-only -->
<div class="rtds-empty-state rtds-grid rtds-gap-4" aria-live="assertive" aria-atomic="true">
<!-- CONTENUTO EMPTY STATE - PRESENTE SOLO SE NON CI SONO RISULTATI -->
<div class="rtds-font-bold rtds-text-center rtds-grid rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20">
<svg class="rtds-icon rtds-fill-current rtds-w-16 rtds-h-16 rtds-content-03" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#outline--exclamation-circle" />
</svg>
<h3 class="rtds-heading-4">Non ci sono risultati per questi criteri di ricerca</h3>
</div>
</div>
</div>
</div>
{% extends '@search-results' %}
{% block title %}
<h2 class="rtds-heading-3">Nessun risultato trovato</h2>
{% endblock title %}
{% block emptyState %}
<!-- CONTENUTO EMPTY STATE - PRESENTE SOLO SE NON CI SONO RISULTATI -->
<div class="rtds-font-bold rtds-text-center rtds-grid rtds-gap-8 rtds-justify-center rtds-justify-items-center rtds-py-20">
{% render '@icon',{id: 'outline--exclamation-circle', size: 'rtds-w-16 rtds-h-16', classes: 'rtds-content-03'},true %}
<h3 class="rtds-heading-4">Non ci sono risultati per questi criteri di ricerca</h3>
</div>
{% endblock emptyState %}
{% block results %}
{% endblock results %}
{% block pagination %}
{% endblock pagination %}
{
"ariaBusy": false,
"srOnlyTitle": true,
"emptyState": true,
"sorting": true,
"resultsCount": 6,
"title": "<strong>230</strong> Servizi",
"resultsGridClasses": "md:rtds-grid-cols-2 lg:rtds-grid-cols-3",
"resultsCard": {
"variant": "--information-with-gradient"
}
}
@layer components {
.rtds-loading-status[aria-busy="true"] {
@apply rtds-w-full;
}
}
Il componente Search Results è stato sviluppato per visualizzare i risultati di una ricerca con filtri e ordinamento. Supporta diversi stati (caricamento, vuoto, con risultati) e include funzionalità di accessibilità integrate.
aria-busy e la classe rtds-loading-statusemptyState e la classe rtds-empty-statearia-live="polite" per gli aggiornamenti dei risultatiaria-live="assertive" per lo stato vuotosrOnlyTitle) per screen readeraria-busyIl componente deve essere utilizzato all’interno di un contesto di ricerca appropriato, tipicamente dopo un form di ricerca o una search box.
title: Personalizzazione del titolo della sezioneemptyState: Contenuto da mostrare quando non ci sono risultatiresults: Personalizzazione della griglia dei risultatipagination: Personalizzazione della paginazioneIl componente supporta diverse varianti configurabili tramite il file di configurazione:
has-container: Aggiunge un container responsivehas-padding: Aggiunge padding verticalehas-mobile-filters: Abilita i filtri per mobileloading: Mostra lo stato di caricamentoempty-state: Mostra lo stato vuotoariaBusy: boolean - gestisce lo stato di caricamento (default: false)srOnlyTitle: boolean - nasconde il titolo visivamente (default: true)emptyState: boolean - mostra lo stato vuoto (default: false)resultsCount: number - numero di risultati da mostrare (default: 6)resultsCard: string - tipo di card da utilizzare (default: ‘card–information-with-gradient’)resultsGridClasses: string - classi per la griglia dei risultatihasContainer: boolean - aggiunge un container responsivepadding: boolean - aggiunge padding verticalemobileFilters: boolean - abilita i filtri per mobilearia-live per annunciare i cambiamenti di statoaria-busy<div class="rtds-loading-status" aria-live="polite" aria-busy="true" role="status">
<!-- contenuto del titolo -->
</div>
<div class="rtds-hidden">
<!-- contenuto dei filtri e risultati -->
</div>aria-live="polite": annuncia i cambiamenti in modo non interruttivoaria-busy="true": indica che il contenuto è in fase di aggiornamentorole="status": identifica l’elemento come un elemento di statortds-hidden nasconde i filtri durante il caricamento<div class="rtds-empty-state rtds-grid rtds-gap-4" aria-live="assertive" aria-atomic="true">
<!-- contenuto empty state -->
</div>aria-live="assertive": annuncia i cambiamenti in modo prioritarioaria-atomic="true": annuncia l’intero contenuto dell’elementortds-empty-state è sempre presente, ma viene nascosta con rtds-sr-only quando ci sono risultati o in fase di loadingrtds-loading-status mostrerà il testo “Nessun risultato trovato”rtds-empty-state non avrà la classe rtds-sr-only e conterrà il markup dell’empty state<div class="rtds-loading-status" aria-live="polite" aria-busy="false" role="status">
<h2 class="rtds-heading-3 rtds-font-normal">
<strong>230</strong> risultati
</h2>
</div>aria-busy="false": indica che il contenuto è stabilesrOnlyTitle: gestisce la visibilità del titolo per screen readerrtds-sr-only nasconde visivamente il titolo ma lo mantiene accessibilerole="dialog"aria-modal="true"aria-labelledby per il titolo del dialogTransizione Caricamento → Risultati:
aria-busy passa da true a falsertds-hidden)rtds-sr-only)Transizione Risultati → Vuoto:
rtds-sr-only)aria-live="assertive" annuncia il cambiamentoTransizione Vuoto → Risultati:
rtds-sr-only)aria-live="polite" annuncia il cambiamentoAnnunci Contestuali:
aria-live="polite" per aggiornamenti non criticiaria-live="assertive" per cambiamenti di stato importantiGestione del Focus:
Feedback Visivi e Semantici: