@adobe/spectrum-design-data 3.3.0-beta.0 → 3.3.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/components/accordion.json +15 -54
  2. package/components/action-bar.json +9 -23
  3. package/components/action-button.json +39 -79
  4. package/components/action-group.json +18 -129
  5. package/components/alert-banner.json +8 -27
  6. package/components/alert-dialog.json +34 -48
  7. package/components/avatar-group.json +9 -28
  8. package/components/avatar.json +29 -92
  9. package/components/badge.json +56 -150
  10. package/components/breadcrumbs.json +26 -100
  11. package/components/button-group.json +19 -50
  12. package/components/button.json +61 -92
  13. package/components/calendar.json +8 -67
  14. package/components/cards.json +31 -46
  15. package/components/checkbox-group.json +16 -78
  16. package/components/checkbox.json +27 -90
  17. package/components/close-button.json +20 -62
  18. package/components/coach-indicator.json +14 -44
  19. package/components/coach-mark.json +8 -26
  20. package/components/color-area.json +20 -93
  21. package/components/color-handle.json +25 -38
  22. package/components/color-loupe.json +2 -6
  23. package/components/color-slider.json +26 -122
  24. package/components/color-wheel.json +17 -84
  25. package/components/combo-box.json +50 -182
  26. package/components/contextual-help.json +80 -119
  27. package/components/date-picker.json +24 -120
  28. package/components/divider.json +12 -25
  29. package/components/drop-zone.json +18 -30
  30. package/components/field-label.json +21 -62
  31. package/components/help-text.json +16 -53
  32. package/components/illustrated-message.json +21 -72
  33. package/components/in-line-alert.json +13 -53
  34. package/components/link.json +24 -56
  35. package/components/list-view.json +15 -73
  36. package/components/menu.json +45 -174
  37. package/components/meter.json +24 -65
  38. package/components/number-field.json +34 -168
  39. package/components/picker.json +42 -181
  40. package/components/popover.json +37 -113
  41. package/components/progress-bar.json +23 -95
  42. package/components/progress-circle.json +12 -42
  43. package/components/radio-button.json +14 -67
  44. package/components/radio-group.json +28 -125
  45. package/components/rating.json +9 -38
  46. package/components/search-field.json +34 -119
  47. package/components/segmented-control.json +21 -63
  48. package/components/select-box.json +29 -96
  49. package/components/side-navigation.json +28 -69
  50. package/components/slider.json +39 -148
  51. package/components/standard-dialog.json +16 -88
  52. package/components/status-light.json +41 -123
  53. package/components/steplist.json +5 -24
  54. package/components/swatch-group.json +19 -55
  55. package/components/swatch.json +24 -79
  56. package/components/switch.json +31 -72
  57. package/components/table.json +26 -73
  58. package/components/tabs.json +22 -39
  59. package/components/tag-field.json +14 -60
  60. package/components/tag-group.json +16 -49
  61. package/components/tag.json +21 -71
  62. package/components/takeover-dialog.json +10 -61
  63. package/components/text-area.json +49 -198
  64. package/components/text-field.json +42 -163
  65. package/components/thumbnail.json +22 -63
  66. package/components/toast.json +29 -50
  67. package/components/tooltip.json +27 -74
  68. package/components/tree-view.json +45 -140
  69. package/guidelines/app-frame-overview.json +18 -10
  70. package/guidelines/applying-the-type-system.json +14 -10
  71. package/guidelines/attention-hierarchy.json +3 -3
  72. package/guidelines/background-layers.json +41 -5
  73. package/guidelines/bi-directionality.json +8 -8
  74. package/guidelines/border-width.json +17 -1
  75. package/guidelines/brand.json +6 -6
  76. package/guidelines/colors.json +24 -12
  77. package/guidelines/component-spacing.json +14 -2
  78. package/guidelines/contact-us.json +1 -1
  79. package/guidelines/content-area-browsing-context.json +11 -11
  80. package/guidelines/content-design-grammar-and-mechanics.json +241 -0
  81. package/guidelines/content-design-voice-and-tone.json +37 -0
  82. package/guidelines/content-grammar-and-mechanics.json +252 -0
  83. package/guidelines/content-language-and-inclusivity-writing-about-people.json +103 -0
  84. package/guidelines/content-language-and-inclusivity-writing-with-visuals.json +70 -0
  85. package/guidelines/content-voice-and-tone.json +47 -0
  86. package/guidelines/creating-bluelines-browsing-context.json +9 -9
  87. package/guidelines/design-tokens.json +50 -14
  88. package/guidelines/drop-shadow.json +13 -1
  89. package/guidelines/grays.json +5 -5
  90. package/guidelines/header-browsing-context.json +7 -4
  91. package/guidelines/icon-fundamentals.json +4 -4
  92. package/guidelines/illustration.json +21 -25
  93. package/guidelines/in-product-word-list.json +1 -1
  94. package/guidelines/inclusive-design.json +14 -6
  95. package/guidelines/inclusive-ux-writing.json +1 -1
  96. package/guidelines/internationalization.json +13 -13
  97. package/guidelines/language-and-inclusivity-writing-about-people.json +85 -0
  98. package/guidelines/language-and-inclusivity-writing-with-visuals.json +61 -0
  99. package/guidelines/layout-and-structure-containers.json +7 -7
  100. package/guidelines/layout-and-structure-spacing-overview.json +66 -0
  101. package/guidelines/layout-spacing.json +4 -4
  102. package/guidelines/manifest.json +126 -38
  103. package/guidelines/motion.json +5 -5
  104. package/guidelines/object-styles-overview.json +2 -2
  105. package/guidelines/principles.json +7 -8
  106. package/guidelines/rounding.json +15 -3
  107. package/guidelines/side-navigation-browsing-context.json +16 -13
  108. package/guidelines/spacing-overview.json +7 -7
  109. package/guidelines/states.json +4 -4
  110. package/guidelines/support.json +113 -0
  111. package/guidelines/typography-overview.json +7 -3
  112. package/guidelines/typography-system.json +56 -16
  113. package/guidelines/using-icons.json +14 -14
  114. package/guidelines/visual-language-containers.json +7 -7
  115. package/guidelines/whats-new.json +32 -0
  116. package/guidelines/writing-for-errors.json +21 -21
  117. package/guidelines/writing-for-onboarding.json +17 -17
  118. package/guidelines/writing-for-readability.json +4 -4
  119. package/package.json +1 -1
@@ -16,130 +16,77 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "content": "Sliders select a value along a continuous range. They’re ideal when upper and lower limits are fixed. Use when approximate or fast selection is more important than precision."
19
+ "content": "Keyboard focus.\n\nA slider can be navigated using a keyboard. The keyboard focus state takes the slider's visual hover state and adds a blue ring to the slider handle in focus."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "Labels can be placed either on top or on the side. Top labels are the default and are recommended because they work better with long text, localization, and responsive layouts. Side labels are most useful when vertical space is limited."
23
+ "content": "Value placement.\n\nThe value follows the placement of the label: on top when the label is on top, and on the side when the label is on the side. The exception to this rule is when the value is editable in a text field, either standard or quiet style. In that case, the editable input is always placed on the side and should include an ARIA label for accessibility, using either aria-labelledby or aria-label."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "The value is the number selected within the slider’s range, from the min value to max value."
27
+ "content": "Mixed value.\n\nA slider representing multiple non-identical values appears as indeterminate, with an en dash (–) in place of the value. The handle position corresponds to the first selected value."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "content": "The min and max values can also be customized appropriately for whatever the slider is showing. By default, the min value starts at 0 and the max value is set to 100."
31
+ "content": "Text overflow.\n\nWhen the label is too long for the available horizontal space, it wraps to form another line."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "content": "More information about a design scenario, to use this option in the component."
35
+ "content": "Double-click to reset.\n\nAfter a slider has been adjusted, it can be reset to the default value by double-clicking the handle."
36
36
  },
37
37
  {
38
38
  "type": "guideline",
39
- "content": "The step is the increment by which these values increase or decrease. A step value of 1 (the default) lets a user only select whole numbers within the min and max range."
39
+ "content": "Include a label.\n\nEvery slider should have a label. A slider without a label is ambiguous and not accessible. Write the label in sentence case."
40
40
  },
41
41
  {
42
42
  "type": "guideline",
43
- "content": "Sometimes a value needs to be formatted for localization or for clearer communication such as currencies or percentages. Formatting can involve rounding, mathematical transformations, number formatting, or displaying a prefix or suffix, such as “+/-” or “px.”"
43
+ "content": "Review label-less designs.\n\nIn rare cases where context is sufficient and a label could be absent, make sure to have the design reviewed and approved by an accessibility expert. These sliders must still include an ARIA label in HTML, using either aria-label or aria-labelledby depending on context."
44
44
  },
45
45
  {
46
46
  "type": "guideline",
47
- "content": "Sliders use a linear progression scale by default which means that value is directly correlated to the position of the handle along the track. In some cases, sliders can use a logarithmic (log) progression scale, which is helpful when users need finer control over small values."
47
+ "content": "Allow a hot text option when needed.\n\nIn addition to dragging the handle, sliders can offer other ways to change the value, known as \"hot text.\" Users can click the value text and drag up or down, or scroll up or down while hovering over the value text."
48
48
  },
49
49
  {
50
50
  "type": "guideline",
51
- "content": "The width of a slider can be customized appropriately for its context."
51
+ "content": "Show value units to help provide context.\n\nSlider values can include a unit when it adds context, such as \"%\" or \"px.\" When the value is shown within a text field, the unit disappears on focus."
52
52
  },
53
53
  {
54
54
  "type": "guideline",
55
- "content": "The track of the slider can have a fill. By default, the fill originates from the left side of the track."
55
+ "content": "Prefix positive/negative values.\n\nIf the value ranges from negative to positive, prefix the value with a plus (+) or minus (-) sign. When the sign is shown within a text field, it remains visible on focus. When the sign is shown outside the text field, there should be a space between the sign and the numerical value for readability."
56
56
  },
57
57
  {
58
58
  "type": "guideline",
59
- "content": "If the value represents an offset, the fill start can be set to represent the point of origin. This allows the slider fill to start from inside the track."
59
+ "content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the slider is mirrored. The label is right-aligned, the value is left-aligned, and the fill progresses from right to left. Keep in mind that the placement of the percent sign differs depending on the locale."
60
60
  },
61
61
  {
62
62
  "type": "guideline",
63
- "content": "A gradient can be added to the track of any slider to give more meaning to the range of values. Tracks with a gradient can also have a fill. A gradient track should not be used for choosing a precise color; use a color slider, color area, or color wheel instead."
63
+ "content": "Keyboard interactions.\n\nKey Interaction TabMoves focus onto or off of the button.Space or EnterExecutes the button action. The focus remains on the button except if the button opens or closes the current container. In this case, the focus moves to the target or back to the caller."
64
64
  },
65
65
  {
66
66
  "type": "guideline",
67
- "content": "In situations where users should be able to precisely input a value, the value can be editable within a text field."
67
+ "content": "Cursor guidelines.\n\nCursor Usage PointerUse the pointer cursor for all interactive components."
68
68
  },
69
69
  {
70
70
  "type": "guideline",
71
- "content": "A disabled slider shows that an input exists but is not available in the current context. This helps maintain layout continuity and signals that the slider may become available later."
72
- },
73
- {
74
- "type": "guideline",
75
- "content": "A slider can be navigated using a keyboard. The keyboard focus state takes the slider’s visual hover state and adds a blue ring to the slider handle in focus."
76
- },
77
- {
78
- "type": "guideline",
79
- "content": "A slider representing multiple non-identical values appears as indeterminate, with an en dash (–) in place of the value. The handle position corresponds to the first selected value."
80
- },
81
- {
82
- "type": "guideline",
83
- "content": "When the label is too long for the available horizontal space, it wraps to form another line."
84
- },
85
- {
86
- "type": "guideline",
87
- "content": "After a slider has been adjusted, it can be reset to the default value by double-clicking the handle."
88
- },
89
- {
90
- "type": "guideline",
91
- "content": "Every slider should have a label. A slider without a label is ambiguous and not accessible. Write the label in sentence case."
92
- },
93
- {
94
- "type": "guideline",
95
- "content": "In addition to dragging the handle, sliders can offer other ways to change the value, known as “hot text.” Users can click the value text and drag up or down, or scroll up or down while hovering over the value text."
96
- },
97
- {
98
- "type": "guideline",
99
- "content": "Slider values can include a unit when it adds context, such as “%” or “px.” When the value is shown within a text field, the unit disappears on focus."
100
- },
101
- {
102
- "type": "guideline",
103
- "content": "If the value ranges from negative to positive, prefix the value with a plus (+) or minus (-) sign. When the sign is shown within a text field, it remains visible on focus. When the sign is shown outside the text field, there should be a space between the sign and the numerical value for readability."
71
+ "content": "WCAG 2.2 compliance.\n\nAny criterion not mention in the below table are not applicable to this component or are resolved with underlying requirements, engineering, and styles of the entire system. 1. Perceivable Requirement Criterion Level Compliance Non-text content 1.1.1 ANon‑text elements—such as icons used in buttons—must provide a text alternative that communicates the button’s purpose. All buttons, especially icon‑only buttons, need an accessible name (for example, via a title, aria‑label, or associated text) so screen readers can announce their function.Info and relationships, Identify purpose 1.3.1, 1.3.6 A, AAAButtons should be understandable by assistive technologies like screen readers. This means using the proper semantic HTML or ARIA role of buttons should be utilized.Use of color 1.4.1 AColor is never used as the sole way to convey meaning in buttons. While negative buttons do use red to reinforce their purpose, every button also includes a clear text label that communicates the action it performs.Text contrast minimums 1.4.3 AALarge text has a contrast ratio of at least 3:1, and small text has a contrast ratio of at least 4.5:1. Incidental text such as disabled, hidden, or decorative text has no contrast requirement.Resize text 1.4.4 AAButtons should be built in such a way that they can be resized without assistive technology up to 200%.Visual presentation 1.4.8 AAAThe width of text blocks is no more than 80 characters (40 for CJK languages), and text is never justified.Non-text contrast 1.4.11 AAThe visual presentation of icons and various states have a contrast ratio of at least 3:1.Text spacing 1.4.12 AALine height of text is at least 1.5x the font size. 2. Operable Requirement Criterion Level Compliance Keyboard 2.1.1, 2.1.3 A, AAAAll functionality of the component is operable through a keyboard without specific timing for keystrokes.Keyboard traps 2.1.2 AFocus can be moved away from the component using only a keyboard.Seizures and physical reactions 2.3.1, 2.3.2, 2.3.3 A, AAA, AAAThere is no flashing content or unnecessary motion or animation in this component.Focus order 2.4.3 ANavigation sequences receive focus in an order that preserves meaning and operability.Focus visible 2.4.7 AAKeyboard states use an indicator that is visible with at least 3:1 contrast."
104
72
  }
105
73
  ],
106
74
  "options": {
107
- "label": {
108
- "type": "string"
109
- },
75
+ "label": { "type": "string" },
110
76
  "labelPosition": {
111
77
  "type": "string",
112
78
  "default": "top",
113
- "values": [
114
- {
115
- "value": "top"
116
- },
117
- {
118
- "value": "side"
119
- }
120
- ]
121
- },
122
- "value": {
123
- "type": "number",
124
- "description": "from minValue to maxValue"
125
- },
126
- "minValue": {
127
- "type": "number",
128
- "default": 0
129
- },
130
- "maxValue": {
131
- "type": "number",
132
- "default": 100
79
+ "values": [{ "value": "top" }, { "value": "side" }]
133
80
  },
81
+ "value": { "type": "number", "description": "from minValue to maxValue" },
82
+ "minValue": { "type": "number", "default": 0 },
83
+ "maxValue": { "type": "number", "default": 100 },
134
84
  "isRange": {
135
85
  "type": "boolean",
136
86
  "default": false,
137
87
  "description": "If true, the slider will allow selection of a range of values by displaying two handles."
138
88
  },
139
- "step": {
140
- "type": "number",
141
- "default": 1
142
- },
89
+ "step": { "type": "number", "default": 1 },
143
90
  "valueFormat": {
144
91
  "type": "string",
145
92
  "description": "This will vary depending on implementation."
@@ -147,92 +94,36 @@
147
94
  "progressionScale": {
148
95
  "type": "string",
149
96
  "default": "linear",
150
- "values": [
151
- {
152
- "value": "linear"
153
- },
154
- {
155
- "value": "log"
156
- }
157
- ]
158
- },
159
- "width": {
160
- "type": "number"
161
- },
162
- "hasFill": {
163
- "type": "boolean",
164
- "default": false
165
- },
166
- "fillStart": {
167
- "type": "number",
168
- "default": 0
169
- },
170
- "hasGradient": {
171
- "type": "boolean",
172
- "default": false
173
- },
174
- "isEditable": {
175
- "type": "boolean",
176
- "default": false
177
- },
178
- "isDisabled": {
179
- "type": "boolean",
180
- "default": false
181
- }
97
+ "values": [{ "value": "linear" }, { "value": "log" }]
98
+ },
99
+ "width": { "type": "number" },
100
+ "hasFill": { "type": "boolean", "default": false },
101
+ "fillStart": { "type": "number", "default": 0 },
102
+ "hasGradient": { "type": "boolean", "default": false },
103
+ "isEditable": { "type": "boolean", "default": false },
104
+ "isDisabled": { "type": "boolean", "default": false }
182
105
  },
183
106
  "anatomy": [
184
- {
185
- "name": "text-field",
186
- "description": "Editable numeric value field."
187
- },
188
- {
189
- "name": "handle"
190
- },
191
- {
192
- "name": "track"
193
- },
194
- {
195
- "name": "control"
196
- }
107
+ { "name": "text-field", "description": "Editable numeric value field." },
108
+ { "name": "handle" },
109
+ { "name": "track" },
110
+ { "name": "control" }
197
111
  ],
198
112
  "states": [
199
- {
200
- "name": "hover",
201
- "trigger": "interaction"
202
- },
203
- {
204
- "name": "down",
205
- "trigger": "interaction"
206
- },
207
- {
208
- "name": "keyboard-focus",
209
- "trigger": "interaction"
210
- }
113
+ { "name": "hover", "trigger": "interaction" },
114
+ { "name": "down", "trigger": "interaction" },
115
+ { "name": "keyboard-focus", "trigger": "interaction" }
211
116
  ],
212
- "lifecycle": {
213
- "introduced": "1.0.0-draft"
214
- },
117
+ "lifecycle": { "introduced": "1.0.0-draft" },
215
118
  "accessibility": {
216
119
  "role": "slider",
217
120
  "intents": ["choose"],
218
121
  "focusable": true,
219
122
  "keyboardIntents": ["increment", "decrement"],
220
123
  "wcag": [
221
- {
222
- "criterion": "1.3.1",
223
- "level": "A",
224
- "title": "Info and Relationships"
225
- },
226
- {
227
- "criterion": "2.1.1",
228
- "level": "A",
229
- "title": "Keyboard"
230
- },
231
- {
232
- "criterion": "4.1.2",
233
- "level": "A",
234
- "title": "Name, Role, Value"
235
- }
124
+ { "criterion": "1.3.1", "level": "A", "title": "Info and Relationships" },
125
+ { "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
126
+ { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
236
127
  ]
237
128
  }
238
129
  }
@@ -16,80 +16,33 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "content": "Standard dialogs are containers that appear over the interface to present contextual information, tasks, or workflows. They’re centered on the screen and used for moderately complex actions that require focused attention. Interactions outside the dialog are blocked until it's dismissed or completed."
19
+ "content": "Placement.\n\nStandard dialogs appear in the center of the screen."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "By default, an alert dialog that includes a button to cancel or go back will be labeled “Cancel.”"
23
+ "content": "Text overflow.\n\nWhen the title and description text are too long for the available horizontal space, they wrap to form another line."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "Standard dialogs can include up to three buttons if a secondary outline button label is defined. If no label is defined, the button won’t appear. The secondary outline button should use a short, actionable phrase that clearly communicates the result of selecting the action—typically describing the previous step or an alternative choice."
27
+ "content": "Button group overflow.\n\nStandard dialogs can include up to three buttons. When horizontal space is limited, the buttons stack vertically. Buttons should be ordered by ascending importance, with the most critical action placed at the end or bottom of the stack."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "content": "The primary action label refers to the rightmost button in the dialog footer for languages that read left to right. It should use a short, actionable phrase that clearly communicates the result of selecting the action—whether that means moving forward or dismissing the dialog."
31
+ "content": "Dismissible or not?\n\nWhether a dialog is dismissible is controlled by the hideCloseButton prop. A dialog with a close button can be dismissed by clicking the button or the background overlay. Avoid using a dismissible dialog when the user needs to confirm an action or make a decision. Instead, use a dismissible dialog for information that is optional or nice to know—content that can be quickly dismissed without requiring user action."
32
32
  },
33
33
  {
34
- "type": "guideline",
35
- "content": "The presence of a close button determines whether a dialog is dismissible."
36
- },
37
- {
38
- "type": "guideline",
39
- "content": "In both cases, pressing the Escape key should close the dialog and return the page to its previous state. This action should behave the same as clicking a close or cancel button."
40
- },
41
- {
42
- "type": "guideline",
43
- "content": "Standard dialogs are available in three widths:"
44
- },
45
- {
46
- "type": "guideline",
47
- "content": "Dialogs automatically scale down to 90% of the screen width on smaller viewports. Height is flexible and adjusts to fit the content."
48
- },
49
- {
50
- "type": "guideline",
51
- "content": "Standard dialogs can include a full-bleed cover image at the top. Dialogs with a cover image should not be dismissible and rely on buttons in the footer area to close the dialog."
52
- },
53
- {
54
- "type": "guideline",
55
- "content": "Standard dialogs can include an optional description. Use the description to briefly provide additional context or information that helps users make an informed decision based on the available actions."
56
- },
57
- {
58
- "type": "guideline",
59
- "content": "All standard dialogs must include a title. The title appears at the top of the dialog and should briefly describe the expected outcome if the user proceeds with the primary action. If a cover image is shown, the title will appear below it."
60
- },
61
- {
62
- "type": "guideline",
63
- "content": "Standard dialogs appear in the center of the screen."
64
- },
65
- {
66
- "type": "guideline",
67
- "content": "When the title and description text are too long for the available horizontal space, they wrap to form another line."
68
- },
69
- {
70
- "type": "guideline",
71
- "content": "Standard dialogs can include up to three buttons. When horizontal space is limited, the buttons stack vertically. Buttons should be ordered by ascending importance, with the most critical action placed at the end or bottom of the stack."
72
- },
73
- {
74
- "type": "guideline",
75
- "content": "Avoid using a dismissible dialog when the user needs to confirm an action or make a decision. Instead, use a dismissible dialog for information that is optional or nice to know—content that can be quickly dismissed without requiring user action."
34
+ "type": "do-dont",
35
+ "content": "Don't include buttons when dismissible",
36
+ "dont": "A dismissible dialog should not include buttons in the footer. Instead, the dialog is dismissed by clicking the close button or the background overlay."
76
37
  },
77
38
  {
78
39
  "type": "guideline",
79
- "content": "A dismissible dialog should not include buttons in the footer. Instead, the dialog is dismissed by clicking the close button or the background overlay."
80
- },
81
- {
82
- "type": "guideline",
83
- "content": "Most dialog titles should communicate the primary action of the dialog. When possible, the button label should use the same language as the action mentioned in the title. For example, if the title is “Delete conversation,” the primary action button label should be “Delete.”"
40
+ "content": "Use similar language for dialog titles and actions.\n\nMost dialog titles should communicate the primary action of the dialog. When possible, the button label should use the same language as the action mentioned in the title. For example, if the title is \"Delete conversation,\" the primary action button label should be \"Delete."
84
41
  }
85
42
  ],
86
43
  "options": {
87
- "title": {
88
- "type": "string"
89
- },
90
- "description": {
91
- "type": "string"
92
- },
44
+ "title": { "type": "string" },
45
+ "description": { "type": "string" },
93
46
  "hideImage": {
94
47
  "type": "boolean",
95
48
  "default": false,
@@ -98,29 +51,14 @@
98
51
  "size": {
99
52
  "type": "string",
100
53
  "default": "m",
101
- "values": [
102
- {
103
- "value": "s"
104
- },
105
- {
106
- "value": "m"
107
- },
108
- {
109
- "value": "l"
110
- }
111
- ]
112
- },
113
- "hideCloseButton": {
114
- "type": "boolean",
115
- "default": false
54
+ "values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
116
55
  },
56
+ "hideCloseButton": { "type": "boolean", "default": false },
117
57
  "footerContent": {
118
58
  "type": "string",
119
59
  "description": "Optional footer content to display in the dialog footer like a checkbox."
120
60
  },
121
- "primaryActionLabel": {
122
- "type": "string"
123
- },
61
+ "primaryActionLabel": { "type": "string" },
124
62
  "secondaryActionLabel": {
125
63
  "type": "string",
126
64
  "description": "If undefined, this button does not appear."
@@ -131,25 +69,15 @@
131
69
  "description": "If undefined, this button does not appear."
132
70
  }
133
71
  },
134
- "lifecycle": {
135
- "introduced": "1.0.0-draft"
136
- },
72
+ "lifecycle": { "introduced": "1.0.0-draft" },
137
73
  "accessibility": {
138
74
  "role": "dialog",
139
75
  "intents": ["dismiss"],
140
76
  "focusable": false,
141
77
  "keyboardIntents": ["dismiss"],
142
78
  "wcag": [
143
- {
144
- "criterion": "2.4.3",
145
- "level": "A",
146
- "title": "Focus Order"
147
- },
148
- {
149
- "criterion": "4.1.2",
150
- "level": "A",
151
- "title": "Name, Role, Value"
152
- }
79
+ { "criterion": "2.4.3", "level": "A", "title": "Focus Order" },
80
+ { "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
153
81
  ]
154
82
  }
155
83
  }
@@ -16,160 +16,78 @@
16
16
  },
17
17
  {
18
18
  "type": "guideline",
19
- "content": "Status lights indicate the state or condition of an item. They convey semantic meaning such as statuses and categories."
19
+ "content": "Text overflow.\n\nWhen the text is too long for the horizontal space available, it wraps to form another line."
20
20
  },
21
21
  {
22
22
  "type": "guideline",
23
- "content": "Status lights should always include a label. Color alone is not enough to communicate the status."
23
+ "content": "Use the appropriate variation.\n\nSemantic status lights should never be used for color coding categories or labels, and vice versa."
24
24
  },
25
25
  {
26
26
  "type": "guideline",
27
- "content": "When status lights have a semantic meaning, they use semantic colors. Use these variants for the following statuses:"
27
+ "content": "Status light text.\n\nA status light should always include a label with text that clearly communicates about the kind of status being shown. Do not change the text color to match the dot."
28
28
  },
29
29
  {
30
30
  "type": "guideline",
31
- "content": "When status lights are used to color code categories and labels that are commonly found in data visualization, they use non-semantic label colors. The ideal usage for these is when there are 8 or fewer categories or labels being color coded."
31
+ "content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the status light is mirrored. The dot is placed on the right side of the text."
32
32
  },
33
33
  {
34
34
  "type": "guideline",
35
- "content": "Status lights come in four different sizes: small, medium, large, and extra-large. The medium size is the default and most frequently used option. Use the other sizes sparingly; they should be used to create a hierarchy of importance within the page."
35
+ "content": "Cursor Description Default (Arrow)Use the default cursor for non-interactive components like status light."
36
36
  },
37
37
  {
38
38
  "type": "guideline",
39
- "content": "When the text is too long for the horizontal space available, it wraps to form another line."
40
- },
41
- {
42
- "type": "guideline",
43
- "content": "Semantic status lights should never be used for color coding categories or labels, and vice versa."
44
- },
45
- {
46
- "type": "guideline",
47
- "content": "A status light should always include a label with text that clearly communicates about the kind of status being shown. Do not change the text color to match the dot."
39
+ "content": "Any criterion not mention in the below table are not applicable to this component or are resolved with underlying requirements, engineering, and styles of the entire system. 1. Perceivable Requirement Criterion Level Compliance Info and relationships, Identify purpose 1.3.1, 1.3.6 A, AAAStatus lights should be understandable by assistive technologies like screen readers. This means using the proper semantic HTML or ARIA role should be utilized.Use of color 1.4.1 AColor is never used as the sole way to convey meaning in status lights. While color is used to reinforce their meaning, every status light also includes a clear text label that communicates the status.Text contrast minimums 1.4.3 AALarge text has a contrast ratio of at least 3:1, and small text has a contrast ratio of at least 4.5:1. Incidental text such as disabled, hidden, or decorative text has no contrast requirement.Visual presentation 1.4.8 AAAThe width of text blocks is no more than 80 characters (40 for CJK languages), and text is never justified.Non-text contrast 1.4.11 AAThe visual presentation of the status light dot has a contrast ratio of at least 3:1.Text spacing 1.4.12 AALine height of text is at least 1.5x the font size when wrapped. 2. Operable RequirementCriterionLevel Compliance Seizures and physical reactions 2.3.1, 2.3.2, 2.3.3 A, AAA, AAAThere is no flashing content or unnecessary motion or animation in this component."
48
40
  }
49
41
  ],
50
42
  "options": {
51
- "label": {
52
- "type": "string"
53
- },
43
+ "label": { "type": "string" },
54
44
  "variant": {
55
45
  "type": "string",
56
46
  "default": "informative",
57
47
  "values": [
58
- {
59
- "value": "informative"
60
- },
61
- {
62
- "value": "neutral"
63
- },
64
- {
65
- "value": "positive"
66
- },
67
- {
68
- "value": "notice"
69
- },
70
- {
71
- "value": "negative"
72
- },
73
- {
74
- "value": "indigo"
75
- },
76
- {
77
- "value": "celery"
78
- },
79
- {
80
- "value": "chartreuse"
81
- },
82
- {
83
- "value": "yellow"
84
- },
85
- {
86
- "value": "magenta"
87
- },
88
- {
89
- "value": "fuchsia"
90
- },
91
- {
92
- "value": "purple"
93
- },
94
- {
95
- "value": "seafoam"
96
- },
97
- {
98
- "value": "pink"
99
- },
100
- {
101
- "value": "turquoise"
102
- },
103
- {
104
- "value": "cinnamon"
105
- },
106
- {
107
- "value": "brown"
108
- },
109
- {
110
- "value": "silver"
111
- },
112
- {
113
- "value": "gray"
114
- },
115
- {
116
- "value": "red"
117
- },
118
- {
119
- "value": "orange"
120
- },
121
- {
122
- "value": "green"
123
- },
124
- {
125
- "value": "cyan"
126
- }
48
+ { "value": "informative" },
49
+ { "value": "neutral" },
50
+ { "value": "positive" },
51
+ { "value": "notice" },
52
+ { "value": "negative" },
53
+ { "value": "indigo" },
54
+ { "value": "celery" },
55
+ { "value": "chartreuse" },
56
+ { "value": "yellow" },
57
+ { "value": "magenta" },
58
+ { "value": "fuchsia" },
59
+ { "value": "purple" },
60
+ { "value": "seafoam" },
61
+ { "value": "pink" },
62
+ { "value": "turquoise" },
63
+ { "value": "cinnamon" },
64
+ { "value": "brown" },
65
+ { "value": "silver" },
66
+ { "value": "gray" },
67
+ { "value": "red" },
68
+ { "value": "orange" },
69
+ { "value": "green" },
70
+ { "value": "cyan" }
127
71
  ]
128
72
  },
129
73
  "size": {
130
74
  "type": "string",
131
75
  "default": "m",
132
76
  "values": [
133
- {
134
- "value": "s"
135
- },
136
- {
137
- "value": "m"
138
- },
139
- {
140
- "value": "l"
141
- },
142
- {
143
- "value": "xl"
144
- }
77
+ { "value": "s" },
78
+ { "value": "m" },
79
+ { "value": "l" },
80
+ { "value": "xl" }
145
81
  ]
146
82
  }
147
83
  },
148
84
  "anatomy": [
149
- {
150
- "name": "visual-75",
151
- "description": "Severity dot, 75 size variant."
152
- },
153
- {
154
- "name": "visual-100",
155
- "description": "Severity dot, 100 size variant."
156
- },
157
- {
158
- "name": "visual-200",
159
- "description": "Severity dot, 200 size variant."
160
- },
161
- {
162
- "name": "visual-300",
163
- "description": "Severity dot, 300 size variant."
164
- },
165
- {
166
- "name": "dot"
167
- }
85
+ { "name": "visual-75", "description": "Severity dot, 75 size variant." },
86
+ { "name": "visual-100", "description": "Severity dot, 100 size variant." },
87
+ { "name": "visual-200", "description": "Severity dot, 200 size variant." },
88
+ { "name": "visual-300", "description": "Severity dot, 300 size variant." },
89
+ { "name": "dot" }
168
90
  ],
169
- "lifecycle": {
170
- "introduced": "1.0.0-draft"
171
- },
172
- "accessibility": {
173
- "focusable": false
174
- }
91
+ "lifecycle": { "introduced": "1.0.0-draft" },
92
+ "accessibility": { "focusable": false }
175
93
  }