Государственные услуги · Новый ресурс

Дизайн-система GOV.UK.

Создайте путь в стиле GOV.UK: ответьте на вопросы и проверьте ответы. Используйте актуальную типографическую шкалу v6, адаптивные отступы, функциональные цвета, связанную валидацию и конкретный пример интеграции Frontend.

Руководство OpenDesign8 глав37 справочных записейАвторское руководство по приложению
01

Дизайн-система GOV.UK Предварительный просмотр интерфейса

Отправьте пустые поля, перейдите по ссылкам на ошибки, исправьте ответы и измените значение на экране проверки. Данные не покидают страницу.

Запрос об участии в мероприятии: вопрос, проверка и подтверждение ответовОткрыть полный пример
Нативные GOV.UK Frontend 6.5.1 CSS, Button и ErrorSummary JavaScript, загружаются локально. Альтернативный шрифт Helvetica; исходная локальная проверка формы и переходы к проверке ответов. · Справочник по реализации
02

Дизайн-система GOV.UK Справочник по дизайну

GOV.UK Frontend 6.5.1 и актуальная документация v6, проверены 3 октября 2026 года. Значения HEX отражают снимок справочных данных; в рабочем проекте предпочтительнее использовать именованные функции Sass. В предварительном просмотре локально загружаются официальные CSS и JavaScript, используется альтернативный шрифт и независимая идентичность.

Шрифт и адаптивная типографика

Источник
Название / правилоЗначение / конфигурацияПрименение
govuk-heading-xl32px / 35px → 48px / 50pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; заголовок страницы.
govuk-heading-l27px / 30px → 36px / 40pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; заголовок вопроса.
govuk-heading-m21px / 25px → 24px / 30pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; заголовок раздела.
govuk-body-l21px / 25px → 24px / 30pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; вводный текст.
govuk-body19px / 25px → 19px / 25pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; обычный текст.
govuk-body-s16px / 20px → 16px / 20pxРазмер шрифта / высота строки ниже и выше границы планшетного размера; вспомогательный текст.

Требования к шрифту

Источник
Название / правилоЗначение / конфигурацияПрименение
GDS Transportservice.gov.uk servicesДля сервисов на этом поддомене обязателен официальный шрифт.
Independent previewHelvetica Neue, Helvetica, Arial, sans-serifАльтернативный стек шрифтов, рекомендованный руководством Frontend без брендинга; файлы Transport не загружаются.

Адаптивные и фиксированные интервалы

Источник
Название / правилоЗначение / конфигурацияПрименение
unit 00px → 0px; static 0pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 15px → 5px; static 5pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 210px → 10px; static 10pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 315px → 15px; static 15pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 415px → 20px; static 20pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 515px → 25px; static 25pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 620px → 30px; static 30pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 725px → 40px; static 40pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 830px → 50px; static 50pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.
unit 940px → 60px; static 60pxАдаптивный размер от малого к большому; govuk-spacing(unit) остаётся фиксированным.

Названия функциональных цветов

Источник
Название / правилоЗначение / конфигурацияПрименение
govuk-functional-colour("text")#0b0c0c Основной текст для чтения
govuk-functional-colour("secondary-text")#484949 Подсказки и вспомогательная информация
govuk-functional-colour("link")#1a65a6 Обычные ссылки
govuk-functional-colour("link-hover")#0f385c Ссылка при наведении
govuk-functional-colour("link-visited")#54319f Посещённые страницы
govuk-functional-colour("border")#cecece Структурные разделители
govuk-functional-colour("input-border")#0b0c0c Граница поля ввода
govuk-functional-colour("focus")#ffdd00 Только для клавиатурного фокуса
govuk-functional-colour("focus-text")#0b0c0c Текст на жёлтом фоне фокуса
govuk-functional-colour("error")#ca3535 Сообщение об ошибке
govuk-functional-colour("success")#0f7a52 Подтверждение успешного действия
govuk-functional-colour("body-background")#ffffff Поверхность для чтения

Базовые элементы макета

Источник
Название / правилоЗначение / конфигурацияПрименение
govuk-width-container1020px maximumСтандартная ширина внешнего контейнера; её можно переопределить при наличии обоснованной потребности в содержимом.
govuk-grid-row + govuk-grid-column-two-thirds2/3 at wider widthsРазмещайте вопросы и текст в удобной для чтения колонке; на узких экранах элементы располагаются друг под другом.
govuk-main-wrapperMain content regionИспользуйте для основного ориентира внутри контейнера ширины.

Контрольные точки и контуры элементов управления

Источник
Название / правилоЗначение / конфигурацияПрименение
$govuk-breakpoints.mobile320pxКлюч контрольной точки Sass, а не обязательное дополнительное правило макета.
$govuk-breakpoints.tablet641pxСтандартная контрольная точка адаптивной типографики, интервалов и сетки; в руководстве по стилям указано, что она соответствует ширине больше 640px.
$govuk-breakpoints.desktop769pxДополнительная именованная контрольная точка.
$govuk-focus-width3pxТолщина контура фокуса; используйте вместе с документированным оформлением фокуса.
03

Дизайн-система GOV.UK Полное руководство

Практическое руководство по выбору, применению и оценке этой системы для реального интерфейса.

DESIGN-gov-uk.md

Подробные рекомендации, отправная точка для реализации и ссылки на источники.

Скачать руководство

Дизайн-система GOV.UK Версия и идентичность

Справочник по v6 с независимой идентичностью

В этом справочнике используется документация v6, включая увеличенный размер текста на небольших экранах и обновлённые функциональные цвета. Поэтому на старом снимке экрана значения могут отличаться. В таблице выше приведены актуальные задокументированные значения по умолчанию, без незаметного смешения разных версий.

Из этого руководства OpenDesign

В примере рассматривается вымышленный запрос об участии в общественном мероприятии. В нём не используются корона, логотип GOV.UK, шрифт Transport или действующий адрес для отправки данных. Содержание задания и правила локальной проверки — решения приложения; структура компонентов основана на связанных официальных примерах.

Прочитать вспомогательную спецификацию

Выберите подходящий способ подключения шрифта

Для сервисов service.gov.uk, подпадающих под соответствующие требования, GDS Transport входит в официальную реализацию. Государственные сервисы на других доменах должны использовать другой шрифт. В этом независимом примере применяется рекомендуемая альтернатива Helvetica Neue, Helvetica, Arial, sans-serif; смена шрифта не требует отказываться от иерархии дизайн-системы.

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Типографика и ритм чтения

Используйте полную пару размера и высоты строки

Используйте govuk-heading-l для вопроса о запросе и govuk-body для поясняющего текста. На небольших экранах размер заголовка составляет 27/30px, на больших — 36/40px. В v6 размер основного текста остаётся 19/25px. Размер основного текста 16px на небольшом экране соответствовал бы прежнему поведению, а не этому справочнику.

В таблице шкалы приведены оба размера, поскольку по снимку экрана одного разрешения нельзя определить правило адаптивного изменения. В рабочем CSS используются относительные единицы. Класс, например govuk-heading-l, задаёт внешний вид, но не определяет, должен ли семантический элемент быть h1 или 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); }

Справочник по коду

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Интервалы и ширина страницы

Адаптивные единицы не равны фиксированным пикселям

Интервал 6 удобно использовать между группами вопросов: на узком экране он составляет 20px, а выше планшетной контрольной точки — 30px. Статический вспомогательный метод govuk-spacing(6) возвращает 30px при любой ширине. Выбор этого метода меняет поведение, даже если на настольном экране оба варианта выглядят одинаково.

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

Справочник по коду

Прочитать вспомогательную спецификацию

Разместите колонку для чтения внутри контейнера

Максимальная ширина стандартного контейнера составляет 1020px. Внутри него колонка сетки шириной две трети ограничивает область вопросов и при этом позволяет сохранить выравнивание внешней структуры страницы. На небольшом экране элементы естественно располагаются друг под другом. В предварительном просмотре сохраняется эта иерархия чтения: каждое поле не растягивается на отдельную карточку панели управления.

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>

Справочник по коду

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Цвет и фокус

Используйте названия ролей, а не подгоняйте цвета под старые снимки экрана

В версии 6 функциональный цвет ссылок — #1a65a6, а цвет ошибок — #ca3535. В реальной сборке Sass используйте govuk-functional-colour("link") и govuk-functional-colour("error"), чтобы при обновлении применялась актуальная палитра. Эти функциональные роли отличаются от выбора обычного красного или синего для иллюстрации.

Жёлтый цвет используется для обозначения фокуса. Он не должен становиться цветом выделения по умолчанию или рекламным акцентом. В предварительном просмотре жёлтый сочетается с тёмным текстом и заметной тёмной границей; ошибка обозначается текстом и расположением, а не только красным цветом.

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

Справочник по коду

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Компоненты вопросов

Поле — это связанная структура

Пример поля ввода объединяет govuk-form-group, govuk-label, govuk-hint и govuk-input. Подпись связана с идентификатором поля, а aria-describedby указывает на подсказку. При ошибке добавьте идентификатор сообщения об ошибке, а также классы ошибки. Красная рамка без такой связи — неполная реализация.

В этой форме запроса вместе указаны название мероприятия и контактный адрес электронной почты. Это два отдельно подписанных поля в рамках короткой задачи, а не требование размещать каждое поле на отдельной странице. В предварительном просмотре оба поля обязательны только для демонстрации валидации; это не означает, что они действительно требуются для какого-либо разрешения.

  • Постоянная подпись: «Название мероприятия».
  • Постоянная подсказка: «Используйте название, указанное в информации о мероприятии».
  • Исправимая ошибка: «Введите название мероприятия».

Прочитать вспомогательную спецификацию

У нативной разметки и поведения приложения разные задачи

GOV.UK Frontend оформляет компоненты и добавляет им поведение. Библиотека не определяет, какой адрес электронной почты подходит для этой услуги, не сохраняет черновик и не получает запрос. В предварительном просмотре JavaScript проверяет два поля и хранит их значения только на текущей странице. При перезагрузке страницы данные удаляются.

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Исправление ошибок по ссылкам

Сделайте сводку переходом к исправлению

После нажатия «Продолжить» при ошибке покажите сводку перед формой и переместите на неё фокус. Каждая ссылка в списке ведёт к соответствующему ответу. Для отдельного текстового поля укажите идентификатор поля; для группы вариантов выбора используйте соответствующий первый элемент управления, как описано в официальных рекомендациях.

Для улучшения нативной сводки используется data-module="govuk-error-summary". В предварительном просмотре сводка появляется только при ошибке валидации, после чего из локального модуля версии 6.5.1 создаётся ErrorSummary. Библиотека управляет фокусом и переходами по ссылкам; приложение задаёт сообщения, сохраняет значения и удаляет устаревшие ошибки.

Прочитать вспомогательную спецификацию

Проверьте весь путь исправления

Нажмите «Продолжить», оставив оба поля пустыми. Перейдите по ссылке к ошибке в названии мероприятия, введите вымышленное название, затем укажите неверный адрес электронной почты. Нажмите «Продолжить» ещё раз: должна появиться только оставшаяся ошибка, а название должно сохраниться. Исправьте адрес, чтобы перейти к проверке ответов. Так становится виден сценарий взаимодействия с состоянием, а не просто отображается постоянный пример ошибки.

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Проверка ответов и изменение

Используйте список определений, а не таблицу данных

На странице проверки ответов используется govuk-summary-list. Каждая строка содержит ключ dt, значение dd и область действий dd. Скрытая подпись после ссылки «Изменить» указывает, какой именно ответ можно исправить. Длинные названия мероприятий переносятся в блоке значения, не скрывая ссылку для редактирования.

Действие «Изменить» возвращает к форме и устанавливает фокус на выбранное поле. При продолжении форма снова проходит валидацию, после чего открывается обновлённая страница проверки. Возврат реализуется кодом приложения; дизайн-система предоставляет структуру оформления.

Прочитать вспомогательную спецификацию

Завершите демонстрацию на достоверном этапе

Демонстрация заканчивается проверкой ответов, поскольку никакая служба не получает данные. В реальной службе перед отправкой должна быть страница проверки, показывающая всю передаваемую информацию. Для приложения с подтверждениями или подтверждением со стороны серверной части потребуется дополнительная логика; зелёная панель сама по себе такого результата не обеспечивает.

  1. Заполните оба поля вымышленными данными и перейдите дальше.
  2. Выберите «Изменить название мероприятия» и отредактируйте только этот ответ.
  3. Продолжите и убедитесь, что исправленное название и сохранённый адрес электронной почты отображаются вместе.

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Интеграция с Frontend

Соберите Sass-файл без фирменного оформления

В приведённой ниже инструкции используются govuk-frontend@6 и Dart Sass с импортёром пакетов Node.js. Инструкция собирает конфигурацию шрифтов без фирменного оформления, описанную в документации, и копирует браузерный дистрибутив JavaScript. Зафиксируйте разрешённый файл блокировки зависимостей, чтобы в реальном проекте была записана точная версия.

Пример не загружает шрифт Transport и не использует государственные изображения. Служба, которой требуется фирменное оформление, должна также предоставлять официальные ресурсы по указанному в документации пути. Приложения с другими инструментами сборки могут использовать тот же модуль Sass и точку входа initAll, адаптировав сборку под свою систему.

Прочитать вспомогательную спецификацию

Выполните инициализацию после добавления разметки компонентов

В отдельном предварительном просмотре локально используются официальные CSS и JavaScript версии 6.5.1. Переопределение шрифта с узкой областью действия заменяет Transport во всей демонстрации. Валидация формы и страница проверки реализованы кодом приложения, а улучшение поведения Button и ErrorSummary обеспечивает библиотека. В отдельной инструкции описан предпочтительный вариант настройки с помощью Sass; здесь эта сборка не выполнялась.

Прочитать вспомогательную спецификацию

Дизайн-система GOV.UK Примеры компонентов дизайн-системы

Текстовое поле: подпись, подсказка и встроенное сообщение об ошибке

В состоянии с ошибкой к группе и полю добавляется модификатор ошибки. Описание поля связывает постоянную подсказку и текущую ошибку по идентификаторам.

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>

Справочник по коду

  • В состоянии без ошибки удалите абзац с сообщением, модификаторы ошибки и идентификатор ошибки из aria-describedby.
  • При ошибке валидации сохраняйте фактическое значение; используйте экранированный вывод сервера или присваивание текста/значения через DOM.

Сводка ошибок: переход к ответу

Разместите сводку перед содержимым вопроса. Её сообщение должно совпадать со встроенной ошибкой, а ссылка должна вести к полю, а не к постороннему контейнеру.

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>

Справочник по коду

  • При нативной реализации инициализация Frontend задаёт поведение фокуса для сводки.
  • В демонстрации после добавления каждой сводки ошибок при неудачной валидации создаётся новый ErrorSummary; логика валидации остаётся отдельной частью приложения.

Проверка ответов: семантический список сводки

Список определений связывает подпись ответа с его значением и ссылкой для перехода к редактированию. Скрытый суффикс позволяет различать повторяющиеся ссылки «Изменить».

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>

Справочник по коду

  • Параметр returnTo — используемое здесь соглашение приложения, а не API Frontend.
  • После редактирования вернитесь к проверке, сохранив все остальные ответы без изменений.

Полный автономный пример

Полный документ включает разметку, элементы управления и инициализацию. Распакуйте связанный архив примера, чтобы получить нужные относительные пути к ресурсам поставщика, затем запустите его через 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>

Справочник по коду

  • Скачайте полный пример из раздела «Источники». Точная команда локального запуска приведена в README.
  • Оставьте пути к ресурсам поставщика относительными к этому документу; архив включает все ресурсы, используемые в предварительном просмотре.
04

Дизайн-система GOV.UK Настройка ИИ-агента

Отправная точка для реализации

Разместите команды оболочки, содержимое app.scss и фрагменты HTML в указанных для них местах. В предварительном просмотре используются локальные копии официальных ресурсов версии 6.5.1 с переопределением шрифта; инструкция по сборке Sass приведена, но в этой рабочей области сборка не выполнялась. В ZIP-архиве с полным рабочим примером в разделе «Источники» также указаны точные зависимости предварительного просмотра и находится полный документ. Распакуйте архив, выполните в этой папке python3 -m http.server 8080 и откройте http://localhost:8080/gov-uk.html. Не открывайте примеры с модулями через 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>

Запрос для вашего проекта

Промпт для AI-агента
Реализуйте форму запроса по мероприятию из двух полей с помощью GOV.UK Frontend v6 и конфигурации без фирменного оформления со шрифтом Helvetica, описанной в этом руководстве. Используйте фактические структуры form-group/input/error-summary и summary-list, связанные встроенные сообщения об ошибках, сохранение ответов, ссылки «Изменить» с переходом к нужному полю и завершение только на этапе проверки. Примените адаптивную типографику и интервалы с помощью классов Frontend. Сохраните реальную идентичность проекта и не создавайте фиктивную официальную отправку или несуществующий результат серверной обработки. Проверьте состояния: пустые поля, неверный адрес электронной почты, исправленные данные, проверка ответов и изменение ответа.
05

Дизайн-система GOV.UK Источники и область применения

Независимое приложение-пример OpenDesign с компонентами GOV.UK Frontend 6.5.1 CSS и JavaScript. Оно не предполагает использование государственного логотипа или шрифта Transport, не является официальной службой, не отправляет реальные данные и не подтверждает соответствие требованиям. Правила формы и переход к проверке реализованы собственным кодом приложения.