️(frontend) hide decorative icons from screen readers per issue #730

Mark unnecessary decorative icons as aria-hidden following feedback
from @cyberbaloo to eliminate redundant screen reader announcements
that create noisy and annoying experience for users relying on
assistive technologies.
This commit is contained in:
lebaudantoine
2025-11-13 18:18:48 +01:00
committed by aleb_the_flash
parent 555daedeba
commit dad396273c
3 changed files with 39 additions and 7 deletions

View File

@@ -71,7 +71,11 @@ export const LaterMeetingDialog = ({
aria-label={t('copyUrl')} aria-label={t('copyUrl')}
tooltip={t('copyUrl')} tooltip={t('copyUrl')}
> >
{isRoomUrlCopied ? <RiCheckLine /> : <RiFileCopyLine />} {isRoomUrlCopied ? (
<RiCheckLine aria-hidden="true" />
) : (
<RiFileCopyLine aria-hidden="true" />
)}
</Button> </Button>
)} )}
</div> </div>
@@ -103,13 +107,18 @@ export const LaterMeetingDialog = ({
> >
{isCopied ? ( {isCopied ? (
<> <>
<RiCheckLine size={18} style={{ marginRight: '8px' }} /> <RiCheckLine
size={18}
style={{ marginRight: '8px' }}
aria-hidden="true"
/>
{t('copied')} {t('copied')}
</> </>
) : ( ) : (
<> <>
<RiFileCopyLine <RiFileCopyLine
style={{ marginRight: '6px', minWidth: '18px' }} style={{ marginRight: '6px', minWidth: '18px' }}
aria-hidden="true"
/> />
{t('copy')} {t('copy')}
</> </>
@@ -131,7 +140,11 @@ export const LaterMeetingDialog = ({
> >
{isCopied ? ( {isCopied ? (
<> <>
<RiCheckLine size={18} style={{ marginRight: '8px' }} /> <RiCheckLine
size={18}
style={{ marginRight: '8px' }}
aria-hidden="true"
/>
{t('copied')} {t('copied')}
</> </>
) : ( ) : (
@@ -139,6 +152,7 @@ export const LaterMeetingDialog = ({
<RiFileCopyLine <RiFileCopyLine
size={18} size={18}
style={{ marginRight: '8px', minWidth: '18px' }} style={{ marginRight: '8px', minWidth: '18px' }}
aria-hidden="true"
/> />
{isHovered ? ( {isHovered ? (
t('copy') t('copy')
@@ -173,6 +187,7 @@ export const LaterMeetingDialog = ({
className={css({ className={css({
fill: 'primary.500', fill: 'primary.500',
})} })}
aria-hidden="true"
/> />
</div> </div>
<Text variant="sm" style={{ marginTop: '1rem' }}> <Text variant="sm" style={{ marginTop: '1rem' }}>

View File

@@ -115,7 +115,11 @@ export const InviteDialog = (props: Omit<DialogProps, 'title'>) => {
aria-label={t('copyUrl')} aria-label={t('copyUrl')}
tooltip={t('copyUrl')} tooltip={t('copyUrl')}
> >
{isRoomUrlCopied ? <RiCheckLine /> : <RiFileCopyLine />} {isRoomUrlCopied ? (
<RiCheckLine aria-hidden="true" />
) : (
<RiFileCopyLine aria-hidden="true" />
)}
</Button> </Button>
)} )}
</div> </div>
@@ -147,13 +151,18 @@ export const InviteDialog = (props: Omit<DialogProps, 'title'>) => {
> >
{isCopied ? ( {isCopied ? (
<> <>
<RiCheckLine size={18} style={{ marginRight: '8px' }} /> <RiCheckLine
size={18}
style={{ marginRight: '8px' }}
aria-hidden="true"
/>
{t('copied')} {t('copied')}
</> </>
) : ( ) : (
<> <>
<RiFileCopyLine <RiFileCopyLine
style={{ marginRight: '6px', minWidth: '18px' }} style={{ marginRight: '6px', minWidth: '18px' }}
aria-hidden="true"
/> />
{t('copy')} {t('copy')}
</> </>

View File

@@ -78,12 +78,20 @@ export const Info = () => {
> >
{isCopied ? ( {isCopied ? (
<> <>
<RiCheckLine size={24} style={{ marginRight: '6px' }} /> <RiCheckLine
size={24}
style={{ marginRight: '6px' }}
aria-hidden="true"
/>
{t('roomInformation.button.copied')} {t('roomInformation.button.copied')}
</> </>
) : ( ) : (
<> <>
<RiFileCopyLine size={24} style={{ marginRight: '6px' }} /> <RiFileCopyLine
size={24}
style={{ marginRight: '6px' }}
aria-hidden="true"
/>
{t('roomInformation.button.copy')} {t('roomInformation.button.copy')}
</> </>
)} )}