Governo e serviços públicos · Novo recurso

Sistema de design VA.

Crie jornadas de serviço claras com os tokens semânticos e a Process List nativa da VA: explicações visíveis das etapas, rótulos de status significativos e detalhes complementares que mantêm o fluxo principal legível.

Guia OpenDesign8 capítulos21 entradas de referênciaGuia de aplicação original
01

Visualização de interface do sistema de design VA

Explore três estados ilustrativos de um processo e abra uma explicação complementar sem ocultar o resumo das etapas.

Entenda o percurso de uma solicitaçãoAbrir exemplo completo
Web Components nativos do VA 24.14.0 (dependência component-library 56.14.0) e tokens do css-library 0.36.1; controlador de cenário original e fontes substitutas. · Referência de implementação
02

Referência de design do sistema de design VA

Variáveis publicadas do css-library 0.36.1 e web-components 24.14.0 da dependência component-library 56.14.0. As fontes são substituições locais explícitas. O contêiner de demonstração de 52rem é uma escolha da aplicação.

Tipografia semântica

Fonte
Nome / RegraValor / ConfiguraçãoUso
--vads-font-family-headingBitter, Georgia, Cambria, Times New Roman, Times, serifFamília dos títulos; a visualização usa Georgia.
--vads-font-family-sansSource Sans Pro Web / Source Sans Pro, system sans fallbacksFamília do corpo e da interface; a visualização usa Arial.
--vads-font-size-body-default1.06rem (about 17px)Prefira a função semântica a source-sans-normalized.
--vads-font-size-heading-level-1 / 2 / 32.5 / 2 / 1.25rem40 / 32 / 20px com raiz de 16px.
--vads-font-size-heading-level-4 / 5 / 61.063 / .938 / .938remCerca de 17 / 15 / 15px.
--vads-font-line-height-default / heading / body-lead1.5 / 1.2 / 1.75Use a função tipográfica correspondente.

Espaçamento

Fonte
Nome / RegraValor / ConfiguraçãoUso
--vads-spacing-inset-s / m / l1 / 1.5 / 2rem16 / 24 / 32px.
--vads-spacing-vertical-stack-default1rem / 16pxEmpilhamento vertical geral.
--vads-forms-spacing-vertical-stack-default2rem / 32pxEmpilhamento de campos de formulário.
--vads-spacing-0p5 / 1 / 1p5 / 2 / 2p5 / 34 / 8 / 12 / 16 / 20 / 24pxEscala primitiva com tamanho de raiz padrão.
--vads-spacing-4 / 5 / 6 / 7 / 832 / 40 / 48 / 56 / 64pxValores primitivos maiores.

Cor semântica

Fonte
Nome / RegraValor / ConfiguraçãoUso
--vads-color-text#1b1b1b Função de texto padrão preferencial.
--vads-color-link / link-active#005ea2 / #0b4778Funções de link padrão e ativo.
--vads-color-primary-darker#162e51 Referência de superfície primária de alta ênfase.
--vads-color-base-lighter / base-lightest#dfe1e2 / #f0f0f0Divisórias e fundos neutros.
--vads-color-error#d54309 Use a semântica de erro em vez do vermelho secundário obsoleto.
--vads-color-success-darker#216e1f Referência mais escura para sucesso; o status ainda precisa ser expresso em palavras.

Pontos de interrupção responsivos

Fonte
Nome / RegraValor / ConfiguraçãoUso
--vads-breakpoint-mobile / mobile-lg320 / 480pxLimites de referência para telas pequenas.
--vads-breakpoint-tablet / tablet-lg640 / 880pxLayouts intermediários.
--vads-breakpoint-desktop / desktop-lg1024 / 1201pxLimites para desktop.
--vads-breakpoint-widescreen1400pxReferência para layouts amplos.
03

Guia completo de sistema de design VA

Um guia prático para escolher, aplicar e avaliar este sistema em uma interface real.

DESIGN-va.md

Orientações completas, um ponto de partida para a implementação e links para o código-fonte.

Baixar o guia

Um sistema de serviços para veteranos do sistema de design VA

Fundamentos e componentes são pacotes separados

O sistema do VA combina padrões de serviço, orientações de conteúdo, tokens, utilitários CSS e Web Components. A instalação documentada usa um pacote CSS-library para os fundamentos globais e um pacote component-library para os elementos interativos. Esta referência combina component-library 56.14.0 com css-library 0.36.1; esses pacotes têm números de versão independentes.

Com base neste guia de OpenDesign

O exemplo explica ficticiamente como solicitar registros. Ele mostra como uma lista de etapas comunica o andamento sem afirmar que uma solicitação foi enviada ou que alguém tem direito a um benefício. Não há logotipo do VA, faixa de identidade governamental, registro pessoal nem status de caso real. O conteúdo de um serviço em produção ainda precisa ser verificado com o programa responsável do VA.

Consulte a especificação de apoio

Funções tipográficas semânticas do sistema de design VA

As famílias tipográficas do corpo e dos títulos são intencionalmente diferentes

A família semântica dos títulos é Bitter, com Georgia e outras fontes serifadas como alternativas. A pilha do corpo começa com Source Sans Pro Web e Source Sans Pro, seguidas por alternativas sans-serif da plataforma. A função padrão do corpo é 1.06rem, aproximadamente 17px com uma raiz de 16px; os títulos usam 40px no nível 1, 32px no nível 2, 20px no nível 3 e aproximadamente 17px no nível 4.

Use --vads-font-size-body-default em vez do nome antigo source-sans-normalized. O token semântico indica a função, enquanto o nome antigo de normalização revela um detalhe da implementação da fonte. A prévia usa explicitamente Arial no texto do corpo e Georgia nos títulos. O componente nativo de processo CSS continua controlando sua estrutura e seus tamanhos internos; a alternativa não afirma reproduzir exatamente as métricas de Source Sans e Bitter.

Consulte a especificação de apoio

A altura da linha depende da função

A altura de linha padrão é 1,5 para parágrafos e 1,2 para títulos. O texto de abertura usa 1,75; o token de altura de linha serifada é 1,9, destinado a textos corridos com serifa, não a todos os títulos serifados. Aplicar 1,9 a um título compacto de etapa confundiria duas funções distintas. Neste exemplo, os itens do processo usam o nível 3, abaixo do título de seção da página, que está no nível 2.

Consulte a especificação de apoio

Sistema de design VA Espaçamento semântico e layout

Diferencie uma pilha comum de um formulário

O valor padrão da pilha vertical geral é 1rem/16px. O valor padrão da pilha vertical de formulários é 2rem/32px. Essa diferença é útil: dois itens explicativos curtos precisam de um ritmo diferente daquele usado entre perguntas separadas, com rótulos, dicas, controles e erros. Os recuos s, m e l correspondem a 16, 24 e 32px, respectivamente.

A escala de espaçamento primitiva inclui 4, 8, 12, 16, 20 e 24px, além de incrementos maiores de oito pixels e valores especiais de um e dois pixels. Prefira nomes de espaçamento semânticos quando corresponderem à finalidade do layout. O contêiner externo de 52rem do exemplo é uma escolha da aplicação; já o recuo de 24px e o espaço de 32px entre seções usam valores publicados da escala. Isso não impõe esse contêiner a todos os modelos de página da VA.

Consulte a especificação de apoio

Sistema de design VA Cores e tokens responsivos

Prefira uma função a um nome histórico

O token atual para texto é --vads-color-text (#1b1b1b). --vads-color-link é #005ea2 e a função de link ativo é #0b4778; esses valores não correspondem a todas as entradas mais escuras da família de cores primárias. A função de erro é #d54309. A família herdada de vermelho secundário está obsoleta para essa finalidade. Portanto, uma nova apresentação de validação deve usar a semântica de erro, não a de secundário.

As tabelas de valores primitivos e semânticos são geradas a partir de uma versão identificada de CSS-library. O exemplo carrega essas variáveis reais, em vez de copiar uma paleta antiga de USWDS e identificá-la como VA. Além dessas variáveis, os componentes nativos podem conter valores compilados próprios; ao atualizar, verifique ambas as camadas.

Consulte a especificação de apoio

Os limites da VA não correspondem a uma escala genérica de framework

Consulte a especificação de apoio

Sistema de design VA Anatomia de Process List

De três a dez etapas significativas

O Process List da VA também é descrito como um mapa de metrô. Ele explica um processo mais longo ou mostra em que etapa a pessoa está. As diretrizes recomendam de três a dez etapas e apenas uma lista desse tipo por página. Cada item precisa de um título conciso iniciado por um verbo e de conteúdo explicativo visível; não deve ser apenas um número decorativo ao lado de um título sem conteúdo.

As tags nativas são va-process-list e va-process-list-item. Um item aceita header e level, além de active, pending, checkmark e status-text. O módulo publicado do componente dá precedência a checkmark, depois a active e, por fim, a pending. Evite combinações contraditórias: ao definir um estado booleano, desative os demais. O texto de status explícito acompanha o estilo de status e ajuda a entender a etapa sem depender da cor.

html
<va-process-list>
  <va-process-list-item header="Prepare your request" level="3"
      checkmark="true" status-text="Complete">
    <p>Identify the record you need and the office that holds it.</p>
    <va-details label="What information helps identify a record?">
      <p>A title, approximate date, or reference number can help distinguish similar records. This is illustrative content, not a VA records-request procedure.</p>
    </va-details>
  </va-process-list-item>
  <va-process-list-item header="Send the request" level="3"
      active="true" status-text="Active">
    <p>In this example, a request is ready for the appropriate service. No request is sent from this page.</p>
  </va-process-list-item>
  <va-process-list-item header="Read the response" level="3"
      pending="true" status-text="Pending">
    <p>A real service should explain where a response appears and how to ask about missing information.</p>
  </va-process-list-item>
</va-process-list>

Referência de código

Consulte a especificação de apoio

Sistema de design VA Use Details como complemento a uma etapa visível

Não transforme todas as etapas em acordeões

As diretrizes do Process List não recomendam combinar o cabeçalho de um acordeão com uma etapa do processo. Ocultar toda a explicação vai contra o objetivo de mostrar o processo. É permitido incluir um componente Details em uma etapa para apresentar informações complementares. Neste exemplo, a explicação para identificar o registro permanece visível, enquanto um detalhamento opcional fica em va-details.

O atributo label do componente se torna a pergunta visível na área expansível. Uma pergunta curta é mais útil do que “Mais informações”, pois indica às pessoas se o conteúdo oculto é relevante. Neste exemplo, os detalhes explicam o que pode ajudar a identificar um registro, com uma observação explícita de que o conteúdo é ilustrativo e não serve como instrução para um procedimento específico da VA.

  • Mantenha visível um resumo de cada etapa, inclusive das etapas marcadas como Pendente.
  • Use a área expansível Details apenas para uma explicação complementar dentro de uma etapa.
  • Mantenha a próxima ação real do serviço fora do título da etapa, em vez de transformar o título em um controle.

Consulte a especificação de apoio

Sistema de design VA Demonstração de status e veracidade

Use um seletor de cenários, não um progresso fictício

O seletor de etapas de exemplo da prévia alterna a demonstração do componente entre preparação, envio e análise da resposta. Ele não avança uma solicitação real, não estima o tempo oficial de processamento nem deduz que algo foi concluído porque alguém clicou em um botão. Um serviço em produção deve mapear o estado verificado no backend para esses estados visuais e explicar separadamente o significado de qualquer atraso.

Ao mudar o seletor, as etapas anteriores ficam como Concluída, a etapa selecionada fica como Ativa e as etapas seguintes ficam como Pendente. Uma mensagem de status dinâmica anuncia a mudança no estado do exemplo. As três explicações permanecem visíveis no processo, e o estado opcional de Details é mantido. A opção de redefinição retorna à primeira etapa ilustrativa e fecha a área expansível complementar.

Consulte a especificação de apoio

Sistema de design VA Carregue os Web Components nativos

Registre uma vez e preserve as dependências

O fluxo documentado do bundler importa main.css e chama defineCustomElements do pacote component-library. As fontes vêm de CSS-library e são carregadas separadamente. Os componentes que usam o sprite de ícones precisam de um caminho para o sprite na mesma origem, /img/sprite.svg por padrão. Esses são requisitos reais de integração, não ajustes opcionais a descobrir depois da implantação.

O exemplo independente usa a entrada oficial ESM para navegadores do web-components 24.14.0, a dependência declarada por component-library 56.14.0, além dos módulos sob demanda específicos para Process List, Process List Item e Details. O script da aplicação apenas seleciona os estados de exemplo. O ambiente de execução do navegador fornece o comportamento dos elementos personalizados nativos, inclusive o controle de Details.

  1. Carregue o arquivo de tokens correspondente de CSS e a entrada dos componentes para navegador, preservando os caminhos relativos dos módulos.
  2. Aguarde a definição de va-process-list-item antes de atribuir propriedades de estado de exemplo.
  3. Teste todos os estados do cenário, o controle de teclado de Details e as larguras reduzidas sem ocultar o conteúdo explicativo.

Consulte a especificação de apoio

Sistema de design VA Exemplos de componentes do sistema de design

Uma explicação nativa em três etapas

Atributos reais de Web Component e uma área expansível Details permitida dentro de uma etapa.

html
<va-process-list>
  <va-process-list-item header="Prepare your request" level="3"
      checkmark="true" status-text="Complete">
    <p>Identify the record you need and the office that holds it.</p>
    <va-details label="What information helps identify a record?">
      <p>A title, approximate date, or reference number can help distinguish similar records. This is illustrative content, not a VA records-request procedure.</p>
    </va-details>
  </va-process-list-item>
  <va-process-list-item header="Send the request" level="3"
      active="true" status-text="Active">
    <p>In this example, a request is ready for the appropriate service. No request is sent from this page.</p>
  </va-process-list-item>
  <va-process-list-item header="Read the response" level="3"
      pending="true" status-text="Pending">
    <p>A real service should explain where a response appears and how to ask about missing information.</p>
  </va-process-list-item>
</va-process-list>

Referência de código

  • Use de 3 a 10 etapas e um único Process List por página.
  • Não substitua os títulos das etapas por controles de acordeão.
  • Defina apenas um indicador de status por item.

Exemplo completo independente

O documento completo inclui layout, controles e inicialização. Extraia o arquivo de exemplo indicado para obter os recursos do fornecedor no caminho relativo exato e, em seguida, disponibilize-o por HTTP.

html
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Request journey — VA component specimen</title><link rel="stylesheet" href="vendor/va-56.14.0/variables.css"><style>*{box-sizing:border-box}:root{--font-serif:Georgia,serif;--font-sans:Arial,sans-serif;--vads-font-family-heading:Georgia,serif;--vads-font-family-serif:Georgia,serif;--vads-font-family-sans:Arial,sans-serif}body{margin:0;font:1.06rem/1.5 Arial,sans-serif;color:var(--vads-color-text);border-top:8px solid var(--vads-color-primary-darker)}main{max-width:52rem;margin:auto;padding:32px 24px}h1,h2{font-family:Georgia,serif;line-height:1.2}h1{font-size:40px;margin:16px 0 24px}h2{font-size:32px;margin:32px 0 24px}.controls{padding:24px;background:var(--vads-color-base-lightest);display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:32px 0}label{font-weight:bold}select,button{font:inherit;padding:8px 12px;max-width:100%;background:white;color:var(--vads-color-text);border:1px solid var(--vads-color-base-dark)}button{cursor:pointer;color:var(--vads-color-link)}select:focus-visible,button:focus-visible{outline:3px solid #ffbe2e;outline-offset:3px}va-process-list-item,va-process-list-item *,va-process-list-item::before{font-family:Arial,sans-serif!important}va-process-list-item .usa-process-list__heading{font-family:Georgia,serif!important}va-process-list-item p{margin:8px 0 16px}footer{border-top:1px solid #dfe1e2;padding-top:24px;margin-top:32px}.note{background:#e7f6f8;padding:16px;border-left:4px solid #005ea2}#state{font-weight:bold}@media(max-width:479px){h1{font-size:32px}.controls{padding:16px;align-items:flex-start;flex-direction:column}}</style></head><body><main><p>VA native component example</p><h1>Understand a request journey</h1><p>See how a service can explain preparation, sending a request, and reviewing its response.</p><p class="note">Fictional process for design exploration. These are not VA submission instructions or a real case status.</p><div class="controls"><label for="stage">Example stage</label><select id="stage"><option value="0">Preparing a request</option><option value="1">Sending a request</option><option value="2">Reviewing a response</option></select><button id="reset" type="button">Reset example</button></div><p id="state" role="status">Example: preparing a request.</p><h2>The three stages</h2><va-process-list>
  <va-process-list-item header="Prepare your request" level="3"
      checkmark="true" status-text="Complete">
    <p>Identify the record you need and the office that holds it.</p>
    <va-details label="What information helps identify a record?">
      <p>A title, approximate date, or reference number can help distinguish similar records. This is illustrative content, not a VA records-request procedure.</p>
    </va-details>
  </va-process-list-item>
  <va-process-list-item header="Send the request" level="3"
      active="true" status-text="Active">
    <p>In this example, a request is ready for the appropriate service. No request is sent from this page.</p>
  </va-process-list-item>
  <va-process-list-item header="Read the response" level="3"
      pending="true" status-text="Pending">
    <p>A real service should explain where a response appears and how to ask about missing information.</p>
  </va-process-list-item>
</va-process-list><footer>Native VA Web Components 24.14.0 · CSS tokens 0.36.1<br>Arial and Georgia fallbacks. No request is sent or stored.</footer></main><script>globalThis.getVaIconSpriteLocation=()=>new URL("vendor/va-web-24.14.0/sprite.svg",document.baseURI).pathname;</script><script type="module" src="vendor/va-web-24.14.0/component-library.esm.js"></script><script type="module">await customElements.whenDefined('va-process-list-item');const items=[...document.querySelectorAll('va-process-list-item')],select=document.querySelector('#stage');function render(){const current=Number(select.value);items.forEach((item,i)=>{for(const [key,on] of Object.entries({active:i===current,pending:i>current,checkmark:i<current})){item[key]=on;if(on)item.setAttribute(key,'true');else item.removeAttribute(key)}item.statusText=i<current?'Complete':i===current?'Active':'Pending';item.setAttribute('status-text',item.statusText)});document.querySelector('#state').textContent='Example: '+select.selectedOptions[0].textContent.toLowerCase()+'.'}select.addEventListener('change',render);document.querySelector('#reset').addEventListener('click',()=>{select.value='0';render();const detail=document.querySelector('va-details');if(detail.shadowRoot){if(detail.shadowRoot.querySelector('details').open)detail.shadowRoot.querySelector('summary').click()}select.focus()});render();</script></body></html>

Referência de código

  • Baixe o exemplo completo em Fontes. O README informa o comando exato para iniciá-lo localmente.
  • Mantenha os caminhos do fornecedor relativos a este documento; o arquivo inclui todos os recursos usados nesta prévia.
04

Sistema de design VA Configuração do agente

Ponto de partida para implementação

Inicialização documentada do bundler com versões de pacotes verificadas. O exemplo independente para navegador usa a distribuição ESM nativa correspondente de web-components, e não um build de React. O ZIP completo do exemplo funcional, disponível em Sources, também inclui as dependências exatas da prévia e o documento completo. Extraia os arquivos, execute python3 -m http.server 8080 nesse diretório e abra http://localhost:8080/va.html. Não abra exemplos baseados em módulos usando file://.

javascript
// Install in an application with a JavaScript bundler:
// npm install @department-of-veterans-affairs/[email protected] \
//   @department-of-veterans-affairs/[email protected]
import '@department-of-veterans-affairs/component-library/dist/main.css';
import '@department-of-veterans-affairs/css-library/dist/tokens/css/variables.css';
import { defineCustomElements } from '@department-of-veterans-affairs/component-library';
defineCustomElements();
// Render the va-process-list markup in your page after this initialization.
// Deliver the CSS-library fonts separately, or choose an explicit fallback.
// Components that use va-icon also require the same-origin /img/sprite.svg.

Um prompt para seu projeto

Prompt para agente de IA
Crie uma explicação de processo de serviço da VA com um va-process-list contendo de três a dez elementos va-process-list-item. Use cabeçalhos iniciados por verbos, level=3 abaixo de um h2, descrições visíveis e um único estado active/pending/checkmark por item, com status-text explícito. Use va-details somente para texto complementar dentro de uma etapa; nunca oculte a etapa inteira. Importe o arquivo atual de tokens VADS CSS e registre os componentes nativos. Preserve o corpo do texto em 17px, as funções das famílias Bitter/Source Sans, o espaçamento semântico e os limites de 320/480/640/880/1024/1201/1400px. Qualquer demonstração interativa deve identificar suas etapas como ilustrativas e nunca se passar por uma solicitação enviada à VA.
05

Sistema de design VA Fontes e escopo

Demonstração técnica de componente com etapas fictícias de solicitação de registros. Não representa uma solicitação real à VA, o status de um caso, uma decisão sobre benefícios nem um endosso institucional.