@adobe/spectrum-design-data 3.3.0-beta.2 → 3.3.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 +67 -15
- package/components/action-bar.json +30 -9
- package/components/action-button.json +92 -39
- package/components/action-group.json +137 -18
- package/components/alert-banner.json +27 -8
- package/components/alert-dialog.json +55 -34
- package/components/avatar-group.json +35 -9
- package/components/avatar.json +105 -29
- package/components/badge.json +163 -56
- package/components/breadcrumbs.json +107 -26
- package/components/button-group.json +63 -19
- package/components/button.json +105 -61
- package/components/calendar.json +74 -8
- package/components/card.json +13 -0
- package/components/cards.json +46 -31
- package/components/checkbox-group.json +85 -16
- package/components/checkbox.json +97 -27
- package/components/close-button.json +75 -20
- package/components/coach-indicator.json +44 -14
- package/components/coach-mark.json +26 -8
- package/components/color-area.json +100 -20
- package/components/color-handle.json +46 -25
- package/components/color-loupe.json +14 -2
- package/components/color-slider.json +129 -26
- package/components/color-wheel.json +91 -17
- package/components/combo-box.json +189 -50
- package/components/contextual-help.json +126 -80
- package/components/date-field.json +7 -0
- package/components/date-picker.json +127 -24
- package/components/divider.json +38 -12
- package/components/drop-zone.json +37 -18
- package/components/field-label.json +62 -21
- package/components/heading.json +7 -0
- package/components/help-text.json +53 -16
- package/components/illustrated-message.json +85 -21
- package/components/in-line-alert.json +53 -13
- package/components/link.json +63 -24
- package/components/list-view.json +80 -15
- package/components/menu.json +181 -45
- package/components/meter.json +78 -24
- package/components/number-field.json +175 -34
- package/components/picker.json +188 -42
- package/components/popover.json +126 -37
- package/components/progress-bar.json +108 -23
- package/components/progress-circle.json +55 -12
- package/components/radio-button.json +67 -14
- package/components/radio-group.json +132 -28
- package/components/rating.json +38 -9
- package/components/search-field.json +126 -34
- package/components/segmented-control.json +70 -21
- package/components/select-box.json +103 -29
- package/components/side-navigation.json +69 -28
- package/components/slider.json +155 -39
- package/components/standard-dialog.json +88 -16
- package/components/status-light.json +136 -41
- package/components/steplist.json +24 -5
- package/components/swatch-group.json +55 -19
- package/components/swatch.json +79 -24
- package/components/switch.json +79 -31
- package/components/table.json +73 -26
- package/components/tabs.json +52 -22
- package/components/tag-field.json +60 -14
- package/components/tag-group.json +56 -16
- package/components/tag.json +78 -21
- package/components/takeover-dialog.json +61 -10
- package/components/text-area.json +205 -49
- package/components/text-field.json +170 -42
- package/components/thumbnail.json +63 -22
- package/components/time-field.json +7 -0
- package/components/toast.json +50 -29
- package/components/tooltip.json +87 -27
- package/components/tree-view.json +147 -45
- package/components/user-card.json +7 -0
- package/guidelines/app-frame-overview.json +44 -46
- package/guidelines/attention-hierarchy.json +22 -13
- package/guidelines/background-layers.json +10 -80
- package/guidelines/brand.json +12 -32
- package/guidelines/colors.json +17 -47
- package/guidelines/developer-overview.json +9 -25
- package/guidelines/faqs.json +9 -96
- package/guidelines/fonts.json +14 -29
- package/guidelines/grays.json +44 -17
- package/guidelines/icon-fundamentals.json +18 -7
- package/guidelines/manifest.json +15 -367
- package/guidelines/motion.json +16 -17
- package/guidelines/principles.json +8 -7
- package/guidelines/resources.json +15 -21
- package/guidelines/states.json +11 -16
- package/guidelines/using-icons.json +44 -33
- package/package.json +2 -2
- package/registry/platform-implementations.json +30 -0
- package/guidelines/ai-resource-guide.json +0 -50
- package/guidelines/applying-the-type-system.json +0 -67
- package/guidelines/bi-directionality.json +0 -57
- package/guidelines/border-width.json +0 -58
- package/guidelines/cognitive.json +0 -197
- package/guidelines/component-spacing.json +0 -61
- package/guidelines/contact-us.json +0 -67
- package/guidelines/content-area-browsing-context.json +0 -65
- package/guidelines/content-design-grammar-and-mechanics.json +0 -241
- package/guidelines/content-design-voice-and-tone.json +0 -37
- package/guidelines/content-grammar-and-mechanics.json +0 -252
- package/guidelines/content-language-and-inclusivity-writing-about-people.json +0 -103
- package/guidelines/content-language-and-inclusivity-writing-with-visuals.json +0 -70
- package/guidelines/content-voice-and-tone.json +0 -47
- package/guidelines/creating-bluelines-browsing-context.json +0 -91
- package/guidelines/design-tokens.json +0 -158
- package/guidelines/drop-shadow.json +0 -68
- package/guidelines/grammar-and-mechanics.json +0 -252
- package/guidelines/header-browsing-context.json +0 -40
- package/guidelines/illustration.json +0 -105
- package/guidelines/in-product-word-list.json +0 -29
- package/guidelines/inclusive-design.json +0 -101
- package/guidelines/inclusive-ux-writing.json +0 -30
- package/guidelines/internationalization.json +0 -87
- package/guidelines/language-and-inclusivity-writing-about-people.json +0 -85
- package/guidelines/language-and-inclusivity-writing-with-visuals.json +0 -61
- package/guidelines/layout-and-structure-containers.json +0 -47
- package/guidelines/layout-and-structure-spacing-overview.json +0 -66
- package/guidelines/layout-spacing.json +0 -39
- package/guidelines/object-styles-overview.json +0 -17
- package/guidelines/rounding.json +0 -73
- package/guidelines/side-navigation-browsing-context.json +0 -74
- package/guidelines/spacing-overview.json +0 -45
- package/guidelines/support.json +0 -113
- package/guidelines/typography-overview.json +0 -43
- package/guidelines/typography-system.json +0 -208
- package/guidelines/visual-language-containers.json +0 -36
- package/guidelines/voice-and-tone.json +0 -47
- package/guidelines/whats-new.json +0 -32
- package/guidelines/writing-about-people.json +0 -103
- package/guidelines/writing-for-errors.json +0 -120
- package/guidelines/writing-for-onboarding.json +0 -119
- package/guidelines/writing-for-readability.json +0 -54
- package/guidelines/writing-with-visuals.json +0 -70
- package/registry/platform-extensions/web-components-states.json +0 -58
|
@@ -9,6 +9,13 @@
|
|
|
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
|
+
],
|
|
12
19
|
"documentBlocks": [
|
|
13
20
|
{
|
|
14
21
|
"type": "purpose",
|
|
@@ -16,35 +23,27 @@
|
|
|
16
23
|
},
|
|
17
24
|
{
|
|
18
25
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
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."
|
|
26
|
+
"content": "Drop zones accept dragged and dropped objects. They support upload and file management workflows, and are commonly used to move or add content within an interface."
|
|
24
27
|
},
|
|
25
28
|
{
|
|
26
29
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
30
|
+
"content": "A button is an optional element to prompt the user to take action."
|
|
28
31
|
},
|
|
29
32
|
{
|
|
30
33
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
34
|
+
"content": "Drop zones come in three different sizes: small, medium, and large. The medium size is the default and most frequently used option."
|
|
32
35
|
},
|
|
33
36
|
{
|
|
34
37
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
38
|
+
"content": "Indicate 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."
|
|
36
39
|
},
|
|
37
40
|
{
|
|
38
41
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
42
|
+
"content": "When 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."
|
|
40
43
|
},
|
|
41
44
|
{
|
|
42
45
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"type": "guideline",
|
|
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."
|
|
46
|
+
"content": "Visual 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."
|
|
48
47
|
}
|
|
49
48
|
],
|
|
50
49
|
"options": {
|
|
@@ -58,7 +57,17 @@
|
|
|
58
57
|
"size": {
|
|
59
58
|
"type": "string",
|
|
60
59
|
"default": "m",
|
|
61
|
-
"values": [
|
|
60
|
+
"values": [
|
|
61
|
+
{
|
|
62
|
+
"value": "s"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"value": "m"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"value": "l"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
62
71
|
},
|
|
63
72
|
"actionLabel": {
|
|
64
73
|
"type": "string",
|
|
@@ -77,14 +86,24 @@
|
|
|
77
86
|
"description": "Callback function called when a file is dragged out of the drop zone."
|
|
78
87
|
}
|
|
79
88
|
},
|
|
80
|
-
"lifecycle": {
|
|
89
|
+
"lifecycle": {
|
|
90
|
+
"introduced": "1.0.0-draft"
|
|
91
|
+
},
|
|
81
92
|
"accessibility": {
|
|
82
93
|
"intents": ["input"],
|
|
83
94
|
"focusable": true,
|
|
84
95
|
"keyboardIntents": ["activate"],
|
|
85
96
|
"wcag": [
|
|
86
|
-
{
|
|
87
|
-
|
|
97
|
+
{
|
|
98
|
+
"criterion": "2.1.1",
|
|
99
|
+
"level": "A",
|
|
100
|
+
"title": "Keyboard"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"criterion": "4.1.2",
|
|
104
|
+
"level": "A",
|
|
105
|
+
"title": "Name, Role, Value"
|
|
106
|
+
}
|
|
88
107
|
]
|
|
89
108
|
}
|
|
90
109
|
}
|
|
@@ -16,69 +16,110 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"content": "Field labels provide context for associated input fields. They describe the expected content or data type."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
23
|
+
"content": "A field label in a disabled state shows that an input field exists, but is not available in that circumstance. This can be used to maintain layout continuity and communicate that an input field may become available later."
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
27
|
+
"content": "Inputs can be marked as required or optional, depending on the situation, using a necessity indicator. There are two styles for the necessity indicator: icon or text."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"content": "By default, the necessity indicator is shown with an asterisk icon. Required inputs are marked with this at the end of the label. If you use this icon, be sure to include hint text to explain what it means. The asterisk used in this component is an icon that has specific spacing from the label text — not part of the label text itself. Optional inputs do not have an icon."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"content": "Alternatively, the necessity indicator can be shown with text. This appends text that reads either “(required)” or “(optional)” at the end of the label."
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"content": "Field labels come in four different sizes: small, medium, large, and extra-large. The medium size is the default and most frequently used option with medium-sized inputs. Use the other sizes sparingly; they should be used to create a hierarchy of importance within the page. Both small and medium field labels have the same font size, but different paddings when used as side labels."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"content": "A label can be placed either on top or on the side of an input. This option affects the bounding box of the component to ensure proper alignment. Top labels are the default and are recommended because they work better with long copy, localization, and responsive layouts. Side labels are most useful when vertical space is limited."
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
47
|
+
"content": "When the field label is too long for the available horizontal space, it wraps to form another line."
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"type": "guideline",
|
|
51
|
-
"content": "
|
|
51
|
+
"content": "In a single form, mark only the required fields or only the optional fields, depending on whichever is less frequent in the entire form."
|
|
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."
|
|
52
56
|
}
|
|
53
57
|
],
|
|
54
58
|
"options": {
|
|
55
|
-
"label": {
|
|
59
|
+
"label": {
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
56
62
|
"labelPosition": {
|
|
57
63
|
"type": "string",
|
|
58
64
|
"default": "top",
|
|
59
|
-
"values": [
|
|
65
|
+
"values": [
|
|
66
|
+
{
|
|
67
|
+
"value": "top"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"value": "side"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
60
73
|
},
|
|
61
74
|
"size": {
|
|
62
75
|
"type": "string",
|
|
63
76
|
"default": "m",
|
|
64
77
|
"values": [
|
|
65
|
-
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
{
|
|
78
|
+
{
|
|
79
|
+
"value": "s"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"value": "m"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"value": "l"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"value": "xl"
|
|
89
|
+
}
|
|
69
90
|
]
|
|
70
91
|
},
|
|
71
92
|
"necessityIndicator": {
|
|
72
93
|
"type": "string",
|
|
73
94
|
"default": "icon",
|
|
74
|
-
"values": [
|
|
95
|
+
"values": [
|
|
96
|
+
{
|
|
97
|
+
"value": "text"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"value": "icon"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"isRequired": {
|
|
105
|
+
"type": "boolean",
|
|
106
|
+
"default": false
|
|
75
107
|
},
|
|
76
|
-
"
|
|
77
|
-
|
|
108
|
+
"isDisabled": {
|
|
109
|
+
"type": "boolean",
|
|
110
|
+
"default": false
|
|
111
|
+
}
|
|
78
112
|
},
|
|
79
113
|
"anatomy": [
|
|
80
|
-
{
|
|
114
|
+
{
|
|
115
|
+
"name": "asterisk",
|
|
116
|
+
"description": "Required-field indicator."
|
|
117
|
+
}
|
|
81
118
|
],
|
|
82
|
-
"lifecycle": {
|
|
83
|
-
|
|
119
|
+
"lifecycle": {
|
|
120
|
+
"introduced": "1.0.0-draft"
|
|
121
|
+
},
|
|
122
|
+
"accessibility": {
|
|
123
|
+
"focusable": false
|
|
124
|
+
}
|
|
84
125
|
}
|
package/components/heading.json
CHANGED
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
"category": "typography",
|
|
10
10
|
"documentationUrl": "https://spectrum.adobe.com/page/heading/"
|
|
11
11
|
},
|
|
12
|
+
"implementations": [
|
|
13
|
+
{
|
|
14
|
+
"platform": "web",
|
|
15
|
+
"componentName": "Heading",
|
|
16
|
+
"package": "@react-spectrum/s2"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
12
19
|
"options": {
|
|
13
20
|
"script": {
|
|
14
21
|
"$ref": "https://opensource.adobe.com/spectrum-design-data/schemas/types/typography-script.json"
|
|
@@ -16,43 +16,68 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
19
|
+
"content": "Help text provides additional context for an input field, such as descriptions, instructions, or error messages. It’s commonly used in forms to clarify what’s expected or to explain validation."
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"type": "guideline",
|
|
23
|
-
"content": "
|
|
23
|
+
"content": "Help text using the neutral variant can be displayed in a disabled state. The text appears with a lighter gray that matches the style of other components in a disabled state. Help text using the negative variant cannot be displayed in a disabled state because it communicates an error, and error messages should not be visible when the component is disabled."
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"type": "guideline",
|
|
27
|
-
"content": "
|
|
27
|
+
"content": "Help text comes 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 and pair them with components of the same size to respect the built-in hierarchy."
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
31
|
+
"content": "Help text has two variants: neutral and negative. The neutral variant is used to convey informative messages, while the negative variant is used to convey error messages."
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
35
|
+
"content": "The text can accommodate either a description or an error message, giving extra context and guidance. Sometimes this communicates what to input or select, and sometimes it communicates how. It includes information such as:"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
39
|
+
"content": "Regardless of the kind of message, it should be clear and concise. Use 1-2 short, complete sentences that end with a period (never an exclamation point). When showing formatting examples, it's not necessary to end with a period."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"type": "guideline",
|
|
43
|
-
"content": "
|
|
43
|
+
"content": "When the text is too long for the available horizontal space, it wraps to form another line."
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"type": "guideline",
|
|
47
|
-
"content": "
|
|
47
|
+
"content": "For 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."
|
|
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.”"
|
|
48
64
|
}
|
|
49
65
|
],
|
|
50
66
|
"options": {
|
|
51
|
-
"text": {
|
|
67
|
+
"text": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
52
70
|
"variant": {
|
|
53
71
|
"type": "string",
|
|
54
72
|
"default": "neutral",
|
|
55
|
-
"values": [
|
|
73
|
+
"values": [
|
|
74
|
+
{
|
|
75
|
+
"value": "neutral"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"value": "negative"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
56
81
|
},
|
|
57
82
|
"hideIcon": {
|
|
58
83
|
"type": "boolean",
|
|
@@ -63,10 +88,18 @@
|
|
|
63
88
|
"type": "string",
|
|
64
89
|
"default": "m",
|
|
65
90
|
"values": [
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
{
|
|
91
|
+
{
|
|
92
|
+
"value": "s"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"value": "m"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"value": "l"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"value": "xl"
|
|
102
|
+
}
|
|
70
103
|
]
|
|
71
104
|
},
|
|
72
105
|
"isDisabled": {
|
|
@@ -75,6 +108,10 @@
|
|
|
75
108
|
"description": "Help text cannot be both disabled and negative variant."
|
|
76
109
|
}
|
|
77
110
|
},
|
|
78
|
-
"lifecycle": {
|
|
79
|
-
|
|
111
|
+
"lifecycle": {
|
|
112
|
+
"introduced": "1.0.0-draft"
|
|
113
|
+
},
|
|
114
|
+
"accessibility": {
|
|
115
|
+
"focusable": false
|
|
116
|
+
}
|
|
80
117
|
}
|
|
@@ -9,6 +9,19 @@
|
|
|
9
9
|
"category": "feedback",
|
|
10
10
|
"documentationUrl": "https://spectrum.adobe.com/page/illustrated-message/"
|
|
11
11
|
},
|
|
12
|
+
"implementations": [
|
|
13
|
+
{
|
|
14
|
+
"platform": "web",
|
|
15
|
+
"componentName": "IllustratedMessage",
|
|
16
|
+
"package": "@react-spectrum/s2"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"platform": "web",
|
|
20
|
+
"componentName": "IllustratedMessage",
|
|
21
|
+
"importPath": "@adobe/spectrum-wc/components/illustrated-message",
|
|
22
|
+
"notes": "Spectrum 2 web component custom element: swc-illustrated-message."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
12
25
|
"documentBlocks": [
|
|
13
26
|
{
|
|
14
27
|
"type": "purpose",
|
|
@@ -16,57 +29,87 @@
|
|
|
16
29
|
},
|
|
17
30
|
{
|
|
18
31
|
"type": "guideline",
|
|
19
|
-
"content": "
|
|
32
|
+
"content": "Illustrated messages pair text with imagery to communicate a message with visual emphasis. They’re commonly used in empty states, feedback states, and error messaging."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "guideline",
|
|
36
|
+
"content": "The secondary button provides a less prominent action that supports the overall message but is not the primary goal. It offers users an alternative path that’s relevant but lower priority."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "guideline",
|
|
40
|
+
"content": "The primary button serves as the main call to action. It’s the clearest, most direct path forward for the user, and it should align with the purpose of the message. In an illustrated message—where visuals and copy work together to guide attention—the primary button anchors the experience."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "guideline",
|
|
44
|
+
"content": "The description supports the illustration and buttons by delivering the core message in plain language. It helps users quickly grasp the purpose of the message and decide what to do next."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "guideline",
|
|
48
|
+
"content": "A clear title for the description section in an illustrated message"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"type": "guideline",
|
|
52
|
+
"content": "Orientation affects how users perceive and interact with content. Illustrated message layout can be horizontal or vertical."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "guideline",
|
|
56
|
+
"content": "Illustrated messages come in three different sizes: small, medium, and large. The medium size is the default and most frequently used option."
|
|
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."
|
|
20
65
|
},
|
|
21
66
|
{
|
|
22
67
|
"type": "guideline",
|
|
23
|
-
"content": "Buttons in
|
|
68
|
+
"content": "Buttons 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
69
|
},
|
|
25
70
|
{
|
|
26
71
|
"type": "guideline",
|
|
27
|
-
"content": "Horizontal
|
|
72
|
+
"content": "Horizontal 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."
|
|
28
73
|
},
|
|
29
74
|
{
|
|
30
75
|
"type": "guideline",
|
|
31
|
-
"content": "
|
|
76
|
+
"content": "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."
|
|
32
77
|
},
|
|
33
78
|
{
|
|
34
79
|
"type": "guideline",
|
|
35
|
-
"content": "
|
|
80
|
+
"content": "The 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
81
|
},
|
|
37
82
|
{
|
|
38
83
|
"type": "guideline",
|
|
39
|
-
"content": "
|
|
84
|
+
"content": "Gradient illustrations draw more attention because they’re very colorful. Using more then 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
85
|
},
|
|
41
86
|
{
|
|
42
|
-
"type": "
|
|
43
|
-
"content": "Don
|
|
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."
|
|
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."
|
|
45
89
|
},
|
|
46
90
|
{
|
|
47
91
|
"type": "guideline",
|
|
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.
|
|
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."
|
|
49
93
|
},
|
|
50
94
|
{
|
|
51
95
|
"type": "guideline",
|
|
52
|
-
"content": "
|
|
96
|
+
"content": "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."
|
|
53
97
|
},
|
|
54
98
|
{
|
|
55
99
|
"type": "guideline",
|
|
56
|
-
"content": "
|
|
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."
|
|
57
101
|
},
|
|
58
102
|
{
|
|
59
103
|
"type": "guideline",
|
|
60
|
-
"content": "
|
|
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."
|
|
61
105
|
},
|
|
62
106
|
{
|
|
63
|
-
"type": "
|
|
64
|
-
"content": "
|
|
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."
|
|
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."
|
|
66
109
|
},
|
|
67
110
|
{
|
|
68
111
|
"type": "guideline",
|
|
69
|
-
"content": "
|
|
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."
|
|
70
113
|
}
|
|
71
114
|
],
|
|
72
115
|
"options": {
|
|
@@ -78,13 +121,30 @@
|
|
|
78
121
|
"type": "string",
|
|
79
122
|
"default": "m",
|
|
80
123
|
"description": "Size of the illustration.",
|
|
81
|
-
"values": [
|
|
124
|
+
"values": [
|
|
125
|
+
{
|
|
126
|
+
"value": "s"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"value": "m"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"value": "l"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
82
135
|
},
|
|
83
136
|
"orientation": {
|
|
84
137
|
"type": "string",
|
|
85
138
|
"default": "vertical",
|
|
86
139
|
"description": "Orientation of the illustrated message.",
|
|
87
|
-
"values": [
|
|
140
|
+
"values": [
|
|
141
|
+
{
|
|
142
|
+
"value": "vertical"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"value": "horizontal"
|
|
146
|
+
}
|
|
147
|
+
]
|
|
88
148
|
},
|
|
89
149
|
"title": {
|
|
90
150
|
"type": "string",
|
|
@@ -103,6 +163,10 @@
|
|
|
103
163
|
"description": "Label for the secondary action button. If undefined, no secondary action is shown."
|
|
104
164
|
}
|
|
105
165
|
},
|
|
106
|
-
"lifecycle": {
|
|
107
|
-
|
|
166
|
+
"lifecycle": {
|
|
167
|
+
"introduced": "1.0.0-draft"
|
|
168
|
+
},
|
|
169
|
+
"accessibility": {
|
|
170
|
+
"focusable": false
|
|
171
|
+
}
|
|
108
172
|
}
|