Design de produto empresarial · Novo recurso

Sistema de design Visa Product.

Use o Nova CSS da Visa para criar uma opção clara de formato de extrato, com controles de opção nativos, cabeçalho em cor alternativa e resumo para revisão. Confira os valores exatos do tema 1.6.5, o espaçamento escalável e a integração completa da folha de estilos.

Guia OpenDesign7 capítulos40 entradas de referênciaGuia de aplicação original
01

Prévia da interface sistema de design Visa Product

Selecione um formato e uma frequência, confira a preferência local e redefina-a.

Preferência de formato do extratoAbrir exemplo completo
@visa/nova-styles 1.6.5 CSS nativo e tema Visa incorporados localmente; regras font-face remotas removidas e fontes do sistema utilizadas. Layout original da aplicação e script local. · Referência de implementação
02

Referência de design sistema de design Visa Product

Estilos publicados de @visa/nova-styles 1.6.5, tema Visa e metadados do exemplo. Os valores padrão/claros são separados das substituições para os temas alternativo e escuro. A prévia incorpora localmente o CSS oficial, remove as regras font-face remotas e usa fontes do sistema como alternativa.

Paleta padrão

Fonte
Nome / RegraValor / ConfiguraçãoUso
--palette-default-active#1434cb Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-active-hover#173be8 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-active-pressed#0f2595 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-active-accent#fcc015 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-surface-1#ffffff Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-surface-2#f5f5f5 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-surface-3#f0f0f0 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-text#000000 Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-text-subtle#4a4a4a Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-text-on-active#ffffff Referência do tema padrão/claro do Visa 1.6.5.
--palette-default-borderrgba(0, 0, 0, 0.1)Referência do tema padrão/claro do Visa 1.6.5.

Tamanho e tipografia do tema

Fonte
Nome / RegraValor / ConfiguraçãoUso
--theme-font-size14pxReferência do tema padrão/claro do Visa 1.6.5.
--theme-border-radius6pxReferência do tema padrão/claro do Visa 1.6.5.
--typography-headline-1-font-size2.2857142857remReferência do tema padrão/claro do Visa 1.6.5.
--typography-headline-2-font-size1.7857142857remReferência do tema padrão/claro do Visa 1.6.5.
--typography-headline-3-font-size1.4285714286remReferência do tema padrão/claro do Visa 1.6.5.
--typography-body-1-font-size1.1428571429remReferência do tema padrão/claro do Visa 1.6.5.
--typography-body-2-font-size1remReferência do tema padrão/claro do Visa 1.6.5.
--typography-body-3-font-size0.8571428571remReferência do tema padrão/claro do Visa 1.6.5.

Dimensões escaláveis

Fonte
Nome / RegraValor / ConfiguraçãoUso
--size-scalable-4calc(4px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-8calc(8px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-12calc(12px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-16calc(16px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-24calc(24px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-32calc(32px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.
--size-scalable-40calc(40px * var(--theme-scale-factor))Dimensão escalável base; contextos responsivos podem aplicar um fator adicional.

Classes de utilitários e componentes publicadas

Fonte
Nome / RegraValor / ConfiguraçãoUso
v-flexFlex layoutElemento pai necessário para exemplos de espaçamento.
v-gap-20Gap utilityExibido no exemplo oficial de espaçamento padrão.
v-col-gap-20Column gap utilitySepara as colunas.
v-buttonPrimary buttonUse um elemento button nativo.
v-button-secondarySecondary modifierAção de redefinição complementar no exemplo.
v-radioNative radio styleMantenha o mesmo name e valores distintos.
v-labelLabel styleMantenha um rótulo associado ou um rótulo que envolva o controle.
v-alternateAlternate palette contextExibido em uma superfície ou botão.
v-typography-headline-1Headline visual roleAplique ao h1 semântico desta página.

Contrato de composição

Fonte
Nome / RegraValor / ConfiguraçãoUso
Radio groupOne shared name per questionFormato e frequência são grupos independentes.
fieldset / legendGroup questionIndique a que as opções respondem.
checkedNative selected stateNão use CSS sozinho para indicar a seleção.
disabledNative unavailable stateMantenha uma explicação visível caso a opção não esteja disponível.
aria-describedbyOptional supporting descriptionAssocie o texto adicional quando ele não fizer parte do rótulo.
03

Guia completo sistema de design Visa Product

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

DESIGN-visa.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 Visa Product Uma tarefa de preferência com um resumo claro para conferência

Trate cada pergunta de forma independente

O exemplo pergunta o formato do extrato e a frequência do resumo. São grupos de opções separados: alterar a frequência não desmarca o formato. O resumo repete as duas escolhas antes da ação principal, para que o usuário possa conferir o resultado sem precisar interpretar um ícone ou um padrão oculto.

Com base neste guia de OpenDesign

A confirmação da preferência registra apenas uma confirmação local. A página não solicita número de cartão, acessa uma conta, gera um extrato nem altera configurações de serviços financeiros. Assim, o exemplo mantém o foco no comportamento de seleção e feedback do sistema de design.

Consulte a especificação de apoio

Sistema de design Visa Product Os estilos do Nova e o tema Visa são importados separadamente

A estrutura não compõe o tema inteiro

A instalação oficial indica styles.css seguido de themes/visa/index.css. O primeiro fornece as regras de componentes e utilitários; o segundo fornece o tema Visa. Carregar apenas um deles resulta em uma integração incompleta. Tanto o exemplo independente quanto o trecho de importação mantêm essa ordem.

O pacote verificado é a versão 1.6.5. O exemplo incorpora seu CSS localmente, sem depender de uma solicitação de folha de estilos a terceiros durante a visualização. As declarações font-face remotas são removidas e a aplicação usa explicitamente uma fonte do sistema como alternativa; trata-se do Nova CSS nativo com substituição de fonte informada, não de uma alegação de equivalência exata com uma fonte proprietária.

Consulte a especificação de apoio

Sistema de design Visa Product As paletas padrão e alternativa incluem cores correspondentes para o primeiro plano

Não reutilize uma cor de preenchimento sem a função correspondente para o texto

A cor ativa padrão/clara é #1434cb, passa a #173be8 ao passar o cursor e a #0f2595 ao pressionar. A cor do texto sobre o estado ativo é branca. O contexto do tema alternativo altera o mapeamento das funções; por isso, o exemplo usa v-alternate na superfície do cabeçalho, em vez de substituir apenas a cor de fundo.

O destaque #fcc015 não é uma cor de preenchimento universal para botões. O contexto do tema determina como as funções de destaque e estado ativo são usadas. A tabela de referência descreve a paleta padrão; as definições posteriores para os temas escuro e alternativo na mesma folha de estilos não são combinadas em um conjunto de valores enganoso.

Consulte a especificação de apoio

Sistema de design Visa Product Considere a escala rem em relação à raiz do tema

Uma raiz de tema de 14 pixels altera as suposições habituais sobre rem

O tema Visa define uma fonte raiz de 14 pixels. Portanto, headline-1, com valor aproximado de 2.285714rem, corresponde a 32 pixels nessa raiz, e não ao valor obtido supondo uma raiz de 16 pixels. body-1 equivale a aproximadamente 1.142857rem, enquanto body-2 equivale a 1rem.

Os tokens de tamanho escalável expressam uma quantidade em pixels multiplicada pelo fator de escala do tema. Contextos responsivos podem introduzir um segundo fator. Ao adaptar o espaçamento à aplicação, mantenha a expressão; copiar apenas o número calculado padrão elimina essa relação. O exemplo usa os utilitários oficiais de espaçamento nos controles de frequência e dimensões originais da aplicação no layout geral dividido.

Consulte a especificação de apoio

Sistema de design Visa Product Semântica de opções nativas sob a apresentação do Nova

Um círculo estilizado não é um grupo de botões de opção

Os metadados públicos aplicam v-radio a um elemento input type="radio" real e o associam a um label. A prévia mantém essa estrutura nativa e envolve no label a descrição visível de cada opção. As teclas de seta permitem navegar pelo grupo, e o estado marcado continua disponível para o navegador e as tecnologias assistivas.

Um fieldset e um legend identificam cada pergunta. As opções de formato explicam suas consequências: um PDF é um exemplo para download, enquanto HTML é descrito como refluível. O conteúdo específico do produto é original; a estrutura dos controles e as classes vêm da biblioteca nativa.

  • Use um name para as duas opções de formato e outro para a frequência.
  • Mantenha o valor da opção separado do texto visível para que o resumo possa usar um rótulo estável.
  • Use os atributos checked e disabled para indicar o estado, em vez de apenas uma classe decorativa.

Consulte a especificação de apoio

Sistema de design Visa Product O Nova CSS estiliza os controles; o HTML nativo gerencia a escolha

Mantenha a lógica de agrupamento e revisão fora da folha de estilos

O exemplo usa a classe v-radio do Nova em elementos de opção nativos. Atributos name iguais tornam as opções de formato mutuamente exclusivas, enquanto um name diferente separa o grupo de frequência. Fieldset e legend fornecem o contexto do grupo; um label associado inclui o texto completo da opção no nome acessível do controle.

O pacote CSS não escolhe uma opção, não gerencia a persistência dos dados do aplicativo nem cria um registro de revisão. O script fornecido lê os dois grupos nativos e monta um resumo local. Qualquer alteração limpa esse resumo, pois os valores anteriores já não representam a preferência atual.

Mantenha na implementação tanto a folha de estilos estrutural quanto o tema Visa. O cabeçalho alternativo usa v-alternate, enquanto o formulário permanece no contexto de cores padrão; não tente imitar o cabeçalho alterando apenas o plano de fundo e deixando os papéis de primeiro plano sem definição.

Consulte a especificação de apoio

Sistema de design Visa Product Uma ordem de leitura em qualquer largura

Reposicione o resumo sem alterar a sequência da tarefa

Em telas largas, os grupos de opções e o resumo da seleção atual aparecem lado a lado. Em telas pequenas, o resumo fica depois do formulário. A ilustração original do documento é ocultada, pois não acrescenta informações à tarefa, enquanto todos os rótulos, as explicações e as ações são mantidos.

A biblioteca CSS oferece suporte a navegadores modernos evergreen. A documentação oficial de desenvolvimento não garante compatibilidade com navegadores legados; portanto, a equipe de produção deve testar as versões realmente suportadas, em vez de considerar uma visualização moderna bem-sucedida como garantia de compatibilidade universal.

  1. Carregue a CSS estrutural fixada e o tema Visa; em seguida, adicione os estilos de layout do aplicativo.
  2. Selecione Acessível HTML e Trimestral, revise a preferência e confirme que ambas aparecem no resumo.
  3. Altere qualquer uma das opções, confirme que a mensagem de revisão é redefinida e, em seguida, teste Redefinir e o layout estreito.

Consulte a especificação de apoio

Exemplos de componentes do sistema de design sistema de design Visa Product

Composição completa de preferências CSS do Nova

Dois grupos nativos de opções atualizam um resumo imediatamente; a ação principal cria um estado de revisão local explícito.

html
<!-- index.html after installing @visa/[email protected] in a Vite vanilla project -->
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Statement preference</title>
<link rel="stylesheet" href="/node_modules/@visa/nova-styles/styles.css">
<link rel="stylesheet" href="/node_modules/@visa/nova-styles/themes/visa/index.css">
<style>:root{font-family:Arial,sans-serif}body{font-family:Arial,sans-serif;background:#fff}*{box-sizing:border-box}.app{max-width:1150px;margin:auto;padding:24px}.hero{padding:32px;display:grid;grid-template-columns:1fr 150px;align-items:center;gap:24px;border-radius:6px}.hero h1{font-family:Arial,sans-serif;font-weight:600;line-height:1.2;margin:12px 0 16px}.hero p{font-family:Arial,sans-serif}.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:600}.paper{width:120px;height:150px;background:white;border-radius:6px;transform:rotate(8deg);padding:20px;box-shadow:8px 8px 0 #0f2595;position:relative}.paper span{display:block;height:3px;background:#1434cb;margin:10px 0;width:70px}.paper span:nth-child(2){width:45px}.paper b{position:absolute;bottom:10px;right:15px;color:#1434cb;font:600 36px Arial}.workspace{display:grid;grid-template-columns:1.5fr 1fr;gap:40px;margin:32px 0}.workspace h2,.workspace legend{font-family:Arial,sans-serif;font-weight:600}.hint{font-size:14px;color:#4a4a4a;line-height:1.5;margin:12px 0 16px}.option{display:flex;gap:16px;padding:20px 16px;border:1px solid #ddd;border-radius:6px;margin:12px 0;cursor:pointer}.option:has(:checked){border:2px solid #1434cb;padding:19px 15px;background:#f6f9ff}.option b{font-size:16px}.option small{display:block;font-size:14px;color:#4a4a4a;line-height:1.5;margin-top:4px}.option .v-radio{flex-shrink:0}.frequency{margin-top:28px}.frequency legend{margin-bottom:16px}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.v-button{font-family:Arial,sans-serif}.summary{background:#f5f5f5;padding:24px;border-radius:6px;align-self:start;min-height:285px}.summary h2{margin:16px 0 8px}.rule{height:1px;background:#ddd;margin-top:20px}.status{padding:16px 0;font-size:14px;line-height:1.5}.confirmed{color:#1434cb;font-weight:600}footer{font-size:12px;color:#4a4a4a;border-top:1px solid #ddd;padding-top:16px;line-height:1.5}@media(max-width:650px){.app{padding:16px}.hero{padding:24px;grid-template-columns:1fr}.paper{display:none}.workspace{grid-template-columns:1fr;gap:24px}.hero h1{font-size:28px}.option{padding:16px 12px}.option:has(:checked){padding:15px 11px}}
</style><main class="app"><header class="v-surface v-alternate hero"><div><p class="eyebrow">ACCOUNT PREFERENCES / SAMPLE</p><h1 class="v-typography-headline-1">Choose how you read<br>your statement.</h1><p class="v-typography-body-1">One clear choice, with the details visible before you confirm.</p></div><div class="paper" aria-hidden="true"><span></span><span></span><span></span><b>01</b></div></header><div class="workspace"><form id="form"><fieldset><legend class="v-typography-headline-3">Statement format</legend><p class="hint">This page stores a demonstration preference only.</p><label class="option"><input class="v-radio" type="radio" name="delivery" value="Digital PDF" checked><span><b>Digital PDF</b><small>A downloadable sample statement for offline reading.</small></span></label><label class="option"><input class="v-radio" type="radio" name="delivery" value="Accessible HTML"><span><b>Accessible HTML</b><small>A reflowable sample statement with structured headings.</small></span></label></fieldset><fieldset class="frequency"><legend class="v-typography-headline-3">Summary frequency</legend><div class="v-flex v-gap-16"><label class="v-flex v-align-items-center v-gap-4"><input class="v-radio" type="radio" name="frequency" value="Monthly" checked>Monthly</label><label class="v-flex v-align-items-center v-gap-4"><input class="v-radio" type="radio" name="frequency" value="Quarterly">Quarterly</label></div></fieldset><div class="actions"><button class="v-button" type="submit">Review preference</button><button class="v-button v-button-secondary" id="reset" type="button">Reset</button></div></form><aside class="summary"><p class="eyebrow">YOUR CURRENT SELECTION</p><h2 class="v-typography-headline-3" id="selection">Digital PDF</h2><p id="period">Monthly summary</p><div class="rule"></div><p class="hint">No account data is used. No statement is generated or delivered.</p><p class="status" id="status" role="status">Review your preference to create a local confirmation.</p></aside></div><footer>Nova styles 1.6.5 and Visa theme. The example application styles use a system-font fallback. Original demonstration, no financial service connection.</footer></main>
<script>const form=document.querySelector('#form'),status=document.querySelector('#status');function update(){document.querySelector('#selection').textContent=form.elements.delivery.value;document.querySelector('#period').textContent=form.elements.frequency.value+' summary';status.textContent='Review your preference to create a local confirmation.';status.classList.remove('confirmed')}form.onchange=update;form.onsubmit=e=>{e.preventDefault();status.textContent='Reviewed locally: '+form.elements.delivery.value+', '+form.elements.frequency.value.toLowerCase()+'. No account setting changed.';status.classList.add('confirmed')};document.querySelector('#reset').onclick=()=>{HTMLFormElement.prototype.reset.call(form);update()};</script>
</html>

Referência de código

  • CSS fornece a apresentação do componente; o pequeno script implementa o comportamento do aplicativo.
  • Alterar uma preferência limpa o status de revisão anterior.
  • O cabeçalho alternativo usa um contexto de tema real, não uma imitação da paleta feita à mão.
  • Salve o HTML completo como index.html e abra-o em um navegador com acesso aos URLs públicos fixados de CSS. A visualização incorporada neste guia mantém esses estilos localmente.

Carregue a estrutura e o tema juntos

Em um aplicativo empacotado, importe as duas camadas uma única vez, antes da folha de estilos do aplicativo.

javascript
import '@visa/nova-styles/styles.css';
import '@visa/nova-styles/themes/visa/index.css';
import './application.css';

Referência de código

  • A ausência do arquivo do tema pode deixar as classes estruturais presentes sem os tokens Visa esperados.
04

Configuração do agente sistema de design Visa Product

Ponto de partida para implementação

O HTML completo usa os caminhos verificados styles.css e themes/visa/index.css. Ambos são necessários. O iframe incorpora esses estilos localmente; as declarações oficiais de font-face foram omitidas.

shell / html
npm create vite@latest statement-preference -- --template vanilla
cd statement-preference
npm install
npm install @visa/[email protected]
# Replace index.html with the complete example below.
npm run dev

Um prompt para seu projeto

Prompt para agente de IA
Crie o exemplo de preferência de declaração Visa Nova com a CSS estrutural e o tema fixados. Preserve os grupos nativos de opções, as legends claras e os labels associados. Separe os papéis do tema padrão dos papéis do tema alternativo e considere a raiz de 14px ao interpretar valores em rem. Mantenha a revisão local, remova confirmações desatualizadas após alterações e empilhe o resumo em telas pequenas.
05

Fontes e escopo de sistema de design Visa Product

Guia independente de OpenDesign com CSS nativos do Nova. Esta tarefa fictícia de preferência não usa dados de conta nem altera nenhum serviço financeiro. A visualização informa que substitui as fontes por fontes do sistema.