Cursor rule
.cursor/rules/disclosure-accessibility.mdcDisclosure component accessibility compliance pattern
Cursor rules
Quality
40/100
Scores the file, not the repository.Length
460 words
1 headings · 1 code blocksRepository
428
— · pushed 17 days agoLast changed
3 days ago
First indexed 3 days ago.123456# Disclosure Component Accessibility Standards78Ensures disclosure components follow WCAG compliance and WAI-ARIA Disclosure Pattern specifications.910<rule>11name: disclosure_accessibility_standards12description: Enforce disclosure component accessibility standards and WAI-ARIA Disclosure Pattern compliance13filters:14 - type: file_extension15 pattern: "\\.(vue|jsx|tsx|html|liquid|php|js|ts)$"1617actions:18 - type: enforce19 conditions:20 # Button role requirement21 - pattern: "(?i)<(button|div|span)[^>]*(?:disclosure|expand|collapse)[^>]*>"22 pattern_negate: "role=\"button\""23 message: "Disclosure controls must have role='button' (or use native button element which has implicit role)."2425 # aria-expanded requirement26 - pattern: "(?i)<[^>]*role=\"button\"[^>]*(?:disclosure|expand|collapse)[^>]*>"27 pattern_negate: "aria-expanded=\"(true|false)\""28 message: "Disclosure controls must have aria-expanded attribute set to 'true' or 'false'."2930 # Missing keyboard event handlers31 - pattern: "(?i)<[^>]*role=\"button\"[^>]*(?:disclosure|expand|collapse)[^>]*>"32 pattern_negate: "(onKeyDown|onkeydown|@keydown|v-on:keydown)"33 message: "Disclosure controls should handle keyboard events (Enter and Space)."3435 - type: suggest36 message: |37 **Disclosure Component Accessibility Best Practices:**3839 **Required ARIA Attributes:**40 - **role='button':** Set on the disclosure control element (or use native button)41 - **aria-expanded:** 'true' if content is visible, 'false' if hidden42 - **aria-controls:** (Optional) Reference to the ID of the associated content4344 **DOM Structure Requirements:**45 - The disclosure content MUST be a sibling to the disclosure control in the DOM46 - This ensures proper content discovery and navigation for all users47 - Avoid placing content in different containers or far from the control48 - Maintain a logical reading order in the DOM4950 **Keyboard Interaction Requirements:**51 - **Enter:** Toggle disclosure content visibility52 - **Space:** Toggle disclosure content visibility53 - **Tab:** Move focus to next focusable element54 - **Shift+Tab:** Move focus to previous focusable element5556 **Implementation Example:**57```html58 <!-- ✅ Correct: Content is a sibling to the control -->59 <div class="disclosure">60 <button type="button"61 role="button"62 aria-expanded="false"63 aria-controls="disclosure-content">64 Disclosure Title65 </button>66 <div id="disclosure-content"67 hidden>68 Disclosure content goes here...69 </div>70 </div>7172 <!-- ❌ Incorrect: Content is not a sibling to the control -->73 <div class="disclosure">74 <button type="button"75 role="button"76 aria-expanded="false"77 aria-controls="disclosure-content">78 Disclosure Title79 </button>80 </div>81 <div class="some-other-container">82 <p>Other content...</p>83 <div id="disclosure-content" hidden>84 Disclosure content goes here...85 </div>86 </div>8788 <script>89 const button = document.querySelector('[role="button"]');90 const content = document.getElementById('disclosure-content');9192 function toggleDisclosure() {93 const isExpanded = button.getAttribute('aria-expanded') === 'true';94 button.setAttribute('aria-expanded', !isExpanded);95 content.hidden = isExpanded;96 }9798 // Click handler99 button.addEventListener('click', toggleDisclosure);100101 // Keyboard handler102 button.addEventListener('keydown', (event) => {103 if (event.key === 'Enter' || event.key === ' ') {104 event.preventDefault();105 toggleDisclosure();106 }107 });108 </script>109```110111 **JavaScript Considerations:**112 - Implement Enter and Space key handlers for toggling113 - Update aria-expanded state when content toggles114 - Use hidden attribute or CSS to show/hide content115 - Consider implementing smooth transitions116117 **Accessibility Notes:**118 - Button should be the only element inside the control119 - Content MUST be a sibling to the control in the DOM120 - Visual focus indicators should be clear121 - Test with screen readers to ensure proper announcement122 - Consider adding aria-label if the button text is not descriptive123 - Maintain proper reading order for screen reader users124 - Avoid complex DOM structures that could confuse navigation125126metadata:127 priority: high128 version: 1.0129</rule>130
Also in Shopify/horizon
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| Shopify/horizon.cursor/rules/accordion-accessibility.mdc · 428 | Cursor rules | ui | 40/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/animation-accessibility.mdc · 428 | Cursor rules | ui | 40/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/blocks.mdc · 428 | Cursor rules | stylearchtypesdatabase+2 | 62/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/breadcrumb-accessibility.mdc · 428 | Cursor rules | ui | 36/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/carousel-accessibility.mdc · 428 | Cursor rules | ui | 32/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/cart-drawer-accessibility.mdc · 428 | Cursor rules | ui | 40/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/chat-window-accessibility.mdc · 428 | Cursor rules | styleui | 24/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/color-contrast-accessibility.mdc · 428 | Cursor rules | lint-formatui | 44/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/color-swatch-accessibility.mdc · 428 | Cursor rules | ui | 40/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/commit-messages.mdc · 428 | Cursor rules | setuplint-formattypesgit | 62/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/css-standards.mdc · 428 | Cursor rules | stylearchuiperformance+3 | 49/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/dropdown-navigation-accessibility.mdc · 428 | Cursor rules | styleui | 36/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/flip-card-accessibility.mdc · 428 | Cursor rules | styleui | 36/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/form-accessibility.mdc · 428 | Cursor rules | ui | 32/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/javascript-standards.mdc · 428 | Cursor rules | stylearchtypesui+2 | 54/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/landmark-accessibility.mdc · 428 | Cursor rules | ui | 40/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/liquid.mdc · 428 | Cursor rules | buildstyletypesdatabase+2 | 77/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/locales.mdc · 428 | Cursor rules | arch | 49/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/localization.mdc · 428 | Cursor rules | style | 54/100 | 3 days ago | |
| Shopify/horizon.cursor/rules/mobile-accessibility-standards.mdc · 428 | Cursor rules | styleui | 36/100 | 3 days ago |
Diff against .cursor/rules/accordion-accessibility.mdc Diff against .cursor/rules/animation-accessibility.mdc Diff against .cursor/rules/blocks.mdc Diff against .cursor/rules/breadcrumb-accessibility.mdc Diff against .cursor/rules/carousel-accessibility.mdc Diff against .cursor/rules/cart-drawer-accessibility.mdc Diff against .cursor/rules/chat-window-accessibility.mdc Diff against .cursor/rules/color-contrast-accessibility.mdc Diff against .cursor/rules/color-swatch-accessibility.mdc Diff against .cursor/rules/commit-messages.mdc Diff against .cursor/rules/css-standards.mdc Diff against .cursor/rules/dropdown-navigation-accessibility.mdc Diff against .cursor/rules/flip-card-accessibility.mdc Diff against .cursor/rules/form-accessibility.mdc Diff against .cursor/rules/javascript-standards.mdc Diff against .cursor/rules/landmark-accessibility.mdc Diff against .cursor/rules/liquid.mdc Diff against .cursor/rules/locales.mdc Diff against .cursor/rules/localization.mdc Diff against .cursor/rules/mobile-accessibility-standards.mdc
