Note dialog — accessibility

Everything in dialog.a11y.md and formless-dialog.a11y.md holds (Escape order, focus trap, inert background, scroll lock, chip row). This page covers what the note and its voice input add.

Keyboard

  • Escape closes the window after flushing the autosave; there is no unsaved state to confirm.
  • Chips are buttons: Tab reaches Diktovat and Přidat audio after the link chips; Enter/Space activates them. While recording, the widened chip exposes pause/resume and Hotovo — přepsat as separate buttons.
  • Přidat audio with Plaud opens a menu: arrow keys move over Nahrát soubor / Z Plaudu, Enter picks, Escape closes the menu only.
  • Recording items: the native <audio controls> is keyboard operable; the transcript summary toggles with Enter/Space; Odebrat audio is an icon button with a confirmation dialog.

ARIA

  • The recordings block has aria-label Nahrávky poznámky; each remove button has aria-label Odebrat audio (icon only).
  • The dictation chip is labelled Diktovat; while recording it holds separate icon buttons with aria-label Pozastavit / Pokračovat and Hotovo — přepsat. The red dot and the level meter are decorative (aria-hidden); the leaving layer of the morph is aria-hidden and inert.
  • The Add audio menu is a Popover with role="menuitem" items and aria-label Přidat audio; the file input is hidden and triggered from the chip.
  • The save state in the header is a role="status" region: a screen reader hears the change in words (Ukládá se, Uloženo, Chyba, Konflikt).

Focus

  • Opening a new note focuses the body editor; opening an existing note leaves it in reading mode, and a click or the + menu moves focus into the editor.
  • Dictated text and the merged summary are appended without moving focus or the caret.
  • The Plaud picker is its own dialog; closing it returns focus to the chip row.

Contrast

  • Recording meta and stages use --fg-secondary / .acrm-muted on --surface-100; the live dictation dot is --critical and is always accompanied by the running clock, so the state is not colour-only.
  • The hairline above the recordings is --border; it separates, it does not carry meaning.

Known limits

  • Processing stages update by polling (every 2 s while something is processing); the change is not announced by a live region.
  • The transcript is plain text without speaker turns (meeting recordings have the dialogue view; note recordings are single-speaker dictaphone takes).
  • Microphone permission denial is reported by a toast; there is no in-dialog retry prompt.

Source: docs/dialog/note-dialog.a11y.md · GitLab