01 - Preheat oven to 350°F. Line an 8x8-inch baking pan with parchment paper, allowing overhang on sides for easy removal.
02 - Combine graham cracker crumbs, melted butter, and sugar in a medium bowl. Mix until evenly moistened. Press firmly into the bottom of the prepared pan. Bake for 10 minutes until lightly golden. Set aside to cool.
03 - In a medium saucepan over medium heat, whisk together whole milk, coconut milk, sugar, cornstarch, and salt. Stir constantly until mixture begins to thicken slightly, about 3 minutes.
04 - Whisk egg yolks in a separate bowl. Gradually ladle about 1/2 cup of the hot milk mixture into the yolks while whisking continuously to prevent curdling.
05 - Pour the tempered yolk mixture back into the saucepan. Cook over medium heat, whisking constantly, until mixture thickens and bubbles, 3-5 minutes. Remove from heat and stir in vanilla extract and shredded coconut.
06 - Pour the hot filling over the cooled crust, spreading evenly. Refrigerate for at least 1 hour until completely set and firm.
07 - Beat heavy whipping cream, powdered sugar, and vanilla extract with an electric mixer until stiff peaks form. Spread evenly over the chilled coconut filling layer.
08 - Sprinkle toasted coconut flakes generously over the whipped cream. Refrigerate for at least 30 minutes to set. Use the parchment overhang to lift bars from pan, then cut into 16 squares.