fix(react): address Doctor findings (#1143)

Accessibility/semantics pass aligned with React Doctor: role-based spans/divs become real buttons, role=status becomes <output>, modals use native <dialog>, author/peer flags render as <img>, and embed/challenge iframes are sandboxed. Includes review follow-ups: correct button chrome/centering/themed dialog colors and focus rings, the missing aria-label i18n keys (all languages), the Yandex image-search URL, clearer .bso setup steps, a keyboard-accessible image-search dropdown, and removal of the post-edit ('comment edited') display (mod edits unchanged).
This commit is contained in:
Tommaso Casaburi
2026-05-29 17:09:07 +07:00
committed by GitHub
parent ac95e58433
commit e082c7b428
132 changed files with 1753 additions and 1224 deletions
@@ -353,7 +353,9 @@ const MobileQuotePreview = ({
className={styles.backlink}
ref={refs.setReference}
onMouseOver={() => handleMouseOver(normalizedBacklinkReply?.cid)}
onFocus={() => handleMouseOver(normalizedBacklinkReply?.cid)}
onMouseLeave={() => handleMouseLeave(normalizedBacklinkReply?.cid)}
onBlur={() => handleMouseLeave(normalizedBacklinkReply?.cid)}
>
{`>>${normalizedBacklinkReply?.number ?? '?'}`}
</span>
@@ -404,7 +406,9 @@ const MobileQuotePreview = ({
ref={quotelinkUnavailable || quotelinkPendingResolution ? undefined : refs.setReference}
className={quotelinkPendingResolution ? styles.quoteLink : quotelinkClassName}
onMouseOver={quotelinkUnavailable || quotelinkPendingResolution ? undefined : () => handleMouseOver(resolvedQuotelinkCid)}
onFocus={quotelinkUnavailable || quotelinkPendingResolution ? undefined : () => handleMouseOver(resolvedQuotelinkCid)}
onMouseLeave={quotelinkUnavailable || quotelinkPendingResolution ? undefined : () => handleMouseLeave(resolvedQuotelinkCid)}
onBlur={quotelinkUnavailable || quotelinkPendingResolution ? undefined : () => handleMouseLeave(resolvedQuotelinkCid)}
>
{formatQuoteNumber(resolvedQuotelinkNumber)}
{isOP && ' (OP)'}