Note that I’m using Unity UI to help visualize what I’m doing.
This is how the arrow rotates when just applying a new Quaternion value to its local rotation:

And this is what I plan to understand Quaternion rotations by adding an offset, in order to get this result (not yet happening at the moment):

This is my pseudo-code that doesn’t seem to work like I expected:
Transform transform = GetComponent<Transform>();
transform.position += new Vector3(arrow.GetWidth() / 2f, arrow.GetHeight() / 2f, 0f);
transform.localRotation = Quaternion.Euler(0f, 0f, angle) * Vector3.one;
transform.position -= new Vector3(arrow.GetWidth() / 2f, arrow.GetHeight() / 2f, 0f);
How do you rotate a game object by offsetting its pivot point (non Unity UI wise), like the green arrow in the second GIF?