Servizi pubblici e istruzione · Nuova risorsa

Sistema di progettazione Helsinki.

Componi gruppi di selezione HDS nativi, colori semantici per i messaggi e riepiloghi degli errori collegati in un flusso completo, eseguibile in locale, di revisione e correzione.

Guida OpenDesign8 capitoli24 voci di riferimentoGuida applicativa originale
01

Anteprima dell’interfaccia del sistema di progettazione sistema di design Helsinki

Prova anche a rivedere un numero insufficiente di argomenti, seguire il collegamento all’errore, correggere la selezione e tornare alla revisione.

Pianifica un pomeriggio dedicato alle competenzeApri l’esempio completo
CSS hds-core5.2.2 nativo; fallback Arial e logica applicativa locale originale. · Riferimento per l’implementazione
02

Riferimento al sistema di progettazione sistema di design Helsinki

Pacchetto hds-core5.2.2 CSS e indicazioni ufficiali per i moduli. Stili nativi; fallback Arial; regola originale sul numero minimo di selezioni.

Token tipografici

Fonte
Nome / regolaValore / configurazioneUtilizzo
--font-defaultHelsinkiGroteskPro, Arial, sans-serifI font Helsinki protetti da copyright non sono inclusi nel pacchetto Core; la demo usa il fallback Arial nativo.
--fontsize-body-s/m/l/xl14 /16 /18 /20pxAlla dimensione predefinita della radice; scegli un ruolo, non dimensioni arbitrarie per ogni campo.
--fontsize-heading-xxl/xl64 /48pxTitoli più grandi.
--fontsize-heading-xl-mobile40pxToken esplicito; l’anteprima cambia a 576px, una scelta dell’applicazione.
--fontsize-heading-l/m/s32 /24 /20pxTitoli secondari.
--lineheight-s/m/l/xl1 /1.2 /1.5 /1.75Moltiplicatori, non altezze in pixel.

Spaziatura dei componenti e del layout

Fonte
Nome / regolaValore / configurazioneUtilizzo
Component scale2,4,8,12,16,24,32,40,48,56,64,72pxDa spacing-4-xs a spacing-5-xl.
Layout scale16,24,32,48,64,96,128pxDa spacing-layout-2-xs a spacing-layout-2-xl.
Breakpoints320,576,768,992,1248,1440pxDa xs a xxl; i valori dei token dichiarati non creano di per sé media query.
Container widths288,544,720,944,1200pxLarghezze di riferimento da xs a xl.
Checkbox geometry24px size;2px border;3px focus outlineCSS Core5.2.2 effettivo.
Button minimum56px; square cornersBordo da 2px con padding ricavato da spacing-s/l.

Colori semantici e della palette

Fonte
Nome / regolaValore / configurazioneUtilizzo
Bus#0000bf Checkbox selezionata predefinita e tema del pulsante primario.
Coat of arms / focus#0072c6 Blu città distinto e ruolo del focus.
Copper#00d7a7 Palette di accento; linea dell’intestazione della demo.
Error / light#b01038 /#f6e2e6Feedback di convalida; non intercambiabile con il Brick decorativo.
Success / light#007a64 /#e2f5f3Ruolo di esito confermato.
Info / alert#0062b9 /#ffda07Ruoli di informazione e attenzione.
Text / secondary#1a1a1a /#595959black-90 e black-60.

Struttura e ripristino del modulo

Fonte
Nome / regolaValore / configurazioneUtilizzo
Selection groupfieldset + legendLa legenda descrive la scelta; le etichette descrivono le opzioni.
Vertical itemshds-selection-group__items--verticalEvita di forzare le opzioni lunghe in un’unica riga orizzontale.
Error summaryNotification error variant with linked error listPosiziona sotto il titolo del modulo; dopo un invio non riuscito, sposta il focus sul titolo.
Inline errorhds-selection-group__error-textMantieni visibili le istruzioni di aiuto durante la correzione.
Application ruleAt least two topicsConvalida dello scenario originale, non un’impostazione predefinita delle checkbox HDS.
03

Guida completa al sistema di progettazione sistema di design Helsinki

Una guida pratica per scegliere, applicare e valutare questo sistema in un’interfaccia reale.

DESIGN-helsinki.md

Indicazioni complete, un punto di partenza per l’implementazione e link alle fonti.

Scarica la guida

Sistema di progettazione sistema di design Helsinki: Core e limiti di React

Scegli l’implementazione che usi davvero

HDS fornisce Core CSS, componenti React e token di progettazione. Questo esempio usa hds-core5.2.2, il pacchetto scaricato e analizzato per la dimostrazione. I numeri delle release del repository possono differire dalla versione di un singolo pacchetto, quindi un tag più recente del repository non dimostra che questo esempio usi quella versione.

Da questa guida su OpenDesign

Core fornisce variabili di base e stili per i singoli componenti. Non include lo stato applicativo del modulo usato qui. La logica di selezione, convalida, revisione e modifica è originale JavaScript ed è realizzata con input nativi HTML e il modello documentato per i moduli HDS.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: tipografia e limiti dei font

Usa il fallback nativo in modo trasparente

La variabile del font indica prima HelsinkiGroteskPro, seguito da Arial e sans-serif. Il README di Core esclude esplicitamente i file dei font Helsinki per ragioni di copyright. L’anteprima mantiene il fallback, senza scaricare font soggetti a restrizioni né dichiarare implicitamente una resa con il marchio esatto.

Il token di base del corpo del testo è 16px con interlinea di 1.5. heading-xl è 48px e il token mobile è 40px; l’anteprima passa dall’uno all’altro a 576px. Questi sono valori nominati, ma una variabile CSS che contiene un breakpoint non attiva automaticamente il comportamento responsive. La media rule esplicita appartiene alla composizione dell’applicazione.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: due sistemi di spaziatura

Separa gli spazi tra componenti dal ritmo della pagina

HDS distingue una sequenza di spaziatura per i componenti da una sequenza più ampia per il layout. La prima comprende 2, 4, 8, 12, 16 e 24px, per poi crescere fino a 72px. La spaziatura del layout arriva a 128px. Usare spacing-layout-xl come spazio tra checkbox adiacenti sovraccaricherebbe il gruppo, anche se la variabile è valida.

Il componente checkbox definisce un controllo di 24px, un bordo da 2px e un contorno di focus da 3px. L’altezza minima del pulsante è 56px e gli angoli sono squadrati. L’anteprima conserva queste forme native; il modulo è contenuto in un contenitore applicativo con larghezza massima pari ai 720px di riferimento pubblicati.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: ruoli dei colori in un modulo

Non confondere i nomi della palette con quelli del feedback

Il tema interattivo predefinito usa il blu Bus, mentre il contorno del focus usa il blu Coat of arms. Il feedback di errore usa una tonalità berry distinta e una superficie di errore chiara. Un accento della palette come Copper può essere adatto all’intestazione, ma non dovrebbe sostituire il ruolo di errore solo perché risalta di più.

L’errore in linea del gruppo di selezione combina testo, un bordo sinistro a contrasto e un’icona. Non si affida soltanto al rosso. I collegamenti nel riepilogo degli errori usano il consueto colore interattivo, così è facile riconoscere il percorso per tornare al campo.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: anatomia di un gruppo di checkbox

Un gruppo comprende una domanda e più risposte

La struttura nativa è composta da un fieldset con legend, un contenitore per gli elementi e singoli wrapper per le checkbox. Ogni input precede immediatamente la propria etichetta, perché il foglio di stile sfrutta questa relazione per gli stati visivi. La legend spiega cosa selezionare; ogni etichetta indica un argomento disponibile.

La demo richiede almeno due argomenti: è una regola originale dell’applicazione. Le checkbox sono appropriate perché è possibile mantenere selezionate più opzioni. Un gruppo di pulsanti radio esprimerebbe una scelta esclusiva e sarebbe in contrasto con il compito. Il suggerimento del fieldset resta visibile prima e dopo la convalida.

html
<fieldset class="hds-selection-group" aria-describedby="topics-hint">
  <legend class="hds-selection-group__legend">Topics for your afternoon</legend>
  <p id="topics-hint">Choose at least two topics.</p>
  <div class="hds-selection-group__items hds-selection-group__items--vertical">
    <div class="hds-checkbox">
      <input class="hds-checkbox__input" type="checkbox" id="repair" value="Repair and reuse">
      <label class="hds-checkbox__label" for="repair">Repair and reuse</label>
    </div>
    <div class="hds-checkbox">
      <input class="hds-checkbox__input" type="checkbox" id="garden" value="Urban gardening">
      <label class="hds-checkbox__label" for="garden">Urban gardening</label>
    </div>
  </div>
</fieldset>

Riferimento del codice

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: errori collegati e ripristino

Porta il focus sul problema, poi conserva i dati inseriti

HDS consiglia di mostrare un riepilogo degli errori sotto il titolo del modulo dopo un invio non riuscito. L’elenco contiene collegamenti ai controlli con errori e il focus passa al titolo del riepilogo. La demo segue questa sequenza: una revisione con zero o un solo argomento mostra il riepilogo e il messaggio in linea; il collegamento sposta il focus sulla prima checkbox.

Dopo il primo tentativo, ogni modifica alla selezione verifica nuovamente il numero minimo. Quando sono selezionati due argomenti, entrambe le indicazioni di errore scompaiono senza cancellare le selezioni. Se un nuovo tentativo non riesce, il focus torna al titolo del riepilogo. La regola viene verificata di nuovo al momento della revisione; in un servizio reale, il feedback lato client non sostituisce la convalida lato server.

  1. Avvia la revisione senza selezionare argomenti e verifica che il focus passi al riepilogo.
  2. Segui il collegamento e seleziona due argomenti; verifica che l’errore scompaia.
  3. Apri la revisione locale, torna indietro per modificare gli argomenti e verifica che entrambe le selezioni siano mantenute.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: risorse ed esempio completo

Carica la base e i componenti selezionati

Il pacchetto Core separa base.css dagli stili dei componenti. Importare solo la base fornisce variabili e tipografia, ma non la struttura di checkbox e notifiche. La configurazione indica i file esatti usati in questo esempio, mantenendo l’insieme di risorse più leggero del bundle con tutti i componenti.

L’esempio completo include la convalida applicativa e il ripristino. Chiama lo stato finale revisione locale, perché non viene registrato né inviato nulla. Cancella selezione è un’azione esplicita che azzera le scelte e la cronologia di convalida, quindi porta il focus sul primo input; non viene attivata da un normale errore del campo.

  • base.css fornisce colori, spaziatura, tipografia e dimensioni di riferimento.
  • Gli stili checkbox e selection-group forniscono controlli raggruppati e feedback in linea.
  • Gli stili notification e button forniscono la superficie del riepilogo degli errori e le azioni.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Helsinki: cosa dimostra l’esempio

Dettagli di implementazione senza dichiarazioni ingannevoli sul servizio

L’anteprima mostra l’uso di stili reali dei componenti HDS, il focus da tastiera, la correzione e la conservazione dei dati a 1440, 768 e 390px. Non dichiara di aver superato una verifica esaustiva dell’accessibilità. Un vero servizio comunale multilingue richiede anche etichette localizzate, metadati linguistici adeguati, regole lato server e una risposta confermata dal backend del servizio.

Il codice sorgente è concesso in licenza MIT, ma il font personalizzato della città ha limiti d’uso propri. Questo esempio didattico indipendente usa argomenti fittizi per un programma e non riproduce l’identità ufficiale Helsinki. L’aspetto visibile e lo stato locale non devono essere confusi con una vera registrazione a un evento.

Leggi la specifica di supporto

Esempi di componenti del sistema di progettazione sistema di design Helsinki

Struttura nativa di checkbox raggruppate

Fieldset e legend definiscono la domanda; input ed etichette esprimono le risposte multiple.

html
<fieldset class="hds-selection-group" aria-describedby="topics-hint">
  <legend class="hds-selection-group__legend">Topics for your afternoon</legend>
  <p id="topics-hint">Choose at least two topics.</p>
  <div class="hds-selection-group__items hds-selection-group__items--vertical">
    <div class="hds-checkbox">
      <input class="hds-checkbox__input" type="checkbox" id="repair" value="Repair and reuse">
      <label class="hds-checkbox__label" for="repair">Repair and reuse</label>
    </div>
    <div class="hds-checkbox">
      <input class="hds-checkbox__input" type="checkbox" id="garden" value="Urban gardening">
      <label class="hds-checkbox__label" for="garden">Urban gardening</label>
    </div>
  </div>
</fieldset>

Riferimento del codice

Flusso completo di selezione con errori collegati

Focus sul riepilogo degli errori, correzione tramite collegamenti, revisione, modifica e cancellazione della selezione.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Plan a skills afternoon</title><link rel="stylesheet" href="vendor/hds-core-5.2.2/base.css"><link rel="stylesheet" href="vendor/hds-core-5.2.2/checkbox.css"><link rel="stylesheet" href="vendor/hds-core-5.2.2/selection-group.css"><link rel="stylesheet" href="vendor/hds-core-5.2.2/notification.css"><link rel="stylesheet" href="vendor/hds-core-5.2.2/button.css"><style>*{box-sizing:border-box}body{margin:0;padding:var(--spacing-layout-s) var(--spacing-s);font-family:var(--font-default);color:var(--color-black-90)}main{max-width:720px;margin:auto}h1{margin-top:8px}header{border-top:8px solid var(--color-copper);padding-top:var(--spacing-m)}.hds-selection-group{margin:24px 0}.hds-notification{margin:24px 0}.actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:32px}footer{font-size:14px;line-height:1.5;margin-top:32px;border-top:1px solid var(--color-black-20);padding-top:16px}#review{background:var(--color-silver-light);padding:24px;margin-top:24px}[hidden]{display:none!important}@media(max-width:575px){.heading-xl{font-size:var(--fontsize-heading-xl-mobile)}}button{max-width:100%}</style><main class="text-body"><header><small>COMMUNITY SKILLS · LOCAL PLAN</small><h1 class="heading-xl">Plan a skills afternoon</h1><p>Select at least two topics for an example programme. Nothing is registered or sent.</p></header><form id="form" novalidate><div id="summary" class="hds-notification hds-notification--error" hidden><div class="hds-notification__content"><h2 id="summary-heading" class="hds-notification__label" tabindex="-1">Check your topic selection</h2><div class="hds-notification__body"><ul><li><a href="#repair" id="error-link">Choose at least two topics</a></li></ul></div></div></div><fieldset class="hds-selection-group" aria-describedby="hint field-error"><legend class="hds-selection-group__legend">Topics for your afternoon</legend><p id="hint">Choose two or more. You can change your selection before reviewing the plan.</p><div class="hds-selection-group__items hds-selection-group__items--vertical"><div class="hds-checkbox"><input id="repair" type="checkbox" class="hds-checkbox__input" value="Repair and reuse"><label class="hds-checkbox__label" for="repair">Repair and reuse</label></div><div class="hds-checkbox"><input id="digital" type="checkbox" class="hds-checkbox__input" value="Everyday digital skills"><label class="hds-checkbox__label" for="digital">Everyday digital skills</label></div><div class="hds-checkbox"><input id="garden" type="checkbox" class="hds-checkbox__input" value="Urban gardening"><label class="hds-checkbox__label" for="garden">Urban gardening</label></div></div><div id="field-error" class="hds-selection-group__error-text" hidden>Choose at least two topics.</div></fieldset><p id="count" role="status">0 topics selected.</p><div class="actions"><button class="hds-button hds-button--primary" type="submit">Review local plan</button><button id="reset" class="hds-button hds-button--secondary" type="button">Clear selection</button></div></form><section id="review" hidden tabindex="-1"><h2 class="heading-m">Your selected topics</h2><ul id="selected"></ul><p>This is a local review, not a booking confirmation.</p><button id="change" class="hds-button hds-button--secondary">Change topics</button></section><footer>Native HDS Core5.2.2 styles with Arial fallback. Original selection rule and local review. No Helsinki branding, registration or backend.</footer></main><script>let attempted=false;const boxes=[...document.querySelectorAll('input[type=checkbox]')];const values=()=>boxes.filter(x=>x.checked);function validate(focus=false){const n=values().length;document.querySelector('#count').textContent=n+' topics selected.';const bad=attempted&&n<2;document.querySelector('#summary').hidden=!bad;document.querySelector('#field-error').hidden=!bad;boxes.forEach(x=>{if(bad)x.setAttribute('aria-invalid','true');else x.removeAttribute('aria-invalid')});if(bad&&focus)document.querySelector('#summary-heading').focus();return !bad}boxes.forEach(x=>x.onchange=()=>validate());document.querySelector('#error-link').onclick=e=>{e.preventDefault();boxes[0].focus()};document.querySelector('#form').onsubmit=e=>{e.preventDefault();attempted=true;if(!validate(true))return;const list=document.querySelector('#selected');list.replaceChildren();values().forEach(x=>{const li=document.createElement('li');li.textContent=x.value;list.append(li)});document.querySelector('#form').hidden=true;document.querySelector('#review').hidden=false;document.querySelector('#review').focus()};document.querySelector('#change').onclick=()=>{document.querySelector('#form').hidden=false;document.querySelector('#review').hidden=true;boxes[0].focus()};document.querySelector('#reset').onclick=()=>{boxes.forEach(x=>x.checked=false);attempted=false;validate();boxes[0].focus()};</script></html>

Riferimento del codice

04

Configurazione dell’agente per il sistema di progettazione sistema di design Helsinki

Punto di partenza per l’implementazione

Percorsi esatti delle risorse Core. Il codice applicativo gestisce la convalida e la revisione; HelsinkiGroteskPro non è incluso. Lo ZIP dell’esempio completo funzionante, disponibile in Fonti, include anche le dipendenze esatte dell’anteprima e il documento completo. Estrailo, esegui python3 -m http.server 8080 in quella directory, quindi apri http://localhost:8080/helsinki.html. Non aprire gli esempi basati su moduli tramite file://.

bash
npm install [email protected]
# CSS imports in a bundler:
# import 'hds-core/lib/base.css';
# import 'hds-core/lib/components/checkbox/checkbox.css';
# import 'hds-core/lib/components/selection-group/selection-group.css';
# import 'hds-core/lib/components/notification/notification.css';
# import 'hds-core/lib/components/button/button.css';
# In plain HTML, copy these files into public assets and link base.css first.
# HelsinkiGroteskPro is not bundled; the native font stack falls back to Arial.

Un prompt per il tuo progetto

Prompt per l’agente
Usa HDS Core5.2.2 base e i componenti selezionati CSS. Raggruppa le checkbox correlate con fieldset/legend, mantieni le etichette e i suggerimenti e usa token semantici per gli errori. Dopo una revisione non riuscita, mostra gli errori collegati sotto il titolo del modulo e porta il focus sul titolo del riepilogo. Ripeti la verifica dopo la correzione, conserva i valori selezionati e distingui la revisione locale da un invio confermato dal server.
05

Fonti e ambito del sistema di progettazione sistema di design Helsinki

Esempio indipendente OpenDesign. Nessuna risorsa per il font Helsinki né identità del servizio; nessuna registrazione o risposta dal backend.