How do I make a frame continue being visible even when the mouse is not over the button that spawned it?

hello, it’s hard to word, but basically I want to create a gui button, where if you hover over it, a frame becomes visible on the right and remains visible as long as the mouse is hovered over either the button or the frame, and if it leaves either the frame or the button without entering the other, the frame disappears, I want to accomplish that with MouseEnter.

I tried accomplishing it by spawning another frame below the first one, then telling the button to turn the frame invisible after a second, then, using MouseMoved in the frame below it to see if the mouse above it is moving, and if it is, turn the frame visible again and then running the usual
script.Parent.MouseLeave:Connect(function()
script.Parent.Visible = false
end)
however, that feels choppy and won’t work if the player’s mouse is still so I dont want to use it
I also had some ideas with GetDescendants but they didnt go anywhere
I can also technically brute force it by not doing anything past
script.Parent.MouseEnter:Connect(function()
script.Parent.Visible = true
end)
and then just telling the other buttons to remove all the other frames when a mouse is hovering over them but again (ideally) I want the frame to disappear after the mouse leaves, so that’s pretty much a last resort.
here is an approximation of what I want

Mouse.Move:Connect(function()
    local GUIs = StarterGui:GetGuiObjectsAtPosition(Mouse.X, Mouse.Y-36)
end)

let me know if you need me to clarify how you would use this information to benefit you for the op GIF

can you please clarify how you would use this information to benefit you for the op GIF?