-
Notifications
You must be signed in to change notification settings - Fork 152
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: add accessibility docs to Heading component
- Loading branch information
Showing
2 changed files
with
74 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 68 additions & 0 deletions
68
docs/src/documentation/03-components/09-text/heading/03-accessibility.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
--- | ||
title: Accessibility | ||
redirect_from: | ||
- /components/heading/accessibility/ | ||
--- | ||
|
||
# Accessibility | ||
|
||
## Heading | ||
|
||
The Heading component has been designed with accessibility in mind. | ||
|
||
The component offers flexibility in terms of the HTML element used for the root node, the `role` attribute, and the `level` attribute. | ||
These properties allow for the creation of semantic and accessible headings. | ||
|
||
| Name | Type | Description | | ||
| :---- | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------- | | ||
| as | `"h1" \| "h2" \| "h3" \| "h4" \| "h5" \| "h6" \| "div"` | Defines the HTML element to be rendered. | | ||
| role | `"heading"` | Can only be used if `as="div"`. If defined, sets the role of the element to be "heading". | | ||
| level | `number` | Can only be used if `as="div"` and "`role="heading`". Defines the `aria-level` of the rendered `div` with the heading role. | | ||
|
||
All the props above are optional by default. | ||
|
||
If they are not provided, the component will render a `div` element with no role or aria-level defined. | ||
It is not semantically wrong but won't tell screen readers that the element is a heading. This should be used only for decorative purposes. | ||
|
||
```jsx | ||
<Heading>Hello World!</Heading> | ||
``` | ||
|
||
renders: | ||
|
||
```html | ||
<div>Hello World!</div> | ||
``` | ||
|
||
If the `as` prop is set to `"div"` (or undefined), the `role` prop is optional, but only accepts one possible value (if not `undefined`): `"heading"`. | ||
If the `role` prop is set to `"heading"`, the `level` prop must be defined as well. It will tell assistive technologies the level of the heading. | ||
The `level` prop must be a number between 1 and 6 and cannot be used if the `role` prop is not set to `"heading"`. | ||
|
||
```jsx | ||
<Heading as="div" role="heading" level={1}> | ||
Hello World! | ||
</Heading> | ||
``` | ||
|
||
renders: | ||
|
||
```html | ||
<div role="heading" aria-level="1">Hello World!</div> | ||
``` | ||
|
||
If the `as` prop is set to `"h1"`, `"h2"`, `"h3"`, `"h4"`, `"h5"`, or `"h6"`, the component will render the corresponding HTML element. | ||
In that case, the `role` and `level` props are not needed, since assistive technologies will recognize the element as a heading and its correct level automatically. | ||
|
||
```jsx | ||
<Heading as="h1">Hello World!</Heading> | ||
``` | ||
|
||
renders: | ||
|
||
```html | ||
<h1>Hello World!</h1> | ||
``` | ||
|
||
### Compatibility with SkipNavigation | ||
|
||
The `dataA11ySection` prop can be used to link the Heading to a `SkipNavigation` component. |