Preheat oven to 350°F (175°C). Line a 12-cup muffin pan with cupcake liners and set aside.
In a medium bowl, whisk together the flour, baking powder, and salt until evenly combined. Set aside.
In a large bowl, beat the softened butter and sugar with an electric mixer on medium speed for 3-4 minutes until light and fluffy. Add the eggs one at a time, beating well after each addition, then mix in the vanilla extract.
With the mixer on low speed, add the flour mixture in three additions, alternating with the milk in two additions, beginning and ending with the flour. Mix just until no streaks remain.
Divide the batter evenly into three small bowls. Leave one bowl white, tint the second with red gel food coloring, and the third with blue gel food coloring. Stir each gently until the color is evenly distributed but not overmixed.
Using a spoon or small cookie scoop, drop one scoop of red batter, one scoop of white batter, and one scoop of blue batter into each cupcake liner. Do not swirl or stir the colors together.
Bake for 18-20 minutes, until a toothpick inserted into the center comes out clean and the tops spring back lightly when touched. Cool in the pan for 5 minutes, then transfer to a wire rack to cool completely.
For the frosting, beat the softened butter on medium speed for 2 minutes until creamy. Gradually add the powdered sugar, one cup at a time, beating on low speed. Add the heavy cream and vanilla extract, then increase speed to high and beat for 3-4 minutes until light and fluffy.
Divide the frosting into three bowls and tint with red, white (leave plain), and blue gel coloring. Pipe or spread the frosting onto cooled cupcakes in patriotic swirls or stripes.
Top with red, white, and blue sprinkles immediately before the frosting sets. Serve at room temperature for the best flavor and texture.