Allow access to repo files only after approving request

I have a few projects that I want to make accessible to users upon their request.

My issue is that I need to make sure the files are not visible publicly, but users can visit the repo page and request access; access to view files and clone.

I still haven’t managed to find a way. It looks like like either the files are completely hidden, but so is the ‘request access button’, or the files are accessible without me authorizing it.

I would appreciate any help in making this work, if it’s possible. Otherwise I can try and make a feature request.