# Siemens iXデザインシステム

## Siemens iXデザインシステムのインターフェースプレビュー

架空のイベントを絞り込み、設備のメモを確認し、元の重大度を表示したままレコードをローカルで確認済みにできます。

## Siemens iXデザインシステムの設計リファレンス

公開中のiXドキュメントと、公式mainブランチのコンポーネントAPIスナップショットに基づいています。以下のカラー項目はセマンティックロールであり、固定の16進カラー値を独自に設定したものではありません。インストールするパッケージのバージョンは、すべて整合するよう固定してください。オフラインのサンプルでは、独自のパレットと寸法を使用していることを明示しています。

### テーマとパッケージの導入

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| Core package | @siemens/ix | Webコンポーネントとグローバルスタイルシート。 |
| React wrappers | @siemens/ix-react | Reactコンポーネントの統合。 |
| Icons | @siemens/ix-icons | 公式アイコンの依存関係。 |
| data-ix-theme | classic | ドキュメントレベルのテーマセレクター。 |
| data-ix-color-schema | dark \| light \| system | 正確な属性表記はスキーマに準拠します。 |
| Global CSS | @siemens/ix/dist/siemens-ix/siemens-ix.css | アプリケーションのエントリーポイントで一度だけインポートします。 |
### テキストと背景のロール

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| --theme-color-primary | Primary action role | 選択したテーマに応じて解決されます。 |
| --theme-color-std-text | Default reading color | イベントのタイトルと本文。 |
| --theme-color-soft-text | Secondary reading color | 時刻とアセットのメタデータ。 |
| --theme-color-weak-text | Disabled reading color | 重要な補足情報には使用しないでください。 |
| --theme-color-alarm-text | Alarm text role | エラーテキストに前景色が必要な場合に使用します。 |
| --theme-color-component-1 | Interactive component fill | 半透明のため、下地となる背景によって見え方が変わります。 |
| color-0 | Transparent background role | その他の背景レベルは不透明です。 |
### 重大度の語彙

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| Alarm | Error, invalid or dangerous condition | 色付きのマーカーには、テキストラベルを必ず添えてください。 |
| Critical | Between alarm and warning | 独立した意味を表します。装飾のための別の色合いではありません。 |
| Warning | Condition requiring attention | 暗黙のうちにアラームへ格上げしないでください。 |
| Success | Positive outcome | 確認操作によって、アラームが解決したとは限りません。 |
| Info | Informational condition | 無効化されたコンテンツとは区別してください。 |
| Neutral | Unclassified neutral condition | ステータスの判断が当てはまらない場合に使用できます。 |
### 境界の階層

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| --theme-color-hard-bdr | Strong solid boundary | 明確に区切る境界。 |
| --theme-color-std-bdr | Standard control boundary | 入力または選択用のコントロール。 |
| --theme-color-soft-bdr | Card boundary | ノートのインスペクターに使用します。 |
| --theme-color-weak-bdr | Region boundary | 主要な領域を控えめに区切ります。 |
| --theme-color-x-weak-bdr | Very subtle boundary | 目立たない区分線。 |
| --theme-primary-bdr-1 | Complete border value | 色としてではなく、border: var(--theme-primary-bdr-1)として使用してください。 |
### タイポグラフィの役割

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| Headings | H1 through H6 | ドキュメントの階層 |
| Body | Multiline reading | 確認メモと説明。 |
| Label | Single-line component text | 短いコントロールとフィールド。 |
| Display | Single-line KPI presentation | 件数。段落には使用しません。 |
| Code | Code and technical syntax | 適切な場合は、APIの例や識別子に使用します。 |
### Event List APIのスナップショット

| 名前 / ルール | 値 / 設定 | 用途 |
| --- | --- | --- |
| IxEventList.itemHeight | S \| L \| number; default S | サンプルのタイトルとメタデータにはLを使用します。 |
| IxEventList.compact | boolean; default false | コンパクトモードを明示的に選択します。 |
| IxEventList.chevron | boolean; default false | ナビゲーションを示す要素を表示します。 |
| IxEventList.animated | boolean; default false | 静的なログでは不要な動きを避けます。 |
| IxEventListItem.itemColor | string | テーマCSSのカラー表現。 |
| IxEventListItem.selected | boolean; default false | 選択したレコードIDによって制御されます。 |
| IxEventListItem.variant | outline \| filled; default outline | 表示方法の選択。 |
| IxEventListItem.disabled | boolean; default false | 操作できない場合に限り、無効にしてください。 |
| itemClick | Custom event | ReactラッパーのonItemClickでレコードを選択します。 |
## Siemens iXデザインシステム完全ガイド

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

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

## Siemens iXデザインシステム：確認状態と解決状態を明確に区別した産業用イベント

### 機械制御パネルではなく、ノートブック

> 動作するサンプルは、架空の設備ノートブックです。3件のレコードは元の重大度を保持し、別個のローカル確認状態で、読者が確認した項目を記録します。この区別は構成の要です。行の選択、メモの閲覧、物理的な状態の解決は、それぞれ異なる操作です。プレビューで実装しているのは最初の2つであり、実際の機器を制御するものではありません。

選択状態、重大度マーカー、シェブロンによって、繰り返し表示されるレコードをナビゲーション可能な一覧として読み取りやすくできるため、装飾的なカードよりEvent Listが適しています。詳細な文章はインスペクターに表示し、行の外に分けて配置します。偽のテレメトリストリームや、アラームが解除されたと偽る成功トーストはありません。

関連する仕様を確認する

## Siemens iXデザインシステム：運用上の意味を伝えるカラーの役割

### マーカーには、読みやすい色のラベルを添える

カラーシステムでは、不透明な背景レイヤーと半透明のコンポーネント塗りつぶしを区別します。コンポーネントの塗りつぶしは、その下にある背景と切り離して評価できません。ネイティブコードではスクリーンショットの16進カラー値を各行にコピーするのではなく、実際のテーマ変数を使用してください。

StandardとSoftのテキストは、それぞれ異なる読み取り優先度に対応します。Weakテキストは無効なコンテンツ向けです。そのため、調査に必要なタイムスタンプを、理由なくこのロールに割り当てないでください。エラーの前景色には、ステータスの塗りつぶしをそのまま再利用するのではなく、専用のアラームテキストロールを使用するのが適切です。

- 色付きの境界マーカーの横に「アラーム」「警告」「情報」の文字を表示します。

- ローカルで確認済みにした後も、アラームマーカーを残してください。確認しても、元の状態は変わりません。

- 選択スタイルはナビゲーション状態に限定し、重大度と選択状態を区別できるようにしてください。

関連する仕様を確認する

## Siemens iX デザインシステムのタイポグラフィでメモとラベルを区別する

### 推測したピクセル値ではなく、フォーマットを使う

iXでは、タイポグラフィを見出し、本文、ラベル、ディスプレイ、コードに分類しています。点検メモには複数行に対応する本文のスタイルが必要です。大きな数値にはディスプレイ、短いフィルターラベルにはラベルのカテゴリが適しています。イベントの説明全体を大きく表示するために、ディスプレイのスタイルを流用しないでください。

ドキュメントに記載された ix-typography format="h3" の例を使えば、実装方法を具体的に確認できます。同等の Sass の typography-h3 mixin を使うと、フォントルールを再現せずに独自の要素へ適用できます。プレビューでは意図的にシステムフォントをフォールバックとして使い、アプリケーション側で文字サイズを設定しています。これらの値は、Siemensの公式トークンではありません。

関連する仕様を確認する

## Siemens iX デザインシステムのイベントリストの選択と密度

### 項目の識別と表示を別々に制御する

APIのスナップショットでは、itemHeight に S、L、または数値を指定できます。この例では L を選び、compact は既定値の false のままにして、chevron を有効にしています。ローカライズ後にタイトルが長くなる本番環境のログでは、サンプルのように各レコードが収まると決めつけず、折り返しを考慮して高さを検証してください。

各項目にはIDの比較結果を selected として渡し、ラッパーの onItemClick ハンドラーを通じて itemClick を送信します。インスペクターも同じIDを参照します。これにより、選択表示と詳細パネルが気づかないうちに別のレコードを指す事態を防げます。フィルターを変更したときは、選択中のIDを明示的にクリアします。

関連する仕様を確認する

## Siemens iX デザインシステムで狭い画面にも対応するインスペクター

### 詳細をイベント一覧の下に移動する

この例の2対1のグリッドはアプリケーション側のレイアウトであり、公開されているiXのグリッドトークンではありません。画面が狭い場合は1列にし、インスペクターより先にレコードが表示される順序を保ちます。インスペクター内にスクロール領域を入れ子にしないため、ページ全体を自然にスクロールできます。

イベントのメタデータは、読みやすいセカンダリカラーを使って2行目に表示します。フィルターは繰り返し表示される行の外に置き、レコードが変わっても位置を移動させません。ステータスの段落では、フィルターを変更したりタイトルを置き換えたりせずに、選択中のレコードに対するローカルな確認結果を示します。

関連する仕様を確認する

## Siemens iX デザインシステムで色やポインターの精度に頼らず状態を伝える

### テキスト、キーボード操作、フォーカス

オフラインプレビューでは、レコードにネイティブのボタン、重要度の選択にラベル付きのセレクトボックス、確認結果の通知に aria-live ステータス領域を使用します。EnterキーとSpaceキーでレコードを選択できます。ネイティブライブラリの構成では、Event Listのラッパーを使用します。カスタムのフォーカス設定を採用する前に、インストール済みバージョンのキーボード操作と支援技術への対応をテストしてください。

ラベルでは、「アラームを解決」ではなく「ローカルで確認済みにする」という業務上の違いを明確にします。確認済みの状態は、確認操作を無効にする場合も画面上に表示します。状態の意味を色だけに頼って伝えないでください。また、フィルターを変更した際に、別のカテゴリに隠れたまま操作できない古い選択状態を残さないようにします。

関連する仕様を確認する

## Siemens iX デザインシステムにパッケージ、テーマ、アプリケーションのローカル状態を組み込む

### 段階を踏んで連携する

セットアップのコードには、パッケージのインポート、ドキュメントのテーマ属性、実際のコンポーネントプロパティ、Reactの状態全体、アプリケーションのCSSが含まれています。テーマセレクターには、似た名前の独自属性ではなく data-ix-color-schema を使います。アプリケーションでは、インストールする core、ラッパー、アイコンのバージョンに互換性があることを確認してください。

ビジュアルのサンプルは、このガイドの操作ルールを表現したオフラインのHTML/CSSです。濃紺の配色、24ピクセルの余白、模式的な設備のイラストは、アプリケーション独自の選択です。ネイティブの見た目を正確に確認するには、公式スタイルシートを使って別のReactの例を実行し、計算済みのテーマ値を調べてください。

1. ViteのReactスキャフォールドに core、Reactのラッパー、アイコンをインストールし、生成されたルート要素はそのまま使います。

2. main.jsx と style.css を用意されたファイルに置き換え、ドキュメントで classic と dark、light、system のいずれかを選択します。

3. レコードを選択して確認済みにし、一覧をフィルタリングします。非表示の選択が解除され、重要度が保持されることを確認してください。

関連する仕様を確認する

## Siemens iX デザインシステムのコンポーネント例

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

ドキュメント全体を index.html として保存し、ブラウザーで開きます。独立したオフラインのHTML/CSSによる表現です。独自の配色、システムフォント、アプリケーション側の寸法を使用しており、ネイティブのiXランタイムではありません。

```
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Equipment event notebook — iX interpretation</title><style>
*{box-sizing:border-box}body{margin:0;background:#000028;color:#f3f3fa;font:15px/1.5 Arial,sans-serif}button,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:3px solid #00cccc;outline-offset:3px}.app{max-width:1200px;margin:auto;padding:28px}.top{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #55556b;padding-bottom:18px}.brand{letter-spacing:.12em;color:#00cccc}.dim{color:#b6b6c8}h1{font-size:30px;font-weight:500;line-height:1.2;margin:20px 0 8px}h2{font-size:21px;font-weight:500;margin:0 0 12px}.banner{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;align-items:center;padding-bottom:24px}.schematic{height:140px;position:relative;display:flex;align-items:center;justify-content:space-evenly;border-bottom:2px solid #77788e;background:linear-gradient(transparent 23px,#23233c 24px);background-size:24px 24px}.schematic:before{content:'';position:absolute;left:10%;right:10%;top:68px;height:5px;background:#666780}.unit{position:relative;width:76px;height:76px;border:2px solid #b6b6c8;background:#141432;display:grid;place-content:center;text-align:center}.unit:first-child{border-color:#ff8da5}.unit span{color:#b6b6c8;font:12px monospace}.toolbar{display:flex;align-items:center;gap:16px;margin:10px 0 18px}select{background:#23233c;border:1px solid #8b8b9e;padding:8px 28px 8px 10px}.layout{display:grid;grid-template-columns:1.6fr 1fr;gap:24px}.event{width:100%;display:grid;grid-template-columns:70px 1fr 20px;gap:14px;text-align:left;align-items:center;padding:18px 14px;border:1px solid #55556b;border-left:4px solid var(--severity);background:#141432;margin-bottom:10px}.event:hover{background:#292944}.event[aria-pressed=true]{outline:2px solid #00cccc;outline-offset:1px}.event strong{font-size:15px;font-weight:600;display:block}.event small{display:block;color:#c0c0cf;margin-top:4px}.severity{font-size:11px;letter-spacing:.06em}.inspector{padding:20px;background:#23233c;border-top:3px solid #00cccc;min-height:290px}.meta{font:12px monospace;color:#b6b6c8}.tag{font-size:12px;border:1px solid #6c6c80;padding:3px 8px;display:inline-block;margin:10px 0}.action{background:#00cccc;border:0;color:#000028;padding:11px 16px;margin-top:10px}.action:disabled{background:#515168;color:#e0e0e8;cursor:default}.status{min-height:48px;color:#b7eeee;font-size:13px}.note{border-top:1px solid #55556b;margin-top:24px;padding-top:16px;color:#b6b6c8;font-size:12px}@media(max-width:650px){.app{padding:18px}.top{font-size:12px}.banner,.layout{grid-template-columns:1fr}.banner{gap:8px}.schematic{height:115px}.schematic:before{top:56px}.unit{height:60px;width:65px}h1{font-size:26px}.event{grid-template-columns:60px 1fr 10px;gap:8px}.toolbar{flex-wrap:wrap}}
</style><main class="app"><header class="top"><b class="brand">EVENT NOTEBOOK</b><span class="dim">Sample plant / offline</span></header><div class="banner"><div><h1>Inspect the event.<br>Keep its meaning.</h1><p class="dim">Review equipment notes without changing their original severity.</p></div><div class="schematic" aria-label="Original schematic of three fictional equipment units" role="img"><div class="unit">A<span>PUMP</span></div><div class="unit">B<span>PUMP</span></div><div class="unit">C<span>LINE</span></div></div></div><div class="toolbar"><label for="severity">Severity</label><select id="severity"><option value="all">All events</option><option value="alarm">Alarm</option><option value="warning">Warning</option><option value="info">Info</option></select><span class="dim" id="count"></span></div><div class="layout"><section aria-label="Event records" id="events"></section><aside class="inspector" aria-label="Selected event" id="detail"></aside></div><p class="note">Independent HTML interpretation of Siemens iX interaction rules. Original colors, dimensions and fictional equipment records. Local review does not acknowledge or resolve a live alarm.</p></main><script>
const data=[{id:'E-014',severity:'alarm',color:'#ff8da5',title:'Cooling flow below sample threshold',asset:'Pump A',time:'09:42',note:'Inspect the cooling circuit before considering a reset. This fictional record remains an alarm after you mark the note reviewed.'},{id:'E-015',severity:'warning',color:'#ffce6b',title:'Filter service approaching',asset:'Pump B',time:'09:38',note:'Schedule a filter inspection. Reviewing this notebook entry does not schedule maintenance or alter equipment.'},{id:'E-016',severity:'info',color:'#65cfff',title:'Inspection checklist attached',asset:'Line C',time:'09:30',note:'A fictional checklist is available for review. This sample displays the record; it does not connect to a document service.'}];let selected='E-014';const reviewed=new Set();function render(){let visible=data.filter(r=>severity.value==='all'||r.severity===severity.value);document.querySelector('#count').textContent=visible.length+' event'+(visible.length===1?'':'s');events.innerHTML=visible.map(r=>`<button class="event" id="row-${r.id}" style="--severity:${r.color}" aria-pressed="${selected===r.id}" data-id="${r.id}"><span class="severity">${r.severity.toUpperCase()}</span><span><strong>${r.title}</strong><small>${r.asset} · ${r.time}${reviewed.has(r.id)?' · Reviewed locally':''}</small></span><span aria-hidden="true">›</span></button>`).join('');const r=visible.find(r=>r.id===selected);detail.innerHTML=r?`<div class="meta">${r.id} / ${r.asset}</div><h2>${r.title}</h2><span class="tag">${r.severity.toUpperCase()} · source condition unchanged</span><p>${r.note}</p><button class="action" id="review" ${reviewed.has(r.id)?'disabled':''}>Mark reviewed locally</button><p class="status" role="status">${reviewed.has(r.id)?'Reviewed in this browser session. Source severity is unchanged.':''}</p>`:'<h2>Select an event</h2><p class="dim">Choose a record to inspect its note.</p>';events.querySelectorAll('button').forEach(b=>b.onclick=()=>{selected=b.dataset.id;render();document.getElementById('row-'+selected).focus()});if(r&&!reviewed.has(r.id))document.querySelector('#review').onclick=()=>{reviewed.add(r.id);render()}}const severity=document.querySelector('#severity'),events=document.querySelector('#events'),detail=document.querySelector('#detail');severity.onchange=()=>{selected='';render()};render();
</script></html>
```

コードリファレンス

- イベントを確認済みにしても、重要度は変わらず、設備アラームも解決されません。ネイティブのiXの項目では、Event Listの選択とテーマ属性を別途紹介しています。

### 独立して制御できるインスペクターパネル付きのイベントリスト

選択中のIDをもとに項目の強調表示と詳細を切り替えます。確認操作で記録するのはローカルなノートの状態だけです。元の重要度はそのまま表示されます。

```
// In a Vite React project: npm install @siemens/ix @siemens/ix-react @siemens/ix-icons
// src/main.jsx
import React, {useState} from 'react';
import {createRoot} from 'react-dom/client';
import {IxEventList, IxEventListItem, IxTypography} from '@siemens/ix-react';
import '@siemens/ix/dist/siemens-ix/siemens-ix.css';
import './style.css';
document.documentElement.dataset.ixTheme='classic';
document.documentElement.dataset.ixColorSchema='dark';
const records=[
 {id:'E-014',severity:'alarm',title:'Cooling flow below sample threshold',asset:'Pump A',time:'09:42',note:'Original demonstration record: inspect the cooling circuit before considering a reset.'},
 {id:'E-015',severity:'warning',title:'Filter service approaching',asset:'Pump B',time:'09:38',note:'Original demonstration record: schedule a filter inspection.'},
 {id:'E-016',severity:'info',title:'Inspection checklist attached',asset:'Line C',time:'09:30',note:'Original demonstration record: a checklist is available for review.'}
];
function App(){
 const [filter,setFilter]=useState('all'),[selected,setSelected]=useState('E-014'),[reviewed,setReviewed]=useState([]);
 const visible=records.filter(r=>filter==='all'||r.severity===filter);
 const record=visible.find(r=>r.id===selected);
 return <main><h1>Equipment event notebook</h1><p>Fictional records. Reviewing an entry does not control equipment or acknowledge a live alarm.</p>
 <label htmlFor="severity">Severity</label><select id="severity" value={filter} onChange={e=>{setFilter(e.target.value);setSelected('')}}>
 <option value="all">All events</option><option value="alarm">Alarm</option><option value="warning">Warning</option><option value="info">Info</option></select>
 <div className="workspace"><section aria-label="Event records"><IxEventList itemHeight="L" chevron>
 {visible.map(r=><IxEventListItem key={r.id} selected={selected===r.id} itemColor={`var(--theme-color-${r.severity})`} onItemClick={()=>setSelected(r.id)}>
 <div className="record"><strong>{r.title}</strong><span>{r.severity.toUpperCase()} · {r.asset} · {r.time}{reviewed.includes(r.id)?' · Reviewed locally':''}</span></div>
 </IxEventListItem>)}
 </IxEventList></section><aside aria-label="Selected event">
 {record?<><IxTypography format="h3">{record.id} / {record.asset}</IxTypography><p>{record.note}</p>
 <button type="button" onClick={()=>setReviewed(a=>a.includes(record.id)?a:[...a,record.id])} disabled={reviewed.includes(record.id)}>Mark reviewed locally</button>
 <p role="status">{reviewed.includes(record.id)?'Reviewed in this browser session. Source severity is unchanged.':''}</p></>:<p>Select an event to inspect its record.</p>}
 </aside></div></main>
}
createRoot(document.getElementById('root')).render(<App/>);

/* src/style.css — custom dimensions are application choices */
main{max-width:72rem;margin:auto;padding:24px;color:var(--theme-color-std-text)}
.workspace{display:grid;grid-template-columns:2fr 1fr;gap:24px;margin-top:24px}
.workspace>*{min-width:0}aside{padding:20px;border:1px solid var(--theme-color-soft-bdr)}
.record{display:grid;gap:4px;padding:8px;white-space:normal;overflow-wrap:anywhere}
.record span{color:var(--theme-color-soft-text)}
button,select{font:inherit;padding:10px;background:var(--theme-color-component-1);color:var(--theme-color-std-text);border:1px solid var(--theme-color-std-bdr)}
button:focus-visible,select:focus-visible{outline:2px solid var(--theme-color-primary);outline-offset:3px}
@media(max-width:700px){.workspace{grid-template-columns:1fr}}
```

コードリファレンス

- 重要度のマーカーには itemColor を使い、読みやすいテキストの重要度ラベルも表示します。

- 重要度フィルターを変更すると選択が解除され、非表示のイベントについてインスペクターが詳細を表示し続けるのを防げます。

- ローカルの確認ボタンはアプリケーションのロジックです。iXに存在しないアラーム確認用のAPIを作り出すものではありません。

### フォントサイズを固定せず、テーマに応じたタイポグラフィを使う

テーマをまたいで文字サイズを固定するのではなく、ドキュメントに記載された format プロパティまたは Sass mixin を使います。

```
<ix-typography format="h3">Inspection record</ix-typography>

@import "@siemens/ix/scss/mixins/font";
.inspection-title { @include typography-h3; }
```

コードリファレンス

- プレビューではシステムフォントをフォールバックとして使用し、Siemensのブランドフォントは配布していません。

## Siemens iX デザインシステムのAIエージェント設定

### 実装の出発点

既存のルート要素があるViteのReactスキャフォールドで、main.jsx と style.css を完成させます。公式のラッパー、CSSのインポート、Event Listのプロパティはドキュメントに記載されていますが、ここではネイティブパッケージのコンパイルを実行していません。埋め込みプレビューは、独立したオフラインの表現です。

```
// In a Vite React project: npm install @siemens/ix @siemens/ix-react @siemens/ix-icons
// src/main.jsx
import React, {useState} from 'react';
import {createRoot} from 'react-dom/client';
import {IxEventList, IxEventListItem, IxTypography} from '@siemens/ix-react';
import '@siemens/ix/dist/siemens-ix/siemens-ix.css';
import './style.css';
document.documentElement.dataset.ixTheme='classic';
document.documentElement.dataset.ixColorSchema='dark';
const records=[
 {id:'E-014',severity:'alarm',title:'Cooling flow below sample threshold',asset:'Pump A',time:'09:42',note:'Original demonstration record: inspect the cooling circuit before considering a reset.'},
 {id:'E-015',severity:'warning',title:'Filter service approaching',asset:'Pump B',time:'09:38',note:'Original demonstration record: schedule a filter inspection.'},
 {id:'E-016',severity:'info',title:'Inspection checklist attached',asset:'Line C',time:'09:30',note:'Original demonstration record: a checklist is available for review.'}
];
function App(){
 const [filter,setFilter]=useState('all'),[selected,setSelected]=useState('E-014'),[reviewed,setReviewed]=useState([]);
 const visible=records.filter(r=>filter==='all'||r.severity===filter);
 const record=visible.find(r=>r.id===selected);
 return <main><h1>Equipment event notebook</h1><p>Fictional records. Reviewing an entry does not control equipment or acknowledge a live alarm.</p>
 <label htmlFor="severity">Severity</label><select id="severity" value={filter} onChange={e=>{setFilter(e.target.value);setSelected('')}}>
 <option value="all">All events</option><option value="alarm">Alarm</option><option value="warning">Warning</option><option value="info">Info</option></select>
 <div className="workspace"><section aria-label="Event records"><IxEventList itemHeight="L" chevron>
 {visible.map(r=><IxEventListItem key={r.id} selected={selected===r.id} itemColor={`var(--theme-color-${r.severity})`} onItemClick={()=>setSelected(r.id)}>
 <div className="record"><strong>{r.title}</strong><span>{r.severity.toUpperCase()} · {r.asset} · {r.time}{reviewed.includes(r.id)?' · Reviewed locally':''}</span></div>
 </IxEventListItem>)}
 </IxEventList></section><aside aria-label="Selected event">
 {record?<><IxTypography format="h3">{record.id} / {record.asset}</IxTypography><p>{record.note}</p>
 <button type="button" onClick={()=>setReviewed(a=>a.includes(record.id)?a:[...a,record.id])} disabled={reviewed.includes(record.id)}>Mark reviewed locally</button>
 <p role="status">{reviewed.includes(record.id)?'Reviewed in this browser session. Source severity is unchanged.':''}</p></>:<p>Select an event to inspect its record.</p>}
 </aside></div></main>
}
createRoot(document.getElementById('root')).render(<App/>);

/* src/style.css — custom dimensions are application choices */
main{max-width:72rem;margin:auto;padding:24px;color:var(--theme-color-std-text)}
.workspace{display:grid;grid-template-columns:2fr 1fr;gap:24px;margin-top:24px}
.workspace>*{min-width:0}aside{padding:20px;border:1px solid var(--theme-color-soft-bdr)}
.record{display:grid;gap:4px;padding:8px;white-space:normal;overflow-wrap:anywhere}
.record span{color:var(--theme-color-soft-text)}
button,select{font:inherit;padding:10px;background:var(--theme-color-component-1);color:var(--theme-color-std-text);border:1px solid var(--theme-color-std-bdr)}
button:focus-visible,select:focus-visible{outline:2px solid var(--theme-color-primary);outline-offset:3px}
@media(max-width:700px){.workspace{grid-template-columns:1fr}}
```

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

```
検証済みのEvent Listプロパティと、このガイドに記載されたドキュメントのテーマ属性を使って、Siemens iXイベントノートを作成してください。重要度、選択、ローカルな確認状態はそれぞれ独立して保持します。ネイティブ版ではテーマのセマンティックカラーを使用してください。ノート上の操作で物理的なアラームが解決されるような表現は避けてください。フィルターにはラベルを付け、行をキーボードで操作できるようにし、画面が狭い場合はインスペクターを下に配置してください。
```

## Siemens iX デザインシステムの情報源と対象範囲

独立したOpenDesignガイド。イベントデータと機器のイラストは架空のものです。プレビューのスタイルは独自の解釈であり、別のReactの例では、ドキュメントに記載されたiX APIを使用しています。機器への接続、テレメトリー、ライブ確認応答は実装されていません。

- Reactのインストール パッケージ、CSS、テーマ属性。

- コンポーネントのAPIスナップショット 実際のイベントプロパティとイベント。

- カラーの基本要素 サーフェス、可読性、ステータスの役割。

- タイポグラフィ テキストのカテゴリと用途。

- タイポグラフィの実装 形式とSassのエントリーポイント。

- ボーダー 境界の階層。

- イベント一覧 コンポーネントの例と密度のバリエーション。

## Siemens iXデザインシステム関連リソース

### Sprout Social Seeds

編集レビューキューで、Seeds の実際の公開カラー、間隔、製品用タイポグラフィ、ボーダートークンを確認できます。複数選択、フィルター適用後の空状態、取り消しにも対応しています。

### SumUp Circuit

正確なセマンティックトークン、ネイティブの検証用props、完全なマーチャント向け商品編集画面、図解付きの顧客側プレビューを備えたCircuitガイド。

### TDesign

TDesign Reactを使って、コンパクトなAPIポリシーエディターを構築します。具体的なテーマの役割、2ピクセル刻みのサイズスケール、Formフィールドの登録、型付けされたTableの構成を確認できます。


- [実装リファレンス](https://ix.siemens.io/docs/components/event-list/code)
- [ソース](https://ix.siemens.io/docs/home/installation/react)
- [ソース](https://ix.siemens.io/docs/styles/colors)
- [ソース](https://ix.siemens.io/docs/styles/borders)
- [ソース](https://ix.siemens.io/docs/styles/typography/guide)
- [ソース](https://raw.githubusercontent.com/siemens/ix/main/packages/core/component-api.json)
- [関連する仕様を確認する](https://ix.siemens.io/docs/components/event-list/code)
- [関連する仕様を確認する](https://ix.siemens.io/docs/styles/colors)
- [関連する仕様を確認する](https://ix.siemens.io/docs/styles/typography/code)
- [関連する仕様を確認する](https://raw.githubusercontent.com/siemens/ix/main/packages/core/component-api.json)
- [関連する仕様を確認する](https://ix.siemens.io/docs/guidelines/accessibility/code)
- [関連する仕様を確認する](https://ix.siemens.io/docs/home/installation/react)
- [コードリファレンス](https://ix.siemens.io/docs/components/event-list/code)
- [コードリファレンス](https://raw.githubusercontent.com/siemens/ix/main/packages/core/component-api.json)
- [コードリファレンス](https://ix.siemens.io/docs/styles/typography/code)
- [Reactのインストール パッケージ、CSS、テーマ属性。](https://ix.siemens.io/docs/home/installation/react)
- [コンポーネントのAPIスナップショット 実際のイベントプロパティとイベント。](https://raw.githubusercontent.com/siemens/ix/main/packages/core/component-api.json)
- [カラーの基本要素 サーフェス、可読性、ステータスの役割。](https://ix.siemens.io/docs/styles/colors)
- [タイポグラフィ テキストのカテゴリと用途。](https://ix.siemens.io/docs/styles/typography/guide)
- [タイポグラフィの実装 形式とSassのエントリーポイント。](https://ix.siemens.io/docs/styles/typography/code)
- [ボーダー 境界の階層。](https://ix.siemens.io/docs/styles/borders)
- [イベント一覧 コンポーネントの例と密度のバリエーション。](https://ix.siemens.io/docs/components/event-list/code)
