Color Variable Alias + brightness, contrast, or hue offset
Color variable aliases were recently given the ability to define a new transparency value without detaching the actual color from the source variable. However, only the opacity can be set and even that’s only if the source color is solid, instead of allowing existing opacities to be offset.
It would be really cool if that system could be extended to also allow modifying the other axes, not just the transparency. Since you can’t define a color with a hue and saturation but no lightness, adding this would also ripple out to the opacity by allowing offsets to the existing color’s opacity, instead of what currently happens where if the source is not solid, the feature gets disabled altogether.
The use case for this is absolutely massive, letting you far more deeply align your color palette to a single source of truth. It strongly fits the ideals expressed by the recent “Control opacity at scale” feature. It further reaffirms the vision that Figma can be the gold standard for creating actually deeply modular, fully dynamic and modern composed design systems. It would increase the ability for sharing components and design systems between different companies or even just sub-brands or products with distinct brand identities without having to do loads of upfront work creating all the variations of colors. Lastly, it would make it possible for companies that already posses a media brand book or style guidelines only focused on print and media applications to actually build a complete web/UI/UX design system without ever defining new static colors not reflected in the brand identity documents. For example, the main color for a button is likely already defined for print and media use, but the subtle variations of that color for hovering and pressing interaction states almost definitely are not.
For example, you could have one primary brand color set manually, and then have everything from hover/pressing interaction state colors to disabled colors to even the text or border colors determined dynamically by offsetting the HSL or HSB coordinate axes of the primary brand color, instead of having to rely on external programs or eyeballing to make sure the colors all change and all change by the right amount when adjusting that base color.
What I’m looking for:
- Extend the recent color variable alias with different opacity system to also work when the source has an opacity, overriding it.
- Extend that with a toggle to swap between overriding the existing opacity and offsetting it.
- Extend it further the allow targeting not just the opacity, but also let you pick from the supported color models like RGB, HSL, HSB, and hopefully eventually OKLab variants of those, and then apply an offset or override on any of the three parameters the selected color model contains.
- Just like how the color variable alias with different opacity feature was nicely given the ability to also link the new opacity to a number variable, it would also be great if the new color coordinate offset function could have it’s offset attached to a number variable
- A sensible continuation of that would be letting number variable aliases also be defined with an offset from their source value, who’s offset could also be bound
Why it matters:
- Color variables cannot have a single source of truth for small variations like button hover/pressing interaction as besides opacities, color variables cannot be defined relative to other colors
- Companies who have never made UI/UX web design systems but do have brand identity documents must create a ton of new colors out of nowhere
- Design systems cannot be easily shared between products or sub-brands with a different color pallet without having to update tons of potentially fractured hard-coded variations of just a few individual colors
