Produktdesign für Unternehmen · Neue Ressource

Visa Product Designsystem.

Verwende Visa Nova CSS, um eine übersichtliche Auswahl für das Abrechnungsformat mit nativen Optionsfeldern, einem Kopfbereich in alternativer Farbe und einer Zusammenfassung zur Überprüfung zu erstellen. Sieh dir die exakten Theme-Werte der Version 1.6.5, skalierbare Abstände und die vollständige Integration des Stylesheets an.

OpenDesign-Leitfaden7 Kapitel40 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

Visa Product Designsystem-Oberflächenvorschau

Wählen Sie Format und Häufigkeit aus, prüfen Sie die lokale Einstellung und setzen Sie sie zurück.

Einstellung zum AbrechnungsformatVollständiges Beispiel öffnen
Native @visa/nova-styles 1.6.5 CSS und lokal eingebettetes Visa-Theme; entfernte @font-face-Regeln und Verwendung von Systemschriften. Ursprüngliches Anwendungslayout und lokales Skript. · Implementierungsreferenz
02

Visa Product Designsystem-Designreferenz

Veröffentlichte Stile von @visa/nova-styles 1.6.5, Visa-Theme und Metadaten des Beispiels. Standard-/helle Werte sind von alternativen und dunklen Überschreibungen getrennt. Die Vorschau bettet das offizielle CSS lokal ein, entfernt entfernte @font-face-Regeln und verwendet eine Systemschrift als Fallback.

Standardpalette

Quelle
Name / RegelWert / KonfigurationVerwendung
--palette-default-active#1434cb Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-active-hover#173be8 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-active-pressed#0f2595 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-active-accent#fcc015 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-surface-1#ffffff Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-surface-2#f5f5f5 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-surface-3#f0f0f0 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-text#000000 Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-text-subtle#4a4a4a Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-text-on-active#ffffff Referenz für das Visa-Standard-/helle Theme 1.6.5.
--palette-default-borderrgba(0, 0, 0, 0.1)Referenz für das Visa-Standard-/helle Theme 1.6.5.

Theme-Größe und -Typografie

Quelle
Name / RegelWert / KonfigurationVerwendung
--theme-font-size14pxReferenz für das Visa-Standard-/helle Theme 1.6.5.
--theme-border-radius6pxReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-headline-1-font-size2.2857142857remReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-headline-2-font-size1.7857142857remReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-headline-3-font-size1.4285714286remReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-body-1-font-size1.1428571429remReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-body-2-font-size1remReferenz für das Visa-Standard-/helle Theme 1.6.5.
--typography-body-3-font-size0.8571428571remReferenz für das Visa-Standard-/helle Theme 1.6.5.

Skalierbare Abmessungen

Quelle
Name / RegelWert / KonfigurationVerwendung
--size-scalable-4calc(4px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-8calc(8px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-12calc(12px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-16calc(16px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-24calc(24px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-32calc(32px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.
--size-scalable-40calc(40px * var(--theme-scale-factor))Skalierbare Basisabmessung; in responsiven Kontexten kann ein zusätzlicher Faktor angewendet werden.

Veröffentlichte Utility- und Komponentenklassen

Quelle
Name / RegelWert / KonfigurationVerwendung
v-flexFlex layoutFür Abstandsbeispiele erforderliches übergeordnetes Element.
v-gap-20Gap utilityIm offiziellen Beispiel für den Standardabstand gezeigt.
v-col-gap-20Column gap utilityTrennt Spalten.
v-buttonPrimary buttonVerwenden Sie ein natives Button-Element.
v-button-secondarySecondary modifierUnterstützende Reset-Aktion im Beispiel.
v-radioNative radio styleGemeinsamen Namen und unterschiedliche Werte beibehalten.
v-labelLabel styleEin zugeordnetes Label oder ein umschließendes Label beibehalten.
v-alternateAlternate palette contextWird auf einer Oberfläche oder Schaltfläche angezeigt.
v-typography-headline-1Headline visual roleAuf das semantische h1 dieser Seite anwenden.

Kompositionsvertrag

Quelle
Name / RegelWert / KonfigurationVerwendung
Radio groupOne shared name per questionFormat und Häufigkeit sind unabhängige Gruppen.
fieldset / legendGroup questionErläutern, worauf sich die Optionen beziehen.
checkedNative selected stateCSS nicht allein für die Auswahl verwenden.
disabledNative unavailable stateEine sichtbare Erklärung beibehalten, falls die Option nicht verfügbar ist.
aria-describedbyOptional supporting descriptionZusätzlichen Text verknüpfen, wenn er nicht Teil des Labels ist.
03

Visa Product Designsystem – Vollständiger Leitfaden

Ein praktischer Leitfaden zur Auswahl, Anwendung und Überprüfung dieses Systems für ein echtes Interface.

DESIGN-visa.md

Umfassende Anleitung, Einstieg in die Implementierung und Links zu den Quellen.

Leitfaden herunterladen

Visa Product Designsystem – Eine Aufgabe zur Auswahl mit übersichtlicher Überprüfungsansicht

Jede Frage unabhängig halten

Im Beispiel werden das Abrechnungsformat und die Häufigkeit der Zusammenfassung abgefragt. Dafür gibt es zwei getrennte Radio-Gruppen: Eine Änderung der Häufigkeit hebt die Formatwahl nicht auf. Vor der Hauptaktion wiederholt die Zusammenfassung beide ausgewählten Optionen. So kann die nutzende Person das Ergebnis prüfen, ohne ein Symbol deuten oder einen verborgenen Standardwert berücksichtigen zu müssen.

Aus diesem OpenDesign-Leitfaden

Die Bestätigung der Einstellung speichert lediglich eine lokale Bestätigung. Die Seite fordert keine Kartennummer an, ruft kein Konto ab, erstellt keine Abrechnung und ändert keine Einstellung eines Finanzdienstes. Dadurch bleibt das Beispiel auf das Auswahl- und Feedbackverhalten des Designsystems fokussiert.

Unterstützende Spezifikation lesen

Visa Product Designsystem-Stile und das Visa-Theme werden separat importiert

Die Struktur allein bildet nicht das gesamte Theme ab

Die offizielle Installationsanleitung zeigt zuerst styles.css und danach themes/visa/index.css. Die erste Datei stellt die Komponenten- und Utility-Regeln bereit; die zweite liefert das Visa-Theme. Nur eine der beiden Dateien zu laden, ist keine vollständige Integration. Das eigenständige Beispiel und der Importausschnitt behalten beide diese Reihenfolge bei.

Das geprüfte Paket hat die Version 1.6.5. Das Beispiel bettet sein CSS lokal ein, sodass beim Aufrufen keine Anfrage an ein Stylesheet eines Drittanbieters erforderlich ist. Entfernte @font-face-Deklarationen wurden entfernt und die Anwendung verwendet ausdrücklich eine Systemschrift als Fallback. Dies ist ein natives Nova-CSS mit offengelegtem Ersatz der Schriftart, keine Behauptung einer exakten Übereinstimmung mit der proprietären Schrift.

Unterstützende Spezifikation lesen

Visa Product Designsystem-Standard- und alternative Paletten enthalten jeweils passende Vordergrundfarben

Eine Füllfarbe nicht ohne die zugehörige Textrolle übernehmen

Die aktive Farbe des Standard-/hellen Themes ist #1434cb, bei Hover #173be8 und im gedrückten Zustand #0f2595. Die zugehörige Textfarbe auf der aktiven Fläche ist Weiß. Im alternativen Theme-Kontext ändert sich die Zuordnung der Rollen. Deshalb verwendet das Beispiel v-alternate auf der Kopfzeilenfläche, statt nur deren Hintergrund zu überschreiben.

Akzentfarbe #fcc015 ist keine universelle Füllfarbe für Schaltflächen. Der Theme-Kontext bestimmt, wie Akzent- und Aktivrollen verwendet werden. Die Referenztabelle beschreibt die Standardpalette; die später im selben Stylesheet definierten dunklen und alternativen Werte werden nicht zu einer irreführenden einheitlichen Wertemenge zusammengefasst.

Unterstützende Spezifikation lesen

Visa Product Designsystem-rem-Skala im Verhältnis zum Theme-Stammverzeichnis lesen

Ein 14-Pixel-Theme-Stammverzeichnis verändert die gewohnten rem-Annahmen

Das Visa-Theme definiert eine Schriftgrößenbasis von 14 Pixeln. Der Wert für headline-1 von ungefähr 2.285714rem entspricht bei dieser Basis also 32 Pixeln und nicht dem Wert, der sich bei einer angenommenen Basis von 16 Pixeln ergibt. body-1 entspricht ungefähr 1.142857rem, body-2 dagegen 1rem.

Skalierbare Größentokens geben einen Pixelwert multipliziert mit dem Skalierungsfaktor des Themes an. In responsiven Kontexten kann ein zweiter Faktor hinzukommen. Übernimm den Ausdruck, wenn du Abstände an eine Anwendung anpasst: Wird nur der standardmäßig berechnete Wert kopiert, geht dieser Zusammenhang verloren. Das Beispiel verwendet offizielle Gap-Hilfsklassen für die Häufigkeitsoptionen und ursprüngliche Anwendungsmaße für das gesamte geteilte Layout.

Unterstützende Spezifikation lesen

Visa Product Designsystem Native Radiobutton-Semantik mit Nova-Darstellung

Ein gestalteter Kreis ist keine Radiogruppe

Die öffentlichen Metadaten verwenden v-radio für ein echtes input type="radio" und verknüpfen es mit einem Label. Die Vorschau behält diese native Struktur bei und umschließt die sichtbare Beschreibung jeder Option mit ihrem Label. Mit den Pfeiltasten lässt sich innerhalb einer Gruppe navigieren; der Auswahlzustand bleibt für den Browser und unterstützende Technologien verfügbar.

Ein Fieldset und eine Legende benennen jeweils eine Frage. Die Formatoptionen erläutern ihre Konsequenzen: Eine PDF-Datei ist eine herunterladbare Leseprobe, während HTML als umfließbarer Text beschrieben wird. Die konkreten Produktinhalte sind eigens erstellt; Aufbau und Klassen der Steuerelemente stammen aus der nativen Bibliothek.

  • Verwende für die beiden Formatoptionen denselben Namen und für die Häufigkeit einen anderen.
  • Halte den Radiowert getrennt vom sichtbaren Text, damit die Zusammenfassung ein dauerhaft eindeutiges Label verwenden kann.
  • Verwende für Zustände die Attribute checked und disabled statt nur eine dekorative Klasse.

Unterstützende Spezifikation lesen

Visa Product Designsystem Nova CSS gestaltet die Steuerelemente; das native HTML verwaltet die Auswahl

Gruppierung und Prüfablauf gehören nicht ins Stylesheet

Das Beispiel verwendet Novas Klasse v-radio für echte Radio-Inputs. Gemeinsame name-Attribute machen die Formatauswahl exklusiv; ein anderer Name trennt die Häufigkeitsgruppe. Fieldset und Legend liefern den Gruppenkontext, und ein zugeordnetes Label sorgt dafür, dass der vollständige Optionstext Teil des zugänglichen Namens des Steuerelements ist.

Das Paket CSS wählt keine Option aus, verwaltet keine dauerhafte Speicherung in der Anwendung und erstellt keinen Prüfdatensatz. Das bereitgestellte Skript liest die beiden nativen Gruppen aus und erstellt eine lokale Zusammenfassung. Bei einer Änderung wird diese Zusammenfassung gelöscht, da die vorherigen Werte nicht mehr der aktuellen Auswahl entsprechen.

Binde sowohl das strukturelle Stylesheet als auch das Visa-Theme in die Implementierung ein. Für den alternativen Header wird v-alternate verwendet; das Formular bleibt im standardmäßigen Farbkontext. Imitiere den Header nicht, indem du nur seinen Hintergrund änderst und die Rollen der Vordergrundfarben ungeklärt lässt.

Unterstützende Spezifikation lesen

Visa Product Designsystem Ein Lesefluss bei jeder Bildschirmbreite

Verschiebe die Zusammenfassung, ohne die Aufgabenreihenfolge zu ändern

Auf breiten Bildschirmen stehen die Auswahlgruppen und die Zusammenfassung der aktuellen Auswahl nebeneinander. Auf schmalen Bildschirmen folgt die Zusammenfassung auf das Formular. Die ursprüngliche Dokumentillustration entfällt, da sie keine Informationen zur Aufgabe beiträgt; alle Labels, Erläuterungen und Aktionen bleiben erhalten.

Die Bibliothek CSS unterstützt moderne Evergreen-Browser. Die offiziellen Entwicklungshinweise versprechen keine Kompatibilität mit älteren Browsern. Ein Produktionsteam sollte daher die tatsächlich unterstützten Versionen testen, statt eine erfolgreiche Vorschau in einem modernen Browser als allgemeine Kompatibilitätsgarantie zu betrachten.

  1. Binde die festgelegte strukturelle CSS und das Visa-Theme ein und ergänze anschließend die Layoutstile der Anwendung.
  2. Wähle Accessible HTML und Quarterly aus, prüfe die Auswahl und vergewissere dich, dass beide in der Zusammenfassung erscheinen.
  3. Ändere eine der beiden Auswahlen und bestätige, dass die Prüfbestätigung zurückgesetzt wird. Teste anschließend Reset und das schmale Layout.

Unterstützende Spezifikation lesen

Visa Product Designsystem – Beispiele für Designsystem-Komponenten

Vollständige Nova CSS-Auswahl zusammenstellen

Zwei native Radiogruppen aktualisieren sofort eine Zusammenfassung; die primäre Aktion setzt einen expliziten lokalen Prüfstatus.

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>

Code-Referenz

  • CSS liefert die Darstellung der Komponenten; das kleine Skript ergänzt das Anwendungsverhalten.
  • Durch eine Änderung der Auswahl wird der vorherige Prüfstatus gelöscht.
  • Der alternative Header verwendet einen echten Theme-Kontext und ist keine handgemalte Nachbildung der Farbpalette.
  • Speichere die vollständige HTML als index.html und öffne sie in einem Browser, der auf die festgelegten öffentlichen CSS-URLs zugreifen kann. Die eingebettete Vorschau in dieser Anleitung hält diese Styles lokal.

Struktur und Theme gemeinsam laden

Importiere in einer gebündelten Anwendung beide Ebenen einmalig vor dem Stylesheet der Anwendung.

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

Code-Referenz

  • Fehlt die Theme-Datei, können strukturelle Klassen vorhanden sein, ohne dass die vorgesehenen Visa-Tokens zur Verfügung stehen.
04

Visa Product Designsystem – Agent einrichten

Ausgangspunkt für die Implementierung

Die vollständige HTML verwendet die verifizierten Pfade styles.css und themes/visa/index.css. Beide Dateien sind erforderlich. Im Iframe sind diese Styles lokal eingebettet; offizielle remote font-face-Deklarationen entfallen dort.

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

Ein Prompt für dein Projekt

Agenten-Prompt
Erstelle das Visa-Nova-Beispiel zur Auswahl des Abrechnungsformats mit der festgelegten strukturellen CSS und dem zugehörigen Theme. Behalte native Radiogruppen, aussagekräftige Legenden und zugeordnete Labels bei. Trenne die Rollen des Standard-Themes von denen des alternativen Themes und berücksichtige beim Lesen der rem-Werte die Schriftgrößenbasis von 14 px. Halte die Prüfung lokal, lösche nach Änderungen veraltete Bestätigungen und ordne die Zusammenfassung auf schmalen Bildschirmen unter dem Formular an.
05

Visa Product Designsystem – Quellen und Geltungsbereich

Eigenständige OpenDesign-Anleitung mit nativen Nova-CSS. Diese fiktive Auswahlaufgabe verwendet keine Kontodaten und ändert keine Finanzdienstleistung. In der Vorschau wird auf Systemschriftarten als Ersatz hingewiesen.