Governo e serviços públicos · Novo recurso

Sistema de design Alberta.

Use os componentes web nativos e os tokens de design publicados da Alberta para criar uma lista completa de preparação, com opções acessíveis, progresso derivado e feedback de revisão transparente.

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

Sistema de design Alberta Prévia da interface

Selecione tarefas independentes, confira o progresso, revise localmente e limpe os controles nativos.

Revise uma lista de preparaçãoAbrir exemplo completo
goa-checkbox e goa-button nativos no @abgov/web-components 3.0.0; estado original da aplicação e alternativa Arial. · Referência de implementação
02

Sistema de design Alberta Referência de design

Exports reais do tema claro CSS em @abgov/web-components 3.0.0; a fonte Acumin licenciada não está incluída.

Papéis de interação e status do tema claro

Fonte
Nome / RegraValor / ConfiguraçãoUso
--goa-color-interactive-default#006dcc Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-interactive-hover#045092 Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-interactive-focus#006dcc Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-text-defaultvar(--goa-color-greyscale-black)Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-greyscale-100#f2f0f0 Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-emergency-default#da291c Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-success-default#006f4c Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.
--goa-color-success-light#d8f7e6 Valores extraídos da folha de estilos 3.0.0 fixada, antes das substituições do tema escuro. Use os papéis semânticos para o estado pretendido.

Escala de espaçamento e cantos

Fonte
Nome / RegraValor / ConfiguraçãoUso
--goa-space-3xs.125remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-2xs.25remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-xs.5remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-s.75remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-m1remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-l1.5remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-xl2remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-2xl3remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-space-3xl4remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-border-radius-xs.25remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-border-radius-s.375remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-border-radius-m.5remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.
--goa-border-radius-l.625remPrimitiva de espaçamento ou raio publicada. O ponto de quebra de duas colunas da aplicação é uma escolha de layout própria.

Primitivas tipográficas

Fonte
Nome / RegraValor / ConfiguraçãoUso
--goa-font-family-sansacumin-variable, helvetica-neue, arial, sans-serifO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-2.875remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-31remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-41.125remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-61.5remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-82remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-size-92.5remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-line-height-31.5remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-line-height-62.5remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-line-height-73remO export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-weight-regular400O export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
--goa-font-weight-bold700O export da família oficial está registrado aqui; o exemplo público usa deliberadamente Arial como alternativa, sem redistribuir arquivos licenciados da fonte Acumin.
03

Sistema de design Alberta Guia completo

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

DESIGN-alberta.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 Alberta Web Components e limites entre versões

Comece pela implementação que está realmente em execução

Este exemplo executa @abgov/web-components 3.0.0. Importar seu JavaScript registra os elementos personalizados, e importar index.css fornece a camada global de tokens. O HTML API sem abstração usa elementos com prefixo goa; os exemplos React usam wrappers Goab com uma interface de eventos diferente. Não copie diretamente as propriedades onChange de React para os elementos personalizados sem abstração.

Com base neste guia de OpenDesign

Diferencie a versão do pacote da versão do design

A versão de um pacote e a versão de estilo de um componente não são o mesmo campo. Alguns controles documentam um atributo de versão independente. Este exemplo mantém os padrões do pacote fixado, em vez de trocar silenciosamente a versão de estilo enquanto cita outro conjunto de valores de tokens. A tabela registra os exports reais do tema claro usados nesta compilação.

Sistema de design Alberta Papéis, ritmo e tipografia

Use as cores para comunicar o estado

A ação principal e o destaque do progresso usam o papel de padrão interativo. Uma revisão inválida exibe uma mensagem de emergência com uma instrução útil; uma revisão local concluída usa uma superfície de apoio na cor de sucesso. A cor de sucesso descreve o estado da revisão local, não um envio de formulário a um serviço governamental. Os rótulos de texto e a contagem numérica transmitem as mesmas informações sem depender da tonalidade.

Documente os limites de uso das fontes

A família publicada começa com Acumin, e a folha de estilos inclui declarações de fontes hospedadas externamente. A prévia usa Arial como fallback explícito e remove essas solicitações de fontes remotas; ela não redistribui Acumin. A referência de tokens preserva o nome real da família para que um serviço autorizado possa carregar as fontes de marca aprovadas. Verifique novamente as quebras de linha ao trocar o fallback por uma fonte licenciada.

Sistema de design Alberta Rótulos e descrições de caixas de seleção

Use opções independentes para tarefas independentes

Quatro controles nativos goa-checkbox representam itens de preparação que podem ser revisados em qualquer ordem. Cada um tem um nome exclusivo, um texto visível e uma descrição que explica sua finalidade. Controles de opção implicariam uma única escolha e não representariam corretamente essa tarefa. Um serviço real deve substituir o conteúdo fictício sobre preparação por instruções pesquisadas.

  • Dê a cada caixa de seleção um nome exclusivo e estável.
  • Mantenha o rótulo visível conciso e a descrição específica.
  • Use caixas de seleção independentes somente quando fizer sentido selecionar várias opções.

Leia os dados do evento personalizado

O componente Web bruto emite _change com name, checked e value em event.detail. O aplicativo usa o valor booleano de checked para atualizar um Set de índices selecionados. Ele não deduz o estado pelo texto do rótulo nem exige um clique em uma pequena entrada interna. Assim, clicar no rótulo visível e selecionar pelo teclado produzem a mesma transição de estado.

Sistema de design Alberta Estado de progresso e revisão

Derive o progresso das seleções

A contagem e o elemento nativo de progresso HTML são derivados do mesmo Set. Selecionar dois itens resulta em dois de quatro; limpar os controles retorna os dois indicadores a zero. O elemento de progresso tem um nome acessível, e o texto de status ao lado informa a contagem explicitamente. Não há simulação de envio, solicitação de rede nem temporizador de conclusão.

Invalide os resumos anteriores após uma alteração

Sistema de design Alberta Composição responsiva da lista de verificação

Mantenha a tarefa e o contexto legíveis

No layout para desktop, a lista de verificação fica ao lado de um painel de progresso complementar. Em telas estreitas, o painel aparece depois dos controles na ordem do documento. Os rótulos das tarefas mantêm um tamanho legível, e as descrições quebram naturalmente em linhas abaixo deles. A linha azul do painel lateral funciona como um discreto elemento de orientação; ela não cria outra ação concorrente.

Preserve as áreas de interação

A biblioteca de componentes fornece estilos de interação para caixas de seleção e botões. O aplicativo usa CSS para controlar o espaçamento e a grade ao redor, sem substituir as áreas de interação nativas. Em telas pequenas, as duas ações podem passar para linhas diferentes. Revisar é a ação principal; Limpar seleções é visualmente secundária e não se passa pela próxima etapa de um aplicativo real.

Sistema de design Alberta Implementação completa da lista de verificação

Execute o código-fonte completo

Crie um projeto Vite sem framework, instale o pacote de componentes Web na versão fixada e salve o arquivo de entrada fornecido e CSS. Mantenha o elemento raiz de montagem. O JavaScript inclui as quatro tarefas criadas, os vínculos de eventos nativos, a contagem derivada e as transições de revisão e redefinição. Não é necessária nenhuma conta, endpoint privado ou fonte de dados externa.

  1. Instale @abgov/web-components 3.0.0 e importe JavaScript e index.css.
  2. Salve o arquivo de entrada completo e alberta.css com o elemento raiz de montagem.
  3. Selecione várias tarefas e confira o progresso derivado.
  4. Revise, altere uma opção e limpe todas as seleções nativas.

Separe os eventos dos componentes das regras da lista de verificação

Use event.detail.checked do evento _change bruto como fonte de verdade para as seleções. As propriedades do wrapper React e os eventos brutos de goa-checkbox são interfaces diferentes; copiar um manipulador de uma para outra sem adaptar os dados recebidos pode deixar o indicador de progresso fora de sincronia com a caixa de seleção visível.

O requisito mínimo de um item na lista é uma regra do aplicativo, não uma regra integrada da caixa de seleção. Derive a contagem, o valor do progresso e o texto da revisão de um único Set de seleções. Ao limpar as seleções, redefina a propriedade checked de cada elemento personalizado, além do Set. Uma alteração em uma opção deve invalidar imediatamente a revisão anterior, para que ela não descreva uma seleção passada. Um serviço real de preparação pode permitir listas incompletas; defina essa regra antes de usar o progresso como condição para avançar.

Sistema de design Alberta Exemplos de componentes do sistema de design

main.js — lista de verificação nativa completa

Registro, conteúdo das tarefas, gerenciamento das seleções e transições de revisão e redefinição.

javascript
import '@abgov/web-components';
import '@abgov/web-components/index.css';
import './alberta.css';
document.getElementById('root').innerHTML=`<main><p class="eyebrow">ALBERTA DESIGN SYSTEM / COMPONENT STUDY</p><h1>Prepare a submission</h1><p class="lead">Track an original sample checklist. These preparation steps are illustrative, not eligibility rules for a government program.</p><div class="workspace"><section aria-labelledby="tasks-heading"><h2 id="tasks-heading">Your preparation checklist</h2><p>Check each item when you have reviewed it.</p><div id="tasks"></div><div class="actions"><goa-button id="review">Review checklist</goa-button><goa-button id="reset" type="tertiary">Clear selections</goa-button></div><p id="error" role="alert" hidden>Select at least one item before reviewing.</p><section id="result" hidden tabindex="-1" aria-labelledby="result-heading"><h3 id="result-heading">Local review</h3><p id="result-text"></p></section></section><aside><p class="eyebrow">YOUR PROGRESS</p><strong id="total">0 of 4</strong><progress id="progress" value="0" max="4" aria-label="Reviewed preparation items"></progress><p id="status" role="status">No items reviewed yet.</p><h3>What happens next</h3><p>Your selections stay only in this page. Review summarizes your progress; it does not submit an application.</p><ul><li>Use the real service’s current instructions.</li><li>Do not enter personal information in a public example.</li><li>Recheck the summary after changing a selection.</li></ul></aside></div></main>`;
const labels=['Read the service instructions','Identify questions to ask','Check your own supporting information','Choose a time to complete the task'];const selected=new Set();const $=id=>document.getElementById(id);const controls=labels.map((text,i)=>{const el=document.createElement('goa-checkbox');el.setAttribute('name','step-'+i);el.setAttribute('text',text);el.setAttribute('description',['Understand the actual task before collecting information.','Record anything that needs clarification from the service.','Use the real service’s requirements, not this sample list.','Leave enough time to review the information you provide.'][i]);el.addEventListener('_change',e=>{e.detail.checked?selected.add(i):selected.delete(i);update()});$('tasks').append(el);return el});function update(){$('total').textContent=selected.size+' of 4';$('progress').value=selected.size;$('status').textContent=selected.size===4?'All sample items reviewed.':selected.size+' sample items reviewed.';$('result').hidden=true;$('error').hidden=true}$('review').addEventListener('_click',()=>{if(!selected.size){$('error').hidden=false;controls[0].shadowRoot.querySelector('input')?.focus();return}$('result-text').textContent=selected.size+' reviewed: '+[...selected].sort().map(i=>labels[i]).join('; ')+'. This is a local summary only.';$('result').hidden=false;$('result').focus()});$('reset').addEventListener('_click',()=>{selected.clear();controls.forEach(el=>el.setAttribute('checked','false'));update()});

Referência de código

  • Os elementos personalizados brutos usam os eventos _change e _click; não os substitua por callbacks do wrapper React.

alberta.css — layout das tarefas e fallback explícito de fonte

Composição responsiva original em torno dos controles nativos.

css
main{padding:32px;max-width:1200px;margin:auto}.eyebrow{font-size:14px;letter-spacing:.06em;font-weight:700}h1{margin:16px 0 24px}.lead{max-width:65ch}.workspace{display:grid;grid-template-columns:1.5fr 1fr;gap:48px;margin-top:40px}h2{margin-top:0}goa-checkbox{display:block;margin-bottom:24px}.actions{display:flex;flex-wrap:wrap;gap:16px;margin-top:32px}aside{padding:24px;background:var(--goa-color-greyscale-100);border-top:4px solid var(--goa-color-interactive-default);align-self:start}aside strong{display:block;font:var(--goa-typography-heading-l)}progress{display:block;width:100%;height:12px;margin:24px 0;accent-color:var(--goa-color-interactive-default)}aside li{margin:12px 0}#error{margin-top:24px;color:var(--goa-color-emergency-default)}#result{margin-top:24px;padding:24px;border-left:4px solid var(--goa-color-success-default);background:var(--goa-color-success-light)}#result h3{margin-top:0}[hidden]{display:none!important}@media(max-width:760px){main{padding:20px}.workspace{grid-template-columns:1fr;gap:32px}h1{font-size:32px;line-height:1.2}}

/* Public specimen font fallback; load approved Acumin only where licensed. */
:root{--goa-font-family-sans:Arial,sans-serif;--goa-font-family-mono:monospace;}

Referência de código

  • A prévia local omite as importações de fontes externas que não são usadas. A folha de estilos completa do pacote pode conter declarações de fontes externas; a substituição mantém este estudo em Arial.
04

Sistema de design Alberta Configuração do agente de IA

Ponto de partida para implementação

Os controles nativos fixados foram testados localmente no navegador, sem backend de envio.

sh
npm create vite@latest alberta-checklist -- --template vanilla
cd alberta-checklist
npm install
npm install @abgov/[email protected]
# Replace src/main.js and add src/alberta.css. Keep <div id="root"></div>.
npm run dev

Um prompt para seu projeto

Prompt para agente de IA
Crie a lista de verificação de preparação de Alberta usando web-components 3.0.0, papéis semânticos reais de CSS e limites explícitos para o licenciamento de fontes. Use descrições nativas para as caixas de seleção, derive o progresso das seleções, não permita revisões vazias, invalide resumos antigos após alterações e redefina os controles reais. Mantenha todos os resultados locais e deixe claro que as tarefas criadas são apenas ilustrativas.
05

Sistema de design Alberta Fontes e escopo

Um estudo de componentes de OpenDesign que usa web components de Alberta 3.0.0 e Arial como fallback explícito de fonte. As tarefas criadas são fictícias e não definem requisitos de elegibilidade ou de envio para o governo.