Lots of technical debt accumulated over the last couple months here. Big part of the problem is that we have to "drill" anything we need in from a hook.
This diff replaces the static spec we have today with a React component, which allows callers to use hooks to fetch any necessary data. It also looks pretty clean.
It also addresses a bug resulting from the relationship between `options` and `icons` not be considered - it was possible for icons to be matched to incorrect options.
After this diff, we should have no message-related code inside `Tooltip`, and going forward we should make sure we don't regress on that.
`TooltipContext` handles figuring out how many items can fit, as well as the relationship with the action sheet.
This is a pretty large diff, but I opted not to break it up because it otherwise would've been hard to see the changes to the `Tooltip` component if I had to keep both the old and the new ones alive across multiple diffs.