From 9023e543526bde4c3a7f5734fce2c3c9f7364dd7 Mon Sep 17 00:00:00 2001 From: Cyril Date: Wed, 28 Jan 2026 11:40:54 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BF=EF=B8=8F(frontend)=20add=20screen=20r?= =?UTF-8?q?eader=20announcer=20store?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit create shared state for screen reader announcements. --- .../src/stores/screenReaderAnnouncer.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/frontend/src/stores/screenReaderAnnouncer.ts diff --git a/src/frontend/src/stores/screenReaderAnnouncer.ts b/src/frontend/src/stores/screenReaderAnnouncer.ts new file mode 100644 index 00000000..bdbca17d --- /dev/null +++ b/src/frontend/src/stores/screenReaderAnnouncer.ts @@ -0,0 +1,33 @@ +import { proxy } from 'valtio' + +type Politeness = 'polite' | 'assertive' + +type ScreenReaderAnnouncement = { + message: string + politeness: Politeness + id: number +} + +type ScreenReaderAnnouncerState = { + announcement: ScreenReaderAnnouncement +} + +export const screenReaderAnnouncerStore = proxy({ + announcement: { + message: '', + politeness: 'polite', + id: 0, + }, +}) + +export const announceToScreenReader = ( + message: string, + politeness: Politeness = 'polite' +) => { + screenReaderAnnouncerStore.announcement = { + message, + politeness, + id: screenReaderAnnouncerStore.announcement.id + 1, + } +} +