Skip to main content
A Singapore Government Agency Website
IDN-2L1 · mandatoryhybridIdentity

Product icons render only from the approved product-icon family; no ad-hoc, redrawn, or regenerated icons

Fails when: a redrawn, distorted, or regenerated product-icon mark · a per-product background colour or gradient applied to the icon container · wordmarks, photos, shadows, or gloss inside the icon

Requirement

Product icons — the marks that stand for a product in a launcher, a switcher, a nav, or a card — render only from the approved product-icon family. A new mark enters the family by being produced through the Icon Generator and verified before use, never by being drawn ad hoc in a component.

The icon container is part of the mark. It does not take a per-product background colour or gradient, and the icon itself carries no wordmark, photograph, shadow, or gloss.

Rationale

Product icons are read as a set. Their value comes from being mutually consistent — the same optical weight, the same corner treatment, the same container — so a user can tell at a glance that two marks name two products in one family. A single ad-hoc icon breaks the set for every icon beside it, which is why the control is L1 and why it governs the container as well as the glyph.

Per-product background colours are the most common breach: they feel like a helpful distinction and they destroy the family's coherence, because the container stops being shared chrome and becomes per-product decoration.

Why this is hybrid

Static-check half. Resolving an icon reference against the approved product-icon set is mechanical, and so are two of the three failure conditions: a background colour or gradient declared on an icon container, and a box-shadow or gloss gradient inside the mark. That half is planned in #159 as checks/identity-scan.py; no script exists yet.

Judgment half. Whether an inline mark is a product icon — rather than a general interface icon, which this control does not govern — is a reading of what the element stands for. So is deciding that a mark is a regeneration of an existing family member rather than a legitimately new one. The evaluator holds both.

Passes when

  • Every product icon resolves to a member of the approved product-icon family.
  • New marks were produced through the Icon Generator and verified before entering the set.
  • Icon containers share one treatment across products, with no per-product background colour or gradient.

Fails when

  • A product icon is drawn, traced, or regenerated in component source.
  • An icon container takes a per-product background colour or gradient.
  • A mark contains a wordmark, a photograph, a shadow, or a gloss highlight.

Evaluator guidance

Flag:

  • Inline-drawn marks used where a product icon belongs.
  • Per-product container backgrounds or gradients in a launcher, switcher, or card grid.
  • Product icons whose optical weight or corner treatment differs visibly from the rest of the family.

Do not flag:

  • General interface icons — the icon set used for actions and navigation is not the product-icon family and is out of scope here.
  • Logos and lockups, which IDN-1 governs.
  • Third-party product icons supplied by that party.
  • A documented waiver recording why a non-family mark is necessary — this is an L1 control with waiver: documented.

Also available as Markdown · catalog.yaml