|
| 1 | +# @thoughtbot/tailwindcss-aria-attributes |
| 2 | + |
| 3 | +A plugin that provides variants for various [`aria-*` |
| 4 | +attributes](https://www.w3.org/TR/wai-aria/#state_prop_def) and their supported |
| 5 | +values. |
| 6 | + |
| 7 | +## Installation |
| 8 | + |
| 9 | +Install the plugin from npm: |
| 10 | + |
| 11 | +```sh |
| 12 | +# Using npm |
| 13 | +npm install @thoughtbot/tailwindcss-aria-attributes |
| 14 | + |
| 15 | +# Using Yarn |
| 16 | +yarn add @thoughtbot/tailwindcss-aria-attributes |
| 17 | +``` |
| 18 | + |
| 19 | +Then add the plugin to your `tailwind.config.js` file: |
| 20 | + |
| 21 | +```js |
| 22 | +// tailwind.config.js |
| 23 | +module.exports = { |
| 24 | + theme: { |
| 25 | + // ... |
| 26 | + }, |
| 27 | + plugins: [ |
| 28 | + require("@thoughtbot/tailwindcss-aria-attributes"), |
| 29 | + // ... |
| 30 | + ], |
| 31 | +} |
| 32 | +``` |
| 33 | + |
| 34 | +## Usage |
| 35 | + |
| 36 | +There are two styles of attributes supported by the variants: boolean |
| 37 | +attributes, and enumerated values. |
| 38 | + |
| 39 | +In some cases, attributes belong to both groups. |
| 40 | + |
| 41 | +### Boolean attributes |
| 42 | + |
| 43 | +Variants for boolean attributes are active when the value is `"true"` and _only_ |
| 44 | +`"true"`. When the attribute is missing or the value is `"false"`, the typical |
| 45 | +application of utility classes will apply. |
| 46 | + |
| 47 | +Currently, the collection of variants includes support for the following boolean |
| 48 | +attributes: |
| 49 | + |
| 50 | +| Attribute | Variant |
| 51 | +|-------------------------------------------------------------------------------------|------------------------ |
| 52 | +| [aria-atomic="true"](https://www.w3.org/TR/wai-aria/#aria-atomic) | `aria-atomic:` |
| 53 | +| [aria-busy="true"](https://www.w3.org/TR/wai-aria/#aria-busy) | `aria-busy:` |
| 54 | +| [aria-checked="true"](https://www.w3.org/TR/wai-aria/#aria-checked) | `aria-checked:` |
| 55 | +| [aria-current="true"](https://www.w3.org/TR/wai-aria/#aria-current) | `aria-current:` |
| 56 | +| [aria-disabled="true"](https://www.w3.org/TR/wai-aria/#aria-disabled) | `aria-disabled:` |
| 57 | +| [aria-expanded="true"](https://www.w3.org/TR/wai-aria/#aria-expanded) | `aria-expanded:` |
| 58 | +| [aria-grabbed="true"](https://www.w3.org/TR/wai-aria/#aria-grabbed) | `aria-grabbed:` |
| 59 | +| [aria-haspopup="true"](https://www.w3.org/TR/wai-aria/#aria-haspopup) | `aria-haspopup:` |
| 60 | +| [aria-hidden="true"](https://www.w3.org/TR/wai-aria/#aria-hidden) | `aria-hidden:` |
| 61 | +| [aria-invalid="true"](https://www.w3.org/TR/wai-aria/#aria-invalid) | `aria-invalid:` |
| 62 | +| [aria-live="true"](https://www.w3.org/TR/wai-aria/#aria-live) | `aria-live:` |
| 63 | +| [aria-modal="true"](https://www.w3.org/TR/wai-aria/#aria-modal) | `aria-modal:` |
| 64 | +| [aria-multiline="true"](https://www.w3.org/TR/wai-aria/#aria-multiline) | `aria-multiline:` |
| 65 | +| [aria-multiselectable="true"](https://www.w3.org/TR/wai-aria/#aria-multiselectable) | `aria-multiselectable:` |
| 66 | +| [aria-pressed="true"](https://www.w3.org/TR/wai-aria/#aria-pressed) | `aria-pressed:` |
| 67 | +| [aria-readonly="true"](https://www.w3.org/TR/wai-aria/#aria-readonly) | `aria-readonly:` |
| 68 | +| [aria-required="true"](https://www.w3.org/TR/wai-aria/#aria-required) | `aria-required:` |
| 69 | +| [aria-selected="true"](https://www.w3.org/TR/wai-aria/#aria-selected) | `aria-selected:` |
| 70 | + |
| 71 | +To utilize a boolean variant, prefix the attribute name with `aria-` and omit |
| 72 | +the value: |
| 73 | + |
| 74 | +```html |
| 75 | +<ul role="listbox"> |
| 76 | + <li role="option" class="aria-selected:border">Not selected</li> |
| 77 | + <li role="option" class="aria-selected:border" aria-selected="true">Selected</li> |
| 78 | +</ul> |
| 79 | + |
| 80 | +<button class="aria-disabled:cursor-not-allowed" aria-disabled="true">Submit</button> |
| 81 | +``` |
| 82 | + |
| 83 | +### Enumerated values |
| 84 | + |
| 85 | +Variants for enumerated values are active when the value is equivalent to the |
| 86 | +variant's suffix. |
| 87 | + |
| 88 | + When the attribute is missing or the value does not match the specified suffix, |
| 89 | +the typical application of utility classes will apply. |
| 90 | + |
| 91 | +Currently, the collection of variants includes support for the following |
| 92 | +attributes and value combinations: |
| 93 | + |
| 94 | +| Attribute | Variants | |
| 95 | +|------------------------------------------------------------------------|-------------------------------| |
| 96 | +| [aria-autocomplete](https://www.w3.org/TR/wai-aria/#aria-autocomplete) | `aria-autocomplete-both:` |
| 97 | +| | `aria-autocomplete-inline:` |
| 98 | +| | `aria-autocomplete-list:` |
| 99 | +| | `aria-autocomplete-none:` |
| 100 | +| [aria-current](https://www.w3.org/TR/wai-aria/#aria-current) | `aria-current-date` |
| 101 | +| | `aria-current-location` |
| 102 | +| | `aria-current-page` |
| 103 | +| | `aria-current-step` |
| 104 | +| | `aria-current-time` |
| 105 | +| [aria-dropeffect](https://www.w3.org/TR/wai-aria/#aria-dropeffect) | `aria-dropeffect-copy` |
| 106 | +| | `aria-dropeffect-execute` |
| 107 | +| | `aria-dropeffect-link` |
| 108 | +| | `aria-dropeffect-move` |
| 109 | +| | `aria-dropeffect-none` |
| 110 | +| | `aria-dropeffect-popup` |
| 111 | +| [aria-haspopup](https://www.w3.org/TR/wai-aria/#aria-dropeffect) | `aria-haspopup-dialog` |
| 112 | +| | `aria-haspopup-grid` |
| 113 | +| | `aria-haspopup-listbox` |
| 114 | +| | `aria-haspopup-menu` |
| 115 | +| | `aria-haspopup-tree` |
| 116 | +| [aria-orientation](https://www.w3.org/TR/wai-aria/#aria-dropeffect) | `aria-orientation-horizontal` |
| 117 | +| | `aria-orientation-undefined` |
| 118 | +| | `aria-orientation-vertical`, |
| 119 | +| [aria-sort](https://www.w3.org/TR/wai-aria/#aria-dropeffect) | `aria-sort-ascending` |
| 120 | +| | `aria-sort-descending` |
| 121 | +| | `aria-sort-none` |
| 122 | +| | `aria-sort-other`, |
| 123 | +| [aria-relevant](https://www.w3.org/TR/wai-aria/#aria-dropeffect) | `aria-relevant-additions` |
| 124 | +| | `aria-relevant-all` |
| 125 | +| | `aria-relevant-removals` |
| 126 | +| | `aria-relevant-text` |
| 127 | + |
| 128 | +To utilize an enumerated value variant, prefix the attribute name with `aria-` |
| 129 | +and include the value: |
| 130 | + |
| 131 | +```html |
| 132 | +<nav> |
| 133 | + <a class="aria-current-page:font-bold" href="/" aria-current="page">Root</a> |
| 134 | + <a class="aria-current-page:font-bold" href="/about">About us</a> |
| 135 | +</nav> |
| 136 | +``` |
0 commit comments