In a large bowl, combine the green cabbage, red cabbage, carrots, diced apples, dried cranberries, and walnuts (if using). Toss to mix evenly.
In a separate small bowl, whisk together the mayonnaise, apple cider vinegar, honey, salt, and black pepper until smooth.
Pour the dressing over the cabbage mixture and toss until all ingredients are well coated.
Cover the coleslaw and refrigerate for at least 30 minutes to allow the flavors to meld.
Before serving, give the coleslaw a good stir and adjust seasoning if necessary.