Logiciels d’entreprise · Nouvelle ressource

HPE Grommet — système de design.

Modélisez une réservation de capacité avec les primitives de mise en page de Grommet, des champs de formulaire contrôlés et des jauges numériques. Utilisez délibérément l’échelle du thème et distinguez le thème de base Grommet du thème HPE installé séparément.

Guide OpenDesign9 chapitres38 entrées de référenceGuide de l’application d’origine
01

Aperçu de l’interface du système de design HPE Grommet

Ajustez une allocation proposée et préparez un plan local validé.

Planificateur de réservation de capacitéOuvrir l’exemple complet
Interprétation indépendante de HTML/CSS des dimensions et couleurs de Grommet de base, avec la police Arial choisie explicitement ; il ne s’agit pas du thème HPE distinct. · Référence de mise en œuvre
02

Référence de conception du système de design HPE Grommet

Thème de base de Grommet v2 généré avec baseSpacing=24 et scale=6 ; ces valeurs ne sont pas celles de grommet-theme-hpe. Le projet de départ natif définit explicitement Arial ainsi que les couleurs de marque et de focus présentées, comme choix de thème pour l’application.

Échelle par défaut des dimensions des bords

Source
Nom / règleValeur / configurationUtilisation
global.edgeSize.hair1pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.xxsmall3pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.xsmall6pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.small12pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.medium24pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.large48pxTaille par défaut hors surcharge adaptative pour petit écran.
global.edgeSize.xlarge96pxTaille par défaut hors surcharge adaptative pour petit écran.

Surcharges adaptatives pour petit écran

Source
Nom / règleValeur / configurationUtilisation
global.breakpoints.small.value768Limite du point de rupture petit écran dans le thème de base.
small.edgeSize.xxsmall2pxEspacement fin pour petit écran.
small.edgeSize.xsmall3pxEspacement très réduit pour petit écran.
small.edgeSize.small6pxPetit espacement intérieur adaptatif.
small.edgeSize.medium12pxEspacement intérieur moyen adaptatif.
small.edgeSize.large24pxGrand espacement adaptatif.
global.breakpoints.medium.value1536Limite du point de rupture suivant dans le thème de base.

Couleurs et commandes de base

Source
Nom / règleValeur / configurationUtilisation
global.colors.brand#7D4CDB Couleur de marque par défaut de Grommet, pas le vert HPE.
global.colors.focus#6FFFB0 Accent de focus par défaut.
global.colors.text.light#444444 Texte du corps en thème clair.
global.colors.text.dark#f8f8f8 Texte du corps en thème sombre.
global.colors.background-front.light#FFFFFF Surface claire au premier plan.
global.colors.background-front.dark#444444 Surface sombre au premier plan.
global.control.border.radius4pxArrondi de base des commandes.
global.control.border.width1pxBordure de base des commandes.

Contrat des formulaires et des champs

Source
Nom / règleValeur / configurationUtilisation
Form.valueObject keyed by field nameUtilisez un seul objet de réservation contrôlé.
Form.onChange(value) => {}Reçoit l’objet mis à jour, pas un événement DOM.
Form.onSubmit({ value, touched }) => {}Lire la valeur actuelle du formulaire acceptée.
Form.validateblur | submit | changeChoisir le moment où la validation s’exécute.
Form.errorsObject keyed like valueAssocier les erreurs distantes ou propres à l’application aux champs.

Intégration de Select et des champs de type curseur

Source
Nom / règleValeur / configurationUtilisation
Select.optionsString array or object arrayL’exemple utilise des chaînes pour simplifier la forme des valeurs.
Select.onChange({ value, option }) => {}Ne lisez pas event.target.value pour Select.
Select.valueKey{ key, reduce } for object optionsreduce renvoie la valeur indexée par clé plutôt que l’objet complet.
Select.labelKeyProperty name or functionLibellé visible pour les options objet.
Select.onSearchFunction; enables search inputFournissez un filtrage côté application si nécessaire.

Anatomie d’une jauge

Source
Nom / règleValeur / configurationUtilisation
valuenumberQuantité représentée ; ignorée si values est fourni.
maxnumber or numeric stringCapacité totale disponible ; ne la confondez pas avec un pourcentage.
typebar | circle | pie | semicircleUtilisez circle pour la vue d’ensemble de l’utilisation.
colorColor identifierValide avec une seule valeur.
a11yTitlestringDécrire la mesure et le dénominateur.
sizeNamed size or CSS dimensionGarder l’anneau dans la largeur disponible.
03

Guide complet du système de design HPE Grommet

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

DESIGN-hpe-grommet.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 HPE Grommet : Grommet de base et thème HPE

Ne présentez pas le violet comme un jeton HPE

Grommet est un framework React associé à HPE, doté de son propre thème de base. Le package distinct grommet-theme-hpe exporte hpe pour les applications qui adoptent les styles de conception HPE. Cette référence présente le framework de base et un exemple configuré explicitement. Le violet de marque et la couleur menthe du focus proviennent du thème de base ; ils ne sont pas présentés comme la palette HPE actuellement utilisée.

Extrait de ce guide OpenDesign

Consultez la spécification associée

Un petit thème d’application défini explicitement

La configuration fournit Arial comme choix de police pour l’application et reprend les couleurs de marque et de focus documentées pour le thème de base. Toutes les autres règles des composants héritent de Grommet. Un produit HPE réel peut plutôt utiliser le thème hpe approuvé, puis vérifier l’espacement et la typographie obtenus, car les surcharges du thème peuvent modifier les valeurs de base répertoriées ici.

Consultez la spécification associée

Système de design HPE Grommet : les échelles du thème peuvent varier selon le point de rupture

Les valeurs nommées correspondent à des choix adaptatifs

Le générateur de base démarre à 24 pixels. L’espacement moyen par défaut des bords est de 24px, mais le point de rupture petit écran ramène l’espacement moyen à 12px. Le padding adaptatif d’un Box peut donc diminuer même si le JSX indique toujours medium. Consultez conjointement l’échelle et la surcharge au point de rupture ; ne promettez pas que medium vaut toujours vingt-quatre pixels.

Consultez la spécification associée

Utilisez Box pour la mise en page réelle

Le planificateur utilise un Box en colonne comme page, ainsi qu’un Box adaptatif en ligne/colonne pour le formulaire et le récapitulatif de capacité. Le formulaire enfant peut s’agrandir, tandis que le récapitulatif conserve une largeur minimale utile. Sur petit écran, le graphique apparaît après les commandes, conformément à l’ordre du document.

Consultez la spécification associée

Système de design HPE Grommet : une base lisible spécifiée avec soin

La taille de police et la hauteur de ligne sont des valeurs de thème distinctes

Le générateur de base déduit une police de dix-huit pixels et une hauteur de ligne de vingt-quatre pixels à partir de la valeur d’espacement. L’exemple définit explicitement cette paire avec Arial pour ne pas laisser entendre qu’une police de marque propriétaire a été téléchargée. Les titres utilisent Heading de Grommet et le texte utilise Text, ce qui permet au thème de résoudre leurs rôles sans reproduire l’implémentation interne des composants dans CSS.

Consultez la spécification associée

Système de design HPE Grommet : un seul objet de réservation contrôlé

Les noms relient les champs au formulaire

Form gère le contrat coordonné du formulaire. Dans le modèle contrôlé, value et onChange appartiennent à l’appelant. Le name de chaque FormField et de son champ enfant identifie la clé correspondante dans value. Notre objet de réservation contient name et pool. Le curseur de capacité est stocké séparément sous forme de nombre, car il pilote un diagramme dynamique avant l’envoi du formulaire.

Consultez la spécification associée

Valider le nom de la réservation

Consultez la spécification associée

Système de design HPE Grommet : Select a sa propre structure d’événement

Les chaînes simplifient et fiabilisent le cas de base

Les options d’environnement de l’exemple sont Production et Development. Leur valeur contrôlée est donc une chaîne. Si vous passez à des options objet, définissez labelKey et, facultativement, valueKey avec reduce, puis veillez à ce que la valeur stockée soit cohérente avec ce choix. Le gestionnaire onChange de Select expose un objet value/option, contrairement à l’événement de l’entrée native de type curseur.

Consultez la spécification associée

La recherche et le chargement des options relèvent de l’application

Select peut afficher un champ de recherche si on lui fournit onSearch. Cette prop ne signifie pas que chaque option est automatiquement filtrée. Conservez séparément la collection source non filtrée afin de pouvoir la restaurer à la fermeture ou à l’effacement de la recherche. Pour les deux listes, l’exemple omet intentionnellement la recherche.

Consultez la spécification associée

HPE Grommet Système de conception : un Meter a besoin d’unités et d’un dénominateur

Représentez une capacité, pas un pourcentage sans explication

Meter reçoit la quantité utilisée projetée et max=100. Dans cet exemple de planificateur, le pool contient déjà 35 unités utilisées et la réservation proposée varie de 5 à 60. Le pourcentage correspond ici au nombre, car le dénominateur de la démonstration est de cent. Le code transmet tout de même max explicitement afin que le contrat de données reste valable si le total change.

Consultez la spécification associée

Gardez le graphique et le texte synchronisés

Le cercle, le libellé d’utilisation projetée et les unités restantes sont calculés à partir de la même valeur numérique du curseur. RangeInput natif émet un événement DOM : convertissez donc event.target.value en Number avant d’effectuer des calculs. Sinon, l’addition d’une chaîne à trente-cinq peut produire un total qui semble plausible, mais qui est incorrect.

Consultez la spécification associée

HPE Grommet Système de conception : défilement du document et composition pour écran étroit

Choisissez full="min" pour cette page

Grommet full=true est prévu pour une application qui gère elle-même la fenêtre d’affichage et le défilement interne. Ce planificateur utilise full="min" pour permettre au document de s’agrandir. Ainsi, le formulaire et son message de validation ne restent pas coincés dans un conteneur à hauteur fixe sur un téléphone.

Consultez la spécification associée

Lisez ResponsiveContext dans Grommet

Un composant enfant consomme le contexte actuel et choisit column pour les petits écrans, row sinon. Le fournisseur doit englober cet enfant pour que son contexte corresponde au thème choisi. Lorsque la largeur disponible est réduite, la disposition de secours reste une colonne naturelle.

  • Placez les libellés des champs au-dessus de leurs champs de saisie.
  • Dans l’ordre du document, placez le récapitulatif de capacité après les commandes.
  • Autorisez le retour à la ligne de la rangée d’actions sans masquer le texte de validation.

Consultez la spécification associée

HPE Grommet Système de conception : associez libellé, erreur et mesure

Précisez le sens de chaque valeur numérique affichée

Le curseur de plage possède un libellé permanent et une unité visible. Le cercle reçoit un a11yTitle contenant l’utilisation projetée et la capacité totale. Le texte à proximité expose les mêmes nombres afin que l’information ne dépende pas d’un arc coloré. Le texte d’erreur décrit le problème de réservation et reste près du champ concerné.

Consultez la spécification associée

Explicitez le résultat local

  1. Soumettez un nom vide et vérifiez que l’erreur de champ obligatoire s’affiche.
  2. Saisissez un nom, choisissez un pool et ajustez l’allocation.
  3. Préparez le plan et vérifiez que l’instantané local contient le pool sélectionné et le nombre d’unités.

Consultez la spécification associée

HPE Grommet Système de conception : monter une composition Grommet complète

Installez le framework et sa dépendance de style

Installez grommet avec styled-components et le runtime React dans un projet client. La configuration monte Grommet, puis un composant enfant qui consomme ResponsiveContext, un Form contrôlé, FormField/TextInput/Select, RangeInput et Meter. Utilisez le libellé de Button plutôt que ses enfants pour expliciter le comportement par défaut du bouton avec libellé.

Consultez la spécification associée

HPE Grommet Exemples de composants du système de conception

Exemple interactif autonome complet

Enregistrez le document complet sous index.html et ouvrez-le dans un navigateur. Interprétation indépendante HTML/CSS des dimensions et couleurs de base de Grommet, avec une police Arial explicitement choisie ; il ne s’agit pas du thème HPE distinct.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Capacity reservation — Grommet study</title><style>*{box-sizing:border-box}body{margin:0;background:white;color:#444;font:18px/24px Arial,sans-serif}header{padding:24px 36px;border-bottom:1px solid #ddd;display:flex;gap:12px;align-items:center}.mark{width:22px;height:22px;border:4px solid #7d4cdb;border-radius:50%}main{max-width:1050px;margin:auto;padding:36px}h1{font-size:36px;line-height:42px;margin:12px 0 24px;color:#222}h2{font-size:24px;line-height:30px;margin:0 0 12px}.intro{max-width:650px;margin-bottom:36px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:48px}label{display:block;font-weight:600;margin-bottom:12px}input,select,button{font:inherit;max-width:100%}input[type=text],select{width:100%;border:1px solid #888;border-radius:4px;background:transparent;padding:12px;color:#444}input:focus-visible,select:focus-visible,button:focus-visible{outline:3px solid #6fffb0;outline-offset:3px}.field{margin-bottom:24px}input[type=range]{width:100%;accent-color:#7d4cdb}.limits{display:flex;justify-content:space-between;font-size:14px;color:#666;margin-top:6px}button{border:2px solid #7d4cdb;border-radius:24px;background:#7d4cdb;color:white;padding:10px 24px;font-weight:600;cursor:pointer}button:hover{background:#6839c0}aside{background:#f2f2f2;padding:24px;border-radius:12px;align-self:start;text-align:center}.ring{width:192px;height:192px;border-radius:50%;background:conic-gradient(#7d4cdb var(--used),#dadada 0);margin:24px auto;display:grid;place-items:center;position:relative}.ring:before{content:'';position:absolute;inset:12px;background:#f2f2f2;border-radius:50%}.ring span{position:relative;font-size:36px;font-weight:bold}.ring small{display:block;font-size:14px;font-weight:400;line-height:20px}.legend{text-align:left;border-top:1px solid #ddd;padding-top:12px;font-size:14px}.legend div{display:flex;justify-content:space-between;margin:8px 0}.error{font-size:14px;color:#b30000;margin-top:6px}#result{background:#f2f2f2;border-left:4px solid #7d4cdb;padding:24px;margin-top:36px}footer{font-size:12px;line-height:18px;color:#666;border-top:1px solid #ddd;padding:24px 36px}@media(max-width:700px){main{padding:24px}.layout{grid-template-columns:1fr;gap:24px}h1{font-size:30px;line-height:36px}header,footer{padding:24px}.intro{margin-bottom:24px}}</style><header><span class="mark" aria-hidden="true"></span><strong>Capacity planner</strong></header><main><h1>Plan a reservation</h1><p class="intro">Explore a proposed allocation before preparing a local plan. This model contains 100 capacity units.</p><div class="layout"><form id="form" novalidate><div class="field"><label for="name">Reservation name</label><input id="name" type="text" required aria-describedby="error"><div class="error" id="error" hidden></div></div><div class="field"><label for="pool">Capacity pool</label><select id="pool"><option>Production</option><option>Development</option></select></div><div class="field"><label for="units">Requested allocation: <output id="requested">20</output> units</label><input id="units" type="range" min="5" max="60" step="5" value="20"><div class="limits"><span>5 units</span><span>60 units</span></div></div><button type="submit">Prepare plan</button><p style="font-size:14px;color:#666">No infrastructure will be provisioned.</p></form><aside><h2>Projected usage</h2><div class="ring" id="ring" style="--used:55%" role="img" aria-label="55 of 100 units projected usage"><span><output id="used">55</output><small>of 100 units</small></span></div><div class="legend"><div><span>Already used</span><strong>35</strong></div><div><span>Proposed reservation</span><strong id="proposed">20</strong></div><div><span>Remaining</span><strong id="remaining">45</strong></div></div></aside></div><section id="result" hidden><h2>Prepared local plan</h2><p id="snapshot" role="status"></p><p style="font-size:14px">This snapshot changes only when you prepare the plan again.</p></section></main><footer>Independent base Grommet HTML/CSS interpretation. Base purple/mint palette and spacing; Arial is an application font choice. This is not the separate HPE branded theme.</footer><script>
const $=id=>document.getElementById(id);$('units').oninput=()=>{const units=Number($('units').value),used=35+units;$('requested').textContent=$('proposed').textContent=units;$('used').textContent=used;$('remaining').textContent=100-used;$('ring').style.setProperty('--used',used+'%');$('ring').setAttribute('aria-label',used+' of 100 units projected usage')};$('form').onsubmit=e=>{e.preventDefault();const name=$('name').value.trim();if(name.length<3){$('error').textContent='Use at least three characters for the reservation name.';$('error').hidden=false;$('name').setAttribute('aria-invalid','true');$('name').focus();return}$('error').hidden=true;$('name').removeAttribute('aria-invalid');$('snapshot').textContent=name+' · '+$('pool').value+' · '+$('units').value+' units. Prepared in this local demonstration.';$('result').hidden=false};
</script></html>

Référence du code

  • Les calculs de capacité utilisent les valeurs affichées pour l’exemple de pool. La disposition autonome est indépendante HTML ; l’exemple natif utilise le thème de base de Grommet plutôt que le thème HPE distinct.

Entrée complète de l’implémentation native

L’implémentation complète présentée dans la configuration, réunie ici avec les explications ciblées sur API. Suivez les prérequis documentés concernant les packages et la compilation dans la section de configuration.

jsx
// npm install react react-dom grommet styled-components
import React, { useContext, useState } from 'react';
import { createRoot } from 'react-dom/client';
import { Grommet, Box, Heading, Text, Form, FormField, TextInput,
 Select, RangeInput, Meter, Button, ResponsiveContext } from 'grommet';
const theme={global:{font:{family:'Arial, sans-serif',size:'18px',height:'24px'},colors:{brand:'#7D4CDB',focus:'#6FFFB0'}}};
function Planner(){
 const size=useContext(ResponsiveContext);
 const [value,setValue]=useState({name:'',pool:'Production'});
 const [units,setUnits]=useState(20),[plan,setPlan]=useState(null);
 const used=35+units;
 return <Box pad="medium" gap="medium" width={{max:'large'}} margin="auto">
 <Heading level={1} margin="none">Plan a reservation</Heading>
 <Text>Local capacity model. No infrastructure is provisioned.</Text>
 <Box direction={size==='small'?'column':'row'} gap="large">
 <Box flex><Form value={value} onChange={setValue} validate="submit" onSubmit={({value:accepted})=>setPlan({...accepted,units})}>
 <FormField name="name" htmlFor="reservation-name" label="Reservation name" required validate={name=>String(name || '').trim().length<3?'Use at least three characters':undefined}>
 <TextInput name="name" id="reservation-name"/></FormField>
 <FormField name="pool" htmlFor="pool" label="Capacity pool"><Select name="pool" id="pool" options={['Production','Development']}/></FormField>
 <Box gap="small" margin={{vertical:'medium'}}><label htmlFor="units">Requested allocation: {units} units</label>
 <RangeInput id="units" min={5} max={60} step={5} value={units} onChange={event=>setUnits(Number(event.target.value))}/></Box>
 <Button type="submit" primary label="Prepare plan"/>
 </Form></Box>
 <Box align="center" gap="small" pad="medium" background="light-2" round="small">
 <Meter type="circle" value={used} max={100} size="small" thickness="small" color="brand" a11yTitle={`${used} of 100 units projected usage`}/>
 <Text weight="bold">{used} / 100 units used</Text><Text>{100-used} units remaining</Text>
 </Box></Box>
 {plan&&<Box background="light-2" pad="medium" role="status"><Text>Local plan: {plan.name} · {plan.pool} · {plan.units} units</Text></Box>}
 </Box>
}
createRoot(document.getElementById('root')).render(<Grommet theme={theme} themeMode="light" full="min"><Planner/></Grommet>);

Référence du code

  • Client main.jsx pour un projet doté d’un élément racine. Grommet de base, avec une police d’application et une surcharge de marque déclarées explicitement. Aucun thème HPE n’est supposé implicitement. API Vérifié à partir de la documentation officielle ; la compilation native n’a pas été vérifiée ici.

Passez délibérément au thème de marque HPE

N’utilisez le package distinct que si c’est bien la cible de conception prévue ; vérifiez à nouveau les valeurs par rapport à la version installée.

jsx
// npm install grommet-theme-hpe
import { Grommet } from 'grommet';
import { hpe } from 'grommet-theme-hpe';
// Wrap the Planner from the full setup example:
<Grommet theme={hpe} themeMode="light" full="min"><Planner /></Grommet>

Référence du code

  • Le tableau de référence ci-dessus décrit le thème de base, et non cette surcharge facultative.

Valeurs objet de Select

Stockez un identifiant de pool tout en affichant son libellé.

jsx
<Select options={[{id:'prod',label:'Production'},{id:'dev',label:'Development'}]}
 labelKey="label" valueKey={{key:'id',reduce:true}}
 value={poolId} onChange={({value})=>setPoolId(value)} />

Référence du code

  • Déclarez poolId/setPoolId avec useState dans le composant appelant.
  • Lorsque reduce est activé, la valeur stockée est l’identifiant, et non l’objet.
04

Système de design HPE Grommet Configuration de l’agent IA

Point de départ de l’implémentation

Client main.jsx pour un projet doté d’un élément racine. Grommet de base, avec une police d’application et une surcharge de marque déclarées explicitement. Aucun thème HPE n’est supposé implicitement. API Vérifié à partir de la documentation officielle ; la compilation native n’a pas été vérifiée ici.

jsx
// npm install react react-dom grommet styled-components
import React, { useContext, useState } from 'react';
import { createRoot } from 'react-dom/client';
import { Grommet, Box, Heading, Text, Form, FormField, TextInput,
 Select, RangeInput, Meter, Button, ResponsiveContext } from 'grommet';
const theme={global:{font:{family:'Arial, sans-serif',size:'18px',height:'24px'},colors:{brand:'#7D4CDB',focus:'#6FFFB0'}}};
function Planner(){
 const size=useContext(ResponsiveContext);
 const [value,setValue]=useState({name:'',pool:'Production'});
 const [units,setUnits]=useState(20),[plan,setPlan]=useState(null);
 const used=35+units;
 return <Box pad="medium" gap="medium" width={{max:'large'}} margin="auto">
 <Heading level={1} margin="none">Plan a reservation</Heading>
 <Text>Local capacity model. No infrastructure is provisioned.</Text>
 <Box direction={size==='small'?'column':'row'} gap="large">
 <Box flex><Form value={value} onChange={setValue} validate="submit" onSubmit={({value:accepted})=>setPlan({...accepted,units})}>
 <FormField name="name" htmlFor="reservation-name" label="Reservation name" required validate={name=>String(name || '').trim().length<3?'Use at least three characters':undefined}>
 <TextInput name="name" id="reservation-name"/></FormField>
 <FormField name="pool" htmlFor="pool" label="Capacity pool"><Select name="pool" id="pool" options={['Production','Development']}/></FormField>
 <Box gap="small" margin={{vertical:'medium'}}><label htmlFor="units">Requested allocation: {units} units</label>
 <RangeInput id="units" min={5} max={60} step={5} value={units} onChange={event=>setUnits(Number(event.target.value))}/></Box>
 <Button type="submit" primary label="Prepare plan"/>
 </Form></Box>
 <Box align="center" gap="small" pad="medium" background="light-2" round="small">
 <Meter type="circle" value={used} max={100} size="small" thickness="small" color="brand" a11yTitle={`${used} of 100 units projected usage`}/>
 <Text weight="bold">{used} / 100 units used</Text><Text>{100-used} units remaining</Text>
 </Box></Box>
 {plan&&<Box background="light-2" pad="medium" role="status"><Text>Local plan: {plan.name} · {plan.pool} · {plan.units} units</Text></Box>}
 </Box>
}
createRoot(document.getElementById('root')).render(<Grommet theme={theme} themeMode="light" full="min"><Planner/></Grommet>);

Un prompt pour votre projet

Prompt pour l’agent IA
Implémentez le planificateur de réservation fourni, basé sur Grommet de base, avec un Form contrôlé, des FormFields nommés, Select, RangeInput et un Meter avec une valeur max explicite. Distinguez les valeurs du thème de base de celles de grommet-theme-hpe. Convertissez la valeur du curseur en nombre, affichez les unités, validez le nom et produisez uniquement un instantané de plan local.
05

HPE Grommet Sources et périmètre du système de conception

Référence indépendante pour une implémentation avec Grommet de base. L’adoption du thème de marque HPE est présentée séparément. Les chiffres de capacité sont des données locales fictives, et non des mesures d’infrastructure ou des opérations de provisionnement.