-
Notifications
You must be signed in to change notification settings - Fork 1.4k
RSP-1263 Documentation for StatusLight #194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
c2d99be
RSP-1263 Documentation for StatusLight
pst67662 8cedd7e
RSP-1263: cr update
pst67662 feacf71
Merge branch 'master' into statuslight_docs
LFDanLu 8aec139
RSP-1263: cr update
pst67662 28906c2
Merge branch 'master' of github.com:adobe/react-spectrum-v3 into stat…
pst67662 dbaa50f
Merge branch 'master' of github.com:adobe/react-spectrum-v3 into stat…
pst67662 f1c9598
Merge branch 'master' into statuslight_docs
snowystinger 5468eff
Merge branch 'master' of github.com:adobe/react-spectrum-v3 into stat…
pst67662 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
139 changes: 139 additions & 0 deletions
139
packages/@react-spectrum/statuslight/docs/StatusLight.mdx
This file contains hidden or 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,139 @@ | ||
| import {Layout} from '@react-spectrum/docs'; | ||
| export default Layout; | ||
|
|
||
| import docs from 'docs:@react-spectrum/statuslight'; | ||
| import {HeaderInfo, PropTable} from '@react-spectrum/docs'; | ||
| import packageData from '../package.json'; | ||
|
|
||
| ```jsx import | ||
| import {StatusLight} from '@react-spectrum/statuslight'; | ||
| import {Switch} from '@react-spectrum/switch'; | ||
| import {VisuallyHidden} from '@react-aria/visually-hidden'; | ||
| import User from '@spectrum-icons/workflow/User'; | ||
| ``` | ||
|
|
||
| # StatusLight | ||
|
|
||
| <p>{docs.exports.StatusLight.description}</p> | ||
|
|
||
| <HeaderInfo | ||
| packageData={packageData} | ||
| componentNames={['StatusLight']} | ||
| sourceData={[ | ||
| {type: 'Spectrum', url: 'https://spectrum.adobe.com/page/status-light/'} | ||
| ]} /> | ||
|
|
||
| ## Example | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="positive">Default</StatusLight> | ||
| ``` | ||
|
|
||
| ## Content | ||
|
|
||
| A visible label is always required and can be provided by passing children. | ||
| To indicate status use [semantic](#semantic-colors) or [label](#label-colors) variant color. | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="positive">Semantic color</StatusLight> | ||
| <StatusLight variant="yellow">Label color</StatusLight> | ||
| ``` | ||
|
|
||
| ### Accessibility | ||
|
|
||
| If textual child is not provided (e.g. an icon only), | ||
| an alternative text label must be provided to identify the control for accessibility. This should be added using | ||
| the `aria-label` prop. | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="positive" aria-label="Online" > | ||
| <User /> | ||
| </StatusLight> | ||
| ``` | ||
|
|
||
| The visual cue provided by the status light is insufficient to comply with [WCAG 2.1 Success Criterion 1.4.1 on the Use of Color](https://www.w3.org/TR/WCAG21/#use-of-color), | ||
| which requires that "color is not used as the only visual means of conveying information, indicating an action, | ||
| prompting a response, or distinguishing a visual element." | ||
| If StatusLight communicates a state, such as "Approved" or "Failed", that state must be included as part of the label. | ||
|
|
||
| #### Using role="status" | ||
|
|
||
| In cases where the status changes at runtime, | ||
| it may be appropriate to add `role="status"` so that the status change will be announced politely by assistive technology. | ||
| When using `role="status"`, be sure to provide appropriate context for the status change in the label for the StatusLight. | ||
| A status change that announces "Approved" without meaningful context would not be helpful. | ||
| Also, use caution when adding `role="status"` in cases where multiple status lights can update at once. | ||
| For example, with a large list of files that change status when deployed, | ||
| a single announcement when all files have deployed would be preferable to the verbosity of each file status announcing individually. | ||
|
|
||
| ```tsx example | ||
| function Example() { | ||
| let [isApproved, setIsApproved] = React.useState(false); | ||
|
|
||
| return ( | ||
| <div> | ||
| <StatusLight role="stauts" variant={isApproved ? "positive" : "notice" }> | ||
| <VisuallyHidden>Pull Request</VisuallyHidden> | ||
| {isApproved ? "Approved" : "Needs Approval"} | ||
| </StatusLight> | ||
| <Switch onChange={() => setIsApproved(!isApproved)}>Toggle Status</Switch> | ||
| </div> | ||
| ); | ||
| } | ||
| ``` | ||
|
|
||
| ### Internationalization | ||
|
|
||
| To internationalize a StatusLight, a localized string should be set as the child content of the StatusLight. | ||
| For languages that are read right to left (e.g. Hebrew and Arabic), the StatusLight is placed on the right side of the text. | ||
|
|
||
| ## Props | ||
|
|
||
| <PropTable component={docs.exports.StatusLight} links={docs.links} /> | ||
|
|
||
| ## Visual Options | ||
|
|
||
| ### Variant | ||
|
|
||
| #### Semantic colors | ||
pst67662 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| [View guidelines](https://spectrum.adobe.com/page/status-light/#Semantic-variants) | ||
|
|
||
| When status lights have a semantic meaning, they should use semantic colors. | ||
| Use the appropriate color to indicate status as follows. | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="neutral">Gray: Archived, Deleted, Paused, Draft, Not Started, Ended</StatusLight> | ||
| <StatusLight variant="positive">Green: Approved, Complete, Success, New, Purchased, Licensed</StatusLight> | ||
| <StatusLight variant="notice">Orange: Needs Approval, Pending, Scheduled, Syncing, Indexing, Processing</StatusLight> | ||
| <StatusLight variant="negative">Red: Error, Alert, Rejected, Failed</StatusLight> | ||
| <StatusLight variant="info">Blue: Active, In Use, Live, Published</StatusLight> | ||
| ``` | ||
|
|
||
| #### Label colors | ||
| [View guidelines](https://spectrum.adobe.com/page/status-light/#Non-semantic-variants) | ||
|
|
||
| When status lights are used to color code categories and labels commonly found in data visualization, | ||
| they use label colors. The ideal usage for these is when there are 8 or fewer categories or labels being color coded. | ||
| Use them in the following order to ensure the greatest possible color differences for multiple forms of color blindness: | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="indigo">Indigo</StatusLight> | ||
| <StatusLight variant="celery">Celery</StatusLight> | ||
| <StatusLight variant="magenta">Magenta</StatusLight> | ||
| <StatusLight variant="yellow">Yellow</StatusLight> | ||
| <StatusLight variant="fuchsia">Fuchsia</StatusLight> | ||
| <StatusLight variant="seafoam">Seafoam</StatusLight> | ||
| <StatusLight variant="chartreuse">Chartreuse</StatusLight> | ||
| <StatusLight variant="purple">Purple</StatusLight> | ||
| ``` | ||
|
|
||
| ### Disabled | ||
| [View guidelines](https://spectrum.adobe.com/page/status-light/#Disabled) | ||
|
|
||
| Use the `isDisabled` prop to match the state of a containing element. | ||
| Note that the `isDisabled` prop alters the visual style of the StatusLight, | ||
| but does not convey any state information to assistive technology. | ||
|
|
||
| ```tsx example | ||
| <StatusLight variant="yellow" isDisabled >Yellow</StatusLight> | ||
| ``` | ||
This file contains hidden or 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
This file contains hidden or 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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As a follow up, we'll probably have to support
h4's so they get properly styled in the Layout. No need to change here, just wanted to note