Cursor rule
.cursor/rules/tooltip-accessibility.mdcTooltip component accessibility compliance pattern
Cursor rules
Quality
40/100
Scores the file, not the repository.Length
515 words
1 headings · 1 code blocksRepository
428
— · pushed 17 days agoLast changed
3 days ago
First indexed 3 days ago.123456# Tooltip Component Accessibility Standards78Ensures tooltip components follow WCAG compliance and WAI-ARIA Tooltip Pattern specifications.910<rule>11name: tooltip_accessibility_standards12description: Enforce tooltip component accessibility standards and WAI-ARIA Tooltip Pattern compliance13filters:14 - type: file_extension15 pattern: "\\.(vue|jsx|tsx|html|liquid|php|js|ts)$"1617actions:18 - type: enforce19 conditions:20 # Tooltip trigger role requirement21 - pattern: "(?i)<button[^>]*(?:tooltip|info|help)[^>]*>"22 pattern_negate: "role=\"button\""23 message: "Tooltip trigger buttons should have role='button' (or use native button element which has implicit role)."2425 # Tooltip trigger missing aria-expanded26 - pattern: "(?i)<button[^>]*(?:tooltip|info|help)[^>]*>"27 pattern_negate: "aria-expanded=\"(true|false)\""28 message: "Tooltip trigger buttons must have aria-expanded attribute set to 'true' or 'false'."2930 # Tooltip trigger missing aria-controls31 - pattern: "(?i)<button[^>]*(?:tooltip|info|help)[^>]*>"32 pattern_negate: "aria-controls=\"[^\"]+\""33 message: "Tooltip trigger buttons must have aria-controls attribute referencing the ID of the associated tooltip."3435 # Tooltip container missing role36 - pattern: "(?i)<(div|span)[^>]*(?:tooltip|info|help)[^>]*>"37 pattern_negate: "role=\"tooltip\""38 message: "Tooltip containers must have role='tooltip' attribute."3940 # Tooltip missing proper identification41 - pattern: "(?i)<[^>]*role=\"tooltip\"[^>]*>"42 pattern_negate: "id=\"[^\"]+\""43 message: "Tooltip containers must have unique ID attributes for aria-controls reference."4445 # Missing keyboard event handlers46 - pattern: "(?i)<button[^>]*(?:tooltip|info|help)[^>]*>"47 pattern_negate: "(onKeyDown|onkeydown|@keydown|v-on:keydown)"48 message: "Tooltip trigger buttons should handle keyboard events (Enter, Space, Escape)."4950 - type: suggest51 message: |52 **Tooltip Component Accessibility Best Practices:**5354 **Required ARIA Attributes:**55 - **role='button':** Set on tooltip trigger elements (or use native button)56 - **role='tooltip':** Set on tooltip container elements57 - **aria-expanded:** 'true' if tooltip is visible, 'false' if hidden58 - **aria-controls:** Reference to the ID of the associated tooltip content5960 **Interaction Patterns:**6162 **Mouse Hover Interaction:**63 - Show tooltip on activator mouse hover64 - Hide tooltip on activator mouse leave65 - Keep tooltip visible when hovering over tooltip container66 - No click required for hover interaction6768 **Mouse Click Interaction:**69 - Show tooltip on activator mouse hover70 - Hide tooltip on activator mouse click71 - Show tooltip again on activator mouse click72 - Toggle behavior for click interaction7374 **Keyboard Interaction:**75 - Show tooltip on Enter or Space keypress76 - Hide tooltip on Escape keypress77 - Focus management should be handled appropriately7879 **Mobile/Touch Interaction:**80 - Show tooltip on activator click/touch81 - Hide tooltip on activator or document click/touch82 - No hover events on touch devices8384 **DOM Structure Requirements:**85 - Tooltip content must be a sibling to the trigger element86 - Tooltip should be positioned after the trigger in DOM order87 - Use CSS positioning for visual placement88 - Ensure tooltip is visible in the viewport8990 **Implementation Patterns:**9192 **Basic Tooltip Structure:**93```html94 <div class="tooltip-wrapper">95 <button class="tooltip-trigger"96 role="button"97 aria-expanded="false"98 aria-controls="tooltip-1">99 Trigger Text100 </button>101 <div id="tooltip-1"102 role="tooltip">103 Tooltip content104 </div>105 </div>106```107108 **JavaScript Considerations:**109 - Implement proper event listeners for each interaction type110 - Handle touch device detection111 - Manage focus and blur events112 - Ensure proper event cleanup113 - Handle viewport positioning114 - Implement proper event delegation for document clicks115 - Track click state to prevent hover interference116 - Handle state transitions between interaction types117 - Maintain tooltip visibility when hovering over tooltip content118119 **Accessibility Notes:**120 - Tooltips should not contain interactive elements121 - Consider using native title attribute for simple tooltips122 - Ensure tooltip content is accessible to screen readers123 - Test with screen readers to ensure proper announcement124 - Consider using aria-live regions for dynamic content125126metadata: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/disclosure-accessibility.mdc · 428 | Cursor rules | ui | 40/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 |
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/disclosure-accessibility.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
