Isso faz sentido — manter o contrato público fechado evita derivações não intencionais da API, e uniões discriminadas são uma razão forte para preferir `type`. Quando estiver a implementar esse botão para ser pixel-perfect e responsivo, como lida com o espaçamento e o alinhamento para que o ícone + rótulo permaneçam visualmente consistentes em diferentes pontos de interrupção e alterações de tamanho de fonte?