企業ソフトウェア · 新しいリソース

HPE Grommet デザインシステム.

Grommet のレイアウトプリミティブ、制御可能なフォームフィールド、数値メーターを使って、容量予約の画面を作成します。テーマのスケールを意図的に使い、基本の Grommet テーマと別途インストールする HPE テーマを区別してください。

OpenDesign ガイド9 章リファレンス項目 38 件オリジナルアプリケーションガイド
01

HPE Grommet デザインシステムのインターフェースプレビュー

割り当て案を調整し、検証済みのローカルプランを作成します。

容量予約プランナー完全な例を開く
Grommet の基本的な寸法と色を独自に HTML/CSS として解釈し、フォントには Arial を明示的に選択しています。別個の HPE テーマは使用していません。· 実装リファレンス
02

HPE Grommet デザインシステムのデザインリファレンス

baseSpacing=24 と scale=6 を使用して生成した Grommet v2 の基本テーマです。これらは grommet-theme-hpe の値ではありません。ネイティブのスターターでは、Arial と、例示したブランドカラーおよびフォーカスカラーをアプリ側のテーマ設定として明示しています。

標準のエッジサイズスケール

ソース
名前 / ルール値 / 設定用途
global.edgeSize.hair1px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.xxsmall3px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.xsmall6px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.small12px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.medium24px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.large48px小サイズのレスポンシブ上書き以外で使われる標準サイズ。
global.edgeSize.xlarge96px小サイズのレスポンシブ上書き以外で使われる標準サイズ。

小サイズのレスポンシブ上書き

ソース
名前 / ルール値 / 設定用途
global.breakpoints.small.value768基本テーマでの小サイズのブレークポイント境界。
small.edgeSize.xxsmall2px小画面向けの細かい間隔。
small.edgeSize.xsmall3px小画面向けの極小間隔。
small.edgeSize.small6px小画面でのレスポンシブパディング。
small.edgeSize.medium12px中画面でのレスポンシブパディング。
small.edgeSize.large24pxレスポンシブ時の大きめのパディング。
global.breakpoints.medium.value1536次の基本ブレークポイント境界。

基本の色とコントロール

ソース
名前 / ルール値 / 設定用途
global.colors.brand#7D4CDB HPE グリーンではなく、Grommet の標準ブランドカラー。
global.colors.focus#6FFFB0 標準のフォーカスアクセント。
global.colors.text.light#444444 ライトテーマの本文テキスト。
global.colors.text.dark#f8f8f8 ダークテーマの本文テキスト。
global.colors.background-front.light#FFFFFF 手前側の明るいサーフェス。
global.colors.background-front.dark#444444 手前側の暗いサーフェス。
global.control.border.radius4pxコントロールの基本角丸。
global.control.border.width1pxコントロールの基本ボーダー。

フォームとフィールドの仕様

ソース
名前 / ルール値 / 設定用途
Form.valueObject keyed by field name制御対象の予約オブジェクトを1つ使用してください。
Form.onChange(value) => {}DOM イベントではなく、更新済みのオブジェクトを受け取ります。
Form.onSubmit({ value, touched }) => {}フォームで現在受け入れられている値を読み取ります。
Form.validateblur | submit | change入力検証を実行するタイミングを選択します。
Form.errorsObject keyed like valueリモートまたはアプリケーションのエラーを各フィールドに関連付けます。

Select と範囲入力の連携

ソース
名前 / ルール値 / 設定用途
Select.optionsString array or object array値の形式をシンプルに保つため、この例では文字列を使用します。
Select.onChange({ value, option }) => {}Select では event.target.value を読み取らないでください。
Select.valueKey{ key, reduce } for object optionsreduce はオブジェクト全体ではなく、キーに対応する値を返します。
Select.labelKeyProperty name or functionオブジェクト形式の選択肢に表示ラベルを指定します。
Select.onSearchFunction; enables search input必要に応じて、アプリケーション側の絞り込み処理を指定します。

Meter の構成

ソース
名前 / ルール値 / 設定用途
valuenumber表示する量です。values を指定すると無視されます。
maxnumber or numeric string利用可能な容量の合計です。値をパーセントと取り違えないでください。
typebar | circle | pie | semicircle利用状況の概要には circle を使用します。
colorColor identifier単一の値に対応します。
a11yTitlestring指標と分母を説明します。
sizeNamed size or CSS dimension利用可能な幅の内側にリングを収めます。
03

HPE Grommet デザインシステム完全ガイド

実際のインターフェースで、このデザインシステムを選び、適用し、レビューするための実践ガイドです。

DESIGN-hpe-grommet.md

詳しいガイダンス、実装の出発点、ソースへのリンクをまとめています。

ガイドをダウンロード

HPE Grommet デザインシステム:Grommet の基本テーマと HPE テーマ

紫色を HPE のデザイントークンとして表示しない

Grommet は HPE に関連する React フレームワークで、独自の基本テーマを備えています。別途提供される grommet-theme-hpe パッケージは、HPE のデザインスタイルを採用するアプリケーション向けに hpe をエクスポートします。このリファレンスでは、基本フレームワークと、テーマを明示的に設定した例を解説します。ブランドカラーの紫色とフォーカスカラーのミントグリーンは基本テーマに由来し、現在の HPE ブランドカラーとして示しているものではありません。

この OpenDesign ガイドから

関連する仕様を確認する

アプリケーション側で明示的に指定するシンプルなテーマ

この設定では、アプリケーションで選択したフォントとして Arial を指定し、ドキュメントに記載されている基本テーマのブランドカラーとフォーカスカラーを再指定しています。それ以外のコンポーネントのルールは、すべて Grommet から継承します。実際の HPE 製品では、代わりに承認済みの hpe テーマを渡すことができます。その場合、テーマの上書きによって基本値が変わる可能性があるため、ここに記載した基本値と照らし合わせて、適用後の余白とタイポグラフィを確認してください。

関連する仕様を確認する

HPE Grommet デザインシステム:テーマのスケールはブレークポイントで変わることがある

名前付きの値にはレスポンシブな意図がある

基本ジェネレーターは 24 ピクセルから始まります。デフォルトでは中サイズの端の余白は 24px ですが、小さいブレークポイントでは中サイズが 12px に変わります。そのため、レスポンシブな padding を使う Box は、JSX に medium と記述されていても縮小することがあります。スケールとブレークポイントの上書きをあわせて確認し、medium が常に 24 ピクセルだと断言しないでください。

関連する仕様を確認する

実際のレイアウトには Box を使う

このプランナーでは、ページに column の Box を使い、フォームと容量の概要にはレスポンシブな row/column の Box を使います。フォームは伸縮し、概要には実用的な最小幅が保たれます。小さな画面では、ドキュメント上の順序に沿って、グラフがコントロールの後に表示されます。

関連する仕様を確認する

HPE Grommet デザインシステム:読みやすさを意識した基準値を明示する

フォントサイズと行の高さは別々のテーマ値

基本ジェネレーターは、間隔の入力値から 18 ピクセルのフォントサイズと 24 ピクセルの行の高さを導きます。この例では、その組み合わせと Arial を明示的に使用し、独自のブランドフォントをダウンロードしたかのような印象を与えないようにしています。見出しには Grommet の Heading、本文には Text を使うことで、CSS 内にコンポーネントの内部実装を再現せずに、テーマにそれぞれの役割を解決させます。

関連する仕様を確認する

HPE Grommet デザインシステム:予約情報を1つのオブジェクトで管理する

name でフィールドと値を紐付ける

フォーム全体の連携には Form を使います。制御するパターンでは、value と onChange を呼び出し元が管理します。各 FormField と子入力要素に設定する name は、対応する値のキーを指定します。この予約情報オブジェクトには name と pool が含まれています。容量スライダーは、送信前に図をリアルタイムで更新するため、別の数値として保持します。

関連する仕様を確認する

予約名を検証する

関連する仕様を確認する

HPE Grommet デザインシステム:Select のイベント形式は独自

シンプルなケースでは文字列を使う

サンプルの pool オプションは Production と Development です。そのため、制御対象の値は文字列になります。オブジェクト形式のオプションに切り替える場合は、labelKey と、必要に応じて reduce を使った valueKey を設定し、その選択に合わせて保存する値を統一してください。Select の onChange が公開するのは value/option オブジェクトで、ネイティブの range input イベントとは異なります。

関連する仕様を確認する

検索とオプションの読み込みはアプリケーション側で処理する

onSearch が指定されている場合、Select に検索フィールドが表示されます。ただし、この prop を指定しても、すべての option が自動的に絞り込まれるわけではありません。検索を閉じたりクリアしたりしたときに元に戻せるよう、絞り込み前のデータは別に保持してください。2つの候補プールを使うサンプルでは、意図的に検索を省略しています。

関連する仕様を確認する

HPE Grommet デザインシステム:Meter には単位と分母が必要

意味がわからない割合ではなく、容量を表す

Meter には、予測使用量と max=100 を渡します。この例示用プランナーでは、サンプルの pool ですでに35単位が使用されており、新たな予約量は5から60まで指定できます。デモの分母が100であるため、割合と数値が偶然一致します。合計容量が変わってもデータの契約を維持できるよう、コードでは max を明示的に渡しています。

関連する仕様を確認する

グラフとテキストの値を連動させる

円形グラフ、予測使用量のラベル、残りの容量は、同じスライダー値から算出します。ネイティブの RangeInput は DOM イベントを返すため、計算の前に event.target.value を Number に変換してください。変換しないと、文字列に 35 を加算して、見た目はもっともらしくても誤った合計になることがあります。

関連する仕様を確認する

HPE Grommet デザインシステム:ドキュメントのスクロールと狭い画面での構成

このページには full="min" を使う

Grommet の full=true は、ビューポートと内部スクロールをアプリケーション側で管理する場合を想定しています。このプランナーでは full="min" を使い、ドキュメントが伸びるようにします。これにより、スマートフォンでフォームや検証メッセージが固定高さのシェル内に閉じ込められるのを防げます。

関連する仕様を確認する

Grommet 内で ResponsiveContext を読み取る

子コンポーネントで現在のコンテキストを読み取り、小さい画面では column、それ以外では row を選択します。テーマに応じたコンテキストを取得するには、その子コンポーネントをプロバイダーで囲む必要があります。利用可能な幅が狭い場合、フォールバックのレイアウトは自然な縦並びになります。

  • フィールドのラベルは入力欄の上に配置します。
  • 容量の概要は、ソース上でコントロールの後に配置します。
  • 検証テキストを隠さずに、アクション行を折り返せるようにします。

関連する仕様を確認する

HPE Grommet デザインシステム:ラベル、エラー、測定値を関連付ける

数値表示には必ず意味を添える

範囲コントロールには、常に表示されるラベルと単位を付けます。円形グラフの a11yTitle には、予測使用量と総容量を含めます。色付きの弧だけに情報を頼らないよう、近くのテキストにも同じ数値を表示します。エラーテキストでは予約に関する問題を具体的に示し、該当するフィールドの近くに表示します。

関連する仕様を確認する

この画面内での結果を明示する

  1. 名前を空のまま送信し、必須項目のエラーが表示されることを確認してください。
  2. 名前を入力し、プールを選択して割り当てを調整してください。
  3. プランを準備し、ローカルのスナップショットに選択したプールと数値の単位が含まれていることを確認してください。

関連する仕様を確認する

HPE Grommet デザインシステム Grommetの構成一式をマウントする

フレームワークとスタイル用ピア依存パッケージをインストールする

クライアントプロジェクトに、styled-componentsとReactランタイムとともにgrommetをインストールします。Grommetをマウントし、その後にResponsiveContextを利用する子要素、制御されたForm、FormField/TextInput/Select、RangeInput、Meterを配置します。Buttonではchildrenではなくlabelを使い、デフォルトのラベルスタイル付きボタンの動作を明示してください。

関連する仕様を確認する

HPE Grommet デザインシステムのコンポーネント例

完全なスタンドアロンのインタラクティブ見本

ドキュメント全体をindex.htmlとして保存し、ブラウザーで開いてください。ベースGrommetの寸法と色をHTML/CSSに基づいて独自に解釈し、Arialフォントを明示的に選択しています。別途提供されるHPEテーマとは異なります。

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>

コードリファレンス

  • 容量の計算には、表示されているサンプルプールを使用します。スタンドアロンのレイアウトは独自のHTMLに基づきます。ネイティブの例では、別途提供されるHPEテーマではなくベースGrommetを選択しています。

完全なネイティブ実装のエントリ

セットアップの完全な実装を、焦点を絞った API の解説とあわせてここにまとめています。セットアップに記載されたパッケージとビルドの前提条件に従ってください。

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>);

コードリファレンス

  • ルート要素を持つプロジェクト向けのクライアント側main.jsxです。ベースGrommetに、アプリケーションのフォントとブランドの上書きを明示的に追加しています。HPEテーマが暗黙に適用されることはありません。APIは公式ドキュメントと照合済みです。この環境ではネイティブのコンパイルを検証していません。

HPEブランドテーマに意図的に切り替える

そのデザインを目標とする場合に限り、別パッケージを使用してください。値はインストール済みのリリースに照らして再確認してください。

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>

コードリファレンス

  • 上の参照表はベーステーマについてのものであり、この任意の上書きには適用されません。

Selectのオブジェクト値

プールIDを保存し、ラベルを表示します。

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

コードリファレンス

  • 呼び出し元のコンポーネントでuseStateを使ってpoolId/setPoolIdを宣言します。
  • reduceを有効にすると、保存される値はオブジェクトではなくIDになります。
04

HPE Grommet デザインシステムのエージェント設定

実装の出発点

ルート要素を持つプロジェクト向けのクライアント側main.jsxです。ベースGrommetに、アプリケーションのフォントとブランドの上書きを明示的に追加しています。HPEテーマが暗黙に適用されることはありません。APIは公式ドキュメントと照合済みです。この環境ではネイティブのコンパイルを検証していません。

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>);

あなたのプロジェクト向けプロンプト

AI エージェント用プロンプト
提供されたベースGrommetの予約プランナーを、制御されたForm、名前付きFormField、Select、RangeInput、明示的なmaxを指定したMeterで実装します。ベーステーマの値とgrommet-theme-hpeの値を区別してください。スライダーの値を数値に変換して単位を表示し、名前を検証したうえで、ローカルのプランスナップショットのみを生成します。
05

HPE Grommet デザインシステムの参照元と対象範囲

ベースGrommetを独自に実装するための参考資料です。HPEブランドテーマの採用例は別途示します。容量の数値は架空のローカルデータであり、インフラストラクチャの指標でもプロビジョニングでもありません。