Governo e serviços públicos · Novo recurso

Sistema de design Canada.ca.

Explore a tipografia, os tokens semânticos e os componentes web nativos do GC Design System por meio de um guia de preparação completo e pesquisável, com comportamento de divulgação e estado vazio.

Guia OpenDesign6 capítulos29 entradas de referênciaGuia de aplicação original
01

Prévia da interface sistema de design Canada.ca

Filtre seis tópicos elaborados, expanda os detalhes nativos e recupere-se de uma busca sem resultados.

Encontre um tópico de preparaçãoAbrir exemplo completo
Elementos personalizados nativos de input, details e button do GC Design System 1.6.0; conteúdo e filtragem locais originais. · Referência de implementação
02

Referência de design sistema de design Canada.ca

Exports e contratos dos componentes publicados de @gcds-core/components 1.6.0 CSS; a prévia local incorpora @gcds-core/fonts 1.1.1.

Papéis semânticos de cor e interação

Fonte
Nome / RegraValor / ConfiguraçãoUso
--gcds-text-primary#333Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-text-secondary#595959 Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-bg-primary#26374a Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-bg-light#f2f2f2 Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-link-default#1f497a Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-link-hover#1354ec Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-link-visited#4b248f Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-focus-background#1354ec Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-focus-text#fffUse o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-danger-text#b3192e Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-disabled-background#d9d9d9 Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.
--gcds-border-default#8c8c8c Use o papel semântico adequado para texto, superfícies ou estados de interação. A cor do foco não é um destaque decorativo.

Tipografia e largura de leitura

Fonte
Nome / RegraValor / ConfiguraçãoUso
--gcds-font-h1700 2.5625rem/117% "Lato",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-font-h2700 2.4375rem/123% "Lato",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-font-h3700 1.8125rem/137% "Lato",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-font-h4700 1.6875rem/133% "Lato",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-font-text400 1.25rem/160% "Noto Sans",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-font-text-small400 1.125rem/155% "Noto Sans",sans-serifExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.
--gcds-text-character-limit65chExport de tipografia publicado do CSS. Carregue Lato e Noto Sans antes de avaliar o comprimento das linhas ou as quebras de texto.

Espaçamento e contêineres

Fonte
Nome / RegraValor / ConfiguraçãoUso
--gcds-spacing-1000.5remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-spacing-1500.75remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-spacing-2001remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-spacing-3001.5remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-spacing-4002remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-spacing-6003remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-container-sm30remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-container-md48remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-container-lg62remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
--gcds-container-xl71.25remUse o valor em rem exportado em vez de interpretar o sufixo do token como uma quantidade de pixels.
03

Guia completo do sistema de design Canada.ca

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

DESIGN-canada-ca.md

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

Baixar o guia

Escopo do pacote e dos componentes atuais do sistema de design Canada.ca

Use o namespace atual

O GC Design System é o sistema de componentes usado neste recurso do Canada.ca. O exemplo fixa a versão @gcds-core/components 1.6.0 e registra os elementos personalizados independentes input, details e button. Exemplos mais antigos podem usar o namespace @cdssnc. Siga a versão do pacote realmente instalada, em vez de misturar código de registro de versões diferentes.

Com base neste guia de OpenDesign

Mantenha o estudo de conteúdo separado de um serviço

O exemplo apresenta seis tópicos de preparação elaborados. Não inclui assinatura do Governo do Canadá, integração com agendamento nem afirmações sobre documentos obrigatórios. Seu objetivo é demonstrar um padrão real de conteúdo expansível e pesquisável. Reutilizar os componentes não estabelece que um aplicativo seja um serviço oficial nem que seu conteúdo atenda a todos os requisitos do Canada.ca.

Tipografia e ritmo de leitura do sistema de design Canada.ca

Carregue as duas famílias tipográficas

Os títulos usam Lato e o texto corrido usa Noto Sans. O estilo publicado para o texto do corpo em desktop usa 1.25rem com altura de linha de 160%; a referência exportada de largura legível é 65ch. Esses valores criam um ritmo de leitura bem mais aberto do que o de um painel compacto. A prévia local incorpora os arquivos de fontes publicados para evitar que uma falha ao carregar fontes externas altere o resultado sem aviso.

Respeite a declaração abreviada completa da fonte

A tabela de tokens inclui a declaração abreviada real de fonte do CSS, não apenas os tamanhos nominais em pixels. Peso, altura de linha e família tipográfica são importantes em conjunto. O título principal usa um sublinhado vermelho curto como detalhe de composição inspirado no Canada.ca; a largura de 72px não é apresentada como um token geral de espaçamento do GC. Em uma área de visualização estreita, o layout passa a ter uma coluna, mantendo o texto do corpo legível.

Cor semântica e comportamento do foco em sistema de design Canada.ca

Use papéis públicos para estados significativos

O texto principal usa #333, o secundário usa #595959 e a cor de superfície azul suave usa #26374a. Links, foco e perigo têm papéis distintos no CSS exportado. Um link não se distingue apenas pela mudança de cor: o elemento nativo de detalhes também oferece um indicativo visual e um estado acessível de expansão.

Não remova o indicador de foco visível

O campo e os botões nativos fornecem o comportamento de foco dos componentes. A aplicação CSS cuida do layout ao redor sem acessar raízes shadow para apagar contornos. A redefinição devolve o foco ao campo de pesquisa para que quem usa o teclado possa ajustar a consulta imediatamente. O Shadow DOM altera a aplicação de estilos personalizados e regras de visibilidade; por isso, inspecione o componente renderizado em vez de presumir que seletores comuns de elementos abrangem todos os estados.

Sistema de design Canada.ca Detalhes: conteúdo e prioridade das informações

Use elementos expansíveis para explicações complementares

Cada gcds-details nativo recebe um título em details-title e um texto complementar no slot padrão. As instruções essenciais permanecem visíveis na barra lateral. Um horário real de atendimento, endereço ou requisito não deve estar disponível apenas após a expansão de um painel. Os seis tópicos de exemplo são intencionalmente informativos: não coletam dados de identidade nem simulam um agendamento concluído.

  • Mantenha visíveis as informações essenciais sobre o serviço, sem exigir expansão.
  • Use um título curto e específico para os detalhes.
  • Evite elementos expansíveis aninhados que dificultem encontrar o conteúdo.

Preserve o estado dos elementos expansíveis durante a filtragem

Sistema de design Canada.ca Estado da pesquisa e recuperação quando não há resultados

Escute o evento personalizado documentado

gcds-input exige label, input-id e name. O evento gcdsInput disponibiliza o novo valor em event.detail. A aplicação compara a consulta, sem espaços nas extremidades e em letras minúsculas, com os títulos e o texto dos tópicos. Uma mensagem de status dinâmica informa a quantidade de resultados visíveis; se nenhum tópico corresponder, uma mensagem útil orienta a recuperação em vez de deixar uma área vazia sem explicação.

Faça da redefinição uma transição completa

O botão nativo secundário limpa o valor do componente, restaura as seis entradas e move o foco para o campo interno. Ele não redefine qual elemento expansível a pessoa já abriu. Essa separação mantém previsíveis o estado da consulta e o estado da leitura. Uma pesquisa de produção em um conjunto de dados remoto também precisaria definir regras para carregamento, falhas na solicitação e ordenação dos resultados; esse filtro local de seis itens não precisa sugerir que essas funcionalidades existem.

Sistema de design Canada.ca Integração completa de JavaScript

Reproduza o exemplo funcional

Crie um projeto Vite vanilla, instale o pacote do componente na versão fixada e substitua o arquivo de entrada pelo JavaScript completo abaixo. Salve canada.css ao lado dele e mantenha um elemento raiz de montagem. Os pontos de entrada diretos dos elementos personalizados registram as dependências necessárias; o pacote CSS fornece a camada de tokens. O código-fonte contém o conjunto de dados completo, o registro, a filtragem e o comportamento de redefinição.

  1. Instale o pacote na versão fixada em um projeto Vite vanilla.
  2. Salve o arquivo de entrada completo e canada.css, mantendo o elemento raiz de montagem.
  3. Pesquise uma palavra sem correspondências e verifique a mensagem de recuperação.
  4. Redefina, expanda um tópico e filtre novamente para verificar se o estado de leitura foi preservado.

Oculte os contêineres dos resultados sem destruir o estado dos elementos expansíveis

Coloque cada gcds-details dentro de um contêiner comum e alterne o estado hidden desse contêiner durante a filtragem. Caso contrário, as próprias regras de exibição de um elemento personalizado podem contrariar o que se espera de seletores genéricos de CSS. Mantenha as instâncias montadas para que um tópico expandido volte ao mesmo estado quando a consulta for apagada.

A pesquisa e os elementos expansíveis são controles separados. Leia a consulta em event.detail do evento gcdsInput, anuncie a quantidade de resultados e deixe o elemento details nativo controlar o próprio estado de expansão. A redefinição deve atualizar tanto o valor do componente quanto o modelo da consulta e, em seguida, devolver o foco ao campo. Recriar toda a região de resultados faria a pessoa perder a posição de leitura.

Sistema de design Canada.ca Exemplos de componentes do sistema de design

main.js — filtro completo de tópicos nativo

Arquivo de entrada completo, com registro dos componentes, tópicos definidos no código, filtragem, preservação dos elementos expansíveis e redefinição.

javascript
import {defineCustomElement as input} from '@gcds-core/components/dist/components/gcds-input.js';
import {defineCustomElement as details} from '@gcds-core/components/dist/components/gcds-details.js';
import {defineCustomElement as button} from '@gcds-core/components/dist/components/gcds-button.js';
import '@gcds-core/components/dist/gcds/gcds.css';
import './canada.css';
input();details();button();
document.getElementById('root').innerHTML=`<main><p class="eyebrow">GC DESIGN SYSTEM / ORIGINAL CONTENT STUDY</p><h1>Prepare for an appointment</h1><p class="lead">Find a preparation topic in this fictional service guide. These are sample explanations, not government requirements.</p><div class="search-row"><gcds-input id="filter" input-id="topic-search" name="topic-search" label="Filter preparation topics" hint="Try time, access or documents." type="search"></gcds-input><gcds-button id="reset" button-role="secondary" type="button">Reset filter</gcds-button></div><div class="layout"><section aria-labelledby="topic-heading"><h2 id="topic-heading">Preparation topics</h2><p id="count" role="status"></p><div id="topics"></div><div id="empty" hidden><h3>No matching topic</h3><p>Try a shorter word or reset the filter.</p></div></section><aside><h2>Before you continue</h2><p>Important information stays visible. Expandable details are reserved for supporting explanations.</p><ol><li>Confirm the purpose of the appointment with the real service.</li><li>Check its current requirements and contact information.</li><li>Ask for help if an instruction is unclear.</li></ol><p class="small">Native GC Design System components 1.6.0. No official identity marks or real service claims are used.</p></aside></div></main>`;
const topics=[['Confirm the time','Check the time and time zone shown in a real booking confirmation. This sample does not contain a live appointment.'],['Review the location','A real service should provide an address or joining instructions. A location belongs in visible booking details, not only inside a collapsed panel.'],['Plan access needs','Ask the service about accessibility arrangements through its official contact route. This sample demonstrates disclosure behavior and does not promise a particular accommodation.'],['Check documents','Follow the actual service’s published document requirements. This authored example intentionally does not invent a list of mandatory identity documents.'],['Keep a reference','If the service provides a booking reference, keep it with your confirmation. Do not paste personal reference numbers into this public specimen.'],['Prepare questions','Write down what you want to understand. In a real service, clear preparation content can reduce the need to remember questions during the appointment.']];const $=id=>document.getElementById(id);const entries=topics.map(([title,text])=>{const el=document.createElement('gcds-details');el.setAttribute('details-title',title);const p=document.createElement('p');p.textContent=text;el.append(p);const wrapper=document.createElement('div');wrapper.append(el);$('topics').append(wrapper);return{el,wrapper,title,text}});function render(q=''){let count=0;for(const item of entries){item.wrapper.hidden=!(item.title+' '+item.text).toLowerCase().includes(q.trim().toLowerCase());if(!item.wrapper.hidden)count++}$('count').textContent=count+' of '+topics.length+' sample topics';$('empty').hidden=count>0}$('filter').addEventListener('gcdsInput',e=>render(e.detail));$('reset').addEventListener('click',()=>{$('filter').value='';render();$('filter').shadowRoot.querySelector('input')?.focus()});render();

Referência de código

  • Salve como src/main.js com um elemento raiz de montagem. O pacote publicado CSS carrega os URLs das fontes padrão; esta prévia local incorpora as mesmas fontes públicas.

canada.css — composição de conteúdo responsiva

Layout original da página, disposto ao redor dos estilos nativos dos componentes.

css
*{box-sizing:border-box}body{margin:0;background:white;color:var(--gcds-text-primary);font:var(--gcds-font-text)}main{padding:32px}h1{font:var(--gcds-font-h1);margin:16px 0 24px;max-width:24ch}h1:after{content:'';display:block;width:72px;height:6px;background:#a62a1e;margin-top:16px}h2{font:var(--gcds-font-h3);margin:0 0 24px}h3{font:var(--gcds-font-h4)}p{margin:0 0 24px;max-width:65ch}.eyebrow,.small{font:var(--gcds-font-text-small)}.lead{max-width:65ch}.search-row{display:flex;align-items:end;gap:24px;margin:32px 0;border-top:1px solid #ccc;padding-top:24px}.search-row gcds-input{flex:1;max-width:650px}.search-row gcds-button{margin-bottom:var(--gcds-input-margin)}.layout{display:grid;grid-template-columns:1.6fr 1fr;gap:48px}aside{background:var(--gcds-color-grayscale-50);border-left:4px solid var(--gcds-color-blue-muted);padding:24px;align-self:start}aside h2{font:var(--gcds-font-h4)}aside ol{padding-left:24px}aside li{padding-left:8px;margin:16px 0}#count{font:var(--gcds-font-text-small)}#empty{padding:24px;background:var(--gcds-color-grayscale-50)}gcds-details{display:block}gcds-details p{padding-top:8px}[hidden]{display:none!important}@media(max-width:767px){main{padding:20px}.layout{grid-template-columns:1fr;gap:32px}.search-row{display:block}.search-row gcds-button{display:block;margin-top:16px}h1{font-size:2rem}aside{padding:20px}}

Referência de código

  • O ponto de interrupção do layout e a geometria do sublinhado do título são decisões específicas deste exemplo, não tokens oficiais adicionais.
04

Sistema de design Canada.ca Configuração do agente

Ponto de partida para implementação

A prévia local executa os elementos personalizados na versão fixada; não requer serviço remoto nem credenciais.

sh
npm create vite@latest gc-topics -- --template vanilla
cd gc-topics
npm install
npm install @gcds-core/[email protected]
# Replace src/main.js and add src/canada.css; keep <div id="root"></div>.
npm run dev

Um prompt para seu projeto

Prompt para agente de IA
Crie o guia de preparação com seis tópicos usando o GC Design System 1.6.0. Carregue a tipografia e os tokens CSS oficiais, use os componentes nativos de campo, detalhes e botão, preserve o estado dos elementos expansíveis durante a filtragem, anuncie a quantidade de resultados e ofereça um comportamento completo de redefinição. Mantenha o conteúdo essencial visível e diferencie as explicações de exemplo dos requisitos oficiais do serviço.
05

Sistema de design Canada.ca Fontes e escopo

Estudo de uma aplicação Canada.ca criada com OpenDesign e usando o GC Design System 1.6.0. Os tópicos de exemplo são orientações fictícias, não requisitos governamentais nem parte de um serviço oficial de agendamento.