diff --git a/.Jules/palette.md b/.Jules/palette.md index 2802bd6..e474b55 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -15,3 +15,7 @@ ## 2026-10-24 - Form Success State Feedback **Learning:** Temporarily disabling the submit button and changing its state to a success message without wiping the form inputs asynchronously prevents data loss while maintaining clear feedback for the user on successful submissions. **Action:** For successful form submissions, temporarily (e.g., 2s) disable the submit button, change its text to a success message, and reset the form inputs immediately rather than inside the timeout. + +## 2026-10-26 - Accessible Character Limit Warnings +**Learning:** Adding `aria-live` to a dynamic character count (e.g., "240 / 300") creates a very noisy experience for screen reader users on every keystroke. +**Action:** Instead of making the changing number live, use progressive visual feedback (color changes) and conditionally render separate, strictly static visually hidden elements with `role="status"` at specific thresholds (e.g., 80% and 100%) to announce warnings gracefully. diff --git a/src/components/participant/ResponseForm.tsx b/src/components/participant/ResponseForm.tsx index ec72b44..9e639fa 100644 --- a/src/components/participant/ResponseForm.tsx +++ b/src/components/participant/ResponseForm.tsx @@ -128,10 +128,26 @@ export function ResponseForm({ sessionId, promptId, socket }: ResponseFormProps) />