Skip to content

Commit 35b6e3f

Browse files
committed
a11y(output): add ARIA dialog roles and aria-label on close buttons
LabelaryNoticeModal and LabelPreviewModal now expose role=dialog, aria-modal and aria-labelledby so screen readers announce them as modal dialogs. The icon-only close buttons get a localized aria-label via a new app.close translation across all 32 locales.
1 parent 06e1fa8 commit 35b6e3f

34 files changed

Lines changed: 42 additions & 2 deletions

‎src/components/Output/LabelPreview.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,21 @@ export function LabelPreviewModal({ onClose }: Props) {
5454
<div
5555
className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
5656
onClick={onClose}
57+
role="dialog"
58+
aria-modal="true"
59+
aria-labelledby="label-preview-title"
5760
>
5861
<div
5962
className="bg-surface border border-border-2 rounded shadow-lg flex flex-col overflow-hidden max-w-[90vw] max-h-[90vh]"
6063
onClick={(e) => e.stopPropagation()}
6164
>
6265
<div className="flex items-center justify-between px-3 py-1.5 border-b border-border-2 shrink-0">
63-
<span className="font-mono text-[10px] text-muted uppercase tracking-widest">
66+
<span id="label-preview-title" className="font-mono text-[10px] text-muted uppercase tracking-widest">
6467
{t.output.previewHeading}
6568
</span>
6669
<button
6770
onClick={onClose}
71+
aria-label={t.app.close}
6872
className="p-0.5 rounded text-muted hover:text-text hover:bg-surface-2 transition-colors ml-6"
6973
>
7074
<XMarkIcon className="w-4 h-4" />

‎src/components/Output/LabelaryNoticeModal.tsx‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,21 @@ export function LabelaryNoticeModal({ onContinue, onClose }: Props) {
2828
<div
2929
className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
3030
onClick={onClose}
31+
role="dialog"
32+
aria-modal="true"
33+
aria-labelledby="labelary-notice-title"
3134
>
3235
<div
3336
className="bg-surface border border-border-2 rounded shadow-lg flex flex-col overflow-hidden max-w-[90vw]"
3437
onClick={(e) => e.stopPropagation()}
3538
>
3639
<div className="flex items-center justify-between px-3 py-1.5 border-b border-border-2 shrink-0">
37-
<span className="font-mono text-[10px] text-muted uppercase tracking-widest">
40+
<span id="labelary-notice-title" className="font-mono text-[10px] text-muted uppercase tracking-widest">
3841
{t.output.previewNoticeTitle}
3942
</span>
4043
<button
4144
onClick={onClose}
45+
aria-label={t.app.close}
4246
className="p-0.5 rounded text-muted hover:text-text hover:bg-surface-2 transition-colors ml-6"
4347
>
4448
<XMarkIcon className="w-4 h-4" />

‎src/locales/ar.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const ar = {
9797
newDesign: 'تصميم جديد',
9898
addPage: 'إضافة صفحة',
9999
cancel: 'إلغاء',
100+
close: 'إغلاق',
100101
deletePage: 'حذف الصفحة',
101102
deletePageConfirm: 'حذف الصفحة الحالية؟',
102103
openDesign: 'فتح تصميم',

‎src/locales/bg.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const bg = {
9797
newDesign: 'Нов дизайн',
9898
addPage: 'Добавяне на страница',
9999
cancel: 'Отказ',
100+
close: 'Затваряне',
100101
deletePage: 'Изтриване на страница',
101102
deletePageConfirm: 'Изтриване на текущата страница?',
102103
openDesign: 'Отвори дизайн',

‎src/locales/cs.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const cs = {
9797
newDesign: 'Nový návrh',
9898
addPage: 'Přidat stránku',
9999
cancel: 'Zrušit',
100+
close: 'Zavřít',
100101
deletePage: 'Smazat stránku',
101102
deletePageConfirm: 'Smazat aktuální stránku?',
102103
openDesign: 'Otevřít návrh',

‎src/locales/da.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const da = {
9797
newDesign: 'Nyt design',
9898
addPage: 'Tilføj side',
9999
cancel: 'Annuller',
100+
close: 'Luk',
100101
deletePage: 'Slet side',
101102
deletePageConfirm: 'Slet den aktuelle side?',
102103
openDesign: 'Åbn design',

‎src/locales/de.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const de = {
9797
newDesign: 'Neues Design',
9898
addPage: 'Seite hinzufügen',
9999
cancel: 'Abbrechen',
100+
close: 'Schließen',
100101
deletePage: 'Seite löschen',
101102
deletePageConfirm: 'Aktuelle Seite löschen?',
102103
openDesign: 'Design öffnen',

‎src/locales/el.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const el = {
9797
newDesign: 'Νέο σχέδιο',
9898
addPage: 'Προσθήκη σελίδας',
9999
cancel: 'Ακύρωση',
100+
close: 'Κλείσιμο',
100101
deletePage: 'Διαγραφή σελίδας',
101102
deletePageConfirm: 'Διαγραφή της τρέχουσας σελίδας;',
102103
openDesign: 'Άνοιγμα σχεδίου',

‎src/locales/en.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const en = {
9797
newDesign: 'New design',
9898
addPage: 'Add page',
9999
cancel: 'Cancel',
100+
close: 'Close',
100101
deletePage: 'Delete page',
101102
deletePageConfirm: 'Delete the current page?',
102103
openDesign: 'Open design',

‎src/locales/es.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ const es = {
9797
newDesign: 'Nuevo diseño',
9898
addPage: 'Añadir página',
9999
cancel: 'Cancelar',
100+
close: 'Cerrar',
100101
deletePage: 'Eliminar página',
101102
deletePageConfirm: '¿Eliminar la página actual?',
102103
openDesign: 'Abrir diseño',

0 commit comments

Comments
 (0)