Validation
Form-level Rules
The initial values break several booking rules. Submit to see form-level errors next to field errors, then fix them.
What this shows
useForm({ validate }) receives every value and returns a list of messages, for rules that span several fields like a date range or a guest limit.
It runs on submit together with field validation. onError(fieldErrors, formErrors, values) receives both kinds of error, so the form can show a summary.