Jenga Colors
Semantic color layer: colors named by role, not by hue.
This is the public color contract of Jenga. Components read these roles (e.g. brand, surface, textPrimary) and never the raw JengaPalette. Because roles are theme-independent in name but theme-dependent in value, the same component renders correctly in light and dark simply by swapping the JengaColors instance (jengaLightColors vs jengaDarkColors).
Rebrand or white-label by passing a copy(...) of one of the factories to JengaTheme(colors = ...).
Status roles follow a content / container / onContainer triad:
success: the vivid accent (dots, icons, borders, emphasis)successContainer: a tinted background for banners/badgesonSuccessContainer: readable text/icon color on that container
Constructors
Properties
Functions
Multi-brand convenience: returns a copy of this scheme rebranded to brand. The semantic structure (surfaces, text, lines, status) is untouched; only the brand accent and its subtle/on pairs change.