Summary
The invoice marketplace form validates loosely and announces nothing, so errors are easy to miss. Add schema validation with inline, accessible per-field errors and a summary live region.
Why this matters
Silent or inaccessible validation frustrates users and fails a11y. Schema-driven, announced errors are correct and inclusive.
Requirements
- Validate the invoice marketplace form against a schema; show inline per-field errors.
- Summarize errors in a live region and move focus to the first invalid field on submit.
- Errors clear as the user fixes each field.
- Submit is blocked while invalid, with a clear reason.
Technical guidance
- Associate each error with its input via
aria-describedby.
- Announce the summary politely, not assertively, unless on submit.
Edge cases — each must have a test
Acceptance criteria
Out of scope
- Async/server-side validation
- Multi-step wizard
Rewards
Part of the GrantFox OSS / Official Campaign (FWC26) — this task may be rewarded. PR quality is assessed by AI: depth, correctness under edge cases, meaningful tests, and clean design are what earn the reward. Shallow changes (typos, formatting, trivial docs) do not qualify.
Summary
The invoice marketplace form validates loosely and announces nothing, so errors are easy to miss. Add schema validation with inline, accessible per-field errors and a summary live region.
Why this matters
Silent or inaccessible validation frustrates users and fails a11y. Schema-driven, announced errors are correct and inclusive.
Requirements
Technical guidance
aria-describedby.Edge cases — each must have a test
Acceptance criteria
npm run lint,npm test, andnpm run buildall pass locallyCloses #<issue>Out of scope
Rewards
Part of the GrantFox OSS / Official Campaign (FWC26) — this task may be rewarded. PR quality is assessed by AI: depth, correctness under edge cases, meaningful tests, and clean design are what earn the reward. Shallow changes (typos, formatting, trivial docs) do not qualify.