Administración pública y servicios públicos · Nuevo recurso
Sistema de diseño NSW.
Explora los tokens de diseño de NSW, la tipografía Public Sans y pestañas nativas accesibles mediante el teclado con una guía completa del taller y una lista de lectura local independiente.
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size
16px
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-normal
400
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-bold
700
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-md-mobile
1.125rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-md-desktop
1.25rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-lg-mobile
1.375rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-lg-desktop
1.5rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-xl-mobile
1.75rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-xl-desktop
2rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-xxl-mobile
2.25rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-font-size-xxl-desktop
3rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
--nsw-border-radius
0.25rem
Referencia tipográfica adaptable publicada y rol compartido de esquinas. Un par tipográfico para móvil y escritorio no corresponde a familias tipográficas distintas.
03
Sistema de diseño NSW Guía completa
Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.
DESIGN-nsw.md
Orientación completa, un punto de partida para la implementación y enlaces al código fuente.
Sistema de diseño NSW Entorno de ejecución y tema fijados
Usa la implementación nativa de pestañas
El ejemplo ejecuta nsw-design-system 3.27.0. Importa el paquete CSS y la clase Tabs, y luego inicializa el único grupo de pestañas después de crear el marcado. Esta inicialización específica evita registrar componentes ajenos que no están presentes. La documentación actual puede describir una versión más reciente; el código descargable y los valores de los tokens aquí siguen vinculados al paquete verificado.
Separa los componentes del estado de la aplicación
La clase nativa Tabs controla la selección de pestañas, la visibilidad de los paneles y la navegación por teclado. La aplicación gestiona un Set de indicaciones guardadas. Por tanto, cambiar de etapa no altera la lista de lectura. Esta separación queda explícita en el código fuente: no hay un almacén global oculto, una solicitud al backend ni una imitación de una cuenta gubernamental.
Sistema de diseño NSW Roles de marca y superficies legibles
Usa los roles oscuro y claro en conjunto
El color de marca oscuro predeterminado es #002664 y la superficie clara es #CBEDFD. El panel de indicaciones usa el rol claro y una acción oscura. La pestaña activa usa el tratamiento de acento del paquete. Estos son los roles reales del tema, no una paleta azul arbitraria elegida para evocar un sitio del sector público. El ejemplo no usa un logotipo oficial del gobierno.
Interpreta con cuidado los nombres de los tokens
El token text-light es blanco. Se usa sobre un fondo oscuro y no debe emplearse como sinónimo genérico de texto atenuado. El texto complementario de las etapas usa, en cambio, el rol neutro más oscuro. La referencia incluye pares de colores de primer plano y fondo para los estados, pero el taller no inventa una alerta de error o éxito solo para mostrar todos los colores disponibles.
Sistema de diseño NSW Public Sans y escala adaptable
Carga la fuente antes de revisar el diseño
El ejemplo carga localmente las variantes 400 y 700 de Public Sans. El paquete define tamaños distintos para móvil y escritorio: el texto mediano aumenta de 1.125rem a 1.25rem, y la referencia del encabezado más grande aumenta de 2.25rem a 3rem. Estos pares ayudan a mantener la jerarquía de lectura cuando cambia el ancho disponible.
Mantén sencilla la jerarquía del contenido
Una etiqueta breve de etapa precede a un encabezado descriptivo, una introducción, un párrafo explicativo y una indicación guardada. La página no convierte cada frase en una tarjeta. En pantallas estrechas, la lista de lectura aparece después del panel de la etapa, mientras que la breve tira de tres etiquetas de pestaña sigue siendo fácil de usar y evita que el texto se divida en varias líneas.
Sistema de diseño NSW Marcado de pestañas y comportamiento del teclado
Permite que el componente mejore enlaces reales
La lista inicial de pestañas contiene enlaces a identificadores de contenido únicos. La inicialización añade la semántica de tablist/tab/tabpanel, gestiona la selección y establece la pestaña que puede recibir el foco. Es necesario mantener correctos los destinos href para que el componente encuentre sus paneles. No dupliques identificadores si colocas más de un grupo de pestañas en una página.
Asocia cada enlace de pestaña con el ID de un único panel.
Inicializa el grupo después de insertar su marcado.
Deja que el componente nativo gestione la selección y el foco del teclado.
Comprueba la selección con el teclado, además de los clics
Sistema de diseño NSW Indicaciones guardadas y comentarios claros
Mantén el estado guardado independiente de la pestaña visible
La acción de cada etapa alterna el estado de ese mensaje en un Set, actualiza aria-pressed y cambia su etiqueta de Guardar a Quitar. El recuento y las entradas de la lista de lectura se derivan de ese Set. Al volver a una etapa guardada, se muestra correctamente su estado seleccionado. «Vaciar lista de lectura» quita todas las selecciones y se desactiva cuando no hay nada que quitar.
Explicar los límites de persistencia
La lista de lectura es un estado local de la página y desaparece al recargarla. La interfaz lo indica directamente. Una lista realmente persistente requeriría un modelo de almacenamiento explícito y un comportamiento de restauración, y aquí no se da por hecho ninguno de los dos. El contenido es un estudio original sobre diseño y debate, no una guía de elegibilidad para servicios ni una afirmación de que se haya reproducido un flujo de trabajo oficial de NSW.
Sistema de diseño NSW Implementación completa y revisión
Reproducir la fuente con sus dependencias
Crear un proyecto vanilla con Vite, instalar nsw-design-system 3.27.0 y Public Sans, y luego guardar el archivo de entrada proporcionado y nsw.css. Mantener un elemento raíz de montaje. Se incluyen el contenido completo de las tres etapas, los mensajes originales, la inicialización nativa de Tabs y los controladores de la lista de lectura. No hay pseudocódigo en lugar de la lógica para guardar y restablecer.
Instalar el paquete de NSW con la versión fijada y los archivos de fuente Public Sans.
Guardar el archivo de entrada completo y nsw.css con un elemento raíz de montaje.
Guardar mensajes en dos pestañas distintas y comprobar que se conserva el estado.
Usar ArrowRight, vaciar la lista y revisar el estado vacío.
Mantener la navegación por pestañas separada del contenido guardado
Inicializar la clase nativa Tabs solo cuando existan sus destinos de enlace y paneles. Los ID de fragmento coincidentes constituyen el contrato de mejora progresiva: cambiar el ID de un panel sin modificar su href rompe la relación, aunque las etiquetas de las pestañas sigan pareciendo correctas. Si hay varios grupos en una página, asignar ID distintos a cada grupo.
Tratar la lista de lectura como estado de la aplicación, independiente de la instancia de pestañas. El estado guardado de un mensaje debe mantenerse al cambiar de panel, y aria-pressed debe reflejarlo cuando se vuelva a ese panel. Usar pestañas para contenido del mismo nivel al que los lectores puedan volver; un formulario secuencial que requiera completar pasos necesita otro modelo de navegación. La persistencia también exigiría una política explícita de almacenamiento y restauración, en lugar de cambiar silenciosamente este ejemplo limitado a la página.
Sistema de diseño NSW Ejemplos de componentes del sistema de diseño
main.js — ejemplo completo de pestañas nativas y lista de lectura
Incluye todo el contenido original de las etapas, la inicialización de pestañas y la lógica completa para guardar, quitar y restablecer.
javascript
import Tabs from 'nsw-design-system/src/components/tabs/tabs.js';
import 'nsw-design-system/css';
import '@fontsource/public-sans/latin-400.css';
import '@fontsource/public-sans/latin-700.css';
import './nsw.css';
const sessions=[['Prepare','Choose one question to explore','Start with a clear outcome rather than a long list of activities.','Write a one-sentence purpose. Identify the people who can answer the question and the evidence you already have.'],['Discuss','Make room for different views','Use a short, structured discussion to compare observations.','Ask participants to describe what they noticed before proposing solutions. Keep a separate record of assumptions that need evidence.'],['Review','Turn observations into a next step','End with an action that has an owner and a clear reason.','Choose one improvement to investigate. Record what would count as success and when the group will review the result.']];
document.getElementById('root').innerHTML=`<main><p class="eyebrow">NSW DESIGN SYSTEM / ORIGINAL WORKSHOP STUDY</p><h1>Plan a focused discussion</h1><p class="nsw-intro">Move between three stages and save useful prompts to a local reading list.</p><div class="layout"><section class="nsw-tabs js-tabs"><ul class="nsw-tabs__list">${sessions.map(([name],i)=>`<li><a href="#session-${i}">${name}</a></li>`).join('')}</ul>${sessions.map(([name,title,lead,body],i)=>`<section id="session-${i}" class="nsw-tabs__content"><p class="step">STAGE ${i+1} / 3</p><h2>${title}</h2><p class="nsw-intro">${lead}</p><p>${body}</p><div class="prompt"><h3>Prompt to keep</h3><blockquote>${['What do we need to understand before choosing a solution?','Which observations are shared, and where do they differ?','What is the smallest next step that would reduce uncertainty?'][i]}</blockquote><button class="nsw-button nsw-button--dark save" data-index="${i}" aria-pressed="false">Save this prompt</button></div></section>`).join('')}</section><aside><h2>Your reading list</h2><p id="count" role="status">0 prompts saved</p><ul id="saved"></ul><p id="empty">Save a prompt from any stage. Changing tabs keeps your selection.</p><button class="nsw-button nsw-button--white" id="clear" disabled>Clear reading list</button><p class="note">This is an original local study using NSW 3.27.0 tabs and CSS. Nothing is stored after reloading.</p></aside></div></main>`;
new Tabs(document.querySelector('.js-tabs')).init();const saved=new Set();const $=id=>document.getElementById(id);function render(){$('count').textContent=saved.size+' prompt'+(saved.size===1?'':'s')+' saved';$('saved').replaceChildren(...[...saved].sort().map(i=>{const li=document.createElement('li');li.textContent=sessions[i][0]+': '+sessions[i][1];return li}));$('empty').hidden=saved.size>0;$('clear').disabled=!saved.size;document.querySelectorAll('.save').forEach(b=>{const yes=saved.has(Number(b.dataset.index));b.setAttribute('aria-pressed',String(yes));b.textContent=yes?'Remove saved prompt':'Save this prompt'})}document.querySelectorAll('.save').forEach(b=>b.addEventListener('click',()=>{const i=Number(b.dataset.index);saved.has(i)?saved.delete(i):saved.add(i);render()}));$('clear').addEventListener('click',()=>{saved.clear();render()});
La etiqueta secundaria de la etapa usa un tono neutro oscuro; --nsw-text-light es blanco.
04
Sistema de diseño NSW Configuración del agente
Punto de partida para la implementación
Se probaron localmente los clics y las teclas de flecha de las pestañas, el estado guardado que se conserva, el vaciado de la lista y el diseño adaptable.
sh
npm create vite@latest nsw-workshop -- --template vanilla
cd nsw-workshop
npm install
npm install [email protected] @fontsource/public-sans
# Replace src/main.js and add src/nsw.css. Keep <div id="root"></div>.
npm run dev
Una instrucción para tu proyecto
Instrucción para el agente
Crear la guía del taller de NSW con Tabs nativas de la versión 3.27.0, Public Sans y roles semánticos reales. Mantener ID únicos para los paneles, selección con teclado, estado independiente de los mensajes guardados y una lista de lectura vacía útil. Indicar claramente que la persistencia es solo local y evitar afirmaciones sobre servicios oficiales.
05
Sistema de diseño NSW Fuentes y alcance
Estudio de taller redactado por OpenDesign que usa NSW Design System 3.27.0. El comportamiento nativo de las pestañas es real; el contenido y el flujo para guardar mensajes son lógica original de la aplicación local.