Lines 39-40 manually register fields but lines 107 and 115 bind TextField.value to getValues(), which only returns a snapshot. In react-hook-form, this does not subscribe the component to value changes, so the inputs stop reflecting keystrokes after the first validation update. The signup form in this PR already uses Controller for the same inputs; apply the same pattern here.
Additionally, line 49 duplicates the routing logic from AuthProvider.tsx:151–153, which already redirects officials to /(official)/dashboard based on profile role. Remove the explicit router.replace() call to let the provider handle routing.
Lines 39-40 manually register fields but lines 107 and 115 bind TextField.value to getValues(), which only returns a snapshot. In react-hook-form, this does not subscribe the component to value changes, so the inputs stop reflecting keystrokes after the first validation update. The signup form in this PR already uses Controller for the same inputs; apply the same pattern here.
Additionally, line 49 duplicates the routing logic from AuthProvider.tsx:151–153, which already redirects officials to /(official)/dashboard based on profile role. Remove the explicit router.replace() call to let the provider handle routing.