The theme text-colour ramp a widget tints itself with (UILabel, UIIcon).
An enum abstract over Int, so it is just an Int at runtime (no allocation) while giving
named, type-safe values. Where a UITone is expected the name can be written unqualified, e.g.
new UILabel("Saved", 13, SECONDARY); elsewhere use UITone.SECONDARY. from/to Int keep
it interchangeable with plain ints, so passing a raw ramp index still compiles.
PRIMARY->UITheme.textSECONDARY->UITheme.text2TERTIARY->UITheme.text3