Release-candidate UI kit — reference tokens, semantic tokens, grid system, components, and the
config / light-vs-shadow-DOM model. Rendered against the candidate iris.css installed
into this demo's own node_modules from the vendored local tarball
(package/*.tgz) — self-contained, no preview server.
(DESYS-434 · DESYS-1379 · DESYS-1447)
The primitive tier — raw colour ramps and dimension scales from the
$reference SCSS map (src/global/tokens/_reference.scss, sourced
from the Figma References mode). These live only in the SCSS source and are called
at compile time via the ref() reference functions — they do not emit CSS custom
properties and are not intended for direct use in the app. They are shown here purely
to illustrate the scales; consumers use the semantic tokens in §2 instead. Rendered from the
parsed SCSS source (data/reference-tokens.json), not the loaded stylesheet.
Loading reference tokens…
Loading…
The role-based --iris-* custom properties consumers actually use. Rendered
live from the compiled CSS: every non-deprecated --iris-*
custom property found in the installed iris.css, grouped by tier. Deprecated
(--iris-deprecated-*) variables are hidden.
— colour variables are theme-scoped; the dropdown re-renders this panel only.
Reading colour variables…
— layout values are viewport-scoped via @media; the dropdown resolves them at that width.
Reading responsive values…
The src/global/css-grid/ layer — SUIT-named, de-conflicted so both grids load
together: .iris-CssGrid (CSS Grid + bento) and .iris-FlexGrid
(flexbox). Light-DOM classes only; never shadow-scoped. Both grids are 12-column; size each
cell with a --{1..12}of12 class, optionally with a --{sm,md,lg,xl,xxl}-
breakpoint prefix.
Rendered from the candidate grid.css — now installed locally.
This demo installs the iris-core v1.0 candidate tarball into its own
node_modules and links dist/iris/grid.css directly, so the P5
css-grid/ classes ship for real (base .iris-CssGrid /
.iris-FlexGrid, --autoFit, --bento). A small scoped
#grid block below still backstops the --{1..12}of12 column scale and
the sm/md/lg/xl/xxl responsive prefixes this markup uses, in case the compiled cell
naming differs from the demo markup — the loaded grid.css takes precedence where
the names match.
.iris-CssGrid — 12-column, spans per cellContainer: <div class="iris-CssGrid"> (12 columns). Cell size: .iris-CssGrid-cell--{1..12}of12.
.iris-CssGrid--autoFit — intrinsic columns, no media queriesContainer variant: cells fill down to --iris-grid-min-cell (default 16rem), then wrap.
.iris-CssGrid--bento — dense auto-flow with hero/wide cellsContainer variant: .iris-CssGrid-cell--hero (2×2), --wide (span 2), --rowSpan2 (tall).
.iris-FlexGrid — 12-column cells + alignmentCell sizes: --{1..12}of12, plus --full and --auto (grows to fill). Responsive prefixes --{sm,md,lg,xl,xxl}-{1..12}of12. Alignment: --alignCenter/End/Stretch, --justifyCenter/Between/End.
.iris-FlexGrid — responsive breakpoint variants
Stack the base span with breakpoint prefixes and the widest matching breakpoint wins. Each cell
here is --12of12 (full width on mobile), then --md-6of12 (two-up at ≥768px),
then --lg-4of12 (three-up at ≥1024px). Resize the window to watch them re-flow.
Both grids use ONE gutter for row and column gaps:
gap: var(--iris-grid-gutter-width, var(--iris-spacer-12)). Override
--iris-grid-gutter-width on the container with any --iris-spacer-* step;
it drives horizontal and vertical spacing together. FlexGrid fractional widths are
gutter-aware (calc(50% − gutter/2)), so cells stay flush as the gutter changes.
The 14 shipped <iris-*> web components. They render live when the loader is
reachable (whole-repo preview); when served standalone they degrade to the tag name. Each
component's shadow root also adopts shadow.scss (see §5).
The P5 config-gated dist. src/iris-compile.config.yaml declares which SCSS surfaces
compile into dist and which subpaths publish. A single SCSS source fans out to two
composition roots — light.scss (→ iris.css) and shadow.scss
(adopted into every component shadow root).
iris-compile.config.yaml — compile toggles| Toggle | Default | Controls |
|---|---|---|
compile.semanticVariables | true | Semantic vars → static CSS variables in dist/iris |
compile.utilities | true | .iris-u-* utility classes |
compile.grid | true | .iris-CssGrid / .iris-FlexGrid classes |
compile.base | true | Light-DOM reset + base element styles |
compile.legacyCss | false | Compiled legacy CSS in dist — ships ONLY when true (D-5) |
export.* — published subpaths| Toggle | Default | Controls |
|---|---|---|
export.legacyScss | true | Legacy scss/* resolution via src/legacy |
export.v2 | true | Go-forward scss/v2/* from src/global |
Note: the two legacy toggles are deliberately separate — CSS-off never implies resolution-off.
The file records intent today; wiring the build to read compile.legacyCss is a
tracked follow-up (F6.2).
light.scss → iris.css@font-face declarations--iris-* variable tier.iris-u-*.iris-font-* / .iris-text-*.iris-CssGrid / .iris-FlexGridFor document-scope consumers. Compiled by compile-global-stylesheets.mjs.
shadow.scss → every shadow root@font-face declarations--iris-* variable tierAdopted by Stencil globalStyle into every component. Per-component CSS reaches its own root separately.