Preheat the oven to 350 degrees. Line 2 baking sheets with parchment paper.
Stencil heart shapes all over the parchment paper (leaving about an inch of space between each). I find it easiest to trace a small heart-shaped cookie cutter, but you may make a template for yourself. We want all of the hearts to be the same size. Then flip the parchment paper over so that you can still see the hearts but will not be placing batter directly on the pencil markings.
Whisk together the flour, cocoa, baking soda, and salt in a medium mixing bowl.
In a separate, large bowl, use a stand mixer or hand held electric mixer to cream the butter. Beat it on high power until it is creamy. Then beat in the white sugar and brown sugar. Beat this for at least 3 minutes on medium high speed until it is fluffy. Then beat in the eggs until smooth. Next, add the buttermilk and mix only as needed.
Now, add the dry ingredients (the flour mixture) to the wet ingredients (the buttermilk, egg mixture).
Mix this together on low speed until just mixed. Then add the vinegar and vanilla, again mixing until just mixed. You do not want to over mix the batter. The batter will be like cake batter and should pipe and spread easily.
Place the batter into a piping bag with a Wilton 1A round tip. If you don’t have one, you could cut the corner out of a large zip-lock bag and this will work as well.
Pipe the batter into heart shapes leaving about two inches of space between them. The cookies will spread while baking. I find it easiest to pipe an outline of the heart and then fill it in then smooth out the batter a bit with a spatula.
Bake the cookies for 10-12 minutes until completely set up. Allow them to cool slightly on the pan, then move them to a wire rack to cool completely.
While the cookies are cooling, make the filling.
Beat the cream cheese and softened butter together until light and fluffy. This will take about 2 minutes on high speed with an electric mixer. Then add the powdered sugar 1 cup at a time and beat for another minute or two after each addition. It should be creamy.
Allow the cookies to cool completely before filling them. Match up pairs of cookies that are similar in shape and size.
Spread (or pipe with a Wilton 1A tip) about 2 Tablespoons of filling onto the flat side of one cookie and gently top it with a matching cookie. (Don’t squeeze too hard or the filling will squish out.)
These must be kept in the fridge because of the cream cheese filling.