Design de produits d’entreprise · Nouvelle ressource

Système de design Morningstar.

Créez une interface de recherche où les nombres sont alignés, les couleurs des actifs gardent leur signification et la typographie reste lisible. Découvrez les constantes MDS, l’adoption de Vue 3, la transition Morningstar Intrinsic et un carnet d’allocation fictif avec tri.

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

Aperçu de l’interface système de design Morningstar

Basculez entre deux modèles de répartition d’origine et triez les pourcentages, tout en conservant les couleurs associées aux catégories d’actifs.

Carnet de répartition fictifOuvrir l’exemple complet
Interprétation native hors ligne de HTML fondée sur les couleurs historiques de répartition MDS citées et une police système. Aucun environnement d’exécution MDS Vue, aucune notation propriétaire ni donnée d’investissement en temps réel. · Référence de mise en œuvre
02

Référence de design système de design Morningstar

Adoption actuelle de Vue 3 et recommandations Intrinsic de 2025, avec des références aux constantes publiques explicitement associées à leur version. Les valeurs numériques historiques de v2.37 servent uniquement de référence historique ; elles ne décrivent pas le package Vue 3 actuel. L’exemple utilise les couleurs de graphique historiques citées et sa propre mise en page applicative.

Périmètre de l’adoption actuelle

Source
Nom / règleValeur / configurationUtilisation
UI scope@mdsComposants versionnés individuellement.
Chart scope@mceÉléments de graphique à périmètre distinct.
Vue 3 packages-vue3 suffixUtilisez la génération de bibliothèque correspondante.
Registryartifacts.morningstar.com/repository/npm-prod-group/Accès interne requis.
SassDart Sass / sass packageCompilez les styles des composants fournis.
CSS Modules[local]___researchNotebookEspace de noms de l’application d’exemple, et non suffixe officiellement requis.

Transition vers Intrinsic

Source
Nom / règleValeur / configurationUtilisation
TypefaceMorningstar IntrinsicLes ressources approuvées doivent être obtenues séparément.
WeightsRegular and BoldFamilles de graisses actuellement prises en charge.
Thin / Light / RegularMap to Intrinsic RegularLes anciens noms de graisse ne signifient pas qu’il existe trois nouveaux fichiers de police.
Bold / HeavyMap to Intrinsic BoldUtilisez les emphases avec discernement.
Vue 3 typography@mds/typography-vue3Mixins mis à jour.
Legacy monolith / MBCNo Intrinsic updatesNe fondez pas une nouvelle intégration sur l’ancien monolithe.

Couleurs du texte — instantané des constantes 3.3.0

Source
Nom / règleValeur / configurationUtilisation
$mds-text-color-primary#1e1e1e Texte principal sur fond clair.
$mds-text-color-secondary#5e5e5e Texte secondaire sur fond clair.
$mds-text-color-primary-on-dark#ffffff Texte principal sur fond sombre.
$mds-text-color-secondary-on-dark#ababab Texte secondaire sur fond sombre.
$mds-text-color-interactive-primary#006fba Texte interactif ; pour les liens, privilégiez le mixin dédié.
$mds-text-color-error#ca0000 Texte d’erreur, à distinguer d’un fond de notification.

Palette historique de répartition — v2.37

Source
Nom / règleValeur / configurationUtilisation
$mds-visualization-color-asset-allocation-equity#1f55a5 Segment des actions.
$mds-visualization-color-asset-allocation-fixed-income#ef7622 Segment des titres à revenu fixe.
$mds-visualization-color-asset-allocation-cash#518428 Segment des liquidités.
$mds-visualization-color-asset-allocation-alternative#a50032 Segment des actifs alternatifs.
$mds-visualization-color-asset-allocation-not-classified#e5e5e5 Segment non classé ; associez-le à un libellé.

Espacements historiques — v2.37

Source
Nom / règleValeur / configurationUtilisation
$mds-space-quarter-x2pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-half-x4pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-1-x8pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-1-and-a-half-x12pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-2-x16pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-3-x24pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-4-x32pxConstante historique ; vérifiez le package installé avant de l’adopter.
$mds-space-6-x48pxConstante historique ; vérifiez le package installé avant de l’adopter.

Contrôles de composition du tableau

Source
Nom / règleValeur / configurationUtilisation
row-numbersBoolean on mds-tableFournissez le numéro de ligne dans mds-tr.
nested-headersNumber of levelsUtilisez les emplacements mds-thead-group-n.
multiselectionBoolean on mds-tableDistinguez les états « tout sélectionné » et « sélection partielle ».
mds-thead.indeterminateBooleanIndique une sélection partielle.
mds-tr.multiselection-labelRow-identifying textNomme la case à cocher de sélection.
mds-pagination-page-changedPagination eventL’application fournit la logique de changement de page.
03

Système de design Morningstar Guide complet

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

DESIGN-morningstar.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 Morningstar Un carnet de recherche fondé sur des chiffres comparables

Les tableaux affichent les valeurs exactes

L’exemple d’origine présente deux modèles de répartition fictifs, une barre empilée et un tableau de valeurs exactes. La représentation visuelle explique la composition relative ; le tableau reste la référence pour consulter les données. Chaque modèle totalise 100 %, et le modèle sélectionné est indiqué dans le titre comme dans la légende du tableau.

Extrait de ce guide OpenDesign

Le tri modifie l’ordre des lignes sans changer le dénominateur ni les couleurs des classes d’actifs. Le lecteur peut passer d’une vue d’ensemble de la répartition à un pourcentage exact sans avoir à interpréter une icône de notation propriétaire. Il s’agit d’une interaction concrète de recherche, et non d’un produit ou d’une recommandation Morningstar inventés.

Consultez la spécification associée

Système de design Morningstar Les constantes ont des rôles définis et des limites de version

Ne transformez pas chaque gris en jeton de couleur du texte

MDS distingue les constantes définies par rôle des couleurs génériques. Le guide destiné aux ingénieurs distingue spécifiquement une couleur de texte d’un ton neutre générique lorsque la même valeur visuelle est nécessaire pour un élément non textuel. L’exemple Sass fourni utilise le rôle de lecture pour le texte et un ton neutre générique pour une règle de tableau personnalisée.

Les tableaux de référence conservent leurs limites de version : les constantes 3.3.0 prennent en charge les valeurs de texte citées, tandis que l’archive publique v2.37 contient les valeurs historiques de répartition et d’espacement. Elles sont utiles pour comprendre une interface existante, mais ne prouvent pas que toutes les constantes actuelles de Vue 3 produisent les mêmes résultats. Consultez le package installé autorisé avant de considérer une valeur archivée comme une exigence actuelle du design system.

Consultez la spécification associée

Système de design Morningstar Morningstar Intrinsic modifie la base de référence de l’implémentation

Deux familles de graisses, mises à jour coordonnées des composants

L’annonce Intrinsic de 2025 associe les anciens noms thin, light et regular à la police regular, et les noms bold et heavy à la police bold. Modifier uniquement la déclaration de font-family ne suffit pas à reproduire cette migration : l’annonce préconise des mises à jour des composants, notamment des packages de polices et de typographie.

L’ancien monolithe morningstar-design-system et Morningstar Base Charts ne bénéficient pas des mises à jour Intrinsic. Les nouveaux exemples ne doivent pas associer ces anciennes méthodes d’installation aux instructions actuelles pour Vue 3. Le carnet hors ligne utilise une police de remplacement système et n’intègre aucun fichier de police propriétaire.

Consultez la spécification associée

Système de design Morningstar Composez explicitement les fonctionnalités du tableau

La sélection, les en-têtes imbriqués et la pagination relèvent de responsabilités distinctes

MDS propose des éléments de tableau à composer, plutôt que d’imposer toutes les opérations sur les données dans une seule grille opaque. Les modèles documentés exposent les numéros de ligne, les emplacements d’en-têtes imbriqués, la sélection multiple et la pagination. L’application reste responsable de la transformation des données et de l’état de sélection.

L’exemple fonctionnel fourni utilise volontairement un tableau HTML natif avec des styles fondés sur les constantes. La référence documentée de composition MDS reste utile lors du passage à la famille de composants native : une sélection partielle doit être représentée par l’état indéterminé de la case à cocher d’en-tête, et chaque case de ligne doit avoir un libellé de sélection multiple qui identifie la ligne.

  • Conservez les pourcentages sous forme numérique jusqu’au formatage d’affichage ; ne triez pas les chaînes formatées.
  • Alignez les en-têtes numériques à droite, comme les cellules correspondantes.
  • Préservez le libellé de l’actif lors du tri ; les positions dans un tableau ne sont pas des identifiants d’enregistrement stables.

Consultez la spécification associée

Système de design Morningstar Les couleurs des actifs ne sont pas de simples éléments décoratifs

Utilisez une signification fixe et une équivalence textuelle

La palette historique de répartition distingue les actions, les titres à revenu fixe, les liquidités, les actifs alternatifs et les éléments non classés. Dans l’exemple, les trois couleurs d’actifs concernées restent associées à leurs classes d’actifs, quel que soit le modèle ou l’ordre des lignes. Les couleurs ne changent pas en fonction du segment qui se trouve en première position.

Un tableau textuel reprend chaque valeur ; l’utilisateur n’a donc pas besoin de distinguer le bleu, l’orange et le vert pour comprendre le modèle. L’exemple évite les étoiles, les icônes de médaillé et les images de style box Morningstar : la référence officielle des icônes réserve les icônes de propriété intellectuelle à leurs significations établies.

Consultez la spécification associée

Système de design Morningstar Distinguez l’échelle historique de la mise en page de l’application

Une surface de lecture compacte, sans colonnes masquées

L’archive documente un espacement de base de 8 pixels, avec des pas d’un quart et d’une moitié. L’exemple adopte un rythme sobre de 8/16/24/32, inspiré de cette référence historique. La largeur totale, la hauteur de la barre empilée et le seuil mobile sont des choix propres à l’application, et non des constantes officielles inventées.

Le tableau ne comporte que trois colonnes : classe d’actifs, pourcentage et barre comparative. Sur les écrans étroits, la barre comparative miniature est supprimée, tandis que l’actif et son pourcentage exact restent visibles. Le sélecteur de modèle reste au-dessus des données et son libellé demeure visible ; aucun filtre n’est représenté par une icône seule sans libellé.

Consultez la spécification associée

Système de design Morningstar Adoptez la génération actuelle du package dans les limites d’accès prévues

Configurez les ressources réellement utilisées avant de styliser un produit

Les équipes autorisées peuvent utiliser le registre interne documenté, le suffixe de package Vue 3 et la configuration Sass. CSS Les modules isolent les styles des composants afin que différentes versions puissent coexister ; l’exemple utilise un espace de noms propre au produit. Les ressources de polices hébergées doivent être configurées avant les styles qui les utilisent.

L’aperçu public ne nécessite aucun de ces accès. Il s’agit d’une démonstration complète et autonome HTML de l’interaction d’allocation, avec des couleurs historiques étayées par des sources et une police système explicitement définie comme solution de repli. L’exemple Vue distinct propose une méthode d’adoption concrète basée sur des constantes ; il ne prétend pas que cette page puisse donner accès au registre ou aux polices.

  1. Confirmez que vous disposez des accès autorisés au registre interne et aux polices, puis créez la configuration de projet isolée présentée ci-dessus.
  2. Compilez le point d’entrée Sass avant le composant de l’application, puis montez l’exemple App.vue complet.
  3. Changez de modèle d’allocation dans l’aperçu, triez dans les deux sens et vérifiez que les libellés, les valeurs et le total restent cohérents.

Consultez la spécification associée

Exemples de composants du système de design système de design Morningstar

Exemple interactif autonome complet

Enregistrez le document complet sous le nom index.html et ouvrez-le dans un navigateur. Interprétation native HTML hors ligne, avec les couleurs historiques d’allocation MDS citées et une police système. Aucun environnement d’exécution MDS Vue, aucune note propriétaire ni donnée d’investissement en temps réel.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Allocation notebook — MDS interpretation</title><style>*{box-sizing:border-box}body{margin:0;background:#fff;color:#1e1e1e;font:16px/1.45 Arial,sans-serif}.app{max-width:1100px;margin:auto;padding:32px}.mast{border-bottom:2px solid #333;display:flex;justify-content:space-between;padding-bottom:16px;gap:16px}.mast b{letter-spacing:.06em}.mast span,.muted{color:#5e5e5e;font-size:13px}h1{font-size:36px;font-weight:400;line-height:1.2;margin:28px 0 10px}.intro{max-width:600px;color:#5e5e5e;margin:0 0 24px}.controls{background:#f2f2f2;display:flex;align-items:center;gap:16px;padding:16px;margin-bottom:24px}select{font:inherit;padding:8px 32px 8px 10px;background:white;border:1px solid #808080;border-radius:2px}button:focus-visible,select:focus-visible{outline:3px solid #006fba;outline-offset:3px}.chart{display:grid;grid-template-columns:1fr 90px;gap:24px;align-items:center;margin:28px 0 32px}.stack{display:flex;height:42px;overflow:hidden}.segment{min-width:0}.total{text-align:right;font-size:30px}.total small{display:block;font-size:11px;color:#5e5e5e}.legend{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;margin-top:12px}.legend i{display:inline-block;width:8px;height:8px;margin-right:6px}table{width:100%;border-collapse:collapse}caption{text-align:left;font-size:20px;padding-bottom:12px}th,td{padding:16px 8px;border-bottom:1px solid #e5e5e5;text-align:left;font-weight:400}thead th{border-top:2px solid #333;border-bottom:1px solid #808080;font-size:13px}.numeric{text-align:right;font-variant-numeric:tabular-nums}.sort{border:0;background:none;color:#006fba;cursor:pointer;padding:0;font:inherit;text-align:right}.spark{width:35%}.track{height:6px;background:#f2f2f2}.fill{height:6px}.status{font-size:12px;min-height:20px;color:#5e5e5e}.foot{margin-top:32px;padding-top:16px;border-top:1px solid #ccc;font-size:12px;color:#5e5e5e}@media(max-width:600px){.app{padding:20px}.mast{flex-direction:column;gap:4px}h1{font-size:30px}.controls{align-items:flex-start;flex-direction:column;gap:8px}.chart{grid-template-columns:1fr 70px;gap:12px}.spark{display:none}.numeric{width:35%}th,td{padding:16px 4px}.legend{gap:10px}}</style><main class="app"><header class="mast"><b>RESEARCH NOTEBOOK</b><span>Independent MDS interpretation</span></header><h1>One model. Every allocation.</h1><p class="intro">Read the mix at a glance, then inspect the exact numbers. These two original models are fictional.</p><div class="controls"><label for="model">Sample model</label><select id="model"><option value="balanced">Balanced sample</option><option value="reserve">Reserve sample</option></select><span class="muted">No market data or investment recommendation</span></div><div class="chart"><div><div class="stack" id="stack" aria-hidden="true"></div><div class="legend"><span><i style="background:#1f55a5"></i>Equity</span><span><i style="background:#ef7622"></i>Fixed income</span><span><i style="background:#518428"></i>Cash</span></div></div><div class="total">100<small>PERCENT TOTAL</small></div></div><table><caption id="caption">Balanced sample allocation</caption><thead><tr><th scope="col">Asset class</th><th scope="col" id="sorthead" class="numeric" aria-sort="descending"><button class="sort" id="sort">Allocation (%) ↓</button></th><th scope="col" class="spark">Share of model</th></tr></thead><tbody id="rows"></tbody></table><p class="status" id="status" role="status">Sorted by allocation, highest first.</p><p class="foot">Historical MDS v2.37 allocation colors; original application layout and system-font fallback. No Morningstar ratings, proprietary font assets or native Vue components are included.</p></main><script>const models={balanced:[55,35,10],reserve:[20,45,35]},assets=[{name:'Equity',color:'#1f55a5'},{name:'Fixed income',color:'#ef7622'},{name:'Cash',color:'#518428'}];let ascending=false;const model=document.querySelector('#model');function render(){const entries=assets.map((a,i)=>({...a,value:models[model.value][i]}));document.querySelector('#stack').innerHTML=entries.map(a=>`<div class="segment" style="width:${a.value}%;background:${a.color}"></div>`).join('');document.querySelector('#caption').textContent=model.selectedOptions[0].textContent+' allocation';document.querySelector('#rows').innerHTML=[...entries].sort((a,b)=>ascending?a.value-b.value:b.value-a.value).map(a=>`<tr><th scope="row">${a.name}</th><td class="numeric">${a.value.toFixed(1)}%</td><td class="spark"><div class="track"><div class="fill" style="width:${a.value}%;background:${a.color}"></div></div></td></tr>`).join('');document.querySelector('#sorthead').setAttribute('aria-sort',ascending?'ascending':'descending');document.querySelector('#sort').textContent='Allocation (%) '+(ascending?'↑':'↓');document.querySelector('#status').textContent='Sorted by allocation, '+(ascending?'lowest first.':'highest first.')}model.onchange=render;document.querySelector('#sort').onclick=()=>{ascending=!ascending;render()};render();</script></html>

Référence du code

  • Les valeurs d’allocation sont fictives. Les couleurs des actifs conservent leur signification catégorielle lors du tri ; ce document n’intègre ni ressources propriétaires de MDS Vue ni polices Intrinsic.

Un tableau triable complet avec un dénominateur explicite

Un tableau Vue 3 utilise la sémantique native et la configuration du langage visuel MDS présentées ci-dessus. Le tri préserve les valeurs numériques et indique le sens du tri.

vue
<!-- src/App.vue — native table styled with MDS constants, not MdsTable -->
<script setup>
import {computed,ref} from 'vue';
const ascending=ref(false);
const rows=[{name:'Sample Equity',allocation:55},{name:'Sample Bonds',allocation:35},{name:'Sample Cash',allocation:10}];
const sorted=computed(()=>[...rows].sort((a,b)=>ascending.value?a.allocation-b.allocation:b.allocation-a.allocation));
</script>
<template>
 <main><h1>Research notebook</h1><p>Fictional allocation; not an investment recommendation.</p>
 <table><caption>Sample allocation, total 100%</caption><thead><tr><th scope="col">Asset</th><th scope="col" class="numeric" :aria-sort="ascending?'ascending':'descending'"><button type="button" @click="ascending=!ascending">Allocation (%) {{ascending?'↑':'↓'}}</button></th></tr></thead>
 <tbody><tr v-for="row in sorted" :key="row.name"><th scope="row">{{row.name}}</th><td class="numeric">{{row.allocation.toFixed(1)}}%</td></tr></tbody></table>
 <p role="status">Sorted by allocation, {{ascending?'lowest first':'highest first'}}.</p></main>
</template>

Référence du code

  • MDS autorise les équipes à adapter ses constantes et son langage visuel sans utiliser ses composants Vue.
  • Cet exemple n’invente délibérément ni import MdsTable ni événement de tri non documenté.
  • L’allocation 55/35/10 est fictive, totalise 100 et ne représente pas des données de marché.

Distinguer l’échelle typographique du niveau sémantique des titres

La mixin officielle peut appliquer à un h1 l’échelle visuelle du niveau 2 sans changer sa signification dans le document.

scss
@use '@mds/constants-vue3' as *;
@use '@mds/typography-vue3' as *;
h1 { @include mds-level-2-heading($bold:true); color:$mds-text-color-primary; }
p { @include mds-body-text-m(); color:$mds-text-color-primary; }

Référence du code

  • Les mixins typographiques ne définissent pas la couleur du texte.
  • Utilisez des constantes MCE isolées pour les éléments de graphique plutôt que de supposer que les substitutions MDS s’y appliquent aussi.
04

Configuration de l’agent IA système de design Morningstar

Point de départ de l’implémentation

Configuration du registre réservé aux équipes autorisées. Le chemin des polices doit pointer vers des fichiers sous licence réellement hébergés par l’application. À associer à App.vue ci-dessous. Il s’agit d’un tableau natif HTML basé sur des constantes, et non d’une affirmation selon laquelle les packages MDS seraient accessibles au public ou que la compilation native ait été vérifiée.

shell / javascript / scss
# Authorized Morningstar teams only: project .npmrc
@mds:registry=https://artifacts.morningstar.com/repository/npm-prod-group/
@mce:registry=https://artifacts.morningstar.com/repository/npm-prod-group/

# Within a Vite Vue 3 project with approved registry access
pnpm add @mds/constants-vue3 @mds/typography-vue3 @mds/fonts-vue3
pnpm add -D sass

// vite.config.js
import {defineConfig} from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig({
  plugins:[vue()],
  css:{modules:{generateScopedName:'[local]___researchNotebook'}}
});

// src/main.js
import {createApp} from 'vue';
import './main.scss';
import App from './App.vue';
createApp(App).mount('#app');

// src/main.scss — host licensed font files at this application path first
@use '@mds/fonts-vue3/scss/config' with ($font-path:'/fonts/morningstar-intrinsic');
@use '@mds/fonts-vue3';
@use '@mds/constants-vue3' as *;
@use '@mds/typography-vue3' as *;
h1 { @include mds-level-2-heading($bold:true); color:$mds-text-color-primary; }
p,td,th { @include mds-body-text-m(); color:$mds-text-color-primary; }
main { margin:$mds-space-4-x; }
table { width:100%;border-collapse:collapse; }
th,td { text-align:left; border-bottom:1px solid $mds-color-neutral-37; }
.numeric { text-align:right;font-variant-numeric:tabular-nums; }
button { font:inherit;cursor:pointer; }

Un prompt pour votre projet

Prompt pour l’agent IA
Créez un carnet de recherche inspiré de Morningstar en respectant les limites de version explicites de ce guide. Présentez les valeurs exactes de l’allocation dans un tableau sémantique et associez les couleurs de façon permanente à la signification de leurs actifs. N’inventez pas de notes et n’utilisez pas les icônes IP comme décoration. N’utilisez la configuration actuelle des polices et des constantes Vue 3 autorisées qu’avec les accès approuvés ; sinon, identifiez clairement l’implémentation hors ligne.
05

Sources et périmètre système de design Morningstar

Guide indépendant OpenDesign. Les exemples d’allocation sont fictifs et ne constituent pas des conseils financiers. Les constantes numériques historiques sont associées à leur version source ; Morningstar contrôle toujours l’accès aux packages actuels et aux polices.