Governo e serviços públicos · Novo recurso

Sistema de design CMS.

Implemente o CMS Core com variáveis de tema versionadas, APIs reais do componente Review e um fluxo funcional de edição e revisão que preserve as respostas do usuário e o foco.

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

Prévia da interface sistema de design CMS

Edite uma preferência, salve ou descarte o rascunho e conclua uma revisão local sem enviar dados.

Revisar preferências de avisoAbrir exemplo completo
CMS Core 18.1.0 CSS e tema nativos. Estado de edição e JavaScript definidos pela aplicação; Arial como alternativa, sem ambiente de execução React nem envio externo. · Referência de implementação
02

Referência de design sistema de design CMS

O CMS Core 18.1.0 publicou core-theme.css e o componente CSS. Quando a documentação geral divergir, prevalece o artefato versionado. A prévia usa Arial como alternativa e uma área de 48rem específica da aplicação.

Papéis das cores

Fonte
Nome / RegraValor / ConfiguraçãoUso
--color-base#262626 Valor de texto do Core versionado; a descrição geral mais antiga menciona #333.
--color-primary / primary-darker#0071bc / #004f84Referências de ações e de interações em tons mais escuros.
--color-error / success#e31c3d / #12890eSempre associe a cor do estado a uma explicação textual.
--color-border#d9d9d9 Também usado por --review__border-color.
--color-focus-dark / focus-light#bd13b8 / #ffffffReferências de foco do tema.
--color-background / gray-lightest#ffffff / #f2f2f2Superfícies da página e de apoio em tons claros.

Tipografia

Fonte
Nome / RegraValor / ConfiguraçãoUso
--font-family-body / headingOpen Sans, Inter, Roboto, Helvetica Neue, Arial Nova, Nimbus Sans, Arial, sans-serifOrdem exata das famílias na versão 18.1.0; a prévia usa Arial como alternativa.
--font-size-sm / md / lg / xl / 2xl.875 / 1 / 1.125 / 1.3125 / 1.5rem14 / 16 / 18 / 21 / 24px com raiz de 16px.
--font-size-3xl--mobile / 3xl1.875 / 2.25rem30 / 36px.
--font-size-4xl--mobile / 4xl2.25 / 3rem36 / 48px.
--font-size-5xl--mobile / --tablet / 5xl2.25 / 3 / 3.75rem36 / 48 / 60px.
--font-line-height-base / heading1.5 / approximately 1.3O tema armazena o valor do título como 1.2999999523162842.

Espaçamento, grade e formas

Fonte
Nome / RegraValor / ConfiguraçãoUso
--spacer-half / 1 / 2 / 34 / 8 / 16 / 24pxOs modificadores numéricos utilitários multiplicam por 8px.
--spacer-4 / 5 / 6 / 732 / 40 / 48 / 56pxRitmo de layout mais amplo.
--grid-columns12Composição da grade.
--grid-gutter-width / grid-form-gutter-width32 / 16pxSepare as margens da grade genérica das margens dos formulários no tema atual.
--site-max-width1104pxReferência do contêiner do tema.
--site-margins / site-margins-mobile3rem / 1.5rem48 / 24px na raiz padrão.
--radius-default / medium / large3 / 4 / 8pxNão há um único valor universal de arredondamento.

Pontos de interrupção responsivos

Fonte
Nome / RegraValor / ConfiguraçãoUso
sm544pxPrefixo pequeno, com abordagem mobile-first.
md768pxPrefixo médio.
lg1024pxPrefixo grande.
xl1280pxPrefixo extragrande.
03

Guia completo sistema de design CMS

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

DESIGN-cms.md

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

Baixar o guia

Sistema de design CMS Escolha Core ou um tema derivado

O pacote é uma família, não um único tema visual de marca

O CMS Core fornece bases compartilhadas para a interface, com sistemas derivados separados para Healthcare.gov, Medicare.gov e CMS.gov. Esta referência fixa @cmsgov/design-system 18.1.0 e seu core-theme.css. Uma cor, um logotipo ou um componente disponível em um tema derivado não é automaticamente uma regra do Core. O exemplo usa intencionalmente um fluxo neutro de preferências de aviso e omite banners oficiais do governo e elementos de identidade visual.

Com base neste guia de OpenDesign

Há caminhos de integração com React, Preact, componentes web e HTML/CSS manuais. A documentação recomenda componentes JavaScript quando o comportamento integrado é útil; a coleção de componentes web é um subconjunto. Nosso exemplo independente usa CSS reais do Core com JavaScript da aplicação para editar, salvar e cancelar. Não afirmamos que CSS implemente validação, roteamento ou persistência.

Consulte a especificação de apoio

Sistema de design CMS Consulte o tema versionado

Inclua as duas folhas de estilo

index.css define as regras dos componentes, e core-theme.css fornece as variáveis. Omitir o tema pode deixar nomes de classe válidos com valores não resolvidos. Por outro lado, importar um tema do Medicare enquanto se descreve a tipografia do Core gera um resultado enganoso, mesmo que a página seja renderizada. A configuração inclui os dois recursos da mesma versão 18.1.0.

O tema versionado é a fonte dos valores numéricos deste guia. Por exemplo, --color-base é #262626, embora o texto geral sobre tipografia ainda mencione #333. O --grid-gutter-width do tema é --spacer-4 (32px), enquanto --grid-form-gutter-width é --spacer-2 (16px). Uma frase geral que descreva margens de 16px não deve ser aplicada a todas as variantes de grade. Essas diferenças são importantes ao reproduzir um layout real.

Consulte a especificação de apoio

Sistema de design CMS Tipografia e hierarquia do Core

Uma família, tamanhos explícitos por função

O Core usa Open Sans nos títulos e no conteúdo do corpo. A cadeia de fontes alternativas do tema 18.1.0 segue por Inter, Roboto, Helvetica Neue, Arial Nova, Nimbus Sans, Arial e sans-serif. O exemplo local usa Arial explicitamente para não solicitar arquivos de fontes externos; por isso, suas métricas diferem das da tipografia oficial completa.

O tamanho base do corpo é 1rem, com entrelinha de 1.5. As variáveis de tamanho incluem 14, 16, 18, 21 e 24px com uma raiz de 16px, seguidas por funções responsivas maiores: 3xl é 30px em dispositivos móveis e 36px nos demais; 4xl é 36px em dispositivos móveis e 48px nos demais; 5xl é 36px em dispositivos móveis, 48px em tablets e 60px em sua maior função. Esses são valores do tema, não uma autorização para usar o maior tamanho em todos os títulos de página. Use títulos semânticos e o mapeamento apropriado de utilitários ou de ds-content.

Consulte a especificação de apoio

Sistema de design CMS Espaçamento e layout responsivo

Ritmo de oito pixels com meio passo

--spacer-1 a --spacer-7 correspondem a 8–56px, em incrementos de oito pixels. --spacer-half é 4px e --spacer-none é zero. Portanto, uma classe como ds-u-margin--2 significa 16px, não 2rem. A linha de revisão nativa CSS tem preenchimento vertical de 16px e borda inferior de 2px; não é necessário envolver cada resposta em outro cartão com preenchimento.

A largura máxima do site Core é 1104px, com margens de 3rem no site e de 1.5rem em dispositivos móveis no tema versionado. O exemplo usa um contêiner de leitura menor, de 48rem, para duas linhas curtas de revisão. Essa é uma largura da aplicação, não um novo token do CMS.

Consulte a especificação de apoio

Use os prefixos de ponto de interrupção do CMS

Consulte a especificação de apoio

Sistema de design CMS Estrutura da linha de revisão e API

Um rótulo, um valor e um destino contextual de edição

Review envolve um item passível de revisão. Seu título usa h3 por padrão, pode ser definido com headingLevel e é seguido pelos elementos filhos que representam o valor atual. editHref fornece um destino; sem ele, nenhum link de edição é exibido. editAriaLabel dá ao link Editar, quando repetido, um nome acessível inequívoco. A declaração de tipos da versão 18.1.0 também disponibiliza editText, onEditClick e editContent; este último substitui o link padrão por conteúdo personalizado.

O exemplo React usa propriedades reais verificadas na declaração publicada. Os caminhos são rotas ilustrativas da aplicação, que devem ser implementadas pelo aplicativo que a consome. A alternativa nativa CSS mostra a estrutura ds-c-review, ds-c-review__content e ds-c-review__heading; ainda cabe à aplicação gerenciar a navegação e as atualizações.

jsx
import { Review } from '@cmsgov/design-system';
import '@cmsgov/design-system/css/index.css';
import '@cmsgov/design-system/css/core-theme.css';

export default function ContactReview() {
  return <section aria-labelledby="contact-title">
    <h2 id="contact-title">Contact preferences</h2>
    <Review heading="Notice format" headingLevel="3"
      editHref="/preferences/notice-format"
      editAriaLabel="Edit notice format">
      <p>Large print</p>
    </Review>
    <Review heading="Preferred language" headingLevel="3"
      editHref="/preferences/language"
      editAriaLabel="Edit preferred language">
      <p>English</p>
    </Review>
  </section>;
}

Referência de código

Consulte a especificação de apoio

Sistema de design CMS Edição de uma linha versus edição de uma seção

Mantenha previsível o caminho para corrigir informações

O padrão de revisão de formulários do CMS distingue a edição de uma resposta da edição de uma seção inteira. Preferências independentes, como formato de aviso e idioma, são adequadas à edição de uma linha. Respostas interdependentes, como os integrantes de uma família e suas relações, podem exigir a edição da seção para que a aplicação recalcule a consistência em conjunto. As orientações oficiais deixam claro que posicionar um botão Editar referente à seção ao lado do título dela não é uma funcionalidade implementada pelo próprio componente Review.

A demonstração abre um fieldset focado para a linha selecionada. Salvar atualiza apenas esse valor e devolve o foco ao controle Editar que iniciou a ação; Cancelar descarta o rascunho. A resposta visível também permanece inalterada enquanto o editor está aberto. Uma mensagem de status local informa a alteração realmente feita, em vez de anunciar sucesso apenas porque o formulário de edição apareceu.

  • Use os mesmos rótulos e a mesma ordem das perguntas no preenchimento e na revisão.
  • Forneça um nome contextual de edição para cada linha, mesmo quando o texto visível do link for Editar.
  • Mantenha a edição de seções fora do componente de linha única quando respostas relacionadas precisarem ser alteradas em conjunto.

Consulte a especificação de apoio

Sistema de design CMS Revisão, conclusão e veracidade

Uma revisão não é um comprovante de envio

Review é adequado para respostas editáveis de formulários, não para substituir resultados de pesquisa. Em um fluxo real de envio, o padrão prevê uma ação final de envio após a revisão. Essa ação só deve exibir um comprovante depois de representar um resultado real do backend. Em vez disso, o exemplo oferece a opção Concluir revisão local e informa explicitamente que nada é enviado ou armazenado.

O Core diferencia o azul primário #0071bc, o vermelho de erro #e31c3d, o verde de sucesso #12890e e o cinza da borda #d9d9d9. Uma preferência salva é identificada por texto, além da cor. O foco usa as referências de foco claras e escuras do tema; não remova o indicador ao estilizar Editar como um controle minimalista. O status final pode ser acessado pelo teclado e não apaga as linhas de revisão.

Consulte a especificação de apoio

Sistema de design CMS Instale e estenda com segurança

Um fluxo completo de CSS e um caminho real para o componente

Instale o pacote fixado e importe css/index.css e css/core-theme.css pelas exportações do pacote. Aplicações que consomem React importam Review da raiz do pacote; aplicações Preact têm uma entrada /preact. O exemplo não exige compilação de Sass. Ao copiar CSS estático, preserve os caminhos relativos dos recursos de fontes e imagens ou escolha explicitamente uma alternativa compatível, como neste exemplo.

O namespace do CMS separa layouts ds-l-, componentes ds-c- e utilitários ds-u-. As classes da aplicação não devem se passar por componentes oficiais não documentados. Na demonstração, o contêiner de leitura e o editor em linha são composições locais; a linha de revisão e os botões usam os estilos distribuídos.

  1. Carregue o componente e o tema CSS correspondentes do Core e renderize as duas linhas de revisão.
  2. Conecte cada ação de edição a um editor controlado; devolva o foco após salvar ou cancelar.
  3. Teste os valores alterados, os rascunhos descartados e a conclusão local final em larguras para desktop e dispositivos móveis.

Consulte a especificação de apoio

Sistema de design CMS Exemplos de componentes do sistema de design

Duas linhas de revisão independentes

Propriedades reais de React 18.1.0; as aplicações que consomem o pacote implementam as rotas de edição vinculadas.

jsx
import { Review } from '@cmsgov/design-system';
import '@cmsgov/design-system/css/index.css';
import '@cmsgov/design-system/css/core-theme.css';

export default function ContactReview() {
  return <section aria-labelledby="contact-title">
    <h2 id="contact-title">Contact preferences</h2>
    <Review heading="Notice format" headingLevel="3"
      editHref="/preferences/notice-format"
      editAriaLabel="Edit notice format">
      <p>Large print</p>
    </Review>
    <Review heading="Preferred language" headingLevel="3"
      editHref="/preferences/language"
      editAriaLabel="Edit preferred language">
      <p>English</p>
    </Review>
  </section>;
}

Referência de código

  • Review usa h3 por padrão.
  • editContent substitui o link de edição padrão; editHref é obrigatório para exibir esse link.

Estrutura nativa de revisão de CSS

Uma integração manual útil de HTML quando o aplicativo controla as interações.

html
<div class="ds-c-review">
  <div class="ds-c-review__content">
    <h3 class="ds-c-review__heading">Notice format</h3>
    <p>Large print</p>
  </div>
  <a href="/preferences/notice-format" aria-label="Edit notice format">Edit</a>
</div>

Referência de código

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>Notice preferences — CMS Core specimen</title><link rel="stylesheet" href="vendor/cms-18.1.0/index.css"><link rel="stylesheet" href="vendor/cms-18.1.0/core-theme.css"><style>body,body *,body *::before,body *::after{font-family:Arial,sans-serif!important}body{margin:0;border-top:8px solid #0071bc}.shell{max-width:48rem;margin:auto;padding:32px 24px}h1{font-size:32px;line-height:1.3;margin:16px 0 24px}h2{font-size:24px;margin:32px 0 16px}.intro{margin-bottom:32px}.ds-c-review__content p{margin:8px 0}.edit{align-self:flex-start;min-width:48px;border:0;background:none;color:#0071bc;text-decoration:underline;font-size:16px;padding:4px;cursor:pointer}.editor{margin:24px 0;padding:24px;background:#e6f1f8;border-left:4px solid #0071bc}fieldset{padding:0;border:0;margin:0}legend{font-size:20px;font-weight:700;margin-bottom:16px}.choice{display:flex;align-items:center;gap:12px;margin:16px 0}.choice input{width:20px;height:20px;accent-color:#0071bc}.actions{display:flex;flex-wrap:wrap;gap:24px;margin-top:24px}footer{margin-top:40px;padding-top:24px;border-top:1px solid #d9d9d9}#status{margin-top:24px;font-weight:bold}button:focus-visible,input:focus-visible{outline:3px solid #bd13b8;outline-offset:3px}[hidden]{display:none!important}@media(max-width:543px){.editor{padding:16px}.actions{flex-direction:column;align-items:flex-start}}</style></head><body><main class="shell"><p>CMS Core component example</p><h1>Review your notice preferences</h1><p class="intro">Check these fictional preferences before completing the local review. This example does not collect health information or contact details.</p><section aria-labelledby="preferences"><h2 id="preferences">Notice preferences</h2><div class="ds-c-review"><div class="ds-c-review__content"><h3 class="ds-c-review__heading">Notice format</h3><p id="format-value">Standard print</p></div><button class="edit" data-field="format" aria-label="Edit notice format">Edit</button></div><div class="ds-c-review"><div class="ds-c-review__content"><h3 class="ds-c-review__heading">Preferred language</h3><p id="language-value">English</p></div><button class="edit" data-field="language" aria-label="Edit preferred language">Edit</button></div></section><form class="editor" id="editor" hidden><fieldset><legend id="legend"></legend><div id="choices"></div></fieldset><div class="actions"><button class="ds-c-button ds-c-button--solid" type="submit">Save preference</button><button class="ds-c-button" id="cancel" type="button">Cancel</button></div></form><div class="actions"><button class="ds-c-button ds-c-button--solid" id="complete">Complete local review</button><button class="ds-c-button" id="reset">Reset example</button></div><p id="status" role="status"></p><footer>Native CMS Core 18.1.0 CSS · Arial fallback<br>Changes exist only on this page. Nothing is submitted or saved after you leave.</footer></main><script>const values={format:'Standard print',language:'English'},options={format:['Standard print','Large print','Electronic text'],language:['English','Spanish']},labels={format:'Notice format',language:'Preferred language'};let field,opener;const editor=document.querySelector('#editor'),status=document.querySelector('#status');function close(){editor.hidden=true;opener?.focus()}document.querySelectorAll('.edit').forEach(button=>button.addEventListener('click',()=>{field=button.dataset.field;opener=button;document.querySelector('#legend').textContent='Edit '+labels[field].toLowerCase();document.querySelector('#choices').replaceChildren(...options[field].map((text,i)=>{const label=document.createElement('label');label.className='choice';const input=document.createElement('input');input.type='radio';input.name='preference';input.value=text;input.checked=text===values[field];label.append(input,document.createTextNode(text));return label}));editor.hidden=false;editor.querySelector('input:checked').focus();status.textContent=''}));editor.addEventListener('submit',event=>{event.preventDefault();values[field]=editor.querySelector('input:checked').value;document.querySelector('#'+field+'-value').textContent=values[field];status.textContent=labels[field]+' updated to '+values[field]+'.';close()});document.querySelector('#cancel').addEventListener('click',close);document.querySelector('#complete').addEventListener('click',()=>{if(!editor.hidden){status.textContent='Save or cancel the open edit before completing the review.';editor.querySelector('input:checked').focus();return}status.textContent='Local review complete. No data was submitted.'});document.querySelector('#reset').addEventListener('click',()=>{values.format='Standard print';values.language='English';Object.entries(values).forEach(([key,value])=>document.querySelector('#'+key+'-value').textContent=value);editor.hidden=true;status.textContent='Example reset.'});</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

Configuração do agente de IA sistema de design CMS

Ponto de partida para implementação

As exportações do pacote e as propriedades de Review foram verificadas nos metadados/tipos publicados da versão 18.1.0. O exemplo de React é fornecido para integração; a prévia independente executa CSS nativo e o JavaScript local do aplicativo. O ZIP do exemplo funcional completo, em Fontes, também fornece 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/cms.html. Não abra exemplos baseados em módulos usando file://.

jsx
// npm install @cmsgov/[email protected]
import { Review } from '@cmsgov/design-system';
import '@cmsgov/design-system/css/index.css';
import '@cmsgov/design-system/css/core-theme.css';

export default function ContactReview() {
  return <section aria-labelledby="contact-title">
    <h2 id="contact-title">Contact preferences</h2>
    <Review heading="Notice format" headingLevel="3"
      editHref="/preferences/notice-format"
      editAriaLabel="Edit notice format">
      <p>Large print</p>
    </Review>
    <Review heading="Preferred language" headingLevel="3"
      editHref="/preferences/language"
      editAriaLabel="Edit preferred language">
      <p>English</p>
    </Review>
  </section>;
}

Um prompt para seu projeto

Prompt para agente de IA
Crie uma tela de revisão com CMS Core 18.1.0. Carregue index.css e core-theme.css juntos. Use Review com heading, children, editHref e editAriaLabel para cada resposta que possa ser editada de forma independente; a edição no nível da seção é uma composição separada do aplicativo. Preserve a ordem das perguntas e os valores salvos exibidos enquanto os rascunhos são editados. Devolva o foco ao salvar/cancelar e anuncie as atualizações efetivamente realizadas. Use tokens do Core, incluindo #262626 para o texto base, espaçamentos de 8px com meio passo de 4px, margem de 32px para a grade geral e margem de 16px para formulários. Não misture logotipos de temas filhos nem apresente uma revisão local como se ela enviasse dados ao aplicativo.
05

Fontes e escopo de sistema de design CMS

Referência técnica do tema Core. Preferências fictícias e alterações apenas locais; não representa orientação sobre elegibilidade a serviços de saúde, afiliação ao CMS nem um formulário enviado.