Raxol.Core.Accessibility (Raxol v0.2.0)

View Source

Accessibility module for Raxol terminal UI applications.

This module provides accessibility features including:

  • Screen reader announcements
  • Keyboard navigation enhancements
  • High contrast mode
  • Reduced motion support
  • Focus management
  • Large text support

Usage

# Enable accessibility features
Accessibility.enable()

# Make an announcement for screen readers
Accessibility.announce("You have selected the search button")

# Enable high contrast mode
Accessibility.set_high_contrast(true)

# Enable reduced motion mode
Accessibility.set_reduced_motion(true)

# Enable large text mode
Accessibility.set_large_text(true)

Summary

Functions

Make an announcement for screen readers.

Clear all pending announcements.

Disable accessibility features.

Enable accessibility features.

Get the current color scheme based on accessibility settings.

Get the next announcement to be read by screen readers.

Get an accessibility option value.

Get the current text scale factor.

Handle focus change events for accessibility announcements.

Register metadata for an element to be used for accessibility features.

Enable or disable high contrast mode.

Enable or disable large text mode.

Set an accessibility option value.

Enable or disable reduced motion.

Functions

announce(message, opts \\ [])

Make an announcement for screen readers.

This function adds a message to the announcement queue that will be read by screen readers.

Parameters

  • message - The message to announce
  • opts - Options for the announcement

Options

  • :priority - Priority level (:low, :medium, :high) (default: :medium)
  • :interrupt - Whether to interrupt current announcements (default: false)

Examples

iex> Accessibility.announce("Button clicked")
:ok

iex> Accessibility.announce("Error occurred", priority: :high, interrupt: true)
:ok

clear_announcements()

Clear all pending announcements.

Examples

iex> Accessibility.clear_announcements()
:ok

disable()

Disable accessibility features.

Examples

iex> Accessibility.disable()
:ok

enable(opts \\ [])

Enable accessibility features.

Options

  • :screen_reader - Enable screen reader support (default: true)
  • :high_contrast - Enable high contrast mode (default: false)
  • :reduced_motion - Reduce or disable animations (default: false)
  • :keyboard_focus - Enhanced keyboard focus indicators (default: true)
  • :large_text - Use larger text for better readability (default: false)

Examples

iex> Accessibility.enable()
:ok

iex> Accessibility.enable(high_contrast: true, reduced_motion: true)
:ok

get_color_scheme()

Get the current color scheme based on accessibility settings.

Examples

iex> Accessibility.get_color_scheme()
%{background: ...}  # Returns the current color scheme

get_next_announcement()

Get the next announcement to be read by screen readers.

This function is typically called by the screen reader integration.

Examples

iex> Accessibility.get_next_announcement()
"Button clicked"

get_option(key)

Get an accessibility option value.

Parameters

  • key - The option key to get

Examples

iex> Accessibility.get_option(:high_contrast)
false

get_text_scale()

Get the current text scale factor.

Examples

iex> Accessibility.get_text_scale()
1.0  # Default scale

iex> Accessibility.set_large_text(true)
iex> Accessibility.get_text_scale()
1.5  # Large text scale

handle_focus_change(old_focus, new_focus)

Handle focus change events for accessibility announcements.

Examples

iex> Accessibility.handle_focus_change(nil, "search_button")
:ok

register_metadata(element_id, metadata)

Register metadata for an element to be used for accessibility features.

Parameters

  • element_id - Unique identifier for the element
  • metadata - Metadata to associate with the element

Examples

iex> Accessibility.register_metadata("search_button", %{label: "Search"})
:ok

set_high_contrast(enabled)

Enable or disable high contrast mode.

Examples

iex> Accessibility.set_high_contrast(true)
:ok

set_large_text(enabled)

Enable or disable large text mode.

Examples

iex> Accessibility.set_large_text(true)
:ok

set_option(key, value)

Set an accessibility option value.

Parameters

  • key - The option key to set
  • value - The value to set

Examples

iex> Accessibility.set_option(:high_contrast, true)
:ok

set_reduced_motion(enabled)

Enable or disable reduced motion.

Examples

iex> Accessibility.set_reduced_motion(true)
:ok