Prep the pan: Line an 8x8-inch baking pan with parchment, leaving overhang for easy lifting. Lightly mist with oil.
Make the crust: Mix graham crumbs, sugar, salt, and melted butter until the texture resembles wet sand.
Press firmly into the pan, packing it tightly with the bottom of a measuring cup. Chill while you make the filling.
Toast the coconut: In a dry skillet over medium heat, toast shredded coconut, stirring often, until lightly golden and fragrant, 3–5 minutes. Transfer to a plate to cool.
Whisk the base: In a saucepan, whisk together sugar, cornstarch, and salt.
Add coconut milk and whole milk, whisking until smooth. Whisk in egg yolks.
Cook the filling: Set the pan over medium heat and whisk constantly until the mixture thickens and bubbles, 5–8 minutes. Once thick, cook 1 minute more to remove the starchy taste.
Flavor and finish: Remove from heat.
Stir in vanilla and the toasted shredded coconut. Pour the hot filling over the chilled crust and smooth the top. Cool 15 minutes at room temperature.
Chill to set: Cover and refrigerate at least 4 hours, or overnight, until firm.
Make the topping: Beat cream, powdered sugar, and vanilla to soft peaks.
Spread over the set coconut layer. Sprinkle with toasted coconut flakes.
Slice and serve: Lift the slab using the parchment and cut into bars with a sharp knife. Wipe the blade between cuts for clean edges.