@@ -125,17 +162,24 @@ export function CompareForm({
- ) => setUsername1(e.target.value)}
- aria-label={t("form.username1.label")}
- aria-invalid={Boolean(username1Error)}
- aria-describedby={username1Error ? "username1-error" : undefined}
- />
+
+ ) =>
+ setUsername1(e.target.value)
+ }
+ onKeyDown={handleInputEscape(username1, setUsername1)}
+ aria-label={t("form.username1.label")}
+ aria-invalid={Boolean(username1Error)}
+ aria-describedby={username1Error ? "username1-error" : undefined}
+ aria-keyshortcuts={slashTargetsSecond ? undefined : "/"}
+ />
+ {slashTargetsSecond ? null : focusShortcutBadge}
+
{username1Error ? (
{username1Error}
@@ -146,16 +190,24 @@ export function CompareForm({
- ) => setUsername2(e.target.value)}
- aria-label={t("form.username2.label")}
- aria-invalid={Boolean(username2Error)}
- aria-describedby={username2Error ? "username2-error" : undefined}
- />
+
+ ) =>
+ setUsername2(e.target.value)
+ }
+ onKeyDown={handleInputEscape(username2, setUsername2)}
+ aria-label={t("form.username2.label")}
+ aria-invalid={Boolean(username2Error)}
+ aria-describedby={username2Error ? "username2-error" : undefined}
+ aria-keyshortcuts={slashTargetsSecond ? "/" : undefined}
+ />
+ {slashTargetsSecond ? focusShortcutBadge : null}
+
{username2Error ? (
{username2Error}
@@ -247,8 +299,16 @@ export function CompareForm({
type="submit"
disabled={!canSubmit}
className="min-w-[160px] shadow-sm transition-transform hover:-translate-y-0.5"
+ aria-keyshortcuts="Control+Enter Meta+Enter"
+ title={t("shortcut.submit", { keys: submitShortcutLabel })}
>
{loading ? t("form.compare.ing") : t("form.compare")}
+
+ {submitShortcutLabel}
+