Make the Cupcakes: Preheat oven to 350 degrees F. Line a cupcake pan with paper liners; set aside.
In the bowl of a stand mixer, add the flours, sugar, baking powder and salt, and mix together on low speed for 1 minute. With the mixer on low, add the butter, a few cubes at a time, continuing until all the butter has been added and the mixture resembles coarse sand.
Keeping the mixer on low speed, add the eggs one at a time, scraping down the sides of the bowl between additions. Slowly pour in the milk and vanilla and mix until combined. Increase the mixer speed to medium and beat for 2 minutes, until batter is smooth, scraping the sides of bowl as needed.
Fill the liners two-thirds full (about ¼ cup of batter) and bake for 15-20 minutes, until the centers are set and a toothpick inserted into the center comes out clean. Cool in pan for 10 minutes, then remove to a wire rack to cool completely before frosting.
Make the Frosting: Using the wire whisk attachment of your stand mixer, whip the butter on medium-high speed for 5 minutes, stopping to scrape the bowl once or twice.
Reduce the speed to low and gradually add the powdered sugar. Once all of the powdered sugar is incorporated, increase the speed to medium-high and add the vanilla, mixing until incorporated. Add the melted chocolate and whip at medium-high speed until light and fluffy, about 2 minutes, scraping the bowl as needed to incorporate all of the chocolate. (You can store unused buttercream in the refrigerator in an airtight container for up to 3 days; let it come to room temperature and then give it a quick whip in the mixer before using.)
Frost the cupcakes as desired (I used the Ateco #827 decorating tip) and garnish with sprinkles. Frosted cupcakes can be stored in an airtight container at room temperature for up to 3 days.