Diseño de productos empresariales · Nuevo recurso

Sistema de diseño Visa Product.

Usa Nova CSS de Visa para crear una preferencia clara de formato de extracto, con controles de opción nativos, un encabezado de color alternativo y un resumen para revisar. Examina los valores exactos del tema 1.6.5, el espaciado escalable y la integración completa de la hoja de estilos.

Guía de OpenDesign7 capítulos40 entradas de referenciaGuía de aplicación original
01

Vista previa de la interfaz sistema de diseño Visa Product

Selecciona un formato y una frecuencia, revisa la preferencia local y restablécela.

Preferencia de formato de extractoAbrir ejemplo completo
CSS nativo de @visa/nova-styles 1.6.5 y tema de Visa integrados localmente; se eliminaron las reglas remotas de font-face y se usan fuentes del sistema. Diseño original de la aplicación y script local. · Referencia de implementación
02

Referencia de diseño sistema de diseño Visa Product

Estilos publicados de @visa/nova-styles 1.6.5, tema de Visa y metadatos de ejemplo. Los valores predeterminados/claros se separan de las variantes alternativas y oscuras. La vista previa integra localmente CSS oficial y elimina las reglas remotas de font-face, usando una fuente de sistema como alternativa.

Paleta predeterminada

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--palette-default-active#1434cb Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-active-hover#173be8 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-active-pressed#0f2595 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-active-accent#fcc015 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-surface-1#ffffff Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-surface-2#f5f5f5 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-surface-3#f0f0f0 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-text#000000 Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-text-subtle#4a4a4a Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-text-on-active#ffffff Referencia del tema predeterminado/claro de Visa 1.6.5.
--palette-default-borderrgba(0, 0, 0, 0.1)Referencia del tema predeterminado/claro de Visa 1.6.5.

Tamaño y tipografía del tema

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--theme-font-size14pxReferencia del tema predeterminado/claro de Visa 1.6.5.
--theme-border-radius6pxReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-headline-1-font-size2.2857142857remReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-headline-2-font-size1.7857142857remReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-headline-3-font-size1.4285714286remReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-body-1-font-size1.1428571429remReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-body-2-font-size1remReferencia del tema predeterminado/claro de Visa 1.6.5.
--typography-body-3-font-size0.8571428571remReferencia del tema predeterminado/claro de Visa 1.6.5.

Dimensiones escalables

Fuente
Nombre / ReglaValor / ConfiguraciónUso
--size-scalable-4calc(4px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-8calc(8px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-12calc(12px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-16calc(16px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-24calc(24px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-32calc(32px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.
--size-scalable-40calc(40px * var(--theme-scale-factor))Dimensión escalable base; los contextos adaptables pueden aplicar un factor adicional.

Clases publicadas de utilidades y componentes

Fuente
Nombre / ReglaValor / ConfiguraciónUso
v-flexFlex layoutElemento padre necesario para los ejemplos de separación.
v-gap-20Gap utilitySe muestra en el ejemplo oficial de separación predeterminada.
v-col-gap-20Column gap utilitySepara las columnas.
v-buttonPrimary buttonUsa un elemento de botón nativo.
v-button-secondarySecondary modifierAcción de restablecimiento de apoyo en el ejemplo.
v-radioNative radio styleConserva el mismo nombre y valores distintos.
v-labelLabel styleMantén una etiqueta asociada o envolvente.
v-alternateAlternate palette contextSe muestra sobre una superficie o un botón.
v-typography-headline-1Headline visual roleAplícalo al h1 semántico de esta página.

Contrato de composición

Fuente
Nombre / ReglaValor / ConfiguraciónUso
Radio groupOne shared name per questionEl formato y la frecuencia son grupos independientes.
fieldset / legendGroup questionIndica qué pregunta responden las opciones.
checkedNative selected stateNo uses CSS por sí solo para seleccionar.
disabledNative unavailable stateConserva una explicación visible si la opción no está disponible.
aria-describedbyOptional supporting descriptionVincula el texto adicional cuando no forme parte de la etiqueta.
03

Guía completa de sistema de diseño Visa Product

Una guía práctica para elegir, aplicar y revisar este sistema en una interfaz real.

DESIGN-visa.md

Orientación completa, un punto de partida para la implementación y enlaces al código fuente.

Descargar la guía

Sistema de diseño Visa Product: una tarea de preferencias con un estado de revisión fácil de leer

Haz que cada pregunta sea independiente

El ejemplo pregunta por el formato del extracto y la frecuencia del resumen. Son grupos de opciones independientes: cambiar la frecuencia no deselecciona el formato. El resumen repite ambas opciones antes de la acción principal, para que el usuario pueda revisar el resultado sin tener que interpretar un icono ni un valor predeterminado oculto.

De esta guía de OpenDesign

Revisar la preferencia solo registra una confirmación local. La página no solicita un número de tarjeta, accede a una cuenta, genera un extracto ni cambia la configuración de un servicio financiero. Así, el ejemplo se centra en el comportamiento de selección y respuesta del sistema de diseño.

Consulta la especificación complementaria

Sistema de diseño Visa Product: los estilos de Nova y el tema de Visa se importan por separado

La estructura no constituye todo el tema

La instalación oficial muestra primero styles.css y después themes/visa/index.css. El primero aporta las reglas de componentes y utilidades; el segundo, el tema de Visa. Cargar solo uno da lugar a una integración incompleta. Tanto el ejemplo independiente como el fragmento de importación conservan ese orden.

La versión comprobada del paquete es la 1.6.5. El ejemplo integra localmente su CSS, de modo que no depende de una solicitud de hoja de estilos a terceros al visualizarse. Se eliminan las declaraciones remotas de font-face y la aplicación usa explícitamente una fuente de sistema como alternativa; se trata de CSS nativo de Nova con una sustitución de fuente declarada, no de una afirmación de equivalencia exacta con la fuente propietaria.

Consulta la especificación complementaria

Sistema de diseño Visa Product: las paletas predeterminada y alternativa combinan colores de primer plano con sus respectivos fondos

No traslades un color de relleno sin su función de texto

El color activo predeterminado/claro es #1434cb, #173be8 al pasar el puntero y #0f2595 al presionar. El color del texto sobre el estado activo es blanco. El contexto del tema alternativo cambia la asignación de funciones; por eso el ejemplo usa v-alternate en la superficie del encabezado en lugar de sobrescribir solo el fondo.

El color de acento #fcc015 no es un color de relleno universal para botones. El contexto del tema determina cómo se usan las funciones de acento y de estado activo. La tabla de referencia describe la paleta predeterminada; las definiciones posteriores de los temas oscuro y alternativo en la misma hoja de estilos no se combinan en un único conjunto de valores engañoso.

Consulta la especificación complementaria

Sistema de diseño Visa Product: interpreta la escala rem con respecto a la raíz del tema

Una raíz del tema de 14 píxeles cambia las suposiciones habituales sobre rem

El tema Visa define un tamaño de fuente raíz de 14 píxeles. Por lo tanto, el valor de headline-1, de aproximadamente 2.285714rem, equivale a 32 píxeles con ese tamaño raíz, no al valor que se obtendría suponiendo un tamaño raíz de 16 píxeles. body-1 es aproximadamente 1.142857rem, mientras que body-2 es 1rem.

Los tokens de tamaño escalable expresan una cantidad en píxeles multiplicada por el factor de escala del tema. En contextos adaptables puede incorporarse un segundo factor. Conserva la expresión al adaptar el espaciado a una aplicación; copiar solo el número calculado predeterminado pierde esa relación. El ejemplo usa las utilidades oficiales de separación en los controles de frecuencia y dimensiones originales de la aplicación para la disposición dividida general.

Consulta la especificación complementaria

Sistema de diseño Visa Product Semántica de botones de opción nativos con la presentación de Nova

Un círculo con estilo no es un grupo de botones de opción

Los metadatos públicos colocan v-radio en un input type="radio" real y lo vinculan con una etiqueta. La vista previa conserva esa estructura nativa y envuelve en la etiqueta la descripción visible de cada opción. Las flechas del teclado permiten desplazarse por el grupo, y el estado seleccionado sigue estando disponible para el navegador y las tecnologías de asistencia.

Un fieldset y un legend identifican cada pregunta. Las opciones de formato explican sus consecuencias: un PDF es una muestra descargable, mientras que HTML se describe como adaptable al flujo del texto. El contenido específico del producto es original; la estructura de los controles y las clases provienen de la biblioteca nativa.

  • Usa un nombre para las dos opciones de formato y otro para la frecuencia.
  • Mantén el valor del botón de opción separado del texto visible para que el resumen pueda usar una etiqueta estable.
  • Usa los atributos checked y disabled para indicar el estado, en lugar de depender únicamente de una clase decorativa.

Consulta la especificación complementaria

Sistema de diseño Visa Product Nova CSS aplica estilos a los controles; HTML nativo gestiona la selección

Mantén la agrupación y la lógica de revisión fuera de la hoja de estilos

El ejemplo usa la clase v-radio de Nova en botones de opción reales. Los atributos name compartidos hacen que las opciones de formato sean excluyentes, mientras que otro nombre distinto separa el grupo de frecuencia. Fieldset y legend proporcionan el contexto del grupo; una etiqueta asociada integra el texto completo de la opción en el nombre accesible del control.

El paquete CSS no elige una opción, no gestiona la persistencia de la aplicación ni crea un registro de revisión. El script proporcionado lee los dos grupos nativos y genera un resumen local. Cualquier cambio borra ese resumen, ya que los valores anteriores dejan de describir la preferencia actual.

Incluye en la implementación tanto la hoja de estilos estructural como el tema Visa. El encabezado alternativo usa v-alternate, mientras que el formulario mantiene el contexto de color predeterminado; no imites el encabezado cambiando solo el fondo y dejando sin resolver los roles del primer plano.

Consulta la especificación complementaria

Sistema de diseño Visa Product Un único orden de lectura en todos los anchos

Mueve el resumen sin cambiar la secuencia de la tarea

En pantallas anchas, los grupos de opciones y el resumen de la selección actual aparecen uno al lado del otro. En pantallas pequeñas, el resumen va después del formulario. La ilustración original del documento desaparece porque no aporta información a la tarea, mientras que se mantienen todas las etiquetas, explicaciones y acciones.

La biblioteca CSS es compatible con los navegadores modernos de actualización automática. La documentación oficial de desarrollo no garantiza la compatibilidad con navegadores antiguos, por lo que los equipos de producción deben probar las versiones que admiten realmente, en lugar de asumir que una vista previa moderna que funciona garantiza compatibilidad universal.

  1. Carga CSS estructural y el tema Visa, ambos fijados, y luego añade los estilos de disposición de la aplicación.
  2. Selecciona Accessible HTML y Trimestral, revisa la preferencia y comprueba que ambas opciones aparezcan en el resumen.
  3. Cambia cualquiera de las opciones, confirma que se restablezca la indicación de revisión y, luego, prueba Restablecer y la disposición en una pantalla estrecha.

Consulta la especificación complementaria

Ejemplos de componentes del sistema de diseño de sistema de diseño Visa Product

Composición completa de preferencias con Nova CSS

Dos grupos nativos de botones de opción actualizan un resumen al instante; la acción principal crea un estado de revisión 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>

Referencia de código

  • CSS proporciona la presentación de los componentes; el pequeño script aporta el comportamiento de la aplicación.
  • Al cambiar una preferencia, se borra el estado de revisión anterior.
  • El encabezado alternativo es un contexto de tema real, no una imitación de la paleta pintada a mano.
  • Guarda el HTML completo como index.html y ábrelo en un navegador con acceso a las URL públicas fijadas de CSS. La vista previa integrada en esta guía mantiene esos estilos en local.

Carga juntos la estructura y el tema

En una aplicación compilada, importa ambas capas una sola vez antes de la hoja de estilos de la aplicación.

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

Referencia de código

  • Si falta el archivo del tema, puede que las clases estructurales estén presentes sin los tokens de Visa previstos.
04

Configuración del agente de sistema de diseño Visa Product

Punto de partida para la implementación

El HTML completo usa las rutas verificadas styles.css y themes/visa/index.css. Ambas son necesarias. El iframe incorpora estos estilos localmente; allí se omiten las declaraciones oficiales de font-face remoto.

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

Una instrucción para tu proyecto

Instrucción para el agente
Crea el ejemplo de preferencias de estado de cuenta de Visa Nova con CSS estructural y de tema, fijados. Conserva los grupos nativos de botones de opción, los títulos de grupo claros y las etiquetas asociadas. Separa los roles del tema predeterminado de los del alternativo y ten en cuenta el tamaño raíz de 14 px al interpretar los valores rem. Mantén la revisión en local, borra las confirmaciones obsoletas tras los cambios y apila el resumen en pantallas pequeñas.
05

Fuentes y alcance de sistema de diseño Visa Product

Guía independiente de OpenDesign con Nova CSS nativo. Esta tarea ficticia sobre preferencias no usa datos de la cuenta ni modifica ningún servicio financiero. La vista previa informa de que sustituye la fuente del sistema.