企业产品设计 · 新资源

Siemens iX 设计系统.

使用明确的严重程度词汇、适配主题的颜色角色和 iX Event List API 检查工业事件。本指南将构建本地设备记录簿,并清楚区分已审核记录与已解决的机器警报。

OpenDesign 指南7 个章节39 条参考条目原始应用指南
01

Siemens iX 设计系统界面预览

筛选虚构事件、查看设备备注,并在本地标记记录已审核,同时保留其原始严重程度。

设备事件记录打开完整示例
独立的离线 HTML/CSS 演绎版本。采用原始配色、系统字体和应用尺寸;并非原生 iX 运行环境。· 实现参考
02

Siemens iX 设计系统设计参考

当前公开的 iX 文档和官方主分支组件 API 快照。下方的颜色条目表示语义角色,并非虚构的固定十六进制值。已安装的程序包版本必须锁定为相互兼容的版本;离线示例使用单独标明的配色和尺寸。

主题和程序包入口

来源
名称 / 规则值 / 配置用途
Core package@siemens/ixWeb 组件和全局样式表。
React wrappers@siemens/ix-reactReact 组件集成。
Icons@siemens/ix-icons官方图标依赖项。
data-ix-themeclassic文档级主题选择器。
data-ix-color-schemadark | light | system属性的确切拼写遵循架构定义。
Global CSS@siemens/ix/dist/siemens-ix/siemens-ix.css在应用程序入口处导入一次。

文本与界面表面角色

来源
名称 / 规则值 / 配置用途
--theme-color-primaryPrimary action role根据所选主题解析。
--theme-color-std-textDefault reading color事件标题和正文。
--theme-color-soft-textSecondary reading color时间和资源元数据。
--theme-color-weak-textDisabled reading color请勿用于重要的次要信息。
--theme-color-alarm-textAlarm text role错误文本需要前景色时使用。
--theme-color-component-1Interactive component fill半透明;其外观会受底层界面表面的影响。
color-0Transparent background role其他背景层均为不透明。

严重程度用语

来源
名称 / 规则值 / 配置用途
AlarmError, invalid or dangerous condition保留其文字标签,并与彩色标记一同显示。
CriticalBetween alarm and warning这是独立的含义,不是用于装饰的另一种色调。
WarningCondition requiring attention不要在没有说明的情况下将其提升为警报。
SuccessPositive outcome需要审核的操作不一定意味着警报已成功处理。
InfoInformational condition与禁用内容区分开。
NeutralUnclassified neutral condition不适用状态判断时可使用。

边界层级

来源
名称 / 规则值 / 配置用途
--theme-color-hard-bdrStrong solid boundary高区分度。
--theme-color-std-bdrStandard control boundary输入或选择控件。
--theme-color-soft-bdrCard boundary用于 notebook 检查器。
--theme-color-weak-bdrRegion boundary以柔和的方式分隔主要区域。
--theme-color-x-weak-bdrVery subtle boundary低强调度分隔。
--theme-primary-bdr-1Complete border value用作边框:var(--theme-primary-bdr-1),而非颜色。

字体角色

来源
名称 / 规则值 / 配置用途
HeadingsH1 through H6文档层级。
BodyMultiline reading检查备注和说明。
LabelSingle-line component text简短的控件标签和字段。
DisplaySingle-line KPI presentation计数;不用于段落。
CodeCode and technical syntax适时用于 API 示例或标识符。

事件列表 API 快照

来源
名称 / 规则值 / 配置用途
IxEventList.itemHeightS | L | number; default S示例标题和元数据使用 L。
IxEventList.compactboolean; default false明确选择紧凑模式。
IxEventList.chevronboolean; default false显示导航提示。
IxEventList.animatedboolean; default false静态日志中避免不必要的动态效果。
IxEventListItem.itemColorstring主题 CSS 颜色表达式。
IxEventListItem.selectedboolean; default false由所选记录 ID 控制。
IxEventListItem.variantoutline | filled; default outline呈现方式选择。
IxEventListItem.disabledboolean; default false仅在无法交互时禁用。
itemClickCustom eventReact 包装器的 onItemClick 会选中该记录。
03

Siemens iX 设计系统完整指南

实用指南,介绍如何为真实界面选择、应用和评审此系统。

DESIGN-siemens-ix.md

完整指导、实现起点和源代码链接。

下载指南

Siemens iX 设计系统:具有不同审核和解决状态的工业事件

笔记本,而非机器控制面板

此工作示例是一本虚构的设备笔记本。三条记录保留其来源严重程度,同时通过独立的本地审核状态跟踪读者查看过哪些内容。这种区分对整体设计至关重要:选择一行、阅读备注和解决实际设备状况是不同的操作。预览实现了前两项,不会声称可进行实时控制。

摘自本 OpenDesign 指南

与装饰性卡片相比,事件列表是更好的起点,因为其选中状态、严重程度标记和箭头能让重复记录清晰地呈现为可导航的集合。较长的文本由检查器显示在行外。这里没有伪造的遥测数据流,也没有声称警报已解除的成功提示。

阅读配套规范

Siemens iX 设计系统:用于表达操作含义的颜色角色

标记应搭配易读的颜色

颜色系统区分不透明的背景层与半透明的组件填充色。组件填充色不能脱离其下方的界面表面单独评估。在原生代码中使用实际主题变量,而不要将截图中的十六进制值复制到每一行。

标准文本和柔和文本适用于不同的阅读优先级。弱化文本用于禁用内容,因此调查所需的时间戳不应自动归入该角色。与其盲目重复使用状态填充色,不如使用专用的警报文本角色来呈现错误前景色。

  • 在彩色边缘旁显示“警报”“警告”或“信息”等文字。
  • 经过本地审核后仍保留警报标记;审核不会改变来源状态。
  • 选中样式仅用于导航状态,以便区分严重程度和选中状态。

阅读配套规范

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 设计系统:在窄视口下依然适用的检查器

将详情移至事件列表下方

示例中的二比一网格是应用布局,并非已发布的 iX 网格令牌。在窄视口下,布局会变为单列,并在检查器之前保留记录顺序。检查器不会造成嵌套滚动陷阱;读者可以自然地滚动整个示例。

事件元数据位于第二行,并使用易读的次要颜色。筛选器置于重复显示的行之外,不会随记录变化而移动。状态段落会显示所选记录在本地的审核结果,而不会更改筛选条件或替换标题。

阅读配套规范

Siemens iX 设计系统:让状态不依赖颜色或精准指针操作也能被感知

文本、键盘控件与焦点

离线预览使用原生按钮显示记录,使用带标签的选择框筛选严重程度,并通过 aria-live 状态区域提供审核反馈。可使用 Enter 和 Space 选择记录。原生库组合使用其 Event List 包装器;采用自定义焦点覆盖之前,应先针对已安装版本测试键盘与辅助技术的行为。

标签说明了业务上的区别:在本地标记为已审核,而不是解除警报。禁用审核操作时,会同时显示已审核状态。含义并非完全依靠颜色传达,筛选器也不会让无法访问的旧选中项滞留在另一个类别中。

阅读配套规范

Siemens iX 设计系统:连接软件包、主题与本地应用状态

有序的集成步骤

配置代码块包含软件包导入、文档主题属性、实际组件属性、完整的 React 状态以及应用的 CSS。主题选择器是 data-ix-color-schema,而不是名称相似的自定义属性。请在应用中将已安装的 core、wrappers 和 icons 锁定为兼容版本。

视觉示例是离线的 HTML/CSS,用于诠释这些交互规则。深海军蓝配色、24 像素间距和示意性设备插图均为应用的原创选择。如需与原生视觉效果保持一致,请单独运行 React 示例,使用官方样式表并检查计算后的主题值。

  1. 在 Vite React 脚手架中安装 core、React wrappers 和 icons;保留生成的根元素。
  2. 将提供的文件替换为 main.jsx 和 style.css,然后在文档上选择 classic,并设置 dark、light 或 system。
  3. 选择一条记录,将其标记为已审核,筛选列表,并确认隐藏选中项被清除后,严重程度仍会保留。

阅读配套规范

Siemens iX 设计系统组件示例

完整的独立交互示例

将完整文档保存为 index.html 并在浏览器中打开。这是独立的离线 HTML/CSS 诠释。使用原创配色、系统字体和应用尺寸;并非原生 iX 运行时。

html
<!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 选择和主题属性。

Event List 与独立控制的检查面板

所选 ID 会驱动条目高亮和详情显示。审核操作只会记录本地笔记状态;原始严重程度仍会显示。

jsx
// 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,而不要将某个字体大小固定用于所有主题。

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

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

代码参考

  • 预览使用系统字体作为后备字体;其中不包含 Siemens 品牌字体。
04

Siemens iX 设计系统 AI Agent 配置

实现起点

为 Vite React 脚手架补全 main.jsx 和 style.css,并保留其现有根元素。官方包装器、CSS 导入和 Event List 属性均有文档说明;此处未执行原生软件包编译。嵌入式预览是独立的离线诠释。

jsx
// 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}}

适用于你项目的提示词

Agent 提示词
使用本指南中已验证的 Siemens iX 事件列表属性和文档主题属性,构建事件记录册。严重程度应独立于选择状态和本地审核状态保留。在原生版本中使用语义主题颜色。切勿暗示记录册中的操作可以解除实际警报。确保筛选器标签清晰、行支持键盘操作,并在窄屏上将检查器纵向排列。
05

Siemens iX 设计系统的来源与范围

独立的 OpenDesign 指南。事件数据和设备示意图均为虚构内容。预览样式为原创诠释;独立的 React 示例使用文档中所述的 iX API。未实现机器连接、遥测或实时确认功能。