Services publics et administration · Nouvelle ressource

Système de design GOV.UK.

Créez un parcours de questions et de vérification des réponses dans le style de GOV.UK, avec l’échelle typographique actuelle de la v6, un espacement adaptatif, des couleurs fonctionnelles, une validation liée et une intégration concrète au front-end.

Guide OpenDesign8 chapitres37 entrées de référenceGuide de l’application d’origine
01

Aperçu de l’interface système de design GOV.UK

Soumettez des champs vides, suivez les liens vers les erreurs, corrigez les réponses et modifiez une valeur depuis l’écran de récapitulatif. Aucune information ne quitte la page.

Demande de renseignements sur un événement : question, validation et vérification des réponsesOuvrir l’exemple complet
GOV.UK Frontend 6.5.1 natif CSS, Button et ErrorSummary JavaScript, servis localement. Police Helvetica alternative ; validation locale originale du formulaire et navigation dans le récapitulatif. · Référence de mise en œuvre
02

Référence de conception système de design GOV.UK

GOV.UK Frontend 6.5.1 et documentation v6 actuelle, vérifiés le 3 octobre 2026. Les valeurs hexadécimales constituent un instantané de référence ; en production, privilégiez les fonctions Sass nommées. L’aperçu charge les ressources locales officielles CSS et JavaScript avec une police alternative et une identité indépendante.

Typographie et échelle responsive

Source
Nom / règleValeur / configurationUtilisation
govuk-heading-xl32px / 35px → 48px / 50pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; titre de page.
govuk-heading-l27px / 30px → 36px / 40pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; titre de question.
govuk-heading-m21px / 25px → 24px / 30pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; titre de section.
govuk-body-l21px / 25px → 24px / 30pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; texte d’introduction.
govuk-body19px / 25px → 19px / 25pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; texte courant.
govuk-body-s16px / 20px → 16px / 20pxTaille de police / interligne en dessous et au-dessus du seuil tablette ; texte complémentaire.

Éligibilité de la police

Source
Nom / règleValeur / configurationUtilisation
GDS Transportservice.gov.uk servicesLa police officielle est obligatoire pour les services hébergés sur ce sous-domaine.
Independent previewHelvetica Neue, Helvetica, Arial, sans-serifPile de polices alternative recommandée par les consignes Frontend sans marque ; aucun fichier Transport n’est chargé.

Espacement responsive et statique

Source
Nom / règleValeur / configurationUtilisation
unit 00px → 0px; static 0pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 15px → 5px; static 5pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 210px → 10px; static 10pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 315px → 15px; static 15pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 415px → 20px; static 20pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 515px → 25px; static 25pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 620px → 30px; static 30pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 725px → 40px; static 40pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 830px → 50px; static 50pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.
unit 940px → 60px; static 60pxResponsive, de petit à grand ; govuk-spacing(unit) reste statique.

Noms de couleurs fonctionnels

Source
Nom / règleValeur / configurationUtilisation
govuk-functional-colour("text")#0b0c0c Contenu principal lisible
govuk-functional-colour("secondary-text")#484949 Conseils et informations complémentaires
govuk-functional-colour("link")#1a65a6 Liens courants
govuk-functional-colour("link-hover")#0f385c Survol d’un lien
govuk-functional-colour("link-visited")#54319f Destinations visitées
govuk-functional-colour("border")#cecece Séparateurs structurels
govuk-functional-colour("input-border")#0b0c0c Contour de saisie
govuk-functional-colour("focus")#ffdd00 Focus clavier uniquement
govuk-functional-colour("focus-text")#0b0c0c Texte jaune lors du focus
govuk-functional-colour("error")#ca3535 Retour de validation
govuk-functional-colour("success")#0f7a52 Confirmation de réussite
govuk-functional-colour("body-background")#ffffff Surface de lecture

Principes de mise en page

Source
Nom / règleValeur / configurationUtilisation
govuk-width-container1020px maximumLargeur par défaut du contenu extérieur ; peut être remplacée si le contenu le justifie réellement.
govuk-grid-row + govuk-grid-column-two-thirds2/3 at wider widthsGardez les questions et le texte dans une colonne lisible ; empilez les éléments sur les petites largeurs.
govuk-main-wrapperMain content regionÀ utiliser sur le repère principal, à l’intérieur du conteneur de largeur.

Points de rupture et contours des commandes

Source
Nom / règleValeur / configurationUtilisation
$govuk-breakpoints.mobile320pxClé de point de rupture Sass, et non mise en page supplémentaire obligatoire.
$govuk-breakpoints.tablet641pxPoint de rupture par défaut pour la typographie, l’espacement et la grille responsive ; la documentation des styles le décrit comme supérieur à 640px.
$govuk-breakpoints.desktop769pxPoint de rupture nommé supplémentaire.
$govuk-focus-width3pxÉpaisseur du contour de focus ; à associer au traitement du focus documenté.
03

Guide complet système de design GOV.UK

Un guide pratique pour choisir, appliquer et évaluer ce système dans une interface réelle.

DESIGN-gov-uk.md

Des conseils complets, un point de départ pour la mise en œuvre et des liens vers les sources.

Télécharger le guide

Version et identité système de design GOV.UK

Une référence v6 à l’identité indépendante

Cette référence s’appuie sur la documentation v6, notamment sur sa typographie plus grande sur petit écran et ses couleurs fonctionnelles révisées. Une ancienne capture d’écran peut donc afficher des valeurs différentes. Le tableau ci-dessus indique les valeurs par défaut documentées actuellement, sans mélanger discrètement les versions.

Extrait de ce guide OpenDesign

L’étude en ligne porte sur une demande fictive concernant un événement communautaire. Elle n’utilise ni couronne, ni logotype GOV.UK, ni police Transport, ni véritable point de terminaison de soumission. Le contenu de la tâche et les règles de validation locale relèvent des choix de l’application ; la structure des composants s’appuie sur les exemples officiels associés.

Consultez la spécification associée

Choisir la bonne option typographique

Pour un service éligible sur service.gov.uk, GDS Transport fait partie de l’implémentation officielle. Les services publics sur d’autres domaines doivent utiliser une autre police. Cette étude indépendante suit la solution recommandée Helvetica Neue, Helvetica, Arial, sans-serif ; changer de police ne nécessite pas d’abandonner la hiérarchie du système.

Consultez la spécification associée

Typographie et rythme de lecture système de design GOV.UK

Utilisez la paire complète taille et interligne

Utilisez govuk-heading-l pour la question et govuk-body pour le texte d’accompagnement. Sur les petits écrans, le titre est en 27/30px ; sur les écrans plus larges, il passe à 36/40px. En v6, le texte reste en 19/25px. Une taille de 16px pour le texte sur petit écran reproduirait le comportement d’une version antérieure plutôt que celui de cette référence.

Le tableau des tailles présente les deux valeurs, car une capture d’écran prise à une seule taille de fenêtre ne permet pas d’établir la règle responsive. En production, CSS utilise des unités relatives. Une classe telle que govuk-heading-l détermine l’apparence, mais pas si l’élément sémantique doit être un h1 ou un h2.

scss
.app-question-note {
  @include govuk-font($size: 19);
}
// Size and line-height only, without changing the font family:
.app-existing-font { @include govuk-font-size($size: 19); }

Référence du code

Consultez la spécification associée

Système de design GOV.UK Espacement et largeur de page

Les unités responsive ne correspondent pas à des pixels fixes

L’unité 6 convient entre des groupes de questions : elle donne 20px sur un écran étroit et 30px au-delà du seuil tablette. L’utilitaire statique govuk-spacing(6) renvoie 30px quelle que soit la largeur. Choisir l’utilitaire modifie donc le comportement, même si les deux versions ont le même rendu sur ordinateur.

scss
.app-question-group {
  @include govuk-responsive-margin(6, "bottom");
}
.app-fixed-inset { padding: govuk-spacing(3); }

Référence du code

Consultez la spécification associée

Placez une colonne de lecture à l’intérieur du conteneur

Le conteneur standard a une largeur maximale de 1020px. À l’intérieur, une colonne de grille occupant les deux tiers limite la largeur des questions tout en conservant l’alignement de la structure générale de la page. Sur petit écran, la présentation s’empile naturellement. Notre aperçu conserve cette hiérarchie de lecture au lieu d’étaler chaque champ dans une carte de tableau de bord.

html
<div class="govuk-width-container">
  <main class="govuk-main-wrapper" id="main-content">
    <div class="govuk-grid-row">
      <div class="govuk-grid-column-two-thirds">
        <h1 class="govuk-heading-l">Tell us about the event</h1>
        <!-- Question form -->
      </div>
    </div>
  </main>
</div>

Référence du code

Consultez la spécification associée

Système de design GOV.UK Couleurs et focus

Utilisez des rôles plutôt que d’imiter d’anciennes captures d’écran

Dans v6, la couleur fonctionnelle des liens est #1a65a6 et celle des erreurs est #ca3535. Dans une véritable compilation Sass, utilisez govuk-functional-colour("link") et govuk-functional-colour("error") afin qu’une mise à niveau puisse reprendre la palette en amont. Ces rôles fonctionnels ne se confondent pas avec le choix d’une couleur générale rouge ou bleue pour une illustration.

Le jaune est réservé au focus. Il ne doit pas devenir la couleur par défaut d’une sélection ou d’un accent promotionnel. L’aperçu associe le jaune à un texte sombre et à un contour sombre bien visible ; une erreur reste identifiable par son texte et son emplacement, pas uniquement par le rouge.

scss
.app-supporting-text { color: govuk-functional-colour("secondary-text"); }
.app-custom-error { color: govuk-functional-colour("error"); }

Référence du code

Consultez la spécification associée

Système de design GOV.UK Composants de question

Un champ est un ensemble cohérent

L’exemple de saisie combine govuk-form-group, govuk-label, govuk-hint et govuk-input. Le libellé cible l’ID du champ ; aria-describedby pointe vers l’indication. En cas d’erreur, ajoutez également l’ID du message d’erreur, ainsi que les classes d’erreur. Une bordure rouge sans cette relation ne constitue pas une reproduction complète.

Cette demande regroupe le nom de l’événement et l’adresse e-mail de contact. Il s’agit de deux valeurs avec leurs propres libellés, réunies dans une courte démarche, et non d’une consigne visant à placer chaque champ sur une page distincte. Dans l’aperçu, les deux champs sont obligatoires uniquement pour illustrer la validation ; cela ne définit aucune exigence réelle de permis.

  • Libellé permanent : Nom de l’événement.
  • Indication permanente : Utilisez le nom indiqué dans les informations sur votre événement.
  • Message d’erreur permettant de corriger la saisie : Saisissez un nom d’événement.

Consultez la spécification associée

Le balisage natif et le comportement de l’application ont des rôles différents

GOV.UK Frontend met en forme les composants et les enrichit. Il ne détermine pas quelles adresses e-mail sont acceptées par ce service, n’enregistre pas de brouillon et ne reçoit pas les demandes. Dans l’aperçu, JavaScript valide les deux champs et stocke leurs valeurs uniquement sur la page en cours. Le rechargement efface les données de l’étude.

Consultez la spécification associée

Système de design GOV.UK Correction des erreurs par lien

Faites du résumé un raccourci vers la correction

Après une action Continuer qui échoue à la validation, affichez le résumé des erreurs avant le formulaire et déplacez le focus dessus. Chaque lien de la liste cible la réponse correspondante. Pour un champ de texte unique, ciblez son ID ; pour un choix groupé, ciblez le premier contrôle approprié, conformément aux recommandations officielles.

Le résumé natif utilise data-module="govuk-error-summary" pour son amélioration progressive. L’aperçu n’insère le résumé qu’en cas d’échec de la validation, puis instancie ErrorSummary à partir du module local 6.5.1. La bibliothèque gère le focus et la navigation par liens ; l’application fournit les messages, conserve les valeurs et supprime les erreurs obsolètes.

Consultez la spécification associée

Essayez le parcours de correction

Cliquez sur Continuer en laissant les deux champs vides. Suivez le lien de l’erreur sur le nom de l’événement, saisissez un titre fictif, puis une adresse e-mail non valide. Cliquez de nouveau sur Continuer : seule l’erreur restante doit s’afficher et le titre doit être conservé. Corrigez l’adresse pour accéder à la vérification. Le comportement attendu est ainsi visible, au lieu d’afficher une erreur permanente dans un exemple.

Consultez la spécification associée

Système de design GOV.UK Vérifier les réponses et les modifier

Utilisez une liste de définitions, pas un tableau de données

L’écran de vérification des réponses contient un govuk-summary-list. Chaque ligne comprend une clé dt, une valeur dd et une zone d’actions dd. Un libellé masqué après Modifier précise la réponse concernée. Les noms d’événement longs passent à la ligne dans la valeur sans masquer le lien de modification.

L’action de modification réaffiche le formulaire et place le focus sur le champ sélectionné. En continuant, la validation est relancée et la vérification affiche les réponses mises à jour. Le retour au formulaire relève du code de l’application ; le système de design fournit la structure de présentation.

Consultez la spécification associée

Arrêtez-vous à la limite de ce qui est réellement pris en charge

Cette étude s’arrête à la vérification, car aucun service ne reçoit les données. Une véritable page de vérification précède l’action d’envoi et doit afficher les informations qui seront envoyées. Une application comportant des déclarations ou une confirmation côté serveur nécessite une logique de service supplémentaire ; un panneau vert ne peut pas produire ce résultat.

  1. Complétez les deux réponses fictives, puis passez à la vérification.
  2. Choisissez Modifier le nom de l’événement ; ne modifiez que cette réponse.
  3. Continuez et vérifiez que le titre corrigé et l’adresse e-mail conservée sont tous deux présents.

Consultez la spécification associée

Système de design GOV.UK Intégration frontend

Compilez le fichier Sass d’entrée sans marque

La configuration ci-dessous utilise govuk-frontend@6 et Dart Sass avec l’importateur de paquets Node. Elle compile la configuration de polices sans marque documentée et copie la distribution du navigateur JavaScript. Validez le fichier de verrouillage résolu afin que la version exacte soit consignée dans un véritable projet.

L’exemple ne charge pas Transport et n’utilise pas d’images gouvernementales. Un service utilisant une marque officielle doit également servir les ressources officielles via le chemin d’accès documenté. Les applications qui utilisent un autre outil de compilation peuvent conserver le même module Sass et le même point d’entrée initAll, en adaptant leur empaquetage.

Consultez la spécification associée

Initialisez les composants une fois leur balisage en place

L’aperçu autonome utilise les versions officielles copiées localement de CSS et JavaScript, en version 6.5.1. Une surcharge typographique de portée limitée remplace Transport dans toute l’étude. La validation du formulaire et l’écran de récapitulatif relèvent du code de l’application, tandis que l’amélioration de Button et d’ErrorSummary provient de la bibliothèque. La recette de compilation Sass distincte décrit la configuration configurable recommandée ; cette compilation n’a pas été exécutée ici.

Consultez la spécification associée

Exemples de composants du système de design système de design GOV.UK

Champ de saisie : libellé, texte d’aide et erreur en ligne

L’état d’exemple ajoute le modificateur d’erreur au groupe et au champ de saisie. La description du champ associe, par leurs ID, le texte d’aide persistant et l’erreur actuelle.

html
<div class="govuk-form-group govuk-form-group--error">
  <label class="govuk-label" for="event-name">Event name</label>
  <div id="event-name-hint" class="govuk-hint">Use the name shown on your event information.</div>
  <p id="event-name-error" class="govuk-error-message">
    <span class="govuk-visually-hidden">Error:</span> Enter an event name
  </p>
  <input class="govuk-input govuk-input--error" id="event-name"
    name="eventName" type="text"
    aria-describedby="event-name-hint event-name-error">
</div>

Référence du code

  • Dans l’état valide, supprimez le paragraphe d’erreur, les modificateurs d’erreur et l’ID de l’erreur dans aria-describedby.
  • Conservez la valeur réelle en cas d’échec de la validation ; utilisez une sortie serveur échappée ou l’affectation de texte/valeur au DOM.

Récapitulatif des erreurs : accéder à la réponse

Placez le récapitulatif avant le contenu de la question. Son message correspond à l’erreur en ligne et son lien cible le champ de saisie, et non un conteneur sans rapport.

html
<div class="govuk-error-summary" data-module="govuk-error-summary">
  <div role="alert">
    <h2 class="govuk-error-summary__title">There is a problem</h2>
    <div class="govuk-error-summary__body">
      <ul class="govuk-list govuk-error-summary__list">
        <li><a href="#event-name">Enter an event name</a></li>
      </ul>
    </div>
  </div>
</div>

Référence du code

  • Dans une implémentation native, l’initialisation du frontend fournit le comportement de mise au focus du récapitulatif.
  • Dans l’étude interactive, un nouvel ErrorSummary est créé après l’insertion de chaque récapitulatif d’échec de validation ; la validation de l’application reste distincte.

Vérifier les réponses : une liste récapitulative sémantique

Une liste de définitions associe le libellé de la réponse à sa valeur et à une destination de modification précise. Le suffixe masqué permet de distinguer les liens « Modifier » répétés.

html
<dl class="govuk-summary-list">
  <div class="govuk-summary-list__row">
    <dt class="govuk-summary-list__key">Event name</dt>
    <dd class="govuk-summary-list__value">Riverside community picnic</dd>
    <dd class="govuk-summary-list__actions">
      <a class="govuk-link" href="/event-details?returnTo=check-answers">
        Change<span class="govuk-visually-hidden"> event name</span>
      </a>
    </dd>
  </div>
</dl>

Référence du code

  • Le paramètre returnTo est une convention de l’application utilisée ici, et non un élément de Frontend API.
  • Revenez de la modification au récapitulatif en conservant toutes les autres réponses.

Exemple autonome complet

Le document complet comprend sa mise en page, ses contrôles et son initialisation. Extrayez l’archive d’exemple liée pour obtenir les ressources de fournisseur avec leurs chemins relatifs exacts, puis servez le contenu via HTTP.

html
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Event enquiry — OpenDesign component study</title><link rel="stylesheet" href="vendor/govuk-6.5.1/govuk-frontend.min.css"><style>
body{margin:0;background:#fff}body,body *,body *::before,body *::after{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important}[hidden]{display:none!important}.study-header{border-bottom:1px solid #cecece;padding:15px 0;background:#f3f3f3}.study-header p{margin:0}.study-header strong{display:block;margin-bottom:5px}.study-note{border-top:1px solid #cecece;padding-top:20px;margin-top:30px}.study-actions{display:flex;gap:20px;align-items:baseline;flex-wrap:wrap}.govuk-summary-list__value{overflow-wrap:anywhere}main:focus,h1:focus{outline:none}.govuk-width-container{max-width:1020px}.study-tools{margin:20px 0}.study-tools button{font:inherit;background:none;border:0;padding:0;color:#1a65a6;text-decoration:underline;cursor:pointer}.study-tools button:focus{outline:3px solid #ffdd00;background:#ffdd00;color:#0b0c0c}.study-header .govuk-body-s{max-width:75ch}
</style></head><body class="govuk-template__body"><script>document.body.className+=' js-enabled'+('noModule' in HTMLScriptElement.prototype?' govuk-frontend-supported':'');</script>
<a class="govuk-skip-link" href="#main-content">Skip to main content</a>
<header class="study-header"><div class="govuk-width-container"><p class="govuk-body-s"><strong>OpenDesign · Component study</strong>GOV.UK Frontend 6.5.1 with an alternative font. Fictional enquiry; no information is sent.</p></div></header>
<main class="govuk-width-container govuk-main-wrapper" id="main-content"><div class="govuk-grid-row"><div class="govuk-grid-column-two-thirds">
<section id="questions"><div id="errors"></div><h1 class="govuk-heading-l" id="question-title" tabindex="-1">Tell us about the event</h1><p class="govuk-body">Enter fictional details to try linked validation and the check-answers pattern.</p>
<form id="event-form" novalidate>
<div class="govuk-form-group" id="name-group"><label class="govuk-label" for="event-name">Event name</label><div class="govuk-hint" id="event-name-hint">Use the name shown on your event information.</div><input class="govuk-input" id="event-name" name="eventName" type="text" aria-describedby="event-name-hint"></div>
<div class="govuk-form-group" id="email-group"><label class="govuk-label" for="contact-email">Contact email</label><div class="govuk-hint" id="contact-email-hint">For example, [email protected]. Use a fictional address.</div><input class="govuk-input" id="contact-email" name="email" type="email" spellcheck="false" autocomplete="email" aria-describedby="contact-email-hint"></div>
<button class="govuk-button" data-module="govuk-button" type="submit">Continue to check answers</button>
</form><div class="study-tools govuk-body-s"><button id="fill" type="button">Use example details</button></div></section>
<section id="review" hidden><a class="govuk-back-link" href="#questions" id="back">Back</a><h1 class="govuk-heading-l govuk-!-margin-top-6" tabindex="-1" id="review-title">Check your answers</h1><dl class="govuk-summary-list"><div class="govuk-summary-list__row"><dt class="govuk-summary-list__key">Event name</dt><dd class="govuk-summary-list__value" id="review-name"></dd><dd class="govuk-summary-list__actions"><a class="govuk-link change" href="#event-name" data-field="event-name">Change<span class="govuk-visually-hidden"> event name</span></a></dd></div><div class="govuk-summary-list__row"><dt class="govuk-summary-list__key">Contact email</dt><dd class="govuk-summary-list__value" id="review-email"></dd><dd class="govuk-summary-list__actions"><a class="govuk-link change" href="#contact-email" data-field="contact-email">Change<span class="govuk-visually-hidden"> contact email</span></a></dd></div></dl><h2 class="govuk-heading-m">This example ends at review</h2><p class="govuk-body">Nothing has been submitted. Your answers stay in this page until it is reset or reloaded.</p><button class="govuk-button govuk-button--secondary" data-module="govuk-button" id="reset" type="button">Start again</button></section>
<aside class="study-note"><h2 class="govuk-heading-s">Try the recovery path</h2><ol class="govuk-list govuk-list--number"><li>Continue with empty fields to show the error summary.</li><li>Follow an error link, enter a title and an invalid email.</li><li>Correct the email, then change an answer from review.</li></ol><p class="govuk-body-s">Native component CSS and ErrorSummary behaviour. Local application logic only. No government logo, Transport font, external request or stored account.</p><p class="govuk-body-s"><a class="govuk-link" href="https://design-system.service.gov.uk/components/error-summary/" target="_blank" rel="noreferrer">Official error summary reference</a> · <a class="govuk-link" href="vendor/govuk-6.5.1/LICENSE.txt">Frontend licence</a></p></aside>
</div></div></main><script type="module">
import {initAll, ErrorSummary} from './vendor/govuk-6.5.1/govuk-frontend.min.js';
initAll();
const q=document.querySelector('#questions'),r=document.querySelector('#review'),form=document.querySelector('#event-form'),holder=document.querySelector('#errors');
const fields=[{id:'event-name',group:'name-group',empty:'Enter an event name'},{id:'contact-email',group:'email-group',empty:'Enter a contact email',invalid:'Enter an email address in the correct format, like [email protected]'}];
function clearErrors(){holder.replaceChildren();for(const f of fields){document.getElementById(f.group).classList.remove('govuk-form-group--error');const input=document.getElementById(f.id);input.classList.remove('govuk-input--error');input.removeAttribute('aria-invalid');input.setAttribute('aria-describedby',f.id+'-hint');document.getElementById(f.id+'-error')?.remove();}document.title='Event enquiry — OpenDesign component study';}
function edit(id='event-name'){r.hidden=true;q.hidden=false;document.getElementById(id).focus();}
form.addEventListener('submit',event=>{event.preventDefault();clearErrors();const errors=[];for(const f of fields){const input=document.getElementById(f.id);const value=input.value.trim();const message=!value?f.empty:(f.id==='contact-email'&&(!input.validity.valid||!value.includes('@'))?f.invalid:null);if(message){errors.push({id:f.id,message});document.getElementById(f.group).classList.add('govuk-form-group--error');input.classList.add('govuk-input--error');input.setAttribute('aria-invalid','true');input.setAttribute('aria-describedby',f.id+'-hint '+f.id+'-error');const p=document.createElement('p');p.id=f.id+'-error';p.className='govuk-error-message';const hidden=document.createElement('span');hidden.className='govuk-visually-hidden';hidden.textContent='Error: ';p.append(hidden,document.createTextNode(message));input.before(p);}}
if(errors.length){const summary=document.createElement('div');summary.className='govuk-error-summary';summary.dataset.module='govuk-error-summary';summary.innerHTML='<div role="alert"><h2 class="govuk-error-summary__title">There is a problem</h2><div class="govuk-error-summary__body"><ul class="govuk-list govuk-error-summary__list"></ul></div></div>';for(const err of errors){const li=document.createElement('li'),a=document.createElement('a');a.href='#'+err.id;a.textContent=err.message;li.append(a);summary.querySelector('ul').append(li);}holder.append(summary);new ErrorSummary(summary);document.title='Error: Event enquiry — OpenDesign component study';return;}
document.getElementById('review-name').textContent=document.getElementById('event-name').value;document.getElementById('review-email').textContent=document.getElementById('contact-email').value;q.hidden=true;r.hidden=false;document.getElementById('review-title').focus();document.title='Check your answers — OpenDesign component study';});
document.querySelectorAll('.change').forEach(a=>a.addEventListener('click',e=>{e.preventDefault();edit(a.dataset.field)}));document.getElementById('back').addEventListener('click',e=>{e.preventDefault();edit()});document.getElementById('fill').addEventListener('click',()=>{clearErrors();document.getElementById('event-name').value='Riverside community picnic';document.getElementById('contact-email').value='[email protected]';document.getElementById('event-name').focus()});document.getElementById('reset').addEventListener('click',()=>{form.reset();clearErrors();edit();document.getElementById('question-title').focus()});
</script></body></html>

Référence du code

  • Téléchargez l’exemple complet depuis les sources. Son fichier README indique la commande exacte pour le lancer localement.
  • Conservez des chemins relatifs pour les ressources de fournisseur par rapport à ce document ; l’archive contient toutes les ressources utilisées par cet aperçu.
04

Configuration de l’agent IA système de design GOV.UK

Point de départ de l’implémentation

Placez séparément les commandes shell, le contenu de app.scss et les fragments HTML aux emplacements indiqués. L’aperçu utilise des ressources officielles 6.5.1 copiées localement, avec une surcharge typographique ; cette recette de compilation Sass est documentée, mais n’a pas été compilée dans cet espace de travail. L’archive ZIP complète de l’exemple fonctionnel, disponible dans Sources, fournit également les dépendances exactes de l’aperçu et le document complet. Extrayez-la, exécutez python3 -m http.server 8080 dans ce répertoire, puis ouvrez http://localhost:8080/gov-uk.html. N’ouvrez pas les exemples utilisant des modules via file://.

sh / scss / html
# Run in a project directory
npm install [email protected]
npm install --save-dev sass
mkdir -p public/assets

# Save the following as app.scss
@use "pkg:govuk-frontend" as * with (
  $govuk-font-family: ("Helvetica Neue", Helvetica, Arial, sans-serif)
);

# Compile, then copy the browser module
npx sass --pkg-importer=node app.scss public/assets/app.css
cp node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js public/assets/

<!-- In the HTML head -->
<link rel="stylesheet" href="/assets/app.css">
<!-- At the start of body -->
<script>document.body.className += ' js-enabled' + ('noModule' in HTMLScriptElement.prototype ? ' govuk-frontend-supported' : '');</script>
<!-- After the question / summary markup -->
<script type="module">
  import { initAll } from '/assets/govuk-frontend.min.js';
  initAll();
</script>

Un prompt pour votre projet

Prompt pour l’agent IA
Mettez en œuvre le formulaire de demande d’événement à deux champs avec GOV.UK Frontend v6 et la configuration de police Helvetica sans identité de marque décrite dans ce guide. Utilisez les structures réelles form-group/input/error-summary et summary-list, des erreurs en ligne associées, la conservation des réponses, des liens « Modifier » ciblés et une finalisation limitée au récapitulatif. Appliquez les règles typographiques et d’espacement adaptatives documentées au moyen des classes Frontend. Conservez l’identité réelle du projet et ne créez ni soumission officielle ni résultat de backend inventé. Vérifiez les états : champs vides, adresse e-mail invalide, correction, récapitulatif et modification d’une réponse.
05

Sources et périmètre système de design GOV.UK

Étude indépendante d’une application OpenDesign utilisant les composants CSS et JavaScript de GOV.UK Frontend 6.5.1. Aucun logo gouvernemental, aucune police Transport, aucun service officiel, aucune soumission réelle ni certification de conformité ne sont sous-entendus. Les règles du formulaire et la navigation du récapitulatif sont du code original de l’application.