Design de produits d’entreprise · Nouvelle ressource

Système de design Visa Product.

Utilisez Visa Nova CSS pour créer un choix clair de format de relevé, avec des boutons radio natifs, un en-tête dans une couleur différente et un récapitulatif de révision. Examinez les valeurs exactes du thème 1.6.5, l’espacement évolutif et l’intégration complète de la feuille de style.

Guide OpenDesign7 chapitres40 entrées de référenceGuide de l’application d’origine
01

Aperçu de l’interface système de design Visa Product

Choisissez un format et une fréquence, vérifiez la préférence locale, puis réinitialisez-la.

Préférence de format de relevéOuvrir l’exemple complet
@visa/nova-styles 1.6.5 CSS natif et thème Visa intégrés localement ; règles font-face distantes supprimées et polices système utilisées. Mise en page et script d’application d’origine. · Référence de mise en œuvre
02

Référence de conception système de design Visa Product

Styles publiés de @visa/nova-styles 1.6.5, thème Visa et métadonnées de l’exemple. Les valeurs par défaut/du thème clair sont distinguées des surcharges alternatives et du thème sombre. L’aperçu intègre localement CSS officiel et supprime les règles font-face distantes, en utilisant une police système de repli.

Palette par défaut

Source
Nom / règleValeur / configurationUtilisation
--palette-default-active#1434cb Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-active-hover#173be8 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-active-pressed#0f2595 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-active-accent#fcc015 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-surface-1#ffffff Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-surface-2#f5f5f5 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-surface-3#f0f0f0 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-text#000000 Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-text-subtle#4a4a4a Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-text-on-active#ffffff Référence au thème Visa 1.6.5 par défaut/clair.
--palette-default-borderrgba(0, 0, 0, 0.1)Référence au thème Visa 1.6.5 par défaut/clair.

Taille et typographie du thème

Source
Nom / règleValeur / configurationUtilisation
--theme-font-size14pxRéférence au thème Visa 1.6.5 par défaut/clair.
--theme-border-radius6pxRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-headline-1-font-size2.2857142857remRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-headline-2-font-size1.7857142857remRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-headline-3-font-size1.4285714286remRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-body-1-font-size1.1428571429remRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-body-2-font-size1remRéférence au thème Visa 1.6.5 par défaut/clair.
--typography-body-3-font-size0.8571428571remRéférence au thème Visa 1.6.5 par défaut/clair.

Dimensions adaptatives

Source
Nom / règleValeur / configurationUtilisation
--size-scalable-4calc(4px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-8calc(8px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-12calc(12px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-16calc(16px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-24calc(24px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-32calc(32px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.
--size-scalable-40calc(40px * var(--theme-scale-factor))Dimension adaptative de base ; les contextes responsifs peuvent appliquer un facteur supplémentaire.

Classes utilitaires et de composants publiées

Source
Nom / règleValeur / configurationUtilisation
v-flexFlex layoutÉlément parent requis pour les exemples d’espacement.
v-gap-20Gap utilityPrésenté dans l’exemple officiel d’espacement par défaut.
v-col-gap-20Column gap utilitySépare les colonnes.
v-buttonPrimary buttonUtilisez un élément de bouton natif.
v-button-secondarySecondary modifierAction de réinitialisation complémentaire dans l’exemple.
v-radioNative radio styleConservez le même nom et des valeurs distinctes.
v-labelLabel styleAssociez une étiquette ou utilisez une étiquette englobante.
v-alternateAlternate palette contextAffiché sur une surface ou un bouton.
v-typography-headline-1Headline visual roleAppliquez-le au h1 sémantique de cette page.

Contrat de composition

Source
Nom / règleValeur / configurationUtilisation
Radio groupOne shared name per questionLe format et la fréquence constituent des groupes indépendants.
fieldset / legendGroup questionPrécisez la question à laquelle répondent les options.
checkedNative selected stateN’utilisez pas CSS seul pour la sélection.
disabledNative unavailable stateConservez une explication visible si l’option n’est pas disponible.
aria-describedbyOptional supporting descriptionAssociez le texte supplémentaire lorsqu’il ne fait pas partie de l’étiquette.
03

Guide complet système de design Visa Product

Un guide pratique pour choisir, appliquer et évaluer ce système dans une interface réelle.

DESIGN-visa.md

Des conseils complets, un point de départ pour la mise en œuvre et des liens vers les sources.

Télécharger le guide

Système de design Visa Product Une tâche de préférence avec un récapitulatif facile à lire

Distinguez chaque question

L’exemple demande le format du relevé et la fréquence des récapitulatifs. Ces choix sont répartis en deux groupes de boutons radio distincts : modifier la fréquence ne désélectionne pas le format. Le récapitulatif répète les deux choix avant l’action principale, afin que l’utilisateur puisse vérifier le résultat sans interpréter d’icône ni deviner une valeur par défaut masquée.

Extrait de ce guide OpenDesign

La vérification de la préférence enregistre uniquement une confirmation locale. La page ne demande pas de numéro de carte, n’accède à aucun compte, ne génère aucun relevé et ne modifie aucun paramètre de service financier. L’exemple reste ainsi centré sur le comportement de sélection et de retour d’information du design system.

Consultez la spécification associée

Système de design Visa Product Les styles Nova et le thème Visa sont importés séparément

La structure ne constitue pas à elle seule le thème complet

L’installation officielle indique d’importer styles.css, puis themes/visa/index.css. Le premier fichier fournit les règles des composants et des utilitaires ; le second apporte le thème Visa. N’en charger qu’un seul ne constitue pas une intégration complète. L’exemple autonome et l’extrait d’import respectent tous deux cet ordre.

La version vérifiée du package est la 1.6.5. L’exemple intègre son CSS localement afin de ne pas dépendre d’une requête de feuille de style tierce à l’affichage. Les déclarations font-face distantes sont supprimées et l’application utilise explicitement une police système de remplacement ; il s’agit du Nova CSS natif avec une substitution de police signalée, et non d’une prétention à reproduire exactement une police propriétaire.

Consultez la spécification associée

Système de design Visa Product Les palettes par défaut et alternatives associent chacune des couleurs de premier plan

Ne transposez pas une couleur de fond sans son rôle de texte

La couleur active par défaut/en thème clair est #1434cb, avec #173be8 au survol et #0f2595 à l’activation. Le rôle de texte sur la couleur active est assuré par le blanc. Le contexte du thème alternatif modifie la correspondance des rôles ; c’est pourquoi l’exemple applique v-alternate à la surface de l’en-tête au lieu de remplacer uniquement son arrière-plan.

L’accent #fcc015 ne constitue pas une couleur de fond universelle pour les boutons. Le contexte du thème détermine l’utilisation des rôles d’accent et d’activation. Le tableau de référence décrit la palette par défaut ; les définitions des thèmes sombre et alternatif qui suivent dans la même feuille de style ne sont pas fusionnées en un ensemble de valeurs trompeur.

Consultez la spécification associée

Système de design Visa Product Interprétez l’échelle rem en fonction de la racine du thème

Une racine de thème de 14 pixels modifie les repères habituels pour les unités rem

Le thème Visa définit une racine typographique de 14 pixels. La valeur headline-1 d’environ 2.285714rem correspond donc à 32 pixels avec cette racine, et non à la valeur obtenue en supposant une racine de 16 pixels. body-1 vaut environ 1.142857rem, tandis que body-2 vaut 1rem.

Les jetons de taille évolutive expriment une quantité en pixels multipliée par le facteur d’échelle du thème. Les contextes adaptatifs peuvent introduire un second facteur. Conservez l’expression lorsque vous adaptez l’espacement à une application : ne copier que la valeur calculée par défaut fait perdre cette relation. L’exemple utilise les utilitaires d’espacement officiels dans les commandes de fréquence et les dimensions propres à l’application pour la disposition générale en deux parties.

Consultez la spécification associée

Système de design Visa Product Sémantique native des boutons radio sous la présentation Nova

Un cercle stylisé n’est pas un groupe de boutons radio

Les métadonnées publiques appliquent v-radio à un véritable input type="radio" et l’associent à une étiquette. L’aperçu conserve cette structure native et inclut la description visible de chaque option dans son étiquette. Les flèches du clavier permettent de se déplacer dans un groupe, et l’état sélectionné reste accessible au navigateur et aux technologies d’assistance.

Un fieldset et un legend donnent un intitulé à chaque question. Les options de format en expliquent les conséquences : un PDF est un exemple téléchargeable, tandis que HTML est présenté comme un format redistribuable. Le contenu exact du produit est original ; la structure et les classes du contrôle proviennent de la bibliothèque native.

  • Utilisez un nom pour les deux options de format et un autre pour la fréquence.
  • Distinguez la valeur du bouton radio du texte visible afin que le récapitulatif puisse utiliser un libellé stable.
  • Utilisez les attributs checked et disabled pour définir l’état, plutôt qu’une simple classe décorative.

Consultez la spécification associée

Système de design Visa Product Nova CSS met en forme les contrôles ; HTML natif gère le choix

Gérez le regroupement et la logique de révision en dehors de la feuille de style

L’exemple applique la classe v-radio de Nova à de véritables champs radio. Des attributs name identiques rendent les choix de format exclusifs, tandis qu’un nom différent distingue le groupe de fréquence. Fieldset et legend précisent le contexte du groupe ; une étiquette associée inclut tout le texte de l’option dans le nom accessible du contrôle.

Le package CSS ne sélectionne aucune option, ne gère pas la persistance de l’application et ne crée pas de compte rendu de révision. Le script fourni lit les deux groupes natifs et génère un récapitulatif local. Toute modification efface ce récapitulatif, car les valeurs précédentes ne correspondent alors plus à la préférence actuelle.

Conservez dans l’implémentation la feuille de style structurelle et le thème Visa. L’en-tête alternatif utilise v-alternate, tandis que le formulaire reste dans le contexte de couleur par défaut ; ne cherchez pas à reproduire l’en-tête en modifiant uniquement son arrière-plan et en laissant les rôles de premier plan indéfinis.

Consultez la spécification associée

Système de design Visa Product Un ordre de lecture unique, quelle que soit la largeur

Déplacez le récapitulatif sans modifier l’ordre des étapes

Sur les grands écrans, les groupes de choix et le récapitulatif de la sélection actuelle sont côte à côte. Sur les petits écrans, le récapitulatif suit le formulaire. L’illustration originale du document disparaît, car elle n’apporte aucune information utile à la tâche ; tous les libellés, explications et actions sont conservés.

La bibliothèque CSS prend en charge les navigateurs modernes toujours à jour. La documentation officielle de développement ne garantit pas la compatibilité avec les anciens navigateurs ; une équipe de production doit donc tester les versions réellement prises en charge, plutôt que de considérer qu’un aperçu moderne fonctionnel garantit une compatibilité universelle.

  1. Chargez la version épinglée de CSS structurel et le thème Visa, puis ajoutez les styles de mise en page de l’application.
  2. Sélectionnez Accessible HTML et Trimestriel, vérifiez la préférence et assurez-vous que les deux choix apparaissent dans le récapitulatif.
  3. Modifiez l’un ou l’autre choix, vérifiez que le retour de révision est réinitialisé, puis testez Réinitialiser et la mise en page étroite.

Consultez la spécification associée

Système de design Visa Product Exemples de composants du système de design

Composition complète de préférences avec Nova CSS

Deux groupes natifs de boutons radio mettent à jour immédiatement un récapitulatif ; l’action principale crée un état de révision local explicite.

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>

Référence du code

  • CSS fournit la présentation des composants ; un petit script assure le comportement de l’application.
  • La modification d’une préférence efface son état de révision précédent.
  • L’en-tête alternatif utilise un véritable contexte de thème, et non une imitation de la palette peinte à la main.
  • Enregistrez le HTML complet sous le nom index.html et ouvrez-le dans un navigateur pouvant accéder aux URL publiques épinglées de CSS. L’aperçu intégré à ce guide conserve ces styles localement.

Chargez ensemble la structure et le thème

Dans une application assemblée, importez une seule fois les deux couches avant la feuille de style de l’application.

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

Référence du code

  • En l’absence du fichier de thème, les classes structurelles peuvent être présentes sans les jetons Visa attendus.
04

Système de design Visa Product Configuration de l’agent

Point de départ de l’implémentation

Le HTML complet utilise les chemins vérifiés styles.css et themes/visa/index.css. Les deux sont nécessaires. Ces styles sont intégrés localement dans l’iframe ; les déclarations officielles font-face distantes en sont exclues.

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

Un prompt pour votre projet

Prompt pour l’agent IA
Créez l’exemple de préférence de relevé Visa Nova à l’aide de la structure et du thème CSS verrouillés. Conservez les groupes de boutons radio natifs, des légendes claires et des libellés associés. Distinguez les rôles du thème par défaut de ceux du thème alternatif et tenez compte de la racine de 14 px lors de la lecture des valeurs en rem. Gardez l’examen local, effacez les confirmations obsolètes après toute modification et empilez le récapitulatif sur les petits écrans.
05

Sources et périmètre système de design Visa Product

Guide indépendant OpenDesign utilisant les éléments natifs de Nova CSS. Cette tâche fictive de préférence n’utilise aucune donnée de compte et ne modifie aucun service financier. L’aperçu signale le remplacement de la police par celle du système.