I am not sure about a monorepo and I know this breaks the monorepo question, but an approach I can think of is to structure your project (if possible) to support modules and use git submodules https://git-scm.com/book/en/v2/Git-Tools-Submodules
With access controls of git providers e.g. Gitlab, Bitbucket etc, you can only give access to a specific git submodule you have to contractors whether its read / write or admin access.
In your case for example, you can just place the design layer (the one to share with client in another repo and have it as a submodule to your main repo) and if you want tighter security as @VonC mentioned, you can setup a VPN accessed repo for your submodule. It might take time to setup, but I think it could be worth it once implemented properly considering the risks.