@Raqi it wouldn’t be William, just Billy. It’s a family name. X
I don’t think either name works with that sibset. Sapphire and Charles are very different from each other but they still work together somehow. Billy and Sonny? Completely different vibes.
I think William would go better with Charles. I'd also opt for a longer version of Sonny and then use Sonny as a nickname. Salvatore, Santino, or even any name that ends in 'son' like Emerson, Carson, Sampson, etc