Application form, state set
Senior Software Engineer (Java) · Based on the current corrected job-details application form.
Illustrative, static states for a sample vacancy; no application is sent. Privacy and hiring policies are unconfirmed. Policy, validation and submission behavior need implementation and approval.
Apply for Senior Software Engineer (Java)
Required fields are marked below.
Keep the states understandable
Plus Jakarta Sans + JetBrains Mono · 16px body / UI · 48px inputs and actions · 44px minimum targets · #737373 input boundaries · #C2410C primary action.
Accessibility & Interaction Guidelines
Field labels & order
Associate each persistent label with its control. Keep “required” and “optional” visible; placeholders must not replace labels. Order: full name → email → CV → profile URL → introduction → privacy → submit.
Keyboard focus
Use a 3px darker REEA orange outline with a 3px gap, including on file selection, policy and actions. Preserve logical DOM order and visible focus; do not trap focus. The focus panel is a visual example, not working tab navigation.
Validation & announcements
Associate corrections and helpers via aria-describedby; set aria-invalid on invalid fields. Announce a concise error summary after validation, then focus the summary or first invalid field. Preserve all valid entered values.
Upload & submission status
Expose upload progress with a named progressbar and announce meaningful status changes through a polite live region. Provide keyboard-accessible cancellation. Keep submit unavailable during upload and pending submission; prevent duplicate requests.
Confirmation semantics
After successful submission, replace the form with the receipt. Move focus to “Application received” and announce success once. Provide a semantic return-to-openings link; receipt copy must not imply hiring or promise a response time.