Waiting for someone to repent before we forgive is to surrender our future to the person who wronged us. Lewis Smedes (from https://thisdaysthought.org/ )
Many of us trip over this one. The main thing to remember is we are doing this for ourselves, not for the other person.
Some situations are obvious. I’ve carried around resentments for decades about people who I’m unlikely ever to see again, even against people who are deceased, like my Mom. Letting these go by forgiving the other person (which does not necessarily mean condoning their actions) is a huge relief, like a burden I no longer have to carry. Hindsight has also allows me to see that I have also not been blameless in some of these situations. If that causes me to feel guilt, it helps to let it go by forgiving myself.
It is trickier for more recent “wrongs”. Nobody wants to feel like a doormat, and there are times when we have to assert ourselves. How to be forgiving but still stand our ground when necessary has been covered by many spiritual teachers. There is a detailed discussion of it, for example, in Eknath Easwaran’s Passage Meditation. in the chapter on “putting others first”. There is also a good discussion of it from the standpoint of positive psychology here.