Story wise, the best party composition is all of them. I’d swap them around a bit and bring characters along who you think could be relevant to whatever you are doing. Also keeping the default classes or something similar for each will make most sense for their characters. Eg making Lae’zel a monk wouldn’t seem very weird, but turning Astarian into a mage or Shadowheart into a Barbarian probably would.
Can’t help noticing you are lacking a few companions. Are you doing an evil playthrough and/or saving others for future runs?
Sword bards are super versatile and very good for filling any role. Give them expertise in slight of hand and at least proficiency in perception, and they’ll be up there with rouges for lockpicking and traps. They are very good casters, more focused on crowd control (hypnotic pattern can be quite absurd) and can certainly hold their own with ranged or melee combat. You can even give them healing word, which is probably the most useful healing spell at level 1 and probably enough to swap Shadowheart out on occasion.
If you stuck with detail classes, both Lae’zel and Minthara are very good front line, and you have Shadowheart as a cleric. So you’re only slightly lacking a dedicated caster for wrecking the battlefield. It’s probably fine if you make sure your bard has a couple of good AoE damage spells in their list. Or maybe Minthara as a sorcerer or paladin/sorcerer?