Preheat oven to 350°F (177°C). Grease three 8-inch cake pans and line them with parchment paper.
Make the cake: In a medium bowl, whisk together the flour, baking powder, baking soda, and salt. Set aside.
In a large bowl, cream together the butter and sugar until light and fluffy. Beat in the egg whites one at a time, then stir in the sour cream, vanilla extract, and coconut extract.
Gradually add the dry ingredients to the wet ingredients, alternating with the coconut milk and pineapple juice. Beat until just combined, then stir in the shredded coconut and pineapple chunks.
Divide the batter evenly among the prepared cake pans. Bake for 22-24 minutes, or until a toothpick inserted into the center comes out clean.
Let the cakes cool completely in the pans before frosting.
Make the pineapple curd: In a medium saucepan, whisk together the egg, egg yolks, sugar, cornstarch, pineapple juice, and salt.
Place the saucepan over a pan of simmering water and whisk constantly until the curd thickens and coats the back of a spoon, about 10 minutes.
Remove from the heat and whisk in the butter, one piece at a time, until smooth.
Let the curd cool completely before using.
Make the frosting: In a large bowl, beat together the cream cheese and butter until light and fluffy.
Gradually add the confectioners' sugar, beating until smooth. Beat in the coconut milk or pineapple juice, vanilla extract, and salt.
To assemble the cake: Place one cake layer on a serving plate. Spread with a thin layer of frosting, then top with a layer of pineapple curd. Repeat with the remaining cake layers and frosting.
Frost the top and sides of the cake with the remaining frosting. Garnish with additional pineapple chunks and shredded coconut, if desired.
Refrigerate the cake for at least 30 minutes before serving.