The iX product foundation (@siemens/ix@5.2.0): CSS delivery, shadow-DOM components,
and theming architecture. All page chrome uses --theme-* variables.
Click any node to trace downstream delivery. iX uses a 2D theme model: family × colour schema.
iX uses a 2D theme model: family (classic, brand) × color schema (dark, light).
The core CSS, theme files, and Stencil components are delivered as separate artifacts.
ThemeSwitcher toggles data-ix-theme and data-ix-color-schema attributes.
| Layer | Example | Role |
|---|---|---|
| Core ramps | scss/theme/core/_common.scss | Neutral/accent ramps shared by every theme family |
| Theme | --theme-color-primary, --theme-color-1 | 271 semantic tokens in classic-dark.css / classic-light.css |
| Component | --theme-btn-primary--background | 41 per-component SCSS modules with targeted override API |
Tokens compile from SCSS core ramps → per-family theme SCSS → emitted CSS custom properties. The 41 component modules (scss/theme/core/components/*.scss) declare per-component token APIs (e.g. --theme-btn-primary--background) that resolve from semantic tokens.
scss/theme/core/components/*.scss--theme-btn-primary--background etc..ix-button for light DOM| Override method | Scope | Shadow DOM | Light DOM |
|---|---|---|---|
CSS variable on :root | Global | ✓ | ✓ |
data-ix-color-schema toggle | Global | ✓ | ✓ |
| ThemeSwitcher JS API | Global | ✓ | ✓ |
SCSS component @mixin | Build-time | ✓ | n/a |
| Per-component token var | Instance | ✓ | n/a |
/* Override via CSS variables at runtime */
:root { --theme-btn-primary--background: hotpink; }
/* Or via SCSS mixin at build time */
@use '@siemens/ix/scss/theme/core/components/button' as btn;
@include btn.setVars {
--theme-btn-primary--background: hotpink;
}
iX provides the richest override surface: CSS variables, SCSS mixins, and the ThemeSwitcher JS API. Component-level tokens allow targeted overrides without reaching into component internals.
| Feature | iX | iris | Dual |
|---|---|---|---|
| CSS-only usage (no JS) | [ ] | [ ] | [x] |
| Per-file imports | [x] theme separate | [ ] monolithic | [ ] monolithic |
| Component token overrides | [x] 25+ vars | [ ] 1 var | [x] 118 vars |
| Naming convention | [ ] generic shadow | [ ] generic shadow | [x] SUIT CSS |
| Utility classes | [ ] none | [x] 84 typo utils | [x] 73 u-* |
| CSS Grid system | [ ] none | [ ] none | [x] .Grid-cell |
| Tree-shaking (CSS) | [ ] bundled | [ ] bundled | [ ] bundled |
| Framework wrapper needed | [x] Stencil | [x] Stencil | [ ] no |