This solution may seem complicated, but I don't think we can significantly simplify it. The problem is that `lib`, where the specs are located, doesn't know what `@fortawesome` is and we should avoid introducing this dependency to all the places where `lib` is used. So to work around this limitation, web provides a function that generates icons based on a string, and specs decide which icon to generate.
https://linear.app/comm/issue/ENG-10658/move-ui-differences-to-specs
Depends on D14633