Administración pública y servicios públicos · Nuevo recurso

Sistema de diseño Scottish Government.

Aplica los roles tipográficos adaptables, de espaciado y de color del Gobierno escocés mediante un campo nativo con contador de caracteres que conserva el texto que supera el límite y permite corregirlo.

Guía de OpenDesign8 capítulos28 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz sistema de diseño Scottish Government

Prueba con una nota larga, corrígela para quedar por debajo del límite de caracteres, previsualízala localmente, edítala y restablécela.

Conserva el texto y explica el límiteAbrir ejemplo completo
CharacterCount/CSS nativo de Scottish Government Design System 4.3.0; contenido original del taller y validación local; alternativa Arial. · Referencia de implementación
02

Referencia de diseño sistema de diseño Scottish Government

Scottish Government Design System 4.3.0 publicado CSS y JavaScript, con las directrices oficiales actuales de tipografía, color y cuadrícula. CharacterCount nativo y sus estilos funcionan en la vista previa. Arial es una alternativa explícita para este ejemplo independiente; las direcciones del Scottish Government deben usar Roboto. Los recursos del paquete actual son distintos de los ejemplos de instalación antiguos.

Tipografía adaptable

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Body16/24px small →19/32px largeRegular 400; los estilos grandes nativos empiezan en 48rem.
H130/40px →44/56pxNegrita 700.
H2 / H322/32 →30/40px;19/24 →22/32pxUsa niveles de encabezado semánticos; ds_h3 puede cambiar la apariencia sin cambiar el nivel.
H4 / H516/24 →19/32px;14/24 →16/24pxNegrita 700.
Lead19/32px →24/40pxLight 300; un texto introductorio conciso por página.
FontRobotoObligatorio para las direcciones y áreas de políticas del Scottish Government; la demostración independiente usa Arial explícitamente.

Roles de color de Sass

Fuente
Nombre / ReglaValor / ConfiguraciónUso
$ds_colour__brand / __link#0065bd Azul primario; al pasar sobre el enlace, #00437e.
$ds_colour__text#1a1a1a Texto secundario #5e5e5e.
$ds_colour__focus / --background#1a1a1a / #fdd522Conserva estos roles de foco incluso en un tema de marca adaptado.
$ds_colour__state--negative#d32205 Mensajes de error y de campo que superó el límite.
$ds_colour__state--positive#1a7032 Mensajes positivos; no implica que se haya enviado el texto local.
$ds_colour__border#b3b3b3 Alternativas de alto contraste #1a1a1a y tenue #ebebeb.

Utilidades de espaciado adaptable

Fuente
Nombre / ReglaValor / ConfiguraciónUso
ds_!_margin-bottom--1 / --2 / --38 /16 /24pxNo cambia en 48rem.
ds_!_margin-bottom--424px →32pxDe pequeño a grande en 48rem.
ds_!_margin-bottom--5 / --632→40px /40→48pxAdaptable, en lugar de un único valor de espaciado fijo.
ds_!_margin-bottom--7 / --8 / --940→56px /48→64px /56→72pxÚsalo para separar más; evita aplicar el espaciado máximo en todas partes.

Cuadrícula y anchos interiores utilizables

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Viewport thresholds480,768,992,1200pxLas columnas pasan de 2 a 6 y a 12, y luego se mantienen en 12.
Content width at medium/large/xl736 /928 /1120pxAncho interior publicado de la cuadrícula; difiere del ancho de caja del contenedor.
Native ds_wrapper box768 /960 /1152pxIncluye un relleno de 16px a cada lado en la versión CSS.
Gutter / side padding32px /16pxPor debajo de 768px, el contenedor es fluido.
Reading width in specimen42rem maximumOpción de la aplicación dentro del contenedor nativo, no un token oficial de uso universal.

Contrato de CharacterCount

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Rootdata-module="ds-character-count"Contiene un input o textarea nativo.
Limitmaxlength="200"Se consume y luego se elimina durante la inicialización; el texto que supera el límite sigue siendo editable.
Alternativedata-maxlength on rootNo hay una alternativa nativa de maxlength si JavaScript no está disponible.
Thresholddata-threshold="80"Redondea el límite × .8; para 200, aparece al llegar a 160 caracteres.
Error stateds_input--error;aria-invalid="true"Se aplica cuando el recuento es negativo; se combina con un recuento visible del exceso.
AnnouncementsSeparate hidden message;1000ms delayaria-describedby conserva la indicación existente y añade los ID de mensaje generados.
Counting unitJavaScript value.lengthUnidades de código UTF-16; no prometas un recuento de emojis que tenga en cuenta los grafemas.
03

Guía completa de sistema de diseño Scottish Government

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-scottish-government.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

Sistema de diseño Scottish Government Una referencia práctica para introducir texto

Permite recuperar el trabajo de una persona

La interacción clave aquí es orientar sobre la longitud sin modificar el texto. El usuario puede pegar una nota de acceso larga, ver cuánto necesita editar y conservar todo el texto mientras la acorta. El contador nativo de caracteres gestiona el recuento visible restante, el estilo de exceso del límite y el mensaje diferido para tecnologías de asistencia. La aplicación decide por separado si la nota es lo bastante válida como para mostrar una vista previa.

De esta guía de OpenDesign

Este es un ejemplo original de una nota para un taller, no un servicio de Scottish Government ni una solicitud de información médica. No incluye gráficos de identidad, almacenamiento ni envío. La indicación del campo pide describir una necesidad práctica de acceso y desaconseja incluir datos privados, para que la tarea se entienda sin tomar como referencia una transacción oficial.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Roboto y jerarquía adaptable

Conserva las métricas publicadas

El sistema exige Roboto para los directorios y las áreas de políticas de Scottish Government. Otras organizaciones que lo adopten pueden usar otra tipografía legible, siempre que conserven las reglas de tamaño e interlineado y prueben el resultado. El ejemplo independiente especifica claramente Arial como alternativa; no afirma que una fuente web que no se haya cargado sea Roboto.

El texto del cuerpo pasa de 16/24px a 19/32px, y el título principal, de 30/40px a 44/56px. Ambos cambios se realizan en la hoja de estilos nativa para pantallas más grandes. Una clase ds_h 3 cambia el tamaño visual sin requerir un encabezado semántico de tercer nivel. Esa distinción importa cuando un formulario breve necesita un título de sección más pequeño, pero no una interrupción artificial en la estructura del documento.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Un tratamiento de foco distintivo

Diferencia el foco, los errores y la finalización

El azul cumple la función principal de color de marca y de enlace, el negro se usa para el texto y el amarillo destaca el foco. Son ajustes con nombre en Sass, no una colección inventada de CSS propiedades personalizadas. La adaptación de marca se realiza antes de cargar el sistema, mediante su módulo de configuración. La guía oficial conserva la paleta de foco aunque cambien otros colores de marca.

El contador de caracteres introduce el rojo negativo solo cuando se supera la longitud permitida. Un segundo error de campo, gestionado por la aplicación, puede usar el mismo rol negativo, pero el mensaje debe indicar que falta una respuesta, no que hay un problema con el recuento de caracteres. La vista previa nunca usa el verde positivo para insinuar que se ha enviado algo a un servicio remoto correctamente.

  • Mantén un contorno visible de foco de teclado en el área de texto y los botones de acción.
  • Describe el exceso de longitud con texto, no solo con un borde rojo.
  • Vincula los resúmenes de errores y las indicaciones de los campos a un ID de campo estable.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Ancho del contenedor y espaciado

Evita confundir los anchos exteriores e interiores

La tabla de cuadrícula oficial especifica anchos de contenido interior de 736, 928 y 1120px en los puntos de interrupción mediano, grande y extragrande. Las cajas contenedoras nativas correspondientes miden 768, 960 y 1152px porque cada una incluye 16px de relleno lateral. Esta distinción evita que quien adopte el sistema anide ambos anchos y estreche el diseño dos veces por accidente.

La vista previa coloca una columna de lectura de 42rem dentro del contenedor nativo. Ese ancho máximo es una decisión de la aplicación adecuada para un formulario breve, no un nuevo ajuste del sistema. Por debajo de 768px, el contenedor se adapta al ancho disponible y el mismo espaciado lateral de 16px mantiene el área de texto separada del borde de la pantalla.

Las utilidades de espaciado son adaptables. Por ejemplo, ds_!_margin-bottom--4 pasa de 24 a 32px en 48rem; los niveles superiores también aumentan. La referencia proporciona ambos valores para evitar que se confunda una captura de pantalla de escritorio con un espacio fijo y universal.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Un campo nativo de recuento de caracteres

Empieza con un área de texto real

El elemento raíz ds_question incluye data-module y un umbral porcentual opcional. La etiqueta asociada y la indicación son elementos accesibles HTML estándar. Un área de texto con maxlength ofrece una alternativa útil sin JavaScript. Tras la mejora progresiva, el componente lee ese valor y elimina el límite estricto para que el texto pegado no se trunque sin avisar.

En un campo de 200 caracteres con un umbral del 80%, el recuento se muestra al llegar a 160 caracteres. El texto de ejemplo de la página pública del componente y el ejemplo de código de 250 caracteres no usan los mismos valores, así que este caso mantiene un único límite coherente. Sin JavaScript, la indicación visible sigue señalando el límite y se aplica maxlength de forma nativa.

HTML
<div class="ds_question" data-threshold="80" data-module="ds-character-count">
  <label class="ds_label" for="access-note">What would help you take part?</label>
  <p class="ds_hint-text" id="access-hint">Describe an access need for this practice workshop. Do not include medical or contact details.</p>
  <textarea maxlength="200" class="ds_input" rows="5" id="access-note"
    name="access-note" aria-describedby="access-hint"></textarea>
</div>

Referencia de código

Consulta la especificación complementaria

Sistema de diseño Scottish Government Qué gestiona el componente nativo

Mensajes, tiempos y recuento

La implementación versionada crea un mensaje visible con aria-hidden y otro mensaje oculto, separado, para las tecnologías de asistencia. Añade los ID pertinentes al aria-describedby existente en lugar de descartar la indicación redactada. Espera 1000ms antes de actualizar el anuncio oculto, para que la respuesta durante la escritura termine primero.

La longitud real se obtiene de JavaScript string.value.length: cuenta unidades de código UTF-16. Un símbolo fuera del plano multilingüe básico puede ocupar dos unidades y un emoji combinado, más. Si un servicio necesita otra política de recuento de caracteres, debe hacer coincidir su contador con la validación del servidor, en lugar de prometer que este componente cuenta caracteres según la percepción humana.

El componente escucha los eventos input. Si una aplicación rellena un ejemplo o borra el campo mediante programación, también debe enviar un evento input. Las acciones de ejemplo y restablecimiento de la demostración lo hacen. Un comentario del código fuente menciona el sondeo del reconocimiento de voz, pero la implementación inspeccionada no instala un intervalo de sondeo; por eso, esta guía no afirma que esa función exista.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Usa las rutas de la versión actual

Carga del módulo e inicialización con alcance definido

El paquete actual es @scottish-government/design-system. La versión 4.3.0 coloca la hoja de estilos compilada en dist/css/design-system.min.css, mientras que un párrafo de instalación anterior todavía hace referencia a dist/styles/main.css. Esta receta utiliza el recurso publicado real. Su script incluye una exportación de módulo ES, así que debe importarse con type="module" en lugar de usar una etiqueta script clásica normal.

Crea una instancia de CharacterCount para este campo y llama a init. También está disponible DS.initAll para páginas con varios componentes, pero este ejemplo solo inicializa el contador que necesita. No se configura ningún servicio de analítica adicional. La validación del servidor es independiente de la biblioteca: un contador es una ayuda para editar, no un mecanismo para hacer cumplir límites.

  1. Instala el paquete fijado en la versión 4.3.0 y copia CSS compilado y el módulo en un directorio de recursos local.
  2. Incluye en la página toda la estructura de etiqueta, texto de ayuda y área de texto antes de importar el módulo.
  3. Inicializa el contador una sola vez y, después, conecta las acciones de vista previa y restablecimiento de la aplicación mediante los eventos input habituales.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Prueba la recuperación tras superar el límite

No pruebes únicamente con un campo vacío

Empieza por debajo del umbral, supera los 160 caracteres y pega más de 200. El valor completo debe permanecer en el área de texto mientras aparece un mensaje que indica que se ha superado el límite y aria-invalid pasa a true. Reduce el valor por debajo del límite y confirma que se eliminan tanto la clase de error como el estado de invalidez.

La acción Vista previa de la aplicación bloquea las notas vacías o que superan el límite y muestra un error asociado. Una nota válida aparece en una vista previa local mediante textContent, de modo que el marcado introducido se muestra como texto y no se interpreta. Volver a editar la nota lleva al mismo campo de texto, con el valor intacto. Restablecer la borra mediante un evento input para que también se reinicie el recuento nativo.

A 390px, comprueba el ajuste de línea del título, el área de texto a ancho completo, el salto de línea de los botones y el resumen de errores. En pantallas más grandes, la columna de lectura no debería convertirse en un párrafo demasiado ancho. Estas comprobaciones validan este ejemplo; un servicio real aún requiere investigación con usuarios, pruebas tipográficas y revisión con tecnologías de asistencia en su contexto final.

Consulta la especificación complementaria

Sistema de diseño Scottish Government Ejemplos de componentes del sistema de diseño

Un límite de caracteres no destructivo

Una etiqueta, texto de ayuda, área de texto y umbral del 80 % con mejora progresiva.

HTML
<div class="ds_question" data-threshold="80" data-module="ds-character-count">
  <label class="ds_label" for="access-note">What would help you take part?</label>
  <p class="ds_hint-text" id="access-hint">Describe an access need for this practice workshop. Do not include medical or contact details.</p>
  <textarea maxlength="200" class="ds_input" rows="5" id="access-note"
    name="access-note" aria-describedby="access-hint"></textarea>
</div>

Referencia de código

Recursos compilados actuales de la versión 4.3.0

Ruta de CSS verificada para esta versión e inicialización del módulo ES.

bash / html
npm install --save-exact @scottish-government/[email protected]
mkdir -p public/vendor/scot
cp node_modules/@scottish-government/design-system/dist/css/design-system.min.css public/vendor/scot/
cp node_modules/@scottish-government/design-system/dist/scripts/design-system.js public/vendor/scot/

<link rel="stylesheet" href="/vendor/scot/design-system.min.css">
<script type="module">
  import DS from '/vendor/scot/design-system.js';
  const root = document.querySelector('[data-module="ds-character-count"]');
  new DS.components.CharacterCount(root).init();
  // Or DS.initAll() when the page uses multiple DS components.
</script>

Referencia de código

Ejemplo independiente completo

El documento completo incluye su estructura, controles e inicialización. Extrae el archivo de ejemplo enlazado para obtener los recursos del proveedor con sus rutas relativas exactas y luego sírvelo mediante HTTP.

HTML
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Scottish design system character count specimen</title><link rel="stylesheet" href="vendor/scot-4.3.0/dist/css/design-system.min.css"><style>body,button,input,textarea{font-family:Arial,sans-serif!important}body{margin:0}main{padding-top:32px;padding-bottom:32px}.reading{max-width:42rem}.eyebrow{border-top:4px solid #0065bd;padding-top:16px;color:#5e5e5e}.actions{display:flex;flex-wrap:wrap;gap:16px}.actions .ds_button{margin:0}.preview-text{white-space:pre-wrap;overflow-wrap:anywhere;border-left:4px solid #b3b3b3;padding-left:24px}[hidden]{display:none!important}</style><main class="ds_wrapper"><div class="reading"><p class="ds_small eyebrow">Independent specimen · Workshop access note</p><section id="entry"><h1>Tell us what would help</h1><p>Practice a short access note for a community workshop. This page does not save or send your text.</p><div id="error" class="ds_error-summary" tabindex="-1" hidden><h2 class="ds_error-summary__title">There is a problem</h2><p><a href="#access-note" id="error-link"></a></p></div><form id="form" novalidate><div class="ds_question" data-threshold="80" data-module="ds-character-count">
  <label class="ds_label" for="access-note">What would help you take part?</label>
  <p class="ds_hint-text" id="access-hint">Describe an access need for this practice workshop. Do not include medical or contact details.</p>
  <textarea maxlength="200" class="ds_input" rows="5" id="access-note"
    name="access-note" aria-describedby="access-hint"></textarea>
</div><p class="ds_small">Use up to 200 characters. The count appears after 160.</p><div class="actions"><button class="ds_button" type="submit">Preview note</button><button class="ds_button ds_button--secondary" id="sample" type="button">Try a long example</button><button class="ds_button ds_button--secondary" id="reset" type="button">Reset</button></div></form></section><section id="preview" hidden><h1 tabindex="-1">Your note preview</h1><p id="result" class="preview-text"></p><p>No note has been sent. You can return to edit it.</p><button id="edit" class="ds_button ds_button--secondary">Edit note</button></section></div></main><script type="module">import DS from './vendor/scot-4.3.0/dist/scripts/design-system.js';const field=document.querySelector('[data-module="ds-character-count"]');new DS.components.CharacterCount(field).init();const input=document.querySelector('#access-note'),entry=document.querySelector('#entry'),preview=document.querySelector('#preview'),error=document.querySelector('#error');function setValue(value){input.value=value;input.dispatchEvent(new Event('input',{bubbles:true}));input.focus()}document.querySelector('#sample').onclick=()=>setValue('A clear route from the entrance to the workshop room would help me take part. Please describe where the quiet seating area is and whether instructions will be available in writing. I would also appreciate knowing where to find the nearest accessible entrance.');document.querySelector('#reset').onclick=()=>{setValue('');error.hidden=true};document.querySelector('#form').onsubmit=e=>{e.preventDefault();let message=!input.value.trim()?'Enter a short access note.':input.value.length>200?'Shorten your note to 200 characters or fewer.':'';if(message){document.querySelector('#error-link').textContent=message;error.hidden=false;error.focus();return}error.hidden=true;document.querySelector('#result').textContent=input.value;entry.hidden=true;preview.hidden=false;preview.querySelector('h1').focus()};document.querySelector('#edit').onclick=()=>{entry.hidden=false;preview.hidden=true;input.focus()};window.demoReady=true;</script></html>

Referencia de código

  • Descarga el ejemplo completo desde Fuentes. El README contiene el comando exacto para ejecutarlo en local.
  • Mantén las rutas de los recursos del proveedor relativas a este documento; el archivo incluye todos los recursos que utiliza esta vista previa.
04

Sistema de diseño Scottish Government Configuración del agente

Punto de partida para la implementación

La demostración local ejecuta la versión 4.3.0 real de CSS y el módulo CharacterCount. Se especifica explícitamente una fuente alternativa; no se usa la ruta dist/styles antigua de la página de instalación. El ZIP del ejemplo funcional completo, disponible en Fuentes, también incluye las dependencias exactas de la vista previa y el documento completo. Descomprímelo, ejecuta python3 -m http.server 8080 en ese directorio y abre http://localhost:8080/scottish-government.html. No abras ejemplos basados en módulos mediante file://.

bash / html
npm install --save-exact @scottish-government/[email protected]
mkdir -p public/vendor/scot
cp node_modules/@scottish-government/design-system/dist/css/design-system.min.css public/vendor/scot/
cp node_modules/@scottish-government/design-system/dist/scripts/design-system.js public/vendor/scot/

<link rel="stylesheet" href="/vendor/scot/design-system.min.css">
<script type="module">
  import DS from '/vendor/scot/design-system.js';
  const root = document.querySelector('[data-module="ds-character-count"]');
  new DS.components.CharacterCount(root).init();
  // Or DS.initAll() when the page uses multiple DS components.
</script>

Una instrucción para tu proyecto

Instrucción para el agente
Usa el componente CharacterCount real del sistema de diseño del Gobierno de Escocia, versión 4.3.0, en un formulario independiente para notas de accesibilidad. Fija las rutas verificadas dist/css/design-system.min.css y dist/scripts/design-system.js del módulo ES. Proporciona un área de texto de 200 caracteres con un umbral del 80 %, texto de ayuda asociado e inicialización del componente limitada a su ámbito. Conserva el texto pegado que supere el límite y deja que la biblioteca gestione el recuento nativo y las actualizaciones de ARIA; añade una validación local aparte y una vista previa, edición y restablecimiento seguros que solo muestren texto. Las acciones programáticas de muestra y restablecimiento deben emitir eventos input. Usa la tipografía adaptable y el espaciado publicados, especifica una decisión explícita sobre las fuentes y no incluyas la identidad oficial ni una falsa función de envío.
05

Sistema de diseño Scottish Government Fuentes y alcance

Referencia para una implementación independiente. Las direcciones del Gobierno de Escocia deben usar Roboto; este ejemplo sin marca especifica Arial como fuente alternativa. Texto original; no guarda ni envía información y no tiene afiliación oficial. La licencia del código y los permisos de los recursos gráficos del Gobierno son cuestiones distintas.