@adobe/spectrum-design-data 3.3.0 → 3.4.0
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.
- package/components/accordion.json +32 -102
- package/components/action-bar.json +9 -23
- package/components/action-button.json +52 -92
- package/components/action-group.json +18 -129
- package/components/alert-banner.json +8 -27
- package/components/alert-dialog.json +45 -55
- package/components/avatar-group.json +20 -50
- package/components/avatar.json +44 -123
- package/components/badge.json +66 -160
- package/components/breadcrumbs.json +26 -100
- package/components/button-group.json +32 -63
- package/components/button.json +74 -105
- package/components/calendar.json +8 -67
- package/components/cards.json +31 -46
- package/components/checkbox-group.json +22 -84
- package/components/checkbox.json +33 -96
- package/components/close-button.json +31 -73
- package/components/coach-indicator.json +14 -44
- package/components/coach-mark.json +8 -26
- package/components/color-area.json +20 -93
- package/components/color-handle.json +25 -38
- package/components/color-loupe.json +18 -18
- package/components/color-slider.json +26 -122
- package/components/color-wheel.json +17 -84
- package/components/combo-box.json +56 -188
- package/components/contextual-help.json +87 -126
- package/components/date-picker.json +24 -120
- package/components/divider.json +25 -38
- package/components/drop-zone.json +25 -37
- package/components/field-label.json +22 -59
- package/components/help-text.json +16 -53
- package/components/illustrated-message.json +21 -72
- package/components/in-line-alert.json +13 -53
- package/components/link.json +31 -63
- package/components/list-view.json +15 -73
- package/components/menu.json +51 -180
- package/components/meter.json +35 -76
- package/components/number-field.json +34 -168
- package/components/picker.json +48 -187
- package/components/popover.json +47 -123
- package/components/progress-bar.json +33 -105
- package/components/progress-circle.json +25 -55
- package/components/radio-button.json +14 -67
- package/components/radio-group.json +34 -131
- package/components/rating.json +9 -38
- package/components/search-field.json +40 -125
- package/components/segmented-control.json +27 -69
- package/components/select-box.json +29 -96
- package/components/side-navigation.json +28 -69
- package/components/slider.json +45 -154
- package/components/standard-dialog.json +16 -88
- package/components/status-light.json +51 -133
- package/components/steplist.json +5 -24
- package/components/swatch-group.json +19 -55
- package/components/swatch.json +24 -79
- package/components/switch.json +42 -79
- package/components/table.json +26 -73
- package/components/tabs.json +35 -52
- package/components/tag-field.json +14 -60
- package/components/tag-group.json +22 -55
- package/components/tag.json +27 -77
- package/components/takeover-dialog.json +10 -61
- package/components/text-area.json +55 -204
- package/components/text-field.json +48 -169
- package/components/thumbnail.json +22 -63
- package/components/toast.json +30 -47
- package/components/tooltip.json +37 -84
- package/components/tree-view.json +51 -146
- package/fields/structure.json +1 -2
- package/guidelines/ai-resource-guide.json +42 -0
- package/guidelines/app-frame-overview.json +45 -44
- package/guidelines/applying-the-type-system.json +71 -0
- package/guidelines/attention-hierarchy.json +13 -22
- package/guidelines/background-layers.json +84 -10
- package/guidelines/bi-directionality.json +57 -0
- package/guidelines/border-width.json +70 -0
- package/guidelines/brand.json +24 -12
- package/guidelines/cognitive.json +229 -0
- package/guidelines/colors.json +55 -17
- package/guidelines/component-spacing.json +65 -0
- package/guidelines/contact-us.json +27 -0
- package/guidelines/containers.json +21 -28
- package/guidelines/content-area-browsing-context.json +73 -0
- package/guidelines/creating-bluelines-browsing-context.json +71 -0
- package/guidelines/design-tokens.json +186 -0
- package/guidelines/developer-overview.json +33 -9
- package/guidelines/drop-shadow.json +76 -0
- package/guidelines/faqs.json +100 -9
- package/guidelines/fonts.json +33 -14
- package/guidelines/grammar-and-mechanics.json +276 -0
- package/guidelines/grays.json +17 -44
- package/guidelines/header-browsing-context.json +40 -0
- package/guidelines/icon-fundamentals.json +7 -18
- package/guidelines/illustration.json +120 -0
- package/guidelines/in-product-word-list.json +25 -0
- package/guidelines/inclusive-design.json +101 -0
- package/guidelines/inclusive-ux-writing.json +34 -0
- package/guidelines/internationalization.json +103 -0
- package/guidelines/layout-spacing.json +39 -0
- package/guidelines/manifest.json +280 -16
- package/guidelines/motion.json +18 -13
- package/guidelines/object-styles-overview.json +17 -0
- package/guidelines/principles.json +7 -8
- package/guidelines/resources.json +29 -15
- package/guidelines/rounding.json +85 -0
- package/guidelines/side-navigation-browsing-context.json +74 -0
- package/guidelines/spacing-overview.json +78 -0
- package/guidelines/states.json +16 -11
- package/guidelines/support.json +125 -0
- package/guidelines/typography-overview.json +39 -0
- package/guidelines/typography-system.json +212 -0
- package/guidelines/using-icons.json +32 -47
- package/guidelines/voice-and-tone.json +51 -0
- package/guidelines/whats-new.json +21 -0
- package/guidelines/writing-about-people.json +99 -0
- package/guidelines/writing-for-errors.json +140 -0
- package/guidelines/writing-for-onboarding.json +123 -0
- package/guidelines/writing-for-readability.json +66 -0
- package/guidelines/writing-with-visuals.json +78 -0
- package/package.json +2 -2
- package/tokens/layout.tokens.json +88 -0
|
@@ -9,13 +9,6 @@
|
|
|
9
9
|
"category": "inputs",
|
|
10
10
|
"documentationUrl": "https://spectrum.adobe.com/page/drop-zone/"
|
|
11
11
|
},
|
|
12
|
-
"implementations": [
|
|
13
|
-
{
|
|
14
|
-
"platform": "web",
|
|
15
|
-
"componentName": "DropZone",
|
|
16
|
-
"package": "@react-spectrum/s2"
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
12
|
"documentBlocks": [
|
|
20
13
|
{
|
|
21
14
|
"type": "purpose",
|
|
@@ -23,27 +16,42 @@
|
|
|
23
16
|
},
|
|
24
17
|
{
|
|
25
18
|
"type": "guideline",
|
|
26
|
-
"content": "
|
|
19
|
+
"content": "Dragging file type over drop zone area.\n\nWhen a user drags a file over the drop zone (onDragOver), the border and background styling update to reflect an active state. This visual cue helps users understand that the drop zone is ready to accept the file, reducing uncertainty."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "guideline",
|
|
23
|
+
"content": "Dropping file type within drop zone area.\n\nWhen a user drops a file into the designated drop zone (onDrop), the zone should respond with clear visual feedback—this is typically achieved through displaying a button over the drop zone area informing the user that they may replace their content type. This feedback indicates that the user successfully dropped their file type into the zone and is permitted to replace it."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "guideline",
|
|
27
|
+
"content": "Leaving drop zone area.\n\nWhen a user drags a file outside the designated drop zone (onDragLeave), any visual indicators—such as borders or background styling should revert to their default state."
|
|
27
28
|
},
|
|
28
29
|
{
|
|
29
30
|
"type": "guideline",
|
|
30
|
-
"content": "
|
|
31
|
+
"content": "Clearly communicate accepted file types.\n\nIndicate to users the accepted file types to let users know what they can upload before interacting. This can be done through helper text or placeholder content."
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
34
|
"type": "guideline",
|
|
34
|
-
"content": "
|
|
35
|
+
"content": "Provide immediate visual feedback.\n\nWhen a file is dragged over or dropped into the zone, provide the user with visual feedback such as highlighting the border or changing the background, to confirm the interaction is recognized."
|
|
35
36
|
},
|
|
36
37
|
{
|
|
37
38
|
"type": "guideline",
|
|
38
|
-
"content": "
|
|
39
|
+
"content": "Allow the user to replace file types.\n\nVisual styling that indicates a user can replace file types within a dropzone should clearly communicate interactivity and the potential for change without disrupting the overall layout. This is typically achieved through subtle but intuitive cues such as displaying a button over the drop zone area informing the user that they may replace their content type."
|
|
39
40
|
},
|
|
40
41
|
{
|
|
41
42
|
"type": "guideline",
|
|
42
|
-
"content": "
|
|
43
|
+
"content": "Writing the title.\n\nUse the content pattern of \"Drag and drop your {item}\" for the drop zone's title. The \"drag and drop\" phrasing communicates why the UI is appearing in the way that it is, and guides a user for what they need to do in the interaction. Don't use punctuation at the end of the title."
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
46
|
"type": "guideline",
|
|
46
|
-
"content": "
|
|
47
|
+
"content": "Writing the description.\n\nThe drop zone's body area elaborates on the title and offers more information about how to complete the interaction. In-line links can offer other ways to accomplish the task, such as launching the user's file browser or taking them to another resource. Write the description using full sentences, and include periods at the end of each sentence."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"implementations": [
|
|
51
|
+
{
|
|
52
|
+
"platform": "web",
|
|
53
|
+
"componentName": "DropZone",
|
|
54
|
+
"package": "@react-spectrum/s2"
|
|
47
55
|
}
|
|
48
56
|
],
|
|
49
57
|
"options": {
|
|
@@ -57,17 +65,7 @@
|
|
|
57
65
|
"size": {
|
|
58
66
|
"type": "string",
|
|
59
67
|
"default": "m",
|
|
60
|
-
"values": [
|
|
61
|
-
{
|
|
62
|
-
"value": "s"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"value": "m"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"value": "l"
|
|
69
|
-
}
|
|
70
|
-
]
|
|
68
|
+
"values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
|
|
71
69
|
},
|
|
72
70
|
"actionLabel": {
|
|
73
71
|
"type": "string",
|
|
@@ -86,24 +84,14 @@
|
|
|
86
84
|
"description": "Callback function called when a file is dragged out of the drop zone."
|
|
87
85
|
}
|
|
88
86
|
},
|
|
89
|
-
"lifecycle": {
|
|
90
|
-
"introduced": "1.0.0-draft"
|
|
91
|
-
},
|
|
87
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
92
88
|
"accessibility": {
|
|
93
89
|
"intents": ["input"],
|
|
94
90
|
"focusable": true,
|
|
95
91
|
"keyboardIntents": ["activate"],
|
|
96
92
|
"wcag": [
|
|
97
|
-
{
|
|
98
|
-
|
|
99
|
-
"level": "A",
|
|
100
|
-
"title": "Keyboard"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"criterion": "4.1.2",
|
|
104
|
-
"level": "A",
|
|
105
|
-
"title": "Name, Role, Value"
|
|
106
|
-
}
|
|
93
|
+
{ "criterion": "2.1.1", "level": "A", "title": "Keyboard" },
|
|
94
|
+
{ "criterion": "4.1.2", "level": "A", "title": "Name, Role, Value" }
|
|
107
95
|
]
|
|
108
96
|
}
|
|
109
97
|
}
|
|
@@ -16,110 +16,73 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"content": "Text overflow.\n\nWhen the field label is too long for the available horizontal space, it wraps to form another line."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
23
|
+
"content": "Mark the minority of inputs in a form as required or optional.\n\nIn a single form, mark only the required fields or only the optional fields, depending on whichever is less frequent in the entire form. If most of the input fields are optional, only the required fields should be given an asterisk icon or have labels appended with \"(required).\" If most of the input fields are required, only the optional fields should be appended with \"(optional).\" An asterisk icon should never be used to note that a field is optional."
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
27
|
+
"content": "For field label text, use a short, catch-all description (1-3 words) of the information that a user needs to provide. Field label text that gets too long can be overwhelming and distracting, especially in complex interactions and long forms. Supplementary information or requirements about what to input can be shown in help text below the field, or in a tooltip."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"content": "Use verbs like \"enter,\" \"add,\" or \"input\" in a field label sparingly.\n\nField labels generally communicate what a user should input, rather than direct them as to how to do it. The component design of fields and other inputs already implies that a user needs to enter, add, or input information in order to move forward with a task or workflow. If the interaction may be new or unfamiliar it can be helpful to guide a user with action prompts using these verbs, but for more common patterns (such as forms), this can get redundant and clutter an interface."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"content": "Don't add a colon at the end of a field label.\n\nDon't add a colon (:) at the end of a field label to imply that the label text applies to the field it accompanies. The design of the component already communicates the relationship between the label and the input field."
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"content": "Use sentence case.\n\nFollowing Adobe's UX writing style, field labels are written in sentence case unless they contain words that are branded terms."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the button is mirrored. The icon is placed on the right side of the text."
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
47
|
+
"content": "Keyboard interactions.\n\nKey Interaction Tab Moves focus onto or off of the button. Space or Enter Executes 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."
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"type": "guideline",
|
|
51
|
-
"content": "
|
|
51
|
+
"content": "Cursor guidelines.\n\nCursor Usage Pointer Use the pointer cursor for all interactive components."
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
"type": "guideline",
|
|
55
|
-
"content": "
|
|
55
|
+
"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 A Non‑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, AAA Buttons 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 A Color 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 AA Large 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 AA Buttons should be built in such a way that they can be resized without assistive technology up to 200%. Visual presentation 1.4.8 AAA The 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 AA The visual presentation of icons and various states have a contrast ratio of at least 3:1. Text spacing 1.4.12 AA Line 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, AAA All functionality of the component is operable through a keyboard without specific timing for keystrokes. Keyboard traps 2.1.2 A Focus 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, AAA There is no flashing content or unnecessary motion or animation in this component. Focus order 2.4.3 A Navigation sequences receive focus in an order that preserves meaning and operability. Focus visible 2.4.7 AA Keyboard states use an indicator that is visible with at least 3:1 contrast."
|
|
56
56
|
}
|
|
57
57
|
],
|
|
58
58
|
"options": {
|
|
59
|
-
"label": {
|
|
60
|
-
"type": "string"
|
|
61
|
-
},
|
|
59
|
+
"label": { "type": "string" },
|
|
62
60
|
"labelPosition": {
|
|
63
61
|
"type": "string",
|
|
64
62
|
"default": "top",
|
|
65
|
-
"values": [
|
|
66
|
-
{
|
|
67
|
-
"value": "top"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"value": "side"
|
|
71
|
-
}
|
|
72
|
-
]
|
|
63
|
+
"values": [{ "value": "top" }, { "value": "side" }]
|
|
73
64
|
},
|
|
74
65
|
"size": {
|
|
75
66
|
"type": "string",
|
|
76
67
|
"default": "m",
|
|
77
68
|
"values": [
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"value": "m"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"value": "l"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"value": "xl"
|
|
89
|
-
}
|
|
69
|
+
{ "value": "s" },
|
|
70
|
+
{ "value": "m" },
|
|
71
|
+
{ "value": "l" },
|
|
72
|
+
{ "value": "xl" }
|
|
90
73
|
]
|
|
91
74
|
},
|
|
92
75
|
"necessityIndicator": {
|
|
93
76
|
"type": "string",
|
|
94
77
|
"default": "icon",
|
|
95
|
-
"values": [
|
|
96
|
-
{
|
|
97
|
-
"value": "text"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"value": "icon"
|
|
101
|
-
}
|
|
102
|
-
]
|
|
78
|
+
"values": [{ "value": "text" }, { "value": "icon" }]
|
|
103
79
|
},
|
|
104
|
-
"isRequired": {
|
|
105
|
-
|
|
106
|
-
"default": false
|
|
107
|
-
},
|
|
108
|
-
"isDisabled": {
|
|
109
|
-
"type": "boolean",
|
|
110
|
-
"default": false
|
|
111
|
-
}
|
|
80
|
+
"isRequired": { "type": "boolean", "default": false },
|
|
81
|
+
"isDisabled": { "type": "boolean", "default": false }
|
|
112
82
|
},
|
|
113
83
|
"anatomy": [
|
|
114
|
-
{
|
|
115
|
-
"name": "asterisk",
|
|
116
|
-
"description": "Required-field indicator."
|
|
117
|
-
}
|
|
84
|
+
{ "name": "asterisk", "description": "Required-field indicator." }
|
|
118
85
|
],
|
|
119
|
-
"lifecycle": {
|
|
120
|
-
|
|
121
|
-
},
|
|
122
|
-
"accessibility": {
|
|
123
|
-
"focusable": false
|
|
124
|
-
}
|
|
86
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
87
|
+
"accessibility": { "focusable": false }
|
|
125
88
|
}
|
|
@@ -16,68 +16,43 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"content": "Text overflow.\n\nWhen the text is too long for the available horizontal space, it wraps to form another line."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
23
|
+
"content": "Use the optional icon depending on the accompanying component.\n\nFor the optional icon that can be displayed with the negative variant, usage depends on what kind of component the help text is accompanying. Whether to include the optional icon with the negative variant depends on the component that the help text accompanies. For components such as text field, text area, picker, and combo box, where there is already an icon communicating an error, it's not necessary to include another icon in the help text. For checkbox groups or radio button groups, where there is no icon to communicate an error, include the optional icon."
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
27
|
+
"content": "Switch the help text description with an error message.\n\nHelp text displays either a description (the neutral variant) or an error message (the negative variant) in the same space. When a description is present and an error is triggered, it is replaced with an error message. Once the error is resolved, the help text description reappears. Because one replaces the other, the language of the help text description and the error need to work together to convey the same messaging. The description text explains the requirements or adds supplementary context for how to successfully interact with a component. The error message text restates the same requirements, guiding the user to fix the issue. Make sure that the help text description and error message include the same essential information so that it isn't lost if one replaces the other. Learn how this applies to help text for text field, text area, combo box, and picker."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"content": "Write error messages that show a solution.\n\nCommunicate error messages in a human-centered way by guiding a user and showing them a solution — don't simply state what's wrong and then leave them guessing as to how to resolve it. Ambiguous error messages can be frustrating and even shame-inducing for users. Also, keep in mind that something that a system may deem an error may not actually be perceived as an error to a user. For help text, usually the error is related to something that needs to be fixed for in-line validation, so a helpful tone is most appropriate. For example, if someone were to miss filling out a required field that asks for their email address, write the error text like you're offering a hint or a tip to help guide them to understand what needs to go in the missing field: \"Enter your email address.\" Learn how this applies to help text for text field, text area, combo box, and picker."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the help text is mirrored. The icon is placed on the right side of the text."
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"content": "Keyboard interactions.\n\nKey Interaction Tab Moves focus onto or off of the button. Space or Enter Executes 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."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"content": "Cursor guidelines.\n\nCursor Usage Pointer Use the pointer cursor for all interactive components."
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"type": "guideline",
|
|
51
|
-
"content": "Help text displays either a description (the neutral variant) or an error message (the negative variant) in the same space. When a description is present and an error is triggered, it is replaced with an error message. Once the error is resolved, the help text description reappears."
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"type": "guideline",
|
|
55
|
-
"content": "Since one gets replaced by Because one replaces the other, the language of the help text description and the error need to work together to communicate convey the same message messaging. The description text explains the requirements or adds supplementary context for how to successfully interact with a component. The error message text restates the same requirements, guiding the user to fix the issue. tells a user how to fix the error by re-stating the interaction requirements. Make sure that the help text description and error message include the same essential information so that it isn’t lost if one replaces the other."
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"type": "guideline",
|
|
59
|
-
"content": "Communicate error messages in a human-centered way by guiding a user and showing them a solution — don’t simply state what’s wrong and then leave them guessing as to how to resolve it. Ambiguous error messages can be frustrating and even shame-inducing for users. Also, keep in mind that something that a system may deem an error may not actually be perceived as an error to a user."
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"type": "guideline",
|
|
63
|
-
"content": "For help text, usually the error is related to something that needs to be fixed for in-line validation, so a helpful tone is most appropriate. For example, if someone were to miss filling out a required field that asks for their email address, write the error text like you’re offering a hint or a tip to help guide them to understand what needs to go in the missing field: “Enter your email address.”"
|
|
47
|
+
"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 A Non‑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, AAA Buttons 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 A Color 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 AA Large 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 AA Buttons should be built in such a way that they can be resized without assistive technology up to 200%. Visual presentation 1.4.8 AAA The 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 AA The visual presentation of icons and various states have a contrast ratio of at least 3:1. Text spacing 1.4.12 AA Line 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, AAA All functionality of the component is operable through a keyboard without specific timing for keystrokes. Keyboard traps 2.1.2 A Focus 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, AAA There is no flashing content or unnecessary motion or animation in this component. Focus order 2.4.3 A Navigation sequences receive focus in an order that preserves meaning and operability. Focus visible 2.4.7 AA Keyboard states use an indicator that is visible with at least 3:1 contrast."
|
|
64
48
|
}
|
|
65
49
|
],
|
|
66
50
|
"options": {
|
|
67
|
-
"text": {
|
|
68
|
-
"type": "string"
|
|
69
|
-
},
|
|
51
|
+
"text": { "type": "string" },
|
|
70
52
|
"variant": {
|
|
71
53
|
"type": "string",
|
|
72
54
|
"default": "neutral",
|
|
73
|
-
"values": [
|
|
74
|
-
{
|
|
75
|
-
"value": "neutral"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"value": "negative"
|
|
79
|
-
}
|
|
80
|
-
]
|
|
55
|
+
"values": [{ "value": "neutral" }, { "value": "negative" }]
|
|
81
56
|
},
|
|
82
57
|
"hideIcon": {
|
|
83
58
|
"type": "boolean",
|
|
@@ -88,18 +63,10 @@
|
|
|
88
63
|
"type": "string",
|
|
89
64
|
"default": "m",
|
|
90
65
|
"values": [
|
|
91
|
-
{
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"value": "m"
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"value": "l"
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"value": "xl"
|
|
102
|
-
}
|
|
66
|
+
{ "value": "s" },
|
|
67
|
+
{ "value": "m" },
|
|
68
|
+
{ "value": "l" },
|
|
69
|
+
{ "value": "xl" }
|
|
103
70
|
]
|
|
104
71
|
},
|
|
105
72
|
"isDisabled": {
|
|
@@ -108,10 +75,6 @@
|
|
|
108
75
|
"description": "Help text cannot be both disabled and negative variant."
|
|
109
76
|
}
|
|
110
77
|
},
|
|
111
|
-
"lifecycle": {
|
|
112
|
-
|
|
113
|
-
},
|
|
114
|
-
"accessibility": {
|
|
115
|
-
"focusable": false
|
|
116
|
-
}
|
|
78
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
79
|
+
"accessibility": { "focusable": false }
|
|
117
80
|
}
|
|
@@ -29,87 +29,57 @@
|
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"type": "guideline",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "Motion in illustrated message.\n\nMotion is an optional feature of illustrations, but it is not a requirement. When used, they should feel natural, intentional, and aligned with the emotional and functional goals of the message."
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"type": "guideline",
|
|
36
|
-
"content": "
|
|
36
|
+
"content": "Buttons in illustrated message.\n\nButtons in an illustrated message are designed to guide users toward a clear next step by translating the message's intent into direct, actionable choices. They help users understand what will happen next and support decision-making within the context of the message."
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"type": "guideline",
|
|
40
|
-
"content": "
|
|
40
|
+
"content": "Horizontal vs. vertical illustrations.\n\nHorizontal orientation works best when there's ample screen space, such as on desktop or wide containers, and when the message needs to sit alongside related content. It allows for a balanced layout where the illustration and text can appear side by side, supporting quick scanning and visual clarity. Vertical orientation is suited for constrained spaces like mobile screens or narrow containers. It supports a linear, top-to-bottom flow that guides the user through the illustration, description, and action in sequence."
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"type": "guideline",
|
|
44
|
-
"content": "
|
|
44
|
+
"content": "Illustrations and attention hierarchy.\n\nThe different styles of illustrations are connected to the Spectrum 2 concept of attention hierarchy. Linear illustrations are elements that communicate lower attention, as they blend in well with the rest of the UI. They can be used multiple times in a layout without drawing too much attention. Gradient illustrations are high attention elements that should be used sparingly and selectively. Only one illustration, element, or group of elements should have high attention on a page. Learn more about this with the Spectrum 2 attention hierarchy guidelines."
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"type": "guideline",
|
|
48
|
-
"content": "
|
|
48
|
+
"content": "Use linear style when showing several illustrations together.\n\nThe linear illustration style works well for layouts that feature a number of illustrations together (such as a collection of cards). Linear illustrations draw a lower level of attention and blend in well with the UI, so it's appropriate to use them in a collection of elements. Gradient illustrations draw a lot of attention in multiples, so they need to be used sparingly and sparsely."
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"type": "guideline",
|
|
52
|
-
"content": "
|
|
52
|
+
"content": "Use gradient illustrations thoughtfully.\n\nGradient illustrations are high attention elements in the layout. Use them strategically and thoughtfully to draw the user's attention and to provoke a delightful moment. Gradient illustrations draw more attention because they're very colorful. Using more than one in a given view will make the UI too busy and too loud. Use gradient illustrations sparingly to guide a user's attention to engaging, high-value actions such as uploads, starting projects, or commenting."
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"type": "
|
|
56
|
-
"content": "
|
|
57
|
-
|
|
58
|
-
{
|
|
59
|
-
"type": "guideline",
|
|
60
|
-
"content": "The illustration sets the tone and draws attention. It visually reinforces the message’s purpose and helps users quickly understand the context before reading any text or taking action."
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"type": "guideline",
|
|
64
|
-
"content": "Motion is an optional feature of illustrations, but it is not a requirement. When used, they should feel natural, intentional, and aligned with the emotional and functional goals of the message."
|
|
55
|
+
"type": "do-dont",
|
|
56
|
+
"content": "Don't resize illustrations",
|
|
57
|
+
"dont": "Don't scale or resize linear illustrations. The stroke weight and the corner radii are already set to work best in the given canvas sizes."
|
|
65
58
|
},
|
|
66
59
|
{
|
|
67
60
|
"type": "guideline",
|
|
68
|
-
"content": "
|
|
61
|
+
"content": "Motion in illustrated messages can be used optionally to enhance engagement and reinforce meaning without overwhelming the user. When applied thoughtfully, they add subtle motion to the illustration—such as a gentle bounce, fade, or loop—that draws attention and supports the tone of the message. These animations should be purposeful: they can signal success, soften interruptions, or guide the eye toward the primary action. However, they should never distract from the content or slow down the experience. Use them sparingly, especially in system messages or time-sensitive flows, and ensure they perform well across devices."
|
|
69
62
|
},
|
|
70
63
|
{
|
|
71
64
|
"type": "guideline",
|
|
72
|
-
"content": "
|
|
65
|
+
"content": "Use linear illustrations for errors or critical messages.\n\nErrors or critical messages should only use linear illustrations. Gradient illustrations use colors that can be misunderstood as semantic colors (e.g., green for positive, red for negative). They also have an upbeat and inspirational tone, which isn't appropriate in situations where a user may be frustrated by something that's an inconvenience or is disruptive to them in accomplishing their work."
|
|
73
66
|
},
|
|
74
67
|
{
|
|
75
68
|
"type": "guideline",
|
|
76
|
-
"content": "
|
|
69
|
+
"content": "Offer an actionable solution when possible.\n\nLinks and buttons can be included in an illustrated message's description to offer an actionable solution (e.g., when there is a need to upload files or contact product support). Compared to links, buttons add more visibility to actions, helping to direct a user to what to do next. Respect button ordering when using buttons in an illustrated message."
|
|
77
70
|
},
|
|
78
71
|
{
|
|
79
72
|
"type": "guideline",
|
|
80
|
-
"content": "
|
|
73
|
+
"content": "Drag and drop vs. illustrated message.\n\nUse drag and drop when the user needs to complete a hands-on task—like uploading files, rearranging items, or customizing content. It's an interaction pattern that supports direct manipulation, giving users a sense of control and immediacy. Drag and drop is ideal when the goal is action-oriented and the interface benefits from tactile engagement. Use an illustrated message when the goal is to communicate a state, guide a decision, or prompt an action. Illustrated messages are best for moments of transition—empty states, confirmations, errors, or onboarding—where visual context and clear messaging help orient the user. They're not interactive themselves, but they support interaction by setting expectations and offering clear next steps."
|
|
81
74
|
},
|
|
82
75
|
{
|
|
83
|
-
"type": "
|
|
84
|
-
"content": "
|
|
85
|
-
|
|
86
|
-
{
|
|
87
|
-
"type": "guideline",
|
|
88
|
-
"content": "Don’t scale or resize linear illustrations. The stroke weight and the corner radii are already set to work best in the given canvas sizes."
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"type": "guideline",
|
|
92
|
-
"content": "Motion in illustrated messages can be used optionally to enhance engagement and reinforce meaning without overwhelming the user. When applied thoughtfully, they add subtle motion to the illustration—such as a gentle bounce, fade, or loop—that draws attention and supports the tone of the message."
|
|
76
|
+
"type": "do-dont",
|
|
77
|
+
"content": "Don't create your own linear illustrations",
|
|
78
|
+
"dont": "It's essential to have consistency in tone and metaphors across all Adobe products. Don't create your own linear illustrations or alter existing ones. If you need a new linear illustration, make a request using Workfront."
|
|
93
79
|
},
|
|
94
80
|
{
|
|
95
81
|
"type": "guideline",
|
|
96
|
-
"content": "
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"type": "guideline",
|
|
100
|
-
"content": "Errors or critical messages should only use linear illustrations. Gradient illustrations use colors that can be misunderstood as semantic colors (e.g., green for positive, red for negative). They also have an upbeat and inspirational tone, which isn’t appropriate in situations where a user may be frustrated by something that’s an inconvenience or is disruptive to them in accomplishing their work."
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"type": "guideline",
|
|
104
|
-
"content": "Use drag and drop when the user needs to complete a hands-on task—like uploading files, rearranging items, or customizing content. It’s an interaction pattern that supports direct manipulation, giving users a sense of control and immediacy. Drag and drop is ideal when the goal is action-oriented and the interface benefits from tactile engagement."
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"type": "guideline",
|
|
108
|
-
"content": "Use an illustrated message when the goal is to communicate a state, guide a decision, or prompt an action. Illustrated messages are best for moments of transition—empty states, confirmations, errors, or onboarding—where visual context and clear messaging help orient the user. They’re not interactive themselves, but they support interaction by setting expectations and offering clear next steps."
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
"type": "guideline",
|
|
112
|
-
"content": "An illustrated message can be interruptive, so make it readily apparent that it’s adding value to a user’s experience or is putting the user on the right path to accomplish their goals. Don’t use an illustrated message for purely promotional purposes or for upsells of unrelated actions."
|
|
82
|
+
"content": "Show value.\n\nAn illustrated message can be interruptive, so make it readily apparent that it's adding value to a user's experience or is putting the user on the right path to accomplish their goals. Don't use an illustrated message for purely promotional purposes or for upsells of unrelated actions."
|
|
113
83
|
}
|
|
114
84
|
],
|
|
115
85
|
"options": {
|
|
@@ -121,30 +91,13 @@
|
|
|
121
91
|
"type": "string",
|
|
122
92
|
"default": "m",
|
|
123
93
|
"description": "Size of the illustration.",
|
|
124
|
-
"values": [
|
|
125
|
-
{
|
|
126
|
-
"value": "s"
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"value": "m"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"value": "l"
|
|
133
|
-
}
|
|
134
|
-
]
|
|
94
|
+
"values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
|
|
135
95
|
},
|
|
136
96
|
"orientation": {
|
|
137
97
|
"type": "string",
|
|
138
98
|
"default": "vertical",
|
|
139
99
|
"description": "Orientation of the illustrated message.",
|
|
140
|
-
"values": [
|
|
141
|
-
{
|
|
142
|
-
"value": "vertical"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"value": "horizontal"
|
|
146
|
-
}
|
|
147
|
-
]
|
|
100
|
+
"values": [{ "value": "vertical" }, { "value": "horizontal" }]
|
|
148
101
|
},
|
|
149
102
|
"title": {
|
|
150
103
|
"type": "string",
|
|
@@ -163,10 +116,6 @@
|
|
|
163
116
|
"description": "Label for the secondary action button. If undefined, no secondary action is shown."
|
|
164
117
|
}
|
|
165
118
|
},
|
|
166
|
-
"lifecycle": {
|
|
167
|
-
|
|
168
|
-
},
|
|
169
|
-
"accessibility": {
|
|
170
|
-
"focusable": false
|
|
171
|
-
}
|
|
119
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
120
|
+
"accessibility": { "focusable": false }
|
|
172
121
|
}
|