Hey @Jack_Brind - I think I found a nice solution to your use case (and also mine):
1/ Enable the new open beta component authoring features, notably “Expose nested instances” > https://help.figma.com/hc/en-us/articles/5579474826519/#exposed-instances
2/ Create a new text and icon component with just your text box and validation icon. Create two variants: one with text visible and icon hidden, one with text hidden and icon visible
3/ Nest this component into your main input field component
4/ With your main input field component selected, click on the new “Expose properties from nested instances” option, then tick the box corresponding to your text and icon component
5/ Voilà No need for extra variants within your main input field component, and each instance of your field component now has a nice dropdown in the properties panel allowing you to choose between visible text and hidden icon or the other way around. No manual and independant trigger for text and icon, no possibility of creating irrelevant variants.
This might actually even be better than a mutually exclusive booleans feature, which could be a mess to implement and manage.
edit: there’s one limitation right now, exposed nested properties don’t show up when multiple instances of a component are selected Nested property hidden with multiple selection - since it is a beta feature I would assume it will be fixed in the final release.