Why is my public_html folder suddenly empty?

There can be several reasons for why your files seem to have suddenly disappeared.

Deleted manually

It is possible someone logged in to File Manager and deleted or moved the files. Check you other folders and check outside of public_html.

FTP access used

If you gave FTP access to someone, they do have the power to delete files. They may have accidentally downloaded the files without leaving a copy, although it is not an easy mistake to make.

To prevent this, you can create them a FTP account which only has access to a subfolder in public_html. (See How to create an FTP account in cPanel, step 9.) This will allow them the access they need, while barring them from seeing and changing anything in your public_html folder.

Unfortunately, you cannot give someone access to a directory, but then prevent them from deleting the files there.

Accessing the wrong account

This mistake is much more common than you think. Be sure you are using your cPanel user name, and not "root". This especially applies to those using SSH access.