Proximity Prompts

you are doing way more work than you need to.
just use ProximityPromptService to swap the UI for you and it will still inherit all the default functionality you want. Use Enum.ProximityPromptStyle.Custom to hide the default UI and overlay your own

ProximityPromptService | Documentation - Roblox Creator Hub