See parent ticket for product details.
We should protect this with a captcha. See ui/src/components/Cards/CreateAccount.vue:171 for inspiration as to how this is currently done for the CreateAccount workflow.
Of course this UI will need to make a call to the backend API. This will need to look like a POST request to /contact/sendMessage with a JSON object with the following keys.
name contactDetails subject message recaptcha
each of which should be a string. The response should be expected to be a 200 in the event of success. 401 in the event of the recaptcha token being rejected, and 400 in the event of a missing required key (name, subject, message or token) or one of the strings being excessively long (to be defined by the API not hard coded in the client).
where subject is one of:
general-question feature-request report-a-problem give-feedback other
These different cases should be demonstrated by creating mock backends representing this situation in https://github.com/wbstack/ui/blob/main/src/backend/mocks/default_handlers.js