1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//! Accessibility support for screen readers and assistive technologies
//!
//! This module provides screen reader integration for accessibility announcements,
//! accessibility tree generation, and A11y testing utilities.
//!
//! # Features
//!
//! | Feature | Description | Supported Platforms |
//!|---------|-------------|----------------------|
//! | **Screen Reader** | VoiceOver, Narrator, AT-SPI | macOS, Windows, Linux |
//! | **Auto-detection** | Detects available screen readers | All platforms |
//! | **Priority Levels** | Polite, Assertive, Urgent | All platforms |
//! | **A11y Testing** | Test accessibility features | All platforms |
//! | **Accessibility Tree** | Generate A11y tree from DOM | All platforms |
//! | **Keyboard Nav** | Test keyboard navigation | All platforms |
//!
//! # Supported Backends
//!
//! | Platform | Backend | Screen Reader |
//!|----------|---------|---------------|
//! | macOS | NSAccessibility | VoiceOver |
//! | Windows | UI Automation | Narrator |
//! | Linux | AT-SPI via Orca | Orca |
//! | All | Logging (for testing) | - |
//!
//! # Quick Start
//!
//! ## Auto-Detection
//!
//! ```rust,ignore
//! use revue::a11y::init;
//!
//! // Auto-detect and initialize
//! init();
//!
//! // Check if available
//! if is_available() {
//! println!("Screen reader: {:?}", active_screen_reader());
//! }
//! ```
//!
//! ## Announcements
//!
//! ```rust,ignore
//! use revue::a11y::{announce, announce_now};
//!
//! // Polite announcement (default)
//! announce("Button clicked");
//!
//! // Assertive announcement (immediate)
//! announce_now("Error occurred");
//!
//! // Custom priority
//! announce_to_screen_reader("Message", Priority::Urgent);
//! ```
//!
//! ## Accessibility Tree
//!
//! ```rust,ignore
//! use revue::a11y::AccessibilityTree;
//!
//! // Generate A11y tree from widget
//! let tree = AccessibilityTree::from_widget(&widget);
//!
//! // Get nodes for screen reader
//! let nodes = tree.get_a11y_nodes();
//! ```
//!
//! # Priority Levels
//!
//! | Priority | Description | Use Case |
//!|----------|-------------|----------|
//! | `Polite` | Low priority | Status updates, info |
//! | `Assertive` | Medium priority | Form errors, state changes |
//! | `Urgent` | High priority | Critical errors, warnings |
pub use ;
pub use ;
pub use ;
use cratePriority;
/// Initialize the screen reader system with auto-detection
/// Initialize with a specific backend type
/// Announce a message to the screen reader (polite)
/// Announce a message immediately (assertive)
/// Check if a screen reader is available
/// Get the name of the active screen reader
// Tests extracted to tests/a11y_public_api_tests.rs
// All tests use only public functions from revue::a11y