Raxol.Core.Accessibility.Behaviour behaviour (Raxol v0.3.0)

View Source

Defines the behaviour for accessibility services. This behaviour outlines the contract for modules that provide accessibility functionality such as screen reader announcements, feature toggles (high contrast, reduced motion, large text), and preference management related to accessibility.

Summary

Callbacks

Makes an announcement for screen readers.

Clears all pending announcements.

Disables accessibility features.

Enables accessibility features with the given options.

Gets the current color scheme based on accessibility settings.

Gets style settings for a component type.

Gets metadata for an element.

Gets the next announcement to be read by screen readers.

Gets an accessibility option value.

Gets the current text scale factor based on the large text setting.

Handles focus change events for accessibility announcements.

Checks if high contrast mode is enabled.

Checks if large text mode is enabled.

Checks if reduced motion mode is enabled.

Registers style settings for a component type.

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

Enables or disables high contrast mode.

Enables or disables large text mode.

Sets an accessibility option value.

Enables or disables reduced motion.

Callbacks

announce(message, opts, user_preferences_pid_or_name)

@callback announce(
  message :: String.t(),
  opts :: list(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Makes an announcement for screen readers.

clear_announcements()

@callback clear_announcements() :: :ok

Clears all pending announcements.

disable()

@callback disable() :: :ok

Disables accessibility features.

enable(options, user_preferences_pid_or_name)

@callback enable(
  options :: list(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Enables accessibility features with the given options.

get_color_scheme()

@callback get_color_scheme() :: map()

Gets the current color scheme based on accessibility settings.

get_component_style(component_type)

@callback get_component_style(component_type :: atom()) :: map()

Gets style settings for a component type.

get_element_metadata(element_id)

@callback get_element_metadata(element_id :: String.t()) :: map() | nil

Gets metadata for an element.

get_next_announcement()

@callback get_next_announcement() :: String.t() | nil

Gets the next announcement to be read by screen readers.

get_option(key, user_preferences_pid_or_name, default)

@callback get_option(
  key :: atom(),
  user_preferences_pid_or_name :: atom() | pid() | nil,
  default :: any()
) :: any()

Gets an accessibility option value.

get_text_scale(user_preferences_pid_or_name)

@callback get_text_scale(user_preferences_pid_or_name :: atom() | pid() | nil) :: float()

Gets the current text scale factor based on the large text setting.

handle_focus_change(event_payload)

@callback handle_focus_change(event_payload :: tuple()) :: :ok

Handles focus change events for accessibility announcements.

high_contrast_enabled?(user_preferences_pid_or_name)

@callback high_contrast_enabled?(user_preferences_pid_or_name :: atom() | pid() | nil) ::
  boolean()

Checks if high contrast mode is enabled.

large_text_enabled?(user_preferences_pid_or_name)

@callback large_text_enabled?(user_preferences_pid_or_name :: atom() | pid() | nil) ::
  boolean()

Checks if large text mode is enabled.

reduced_motion_enabled?(user_preferences_pid_or_name)

@callback reduced_motion_enabled?(user_preferences_pid_or_name :: atom() | pid() | nil) ::
  boolean()

Checks if reduced motion mode is enabled.

register_component_style(component_type, style)

@callback register_component_style(component_type :: atom(), style :: map()) :: :ok

Registers style settings for a component type.

register_element_metadata(element_id, metadata)

@callback register_element_metadata(
  element_id :: String.t(),
  metadata :: map()
) :: :ok

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

set_high_contrast(enabled, user_preferences_pid_or_name)

@callback set_high_contrast(
  enabled :: boolean(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Enables or disables high contrast mode.

set_large_text(enabled, user_preferences_pid_or_name)

@callback set_large_text(
  enabled :: boolean(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Enables or disables large text mode.

set_option(key, value, user_preferences_pid_or_name)

@callback set_option(
  key :: atom(),
  value :: any(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Sets an accessibility option value.

set_reduced_motion(enabled, user_preferences_pid_or_name)

@callback set_reduced_motion(
  enabled :: boolean(),
  user_preferences_pid_or_name :: atom() | pid() | nil
) :: :ok

Enables or disables reduced motion.