tapps-agents 3.5.40__py3-none-any.whl → 3.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tapps_agents/__init__.py +2 -2
- tapps_agents/agents/__init__.py +22 -22
- tapps_agents/agents/analyst/__init__.py +5 -5
- tapps_agents/agents/architect/__init__.py +5 -5
- tapps_agents/agents/architect/agent.py +1033 -1033
- tapps_agents/agents/architect/pattern_detector.py +75 -75
- tapps_agents/agents/cleanup/__init__.py +7 -7
- tapps_agents/agents/cleanup/agent.py +445 -445
- tapps_agents/agents/debugger/__init__.py +7 -7
- tapps_agents/agents/debugger/agent.py +310 -310
- tapps_agents/agents/debugger/error_analyzer.py +437 -437
- tapps_agents/agents/designer/__init__.py +5 -5
- tapps_agents/agents/designer/agent.py +786 -786
- tapps_agents/agents/designer/visual_designer.py +638 -638
- tapps_agents/agents/documenter/__init__.py +7 -7
- tapps_agents/agents/documenter/agent.py +531 -531
- tapps_agents/agents/documenter/doc_generator.py +472 -472
- tapps_agents/agents/documenter/doc_validator.py +393 -393
- tapps_agents/agents/documenter/framework_doc_updater.py +493 -493
- tapps_agents/agents/enhancer/__init__.py +7 -7
- tapps_agents/agents/evaluator/__init__.py +7 -7
- tapps_agents/agents/evaluator/agent.py +443 -443
- tapps_agents/agents/evaluator/priority_evaluator.py +641 -641
- tapps_agents/agents/evaluator/quality_analyzer.py +147 -147
- tapps_agents/agents/evaluator/report_generator.py +344 -344
- tapps_agents/agents/evaluator/usage_analyzer.py +192 -192
- tapps_agents/agents/evaluator/workflow_analyzer.py +189 -189
- tapps_agents/agents/implementer/__init__.py +7 -7
- tapps_agents/agents/implementer/agent.py +798 -798
- tapps_agents/agents/implementer/auto_fix.py +1119 -1119
- tapps_agents/agents/implementer/code_generator.py +73 -73
- tapps_agents/agents/improver/__init__.py +1 -1
- tapps_agents/agents/improver/agent.py +753 -753
- tapps_agents/agents/ops/__init__.py +1 -1
- tapps_agents/agents/ops/agent.py +619 -619
- tapps_agents/agents/ops/dependency_analyzer.py +600 -600
- tapps_agents/agents/orchestrator/__init__.py +5 -5
- tapps_agents/agents/orchestrator/agent.py +522 -522
- tapps_agents/agents/planner/__init__.py +7 -7
- tapps_agents/agents/planner/agent.py +1127 -1127
- tapps_agents/agents/reviewer/__init__.py +24 -24
- tapps_agents/agents/reviewer/agent.py +3513 -3513
- tapps_agents/agents/reviewer/aggregator.py +213 -213
- tapps_agents/agents/reviewer/batch_review.py +448 -448
- tapps_agents/agents/reviewer/cache.py +443 -443
- tapps_agents/agents/reviewer/context7_enhancer.py +630 -630
- tapps_agents/agents/reviewer/context_detector.py +203 -203
- tapps_agents/agents/reviewer/docker_compose_validator.py +158 -158
- tapps_agents/agents/reviewer/dockerfile_validator.py +176 -176
- tapps_agents/agents/reviewer/error_handling.py +126 -126
- tapps_agents/agents/reviewer/feedback_generator.py +490 -490
- tapps_agents/agents/reviewer/influxdb_validator.py +316 -316
- tapps_agents/agents/reviewer/issue_tracking.py +169 -169
- tapps_agents/agents/reviewer/library_detector.py +295 -295
- tapps_agents/agents/reviewer/library_patterns.py +268 -268
- tapps_agents/agents/reviewer/maintainability_scorer.py +593 -593
- tapps_agents/agents/reviewer/metric_strategies.py +276 -276
- tapps_agents/agents/reviewer/mqtt_validator.py +160 -160
- tapps_agents/agents/reviewer/output_enhancer.py +105 -105
- tapps_agents/agents/reviewer/pattern_detector.py +241 -241
- tapps_agents/agents/reviewer/performance_scorer.py +357 -357
- tapps_agents/agents/reviewer/phased_review.py +516 -516
- tapps_agents/agents/reviewer/progressive_review.py +435 -435
- tapps_agents/agents/reviewer/react_scorer.py +331 -331
- tapps_agents/agents/reviewer/score_constants.py +228 -228
- tapps_agents/agents/reviewer/score_validator.py +507 -507
- tapps_agents/agents/reviewer/scorer_registry.py +373 -373
- tapps_agents/agents/reviewer/scoring.py +1566 -1566
- tapps_agents/agents/reviewer/service_discovery.py +534 -534
- tapps_agents/agents/reviewer/tools/__init__.py +41 -41
- tapps_agents/agents/reviewer/tools/parallel_executor.py +581 -581
- tapps_agents/agents/reviewer/tools/ruff_grouping.py +250 -250
- tapps_agents/agents/reviewer/tools/scoped_mypy.py +284 -284
- tapps_agents/agents/reviewer/typescript_scorer.py +1142 -1142
- tapps_agents/agents/reviewer/validation.py +208 -208
- tapps_agents/agents/reviewer/websocket_validator.py +132 -132
- tapps_agents/agents/tester/__init__.py +7 -7
- tapps_agents/agents/tester/accessibility_auditor.py +309 -309
- tapps_agents/agents/tester/agent.py +1080 -1080
- tapps_agents/agents/tester/batch_generator.py +54 -54
- tapps_agents/agents/tester/context_learner.py +51 -51
- tapps_agents/agents/tester/coverage_analyzer.py +386 -386
- tapps_agents/agents/tester/coverage_test_generator.py +290 -290
- tapps_agents/agents/tester/debug_enhancer.py +238 -238
- tapps_agents/agents/tester/device_emulator.py +241 -241
- tapps_agents/agents/tester/integration_generator.py +62 -62
- tapps_agents/agents/tester/network_recorder.py +300 -300
- tapps_agents/agents/tester/performance_monitor.py +320 -320
- tapps_agents/agents/tester/test_fixer.py +316 -316
- tapps_agents/agents/tester/test_generator.py +632 -632
- tapps_agents/agents/tester/trace_manager.py +234 -234
- tapps_agents/agents/tester/visual_regression.py +291 -291
- tapps_agents/analysis/pattern_detector.py +36 -36
- tapps_agents/beads/hydration.py +213 -213
- tapps_agents/beads/parse.py +32 -32
- tapps_agents/beads/specs.py +206 -206
- tapps_agents/cli/__init__.py +9 -9
- tapps_agents/cli/__main__.py +8 -8
- tapps_agents/cli/base.py +478 -478
- tapps_agents/cli/command_classifier.py +72 -72
- tapps_agents/cli/commands/__init__.py +2 -2
- tapps_agents/cli/commands/analyst.py +173 -173
- tapps_agents/cli/commands/architect.py +109 -109
- tapps_agents/cli/commands/cleanup_agent.py +92 -92
- tapps_agents/cli/commands/common.py +126 -126
- tapps_agents/cli/commands/debugger.py +90 -90
- tapps_agents/cli/commands/designer.py +112 -112
- tapps_agents/cli/commands/documenter.py +136 -136
- tapps_agents/cli/commands/enhancer.py +110 -110
- tapps_agents/cli/commands/evaluator.py +255 -255
- tapps_agents/cli/commands/health.py +665 -665
- tapps_agents/cli/commands/implementer.py +301 -301
- tapps_agents/cli/commands/improver.py +91 -91
- tapps_agents/cli/commands/knowledge.py +111 -111
- tapps_agents/cli/commands/learning.py +172 -172
- tapps_agents/cli/commands/observability.py +283 -283
- tapps_agents/cli/commands/ops.py +135 -135
- tapps_agents/cli/commands/orchestrator.py +116 -116
- tapps_agents/cli/commands/planner.py +237 -237
- tapps_agents/cli/commands/reviewer.py +1872 -1872
- tapps_agents/cli/commands/status.py +285 -285
- tapps_agents/cli/commands/task.py +227 -219
- tapps_agents/cli/commands/tester.py +191 -191
- tapps_agents/cli/commands/top_level.py +3586 -3586
- tapps_agents/cli/feedback.py +936 -936
- tapps_agents/cli/formatters.py +608 -608
- tapps_agents/cli/help/__init__.py +7 -7
- tapps_agents/cli/help/static_help.py +425 -425
- tapps_agents/cli/network_detection.py +110 -110
- tapps_agents/cli/output_compactor.py +274 -274
- tapps_agents/cli/parsers/__init__.py +2 -2
- tapps_agents/cli/parsers/analyst.py +186 -186
- tapps_agents/cli/parsers/architect.py +167 -167
- tapps_agents/cli/parsers/cleanup_agent.py +228 -228
- tapps_agents/cli/parsers/debugger.py +116 -116
- tapps_agents/cli/parsers/designer.py +182 -182
- tapps_agents/cli/parsers/documenter.py +134 -134
- tapps_agents/cli/parsers/enhancer.py +113 -113
- tapps_agents/cli/parsers/evaluator.py +213 -213
- tapps_agents/cli/parsers/implementer.py +168 -168
- tapps_agents/cli/parsers/improver.py +132 -132
- tapps_agents/cli/parsers/ops.py +159 -159
- tapps_agents/cli/parsers/orchestrator.py +98 -98
- tapps_agents/cli/parsers/planner.py +145 -145
- tapps_agents/cli/parsers/reviewer.py +462 -462
- tapps_agents/cli/parsers/tester.py +124 -124
- tapps_agents/cli/progress_heartbeat.py +254 -254
- tapps_agents/cli/streaming_progress.py +336 -336
- tapps_agents/cli/utils/__init__.py +6 -6
- tapps_agents/cli/utils/agent_lifecycle.py +48 -48
- tapps_agents/cli/utils/error_formatter.py +82 -82
- tapps_agents/cli/utils/error_recovery.py +188 -188
- tapps_agents/cli/utils/output_handler.py +59 -59
- tapps_agents/cli/utils/prompt_enhancer.py +319 -319
- tapps_agents/cli/validators/__init__.py +9 -9
- tapps_agents/cli/validators/command_validator.py +81 -81
- tapps_agents/context7/__init__.py +112 -112
- tapps_agents/context7/agent_integration.py +869 -869
- tapps_agents/context7/analytics.py +382 -382
- tapps_agents/context7/analytics_dashboard.py +299 -299
- tapps_agents/context7/async_cache.py +681 -681
- tapps_agents/context7/backup_client.py +958 -958
- tapps_agents/context7/cache_locking.py +194 -194
- tapps_agents/context7/cache_metadata.py +214 -214
- tapps_agents/context7/cache_prewarm.py +488 -488
- tapps_agents/context7/cache_structure.py +168 -168
- tapps_agents/context7/cache_warming.py +604 -604
- tapps_agents/context7/circuit_breaker.py +376 -376
- tapps_agents/context7/cleanup.py +461 -461
- tapps_agents/context7/commands.py +858 -858
- tapps_agents/context7/credential_validation.py +276 -276
- tapps_agents/context7/cross_reference_resolver.py +168 -168
- tapps_agents/context7/cross_references.py +424 -424
- tapps_agents/context7/doc_manager.py +225 -225
- tapps_agents/context7/fuzzy_matcher.py +369 -369
- tapps_agents/context7/kb_cache.py +404 -404
- tapps_agents/context7/language_detector.py +219 -219
- tapps_agents/context7/library_detector.py +725 -725
- tapps_agents/context7/lookup.py +738 -738
- tapps_agents/context7/metadata.py +258 -258
- tapps_agents/context7/refresh_queue.py +300 -300
- tapps_agents/context7/security.py +373 -373
- tapps_agents/context7/staleness_policies.py +278 -278
- tapps_agents/context7/tiles_integration.py +47 -47
- tapps_agents/continuous_bug_fix/__init__.py +20 -20
- tapps_agents/continuous_bug_fix/bug_finder.py +306 -306
- tapps_agents/continuous_bug_fix/bug_fix_coordinator.py +177 -177
- tapps_agents/continuous_bug_fix/commit_manager.py +178 -178
- tapps_agents/continuous_bug_fix/continuous_bug_fixer.py +322 -322
- tapps_agents/continuous_bug_fix/proactive_bug_finder.py +285 -285
- tapps_agents/core/__init__.py +298 -298
- tapps_agents/core/adaptive_cache_config.py +432 -432
- tapps_agents/core/agent_base.py +647 -647
- tapps_agents/core/agent_cache.py +466 -466
- tapps_agents/core/agent_learning.py +1865 -1865
- tapps_agents/core/analytics_dashboard.py +563 -563
- tapps_agents/core/analytics_enhancements.py +597 -597
- tapps_agents/core/anonymization.py +274 -274
- tapps_agents/core/artifact_context_builder.py +293 -0
- tapps_agents/core/ast_parser.py +228 -228
- tapps_agents/core/async_file_ops.py +402 -402
- tapps_agents/core/best_practice_consultant.py +299 -299
- tapps_agents/core/brownfield_analyzer.py +299 -299
- tapps_agents/core/brownfield_review.py +541 -541
- tapps_agents/core/browser_controller.py +513 -513
- tapps_agents/core/capability_registry.py +418 -418
- tapps_agents/core/change_impact_analyzer.py +190 -190
- tapps_agents/core/checkpoint_manager.py +377 -377
- tapps_agents/core/code_generator.py +329 -329
- tapps_agents/core/code_validator.py +276 -276
- tapps_agents/core/command_registry.py +327 -327
- tapps_agents/core/config.py +33 -0
- tapps_agents/core/context_gathering/__init__.py +2 -2
- tapps_agents/core/context_gathering/repository_explorer.py +28 -28
- tapps_agents/core/context_intelligence/__init__.py +2 -2
- tapps_agents/core/context_intelligence/relevance_scorer.py +24 -24
- tapps_agents/core/context_intelligence/token_budget_manager.py +27 -27
- tapps_agents/core/context_manager.py +240 -240
- tapps_agents/core/cursor_feedback_monitor.py +146 -146
- tapps_agents/core/cursor_verification.py +290 -290
- tapps_agents/core/customization_loader.py +280 -280
- tapps_agents/core/customization_schema.py +260 -260
- tapps_agents/core/customization_template.py +238 -238
- tapps_agents/core/debug_logger.py +124 -124
- tapps_agents/core/design_validator.py +298 -298
- tapps_agents/core/diagram_generator.py +226 -226
- tapps_agents/core/docker_utils.py +232 -232
- tapps_agents/core/document_generator.py +617 -617
- tapps_agents/core/domain_detector.py +30 -30
- tapps_agents/core/error_envelope.py +454 -454
- tapps_agents/core/error_handler.py +270 -270
- tapps_agents/core/estimation_tracker.py +189 -189
- tapps_agents/core/eval_prompt_engine.py +116 -116
- tapps_agents/core/evaluation_base.py +119 -119
- tapps_agents/core/evaluation_models.py +320 -320
- tapps_agents/core/evaluation_orchestrator.py +225 -225
- tapps_agents/core/evaluators/__init__.py +7 -7
- tapps_agents/core/evaluators/architectural_evaluator.py +205 -205
- tapps_agents/core/evaluators/behavioral_evaluator.py +160 -160
- tapps_agents/core/evaluators/performance_profile_evaluator.py +160 -160
- tapps_agents/core/evaluators/security_posture_evaluator.py +148 -148
- tapps_agents/core/evaluators/spec_compliance_evaluator.py +181 -181
- tapps_agents/core/exceptions.py +107 -107
- tapps_agents/core/expert_config_generator.py +293 -293
- tapps_agents/core/export_schema.py +202 -202
- tapps_agents/core/external_feedback_models.py +102 -102
- tapps_agents/core/external_feedback_storage.py +213 -213
- tapps_agents/core/fallback_strategy.py +314 -314
- tapps_agents/core/feedback_analyzer.py +162 -162
- tapps_agents/core/feedback_collector.py +178 -178
- tapps_agents/core/git_operations.py +445 -445
- tapps_agents/core/hardware_profiler.py +151 -151
- tapps_agents/core/instructions.py +324 -324
- tapps_agents/core/io_guardrails.py +69 -69
- tapps_agents/core/issue_manifest.py +249 -249
- tapps_agents/core/issue_schema.py +139 -139
- tapps_agents/core/json_utils.py +128 -128
- tapps_agents/core/knowledge_graph.py +446 -446
- tapps_agents/core/language_detector.py +296 -296
- tapps_agents/core/learning_confidence.py +242 -242
- tapps_agents/core/learning_dashboard.py +246 -246
- tapps_agents/core/learning_decision.py +384 -384
- tapps_agents/core/learning_explainability.py +578 -578
- tapps_agents/core/learning_export.py +287 -287
- tapps_agents/core/learning_integration.py +228 -228
- tapps_agents/core/llm_behavior.py +232 -232
- tapps_agents/core/long_duration_support.py +786 -786
- tapps_agents/core/mcp_setup.py +106 -106
- tapps_agents/core/memory_integration.py +396 -396
- tapps_agents/core/meta_learning.py +666 -666
- tapps_agents/core/module_path_sanitizer.py +199 -199
- tapps_agents/core/multi_agent_orchestrator.py +382 -382
- tapps_agents/core/network_errors.py +125 -125
- tapps_agents/core/nfr_validator.py +336 -336
- tapps_agents/core/offline_mode.py +158 -158
- tapps_agents/core/output_contracts.py +300 -300
- tapps_agents/core/output_formatter.py +300 -300
- tapps_agents/core/path_normalizer.py +174 -174
- tapps_agents/core/path_validator.py +322 -322
- tapps_agents/core/pattern_library.py +250 -250
- tapps_agents/core/performance_benchmark.py +301 -301
- tapps_agents/core/performance_monitor.py +184 -184
- tapps_agents/core/playwright_mcp_controller.py +771 -771
- tapps_agents/core/policy_loader.py +135 -135
- tapps_agents/core/progress.py +166 -166
- tapps_agents/core/project_profile.py +354 -354
- tapps_agents/core/project_type_detector.py +454 -454
- tapps_agents/core/prompt_base.py +223 -223
- tapps_agents/core/prompt_learning/__init__.py +2 -2
- tapps_agents/core/prompt_learning/learning_loop.py +24 -24
- tapps_agents/core/prompt_learning/project_prompt_store.py +25 -25
- tapps_agents/core/prompt_learning/skills_prompt_analyzer.py +35 -35
- tapps_agents/core/prompt_optimization/__init__.py +6 -6
- tapps_agents/core/prompt_optimization/ab_tester.py +114 -114
- tapps_agents/core/prompt_optimization/correlation_analyzer.py +160 -160
- tapps_agents/core/prompt_optimization/progressive_refiner.py +129 -129
- tapps_agents/core/prompt_optimization/prompt_library.py +37 -37
- tapps_agents/core/requirements_evaluator.py +431 -431
- tapps_agents/core/resource_aware_executor.py +449 -449
- tapps_agents/core/resource_monitor.py +343 -343
- tapps_agents/core/resume_handler.py +298 -298
- tapps_agents/core/retry_handler.py +197 -197
- tapps_agents/core/review_checklists.py +479 -479
- tapps_agents/core/role_loader.py +201 -201
- tapps_agents/core/role_template_loader.py +201 -201
- tapps_agents/core/runtime_mode.py +60 -60
- tapps_agents/core/security_scanner.py +342 -342
- tapps_agents/core/skill_agent_registry.py +194 -194
- tapps_agents/core/skill_integration.py +208 -208
- tapps_agents/core/skill_loader.py +492 -492
- tapps_agents/core/skill_template.py +341 -341
- tapps_agents/core/skill_validator.py +478 -478
- tapps_agents/core/stack_analyzer.py +35 -35
- tapps_agents/core/startup.py +174 -174
- tapps_agents/core/storage_manager.py +397 -397
- tapps_agents/core/storage_models.py +166 -166
- tapps_agents/core/story_evaluator.py +410 -410
- tapps_agents/core/subprocess_utils.py +170 -170
- tapps_agents/core/task_duration.py +296 -296
- tapps_agents/core/task_memory.py +582 -582
- tapps_agents/core/task_state.py +226 -226
- tapps_agents/core/tech_stack_priorities.py +208 -208
- tapps_agents/core/temp_directory.py +194 -194
- tapps_agents/core/template_merger.py +600 -600
- tapps_agents/core/template_selector.py +280 -280
- tapps_agents/core/test_generator.py +286 -286
- tapps_agents/core/tiered_context.py +253 -253
- tapps_agents/core/token_monitor.py +345 -345
- tapps_agents/core/traceability.py +254 -254
- tapps_agents/core/trajectory_tracker.py +50 -50
- tapps_agents/core/unicode_safe.py +143 -143
- tapps_agents/core/unified_cache_config.py +170 -170
- tapps_agents/core/unified_state.py +324 -324
- tapps_agents/core/validate_cursor_setup.py +237 -237
- tapps_agents/core/validation_registry.py +136 -136
- tapps_agents/core/validators/__init__.py +4 -4
- tapps_agents/core/validators/python_validator.py +87 -87
- tapps_agents/core/verification_agent.py +90 -90
- tapps_agents/core/visual_feedback.py +644 -644
- tapps_agents/core/workflow_validator.py +197 -197
- tapps_agents/core/worktree.py +367 -367
- tapps_agents/docker/__init__.py +10 -10
- tapps_agents/docker/analyzer.py +186 -186
- tapps_agents/docker/debugger.py +229 -229
- tapps_agents/docker/error_patterns.py +216 -216
- tapps_agents/epic/__init__.py +22 -22
- tapps_agents/epic/beads_sync.py +115 -115
- tapps_agents/epic/markdown_sync.py +105 -105
- tapps_agents/epic/models.py +96 -96
- tapps_agents/experts/__init__.py +163 -163
- tapps_agents/experts/agent_integration.py +243 -243
- tapps_agents/experts/auto_generator.py +331 -331
- tapps_agents/experts/base_expert.py +536 -536
- tapps_agents/experts/builtin_registry.py +261 -261
- tapps_agents/experts/business_metrics.py +565 -565
- tapps_agents/experts/cache.py +266 -266
- tapps_agents/experts/confidence_breakdown.py +306 -306
- tapps_agents/experts/confidence_calculator.py +336 -336
- tapps_agents/experts/confidence_metrics.py +236 -236
- tapps_agents/experts/domain_config.py +311 -311
- tapps_agents/experts/domain_detector.py +550 -550
- tapps_agents/experts/domain_utils.py +84 -84
- tapps_agents/experts/expert_config.py +113 -113
- tapps_agents/experts/expert_engine.py +465 -465
- tapps_agents/experts/expert_registry.py +744 -744
- tapps_agents/experts/expert_synthesizer.py +70 -70
- tapps_agents/experts/governance.py +197 -197
- tapps_agents/experts/history_logger.py +312 -312
- tapps_agents/experts/knowledge/README.md +180 -180
- tapps_agents/experts/knowledge/accessibility/accessible-forms.md +331 -331
- tapps_agents/experts/knowledge/accessibility/aria-patterns.md +344 -344
- tapps_agents/experts/knowledge/accessibility/color-contrast.md +285 -285
- tapps_agents/experts/knowledge/accessibility/keyboard-navigation.md +332 -332
- tapps_agents/experts/knowledge/accessibility/screen-readers.md +282 -282
- tapps_agents/experts/knowledge/accessibility/semantic-html.md +355 -355
- tapps_agents/experts/knowledge/accessibility/testing-accessibility.md +369 -369
- tapps_agents/experts/knowledge/accessibility/wcag-2.1.md +296 -296
- tapps_agents/experts/knowledge/accessibility/wcag-2.2.md +211 -211
- tapps_agents/experts/knowledge/agent-learning/best-practices.md +715 -715
- tapps_agents/experts/knowledge/agent-learning/pattern-extraction.md +282 -282
- tapps_agents/experts/knowledge/agent-learning/prompt-optimization.md +320 -320
- tapps_agents/experts/knowledge/ai-frameworks/model-optimization.md +90 -90
- tapps_agents/experts/knowledge/ai-frameworks/openvino-patterns.md +260 -260
- tapps_agents/experts/knowledge/api-design-integration/api-gateway-patterns.md +309 -309
- tapps_agents/experts/knowledge/api-design-integration/api-security-patterns.md +521 -521
- tapps_agents/experts/knowledge/api-design-integration/api-versioning.md +421 -421
- tapps_agents/experts/knowledge/api-design-integration/async-protocol-patterns.md +61 -61
- tapps_agents/experts/knowledge/api-design-integration/contract-testing.md +221 -221
- tapps_agents/experts/knowledge/api-design-integration/external-api-integration.md +489 -489
- tapps_agents/experts/knowledge/api-design-integration/fastapi-patterns.md +360 -360
- tapps_agents/experts/knowledge/api-design-integration/fastapi-testing.md +262 -262
- tapps_agents/experts/knowledge/api-design-integration/graphql-patterns.md +582 -582
- tapps_agents/experts/knowledge/api-design-integration/grpc-best-practices.md +499 -499
- tapps_agents/experts/knowledge/api-design-integration/mqtt-patterns.md +455 -455
- tapps_agents/experts/knowledge/api-design-integration/rate-limiting.md +507 -507
- tapps_agents/experts/knowledge/api-design-integration/restful-api-design.md +618 -618
- tapps_agents/experts/knowledge/api-design-integration/websocket-patterns.md +480 -480
- tapps_agents/experts/knowledge/cloud-infrastructure/cloud-native-patterns.md +175 -175
- tapps_agents/experts/knowledge/cloud-infrastructure/container-health-checks.md +261 -261
- tapps_agents/experts/knowledge/cloud-infrastructure/containerization.md +222 -222
- tapps_agents/experts/knowledge/cloud-infrastructure/cost-optimization.md +122 -122
- tapps_agents/experts/knowledge/cloud-infrastructure/disaster-recovery.md +153 -153
- tapps_agents/experts/knowledge/cloud-infrastructure/dockerfile-patterns.md +285 -285
- tapps_agents/experts/knowledge/cloud-infrastructure/infrastructure-as-code.md +187 -187
- tapps_agents/experts/knowledge/cloud-infrastructure/kubernetes-patterns.md +253 -253
- tapps_agents/experts/knowledge/cloud-infrastructure/multi-cloud-strategies.md +155 -155
- tapps_agents/experts/knowledge/cloud-infrastructure/serverless-architecture.md +200 -200
- tapps_agents/experts/knowledge/code-quality-analysis/README.md +16 -16
- tapps_agents/experts/knowledge/code-quality-analysis/code-metrics.md +137 -137
- tapps_agents/experts/knowledge/code-quality-analysis/complexity-analysis.md +181 -181
- tapps_agents/experts/knowledge/code-quality-analysis/technical-debt-patterns.md +191 -191
- tapps_agents/experts/knowledge/data-privacy-compliance/anonymization.md +313 -313
- tapps_agents/experts/knowledge/data-privacy-compliance/ccpa.md +255 -255
- tapps_agents/experts/knowledge/data-privacy-compliance/consent-management.md +282 -282
- tapps_agents/experts/knowledge/data-privacy-compliance/data-minimization.md +275 -275
- tapps_agents/experts/knowledge/data-privacy-compliance/data-retention.md +297 -297
- tapps_agents/experts/knowledge/data-privacy-compliance/data-subject-rights.md +383 -383
- tapps_agents/experts/knowledge/data-privacy-compliance/encryption-privacy.md +285 -285
- tapps_agents/experts/knowledge/data-privacy-compliance/gdpr.md +344 -344
- tapps_agents/experts/knowledge/data-privacy-compliance/hipaa.md +385 -385
- tapps_agents/experts/knowledge/data-privacy-compliance/privacy-by-design.md +280 -280
- tapps_agents/experts/knowledge/database-data-management/acid-vs-cap.md +164 -164
- tapps_agents/experts/knowledge/database-data-management/backup-and-recovery.md +182 -182
- tapps_agents/experts/knowledge/database-data-management/data-modeling.md +172 -172
- tapps_agents/experts/knowledge/database-data-management/database-design.md +187 -187
- tapps_agents/experts/knowledge/database-data-management/flux-query-optimization.md +342 -342
- tapps_agents/experts/knowledge/database-data-management/influxdb-connection-patterns.md +432 -432
- tapps_agents/experts/knowledge/database-data-management/influxdb-patterns.md +442 -442
- tapps_agents/experts/knowledge/database-data-management/migration-strategies.md +216 -216
- tapps_agents/experts/knowledge/database-data-management/nosql-patterns.md +259 -259
- tapps_agents/experts/knowledge/database-data-management/scalability-patterns.md +184 -184
- tapps_agents/experts/knowledge/database-data-management/sql-optimization.md +175 -175
- tapps_agents/experts/knowledge/database-data-management/time-series-modeling.md +444 -444
- tapps_agents/experts/knowledge/development-workflow/README.md +16 -16
- tapps_agents/experts/knowledge/development-workflow/automation-best-practices.md +216 -216
- tapps_agents/experts/knowledge/development-workflow/build-strategies.md +198 -198
- tapps_agents/experts/knowledge/development-workflow/deployment-patterns.md +205 -205
- tapps_agents/experts/knowledge/development-workflow/git-workflows.md +205 -205
- tapps_agents/experts/knowledge/documentation-knowledge-management/README.md +16 -16
- tapps_agents/experts/knowledge/documentation-knowledge-management/api-documentation-patterns.md +231 -231
- tapps_agents/experts/knowledge/documentation-knowledge-management/documentation-standards.md +191 -191
- tapps_agents/experts/knowledge/documentation-knowledge-management/knowledge-management.md +171 -171
- tapps_agents/experts/knowledge/documentation-knowledge-management/technical-writing-guide.md +192 -192
- tapps_agents/experts/knowledge/observability-monitoring/alerting-patterns.md +461 -461
- tapps_agents/experts/knowledge/observability-monitoring/apm-tools.md +459 -459
- tapps_agents/experts/knowledge/observability-monitoring/distributed-tracing.md +367 -367
- tapps_agents/experts/knowledge/observability-monitoring/logging-strategies.md +478 -478
- tapps_agents/experts/knowledge/observability-monitoring/metrics-and-monitoring.md +510 -510
- tapps_agents/experts/knowledge/observability-monitoring/observability-best-practices.md +492 -492
- tapps_agents/experts/knowledge/observability-monitoring/open-telemetry.md +573 -573
- tapps_agents/experts/knowledge/observability-monitoring/slo-sli-sla.md +419 -419
- tapps_agents/experts/knowledge/performance/anti-patterns.md +284 -284
- tapps_agents/experts/knowledge/performance/api-performance.md +256 -256
- tapps_agents/experts/knowledge/performance/caching.md +327 -327
- tapps_agents/experts/knowledge/performance/database-performance.md +252 -252
- tapps_agents/experts/knowledge/performance/optimization-patterns.md +327 -327
- tapps_agents/experts/knowledge/performance/profiling.md +297 -297
- tapps_agents/experts/knowledge/performance/resource-management.md +293 -293
- tapps_agents/experts/knowledge/performance/scalability.md +306 -306
- tapps_agents/experts/knowledge/security/owasp-top10.md +209 -209
- tapps_agents/experts/knowledge/security/secure-coding-practices.md +207 -207
- tapps_agents/experts/knowledge/security/threat-modeling.md +220 -220
- tapps_agents/experts/knowledge/security/vulnerability-patterns.md +342 -342
- tapps_agents/experts/knowledge/software-architecture/docker-compose-patterns.md +314 -314
- tapps_agents/experts/knowledge/software-architecture/microservices-patterns.md +379 -379
- tapps_agents/experts/knowledge/software-architecture/service-communication.md +316 -316
- tapps_agents/experts/knowledge/testing/best-practices.md +310 -310
- tapps_agents/experts/knowledge/testing/coverage-analysis.md +293 -293
- tapps_agents/experts/knowledge/testing/mocking.md +256 -256
- tapps_agents/experts/knowledge/testing/test-automation.md +276 -276
- tapps_agents/experts/knowledge/testing/test-data.md +271 -271
- tapps_agents/experts/knowledge/testing/test-design-patterns.md +280 -280
- tapps_agents/experts/knowledge/testing/test-maintenance.md +236 -236
- tapps_agents/experts/knowledge/testing/test-strategies.md +311 -311
- tapps_agents/experts/knowledge/user-experience/information-architecture.md +325 -325
- tapps_agents/experts/knowledge/user-experience/interaction-design.md +363 -363
- tapps_agents/experts/knowledge/user-experience/prototyping.md +293 -293
- tapps_agents/experts/knowledge/user-experience/usability-heuristics.md +337 -337
- tapps_agents/experts/knowledge/user-experience/usability-testing.md +311 -311
- tapps_agents/experts/knowledge/user-experience/user-journeys.md +296 -296
- tapps_agents/experts/knowledge/user-experience/user-research.md +373 -373
- tapps_agents/experts/knowledge/user-experience/ux-principles.md +340 -340
- tapps_agents/experts/knowledge_freshness.py +321 -321
- tapps_agents/experts/knowledge_ingestion.py +438 -438
- tapps_agents/experts/knowledge_need_detector.py +93 -93
- tapps_agents/experts/knowledge_validator.py +382 -382
- tapps_agents/experts/observability.py +440 -440
- tapps_agents/experts/passive_notifier.py +238 -238
- tapps_agents/experts/proactive_orchestrator.py +32 -32
- tapps_agents/experts/rag_chunker.py +205 -205
- tapps_agents/experts/rag_embedder.py +152 -152
- tapps_agents/experts/rag_evaluation.py +299 -299
- tapps_agents/experts/rag_index.py +303 -303
- tapps_agents/experts/rag_metrics.py +293 -293
- tapps_agents/experts/rag_safety.py +263 -263
- tapps_agents/experts/report_generator.py +296 -296
- tapps_agents/experts/setup_wizard.py +441 -441
- tapps_agents/experts/simple_rag.py +431 -431
- tapps_agents/experts/vector_rag.py +354 -354
- tapps_agents/experts/weight_distributor.py +304 -304
- tapps_agents/health/__init__.py +24 -24
- tapps_agents/health/base.py +75 -75
- tapps_agents/health/checks/__init__.py +22 -22
- tapps_agents/health/checks/automation.py +127 -127
- tapps_agents/health/checks/context7_cache.py +210 -210
- tapps_agents/health/checks/environment.py +116 -116
- tapps_agents/health/checks/execution.py +170 -170
- tapps_agents/health/checks/knowledge_base.py +187 -187
- tapps_agents/health/checks/outcomes.py +324 -324
- tapps_agents/health/collector.py +280 -280
- tapps_agents/health/dashboard.py +137 -137
- tapps_agents/health/metrics.py +151 -151
- tapps_agents/health/orchestrator.py +271 -271
- tapps_agents/health/registry.py +166 -166
- tapps_agents/hooks/__init__.py +33 -33
- tapps_agents/hooks/config.py +140 -140
- tapps_agents/hooks/events.py +135 -135
- tapps_agents/hooks/executor.py +128 -128
- tapps_agents/hooks/manager.py +143 -143
- tapps_agents/integration/__init__.py +8 -8
- tapps_agents/integration/service_integrator.py +121 -121
- tapps_agents/integrations/__init__.py +10 -10
- tapps_agents/integrations/clawdbot.py +525 -525
- tapps_agents/integrations/memory_bridge.py +356 -356
- tapps_agents/mcp/__init__.py +18 -18
- tapps_agents/mcp/gateway.py +112 -112
- tapps_agents/mcp/servers/__init__.py +13 -13
- tapps_agents/mcp/servers/analysis.py +204 -204
- tapps_agents/mcp/servers/context7.py +198 -198
- tapps_agents/mcp/servers/filesystem.py +218 -218
- tapps_agents/mcp/servers/git.py +201 -201
- tapps_agents/mcp/tool_registry.py +115 -115
- tapps_agents/quality/__init__.py +54 -54
- tapps_agents/quality/coverage_analyzer.py +379 -379
- tapps_agents/quality/enforcement.py +82 -82
- tapps_agents/quality/gates/__init__.py +37 -37
- tapps_agents/quality/gates/approval_gate.py +255 -255
- tapps_agents/quality/gates/base.py +84 -84
- tapps_agents/quality/gates/exceptions.py +43 -43
- tapps_agents/quality/gates/policy_gate.py +195 -195
- tapps_agents/quality/gates/registry.py +239 -239
- tapps_agents/quality/gates/security_gate.py +156 -156
- tapps_agents/quality/quality_gates.py +369 -369
- tapps_agents/quality/secret_scanner.py +335 -335
- tapps_agents/session/__init__.py +19 -19
- tapps_agents/session/manager.py +256 -256
- tapps_agents/simple_mode/__init__.py +66 -66
- tapps_agents/simple_mode/agent_contracts.py +357 -357
- tapps_agents/simple_mode/beads_hooks.py +151 -151
- tapps_agents/simple_mode/code_snippet_handler.py +382 -382
- tapps_agents/simple_mode/documentation_manager.py +395 -395
- tapps_agents/simple_mode/documentation_reader.py +187 -187
- tapps_agents/simple_mode/file_inference.py +292 -292
- tapps_agents/simple_mode/framework_change_detector.py +268 -268
- tapps_agents/simple_mode/intent_parser.py +510 -510
- tapps_agents/simple_mode/learning_progression.py +358 -358
- tapps_agents/simple_mode/nl_handler.py +700 -700
- tapps_agents/simple_mode/onboarding.py +253 -253
- tapps_agents/simple_mode/orchestrators/__init__.py +38 -38
- tapps_agents/simple_mode/orchestrators/base.py +185 -185
- tapps_agents/simple_mode/orchestrators/breakdown_orchestrator.py +49 -49
- tapps_agents/simple_mode/orchestrators/brownfield_orchestrator.py +135 -135
- tapps_agents/simple_mode/orchestrators/build_orchestrator.py +2700 -2667
- tapps_agents/simple_mode/orchestrators/deliverable_checklist.py +349 -349
- tapps_agents/simple_mode/orchestrators/enhance_orchestrator.py +53 -53
- tapps_agents/simple_mode/orchestrators/epic_orchestrator.py +122 -122
- tapps_agents/simple_mode/orchestrators/explore_orchestrator.py +184 -184
- tapps_agents/simple_mode/orchestrators/fix_orchestrator.py +723 -723
- tapps_agents/simple_mode/orchestrators/plan_analysis_orchestrator.py +206 -206
- tapps_agents/simple_mode/orchestrators/pr_orchestrator.py +237 -237
- tapps_agents/simple_mode/orchestrators/refactor_orchestrator.py +222 -222
- tapps_agents/simple_mode/orchestrators/requirements_tracer.py +262 -262
- tapps_agents/simple_mode/orchestrators/resume_orchestrator.py +210 -210
- tapps_agents/simple_mode/orchestrators/review_orchestrator.py +161 -161
- tapps_agents/simple_mode/orchestrators/test_orchestrator.py +82 -82
- tapps_agents/simple_mode/output_aggregator.py +340 -340
- tapps_agents/simple_mode/result_formatters.py +598 -598
- tapps_agents/simple_mode/step_dependencies.py +382 -382
- tapps_agents/simple_mode/step_results.py +276 -276
- tapps_agents/simple_mode/streaming.py +388 -388
- tapps_agents/simple_mode/variations.py +129 -129
- tapps_agents/simple_mode/visual_feedback.py +238 -238
- tapps_agents/simple_mode/zero_config.py +274 -274
- tapps_agents/suggestions/__init__.py +8 -8
- tapps_agents/suggestions/inline_suggester.py +52 -52
- tapps_agents/templates/__init__.py +8 -8
- tapps_agents/templates/microservice_generator.py +274 -274
- tapps_agents/utils/env_validator.py +291 -291
- tapps_agents/workflow/__init__.py +171 -171
- tapps_agents/workflow/acceptance_verifier.py +132 -132
- tapps_agents/workflow/agent_handlers/__init__.py +41 -41
- tapps_agents/workflow/agent_handlers/analyst_handler.py +75 -75
- tapps_agents/workflow/agent_handlers/architect_handler.py +107 -107
- tapps_agents/workflow/agent_handlers/base.py +84 -84
- tapps_agents/workflow/agent_handlers/debugger_handler.py +100 -100
- tapps_agents/workflow/agent_handlers/designer_handler.py +110 -110
- tapps_agents/workflow/agent_handlers/documenter_handler.py +94 -94
- tapps_agents/workflow/agent_handlers/implementer_handler.py +235 -235
- tapps_agents/workflow/agent_handlers/ops_handler.py +62 -62
- tapps_agents/workflow/agent_handlers/orchestrator_handler.py +43 -43
- tapps_agents/workflow/agent_handlers/planner_handler.py +98 -98
- tapps_agents/workflow/agent_handlers/registry.py +119 -119
- tapps_agents/workflow/agent_handlers/reviewer_handler.py +119 -119
- tapps_agents/workflow/agent_handlers/tester_handler.py +69 -69
- tapps_agents/workflow/analytics_accessor.py +337 -337
- tapps_agents/workflow/analytics_alerts.py +416 -416
- tapps_agents/workflow/analytics_dashboard_cursor.py +281 -281
- tapps_agents/workflow/analytics_dual_write.py +103 -103
- tapps_agents/workflow/analytics_integration.py +119 -119
- tapps_agents/workflow/analytics_query_parser.py +278 -278
- tapps_agents/workflow/analytics_visualizer.py +259 -259
- tapps_agents/workflow/artifact_helper.py +204 -204
- tapps_agents/workflow/audit_logger.py +263 -263
- tapps_agents/workflow/auto_execution_config.py +340 -340
- tapps_agents/workflow/auto_progression.py +586 -586
- tapps_agents/workflow/branch_cleanup.py +349 -349
- tapps_agents/workflow/checkpoint.py +256 -256
- tapps_agents/workflow/checkpoint_manager.py +178 -178
- tapps_agents/workflow/code_artifact.py +179 -179
- tapps_agents/workflow/common_enums.py +96 -96
- tapps_agents/workflow/confirmation_handler.py +130 -130
- tapps_agents/workflow/context_analyzer.py +222 -222
- tapps_agents/workflow/context_artifact.py +230 -230
- tapps_agents/workflow/cursor_chat.py +94 -94
- tapps_agents/workflow/cursor_executor.py +2337 -2196
- tapps_agents/workflow/cursor_skill_helper.py +516 -516
- tapps_agents/workflow/dependency_resolver.py +244 -244
- tapps_agents/workflow/design_artifact.py +156 -156
- tapps_agents/workflow/detector.py +751 -751
- tapps_agents/workflow/direct_execution_fallback.py +301 -301
- tapps_agents/workflow/docs_artifact.py +168 -168
- tapps_agents/workflow/enforcer.py +389 -389
- tapps_agents/workflow/enhancement_artifact.py +142 -142
- tapps_agents/workflow/error_recovery.py +806 -806
- tapps_agents/workflow/event_bus.py +183 -183
- tapps_agents/workflow/event_log.py +612 -612
- tapps_agents/workflow/events.py +63 -63
- tapps_agents/workflow/exceptions.py +43 -43
- tapps_agents/workflow/execution_graph.py +498 -498
- tapps_agents/workflow/execution_plan.py +126 -126
- tapps_agents/workflow/file_utils.py +186 -186
- tapps_agents/workflow/gate_evaluator.py +182 -182
- tapps_agents/workflow/gate_integration.py +200 -200
- tapps_agents/workflow/graph_visualizer.py +130 -130
- tapps_agents/workflow/health_checker.py +206 -206
- tapps_agents/workflow/logging_helper.py +243 -243
- tapps_agents/workflow/manifest.py +582 -582
- tapps_agents/workflow/marker_writer.py +250 -250
- tapps_agents/workflow/message_formatter.py +188 -188
- tapps_agents/workflow/messaging.py +325 -325
- tapps_agents/workflow/metadata_models.py +91 -91
- tapps_agents/workflow/metrics_integration.py +226 -226
- tapps_agents/workflow/migration_utils.py +116 -116
- tapps_agents/workflow/models.py +148 -111
- tapps_agents/workflow/nlp_config.py +198 -198
- tapps_agents/workflow/nlp_error_handler.py +207 -207
- tapps_agents/workflow/nlp_executor.py +163 -163
- tapps_agents/workflow/nlp_parser.py +528 -528
- tapps_agents/workflow/observability_dashboard.py +451 -451
- tapps_agents/workflow/observer.py +170 -170
- tapps_agents/workflow/ops_artifact.py +257 -257
- tapps_agents/workflow/output_passing.py +214 -214
- tapps_agents/workflow/parallel_executor.py +463 -463
- tapps_agents/workflow/planning_artifact.py +179 -179
- tapps_agents/workflow/preset_loader.py +285 -285
- tapps_agents/workflow/preset_recommender.py +270 -270
- tapps_agents/workflow/progress_logger.py +145 -145
- tapps_agents/workflow/progress_manager.py +303 -303
- tapps_agents/workflow/progress_monitor.py +186 -186
- tapps_agents/workflow/progress_updates.py +423 -423
- tapps_agents/workflow/quality_artifact.py +158 -158
- tapps_agents/workflow/quality_loopback.py +101 -101
- tapps_agents/workflow/recommender.py +387 -387
- tapps_agents/workflow/remediation_loop.py +166 -166
- tapps_agents/workflow/result_aggregator.py +300 -300
- tapps_agents/workflow/review_artifact.py +185 -185
- tapps_agents/workflow/schema_validator.py +522 -522
- tapps_agents/workflow/session_handoff.py +178 -178
- tapps_agents/workflow/skill_invoker.py +648 -648
- tapps_agents/workflow/state_manager.py +756 -756
- tapps_agents/workflow/state_persistence_config.py +331 -331
- tapps_agents/workflow/status_monitor.py +449 -449
- tapps_agents/workflow/step_checkpoint.py +314 -314
- tapps_agents/workflow/step_details.py +201 -201
- tapps_agents/workflow/story_models.py +147 -147
- tapps_agents/workflow/streaming.py +416 -416
- tapps_agents/workflow/suggestion_engine.py +552 -552
- tapps_agents/workflow/testing_artifact.py +186 -186
- tapps_agents/workflow/timeline.py +158 -158
- tapps_agents/workflow/token_integration.py +209 -209
- tapps_agents/workflow/validation.py +217 -217
- tapps_agents/workflow/visual_feedback.py +391 -391
- tapps_agents/workflow/workflow_chain.py +95 -95
- tapps_agents/workflow/workflow_summary.py +219 -219
- tapps_agents/workflow/worktree_manager.py +724 -724
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/METADATA +672 -672
- tapps_agents-3.6.0.dist-info/RECORD +758 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/licenses/LICENSE +22 -22
- tapps_agents/health/checks/outcomes.backup_20260204_064058.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064256.py +0 -324
- tapps_agents/health/checks/outcomes.backup_20260204_064600.py +0 -324
- tapps_agents-3.5.40.dist-info/RECORD +0 -760
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/WHEEL +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/entry_points.txt +0 -0
- {tapps_agents-3.5.40.dist-info → tapps_agents-3.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1,344 +1,344 @@
|
|
|
1
|
-
# ARIA Patterns and Best Practices
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Accessible Rich Internet Applications (ARIA) is a set of attributes that make web content and applications more accessible to people with disabilities. ARIA provides semantic information about UI components to assistive technologies.
|
|
6
|
-
|
|
7
|
-
## ARIA Principles
|
|
8
|
-
|
|
9
|
-
### 1. Use Native HTML When Possible
|
|
10
|
-
- Prefer semantic HTML elements
|
|
11
|
-
- Use ARIA only when necessary
|
|
12
|
-
- Native HTML has built-in accessibility
|
|
13
|
-
- ARIA enhances, doesn't replace
|
|
14
|
-
|
|
15
|
-
### 2. Don't Change Native Semantics
|
|
16
|
-
- Don't override native HTML semantics
|
|
17
|
-
- Use ARIA to add, not replace
|
|
18
|
-
- Maintain native behavior
|
|
19
|
-
- Enhance, don't break
|
|
20
|
-
|
|
21
|
-
### 3. All Interactive Elements Must Be Accessible
|
|
22
|
-
- Keyboard accessible
|
|
23
|
-
- Screen reader accessible
|
|
24
|
-
- Focusable
|
|
25
|
-
- Operable
|
|
26
|
-
|
|
27
|
-
### 4. All Interactive Elements Must Have Accessible Names
|
|
28
|
-
- Labels for form controls
|
|
29
|
-
- Names for buttons
|
|
30
|
-
- Descriptions when needed
|
|
31
|
-
- Clear identification
|
|
32
|
-
|
|
33
|
-
## ARIA Attributes
|
|
34
|
-
|
|
35
|
-
### Roles
|
|
36
|
-
- Define what an element is
|
|
37
|
-
- Provide semantic meaning
|
|
38
|
-
- Override native semantics when needed
|
|
39
|
-
- Use sparingly
|
|
40
|
-
|
|
41
|
-
### Properties
|
|
42
|
-
- Define characteristics
|
|
43
|
-
- Provide additional information
|
|
44
|
-
- Describe relationships
|
|
45
|
-
- Enhance understanding
|
|
46
|
-
|
|
47
|
-
### States
|
|
48
|
-
- Define current condition
|
|
49
|
-
- Indicate interactive state
|
|
50
|
-
- Update dynamically
|
|
51
|
-
- Reflect user actions
|
|
52
|
-
|
|
53
|
-
## Common ARIA Roles
|
|
54
|
-
|
|
55
|
-
### Landmark Roles
|
|
56
|
-
- `banner`: Site header
|
|
57
|
-
- `navigation`: Navigation regions
|
|
58
|
-
- `main`: Main content
|
|
59
|
-
- `complementary`: Sidebars, asides
|
|
60
|
-
- `contentinfo`: Site footer
|
|
61
|
-
- `search`: Search regions
|
|
62
|
-
- `form`: Form regions
|
|
63
|
-
|
|
64
|
-
### Widget Roles
|
|
65
|
-
- `button`: Button controls
|
|
66
|
-
- `checkbox`: Checkbox inputs
|
|
67
|
-
- `radio`: Radio button groups
|
|
68
|
-
- `textbox`: Text input fields
|
|
69
|
-
- `slider`: Range inputs
|
|
70
|
-
- `switch`: Toggle switches
|
|
71
|
-
- `tab`: Tab controls
|
|
72
|
-
- `tabpanel`: Tab panels
|
|
73
|
-
- `dialog`: Modal dialogs
|
|
74
|
-
- `alert`: Alert messages
|
|
75
|
-
- `status`: Status messages
|
|
76
|
-
|
|
77
|
-
### Composite Roles
|
|
78
|
-
- `combobox`: Combination of textbox and listbox
|
|
79
|
-
- `grid`: Table-like structures
|
|
80
|
-
- `listbox`: List of options
|
|
81
|
-
- `menu`: Menu structures
|
|
82
|
-
- `menubar`: Menu bars
|
|
83
|
-
- `radiogroup`: Radio button groups
|
|
84
|
-
- `tablist`: Tab lists
|
|
85
|
-
- `tree`: Tree structures
|
|
86
|
-
|
|
87
|
-
## ARIA Properties
|
|
88
|
-
|
|
89
|
-
### aria-label
|
|
90
|
-
- Provides accessible name
|
|
91
|
-
- Overrides visible label
|
|
92
|
-
- Use when label not visible
|
|
93
|
-
- Keep concise
|
|
94
|
-
|
|
95
|
-
### aria-labelledby
|
|
96
|
-
- References element that labels
|
|
97
|
-
- Points to ID of labeling element
|
|
98
|
-
- Use when label exists elsewhere
|
|
99
|
-
- Maintains relationship
|
|
100
|
-
|
|
101
|
-
### aria-describedby
|
|
102
|
-
- References descriptive text
|
|
103
|
-
- Provides additional information
|
|
104
|
-
- Points to ID of describing element
|
|
105
|
-
- Use for help text, errors
|
|
106
|
-
|
|
107
|
-
### aria-hidden
|
|
108
|
-
- Hides decorative content
|
|
109
|
-
- Removes from accessibility tree
|
|
110
|
-
- Use for icons, decorative images
|
|
111
|
-
- Don't hide interactive content
|
|
112
|
-
|
|
113
|
-
### aria-live
|
|
114
|
-
- Announces dynamic content
|
|
115
|
-
- `polite`: Waits for pause
|
|
116
|
-
- `assertive`: Interrupts immediately
|
|
117
|
-
- `off`: No announcements
|
|
118
|
-
|
|
119
|
-
### aria-atomic
|
|
120
|
-
- Controls what is announced
|
|
121
|
-
- `true`: Entire region announced
|
|
122
|
-
- `false`: Only changes announced
|
|
123
|
-
- Use with aria-live
|
|
124
|
-
|
|
125
|
-
### aria-relevant
|
|
126
|
-
- Controls what changes are announced
|
|
127
|
-
- `additions`: New content
|
|
128
|
-
- `removals`: Removed content
|
|
129
|
-
- `text`: Text changes
|
|
130
|
-
- `all`: All changes
|
|
131
|
-
|
|
132
|
-
### aria-expanded
|
|
133
|
-
- Indicates expandable state
|
|
134
|
-
- `true`: Expanded
|
|
135
|
-
- `false`: Collapsed
|
|
136
|
-
- `undefined`: Not expandable
|
|
137
|
-
|
|
138
|
-
### aria-selected
|
|
139
|
-
- Indicates selection state
|
|
140
|
-
- `true`: Selected
|
|
141
|
-
- `false`: Not selected
|
|
142
|
-
- Use for lists, tabs, options
|
|
143
|
-
|
|
144
|
-
### aria-checked
|
|
145
|
-
- Indicates checked state
|
|
146
|
-
- `true`: Checked
|
|
147
|
-
- `false`: Unchecked
|
|
148
|
-
- `mixed`: Partially checked
|
|
149
|
-
|
|
150
|
-
### aria-disabled
|
|
151
|
-
- Indicates disabled state
|
|
152
|
-
- `true`: Disabled
|
|
153
|
-
- `false`: Enabled
|
|
154
|
-
- Prevents interaction
|
|
155
|
-
|
|
156
|
-
### aria-required
|
|
157
|
-
- Indicates required field
|
|
158
|
-
- `true`: Required
|
|
159
|
-
- `false`: Optional
|
|
160
|
-
- Use for form validation
|
|
161
|
-
|
|
162
|
-
### aria-invalid
|
|
163
|
-
- Indicates validation state
|
|
164
|
-
- `true`: Invalid
|
|
165
|
-
- `false`: Valid
|
|
166
|
-
- Use with error messages
|
|
167
|
-
|
|
168
|
-
### aria-current
|
|
169
|
-
- Indicates current item
|
|
170
|
-
- `page`: Current page
|
|
171
|
-
- `step`: Current step
|
|
172
|
-
- `location`: Current location
|
|
173
|
-
- `date`: Current date
|
|
174
|
-
- `time`: Current time
|
|
175
|
-
- `true`: Current item
|
|
176
|
-
|
|
177
|
-
## ARIA Patterns
|
|
178
|
-
|
|
179
|
-
### Button Pattern
|
|
180
|
-
```html
|
|
181
|
-
<button aria-label="Close dialog">×</button>
|
|
182
|
-
<button aria-pressed="false">Toggle</button>
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
### Checkbox Pattern
|
|
186
|
-
```html
|
|
187
|
-
<div role="checkbox" aria-checked="false" tabindex="0">
|
|
188
|
-
<span>Option</span>
|
|
189
|
-
</div>
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### Dialog Pattern
|
|
193
|
-
```html
|
|
194
|
-
<div role="dialog" aria-labelledby="dialog-title" aria-modal="true">
|
|
195
|
-
<h2 id="dialog-title">Dialog Title</h2>
|
|
196
|
-
<button aria-label="Close">×</button>
|
|
197
|
-
</div>
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### Tab Pattern
|
|
201
|
-
```html
|
|
202
|
-
<div role="tablist">
|
|
203
|
-
<button role="tab" aria-selected="true" aria-controls="panel-1">Tab 1</button>
|
|
204
|
-
<button role="tab" aria-selected="false" aria-controls="panel-2">Tab 2</button>
|
|
205
|
-
</div>
|
|
206
|
-
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">Content 1</div>
|
|
207
|
-
<div role="tabpanel" id="panel-2" aria-labelledby="tab-2">Content 2</div>
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Menu Pattern
|
|
211
|
-
```html
|
|
212
|
-
<nav role="menubar">
|
|
213
|
-
<button role="menuitem" aria-haspopup="true" aria-expanded="false">
|
|
214
|
-
File
|
|
215
|
-
</button>
|
|
216
|
-
<ul role="menu">
|
|
217
|
-
<li role="menuitem">New</li>
|
|
218
|
-
<li role="menuitem">Open</li>
|
|
219
|
-
</ul>
|
|
220
|
-
</nav>
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Alert Pattern
|
|
224
|
-
```html
|
|
225
|
-
<div role="alert" aria-live="assertive">
|
|
226
|
-
Error: Invalid input
|
|
227
|
-
</div>
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Status Pattern
|
|
231
|
-
```html
|
|
232
|
-
<div role="status" aria-live="polite" aria-atomic="true">
|
|
233
|
-
Form submitted successfully
|
|
234
|
-
</div>
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## ARIA Best Practices
|
|
238
|
-
|
|
239
|
-
### 1. Use Semantic HTML First
|
|
240
|
-
- Prefer `<button>` over `<div role="button">`
|
|
241
|
-
- Prefer `<nav>` over `<div role="navigation">`
|
|
242
|
-
- Use native elements when possible
|
|
243
|
-
- Add ARIA only when needed
|
|
244
|
-
|
|
245
|
-
### 2. Provide Accessible Names
|
|
246
|
-
- Use `aria-label` for icon buttons
|
|
247
|
-
- Use `aria-labelledby` for complex labels
|
|
248
|
-
- Ensure all interactive elements have names
|
|
249
|
-
- Test with screen readers
|
|
250
|
-
|
|
251
|
-
### 3. Manage Focus
|
|
252
|
-
- Set focus to new content
|
|
253
|
-
- Return focus after closing dialogs
|
|
254
|
-
- Manage focus in dynamic content
|
|
255
|
-
- Provide skip links
|
|
256
|
-
|
|
257
|
-
### 4. Announce Changes
|
|
258
|
-
- Use `aria-live` for dynamic content
|
|
259
|
-
- Use appropriate live region roles
|
|
260
|
-
- Update `aria-expanded` for collapsibles
|
|
261
|
-
- Announce status changes
|
|
262
|
-
|
|
263
|
-
### 5. Maintain Relationships
|
|
264
|
-
- Use `aria-controls` for relationships
|
|
265
|
-
- Use `aria-describedby` for descriptions
|
|
266
|
-
- Use `aria-labelledby` for labels
|
|
267
|
-
- Maintain logical structure
|
|
268
|
-
|
|
269
|
-
### 6. Indicate State
|
|
270
|
-
- Use `aria-selected` for selections
|
|
271
|
-
- Use `aria-checked` for checkboxes
|
|
272
|
-
- Use `aria-expanded` for collapsibles
|
|
273
|
-
- Use `aria-disabled` for disabled elements
|
|
274
|
-
|
|
275
|
-
### 7. Provide Context
|
|
276
|
-
- Use `aria-describedby` for help text
|
|
277
|
-
- Use `aria-invalid` for validation
|
|
278
|
-
- Use `aria-required` for required fields
|
|
279
|
-
- Provide clear error messages
|
|
280
|
-
|
|
281
|
-
### 8. Test with Screen Readers
|
|
282
|
-
- Test with NVDA (Windows)
|
|
283
|
-
- Test with JAWS (Windows)
|
|
284
|
-
- Test with VoiceOver (macOS/iOS)
|
|
285
|
-
- Test with TalkBack (Android)
|
|
286
|
-
|
|
287
|
-
## Common ARIA Mistakes
|
|
288
|
-
|
|
289
|
-
### 1. Overusing ARIA
|
|
290
|
-
- Adding ARIA when HTML is sufficient
|
|
291
|
-
- Redundant ARIA attributes
|
|
292
|
-
- Conflicting with native semantics
|
|
293
|
-
- Unnecessary complexity
|
|
294
|
-
|
|
295
|
-
### 2. Missing Accessible Names
|
|
296
|
-
- Buttons without labels
|
|
297
|
-
- Links without text
|
|
298
|
-
- Form controls without labels
|
|
299
|
-
- Icons without descriptions
|
|
300
|
-
|
|
301
|
-
### 3. Incorrect Role Usage
|
|
302
|
-
- Using wrong roles
|
|
303
|
-
- Overriding native semantics incorrectly
|
|
304
|
-
- Missing required properties
|
|
305
|
-
- Incomplete implementations
|
|
306
|
-
|
|
307
|
-
### 4. Poor State Management
|
|
308
|
-
- Not updating states
|
|
309
|
-
- Incorrect state values
|
|
310
|
-
- Missing state information
|
|
311
|
-
- Inconsistent states
|
|
312
|
-
|
|
313
|
-
### 5. Broken Relationships
|
|
314
|
-
- Missing `aria-controls`
|
|
315
|
-
- Incorrect `aria-labelledby`
|
|
316
|
-
- Broken `aria-describedby`
|
|
317
|
-
- Missing relationships
|
|
318
|
-
|
|
319
|
-
## ARIA Testing Checklist
|
|
320
|
-
|
|
321
|
-
- [ ] All interactive elements have accessible names
|
|
322
|
-
- [ ] ARIA roles used correctly
|
|
323
|
-
- [ ] ARIA states updated dynamically
|
|
324
|
-
- [ ] Relationships properly defined
|
|
325
|
-
- [ ] Live regions announce changes
|
|
326
|
-
- [ ] Focus management implemented
|
|
327
|
-
- [ ] Tested with screen readers
|
|
328
|
-
- [ ] Keyboard navigation works
|
|
329
|
-
- [ ] No ARIA conflicts with HTML
|
|
330
|
-
- [ ] Semantic HTML preferred over ARIA
|
|
331
|
-
|
|
332
|
-
## Best Practices Summary
|
|
333
|
-
|
|
334
|
-
1. **Prefer HTML**: Use semantic HTML first
|
|
335
|
-
2. **Add ARIA When Needed**: Enhance, don't replace
|
|
336
|
-
3. **Provide Names**: All interactive elements need names
|
|
337
|
-
4. **Manage States**: Update ARIA states dynamically
|
|
338
|
-
5. **Maintain Relationships**: Use ARIA to show relationships
|
|
339
|
-
6. **Announce Changes**: Use live regions appropriately
|
|
340
|
-
7. **Test Thoroughly**: Test with multiple screen readers
|
|
341
|
-
8. **Keep It Simple**: Don't overuse ARIA
|
|
342
|
-
9. **Document Usage**: Document ARIA implementations
|
|
343
|
-
10. **Stay Updated**: Follow ARIA specification updates
|
|
344
|
-
|
|
1
|
+
# ARIA Patterns and Best Practices
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Accessible Rich Internet Applications (ARIA) is a set of attributes that make web content and applications more accessible to people with disabilities. ARIA provides semantic information about UI components to assistive technologies.
|
|
6
|
+
|
|
7
|
+
## ARIA Principles
|
|
8
|
+
|
|
9
|
+
### 1. Use Native HTML When Possible
|
|
10
|
+
- Prefer semantic HTML elements
|
|
11
|
+
- Use ARIA only when necessary
|
|
12
|
+
- Native HTML has built-in accessibility
|
|
13
|
+
- ARIA enhances, doesn't replace
|
|
14
|
+
|
|
15
|
+
### 2. Don't Change Native Semantics
|
|
16
|
+
- Don't override native HTML semantics
|
|
17
|
+
- Use ARIA to add, not replace
|
|
18
|
+
- Maintain native behavior
|
|
19
|
+
- Enhance, don't break
|
|
20
|
+
|
|
21
|
+
### 3. All Interactive Elements Must Be Accessible
|
|
22
|
+
- Keyboard accessible
|
|
23
|
+
- Screen reader accessible
|
|
24
|
+
- Focusable
|
|
25
|
+
- Operable
|
|
26
|
+
|
|
27
|
+
### 4. All Interactive Elements Must Have Accessible Names
|
|
28
|
+
- Labels for form controls
|
|
29
|
+
- Names for buttons
|
|
30
|
+
- Descriptions when needed
|
|
31
|
+
- Clear identification
|
|
32
|
+
|
|
33
|
+
## ARIA Attributes
|
|
34
|
+
|
|
35
|
+
### Roles
|
|
36
|
+
- Define what an element is
|
|
37
|
+
- Provide semantic meaning
|
|
38
|
+
- Override native semantics when needed
|
|
39
|
+
- Use sparingly
|
|
40
|
+
|
|
41
|
+
### Properties
|
|
42
|
+
- Define characteristics
|
|
43
|
+
- Provide additional information
|
|
44
|
+
- Describe relationships
|
|
45
|
+
- Enhance understanding
|
|
46
|
+
|
|
47
|
+
### States
|
|
48
|
+
- Define current condition
|
|
49
|
+
- Indicate interactive state
|
|
50
|
+
- Update dynamically
|
|
51
|
+
- Reflect user actions
|
|
52
|
+
|
|
53
|
+
## Common ARIA Roles
|
|
54
|
+
|
|
55
|
+
### Landmark Roles
|
|
56
|
+
- `banner`: Site header
|
|
57
|
+
- `navigation`: Navigation regions
|
|
58
|
+
- `main`: Main content
|
|
59
|
+
- `complementary`: Sidebars, asides
|
|
60
|
+
- `contentinfo`: Site footer
|
|
61
|
+
- `search`: Search regions
|
|
62
|
+
- `form`: Form regions
|
|
63
|
+
|
|
64
|
+
### Widget Roles
|
|
65
|
+
- `button`: Button controls
|
|
66
|
+
- `checkbox`: Checkbox inputs
|
|
67
|
+
- `radio`: Radio button groups
|
|
68
|
+
- `textbox`: Text input fields
|
|
69
|
+
- `slider`: Range inputs
|
|
70
|
+
- `switch`: Toggle switches
|
|
71
|
+
- `tab`: Tab controls
|
|
72
|
+
- `tabpanel`: Tab panels
|
|
73
|
+
- `dialog`: Modal dialogs
|
|
74
|
+
- `alert`: Alert messages
|
|
75
|
+
- `status`: Status messages
|
|
76
|
+
|
|
77
|
+
### Composite Roles
|
|
78
|
+
- `combobox`: Combination of textbox and listbox
|
|
79
|
+
- `grid`: Table-like structures
|
|
80
|
+
- `listbox`: List of options
|
|
81
|
+
- `menu`: Menu structures
|
|
82
|
+
- `menubar`: Menu bars
|
|
83
|
+
- `radiogroup`: Radio button groups
|
|
84
|
+
- `tablist`: Tab lists
|
|
85
|
+
- `tree`: Tree structures
|
|
86
|
+
|
|
87
|
+
## ARIA Properties
|
|
88
|
+
|
|
89
|
+
### aria-label
|
|
90
|
+
- Provides accessible name
|
|
91
|
+
- Overrides visible label
|
|
92
|
+
- Use when label not visible
|
|
93
|
+
- Keep concise
|
|
94
|
+
|
|
95
|
+
### aria-labelledby
|
|
96
|
+
- References element that labels
|
|
97
|
+
- Points to ID of labeling element
|
|
98
|
+
- Use when label exists elsewhere
|
|
99
|
+
- Maintains relationship
|
|
100
|
+
|
|
101
|
+
### aria-describedby
|
|
102
|
+
- References descriptive text
|
|
103
|
+
- Provides additional information
|
|
104
|
+
- Points to ID of describing element
|
|
105
|
+
- Use for help text, errors
|
|
106
|
+
|
|
107
|
+
### aria-hidden
|
|
108
|
+
- Hides decorative content
|
|
109
|
+
- Removes from accessibility tree
|
|
110
|
+
- Use for icons, decorative images
|
|
111
|
+
- Don't hide interactive content
|
|
112
|
+
|
|
113
|
+
### aria-live
|
|
114
|
+
- Announces dynamic content
|
|
115
|
+
- `polite`: Waits for pause
|
|
116
|
+
- `assertive`: Interrupts immediately
|
|
117
|
+
- `off`: No announcements
|
|
118
|
+
|
|
119
|
+
### aria-atomic
|
|
120
|
+
- Controls what is announced
|
|
121
|
+
- `true`: Entire region announced
|
|
122
|
+
- `false`: Only changes announced
|
|
123
|
+
- Use with aria-live
|
|
124
|
+
|
|
125
|
+
### aria-relevant
|
|
126
|
+
- Controls what changes are announced
|
|
127
|
+
- `additions`: New content
|
|
128
|
+
- `removals`: Removed content
|
|
129
|
+
- `text`: Text changes
|
|
130
|
+
- `all`: All changes
|
|
131
|
+
|
|
132
|
+
### aria-expanded
|
|
133
|
+
- Indicates expandable state
|
|
134
|
+
- `true`: Expanded
|
|
135
|
+
- `false`: Collapsed
|
|
136
|
+
- `undefined`: Not expandable
|
|
137
|
+
|
|
138
|
+
### aria-selected
|
|
139
|
+
- Indicates selection state
|
|
140
|
+
- `true`: Selected
|
|
141
|
+
- `false`: Not selected
|
|
142
|
+
- Use for lists, tabs, options
|
|
143
|
+
|
|
144
|
+
### aria-checked
|
|
145
|
+
- Indicates checked state
|
|
146
|
+
- `true`: Checked
|
|
147
|
+
- `false`: Unchecked
|
|
148
|
+
- `mixed`: Partially checked
|
|
149
|
+
|
|
150
|
+
### aria-disabled
|
|
151
|
+
- Indicates disabled state
|
|
152
|
+
- `true`: Disabled
|
|
153
|
+
- `false`: Enabled
|
|
154
|
+
- Prevents interaction
|
|
155
|
+
|
|
156
|
+
### aria-required
|
|
157
|
+
- Indicates required field
|
|
158
|
+
- `true`: Required
|
|
159
|
+
- `false`: Optional
|
|
160
|
+
- Use for form validation
|
|
161
|
+
|
|
162
|
+
### aria-invalid
|
|
163
|
+
- Indicates validation state
|
|
164
|
+
- `true`: Invalid
|
|
165
|
+
- `false`: Valid
|
|
166
|
+
- Use with error messages
|
|
167
|
+
|
|
168
|
+
### aria-current
|
|
169
|
+
- Indicates current item
|
|
170
|
+
- `page`: Current page
|
|
171
|
+
- `step`: Current step
|
|
172
|
+
- `location`: Current location
|
|
173
|
+
- `date`: Current date
|
|
174
|
+
- `time`: Current time
|
|
175
|
+
- `true`: Current item
|
|
176
|
+
|
|
177
|
+
## ARIA Patterns
|
|
178
|
+
|
|
179
|
+
### Button Pattern
|
|
180
|
+
```html
|
|
181
|
+
<button aria-label="Close dialog">×</button>
|
|
182
|
+
<button aria-pressed="false">Toggle</button>
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Checkbox Pattern
|
|
186
|
+
```html
|
|
187
|
+
<div role="checkbox" aria-checked="false" tabindex="0">
|
|
188
|
+
<span>Option</span>
|
|
189
|
+
</div>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Dialog Pattern
|
|
193
|
+
```html
|
|
194
|
+
<div role="dialog" aria-labelledby="dialog-title" aria-modal="true">
|
|
195
|
+
<h2 id="dialog-title">Dialog Title</h2>
|
|
196
|
+
<button aria-label="Close">×</button>
|
|
197
|
+
</div>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Tab Pattern
|
|
201
|
+
```html
|
|
202
|
+
<div role="tablist">
|
|
203
|
+
<button role="tab" aria-selected="true" aria-controls="panel-1">Tab 1</button>
|
|
204
|
+
<button role="tab" aria-selected="false" aria-controls="panel-2">Tab 2</button>
|
|
205
|
+
</div>
|
|
206
|
+
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">Content 1</div>
|
|
207
|
+
<div role="tabpanel" id="panel-2" aria-labelledby="tab-2">Content 2</div>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Menu Pattern
|
|
211
|
+
```html
|
|
212
|
+
<nav role="menubar">
|
|
213
|
+
<button role="menuitem" aria-haspopup="true" aria-expanded="false">
|
|
214
|
+
File
|
|
215
|
+
</button>
|
|
216
|
+
<ul role="menu">
|
|
217
|
+
<li role="menuitem">New</li>
|
|
218
|
+
<li role="menuitem">Open</li>
|
|
219
|
+
</ul>
|
|
220
|
+
</nav>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Alert Pattern
|
|
224
|
+
```html
|
|
225
|
+
<div role="alert" aria-live="assertive">
|
|
226
|
+
Error: Invalid input
|
|
227
|
+
</div>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Status Pattern
|
|
231
|
+
```html
|
|
232
|
+
<div role="status" aria-live="polite" aria-atomic="true">
|
|
233
|
+
Form submitted successfully
|
|
234
|
+
</div>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## ARIA Best Practices
|
|
238
|
+
|
|
239
|
+
### 1. Use Semantic HTML First
|
|
240
|
+
- Prefer `<button>` over `<div role="button">`
|
|
241
|
+
- Prefer `<nav>` over `<div role="navigation">`
|
|
242
|
+
- Use native elements when possible
|
|
243
|
+
- Add ARIA only when needed
|
|
244
|
+
|
|
245
|
+
### 2. Provide Accessible Names
|
|
246
|
+
- Use `aria-label` for icon buttons
|
|
247
|
+
- Use `aria-labelledby` for complex labels
|
|
248
|
+
- Ensure all interactive elements have names
|
|
249
|
+
- Test with screen readers
|
|
250
|
+
|
|
251
|
+
### 3. Manage Focus
|
|
252
|
+
- Set focus to new content
|
|
253
|
+
- Return focus after closing dialogs
|
|
254
|
+
- Manage focus in dynamic content
|
|
255
|
+
- Provide skip links
|
|
256
|
+
|
|
257
|
+
### 4. Announce Changes
|
|
258
|
+
- Use `aria-live` for dynamic content
|
|
259
|
+
- Use appropriate live region roles
|
|
260
|
+
- Update `aria-expanded` for collapsibles
|
|
261
|
+
- Announce status changes
|
|
262
|
+
|
|
263
|
+
### 5. Maintain Relationships
|
|
264
|
+
- Use `aria-controls` for relationships
|
|
265
|
+
- Use `aria-describedby` for descriptions
|
|
266
|
+
- Use `aria-labelledby` for labels
|
|
267
|
+
- Maintain logical structure
|
|
268
|
+
|
|
269
|
+
### 6. Indicate State
|
|
270
|
+
- Use `aria-selected` for selections
|
|
271
|
+
- Use `aria-checked` for checkboxes
|
|
272
|
+
- Use `aria-expanded` for collapsibles
|
|
273
|
+
- Use `aria-disabled` for disabled elements
|
|
274
|
+
|
|
275
|
+
### 7. Provide Context
|
|
276
|
+
- Use `aria-describedby` for help text
|
|
277
|
+
- Use `aria-invalid` for validation
|
|
278
|
+
- Use `aria-required` for required fields
|
|
279
|
+
- Provide clear error messages
|
|
280
|
+
|
|
281
|
+
### 8. Test with Screen Readers
|
|
282
|
+
- Test with NVDA (Windows)
|
|
283
|
+
- Test with JAWS (Windows)
|
|
284
|
+
- Test with VoiceOver (macOS/iOS)
|
|
285
|
+
- Test with TalkBack (Android)
|
|
286
|
+
|
|
287
|
+
## Common ARIA Mistakes
|
|
288
|
+
|
|
289
|
+
### 1. Overusing ARIA
|
|
290
|
+
- Adding ARIA when HTML is sufficient
|
|
291
|
+
- Redundant ARIA attributes
|
|
292
|
+
- Conflicting with native semantics
|
|
293
|
+
- Unnecessary complexity
|
|
294
|
+
|
|
295
|
+
### 2. Missing Accessible Names
|
|
296
|
+
- Buttons without labels
|
|
297
|
+
- Links without text
|
|
298
|
+
- Form controls without labels
|
|
299
|
+
- Icons without descriptions
|
|
300
|
+
|
|
301
|
+
### 3. Incorrect Role Usage
|
|
302
|
+
- Using wrong roles
|
|
303
|
+
- Overriding native semantics incorrectly
|
|
304
|
+
- Missing required properties
|
|
305
|
+
- Incomplete implementations
|
|
306
|
+
|
|
307
|
+
### 4. Poor State Management
|
|
308
|
+
- Not updating states
|
|
309
|
+
- Incorrect state values
|
|
310
|
+
- Missing state information
|
|
311
|
+
- Inconsistent states
|
|
312
|
+
|
|
313
|
+
### 5. Broken Relationships
|
|
314
|
+
- Missing `aria-controls`
|
|
315
|
+
- Incorrect `aria-labelledby`
|
|
316
|
+
- Broken `aria-describedby`
|
|
317
|
+
- Missing relationships
|
|
318
|
+
|
|
319
|
+
## ARIA Testing Checklist
|
|
320
|
+
|
|
321
|
+
- [ ] All interactive elements have accessible names
|
|
322
|
+
- [ ] ARIA roles used correctly
|
|
323
|
+
- [ ] ARIA states updated dynamically
|
|
324
|
+
- [ ] Relationships properly defined
|
|
325
|
+
- [ ] Live regions announce changes
|
|
326
|
+
- [ ] Focus management implemented
|
|
327
|
+
- [ ] Tested with screen readers
|
|
328
|
+
- [ ] Keyboard navigation works
|
|
329
|
+
- [ ] No ARIA conflicts with HTML
|
|
330
|
+
- [ ] Semantic HTML preferred over ARIA
|
|
331
|
+
|
|
332
|
+
## Best Practices Summary
|
|
333
|
+
|
|
334
|
+
1. **Prefer HTML**: Use semantic HTML first
|
|
335
|
+
2. **Add ARIA When Needed**: Enhance, don't replace
|
|
336
|
+
3. **Provide Names**: All interactive elements need names
|
|
337
|
+
4. **Manage States**: Update ARIA states dynamically
|
|
338
|
+
5. **Maintain Relationships**: Use ARIA to show relationships
|
|
339
|
+
6. **Announce Changes**: Use live regions appropriately
|
|
340
|
+
7. **Test Thoroughly**: Test with multiple screen readers
|
|
341
|
+
8. **Keep It Simple**: Don't overuse ARIA
|
|
342
|
+
9. **Document Usage**: Document ARIA implementations
|
|
343
|
+
10. **Stay Updated**: Follow ARIA specification updates
|
|
344
|
+
|