@adobe/spectrum-design-data 3.3.0-beta.0 → 3.3.0-beta.1
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 +15 -54
- package/components/action-bar.json +9 -23
- package/components/action-button.json +39 -79
- package/components/action-group.json +18 -129
- package/components/alert-banner.json +8 -27
- package/components/alert-dialog.json +34 -48
- package/components/avatar-group.json +9 -28
- package/components/avatar.json +29 -92
- package/components/badge.json +56 -150
- package/components/breadcrumbs.json +26 -100
- package/components/button-group.json +19 -50
- package/components/button.json +61 -92
- package/components/calendar.json +8 -67
- package/components/cards.json +31 -46
- package/components/checkbox-group.json +16 -78
- package/components/checkbox.json +27 -90
- package/components/close-button.json +20 -62
- 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 +2 -6
- package/components/color-slider.json +26 -122
- package/components/color-wheel.json +17 -84
- package/components/combo-box.json +50 -182
- package/components/contextual-help.json +80 -119
- package/components/date-picker.json +24 -120
- package/components/divider.json +12 -25
- package/components/drop-zone.json +18 -30
- package/components/field-label.json +21 -62
- 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 +24 -56
- package/components/list-view.json +15 -73
- package/components/menu.json +45 -174
- package/components/meter.json +24 -65
- package/components/number-field.json +34 -168
- package/components/picker.json +42 -181
- package/components/popover.json +37 -113
- package/components/progress-bar.json +23 -95
- package/components/progress-circle.json +12 -42
- package/components/radio-button.json +14 -67
- package/components/radio-group.json +28 -125
- package/components/rating.json +9 -38
- package/components/search-field.json +34 -119
- package/components/segmented-control.json +21 -63
- package/components/select-box.json +29 -96
- package/components/side-navigation.json +28 -69
- package/components/slider.json +39 -148
- package/components/standard-dialog.json +16 -88
- package/components/status-light.json +41 -123
- package/components/steplist.json +5 -24
- package/components/swatch-group.json +19 -55
- package/components/swatch.json +24 -79
- package/components/switch.json +31 -72
- package/components/table.json +26 -73
- package/components/tabs.json +22 -39
- package/components/tag-field.json +14 -60
- package/components/tag-group.json +16 -49
- package/components/tag.json +21 -71
- package/components/takeover-dialog.json +10 -61
- package/components/text-area.json +49 -198
- package/components/text-field.json +42 -163
- package/components/thumbnail.json +22 -63
- package/components/toast.json +29 -50
- package/components/tooltip.json +27 -74
- package/components/tree-view.json +45 -140
- package/guidelines/introduction.json +2 -2
- package/guidelines/manifest.json +2 -74
- package/guidelines/principles.json +2 -2
- package/package.json +1 -1
- package/guidelines/app-frame-content-area.json +0 -81
- package/guidelines/app-frame-creating-bluelines.json +0 -58
- package/guidelines/app-frame-header.json +0 -72
- package/guidelines/app-frame-side-navigation.json +0 -138
- package/guidelines/containers.json +0 -62
- package/guidelines/illustrations.json +0 -111
- package/guidelines/object-styles.json +0 -102
- package/guidelines/spacing.json +0 -25
- package/guidelines/typography-fundamentals.json +0 -142
|
@@ -16,110 +16,69 @@
|
|
|
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": "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."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"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."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"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."
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"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."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"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."
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
47
|
+
"content": "Cursor guidelines.\n\nCursor Usage PointerUse the pointer cursor for all interactive components."
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"type": "guideline",
|
|
51
|
-
"content": "
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"type": "guideline",
|
|
55
|
-
"content": "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."
|
|
51
|
+
"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."
|
|
56
52
|
}
|
|
57
53
|
],
|
|
58
54
|
"options": {
|
|
59
|
-
"label": {
|
|
60
|
-
"type": "string"
|
|
61
|
-
},
|
|
55
|
+
"label": { "type": "string" },
|
|
62
56
|
"labelPosition": {
|
|
63
57
|
"type": "string",
|
|
64
58
|
"default": "top",
|
|
65
|
-
"values": [
|
|
66
|
-
{
|
|
67
|
-
"value": "top"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"value": "side"
|
|
71
|
-
}
|
|
72
|
-
]
|
|
59
|
+
"values": [{ "value": "top" }, { "value": "side" }]
|
|
73
60
|
},
|
|
74
61
|
"size": {
|
|
75
62
|
"type": "string",
|
|
76
63
|
"default": "m",
|
|
77
64
|
"values": [
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"value": "m"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"value": "l"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"value": "xl"
|
|
89
|
-
}
|
|
65
|
+
{ "value": "s" },
|
|
66
|
+
{ "value": "m" },
|
|
67
|
+
{ "value": "l" },
|
|
68
|
+
{ "value": "xl" }
|
|
90
69
|
]
|
|
91
70
|
},
|
|
92
71
|
"necessityIndicator": {
|
|
93
72
|
"type": "string",
|
|
94
73
|
"default": "icon",
|
|
95
|
-
"values": [
|
|
96
|
-
{
|
|
97
|
-
"value": "text"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"value": "icon"
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
},
|
|
104
|
-
"isRequired": {
|
|
105
|
-
"type": "boolean",
|
|
106
|
-
"default": false
|
|
74
|
+
"values": [{ "value": "text" }, { "value": "icon" }]
|
|
107
75
|
},
|
|
108
|
-
"
|
|
109
|
-
|
|
110
|
-
"default": false
|
|
111
|
-
}
|
|
76
|
+
"isRequired": { "type": "boolean", "default": false },
|
|
77
|
+
"isDisabled": { "type": "boolean", "default": false }
|
|
112
78
|
},
|
|
113
79
|
"anatomy": [
|
|
114
|
-
{
|
|
115
|
-
"name": "asterisk",
|
|
116
|
-
"description": "Required-field indicator."
|
|
117
|
-
}
|
|
80
|
+
{ "name": "asterisk", "description": "Required-field indicator." }
|
|
118
81
|
],
|
|
119
|
-
"lifecycle": {
|
|
120
|
-
|
|
121
|
-
},
|
|
122
|
-
"accessibility": {
|
|
123
|
-
"focusable": false
|
|
124
|
-
}
|
|
82
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
83
|
+
"accessibility": { "focusable": false }
|
|
125
84
|
}
|
|
@@ -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 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."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"content": "Cursor guidelines.\n\nCursor Usage PointerUse 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 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."
|
|
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
|
}
|
|
@@ -16,87 +16,57 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"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."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
23
|
+
"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."
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
27
|
+
"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."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"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."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"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."
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"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."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
"type": "
|
|
43
|
-
"content": "
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
"type": "guideline",
|
|
47
|
-
"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."
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"type": "guideline",
|
|
51
|
-
"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."
|
|
42
|
+
"type": "do-dont",
|
|
43
|
+
"content": "Don't resize illustrations",
|
|
44
|
+
"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."
|
|
52
45
|
},
|
|
53
46
|
{
|
|
54
47
|
"type": "guideline",
|
|
55
|
-
"content": "
|
|
48
|
+
"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."
|
|
56
49
|
},
|
|
57
50
|
{
|
|
58
51
|
"type": "guideline",
|
|
59
|
-
"content": "
|
|
52
|
+
"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."
|
|
60
53
|
},
|
|
61
54
|
{
|
|
62
55
|
"type": "guideline",
|
|
63
|
-
"content": "
|
|
56
|
+
"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."
|
|
64
57
|
},
|
|
65
58
|
{
|
|
66
59
|
"type": "guideline",
|
|
67
|
-
"content": "
|
|
60
|
+
"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."
|
|
68
61
|
},
|
|
69
62
|
{
|
|
70
|
-
"type": "
|
|
71
|
-
"content": "
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
"type": "guideline",
|
|
75
|
-
"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."
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"type": "guideline",
|
|
79
|
-
"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."
|
|
63
|
+
"type": "do-dont",
|
|
64
|
+
"content": "Don't create your own linear illustrations",
|
|
65
|
+
"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."
|
|
80
66
|
},
|
|
81
67
|
{
|
|
82
68
|
"type": "guideline",
|
|
83
|
-
"content": "
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"type": "guideline",
|
|
87
|
-
"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."
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"type": "guideline",
|
|
91
|
-
"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."
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"type": "guideline",
|
|
95
|
-
"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."
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"type": "guideline",
|
|
99
|
-
"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."
|
|
69
|
+
"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."
|
|
100
70
|
}
|
|
101
71
|
],
|
|
102
72
|
"options": {
|
|
@@ -108,30 +78,13 @@
|
|
|
108
78
|
"type": "string",
|
|
109
79
|
"default": "m",
|
|
110
80
|
"description": "Size of the illustration.",
|
|
111
|
-
"values": [
|
|
112
|
-
{
|
|
113
|
-
"value": "s"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"value": "m"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"value": "l"
|
|
120
|
-
}
|
|
121
|
-
]
|
|
81
|
+
"values": [{ "value": "s" }, { "value": "m" }, { "value": "l" }]
|
|
122
82
|
},
|
|
123
83
|
"orientation": {
|
|
124
84
|
"type": "string",
|
|
125
85
|
"default": "vertical",
|
|
126
86
|
"description": "Orientation of the illustrated message.",
|
|
127
|
-
"values": [
|
|
128
|
-
{
|
|
129
|
-
"value": "vertical"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"value": "horizontal"
|
|
133
|
-
}
|
|
134
|
-
]
|
|
87
|
+
"values": [{ "value": "vertical" }, { "value": "horizontal" }]
|
|
135
88
|
},
|
|
136
89
|
"title": {
|
|
137
90
|
"type": "string",
|
|
@@ -150,10 +103,6 @@
|
|
|
150
103
|
"description": "Label for the secondary action button. If undefined, no secondary action is shown."
|
|
151
104
|
}
|
|
152
105
|
},
|
|
153
|
-
"lifecycle": {
|
|
154
|
-
|
|
155
|
-
},
|
|
156
|
-
"accessibility": {
|
|
157
|
-
"focusable": false
|
|
158
|
-
}
|
|
106
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
107
|
+
"accessibility": { "focusable": false }
|
|
159
108
|
}
|
|
@@ -16,27 +16,11 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"content": "Text overflow.\n\nWhen the title of an in-line alert is too long for the available horizontal space, it wraps to form another line. The optional icon in the top-right corner stays aligned to the top."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"type": "guideline",
|
|
27
|
-
"content": "Heading is optional for in-line alerts."
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"type": "guideline",
|
|
31
|
-
"content": "The outline style is the default for in-line alerts."
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"type": "guideline",
|
|
35
|
-
"content": "There are five semantic variants:"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"type": "guideline",
|
|
39
|
-
"content": "When the title of an in-line alert is too long for the available horizontal space, it wraps to form another line. The optional icon in the top-right corner stays aligned to the top."
|
|
23
|
+
"content": "RTL.\n\nFor RTL (right-to-left) languages, the layout of the in-line alert is mirrored. The icon and dismiss button are both left-aligned."
|
|
40
24
|
}
|
|
41
25
|
],
|
|
42
26
|
"options": {
|
|
@@ -44,24 +28,12 @@
|
|
|
44
28
|
"type": "string",
|
|
45
29
|
"default": "neutral",
|
|
46
30
|
"values": [
|
|
47
|
-
{
|
|
48
|
-
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
{
|
|
54
|
-
"value": "positive"
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"value": "notice"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"value": "negative"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"value": "accent"
|
|
64
|
-
}
|
|
31
|
+
{ "value": "neutral" },
|
|
32
|
+
{ "value": "informative" },
|
|
33
|
+
{ "value": "positive" },
|
|
34
|
+
{ "value": "notice" },
|
|
35
|
+
{ "value": "negative" },
|
|
36
|
+
{ "value": "accent" }
|
|
65
37
|
]
|
|
66
38
|
},
|
|
67
39
|
"style": {
|
|
@@ -69,15 +41,9 @@
|
|
|
69
41
|
"default": "outline",
|
|
70
42
|
"description": "The visual style of the alert.",
|
|
71
43
|
"values": [
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
{
|
|
76
|
-
"value": "subtle"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"value": "outline"
|
|
80
|
-
}
|
|
44
|
+
{ "value": "bold" },
|
|
45
|
+
{ "value": "subtle" },
|
|
46
|
+
{ "value": "outline" }
|
|
81
47
|
]
|
|
82
48
|
},
|
|
83
49
|
"href": {
|
|
@@ -93,17 +59,11 @@
|
|
|
93
59
|
"description": "If undefined, this button does not appear."
|
|
94
60
|
}
|
|
95
61
|
},
|
|
96
|
-
"lifecycle": {
|
|
97
|
-
"introduced": "1.0.0-draft"
|
|
98
|
-
},
|
|
62
|
+
"lifecycle": { "introduced": "1.0.0-draft" },
|
|
99
63
|
"accessibility": {
|
|
100
64
|
"focusable": false,
|
|
101
65
|
"wcag": [
|
|
102
|
-
{
|
|
103
|
-
"criterion": "4.1.3",
|
|
104
|
-
"level": "AA",
|
|
105
|
-
"title": "Status Messages"
|
|
106
|
-
}
|
|
66
|
+
{ "criterion": "4.1.3", "level": "AA", "title": "Status Messages" }
|
|
107
67
|
]
|
|
108
68
|
}
|
|
109
69
|
}
|